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,342 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Las sesiones de un proyecto, en su `.xonecode/sesiones/`.
|
|
3
|
+
*
|
|
4
|
+
* Ahí y no en global porque la sesión es del proyecto, ya hay precedente
|
|
5
|
+
* (`conversation_history/` en `agent/grafo/memoriaDeProyecto.ts`), la carpeta está denegada
|
|
6
|
+
* entera al agente (`permisosDe`) y **no sube nunca** a CloudStudio — el mismo trato que
|
|
7
|
+
* `.xonecode/` recibe en todas partes de este repo.
|
|
8
|
+
*
|
|
9
|
+
* Se guardan **actos** (`core/actos.ts`), no `DomainEvent`. La distinción no es cosmética:
|
|
10
|
+
* ningún evento lleva el texto que escribió el usuario — `tool.detalle` es la única
|
|
11
|
+
* excepción, y es una lista blanca de campo de ruta, nunca prosa —, así que un fichero de
|
|
12
|
+
* eventos daría una sesión reabierta con respuestas y sin preguntas. Y por construcción no
|
|
13
|
+
* hay filtrado que hacer para cumplir «nada de diffs ni contenido de fichero»: el tipo
|
|
14
|
+
* `Acto` no tiene ningún campo que pueda llevarlos. El único sitio del sistema donde el
|
|
15
|
+
* contenido de un fichero viaja es el mensaje de aprobación
|
|
16
|
+
* (`consolaWeb.ts#aprobacionesTui`), que no es un acto y se suelta en cuanto hay decisión
|
|
17
|
+
* — nunca llega aquí.
|
|
18
|
+
*
|
|
19
|
+
* Reabrir ya NO es releer, y este fichero dejó de ser la única memoria. El hilo del agente
|
|
20
|
+
* vive en el checkpointer de SQLite del proyecto (`agent/sesiones/checkpointer.ts`), indexado por el
|
|
21
|
+
* mismo id que titula estas entradas, así que una sesión reabierta continúa de verdad. Lo
|
|
22
|
+
* que sigue viviendo aquí es el TRANSCRIPT —lo que se pinta—, y son dos cosas distintas a
|
|
23
|
+
* propósito: un acto no puede llevar contenido de fichero ni argumentos de tool, y un
|
|
24
|
+
* checkpoint los lleva todos. Por eso el `.jsonl` puede viajar y el `.sqlite` no.
|
|
25
|
+
* `historica` deja de ser «se reabrió» y pasa a ser un hecho comprobado: se pregunta al
|
|
26
|
+
* checkpointer, y solo se marca si de ese hilo no queda memoria —una sesión de antes de que
|
|
27
|
+
* esto existiera, o una cuyo primer turno nunca corrió—. Fingir que la conversación continúa
|
|
28
|
+
* cuando el modelo no recuerda nada sería justo la clase de mentira muda que este repo evita
|
|
29
|
+
* (`bitacora.ts` es el mismo principio aplicado a los avisos de honestidad).
|
|
30
|
+
* `historica` no se escribe a disco — no es un campo de `EntradaIndice` ni del `.jsonl` —
|
|
31
|
+
* porque es un hecho del MOMENTO de reabrir, no del estado de la sesión: quien reabre
|
|
32
|
+
* decide en memoria cuándo el primer turno nuevo la desactiva, y persistir la marca
|
|
33
|
+
* obligaría a un segundo sitio a mantenerla sincronizada con ese momento.
|
|
34
|
+
*
|
|
35
|
+
* `indice.json` se reescribe entero (es pequeño, una entrada por sesión) con el mismo
|
|
36
|
+
* cuidado atómico que `agent/config/settingsEnDisco.ts#escribirAtomico` — temporal + rename (con el reintento de Windows, `agent/renombrarSobre.ts`),
|
|
37
|
+
* porque un `writeFileSync` a medias tras un crash dejaría corrompido el índice de TODAS
|
|
38
|
+
* las sesiones, no solo la que se estaba anotando. El `.jsonl` de una sesión, en cambio, se
|
|
39
|
+
* **anexa** (`appendFileSync`): reescribirlo entero en cada acto lo haría cuadrático en el
|
|
40
|
+
* número de actos de la sesión, y arriesgaría perder la sesión completa a un crash a mitad
|
|
41
|
+
* de escritura en vez de, como mucho, la última línea — que `reabrirSesion` ya tolera.
|
|
42
|
+
*/
|
|
43
|
+
import type { Acto, ConsumoDeTurno } from "../../core/actos.js";
|
|
44
|
+
import { tituloDesde } from "../../core/textos.js";
|
|
45
|
+
import type { Esfuerzo } from "../../core/esfuerzo.js";
|
|
46
|
+
import type { MotorDeAgente } from "../../core/motor.js";
|
|
47
|
+
import type { ModoDeEscritura } from "../../core/modoDeEscritura.js";
|
|
48
|
+
/**
|
|
49
|
+
* El título automático de una sesión, a partir de su primera petición.
|
|
50
|
+
*
|
|
51
|
+
* Se movió a `core/textos.ts` cuando las TAREAS necesitaron el mismo título: `core/` no
|
|
52
|
+
* puede importar de `web/`, y una segunda copia habría divergido. Se reexporta con su
|
|
53
|
+
* nombre de siempre porque `anotarActo`, en este mismo fichero, y sus tests lo usan desde
|
|
54
|
+
* aquí.
|
|
55
|
+
*/
|
|
56
|
+
export { tituloDesde };
|
|
57
|
+
/**
|
|
58
|
+
* El dispositivo preferido de una sesión: con cuál trabaja el agente.
|
|
59
|
+
*
|
|
60
|
+
* Se guarda la FOTO y no solo el id, y esa es la decisión que importa: los ids no son
|
|
61
|
+
* estables. `emulator-5554` es un puerto, un AVD recién arrancado se queda con el serial que
|
|
62
|
+
* haya libre, y el de un teléfono sobrevive pero el teléfono puede estar desenchufado. Con
|
|
63
|
+
* solo el id, al reabrir una sesión el selector enseñaría un serial crudo o nada; con la
|
|
64
|
+
* foto puede decir «iPhone 16 · no está ahora», que es lo que se sabe.
|
|
65
|
+
*
|
|
66
|
+
* Si está conectado AHORA no se guarda: eso se resuelve contra la última medida en el
|
|
67
|
+
* momento de emitir. Un «conectado» escrito en disco es falso en cuanto se desenchufa.
|
|
68
|
+
*/
|
|
69
|
+
export interface DispositivoElegido {
|
|
70
|
+
id: string;
|
|
71
|
+
nombre: string;
|
|
72
|
+
plataforma: "android" | "ios";
|
|
73
|
+
clase: "emulador" | "simulador" | "fisico";
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* El ticket de Jira al que queda ligada una sesión (IXCODE-11).
|
|
77
|
+
*
|
|
78
|
+
* `conector` es el id del conector MCP (`core/conectores.ts`) con el que se abrió, `sitio` es
|
|
79
|
+
* el subdominio de Atlassian (`<sitio>.atlassian.net`) —hace falta para componer la URL
|
|
80
|
+
* pública del ticket sin volver a preguntarle nada a Jira— y `clave` es la clave corta
|
|
81
|
+
* (`IXCODE-12`). Ni el resumen ni el asignado viajan aquí: eso se pide en caliente cuando
|
|
82
|
+
* hace falta pintarlo, y así una sesión vieja no enseña un título que quedó desactualizado.
|
|
83
|
+
*/
|
|
84
|
+
export interface TicketDeSesion {
|
|
85
|
+
conector: string;
|
|
86
|
+
sitio: string;
|
|
87
|
+
clave: string;
|
|
88
|
+
}
|
|
89
|
+
export interface EntradaIndice {
|
|
90
|
+
id: string;
|
|
91
|
+
titulo: string;
|
|
92
|
+
creada: string;
|
|
93
|
+
ultimoTurno: string;
|
|
94
|
+
/** Con cuál trabaja el agente. Ausente = ninguno elegido. */
|
|
95
|
+
dispositivo?: DispositivoElegido;
|
|
96
|
+
/**
|
|
97
|
+
* Cuánto razona el modelo en esta sesión. Ausente = ninguno fijado.
|
|
98
|
+
*
|
|
99
|
+
* Vive AQUÍ y no en el `.jsonl` por lo mismo que el dispositivo: es un dato DE la sesión,
|
|
100
|
+
* no uno de sus actos, y sin esto la elección se perdía al cerrar la pestaña — que es
|
|
101
|
+
* justo lo que hace inútil una palanca de coste, porque hay que volver a ponerla cada vez.
|
|
102
|
+
*
|
|
103
|
+
* **No hay defecto global**, y esa ausencia es la decisión: el esfuerzo se elige por
|
|
104
|
+
* SESIÓN y por SUBAGENTE (en su `.md`), que son los dos sitios donde alguien sabe lo que
|
|
105
|
+
* está pidiendo. Un tercer valor «para todas las nuevas» habría sido un ajuste que decide
|
|
106
|
+
* en nombre de conversaciones que todavía no existen.
|
|
107
|
+
*/
|
|
108
|
+
esfuerzo?: Esfuerzo;
|
|
109
|
+
/**
|
|
110
|
+
* Con qué motor de agente NACIÓ esta sesión (`core/motor.ts`). Ausente = deepagents, que era el
|
|
111
|
+
* único cuando se escribió cualquier sesión sin el campo. Se guarda porque la memoria de un
|
|
112
|
+
* motor no la continúa el otro: cambiar la configuración no puede cambiarle el motor a una
|
|
113
|
+
* conversación que ya existe. No se enseña en ninguna parte, como pidió él.
|
|
114
|
+
*/
|
|
115
|
+
motor?: MotorDeAgente;
|
|
116
|
+
/**
|
|
117
|
+
* El modo de escritura de esta sesión: supervisado o autónomo. Ausente = supervisado.
|
|
118
|
+
*
|
|
119
|
+
* Vive AQUÍ por lo mismo que el esfuerzo y el dispositivo: es un dato DE la sesión, no
|
|
120
|
+
* uno de sus actos, y sin esto la elección se perdía al cerrar la pestaña — que es justo
|
|
121
|
+
* lo que hace inútil una palanca, porque hay que volver a ponerla cada vez.
|
|
122
|
+
*
|
|
123
|
+
* **Ausente es supervisado y no «no consta»**, a diferencia del esfuerzo: de esto hay que
|
|
124
|
+
* decidir algo en cada escritura, así que el hueco se resuelve, y la única dirección
|
|
125
|
+
* segura para resolverlo es la que enseña el diff. Por eso perder la anotación no es un
|
|
126
|
+
* agujero: es volver a preguntar.
|
|
127
|
+
*/
|
|
128
|
+
modo?: ModoDeEscritura;
|
|
129
|
+
/**
|
|
130
|
+
* El id de la TAREA de fondo que abrió esta sesión, si la abrió una.
|
|
131
|
+
*
|
|
132
|
+
* Ausente es **«no consta»** y no «es una conversación»: no la lleva ninguna sesión
|
|
133
|
+
* anterior a esta marca, ni la que se dé de alta por el camino defensivo de
|
|
134
|
+
* `anotarActo` (índice perdido a mitad). Quien lo pinte tiene que tratarlo como el lado
|
|
135
|
+
* conservador —liso—, no como una afirmación.
|
|
136
|
+
*
|
|
137
|
+
* Se guarda AQUÍ y no se deduce cruzando con la cola de tareas, que es lo que parecía
|
|
138
|
+
* gratis: la cola es opcional en las dos capas —`OpcionesDeMontaje.colaDeTareas` y el
|
|
139
|
+
* mensaje `tareas` del cable— y en un proceso que no las corre el cruce pintaría TODAS
|
|
140
|
+
* las sesiones de tarea como conversaciones, en silencio y en la dirección equivocada.
|
|
141
|
+
* Es el mismo camino que recorrió `historica`: de suposición a hecho comprobado.
|
|
142
|
+
*/
|
|
143
|
+
tarea?: string;
|
|
144
|
+
/**
|
|
145
|
+
* Lo que ha gastado la sesión ENTERA, sumando los deltas de sus turnos.
|
|
146
|
+
*
|
|
147
|
+
* Ausente es **«no consta»** y no «gastó cero»: no lo lleva ninguna sesión escrita antes de
|
|
148
|
+
* esto —hasta que la siembra la alcance—, y tampoco una cuyo `.jsonl` no quepa en el tope de
|
|
149
|
+
* la siembra. Un cero aquí afirmaría una medida que nadie hizo, que es la cifra inventada de
|
|
150
|
+
* siempre. Y por eso **nunca es un acumulado parcial**: o es la sesión entera, o no está (ver
|
|
151
|
+
* `anotarConsumoDeActo`, que es donde se decide eso).
|
|
152
|
+
*
|
|
153
|
+
* NO lleva `ventana`, aunque el tipo la admita: la ventana es «cuánto ocupa el historial
|
|
154
|
+
* AHORA», y dentro de una sesión cerrada hace días sería un «ahora» congelado. Sigue en cada
|
|
155
|
+
* `fin` del `.jsonl`, que es donde se mide. `acumularTotales` es quien la quita.
|
|
156
|
+
*/
|
|
157
|
+
consumo?: ConsumoDeTurno;
|
|
158
|
+
/**
|
|
159
|
+
* El ticket de Jira al que quedó ligada esta sesión (IXCODE-11). Ausente = ninguno.
|
|
160
|
+
*
|
|
161
|
+
* Vive AQUÍ por lo mismo que el dispositivo y el esfuerzo: es un dato DE la sesión, no uno
|
|
162
|
+
* de sus actos, y sin esto la elección se perdía al cerrar la pestaña.
|
|
163
|
+
*/
|
|
164
|
+
ticket?: TicketDeSesion;
|
|
165
|
+
}
|
|
166
|
+
export interface SesionReabierta {
|
|
167
|
+
id: string;
|
|
168
|
+
actos: Acto[];
|
|
169
|
+
/** Siempre `true`: `reabrirSesion` solo se llama para releer una sesión ya cerrada. */
|
|
170
|
+
historica: boolean;
|
|
171
|
+
/** El dispositivo que tenía elegido. Ausente = ninguno, o la sesión es anterior a esto. */
|
|
172
|
+
dispositivo?: DispositivoElegido;
|
|
173
|
+
/** El esfuerzo que tenía fijado. Ausente = ninguno, o la sesión es anterior a esto. */
|
|
174
|
+
esfuerzo?: Esfuerzo;
|
|
175
|
+
/** El motor con el que nació. Ausente = deepagents (ver `EntradaIndice.motor`). */
|
|
176
|
+
motor?: MotorDeAgente;
|
|
177
|
+
/** El modo de escritura que tenía. Ausente = supervisado, o la sesión es anterior a esto. */
|
|
178
|
+
modo?: ModoDeEscritura;
|
|
179
|
+
/** El ticket al que quedó ligada. Ausente = ninguno, o la sesión es anterior a esto. */
|
|
180
|
+
ticket?: TicketDeSesion;
|
|
181
|
+
}
|
|
182
|
+
/** Las dos rutas de una sesión, para quien las EXPORTA (`soporte.ts`): el `.jsonl` de sus
|
|
183
|
+
* actos y su carpeta (artefactos, adjuntos, memoria). Con la misma guarda del id. */
|
|
184
|
+
export declare function rutaDeActosDeSesion(raiz: string, id: string): string;
|
|
185
|
+
export declare function carpetaDeLaSesion(raiz: string, id: string): string;
|
|
186
|
+
/** Un índice roto (JSON que no parsea, o que no es una lista) no se puede persistir como
|
|
187
|
+
* base: usar aquí la lista vacía que devuelve `leerIndice` para un JSON roto BORRARÍA del
|
|
188
|
+
* disco todas las sesiones que el índice roto todavía nombraba — el `.jsonl` de cada
|
|
189
|
+
* sesión sigue intacto, pero sin su entrada es irrecuperable. Misma disciplina que
|
|
190
|
+
* `settingsEnDisco.ts#leerCrudoOAbortar`: la lectura que alimenta una escritura PARA sin
|
|
191
|
+
* escribir ante JSON roto, en vez de recuperar el fichero por su cuenta.
|
|
192
|
+
*/
|
|
193
|
+
export declare class IndiceDeSesionesRoto extends Error {
|
|
194
|
+
}
|
|
195
|
+
/** Crea una sesión nueva y devuelve su id. El id es `randomUUID()`: no compone rutas por
|
|
196
|
+
* construcción, pero pasa igualmente por `rutaJsonl` (vía `segmentoSeguro`) en cuanto se
|
|
197
|
+
* anota o se reabre — la guarda no distingue de dónde vino el id.
|
|
198
|
+
*/
|
|
199
|
+
/**
|
|
200
|
+
* Da de alta una sesión en el índice.
|
|
201
|
+
*
|
|
202
|
+
* El id ENTRA por parámetro desde que es también el `thread_id` del grafo
|
|
203
|
+
* (`agent/sesiones/checkpointer.ts`): quien abre la consola lo decide al abrir, porque el hilo tiene
|
|
204
|
+
* que existir antes del primer turno, y esto solo escribe la entrada. Sin id se genera uno,
|
|
205
|
+
* que es lo que hacía siempre y lo que sigue valiendo para quien no tenga hilo.
|
|
206
|
+
*/
|
|
207
|
+
export declare function crearSesion(raiz: string, id?: string, tarea?: string): string;
|
|
208
|
+
/** Anexa un acto al `.jsonl` de la sesión y refresca su entrada en el índice: fija el
|
|
209
|
+
* título en el PRIMER acto `usuario` (y no se vuelve a tocar) y actualiza `ultimoTurno`
|
|
210
|
+
* en cada llamada, sea cual sea el tipo de acto.
|
|
211
|
+
*
|
|
212
|
+
* El anexado va ANTES de tocar el índice a propósito: si el índice está roto y
|
|
213
|
+
* `leerIndiceOAbortar` lanza, el acto ya quedó escrito. Un turno completo no se pierde
|
|
214
|
+
* solo porque el índice —que es prescindible, se puede reconstruir barriendo los
|
|
215
|
+
* `.jsonl`— esté corrompido.
|
|
216
|
+
*/
|
|
217
|
+
export declare function anotarActo(raiz: string, id: string, acto: Acto): void;
|
|
218
|
+
/**
|
|
219
|
+
* SIEMBRA la marca de tarea en una sesión que ya estaba en el índice. Devuelve si la tocó.
|
|
220
|
+
*
|
|
221
|
+
* Existe por las sesiones de tarea anteriores a `EntradaIndice.tarea`: sin esto, la primera
|
|
222
|
+
* que hubo en cada proyecto se queda para siempre pintada como una conversación. La corre el
|
|
223
|
+
* corredor al arrancar, recorriendo su propia cola — o sea leyendo la autoridad sobre de
|
|
224
|
+
* quién es cada sesión, la misma que escribió el dato.
|
|
225
|
+
*
|
|
226
|
+
* **Es MONOTÓNICA, y de ahí sale que sea segura**: solo añade. No pisa una marca puesta —la
|
|
227
|
+
* del disco es la que escribió quien abrió la sesión— y no quita ninguna, así que no hay
|
|
228
|
+
* forma de que convierta una sesión de tarea en una conversación, que es el único fallo
|
|
229
|
+
* abierto posible por aquí. Correrla dos veces no hace nada la segunda.
|
|
230
|
+
*
|
|
231
|
+
* Y **no da de alta la entrada que falte**: la cola vive en `~/.xonecode/tareas` y el índice
|
|
232
|
+
* en el proyecto, así que una tarea puede nombrar una sesión que alguien borró; crearla la
|
|
233
|
+
* resucitaría en la barra apuntando a un `.jsonl` que ya no está.
|
|
234
|
+
*/
|
|
235
|
+
export declare function marcarTareaDeSesion(raiz: string, id: string, tarea: string): boolean;
|
|
236
|
+
/** Cuántas sesiones rellena UNA pasada de `sembrarConsumosPendientes`. */
|
|
237
|
+
export declare const SESIONES_A_SEMBRAR = 12;
|
|
238
|
+
/** Y por encima de este tamaño no se siembra: la siembra es SÍNCRONA y corre en el bucle de
|
|
239
|
+
* eventos, así que un `.jsonl` enorme congelaría el servidor mientras lo lee. */
|
|
240
|
+
export declare const TOPE_DE_BYTES_DE_SIEMBRA: number;
|
|
241
|
+
/**
|
|
242
|
+
* Rellena el acumulado de las sesiones que ya existían antes de que se estampara. Devuelve
|
|
243
|
+
* cuántas tocó, que es lo que decide si merece la pena reanunciar el alta.
|
|
244
|
+
*
|
|
245
|
+
* Existe porque sin ella la función nace VACÍA en todas las sesiones anteriores: el índice solo
|
|
246
|
+
* aprende el gasto de una sesión cuando alguien la usa, y las que nadie vuelve a abrir se
|
|
247
|
+
* quedarían sin cifra para siempre. Esto es una siembra de PRESENTACIÓN, y no sostiene ninguna
|
|
248
|
+
* corrección: si no llega a una sesión —por el tope de número, por el de bytes o porque su
|
|
249
|
+
* `.jsonl` se fue— lo peor que pasa es que no enseñe cifra hasta su próximo turno, y entonces
|
|
250
|
+
* enseñará la BUENA (`anotarConsumoDeActo` relee cuando no hay acumulado del que partir).
|
|
251
|
+
*
|
|
252
|
+
* **Es MONOTÓNICA, como `marcarTareaDeSesion` y por el mismo motivo**: solo mira las entradas
|
|
253
|
+
* que NO traen acumulado, así que no puede pisar el de ninguna, y correrla dos veces no hace
|
|
254
|
+
* nada la segunda. Devuelve 0 la segunda vez.
|
|
255
|
+
*
|
|
256
|
+
* **Y no da de alta la entrada que falte**, tampoco como la otra: un `.jsonl` sin entrada en el
|
|
257
|
+
* índice es una sesión que alguien borró, y resucitarla la devolvería a la barra apuntando a un
|
|
258
|
+
* fichero que ya no está.
|
|
259
|
+
*
|
|
260
|
+
* Va de las MÁS RECIENTES hacia atrás porque el tope de número tiene que elegir, y lo que se
|
|
261
|
+
* mira en la barra es lo último que se hizo. **UNA sola escritura** al final y no una por
|
|
262
|
+
* entrada: el índice se reescribe entero cada vez.
|
|
263
|
+
*/
|
|
264
|
+
export declare function sembrarConsumosPendientes(raiz: string): number;
|
|
265
|
+
/**
|
|
266
|
+
* Borra una sesión: su `.jsonl` y su entrada del índice. Devuelve si había algo que borrar.
|
|
267
|
+
*
|
|
268
|
+
* El fichero va PRIMERO y el índice después, al revés que en `anotarActo` y por el mismo
|
|
269
|
+
* razonamiento invertido: aquí lo que no se puede quedar a medias es una entrada de índice
|
|
270
|
+
* apuntando a un fichero que ya no está —la sesión saldría en la barra y reventaría al
|
|
271
|
+
* abrirla—. Al revés, un `.jsonl` huérfano no lo ve nadie: la barra se pinta con el índice.
|
|
272
|
+
*
|
|
273
|
+
* Un id desconocido devuelve `false` en vez de lanzar: borrar dos veces la misma sesión —dos
|
|
274
|
+
* pestañas abiertas, un doble clic— no es un error, y lo único que hay que saber es si
|
|
275
|
+
* quedaba algo.
|
|
276
|
+
*/
|
|
277
|
+
export declare function borrarSesion(raiz: string, id: string): boolean;
|
|
278
|
+
/**
|
|
279
|
+
* Le pone nombre a una sesión. Devuelve si existía.
|
|
280
|
+
*
|
|
281
|
+
* Un título vacío se RECHAZA, y no es una validación de formulario: `anotarActo` fija el
|
|
282
|
+
* título en el primer acto de usuario y solo mientras esté vacío (`entrada.titulo === ""`).
|
|
283
|
+
* Dejarlo vacío devolvería la sesión al régimen automático, así que el siguiente turno la
|
|
284
|
+
* rebautizaría con la primera frase y el nombre que puso una persona desaparecería sin más.
|
|
285
|
+
* Se acota a `LARGO_TITULO` como los automáticos: la barra tiene el ancho que tiene.
|
|
286
|
+
*/
|
|
287
|
+
export declare function renombrarSesion(raiz: string, id: string, titulo: string): boolean;
|
|
288
|
+
/**
|
|
289
|
+
* Fija —o quita, con `undefined`— el dispositivo preferido de una sesión.
|
|
290
|
+
*
|
|
291
|
+
* Devuelve si había una entrada que tocar: una sesión cuyo id todavía no existe en el índice
|
|
292
|
+
* (nace al volcar el primer acto) no se puede anotar aquí, y quien llama tiene que guardarlo
|
|
293
|
+
* en memoria hasta entonces — decirlo con un `false` es mejor que crear una entrada a medias
|
|
294
|
+
* que la barra enseñaría como una sesión vacía.
|
|
295
|
+
*/
|
|
296
|
+
export declare function elegirDispositivo(raiz: string, id: string, dispositivo: DispositivoElegido | undefined): boolean;
|
|
297
|
+
/**
|
|
298
|
+
* Fija —o quita, con `undefined`— el esfuerzo de una sesión.
|
|
299
|
+
*
|
|
300
|
+
* Gemela de `elegirDispositivo` hasta en el `false`: una sesión cuyo id todavía no está en
|
|
301
|
+
* el índice (nace al volcar el primer acto) no se puede anotar, y crear ahí una entrada a
|
|
302
|
+
* medias la pintaría en la barra como una sesión vacía. Quien llama la tiene en memoria de
|
|
303
|
+
* todos modos —vive en `EstadoDeSesion`—, así que perder la anotación no pierde la
|
|
304
|
+
* elección: solo no sobrevive a cerrar, que es lo mismo que pasaba antes de esto.
|
|
305
|
+
*/
|
|
306
|
+
/** Anota el motor con el que nace una sesión. Gemela de `elegirEsfuerzo`, `false` incluido. */
|
|
307
|
+
export declare function anotarMotor(raiz: string, id: string, motor: MotorDeAgente): boolean;
|
|
308
|
+
export declare function elegirEsfuerzo(raiz: string, id: string, esfuerzo: Esfuerzo | undefined): boolean;
|
|
309
|
+
/**
|
|
310
|
+
* Fija el modo de escritura de una sesión.
|
|
311
|
+
*
|
|
312
|
+
* Gemela de `elegirEsfuerzo` hasta en el `false`: una sesión cuyo id todavía no está en el
|
|
313
|
+
* índice (nace al volcar el primer acto) no se puede anotar, y crear ahí una entrada a
|
|
314
|
+
* medias la pintaría en la barra como una sesión vacía. Quien llama lo tiene en memoria de
|
|
315
|
+
* todos modos —vive en `EstadoDeSesion`—, así que perder la anotación no pierde la
|
|
316
|
+
* elección: solo no sobrevive a cerrar.
|
|
317
|
+
*
|
|
318
|
+
* **`supervisado` BORRA la clave en vez de escribirla.** Es la omisión, así que dejarla
|
|
319
|
+
* escrita daría dos formas de decir lo mismo, y la que sobra es la que hay que recordar
|
|
320
|
+
* mantener. La misma regla que el `false` que no se guardaba en el ajuste de disco que esto
|
|
321
|
+
* sustituyó.
|
|
322
|
+
*/
|
|
323
|
+
export declare function elegirModo(raiz: string, id: string, modo: ModoDeEscritura): boolean;
|
|
324
|
+
/**
|
|
325
|
+
* Liga una sesión a un ticket de Jira (IXCODE-11).
|
|
326
|
+
*
|
|
327
|
+
* Gemela de `elegirEsfuerzo` hasta en el `false`: una sesión cuyo id todavía no está en el
|
|
328
|
+
* índice (nace al volcar el primer acto) no se puede anotar, y crear ahí una entrada a medias
|
|
329
|
+
* la pintaría en la barra como una sesión vacía. Quien llama lo tiene en memoria de todos
|
|
330
|
+
* modos —vive en `ConsolaDeProyecto`—, así que perder la anotación no pierde la elección: solo
|
|
331
|
+
* no sobrevive a cerrar. A diferencia del esfuerzo, no hay forma de QUITAR el ticket todavía
|
|
332
|
+
* —nadie la pidió—, así que esta función no acepta `undefined`.
|
|
333
|
+
*/
|
|
334
|
+
export declare function anotarTicket(raiz: string, id: string, ticket: TicketDeSesion): boolean;
|
|
335
|
+
/** El índice completo, tal cual lo enseña la lista de sesiones del proyecto. */
|
|
336
|
+
export declare function listarSesiones(raiz: string): EntradaIndice[];
|
|
337
|
+
/** Relee una sesión entera. Una línea que no parsea (fichero truncado a mitad de un
|
|
338
|
+
* `appendFileSync`, por ejemplo por un crash) se SALTA en vez de tumbar la reapertura: una
|
|
339
|
+
* sesión que no se puede reabrir porque una línea se truncó es peor que una que reabre con
|
|
340
|
+
* una línea de menos.
|
|
341
|
+
*/
|
|
342
|
+
export declare function reabrirSesion(raiz: string, id: string): SesionReabierta;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { Writable } from "node:stream";
|
|
2
|
+
import { type AnalisisDeSesion } from "../../core/analisisDeSesion.js";
|
|
3
|
+
import { type ManifiestoDeSoporte } from "../../core/paqueteDeSoporte.js";
|
|
4
|
+
import type { Tarea } from "../../core/tareas.js";
|
|
5
|
+
/** Cuántas sesiones, las más recientes, se analizan y se listan en la pestaña. */
|
|
6
|
+
export declare const SESIONES_EN_SOPORTE = 50;
|
|
7
|
+
/** Todo lo que el servidor sabe de un proyecto y el empaquetador necesita. */
|
|
8
|
+
export interface FuenteDeSoporte {
|
|
9
|
+
raiz: string;
|
|
10
|
+
/** El nombre del proyecto, del listado del SERVIDOR. */
|
|
11
|
+
proyecto: string;
|
|
12
|
+
/** Las tareas de ESTE proyecto (decididas por la raíz). */
|
|
13
|
+
tareas: readonly Tarea[];
|
|
14
|
+
/** Dónde viven los adjuntos de una tarea; ausente = no se exportan. */
|
|
15
|
+
carpetaDeAdjuntosDeTarea?: (id: string) => string | undefined;
|
|
16
|
+
/** Los ids de sesión con un turno en marcha ahora mismo. */
|
|
17
|
+
sesionesEnVuelo: ReadonlySet<string>;
|
|
18
|
+
/** La raíz tiene un turno en marcha (aunque su sesión aún no tenga entrada). */
|
|
19
|
+
raizEnVuelo: boolean;
|
|
20
|
+
/** La versión de xonecode en marcha, si se sabe. */
|
|
21
|
+
version?: string;
|
|
22
|
+
/** El tope de contexto de un modelo («proveedor/modelo»), si se sabe. */
|
|
23
|
+
topeDeContexto?: (modelo: string) => number | undefined;
|
|
24
|
+
}
|
|
25
|
+
export interface FilaDeSoporte {
|
|
26
|
+
id: string;
|
|
27
|
+
titulo: string;
|
|
28
|
+
creada?: string;
|
|
29
|
+
ultimoTurno?: string;
|
|
30
|
+
/** Solo en una tarea. */
|
|
31
|
+
estado?: Tarea["estado"];
|
|
32
|
+
/** Solo en una tarea: la sesión donde corrió. */
|
|
33
|
+
sesion?: string;
|
|
34
|
+
/** Solo en una tarea: cuándo empezó y acabó, lo MISMO que enseña Finalizadas (petición suya: las fechas no coincidían). */
|
|
35
|
+
empezada?: string;
|
|
36
|
+
acabada?: string;
|
|
37
|
+
enVuelo?: true;
|
|
38
|
+
analisis: AnalisisDeSesion;
|
|
39
|
+
}
|
|
40
|
+
export interface ListadoDeSoporte {
|
|
41
|
+
chats: FilaDeSoporte[];
|
|
42
|
+
tareas: FilaDeSoporte[];
|
|
43
|
+
}
|
|
44
|
+
/** Lo que pinta la pestaña: las sesiones más recientes y las tareas, cada una con su análisis. */
|
|
45
|
+
export declare function listarSoporte(fuente: FuenteDeSoporte, limite?: number): Promise<ListadoDeSoporte>;
|
|
46
|
+
/** Quien pedía la descarga se fue a medias: no es un fallo del paquete. */
|
|
47
|
+
export declare class ErrorDeDescargaCortada extends Error {
|
|
48
|
+
constructor();
|
|
49
|
+
}
|
|
50
|
+
export type PedidoDeSoporte = {
|
|
51
|
+
tipo: "proyecto";
|
|
52
|
+
} | {
|
|
53
|
+
tipo: "chat";
|
|
54
|
+
id: string;
|
|
55
|
+
} | {
|
|
56
|
+
tipo: "tarea";
|
|
57
|
+
id: string;
|
|
58
|
+
};
|
|
59
|
+
/** ¿Existe lo pedido? Lo decide el SERVIDOR con su propio índice: el id del cable no compone rutas sin esto. */
|
|
60
|
+
export declare function motivoParaNoExportar(fuente: FuenteDeSoporte, pedido: PedidoDeSoporte): string | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Escribe el paquete pedido en `destino`, entero, y devuelve su manifiesto (que va también
|
|
63
|
+
* DENTRO, como última entrada). Quien llama pone antes las cabeceras y cierra `destino` después.
|
|
64
|
+
*/
|
|
65
|
+
export declare function escribirPaquete(fuente: FuenteDeSoporte, pedido: PedidoDeSoporte, destino: Writable, ahora?: Date): Promise<ManifiestoDeSoporte>;
|