hermes-agent/agent
kshitij 4f675cf2fc fix: double-paren bug in dropped-tools prefix + add empty-response nudge sibling
Fix: _LENGTH_CONTINUATION_DROPPED_TOOLS_PREFIX ended with '(' but
_get_continuation_prompt still had f'({tool_list})', producing
'((write_file)' instead of '(write_file)'. Removed the '(' from
the prefix constant — the parenthesis belongs in the interpolation.

Widened: promoted the empty-response nudge (line 6993,
'You just executed tool calls but returned an empty response...')
to _EMPTY_TOOL_RESPONSE_NUDGE constant and added it to the
classifier's recognition set. Same bug class — its
_empty_recovery_synthetic metadata flag doesn't survive SessionDB
projection either.

Test: added parametrize case for the empty-response nudge (7→8 cases).
E2E: verified byte-for-byte string equivalence for all nudge constants.
2026-08-09 16:20:48 +05:30
..
lsp
…
monitoring fix(otlp): span exporter now inherits configured resource_attributes 2026-08-08 18:11:02 -07:00
pet
…
proxy_sources
…
secret_sources
…
transports fix: suppress pydantic serializer warnings leaking to the terminal 2026-08-08 23:14:30 -07:00
verify
…
__init__.py
…
account_usage.py
…
agent_init.py fix(agent): cancel in-flight background review before a new live turn 2026-08-09 16:13:52 +05:30
agent_runtime_helpers.py
…
anthropic_adapter.py fix: suppress pydantic serializer warnings leaking to the terminal 2026-08-08 23:14:30 -07:00
async_utils.py
…
aux_accounting.py
…
auxiliary_client.py fix(agent): stop titling a session after our own scaffolding, or a TTS model 2026-08-09 04:33:58 -05:00
azure_identity_adapter.py
…
backend_identity.py
…
background_review.py simplify: match delegate_tool.py hasattr pattern, drop change-detector test 2026-08-09 16:13:52 +05:30
battery.py
…
bedrock_adapter.py
…
billing_links.py
…
billing_usage.py
…
billing_view.py
…
bounded_response.py
…
browser_provider.py
…
browser_registry.py
…
chat_completion_helpers.py fix: suppress pydantic serializer warnings leaking to the terminal 2026-08-08 23:14:30 -07:00
codex_responses_adapter.py
…
codex_runtime.py
…
coding_context.py
…
context_breakdown.py
…
context_compressor.py fix: double-paren bug in dropped-tools prefix + add empty-response nudge sibling 2026-08-09 16:20:48 +05:30
context_engine.py
…
context_references.py
…
conversation_compression.py fix(sessions): give titles provenance so they stop overwriting themselves 2026-08-08 17:07:21 -05:00
conversation_loop.py fix: double-paren bug in dropped-tools prefix + add empty-response nudge sibling 2026-08-09 16:20:48 +05:30
copilot_acp_client.py
…
credential_persistence.py
…
credential_pool.py fix(agent): rebind pool entry id after env credential refresh 2026-08-08 19:17:02 -07:00
credential_sources.py
…
credits_tracker.py
…
curator.py
…
curator_backup.py
…
delegation_context.py
…
display.py
…
error_classifier.py
…
errors.py
…
estop.py
…
file_safety.py
…
gemini_native_adapter.py
…
gemini_schema.py
…
i18n.py
…
image_gen_provider.py
…
image_gen_registry.py
…
image_routing.py
…
insights.py
…
interrupt_compat.py
…
iteration_budget.py
…
jiter_preload.py
…
kanban_stop.py
…
learn_prompt.py
…
learning_graph.py
…
learning_graph_render.py
…
learning_mutations.py
…
lmstudio_reasoning.py
…
manual_compression_feedback.py
…
markdown_tables.py
…
memory_manager.py
…
memory_provider.py
…
message_content.py
…
message_sanitization.py
…
moa_loop.py
…
moa_trace.py
…
model_metadata.py fix(model-metadata): resolve provider prefixes from live registry 2026-08-09 01:51:12 -07:00
models_dev.py
…
moonshot_schema.py
…
native_compaction.py
…
nous_rate_guard.py
…
onboarding.py
…
oneshot.py
…
outbound_webhooks.py
…
plugin_llm.py
…
portal_tags.py
…
process_bootstrap.py
…
prompt_builder.py fix(desktop): keep earlier HUD windows in scope for the turn 2026-08-08 19:17:30 -05:00
prompt_cache_boundary.py refactor(cache): share the boundary-declaration helper and simplify the registry 2026-08-09 15:25:12 +05:30
prompt_caching.py perf(cache): harden the stable-prefix boundary against eviction and memory growth 2026-08-09 15:25:12 +05:30
rate_limit_tracker.py
…
reactions.py
…
reasoning_summaries.py
…
reasoning_timeouts.py
…
redact.py
…
relay_llm.py fix(relay): bypass managed execution for nested calls inside managed callbacks 2026-08-08 23:46:17 -07:00
relay_runtime.py fix(relay): bypass managed execution for nested calls inside managed callbacks 2026-08-08 23:46:17 -07:00
relay_tools.py fix(relay): bypass managed execution for nested calls inside managed callbacks 2026-08-08 23:46:17 -07:00
replay_cleanup.py
…
retry_utils.py
…
runtime_cwd.py
…
secret_scope.py
…
session_activity.py
…
shell_hooks.py
…
skill_bundles.py
…
skill_commands.py refactor(cache): share the boundary-declaration helper and simplify the registry 2026-08-09 15:25:12 +05:30
skill_preprocessing.py
…
skill_utils.py
…
ssl_guard.py
…
ssl_verify.py
…
stream_diag.py
…
stream_single_writer.py
…
subagent_lifecycle.py
…
subdirectory_hints.py
…
subscription_view.py
…
system_prompt.py
…
think_scrubber.py
…
thinking_timeout_guidance.py
…
thread_scoped_output.py
…
title_generator.py refactor(title): decide on the stored title and the real turns behind it 2026-08-09 04:33:58 -05:00
tool_dispatch_helpers.py
…
tool_executor.py
…
tool_guardrails.py
…
tool_result_classification.py
…
trace_upload.py
…
trajectory.py
…
transcription_provider.py
…
transcription_registry.py
…
tts_provider.py
…
tts_registry.py
…
turn_context.py fix(agent): stop cron and subagent runs auto-titling their sessions 2026-08-09 04:33:58 -05:00
turn_finalizer.py
…
turn_retry_state.py
…
turn_summary.py
…
usage_pricing.py
…
verification_evidence.py
…
verification_stop.py
…
verify_hooks.py
…
vertex_adapter.py
…
video_gen_provider.py
…
video_gen_registry.py
…
web_search_provider.py
…
web_search_registry.py
…