hermes-agent/gateway
Teknium a51a4cb096 fix(api-server): mark replayed tool calls completed in Responses output items
The non-streaming /v1/responses path built function_call and
function_call_output output items with no status field (and no item id),
while the SSE streaming path correctly emits status in_progress ->
completed. Spec-strict OpenAI clients reading the non-streaming output
array could interpret the status-less function_call items as pending
calls the CLIENT must execute — but these tools were already executed
server-side by the Hermes agent and are replayed for structured tool UI
only. Reported by a community user whose GPT-5.6 client concluded 'a
server should not tell an OpenAI client to execute a tool the server
already executed itself'.

- _extract_output_items now stamps status: completed and spec-shaped
  item ids (fc_/fco_) on replayed items, matching the streaming path
- test updated to pin status + id shape
- docs example updated + explicit note that output tool calls are
  replayed, never pending
2026-08-08 05:22:02 -07:00
..
assets
builtin_hooks
platforms
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
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
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