hermes-agent/agent
Brooklyn Nicholson f726090d48 feat(sessions): name a session the moment it starts
Titling fired on the first response, so a session sat unnamed for the whole
opening turn - p50 151s, p90 1212s across real sessions, because a turn is
tool calls, not one round-trip. A turn that failed or was interrupted never
got a title at all. Four surfaces each carried their own copy of the call.

Move it into the shared turn prologue and split it in two: a deterministic
title derived from the user's opening message, written inline before the
model runs, then one small-model call that upgrades it. The response is
constrained to a JSON object so there is no preamble to strip, and control
wrappers are stripped rather than refused, so a slash command titles as
what the user asked for instead of the command itself.
2026-08-08 17:07:21 -05:00
..
lsp
…
monitoring
…
pet
…
proxy_sources
…
secret_sources
…
transports feat(compression): native OpenAI Responses server-side compaction for gpt-5.6 2026-08-08 11:24:45 -07:00
verify
…
__init__.py
…
account_usage.py
…
agent_init.py feat(compression): native OpenAI Responses server-side compaction for gpt-5.6 2026-08-08 11:24:45 -07:00
agent_runtime_helpers.py feat(agent): read_window_below tool — which OS window is underneath the desktop app 2026-08-08 12:17:50 -05:00
anthropic_adapter.py
…
async_utils.py
…
aux_accounting.py
…
auxiliary_client.py perf(sessions): resolve the titling model from the provider's live catalog 2026-08-08 17:07:21 -05:00
azure_identity_adapter.py
…
backend_identity.py
…
background_review.py
…
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 feat(compression): native OpenAI Responses server-side compaction for gpt-5.6 2026-08-08 11:24:45 -07:00
codex_responses_adapter.py feat(compression): native OpenAI Responses server-side compaction for gpt-5.6 2026-08-08 11:24:45 -07:00
codex_runtime.py
…
coding_context.py
…
context_breakdown.py
…
context_compressor.py fix(compression): correct prune boundary + exempt native compaction checkpoints 2026-08-08 14:09:41 -07:00
context_engine.py Revert "fix: rewire DCP context engine to current main architecture" 2026-08-08 23:09:45 +05:30
context_references.py fix(docker): read attached binary files in backend (#76577) 2026-08-08 05:44:18 -07:00
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(compression): correct prune boundary + exempt native compaction checkpoints 2026-08-08 14:09:41 -07:00
copilot_acp_client.py
…
credential_persistence.py
…
credential_pool.py
…
credential_sources.py fix(auth): read .env as utf-8-sig in the dotenv-vs-shell detector 2026-08-08 12:32:23 -07:00
credits_tracker.py
…
curator.py
…
curator_backup.py refactor: fold simplify findings — 6th copy in update_cmd, drop dead wrapper + speculative kwarg, behavior-contract tests 2026-08-08 15:10:35 +05:30
delegation_context.py
…
display.py
…
error_classifier.py
…
errors.py
…
estop.py fix: post-merge audit follow-ups for #81138/#81139/#81141/#81148 2026-08-08 05:21:09 -07:00
file_safety.py
…
gemini_native_adapter.py
…
gemini_schema.py
…
i18n.py
…
image_gen_provider.py feat(media): opt-in upscale pass for image_generate and video_generate across FAL and Krea 2026-08-08 14:49:28 -07:00
image_gen_registry.py
…
image_routing.py
…
insights.py
…
interrupt_compat.py
…
iteration_budget.py
…
jiter_preload.py
…
kanban_stop.py
…
learn_prompt.py fix(learn): process large sources incrementally 2026-08-08 05:09:43 -07:00
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
…
models_dev.py
…
moonshot_schema.py
…
native_compaction.py fix(compression): correct prune boundary + exempt native compaction checkpoints 2026-08-08 14:09:41 -07:00
nous_rate_guard.py
…
onboarding.py
…
oneshot.py
…
outbound_webhooks.py
…
plugin_llm.py
…
portal_tags.py
…
process_bootstrap.py
…
prompt_builder.py style(hud): tighten the surface-note comments and test helper 2026-08-08 16:21:15 -05:00
prompt_caching.py
…
rate_limit_tracker.py
…
reactions.py
…
reasoning_summaries.py
…
reasoning_timeouts.py
…
redact.py
…
relay_llm.py
…
relay_runtime.py
…
relay_tools.py
…
replay_cleanup.py
…
retry_utils.py
…
runtime_cwd.py
…
secret_scope.py
…
session_activity.py
…
shell_hooks.py fix: finish the missing-encoding sweep — BOM-tolerant reads for user-edited stores 2026-08-08 12:32:23 -07:00
skill_bundles.py
…
skill_commands.py
…
skill_preprocessing.py
…
skill_utils.py
…
ssl_guard.py fix(ssl_guard): tolerate truststore SSLContext.get_ca_certs() NotImplementedError on Windows 2026-08-08 15:10:24 +05:30
ssl_verify.py
…
stream_diag.py
…
stream_single_writer.py
…
subagent_lifecycle.py
…
subdirectory_hints.py
…
subscription_view.py
…
system_prompt.py fix: revert except ImportError back to except Exception 2026-08-08 13:57:44 +05:30
think_scrubber.py
…
thinking_timeout_guidance.py
…
thread_scoped_output.py
…
title_generator.py feat(sessions): name a session the moment it starts 2026-08-08 17:07:21 -05:00
tool_dispatch_helpers.py
…
tool_executor.py feat(agent): read_window_below tool — which OS window is underneath the desktop app 2026-08-08 12:17:50 -05:00
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 feat(sessions): name a session the moment it starts 2026-08-08 17:07:21 -05:00
turn_finalizer.py fix(agent,gateway): class-level lone-surrogate chokepoints (#80366 #55143 #55309 #50959 #19819) 2026-08-08 12:31:19 -07:00
turn_retry_state.py feat(compression): native OpenAI Responses server-side compaction for gpt-5.6 2026-08-08 11:24:45 -07:00
turn_summary.py
…
usage_pricing.py
…
verification_evidence.py
…
verification_stop.py
…
verify_hooks.py
…
vertex_adapter.py
…
video_gen_provider.py feat(media): opt-in upscale pass for image_generate and video_generate across FAL and Krea 2026-08-08 14:49:28 -07:00
video_gen_registry.py
…
web_search_provider.py
…
web_search_registry.py
…