hermes-agent/gateway
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
..
assets
builtin_hooks
platforms fix(api-server): resolve reasoning for the request's model, not model.default 2026-08-08 11:13:27 -07:00
relay
__init__.py
agent_cache_pressure.py
authz_mixin.py
cgroup_cleanup.py
channel_directory.py
code_skew.py
config.py
cwd_placeholder.py
dead_targets.py
delivery.py
delivery_ledger.py
display_config.py
drain_control.py
hooks.py
kanban_watchers.py
lifecycle_ledger.py
memory_monitor.py
message_timestamps.py
mirror.py
pairing.py
platform_registry.py
profile_routing.py
readiness.py
response_filters.py
restart.py
restart_loop_guard.py
rich_sent_store.py
run.py feat(sessions): name a session the moment it starts 2026-08-08 17:07:21 -05:00
runtime_footer.py
scale_to_zero.py
session.py
session_context.py
session_stall.py
session_state.py
shutdown_flush.py
shutdown_forensics.py
shutdown_watchdog.py
slash_access.py
slash_commands.py fix: finish the missing-encoding sweep — BOM-tolerant reads for user-edited stores 2026-08-08 12:32:23 -07:00
status.py
status_phrases.py
sticker_cache.py
stream_consumer.py
stream_dispatch.py
stream_events.py
streaming_tts_consumer.py
systemd_notify.py
turn_context.py
turn_lease.py
wake.py
whatsapp_identity.py