Skip to content

fix(title): honor configured auxiliary.title_generation.timeout (salvage #41844, #32729) - #56322

Merged
kshitijk4poor merged 1 commit into
NousResearch:mainfrom
kshitijk4poor:salvage-41844
Jul 1, 2026
Merged

fix(title): honor configured auxiliary.title_generation.timeout (salvage #41844, #32729)#56322
kshitijk4poor merged 1 commit into
NousResearch:mainfrom
kshitijk4poor:salvage-41844

Conversation

@kshitijk4poor

Copy link
Copy Markdown
Collaborator

Summary

Salvage of #41844 by @shandian64 (cherry-picked onto current main, authorship preserved). The minimal fix for #32729: auxiliary.title_generation.timeout was silently ignored.

The bug

agent/title_generator.py::generate_title hardcoded timeout: float = 30.0 in its signature. Its caller auto_title_session never passes an explicit timeout, so the hardcoded 30.0 always reached call_llm — and call_llm only resolves auxiliary.title_generation.timeout from config when it's called with timeout=None (auxiliary_client.py:5842: effective_timeout = timeout if timeout is not None else _get_task_timeout(task)). So a user who set a high title-generation timeout for a slow local LLM still saw Request timed out. at 30s every session. Confirmed on main (title_generator.py:54).

The fix (one line)

-    timeout: float = 30.0,
+    timeout: Optional[float] = None,

Optional is already imported; the None default now flows to call_llm, which resolves auxiliary.title_generation.timeout (default 30) from config. An explicit timeout= still overrides. Plus two regression tests: default delegates to config (task=="title_generation", timeout is None) and explicit timeout still forwards.

Chosen over competing PRs (issue #32729)

This was a 4-way OPEN cluster. #41844 is the cleanest: the exact one-line default fix with focused, non-tautological tests and no scope creep. Superseded:

Rebase note

The one-liner applied clean; only the test file conflicted (main added language tests in the same region). Resolved by keeping BOTH main's language tests and #41844's timeout tests.

Review

Ran hermes-agent-dev + hermes-pr-review Phase 2c — 0 Critical / 0 Warnings. Confirmed the fix chain end-to-end, config key exists on main, no behavior change for explicit-timeout callers, tests non-tautological. Locally: 25 passed.

Tests

pytest tests/agent/test_title_generator.py -q   # 25 passed (CI runs the full suite)

Supersedes #41844 (and #56285 / #41841 / #39035). Full credit to @shandian64.

@kshitijk4poor
kshitijk4poor enabled auto-merge (rebase) July 1, 2026 11:06
@kshitijk4poor
kshitijk4poor merged commit 5126902 into NousResearch:main Jul 1, 2026
29 checks passed
@alt-glitch alt-glitch added type/bug Something isn't working comp/agent Core agent runtime: loop, agent_init, prompt builder, context-compression, responses endpoint area/config Config system, migrations, profiles P3 Low — cosmetic, nice to have labels Jul 1, 2026
r266-tech added a commit to r266-tech/hermes-agent that referenced this pull request Jul 16, 2026
…t (residual of NousResearch#56322)

run_oneshot hard-coded timeout=60.0 and forwarded it, so the live llm.oneshot RPC (which passes task but no timeout) always ignored auxiliary.<task>.timeout -- the exact NousResearch#32729 bug NousResearch#56322 fixed for the generate_title sibling. Resolve the per-task timeout when the caller passes none, preserving the historical 60s default for unconfigured callers.
@kshitijk4poor
kshitijk4poor deleted the salvage-41844 branch August 5, 2026 07:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/config Config system, migrations, profiles comp/agent Core agent runtime: loop, agent_init, prompt builder, context-compression, responses endpoint P3 Low — cosmetic, nice to have type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants