@opensumi/ide-ai-native 3.9.1-next-1748944723.0 → 3.9.1-next-1749007675.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/chat/chat-manager.service.d.ts +1 -0
- package/lib/browser/chat/chat-manager.service.d.ts.map +1 -1
- package/lib/browser/chat/chat-manager.service.js +8 -3
- package/lib/browser/chat/chat-manager.service.js.map +1 -1
- package/lib/browser/chat/chat-model.d.ts +3 -1
- package/lib/browser/chat/chat-model.d.ts.map +1 -1
- package/lib/browser/chat/chat-model.js +48 -17
- package/lib/browser/chat/chat-model.js.map +1 -1
- package/lib/browser/chat/chat-proxy.service.d.ts +2 -0
- package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
- package/lib/browser/chat/chat-proxy.service.js +57 -50
- package/lib/browser/chat/chat-proxy.service.js.map +1 -1
- package/lib/browser/chat/chat.feature.registry.d.ts +4 -1
- package/lib/browser/chat/chat.feature.registry.d.ts.map +1 -1
- package/lib/browser/chat/chat.feature.registry.js +6 -0
- package/lib/browser/chat/chat.feature.registry.js.map +1 -1
- package/lib/browser/chat/chat.view.d.ts.map +1 -1
- package/lib/browser/chat/chat.view.js +29 -12
- package/lib/browser/chat/chat.view.js.map +1 -1
- package/lib/browser/components/ChatMentionInput.d.ts.map +1 -1
- package/lib/browser/components/ChatMentionInput.js +30 -141
- package/lib/browser/components/ChatMentionInput.js.map +1 -1
- package/lib/browser/components/ChatToolRender.module.less +0 -1
- package/lib/browser/components/components.module.less +7 -9
- package/lib/browser/components/mention-input/mention-input.d.ts.map +1 -1
- package/lib/browser/components/mention-input/mention-input.js +14 -176
- package/lib/browser/components/mention-input/mention-input.js.map +1 -1
- package/lib/browser/components/mention-input/mention-input.module.less +1 -165
- package/lib/browser/components/mention-input/types.d.ts +1 -16
- package/lib/browser/components/mention-input/types.d.ts.map +1 -1
- package/lib/browser/components/mention-input/types.js +0 -1
- package/lib/browser/components/mention-input/types.js.map +1 -1
- package/lib/browser/components/utils.d.ts +2 -2
- package/lib/browser/context/llm-context.service.d.ts +2 -21
- package/lib/browser/context/llm-context.service.d.ts.map +1 -1
- package/lib/browser/context/llm-context.service.js +20 -162
- package/lib/browser/context/llm-context.service.js.map +1 -1
- package/lib/browser/contrib/intelligent-completions/decoration/additions-deletions.decoration.d.ts.map +1 -1
- package/lib/browser/contrib/intelligent-completions/decoration/additions-deletions.decoration.js.map +1 -1
- package/lib/browser/contrib/intelligent-completions/diff-computer.js +1 -1
- package/lib/browser/contrib/intelligent-completions/diff-computer.js.map +1 -1
- package/lib/browser/contrib/terminal/terminal.feature.registry.js.map +1 -1
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +0 -7
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/mcp/base-apply.service.d.ts +2 -2
- package/lib/browser/mcp/base-apply.service.d.ts.map +1 -1
- package/lib/browser/mcp/base-apply.service.js.map +1 -1
- package/lib/browser/mcp/tools/getDiagnosticsByPath.js.map +1 -1
- package/lib/browser/mcp/tools/getOpenEditorFileDiagnostics.js.map +1 -1
- package/lib/browser/mcp/tools/handlers/ListDir.js.map +1 -1
- package/lib/browser/mcp/tools/runTerminalCmd.js.map +1 -1
- package/lib/browser/model/msg-history-manager.d.ts +39 -1
- package/lib/browser/model/msg-history-manager.d.ts.map +1 -1
- package/lib/browser/model/msg-history-manager.js +170 -3
- package/lib/browser/model/msg-history-manager.js.map +1 -1
- package/lib/browser/preferences/schema.d.ts.map +1 -1
- package/lib/browser/preferences/schema.js +0 -5
- package/lib/browser/preferences/schema.js.map +1 -1
- package/lib/browser/types.d.ts +8 -1
- package/lib/browser/types.d.ts.map +1 -1
- package/lib/browser/types.js.map +1 -1
- package/lib/browser/widget/inline-stream-diff/live-preview.component.d.ts.map +1 -1
- package/lib/browser/widget/inline-stream-diff/live-preview.component.js.map +1 -1
- package/lib/common/index.d.ts +0 -2
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +0 -2
- package/lib/common/index.js.map +1 -1
- package/lib/common/llm-context.d.ts +0 -19
- package/lib/common/llm-context.d.ts.map +1 -1
- package/lib/common/llm-context.js.map +1 -1
- package/lib/common/prompts/context-prompt-provider.d.ts +2 -0
- package/lib/common/prompts/context-prompt-provider.d.ts.map +1 -1
- package/lib/common/prompts/context-prompt-provider.js +29 -35
- package/lib/common/prompts/context-prompt-provider.js.map +1 -1
- package/lib/common/types.d.ts +0 -7
- package/lib/common/types.d.ts.map +1 -1
- package/lib/node/base-language-model.d.ts.map +1 -1
- package/lib/node/base-language-model.js.map +1 -1
- package/package.json +24 -25
- package/src/browser/chat/chat-manager.service.ts +15 -6
- package/src/browser/chat/chat-model.ts +56 -19
- package/src/browser/chat/chat-proxy.service.ts +81 -68
- package/src/browser/chat/chat.feature.registry.ts +17 -1
- package/src/browser/chat/chat.view.tsx +28 -22
- package/src/browser/components/ChatMentionInput.tsx +35 -169
- package/src/browser/components/ChatToolRender.module.less +0 -1
- package/src/browser/components/components.module.less +7 -9
- package/src/browser/components/mention-input/mention-input.module.less +1 -165
- package/src/browser/components/mention-input/mention-input.tsx +32 -274
- package/src/browser/components/mention-input/types.ts +0 -16
- package/src/browser/context/llm-context.service.ts +21 -182
- package/src/browser/contrib/intelligent-completions/decoration/additions-deletions.decoration.ts +1 -1
- package/src/browser/contrib/intelligent-completions/diff-computer.ts +1 -1
- package/src/browser/contrib/terminal/terminal.feature.registry.ts +1 -1
- package/src/browser/index.ts +0 -8
- package/src/browser/mcp/base-apply.service.ts +1 -0
- package/src/browser/mcp/tools/getDiagnosticsByPath.ts +1 -1
- package/src/browser/mcp/tools/getOpenEditorFileDiagnostics.ts +1 -1
- package/src/browser/mcp/tools/handlers/ListDir.ts +1 -1
- package/src/browser/mcp/tools/runTerminalCmd.ts +1 -1
- package/src/browser/model/msg-history-manager.ts +230 -3
- package/src/browser/preferences/schema.ts +0 -5
- package/src/browser/types.ts +12 -0
- package/src/browser/widget/inline-stream-diff/live-preview.component.tsx +1 -0
- package/src/common/index.ts +0 -3
- package/src/common/llm-context.ts +0 -23
- package/src/common/prompts/context-prompt-provider.ts +40 -55
- package/src/common/types.ts +0 -8
- package/src/node/base-language-model.ts +1 -0
- package/lib/browser/components/mention-input/mention-select.d.ts +0 -28
- package/lib/browser/components/mention-input/mention-select.d.ts.map +0 -1
- package/lib/browser/components/mention-input/mention-select.js +0 -136
- package/lib/browser/components/mention-input/mention-select.js.map +0 -1
- package/lib/browser/components/mention-input/mention-select.module.less +0 -297
- package/lib/browser/rules/rules.contribution.d.ts +0 -29
- package/lib/browser/rules/rules.contribution.d.ts.map +0 -1
- package/lib/browser/rules/rules.contribution.js +0 -94
- package/lib/browser/rules/rules.contribution.js.map +0 -1
- package/lib/browser/rules/rules.module.less +0 -174
- package/lib/browser/rules/rules.service.d.ts +0 -25
- package/lib/browser/rules/rules.service.d.ts.map +0 -1
- package/lib/browser/rules/rules.service.js +0 -180
- package/lib/browser/rules/rules.service.js.map +0 -1
- package/lib/browser/rules/rules.view.d.ts +0 -3
- package/lib/browser/rules/rules.view.d.ts.map +0 -1
- package/lib/browser/rules/rules.view.js +0 -76
- package/lib/browser/rules/rules.view.js.map +0 -1
- package/lib/common/MDC_PARSER_README.md +0 -171
- package/lib/common/mdc-parser.d.ts +0 -60
- package/lib/common/mdc-parser.d.ts.map +0 -1
- package/lib/common/mdc-parser.js +0 -246
- package/lib/common/mdc-parser.js.map +0 -1
- package/lib/common/prompts/system-prompt.d.ts +0 -2
- package/lib/common/prompts/system-prompt.d.ts.map +0 -1
- package/lib/common/prompts/system-prompt.js +0 -5
- package/lib/common/prompts/system-prompt.js.map +0 -1
- package/src/browser/components/mention-input/mention-select.module.less +0 -297
- package/src/browser/components/mention-input/mention-select.tsx +0 -256
- package/src/browser/rules/rules.contribution.ts +0 -105
- package/src/browser/rules/rules.module.less +0 -174
- package/src/browser/rules/rules.service.ts +0 -189
- package/src/browser/rules/rules.view.tsx +0 -127
- package/src/common/MDC_PARSER_README.md +0 -171
- package/src/common/mdc-parser.ts +0 -295
- package/src/common/prompts/system-prompt.ts +0 -2
|
@@ -10,13 +10,7 @@ import {
|
|
|
10
10
|
useInjectable,
|
|
11
11
|
} from '@opensumi/ide-core-browser';
|
|
12
12
|
import { Icon, getIcon } from '@opensumi/ide-core-browser/lib/components';
|
|
13
|
-
import {
|
|
14
|
-
AINativeSettingSectionsId,
|
|
15
|
-
ChatFeatureRegistryToken,
|
|
16
|
-
RulesServiceToken,
|
|
17
|
-
URI,
|
|
18
|
-
localize,
|
|
19
|
-
} from '@opensumi/ide-core-common';
|
|
13
|
+
import { AINativeSettingSectionsId, ChatFeatureRegistryToken, URI, localize } from '@opensumi/ide-core-common';
|
|
20
14
|
import { CommandService } from '@opensumi/ide-core-common/lib/command';
|
|
21
15
|
import { defaultFilesWatcherExcludes } from '@opensumi/ide-core-common/lib/preferences/file-watch';
|
|
22
16
|
import { WorkbenchEditorService } from '@opensumi/ide-editor';
|
|
@@ -24,8 +18,6 @@ import { FileSearchServicePath, IFileSearchService } from '@opensumi/ide-file-se
|
|
|
24
18
|
import { OutlineCompositeTreeNode, OutlineTreeNode } from '@opensumi/ide-outline/lib/browser/outline-node.define';
|
|
25
19
|
import { OutlineTreeService } from '@opensumi/ide-outline/lib/browser/services/outline-tree.service';
|
|
26
20
|
import { IMessageService } from '@opensumi/ide-overlay';
|
|
27
|
-
import { IconType } from '@opensumi/ide-theme';
|
|
28
|
-
import { IconService } from '@opensumi/ide-theme/lib/browser';
|
|
29
21
|
import { IWorkspaceService } from '@opensumi/ide-workspace';
|
|
30
22
|
|
|
31
23
|
import { IChatInternalService } from '../../common';
|
|
@@ -33,8 +25,6 @@ import { LLMContextService } from '../../common/llm-context';
|
|
|
33
25
|
import { ChatFeatureRegistry } from '../chat/chat.feature.registry';
|
|
34
26
|
import { ChatInternalService } from '../chat/chat.internal.service';
|
|
35
27
|
import { MCPConfigCommands } from '../mcp/config/mcp-config.commands';
|
|
36
|
-
import { RulesCommands } from '../rules/rules.contribution';
|
|
37
|
-
import { RulesService } from '../rules/rules.service';
|
|
38
28
|
|
|
39
29
|
import styles from './components.module.less';
|
|
40
30
|
import { MentionInput } from './mention-input/mention-input';
|
|
@@ -82,21 +72,15 @@ export const ChatMentionInput = (props: IChatMentionInputProps) => {
|
|
|
82
72
|
const workspaceService = useInjectable<IWorkspaceService>(IWorkspaceService);
|
|
83
73
|
const editorService = useInjectable<WorkbenchEditorService>(WorkbenchEditorService);
|
|
84
74
|
const labelService = useInjectable<LabelService>(LabelService);
|
|
85
|
-
const iconService = useInjectable<IconService>(IconService);
|
|
86
75
|
const messageService = useInjectable<IMessageService>(IMessageService);
|
|
87
76
|
const chatFeatureRegistry = useInjectable<ChatFeatureRegistry>(ChatFeatureRegistryToken);
|
|
88
77
|
const outlineTreeService = useInjectable<OutlineTreeService>(OutlineTreeService);
|
|
89
78
|
const prevOutlineItems = useRef<MentionItem[]>([]);
|
|
90
79
|
const preferenceService = useInjectable<PreferenceService>(PreferenceService);
|
|
91
|
-
const rulesService = useInjectable<RulesService>(RulesServiceToken);
|
|
92
80
|
const handleShowMCPConfig = React.useCallback(() => {
|
|
93
81
|
commandService.executeCommand(MCPConfigCommands.OPEN_MCP_CONFIG.id);
|
|
94
82
|
}, [commandService]);
|
|
95
83
|
|
|
96
|
-
const handleShowRules = React.useCallback(() => {
|
|
97
|
-
commandService.executeCommand(RulesCommands.OPEN_RULES_FILE.id);
|
|
98
|
-
}, [commandService]);
|
|
99
|
-
|
|
100
84
|
useEffect(() => {
|
|
101
85
|
if (props.value !== value) {
|
|
102
86
|
setValue(props.value || '');
|
|
@@ -123,55 +107,6 @@ export const ChatMentionInput = (props: IChatMentionInputProps) => {
|
|
|
123
107
|
[outlineTreeService],
|
|
124
108
|
);
|
|
125
109
|
|
|
126
|
-
// 拆分目录路径为多个层级的辅助函数
|
|
127
|
-
const expandFolderPaths = async (folderPaths: string[], workspaceRootPath: string): Promise<MentionItem[]> => {
|
|
128
|
-
const expandedPaths = new Set<string>();
|
|
129
|
-
const workspaceUri = new URI(workspaceRootPath);
|
|
130
|
-
|
|
131
|
-
// 将所有路径展开为多层级
|
|
132
|
-
for (const folderPath of folderPaths) {
|
|
133
|
-
const uri = new URI(folderPath);
|
|
134
|
-
const relativePath = await workspaceService.asRelativePath(uri);
|
|
135
|
-
|
|
136
|
-
if (relativePath?.path) {
|
|
137
|
-
const pathSegments = relativePath.path.split('/').filter(Boolean);
|
|
138
|
-
|
|
139
|
-
// 为每个层级创建路径
|
|
140
|
-
for (let i = 0; i < pathSegments.length; i++) {
|
|
141
|
-
const segmentPath = pathSegments.slice(0, i + 1).join('/');
|
|
142
|
-
const fullPath = workspaceUri.resolve(segmentPath).codeUri.fsPath;
|
|
143
|
-
|
|
144
|
-
// 避免添加工作区本身或其上级目录
|
|
145
|
-
if (fullPath !== workspaceRootPath && !workspaceRootPath.startsWith(fullPath)) {
|
|
146
|
-
expandedPaths.add(fullPath);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
} else {
|
|
150
|
-
// 如果无法获取相对路径,直接添加(但仍要过滤工作区路径)
|
|
151
|
-
if (folderPath !== workspaceRootPath && !workspaceRootPath.startsWith(folderPath)) {
|
|
152
|
-
expandedPaths.add(folderPath);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// 转换为 MentionItem 格式
|
|
158
|
-
return Promise.all(
|
|
159
|
-
Array.from(expandedPaths).map(async (folderPath) => {
|
|
160
|
-
const uri = new URI(folderPath);
|
|
161
|
-
const relativePath = await workspaceService.asRelativePath(uri);
|
|
162
|
-
return {
|
|
163
|
-
id: uri.codeUri.fsPath,
|
|
164
|
-
type: MentionType.FOLDER,
|
|
165
|
-
text: uri.displayName,
|
|
166
|
-
value: uri.codeUri.fsPath,
|
|
167
|
-
description: relativePath?.root ? relativePath.path : '',
|
|
168
|
-
contextId: uri.codeUri.fsPath,
|
|
169
|
-
icon: getIcon('folder'),
|
|
170
|
-
};
|
|
171
|
-
}),
|
|
172
|
-
);
|
|
173
|
-
};
|
|
174
|
-
|
|
175
110
|
// 默认菜单项
|
|
176
111
|
const defaultMenuItems: MentionItem[] = [
|
|
177
112
|
{
|
|
@@ -279,7 +214,21 @@ export const ChatMentionInput = (props: IChatMentionInputProps) => {
|
|
|
279
214
|
.filter((folder) => folder !== workspaceService.workspace?.uri.toString() && folder !== '/'),
|
|
280
215
|
),
|
|
281
216
|
);
|
|
282
|
-
folders = await
|
|
217
|
+
folders = await Promise.all(
|
|
218
|
+
recentFolder.map(async (folder) => {
|
|
219
|
+
const uri = new URI(folder);
|
|
220
|
+
const relativePath = await workspaceService.asRelativePath(uri);
|
|
221
|
+
return {
|
|
222
|
+
id: uri.codeUri.fsPath,
|
|
223
|
+
type: MentionType.FOLDER,
|
|
224
|
+
text: uri.displayName,
|
|
225
|
+
value: uri.codeUri.fsPath,
|
|
226
|
+
description: relativePath?.root ? relativePath.path : '',
|
|
227
|
+
contextId: uri.codeUri.fsPath,
|
|
228
|
+
icon: getIcon('folder'),
|
|
229
|
+
};
|
|
230
|
+
}),
|
|
231
|
+
);
|
|
283
232
|
} else {
|
|
284
233
|
const rootUris = (await workspaceService.roots).map((root) => new URI(root.uri).codeUri.fsPath.toString());
|
|
285
234
|
const files = await searchService.find(searchText, {
|
|
@@ -297,11 +246,22 @@ export const ChatMentionInput = (props: IChatMentionInputProps) => {
|
|
|
297
246
|
.filter((folder) => folder !== workspaceService.workspace?.uri.toString()),
|
|
298
247
|
),
|
|
299
248
|
);
|
|
300
|
-
return
|
|
249
|
+
return Promise.all(
|
|
250
|
+
folders.map(async (folder) => {
|
|
251
|
+
const uri = new URI(folder);
|
|
252
|
+
return {
|
|
253
|
+
id: uri.codeUri.fsPath,
|
|
254
|
+
type: MentionType.FOLDER,
|
|
255
|
+
text: uri.displayName,
|
|
256
|
+
value: uri.codeUri.fsPath,
|
|
257
|
+
description: (await workspaceService.asRelativePath(uri.parent))?.path || '',
|
|
258
|
+
contextId: uri.codeUri.fsPath,
|
|
259
|
+
icon: getIcon('folder'),
|
|
260
|
+
};
|
|
261
|
+
}),
|
|
262
|
+
);
|
|
301
263
|
}
|
|
302
|
-
return folders
|
|
303
|
-
.filter(Boolean)
|
|
304
|
-
.filter((folder) => folder.id !== new URI(workspaceService.workspace?.uri).codeUri.fsPath);
|
|
264
|
+
return folders.filter((folder) => folder.id !== new URI(workspaceService.workspace?.uri).codeUri.fsPath);
|
|
305
265
|
},
|
|
306
266
|
},
|
|
307
267
|
{
|
|
@@ -352,100 +312,13 @@ export const ChatMentionInput = (props: IChatMentionInputProps) => {
|
|
|
352
312
|
}
|
|
353
313
|
},
|
|
354
314
|
},
|
|
355
|
-
{
|
|
356
|
-
id: MentionType.RULE,
|
|
357
|
-
type: MentionType.RULE,
|
|
358
|
-
text: 'Rule',
|
|
359
|
-
icon: getIcon('rules'),
|
|
360
|
-
getHighestLevelItems: () => [],
|
|
361
|
-
getItems: async (searchText: string) => {
|
|
362
|
-
const rules = await rulesService.projectRules;
|
|
363
|
-
const mappedRules = rules.map((rule) => {
|
|
364
|
-
const uri = new URI(rule.path);
|
|
365
|
-
return {
|
|
366
|
-
id: uri.codeUri.fsPath,
|
|
367
|
-
type: MentionType.RULE,
|
|
368
|
-
text: uri.displayName,
|
|
369
|
-
value: uri.codeUri.fsPath,
|
|
370
|
-
contextId: uri.codeUri.fsPath,
|
|
371
|
-
description: rule.description,
|
|
372
|
-
icon: getIcon('rules'),
|
|
373
|
-
};
|
|
374
|
-
});
|
|
375
|
-
|
|
376
|
-
if (!searchText) {
|
|
377
|
-
return mappedRules.slice(0, 10);
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
const lowerSearchText = searchText.toLocaleLowerCase();
|
|
381
|
-
return mappedRules
|
|
382
|
-
.filter((rule) => rule.text.toLocaleLowerCase().includes(lowerSearchText))
|
|
383
|
-
.sort((a, b) => {
|
|
384
|
-
const aTextLower = a.text.toLocaleLowerCase();
|
|
385
|
-
const bTextLower = b.text.toLocaleLowerCase();
|
|
386
|
-
const aDescLower = a.description?.toLocaleLowerCase() || '';
|
|
387
|
-
const bDescLower = b.description?.toLocaleLowerCase() || '';
|
|
388
|
-
|
|
389
|
-
// 优先级:文件名包含搜索文本 > 描述包含搜索文本
|
|
390
|
-
const aTextMatch = aTextLower.includes(lowerSearchText);
|
|
391
|
-
const bTextMatch = bTextLower.includes(lowerSearchText);
|
|
392
|
-
const aDescMatch = aDescLower.includes(lowerSearchText);
|
|
393
|
-
const bDescMatch = bDescLower.includes(lowerSearchText);
|
|
394
|
-
|
|
395
|
-
if (aTextMatch && bTextMatch) {
|
|
396
|
-
// 如果都匹配文件名,按文件名字母序排序
|
|
397
|
-
return aTextLower.localeCompare(bTextLower);
|
|
398
|
-
}
|
|
399
|
-
if (aTextMatch && !bTextMatch) {
|
|
400
|
-
return -1;
|
|
401
|
-
}
|
|
402
|
-
if (!aTextMatch && bTextMatch) {
|
|
403
|
-
return 1;
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
// 如果文件名都不匹配,比较描述
|
|
407
|
-
if (aDescMatch && bDescMatch) {
|
|
408
|
-
return aTextLower.localeCompare(bTextLower);
|
|
409
|
-
}
|
|
410
|
-
if (aDescMatch && !bDescMatch) {
|
|
411
|
-
return -1;
|
|
412
|
-
}
|
|
413
|
-
if (!aDescMatch && bDescMatch) {
|
|
414
|
-
return 1;
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
// 如果都不匹配,按文件名字母序排序
|
|
418
|
-
return aTextLower.localeCompare(bTextLower);
|
|
419
|
-
})
|
|
420
|
-
.slice(0, 10);
|
|
421
|
-
},
|
|
422
|
-
},
|
|
423
315
|
];
|
|
316
|
+
|
|
424
317
|
const defaultMentionInputFooterOptions: FooterConfig = useMemo(
|
|
425
318
|
() => ({
|
|
426
319
|
modelOptions: [
|
|
427
|
-
{
|
|
428
|
-
|
|
429
|
-
value: 'claude_sonnet4',
|
|
430
|
-
iconClass: iconService.fromIcon(
|
|
431
|
-
'',
|
|
432
|
-
'https://img.alicdn.com/imgextra/i3/O1CN01p0mziz1Nsl40lp1HO_!!6000000001626-55-tps-92-65.svg',
|
|
433
|
-
IconType.Background,
|
|
434
|
-
),
|
|
435
|
-
tags: ['多模态', '长上下文理解', '思考模式'],
|
|
436
|
-
description: '高性能模型,支持多模态输入',
|
|
437
|
-
},
|
|
438
|
-
{
|
|
439
|
-
label: 'DeepSeek R1',
|
|
440
|
-
value: 'deepseek-r1',
|
|
441
|
-
iconClass: iconService.fromIcon(
|
|
442
|
-
'',
|
|
443
|
-
'https://img.alicdn.com/imgextra/i3/O1CN01ClcK2w1JwdxcbAB3a_!!6000000001093-55-tps-30-30.svg',
|
|
444
|
-
IconType.Background,
|
|
445
|
-
),
|
|
446
|
-
tags: ['思考模式', '长上下文理解'],
|
|
447
|
-
description: '专业创作,支持多模态输入',
|
|
448
|
-
},
|
|
320
|
+
{ label: 'Claude 4 Sonnet', value: 'claude_sonnet4' },
|
|
321
|
+
{ label: 'DeepSeek R1', value: 'deepseek-r1' },
|
|
449
322
|
],
|
|
450
323
|
defaultModel:
|
|
451
324
|
props.sessionModelId || preferenceService.get<string>(AINativeSettingSectionsId.ModelID) || 'deepseek-r1',
|
|
@@ -457,13 +330,6 @@ export const ChatMentionInput = (props: IChatMentionInputProps) => {
|
|
|
457
330
|
onClick: handleShowMCPConfig,
|
|
458
331
|
position: FooterButtonPosition.LEFT,
|
|
459
332
|
},
|
|
460
|
-
{
|
|
461
|
-
id: 'rules',
|
|
462
|
-
icon: 'rules',
|
|
463
|
-
title: 'Rules',
|
|
464
|
-
onClick: handleShowRules,
|
|
465
|
-
position: FooterButtonPosition.LEFT,
|
|
466
|
-
},
|
|
467
333
|
{
|
|
468
334
|
id: 'upload-image',
|
|
469
335
|
icon: 'image',
|
|
@@ -486,7 +352,7 @@ export const ChatMentionInput = (props: IChatMentionInputProps) => {
|
|
|
486
352
|
showModelSelector: true,
|
|
487
353
|
disableModelSelector: props.disableModelSelector,
|
|
488
354
|
}),
|
|
489
|
-
[
|
|
355
|
+
[handleShowMCPConfig, props.disableModelSelector, props.sessionModelId],
|
|
490
356
|
);
|
|
491
357
|
|
|
492
358
|
const handleStop = useCallback(() => {
|
|
@@ -524,6 +524,7 @@
|
|
|
524
524
|
display: flex;
|
|
525
525
|
font-size: 11px;
|
|
526
526
|
align-items: center;
|
|
527
|
+
min-width: 150px;
|
|
527
528
|
}
|
|
528
529
|
|
|
529
530
|
.mcp_desc {
|
|
@@ -596,8 +597,8 @@
|
|
|
596
597
|
align-items: center;
|
|
597
598
|
padding: 0 4px;
|
|
598
599
|
margin: 0 2px;
|
|
599
|
-
background
|
|
600
|
-
color: var(--
|
|
600
|
+
background: var(--badge-background);
|
|
601
|
+
color: var(--badge-foreground);
|
|
601
602
|
border-radius: 3px;
|
|
602
603
|
vertical-align: middle;
|
|
603
604
|
font-size: 12px;
|
|
@@ -608,6 +609,10 @@
|
|
|
608
609
|
margin-right: 3px;
|
|
609
610
|
}
|
|
610
611
|
}
|
|
612
|
+
&:hover {
|
|
613
|
+
background-color: var(--chat-slashCommandBackground);
|
|
614
|
+
color: var(--chat-slashCommandForeground);
|
|
615
|
+
}
|
|
611
616
|
}
|
|
612
617
|
|
|
613
618
|
.attachment_text {
|
|
@@ -615,13 +620,6 @@
|
|
|
615
620
|
vertical-align: middle;
|
|
616
621
|
font-size: 12px;
|
|
617
622
|
word-break: break-all;
|
|
618
|
-
max-width: 100px;
|
|
619
|
-
text-overflow: ellipsis;
|
|
620
|
-
direction: rtl;
|
|
621
|
-
unicode-bidi: plaintext;
|
|
622
|
-
overflow: hidden;
|
|
623
|
-
white-space: nowrap;
|
|
624
|
-
display: inline-block;
|
|
625
623
|
}
|
|
626
624
|
|
|
627
625
|
.thumbnail_container {
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
.model_selector {
|
|
8
8
|
margin-right: 5px;
|
|
9
|
+
min-width: 150px;
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
.editor_area {
|
|
@@ -28,9 +29,7 @@
|
|
|
28
29
|
word-break: break-word;
|
|
29
30
|
|
|
30
31
|
.mention_tag {
|
|
31
|
-
height: 20px;
|
|
32
32
|
margin: 0 2px;
|
|
33
|
-
margin-top: -3px;
|
|
34
33
|
vertical-align: middle;
|
|
35
34
|
}
|
|
36
35
|
}
|
|
@@ -96,13 +95,11 @@
|
|
|
96
95
|
.stop_logo {
|
|
97
96
|
background-color: var(--badge-background);
|
|
98
97
|
color: var(--badge-foreground);
|
|
99
|
-
|
|
100
98
|
.stop_logo_icon {
|
|
101
99
|
line-height: 16px;
|
|
102
100
|
color: var(--kt-dangerButton-background);
|
|
103
101
|
}
|
|
104
102
|
}
|
|
105
|
-
|
|
106
103
|
.send_logo {
|
|
107
104
|
&:hover {
|
|
108
105
|
background-color: var(--kt-primaryButton-background);
|
|
@@ -143,38 +140,31 @@
|
|
|
143
140
|
display: flex;
|
|
144
141
|
justify-content: center;
|
|
145
142
|
}
|
|
146
|
-
|
|
147
143
|
.context_container {
|
|
148
144
|
display: flex;
|
|
149
145
|
align-items: center;
|
|
150
146
|
justify-content: center;
|
|
151
147
|
cursor: pointer;
|
|
152
|
-
|
|
153
148
|
.context_icon {
|
|
154
149
|
flex-grow: 0;
|
|
155
150
|
flex-shrink: 0;
|
|
156
|
-
|
|
157
151
|
:global(.kt-icon) {
|
|
158
152
|
font-size: 12px;
|
|
159
153
|
}
|
|
160
|
-
|
|
161
154
|
:global(.kticon-close) {
|
|
162
155
|
display: none;
|
|
163
156
|
}
|
|
164
157
|
}
|
|
165
|
-
|
|
166
158
|
&:hover {
|
|
167
159
|
.context_icon {
|
|
168
160
|
:global(.kticon-close) {
|
|
169
161
|
display: block;
|
|
170
162
|
}
|
|
171
|
-
|
|
172
163
|
:global(.kticon-out-link) {
|
|
173
164
|
display: none;
|
|
174
165
|
}
|
|
175
166
|
}
|
|
176
167
|
}
|
|
177
|
-
|
|
178
168
|
.context_description {
|
|
179
169
|
flex: 1;
|
|
180
170
|
margin-left: 3px;
|
|
@@ -264,7 +254,6 @@
|
|
|
264
254
|
display: inline;
|
|
265
255
|
flex: 1;
|
|
266
256
|
direction: rtl;
|
|
267
|
-
unicode-bidi: plaintext;
|
|
268
257
|
text-overflow: ellipsis;
|
|
269
258
|
overflow: hidden;
|
|
270
259
|
white-space: nowrap;
|
|
@@ -352,10 +341,6 @@
|
|
|
352
341
|
justify-content: center;
|
|
353
342
|
margin-right: 3px;
|
|
354
343
|
font-size: 12px;
|
|
355
|
-
&::before {
|
|
356
|
-
font-size: 12px;
|
|
357
|
-
background-size: 12px !important;
|
|
358
|
-
}
|
|
359
344
|
}
|
|
360
345
|
|
|
361
346
|
.empty_state {
|
|
@@ -419,152 +404,3 @@
|
|
|
419
404
|
color: #666;
|
|
420
405
|
font-style: italic;
|
|
421
406
|
}
|
|
422
|
-
|
|
423
|
-
.context_preview_container {
|
|
424
|
-
background-color: var(--kt-editorWidget-background);
|
|
425
|
-
border: 1px solid var(--kt-editorWidget-border);
|
|
426
|
-
margin: 0 16px;
|
|
427
|
-
animation: slideIn 0.3s ease-out;
|
|
428
|
-
display: flex;
|
|
429
|
-
flex-wrap: wrap;
|
|
430
|
-
gap: 4px;
|
|
431
|
-
align-items: flex-start;
|
|
432
|
-
margin-bottom: 3px;
|
|
433
|
-
width: calc(100% - 32px);
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
.context_preview_title {
|
|
437
|
-
cursor: pointer;
|
|
438
|
-
display: flex;
|
|
439
|
-
align-items: center;
|
|
440
|
-
justify-content: center;
|
|
441
|
-
padding: 2px 3px;
|
|
442
|
-
height: 18px;
|
|
443
|
-
width: auto;
|
|
444
|
-
box-sizing: border-box;
|
|
445
|
-
border-radius: 4px;
|
|
446
|
-
border: 1px solid color-mix(in srgb, var(--editor-foreground) 10%, transparent);
|
|
447
|
-
outline: none;
|
|
448
|
-
flex-shrink: 0;
|
|
449
|
-
color: var(--descriptionForeground);
|
|
450
|
-
font-size: 11px;
|
|
451
|
-
|
|
452
|
-
&::before {
|
|
453
|
-
content: '@';
|
|
454
|
-
margin-right: 4px;
|
|
455
|
-
}
|
|
456
|
-
&.has_context {
|
|
457
|
-
width: 18px;
|
|
458
|
-
&::before {
|
|
459
|
-
content: '@';
|
|
460
|
-
margin-right: 0;
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
&:hover {
|
|
465
|
-
color: var(--badge-foreground);
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
.context_preview_item {
|
|
470
|
-
cursor: pointer;
|
|
471
|
-
display: flex;
|
|
472
|
-
align-items: center;
|
|
473
|
-
justify-content: flex-start;
|
|
474
|
-
padding: 2px 4px;
|
|
475
|
-
height: 18px;
|
|
476
|
-
width: auto;
|
|
477
|
-
min-width: fit-content;
|
|
478
|
-
max-width: 300px;
|
|
479
|
-
box-sizing: border-box;
|
|
480
|
-
border-radius: 4px;
|
|
481
|
-
border: 1px solid color-mix(in srgb, var(--badge-background) 30%, transparent);
|
|
482
|
-
outline: none;
|
|
483
|
-
flex: 0 1 auto;
|
|
484
|
-
margin-left: 3px;
|
|
485
|
-
|
|
486
|
-
.icon {
|
|
487
|
-
width: 12px !important;
|
|
488
|
-
height: 12px !important;
|
|
489
|
-
line-height: 12px !important;
|
|
490
|
-
margin-right: 2px;
|
|
491
|
-
flex-shrink: 0;
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
.close_icon {
|
|
495
|
-
margin-right: 2px;
|
|
496
|
-
display: none !important;
|
|
497
|
-
width: 12px !important;
|
|
498
|
-
height: 12px !important;
|
|
499
|
-
line-height: 12px !important;
|
|
500
|
-
flex-shrink: 0;
|
|
501
|
-
opacity: 0.8;
|
|
502
|
-
|
|
503
|
-
&:hover {
|
|
504
|
-
opacity: 1;
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
&:hover {
|
|
509
|
-
opacity: 1;
|
|
510
|
-
.icon {
|
|
511
|
-
display: none;
|
|
512
|
-
}
|
|
513
|
-
.close_icon {
|
|
514
|
-
display: inline-block !important;
|
|
515
|
-
font-size: 12px !important;
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
.context_preview_item_icon {
|
|
521
|
-
display: flex;
|
|
522
|
-
align-items: center;
|
|
523
|
-
justify-content: center;
|
|
524
|
-
flex-shrink: 0;
|
|
525
|
-
opacity: 0.8;
|
|
526
|
-
&::before {
|
|
527
|
-
background-position: 2px !important;
|
|
528
|
-
font-size: 12px;
|
|
529
|
-
background-size: 11px !important;
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
.context_preview_item_text {
|
|
534
|
-
flex: 1;
|
|
535
|
-
overflow: hidden;
|
|
536
|
-
text-overflow: ellipsis;
|
|
537
|
-
color: var(--descriptionForeground);
|
|
538
|
-
white-space: nowrap;
|
|
539
|
-
font-weight: 400;
|
|
540
|
-
line-height: 1.2;
|
|
541
|
-
font-size: 11px;
|
|
542
|
-
max-width: 200px;
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
.context_preview_item_remove {
|
|
546
|
-
cursor: pointer;
|
|
547
|
-
opacity: 0.5;
|
|
548
|
-
font-size: 12px;
|
|
549
|
-
margin-left: 4px;
|
|
550
|
-
padding: 2px;
|
|
551
|
-
border-radius: 50%;
|
|
552
|
-
display: flex;
|
|
553
|
-
align-items: center;
|
|
554
|
-
justify-content: center;
|
|
555
|
-
flex-shrink: 0;
|
|
556
|
-
transition: all 0.2s ease;
|
|
557
|
-
width: 16px;
|
|
558
|
-
height: 16px;
|
|
559
|
-
|
|
560
|
-
&:hover {
|
|
561
|
-
opacity: 1;
|
|
562
|
-
background-color: var(--kt-dangerButton-background);
|
|
563
|
-
color: var(--kt-dangerButton-foreground);
|
|
564
|
-
transform: scale(1.1);
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
&:active {
|
|
568
|
-
transform: scale(0.9);
|
|
569
|
-
}
|
|
570
|
-
}
|