diff --git a/packages/client/src/api/hermes/group-chat.ts b/packages/client/src/api/hermes/group-chat.ts index 7b427c3a8..49f6dd485 100644 --- a/packages/client/src/api/hermes/group-chat.ts +++ b/packages/client/src/api/hermes/group-chat.ts @@ -11,6 +11,7 @@ export interface RoomInfo { maxHistoryTokens?: number tailMessageCount?: number totalTokens?: number + defaultAgentId?: string | null } export interface RoomAgent { @@ -226,3 +227,11 @@ export async function forceCompress(roomId: string): Promise<{ success: boolean; method: 'POST', }) } + +export async function setDefaultAgent(roomId: string, agentId: string): Promise<{ success: boolean }> { + return request(`/api/hermes/group-chat/rooms/${roomId}/default-agent`, { + method: 'PUT', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ agentId }), + }) +} diff --git a/packages/client/src/components/hermes/group-chat/GroupChatPanel.vue b/packages/client/src/components/hermes/group-chat/GroupChatPanel.vue index 902a0ee6e..7ed0c1a72 100644 --- a/packages/client/src/components/hermes/group-chat/GroupChatPanel.vue +++ b/packages/client/src/components/hermes/group-chat/GroupChatPanel.vue @@ -26,6 +26,7 @@ const isCompressing = ref(false) const selectedProfile = ref(null) const agentName = ref('') const agentDescription = ref('') +const setAsDefaultAgent = ref(false) const cloneSourceRoomId = ref(null) const cloneRoomName = ref('') const cloneInviteCode = ref('') @@ -186,11 +187,13 @@ async function confirmAddAgent() { profile: selectedProfile.value, name: agentName.value.trim() || undefined, description: agentDescription.value.trim() || undefined, + setDefaultAgent: setAsDefaultAgent.value, }) showAddAgentModal.value = false selectedProfile.value = null agentName.value = '' agentDescription.value = '' + setAsDefaultAgent.value = false message.success(t('groupChat.agentAdded')) } catch (err: any) { if (err.message?.includes('already')) { @@ -252,6 +255,16 @@ async function handleRemoveAgent(agentId: string) { } } +async function handleSetDefaultAgent(agentId: string) { + if (!store.currentRoomId) return + try { + await store.setDefaultAgent(store.currentRoomId, agentId) + message.success(t('groupChat.defaultAgentSet')) + } catch { + message.error(t('common.saveFailed')) + } +} + async function handleInterruptAgent(agentName: string) { try { await store.interruptAgent(agentName) @@ -366,13 +379,16 @@ watch(() => store.sortedMessages.length, async () => {
{{ t('groupChat.agents') }} ({{ store.agents.length }})
-
+
- {{ agent.name }} + + {{ agent.name }} + {{ t('groupChat.default') }} + {{ agent.profile }}
-
@@ -519,6 +535,12 @@ watch(() => store.sortedMessages.length, async () => { :placeholder="t('groupChat.agentDescPlaceholder')" />
+
+ +