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,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El inventario del proyecto remoto.
|
|
3
|
+
*
|
|
4
|
+
* `get_project_structure` se trunca (medido: con `maxFiles:60` ya devolvía
|
|
5
|
+
* `truncated:true`, y el tope duro es 2000). Como el manifiesto es lo que impide borrar
|
|
6
|
+
* en Studio lo que no pudimos bajar, una enumeración incompleta no es un detalle
|
|
7
|
+
* cosmético: es el candado con una pata menos.
|
|
8
|
+
*/
|
|
9
|
+
import type { CloudStudioPort } from "../../core/ports.js";
|
|
10
|
+
import type { ManifiestoRemoto } from "../../core/cloudstudio.js";
|
|
11
|
+
export interface ResultadoDeEnumeracion {
|
|
12
|
+
manifiesto: ManifiestoRemoto;
|
|
13
|
+
/** Directorios que no se pudieron listar. Salen en el informe: callarlos es peor. */
|
|
14
|
+
noEnumerados: string[];
|
|
15
|
+
/**
|
|
16
|
+
* El listado de la RAÍZ llegó truncado. A diferencia de un directorio truncado
|
|
17
|
+
* cualquiera (que este recorrido sortea pidiendo sus ancestros), un directorio de
|
|
18
|
+
* primer nivel que el corte deja fuera de la respuesta de la raíz Y que ningún otro
|
|
19
|
+
* fichero visto menciona como ancestro es INVISIBLE: no hay ninguna llamada que lo
|
|
20
|
+
* pida. No se puede demostrar que no existan; por eso se declara siempre que la raíz
|
|
21
|
+
* viene truncada, en vez de fingir que el recorrido por ancestros lo cubre todo.
|
|
22
|
+
*/
|
|
23
|
+
raizTruncada: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare function enumerarRemoto(puerto: CloudStudioPort): Promise<ResultadoDeEnumeracion>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cuál es la rama que Studio tiene ACTIVA — o que no se pudo saber.
|
|
3
|
+
*
|
|
4
|
+
* La rama activa solo se sabe por `studio_get_context`: `studio_manage_branches` enumera
|
|
5
|
+
* las ramas y no dice cuál está puesta (medido: no tiene `operation: "current"`). Y esa
|
|
6
|
+
* tool FALLA en el servidor para algunos proyectos —medido contra CloudStudio, con el
|
|
7
|
+
* proyecto ABIERTO: devuelve «An error occurred invoking 'studio_get_context'» mientras
|
|
8
|
+
* `studio_get_file`, `studio_get_project_structure` y `studio_manage_branches` contestan
|
|
9
|
+
* bien sobre ESE MISMO proyecto—, así que no es señal de sesión caída ni de red.
|
|
10
|
+
*
|
|
11
|
+
* Leerla sirve para UNA cosa: devolverle el suelo a quien tenga Studio abierto en el
|
|
12
|
+
* navegador. Eso es una cortesía, no una condición de corrección — lo que garantiza que
|
|
13
|
+
* se baja (y se sube) de la rama que toca es el `cambiarRama(ramaOrigen)` explícito, que
|
|
14
|
+
* no depende de esta lectura. Por eso un fallo aquí NO tumba la operación: devuelve
|
|
15
|
+
* `undefined` y lo DICE, que es la única parte que no puede quedarse muda, porque la
|
|
16
|
+
* consecuencia es visible (Studio se queda en la rama del proyecto).
|
|
17
|
+
*
|
|
18
|
+
* `CloudStudioPort.contexto()` sigue LANZANDO, a propósito: tolerar es decisión de quien
|
|
19
|
+
* llama, no del puerto. Y la sesión perdida no se cuela por aquí como un error genérico
|
|
20
|
+
* más — `cloudstudioClient.ts#conSesion` reabre y reintenta, y si sigue perdida relanza
|
|
21
|
+
* al siguiente `cambiarRama`, que es donde ese caso SÍ tiene que tumbar la operación.
|
|
22
|
+
*/
|
|
23
|
+
import type { CloudStudioPort } from "../../core/ports.js";
|
|
24
|
+
export declare function ramaActiva(puerto: CloudStudioPort, ramaOrigen: string, informar: (texto: string) => void): Promise<string | undefined>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { CloudStudioPort } from "../../core/ports.js";
|
|
2
|
+
import type { OperacionOmitida, PoliticaDeAprobacion } from "../../core/cloudstudio.js";
|
|
3
|
+
import { type FicheroIlegible } from "./validarTrasDescarga.js";
|
|
4
|
+
export interface OpcionesDeSubida {
|
|
5
|
+
puerto: CloudStudioPort;
|
|
6
|
+
raiz: string;
|
|
7
|
+
/**
|
|
8
|
+
* La rama del proyecto: de la que se bajó y a la que se sube. El nombre sigue diciendo
|
|
9
|
+
* «origen» porque es el origen de la descarga, y es el término que usan `descargar` y
|
|
10
|
+
* `planDeSubida` para la misma rama — renombrarlo en un solo sitio dejaría dos nombres
|
|
11
|
+
* para una cosa.
|
|
12
|
+
*/
|
|
13
|
+
ramaOrigen: string;
|
|
14
|
+
proyecto: {
|
|
15
|
+
id: string;
|
|
16
|
+
nombre: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* El hueco de política (`core/cloudstudio.ts#PoliticaDeAprobacion`), OBLIGATORIO —
|
|
20
|
+
* fail-closed por TIPO, no por convención: no hay forma de llamar a `subir()` sin decir
|
|
21
|
+
* quién autoriza, en vez de confiar en que cada llamador se acuerde. Se invoca con el
|
|
22
|
+
* plan YA CONSTRUIDO (`planDeSubida`), ANTES de tocar el puerto: quien autorice ve
|
|
23
|
+
* exactamente lo que se va a escribir, ni más ni menos. Cualquier resultado que no sea
|
|
24
|
+
* autorización deja todo como estaba: nada se escribe, la ref no se mueve.
|
|
25
|
+
*/
|
|
26
|
+
politicaDeAprobacion: PoliticaDeAprobacion;
|
|
27
|
+
informar?: (texto: string) => void;
|
|
28
|
+
}
|
|
29
|
+
/** El aviso cuando la rama activa de Studio no se pudo leer justo antes de subir. */
|
|
30
|
+
export declare const AVISO_RAMA_SIN_CONFIRMAR = "no se pudo confirmar la rama activa de Studio antes de subir";
|
|
31
|
+
export interface FalloDeSubida {
|
|
32
|
+
ruta: string;
|
|
33
|
+
motivo: string;
|
|
34
|
+
/** Solo cuando el texto llegó DISTINTO: los dos hashes, para mirarlo después en `sync.log`. */
|
|
35
|
+
sha256Local?: string;
|
|
36
|
+
sha256Studio?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface InformeDeSubida {
|
|
39
|
+
/** Lo subido Y comprobado. */
|
|
40
|
+
ok: string[];
|
|
41
|
+
fallos: FalloDeSubida[];
|
|
42
|
+
/**
|
|
43
|
+
* Presente = la rama activa de Studio NO se pudo leer tras posicionarla (la tool se cae para
|
|
44
|
+
* algunos proyectos), y se subió igual. No es un fallo: es lo que no se pudo confirmar, y se
|
|
45
|
+
* dice para que no pase en silencio.
|
|
46
|
+
*/
|
|
47
|
+
avisoDeRama?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Lo que NO se puede sincronizar, con el porqué (`core/planDeSubida.ts`). No son
|
|
50
|
+
* fallos: no bloquean la ref. Son el camino de escape para que una operación imposible
|
|
51
|
+
* —el borrado de un binario, un fichero de más de 5 MB— no atasque la subida entera.
|
|
52
|
+
*/
|
|
53
|
+
omitidas: OperacionOmitida[];
|
|
54
|
+
/**
|
|
55
|
+
* Los ficheros que NEGARON la subida entera por no poderse leer (`validarTrasDescarga`).
|
|
56
|
+
* Presente = no se ha escrito nada en Studio ni se ha pedido autorización.
|
|
57
|
+
*/
|
|
58
|
+
ilegibles?: FicheroIlegible[];
|
|
59
|
+
}
|
|
60
|
+
export declare function rutaSyncLog(raiz: string): string;
|
|
61
|
+
export declare function subir(opciones: OpcionesDeSubida): Promise<InformeDeSubida>;
|
|
@@ -32,6 +32,7 @@ import { appendFileSync, mkdirSync, readFileSync, statSync, existsSync, readdirS
|
|
|
32
32
|
import { dirname, join } from "node:path";
|
|
33
33
|
import { planAutorizado } from "../../core/cloudstudio.js";
|
|
34
34
|
import { planDeSubida } from "../../core/planDeSubida.js";
|
|
35
|
+
import { decodificarComoTexto } from "../../core/codificacion.js";
|
|
35
36
|
import { diferenciaDeTexto, motivoSinComprobar } from "../../core/verificacionDeSubida.js";
|
|
36
37
|
import { NOMBRE_CARPETA } from "../config/configEnDisco.js";
|
|
37
38
|
import { cambiosPendientes, marcarSubido, marcarSubidoParcial } from "../sesiones/gitSync.js";
|
|
@@ -237,7 +238,12 @@ export async function subir(opciones) {
|
|
|
237
238
|
if (operacion.tipo === "borrado")
|
|
238
239
|
await puerto.borrarTexto(operacion.ruta);
|
|
239
240
|
else if (operacion.tipo === "texto") {
|
|
240
|
-
|
|
241
|
+
// Los BYTES, decodificados con la regla del proyecto (la del editor y la del agente):
|
|
242
|
+
// UTF-8 si lo son, y si no su tabla de 8 bits por el prólogo. Medido contra Studio:
|
|
243
|
+
// leído como "utf8", cada tilde de un `.xne` ISO-8859-15 viajaba como «�», Studio lo
|
|
244
|
+
// guardaba así y la relectura, igual de rota, daba la subida por buena. Studio quiere
|
|
245
|
+
// el texto DECODIFICADO y lo guarda él en la codificación que declara su prólogo.
|
|
246
|
+
const contenido = decodificarComoTexto(readFileSync(join(raiz, operacion.ruta)));
|
|
241
247
|
await puerto.escribirTexto(operacion.ruta, contenido);
|
|
242
248
|
// Releer lo escrito: es la única prueba de que llegó entero. Una relectura que
|
|
243
249
|
// falla NO es un «ok»: el fichero puede estar cortado y no lo sabríamos.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subida.js","sourceRoot":"","sources":["../../../src/agent/cloudstudio/subida.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"subida.js","sourceRoot":"","sources":["../../../src/agent/cloudstudio/subida.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Un fichero bajado que no se puede leer como lo que es, y por qué. Ruta RELATIVA al proyecto. */
|
|
2
|
+
export interface FicheroIlegible {
|
|
3
|
+
ruta: string;
|
|
4
|
+
motivo: string;
|
|
5
|
+
}
|
|
6
|
+
/** El motivo por el que `contenido` no vale, o `undefined` si vale. Exportada para el test. */
|
|
7
|
+
export declare function motivoDeFicheroIlegible(ruta: string, bytes: Buffer): string | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* Comprueba en el DISCO los ficheros que la descarga dice haber traído. Lee los BYTES, no el texto
|
|
10
|
+
* que se escribió: es lo que va a leer el aparato. Un fichero que no se puede ni abrir cuenta como
|
|
11
|
+
* ilegible con el `code` de Node (su mensaje lleva la ruta absoluta).
|
|
12
|
+
*/
|
|
13
|
+
export declare function validarTrasDescarga(raiz: string, descargados: string[]): FicheroIlegible[];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* La guarda de contención: una ruta con `../` o absoluta escribiría fuera de la raíz.
|
|
3
|
+
* Se comprueba sobre la ruta YA resuelta, porque comparar cadenas antes de resolver deja
|
|
4
|
+
* pasar `a/../../x`. Se aborta entero: un ZIP que intenta esto no es de fiar en ninguna
|
|
5
|
+
* de sus entradas.
|
|
6
|
+
*
|
|
7
|
+
* Se exporta porque la vía degradada (`agent/cloudstudio/descarga.ts`) escribe y BORRA con rutas que
|
|
8
|
+
* vienen del JSON del servidor exactamente igual de crudas: tener la guarda solo en el
|
|
9
|
+
* camino del ZIP era la asimetría, no una decisión.
|
|
10
|
+
*/
|
|
11
|
+
export declare function destinoSeguro(raiz: string, entrada: string): string;
|
|
12
|
+
/** Devuelve las rutas escritas, relativas y en POSIX (las del manifiesto y las de MCP). */
|
|
13
|
+
export declare function extraerZipBase64(base64: string, raiz: string): string[];
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { OAuthClientInformationMixed, OAuthTokens } from "@modelcontextprotocol/sdk/shared/auth.js";
|
|
2
|
+
import type { DefinicionDeConector } from "../../core/conectores.js";
|
|
3
|
+
export declare class ErrorDeFicheroDeConectores extends Error {
|
|
4
|
+
}
|
|
5
|
+
export declare function rutaDeAnadidos(casa: string): string;
|
|
6
|
+
export declare function rutaDeOAuth(casa: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Lo que se guarda de UN conector. `redirectUri` ata el cliente registrado a su puerto, y
|
|
9
|
+
* `clave` es la de un conector `api-key`: van juntas porque son la misma pregunta —«con qué se
|
|
10
|
+
* autentica este conector»— y porque el ciclo de vida es el mismo (nace al conectar, muere al
|
|
11
|
+
* desconectar y al quitar).
|
|
12
|
+
*/
|
|
13
|
+
export interface SecretosDeConector {
|
|
14
|
+
clientInformation?: OAuthClientInformationMixed;
|
|
15
|
+
redirectUri?: string;
|
|
16
|
+
tokens?: OAuthTokens;
|
|
17
|
+
codeVerifier?: string;
|
|
18
|
+
clave?: string;
|
|
19
|
+
}
|
|
20
|
+
/** Todo lo que dice `conectores.json`, de UNA lectura. */
|
|
21
|
+
export interface ConectoresEnDisco {
|
|
22
|
+
/** Los añadidos que esta consola sabe resolver: del catálogo o con definición. */
|
|
23
|
+
anadidos: string[];
|
|
24
|
+
/** Los que no: una entrada muerta, y la ventana lo dice en vez de callarla. */
|
|
25
|
+
desconocidos: string[];
|
|
26
|
+
definiciones: Record<string, DefinicionDeConector>;
|
|
27
|
+
ilegible?: true;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* El fichero entero en una lectura, y por eso es UNO y no `leerAnadidos` + `leerDefiniciones`:
|
|
31
|
+
* quien resuelve un id necesita las dos cosas a la vez, y dos lecturas del mismo fichero pueden
|
|
32
|
+
* discrepar a mitad de camino — un `anadido` que la segunda ya no sabe resolver. Con una sola,
|
|
33
|
+
* `anadidos` y `definiciones` son coherentes por construcción, que es lo que deja afirmar que
|
|
34
|
+
* todo id de `anadidos` tiene fila.
|
|
35
|
+
*
|
|
36
|
+
* **Un id está VIVO si lo conoce el catálogo o si tiene definición.** Las dos familias, una
|
|
37
|
+
* sola pregunta: de aquí para abajo nada distingue un conector de código de uno escrito a mano,
|
|
38
|
+
* que es lo que hace que un servidor propio se comporte como Jira.
|
|
39
|
+
*/
|
|
40
|
+
export declare function leerConectores(casa: string): ConectoresEnDisco;
|
|
41
|
+
export declare function anadirConector(casa: string, id: string): void;
|
|
42
|
+
export declare function quitarConector(casa: string, id: string): void;
|
|
43
|
+
export declare function guardarDefinicion(casa: string, id: string, def: DefinicionDeConector): void;
|
|
44
|
+
export declare function olvidarDefinicion(casa: string, id: string): void;
|
|
45
|
+
export declare function leerOAuth(casa: string, id: string): SecretosDeConector;
|
|
46
|
+
export declare function guardarOAuth(casa: string, id: string, datos: SecretosDeConector): void;
|
|
47
|
+
export declare function olvidarOAuth(casa: string, id: string): void;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El adaptador de Jira sobre `GestorDeTareasPort` (`core/gestorDeTareas.ts`): el ÚNICO fichero
|
|
3
|
+
* que conoce los nombres de las tools de Jira y la forma de sus respuestas — nada fuera de aquí
|
|
4
|
+
* sabe que el gestor de tareas es Jira.
|
|
5
|
+
*
|
|
6
|
+
* Llama al conector MCP por `llamar(nombre, args)` (el mismo `ServicioDeConectores.llamar`, ya
|
|
7
|
+
* atado a `"jira"` por quien construye este gestor): devuelve el TEXTO del primer bloque
|
|
8
|
+
* `type: "text"` del resultado. Este fichero solo hace `JSON.parse` de ese texto y lee sus
|
|
9
|
+
* campos a mano — nunca `@modelcontextprotocol` (`core/` no lo importa, y este fichero tampoco
|
|
10
|
+
* lo necesita).
|
|
11
|
+
*
|
|
12
|
+
* Lectura defensiva por campo, como `planesDelCable.ts` en el cliente: una respuesta que no es
|
|
13
|
+
* el JSON esperado LANZA, nunca vuelve como lista vacía (una lista vacía es un dato — «no hay
|
|
14
|
+
* pendientes» — y confundirlo con «no entendí la respuesta» esconde un fallo).
|
|
15
|
+
*
|
|
16
|
+
* Del `assignee` de Jira solo sale `displayName`: `emailAddress` y `accountId` no cruzan este
|
|
17
|
+
* adaptador (y por tanto no cruzan el cable).
|
|
18
|
+
*/
|
|
19
|
+
import { type GestorDeTareasPort } from "../../core/gestorDeTareas.js";
|
|
20
|
+
type Llamar = (nombre: string, args: Record<string, unknown>) => Promise<string>;
|
|
21
|
+
/**
|
|
22
|
+
* El tipo de incidencia con el que se CREA una tarea, elegido de lo que el proyecto declara
|
|
23
|
+
* (`getJiraProjectIssueTypesMetadata`). Medido sobre un Jira en español: `name` viene TRADUCIDO («Tarea») y
|
|
24
|
+
* `untranslatedName` es el de siempre («Task»), así que escribir «Task» a fuego no vale. Regla: un tipo de nivel 0
|
|
25
|
+
* (ni épica ni subtarea), con «Task» primero, y si no el primero de nivel 0; se devuelve su `name`, que es como el
|
|
26
|
+
* proyecto lo llama. Sin ninguno de nivel 0, `undefined` (y crear lo dice).
|
|
27
|
+
*/
|
|
28
|
+
export declare function tipoParaCrear(respuesta: unknown): string | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* La clave de la incidencia recién creada. La respuesta de `createJiraIssue` es la de la API de Jira (`{id, key,
|
|
31
|
+
* self}`) o la incidencia entera; en las dos, `key` en la raíz. Sin ella se LANZA: el ticket puede existir, pero sin
|
|
32
|
+
* clave no hay a qué ligar la tarea, y quien llama lo dice.
|
|
33
|
+
*/
|
|
34
|
+
export declare function claveCreada(respuesta: unknown): string;
|
|
35
|
+
/**
|
|
36
|
+
* `crearGestorJira`: cada instancia cachea la url pública de cada `sitio` (`cloudId`) que
|
|
37
|
+
* `sitios()` haya devuelto, para poder componer `url = <url del sitio>/browse/<clave>` sin
|
|
38
|
+
* volver a preguntar. Un sitio nunca visto por esta instancia deja `url` AUSENTE — no se
|
|
39
|
+
* inventa una URL a partir del `cloudId`.
|
|
40
|
+
*/
|
|
41
|
+
/** El máximo que admite `getVisibleJiraProjects` por llamada (medido en su esquema). */
|
|
42
|
+
export declare const PROYECTOS_POR_PAGINA = 50;
|
|
43
|
+
/**
|
|
44
|
+
* Cuántas pendientes se piden de una vez: el máximo que admite `searchJiraIssuesUsingJql`. El panel
|
|
45
|
+
* FILTRA por estado y CUENTA en el cliente sobre esta lista, así que cuanto más entera llegue,
|
|
46
|
+
* menos mienten los números de las pastillas.
|
|
47
|
+
*/
|
|
48
|
+
export declare const PENDIENTES_POR_CONSULTA = 100;
|
|
49
|
+
export declare function crearGestorJira(llamar: Llamar): GestorDeTareasPort;
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El adaptador de Notion sobre `GestorDeTareasPort` (`core/gestorDeTareas.ts`, IXCODE-15): el
|
|
3
|
+
* ÚNICO fichero que conoce los nombres de las tools de Notion y la forma de sus respuestas — el
|
|
4
|
+
* molde es `gestorJira.ts`, y nada fuera de aquí sabe que el gestor de tareas es Notion.
|
|
5
|
+
*
|
|
6
|
+
* El «proyecto» es un DATA SOURCE de una base de Notion (`collection://…`): se busca la base por
|
|
7
|
+
* texto (`notion-search`), se resuelve su data source al ELEGIRLA (`notion-fetch`), y de su
|
|
8
|
+
* esquema se entiende qué propiedad es el estado (tipo `status`, con sus grupos `to_do`/
|
|
9
|
+
* `in_progress`/`complete`), cuál el título y cuál el asignado (la primera `person`). Las
|
|
10
|
+
* pendientes salen de un SQL de solo lectura con `params` (`sqlDePendientes`, puro).
|
|
11
|
+
*
|
|
12
|
+
* Todas las respuestas son `{content:[{type:"text", text:"<JSON>"}]}` (medido, 29-09-2026); el
|
|
13
|
+
* JSON de `notion-fetch` lleva además un `text` con marcado propio (`<data-source-state>`,
|
|
14
|
+
* `<properties>`, `<content>`) del que se sacan las piezas por patrón. Lectura DEFENSIVA, como en
|
|
15
|
+
* Jira: una respuesta que no se entiende LANZA, nunca vuelve como lista vacía.
|
|
16
|
+
*
|
|
17
|
+
* Del asignado solo cruza el NOMBRE: `notion-get-users` trae el correo, y de aquí no sale. Un id
|
|
18
|
+
* que no se resuelve (medido: los asignados de una plantilla no son miembros del espacio) deja el
|
|
19
|
+
* asignado AUSENTE — no se inventa ni se enseña el id.
|
|
20
|
+
*/
|
|
21
|
+
import { type DescripcionDelProyecto, type GestorDeTareasPort } from "../../core/gestorDeTareas.js";
|
|
22
|
+
type Llamar = (nombre: string, args: Record<string, unknown>) => Promise<string>;
|
|
23
|
+
/** Cuánto de la página entra como descripción: una ficha no es la página entera. */
|
|
24
|
+
export declare const TOPE_DE_DESCRIPCION = 8000;
|
|
25
|
+
/** Cuántas bases se piden a `notion-search` de una vez: el máximo de su esquema (medido). */
|
|
26
|
+
export declare const BASES_POR_BUSQUEDA = 50;
|
|
27
|
+
/**
|
|
28
|
+
* El esquema de un `notion-fetch` de una base o de un data source: el PRIMER `<data-source-state>`
|
|
29
|
+
* (una base puede tener varios, y se dice cuántos), o el motivo de por qué esa base no vale.
|
|
30
|
+
*/
|
|
31
|
+
export declare function esquemaDeFetch(tool: string, cuerpoTexto: string): DescripcionDelProyecto;
|
|
32
|
+
/** La descripción de una página: lo de dentro de `<content>`, sin los bloques vacíos. Una página en blanco es `""`. */
|
|
33
|
+
export declare function descripcionDePagina(cuerpoTexto: string): string;
|
|
34
|
+
/**
|
|
35
|
+
* El comentario de cierre tal como Notion lo enseña BIEN (IXCODE-15). El esquema de
|
|
36
|
+
* `notion-create-comment` dice que los encabezados, las listas, las tablas, las citas y los bloques
|
|
37
|
+
* de código se guardan como TEXTO —saldrían `## Qué cambió` y `- a` literales—, y que lo de dentro
|
|
38
|
+
* de la línea (negrita, cursiva, código, enlaces) sí se pinta. Así que solo se cambian los
|
|
39
|
+
* MARCADORES de bloque: `## Título` → `Título:` en su línea y `- x`/`* x`/`+ x` → `• x`; nada
|
|
40
|
+
* más (un bloque de código, que `comentarioDeCierre` no produce, se queda como está). Mismas líneas, mismo orden, mismo texto: lo que la persona
|
|
41
|
+
* aprobó no cambia de sentido. `**x**` y `` `x` `` se quedan porque Notion los pinta.
|
|
42
|
+
*/
|
|
43
|
+
export declare function comentarioParaNotion(markdown: string): string;
|
|
44
|
+
export declare function crearGestorNotion(llamar: Llamar): GestorDeTareasPort;
|
|
45
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El `OAuthClientProvider` del SDK para UN conector. El molde es `ProviderCloudStudio`
|
|
3
|
+
* (`cloudstudioMcp.ts`), con tres diferencias que no son de forma:
|
|
4
|
+
* - **Cliente PÚBLICO** (`token_endpoint_auth_method: "none"`): no hay dónde guardar un
|
|
5
|
+
* secreto que valga más que el propio token, y Notion y Atlassian lo aceptan (medido).
|
|
6
|
+
* - **El cliente va atado a su `redirect_uri`**: el puerto de la consola puede cambiar
|
|
7
|
+
* entre arranques y el servidor rechazaría el callback. Otro puerto = registrar de nuevo,
|
|
8
|
+
* que es una llamada.
|
|
9
|
+
* - **El `state` lo pone el servicio**, que es quien lo apunta como pendiente: la ruta
|
|
10
|
+
* pública del callback no tiene otra autenticación que ese valor.
|
|
11
|
+
*/
|
|
12
|
+
import type { OAuthClientProvider } from "@modelcontextprotocol/sdk/client/auth.js";
|
|
13
|
+
import type { OAuthClientInformationMixed, OAuthClientMetadata, OAuthTokens } from "@modelcontextprotocol/sdk/shared/auth.js";
|
|
14
|
+
export interface OpcionesDeProveedor {
|
|
15
|
+
casa: string;
|
|
16
|
+
id: string;
|
|
17
|
+
redirectUrl: string;
|
|
18
|
+
state: string;
|
|
19
|
+
alRedirigir: (url: URL) => void;
|
|
20
|
+
}
|
|
21
|
+
export declare class ProveedorDeConector implements OAuthClientProvider {
|
|
22
|
+
private readonly o;
|
|
23
|
+
/**
|
|
24
|
+
* Los secretos de ESTE conector. Son los mismos que guarda el carril de la clave —un solo
|
|
25
|
+
* fichero por conector—, pero aquí no puede haber `clave`: quien construye un proveedor es el
|
|
26
|
+
* carril de OAuth, y la autenticación de un conector no cambia después de crearlo.
|
|
27
|
+
*/
|
|
28
|
+
private datos;
|
|
29
|
+
constructor(o: OpcionesDeProveedor);
|
|
30
|
+
private guardar;
|
|
31
|
+
get redirectUrl(): string;
|
|
32
|
+
get clientMetadata(): OAuthClientMetadata;
|
|
33
|
+
state(): string;
|
|
34
|
+
clientInformation(): OAuthClientInformationMixed | undefined;
|
|
35
|
+
saveClientInformation(info: OAuthClientInformationMixed): void;
|
|
36
|
+
tokens(): OAuthTokens | undefined;
|
|
37
|
+
saveTokens(tokens: OAuthTokens): void;
|
|
38
|
+
redirectToAuthorization(url: URL): void;
|
|
39
|
+
saveCodeVerifier(verifier: string): void;
|
|
40
|
+
codeVerifier(): string;
|
|
41
|
+
/** El gancho de recuperación del SDK: sin él, un refresh muerto es un fallo duro. */
|
|
42
|
+
invalidateCredentials(alcance: "all" | "client" | "tokens" | "verifier" | "discovery"): void;
|
|
43
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { type OAuthClientProvider } from "@modelcontextprotocol/sdk/client/auth.js";
|
|
2
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
3
|
+
import { type AutenticacionDeConector, type ConectorDelCable, type DefinicionDeConector, type FilaDeCatalogo, type ToolConEsquema } from "../../core/conectores.js";
|
|
4
|
+
export interface ServicioDeConectores {
|
|
5
|
+
lista(): {
|
|
6
|
+
/** `catálogo ∪ definiciones`, recortado a lo que viaja (sin `url`). */
|
|
7
|
+
catalogo: FilaDeCatalogo[];
|
|
8
|
+
conectores: ConectorDelCable[];
|
|
9
|
+
desconocidos: string[];
|
|
10
|
+
ilegible?: true;
|
|
11
|
+
error?: string;
|
|
12
|
+
};
|
|
13
|
+
/** Da de alta un conector ESCRITO A MANO. Devuelve su id derivado, o `undefined` con el
|
|
14
|
+
* motivo ya puesto en `error` — el molde de `anadir`, que tampoco lanza por una frase. */
|
|
15
|
+
crear(def: DefinicionDeConector): string | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Por dónde se autoriza ese id: OAuth abre el navegador, `api-key` pide una clave, y
|
|
18
|
+
* `ninguna` no se autoriza. Lo pregunta el SERVIDOR y no viaja al cliente: lo que el cliente
|
|
19
|
+
* manda es la INTENCIÓN («autoriza este id»), no por dónde.
|
|
20
|
+
*/
|
|
21
|
+
autenticacionDe(id: string): AutenticacionDeConector | undefined;
|
|
22
|
+
anadir(id: string): void;
|
|
23
|
+
quitar(id: string): void;
|
|
24
|
+
probar(id: string): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Llama a una tool del conector y devuelve su texto. NO es `probar`: no toca la foto en
|
|
27
|
+
* memoria (`pruebas`) ni avisa con `alCambiar` — es una llamada de trabajo, no una medida del
|
|
28
|
+
* estado de la conexión. Lanza si el conector no está conectado, si falta autorizar, si pasa
|
|
29
|
+
* el tope, o con el motivo de `probar` para el resto de fallos de red.
|
|
30
|
+
*/
|
|
31
|
+
llamar(id: string, nombre: string, args: Record<string, unknown>, opciones?: {
|
|
32
|
+
topeMs?: number;
|
|
33
|
+
}): Promise<string>;
|
|
34
|
+
/**
|
|
35
|
+
* Las tools del conector CON su esquema, preguntadas a la red en el acto (no la foto de
|
|
36
|
+
* `probar`). Para montarlas en un agente. Lanza como `llamar` si no se puede hablar con él.
|
|
37
|
+
*/
|
|
38
|
+
tools(id: string): Promise<ToolConEsquema[]>;
|
|
39
|
+
autorizar(id: string, redirectUrl: string): Promise<void>;
|
|
40
|
+
guardarClave(id: string, clave: string): void;
|
|
41
|
+
completar(query: URLSearchParams): Promise<{
|
|
42
|
+
ok: boolean;
|
|
43
|
+
mensaje: string;
|
|
44
|
+
}>;
|
|
45
|
+
desconectar(id: string): void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Cómo se autentica una conexión: un proveedor OAuth, o una cabecera ya montada. Ausente es
|
|
49
|
+
* «ninguna», y también «falta la credencial» — quien decide cuál de las dos lo sabe por el
|
|
50
|
+
* conector, no por esto.
|
|
51
|
+
*
|
|
52
|
+
* Una unión y no dos campos opcionales: `{proveedor?, cabecera?}` admite las dos cosas a la
|
|
53
|
+
* vez, que no significa nada, y a un tercer campo opcional le pasaría lo mismo.
|
|
54
|
+
*/
|
|
55
|
+
export type CredencialDeRed = {
|
|
56
|
+
proveedor: OAuthClientProvider;
|
|
57
|
+
} | {
|
|
58
|
+
cabecera: {
|
|
59
|
+
nombre: string;
|
|
60
|
+
valor: string;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
export interface RedDeConectores {
|
|
64
|
+
listarTools(url: string, credencial: CredencialDeRed | undefined, senal: AbortSignal): Promise<ToolConEsquema[]>;
|
|
65
|
+
/** Devuelve el texto del primer bloque `type: "text"` del resultado. Lanza `ErrorDeTool` (con
|
|
66
|
+
* ese texto, recortado) si el servidor contesta `isError: true` — así `llamar` distingue una
|
|
67
|
+
* tool que FALLÓ de un servidor que NO RESPONDE, y no lo aplana con `motivoDe`. */
|
|
68
|
+
llamarTool(url: string, credencial: CredencialDeRed | undefined, nombre: string, args: Record<string, unknown>, senal: AbortSignal, topeMs?: number): Promise<string>;
|
|
69
|
+
iniciarAutorizacion(url: string, proveedor: OAuthClientProvider): Promise<"REDIRECT" | "AUTHORIZED">;
|
|
70
|
+
canjearCodigo(url: string, proveedor: OAuthClientProvider, code: string): Promise<void>;
|
|
71
|
+
abrir(url: URL): void;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* El servidor de la tool contestó, pero con `isError: true`: es un fallo DEL ENCARGO (una JQL
|
|
75
|
+
* mal escrita, un id que no existe…), no de la conexión. `llamar` la distingue de un fallo de
|
|
76
|
+
* red por CLASE —igual que `motivoDe` distingue un `OAuthError`— y relanza su texto TAL CUAL en
|
|
77
|
+
* vez de aplanarlo a «no responde»: ese texto es la única pista de qué salió mal en el encargo.
|
|
78
|
+
*/
|
|
79
|
+
export declare class ErrorDeTool extends Error {
|
|
80
|
+
}
|
|
81
|
+
export declare function crearServicioDeConectores(o: {
|
|
82
|
+
casa: string;
|
|
83
|
+
red: RedDeConectores;
|
|
84
|
+
ahora?: () => number;
|
|
85
|
+
alCambiar?: () => void;
|
|
86
|
+
}): ServicioDeConectores;
|
|
87
|
+
/** Lo mínimo que `listarTools` y `llamarTool` usan del `Client` del SDK, para que la costura
|
|
88
|
+
* pueda doblarlo. */
|
|
89
|
+
export type ClienteDeMcp = Pick<Client, "connect" | "close" | "listTools" | "callTool">;
|
|
90
|
+
/** El transporte de un carril: lo que `Client.connect` acepta. */
|
|
91
|
+
export type TransporteDeMcp = Parameters<Client["connect"]>[0];
|
|
92
|
+
/** Lo que este código le pasa a los DOS transportes: los dos tipos del SDK lo aceptan. */
|
|
93
|
+
export type OpcionesDeTransporte = {
|
|
94
|
+
authProvider?: OAuthClientProvider;
|
|
95
|
+
requestInit?: RequestInit;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Por dónde habla `listarTools`: el cliente y los dos transportes. Existe por lo que se prueba
|
|
99
|
+
* sin red —el reparto de los dos carriles, o sea CUÁL de los dos errores sale—, que es justo lo
|
|
100
|
+
* que desde fuera de esta función no se ve. Por omisión, las piezas de verdad.
|
|
101
|
+
*/
|
|
102
|
+
export interface CosturaDeRedDeConectores {
|
|
103
|
+
crearCliente(): ClienteDeMcp;
|
|
104
|
+
/** En orden: streamable-http (el protocolo de todos los medidos) y SSE (para uno viejo). */
|
|
105
|
+
primario(url: URL, opciones: OpcionesDeTransporte): TransporteDeMcp;
|
|
106
|
+
respaldo(url: URL, opciones: OpcionesDeTransporte): TransporteDeMcp;
|
|
107
|
+
}
|
|
108
|
+
export declare function redDeConectoresReal(costura?: CosturaDeRedDeConectores): RedDeConectores;
|
|
109
|
+
export declare function servicioDeConectoresCableado(o: {
|
|
110
|
+
casa: string;
|
|
111
|
+
alCambiar?: () => void;
|
|
112
|
+
}): ServicioDeConectores;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El ESCRITOR de `~/.xonecode/auth.json` (el lector está en `configEnDisco.ts`).
|
|
3
|
+
*
|
|
4
|
+
* El contrato con el fichero del usuario: una escritura NUNCA destruye lo que ya
|
|
5
|
+
* había. Por eso la base de la fusión es el objeto CRUDO tal cual (no el resultado
|
|
6
|
+
* de `validarAuth`, que descarta en silencio entradas raras) y por eso ante un JSON
|
|
7
|
+
* roto se PARA sin escribir, en vez de recuperar el fichero por su cuenta.
|
|
8
|
+
*
|
|
9
|
+
* Escribe TAMBIÉN en `process.env` (ver el final de `guardarCredencial`): el fichero es
|
|
10
|
+
* para la próxima ejecución y la variable es para ésta, y una credencial que solo existe
|
|
11
|
+
* en disco no la ve nada de lo que ya está corriendo.
|
|
12
|
+
*/
|
|
13
|
+
import { type Aviso } from "../../core/config.js";
|
|
14
|
+
import type { Proveedor } from "../../core/modelos.js";
|
|
15
|
+
/** Un `auth.json` existente que no se puede fusionar: no se escribe nada encima. */
|
|
16
|
+
export declare class AuthRotoEnDisco extends Error {
|
|
17
|
+
}
|
|
18
|
+
export declare function guardarCredencial(proveedor: Proveedor, clave: string): {
|
|
19
|
+
ruta: string;
|
|
20
|
+
avisos: Aviso[];
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Quita la credencial de un proveedor de `auth.json`. Devuelve dónde estaba y si TODAVÍA
|
|
24
|
+
* queda puesta por el entorno.
|
|
25
|
+
*
|
|
26
|
+
* Mismo contrato que escribir: se fusiona sobre el objeto CRUDO —lo que este fichero no
|
|
27
|
+
* entiende se conserva— y ante un JSON roto se PARA sin tocar nada. Borrar lo que no
|
|
28
|
+
* estaba no es un error: es el estado que se pedía, y decirlo dos veces no cambia el
|
|
29
|
+
* fichero.
|
|
30
|
+
*
|
|
31
|
+
* De `process.env` se quita SOLO si la variable llevaba exactamente la clave que se acaba
|
|
32
|
+
* de borrar. Ese es el caso de `aplicarAuth` (el arranque copió `auth.json` al entorno) y
|
|
33
|
+
* también el de quien exportó la misma clave a mano — para el proceso son lo mismo. Una
|
|
34
|
+
* variable con OTRO valor es del usuario, no nuestra: no se toca, y por eso se devuelve
|
|
35
|
+
* `quedaEnEntorno`, para que quien lo pidió pueda decir la verdad («se borró del fichero,
|
|
36
|
+
* pero sigue puesta por la variable»). Desexportar la shell de nadie no está a nuestro
|
|
37
|
+
* alcance.
|
|
38
|
+
*/
|
|
39
|
+
export declare function borrarCredencial(proveedor: Proveedor, clave?: string): {
|
|
40
|
+
ruta: string;
|
|
41
|
+
borrada: boolean;
|
|
42
|
+
quedaEnEntorno: boolean;
|
|
43
|
+
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { type Proveedor, type ProveedorDeclarado } from "../../core/modelos.js";
|
|
2
|
+
import type { CatalogoModelosPort, ModeloDisponible } from "../../core/ports.js";
|
|
3
|
+
/** Un fallo publicable: nunca incluye una clave ni el cuerpo remoto. */
|
|
4
|
+
export declare class ErrorCatalogoModelos extends Error {
|
|
5
|
+
constructor(mensaje: string);
|
|
6
|
+
}
|
|
7
|
+
/** La única resolución de URL de Ollama que comparten sus dos consumidores. */
|
|
8
|
+
export declare function baseUrlDeOllama(): string;
|
|
9
|
+
/** El host remoto oficial de Ollama Cloud no se mezcla con el servidor local. */
|
|
10
|
+
export declare function baseUrlDeOllamaCloud(): string;
|
|
11
|
+
export declare class CatalogoModelos implements CatalogoModelosPort {
|
|
12
|
+
private readonly fetchFn;
|
|
13
|
+
private readonly timeoutMs;
|
|
14
|
+
private readonly personalizados;
|
|
15
|
+
/**
|
|
16
|
+
* Los personalizados entran por una FUNCIÓN y no por una lista: la ventana de Ajustes
|
|
17
|
+
* los da de alta en caliente, y una lista leída al construir el catálogo se quedaría
|
|
18
|
+
* vieja hasta reiniciar el proceso — el mismo motivo por el que el modelo en vigor se
|
|
19
|
+
* re-resuelve en cada barra en vez de guardarse.
|
|
20
|
+
*/
|
|
21
|
+
constructor(fetchFn?: typeof fetch, timeoutMs?: number, personalizados?: () => readonly ProveedorDeclarado[]);
|
|
22
|
+
listar(proveedor: Proveedor): Promise<ModeloDisponible[]>;
|
|
23
|
+
/**
|
|
24
|
+
* La clave de un proveedor, de la ÚNICA tabla que las nombra (`core/modelos.ts`).
|
|
25
|
+
*
|
|
26
|
+
* Un proveedor sin variable no puede llegar aquí —`ollama` es local y su listado no
|
|
27
|
+
* llama a esto—, pero si llegara, decirlo es mejor que leer `process.env[undefined]`.
|
|
28
|
+
*/
|
|
29
|
+
private clave;
|
|
30
|
+
private pedir;
|
|
31
|
+
private listarOpenAi;
|
|
32
|
+
private listarAnthropic;
|
|
33
|
+
private listarGemini;
|
|
34
|
+
/**
|
|
35
|
+
* El `GET /v1/models` de un proveedor compatible con OpenAI (NVIDIA, Groq, xAI).
|
|
36
|
+
*
|
|
37
|
+
* Tres decisiones, y las tres son la misma: no afirmar lo que no se sabe.
|
|
38
|
+
*
|
|
39
|
+
* - **El filtro es el genérico** (`esIdConversacional`), no el de OpenAI: aquí los ids
|
|
40
|
+
* no siguen sus familias (`meta/llama-3.3-70b-instruct`, `grok-4`,
|
|
41
|
+
* `llama-3.1-8b-instant`), así que exigir un prefijo conocido dejaría la lista vacía.
|
|
42
|
+
* Se descarta solo lo que con certeza no es de conversación —embeddings, rerankers,
|
|
43
|
+
* voz, imagen— y lo demás se ofrece: preferimos una lista con algo de más a una que
|
|
44
|
+
* esconde el modelo que el usuario venía a elegir.
|
|
45
|
+
* - **El contexto solo si el servidor lo dice.** Por su documentación, Groq manda
|
|
46
|
+
* `context_window` en cada fila y los otros dos no mandan nada — no está medido
|
|
47
|
+
* contra los tres endpoints, y por eso se LEE si viene en vez de darse por hecho que
|
|
48
|
+
* viene o que no. Sin dato no hay campo, y por tanto la barra no
|
|
49
|
+
* pinta porcentaje — que es lo correcto, no un hueco por rellenar
|
|
50
|
+
* (`core/contextos.ts` no tiene tabla para estas familias, y no se le inventa una).
|
|
51
|
+
* - **Sin paginación.** Ninguno de los tres la declara en `/v1/models`; inventar un
|
|
52
|
+
* bucle de cursores contra un campo que no existe sería código que nadie ejecuta.
|
|
53
|
+
*/
|
|
54
|
+
private listarCompatible;
|
|
55
|
+
private listarOllama;
|
|
56
|
+
private listarOllamaCloud;
|
|
57
|
+
private listarOllamaDesde;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Qué sabe hacer un modelo de Ollama, PREGUNTÁNDOSELO al servidor.
|
|
61
|
+
*
|
|
62
|
+
* Existe porque Ollama es el único proveedor cuyos modelos los elige el usuario y no hay
|
|
63
|
+
* prefijo que los describa: en esta máquina conviven `granite4.2:3b`, `qwen3.8:27b-mlx` y
|
|
64
|
+
* `ministral-3:3b`, y de los tres solo los dos primeros piensan. Una tabla habría sido
|
|
65
|
+
* adivinar; `POST /api/show` lo contesta, y devuelve `capabilities` con `"thinking"` dentro
|
|
66
|
+
* cuando el modelo piensa.
|
|
67
|
+
*
|
|
68
|
+
* **Importa acertar porque el fallo es duro, no blando**: medido, pedirle pensar a
|
|
69
|
+
* `ministral-3:3b` contesta `"ministral-3:3b" does not support thinking` y se lleva el
|
|
70
|
+
* turno. Por eso lo que no se pueda comprobar devuelve `undefined` —«no consta»— y
|
|
71
|
+
* `nivelesDeEsfuerzo` no afirma nada: sin capacidades no se manda el parámetro.
|
|
72
|
+
*
|
|
73
|
+
* No cachea, por la misma razón que `xone_navegacion` no cachea su índice: quien la llama
|
|
74
|
+
* ya guarda la respuesta el tiempo que le sirve, y un «este modelo piensa» viejo sobre un
|
|
75
|
+
* modelo que se ha sustituido es peor que no tener el dato.
|
|
76
|
+
*/
|
|
77
|
+
export declare function capacidadesDeOllama(modelo: string, baseUrl?: string, fetchImpl?: typeof fetch): Promise<{
|
|
78
|
+
piensa: boolean;
|
|
79
|
+
} | undefined>;
|