hermes-agent/tests/tui_gateway
Yingliang Zhang 67472fbaa4 fix(tui_gateway): route setup.runtime_check and setup.status to RPC pool
setup.runtime_check and setup.status are polled by the Desktop frontend on
connect and periodically (use-status-snapshot → evaluateRuntimeReadiness), but
neither was in _LONG_HANDLERS — so dispatch() ran both inline on the WS reader
thread. Under GIL pressure from concurrent agent turns (terminal I/O, large
output, background-process completions) either can block for seconds:

- setup.runtime_check → resolve_runtime_provider() (config read, auth check,
  may probe the provider endpoint)
- setup.status → _has_any_provider_configured() (provider config + credential
  scan)

While either blocks the reader thread the WS read loop can't service later
requests; the frontend RPC timeout fires, the client drops the socket, and the
lost setup.runtime_check response reads as ready=false — a false "needs setup"
/ "Settings failed to load" even though the provider is configured.

Route both to the RPC pool (same precedent as #55545's session.list/pet.info/
process.list). The handlers are read-only and pool writes go through the
lock-guarded write_json, so there's no ordering or safety concern.

Test asserts all 5 frontend-polled RPCs are pool-routed.

Co-authored-by: izumi0uu <izumi0uu@gmail.com>
2026-07-02 15:44:37 -05:00
..
__init__.py
test_billing_rpc.py
test_compaction_status.py
test_custom_provider_session_persistence.py
test_entry_sys_path.py
test_finalize_session_persist.py
test_goal_command.py
test_inline_rpc_gil_starvation.py fix(tui_gateway): route setup.runtime_check and setup.status to RPC pool 2026-07-02 15:44:37 -05:00
test_make_agent_provider.py
test_mcp_late_refresh_thread_owner.py
test_moa_reference_emit.py
test_model_switch_marker_role.py
test_pet_generate_rpc.py
test_project_tree.py
test_projects_rpc.py
test_protocol.py
test_reasoning_session_scope.py
test_render.py
test_review_summary_callback.py
test_slash_worker_ansi.py
test_slash_worker_sys_path.py
test_subagent_child_mirror.py
test_undo_command.py
test_wait_for_mcp_discovery.py