From 5e8f8bd4a1aad984099be5d9b2655be53f9ade41 Mon Sep 17 00:00:00 2001 From: ekko <152005280+EKKOLearnAI@users.noreply.github.com> Date: Sun, 17 May 2026 12:20:53 +0800 Subject: [PATCH] Add session-level bridge model settings (#811) --- package.json | 2 +- packages/client/src/api/hermes/chat.ts | 2 + .../client/src/api/hermes/conversations.ts | 1 + packages/client/src/api/hermes/sessions.ts | 13 + .../src/components/hermes/chat/ChatPanel.vue | 401 +++++++++++++++++- .../hermes/chat/ConversationMonitorPane.vue | 9 +- .../hermes/chat/SessionListItem.vue | 11 +- .../components/hermes/models/ProviderCard.vue | 2 +- packages/client/src/data/changelog.ts | 10 + packages/client/src/i18n/locales/de.ts | 4 + packages/client/src/i18n/locales/en.ts | 8 + packages/client/src/i18n/locales/es.ts | 4 + packages/client/src/i18n/locales/fr.ts | 4 + packages/client/src/i18n/locales/ja.ts | 4 + packages/client/src/i18n/locales/ko.ts | 4 + packages/client/src/i18n/locales/pt.ts | 4 + packages/client/src/i18n/locales/zh-TW.ts | 4 + packages/client/src/i18n/locales/zh.ts | 8 + packages/client/src/stores/hermes/app.ts | 32 +- packages/client/src/stores/hermes/chat.ts | 39 +- packages/client/src/stores/hermes/models.ts | 6 +- .../client/src/views/hermes/ModelsView.vue | 5 +- .../server/src/controllers/hermes/sessions.ts | 23 + packages/server/src/db/hermes/schemas.ts | 1 + .../server/src/db/hermes/session-store.ts | 11 +- packages/server/src/routes/hermes/sessions.ts | 1 + .../services/hermes/agent-bridge/client.ts | 11 +- .../hermes/agent-bridge/hermes_bridge.py | 23 +- .../hermes/run-chat/handle-api-run.ts | 8 +- .../hermes/run-chat/handle-bridge-run.ts | 55 ++- .../src/services/hermes/run-chat/index.ts | 16 +- .../src/services/hermes/run-chat/types.ts | 2 + .../client/conversation-monitor-pane.test.ts | 2 + tests/server/sessions-controller.test.ts | 23 + tests/server/sessions-routes.test.ts | 4 + 35 files changed, 697 insertions(+), 60 deletions(-) diff --git a/package.json b/package.json index 3abd448..ed5c46b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hermes-web-ui", - "version": "0.5.26", + "version": "0.5.27", "description": "Self-hosted AI chat dashboard for Hermes Agent — multi-model web UI with multi-platform integration", "repository": { "type": "git", diff --git a/packages/client/src/api/hermes/chat.ts b/packages/client/src/api/hermes/chat.ts index 877c8c2..6f75cc6 100644 --- a/packages/client/src/api/hermes/chat.ts +++ b/packages/client/src/api/hermes/chat.ts @@ -16,6 +16,8 @@ export interface StartRunRequest { instructions?: string session_id?: string model?: string + provider?: string + model_groups?: Array<{ provider: string; models: string[] }> queue_id?: string source?: 'api_server' | 'cli' } diff --git a/packages/client/src/api/hermes/conversations.ts b/packages/client/src/api/hermes/conversations.ts index d4d2707..cb7c07f 100644 --- a/packages/client/src/api/hermes/conversations.ts +++ b/packages/client/src/api/hermes/conversations.ts @@ -4,6 +4,7 @@ export interface ConversationSummary { id: string source: string model: string + provider?: string title: string | null started_at: number ended_at: number | null diff --git a/packages/client/src/api/hermes/sessions.ts b/packages/client/src/api/hermes/sessions.ts index 5e463c8..83e5114 100644 --- a/packages/client/src/api/hermes/sessions.ts +++ b/packages/client/src/api/hermes/sessions.ts @@ -4,6 +4,7 @@ export interface SessionSummary { id: string source: string model: string + provider?: string title: string | null preview?: string started_at: number @@ -147,6 +148,18 @@ export async function setSessionWorkspace(id: string, workspace: string | null): } } +export async function setSessionModel(id: string, model: string, provider: string): Promise { + try { + await request(`/api/hermes/sessions/${id}/model`, { + method: 'POST', + body: JSON.stringify({ model, provider }), + }) + return true + } catch { + return false + } +} + export async function exportSession(id: string, mode: 'full' | 'compressed' = 'full', ext: 'json' | 'txt' = 'json'): Promise { const baseUrl = getBaseUrlValue() const token = getApiKey() diff --git a/packages/client/src/components/hermes/chat/ChatPanel.vue b/packages/client/src/components/hermes/chat/ChatPanel.vue index accb06b..697ec74 100644 --- a/packages/client/src/components/hermes/chat/ChatPanel.vue +++ b/packages/client/src/components/hermes/chat/ChatPanel.vue @@ -1,15 +1,18 @@