Skip to content

v2.12.0 — Cierre de backlog v3: failover, compresión semántica, bot Telegram, RPC, Docker - #12

Merged
santiquiroz merged 1 commit into
masterfrom
feature/v3-backlog-close
Aug 20, 2026
Merged

v2.12.0 — Cierre de backlog v3: failover, compresión semántica, bot Telegram, RPC, Docker#12
santiquiroz merged 1 commit into
masterfrom
feature/v3-backlog-close

Conversation

@santiquiroz

Copy link
Copy Markdown
Owner

Resumen

  • Failover automático: si el provider efectivo (local/LAN) no responde al TCP check, el request cae al primer fallback alcanzable (orden configurable en Providers → Routing).
  • Compresión semántica (opt-in, toggle en Settings): cerca del límite de contexto, resume la mitad vieja del historial con el provider activo en vez de truncar; nunca parte pares tool_use/tool_result; fallo → truncado clásico.
  • Bot Telegram (opt-in): TELEGRAM_BOT_TOKEN + allowlist de chat ids; relay por long-polling al provider activo. Allowlist vacía = bot inerte (default seguro).
  • RPC multi-host: local_launch.rpc_servers suma workers ggml-rpc-server remotos (--rpc) — la granja multi-PC.
  • Logs de litellm en la UI (Settings) + write_env_key aplica en caliente.
  • Deploy Docker: multi-stage, compose con volumen; imagen construida y smoke-testeada (/api/health 200 en contenedor).

Test plan

  • Suite backend: 147 passed (32 tests nuevos)
  • tsc limpio
  • Docker build + smoke local
  • Smoke con hardware: llama-server + RPC + bot con token real

🤖 Generated with Claude Code

…ca, bot Telegram, RPC multi-host, logs litellm y deploy Docker

Dominio:
- providers_service: pick_provider — provider efectivo por request con failover: si el destino con api_base local/LAN no responde (chequeo TCP 0.4s), cae al primer fallback alcanzable de fallback_provider_ids; retorna flag es-provider-activo para decidir litellm vs directo.
- Nuevo compression_service: compresión semántica opt-in — al acercarse al límite de contexto resume la mitad vieja del historial con el provider activo (sin partir pares tool_use/tool_result); cualquier fallo cae al truncado clásico.
- Nuevo telegram_bot: relay opt-in por long-polling al gateway (TELEGRAM_BOT_TOKEN + allowlist de chat ids; allowlist vacía = inerte).
- llamacpp_service: rpc_servers en local_launch (--rpc, granja multi-PC); tail_file movido a core/utils.
- models/provider.py: fallback_provider_ids en el registry.

Aplicación:
- messages.py y openai_compat.py: resolución vía pick_provider; anthropic vía litellm solo si es el provider activo; hook de compresión semántica en el punto de truncado.
- api/providers.py: routing GET/PUT extendido con fallback_provider_ids (None = no tocar).
- api/proxy.py: GET /proxy/logs (tail de litellm-out/err).
- api/settings.py: auth-info expone semantic_compression.

Infraestructura:
- settings_service.write_env_key: aplica en caliente (os.environ + cache_clear).
- Frontend: campo failover en RoutingPanel, toggle de compresión semántica y viewer de logs litellm en Settings, proxyApi.getLogs, tipos actualizados.
- main.py: task del bot Telegram en lifespan.

Configuración:
- Dockerfile multi-stage (node build + python slim + litellm[proxy]), docker-compose con volumen persistente, .dockerignore; sección de deploy en README; imagen construida y smoke-testeada localmente (/api/health 200 en contenedor).
- config.py: flag semantic_compression; bump version a 2.12.0.

Pruebas:
- test_failover.py (6), test_compression_service.py (13), test_telegram_bot.py (13); test_routing/test_messages_native/test_openai_compat actualizados a pick_provider.

Cobertura global del proyecto: suite backend 147 passed; tsc frontend sin errores.
@santiquiroz
santiquiroz merged commit 3020921 into master Aug 20, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant