@opensumi/ide-ai-native 3.8.2-next-1741622293.0 → 3.8.2

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.
Files changed (123) hide show
  1. package/lib/browser/ai-core.contribution.d.ts.map +1 -1
  2. package/lib/browser/ai-core.contribution.js +20 -0
  3. package/lib/browser/ai-core.contribution.js.map +1 -1
  4. package/lib/browser/chat/chat-manager.service.d.ts +2 -1
  5. package/lib/browser/chat/chat-manager.service.d.ts.map +1 -1
  6. package/lib/browser/chat/chat-manager.service.js +26 -7
  7. package/lib/browser/chat/chat-manager.service.js.map +1 -1
  8. package/lib/browser/chat/chat-model.d.ts +3 -3
  9. package/lib/browser/chat/chat-model.d.ts.map +1 -1
  10. package/lib/browser/chat/chat-model.js +22 -9
  11. package/lib/browser/chat/chat-model.js.map +1 -1
  12. package/lib/browser/chat/chat-proxy.service.d.ts +1 -0
  13. package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
  14. package/lib/browser/chat/chat-proxy.service.js +2 -0
  15. package/lib/browser/chat/chat-proxy.service.js.map +1 -1
  16. package/lib/browser/chat/chat.view.d.ts.map +1 -1
  17. package/lib/browser/chat/chat.view.js +61 -5
  18. package/lib/browser/chat/chat.view.js.map +1 -1
  19. package/lib/browser/components/ApplyStatus.d.ts +7 -0
  20. package/lib/browser/components/ApplyStatus.d.ts.map +1 -0
  21. package/lib/browser/components/ApplyStatus.js +32 -0
  22. package/lib/browser/components/ApplyStatus.js.map +1 -0
  23. package/lib/browser/components/ChangeList.d.ts +17 -0
  24. package/lib/browser/components/ChangeList.d.ts.map +1 -0
  25. package/lib/browser/components/ChangeList.js +72 -0
  26. package/lib/browser/components/ChangeList.js.map +1 -0
  27. package/lib/browser/components/ChatToolRender.d.ts.map +1 -1
  28. package/lib/browser/components/ChatToolRender.js +18 -12
  29. package/lib/browser/components/ChatToolRender.js.map +1 -1
  30. package/lib/browser/components/ChatToolRender.module.less +27 -15
  31. package/lib/browser/components/change-list.module.less +126 -0
  32. package/lib/browser/components/chat-history.module.less +1 -1
  33. package/lib/browser/components/components.module.less +14 -0
  34. package/lib/browser/contrib/inline-completions/prompt/matcher.js +2 -2
  35. package/lib/browser/contrib/inline-completions/prompt/similarSnippets.d.ts +1 -1
  36. package/lib/browser/contrib/inline-completions/prompt/similarSnippets.js +2 -2
  37. package/lib/browser/contrib/intelligent-completions/view/default.d.ts.map +1 -1
  38. package/lib/browser/contrib/intelligent-completions/view/default.js.map +1 -1
  39. package/lib/browser/index.d.ts.map +1 -1
  40. package/lib/browser/index.js +4 -4
  41. package/lib/browser/index.js.map +1 -1
  42. package/lib/browser/mcp/base-apply.service.d.ts +14 -6
  43. package/lib/browser/mcp/base-apply.service.d.ts.map +1 -1
  44. package/lib/browser/mcp/base-apply.service.js +80 -52
  45. package/lib/browser/mcp/base-apply.service.js.map +1 -1
  46. package/lib/browser/mcp/config/components/mcp-config.view.d.ts.map +1 -1
  47. package/lib/browser/mcp/config/components/mcp-config.view.js +12 -8
  48. package/lib/browser/mcp/config/components/mcp-config.view.js.map +1 -1
  49. package/lib/browser/mcp/config/mcp-config.contribution.js.map +1 -1
  50. package/lib/browser/mcp/tools/components/EditFile.js +3 -24
  51. package/lib/browser/mcp/tools/components/EditFile.js.map +1 -1
  52. package/lib/browser/mcp/tools/components/ExpandableFileList.js +3 -2
  53. package/lib/browser/mcp/tools/components/ExpandableFileList.js.map +1 -1
  54. package/lib/browser/model/msg-history-manager.d.ts +0 -2
  55. package/lib/browser/model/msg-history-manager.d.ts.map +1 -1
  56. package/lib/browser/model/msg-history-manager.js +1 -6
  57. package/lib/browser/model/msg-history-manager.js.map +1 -1
  58. package/lib/browser/preferences/schema.d.ts.map +1 -1
  59. package/lib/browser/preferences/schema.js +8 -0
  60. package/lib/browser/preferences/schema.js.map +1 -1
  61. package/lib/browser/widget/inline-diff/inline-diff-manager.d.ts.map +1 -1
  62. package/lib/browser/widget/inline-diff/inline-diff-manager.js +2 -2
  63. package/lib/browser/widget/inline-diff/inline-diff-manager.js.map +1 -1
  64. package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts +1 -1
  65. package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts.map +1 -1
  66. package/lib/browser/widget/inline-diff/inline-diff.controller.js.map +1 -1
  67. package/lib/browser/widget/inline-diff/inline-diff.service.d.ts +3 -2
  68. package/lib/browser/widget/inline-diff/inline-diff.service.d.ts.map +1 -1
  69. package/lib/browser/widget/inline-diff/inline-diff.service.js.map +1 -1
  70. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts +1 -1
  71. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts.map +1 -1
  72. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js.map +1 -1
  73. package/lib/browser/widget/inline-stream-diff/live-preview.component.d.ts +0 -33
  74. package/lib/browser/widget/inline-stream-diff/live-preview.component.d.ts.map +1 -1
  75. package/lib/browser/widget/inline-stream-diff/live-preview.component.js +1 -6
  76. package/lib/browser/widget/inline-stream-diff/live-preview.component.js.map +1 -1
  77. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.d.ts.map +1 -1
  78. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js +15 -14
  79. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js.map +1 -1
  80. package/lib/common/index.d.ts +7 -2
  81. package/lib/common/index.d.ts.map +1 -1
  82. package/lib/common/index.js +3 -2
  83. package/lib/common/index.js.map +1 -1
  84. package/lib/common/prompts/context-prompt-provider.d.ts.map +1 -1
  85. package/lib/common/prompts/context-prompt-provider.js +2 -4
  86. package/lib/common/prompts/context-prompt-provider.js.map +1 -1
  87. package/lib/common/types.d.ts +33 -0
  88. package/lib/common/types.d.ts.map +1 -1
  89. package/lib/common/types.js +6 -1
  90. package/lib/common/types.js.map +1 -1
  91. package/package.json +23 -23
  92. package/src/browser/ai-core.contribution.ts +28 -0
  93. package/src/browser/chat/chat-manager.service.ts +53 -31
  94. package/src/browser/chat/chat-model.ts +22 -8
  95. package/src/browser/chat/chat-proxy.service.ts +2 -0
  96. package/src/browser/chat/chat.view.tsx +80 -9
  97. package/src/browser/components/ApplyStatus.tsx +44 -0
  98. package/src/browser/components/ChangeList.tsx +131 -0
  99. package/src/browser/components/ChatToolRender.module.less +27 -15
  100. package/src/browser/components/ChatToolRender.tsx +14 -12
  101. package/src/browser/components/change-list.module.less +126 -0
  102. package/src/browser/components/chat-history.module.less +1 -1
  103. package/src/browser/components/components.module.less +14 -0
  104. package/src/browser/contrib/inline-completions/prompt/matcher.ts +2 -2
  105. package/src/browser/contrib/inline-completions/prompt/similarSnippets.ts +2 -2
  106. package/src/browser/contrib/intelligent-completions/view/default.ts +1 -0
  107. package/src/browser/index.ts +5 -4
  108. package/src/browser/mcp/base-apply.service.ts +84 -62
  109. package/src/browser/mcp/config/components/mcp-config.view.tsx +4 -0
  110. package/src/browser/mcp/config/mcp-config.contribution.ts +1 -1
  111. package/src/browser/mcp/tools/components/EditFile.tsx +3 -37
  112. package/src/browser/mcp/tools/components/ExpandableFileList.tsx +3 -1
  113. package/src/browser/model/msg-history-manager.ts +1 -8
  114. package/src/browser/preferences/schema.ts +8 -0
  115. package/src/browser/widget/inline-diff/inline-diff-manager.tsx +3 -2
  116. package/src/browser/widget/inline-diff/inline-diff.controller.ts +2 -1
  117. package/src/browser/widget/inline-diff/inline-diff.service.ts +3 -2
  118. package/src/browser/widget/inline-stream-diff/inline-stream-diff.handler.tsx +4 -4
  119. package/src/browser/widget/inline-stream-diff/live-preview.component.tsx +0 -34
  120. package/src/browser/widget/inline-stream-diff/live-preview.decoration.tsx +8 -9
  121. package/src/common/index.ts +9 -2
  122. package/src/common/prompts/context-prompt-provider.ts +2 -6
  123. package/src/common/types.ts +35 -0
@@ -0,0 +1,131 @@
1
+ import React, { useMemo, useState } from 'react';
2
+
3
+ import { Button, Icon } from '@opensumi/ide-components';
4
+ import { LabelService, URI, useInjectable } from '@opensumi/ide-core-browser';
5
+
6
+ import { CodeBlockStatus } from '../../common/types';
7
+
8
+ import { ApplyStatus } from './ApplyStatus';
9
+ import styles from './change-list.module.less';
10
+
11
+ export interface FileChange {
12
+ path: string;
13
+ additions: number;
14
+ deletions: number;
15
+ status: CodeBlockStatus;
16
+ }
17
+
18
+ interface FileListDisplayProps {
19
+ files: FileChange[];
20
+ onFileClick: (path: string) => void;
21
+ onRejectAll: () => void;
22
+ onAcceptAll: () => void;
23
+ }
24
+
25
+ export const FileListDisplay: React.FC<FileListDisplayProps> = (props) => {
26
+ const { files, onFileClick, onRejectAll, onAcceptAll } = props;
27
+ const [isExpanded, setIsExpanded] = useState(true);
28
+ const labelService = useInjectable<LabelService>(LabelService);
29
+ const fileIcons = useMemo(
30
+ () =>
31
+ files.map((file) => {
32
+ const uri = URI.parse(file.path);
33
+ const iconClass = labelService.getIcon(uri);
34
+ return <span className={iconClass}></span>;
35
+ }),
36
+ [files],
37
+ );
38
+
39
+ const totalFiles = files.length;
40
+ const totalChanges = files.reduce(
41
+ (acc, file) => ({
42
+ additions: acc.additions + file.additions,
43
+ deletions: acc.deletions + file.deletions,
44
+ }),
45
+ { additions: 0, deletions: 0 },
46
+ );
47
+
48
+ const handleToggle = () => {
49
+ setIsExpanded(!isExpanded);
50
+ };
51
+
52
+ const renderChangeStats = (additions: number, deletions: number) => {
53
+ const parts: React.ReactNode[] = [];
54
+
55
+ if (additions > 0) {
56
+ parts.push(
57
+ <span key='add' className={styles.additions}>
58
+ +{additions}
59
+ </span>,
60
+ );
61
+ }
62
+
63
+ if (deletions > 0) {
64
+ if (parts.length > 0) {
65
+ parts.push(' ');
66
+ }
67
+ parts.push(
68
+ <span key='del' className={styles.deletions}>
69
+ -{deletions}
70
+ </span>,
71
+ );
72
+ }
73
+
74
+ if (parts.length === 0) {
75
+ parts.push(
76
+ <span key='no-change' className={styles.noChange}>
77
+ No changes
78
+ </span>,
79
+ );
80
+ }
81
+
82
+ return parts;
83
+ };
84
+
85
+ return (
86
+ <div className={styles.container}>
87
+ <div className={styles.header} onClick={handleToggle}>
88
+ <span className={styles.title}>
89
+ <button className={styles.toggleButton}>{isExpanded ? <Icon icon='down' /> : <Icon icon='right' />}</button>
90
+ Changed Files ({totalFiles}) {renderChangeStats(totalChanges.additions, totalChanges.deletions)}
91
+ </span>
92
+ {files.some((file) => file.status === 'pending') && (
93
+ <div className={styles.actions}>
94
+ <Button
95
+ type='link'
96
+ size='small'
97
+ onClick={(e) => {
98
+ e.stopPropagation();
99
+ onRejectAll();
100
+ }}
101
+ >
102
+ Reject
103
+ </Button>
104
+ <Button
105
+ size='small'
106
+ onClick={(e) => {
107
+ e.stopPropagation();
108
+ onAcceptAll();
109
+ }}
110
+ >
111
+ Accept
112
+ </Button>
113
+ </div>
114
+ )}
115
+ </div>
116
+
117
+ <ul className={`${styles.fileList} ${!isExpanded ? styles.collapsed : ''}`}>
118
+ {files.map((file, index) => (
119
+ <li key={index} className={styles.fileItem} onClick={() => onFileClick(file.path)}>
120
+ <span className={styles.fileIcon}>{fileIcons[index] || '📄'}</span>
121
+ <div className={styles.fileInfo}>
122
+ <div className={styles.filePath}>{file.path}</div>
123
+ <div className={styles.fileStats}>{renderChangeStats(file.additions, file.deletions)}</div>
124
+ <ApplyStatus status={file.status} />
125
+ </div>
126
+ </li>
127
+ ))}
128
+ </ul>
129
+ </div>
130
+ );
131
+ };
@@ -1,14 +1,14 @@
1
- .chat-tool-render {
1
+ .chat_tool_render {
2
2
  margin: 8px 0;
3
3
  border: 1px solid var(--design-borderColor);
4
4
  border-radius: 6px;
5
5
  overflow: hidden;
6
6
 
7
- .tool-header {
7
+ .tool_header {
8
8
  display: flex;
9
9
  align-items: center;
10
10
  justify-content: space-between;
11
- padding: 8px 12px;
11
+ padding: 4px;
12
12
  background-color: var(--design-block-background);
13
13
  cursor: pointer;
14
14
  user-select: none;
@@ -18,14 +18,25 @@
18
18
  }
19
19
  }
20
20
 
21
- .tool-name {
21
+ .tool_name {
22
+ font-size: 12px;
22
23
  display: flex;
23
24
  align-items: center;
24
25
  font-weight: 500;
25
26
  color: var(--design-text-foreground);
26
27
  }
27
28
 
28
- .expand-icon {
29
+ .tool_icon {
30
+ font-size: 12px !important;
31
+ }
32
+
33
+ .tool_label {
34
+ margin-left: 5px;
35
+ font-size: 11px;
36
+ color: var(--descriptionForeground);
37
+ }
38
+
39
+ .expand_icon {
29
40
  display: inline-block;
30
41
  margin-right: 8px;
31
42
  transition: transform 0.2s;
@@ -36,29 +47,29 @@
36
47
  }
37
48
  }
38
49
 
39
- .tool-state {
50
+ .tool_state {
40
51
  display: flex;
41
52
  align-items: center;
42
53
  font-size: 12px;
43
54
  color: var(--design-text-placeholderForeground);
44
55
  }
45
56
 
46
- .state-icon {
57
+ .state_icon {
47
58
  display: flex;
48
59
  align-items: center;
49
60
  margin-right: 6px;
50
61
  }
51
62
 
52
- .loading-icon {
63
+ .loading_icon {
53
64
  width: 12px;
54
65
  height: 12px;
55
66
  }
56
67
 
57
- .state-label {
68
+ .state_label {
58
69
  margin-left: 4px;
59
70
  }
60
71
 
61
- .tool-content {
72
+ .tool_content {
62
73
  max-height: 0;
63
74
  overflow: hidden;
64
75
  transition: max-height 0.3s ease-out;
@@ -69,18 +80,19 @@
69
80
  }
70
81
  }
71
82
 
72
- .tool-arguments,
73
- .tool-result {
74
- padding: 12px;
83
+ .tool_arguments,
84
+ .tool_result {
85
+ font-size: 11px;
86
+ padding: 5px;
75
87
  }
76
88
 
77
- .section-label {
89
+ .section_label {
78
90
  font-size: 12px;
79
91
  color: var(--design-text-placeholderForeground);
80
92
  margin-bottom: 8px;
81
93
  }
82
94
 
83
- .tool-result {
95
+ .tool_result {
84
96
  border-top: 1px solid var(--design-borderColor);
85
97
  }
86
98
  }
@@ -5,6 +5,7 @@ import { useInjectable } from '@opensumi/ide-core-browser';
5
5
  import { Icon } from '@opensumi/ide-core-browser/lib/components';
6
6
  import { Loading } from '@opensumi/ide-core-browser/lib/components/ai-native';
7
7
  import { IChatToolContent, uuid } from '@opensumi/ide-core-common';
8
+ import { localize } from '@opensumi/ide-core-common/lib/localize';
8
9
 
9
10
  import { IMCPServerRegistry, TokenMCPServerRegistry } from '../types';
10
11
 
@@ -64,28 +65,29 @@ export const ChatToolRender = (props: { value: IChatToolContent['content']; mess
64
65
  toolCallId={value.id}
65
66
  />
66
67
  ) : (
67
- <div className={styles['chat-tool-render']}>
68
- <div className={styles['tool-header']} onClick={toggleExpand}>
69
- <div className={styles['tool-name']}>
70
- <Icon iconClass={`codicon codicon-triangle-${isExpanded ? 'down' : 'right'}`} />
71
- {label}
68
+ <div className={styles.chat_tool_render}>
69
+ <div className={styles.tool_header} onClick={toggleExpand}>
70
+ <div className={styles.tool_name}>
71
+ <Icon iconClass={`codicon codicon-chevron-${isExpanded ? 'down' : 'right'}`} />
72
+ <Icon size='small' iconClass={cls('codicon codicon-tools', styles.tool_icon)} />
73
+ <span className={styles.tool_label}>{label}</span>
72
74
  </div>
73
75
  {value.state && (
74
- <div className={styles['tool-state']}>
75
- <span className={styles['state-icon']}>{stateInfo.icon}</span>
76
+ <div className={styles.tool_state}>
77
+ <span className={styles.state_icon}>{stateInfo.icon}</span>
76
78
  </div>
77
79
  )}
78
80
  </div>
79
- <div className={cls(styles['tool-content'], { [styles.expanded]: isExpanded })}>
81
+ <div className={cls(styles.tool_content, { [styles.expanded]: isExpanded })}>
80
82
  {value?.function?.arguments && (
81
- <div className={styles['tool-arguments']}>
82
- <div className={styles['section-label']}>Arguments</div>
83
+ <div className={styles.tool_arguments}>
84
+ <div className={styles.section_label}>{localize('ai.native.mcp.tool.arguments')}:</div>
83
85
  <CodeEditorWithHighlight input={value?.function?.arguments} language={'json'} relationId={uuid(4)} />
84
86
  </div>
85
87
  )}
86
88
  {value?.result && (
87
- <div className={styles['tool-result']}>
88
- <div className={styles['section-label']}>Result</div>
89
+ <div className={styles.tool_result}>
90
+ <div className={styles.section_label}>{localize('ai.native.mcp.tool.results')}:</div>
89
91
  <CodeEditorWithHighlight input={value.result} language={'json'} relationId={uuid(4)} />
90
92
  </div>
91
93
  )}
@@ -0,0 +1,126 @@
1
+ .container {
2
+ margin: 0 12px;
3
+ background: var(--design-chatInput-background);
4
+ border-radius: 9px 9px 0 0;
5
+ border: 1px solid var(--kt-input-border);
6
+ border-bottom: none;
7
+ overflow: hidden;
8
+ padding-bottom: 6px;
9
+ }
10
+
11
+ .header {
12
+ display: flex;
13
+ align-items: center;
14
+ justify-content: space-between;
15
+ padding: 8px 12px 2px 12px;
16
+ background-color: transparent;
17
+ cursor: pointer;
18
+ user-select: none;
19
+ font-size: 12px;
20
+ color: var(--descriptionForeground);
21
+ }
22
+
23
+ .title:hover {
24
+ color: var(--design-text-highlightForeground);
25
+ .toggleButton :global(.kt-icon) {
26
+ color: var(--design-text-highlightForeground);
27
+ transition: color 0.2s ease-in-out;
28
+ }
29
+ }
30
+
31
+ .toggleButton {
32
+ background: none;
33
+ border: none;
34
+ cursor: pointer;
35
+ padding: 0;
36
+ width: 16px;
37
+ height: 16px;
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ font-size: 12px;
42
+ }
43
+
44
+ .title {
45
+ gap: 6px;
46
+ transition: color 0.2s ease-in-out;
47
+ display: flex;
48
+ }
49
+
50
+ .fileList {
51
+ list-style: none;
52
+ margin: 0;
53
+ padding: 0 12px;
54
+ }
55
+
56
+ .fileItem {
57
+ display: flex;
58
+ align-items: center;
59
+ padding: 4px 0;
60
+ cursor: pointer;
61
+ border: none;
62
+ font-size: 13px;
63
+ color: var(--descriptionForeground);
64
+ }
65
+
66
+ .fileItem:hover {
67
+ background-color: var(--design-block-hoverBackground);
68
+ }
69
+
70
+ .fileIcon {
71
+ margin-right: 6px;
72
+ width: 16px;
73
+ height: 16px;
74
+ display: flex;
75
+ align-items: center;
76
+ justify-content: center;
77
+ }
78
+
79
+ .fileInfo {
80
+ flex: 1;
81
+ display: flex;
82
+ justify-content: space-between;
83
+ align-items: center;
84
+ overflow: hidden;
85
+ :global(.kt-popover-trigger) {
86
+ margin-left: 8px;
87
+ }
88
+ :global(.codicon) {
89
+ font-size: 12px !important;
90
+ position: relative;
91
+ top: 1px;
92
+ }
93
+ }
94
+
95
+ .filePath {
96
+ font-size: 12px;
97
+ margin: 0;
98
+ white-space: nowrap;
99
+ overflow: hidden;
100
+ text-overflow: ellipsis;
101
+ }
102
+
103
+ .fileStats {
104
+ font-size: 12px;
105
+ display: flex;
106
+ align-items: center;
107
+ gap: 4px;
108
+ }
109
+
110
+ .additions {
111
+ color: #52c41a;
112
+ }
113
+
114
+ .deletions {
115
+ color: var(--debugConsole-errorForeground);
116
+ }
117
+
118
+ .noChange {
119
+ color: #6a737d;
120
+ font-style: italic;
121
+ white-space: nowrap;
122
+ }
123
+
124
+ .collapsed {
125
+ display: none;
126
+ }
@@ -78,7 +78,7 @@
78
78
  .dm-chat-history-list {
79
79
  overflow: auto;
80
80
  max-height: 400px;
81
- max-width: 400px;
81
+ width: 300px;
82
82
  margin-top: 4px;
83
83
  font-size: 13px;
84
84
  }
@@ -527,3 +527,17 @@
527
527
  align-items: center;
528
528
  }
529
529
  }
530
+
531
+ .status {
532
+ :global {
533
+ .codicon-pass {
534
+ color: #52c41a;
535
+ }
536
+ .codicon-error {
537
+ color: var(--debugConsole-errorForeground);
538
+ }
539
+ .codicon-circle-slash {
540
+ color: var(--input-placeholderForeground);
541
+ }
542
+ }
543
+ }
@@ -244,8 +244,8 @@ export abstract class WindowedMatcher {
244
244
  tokens.slice(startLine, endLine).forEach((token) => token.forEach((word) => size.add(word)));
245
245
  cache.push(size);
246
246
  }
247
- const target = cache[index];
248
- const score = this.similarityScore(target, this.referenceTokens);
247
+ const traget = cache[index];
248
+ const score = this.similarityScore(traget, this.referenceTokens);
249
249
  snippets.push({
250
250
  score,
251
251
  startLine,
@@ -15,9 +15,9 @@ import {
15
15
  import { MAX_NEIGHBOR_AGGREGATE_LENGTH } from './const';
16
16
  import { FixedWindowSizeJaccardMatcher } from './jaccardMatcher';
17
17
 
18
- export const getOpenedTabFileList = (documents: IEditorDocumentModel[]) => {
18
+ export const getOpenedTabFileList = (docuemnts: IEditorDocumentModel[]) => {
19
19
  // 过滤超大文档
20
- const recentFiles = documents.filter((document) => isDocumentValid(document));
20
+ const recentFiles = docuemnts.filter((document) => isDocumentValid(document));
21
21
  return recentFiles;
22
22
  };
23
23
 
@@ -29,6 +29,7 @@ import {
29
29
 
30
30
  import { CodeEditsResultValue, ICodeEdit, ICodeEditsResult } from '../index';
31
31
 
32
+
32
33
  import { BaseCodeEditsView } from './base';
33
34
 
34
35
  /**
@@ -25,6 +25,7 @@ import {
25
25
  IChatAgentService,
26
26
  IChatInternalService,
27
27
  IChatManagerService,
28
+ InlineDiffServiceToken,
28
29
  SumiMCPServerProxyServicePath,
29
30
  TokenMCPServerProxyService,
30
31
  } from '../common';
@@ -193,14 +194,14 @@ export class AINativeModule extends BrowserModule {
193
194
  token: IAIInlineCompletionsProvider,
194
195
  useClass: AIInlineCompletionsProvider,
195
196
  },
196
- {
197
- token: InlineDiffService,
198
- useClass: InlineDiffService,
199
- },
200
197
  {
201
198
  token: ChatAgentPromptProvider,
202
199
  useClass: DefaultChatAgentPromptProvider,
203
200
  },
201
+ {
202
+ token: InlineDiffServiceToken,
203
+ useClass: InlineDiffService,
204
+ },
204
205
  {
205
206
  token: BaseApplyService,
206
207
  useClass: ApplyService,