hermes-agent/agent
Jacky Zeng 25aa626cb4 fix(vision): forward custom-endpoint credentials in vision auto-detect
A custom:<name> main provider resolves at runtime to the bare provider id
"custom". In the vision auto-detect chain, the main-provider branch called
resolve_provider_client("custom", ...) WITHOUT explicit_base_url/api_key,
so it returned (None, None) ("no endpoint credentials found") and the whole
chain fell through to OpenRouter/Nous. A user on a custom endpoint with no
aggregator configured then got "No LLM provider configured for task=vision
provider=auto" on every image, even though their main model fully supports
vision.

Recover the live endpoint that set_runtime_main() records each turn
(_RUNTIME_MAIN_BASE_URL/_API_KEY/_API_MODE) and forward it to Step 1, with
a fallback to _resolve_custom_runtime() for non-gateway callers. Mirrors the
existing explicit-base_url branch directly above.

Adds TestResolveVisionCustomProvider covering custom, custom:<name>, and the
no-runtime fallback path.
2026-07-03 03:54:01 -07:00
..
lsp fix(tui): prevent killpg suicide during MCP shutdown 2026-07-01 04:54:46 -07:00
pet fix(pet): snap kitty frames to whole cells 2026-06-30 15:41:44 -05:00
secret_sources
transports fix(security): strip dynamic Hermes secrets from all subprocess spawn env 2026-07-01 14:37:22 +05:30
__init__.py
account_usage.py
agent_init.py fix(agent): self-review follow-ups on vLLM local-context salvage 2026-07-03 03:36:22 +05:30
agent_runtime_helpers.py fix(agent): route restore custom-pool match through canonical helper 2026-07-02 13:41:53 +05:30
anthropic_adapter.py fix(anthropic): use claude-code/ UA prefix for OAuth to avoid 404 (#48534) 2026-07-01 15:42:15 +05:30
async_utils.py
auxiliary_client.py fix(vision): forward custom-endpoint credentials in vision auto-detect 2026-07-03 03:54:01 -07:00
azure_identity_adapter.py
background_review.py fix(review): isolate the background-review fork from the canonical session 2026-07-01 16:21:39 +05:30
bedrock_adapter.py
billing_view.py
browser_provider.py
browser_registry.py
chat_completion_helpers.py docs(codex): clarify stale-floor docstring reflects the 10k gate 2026-07-02 17:05:05 +05:30
codex_responses_adapter.py
codex_runtime.py refactor(approval): extract is_approval_bypass_active(); use frozen-env bypass in codex routing 2026-07-01 22:58:37 +05:30
coding_context.py feat(agent): add configurable coding_instructions 2026-06-30 00:59:59 -05:00
context_breakdown.py feat(desktop): add context usage breakdown popover 2026-06-29 09:18:10 -04:00
context_compressor.py fix(agent): enforce marker-strip invariant with a single terminal sweep (#57491) 2026-07-03 12:51:12 +05:30
context_engine.py fix(context): clamp -1 post-compression sentinel in sibling status paths 2026-07-01 13:36:50 +05:30
context_references.py fix(security): anchor @file context refs to canonical read deny-list 2026-07-01 02:43:49 -07:00
conversation_compression.py fix(agent): make compression lock-lease refresher tolerate transient DB blips 2026-06-30 13:36:29 +05:30
conversation_loop.py fix(moa): default temperatures to unset — provider default, like single-model agents (#57440) 2026-07-03 00:22:49 -07:00
copilot_acp_client.py fix(agent): stream copilot ACP chat completions 2026-06-28 22:52:51 -07:00
credential_persistence.py feat(auth): make xAI Grok OAuth device-code-only, drop loopback login 2026-07-02 13:17:41 -07:00
credential_pool.py fix(auth): remove stale loopback_pkce reference in xAI quarantine removal list 2026-07-02 13:17:41 -07:00
credential_sources.py feat(auth): make xAI Grok OAuth device-code-only, drop loopback login 2026-07-02 13:17:41 -07:00
credits_tracker.py
curator.py fix(curator): never archive cron-referenced skills + floor use=0 pruning (#54443) 2026-06-28 15:10:21 -07:00
curator_backup.py
display.py feat(display): friendly human-phrased tool labels for built-in tools (#55166) 2026-06-29 20:31:17 -07:00
error_classifier.py fix(error-classifier): route 5xx context-overflow into compression 2026-07-01 16:14:16 +05:30
errors.py
file_safety.py fix(file): block credential paths from search results 2026-07-01 01:02:35 -07:00
gemini_native_adapter.py Merge consecutive same-role contents for native Gemini 2026-06-30 11:51:22 -07:00
gemini_schema.py
i18n.py
image_gen_provider.py
image_gen_registry.py
image_routing.py fix(agent): prefer native vision over auxiliary fallback in auto mode (#29135) 2026-07-03 03:43:35 -07:00
insights.py
iteration_budget.py
jiter_preload.py
learn_prompt.py fix(learn): honor requirements mixed with sources in /learn requests (#55956) 2026-06-30 16:56:01 -07:00
learning_graph.py fix(learning_graph): guard non-dict metadata so /journey can't crash 2026-07-01 16:25:48 -05:00
learning_graph_render.py fix(journey): swap skill/memory inks so drillable rows read as clickable 2026-06-30 11:54:16 -05:00
learning_mutations.py refactor(journey): route memory mutations through MemoryStore atomic I/O 2026-06-30 15:16:21 -05:00
lmstudio_reasoning.py
manual_compression_feedback.py
markdown_tables.py
memory_manager.py fix(cli): reliable interrupts, bounded exit, and exit feedback (#57000) 2026-07-02 04:20:43 -07:00
memory_provider.py
message_content.py
message_sanitization.py
moa_loop.py fix(moa): user_turn fanout — synthetic advisory marker must not count as a user turn (#57598) 2026-07-03 01:24:58 -07:00
moa_trace.py fix(moa): capture streamed aggregator output into full-turn traces (#56312) 2026-07-01 04:07:46 -07:00
model_metadata.py fix(agent): self-review follow-ups on vLLM local-context salvage 2026-07-03 03:36:22 +05:30
models_dev.py
moonshot_schema.py
nous_rate_guard.py
onboarding.py
oneshot.py
plugin_llm.py
portal_tags.py
process_bootstrap.py fix(agent): honor custom CA certs on aux client + harden TLS resolution 2026-07-02 04:51:56 +05:30
prompt_builder.py fix(agent): limit .hermes.md parent walk to git repos only 2026-06-28 20:46:32 -07:00
prompt_caching.py
rate_limit_tracker.py
reasoning_timeouts.py
redact.py security(agent): redact Slack App-Level (xapp-) tokens 2026-07-01 02:45:22 -07:00
replay_cleanup.py fix(tui): sanitize replay history on WebUI/TUI session resume (#29086) (#53939) 2026-06-27 20:56:49 -07:00
retry_utils.py
runtime_cwd.py
secret_scope.py
shell_hooks.py feat(agent): add pre_verify hook and verify-on-stop coding guidance 2026-06-30 00:59:29 -05:00
skill_bundles.py
skill_commands.py
skill_preprocessing.py fix(windows): hide console-window flash on backend git/gh/wmic/bash subprocess spawns 2026-06-28 05:28:45 -07:00
skill_utils.py
ssl_guard.py
ssl_verify.py fix(agent): honor custom CA certs on aux client + harden TLS resolution 2026-07-02 04:51:56 +05:30
stream_diag.py
subdirectory_hints.py fix(subdirectory_hints): catch RuntimeError from Path.expanduser() 2026-07-01 04:55:15 -07:00
system_prompt.py
think_scrubber.py
thinking_timeout_guidance.py
thread_scoped_output.py fix(bg-review): scope stdout/stderr silencing to the worker thread (#55966) 2026-06-30 17:28:33 -07:00
title_generator.py fix(title_generator): strip think blocks from LLM output before extracting title 2026-07-01 04:18:48 -07:00
tool_dispatch_helpers.py fix(agent): wrap list-type untrusted content in untrusted_tool_result 2026-07-01 02:44:09 -07:00
tool_executor.py fix(cli): reliable interrupts, bounded exit, and exit feedback (#57000) 2026-07-02 04:20:43 -07:00
tool_guardrails.py
tool_result_classification.py
trajectory.py
transcription_provider.py
transcription_registry.py
tts_provider.py
tts_registry.py
turn_context.py fix(memory): degrade gracefully after repeated at-capacity consolidation failures (#42405) 2026-06-30 20:01:16 +05:30
turn_finalizer.py fix(agent): persist recovered final responses 2026-07-01 03:34:49 -07:00
turn_retry_state.py feat(vertex): add Google Vertex AI provider for Gemini (OAuth2) 2026-07-01 05:25:33 -07:00
usage_pricing.py fix(usage): capture reasoning_tokens from completion_tokens_details on chat_completions (#57340) 2026-07-02 13:52:42 -07:00
verification_evidence.py
verification_stop.py feat(agent): restore surface-aware "auto" default for verify_on_stop 2026-06-30 01:43:08 -05:00
verify_hooks.py feat(agent): add pre_verify hook and verify-on-stop coding guidance 2026-06-30 00:59:29 -05:00
vertex_adapter.py security(vertex): route credential/project/region resolution through the profile secret scope 2026-07-02 06:07:56 +05:30
video_gen_provider.py
video_gen_registry.py
web_search_provider.py
web_search_registry.py