mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-19 14:41:24 +08:00
fix: disappeared MCP button (#10956)
* refactor(types): add InputBarToolType and update related types - Define InputBarToolType union type in chat types - Update ToolOrder and InputToolsState to use InputBarToolType - Modify InputbarTools component to use new type for tool keys * refactor(assistants): use DEFAULT_ASSISTANT_SETTINGS constant for default settings * fix(assistants): ensure default settings for presets in migration Add default settings for assistant presets during migration if they are missing, including toolUseMode
This commit is contained in:
parent
487b5c4d8a
commit
8054ed7ad8
@ -19,6 +19,7 @@ import { getModelUniqId } from '@renderer/services/ModelService'
|
|||||||
import { useAppDispatch, useAppSelector } from '@renderer/store'
|
import { useAppDispatch, useAppSelector } from '@renderer/store'
|
||||||
import { setIsCollapsed, setToolOrder } from '@renderer/store/inputTools'
|
import { setIsCollapsed, setToolOrder } from '@renderer/store/inputTools'
|
||||||
import { FileType, FileTypes, KnowledgeBase, Model } from '@renderer/types'
|
import { FileType, FileTypes, KnowledgeBase, Model } from '@renderer/types'
|
||||||
|
import { InputBarToolType } from '@renderer/types/chat'
|
||||||
import { classNames } from '@renderer/utils'
|
import { classNames } from '@renderer/utils'
|
||||||
import { isPromptToolUse, isSupportedToolUse } from '@renderer/utils/mcp-tools'
|
import { isPromptToolUse, isSupportedToolUse } from '@renderer/utils/mcp-tools'
|
||||||
import { Divider, Dropdown, Tooltip } from 'antd'
|
import { Divider, Dropdown, Tooltip } from 'antd'
|
||||||
@ -85,7 +86,7 @@ export interface InputbarToolsProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface ToolButtonConfig {
|
interface ToolButtonConfig {
|
||||||
key: string
|
key: InputBarToolType
|
||||||
component: ReactNode
|
component: ReactNode
|
||||||
condition?: boolean
|
condition?: boolean
|
||||||
visible?: boolean
|
visible?: boolean
|
||||||
@ -184,7 +185,7 @@ const InputbarTools = ({
|
|||||||
const clearTopicShortcut = useShortcutDisplay('clear_topic')
|
const clearTopicShortcut = useShortcutDisplay('clear_topic')
|
||||||
|
|
||||||
const toggleToolVisibility = useCallback(
|
const toggleToolVisibility = useCallback(
|
||||||
(toolKey: string, isVisible: boolean | undefined) => {
|
(toolKey: InputBarToolType, isVisible: boolean | undefined) => {
|
||||||
const newToolOrder = {
|
const newToolOrder = {
|
||||||
visible: [...toolOrder.visible],
|
visible: [...toolOrder.visible],
|
||||||
hidden: [...toolOrder.hidden]
|
hidden: [...toolOrder.hidden]
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit'
|
import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit'
|
||||||
import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant'
|
import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant'
|
||||||
import { TopicManager } from '@renderer/hooks/useTopic'
|
import { TopicManager } from '@renderer/hooks/useTopic'
|
||||||
import { getDefaultAssistant, getDefaultTopic } from '@renderer/services/AssistantService'
|
import { DEFAULT_ASSISTANT_SETTINGS, getDefaultAssistant, getDefaultTopic } from '@renderer/services/AssistantService'
|
||||||
import { Assistant, AssistantPreset, AssistantSettings, Model, Topic } from '@renderer/types'
|
import { Assistant, AssistantPreset, AssistantSettings, Model, Topic } from '@renderer/types'
|
||||||
import { isEmpty, uniqBy } from 'lodash'
|
import { isEmpty, uniqBy } from 'lodash'
|
||||||
|
|
||||||
@ -215,13 +215,7 @@ const assistantsSlice = createSlice({
|
|||||||
if (agent.id === action.payload.assistantId) {
|
if (agent.id === action.payload.assistantId) {
|
||||||
for (const key in settings) {
|
for (const key in settings) {
|
||||||
if (!agent.settings) {
|
if (!agent.settings) {
|
||||||
agent.settings = {
|
agent.settings = DEFAULT_ASSISTANT_SETTINGS
|
||||||
temperature: DEFAULT_TEMPERATURE,
|
|
||||||
contextCount: DEFAULT_CONTEXTCOUNT,
|
|
||||||
enableMaxTokens: false,
|
|
||||||
maxTokens: 0,
|
|
||||||
streamOutput: true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
agent.settings[key] = settings[key]
|
agent.settings[key] = settings[key]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
|
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
|
||||||
|
import { InputBarToolType } from '@renderer/types/chat'
|
||||||
|
|
||||||
export type ToolOrder = {
|
type ToolOrder = {
|
||||||
visible: string[]
|
visible: InputBarToolType[]
|
||||||
hidden: string[]
|
hidden: InputBarToolType[]
|
||||||
}
|
}
|
||||||
|
|
||||||
export const DEFAULT_TOOL_ORDER: ToolOrder = {
|
export const DEFAULT_TOOL_ORDER: ToolOrder = {
|
||||||
@ -20,7 +21,7 @@ export const DEFAULT_TOOL_ORDER: ToolOrder = {
|
|||||||
hidden: ['quick_phrases', 'clear_topic', 'toggle_expand', 'new_context']
|
hidden: ['quick_phrases', 'clear_topic', 'toggle_expand', 'new_context']
|
||||||
}
|
}
|
||||||
|
|
||||||
export type InputToolsState = {
|
type InputToolsState = {
|
||||||
toolOrder: ToolOrder
|
toolOrder: ToolOrder
|
||||||
isCollapsed: boolean
|
isCollapsed: boolean
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2708,6 +2708,13 @@ const migrateConfig = {
|
|||||||
if (state.assistants.presets === undefined) {
|
if (state.assistants.presets === undefined) {
|
||||||
state.assistants.presets = []
|
state.assistants.presets = []
|
||||||
}
|
}
|
||||||
|
state.assistants.presets.forEach((preset) => {
|
||||||
|
if (!preset.settings) {
|
||||||
|
preset.settings = DEFAULT_ASSISTANT_SETTINGS
|
||||||
|
} else if (!preset.settings.toolUseMode) {
|
||||||
|
preset.settings.toolUseMode = DEFAULT_ASSISTANT_SETTINGS.toolUseMode
|
||||||
|
}
|
||||||
|
})
|
||||||
return state
|
return state
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('migrate 166 error', error as Error)
|
logger.error('migrate 166 error', error as Error)
|
||||||
|
|||||||
@ -1 +1,16 @@
|
|||||||
export type Tab = 'assistants' | 'topic' | 'settings'
|
export type Tab = 'assistants' | 'topic' | 'settings'
|
||||||
|
|
||||||
|
export type InputBarToolType =
|
||||||
|
| 'new_topic'
|
||||||
|
| 'attachment'
|
||||||
|
| 'thinking'
|
||||||
|
| 'web_search'
|
||||||
|
| 'url_context'
|
||||||
|
| 'knowledge_base'
|
||||||
|
| 'mcp_tools'
|
||||||
|
| 'generate_image'
|
||||||
|
| 'mention_models'
|
||||||
|
| 'quick_phrases'
|
||||||
|
| 'clear_topic'
|
||||||
|
| 'toggle_expand'
|
||||||
|
| 'new_context'
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user