r1000th commited on
Commit
144741c
·
verified ·
1 Parent(s): 57a069c

Update hermes_cli/runtime_provider.py

Browse files
Files changed (1) hide show
  1. hermes_cli/runtime_provider.py +22 -3
hermes_cli/runtime_provider.py CHANGED
@@ -89,6 +89,20 @@ def _get_model_config() -> Dict[str, Any]:
89
  return {}
90
 
91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  def _provider_supports_explicit_api_mode(provider: Optional[str], configured_provider: Optional[str] = None) -> bool:
93
  """Check whether a persisted api_mode should be honored for a given provider.
94
 
@@ -287,6 +301,8 @@ def _get_named_custom_provider(requested_provider: str) -> Optional[Dict[str, An
287
  # Resolve the API key from the env var name stored in key_env
288
  key_env = str(entry.get("key_env", "") or "").strip()
289
  resolved_api_key = os.getenv(key_env, "").strip() if key_env else ""
 
 
290
 
291
  if requested_norm in {ep_name, name_norm, f"custom:{name_norm}"}:
292
  # Found match by provider key
@@ -419,8 +435,9 @@ def _resolve_openrouter_runtime(
419
  requested_provider: str,
420
  explicit_api_key: Optional[str] = None,
421
  explicit_base_url: Optional[str] = None,
 
422
  ) -> Dict[str, Any]:
423
- model_cfg = _get_model_config()
424
  cfg_base_url = model_cfg.get("base_url") if isinstance(model_cfg.get("base_url"), str) else ""
425
  cfg_provider = model_cfg.get("provider") if isinstance(model_cfg.get("provider"), str) else ""
426
  cfg_api_key = ""
@@ -474,8 +491,8 @@ def _resolve_openrouter_runtime(
474
  (cfg_api_key if use_config_base_url else ""),
475
  (os.getenv("OLLAMA_API_KEY") if _is_ollama_url else ""),
476
  os.getenv("OPENAI_API_KEY"),
477
- os.getenv("OPENROUTER_API_KEY"),
478
  ]
 
479
  api_key = next(
480
  (str(candidate or "").strip() for candidate in api_key_candidates if has_usable_secret(candidate)),
481
  "",
@@ -648,10 +665,12 @@ def resolve_runtime_provider(
648
  requested: Optional[str] = None,
649
  explicit_api_key: Optional[str] = None,
650
  explicit_base_url: Optional[str] = None,
 
651
  ) -> Dict[str, Any]:
652
  """Resolve runtime provider credentials for agent execution."""
653
  requested_provider = resolve_requested_provider(requested)
654
 
 
655
  custom_runtime = _resolve_named_custom_runtime(
656
  requested_provider=requested_provider,
657
  explicit_api_key=explicit_api_key,
@@ -666,7 +685,6 @@ def resolve_runtime_provider(
666
  explicit_api_key=explicit_api_key,
667
  explicit_base_url=explicit_base_url,
668
  )
669
- model_cfg = _get_model_config()
670
  explicit_runtime = _resolve_explicit_runtime(
671
  provider=provider,
672
  requested_provider=requested_provider,
@@ -878,6 +896,7 @@ def resolve_runtime_provider(
878
  requested_provider=requested_provider,
879
  explicit_api_key=explicit_api_key,
880
  explicit_base_url=explicit_base_url,
 
881
  )
882
  runtime["requested_provider"] = requested_provider
883
  return runtime
 
89
  return {}
90
 
91
 
92
+ def _model_config_with_target(target_model: Optional[str] = None) -> Dict[str, Any]:
93
+ """Return model config, optionally overriding the runtime model name.
94
+
95
+ External callers such as hermes-web-ui may resolve credentials for a
96
+ specific chat model without persisting that model into config.yaml.
97
+ """
98
+ model_cfg = _get_model_config()
99
+ target = str(target_model or "").strip()
100
+ if target:
101
+ model_cfg = dict(model_cfg)
102
+ model_cfg["default"] = target
103
+ return model_cfg
104
+
105
+
106
  def _provider_supports_explicit_api_mode(provider: Optional[str], configured_provider: Optional[str] = None) -> bool:
107
  """Check whether a persisted api_mode should be honored for a given provider.
108
 
 
301
  # Resolve the API key from the env var name stored in key_env
302
  key_env = str(entry.get("key_env", "") or "").strip()
303
  resolved_api_key = os.getenv(key_env, "").strip() if key_env else ""
304
+ configured_api_key = str(entry.get("api_key", "") or "").strip()
305
+ resolved_api_key = resolved_api_key or configured_api_key
306
 
307
  if requested_norm in {ep_name, name_norm, f"custom:{name_norm}"}:
308
  # Found match by provider key
 
435
  requested_provider: str,
436
  explicit_api_key: Optional[str] = None,
437
  explicit_base_url: Optional[str] = None,
438
+ target_model: Optional[str] = None,
439
  ) -> Dict[str, Any]:
440
+ model_cfg = _model_config_with_target(target_model)
441
  cfg_base_url = model_cfg.get("base_url") if isinstance(model_cfg.get("base_url"), str) else ""
442
  cfg_provider = model_cfg.get("provider") if isinstance(model_cfg.get("provider"), str) else ""
443
  cfg_api_key = ""
 
491
  (cfg_api_key if use_config_base_url else ""),
492
  (os.getenv("OLLAMA_API_KEY") if _is_ollama_url else ""),
493
  os.getenv("OPENAI_API_KEY"),
 
494
  ]
495
+ api_key_candidates.append(os.getenv("OPENROUTER_API_KEY"))
496
  api_key = next(
497
  (str(candidate or "").strip() for candidate in api_key_candidates if has_usable_secret(candidate)),
498
  "",
 
665
  requested: Optional[str] = None,
666
  explicit_api_key: Optional[str] = None,
667
  explicit_base_url: Optional[str] = None,
668
+ target_model: Optional[str] = None,
669
  ) -> Dict[str, Any]:
670
  """Resolve runtime provider credentials for agent execution."""
671
  requested_provider = resolve_requested_provider(requested)
672
 
673
+ model_cfg = _model_config_with_target(target_model)
674
  custom_runtime = _resolve_named_custom_runtime(
675
  requested_provider=requested_provider,
676
  explicit_api_key=explicit_api_key,
 
685
  explicit_api_key=explicit_api_key,
686
  explicit_base_url=explicit_base_url,
687
  )
 
688
  explicit_runtime = _resolve_explicit_runtime(
689
  provider=provider,
690
  requested_provider=requested_provider,
 
896
  requested_provider=requested_provider,
897
  explicit_api_key=explicit_api_key,
898
  explicit_base_url=explicit_base_url,
899
+ target_model=target_model,
900
  )
901
  runtime["requested_provider"] = requested_provider
902
  return runtime