xonecode 0.5.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/web/dist/assets/{index-BB3SamhR.css → index-Boak51UP.css} +1 -1
- package/apps/web/dist/assets/index-Cg28x6nG.js +477 -0
- package/apps/web/dist/assets/{php-D_2--9WK.js → php-Cu6F_QCJ.js} +1 -1
- package/apps/web/dist/assets/{ruby-DSHSDbk1.js → ruby-BiqQPoC6.js} +1 -1
- package/apps/web/dist/index.html +2 -2
- package/dist/agent/{cloudstudioClient.js → cloudstudio/cloudstudioClient.js} +10 -0
- package/dist/agent/cloudstudio/cloudstudioClient.js.map +1 -0
- package/dist/agent/{cloudstudioMcp.js → cloudstudio/cloudstudioMcp.js} +5 -5
- package/dist/agent/cloudstudio/cloudstudioMcp.js.map +1 -0
- package/dist/agent/{descarga.js → cloudstudio/descarga.js} +17 -7
- package/dist/agent/cloudstudio/descarga.js.map +1 -0
- package/dist/agent/cloudstudio/manifiesto.js.map +1 -0
- package/dist/agent/cloudstudio/ramaActiva.js +11 -0
- package/dist/agent/cloudstudio/ramaActiva.js.map +1 -0
- package/dist/agent/{subida.js → cloudstudio/subida.js} +16 -7
- package/dist/agent/cloudstudio/subida.js.map +1 -0
- package/dist/agent/{zip.js → cloudstudio/zip.js} +1 -1
- package/dist/agent/cloudstudio/zip.js.map +1 -0
- package/dist/agent/{authEnDisco.js → config/authEnDisco.js} +3 -3
- package/dist/agent/config/authEnDisco.js.map +1 -0
- package/dist/agent/{catalogoModelos.js → config/catalogoModelos.js} +47 -1
- package/dist/agent/config/catalogoModelos.js.map +1 -0
- package/dist/agent/{configEnDisco.js → config/configEnDisco.js} +6 -6
- package/dist/agent/config/configEnDisco.js.map +1 -0
- package/dist/agent/{crearProyecto.js → config/crearProyecto.js} +2 -2
- package/dist/agent/config/crearProyecto.js.map +1 -0
- package/dist/agent/config/entorno.js.map +1 -0
- package/dist/agent/config/gemini.js.map +1 -0
- package/dist/agent/config/modelos.js +235 -0
- package/dist/agent/config/modelos.js.map +1 -0
- package/dist/agent/{modelosDeMotor.js → config/modelosDeMotor.js} +1 -1
- package/dist/agent/config/modelosDeMotor.js.map +1 -0
- package/dist/agent/config/mudanzaEnDisco.js +121 -0
- package/dist/agent/config/mudanzaEnDisco.js.map +1 -0
- package/dist/agent/{persona.js → config/persona.js} +1 -1
- package/dist/agent/config/persona.js.map +1 -0
- package/dist/agent/config/selectorEnMaquina.js +45 -0
- package/dist/agent/config/selectorEnMaquina.js.map +1 -0
- package/dist/agent/{settingsEnDisco.js → config/settingsEnDisco.js} +37 -2
- package/dist/agent/config/settingsEnDisco.js.map +1 -0
- package/dist/agent/{versionEnDisco.js → config/versionEnDisco.js} +8 -4
- package/dist/agent/config/versionEnDisco.js.map +1 -0
- package/dist/agent/dispositivos/arranqueDeEmulador.js +146 -0
- package/dist/agent/dispositivos/arranqueDeEmulador.js.map +1 -0
- package/dist/agent/{dispositivosEnMaquina.js → dispositivos/dispositivosEnMaquina.js} +93 -6
- package/dist/agent/dispositivos/dispositivosEnMaquina.js.map +1 -0
- package/dist/agent/dispositivos/hotswap.js.map +1 -0
- package/dist/agent/dispositivos/instalacionEnMaquina.js.map +1 -0
- package/dist/agent/dispositivos/juezVisual.js +152 -0
- package/dist/agent/dispositivos/juezVisual.js.map +1 -0
- package/dist/agent/{lanzamientoEnMaquina.js → dispositivos/lanzamientoEnMaquina.js} +1 -1
- package/dist/agent/dispositivos/lanzamientoEnMaquina.js.map +1 -0
- package/dist/agent/{paqueteDelProyecto.js → dispositivos/paqueteDelProyecto.js} +5 -5
- package/dist/agent/dispositivos/paqueteDelProyecto.js.map +1 -0
- package/dist/agent/dispositivos/procesosEnMaquina.js.map +1 -0
- package/dist/agent/dispositivos/sensorDeArranque.js +154 -0
- package/dist/agent/dispositivos/sensorDeArranque.js.map +1 -0
- package/dist/agent/exportarPdf.js +140 -0
- package/dist/agent/exportarPdf.js.map +1 -0
- package/dist/agent/{arbolDeProyecto.js → grafo/arbolDeProyecto.js} +2 -2
- package/dist/agent/grafo/arbolDeProyecto.js.map +1 -0
- package/dist/agent/{artefactosEnDisco.js → grafo/artefactosEnDisco.js} +2 -2
- package/dist/agent/grafo/artefactosEnDisco.js.map +1 -0
- package/dist/agent/{busquedaRegex.js → grafo/busquedaRegex.js} +41 -1
- package/dist/agent/grafo/busquedaRegex.js.map +1 -0
- package/dist/agent/grafo/criticaVisual.js +115 -0
- package/dist/agent/grafo/criticaVisual.js.map +1 -0
- package/dist/agent/grafo/excluirTools.js +82 -0
- package/dist/agent/grafo/excluirTools.js.map +1 -0
- package/dist/agent/{memoriaDeProyecto.js → grafo/memoriaDeProyecto.js} +1 -1
- package/dist/agent/grafo/memoriaDeProyecto.js.map +1 -0
- package/dist/agent/grafo/navegacionXone.js +231 -0
- package/dist/agent/grafo/navegacionXone.js.map +1 -0
- package/dist/agent/{perfiles.js → grafo/perfiles.js} +96 -10
- package/dist/agent/grafo/perfiles.js.map +1 -0
- package/dist/agent/{proyecto.js → grafo/proyecto.js} +274 -24
- package/dist/agent/grafo/proyecto.js.map +1 -0
- package/dist/agent/grafo/skills.js +425 -0
- package/dist/agent/grafo/skills.js.map +1 -0
- package/dist/agent/grafo/xoneAgent.js +566 -0
- package/dist/agent/grafo/xoneAgent.js.map +1 -0
- package/dist/agent/navegacion/estilosEnDisco.js +110 -0
- package/dist/agent/navegacion/estilosEnDisco.js.map +1 -0
- package/dist/agent/navegacion/hechosEnDisco.js +26 -0
- package/dist/agent/navegacion/hechosEnDisco.js.map +1 -0
- package/dist/agent/navegacion/indiceEnDisco.js +36 -0
- package/dist/agent/navegacion/indiceEnDisco.js.map +1 -0
- package/dist/agent/navegacion/modeloDeProyecto.js +228 -0
- package/dist/agent/navegacion/modeloDeProyecto.js.map +1 -0
- package/dist/agent/raizDelPaquete.js +56 -0
- package/dist/agent/raizDelPaquete.js.map +1 -0
- package/dist/agent/{checkpointer.js → sesiones/checkpointer.js} +1 -1
- package/dist/agent/sesiones/checkpointer.js.map +1 -0
- package/dist/agent/sesiones/git.js.map +1 -0
- package/dist/agent/{gitSync.js → sesiones/gitSync.js} +3 -3
- package/dist/agent/sesiones/gitSync.js.map +1 -0
- package/dist/agent/{sesionGit.js → sesiones/sesionGit.js} +2 -2
- package/dist/agent/sesiones/sesionGit.js.map +1 -0
- package/dist/agent/subagentes/agentesEnDisco.js +818 -0
- package/dist/agent/subagentes/agentesEnDisco.js.map +1 -0
- package/dist/agent/subagentes/consumoExterno.js.map +1 -0
- package/dist/agent/subagentes/escrituraDeCodex.js.map +1 -0
- package/dist/agent/{escrituraDeOpencode.js → subagentes/escrituraDeOpencode.js} +1 -1
- package/dist/agent/subagentes/escrituraDeOpencode.js.map +1 -0
- package/dist/agent/{escrituraExterna.js → subagentes/escrituraExterna.js} +59 -6
- package/dist/agent/subagentes/escrituraExterna.js.map +1 -0
- package/dist/agent/subagentes/pluginDeSkills.js +99 -0
- package/dist/agent/subagentes/pluginDeSkills.js.map +1 -0
- package/dist/agent/subagentes/subagenteCodex.js.map +1 -0
- package/dist/agent/{subagenteExterno.js → subagentes/subagenteExterno.js} +48 -0
- package/dist/agent/subagentes/subagenteExterno.js.map +1 -0
- package/dist/agent/{subagenteOpencode.js → subagentes/subagenteOpencode.js} +53 -1
- package/dist/agent/subagentes/subagenteOpencode.js.map +1 -0
- package/dist/agent/{aumentador.js → tareas/aumentador.js} +2 -2
- package/dist/agent/tareas/aumentador.js.map +1 -0
- package/dist/agent/{juezDeTarea.js → tareas/juezDeTarea.js} +6 -6
- package/dist/agent/tareas/juezDeTarea.js.map +1 -0
- package/dist/agent/{tareasEnDisco.js → tareas/tareasEnDisco.js} +53 -4
- package/dist/agent/tareas/tareasEnDisco.js.map +1 -0
- package/dist/agent/{diagnosticoDeTools.js → turno/diagnosticoDeTools.js} +5 -1
- package/dist/agent/turno/diagnosticoDeTools.js.map +1 -0
- package/dist/agent/{guionizado.js → turno/guionizado.js} +1 -1
- package/dist/agent/turno/guionizado.js.map +1 -0
- package/dist/agent/turno/informeDeTraza.js +245 -0
- package/dist/agent/turno/informeDeTraza.js.map +1 -0
- package/dist/agent/turno/inspectorDePrompt.js +205 -0
- package/dist/agent/turno/inspectorDePrompt.js.map +1 -0
- package/dist/agent/{instantanea.js → turno/instantanea.js} +7 -2
- package/dist/agent/turno/instantanea.js.map +1 -0
- package/dist/agent/{interrupts.js → turno/interrupts.js} +2 -2
- package/dist/agent/turno/interrupts.js.map +1 -0
- package/dist/agent/turno/mensajes.js.map +1 -0
- package/dist/agent/turno/normalizar.js.map +1 -0
- package/dist/agent/{puente.js → turno/puente.js} +71 -4
- package/dist/agent/turno/puente.js.map +1 -0
- package/dist/agent/turno/resumenDeContexto.js +260 -0
- package/dist/agent/turno/resumenDeContexto.js.map +1 -0
- package/dist/agent/{resumenDeTool.js → turno/resumenDeTool.js} +33 -0
- package/dist/agent/turno/resumenDeTool.js.map +1 -0
- package/dist/agent/turno/rubrica.js +91 -0
- package/dist/agent/turno/rubrica.js.map +1 -0
- package/dist/agent/turno/textoDeTool.js.map +1 -0
- package/dist/agent/{turnoReal.js → turno/turnoReal.js} +210 -25
- package/dist/agent/turno/turnoReal.js.map +1 -0
- package/dist/agent/turno/verificador.js.map +1 -0
- package/dist/cli/config.js +1 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/consola.js +72 -9
- package/dist/cli/consola.js.map +1 -1
- package/dist/cli/describe.js +2 -2
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/doctor.js +1 -1
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/fuentesDeDisco.js +29 -0
- package/dist/cli/fuentesDeDisco.js.map +1 -0
- package/dist/cli/main.js +87 -31
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/run.js +40 -10
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/traza.js +48 -0
- package/dist/cli/traza.js.map +1 -0
- package/dist/cli/tui/correrTui.js +4 -4
- package/dist/cli/tui/correrTui.js.map +1 -1
- package/dist/cli/verify.js +1 -1
- package/dist/cli/verify.js.map +1 -1
- package/dist/core/actos.js +1 -1
- package/dist/core/adjuntos.js +2 -2
- package/dist/core/agentes.js +247 -7
- package/dist/core/agentes.js.map +1 -1
- package/dist/core/artefactos.js +4 -4
- package/dist/core/config.js +1 -1
- package/dist/core/contextos.js +12 -1
- package/dist/core/contextos.js.map +1 -1
- package/dist/core/descargas.js +1 -1
- package/dist/core/dispositivos.js +53 -3
- package/dist/core/dispositivos.js.map +1 -1
- package/dist/core/esfuerzo.js +141 -0
- package/dist/core/esfuerzo.js.map +1 -0
- package/dist/core/esqueleto.js +1 -1
- package/dist/core/estilos.js +78 -0
- package/dist/core/estilos.js.map +1 -0
- package/dist/core/exportacion.js +140 -0
- package/dist/core/exportacion.js.map +1 -0
- package/dist/core/hechosDelProyecto.js +87 -0
- package/dist/core/hechosDelProyecto.js.map +1 -0
- package/dist/core/logDeDispositivo.js +143 -0
- package/dist/core/logDeDispositivo.js.map +1 -0
- package/dist/core/modelos.js +48 -3
- package/dist/core/modelos.js.map +1 -1
- package/dist/core/mudanzaDeWorkspace.js +93 -0
- package/dist/core/mudanzaDeWorkspace.js.map +1 -0
- package/dist/core/navegacion.js +134 -0
- package/dist/core/navegacion.js.map +1 -0
- package/dist/core/notify.js +5 -0
- package/dist/core/notify.js.map +1 -1
- package/dist/core/planDeSubida.js +1 -1
- package/dist/core/planes.js +70 -0
- package/dist/core/planes.js.map +1 -0
- package/dist/core/ports.js +4 -0
- package/dist/core/ports.js.map +1 -1
- package/dist/core/rubrica.js +90 -0
- package/dist/core/rubrica.js.map +1 -0
- package/dist/core/selectorDeCarpeta.js +87 -0
- package/dist/core/selectorDeCarpeta.js.map +1 -0
- package/dist/core/settings.js +56 -7
- package/dist/core/settings.js.map +1 -1
- package/dist/core/shellDeAgente.js +144 -0
- package/dist/core/shellDeAgente.js.map +1 -0
- package/dist/core/skills.js +158 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/topeAgotado.js +69 -0
- package/dist/core/topeAgotado.js.map +1 -0
- package/dist/core/zipDeSkill.js +107 -0
- package/dist/core/zipDeSkill.js.map +1 -0
- package/dist/web/servidor/arranque.js +853 -54
- package/dist/web/servidor/arranque.js.map +1 -1
- package/dist/web/servidor/corredorDeTareas.js +3 -3
- package/dist/web/servidor/corredorDeTareas.js.map +1 -1
- package/dist/web/servidor/sesiones.js +34 -6
- package/dist/web/servidor/sesiones.js.map +1 -1
- package/dist/web/servidor/transporte.js +1 -1
- package/dist/web/servidor/transporte.js.map +1 -1
- package/dist/web/servidor/vestibulo.js +62 -13
- package/dist/web/servidor/vestibulo.js.map +1 -1
- package/package.json +7 -4
- package/skills/archify/SKILL.md +25 -2
- package/skills/artifacts-builder/SKILL.md +23 -0
- package/skills/xone-hotswap/SKILL.md +96 -0
- package/skills/xone-hotswap/scripts/xone-arrancar-android +202 -0
- package/skills/xone-hotswap/scripts/xone-arrancar-ios +85 -0
- package/skills/xone-hotswap/scripts/xone-captura-android +93 -0
- package/skills/xone-hotswap/scripts/xone-desplegar-android +439 -0
- package/skills/xone-hotswap/scripts/xone-hotswap +201 -0
- package/skills/xone-hotswap/scripts/xone-log-android +102 -0
- package/skills/xone-hotswap/scripts/xone-reiniciar-android +132 -0
- package/skills/xone-plan-builder/SKILL.md +22 -4
- package/skills/xone-spec-builder/SKILL.md +37 -7
- package/apps/web/dist/assets/index-CFYAoHdw.js +0 -477
- package/dist/agent/agentesEnDisco.js +0 -539
- package/dist/agent/agentesEnDisco.js.map +0 -1
- package/dist/agent/arbolDeProyecto.js.map +0 -1
- package/dist/agent/artefactosEnDisco.js.map +0 -1
- package/dist/agent/aumentador.js.map +0 -1
- package/dist/agent/authEnDisco.js.map +0 -1
- package/dist/agent/busquedaRegex.js.map +0 -1
- package/dist/agent/catalogoModelos.js.map +0 -1
- package/dist/agent/checkpointer.js.map +0 -1
- package/dist/agent/cloudstudioClient.js.map +0 -1
- package/dist/agent/cloudstudioMcp.js.map +0 -1
- package/dist/agent/configEnDisco.js.map +0 -1
- package/dist/agent/consumoExterno.js.map +0 -1
- package/dist/agent/crearProyecto.js.map +0 -1
- package/dist/agent/descarga.js.map +0 -1
- package/dist/agent/diagnosticoDeTools.js.map +0 -1
- package/dist/agent/dispositivosEnMaquina.js.map +0 -1
- package/dist/agent/entorno.js.map +0 -1
- package/dist/agent/escrituraDeCodex.js.map +0 -1
- package/dist/agent/escrituraDeOpencode.js.map +0 -1
- package/dist/agent/escrituraExterna.js.map +0 -1
- package/dist/agent/gemini.js.map +0 -1
- package/dist/agent/git.js.map +0 -1
- package/dist/agent/gitSync.js.map +0 -1
- package/dist/agent/guionizado.js.map +0 -1
- package/dist/agent/hotswap.js.map +0 -1
- package/dist/agent/instalacionEnMaquina.js.map +0 -1
- package/dist/agent/instantanea.js.map +0 -1
- package/dist/agent/interrupts.js.map +0 -1
- package/dist/agent/juezDeTarea.js.map +0 -1
- package/dist/agent/lanzamientoEnMaquina.js.map +0 -1
- package/dist/agent/manifiesto.js.map +0 -1
- package/dist/agent/memoriaDeProyecto.js.map +0 -1
- package/dist/agent/mensajes.js.map +0 -1
- package/dist/agent/modelos.js +0 -130
- package/dist/agent/modelos.js.map +0 -1
- package/dist/agent/modelosDeMotor.js.map +0 -1
- package/dist/agent/normalizar.js.map +0 -1
- package/dist/agent/paqueteDelProyecto.js.map +0 -1
- package/dist/agent/perfiles.js.map +0 -1
- package/dist/agent/persona.js.map +0 -1
- package/dist/agent/procesosEnMaquina.js.map +0 -1
- package/dist/agent/proyecto.js.map +0 -1
- package/dist/agent/puente.js.map +0 -1
- package/dist/agent/resumenDeContexto.js +0 -30
- package/dist/agent/resumenDeContexto.js.map +0 -1
- package/dist/agent/resumenDeTool.js.map +0 -1
- package/dist/agent/sesionGit.js.map +0 -1
- package/dist/agent/settingsEnDisco.js.map +0 -1
- package/dist/agent/skills.js +0 -65
- package/dist/agent/skills.js.map +0 -1
- package/dist/agent/subagenteCodex.js.map +0 -1
- package/dist/agent/subagenteExterno.js.map +0 -1
- package/dist/agent/subagenteOpencode.js.map +0 -1
- package/dist/agent/subida.js.map +0 -1
- package/dist/agent/tareasEnDisco.js.map +0 -1
- package/dist/agent/textoDeTool.js.map +0 -1
- package/dist/agent/turnoReal.js.map +0 -1
- package/dist/agent/verificador.js.map +0 -1
- package/dist/agent/versionEnDisco.js.map +0 -1
- package/dist/agent/xoneAgent.js +0 -347
- package/dist/agent/xoneAgent.js.map +0 -1
- package/dist/agent/zip.js.map +0 -1
- /package/dist/agent/{manifiesto.js → cloudstudio/manifiesto.js} +0 -0
- /package/dist/agent/{entorno.js → config/entorno.js} +0 -0
- /package/dist/agent/{gemini.js → config/gemini.js} +0 -0
- /package/dist/agent/{hotswap.js → dispositivos/hotswap.js} +0 -0
- /package/dist/agent/{instalacionEnMaquina.js → dispositivos/instalacionEnMaquina.js} +0 -0
- /package/dist/agent/{procesosEnMaquina.js → dispositivos/procesosEnMaquina.js} +0 -0
- /package/dist/agent/{git.js → sesiones/git.js} +0 -0
- /package/dist/agent/{consumoExterno.js → subagentes/consumoExterno.js} +0 -0
- /package/dist/agent/{escrituraDeCodex.js → subagentes/escrituraDeCodex.js} +0 -0
- /package/dist/agent/{subagenteCodex.js → subagentes/subagenteCodex.js} +0 -0
- /package/dist/agent/{mensajes.js → turno/mensajes.js} +0 -0
- /package/dist/agent/{normalizar.js → turno/normalizar.js} +0 -0
- /package/dist/agent/{textoDeTool.js → turno/textoDeTool.js} +0 -0
- /package/dist/agent/{verificador.js → turno/verificador.js} +0 -0
package/dist/core/modelos.js
CHANGED
|
@@ -53,7 +53,7 @@ export function idDeProveedorPersonalizado(slug) {
|
|
|
53
53
|
/**
|
|
54
54
|
* Los hosts en los que se admite `http://` sin cifrar.
|
|
55
55
|
*
|
|
56
|
-
* Copiada de `agent/cloudstudioMcp.ts#LOOPBACK`, que es la misma decisión por el mismo
|
|
56
|
+
* Copiada de `agent/cloudstudio/cloudstudioMcp.ts#LOOPBACK`, que es la misma decisión por el mismo
|
|
57
57
|
* motivo, y puesta aquí porque `core/` no puede importar de `agent/` (sí al revés): la
|
|
58
58
|
* regla canónica vive ahora en datos puros y aquel módulo tira de ésta.
|
|
59
59
|
*/
|
|
@@ -89,18 +89,30 @@ export function motivoDeEndpointInaceptable(valor) {
|
|
|
89
89
|
}
|
|
90
90
|
export const PROVEEDORES = [
|
|
91
91
|
"gemini", "openai", "anthropic", "ollama", "ollama-cloud",
|
|
92
|
-
"nvidia", "groq", "xai",
|
|
92
|
+
"nvidia", "groq", "xai", "deepseek",
|
|
93
93
|
];
|
|
94
94
|
export const COMPATIBLES_OPENAI = {
|
|
95
95
|
nvidia: { baseUrl: "https://integrate.api.nvidia.com/v1", variable: "NVIDIA_API_KEY" },
|
|
96
96
|
groq: { baseUrl: "https://api.groq.com/openai/v1", variable: "GROQ_API_KEY" },
|
|
97
97
|
xai: { baseUrl: "https://api.x.ai/v1", variable: "XAI_API_KEY" },
|
|
98
|
+
/**
|
|
99
|
+
* DeepSeek. La base es `https://api.deepseek.com` y el `/v1` es el alias que publican
|
|
100
|
+
* para compatibilidad con el SDK de OpenAI; se usa el `/v1` porque es lo que esta tabla
|
|
101
|
+
* significa —la URL contra la que `ChatOpenAI` cuelga `/chat/completions` y el catálogo
|
|
102
|
+
* cuelga `/models`— y porque así la fila se lee igual que las otras tres.
|
|
103
|
+
*
|
|
104
|
+
* MEDIDO y no leído: `GET https://api.deepseek.com/v1/models` contesta **401**
|
|
105
|
+
* («Authentication Fails»), o sea que la ruta existe y solo falta la clave. Un 404 habría
|
|
106
|
+
* significado que el catálogo hay que pedirlo sin el `/v1`, y eso no se puede saber de la
|
|
107
|
+
* documentación, que no dice la ruta completa.
|
|
108
|
+
*/
|
|
109
|
+
deepseek: { baseUrl: "https://api.deepseek.com/v1", variable: "DEEPSEEK_API_KEY" },
|
|
98
110
|
};
|
|
99
111
|
/**
|
|
100
112
|
* La variable de entorno donde vive la clave de cada proveedor, y el ÚNICO sitio donde
|
|
101
113
|
* se escribe.
|
|
102
114
|
*
|
|
103
|
-
* Hubo cuatro copias de esta tabla —`agent/configEnDisco.ts`, `agent/catalogoModelos.ts`,
|
|
115
|
+
* Hubo cuatro copias de esta tabla —`agent/config/configEnDisco.ts`, `agent/config/catalogoModelos.ts`,
|
|
104
116
|
* `cli/config.ts` y `cli/consola.ts`—, duplicadas para que `cli/` no tirase de `agent/`
|
|
105
117
|
* por un mapa de cuatro líneas. Ya habían divergido: la de `cli/config.ts` no tenía
|
|
106
118
|
* `OLLAMA_API_KEY`, así que `/config` decía «sin credencial» de Ollama Cloud aunque
|
|
@@ -138,6 +150,7 @@ const NOMBRES = {
|
|
|
138
150
|
nvidia: "NVIDIA",
|
|
139
151
|
groq: "Groq",
|
|
140
152
|
xai: "xAI",
|
|
153
|
+
deepseek: "DeepSeek",
|
|
141
154
|
};
|
|
142
155
|
/**
|
|
143
156
|
* Cómo se escribe un proveedor. Para uno personalizado, el nombre que puso quien lo dio
|
|
@@ -314,4 +327,36 @@ export function pideThinkingAdaptativo(proveedor, modelo) {
|
|
|
314
327
|
return false;
|
|
315
328
|
return FAMILIAS_CON_ADAPTATIVO_A_MANO.some((prefijo) => modelo.startsWith(prefijo));
|
|
316
329
|
}
|
|
330
|
+
/**
|
|
331
|
+
* ¿Este modelo ACEPTA que se le pida `thinking: {type:"adaptive"}`?
|
|
332
|
+
*
|
|
333
|
+
* Es la hermana de `pideThinkingAdaptativo` y contesta otra pregunta. Aquélla dice si hace
|
|
334
|
+
* falta pedirlo —o sea, si omitirlo significa «no pienses»—; ésta dice si se PUEDE pedir
|
|
335
|
+
* sin que sea un 400. Son distintas justo en la generación 5, que ya corre adaptativo por
|
|
336
|
+
* omisión: no hace falta pedírselo, pero admite que se le pida.
|
|
337
|
+
*
|
|
338
|
+
* Existe por un acoplamiento MEDIDO contra el validador del propio cliente
|
|
339
|
+
* (`@langchain/anthropic` 1.5.2, `validateInvocationParamCompatibility`): con un `effort`
|
|
340
|
+
* puesto, `claude-opus-5` RECHAZA la combinación si el `thinking` no va explícito —
|
|
341
|
+
* «thinking.type="disabled" is not supported for claude-opus-5 with
|
|
342
|
+
* outputConfig.effort="max"»—. O sea que pedir esfuerzo sin pedir razonamiento es una
|
|
343
|
+
* petición que ni sale de esta máquina. Y la recomendación de la casa va en la misma
|
|
344
|
+
* dirección: el esfuerzo se combina con el razonamiento adaptativo.
|
|
345
|
+
*
|
|
346
|
+
* **Opus 4.5 NO está**, aunque el validador local lo deje pasar: ese validador solo mira la
|
|
347
|
+
* forma, y el adaptativo llegó en 4.6 — mandárselo sería un 400 en el servidor, que es el
|
|
348
|
+
* único sitio donde ya no hay red que lo pare.
|
|
349
|
+
*/
|
|
350
|
+
const FAMILIAS_QUE_ACEPTAN_ADAPTATIVO = [
|
|
351
|
+
...FAMILIAS_CON_ADAPTATIVO_A_MANO,
|
|
352
|
+
"claude-opus-5",
|
|
353
|
+
"claude-sonnet-5",
|
|
354
|
+
"claude-fable",
|
|
355
|
+
"claude-mythos",
|
|
356
|
+
];
|
|
357
|
+
export function aceptaThinkingAdaptativo(proveedor, modelo) {
|
|
358
|
+
if (proveedor !== "anthropic")
|
|
359
|
+
return false;
|
|
360
|
+
return FAMILIAS_QUE_ACEPTAN_ADAPTATIVO.some((prefijo) => modelo.startsWith(prefijo));
|
|
361
|
+
}
|
|
317
362
|
//# sourceMappingURL=modelos.js.map
|
package/dist/core/modelos.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modelos.js","sourceRoot":"","sources":["../../src/core/modelos.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,OAAO,GAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC;AAqBnF,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAE/C;;;;;;;;GAQG;AACH,MAAM,IAAI,GAAG,2BAA2B,CAAC;AAEzC,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,6BAA6B,CAAC;IACtD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,wHAAwH,CAAC;IAClI,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,MAAM;SACV,SAAS,CAAC,KAAK,CAAC;SAChB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,OAAO,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC;WACzC,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,KAAK,SAAS,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAiC;IAC/D,OAAO,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,OAAO,GAAG,qBAAqB,GAAG,IAAI,EAA4B,CAAC;AACrE,CAAC;AAYD;;;;;;GAMG;AACH,MAAM,QAAQ,GAAwB,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAE1F;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,6DAA6D,CAAC;IACvE,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAC/C,OAAO,8EAA8E,CAAC;IACxF,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7E,OAAO,iGAAiG,CAAC;AAC3G,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAgC;IACtD,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc;IACzD,QAAQ,EAAE,MAAM,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"modelos.js","sourceRoot":"","sources":["../../src/core/modelos.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { posix } from "node:path";
|
|
2
|
+
import { rutaDeWorkspace } from "./settings.js";
|
|
3
|
+
/**
|
|
4
|
+
* El literal que vivía en MEDIO del reparto: `<base>/<entorno>/workspace/<proyecto>`.
|
|
5
|
+
*
|
|
6
|
+
* Vive aquí y no en `settings.ts` a propósito: `rutaDeWorkspace` ya no lo compone, y
|
|
7
|
+
* dejarlo allí sería una constante de producción que solo usa la mudanza. Cuando no quede
|
|
8
|
+
* nadie con el reparto viejo en disco, este fichero entero se va de una pieza.
|
|
9
|
+
*/
|
|
10
|
+
export const CARPETA_DEL_REPARTO_VIEJO = "workspace";
|
|
11
|
+
/** Un segmento que no puede salirse de su carpeta ni inventar niveles. */
|
|
12
|
+
function esSegmentoLlano(valor) {
|
|
13
|
+
return valor !== "" && valor !== "." && valor !== ".." && !/[/\\]/.test(valor);
|
|
14
|
+
}
|
|
15
|
+
function normalizar(ruta) {
|
|
16
|
+
return posix.normalize(ruta).replace(/\/+$/, "");
|
|
17
|
+
}
|
|
18
|
+
/** ¿Son la misma ruta, o una es antepasada de la otra? Por SEGMENTOS, nunca por texto. */
|
|
19
|
+
function unaCuelgaDeLaOtra(a, b) {
|
|
20
|
+
const uno = normalizar(a).split("/");
|
|
21
|
+
const otro = normalizar(b).split("/");
|
|
22
|
+
const corto = uno.length <= otro.length ? uno : otro;
|
|
23
|
+
const largo = corto === uno ? otro : uno;
|
|
24
|
+
return corto.every((seg, i) => largo[i] === seg);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Qué copias locales siguen en el reparto viejo y adónde van.
|
|
28
|
+
*
|
|
29
|
+
* **Por PROYECTO y no por entorno.** Mover la carpeta `<entorno>/workspace` entera parece
|
|
30
|
+
* más barato, pero no vale en el caso de quien ya tenía `settings.workspace` configurado:
|
|
31
|
+
* ahí el destino (`<workspace>/<entorno>`) es el PADRE del origen, y la mudanza de una
|
|
32
|
+
* pieza sería mover una carpeta encima de sí misma. Proyecto a proyecto funciona en los
|
|
33
|
+
* dos casos con un solo camino.
|
|
34
|
+
*
|
|
35
|
+
* **Un destino que ya existe NUNCA se pisa**, y se cuenta aparte en `chocadas` en vez de
|
|
36
|
+
* callarse: en esa carpeta hay una historia de git, unas sesiones y un checkpoint, y dos
|
|
37
|
+
* copias del mismo proyecto sin que nadie lo diga son peor que una mudanza que no se hizo.
|
|
38
|
+
*
|
|
39
|
+
* Nada de esto toca el disco: quien llama decide, mueve y lo cuenta.
|
|
40
|
+
*/
|
|
41
|
+
export function mudanzasPendientes(opciones) {
|
|
42
|
+
const mudanzas = [];
|
|
43
|
+
const chocadas = [];
|
|
44
|
+
for (const entorno of opciones.entornos) {
|
|
45
|
+
if (!esSegmentoLlano(entorno))
|
|
46
|
+
continue;
|
|
47
|
+
const vieja = posix.join(opciones.legado, entorno, CARPETA_DEL_REPARTO_VIEJO);
|
|
48
|
+
if (!opciones.existe(vieja))
|
|
49
|
+
continue;
|
|
50
|
+
for (const proyecto of opciones.listar(vieja)) {
|
|
51
|
+
if (!esSegmentoLlano(proyecto))
|
|
52
|
+
continue;
|
|
53
|
+
const desde = posix.join(vieja, proyecto);
|
|
54
|
+
const hacia = rutaDeWorkspace(opciones.workspace, entorno, proyecto);
|
|
55
|
+
// El degenerado: un proyecto que se llame «workspace» deja `desde` COLGANDO de
|
|
56
|
+
// `hacia` (`…/webstudio/workspace/workspace` → `…/webstudio/workspace`), o sea una
|
|
57
|
+
// carpeta que se muda encima de su propio padre. No es un choque —contarlo ahí diría
|
|
58
|
+
// que hay dos copias— : es que no hay nada que mudar.
|
|
59
|
+
if (unaCuelgaDeLaOtra(desde, hacia))
|
|
60
|
+
continue;
|
|
61
|
+
(opciones.existe(hacia) ? chocadas : mudanzas).push({ entorno, proyecto, desde, hacia });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return { mudanzas, chocadas };
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Una ruta absoluta ya grabada en disco, traducida al reparto de ahora — o AUSENTE si esta
|
|
68
|
+
* mudanza no la toca.
|
|
69
|
+
*
|
|
70
|
+
* Existe porque hay dos almacenes con raíces absolutas escritas: `proyecto.raiz` del índice
|
|
71
|
+
* de tareas (`~/.xonecode/tareas/indice.json`) y las claves de `settings.sinAprobacion`. Sin
|
|
72
|
+
* reescribirlas, una tarea pendiente abriría una carpeta que ya no está y una autorización
|
|
73
|
+
* de escritura sin preguntar dejaría de aplicarse en silencio — que es la dirección segura,
|
|
74
|
+
* pero es un ajuste que el usuario dio por puesto.
|
|
75
|
+
*
|
|
76
|
+
* Se compara por SEGMENTOS y no por prefijo de texto, la misma trampa que `dentroDelWorkspace`:
|
|
77
|
+
* `…/AppDemoViejo` empieza por `…/AppDemo` y no tiene nada que ver. Y ausente significa «esto
|
|
78
|
+
* no lo mudé yo», que es distinto de «no cambia»: quien llama necesita saber si tocó la
|
|
79
|
+
* entrada para decidir si reescribe el fichero.
|
|
80
|
+
*/
|
|
81
|
+
export function rutaMudada(ruta, mudanzas) {
|
|
82
|
+
const partes = normalizar(ruta).split("/");
|
|
83
|
+
for (const mudanza of mudanzas) {
|
|
84
|
+
const origen = normalizar(mudanza.desde).split("/");
|
|
85
|
+
if (partes.length < origen.length)
|
|
86
|
+
continue;
|
|
87
|
+
if (!origen.every((seg, i) => partes[i] === seg))
|
|
88
|
+
continue;
|
|
89
|
+
return posix.join(normalizar(mudanza.hacia), ...partes.slice(origen.length));
|
|
90
|
+
}
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=mudanzaDeWorkspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mudanzaDeWorkspace.js","sourceRoot":"","sources":["../../src/core/mudanzaDeWorkspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El índice de navegación XOne: qué hay en el proyecto y qué apunta a qué.
|
|
3
|
+
*
|
|
4
|
+
* **Este módulo es PURO**, y esa es la mitad del diseño. Quién lee el disco y quién entiende
|
|
5
|
+
* el XML es `agent/navegacion/` apoyándose en `xone-linter`; aquí solo vive la forma de las
|
|
6
|
+
* respuestas y cómo se consultan. Así la regla se prueba sin un proyecto delante, y el día
|
|
7
|
+
* que la fuente del modelo cambie no cambia nada de esto.
|
|
8
|
+
*
|
|
9
|
+
* **Por qué existe.** Medido sobre un proyecto real (AppDemo, 41 `.xne`): contestar «¿qué
|
|
10
|
+
* colecciones tiene el proyecto?» leyendo ficheros cuesta unos 18.000 tokens —son todos los
|
|
11
|
+
* `.xne`—, y contestarla desde el modelo cuesta 141. La pregunta cara no es leer un fichero
|
|
12
|
+
* (un `.xne` son un par de kilobytes): es **no saber cuál de los cuarenta y uno leer**. Eso
|
|
13
|
+
* es lo que esto contesta, y por eso la primera versión va POR NOMBRE y no por posición.
|
|
14
|
+
*
|
|
15
|
+
* **Por qué no por posición todavía.** Un editor pregunta «¿qué hay bajo el cursor?»; un
|
|
16
|
+
* agente no tiene cursor, tiene nombres. Y saber la posición exacta de un atributo exige
|
|
17
|
+
* conservar su rango al parsear, que hoy `xone-linter` no hace (su `loc()` devuelve solo el
|
|
18
|
+
* fichero). Lo caro está justo en la mitad que no hace falta para lo que se ha medido.
|
|
19
|
+
*
|
|
20
|
+
* **Las rutas que entran aquí son VIRTUALES** (`/Clientes.xne`), nunca de la máquina. Quien
|
|
21
|
+
* traduce es el adaptador, y no es higiene: esto viaja al modelo y de ahí al cable.
|
|
22
|
+
*/
|
|
23
|
+
/** Parte `Coll.CAMPO` en sus dos mitades. Sin punto, es una colección a secas. */
|
|
24
|
+
export function partirNombre(nombre) {
|
|
25
|
+
const i = nombre.indexOf(".");
|
|
26
|
+
if (i === -1)
|
|
27
|
+
return { coleccion: nombre.trim() };
|
|
28
|
+
return { coleccion: nombre.slice(0, i).trim(), campo: nombre.slice(i + 1).trim() };
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Construye el índice. Puro: el modelo entra ya resuelto y traducido.
|
|
32
|
+
*
|
|
33
|
+
* **No cachea, y quien lo llama tampoco debería.** Construirlo sobre un proyecto real cuesta
|
|
34
|
+
* unas decenas de milisegundos —medido— contra los segundos de una llamada al modelo, así
|
|
35
|
+
* que rehacerlo en cada consulta sale gratis y quita de en medio la pregunta de cuándo
|
|
36
|
+
* invalidarlo. Un índice viejo que dice que un campo existe cuando el agente acaba de
|
|
37
|
+
* borrarlo es peor que no tener índice: es una respuesta con autoridad y equivocada.
|
|
38
|
+
*
|
|
39
|
+
* **La comparación de nombres NO distingue mayúsculas.** En XOne se escribe `NOMBRE` en la
|
|
40
|
+
* declaración y `Nombre` en un `mapfld` con la misma intención, y un índice que conteste «no
|
|
41
|
+
* existe» por la caja manda a buscar un fallo que no está. Lo que se DEVUELVE es siempre el
|
|
42
|
+
* nombre tal como está declarado, no el que se preguntó.
|
|
43
|
+
*/
|
|
44
|
+
export function construirIndice(modelo) {
|
|
45
|
+
const igual = (a, b) => a.toLowerCase() === b.toLowerCase();
|
|
46
|
+
const declaracionDeColeccion = (c) => ({
|
|
47
|
+
nombre: c.nombre,
|
|
48
|
+
clase: "coleccion",
|
|
49
|
+
fichero: c.fichero,
|
|
50
|
+
});
|
|
51
|
+
const declaracionDeCampo = (c, campo) => ({
|
|
52
|
+
nombre: campo.nombre,
|
|
53
|
+
clase: "campo",
|
|
54
|
+
fichero: c.fichero,
|
|
55
|
+
coleccion: c.nombre,
|
|
56
|
+
...(campo.tipo === undefined ? {} : { tipo: campo.tipo }),
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
inventario: () => modelo.colecciones.map(declaracionDeColeccion),
|
|
60
|
+
definicion(nombre) {
|
|
61
|
+
const { coleccion, campo } = partirNombre(nombre);
|
|
62
|
+
const suyas = modelo.colecciones.filter((c) => igual(c.nombre, coleccion));
|
|
63
|
+
// Sin campo, se pregunta por la colección: se devuelven TODAS las que se llamen así.
|
|
64
|
+
// Dos declaraciones con el mismo nombre no es un caso imposible y callarse una sería
|
|
65
|
+
// contestar a medias sobre justo el proyecto que tiene el problema.
|
|
66
|
+
if (campo === undefined || campo === "")
|
|
67
|
+
return suyas.map(declaracionDeColeccion);
|
|
68
|
+
return suyas.flatMap((c) => c.campos.filter((f) => igual(f.nombre, campo)).map((f) => declaracionDeCampo(c, f)));
|
|
69
|
+
},
|
|
70
|
+
referencias(nombre) {
|
|
71
|
+
const { coleccion, campo } = partirNombre(nombre);
|
|
72
|
+
const encaja = (hacia) => {
|
|
73
|
+
const destino = partirNombre(hacia);
|
|
74
|
+
if (!igual(destino.coleccion, coleccion))
|
|
75
|
+
return false;
|
|
76
|
+
// Preguntando por la coll entera valen todas las que apunten a ella, lleven campo o
|
|
77
|
+
// no: quien pregunta «¿quién usa Clientes?» quiere también los `mapfld`.
|
|
78
|
+
if (campo === undefined || campo === "")
|
|
79
|
+
return true;
|
|
80
|
+
return destino.campo !== undefined && igual(destino.campo, campo);
|
|
81
|
+
};
|
|
82
|
+
const salida = [];
|
|
83
|
+
for (const c of modelo.colecciones) {
|
|
84
|
+
for (const r of c.referencias)
|
|
85
|
+
if (encaja(r.hacia))
|
|
86
|
+
salida.push({ ...r, fichero: c.fichero });
|
|
87
|
+
}
|
|
88
|
+
// Y las de script, que ya traen su fichero porque pueden venir de un `.js` suelto.
|
|
89
|
+
for (const r of modelo.referenciasDeScript)
|
|
90
|
+
if (encaja(r.hacia))
|
|
91
|
+
salida.push(r);
|
|
92
|
+
return salida;
|
|
93
|
+
},
|
|
94
|
+
campos(coleccion) {
|
|
95
|
+
const { coleccion: soloColl } = partirNombre(coleccion);
|
|
96
|
+
return modelo.colecciones
|
|
97
|
+
.filter((c) => igual(c.nombre, soloColl))
|
|
98
|
+
.flatMap((c) => c.campos.map((f) => declaracionDeCampo(c, f)));
|
|
99
|
+
},
|
|
100
|
+
app: () => modelo.app,
|
|
101
|
+
detalle(coleccion) {
|
|
102
|
+
const { coleccion: soloColl } = partirNombre(coleccion);
|
|
103
|
+
const c = modelo.colecciones.find((x) => igual(x.nombre, soloColl));
|
|
104
|
+
// `undefined` y no un detalle vacío: «no existe» y «existe y está vacía» son dos cosas,
|
|
105
|
+
// y contestar lo segundo sobre lo primero hace que el agente deje de buscar.
|
|
106
|
+
if (c === undefined)
|
|
107
|
+
return undefined;
|
|
108
|
+
return {
|
|
109
|
+
nombre: c.nombre,
|
|
110
|
+
fichero: c.fichero,
|
|
111
|
+
campos: c.campos.map((f) => declaracionDeCampo(c, f)),
|
|
112
|
+
eventos: c.eventos,
|
|
113
|
+
nodos: c.nodos,
|
|
114
|
+
conexiones: c.conexiones,
|
|
115
|
+
apuntaA: c.referencias.map((r) => ({ ...r, fichero: c.fichero })),
|
|
116
|
+
};
|
|
117
|
+
},
|
|
118
|
+
problemas() {
|
|
119
|
+
const existe = (nombre) => modelo.colecciones.some((c) => igual(c.nombre, nombre));
|
|
120
|
+
const rotas = [];
|
|
121
|
+
const todas = [
|
|
122
|
+
...modelo.colecciones.flatMap((c) => c.referencias.map((r) => ({ ...r, fichero: c.fichero }))),
|
|
123
|
+
// Las de script cuentan: dos de las tres referencias rotas de un proyecto real solo se
|
|
124
|
+
// ven desde ahí (`appData.getCollection('Login')`, que no existe).
|
|
125
|
+
...modelo.referenciasDeScript,
|
|
126
|
+
];
|
|
127
|
+
for (const r of todas)
|
|
128
|
+
if (!existe(partirNombre(r.hacia).coleccion))
|
|
129
|
+
rotas.push(r);
|
|
130
|
+
return { rotas };
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=navegacion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navegacion.js","sourceRoot":"","sources":["../../src/core/navegacion.ts"],"names":[],"mappings":"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"}
|
package/dist/core/notify.js
CHANGED
|
@@ -25,6 +25,10 @@ const ICONO = {
|
|
|
25
25
|
grep: "✱",
|
|
26
26
|
regex_search: "✱",
|
|
27
27
|
task: "⊙",
|
|
28
|
+
// Un icono PROPIO, y no el genérico `⚙`: en un turno donde se lanza una app, la línea del
|
|
29
|
+
// comando es la que dice qué está pasando de verdad — y no puede leerse igual que una tool
|
|
30
|
+
// cualquiera que no está en la tabla.
|
|
31
|
+
execute: "$",
|
|
28
32
|
};
|
|
29
33
|
/** El verbo de cada tool conocida, en español. */
|
|
30
34
|
const VERBO = {
|
|
@@ -36,6 +40,7 @@ const VERBO = {
|
|
|
36
40
|
grep: "busca",
|
|
37
41
|
regex_search: "regex",
|
|
38
42
|
task: "delega en",
|
|
43
|
+
execute: "corre",
|
|
39
44
|
};
|
|
40
45
|
/** `→ lee app.xne` para una conocida; `⚙ studio_edit_file` para el resto. */
|
|
41
46
|
function frase(nombre, detalle) {
|
package/dist/core/notify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../src/core/notify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAcH,wEAAwE;AACxE,MAAM,KAAK,GAA2B;IACpC,SAAS,EAAE,GAAG;IACd,EAAE,EAAE,GAAG;IACP,UAAU,EAAE,GAAG;IACf,SAAS,EAAE,GAAG;IACd,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,YAAY,EAAE,GAAG;IACjB,IAAI,EAAE,GAAG;
|
|
1
|
+
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../src/core/notify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAcH,wEAAwE;AACxE,MAAM,KAAK,GAA2B;IACpC,SAAS,EAAE,GAAG;IACd,EAAE,EAAE,GAAG;IACP,UAAU,EAAE,GAAG;IACf,SAAS,EAAE,GAAG;IACd,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,YAAY,EAAE,GAAG;IACjB,IAAI,EAAE,GAAG;IACT,0FAA0F;IAC1F,2FAA2F;IAC3F,sCAAsC;IACtC,OAAO,EAAE,GAAG;CACb,CAAC;AAEF,kDAAkD;AAClD,MAAM,KAAK,GAA2B;IACpC,SAAS,EAAE,KAAK;IAChB,EAAE,EAAE,OAAO;IACX,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,OAAO;IAClB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,YAAY,EAAE,OAAO;IACrB,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,OAAO;CACjB,CAAC;AAsBF,6EAA6E;AAC7E,SAAS,KAAK,CAAC,MAAc,EAAE,OAAgB;IAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,qFAAqF;IACrF,iFAAiF;IACjF,wFAAwF;IACxF,0DAA0D;IAC1D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,OAAO,EAAE,CAAC;IAC5F,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAE,CAAC;IAC7B,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;AACxG,CAAC;AAED;;;;;GAKG;AACH,SAAS,OAAO,CAAC,QAAkB;IACjC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC;AACnG,CAAC;AAED,MAAM,OAAO,UAAU;IACb,MAAM,GAAG,EAAE,CAAC;IACZ,MAAM,GAAG,CAAC,CAAC;IACX,QAAQ,GAAa,EAAE,CAAC;IAEhC,wEAAwE;IACxE,MAAM,CAAC,MAAkB;QACvB,MAAM,MAAM,GAAkB,EAAE,CAAC;QAEjC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,kEAAkE;YAClE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE;gBAC5E,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;gBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACrE,OAAO,MAAM,CAAC,CAAC,qBAAqB;QACtC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACpF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,uFAAuF;IACvF,MAAM;QACJ,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAEO,WAAW;QACjB,yEAAyE;QACzE,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,KAAK,GACT,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAC/G,oFAAoF;QACpF,aAAa;QACb,MAAM,MAAM,GAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -29,7 +29,7 @@ export const extensionDe = (ruta) => {
|
|
|
29
29
|
/**
|
|
30
30
|
* Lo que no sale de esta máquina NUNCA, mire quien lo mire.
|
|
31
31
|
*
|
|
32
|
-
* Es la misma denegación que `agent/perfiles.ts` le impone al AGENTE
|
|
32
|
+
* Es la misma denegación que `agent/grafo/perfiles.ts` le impone al AGENTE
|
|
33
33
|
* (`permisosDe`/`puedeLeerRuta` deniegan `/.env` y `/.git`, invariante explícito de
|
|
34
34
|
* `CLAUDE.md`), replicada en la ruta de SUBIDA, que no pasa por aquellos permisos y por
|
|
35
35
|
* tanto no la heredaba. Que el agente no pueda leer `.env` no sirve de nada si el `/sync`
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dónde viven los PLANES, y por qué no es ninguno de los dos sitios obvios.
|
|
3
|
+
*
|
|
4
|
+
* Un plan lo escribe quien analiza y lo consume quien desarrolla, que marca ahí mismo lo que
|
|
5
|
+
* va haciendo. O sea que no es un entregable que se enseña una vez: es **estado de trabajo
|
|
6
|
+
* compartido**. Eso descarta los dos sitios que se prueban primero:
|
|
7
|
+
*
|
|
8
|
+
* - **La raíz del proyecto NO**: es la app del cliente. Lo que se escribe ahí pasa por
|
|
9
|
+
* aprobación, entra en el commit de cada turno y **sube a CloudStudio**. Un plan de
|
|
10
|
+
* desarrollo no es parte de la aplicación que el cliente instala. (Y «pongo un `.gitignore`»
|
|
11
|
+
* tampoco resuelve: un `.gitignore` es un fichero DEL PROYECTO y subiría él mismo — la misma
|
|
12
|
+
* razón por la que la basura del SO va a `info/exclude` y nunca al `.gitignore`.)
|
|
13
|
+
* - **`/artefactos/` tampoco**, aunque ahí se probó primero y funciona: un artefacto es algo
|
|
14
|
+
* que se ENSEÑA —se anuncia con su evento, se abre en un iframe— y es PLANO, así que dos
|
|
15
|
+
* planes a la vez se pisan el nombre.
|
|
16
|
+
*
|
|
17
|
+
* Queda `.xonecode/planes/`, que es donde escribe el propio harness: está fuera del índice de
|
|
18
|
+
* git (`sacarXonecodeDelIndice`), fuera del diff del turno y fuera de la subida, y vive en el
|
|
19
|
+
* repo LOCAL, así que un plan sobrevive a la sesión que lo escribió — se planifica un día y se
|
|
20
|
+
* implementa otro.
|
|
21
|
+
*
|
|
22
|
+
* El agente lo ve por la ruta VIRTUAL `/planes/`, nunca por `.xonecode`, que le está denegado
|
|
23
|
+
* entero. Es el mismo truco que `/MEMORIA_PROYECTO.md`.
|
|
24
|
+
*/
|
|
25
|
+
import { motivoDeNombreInaceptable } from "./agentes.js";
|
|
26
|
+
/** La ruta virtual. La barra final es obligatoria: `CompositeBackend` la retira al delegar. */
|
|
27
|
+
export const RUTA_PLANES = "/planes/";
|
|
28
|
+
/** Dónde caen de verdad, relativo a la raíz del proyecto. */
|
|
29
|
+
export const CARPETA_DE_PLANES = ".xonecode/planes";
|
|
30
|
+
/**
|
|
31
|
+
* **Un plan es una CARPETA, no un fichero**, porque dentro de una sesión puede haber varios y
|
|
32
|
+
* porque un plan son tres cosas que se acompañan (`PLAN.md`, `TASKS.md`, `CONTEXT.md`) más sus
|
|
33
|
+
* ADRs. Con ficheros sueltos, dos planes a la vez se pisan.
|
|
34
|
+
*/
|
|
35
|
+
export const FICHEROS_DE_UN_PLAN = ["PLAN.md", "TASKS.md", "CONTEXT.md"];
|
|
36
|
+
/**
|
|
37
|
+
* Por qué un nombre de plan no vale, o `undefined` si vale.
|
|
38
|
+
*
|
|
39
|
+
* **La MISMA regla que la de un subagente o una skill**, y a propósito: el nombre se convierte
|
|
40
|
+
* en un segmento de ruta, y tres reglas distintas para lo mismo son tres sitios donde discrepar
|
|
41
|
+
* sobre qué es un nombre seguro.
|
|
42
|
+
*/
|
|
43
|
+
export function motivoDePlanInaceptable(nombre) {
|
|
44
|
+
return motivoDeNombreInaceptable(nombre);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* ¿Es una ruta de plan bien formada? Lista BLANCA de forma, no un `startsWith`.
|
|
48
|
+
*
|
|
49
|
+
* Tiene que ser `/planes/<slug>/<algo>`: con el slug validado y sin salirse por un `..`, un
|
|
50
|
+
* `\` ni una barra de más. Es la misma clase de criba que `esRutaDeArtefacto`, y existe por lo
|
|
51
|
+
* mismo: lo que el modelo escribe es texto, y de ahí sale una ruta del disco.
|
|
52
|
+
*/
|
|
53
|
+
export function esRutaDePlan(ruta) {
|
|
54
|
+
if (ruta === undefined || !ruta.startsWith(RUTA_PLANES))
|
|
55
|
+
return false;
|
|
56
|
+
const resto = ruta.slice(RUTA_PLANES.length);
|
|
57
|
+
const partes = resto.split("/");
|
|
58
|
+
if (partes.length < 2)
|
|
59
|
+
return false;
|
|
60
|
+
const [plan, ...dentro] = partes;
|
|
61
|
+
if (plan === undefined || motivoDePlanInaceptable(plan) !== undefined)
|
|
62
|
+
return false;
|
|
63
|
+
// Ningún segmento vacío, ni `.`/`..`, ni nada con separadores raros o el byte nulo.
|
|
64
|
+
return dentro.every((s) => s !== "" && s !== "." && s !== ".." && !/[\\\0]/.test(s));
|
|
65
|
+
}
|
|
66
|
+
/** La carpeta de un plan, tal como la ve el agente. */
|
|
67
|
+
export function rutaDelPlan(nombre) {
|
|
68
|
+
return `${RUTA_PLANES}${nombre}/`;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=planes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planes.js","sourceRoot":"","sources":["../../src/core/planes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD,+FAA+F;AAC/F,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;AAEtC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,CAAU,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAc;IACpD,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAwB;IACnD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;IACjC,IAAI,IAAI,KAAK,SAAS,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACpF,oFAAoF;IACpF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,CAAC;AACpC,CAAC"}
|
package/dist/core/ports.js
CHANGED
|
@@ -249,6 +249,10 @@ export class CloudStudioEnMemoria {
|
|
|
249
249
|
}
|
|
250
250
|
async contexto() {
|
|
251
251
|
this.exigirAbierto();
|
|
252
|
+
// Después de `exigirAbierto`: el fallo medido ocurre con el proyecto ABIERTO, y
|
|
253
|
+
// ponerlo antes convertiría este doble en otro camino para «no hay proyecto».
|
|
254
|
+
if (this.opciones.contextoFalla !== undefined)
|
|
255
|
+
throw new Error(this.opciones.contextoFalla);
|
|
252
256
|
return { proyecto: this.abierto, rama: this.ramaActual };
|
|
253
257
|
}
|
|
254
258
|
async descargarZip() {
|
package/dist/core/ports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/core/ports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/core/ports.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* La rúbrica: qué significa «hecho» en ESTE encargo, y qué se hace cuando no lo está.
|
|
3
|
+
*
|
|
4
|
+
* Portado del `RubricMiddleware` de deepagents, que existe en su SDK de **Python** y no en el
|
|
5
|
+
* de JS. El diseño es suyo y es bueno: en la parada natural del agente —el modelo contesta sin
|
|
6
|
+
* pedir más tools— un CALIFICADOR juzga lo hecho contra unos criterios, y si dice que falta
|
|
7
|
+
* algo su comentario vuelve como mensaje y el bucle sigue, con tope de vueltas.
|
|
8
|
+
*
|
|
9
|
+
* ## Qué es esto y qué NO es
|
|
10
|
+
*
|
|
11
|
+
* **No sustituye al verificador** (`turnoReal.ts#conVerificacion`), lo complementa, y la
|
|
12
|
+
* frontera es lo que cada uno puede saber. El simulador contesta lo OBJETIVO —esto parsea, este
|
|
13
|
+
* atributo existe, este JavaScript no revienta— y por eso su veredicto se puede creer. Un
|
|
14
|
+
* calificador contesta lo que el simulador no ve: si el título se lee entero, si se hizo lo que
|
|
15
|
+
* se pidió, si se cambió algo que nadie pidió. Medido hoy: un especialista cambió
|
|
16
|
+
* `editable="false"` por `locked="true"` dentro de un arreglo visual, y ninguna comprobación
|
|
17
|
+
* estática tiene nada que decir de eso.
|
|
18
|
+
*
|
|
19
|
+
* **Y por eso un rojo suyo no es el rojo del verificador.** El del simulador es una medida; éste
|
|
20
|
+
* es la opinión de un modelo sobre un transcript. Se dice con esas palabras donde se enseñe.
|
|
21
|
+
*
|
|
22
|
+
* ## Dos cosas del original que NO se copian
|
|
23
|
+
*
|
|
24
|
+
* - **Terminar sin satisfacer no puede ser mudo.** Ellos documentan que con `failed`,
|
|
25
|
+
* `max_iterations_reached` o `grader_error` no tocan los mensajes, así que la última respuesta
|
|
26
|
+
* es la del modelo y quien llama tiene que ir a mirar un campo privado del estado. Eso es el
|
|
27
|
+
* mismo fallo que el tope de llamadas tenía aquí: trabajo que acaba a medias sin que nadie se
|
|
28
|
+
* entere. Aquí el estado no satisfecho SE DICE.
|
|
29
|
+
* - **El calificador entra por un PUERTO**, no como un modelo construido dentro. Así esto se
|
|
30
|
+
* prueba sin red ni clave, que es el invariante que sostiene el diseño de este repo.
|
|
31
|
+
*
|
|
32
|
+
* Puro: aquí está la política. Quién llama al modelo y quién monta el middleware es de `agent/`.
|
|
33
|
+
*/
|
|
34
|
+
/** Un estado terminal cierra el bucle; `necesita-revision` es el único que lo continúa. */
|
|
35
|
+
export function esTerminal(estado) {
|
|
36
|
+
return estado !== "necesita-revision";
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Cuántas vueltas se le dan.
|
|
40
|
+
*
|
|
41
|
+
* Tres es el valor del original. **Aquí importa más que allí**: cada vuelta puede traer
|
|
42
|
+
* escrituras, y cada escritura pasa por una aprobación — así que un tope alto no es solo gasto,
|
|
43
|
+
* son paradas delante de una persona. Y en una tarea de fondo no hay nadie que frene el bucle,
|
|
44
|
+
* que es el mismo argumento por el que existen `TOPE_REPARACIONES` y el tope de tandas.
|
|
45
|
+
*/
|
|
46
|
+
export const TOPE_DE_VUELTAS = 3;
|
|
47
|
+
/**
|
|
48
|
+
* El mensaje con que vuelve el trabajo al agente.
|
|
49
|
+
*
|
|
50
|
+
* Va con voz del HARNESS y no del usuario: quien lo lee tiene que saber que esto no es alguien
|
|
51
|
+
* pidiendo otra cosa, es una comprobación diciendo que lo pedido no está. Si se disfrazara de
|
|
52
|
+
* petición nueva, el agente podría tomarlo por un cambio de encargo y empezar otra cosa.
|
|
53
|
+
*
|
|
54
|
+
* Y dice de qué vuelta va: sin eso, tres mensajes iguales seguidos se leen como un bucle y el
|
|
55
|
+
* modelo no sabe cuánto margen le queda.
|
|
56
|
+
*/
|
|
57
|
+
export function mensajeDeRevision(comentario, vuelta, tope) {
|
|
58
|
+
return [
|
|
59
|
+
`[harness] Revisión ${vuelta} de ${tope}: lo que se pidió NO está hecho del todo.`,
|
|
60
|
+
"",
|
|
61
|
+
comentario.trim(),
|
|
62
|
+
"",
|
|
63
|
+
"Arregla eso y nada más. No es un encargo nuevo ni un cambio de opinión: es la misma tarea,",
|
|
64
|
+
"que todavía no cumple. Si crees que ya está y la revisión se equivoca, dilo y explica por qué",
|
|
65
|
+
"en vez de volver a cambiar lo mismo.",
|
|
66
|
+
].join("\n");
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Lo que se le dice a quien mira cuando el bucle acaba SIN satisfacer.
|
|
70
|
+
*
|
|
71
|
+
* Existe porque el original no lo tiene: allí el estado no satisfecho vive en un campo privado
|
|
72
|
+
* y la última respuesta sigue siendo la del modelo, que puede estar afirmando que terminó. Un
|
|
73
|
+
* trabajo que no cumple y lo dice como si cumpliera es peor que uno que falla.
|
|
74
|
+
*/
|
|
75
|
+
export function avisoDeNoSatisfecho(estado, comentario) {
|
|
76
|
+
if (estado === "satisfecho" || estado === "necesita-revision")
|
|
77
|
+
return undefined;
|
|
78
|
+
const porQue = estado === "tope-de-vueltas"
|
|
79
|
+
? `se agotaron las ${TOPE_DE_VUELTAS} revisiones y seguía sin cumplir`
|
|
80
|
+
: estado === "fallido"
|
|
81
|
+
? "la rúbrica no se pudo evaluar contra este trabajo"
|
|
82
|
+
: "la revisión no llegó a dar veredicto (fallo del entorno, no del trabajo)";
|
|
83
|
+
const detalle = comentario?.trim();
|
|
84
|
+
return [
|
|
85
|
+
`⚠ revisión NO satisfecha: ${porQue}.`,
|
|
86
|
+
...(detalle === undefined || detalle === "" ? [] : [` ${detalle}`]),
|
|
87
|
+
" Es la opinión de un modelo sobre lo hecho, no una medida como la del verificador.",
|
|
88
|
+
].join("\n");
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=rubrica.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rubrica.js","sourceRoot":"","sources":["../../src/core/rubrica.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAcH,2FAA2F;AAC3F,MAAM,UAAU,UAAU,CAAC,MAAuB;IAChD,OAAO,MAAM,KAAK,mBAAmB,CAAC;AACxC,CAAC;AAQD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AAEjC;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,MAAc,EAAE,IAAY;IAChF,OAAO;QACL,sBAAsB,MAAM,OAAO,IAAI,2CAA2C;QAClF,EAAE;QACF,UAAU,CAAC,IAAI,EAAE;QACjB,EAAE;QACF,4FAA4F;QAC5F,+FAA+F;QAC/F,sCAAsC;KACvC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAuB,EAAE,UAAmB;IAC9E,IAAI,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,mBAAmB;QAAE,OAAO,SAAS,CAAC;IAChF,MAAM,MAAM,GACV,MAAM,KAAK,iBAAiB;QAC1B,CAAC,CAAC,mBAAmB,eAAe,kCAAkC;QACtE,CAAC,CAAC,MAAM,KAAK,SAAS;YACpB,CAAC,CAAC,mDAAmD;YACrD,CAAC,CAAC,0EAA0E,CAAC;IACnF,MAAM,OAAO,GAAG,UAAU,EAAE,IAAI,EAAE,CAAC;IACnC,OAAO;QACL,6BAA6B,MAAM,GAAG;QACtC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QACpE,qFAAqF;KACtF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|