feat: save account model and thinking settings for Hermes
Rebuild & Deploy / rebuild (push) Successful in 1m9s

This commit is contained in:
snowspeeder committed 2026-10-01 16:38:34 -04:00
1 parent a45569f8c1
commit 6cb4427210
13 files changed
+798 -16

No files matched your search

+27 -1
View File
@@ -99,7 +99,7 @@ class HermesLLMTests(unittest.IsolatedAsyncioTestCase):
self.assertEqual(request.headers["x-hermes-session-id"], "stable-room")
self.assertEqual(request.headers["x-hermes-session-key"], "hope:alice")
self.assertEqual(json.loads(request.content), {
"model": "hermes-agent", "stream": True,
"model": "auto", "provider": "custom:hope-upstream", "stream": True,
"messages": [
{"role": "system", "content": "EXACT system prompt\nDo not alter."},
{"role": "user", "content": "hello\nworld"},
@@ -347,6 +347,32 @@ class HermesLLMTests(unittest.IsolatedAsyncioTestCase):
self.assertEqual(result.text, "Done")
self.assertEqual(len(self.requests), 1)
async def test_saved_model_and_thinking_refreshed_per_turn(self):
selected = {'model': 'openai/gpt-example', 'thinking_level': 'high'}
async def settings():
return dict(selected)
bridge = self.bridge(FakeSSE([data({'content': 'Done'}), b'data: [DONE]\n\n']), get_model_settings=settings)
for effort in ('high', 'none', 'low'):
selected['thinking_level'] = effort
await bridge.chat(chat_ctx=self.context(), extra_kwargs={'provider': 'evil', 'model': 'evil'}).collect()
body = json.loads(self.requests[-1].content)
self.assertEqual(body['model'], 'openai/gpt-example')
self.assertEqual(body['provider'], 'custom:hope-upstream')
expected = {'enabled': False} if effort == 'none' else {'enabled': True, 'effort': effort}
self.assertEqual(body['model_options']['reasoning'], expected)
selected['model'] = 'intel-b70-1/Qwen3.8-27b'
await bridge.chat(chat_ctx=self.context()).collect()
self.assertEqual(json.loads(self.requests[-1].content)['model'], selected['model'])
async def test_settings_failure_does_not_call_hermes_or_leak(self):
async def broken():
raise RuntimeError('private-key')
with self.assertRaises(HermesLLMError) as caught:
await self.bridge(FakeSSE([]), get_model_settings=broken).chat(chat_ctx=self.context()).collect()
self.assertEqual(caught.exception.code, 'settings_unavailable')
self.assertNotIn('private-key', str(caught.exception))
self.assertEqual(self.requests, [])
async def test_transport_exception_redacted(self):
def broken(request):
self.requests.append(request)