From 9ae1fa9e39057517ef4cb70511e3e294f39e1a2f Mon Sep 17 00:00:00 2001 From: johnncenae Date: Wed, 29 Apr 2026 21:06:42 +0300 Subject: [PATCH] fix(delegate): honor runtime default model during provider resolution --- tests/tools/test_delegate.py | 20 ++++++++++++++++++++ tools/delegate_tool.py | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/tests/tools/test_delegate.py b/tests/tools/test_delegate.py index 6b4cc99150..1806a7e60f 100644 --- a/tests/tools/test_delegate.py +++ b/tests/tools/test_delegate.py @@ -786,6 +786,26 @@ class TestDelegationCredentialResolution(unittest.TestCase): self.assertEqual(creds["api_mode"], "chat_completions") mock_resolve.assert_called_once_with(requested="openrouter") + @patch("hermes_cli.runtime_provider.resolve_runtime_provider") + def test_provider_resolution_uses_runtime_model_when_config_model_missing(self, mock_resolve): + """Named providers should propagate their runtime default model to children.""" + mock_resolve.return_value = { + "provider": "custom", + "base_url": "https://my-server.example/v1", + "api_key": "sk-test-key", + "api_mode": "chat_completions", + "model": "server-default-model", + } + parent = _make_mock_parent(depth=0) + cfg = {"provider": "custom:my-server", "model": ""} + + creds = _resolve_delegation_credentials(cfg, parent) + + self.assertEqual(creds["model"], "server-default-model") + self.assertEqual(creds["provider"], "custom") + self.assertEqual(creds["base_url"], "https://my-server.example/v1") + mock_resolve.assert_called_once_with(requested="custom:my-server") + def test_direct_endpoint_uses_configured_base_url_and_api_key(self): parent = _make_mock_parent(depth=0) cfg = { diff --git a/tools/delegate_tool.py b/tools/delegate_tool.py index 7d2bb197e0..844e7bdfb0 100644 --- a/tools/delegate_tool.py +++ b/tools/delegate_tool.py @@ -2309,7 +2309,7 @@ def _resolve_delegation_credentials(cfg: dict, parent_agent) -> dict: ) return { - "model": configured_model, + "model": configured_model or runtime.get("model") or None, "provider": runtime.get("provider"), "base_url": runtime.get("base_url"), "api_key": api_key,