git log --author=686f6c61 -- hermes-agent
Contribuciones a Hermes Agent
- ossHermes Agent
Corregido el bug por el que el gateway proyectaba inflight.assistant como texto plano junto a las partes estructuradas del turno, duplicándolo al cambiar de sesión. El fix deja de proyectar el dump plano cuando el tail del turno ya tiene estructura, acota la supresión al live-tail tras el último mensaje del usuario y exige una fila con estructura para el carry same-turn, con tests de regresión. La PR original (#76744) se cerró sin fusionar y el mismo trabajo aterrizó en main vía #77713 (salvage con autoría en los tres commits del fix). Publicado en «The Herald Release» (Hermes Agent v0.20.0 / v2026.8.3), en cuyos créditos de contribuidores figuro.
- ossHermes Agent
Corregido el bug por el que la desactivación de la caché de prompts (prompt_caching.cache_ttl=off) no se respetaba en las rutas de Mixture of Agents ni en los stubs de fallback. El fix propaga la desactivación a esas rutas. La PR original (#76113) se cerró y el mismo trabajo aterrizó en main vía #76622 (salvage con la autoría), dentro del ciclo de la v0.20.0.
- ossHermes Agent
Chore de infraestructura de atribución en el repo de Hermes Agent: se añade el archivo contributors/emails/github@00b.tech con el mapeo a 686f6c61, preparándolo antes del salvage de la PR #76113 (cache_ttl=off / stubs de MoA) para que la auditoría de atribución de contribuidores pase cuando los commits cherry-picked aterrizan en main. Sin ese mapeo, los audits que comprueban que los commits del salvage pertenecen a un contributor registrado podrían no reconocer la autoría de los fix.
- ossHermes Agent
En el gateway, la entrega fragmentada de respuestas largas sin payload duplicaba o se tragaba el envío final. Abrí la PR #78556 corrigiendo el mismo problema de forma independiente. La corrección que entró en main (#79669, mergeada) cierra mi PR y me acredita de forma explícita por el diagnóstico independiente del bug; el código fusionado fue el de otro contribuidor, con mi diagnóstico reconocido en los créditos.
- ossHermes Agent
Corregido el bug por el que, al adoptar una credencial del entorno a mitad de ejecución, `_try_refresh_env_client_credentials` no llamaba a `sync_credential_pool_entry_id()` y el agente seguía apuntando al pool entry anterior; ante un 429, `mark_exhausted_and_rotate` resolvía por `credential_id` (ignorando el `api_key_hint` discrepante) y ponía en cuarentena la clave sana durante días mientras la agotada seguía viva. El fix actúa en tres capas: rebind del pool entry id justo tras adoptar la credencial del entorno (run_agent.py), preferir el `api_key_hint` cuando discrepa del `credential_id` (agent/credential_pool.py) y tests de regresión en ambas capas (79/79 en verde). La PR original (#79180) se cerró sin fusionar y el mismo trabajo aterrizó en main vía #82149 (salvage cherry-picked con la autoría preservada). Fixes #79156.
- ossHermes Agent
El rewrite automático del endpoint en `_to_openai_base_url` reescribía `/anthropic` → `/v1` para cualquier host, lo que rompía las pasarelas Anthropic-only como Bailian (`/apps/anthropic` pasaba a `/apps/v1` → 404) y producía falsos positivos cuando `api.minimax` aparecía en la ruta. La política se invierte a una allowlist de hosts dual-surface (familia MiniMax; se conserva el mapeo ZAI `/paas/v4`): las pasarelas Anthropic-only mantienen su ruta. El fixup de esta PR ancla el marcador al host vía urlparse (coincidencia exacta o sufijo de subdominio). Es la completación a nivel de clase del fix puntual #85466: alcanza los call sites de iteración auxiliar y la rama de API-key donde no hay `api_mode` en scope, algo que los guards por sitio no podían. La PR original (#83782) se cerró sin fusionar y el mismo trabajo aterrizó en main vía #85532 (salvage con la autoría preservada en el commit del fix). Fixes #83642. Tests: 20/20, 3 verificados contra sabotaje.
- ossHermes Agent
Mi PR #78323 (fix(state): verify FTS rebuild write path; spool pending-cap overflow) detectó y diagnosticó correctamente los dos defectos del spool de transcript: el bug de orden (la recuperación recorre sorted(glob("*.json")) y los nombres uuid4 se reinsertan fuera de orden tras una ráfaga de spools por pending-cap) y el bug de fidelidad (su bucle append_kwargs es el intento directo del bug de fidelidad). La PR #84785, abierta por otro contribuidor como supersede de #78323, acredita explícitamente ese diagnóstico ("found both of these defects first, and diagnosed both correctly") y explica que no es un rebase mecánico sino trabajo sobre el código actual: el commit de0f20ff05b aterrizó el spool runtime de forma independiente y reescribió las regiones que tocaba mi PR, dejando ambos defectos aún vivos en main. La corrección ordena por (ts, seq, filename) espejando drain_transcript_spool, preserva los campos estructurados y para la reproducción de la sesión tras el primer fallo (10 tests nuevos). No es un merge propio: es crédito de issue/diagnóstico.