xonecode 0.38.44 → 0.39.4
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/apps/web/dist/assets/{EditorDeFichero-BeWDctgN.js → EditorDeFichero-4HFwLke_.js} +1 -1
- package/apps/web/dist/assets/index-C57A_ylS.css +1 -0
- package/apps/web/dist/assets/index-CYZEmLsX.js +506 -0
- package/apps/web/dist/assets/{php-D3QdOnb8.js → php-CdQiFsq1.js} +1 -1
- package/apps/web/dist/assets/{ruby-DDAcW-Z2.js → ruby-3JrCXo0h.js} +1 -1
- package/apps/web/dist/index.html +2 -2
- 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 +148 -0
- package/dist/agent/tareas/tareasEnDisco.js +17 -0
- package/dist/agent/tareas/tareasEnDisco.js.map +1 -1
- 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/arranque.js +39 -0
- package/dist/web/servidor/arranque.js.map +1 -1
- 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
- package/apps/web/dist/assets/index-B-6cDRAV.js +0 -506
- package/apps/web/dist/assets/index-BQdHnRbo.css +0 -1
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Leer los dos ficheros de configuración del disco y volcar las credenciales en el
|
|
3
|
+
* entorno. Aquí está el I/O que `core/config.ts` no quiere: rutas, `readFileSync` y
|
|
4
|
+
* `statSync`; lo que llega a `validar`/`validarAuth` es solo datos.
|
|
5
|
+
*/
|
|
6
|
+
import { closeSync, openSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
|
|
7
|
+
import { Aviso, Auth, ConfigDeFichero, Procedencia } from "../../core/config.js";
|
|
8
|
+
import type { DisenoVinculado } from "../../core/stitch.js";
|
|
9
|
+
import type { VinculoGuardado } from "../../core/gestorDeTareas.js";
|
|
10
|
+
import { Proveedor, type ProveedorDeclarado } from "../../core/modelos.js";
|
|
11
|
+
import type { Papel } from "../../core/ports.js";
|
|
12
|
+
import type { ModoDeEscritura } from "../../core/modoDeEscritura.js";
|
|
13
|
+
export declare const NOMBRE_CARPETA = ".xonecode";
|
|
14
|
+
export declare class ConfigRotaEnDisco extends Error {
|
|
15
|
+
constructor(ruta: string, causa?: unknown);
|
|
16
|
+
}
|
|
17
|
+
export declare function rutaConfigGlobal(): string;
|
|
18
|
+
export declare function rutaConfigDeProyecto(raiz: string): string;
|
|
19
|
+
export declare function rutaAuth(): string;
|
|
20
|
+
export interface OperacionesDeEscritura {
|
|
21
|
+
openSync: typeof openSync;
|
|
22
|
+
writeFileSync: typeof writeFileSync;
|
|
23
|
+
closeSync: typeof closeSync;
|
|
24
|
+
renameSync: typeof renameSync;
|
|
25
|
+
unlinkSync: typeof unlinkSync;
|
|
26
|
+
}
|
|
27
|
+
/** Guarda una elección de papel sin perder el resto del config global. */
|
|
28
|
+
export declare function guardarModeloGlobal(papel: Papel, id: string, operaciones?: OperacionesDeEscritura): {
|
|
29
|
+
ruta: string;
|
|
30
|
+
id: string;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Los proveedores personalizados dados de alta, del config GLOBAL y de ningún otro.
|
|
34
|
+
*
|
|
35
|
+
* No recibe raíz a propósito: el registro no depende del proyecto, y darle una invitaría a
|
|
36
|
+
* pensar que el `config.json` del proyecto también cuenta — que es justo lo que
|
|
37
|
+
* `core/config.ts` rechaza, porque la clave se guarda por identificador y un proyecto que
|
|
38
|
+
* redefiniera la URL de un slug ya dado de alta la mandaría a otro host.
|
|
39
|
+
*
|
|
40
|
+
* Lee de disco en cada llamada, sin caché: la ventana de ajustes da de alta en caliente, y
|
|
41
|
+
* una lista capturada al arrancar se quedaría vieja hasta reiniciar. Un fichero ilegible
|
|
42
|
+
* devuelve la lista vacía; quien tiene que contar ESE problema es `cargar`, que ya lo hace
|
|
43
|
+
* con sus avisos y es quien se pinta.
|
|
44
|
+
*/
|
|
45
|
+
export declare function proveedoresPersonalizados(): readonly ProveedorDeclarado[];
|
|
46
|
+
/**
|
|
47
|
+
* Da de alta —o vuelve a escribir— un proveedor personalizado en el config GLOBAL.
|
|
48
|
+
*
|
|
49
|
+
* Tres cosas, y las tres tienen su porqué:
|
|
50
|
+
* - **Global y solo global.** La razón está en `core/config.ts` («proveedores»): la clave
|
|
51
|
+
* se guarda por identificador, así que un proyecto que pudiera redefinir la URL de un
|
|
52
|
+
* slug ya dado de alta mandaría esa clave a otro host. Aquí ni se ofrece la opción.
|
|
53
|
+
* - **Vuelve a pasar por el VALIDADOR** antes de escribir. Este fichero se edita también a
|
|
54
|
+
* mano, así que la autoridad sobre si un alta vale es el cargador y no el formulario que
|
|
55
|
+
* la mandó — la misma regla que `guardarAgente` con los `.md` de los subagentes.
|
|
56
|
+
* - **No toca la clave.** El alta escribe nombre y URL; la credencial va por su camino de
|
|
57
|
+
* siempre (`guardarCredencial`, `auth.json`, modo 0600), que es el único mensaje del
|
|
58
|
+
* cable que la lleva.
|
|
59
|
+
*/
|
|
60
|
+
export declare function guardarProveedorPersonalizado(declarado: ProveedorDeclarado, operaciones?: OperacionesDeEscritura): {
|
|
61
|
+
ruta: string;
|
|
62
|
+
declarado: ProveedorDeclarado;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Retira un proveedor personalizado del config global. NO se lleva su credencial: eso lo
|
|
66
|
+
* hace quien llama, con `borrarCredencial`, porque es el otro fichero y el otro permiso —
|
|
67
|
+
* y una clave huérfana en `auth.json` es una clave que ya no se puede mandar a ninguna
|
|
68
|
+
* parte, pero sigue siendo un secreto en disco.
|
|
69
|
+
*/
|
|
70
|
+
export declare function borrarProveedorPersonalizado(slug: string, operaciones?: OperacionesDeEscritura): {
|
|
71
|
+
ruta: string;
|
|
72
|
+
borrado: boolean;
|
|
73
|
+
};
|
|
74
|
+
/** Guarda la preferencia estética junto al proyecto; nunca en el config global de la cuenta. */
|
|
75
|
+
export declare function guardarTemaDeProyecto(raiz: string, tema: string): {
|
|
76
|
+
ruta: string;
|
|
77
|
+
tema: string;
|
|
78
|
+
};
|
|
79
|
+
/** El modelo que este proyecto usa, sea cual sea el global. Nunca lleva claves. */
|
|
80
|
+
export declare function guardarModelosDeProyecto(raiz: string, papel: Papel, id: string): {
|
|
81
|
+
ruta: string;
|
|
82
|
+
id: string;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* La rama ORIGEN del proyecto: de la que se baja y contra la que se compara.
|
|
86
|
+
* Va dentro de `cloudstudio`, junto a la URL y al proyecto, porque es identidad del
|
|
87
|
+
* remoto y no una preferencia del usuario.
|
|
88
|
+
*/
|
|
89
|
+
export declare function guardarRamaDeProyecto(raiz: string, rama: string): {
|
|
90
|
+
ruta: string;
|
|
91
|
+
rama: string;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* El modo pertenece al proyecto, no a la cuenta: una carpeta puede trabajarse sin red
|
|
95
|
+
* aunque la anterior se abriera desde CloudStudio. OAuth queda siempre fuera de aquí.
|
|
96
|
+
*/
|
|
97
|
+
export declare function guardarModoDeProyecto(raiz: string, modo: "offline" | "cloud"): {
|
|
98
|
+
ruta: string;
|
|
99
|
+
modo: "offline" | "cloud";
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Los conectores MCP (IXCODE-11) que este proyecto usa, del catálogo de `core/conectores.ts`.
|
|
103
|
+
* La lista se REEMPLAZA entera —fusionarla elemento a elemento no tiene un significado
|
|
104
|
+
* único, a diferencia de un objeto—, y el resto del fichero se conserva igual que en
|
|
105
|
+
* `guardarModoDeProyecto`.
|
|
106
|
+
*/
|
|
107
|
+
export declare function guardarConectoresDeProyecto(raiz: string, ids: string[]): {
|
|
108
|
+
ruta: string;
|
|
109
|
+
conectores: string[];
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* El modo con que nacen las sesiones nuevas de este proyecto (IXCODE-31). `undefined` QUITA la
|
|
113
|
+
* clave (vuelve a mandar el global); `supervisado` SÍ se escribe: en un proyecto es una
|
|
114
|
+
* elección que pisa a un global autónomo, no la omisión.
|
|
115
|
+
*/
|
|
116
|
+
export declare function guardarModoDeEscrituraDeProyecto(raiz: string, modo: ModoDeEscritura | undefined): {
|
|
117
|
+
ruta: string;
|
|
118
|
+
modoDeEscritura: ModoDeEscritura | undefined;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* El gestor de tareas vinculado a este proyecto (IXCODE-11): a qué conector, sitio y
|
|
122
|
+
* proyecto remoto. `undefined` QUITA la clave del fichero en vez de dejarla vacía o nula
|
|
123
|
+
* —un `gestorDeTareas: {}` sería una forma más de dato incompleto que `validar` tendría
|
|
124
|
+
* que rechazar en cada lectura—, misma mecánica que `guardarEntornoDeProyecto`.
|
|
125
|
+
*/
|
|
126
|
+
export declare function guardarGestorDeProyecto(raiz: string, gestor: VinculoGuardado | undefined): {
|
|
127
|
+
ruta: string;
|
|
128
|
+
gestorDeTareas: VinculoGuardado | undefined;
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* El proyecto de Stitch vinculado a este proyecto (`core/stitch.ts#DisenoVinculado`). `undefined` QUITA la clave, la
|
|
132
|
+
* mecánica de `guardarGestorDeProyecto`.
|
|
133
|
+
*/
|
|
134
|
+
export declare function guardarDisenoDeProyecto(raiz: string, diseno: DisenoVinculado | undefined): {
|
|
135
|
+
ruta: string;
|
|
136
|
+
disenoVinculado: DisenoVinculado | undefined;
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Guarda solo el endpoint MCP: OAuth nunca vive dentro del proyecto.
|
|
140
|
+
*
|
|
141
|
+
* Fusiona sobre `cloudstudio`, no lo reemplaza entero: un `/connect-studio` posterior
|
|
142
|
+
* (nueva URL, o la misma) no puede borrar en silencio la `rama` o el `proyecto` que ya
|
|
143
|
+
* se habían fijado — la próxima sincronización compararía contra la rama equivocada.
|
|
144
|
+
*/
|
|
145
|
+
export declare function guardarCloudStudioDeProyecto(raiz: string, url: string, scopes?: readonly string[]): {
|
|
146
|
+
ruta: string;
|
|
147
|
+
url: string;
|
|
148
|
+
scopes: string[];
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* A qué entorno de `~/.xonecode/settings.json` pertenece este proyecto.
|
|
152
|
+
*
|
|
153
|
+
* Se guarda ADEMÁS de `cloudstudio.url`, nunca en su lugar: la URL es lo que leen
|
|
154
|
+
* `crearSincronizador` (`cli/main.ts`) y todo lo que cuelga de él, y conservarla es lo que
|
|
155
|
+
* hace literalmente cierto que la sincronización no se toca. El `entorno` añade la
|
|
156
|
+
* referencia que hacía falta para leer el juego de credenciales correcto
|
|
157
|
+
* (`porEntorno[id]`, `agent/cloudstudio/cloudstudioMcp.ts`) en vez de reautenticar bajo `legado`.
|
|
158
|
+
*
|
|
159
|
+
* Misma mecánica que `guardarCloudStudioDeProyecto`: fusión sobre el objeto CRUDO y
|
|
160
|
+
* escritura atómica, para no borrar lo que ya hubiera en el fichero.
|
|
161
|
+
*/
|
|
162
|
+
export declare function guardarEntornoDeProyecto(raiz: string, entorno: string | undefined): {
|
|
163
|
+
ruta: string;
|
|
164
|
+
entorno: string | undefined;
|
|
165
|
+
};
|
|
166
|
+
/** Guarda la identidad del proyecto remoto, sin mezclarla con el token OAuth. */
|
|
167
|
+
export declare function guardarProyectoCloudStudioDeProyecto(raiz: string, proyecto: {
|
|
168
|
+
id: string;
|
|
169
|
+
nombre: string;
|
|
170
|
+
}): {
|
|
171
|
+
ruta: string;
|
|
172
|
+
proyecto: {
|
|
173
|
+
id: string;
|
|
174
|
+
nombre: string;
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* El bloque `cloudstudio` del proyecto que hay AHORA en disco, leído por su raíz.
|
|
179
|
+
*
|
|
180
|
+
* Existe porque quien decide si las escrituras se auto-aprueban no puede mirar
|
|
181
|
+
* `FuentesDeEleccion.proyecto`: en la consola WEB ese campo no se rellena nunca —el
|
|
182
|
+
* vestíbulo sirve muchos proyectos y las fuentes se construyen una vez al arrancar
|
|
183
|
+
* (`web/servidor/arranque.ts`)—, así que la guarda de «esto sube a CloudStudio» habría
|
|
184
|
+
* dado `undefined` para todos los proyectos, incluidos los conectados. Un fallo abierto y
|
|
185
|
+
* mudo, que es el peor sitio donde tenerlo.
|
|
186
|
+
*
|
|
187
|
+
* Se relee en cada consulta a propósito: es un fichero que el propio alta escribe a mitad
|
|
188
|
+
* de sesión, y una copia en memoria diría «offline» de un proyecto que acaba de conectarse.
|
|
189
|
+
*/
|
|
190
|
+
export declare function cloudstudioDelProyecto(raiz: string): ConfigDeFichero["cloudstudio"];
|
|
191
|
+
/**
|
|
192
|
+
* El modo con que nacen las sesiones nuevas de ESTE proyecto (IXCODE-31), leído por la RAÍZ: en
|
|
193
|
+
* la consola web `FuentesDeEleccion.proyecto` no se rellena nunca (la trampa que ya resolvió
|
|
194
|
+
* `cloudstudioDelProyecto`). Sin poder leerlo, `undefined`: manda el global, que es lo que
|
|
195
|
+
* pasaría sin la clave.
|
|
196
|
+
*/
|
|
197
|
+
export declare function modoDeEscrituraDelProyecto(raiz: string): ModoDeEscritura | undefined;
|
|
198
|
+
export declare function cargar(raiz: string): {
|
|
199
|
+
config: {
|
|
200
|
+
proyecto?: ConfigDeFichero;
|
|
201
|
+
global?: ConfigDeFichero;
|
|
202
|
+
};
|
|
203
|
+
auth: Auth;
|
|
204
|
+
rutas: Array<{
|
|
205
|
+
ruta: string;
|
|
206
|
+
existe: boolean;
|
|
207
|
+
procedencia: Procedencia | "auth";
|
|
208
|
+
}>;
|
|
209
|
+
avisos: Aviso[];
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* Las claves ya presentes en el entorno MANDAN: `auth.json` no las machaca.
|
|
213
|
+
*
|
|
214
|
+
* La tabla vive en `core/modelos.ts` y aquí solo se reexporta, para no romper a quien la
|
|
215
|
+
* importa de este módulo (`agent/config/authEnDisco.ts`). Hubo cuatro copias —dos de ellas en
|
|
216
|
+
* `cli/`, para que `cli/` no tirase de `agent/` por un mapa de cuatro líneas— y habían
|
|
217
|
+
* divergido; en `core/`, que es datos puros, los dos lados pueden tirar del mismo sitio.
|
|
218
|
+
*/
|
|
219
|
+
export { VARIABLES_POR_PROVEEDOR } from "../../core/modelos.js";
|
|
220
|
+
/**
|
|
221
|
+
* Pone la credencial en el entorno del proceso, y NADA más: sin tocar disco.
|
|
222
|
+
*
|
|
223
|
+
* Existe para poder PROBAR una clave antes de escribirla —`CatalogoModelos` la lee de
|
|
224
|
+
* `process.env`, así que sin esto no hay forma de preguntarle al proveedor si sirve— y es
|
|
225
|
+
* la misma operación que `guardarCredencial` (`agent/config/authEnDisco.ts`) hace al final de su
|
|
226
|
+
* escritura. Devuelve `false` para un proveedor sin variable (Ollama local): ahí no hay
|
|
227
|
+
* nada que aplicar y decir que sí sería mentir.
|
|
228
|
+
*/
|
|
229
|
+
export declare function aplicarCredencialAlProceso(proveedor: Proveedor, clave: string): boolean;
|
|
230
|
+
/**
|
|
231
|
+
* Vuelca las credenciales en `process.env` y devuelve los proveedores que SÍ se
|
|
232
|
+
* aplicaron. Las que ya estaban en el entorno se dejan intactas y no se cuentan.
|
|
233
|
+
* `ollama` no tiene variable: no aparece en el mapa y se ignora.
|
|
234
|
+
*/
|
|
235
|
+
export declare function aplicarAuth(auth: Auth): string[];
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* La escritura del esqueleto en el disco del usuario.
|
|
3
|
+
*
|
|
4
|
+
* QUÉ se escribe lo decide `core/esqueleto.ts` (puro, probado sin disco); AQUÍ
|
|
5
|
+
* solo se ejecuta, al estilo de `agent/config/configEnDisco.ts`. La regla dura es la
|
|
6
|
+
* misma que en todo xonecode: **el disco es del usuario**, así que un fichero
|
|
7
|
+
* que ya exista no se pisa — se salta y se declara en el informe. Un proyecto
|
|
8
|
+
* a medias se completa en la siguiente corrida; un fichero del usuario
|
|
9
|
+
* destruido no se recupera.
|
|
10
|
+
*/
|
|
11
|
+
import { type DatosDelProyecto } from "../../core/esqueleto.js";
|
|
12
|
+
export interface InformeDeCreacion {
|
|
13
|
+
/** Ficheros escritos, como rutas relativas a la raíz. */
|
|
14
|
+
creados: string[];
|
|
15
|
+
/** Ficheros que ya existían y NO se han tocado. */
|
|
16
|
+
saltados: string[];
|
|
17
|
+
/** Carpetas del runtime (creadas ahora o ya existentes). */
|
|
18
|
+
carpetas: string[];
|
|
19
|
+
}
|
|
20
|
+
export declare function crearProyecto(raiz: string, datos: DatosDelProyecto): InformeDeCreacion;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type DiagnosticoDeNode } from "../../core/diagnosticoDeNode.js";
|
|
2
|
+
/**
|
|
3
|
+
* Las medidas de `core/diagnosticoDeNode.ts` en la máquina de verdad. Cada una con su tope, y ninguna devuelve una ruta:
|
|
4
|
+
* los motivos salen de `motivoDeFallo` (el `code`, nunca el mensaje de Node). Las dependencias se inyectan para que el
|
|
5
|
+
* test componga el diagnóstico sin lanzar nada.
|
|
6
|
+
*/
|
|
7
|
+
/** Más que esto es «no contesta»: son `--version`, `--help` y una validación de una carpeta vacía. */
|
|
8
|
+
export declare const TOPE_DEL_DIAGNOSTICO_MS = 20000;
|
|
9
|
+
export interface DependenciasDelDiagnostico {
|
|
10
|
+
plataforma?: NodeJS.Platform;
|
|
11
|
+
arquitectura?: string;
|
|
12
|
+
versionDeNode?: string;
|
|
13
|
+
ahora?: () => Date;
|
|
14
|
+
/** Un proceso corto: resuelve con su salida, RECHAZA con un código distinto de 0 (como `execFile`). */
|
|
15
|
+
ejecutar?: (programa: string, args: readonly string[], opciones: {
|
|
16
|
+
shell: boolean;
|
|
17
|
+
entorno?: Record<string, string>;
|
|
18
|
+
}) => Promise<{
|
|
19
|
+
stdout: string;
|
|
20
|
+
}>;
|
|
21
|
+
/**
|
|
22
|
+
* El entorno de la shell de los AGENTES (`entornoDeShell`, con los scripts de las skills en el PATH): se mide con ÉL y no
|
|
23
|
+
* con el del servidor. Medido en Windows: el diagnóstico daba «node» en verde con el PATH del servidor mientras el de los
|
|
24
|
+
* agentes estaba roto («node: command not found»).
|
|
25
|
+
*/
|
|
26
|
+
entornoDeAgente?: () => Record<string, string>;
|
|
27
|
+
scripts?: () => {
|
|
28
|
+
nombre: string;
|
|
29
|
+
ruta: string;
|
|
30
|
+
}[];
|
|
31
|
+
simulador?: () => {
|
|
32
|
+
programa: string;
|
|
33
|
+
previos: string[];
|
|
34
|
+
};
|
|
35
|
+
versionDeXoneLinter?: () => string | undefined;
|
|
36
|
+
claude?: () => string | undefined;
|
|
37
|
+
versionDelSdk?: () => string | undefined;
|
|
38
|
+
/** El Node con que se lanzan los scripts en Windows (por omisión, el del servidor). */
|
|
39
|
+
nodeDelServidor?: string;
|
|
40
|
+
/** El navegador para medir la maqueta (`exportarPdf.ts#navegadorParaImprimir`). */
|
|
41
|
+
navegador?: () => string | undefined;
|
|
42
|
+
}
|
|
43
|
+
/** Mide todo y compone la foto. Nunca lanza: lo que falla es una línea en rojo con su motivo. */
|
|
44
|
+
export declare function medirDiagnosticoDeNode(deps?: DependenciasDelDiagnostico): Promise<DiagnosticoDeNode>;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Devolverle a DeepSeek el `reasoning_content` que su API exige y el cliente tira.
|
|
3
|
+
*
|
|
4
|
+
* ## El problema, con las dos citas
|
|
5
|
+
*
|
|
6
|
+
* DeepSeek: «for requests carrying the `tools` parameter, the `reasoning_content` must be
|
|
7
|
+
* fully passed back to the API in all subsequent requests — even for turns where the model
|
|
8
|
+
* did not perform a tool call. If your code does not correctly pass back
|
|
9
|
+
* `reasoning_content`, the API will return a 400 error».
|
|
10
|
+
*
|
|
11
|
+
* Y `@langchain/openai` 1.5.5 no lo devuelve NUNCA: lo captura al entrar
|
|
12
|
+
* (`additional_kwargs.reasoning_content`) y lo tira al salir, por los dos conversores.
|
|
13
|
+
* Un agente manda siempre `tools`, así que pensar + agente = 400 en cuanto la conversación
|
|
14
|
+
* avanza. Visto en un turno real reventando dentro de un subagente.
|
|
15
|
+
*
|
|
16
|
+
* ## Por qué a nivel HTTP y no envolviendo el cliente
|
|
17
|
+
*
|
|
18
|
+
* Porque la conversión de mensajes es INTERNA a `ChatOpenAI`: no hay método que
|
|
19
|
+
* sobrescribir ni middleware que la alcance —un middleware ve los mensajes de LangChain,
|
|
20
|
+
* no el cuerpo que sale—. Lo que sí es una costura declarada es `configuration.fetch`, que
|
|
21
|
+
* el SDK de OpenAI acepta y documenta.
|
|
22
|
+
*
|
|
23
|
+
* Y tiene una ventaja sobre parchear la dependencia: **el contrato HTTP es lo más estable
|
|
24
|
+
* que hay**. Este repo ya ha visto a langchain mover un gancho (`beforeAgent` →
|
|
25
|
+
* `beforeModel`) y a deepagents cambiar una lista de claves en el mismo día; el cuerpo de
|
|
26
|
+
* `/chat/completions` no se mueve.
|
|
27
|
+
*
|
|
28
|
+
* ## Cómo se empareja
|
|
29
|
+
*
|
|
30
|
+
* Por el **id de la tool call**, que es único y lo genera el servidor. Cuando una respuesta
|
|
31
|
+
* trae razonamiento y tool calls, se guarda `id → reasoning_content`; cuando una petición
|
|
32
|
+
* posterior reenvía ese mismo mensaje de asistente, se le vuelve a pegar. No hace falta
|
|
33
|
+
* entender la conversación: el id es la identidad.
|
|
34
|
+
*
|
|
35
|
+
* **Límite declarado**: un mensaje de asistente SIN tool calls no tiene con qué
|
|
36
|
+
* emparejarse y no se le devuelve el eco. En un bucle de agente ése es el mensaje FINAL
|
|
37
|
+
* —después no hay más peticiones de ese hilo—, así que en la práctica no se reenvía. Si
|
|
38
|
+
* algún día se reenviara, el síntoma sería el mismo 400 de antes y no algo peor.
|
|
39
|
+
*/
|
|
40
|
+
/** Cuántos razonamientos se recuerdan. Una sesión larga no puede crecer sin tope. */
|
|
41
|
+
export declare const TOPE_DE_ECOS = 400;
|
|
42
|
+
export interface MemoriaDeEco {
|
|
43
|
+
/** Apunta lo que trajo una respuesta. */
|
|
44
|
+
recordar(id: string, razonamiento: string): void;
|
|
45
|
+
/** Lo que se guardó para ese id, si consta. */
|
|
46
|
+
buscar(id: string): string | undefined;
|
|
47
|
+
readonly tamaño: number;
|
|
48
|
+
}
|
|
49
|
+
/** Un mapa con tope, que descarta lo más viejo. Un `Map` de JS conserva el orden de alta. */
|
|
50
|
+
export declare function crearMemoriaDeEco(tope?: number): MemoriaDeEco;
|
|
51
|
+
interface MensajeDeSalida {
|
|
52
|
+
role?: string;
|
|
53
|
+
reasoning_content?: string;
|
|
54
|
+
tool_calls?: Array<{
|
|
55
|
+
id?: string;
|
|
56
|
+
}>;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Le vuelve a pegar el razonamiento a los mensajes de asistente de una petición.
|
|
60
|
+
*
|
|
61
|
+
* Puro y sobre el objeto ya parseado: así se prueba sin red y sin SDK. No toca nada que no
|
|
62
|
+
* sea un asistente con tool calls, y **no pisa un `reasoning_content` que ya venga** — si
|
|
63
|
+
* algún día el cliente empieza a mandarlo, esto deja de hacer falta solo.
|
|
64
|
+
*/
|
|
65
|
+
export declare function conEcoDeRazonamiento(cuerpo: {
|
|
66
|
+
messages?: MensajeDeSalida[];
|
|
67
|
+
}, memoria: MemoriaDeEco): {
|
|
68
|
+
messages?: MensajeDeSalida[];
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Saca de una respuesta NO streameada lo que haya que recordar.
|
|
72
|
+
*
|
|
73
|
+
* Devuelve los pares en vez de escribirlos: así la función es pura y el test no necesita
|
|
74
|
+
* una memoria de pega para comprobar qué se extrajo.
|
|
75
|
+
*/
|
|
76
|
+
export declare function ecosDeRespuesta(cuerpo: unknown): Array<[string, string]>;
|
|
77
|
+
/**
|
|
78
|
+
* Lo mismo para un flujo SSE, que es el caso REAL: el turno streamea siempre —el
|
|
79
|
+
* `_streamResponseChunks` de la dependencia mete `stream: true` en el payload sea cual sea
|
|
80
|
+
* la bandera del constructor, y eso ya está medido en este repo—.
|
|
81
|
+
*
|
|
82
|
+
* Se va acumulando el `delta.reasoning_content` y el primer `tool_call.id` que aparezca;
|
|
83
|
+
* al cerrar el flujo se tiene el par. **Los ids llegan en trozos**: en SSE un `tool_call`
|
|
84
|
+
* se parte en varios deltas y solo el primero trae el `id`, así que se guarda el primero
|
|
85
|
+
* que no venga vacío y no se sobrescribe.
|
|
86
|
+
*/
|
|
87
|
+
export declare function acumuladorDeEcoSse(): {
|
|
88
|
+
linea(linea: string): void;
|
|
89
|
+
ecos(): Array<[string, string]>;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* El `fetch` que restaura el eco, para `configuration.fetch` del cliente de OpenAI.
|
|
93
|
+
*
|
|
94
|
+
* **No bloquea ni bufferiza el flujo.** La respuesta se parte en dos con `tee()`: una
|
|
95
|
+
* copia sale intacta hacia el SDK y la otra se lee en segundo plano solo para apuntar el
|
|
96
|
+
* razonamiento. Bufferizar aquí convertiría el streaming en no-streaming y se notaría en
|
|
97
|
+
* pantalla; leer la misma copia dos veces no se puede.
|
|
98
|
+
*
|
|
99
|
+
* **Y nada de esto puede tumbar una petición**: cada parte va en su `try`. Si el cuerpo no
|
|
100
|
+
* se deja parsear, se manda tal cual y el peor caso es el 400 que ya había — nunca uno
|
|
101
|
+
* nuevo causado por esto.
|
|
102
|
+
*/
|
|
103
|
+
export declare function fetchConEcoDeRazonamiento(memoria: MemoriaDeEco, fetchBase?: typeof fetch): typeof fetch;
|
|
104
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export interface Entorno {
|
|
2
|
+
raiz: string;
|
|
3
|
+
/** `app.xml` es la fuente y no un artefacto: es lo que distingue un proyecto XOne. */
|
|
4
|
+
esProyectoXone: boolean;
|
|
5
|
+
colecciones: number;
|
|
6
|
+
/** `X.xml` con un `X.xne` al lado: vistas aplanadas que Studio genera. */
|
|
7
|
+
vistasAplanadas: string[];
|
|
8
|
+
/**
|
|
9
|
+
* Un repo git da el diff y el deshacer gratis; si no, hay que copiar la raíz antes de
|
|
10
|
+
* tocar nada.
|
|
11
|
+
*
|
|
12
|
+
* **No basta con mirar si hay un `.git` al lado.** Medido: `lab/` no tiene `.git` propio
|
|
13
|
+
* y sin embargo está dentro de un work tree cuya raíz está VARIOS niveles por encima —
|
|
14
|
+
* el proyecto de un usuario metido en un monorepo se declararía «sin git» y se copiaría
|
|
15
|
+
* sin necesidad. Se le pregunta a git, que es quien lo sabe.
|
|
16
|
+
*
|
|
17
|
+
* `raizRepo` se conserva porque cuando NO coincide con `raiz` el diff abarca más que el
|
|
18
|
+
* proyecto, y eso hay que decirlo antes de prometer un deshacer.
|
|
19
|
+
*/
|
|
20
|
+
git: EstadoGit;
|
|
21
|
+
simulador: {
|
|
22
|
+
ruta: string;
|
|
23
|
+
responde: boolean;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Las vistas aplanadas: todo `X.xml` que tenga un `X.xne` al lado.
|
|
28
|
+
*
|
|
29
|
+
* En XOne cada colección existe en dos formas, y **la que se edita es el `.xne`**. La regla
|
|
30
|
+
* no puede vivir solo en el prompt del ejecutor —un permiso solo protege a quien lo
|
|
31
|
+
* choca—, así que estos ficheros se le OCULTAN al agente. Ocultarlos y no borrarlos: el
|
|
32
|
+
* disco es del usuario.
|
|
33
|
+
*
|
|
34
|
+
* `app.xml` no tiene hermano `.xne`, así que el propio predicado lo conserva.
|
|
35
|
+
*/
|
|
36
|
+
export declare function vistasAplanadas(rutas: string[]): string[];
|
|
37
|
+
/**
|
|
38
|
+
* El estado de git respecto al proyecto.
|
|
39
|
+
*
|
|
40
|
+
* **`usable` solo exige que HAYA un repo**, y esto es una corrección: antes exigía además
|
|
41
|
+
* ser la raíz y tener commits. Sobraban las dos, y se descubrió mirando cómo lo hace
|
|
42
|
+
* opencode y midiéndolo después contra el disco real (ver `DISENO.md` §15):
|
|
43
|
+
*
|
|
44
|
+
* - La foto del ANTES se toma con un **índice de git privado** (`GIT_INDEX_FILE`), y
|
|
45
|
+
* `write-tree` **no necesita HEAD**: medido sobre un repo con CERO commits, funciona.
|
|
46
|
+
* - Y funciona desde un **subdirectorio**: se acota con `git add -- .` y las rutas del
|
|
47
|
+
* diff se recortan con `prefijo`.
|
|
48
|
+
*
|
|
49
|
+
* `esRaiz` y `tieneCommits` se conservan porque `doctor` los cuenta —saber que el repo
|
|
50
|
+
* abarca más que el proyecto sigue importando para prometer un deshacer— pero ya no
|
|
51
|
+
* bloquean nada.
|
|
52
|
+
*/
|
|
53
|
+
export interface EstadoGit {
|
|
54
|
+
dentro: boolean;
|
|
55
|
+
raizRepo?: string;
|
|
56
|
+
/** El proyecto ES la raíz del repo (no un subdirectorio de uno más grande). */
|
|
57
|
+
esRaiz: boolean;
|
|
58
|
+
/** Hay al menos un commit. NO hace falta para la foto; sí para ramas y worktrees. */
|
|
59
|
+
tieneCommits: boolean;
|
|
60
|
+
/** Ruta del proyecto relativa a la raíz del repo (`""` si es la raíz). */
|
|
61
|
+
prefijo: string;
|
|
62
|
+
/** ¿Se puede usar git para la foto del ANTES? Basta con que haya repo. */
|
|
63
|
+
usable: boolean;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* ¿Sirve git para dar el diff y el deshacer de ESTE proyecto?
|
|
67
|
+
*
|
|
68
|
+
* Las tres condiciones salen de medir, no de suponer, contra el disco real del usuario:
|
|
69
|
+
*
|
|
70
|
+
* 1. **El repo tiene que ser el del PROYECTO.** Medido: los proyectos viven dentro de un
|
|
71
|
+
* repo cuya raíz está por encima, con cientos de entradas sin trackear que no tienen nada
|
|
72
|
+
* que ver. Un diff de ese repo no habla del proyecto.
|
|
73
|
+
* 2. **Tiene que haber al menos un commit.** Ese repo está en `main` con CERO commits:
|
|
74
|
+
* `git rev-parse HEAD` falla, y sin commit no hay rama de la que partir, ni worktree
|
|
75
|
+
* que añadir, ni nada contra lo que diffear.
|
|
76
|
+
* 3. **Y aunque acotes al subdirectorio, no vale.** Medido: `git status --porcelain -- .`
|
|
77
|
+
* desde dentro del proyecto devuelve UNA línea —`?? proyecto_example/`— porque git no
|
|
78
|
+
* desciende en directorios sin trackear. O sea que el diff habría dicho «1 fichero
|
|
79
|
+
* nuevo» tocara el agente lo que tocara: un fallo MUDO que reporta algo plausible.
|
|
80
|
+
* (`--untracked-files=all` lo expande, pero eso no arregla 1 ni 2.)
|
|
81
|
+
*/
|
|
82
|
+
export declare function inspeccionarGit(raiz: string): Promise<EstadoGit>;
|
|
83
|
+
export declare function inspeccionar(raiz?: string): Promise<Entorno>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { FuentesPort } from "../../core/ports.js";
|
|
2
|
+
/**
|
|
3
|
+
* Google Fonts, de verdad, sin clave (lo medido está en `core/fuentes.ts`).
|
|
4
|
+
*
|
|
5
|
+
* **El catálogo se pide UNA vez por puerto** y se guarda: son 2,7 MB de un catálogo AJENO que no
|
|
6
|
+
* cambia en una sesión. No choca con «no cachear» de `xone_navegacion`, que habla del modelo del
|
|
7
|
+
* PROYECTO. Un fallo no se guarda: la siguiente llamada lo vuelve a intentar.
|
|
8
|
+
*
|
|
9
|
+
* Un fallo lleva el CÓDIGO HTTP o la palabra «red», nunca la URL ni el cuerpo remoto (mismo trato
|
|
10
|
+
* que `iconosEnRed`). `fetch` entra por parámetro para probarlo sin conexión.
|
|
11
|
+
*/
|
|
12
|
+
export declare function fuentesEnRed(llamar?: typeof fetch, topeMs?: number): FuentesPort;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ChatGoogleGenerativeAI } from "@langchain/google-genai";
|
|
2
|
+
/** Cliente de Gemini que adapta los esquemas de tools al formato de su API. */
|
|
3
|
+
export declare class ChatGoogleGenerativeAICompatible extends ChatGoogleGenerativeAI {
|
|
4
|
+
bindTools(...args: Parameters<ChatGoogleGenerativeAI["bindTools"]>): import("@langchain/core/runnables").Runnable<import("@langchain/core/language_models/base").BaseLanguageModelInput, import("langchain").AIMessageChunk<import("@langchain/core/messages").MessageStructure<import("@langchain/core/messages").MessageToolSet>>, import("@langchain/google-genai").GoogleGenerativeAIChatCallOptions>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IconosPort } from "../../core/ports.js";
|
|
2
|
+
/**
|
|
3
|
+
* Iconify, de verdad (IXCODE-18). Los mismos datos que usa `better-icons`, pero llamando a la API
|
|
4
|
+
* directamente: el binario no lo puede ejecutar ningún especialista, y una dependencia global
|
|
5
|
+
* que instalar es un fallo del entorno que no merece la pena.
|
|
6
|
+
*
|
|
7
|
+
* Un fallo lleva el CÓDIGO HTTP o la palabra «red», nunca la URL ni el cuerpo remoto (mismo trato
|
|
8
|
+
* que `ErrorCatalogoModelos`). `fetch` entra por parámetro para probarlo sin conexión.
|
|
9
|
+
*/
|
|
10
|
+
export declare function iconosEnRed(llamar?: typeof fetch, topeMs?: number): IconosPort;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El `user_id` de DeepSeek leído del login de CloudStudio que hay en ESTA máquina.
|
|
3
|
+
*
|
|
4
|
+
* La regla (qué token, cómo se normaliza) es pura y vive en `core/identidadDeProveedor.ts`;
|
|
5
|
+
* aquí solo se decide DE QUÉ ENTORNO se lee y se toca el disco.
|
|
6
|
+
*
|
|
7
|
+
* **Qué entorno**, en este orden:
|
|
8
|
+
* 1. El del proyecto, resuelto EXACTAMENTE como lo resuelve la sincronización
|
|
9
|
+
* (`entorno` del `config.json`, y si falta, `entornoDeUrl` sobre su `cloudstudio.url`,
|
|
10
|
+
* y si tampoco, `legado`): la persona que baja y sube ese proyecto es la que está
|
|
11
|
+
* delante, y una segunda regla para lo mismo acabaría eligiendo otro juego de tokens.
|
|
12
|
+
* 2. Sin CloudStudio en el proyecto, el PRIMER entorno registrado en `settings.json` con
|
|
13
|
+
* una identidad legible, y luego `legado`. Es determinista y está declarado: quien tiene
|
|
14
|
+
* sesión en dos servidores sale con el id del primero.
|
|
15
|
+
*
|
|
16
|
+
* **Se lee en cada construcción de un modelo, no se captura**: el login puede hacerse con
|
|
17
|
+
* la consola abierta, y un valor capturado al arrancar dejaría esa sesión sin id para
|
|
18
|
+
* siempre. Es un `readFileSync` de un JSON pequeño contra una petición de segundos.
|
|
19
|
+
*
|
|
20
|
+
* **Nunca lanza.** Un fichero roto o ausente es «no consta», y entonces el campo no viaja:
|
|
21
|
+
* DeepSeek funciona igual sin él, y un turno caído por no poder ponerle nombre sería
|
|
22
|
+
* cambiar una ventaja por una avería.
|
|
23
|
+
*
|
|
24
|
+
* El hash no va a ningún evento, traza ni `.jsonl`: es un dato de la PETICIÓN, no del turno.
|
|
25
|
+
*/
|
|
26
|
+
import type { FuentesDeEleccion } from "../../core/modelos.js";
|
|
27
|
+
export declare function userIdDeDeepSeekEnDisco(fuentes: FuentesDeEleccion): string | undefined;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { ModelosPort, Papel } from "../../core/ports.js";
|
|
2
|
+
import { type FuentesDeEleccion, type Proveedor, type ProveedorDeclarado } from "../../core/modelos.js";
|
|
3
|
+
import { type CapacidadesVivas, type ClaseDeTrabajo, type Esfuerzo, type Pensamiento } from "../../core/esfuerzo.js";
|
|
4
|
+
/**
|
|
5
|
+
* Construye el modelo de cada papel. NO lleva la marca de doble: es real.
|
|
6
|
+
*
|
|
7
|
+
* Los clientes se construyen PEREZOSAMENTE, al pedir el papel: `describe` solo llama a
|
|
8
|
+
* `descripcion()`, y construir cuatro clientes para imprimir un texto obligaría a tener
|
|
9
|
+
* las claves puestas para poder mirar la configuración — justo lo que este comando evita.
|
|
10
|
+
*/
|
|
11
|
+
export declare class Modelos implements ModelosPort {
|
|
12
|
+
private readonly eleccion;
|
|
13
|
+
/**
|
|
14
|
+
* Los proveedores personalizados, y es una FUNCIÓN y no una lista a propósito.
|
|
15
|
+
*
|
|
16
|
+
* `fuentes` se lee UNA vez, al arrancar el proceso, así que una lista capturada aquí
|
|
17
|
+
* dejaba muerto el flujo que el usuario hace primero: dar de alta un proveedor en
|
|
18
|
+
* Ajustes, ponerle la clave, elegir su modelo y hablar — y el turno reventaba con «no
|
|
19
|
+
* está dado de alta; añádelo en Ajustes», que es justo lo que acababa de hacer. Quien
|
|
20
|
+
* construye pasa `proveedoresPersonalizados` (`agent/config/configEnDisco.ts`), que relee el
|
|
21
|
+
* config global; sin nada, se cae a lo que trajera `fuentes`, que es lo que había.
|
|
22
|
+
*
|
|
23
|
+
* Del `config.json` GLOBAL y de ningún otro: la regla la impone `core/config.ts` al
|
|
24
|
+
* validar, y aquí no se vuelve a mirar el del proyecto ni por descuido.
|
|
25
|
+
*/
|
|
26
|
+
private readonly personalizados;
|
|
27
|
+
/**
|
|
28
|
+
* Lo que el servidor ya sabe de un modelo porque se lo PREGUNTÓ, y entra por aquí en vez
|
|
29
|
+
* de consultarse dentro.
|
|
30
|
+
*
|
|
31
|
+
* Hoy solo Ollama: sus capacidades se piden con `POST /api/show`, que es asíncrono y toca
|
|
32
|
+
* la red, mientras que construir un modelo es síncrono —`paraPapel` devuelve el cliente,
|
|
33
|
+
* no una promesa— y lo llama el grafo en mitad de un turno. Son las dos cadencias que ya
|
|
34
|
+
* declara `contextos.ts` sobre el `max_input_tokens` del catálogo vivo, y la salida es la
|
|
35
|
+
* misma que con los proveedores personalizados: una FUNCIÓN que quien construye rellena
|
|
36
|
+
* con lo que ya midió, en vez de una consulta escondida aquí dentro.
|
|
37
|
+
*
|
|
38
|
+
* **Ausente es la dirección segura**: sin capacidades, `nivelesDeEsfuerzo` no afirma nada
|
|
39
|
+
* de un modelo de Ollama y el parámetro no se manda. Eso importa porque pedirle pensar a
|
|
40
|
+
* un modelo que no piensa NO es una respuesta peor — medido, `ministral-3:3b` contesta
|
|
41
|
+
* `"ministral-3:3b" does not support thinking` y el turno se cae.
|
|
42
|
+
*/
|
|
43
|
+
private readonly capacidades;
|
|
44
|
+
/**
|
|
45
|
+
* El esfuerzo de la SESIÓN, que es el que vale cuando quien pide un modelo no dice otro.
|
|
46
|
+
*
|
|
47
|
+
* Va en el constructor y no en cada llamada porque así los diez llamadores de
|
|
48
|
+
* `paraPapel` —el turno, el juez, el aumentador, el juez visual— no cambian ni una línea:
|
|
49
|
+
* la sesión ya reconstruye `Modelos` cuando el usuario toca algo (es como funciona
|
|
50
|
+
* `/modelo`), así que el sitio donde esto entra ya existe.
|
|
51
|
+
*
|
|
52
|
+
* Un subagente que fije el SUYO gana, porque `paraModelo` recibe el nivel explícito.
|
|
53
|
+
*/
|
|
54
|
+
private readonly esfuerzoDeLaSesion;
|
|
55
|
+
/**
|
|
56
|
+
* El `user_id` que DeepSeek usa para separar a las personas de una misma cuenta
|
|
57
|
+
* (`core/identidadDeProveedor.ts` explica por qué hace falta con claves distintas).
|
|
58
|
+
*
|
|
59
|
+
* **Por omisión es el lector REAL** (`userIdDeDeepSeekEnDisco`), y no `undefined`: un
|
|
60
|
+
* parámetro opcional que nadie pasa es el patrón de fallo de este repo en su forma más
|
|
61
|
+
* limpia —el `Calificador`—, y aquí hay diez `new Modelos(` en producción. Así los diez
|
|
62
|
+
* quedan cableados sin tocar ninguno, y lo que se pasa a mano es la EXCEPCIÓN (un test).
|
|
63
|
+
* Es una función y se llama en cada construcción: el login puede llegar con la consola
|
|
64
|
+
* abierta.
|
|
65
|
+
*/
|
|
66
|
+
private readonly identidad;
|
|
67
|
+
constructor(fuentes?: FuentesDeEleccion, personalizados?: () => readonly ProveedorDeclarado[], capacidades?: (proveedor: Proveedor, modelo: string) => CapacidadesVivas | undefined, esfuerzo?: Esfuerzo, identidad?: () => string | undefined);
|
|
68
|
+
paraPapel(papel: Papel, esfuerzo?: Esfuerzo, clase?: ClaseDeTrabajo, pensamiento?: Pensamiento): unknown;
|
|
69
|
+
/**
|
|
70
|
+
* Un modelo concreto por su «proveedor/modelo». `parsear` es la MISMA función que valida
|
|
71
|
+
* `--modelo` y `/modelo`, no una copia: un id mal escrito en el `.md` de un agente tiene
|
|
72
|
+
* que fallar igual y con el mismo mensaje que uno mal escrito en la línea de comandos.
|
|
73
|
+
*/
|
|
74
|
+
paraModelo(id: string, esfuerzo?: Esfuerzo, clase?: ClaseDeTrabajo, pensamiento?: Pensamiento): unknown;
|
|
75
|
+
idDePapel(papel: Papel): string;
|
|
76
|
+
descripcion(): Record<Papel, string>;
|
|
77
|
+
}
|