@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.
- package/lib/browser/ai-core.contribution.d.ts.map +1 -1
- package/lib/browser/ai-core.contribution.js +20 -0
- package/lib/browser/ai-core.contribution.js.map +1 -1
- package/lib/browser/chat/chat-manager.service.d.ts +2 -1
- package/lib/browser/chat/chat-manager.service.d.ts.map +1 -1
- package/lib/browser/chat/chat-manager.service.js +26 -7
- package/lib/browser/chat/chat-manager.service.js.map +1 -1
- package/lib/browser/chat/chat-model.d.ts +3 -3
- package/lib/browser/chat/chat-model.d.ts.map +1 -1
- package/lib/browser/chat/chat-model.js +22 -9
- package/lib/browser/chat/chat-model.js.map +1 -1
- package/lib/browser/chat/chat-proxy.service.d.ts +1 -0
- package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
- package/lib/browser/chat/chat-proxy.service.js +2 -0
- package/lib/browser/chat/chat-proxy.service.js.map +1 -1
- package/lib/browser/chat/chat.view.d.ts.map +1 -1
- package/lib/browser/chat/chat.view.js +61 -5
- package/lib/browser/chat/chat.view.js.map +1 -1
- package/lib/browser/components/ApplyStatus.d.ts +7 -0
- package/lib/browser/components/ApplyStatus.d.ts.map +1 -0
- package/lib/browser/components/ApplyStatus.js +32 -0
- package/lib/browser/components/ApplyStatus.js.map +1 -0
- package/lib/browser/components/ChangeList.d.ts +17 -0
- package/lib/browser/components/ChangeList.d.ts.map +1 -0
- package/lib/browser/components/ChangeList.js +72 -0
- package/lib/browser/components/ChangeList.js.map +1 -0
- package/lib/browser/components/ChatToolRender.d.ts.map +1 -1
- package/lib/browser/components/ChatToolRender.js +18 -12
- package/lib/browser/components/ChatToolRender.js.map +1 -1
- package/lib/browser/components/ChatToolRender.module.less +27 -15
- package/lib/browser/components/change-list.module.less +126 -0
- package/lib/browser/components/chat-history.module.less +1 -1
- package/lib/browser/components/components.module.less +14 -0
- package/lib/browser/contrib/inline-completions/prompt/matcher.js +2 -2
- package/lib/browser/contrib/inline-completions/prompt/similarSnippets.d.ts +1 -1
- package/lib/browser/contrib/inline-completions/prompt/similarSnippets.js +2 -2
- package/lib/browser/contrib/intelligent-completions/view/default.d.ts.map +1 -1
- package/lib/browser/contrib/intelligent-completions/view/default.js.map +1 -1
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +4 -4
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/mcp/base-apply.service.d.ts +14 -6
- package/lib/browser/mcp/base-apply.service.d.ts.map +1 -1
- package/lib/browser/mcp/base-apply.service.js +80 -52
- package/lib/browser/mcp/base-apply.service.js.map +1 -1
- package/lib/browser/mcp/config/components/mcp-config.view.d.ts.map +1 -1
- package/lib/browser/mcp/config/components/mcp-config.view.js +12 -8
- package/lib/browser/mcp/config/components/mcp-config.view.js.map +1 -1
- package/lib/browser/mcp/config/mcp-config.contribution.js.map +1 -1
- package/lib/browser/mcp/tools/components/EditFile.js +3 -24
- package/lib/browser/mcp/tools/components/EditFile.js.map +1 -1
- package/lib/browser/mcp/tools/components/ExpandableFileList.js +3 -2
- package/lib/browser/mcp/tools/components/ExpandableFileList.js.map +1 -1
- package/lib/browser/model/msg-history-manager.d.ts +0 -2
- package/lib/browser/model/msg-history-manager.d.ts.map +1 -1
- package/lib/browser/model/msg-history-manager.js +1 -6
- 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 +8 -0
- package/lib/browser/preferences/schema.js.map +1 -1
- package/lib/browser/widget/inline-diff/inline-diff-manager.d.ts.map +1 -1
- package/lib/browser/widget/inline-diff/inline-diff-manager.js +2 -2
- package/lib/browser/widget/inline-diff/inline-diff-manager.js.map +1 -1
- package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts +1 -1
- package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts.map +1 -1
- package/lib/browser/widget/inline-diff/inline-diff.controller.js.map +1 -1
- package/lib/browser/widget/inline-diff/inline-diff.service.d.ts +3 -2
- package/lib/browser/widget/inline-diff/inline-diff.service.d.ts.map +1 -1
- package/lib/browser/widget/inline-diff/inline-diff.service.js.map +1 -1
- package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts +1 -1
- package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts.map +1 -1
- package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js.map +1 -1
- package/lib/browser/widget/inline-stream-diff/live-preview.component.d.ts +0 -33
- 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 +1 -6
- package/lib/browser/widget/inline-stream-diff/live-preview.component.js.map +1 -1
- package/lib/browser/widget/inline-stream-diff/live-preview.decoration.d.ts.map +1 -1
- package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js +15 -14
- package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js.map +1 -1
- package/lib/common/index.d.ts +7 -2
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +3 -2
- package/lib/common/index.js.map +1 -1
- package/lib/common/prompts/context-prompt-provider.d.ts.map +1 -1
- package/lib/common/prompts/context-prompt-provider.js +2 -4
- package/lib/common/prompts/context-prompt-provider.js.map +1 -1
- package/lib/common/types.d.ts +33 -0
- package/lib/common/types.d.ts.map +1 -1
- package/lib/common/types.js +6 -1
- package/lib/common/types.js.map +1 -1
- package/package.json +23 -23
- package/src/browser/ai-core.contribution.ts +28 -0
- package/src/browser/chat/chat-manager.service.ts +53 -31
- package/src/browser/chat/chat-model.ts +22 -8
- package/src/browser/chat/chat-proxy.service.ts +2 -0
- package/src/browser/chat/chat.view.tsx +80 -9
- package/src/browser/components/ApplyStatus.tsx +44 -0
- package/src/browser/components/ChangeList.tsx +131 -0
- package/src/browser/components/ChatToolRender.module.less +27 -15
- package/src/browser/components/ChatToolRender.tsx +14 -12
- package/src/browser/components/change-list.module.less +126 -0
- package/src/browser/components/chat-history.module.less +1 -1
- package/src/browser/components/components.module.less +14 -0
- package/src/browser/contrib/inline-completions/prompt/matcher.ts +2 -2
- package/src/browser/contrib/inline-completions/prompt/similarSnippets.ts +2 -2
- package/src/browser/contrib/intelligent-completions/view/default.ts +1 -0
- package/src/browser/index.ts +5 -4
- package/src/browser/mcp/base-apply.service.ts +84 -62
- package/src/browser/mcp/config/components/mcp-config.view.tsx +4 -0
- package/src/browser/mcp/config/mcp-config.contribution.ts +1 -1
- package/src/browser/mcp/tools/components/EditFile.tsx +3 -37
- package/src/browser/mcp/tools/components/ExpandableFileList.tsx +3 -1
- package/src/browser/model/msg-history-manager.ts +1 -8
- package/src/browser/preferences/schema.ts +8 -0
- package/src/browser/widget/inline-diff/inline-diff-manager.tsx +3 -2
- package/src/browser/widget/inline-diff/inline-diff.controller.ts +2 -1
- package/src/browser/widget/inline-diff/inline-diff.service.ts +3 -2
- package/src/browser/widget/inline-stream-diff/inline-stream-diff.handler.tsx +4 -4
- package/src/browser/widget/inline-stream-diff/live-preview.component.tsx +0 -34
- package/src/browser/widget/inline-stream-diff/live-preview.decoration.tsx +8 -9
- package/src/common/index.ts +9 -2
- package/src/common/prompts/context-prompt-provider.ts +2 -6
- package/src/common/types.ts +35 -0
|
@@ -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
|
+
}
|
|
@@ -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
|
+
}
|
|
@@ -210,8 +210,8 @@ class WindowedMatcher {
|
|
|
210
210
|
tokens.slice(startLine, endLine).forEach((token) => token.forEach((word) => size.add(word)));
|
|
211
211
|
cache.push(size);
|
|
212
212
|
}
|
|
213
|
-
const
|
|
214
|
-
const score = this.similarityScore(
|
|
213
|
+
const traget = cache[index];
|
|
214
|
+
const score = this.similarityScore(traget, this.referenceTokens);
|
|
215
215
|
snippets.push({
|
|
216
216
|
score,
|
|
217
217
|
startLine,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Injector } from '@opensumi/di';
|
|
2
2
|
import { IEditorDocumentModel } from '@opensumi/ide-editor';
|
|
3
3
|
import { ICompletionContext, MatchSimilarSnippet, NeighboringTabsOption, ResourceDocument, SimilarFileOptions } from '../types';
|
|
4
|
-
export declare const getOpenedTabFileList: (
|
|
4
|
+
export declare const getOpenedTabFileList: (docuemnts: IEditorDocumentModel[]) => IEditorDocumentModel[];
|
|
5
5
|
export declare const getRecentEditFileList: () => never[];
|
|
6
6
|
export declare const getNeighboringDocument: (type: NeighboringTabsOption, injector: Injector) => Promise<IEditorDocumentModel[]>;
|
|
7
7
|
export declare const getNeighboringResource: (targetFileName: string, languageId: string, option: SimilarFileOptions, injector: Injector) => Promise<ResourceDocument[]>;
|
|
@@ -7,9 +7,9 @@ const utils_1 = require("../../../../common/utils");
|
|
|
7
7
|
const types_1 = require("../types");
|
|
8
8
|
const const_1 = require("./const");
|
|
9
9
|
const jaccardMatcher_1 = require("./jaccardMatcher");
|
|
10
|
-
const getOpenedTabFileList = (
|
|
10
|
+
const getOpenedTabFileList = (docuemnts) => {
|
|
11
11
|
// 过滤超大文档
|
|
12
|
-
const recentFiles =
|
|
12
|
+
const recentFiles = docuemnts.filter((document) => (0, utils_1.isDocumentValid)(document));
|
|
13
13
|
return recentFiles;
|
|
14
14
|
};
|
|
15
15
|
exports.getOpenedTabFileList = getOpenedTabFileList;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../../../src/browser/contrib/intelligent-completions/view/default.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,oBAAoB,EAA+B,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../../../src/browser/contrib/intelligent-completions/view/default.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,oBAAoB,EAA+B,MAAM,UAAU,CAAC;AAG7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AA2B3C,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD,OAAO,CAAC,sBAAsB,CAO3B;IAEH,OAAO,CAAC,uBAAuB,CAQ5B;IAEI,MAAM,CAAC,eAAe,EAAE,oBAAoB,GAAG,IAAI;IAkEnD,MAAM,IAAI,IAAI;IAKd,OAAO,IAAI,IAAI;IAOf,IAAI,IAAI,IAAI;CAGpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../../../src/browser/contrib/intelligent-completions/view/default.ts"],"names":[],"mappings":";;;AAAA,8EAA0F;AAC1F,+DAA2D;AAC3D,qDAM8B;AAC9B,2EAMoD;AACpD,mFAAqG;AAErG,qKAAkK;AAElK,wJAGoH;AACpH,0JAGqH;
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../../../src/browser/contrib/intelligent-completions/view/default.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAGL,qBAAqB,EACrB,aAAa,EASd,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAGL,qBAAqB,EACrB,aAAa,EASd,MAAM,4BAA4B,CAAC;AAiEpC,qBACa,cAAe,SAAQ,aAAa;IAE/C,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;;IAOzD,oBAAoB,WAAqD;IACzE,SAAS,EAAE,QAAQ,EAAE,CAsHnB;IAEF,YAAY;;;;;;;;;;;;SAcV;CACH"}
|
package/lib/browser/index.js
CHANGED
|
@@ -159,14 +159,14 @@ let AINativeModule = class AINativeModule extends ide_core_browser_1.BrowserModu
|
|
|
159
159
|
token: common_1.IAIInlineCompletionsProvider,
|
|
160
160
|
useClass: completeProvider_1.AIInlineCompletionsProvider,
|
|
161
161
|
},
|
|
162
|
-
{
|
|
163
|
-
token: inline_diff_1.InlineDiffService,
|
|
164
|
-
useClass: inline_diff_1.InlineDiffService,
|
|
165
|
-
},
|
|
166
162
|
{
|
|
167
163
|
token: context_prompt_provider_1.ChatAgentPromptProvider,
|
|
168
164
|
useClass: context_prompt_provider_1.DefaultChatAgentPromptProvider,
|
|
169
165
|
},
|
|
166
|
+
{
|
|
167
|
+
token: common_1.InlineDiffServiceToken,
|
|
168
|
+
useClass: inline_diff_1.InlineDiffService,
|
|
169
|
+
},
|
|
170
170
|
{
|
|
171
171
|
token: base_apply_service_1.BaseApplyService,
|
|
172
172
|
useClass: apply_service_1.ApplyService,
|
package/lib/browser/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";;;;AAAA,qCAA+D;AAC/D,iEAaoC;AACpC,+DAImC;AAEnC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { SumiReadableStream } from '@opensumi/ide-utils/lib/stream';
|
|
|
7
7
|
import { CodeBlockData } from '../../common/types';
|
|
8
8
|
import { ChatInternalService } from '../chat/chat.internal.service';
|
|
9
9
|
import { BaseInlineDiffPreviewer } from '../widget/inline-diff';
|
|
10
|
-
import { BaseInlineStreamDiffHandler } from '../widget/inline-stream-diff/inline-stream-diff.handler';
|
|
10
|
+
import type { BaseInlineStreamDiffHandler } from '../widget/inline-stream-diff/inline-stream-diff.handler';
|
|
11
11
|
export declare abstract class BaseApplyService extends WithEventBus {
|
|
12
12
|
protected chatInternalService: ChatInternalService;
|
|
13
13
|
protected appConfig: AppConfig;
|
|
@@ -31,7 +31,7 @@ export declare abstract class BaseApplyService extends WithEventBus {
|
|
|
31
31
|
*/
|
|
32
32
|
getUriCodeBlocks(uri: URI): CodeBlockData[] | undefined;
|
|
33
33
|
getPendingPaths(sessionId?: string): string[];
|
|
34
|
-
|
|
34
|
+
getSessionCodeBlocks(sessionId?: string): CodeBlockData[];
|
|
35
35
|
getCodeBlock(toolCallId: string, messageId?: string): CodeBlockData | undefined;
|
|
36
36
|
protected updateCodeBlock(codeBlock: CodeBlockData): void;
|
|
37
37
|
registerCodeBlock(relativePath: string, content: string, toolCallId: string, instructions?: string): Promise<CodeBlockData>;
|
|
@@ -40,17 +40,25 @@ export declare abstract class BaseApplyService extends WithEventBus {
|
|
|
40
40
|
* Apply changes of a code block
|
|
41
41
|
*/
|
|
42
42
|
apply(codeBlock: CodeBlockData): Promise<CodeBlockData>;
|
|
43
|
+
/**
|
|
44
|
+
* 渲染apply结果(支持流式和直接输出结果)
|
|
45
|
+
* 副作用:渲染时会添加accept、reject操作监听器,监听到结果时会自动更新codeBlock的result
|
|
46
|
+
*/
|
|
43
47
|
renderApplyResult(editor: ICodeEditor, codeBlock: CodeBlockData, updatedContentOrStream: string | SumiReadableStream<IChatProgress>, range?: Range): Promise<{
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
result?: {
|
|
49
|
+
diff: string;
|
|
50
|
+
diagnosticInfos: IMarker[];
|
|
51
|
+
};
|
|
52
|
+
updatedCode: string;
|
|
53
|
+
}>;
|
|
47
54
|
/**
|
|
48
55
|
* Cancel an ongoing apply operation
|
|
49
56
|
*/
|
|
50
57
|
cancelApply(blockData: CodeBlockData, keepStatus?: boolean): void;
|
|
51
58
|
cancelAllApply(sessionId?: string): void;
|
|
52
59
|
revealApplyPosition(blockData: CodeBlockData): void;
|
|
53
|
-
processAll(
|
|
60
|
+
processAll(type: 'accept' | 'reject', uri?: URI): void;
|
|
61
|
+
protected doProcess(type: 'accept' | 'reject', relativePath: string): void;
|
|
54
62
|
protected listenPartialEdit(model: ITextModel, codeBlock: CodeBlockData): Promise<{
|
|
55
63
|
diff: string;
|
|
56
64
|
diagnosticInfos: IMarker[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-apply.service.d.ts","sourceRoot":"","sources":["../../../src/browser/mcp/base-apply.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,SAAS,EAET,aAAa,EACb,OAAO,EAGP,YAAY,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EAGrB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAY,KAAK,EAAiC,MAAM,sBAAsB,CAAC;AAC/G,OAAO,EAAiD,GAAG,EAAQ,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIpE,OAAO,EAAE,aAAa,EAAmB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,
|
|
1
|
+
{"version":3,"file":"base-apply.service.d.ts","sourceRoot":"","sources":["../../../src/browser/mcp/base-apply.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,7 +86,7 @@ class BaseApplyService extends ide_core_browser_1.WithEventBus {
|
|
|
86
86
|
// 使用最后一个版本内容渲染 apply 内容
|
|
87
87
|
if (filePendingApplies.length > 0 && filePendingApplies[0].updatedCode) {
|
|
88
88
|
const editor = event.payload.group.codeEditor.monacoEditor;
|
|
89
|
-
this.renderApplyResult(editor, filePendingApplies[0], filePendingApplies[0].updatedCode);
|
|
89
|
+
await this.renderApplyResult(editor, filePendingApplies[0], filePendingApplies[0].updatedCode);
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
get currentPreviewer() {
|
|
@@ -112,8 +112,9 @@ class BaseApplyService extends ide_core_browser_1.WithEventBus {
|
|
|
112
112
|
return sessionCodeBlocks.filter((block) => block.status === 'pending').map((block) => block.relativePath);
|
|
113
113
|
}
|
|
114
114
|
getSessionCodeBlocks(sessionId) {
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
const sessionModel = sessionId
|
|
116
|
+
? this.chatInternalService.getSession(sessionId)
|
|
117
|
+
: this.chatInternalService.sessionModel;
|
|
117
118
|
if (!sessionModel) {
|
|
118
119
|
throw new Error(`Session ${sessionId} not found`);
|
|
119
120
|
}
|
|
@@ -215,17 +216,12 @@ class BaseApplyService extends ide_core_browser_1.WithEventBus {
|
|
|
215
216
|
if (!result) {
|
|
216
217
|
throw new Error('Failed to open file');
|
|
217
218
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
if (applyResult) {
|
|
225
|
-
// 用户实际接受的 apply 结果
|
|
226
|
-
codeBlock.applyResult = applyResult;
|
|
227
|
-
this.updateCodeBlock(codeBlock);
|
|
228
|
-
}
|
|
219
|
+
const res = await this.renderApplyResult(result.group.codeEditor.monacoEditor, codeBlock, (fastApplyFileResult.result || fastApplyFileResult.stream), fastApplyFileResult.range);
|
|
220
|
+
codeBlock.updatedCode = res.updatedCode;
|
|
221
|
+
codeBlock.status = 'pending';
|
|
222
|
+
// 用户实际接受的 apply 结果
|
|
223
|
+
codeBlock.applyResult = res.result;
|
|
224
|
+
this.updateCodeBlock(codeBlock);
|
|
229
225
|
return codeBlock;
|
|
230
226
|
}
|
|
231
227
|
catch (err) {
|
|
@@ -237,26 +233,28 @@ class BaseApplyService extends ide_core_browser_1.WithEventBus {
|
|
|
237
233
|
this.duringApply = false;
|
|
238
234
|
}
|
|
239
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* 渲染apply结果(支持流式和直接输出结果)
|
|
238
|
+
* 副作用:渲染时会添加accept、reject操作监听器,监听到结果时会自动更新codeBlock的result
|
|
239
|
+
*/
|
|
240
240
|
async renderApplyResult(editor, codeBlock, updatedContentOrStream, range) {
|
|
241
|
-
var _a, _b;
|
|
241
|
+
var _a, _b, _c;
|
|
242
242
|
const deferred = new ide_utils_1.Deferred();
|
|
243
243
|
const inlineDiffController = inline_diff_1.InlineDiffController.get(editor);
|
|
244
244
|
range = range || editor.getModel().getFullModelRange();
|
|
245
245
|
if (typeof updatedContentOrStream === 'string') {
|
|
246
|
+
const updatedContent = updatedContentOrStream;
|
|
246
247
|
const editorCurrentContent = editor.getModel().getValue();
|
|
247
248
|
const uri = ide_utils_1.URI.file(ide_utils_1.path.join(this.appConfig.workspaceDir, codeBlock.relativePath));
|
|
248
249
|
const document = this.editorDocumentModelService.getModelReference(uri);
|
|
249
|
-
if (editorCurrentContent !==
|
|
250
|
-
(_a = editor.getModel()) === null || _a === void 0 ? void 0 : _a.pushEditOperations([], [editOperation_1.EditOperation.replace(range,
|
|
250
|
+
if (editorCurrentContent !== updatedContent || (document === null || document === void 0 ? void 0 : document.instance.dirty)) {
|
|
251
|
+
(_a = editor.getModel()) === null || _a === void 0 ? void 0 : _a.pushEditOperations([], [editOperation_1.EditOperation.replace(range, updatedContent)], () => null);
|
|
251
252
|
await this.editorService.save(uri);
|
|
252
253
|
}
|
|
253
254
|
const uriPendingCodeBlocks = (_b = this.getUriCodeBlocks(uri)) === null || _b === void 0 ? void 0 : _b.filter((block) => block.status === 'pending');
|
|
254
255
|
const earlistPendingCodeBlock = uriPendingCodeBlocks === null || uriPendingCodeBlocks === void 0 ? void 0 : uriPendingCodeBlocks[uriPendingCodeBlocks.length - 1];
|
|
255
|
-
if (((earlistPendingCodeBlock === null ||
|
|
256
|
-
|
|
257
|
-
this.updateCodeBlock(codeBlock);
|
|
258
|
-
deferred.resolve();
|
|
259
|
-
return;
|
|
256
|
+
if (((_c = (earlistPendingCodeBlock || codeBlock)) === null || _c === void 0 ? void 0 : _c.originalCode) === updatedContent) {
|
|
257
|
+
throw new Error('No changes applied');
|
|
260
258
|
}
|
|
261
259
|
// Create diff previewer
|
|
262
260
|
const previewer = inlineDiffController.createDiffPreviewer(editor, ide_monaco_1.Selection.fromRange(range, ide_monaco_1.SelectionDirection.LTR), {
|
|
@@ -276,11 +274,14 @@ class BaseApplyService extends ide_core_browser_1.WithEventBus {
|
|
|
276
274
|
this.updateCodeBlock(codeBlock);
|
|
277
275
|
this.editorService.save(ide_utils_1.URI.file(ide_utils_1.path.join(this.appConfig.workspaceDir, codeBlock.relativePath)));
|
|
278
276
|
});
|
|
279
|
-
const { diff, rangesFromDiffHunk } = this.getDiffResult(codeBlock.originalCode,
|
|
277
|
+
const { diff, rangesFromDiffHunk } = this.getDiffResult(codeBlock.originalCode, updatedContent, codeBlock.relativePath);
|
|
280
278
|
const diagnosticInfos = this.getDiagnosticInfos(editor.getModel().uri.toString(), rangesFromDiffHunk);
|
|
281
279
|
deferred.resolve({
|
|
282
|
-
|
|
283
|
-
|
|
280
|
+
result: {
|
|
281
|
+
diff,
|
|
282
|
+
diagnosticInfos,
|
|
283
|
+
},
|
|
284
|
+
updatedCode: updatedContent,
|
|
284
285
|
});
|
|
285
286
|
}
|
|
286
287
|
else {
|
|
@@ -303,21 +304,22 @@ class BaseApplyService extends ide_core_browser_1.WithEventBus {
|
|
|
303
304
|
this.addDispose(
|
|
304
305
|
// 流式输出结束后,转为直接输出逻辑
|
|
305
306
|
previewer.getNode().onDiffFinished(async (diffModel) => {
|
|
306
|
-
codeBlock.updatedCode = diffModel.newFullRangeTextLines.join('\n');
|
|
307
307
|
// TODO: 添加 reapply
|
|
308
|
+
const updatedCode = diffModel.newFullRangeTextLines.join('\n');
|
|
308
309
|
// 实际应用结果为空,则取消
|
|
309
|
-
if (codeBlock.
|
|
310
|
-
codeBlock.status = 'failed';
|
|
311
|
-
this.updateCodeBlock(codeBlock);
|
|
310
|
+
if (codeBlock.originalCode === updatedCode) {
|
|
312
311
|
previewer.dispose();
|
|
313
312
|
deferred.reject(new Error('no changes applied'));
|
|
314
313
|
return;
|
|
315
314
|
}
|
|
316
|
-
codeBlock.status = 'pending';
|
|
317
|
-
this.updateCodeBlock(codeBlock);
|
|
318
315
|
previewer.dispose();
|
|
319
|
-
|
|
320
|
-
|
|
316
|
+
try {
|
|
317
|
+
const res = await this.renderApplyResult(editor, codeBlock, updatedCode);
|
|
318
|
+
deferred.resolve(res);
|
|
319
|
+
}
|
|
320
|
+
catch (err) {
|
|
321
|
+
deferred.reject(err);
|
|
322
|
+
}
|
|
321
323
|
}));
|
|
322
324
|
this.activePreviewerMap.set(codeBlock.relativePath, previewer);
|
|
323
325
|
}
|
|
@@ -365,14 +367,37 @@ class BaseApplyService extends ide_core_browser_1.WithEventBus {
|
|
|
365
367
|
editor.setSelection(new ide_monaco_1.Selection(startLine, 0, endLine, 0));
|
|
366
368
|
}
|
|
367
369
|
}
|
|
368
|
-
processAll(
|
|
369
|
-
var _a
|
|
370
|
-
const codeBlocks =
|
|
370
|
+
processAll(type, uri) {
|
|
371
|
+
var _a;
|
|
372
|
+
const codeBlocks = uri
|
|
373
|
+
? (_a = this.getUriCodeBlocks(uri)) === null || _a === void 0 ? void 0 : _a.filter((block) => block.status === 'pending')
|
|
374
|
+
: this.getSessionCodeBlocks().filter((block) => block.status === 'pending');
|
|
371
375
|
if (!(codeBlocks === null || codeBlocks === void 0 ? void 0 : codeBlocks.length)) {
|
|
372
376
|
throw new Error('No pending code block found');
|
|
373
377
|
}
|
|
374
|
-
const
|
|
375
|
-
|
|
378
|
+
const relativePaths = uri
|
|
379
|
+
? [codeBlocks[0].relativePath]
|
|
380
|
+
: codeBlocks
|
|
381
|
+
.map((block) => block.relativePath)
|
|
382
|
+
.reduce((acc, cur) => {
|
|
383
|
+
if (acc.includes(cur)) {
|
|
384
|
+
return acc;
|
|
385
|
+
}
|
|
386
|
+
acc.push(cur);
|
|
387
|
+
return acc;
|
|
388
|
+
}, []);
|
|
389
|
+
relativePaths.forEach((relativePath) => {
|
|
390
|
+
this.doProcess(type, relativePath);
|
|
391
|
+
});
|
|
392
|
+
codeBlocks.forEach((codeBlock) => {
|
|
393
|
+
codeBlock.status = type === 'accept' ? 'success' : 'cancelled';
|
|
394
|
+
// TODO: 批量更新
|
|
395
|
+
this.updateCodeBlock(codeBlock);
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
doProcess(type, relativePath) {
|
|
399
|
+
var _a, _b;
|
|
400
|
+
const decorationModel = (_b = (_a = this.activePreviewerMap.get(relativePath)) === null || _a === void 0 ? void 0 : _a.getNode()) === null || _b === void 0 ? void 0 : _b.livePreviewDiffDecorationModel;
|
|
376
401
|
if (!decorationModel) {
|
|
377
402
|
throw new Error('No active previewer found');
|
|
378
403
|
}
|
|
@@ -382,18 +407,12 @@ class BaseApplyService extends ide_core_browser_1.WithEventBus {
|
|
|
382
407
|
else {
|
|
383
408
|
decorationModel.discardUnProcessed();
|
|
384
409
|
}
|
|
385
|
-
this.editorService.save(
|
|
386
|
-
codeBlocks.forEach((codeBlock) => {
|
|
387
|
-
codeBlock.status = type === 'accept' ? 'success' : 'cancelled';
|
|
388
|
-
// TODO: 批量更新
|
|
389
|
-
this.updateCodeBlock(codeBlock);
|
|
390
|
-
});
|
|
410
|
+
this.editorService.save(ide_utils_1.URI.file(ide_utils_1.path.join(this.appConfig.workspaceDir, relativePath)));
|
|
391
411
|
}
|
|
392
412
|
listenPartialEdit(model, codeBlock) {
|
|
393
413
|
const deferred = new ide_utils_1.Deferred();
|
|
394
414
|
const uriString = model.uri.toString();
|
|
395
415
|
const toDispose = this.inlineDiffService.onPartialEdit((event) => {
|
|
396
|
-
// TODO 支持自动保存
|
|
397
416
|
if (event.totalPartialEditCount === event.resolvedPartialEditCount &&
|
|
398
417
|
event.uri.path === model.uri.path.toString()) {
|
|
399
418
|
if (event.acceptPartialEditCount > 0) {
|
|
@@ -408,11 +427,19 @@ class BaseApplyService extends ide_core_browser_1.WithEventBus {
|
|
|
408
427
|
actionSource: ide_core_browser_1.ActionSourceEnum.Chat,
|
|
409
428
|
sessionId: this.chatInternalService.sessionModel.sessionId,
|
|
410
429
|
isReceive: true,
|
|
411
|
-
|
|
412
|
-
|
|
430
|
+
// 是否有丢弃部分代码
|
|
431
|
+
isDrop: event.acceptPartialEditCount !== event.totalPartialEditCount,
|
|
432
|
+
code: appliedResult,
|
|
433
|
+
originCode: codeBlock.originalCode,
|
|
413
434
|
message: JSON.stringify({
|
|
414
435
|
diff,
|
|
415
436
|
diagnosticInfos,
|
|
437
|
+
instructions: codeBlock.instructions,
|
|
438
|
+
codeEdit: codeBlock.codeEdit,
|
|
439
|
+
partialEditCount: event.totalPartialEditCount,
|
|
440
|
+
acceptPartialEditCount: event.acceptPartialEditCount,
|
|
441
|
+
addedLinesCount: event.totalAddedLinesCount,
|
|
442
|
+
deletedLinesCount: event.totalDeletedLinesCount,
|
|
416
443
|
}),
|
|
417
444
|
});
|
|
418
445
|
deferred.resolve({
|
|
@@ -431,8 +458,11 @@ class BaseApplyService extends ide_core_browser_1.WithEventBus {
|
|
|
431
458
|
sessionId: this.chatInternalService.sessionModel.sessionId,
|
|
432
459
|
isReceive: false,
|
|
433
460
|
isDrop: true,
|
|
434
|
-
code: codeBlock.codeEdit,
|
|
435
461
|
originCode: codeBlock.originalCode,
|
|
462
|
+
message: JSON.stringify({
|
|
463
|
+
instructions: codeBlock.instructions,
|
|
464
|
+
codeEdit: codeBlock.codeEdit,
|
|
465
|
+
}),
|
|
436
466
|
});
|
|
437
467
|
}
|
|
438
468
|
this.editorListenerMap.disposeKey(uriString);
|
|
@@ -458,8 +488,6 @@ class BaseApplyService extends ide_core_browser_1.WithEventBus {
|
|
|
458
488
|
rangesFromDiffHunk,
|
|
459
489
|
};
|
|
460
490
|
}
|
|
461
|
-
// FIXME: 貌似筛选逻辑不太对,需要重构
|
|
462
|
-
// TODO: 支持使用内存中的document获取诊断信息,实现并行apply accept
|
|
463
491
|
getDiagnosticInfos(uri, ranges) {
|
|
464
492
|
const markers = this.markerService.getManager().getMarkers({ resource: uri });
|
|
465
493
|
return markers.filter((marker) => marker.severity >= ide_core_browser_1.MarkerSeverity.Warning &&
|
|
@@ -480,8 +508,8 @@ tslib_1.__decorate([
|
|
|
480
508
|
tslib_1.__metadata("design:type", ide_editor_1.WorkbenchEditorService)
|
|
481
509
|
], BaseApplyService.prototype, "editorService", void 0);
|
|
482
510
|
tslib_1.__decorate([
|
|
483
|
-
(0, di_1.Autowired)(
|
|
484
|
-
tslib_1.__metadata("design:type",
|
|
511
|
+
(0, di_1.Autowired)(common_1.InlineDiffServiceToken),
|
|
512
|
+
tslib_1.__metadata("design:type", Object)
|
|
485
513
|
], BaseApplyService.prototype, "inlineDiffService", void 0);
|
|
486
514
|
tslib_1.__decorate([
|
|
487
515
|
(0, di_1.Autowired)(ide_markers_1.IMarkerService),
|