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.
- package/dist/agent/cloudstudio/cloudstudioClient.d.ts +29 -0
- package/dist/agent/cloudstudio/cloudstudioMcp.d.ts +414 -0
- package/dist/agent/cloudstudio/conexionDeServidor.d.ts +37 -0
- package/dist/agent/cloudstudio/conexionDeServidor.js +63 -0
- package/dist/agent/cloudstudio/conexionDeServidor.js.map +1 -0
- package/dist/agent/cloudstudio/crearRama.d.ts +15 -0
- package/dist/agent/cloudstudio/crearRama.js +16 -0
- package/dist/agent/cloudstudio/crearRama.js.map +1 -0
- package/dist/agent/cloudstudio/descarga.d.ts +44 -0
- package/dist/agent/cloudstudio/manifiesto.d.ts +25 -0
- package/dist/agent/cloudstudio/ramaActiva.d.ts +24 -0
- package/dist/agent/cloudstudio/subida.d.ts +61 -0
- package/dist/agent/cloudstudio/subida.js +7 -1
- package/dist/agent/cloudstudio/subida.js.map +1 -1
- package/dist/agent/cloudstudio/validarTrasDescarga.d.ts +13 -0
- package/dist/agent/cloudstudio/zip.d.ts +13 -0
- package/dist/agent/conectores/conectoresEnDisco.d.ts +47 -0
- package/dist/agent/conectores/gestorJira.d.ts +50 -0
- package/dist/agent/conectores/gestorNotion.d.ts +45 -0
- package/dist/agent/conectores/proveedorDeConector.d.ts +43 -0
- package/dist/agent/conectores/servicioDeConectores.d.ts +112 -0
- package/dist/agent/config/authEnDisco.d.ts +43 -0
- package/dist/agent/config/catalogoModelos.d.ts +79 -0
- package/dist/agent/config/configEnDisco.d.ts +235 -0
- package/dist/agent/config/crearProyecto.d.ts +20 -0
- package/dist/agent/config/diagnosticoDeNodeEnMaquina.d.ts +44 -0
- package/dist/agent/config/ecoDeRazonamiento.d.ts +104 -0
- package/dist/agent/config/entorno.d.ts +83 -0
- package/dist/agent/config/fuentesEnRed.d.ts +12 -0
- package/dist/agent/config/gemini.d.ts +5 -0
- package/dist/agent/config/iconosEnRed.d.ts +10 -0
- package/dist/agent/config/identidadEnDisco.d.ts +27 -0
- package/dist/agent/config/modelos.d.ts +77 -0
- package/dist/agent/config/modelosDeMotor.d.ts +52 -0
- package/dist/agent/config/mudanzaEnDisco.d.ts +99 -0
- package/dist/agent/config/persona.d.ts +1 -0
- package/dist/agent/config/selectorEnMaquina.d.ts +35 -0
- package/dist/agent/config/settingsEnDisco.d.ts +206 -0
- package/dist/agent/config/versionEnDisco.d.ts +17 -0
- package/dist/agent/dispositivos/arranqueDeEmulador.d.ts +60 -0
- package/dist/agent/dispositivos/cajasDeMaqueta.d.ts +61 -0
- package/dist/agent/dispositivos/decodificarImagen.d.ts +21 -0
- package/dist/agent/dispositivos/descargaDeHerramientas.d.ts +44 -0
- package/dist/agent/dispositivos/dispositivosEnMaquina.d.ts +161 -0
- package/dist/agent/dispositivos/geometriaEnDisco.d.ts +17 -0
- package/dist/agent/dispositivos/hotswap.d.ts +194 -0
- package/dist/agent/dispositivos/instalacionEnMaquina.d.ts +156 -0
- package/dist/agent/dispositivos/juezVisual.d.ts +144 -0
- package/dist/agent/dispositivos/lanzamientoEnMaquina.d.ts +197 -0
- package/dist/agent/dispositivos/paqueteDelProyecto.d.ts +28 -0
- package/dist/agent/dispositivos/procesosEnMaquina.d.ts +154 -0
- package/dist/agent/dispositivos/recargaEnAparato.d.ts +30 -0
- package/dist/agent/dispositivos/sensorDeArranque.d.ts +42 -0
- package/dist/agent/exportarPdf.d.ts +72 -0
- package/dist/agent/grafo/aprendido.d.ts +28 -0
- package/dist/agent/grafo/arbolDeProyecto.d.ts +205 -0
- package/dist/agent/grafo/artefactosEnDisco.d.ts +35 -0
- package/dist/agent/grafo/atributosXone.d.ts +31 -0
- package/dist/agent/grafo/buscarIcono.d.ts +32 -0
- package/dist/agent/grafo/busquedaRegex.d.ts +56 -0
- package/dist/agent/grafo/codificacionDelProyecto.d.ts +7 -0
- package/dist/agent/grafo/compararCapturas.d.ts +22 -0
- package/dist/agent/grafo/copiarArtefacto.d.ts +64 -0
- package/dist/agent/grafo/criticaVisual.d.ts +60 -0
- package/dist/agent/grafo/describirImagen.d.ts +79 -0
- package/dist/agent/grafo/diferenciaDeCapturas.d.ts +33 -0
- package/dist/agent/grafo/ejecucionCancelable.d.ts +45 -0
- package/dist/agent/grafo/escriturasEnSerie.d.ts +31 -0
- package/dist/agent/grafo/excluirTools.d.ts +37 -0
- package/dist/agent/grafo/fuentesDeGoogle.d.ts +37 -0
- package/dist/agent/grafo/generarFondoSvg.d.ts +52 -0
- package/dist/agent/grafo/incorporarAdjunto.d.ts +98 -0
- package/dist/agent/grafo/lectorDeReferencias.d.ts +28 -0
- package/dist/agent/grafo/marcarCriteriosDelPlan.d.ts +47 -0
- package/dist/agent/grafo/memoriaDeProyecto.d.ts +15 -0
- package/dist/agent/grafo/navegacionXone.d.ts +60 -0
- package/dist/agent/grafo/opcionesDeFicheros.d.ts +23 -0
- package/dist/agent/grafo/perfiles.d.ts +225 -0
- package/dist/agent/grafo/proyecto.d.ts +450 -0
- package/dist/agent/grafo/skills.d.ts +181 -0
- package/dist/agent/grafo/traerDeLaMaquina.d.ts +60 -0
- package/dist/agent/grafo/unirSecciones.d.ts +20 -0
- package/dist/agent/grafo/validacionXone.d.ts +35 -0
- package/dist/agent/grafo/validarFicheroXone.d.ts +33 -0
- package/dist/agent/grafo/xoneAgent.d.ts +166 -0
- package/dist/agent/motores/motoresLocales.d.ts +87 -0
- package/dist/agent/motores/trueforge/capacidades.d.ts +183 -0
- package/dist/agent/motores/trueforge/convertirAP.d.ts +38 -0
- package/dist/agent/motores/trueforge/detencion.d.ts +70 -0
- package/dist/agent/motores/trueforge/esperas.d.ts +38 -0
- package/dist/agent/motores/trueforge/eventosTrueforge.d.ts +56 -0
- package/dist/agent/motores/trueforge/informesDeHijos.d.ts +48 -0
- package/dist/agent/motores/trueforge/medidaAutomatica.d.ts +37 -0
- package/dist/agent/motores/trueforge/memoriaDeEspecialistas.d.ts +60 -0
- package/dist/agent/motores/trueforge/memoriaTrueforge.d.ts +131 -0
- package/dist/agent/motores/trueforge/metricasTrueforge.d.ts +45 -0
- package/dist/agent/motores/trueforge/modeloExterno.d.ts +9 -0
- package/dist/agent/motores/trueforge/modeloLangchain.d.ts +69 -0
- package/dist/agent/motores/trueforge/notas.d.ts +48 -0
- package/dist/agent/motores/trueforge/proponerTareas.d.ts +30 -0
- package/dist/agent/motores/trueforge/recortes.d.ts +47 -0
- package/dist/agent/motores/trueforge/resumenSeguro.d.ts +33 -0
- package/dist/agent/motores/trueforge/sesionTrueforge.d.ts +273 -0
- package/dist/agent/motores/trueforge/skillsTrueforge.d.ts +16 -0
- package/dist/agent/motores/trueforge/toolsDeConectores.d.ts +36 -0
- package/dist/agent/motores/trueforge/toolsDeFichero.d.ts +146 -0
- package/dist/agent/motores/trueforge/toolsPropias.d.ts +38 -0
- package/dist/agent/motores/trueforge/traerDeStitch.d.ts +63 -0
- package/dist/agent/motores/trueforge/trueforge.d.ts +35 -0
- package/dist/agent/navegacion/estilosEnDisco.d.ts +41 -0
- package/dist/agent/navegacion/hechosEnDisco.d.ts +19 -0
- package/dist/agent/navegacion/indiceEnDisco.d.ts +50 -0
- package/dist/agent/navegacion/modeloDeProyecto.d.ts +86 -0
- package/dist/agent/planesEnDisco.d.ts +18 -0
- package/dist/agent/publicarPlan.d.ts +20 -0
- package/dist/agent/raizDelPaquete.d.ts +9 -0
- package/dist/agent/remoto/ngrokEnMaquina.d.ts +44 -0
- package/dist/agent/remoto/puenteWebSocket.d.ts +59 -0
- package/dist/agent/remoto/tunelNgrok.d.ts +31 -0
- package/dist/agent/renombrarSobre.d.ts +14 -0
- package/dist/agent/sesiones/adjuntosDeSesion.d.ts +64 -0
- package/dist/agent/sesiones/baseDeFichero.d.ts +9 -0
- package/dist/agent/sesiones/checkpointer.d.ts +146 -0
- package/dist/agent/sesiones/git.d.ts +66 -0
- package/dist/agent/sesiones/gitSync.d.ts +264 -0
- package/dist/agent/sesiones/memoriaDeHilo.d.ts +4 -0
- package/dist/agent/sesiones/modeloDelCambio.d.ts +7 -0
- package/dist/agent/sesiones/parcheEnTexto.d.ts +9 -0
- package/dist/agent/sesiones/sesionGit.d.ts +155 -0
- package/dist/agent/subagentes/actividadDeCodex.d.ts +8 -0
- package/dist/agent/subagentes/agentesEnDisco.d.ts +198 -0
- package/dist/agent/subagentes/consumoExterno.d.ts +83 -0
- package/dist/agent/subagentes/ejecutableEnWindows.d.ts +53 -0
- package/dist/agent/subagentes/escrituraDeCodex.d.ts +94 -0
- package/dist/agent/subagentes/escrituraDeOpencode.d.ts +67 -0
- package/dist/agent/subagentes/escrituraExterna.d.ts +419 -0
- package/dist/agent/subagentes/pluginDeSkills.d.ts +84 -0
- package/dist/agent/subagentes/subagenteCodex.d.ts +76 -0
- package/dist/agent/subagentes/subagenteExterno.d.ts +169 -0
- package/dist/agent/subagentes/subagenteOpencode.d.ts +126 -0
- package/dist/agent/tareas/aumentador.d.ts +99 -0
- package/dist/agent/tareas/juezDeTarea.d.ts +64 -0
- package/dist/agent/tareas/reflejoEnElGestor.d.ts +38 -0
- package/dist/agent/tareas/sondeoDelGestor.d.ts +49 -0
- package/dist/agent/tareas/tareasEnDisco.d.ts +141 -0
- package/dist/agent/trazaDeErroresEnDisco.d.ts +10 -0
- package/dist/agent/turno/depuracion.d.ts +1 -0
- package/dist/agent/turno/diagnosticoDeTools.d.ts +124 -0
- package/dist/agent/turno/ficherosDelProyecto.d.ts +10 -0
- package/dist/agent/turno/guionizado.d.ts +18 -0
- package/dist/agent/turno/informeDeTraza.d.ts +220 -0
- package/dist/agent/turno/inspectorDePrompt.d.ts +150 -0
- package/dist/agent/turno/instantanea.d.ts +16 -0
- package/dist/agent/turno/interrupts.d.ts +54 -0
- package/dist/agent/turno/juezDelTurnoConModelo.d.ts +26 -0
- package/dist/agent/turno/mensajes.d.ts +23 -0
- package/dist/agent/turno/normalizar.d.ts +15 -0
- package/dist/agent/turno/puente.d.ts +196 -0
- package/dist/agent/turno/registroDeFallos.d.ts +39 -0
- package/dist/agent/turno/resumenDeContexto.d.ts +269 -0
- package/dist/agent/turno/resumenDeTool.d.ts +33 -0
- package/dist/agent/turno/rubrica.d.ts +35 -0
- package/dist/agent/turno/sesionReal.d.ts +89 -0
- package/dist/agent/turno/textoDeTool.d.ts +19 -0
- package/dist/agent/turno/turnoReal.d.ts +210 -0
- package/dist/agent/turno/verificacion.d.ts +85 -0
- package/dist/agent/turno/verificador.d.ts +66 -0
- package/dist/bin.d.ts +2 -0
- package/dist/cli/acuseDeModelo.d.ts +18 -0
- package/dist/cli/aprobar.d.ts +162 -0
- package/dist/cli/config.d.ts +17 -0
- package/dist/cli/consola.d.ts +473 -0
- package/dist/cli/describe.d.ts +7 -0
- package/dist/cli/doctor.d.ts +8 -0
- package/dist/cli/fuentesDeDisco.d.ts +25 -0
- package/dist/cli/main.d.ts +291 -0
- package/dist/cli/markdown.d.ts +126 -0
- package/dist/cli/panel.d.ts +38 -0
- package/dist/cli/podar.d.ts +38 -0
- package/dist/cli/run.d.ts +30 -0
- package/dist/cli/spinner.d.ts +37 -0
- package/dist/cli/stdio.d.ts +94 -0
- package/dist/cli/tema.d.ts +68 -0
- package/dist/cli/tokens.d.ts +16 -0
- package/dist/cli/traza.d.ts +19 -0
- package/dist/cli/tui/app.d.ts +23 -0
- package/dist/cli/tui/aprobarTui.d.ts +46 -0
- package/dist/cli/tui/barra.d.ts +43 -0
- package/dist/cli/tui/correrTui.d.ts +119 -0
- package/dist/cli/tui/entrada.d.ts +14 -0
- package/dist/cli/tui/filas.d.ts +13 -0
- package/dist/cli/tui/logo.d.ts +20 -0
- package/dist/cli/tui/pielTui.d.ts +15 -0
- package/dist/cli/tui/raton.d.ts +68 -0
- package/dist/cli/tui/sidebar.d.ts +63 -0
- package/dist/cli/tui/store.d.ts +102 -0
- package/dist/cli/tui/tarjeta.d.ts +8 -0
- package/dist/cli/tui/temaInk.d.ts +67 -0
- package/dist/cli/tui/transcript.d.ts +32 -0
- package/dist/cli/verify.d.ts +9 -0
- package/dist/cli/wizardInicial.d.ts +59 -0
- package/dist/core/actos.d.ts +437 -0
- package/dist/core/adjuntos.d.ts +77 -0
- package/dist/core/agentes.d.ts +353 -0
- package/dist/core/analisisDeSesion.d.ts +63 -0
- package/dist/core/aprendido.d.ts +41 -0
- package/dist/core/artefactos.d.ts +74 -0
- package/dist/core/atributosXone.d.ts +53 -0
- package/dist/core/bitacora.d.ts +21 -0
- package/dist/core/cloudstudio.d.ts +168 -0
- package/dist/core/codificacion.d.ts +81 -0
- package/dist/core/comandoExterno.d.ts +49 -0
- package/dist/core/compararCapturas.d.ts +136 -0
- package/dist/core/conectores.d.ts +296 -0
- package/dist/core/config.d.ts +148 -0
- package/dist/core/contextos.d.ts +54 -0
- package/dist/core/convertirAP.d.ts +56 -0
- package/dist/core/copiaDeAvd.d.ts +44 -0
- package/dist/core/cssBienFormado.d.ts +22 -0
- package/dist/core/deps.d.ts +28 -0
- package/dist/core/descargas.d.ts +61 -0
- package/dist/core/descripcionDePantalla.d.ts +121 -0
- package/dist/core/descriptoresDeApp.d.ts +108 -0
- package/dist/core/diagnosticoDeNode.d.ts +51 -0
- package/dist/core/diff.d.ts +26 -0
- package/dist/core/diffDeColecciones.d.ts +54 -0
- package/dist/core/disenoVinculado.d.ts +17 -0
- package/dist/core/dispositivoDeSesion.d.ts +22 -0
- package/dist/core/dispositivoElegido.d.ts +17 -0
- package/dist/core/dispositivos.d.ts +469 -0
- package/dist/core/entrega.d.ts +341 -0
- package/dist/core/entrelazar.d.ts +48 -0
- package/dist/core/esfuerzo.d.ts +120 -0
- package/dist/core/esqueleto.d.ts +38 -0
- package/dist/core/estiloMedido.d.ts +70 -0
- package/dist/core/estilos.d.ts +76 -0
- package/dist/core/events.d.ts +218 -0
- package/dist/core/exportacion.d.ts +88 -0
- package/dist/core/fallos.d.ts +79 -0
- package/dist/core/fondosSvg.d.ts +115 -0
- package/dist/core/fotoDeColecciones.d.ts +45 -0
- package/dist/core/fuentes.d.ts +96 -0
- package/dist/core/geometriaDePantalla.d.ts +171 -0
- package/dist/core/gestorDeTareas.d.ts +295 -0
- package/dist/core/hechosDelProyecto.d.ts +70 -0
- package/dist/core/hotswap.d.ts +30 -0
- package/dist/core/iconos.d.ts +86 -0
- package/dist/core/identidadDeProveedor.d.ts +20 -0
- package/dist/core/idiomaDeLaRespuesta.d.ts +26 -0
- package/dist/core/imagenesDeDocumento.d.ts +40 -0
- package/dist/core/jsParaRhino.d.ts +3 -0
- package/dist/core/juezDelTurno.d.ts +95 -0
- package/dist/core/logDeDispositivo.d.ts +67 -0
- package/dist/core/memoria.d.ts +18 -0
- package/dist/core/metodoDeComparacionVisual.d.ts +20 -0
- package/dist/core/modelos.d.ts +198 -0
- package/dist/core/modoDeEscritura.d.ts +155 -0
- package/dist/core/motor.d.ts +43 -0
- package/dist/core/motoresLocales.d.ts +113 -0
- package/dist/core/mudanzaDeWorkspace.d.ts +112 -0
- package/dist/core/navegacion.d.ts +172 -0
- package/dist/core/notify.d.ts +77 -0
- package/dist/core/nucleoXone.d.ts +28 -0
- package/dist/core/panorama.d.ts +68 -0
- package/dist/core/paqueteDeSoporte.d.ts +100 -0
- package/dist/core/planDeSubida.d.ts +56 -0
- package/dist/core/planes.d.ts +53 -0
- package/dist/core/podaDeCheckpoint.d.ts +75 -0
- package/dist/core/ports.d.ts +1034 -0
- package/dist/core/puedeLanzarse.d.ts +181 -0
- package/dist/core/puertosDeAvd.d.ts +59 -0
- package/dist/core/recargaEnCaliente.d.ts +52 -0
- package/dist/core/referenciasDeImagen.d.ts +36 -0
- package/dist/core/remoto.d.ts +76 -0
- package/dist/core/repartoDeEncargo.d.ts +80 -0
- package/dist/core/rubrica.d.ts +78 -0
- package/dist/core/rutaVirtual.d.ts +29 -0
- package/dist/core/selectorDeCarpeta.d.ts +59 -0
- package/dist/core/serieDeEscrituras.d.ts +58 -0
- package/dist/core/settings.d.ts +421 -0
- package/dist/core/shellDeAgente.d.ts +177 -0
- package/dist/core/skills.d.ts +129 -0
- package/dist/core/stitch.d.ts +114 -0
- package/dist/core/tareas.d.ts +412 -0
- package/dist/core/tareasDelPlan.d.ts +123 -0
- package/dist/core/tareasEnElGestor.d.ts +117 -0
- package/dist/core/textos.d.ts +8 -0
- package/dist/core/topeAgotado.d.ts +55 -0
- package/dist/core/traerDeLaMaquina.d.ts +33 -0
- package/dist/core/trazaDeErrores.d.ts +83 -0
- package/dist/core/tunel.d.ts +45 -0
- package/dist/core/turno.d.ts +154 -0
- package/dist/core/validacionDeEscritura.d.ts +95 -0
- package/dist/core/verificacionDeSubida.d.ts +14 -0
- package/dist/core/version.d.ts +35 -0
- package/dist/core/xmlBienFormado.d.ts +23 -0
- package/dist/core/zipDeAdjunto.d.ts +28 -0
- package/dist/core/zipDeSkill.d.ts +74 -0
- package/dist/lib/tareaAutonoma.d.ts +36 -0
- package/dist/lib/tareaAutonoma.js +259 -0
- package/dist/lib/tareaAutonoma.js.map +1 -0
- package/dist/lib.d.ts +31 -0
- package/dist/lib.js +28 -0
- package/dist/lib.js.map +1 -0
- package/dist/vendor/hitl.d.ts +69 -0
- package/dist/vendor/skillLoaders/catalog.d.ts +27 -0
- package/dist/vendor/sqliteSaver.d.ts +22 -0
- package/dist/vendor/tokenTracking.d.ts +22 -0
- package/dist/web/servidor/arranque.d.ts +1372 -0
- package/dist/web/servidor/consolaDeTarea.d.ts +166 -0
- package/dist/web/servidor/consolaWeb.d.ts +142 -0
- package/dist/web/servidor/corredorDeTareas.d.ts +395 -0
- package/dist/web/servidor/datosDeCierre.d.ts +4 -0
- package/dist/web/servidor/interrupcion.d.ts +39 -0
- package/dist/web/servidor/pielWeb.d.ts +32 -0
- package/dist/web/servidor/puenteRemoto.d.ts +80 -0
- package/dist/web/servidor/servidor.d.ts +53 -0
- package/dist/web/servidor/sesiones.d.ts +342 -0
- package/dist/web/servidor/soporte.d.ts +65 -0
- package/dist/web/servidor/transporte.d.ts +2751 -0
- package/dist/web/servidor/vestibulo.d.ts +952 -0
- package/dist/web/servidor/visorOpenui.d.ts +33 -0
- package/package.json +9 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/** Por encima de esto `ls`/`glob`/`grep` se truncan (el `truncateIfTooLong` de deepagents). */
|
|
2
|
+
export declare const CARACTERES_ANTES_DE_TRUNCAR = 80000;
|
|
3
|
+
export declare const AVISO_DE_TRUNCADO = "\n... [resultados truncados: afina el patr\u00F3n o la ruta]";
|
|
4
|
+
/** Por encima de esto un resultado de `execute` o de una tool propia se desaloja del contexto. */
|
|
5
|
+
export declare const CARACTERES_ANTES_DE_DESALOJAR: number;
|
|
6
|
+
export declare const MAXIMO_DE_COINCIDENCIAS: 100;
|
|
7
|
+
export declare function truncarSiLargo(texto: string): string;
|
|
8
|
+
/** Cabeza y cola numeradas, con cuántas líneas se saltan en medio (`createContentPreview`). */
|
|
9
|
+
export declare function vistaPrevia(texto: string, cabeza?: number, cola?: number): string;
|
|
10
|
+
/** Lo que hace falta del backend para desalojar: escribir en la ruta virtual. */
|
|
11
|
+
export interface EscritorDeDesalojo {
|
|
12
|
+
write(ruta: string, contenido: string): unknown;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* El texto que VE el modelo: el mismo si cabe, o la ruta donde quedó y un extracto si no. Si no
|
|
16
|
+
* se puede guardar —sin carpeta de artefactos no hay dónde colgar `/large_tool_results/`, y la
|
|
17
|
+
* guarda del proyecto lo rechaza, como debe— se dice y va el extracto igual: meter el resultado
|
|
18
|
+
* entero es justo lo que esto evita.
|
|
19
|
+
*/
|
|
20
|
+
export declare function desalojarSiGrande(texto: string, backend: EscritorDeDesalojo, forzar?: boolean): Promise<string>;
|
|
21
|
+
/**
|
|
22
|
+
* **El presupuesto de un PASO**, que el recorte de arriba no ve: cada resultado se mira solo, así
|
|
23
|
+
* que cinco `execute` en paralelo de 20.000 caracteres pasan uno a uno y juntos meten 100.000 en
|
|
24
|
+
* el contexto. Es la regla del `largeToolResponse` de TrueForge, con su umbral (10.000 tokens),
|
|
25
|
+
* portada y no montada: con los dos puestos la misma salida se procesaría dos veces.
|
|
26
|
+
*/
|
|
27
|
+
export declare const CARACTERES_DEL_PASO: number;
|
|
28
|
+
/** Un error que haya que recortar se TRUNCA a esto en vez de desalojarse: ahí no hay nada que releer. */
|
|
29
|
+
export declare const CARACTERES_DE_UN_ERROR = 500;
|
|
30
|
+
/** Lo que se usa de un resultado de tool de TrueForge dentro de un `toolResponseProcessor`. */
|
|
31
|
+
export interface ResultadoDelPaso {
|
|
32
|
+
message: {
|
|
33
|
+
content: unknown;
|
|
34
|
+
};
|
|
35
|
+
failure?: unknown;
|
|
36
|
+
isStructuredContent?: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Los resultados de UN paso, dentro del presupuesto: un error ENORME se trunca, y mientras el
|
|
40
|
+
* total se pase se desalojan los mayores primero. Modifica los resultados, que es el contrato del
|
|
41
|
+
* procesador de la librería; no quita ninguno (la librería lanza si falta uno).
|
|
42
|
+
*/
|
|
43
|
+
export declare function recortarPaso(resultados: ResultadoDelPaso[], backend: EscritorDeDesalojo): Promise<void>;
|
|
44
|
+
/** El procesador que TrueForge llama con todos los resultados de un paso. */
|
|
45
|
+
export declare function presupuestoDelPaso(backend: EscritorDeDesalojo): {
|
|
46
|
+
process: (resultados: ResultadoDelPaso[]) => Promise<{}>;
|
|
47
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Un resumen de contexto VACÍO no puede sustituir a la conversación.
|
|
3
|
+
*
|
|
4
|
+
* La compactación de TrueForge (`ContextCompaction.mjs`) pide un resumen al modelo y **sustituye el
|
|
5
|
+
* contexto ENTERO** por su respuesta, sin comprobar que no venga vacía. Con una vacía el raíz se
|
|
6
|
+
* queda sin el encargo: en una sesión real el contexto acabó siendo `[{assistant: ""}, «resumen
|
|
7
|
+
* hecho»]`, y el agente contestó «no tengo ningún encargo» con el encargo a tres mensajes de
|
|
8
|
+
* distancia. Peor, la memoria del hilo quedó así, y reenviar el mensaje no lo arreglaba.
|
|
9
|
+
*
|
|
10
|
+
* Aquí se envuelve el modelo SOLO para esa llamada: una respuesta vacía se reintenta una vez, y si
|
|
11
|
+
* sigue vacía se sustituye por los mensajes de la persona, tal como llegaron al resumen. No mejora
|
|
12
|
+
* un resumen malo; evita que el encargo se pierda.
|
|
13
|
+
*
|
|
14
|
+
* **Límite declarado**: los mensajes se recuperan del texto que la librería le da al modelo
|
|
15
|
+
* (`<n><user>:…`), un formato suyo. Si cambia, el rescate devuelve un aviso sin mensajes en vez de
|
|
16
|
+
* lanzar, y el test de este fichero lo delata.
|
|
17
|
+
*/
|
|
18
|
+
export interface RespuestaDeResumen {
|
|
19
|
+
output: {
|
|
20
|
+
content?: unknown;
|
|
21
|
+
[k: string]: unknown;
|
|
22
|
+
};
|
|
23
|
+
[k: string]: unknown;
|
|
24
|
+
}
|
|
25
|
+
export interface ClienteDeResumen {
|
|
26
|
+
createNonStream: (cuerpo: never) => Promise<never>;
|
|
27
|
+
[k: string]: unknown;
|
|
28
|
+
}
|
|
29
|
+
/** Los mensajes de la persona del texto que la compactación le pasa al modelo, en orden. */
|
|
30
|
+
export declare function mensajesDeLaPersona(candidato: string): string[];
|
|
31
|
+
export declare function resumenDeRescate(candidato: string): string;
|
|
32
|
+
/** El cliente con la compactación protegida. Todo lo demás del cliente pasa igual. */
|
|
33
|
+
export declare function conResumenSeguro<T extends ClienteDeResumen>(cliente: T, avisar?: (texto: string) => void): T;
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import type { PendienteDeAprobacion } from "../../../core/events.js";
|
|
2
|
+
import type { IconosPort, FuentesPort, ConectoresPort, ModelosPort, SkillInfo, SubagenteExternoPort, VerifierPort } from "../../../core/ports.js";
|
|
3
|
+
import { opcionesDeSubagenteExterno } from "../../subagentes/escrituraExterna.js";
|
|
4
|
+
import type { LineaDeDiff } from "../../../core/diff.js";
|
|
5
|
+
import { type Decision } from "../../../vendor/hitl.js";
|
|
6
|
+
import { bloqueDeAprendido } from "../../../core/aprendido.js";
|
|
7
|
+
import { type Agente } from "../../../core/agentes.js";
|
|
8
|
+
import type { SesionReal } from "../../turno/sesionReal.js";
|
|
9
|
+
import { type HechosDelTurno, type VeredictoDelTurno } from "../../../core/juezDelTurno.js";
|
|
10
|
+
import type { Entorno } from "../../config/entorno.js";
|
|
11
|
+
import { type DiagnosticoDeTools } from "../../turno/diagnosticoDeTools.js";
|
|
12
|
+
import { type CargarIndice } from "../../navegacion/indiceEnDisco.js";
|
|
13
|
+
/**
|
|
14
|
+
* Cuando quien MAQUETA es un hijo de Claude Code con ejecución, el bucle lo hace ÉL: despliega, captura, compara con la
|
|
15
|
+
* maqueta y corrige (`textoDeTrabajoSinLlamar`). Medido en Maset: el orquestador, con `BUCLE_DE_CALIDAD`, volvía a pasar el
|
|
16
|
+
* crítico y le encargaba otra vuelta —y otra al diseñador por un SVG—, y cada vuelta era un Claude Code NUEVO que releía
|
|
17
|
+
* todo: unos quince minutos cada una, con las piezas ya bien. Dos bucles uno encima de otro.
|
|
18
|
+
*/
|
|
19
|
+
export declare function textoDeMaquetadorExterno(nombres: readonly string[]): string;
|
|
20
|
+
/**
|
|
21
|
+
* Lo que el orquestador tiene que saber para DELEGAR en ESTE motor. Su prompt es el de siempre
|
|
22
|
+
* (`promptOrquestador`), que habla de `task` y de la ficha que va en su descripción: aquí la
|
|
23
|
+
* delegación es `create_sub_agent` y no tiene descripción por especialista, así que se traduce
|
|
24
|
+
* el nombre de la tool y las fichas van escritas aquí, con la MISMA función que deepagents.
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* **El idioma de la SALIDA, dicho desde código**, al raíz y a cada especialista. Visto en la consola web (MyAllXOne):
|
|
28
|
+
* el texto entre herramientas salía en inglés («Let me call…») con la persona escribiendo en español: nuestros prompts
|
|
29
|
+
* están en español pero ninguno lo decía, y hay piezas internas en inglés que tiran de él (la identidad que añade
|
|
30
|
+
* TrueForge, las descripciones de las tools, la costumbre de DeepSeek de razonar en inglés).
|
|
31
|
+
*
|
|
32
|
+
* **Lo que importa es lo que LEE la persona, en SU idioma** (decisión suya): las respuestas, lo que se dice entre
|
|
33
|
+
* herramientas y lo que se entrega. El razonamiento queda libre. Y no es «español» a fuego, es el idioma del usuario: el
|
|
34
|
+
* raíz lo lee de su mensaje; un hijo no lo ve, así que sigue el de su encargo, que el raíz escribe en ese idioma.
|
|
35
|
+
*/
|
|
36
|
+
export declare const IDIOMA_DE_LA_RESPUESTA: string;
|
|
37
|
+
/** Lo mismo para un ESPECIALISTA, que no ve el mensaje del usuario: sigue el idioma de su encargo. */
|
|
38
|
+
export declare const IDIOMA_DEL_ESPECIALISTA: string;
|
|
39
|
+
/**
|
|
40
|
+
* **Al desarrollador no se le cuenta la MAQUINARIA**, solo al raíz, que es quien le habla. Visto en la consola web: al
|
|
41
|
+
* saludar, el raíz explicaba que tenía «la foto del proyecto», que no la iba a «re-escanear», que el especialista lo
|
|
42
|
+
* llevaría «dentro del HANDOFF DE ANÁLISIS» y que usaría `xone_navegacion`. Es cómo trabaja el harness por dentro, no
|
|
43
|
+
* algo que le sirva a quien pide: petición suya. A los hijos no va, porque le hablan al raíz y no a la persona.
|
|
44
|
+
*/
|
|
45
|
+
export declare const SIN_HABLAR_DEL_HARNESS: string;
|
|
46
|
+
/** Lo que recibe el agente en modo autónomo cuando pregunta sin marcar ninguna opción como recomendada. */
|
|
47
|
+
/**
|
|
48
|
+
* Al raíz de una TAREA DE FONDO (`trabajoSinPersona`). Preguntar no está prohibido —la pregunta se contesta sola con su
|
|
49
|
+
* recomendada, y pasado el tope aparca la tarea—, pero cada una es una parada: se le pide decidir antes. Y como nadie
|
|
50
|
+
* ha visto el trabajo, la respuesta final es lo que la persona leerá: un resumen con lo que decidió sin preguntar.
|
|
51
|
+
*/
|
|
52
|
+
export declare const TRABAJO_SIN_PERSONA: string;
|
|
53
|
+
/**
|
|
54
|
+
* Lo aprendido, para el ORQUESTADOR: lo que hay apuntado y cuándo apuntar él. Le toca sobre todo lo que le cuente un
|
|
55
|
+
* hijo de motor externo en su apartado «Aprendido:» (ese hijo no tiene la tool).
|
|
56
|
+
*/
|
|
57
|
+
export declare function textoDeAprendidoDelRaiz(lista: Parameters<typeof bloqueDeAprendido>[0]): string;
|
|
58
|
+
/**
|
|
59
|
+
* La respuesta a una pregunta del agente cuando nadie la contesta y tenía opción recomendada. No es la opción a secas:
|
|
60
|
+
* medido en Maset, con solo «Opción A (Recommended)» el agente cerraba diciendo «lo decidiste tú», como si la hubiera
|
|
61
|
+
* elegido la persona. Es SU recomendación aplicada, y así tiene que contarla.
|
|
62
|
+
*/
|
|
63
|
+
export declare function respuestaAutonomaRecomendada(elegida: string): string;
|
|
64
|
+
export declare const RESPUESTA_AUTONOMA_SIN_RECOMENDADA = "Modo aut\u00F3nomo: no hay nadie a quien preguntar. Decide t\u00FA con lo que dicen el encargo y el plan, sigue, y di en tu respuesta final qu\u00E9 elegiste y por qu\u00E9.";
|
|
65
|
+
/** Un comando que saca una captura de pantalla del aparato. */
|
|
66
|
+
export declare const COMANDO_DE_CAPTURA: RegExp;
|
|
67
|
+
/** Con cuántas capturas de UN encargo se le avisa a quien ejecuta. */
|
|
68
|
+
export declare const UMBRALES_DE_CAPTURAS: readonly [2, 4];
|
|
69
|
+
/**
|
|
70
|
+
* El aviso de capturas. El prompt del conductor ya decía que una captura «no es una herramienta de diagnóstico», y una
|
|
71
|
+
* comprobación de una pasada real sacó 18 —61 ficheros y 92 pares casi iguales en total—, casi todas para mirar valores
|
|
72
|
+
* y excepciones que `getText`/`getFields` y el log contestan sin mirar nada. Un texto no es un contador.
|
|
73
|
+
*/
|
|
74
|
+
export declare function textoDeCapturas(capturas: number): string;
|
|
75
|
+
/** Con cuántas comprobaciones seguidas se le avisa a quien lleva un lazo. El primero es el «tres vueltas» del prompt. */
|
|
76
|
+
export declare const UMBRALES_DE_VUELTAS: readonly [3, 5];
|
|
77
|
+
/**
|
|
78
|
+
* El aviso: no dice «para», dice «cambia de procedimiento». La misma familia de fallo se vio arreglada de cinco
|
|
79
|
+
* maneras (un control que falta, y al arreglarlo, otro): lo que hay que hacer es aislar la causa una vez y aplicarla
|
|
80
|
+
* a todos los sitios, no reescribir otra vez.
|
|
81
|
+
*/
|
|
82
|
+
export declare function textoDeVueltas(vueltas: number): string;
|
|
83
|
+
/**
|
|
84
|
+
* Lo que se le cuenta a quien ESPERÓ a otros especialistas, al soltarse: a quién esperó y qué hay en el disco.
|
|
85
|
+
* Solo NOMBRES —los recursos de `icons/` y los `ASSETS.md`/`TASKS.md` del plan—, nunca su contenido: es lo que dejó
|
|
86
|
+
* el otro, que no viaja por ningún canal más que el disco. Sin recursos que nombrar, un aviso corto.
|
|
87
|
+
*/
|
|
88
|
+
export declare function textoDeLoQueDejaronLosEsperados(raiz: string, esperadas: readonly string[]): string;
|
|
89
|
+
/**
|
|
90
|
+
* Lo que se le dice a quien puede llamar a otros. Cada llamada de estas es un hilo nuevo que solo sabe lo que le
|
|
91
|
+
* escribas (aunque recuerde sus encargos anteriores de la sesión), y lo que te devuelve es lo que vio, no un
|
|
92
|
+
* veredicto: decidir si lo que escribiste funciona sigue siendo cosa tuya, con lo que ese hijo te traiga.
|
|
93
|
+
*/
|
|
94
|
+
export declare function textoDelBucle(llama: readonly string[], opciones?: {
|
|
95
|
+
conCritica?: boolean;
|
|
96
|
+
conFuentes?: boolean;
|
|
97
|
+
}): string;
|
|
98
|
+
export declare function notaDeDelegacion(agentes: readonly Agente[], opciones?: {
|
|
99
|
+
conIconos?: boolean;
|
|
100
|
+
conFuentes?: boolean;
|
|
101
|
+
conComparacion?: boolean;
|
|
102
|
+
conMemoria?: boolean;
|
|
103
|
+
conBucle?: boolean;
|
|
104
|
+
conEsperas?: boolean;
|
|
105
|
+
}): string;
|
|
106
|
+
/**
|
|
107
|
+
* La frase de las tools que TIENE, sacada de los nombres que de verdad se le montan: escrita a
|
|
108
|
+
* mano se quedaba vieja en cuanto se añadía una —la nota decía cuatro y el modelo veía seis—.
|
|
109
|
+
*/
|
|
110
|
+
/**
|
|
111
|
+
* CUÁNDO usar el índice de atributos, junto a la lista de tools y solo a quien la tiene. Medido en calc13: con la tool
|
|
112
|
+
* montada y descrita, el consultor la consultó 9 veces y el desarrollador —quien escribe los atributos— ninguna, con 13
|
|
113
|
+
* lecturas de la skill: su prompt solo la nombraba en la lista, y el `SKILL.md` le manda a las referencias. No va en el
|
|
114
|
+
* `SKILL.md` porque ese llega también a los motores externos, que no tienen la tool.
|
|
115
|
+
*/
|
|
116
|
+
export declare const USO_DE_XONE_ATRIBUTOS: string;
|
|
117
|
+
/**
|
|
118
|
+
* CUÁNDO convertir las medidas de una maqueta, por lo mismo que `USO_DE_XONE_ATRIBUTOS`: una tool nombrada solo en la
|
|
119
|
+
* lista no se usa. Medido en Maset: con la regla en la skill, el desarrollador copió los px de la maqueta como `p` y los
|
|
120
|
+
* iconos salieron unas 2,6 veces más pequeños.
|
|
121
|
+
*/
|
|
122
|
+
export declare const USO_DE_CONVERTIR_A_P: string;
|
|
123
|
+
export declare function notaDeTools(nombres: readonly string[], limite: string): string;
|
|
124
|
+
/**
|
|
125
|
+
* La pregunta del orquestador, como TEXTO del chat: la pregunta y sus opciones numeradas. Se pinta
|
|
126
|
+
* en la respuesta y no en un diálogo, a propósito: así llega igual a la web, a la TUI y al terminal
|
|
127
|
+
* sin tocar ninguna piel, y la persona contesta como contesta siempre, escribiendo.
|
|
128
|
+
*/
|
|
129
|
+
export declare function textoDePregunta(args: Record<string, unknown>): string;
|
|
130
|
+
/**
|
|
131
|
+
* La pregunta y sus opciones como DATO (`events.ts#consulta`), de los argumentos que mandó el
|
|
132
|
+
* modelo: una sola lectura para el texto, la tarjeta y la respuesta, o las tres divergirían.
|
|
133
|
+
*/
|
|
134
|
+
export declare function consultaDe(args: Record<string, unknown>): {
|
|
135
|
+
pregunta: string;
|
|
136
|
+
opciones: string[];
|
|
137
|
+
};
|
|
138
|
+
/** Lo que escribió la persona, como respuesta: un número de opción se traduce a su texto. */
|
|
139
|
+
export declare function respuestaAPregunta(args: Record<string, unknown>, escrito: string): string;
|
|
140
|
+
/**
|
|
141
|
+
* El tope de llamadas del ORQUESTADOR en un turno. deepagents no le pone ninguno —no puede quedarse
|
|
142
|
+
* a medias— y TrueForge exige un número (su omisión, 25, es la del core); 100 es la omisión de su
|
|
143
|
+
* propio `AgentSpec`. Es POR TURNO porque el raíz se rehace desde su foto al acabar cada uno.
|
|
144
|
+
*/
|
|
145
|
+
export declare const LIMITE_DE_LLAMADAS_DEL_RAIZ = 100;
|
|
146
|
+
export interface OpcionesDeSesionTrueforge {
|
|
147
|
+
raiz: string;
|
|
148
|
+
modelos: ModelosPort;
|
|
149
|
+
entorno: Entorno;
|
|
150
|
+
/**
|
|
151
|
+
* El catálogo de skills de la sesión. OBLIGATORIO: sin él cada especialista se quedaría sin
|
|
152
|
+
* el anuncio de las suyas y trabajaría como si no las tuviera, sin un error que leer — el
|
|
153
|
+
* patrón de fallo del campo opcional.
|
|
154
|
+
*/
|
|
155
|
+
skills: readonly SkillInfo[];
|
|
156
|
+
pedirAprobacion?: (pendientes: PendienteDeAprobacion[], ficheros: Map<string, string>, diffs: Map<string, LineaDeDiff[]>) => Promise<Map<string, Decision>>;
|
|
157
|
+
/** El modo autónomo de la sesión, leído en CADA ronda (`core/modoDeEscritura.ts`). */
|
|
158
|
+
sinAprobacion?: () => boolean;
|
|
159
|
+
/** La carpeta de artefactos de la sesión (lo que el agente ve como `/artefactos/`). */
|
|
160
|
+
artefactos?: string;
|
|
161
|
+
/**
|
|
162
|
+
* La carpeta de los ADJUNTOS — lo que el agente ve como `/adjuntos/`, de solo lectura
|
|
163
|
+
* (`core/adjuntos.ts`, `agent/grafo/proyecto.ts#backendConAdjuntos`). Ausente es «no hay»
|
|
164
|
+
* y `/adjuntos/` no se monta; una cadena vacía montaría el cwd del proceso.
|
|
165
|
+
*
|
|
166
|
+
* **Antes de IXCODE-7 este motor no recibía este dato en absoluto**: una tarea con
|
|
167
|
+
* adjuntos corría en TrueForge sin `/adjuntos/` montada, mudo — los tests de la pieza
|
|
168
|
+
* pasaban igual porque la composición vivía en `montarBackend`, que ningún test doblaba.
|
|
169
|
+
*/
|
|
170
|
+
adjuntos?: string;
|
|
171
|
+
/** De dónde salen los iconos (IXCODE-18). Ausente = `buscar_icono` no se monta. */
|
|
172
|
+
iconos?: IconosPort;
|
|
173
|
+
/** De dónde salen las fuentes (Google Fonts). Ausente = `buscar_fuente`/`traer_fuente` no se montan. */
|
|
174
|
+
fuentes?: FuentesPort;
|
|
175
|
+
/**
|
|
176
|
+
* El raíz puede PROPONER repartir un encargo grande en tareas de fondo encadenadas (`proponer_tareas`,
|
|
177
|
+
* `core/repartoDeEncargo.ts`). Solo una sesión de PERSONA de la web, que es la que tiene la cola de tareas y la
|
|
178
|
+
* tarjeta para encolarlas: nunca una consola de tarea (encadenaría trabajo sin nadie), ni el terminal, `run` o los
|
|
179
|
+
* evals. Ausente es no.
|
|
180
|
+
*/
|
|
181
|
+
puedeProponerTareas?: boolean;
|
|
182
|
+
/**
|
|
183
|
+
* Una TAREA DE FONDO: nadie delante. El raíz resuelve sus dudas solo, como en modo autónomo (la opción recomendada, o
|
|
184
|
+
* «decide tú»), con el mismo tope por turno, y su prompt le pide cerrar con un resumen (`TRABAJO_SIN_PERSONA`).
|
|
185
|
+
* Medido en Maset: cada duda paraba la tarea a preguntar, y la persona contestaba «Continúa donde lo dejaste».
|
|
186
|
+
*/
|
|
187
|
+
trabajoSinPersona?: boolean;
|
|
188
|
+
/**
|
|
189
|
+
* Los conectores MCP del proyecto (Stitch…). El MISMO servicio de Ajustes, que solo tiene la
|
|
190
|
+
* web: ausente —el terminal, `run`, los evals— es que ningún agente recibe sus tools.
|
|
191
|
+
*/
|
|
192
|
+
conectores?: ConectoresPort;
|
|
193
|
+
hilo?: string;
|
|
194
|
+
/**
|
|
195
|
+
* El índice de `xone_navegacion`. Solo para doblarlo en un test: ausente es el REAL, sobre la
|
|
196
|
+
* raíz (`indiceEnDisco`), y la omisión vive aquí y no en quien llama por el patrón de fallo de
|
|
197
|
+
* siempre — compuesta en un cierre que los tests doblan, la tool quedaría escrita y sin montar.
|
|
198
|
+
*/
|
|
199
|
+
navegacion?: CargarIndice;
|
|
200
|
+
/**
|
|
201
|
+
* El simulador. Entra por parámetro, como en deepagents, para que `npm test` siga sin él; en
|
|
202
|
+
* producción lo pasa `abrirSesionReal`, que es quien lo recibe de todas las pieles.
|
|
203
|
+
*/
|
|
204
|
+
verifier?: VerifierPort;
|
|
205
|
+
/** Solo para doblar la traza en un test; ausente es la real (`crearDiagnosticoDeTools`). */
|
|
206
|
+
diagnostico?: DiagnosticoDeTools;
|
|
207
|
+
/** Tope de rondas de aprobación con alguien delante (el de la consola). */
|
|
208
|
+
topeDeRondas?: number;
|
|
209
|
+
/**
|
|
210
|
+
* Que cada especialista recuerde sus encargos anteriores de la sesión (`memoriaDeEspecialistas.ts`).
|
|
211
|
+
* Por omisión SÍ; `XONECODE_SIN_MEMORIA_DE_ESPECIALISTAS=1` lo apaga, para comparar una pasada con y sin ella.
|
|
212
|
+
*/
|
|
213
|
+
memoriaDeEspecialistas?: boolean;
|
|
214
|
+
/**
|
|
215
|
+
* El BUCLE del desarrollador: quien escribe puede llamar por su cuenta a los especialistas que su `.md`
|
|
216
|
+
* declara en `llama` (hoy `device-controller`), y así prueba lo que escribe sin pasar por el orquestador.
|
|
217
|
+
* Apagado por omisión: `XONECODE_BUCLE_DEL_DEVELOPER=1` lo enciende, para compararlo con una pasada sin él.
|
|
218
|
+
*/
|
|
219
|
+
bucleDelDesarrollador?: boolean;
|
|
220
|
+
/**
|
|
221
|
+
* Que un hijo espere al fin de los que su `.md` declara en `espera` cuando el orquestador los lanza a la vez
|
|
222
|
+
* (`esperas.ts`). Por omisión SÍ: es una regla de coherencia, no una palanca de coste.
|
|
223
|
+
*/
|
|
224
|
+
esperasEntreHijos?: boolean;
|
|
225
|
+
/**
|
|
226
|
+
* El crítico VISUAL y el JUEZ del turno, los MISMOS puertos que deepagents
|
|
227
|
+
* (`turnoReal.ts#abrirSesionReal`): llaman a un modelo, así que entran por parámetro y
|
|
228
|
+
* `npm test` no pregunta a nadie. Ausente es «esta ejecución no tiene», nunca «está bien».
|
|
229
|
+
*/
|
|
230
|
+
criticaVisual?: (captura: {
|
|
231
|
+
base64: string;
|
|
232
|
+
mime: string;
|
|
233
|
+
}, pantalla: string) => Promise<{
|
|
234
|
+
veredicto: string;
|
|
235
|
+
observaciones: string[];
|
|
236
|
+
}>;
|
|
237
|
+
juezDelTurno?: (caso: {
|
|
238
|
+
objetivo: string;
|
|
239
|
+
respuesta: string;
|
|
240
|
+
hechos: HechosDelTurno;
|
|
241
|
+
}) => Promise<VeredictoDelTurno>;
|
|
242
|
+
/**
|
|
243
|
+
* La FÁBRICA del puerto de los motores externos (Claude Code, Codex, OpenCode), no el puerto:
|
|
244
|
+
* así un test recibe las opciones que la sesión COMPONE —política, modo, cola, consumo— y las
|
|
245
|
+
* comprueba una a una. Ausente es la real (`crearSubagenteExterno`), y la omisión vive aquí por
|
|
246
|
+
* el patrón de fallo de siempre: compuesta en un cierre que los tests doblan, quedaría escrita.
|
|
247
|
+
*/
|
|
248
|
+
subagenteExterno?: (opciones: ReturnType<typeof opcionesDeSubagenteExterno>) => SubagenteExternoPort;
|
|
249
|
+
/**
|
|
250
|
+
* ¿Las dos trazas opt-in van encendidas sin variable de entorno? Resuelto por quien LLAMA,
|
|
251
|
+
* igual que en deepagents (`turnoReal.ts#abrirSesionReal`) — ver ahí el porqué de que
|
|
252
|
+
* ausente se comporte exactamente como hoy.
|
|
253
|
+
*/
|
|
254
|
+
depurar?: boolean;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* ¿Cambió algún fichero del proyecto (fuera de `.xonecode/`) después de `desde`? Por la hora de modificación del disco,
|
|
258
|
+
* que es lo que vale para los dos motores: un hijo de Claude Code escribe con sus tools y no pasa por las nuestras. Lo
|
|
259
|
+
* que no se puede mirar no cuenta como cambio.
|
|
260
|
+
*/
|
|
261
|
+
export declare function cambioDespuesDe(raiz: string, desde: number): boolean;
|
|
262
|
+
/**
|
|
263
|
+
* `agregarNota` no vive todavía en `SesionReal` (IXCODE-4, Task 6 se la añade ahí como opcional,
|
|
264
|
+
* compartida con deepagents): se ensancha el tipo de retorno AQUÍ, en vez de esperar a esa task,
|
|
265
|
+
* porque una sesión sin ella tipado como `SesionReal` a secas dejaría `s.agregarNota(...)` en
|
|
266
|
+
* rojo bajo `tsc --noEmit` desde este mismo commit. Sigue siendo un `SesionReal` válido en
|
|
267
|
+
* cualquier sitio que lo espere (`turnoReal.ts#abrirSesionReal`), por ser una intersección.
|
|
268
|
+
*/
|
|
269
|
+
export declare function abrirSesionTrueforge(opciones: OpcionesDeSesionTrueforge): Promise<SesionReal & {
|
|
270
|
+
agregarNota(texto: string): void;
|
|
271
|
+
detener(texto: string): void;
|
|
272
|
+
readonly llamadasTiradasPorDetener: number;
|
|
273
|
+
}>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Las skills de un agente de TrueForge: **las de SU `.md` y ninguna más**, la misma regla que en
|
|
3
|
+
* deepagents, donde el orquestador no recibe ninguna y cada subagente recibe su catálogo declarado
|
|
4
|
+
* (`xoneAgent.ts`: «los subagentes no heredan las skills del orquestador»).
|
|
5
|
+
*
|
|
6
|
+
* En deepagents las anuncia el `SkillsMiddleware` —nombre y descripción— y el agente lee el
|
|
7
|
+
* `SKILL.md` cuando la necesita. TrueForge no tiene ese middleware, así que se anuncian en el prompt
|
|
8
|
+
* con la misma forma: qué hay, para qué sirve y dónde leerlo. El contenido no se inyecta: son
|
|
9
|
+
* decenas de miles de caracteres, y cargarlas todas en cada llamada es el gasto que la carga bajo
|
|
10
|
+
* demanda existe para evitar.
|
|
11
|
+
*
|
|
12
|
+
* Puro: el catálogo entra por parámetro.
|
|
13
|
+
*/
|
|
14
|
+
import type { Agente } from "../../../core/agentes.js";
|
|
15
|
+
import type { SkillInfo } from "../../../core/ports.js";
|
|
16
|
+
export declare function anuncioDeSkills(agente: Pick<Agente, "skills">, catalogo: readonly SkillInfo[]): string;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type EscritorDeDesalojo } from "./recortes.js";
|
|
2
|
+
import { type ConectorParaElAgente, type ToolConEsquema } from "../../../core/conectores.js";
|
|
3
|
+
import type { ConectoresPort } from "../../../core/ports.js";
|
|
4
|
+
import type { LineaDeDiff } from "../../../core/diff.js";
|
|
5
|
+
/** Una tool de un conector, ya con el nombre con que la ve el agente. */
|
|
6
|
+
export interface ToolMontada {
|
|
7
|
+
nombre: string;
|
|
8
|
+
conector: {
|
|
9
|
+
id: string;
|
|
10
|
+
nombre: string;
|
|
11
|
+
};
|
|
12
|
+
tool: ToolConEsquema;
|
|
13
|
+
/** Los campos que el catálogo le quita a su resultado (`camposFueraDelResultado`). */
|
|
14
|
+
recortar?: readonly string[];
|
|
15
|
+
}
|
|
16
|
+
export type ClaseDeTool = "lectura" | "escritura";
|
|
17
|
+
/** Cuánto se espera antes de repetir una tool de LECTURA que falló (Stitch devolvió una vez «The service is currently unavailable»). */
|
|
18
|
+
export declare const PAUSA_ANTES_DE_REPETIR_MS = 2000;
|
|
19
|
+
export interface ConectoresDeSesion {
|
|
20
|
+
/** Hay algún conector que montar (sin preguntar a la red). */
|
|
21
|
+
readonly hay: boolean;
|
|
22
|
+
/** El `ToolSource` de TrueForge con las tools de esa clase. */
|
|
23
|
+
fuente(clase: ClaseDeTool, backend: EscritorDeDesalojo): Record<string, unknown>;
|
|
24
|
+
/** La tool REMOTA que escribe con ese nombre, si lo es. Para la tarjeta de aprobación. */
|
|
25
|
+
remotaDe(nombre: string): ToolMontada | undefined;
|
|
26
|
+
}
|
|
27
|
+
export declare function crearConectoresDeSesion(puerto: ConectoresPort, conectores: readonly ConectorParaElAgente[], esperar?: (ms: number) => Promise<void>): ConectoresDeSesion;
|
|
28
|
+
/**
|
|
29
|
+
* La tarjeta de aprobación de una tool remota: qué conector, qué tool y sus argumentos ENTEROS —
|
|
30
|
+
* es el único sitio donde los argumentos de una tool se enseñan (`core/events.ts`), y aquí se
|
|
31
|
+
* DECIDE sobre ellos—. Van como líneas añadidas del diff, que es lo que la tarjeta ya pinta.
|
|
32
|
+
*/
|
|
33
|
+
export declare function tarjetaDeRemota(m: ToolMontada, args: Record<string, unknown>): {
|
|
34
|
+
descripcion: string;
|
|
35
|
+
lineas: LineaDeDiff[];
|
|
36
|
+
};
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import type { DispositivoDeLaSesion } from "../../../core/dispositivoDeSesion.js";
|
|
2
|
+
/** El backend de deepagents en su versión nueva, en lo que se usa. */
|
|
3
|
+
export interface BackendDeFicheros {
|
|
4
|
+
ls(ruta: string): unknown;
|
|
5
|
+
read(ruta: string, offset?: number, limit?: number): unknown;
|
|
6
|
+
write(ruta: string, contenido: string): unknown;
|
|
7
|
+
edit(ruta: string, viejo: string, nuevo: string, todas?: boolean): unknown;
|
|
8
|
+
glob(patron: string, ruta?: string): unknown;
|
|
9
|
+
grep(patron: string, ruta?: string | null, glob?: string | null): unknown;
|
|
10
|
+
}
|
|
11
|
+
/** Una regla de `permisosDe`, tal cual la escribe. */
|
|
12
|
+
export interface ReglaDeRuta {
|
|
13
|
+
operations: readonly ("read" | "write")[];
|
|
14
|
+
paths: readonly string[];
|
|
15
|
+
mode?: "allow" | "deny";
|
|
16
|
+
}
|
|
17
|
+
/** La misma decisión que `decidePathAccess` de deepagents: primera que casa, y permitir por
|
|
18
|
+
* omisión. Con `micromatch` y `dot: true`, que es como la librería compara. */
|
|
19
|
+
export declare function decidirAccesoDeRuta(reglas: readonly ReglaDeRuta[], operacion: "read" | "write", ruta: string): "allow" | "deny";
|
|
20
|
+
/** Las seis tools y lo que cada una toca, para decidir el permiso antes de llamar al backend. */
|
|
21
|
+
export declare const TOOLS_DE_FICHERO: readonly ["ls", "read_file", "write_file", "edit_file", "glob", "grep"];
|
|
22
|
+
export type ToolDeFichero = (typeof TOOLS_DE_FICHERO)[number];
|
|
23
|
+
/** Las que ESCRIBEN: son las que piden aprobación, igual que el HITL de deepagents. */
|
|
24
|
+
export declare const TOOLS_QUE_ESCRIBEN: readonly ToolDeFichero[];
|
|
25
|
+
/**
|
|
26
|
+
* La ruta VIRTUAL que el backend entiende, desde lo que escriba el modelo. Medido en la primera
|
|
27
|
+
* sesión real: el modelo pidió `ls .` y `read_file MEMORIA_PROYECTO.md`, sin la barra, y el
|
|
28
|
+
* backend —que solo sabe de rutas absolutas del espacio virtual— contestó «no existe» sobre un
|
|
29
|
+
* fichero que sí está; el agente acabó barriendo los `.xne` a mano. Vacía o `.` es la raíz, y
|
|
30
|
+
* lo relativo cuelga de ella.
|
|
31
|
+
*
|
|
32
|
+
* **Se normaliza ANTES de evaluar los permisos**, y es lo que importa: las reglas de `permisosDe`
|
|
33
|
+
* están escritas sobre rutas absolutas (`/.env`), así que una relativa (`.env`) no casaría con
|
|
34
|
+
* ninguna y pasaría. Y una que se sale de la raíz con `..` no es una ruta del proyecto: `undefined`,
|
|
35
|
+
* que quien llama rechaza — lo mismo que hace deepagents.
|
|
36
|
+
*/
|
|
37
|
+
export declare function normalizarRuta(bruta: string): string | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Las líneas que devuelve un `read_file` sin `limit`, y el tope de caracteres que las acota. Eran 100, el valor de
|
|
40
|
+
* deepagents copiado al adaptador, y medido en una pasada real (calc10): un fichero de 450 líneas se leía en tres o
|
|
41
|
+
* cuatro páginas, y las lecturas por página eran la mayoría de las «relecturas» de la traza. opencode devuelve hasta
|
|
42
|
+
* 2.000 líneas o 50 KB; aquí lo mismo, y lo que no cabe se DICE con el `offset` por donde seguir.
|
|
43
|
+
*/
|
|
44
|
+
export declare const LINEAS_POR_LECTURA = 2000;
|
|
45
|
+
export declare const CARACTERES_POR_LECTURA = 50000;
|
|
46
|
+
export declare function seReescribeConEdit(ruta: string): boolean;
|
|
47
|
+
export declare function textoDeReescrituraRechazada(ruta: string): string;
|
|
48
|
+
/** El contenido numerado, cortado por una LÍNEA entera si pasa del tope de caracteres, diciendo por dónde seguir. */
|
|
49
|
+
export declare function lecturaAcotada(contenido: string, desde: number, tope?: number): string;
|
|
50
|
+
/**
|
|
51
|
+
* El `ToolSource` de TrueForge con las seis tools. La aprobación NO se decide aquí: la pone el
|
|
52
|
+
* `ToolSet` que lo envuelve (`requireApprovalForTools`), y la tool solo corre tras el «sí».
|
|
53
|
+
*/
|
|
54
|
+
export declare function fuenteDeFicheros(opciones: {
|
|
55
|
+
backend: BackendDeFicheros;
|
|
56
|
+
reglas: readonly ReglaDeRuta[];
|
|
57
|
+
/** Cuáles se ofrecen. Ausente = las seis. El `device-controller` no escribe ficheros: ejecuta. */
|
|
58
|
+
tools?: readonly ToolDeFichero[];
|
|
59
|
+
}): {
|
|
60
|
+
name: string;
|
|
61
|
+
id: string;
|
|
62
|
+
listTools: () => Promise<{
|
|
63
|
+
result: {
|
|
64
|
+
tools: {
|
|
65
|
+
name: "read_file" | "ls" | "write_file" | "edit_file" | "glob" | "grep";
|
|
66
|
+
description: string;
|
|
67
|
+
inputSchema: {
|
|
68
|
+
type: "object";
|
|
69
|
+
properties: Record<string, unknown>;
|
|
70
|
+
required: string[];
|
|
71
|
+
};
|
|
72
|
+
preload: boolean;
|
|
73
|
+
}[];
|
|
74
|
+
};
|
|
75
|
+
wasInitialized: undefined;
|
|
76
|
+
}>;
|
|
77
|
+
callTool: (params: {
|
|
78
|
+
name: string;
|
|
79
|
+
arguments?: Record<string, unknown>;
|
|
80
|
+
}) => Promise<import("@truefoundry/trueforge-core/core/mcp/IMCPServer.mjs").CallToolResolvedResponse>;
|
|
81
|
+
toolCallInfo: (params: {
|
|
82
|
+
name: string;
|
|
83
|
+
}) => Promise<{
|
|
84
|
+
type: "mcp";
|
|
85
|
+
mcp_server_id: string;
|
|
86
|
+
mcp_server_name: string;
|
|
87
|
+
original_tool_name: string;
|
|
88
|
+
}>;
|
|
89
|
+
};
|
|
90
|
+
/** Las que solo LEEN: las que lleva un subagente que no escribe el proyecto. */
|
|
91
|
+
export declare const TOOLS_DE_LECTURA: readonly ToolDeFichero[];
|
|
92
|
+
/** Lo que devuelve la shell de deepagents (`ExecuteResponse`), en lo que se usa. */
|
|
93
|
+
interface BackendQueEjecuta {
|
|
94
|
+
execute(comando: string): unknown;
|
|
95
|
+
/** Para desalojar una salida grande a `/large_tool_results/`, como deepagents. */
|
|
96
|
+
write(ruta: string, contenido: string): unknown;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* `execute`: la shell del `device-controller`, sobre el MISMO backend que le monta deepagents
|
|
100
|
+
* (`backendDeAgente` con `ejecucion`), así que su entorno —los scripts de las skills en el PATH, sin
|
|
101
|
+
* las claves de API, con el fichero del dispositivo de la sesión— y el anuncio de los artefactos que
|
|
102
|
+
* deje un comando son los de siempre.
|
|
103
|
+
*
|
|
104
|
+
* **Solo la lleva UN agente**, como en deepagents: una shell no pasa por `permisosDe` ni por la
|
|
105
|
+
* aprobación, así que no se le da al que escribe el proyecto. Y no pregunta antes de cada comando:
|
|
106
|
+
* lo que lo compensa es que el comando entero se VE en el chat (`resumenDeTool.ts` lo tiene en su
|
|
107
|
+
* lista blanca).
|
|
108
|
+
*/
|
|
109
|
+
export declare function fuenteDeEjecucion(backend: BackendQueEjecuta,
|
|
110
|
+
/** El aparato de la sesión, leído en CADA comando (IXCODE-32). Ausente = no hay ninguno elegido. */
|
|
111
|
+
dispositivo?: () => DispositivoDeLaSesion | undefined): {
|
|
112
|
+
name: string;
|
|
113
|
+
id: string;
|
|
114
|
+
listTools: () => Promise<{
|
|
115
|
+
result: {
|
|
116
|
+
tools: {
|
|
117
|
+
name: string;
|
|
118
|
+
description: string;
|
|
119
|
+
inputSchema: {
|
|
120
|
+
type: "object";
|
|
121
|
+
properties: {
|
|
122
|
+
command: {
|
|
123
|
+
type: string;
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
required: string[];
|
|
127
|
+
};
|
|
128
|
+
preload: boolean;
|
|
129
|
+
}[];
|
|
130
|
+
};
|
|
131
|
+
wasInitialized: undefined;
|
|
132
|
+
}>;
|
|
133
|
+
callTool: (params: {
|
|
134
|
+
name: string;
|
|
135
|
+
arguments?: Record<string, unknown>;
|
|
136
|
+
}) => Promise<import("@truefoundry/trueforge-core/core/mcp/IMCPServer.mjs").CallToolResolvedResponse>;
|
|
137
|
+
toolCallInfo: (params: {
|
|
138
|
+
name: string;
|
|
139
|
+
}) => Promise<{
|
|
140
|
+
type: "mcp";
|
|
141
|
+
mcp_server_id: string;
|
|
142
|
+
mcp_server_name: string;
|
|
143
|
+
original_tool_name: string;
|
|
144
|
+
}>;
|
|
145
|
+
};
|
|
146
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type EscritorDeDesalojo } from "./recortes.js";
|
|
2
|
+
/** Lo que se usa de una tool de LangChain: su nombre, su descripción, su esquema y llamarla. */
|
|
3
|
+
export interface ToolDeLangchain {
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
schema: unknown;
|
|
7
|
+
invoke(entrada: unknown): Promise<unknown>;
|
|
8
|
+
}
|
|
9
|
+
/** Un `ToolSource` de TrueForge con estas tools, llamadas tal cual. */
|
|
10
|
+
export declare function fuenteDeLangchain(tools: readonly ToolDeLangchain[], backend: EscritorDeDesalojo): {
|
|
11
|
+
name: string;
|
|
12
|
+
id: string;
|
|
13
|
+
listTools: () => Promise<{
|
|
14
|
+
result: {
|
|
15
|
+
tools: {
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: "object";
|
|
20
|
+
};
|
|
21
|
+
preload: boolean;
|
|
22
|
+
}[];
|
|
23
|
+
};
|
|
24
|
+
wasInitialized: undefined;
|
|
25
|
+
}>;
|
|
26
|
+
callTool: (params: {
|
|
27
|
+
name: string;
|
|
28
|
+
arguments?: Record<string, unknown>;
|
|
29
|
+
}) => Promise<import("@truefoundry/trueforge-core/core/mcp/IMCPServer.mjs").CallToolResolvedResponse>;
|
|
30
|
+
toolCallInfo: (params: {
|
|
31
|
+
name: string;
|
|
32
|
+
}) => Promise<{
|
|
33
|
+
type: "mcp";
|
|
34
|
+
mcp_server_id: string;
|
|
35
|
+
mcp_server_name: string;
|
|
36
|
+
original_tool_name: string;
|
|
37
|
+
}>;
|
|
38
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { Artefacto } from "../../../core/artefactos.js";
|
|
3
|
+
import type { ConectoresPort } from "../../../core/ports.js";
|
|
4
|
+
export declare const NOMBRE_TRAER_DE_STITCH = "traer_pantalla_de_stitch";
|
|
5
|
+
/** El id del conector en el catálogo: la tool solo se monta si la sesión lo tiene. */
|
|
6
|
+
export declare const CONECTOR_STITCH = "stitch";
|
|
7
|
+
/** Lo que devuelve una descarga: los bytes y el `content-type` que dijo el servidor. */
|
|
8
|
+
export type Descargar = (url: string, tope: number) => Promise<{
|
|
9
|
+
bytes: Buffer;
|
|
10
|
+
tipo: string;
|
|
11
|
+
}>;
|
|
12
|
+
/** Tope de una descarga: una pantalla son cientos de KB. */
|
|
13
|
+
export declare const TOPE_DE_DESCARGA_MS: number;
|
|
14
|
+
/** La red de verdad: `fetch` con tope de tiempo y de tamaño (se corta al pasarse, no al acabar). */
|
|
15
|
+
export declare const descargarEnRed: Descargar;
|
|
16
|
+
export interface DependenciasDeTraerDeStitch {
|
|
17
|
+
conectores: ConectoresPort;
|
|
18
|
+
/** La carpeta de artefactos de la sesión, en disco. */
|
|
19
|
+
carpeta: string;
|
|
20
|
+
alEscribir?: (a: Artefacto) => void;
|
|
21
|
+
descargar?: Descargar;
|
|
22
|
+
/**
|
|
23
|
+
* Una TAREA (sin nadie delante): una pantalla nombrada que no aparece NO se sustituye por una parecida (decisión suya).
|
|
24
|
+
* Medido en Maset: «Menu Listado Entregas» no salía y el orquestador construyó la ventana con «Albaranes Pendientes».
|
|
25
|
+
*/
|
|
26
|
+
sinPersona?: boolean;
|
|
27
|
+
/** Se pidió una pantalla por título y no casó ninguna: el harness lo apunta para el cierre (`## CRITICAL`). */
|
|
28
|
+
alNoEncontrar?: (titulo: string) => void;
|
|
29
|
+
/** Se trajo una pantalla: su título, para dar por resuelto lo que no se encontró antes con otras palabras. */
|
|
30
|
+
alTraer?: (titulo: string) => void;
|
|
31
|
+
}
|
|
32
|
+
export declare function crearTraerDeStitch(deps: DependenciasDeTraerDeStitch): import("@langchain/core/tools").DynamicStructuredTool<z.ZodObject<{
|
|
33
|
+
pantalla: z.ZodOptional<z.ZodString>;
|
|
34
|
+
titulo: z.ZodOptional<z.ZodString>;
|
|
35
|
+
proyecto: z.ZodOptional<z.ZodString>;
|
|
36
|
+
}, z.core.$strip>, {
|
|
37
|
+
pantalla?: string | undefined;
|
|
38
|
+
titulo?: string | undefined;
|
|
39
|
+
proyecto?: string | undefined;
|
|
40
|
+
}, {
|
|
41
|
+
pantalla?: string | undefined;
|
|
42
|
+
titulo?: string | undefined;
|
|
43
|
+
proyecto?: string | undefined;
|
|
44
|
+
}, string, unknown, "traer_pantalla_de_stitch">;
|
|
45
|
+
/**
|
|
46
|
+
* Trae UNA pantalla por su `name` (`projects/<id>/screens/<id>`) a la carpeta de diseño de la sesión: la imagen a tamaño
|
|
47
|
+
* real, su code.html y el DESIGN.md. Es lo que hace la tool, y lo usa también el corredor de tareas para dejar puesta,
|
|
48
|
+
* ANTES del primer turno, la pantalla que la persona ELIGIÓ para la tarea (`Tarea.pantallaDeStitch`). Devuelve el texto
|
|
49
|
+
* para el agente; nunca lanza.
|
|
50
|
+
*/
|
|
51
|
+
export declare function traerPantalla(deps: DependenciasDeTraerDeStitch, nombre: string): Promise<string>;
|
|
52
|
+
/** La marca de la pantalla ELEGIDA para la tarea, dentro de la carpeta de diseño de la sesión (la escribe el corredor). */
|
|
53
|
+
export declare const MARCA_DE_PANTALLA_ELEGIDA = ".elegida.json";
|
|
54
|
+
/** La pantalla elegida de esta sesión, o `undefined` (sin marca, o ilegible: entonces la tool busca como siempre). */
|
|
55
|
+
export declare function pantallaElegidaDeLaSesion(carpeta: string): {
|
|
56
|
+
name: string;
|
|
57
|
+
titulo: string;
|
|
58
|
+
} | undefined;
|
|
59
|
+
/** Deja la marca: SIEMPRE, también si traerla falla (la tool la traerá por su id, y no buscará otra). */
|
|
60
|
+
export declare function marcarPantallaElegida(carpeta: string, pantalla: {
|
|
61
|
+
name: string;
|
|
62
|
+
titulo: string;
|
|
63
|
+
}): void;
|