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 { setIsCollapsed, setToolOrder } from '@renderer/store/inputTools'
|
||||
import { FileType, FileTypes, KnowledgeBase, Model } from '@renderer/types'
|
||||
import { InputBarToolType } from '@renderer/types/chat'
|
||||
import { classNames } from '@renderer/utils'
|
||||
import { isPromptToolUse, isSupportedToolUse } from '@renderer/utils/mcp-tools'
|
||||
import { Divider, Dropdown, Tooltip } from 'antd'
|
||||
@ -85,7 +86,7 @@ export interface InputbarToolsProps {
|
||||
}
|
||||
|
||||
interface ToolButtonConfig {
|
||||
key: string
|
||||
key: InputBarToolType
|
||||
component: ReactNode
|
||||
condition?: boolean
|
||||
visible?: boolean
|
||||
@ -184,7 +185,7 @@ const InputbarTools = ({
|
||||
const clearTopicShortcut = useShortcutDisplay('clear_topic')
|
||||
|
||||
const toggleToolVisibility = useCallback(
|
||||
(toolKey: string, isVisible: boolean | undefined) => {
|
||||
(toolKey: InputBarToolType, isVisible: boolean | undefined) => {
|
||||
const newToolOrder = {
|
||||
visible: [...toolOrder.visible],
|
||||
hidden: [...toolOrder.hidden]
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit'
|
||||
import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant'
|
||||
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 { isEmpty, uniqBy } from 'lodash'
|
||||
|
||||
@ -215,13 +215,7 @@ const assistantsSlice = createSlice({
|
||||
if (agent.id === action.payload.assistantId) {
|
||||
for (const key in settings) {
|
||||
if (!agent.settings) {
|
||||
agent.settings = {
|
||||
temperature: DEFAULT_TEMPERATURE,
|
||||
contextCount: DEFAULT_CONTEXTCOUNT,
|
||||
enableMaxTokens: false,
|
||||
maxTokens: 0,
|
||||
streamOutput: true
|
||||
}
|
||||
agent.settings = DEFAULT_ASSISTANT_SETTINGS
|
||||
}
|
||||
agent.settings[key] = settings[key]
|
||||
}
|
||||
|
||||
@ -1,8 +1,9 @@
|
||||
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
|
||||
import { InputBarToolType } from '@renderer/types/chat'
|
||||
|
||||
export type ToolOrder = {
|
||||
visible: string[]
|
||||
hidden: string[]
|
||||
type ToolOrder = {
|
||||
visible: InputBarToolType[]
|
||||
hidden: InputBarToolType[]
|
||||
}
|
||||
|
||||
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']
|
||||
}
|
||||
|
||||
export type InputToolsState = {
|
||||
type InputToolsState = {
|
||||
toolOrder: ToolOrder
|
||||
isCollapsed: boolean
|
||||
}
|
||||
|
||||
@ -2708,6 +2708,13 @@ const migrateConfig = {
|
||||
if (state.assistants.presets === undefined) {
|
||||
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
|
||||
} catch (error) {
|
||||
logger.error('migrate 166 error', error as Error)
|
||||
|
||||
@ -1 +1,16 @@
|
||||
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