@opensumi/ide-ai-native 3.8.1-next-1740452092.0 → 3.8.1-next-1740452912.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.
@@ -31,7 +31,7 @@ exports.ChatContext = (0, react_1.memo)(() => {
31
31
  (0, react_1.useEffect)(() => {
32
32
  const disposable = utils_1.Event.debounce(contextService.onDidContextFilesChangeEvent, (_, e) => e, 50)((files) => {
33
33
  if (files) {
34
- updateAddedFiles([...files.attached]);
34
+ updateAddedFiles(files);
35
35
  }
36
36
  }, contextService);
37
37
  return () => {
@@ -45,7 +45,7 @@ exports.ChatContext = (0, react_1.memo)(() => {
45
45
  contextService.addFileToContext(uri, undefined, true);
46
46
  }, []);
47
47
  const onDidDeselect = (0, react_1.useCallback)((uri) => {
48
- contextService.removeFileFromContext(uri, true);
48
+ contextService.removeFileFromContext(uri);
49
49
  }, []);
50
50
  const onDidClickFile = (0, react_1.useCallback)((uri) => {
51
51
  workbenchEditorService.open(uri);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/browser/components/ChatContext/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/browser/components/ChatContext/index.tsx"],"names":[],"mappings":"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"}
@@ -9,28 +9,17 @@ export declare class LLMContextServiceImpl extends WithEventBus implements LLMCo
9
9
  protected readonly docModelManager: IEditorDocumentModelService;
10
10
  protected readonly markerService: IMarkerService;
11
11
  private isAutoCollecting;
12
- private readonly maxAttachFilesLimit;
13
- private readonly maxViewFilesLimit;
14
- private readonly attachedFiles;
15
- private readonly recentlyViewFiles;
16
- private readonly onDidContextFilesChangeEmitter;
17
- onDidContextFilesChangeEvent: import("@opensumi/ide-utils/lib/event").Event<{
18
- viewed: FileContext[];
19
- attached: FileContext[];
20
- }>;
21
- private addFileToList;
12
+ private contextFiles;
13
+ private maxFiles;
14
+ private onDidContextFilesChangeEmitter;
15
+ onDidContextFilesChangeEvent: import("@opensumi/ide-utils/lib/event").Event<FileContext[]>;
22
16
  addFileToContext(uri: URI, selection?: [number, number], isManual?: boolean): void;
23
- private notifyContextChange;
24
17
  cleanFileContext(): void;
25
18
  private getAllContextFiles;
26
- removeFileFromContext(uri: URI, isManual?: boolean): void;
19
+ removeFileFromContext(uri: URI): void;
27
20
  startAutoCollection(): void;
28
21
  private startAutoCollectionInternal;
29
22
  stopAutoCollection(): void;
30
23
  serialize(): SerializedContext;
31
- private serializeRecentlyViewFiles;
32
- private serializeAttachedFiles;
33
- private serializeAttachedFile;
34
- private getFileErrors;
35
24
  }
36
25
  //# sourceMappingURL=llm-context.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-context.service.d.ts","sourceRoot":"","sources":["../../../src/browser/context/llm-context.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gEAAgE,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,yDAAyD,CAAC;AAEvF,OAAO,EAAW,GAAG,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAIL,2BAA2B,EAC5B,MAAM,kDAAkD,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAExE,OAAO,EAAqB,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEhH,qBACa,qBAAsB,SAAQ,YAAa,YAAW,iBAAiB;IAElF,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAGxC,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,2BAA2B,CAAC;IAGhE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;IAEjD,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAM;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAM;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IACvD,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAqE;IACpH,4BAA4B;gBAD4C,WAAW,EAAE;kBAAY,WAAW,EAAE;OACrC;IAEzE,OAAO,CAAC,aAAa;IAYrB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,UAAQ,GAAG,IAAI;IAahF,OAAO,CAAC,mBAAmB;IAI3B,gBAAgB;IAKhB,OAAO,CAAC,kBAAkB;IAO1B,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,UAAQ,GAAG,IAAI;IASvD,mBAAmB,IAAI,IAAI;IAS3B,OAAO,CAAC,2BAA2B;IAmDnC,kBAAkB,IAAI,IAAI;IAI1B,SAAS,IAAI,iBAAiB;IAU9B,OAAO,CAAC,0BAA0B;IAMlC,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,qBAAqB;IAkB7B,OAAO,CAAC,aAAa;CAStB"}
1
+ {"version":3,"file":"llm-context.service.d.ts","sourceRoot":"","sources":["../../../src/browser/context/llm-context.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gEAAgE,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,yDAAyD,CAAC;AAEvF,OAAO,EAAW,GAAG,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAIL,2BAA2B,EAC5B,MAAM,kDAAkD,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7F,qBACa,qBAAsB,SAAQ,YAAa,YAAW,iBAAiB;IAElF,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAGxC,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,2BAA2B,CAAC;IAGhE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;IAEjD,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO,CAAC,YAAY,CAAqB;IAEzC,OAAO,CAAC,QAAQ,CAAc;IAE9B,OAAO,CAAC,8BAA8B,CAAgC;IACtE,4BAA4B,+DAA6C;IAEzE,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,UAAO,GAAG,IAAI;IAY/E,gBAAgB;IAKhB,OAAO,CAAC,kBAAkB;IAI1B,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAQrC,mBAAmB,IAAI,IAAI;IAS3B,OAAO,CAAC,2BAA2B;IAiDnC,kBAAkB,IAAI,IAAI;IAI1B,SAAS,IAAI,iBAAiB;CAwC/B"}
@@ -14,53 +14,32 @@ let LLMContextServiceImpl = class LLMContextServiceImpl extends event_decorator_
14
14
  constructor() {
15
15
  super(...arguments);
16
16
  this.isAutoCollecting = false;
17
- this.maxAttachFilesLimit = 10;
18
- this.maxViewFilesLimit = 20;
19
- this.attachedFiles = [];
20
- this.recentlyViewFiles = [];
17
+ this.contextFiles = [];
18
+ this.maxFiles = 10; // 上下文的最大长度限制
21
19
  this.onDidContextFilesChangeEmitter = new utils_1.Emitter();
22
20
  this.onDidContextFilesChangeEvent = this.onDidContextFilesChangeEmitter.event;
23
21
  }
24
- addFileToList(file, list, maxLimit) {
25
- const existingIndex = list.findIndex((f) => f.uri.toString() === file.uri.toString());
26
- if (existingIndex > -1) {
27
- list.splice(existingIndex, 1);
22
+ addFileToContext(uri, selection, isManual = true) {
23
+ this.removeFileFromContext(uri);
24
+ this.contextFiles.push({ uri, selection, isManual });
25
+ if (this.contextFiles.length > this.maxFiles) {
26
+ this.contextFiles.shift();
28
27
  }
29
- list.push(file);
30
- if (list.length > maxLimit) {
31
- list.shift();
32
- }
33
- }
34
- addFileToContext(uri, selection, isManual = false) {
35
- if (!uri) {
36
- return;
37
- }
38
- const file = { uri, selection };
39
- const targetList = isManual ? this.attachedFiles : this.recentlyViewFiles;
40
- const maxLimit = isManual ? this.maxAttachFilesLimit : this.maxViewFilesLimit;
41
- this.addFileToList(file, targetList, maxLimit);
42
- this.notifyContextChange();
43
- }
44
- notifyContextChange() {
45
28
  this.onDidContextFilesChangeEmitter.fire(this.getAllContextFiles());
46
29
  }
47
30
  cleanFileContext() {
48
- this.attachedFiles.length = 0;
49
- this.notifyContextChange();
31
+ this.contextFiles = [];
32
+ this.onDidContextFilesChangeEmitter.fire(this.getAllContextFiles());
50
33
  }
51
34
  getAllContextFiles() {
52
- return {
53
- viewed: this.recentlyViewFiles,
54
- attached: this.attachedFiles,
55
- };
35
+ return [...this.contextFiles];
56
36
  }
57
- removeFileFromContext(uri, isManual = false) {
58
- const targetList = isManual ? this.attachedFiles : this.recentlyViewFiles;
59
- const index = targetList.findIndex((file) => file.uri.toString() === uri.toString());
37
+ removeFileFromContext(uri) {
38
+ const index = this.contextFiles.findIndex((file) => file.uri.toString() === uri.toString());
60
39
  if (index > -1) {
61
- targetList.splice(index, 1);
40
+ this.contextFiles.splice(index, 1);
41
+ this.onDidContextFilesChangeEmitter.fire(this.getAllContextFiles());
62
42
  }
63
- this.notifyContextChange();
64
43
  }
65
44
  startAutoCollection() {
66
45
  if (this.isAutoCollecting) {
@@ -74,13 +53,13 @@ let LLMContextServiceImpl = class LLMContextServiceImpl extends event_decorator_
74
53
  if (event.payload.uri.scheme !== 'file') {
75
54
  return;
76
55
  }
77
- this.addFileToContext(event.payload.uri, undefined, false);
56
+ // FIXME: 暂时不自动添加
57
+ // this.addFileToContext(event.payload.uri);
78
58
  }));
79
59
  this.disposables.push(this.eventBus.on(types_1.EditorDocumentModelRemovalEvent, (event) => {
80
60
  if (event.payload.scheme !== 'file') {
81
61
  return;
82
62
  }
83
- this.removeFileFromContext(event.payload, false);
84
63
  }));
85
64
  this.disposables.push(this.eventBus.on(types_1.EditorDocumentModelSavedEvent, (event) => {
86
65
  if (event.payload.scheme !== 'file') {
@@ -95,10 +74,10 @@ let LLMContextServiceImpl = class LLMContextServiceImpl extends event_decorator_
95
74
  event.payload.selections[0].positionLineNumber,
96
75
  ].sort();
97
76
  if (selection[0] === selection[1]) {
98
- this.addFileToContext(event.payload.editorUri, undefined, false);
77
+ this.addFileToContext(event.payload.editorUri, undefined);
99
78
  }
100
79
  else {
101
- this.addFileToContext(event.payload.editorUri, selection.sort((a, b) => a - b), false);
80
+ this.addFileToContext(event.payload.editorUri, selection.sort((a, b) => a - b));
102
81
  }
103
82
  }
104
83
  }));
@@ -108,47 +87,40 @@ let LLMContextServiceImpl = class LLMContextServiceImpl extends event_decorator_
108
87
  }
109
88
  serialize() {
110
89
  const files = this.getAllContextFiles();
111
- const workspaceRoot = utils_1.URI.file(this.appConfig.workspaceDir);
112
- return {
113
- recentlyViewFiles: this.serializeRecentlyViewFiles(files.viewed, workspaceRoot),
114
- attachedFiles: this.serializeAttachedFiles(files.attached, workspaceRoot),
115
- };
116
- }
117
- serializeRecentlyViewFiles(files, workspaceRoot) {
118
- return files
119
- .map((file) => { var _a; return ((_a = workspaceRoot.relative(file.uri)) === null || _a === void 0 ? void 0 : _a.toString()) || file.uri.parent.toString(); })
120
- .filter(Boolean);
121
- }
122
- serializeAttachedFiles(files, workspaceRoot) {
123
- return files
124
- .map((file) => this.serializeAttachedFile(file, workspaceRoot))
90
+ const recentlyViewFiles = files
91
+ .filter((v) => !v.selection)
92
+ .map((file) => {
93
+ const relativePath = utils_1.URI.file(this.appConfig.workspaceDir).relative(file.uri);
94
+ if (relativePath) {
95
+ return relativePath.toString();
96
+ }
97
+ return file.uri.parent.toString();
98
+ })
125
99
  .filter(Boolean);
126
- }
127
- serializeAttachedFile(file, workspaceRoot) {
128
- try {
100
+ const attachedFiles = files
101
+ .filter((v) => v.selection)
102
+ .map((file) => {
129
103
  const ref = this.docModelManager.getModelReference(file.uri);
130
- if (!ref) {
131
- return null;
132
- }
104
+ const content = ref.instance.getText();
105
+ const lineErrors = this.markerService
106
+ .getManager()
107
+ .getMarkers({
108
+ resource: file.uri.toString(),
109
+ severities: markers_1.MarkerSeverity.Error,
110
+ })
111
+ .map((marker) => marker.message);
133
112
  return {
134
- content: ref.instance.getText(),
135
- lineErrors: this.getFileErrors(file.uri),
136
- path: workspaceRoot.relative(file.uri).toString(),
137
- language: ref.instance.languageId,
113
+ content,
114
+ lineErrors,
115
+ path: utils_1.URI.file(this.appConfig.workspaceDir).relative(file.uri).toString(),
116
+ language: ref === null || ref === void 0 ? void 0 : ref.instance.languageId,
138
117
  };
139
- }
140
- catch (e) {
141
- return null;
142
- }
143
- }
144
- getFileErrors(uri) {
145
- return this.markerService
146
- .getManager()
147
- .getMarkers({
148
- resource: uri.toString(),
149
- severities: markers_1.MarkerSeverity.Error,
150
118
  })
151
- .map((marker) => marker.message);
119
+ .filter(Boolean);
120
+ return {
121
+ recentlyViewFiles,
122
+ attachedFiles,
123
+ };
152
124
  }
153
125
  };
154
126
  exports.LLMContextServiceImpl = LLMContextServiceImpl;
@@ -1 +1 @@
1
- {"version":3,"file":"llm-context.service.js","sourceRoot":"","sources":["../../../src/browser/context/llm-context.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-context.service.js","sourceRoot":"","sources":["../../../src/browser/context/llm-context.service.ts"],"names":[],"mappings":"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"}
@@ -10,31 +10,28 @@ export interface LLMContextService {
10
10
  * 清除上下文
11
11
  */
12
12
  cleanFileContext(): void;
13
- onDidContextFilesChangeEvent: Event<{
14
- viewed: FileContext[];
15
- attached: FileContext[];
16
- }>;
13
+ onDidContextFilesChangeEvent: Event<FileContext[]>;
17
14
  /**
18
15
  * 从 context 中移除文件
19
16
  * @param uri URI
20
17
  */
21
- removeFileFromContext(uri: URI, isManual?: boolean): void;
18
+ removeFileFromContext(uri: URI): void;
22
19
  /** 导出为可序列化格式 */
23
20
  serialize(): SerializedContext;
24
21
  }
25
22
  export interface FileContext {
26
23
  uri: URI;
27
24
  selection?: [number, number];
25
+ isManual: boolean;
28
26
  }
29
27
  export declare const LLMContextServiceToken: unique symbol;
30
- export interface AttachFileContext {
31
- content: string;
32
- lineErrors: string[];
33
- path: string;
34
- language: string;
35
- }
36
28
  export interface SerializedContext {
37
29
  recentlyViewFiles: string[];
38
- attachedFiles: Array<AttachFileContext>;
30
+ attachedFiles: Array<{
31
+ content: string;
32
+ lineErrors: string[];
33
+ path: string;
34
+ language: string;
35
+ }>;
39
36
  }
40
37
  //# sourceMappingURL=llm-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-context.d.ts","sourceRoot":"","sources":["../../src/common/llm-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,IAAI,IAAI,CAAC;IAE5B,kBAAkB,IAAI,IAAI,CAAC;IAE3B;;OAEG;IACH,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAEnF;;OAEG;IACH,gBAAgB,IAAI,IAAI,CAAC;IAEzB,4BAA4B,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAAC,QAAQ,EAAE,WAAW,EAAE,CAAA;KAAE,CAAC,CAAC;IAExF;;;OAGG;IACH,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAE1D,gBAAgB;IAChB,SAAS,IAAI,iBAAiB,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,eAAO,MAAM,sBAAsB,eAA8B,CAAC;AAElE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;CACzC"}
1
+ {"version":3,"file":"llm-context.d.ts","sourceRoot":"","sources":["../../src/common/llm-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,IAAI,IAAI,CAAC;IAE5B,kBAAkB,IAAI,IAAI,CAAC;IAE3B;;OAEG;IACH,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAEnF;;OAEG;IACH,gBAAgB,IAAI,IAAI,CAAC;IAEzB,4BAA4B,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAEnD;;;OAGG;IACH,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;IAEtC,gBAAgB;IAChB,SAAS,IAAI,iBAAiB,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,sBAAsB,eAA8B,CAAC;AAElE,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjG"}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-context.js","sourceRoot":"","sources":["../../src/common/llm-context.ts"],"names":[],"mappings":";;;AAkCa,QAAA,sBAAsB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"llm-context.js","sourceRoot":"","sources":["../../src/common/llm-context.ts"],"names":[],"mappings":";;;AAmCa,QAAA,sBAAsB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensumi/ide-ai-native",
3
- "version": "3.8.1-next-1740452092.0",
3
+ "version": "3.8.1-next-1740452912.0",
4
4
  "files": [
5
5
  "lib",
6
6
  "src"
@@ -23,26 +23,26 @@
23
23
  "@ai-sdk/deepseek": "^0.1.8",
24
24
  "@ai-sdk/openai": "^1.1.9",
25
25
  "@modelcontextprotocol/sdk": "^1.3.1",
26
- "@opensumi/ide-addons": "3.8.1-next-1740452092.0",
27
- "@opensumi/ide-components": "3.8.1-next-1740452092.0",
28
- "@opensumi/ide-connection": "3.8.1-next-1740452092.0",
29
- "@opensumi/ide-core-common": "3.8.1-next-1740452092.0",
30
- "@opensumi/ide-core-node": "3.8.1-next-1740452092.0",
31
- "@opensumi/ide-debug": "3.8.1-next-1740452092.0",
32
- "@opensumi/ide-design": "3.8.1-next-1740452092.0",
33
- "@opensumi/ide-editor": "3.8.1-next-1740452092.0",
34
- "@opensumi/ide-file-search": "3.8.1-next-1740452092.0",
35
- "@opensumi/ide-file-service": "3.8.1-next-1740452092.0",
36
- "@opensumi/ide-main-layout": "3.8.1-next-1740452092.0",
37
- "@opensumi/ide-markers": "3.8.1-next-1740452092.0",
38
- "@opensumi/ide-monaco": "3.8.1-next-1740452092.0",
39
- "@opensumi/ide-overlay": "3.8.1-next-1740452092.0",
40
- "@opensumi/ide-preferences": "3.8.1-next-1740452092.0",
41
- "@opensumi/ide-search": "3.8.1-next-1740452092.0",
42
- "@opensumi/ide-terminal-next": "3.8.1-next-1740452092.0",
43
- "@opensumi/ide-theme": "3.8.1-next-1740452092.0",
44
- "@opensumi/ide-utils": "3.8.1-next-1740452092.0",
45
- "@opensumi/ide-workspace": "3.8.1-next-1740452092.0",
26
+ "@opensumi/ide-addons": "3.8.1-next-1740452912.0",
27
+ "@opensumi/ide-components": "3.8.1-next-1740452912.0",
28
+ "@opensumi/ide-connection": "3.8.1-next-1740452912.0",
29
+ "@opensumi/ide-core-common": "3.8.1-next-1740452912.0",
30
+ "@opensumi/ide-core-node": "3.8.1-next-1740452912.0",
31
+ "@opensumi/ide-debug": "3.8.1-next-1740452912.0",
32
+ "@opensumi/ide-design": "3.8.1-next-1740452912.0",
33
+ "@opensumi/ide-editor": "3.8.1-next-1740452912.0",
34
+ "@opensumi/ide-file-search": "3.8.1-next-1740452912.0",
35
+ "@opensumi/ide-file-service": "3.8.1-next-1740452912.0",
36
+ "@opensumi/ide-main-layout": "3.8.1-next-1740452912.0",
37
+ "@opensumi/ide-markers": "3.8.1-next-1740452912.0",
38
+ "@opensumi/ide-monaco": "3.8.1-next-1740452912.0",
39
+ "@opensumi/ide-overlay": "3.8.1-next-1740452912.0",
40
+ "@opensumi/ide-preferences": "3.8.1-next-1740452912.0",
41
+ "@opensumi/ide-search": "3.8.1-next-1740452912.0",
42
+ "@opensumi/ide-terminal-next": "3.8.1-next-1740452912.0",
43
+ "@opensumi/ide-theme": "3.8.1-next-1740452912.0",
44
+ "@opensumi/ide-utils": "3.8.1-next-1740452912.0",
45
+ "@opensumi/ide-workspace": "3.8.1-next-1740452912.0",
46
46
  "@xterm/xterm": "5.5.0",
47
47
  "ai": "^4.1.21",
48
48
  "ansi-regex": "^2.0.0",
@@ -57,7 +57,7 @@
57
57
  "zod-to-json-schema": "^3.24.1"
58
58
  },
59
59
  "devDependencies": {
60
- "@opensumi/ide-core-browser": "3.8.1-next-1740452092.0"
60
+ "@opensumi/ide-core-browser": "3.8.1-next-1740452912.0"
61
61
  },
62
- "gitHead": "7141eb9be9489c0442a31e595cfff5d2e420e0de"
62
+ "gitHead": "8a0d401874c0cb4ce0cf8f56c8bd636e0cf8b04e"
63
63
  }
@@ -39,7 +39,7 @@ export const ChatContext = memo(() => {
39
39
  50,
40
40
  )((files) => {
41
41
  if (files) {
42
- updateAddedFiles([...files.attached]);
42
+ updateAddedFiles(files);
43
43
  }
44
44
  }, contextService);
45
45
 
@@ -57,7 +57,7 @@ export const ChatContext = memo(() => {
57
57
  }, []);
58
58
 
59
59
  const onDidDeselect = useCallback((uri: URI) => {
60
- contextService.removeFileFromContext(uri, true);
60
+ contextService.removeFileFromContext(uri);
61
61
  }, []);
62
62
 
63
63
  const onDidClickFile = useCallback((uri: URI) => {
@@ -12,7 +12,7 @@ import {
12
12
  import { EditorSelectionChangeEvent } from '@opensumi/ide-editor/lib/browser/types';
13
13
  import { IMarkerService } from '@opensumi/ide-markers/lib/common/types';
14
14
 
15
- import { AttachFileContext, FileContext, LLMContextService, SerializedContext } from '../../common/llm-context';
15
+ import { FileContext, LLMContextService, SerializedContext } from '../../common/llm-context';
16
16
 
17
17
  @Injectable()
18
18
  export class LLMContextServiceImpl extends WithEventBus implements LLMContextService {
@@ -27,61 +27,40 @@ export class LLMContextServiceImpl extends WithEventBus implements LLMContextSer
27
27
 
28
28
  private isAutoCollecting = false;
29
29
 
30
- private readonly maxAttachFilesLimit = 10;
31
- private readonly maxViewFilesLimit = 20;
32
- private readonly attachedFiles: FileContext[] = [];
33
- private readonly recentlyViewFiles: FileContext[] = [];
34
- private readonly onDidContextFilesChangeEmitter = new Emitter<{ viewed: FileContext[]; attached: FileContext[] }>();
35
- onDidContextFilesChangeEvent = this.onDidContextFilesChangeEmitter.event;
30
+ private contextFiles: FileContext[] = [];
36
31
 
37
- private addFileToList(file: FileContext, list: FileContext[], maxLimit: number) {
38
- const existingIndex = list.findIndex((f) => f.uri.toString() === file.uri.toString());
39
- if (existingIndex > -1) {
40
- list.splice(existingIndex, 1);
41
- }
32
+ private maxFiles: number = 10; // 上下文的最大长度限制
42
33
 
43
- list.push(file);
44
- if (list.length > maxLimit) {
45
- list.shift();
46
- }
47
- }
34
+ private onDidContextFilesChangeEmitter = new Emitter<FileContext[]>();
35
+ onDidContextFilesChangeEvent = this.onDidContextFilesChangeEmitter.event;
48
36
 
49
- addFileToContext(uri: URI, selection?: [number, number], isManual = false): void {
50
- if (!uri) {
51
- return;
52
- }
37
+ addFileToContext(uri: URI, selection?: [number, number], isManual = true): void {
38
+ this.removeFileFromContext(uri);
53
39
 
54
- const file = { uri, selection };
55
- const targetList = isManual ? this.attachedFiles : this.recentlyViewFiles;
56
- const maxLimit = isManual ? this.maxAttachFilesLimit : this.maxViewFilesLimit;
40
+ this.contextFiles.push({ uri, selection, isManual });
57
41
 
58
- this.addFileToList(file, targetList, maxLimit);
59
- this.notifyContextChange();
60
- }
42
+ if (this.contextFiles.length > this.maxFiles) {
43
+ this.contextFiles.shift();
44
+ }
61
45
 
62
- private notifyContextChange(): void {
63
46
  this.onDidContextFilesChangeEmitter.fire(this.getAllContextFiles());
64
47
  }
65
48
 
66
49
  cleanFileContext() {
67
- this.attachedFiles.length = 0;
68
- this.notifyContextChange();
50
+ this.contextFiles = [];
51
+ this.onDidContextFilesChangeEmitter.fire(this.getAllContextFiles());
69
52
  }
70
53
 
71
54
  private getAllContextFiles() {
72
- return {
73
- viewed: this.recentlyViewFiles,
74
- attached: this.attachedFiles,
75
- };
55
+ return [...this.contextFiles];
76
56
  }
77
57
 
78
- removeFileFromContext(uri: URI, isManual = false): void {
79
- const targetList = isManual ? this.attachedFiles : this.recentlyViewFiles;
80
- const index = targetList.findIndex((file) => file.uri.toString() === uri.toString());
58
+ removeFileFromContext(uri: URI): void {
59
+ const index = this.contextFiles.findIndex((file) => file.uri.toString() === uri.toString());
81
60
  if (index > -1) {
82
- targetList.splice(index, 1);
61
+ this.contextFiles.splice(index, 1);
62
+ this.onDidContextFilesChangeEmitter.fire(this.getAllContextFiles());
83
63
  }
84
- this.notifyContextChange();
85
64
  }
86
65
 
87
66
  startAutoCollection(): void {
@@ -99,7 +78,8 @@ export class LLMContextServiceImpl extends WithEventBus implements LLMContextSer
99
78
  if (event.payload.uri.scheme !== 'file') {
100
79
  return;
101
80
  }
102
- this.addFileToContext(event.payload.uri, undefined, false);
81
+ // FIXME: 暂时不自动添加
82
+ // this.addFileToContext(event.payload.uri);
103
83
  }),
104
84
  );
105
85
 
@@ -108,8 +88,6 @@ export class LLMContextServiceImpl extends WithEventBus implements LLMContextSer
108
88
  if (event.payload.scheme !== 'file') {
109
89
  return;
110
90
  }
111
-
112
- this.removeFileFromContext(event.payload, false);
113
91
  }),
114
92
  );
115
93
 
@@ -131,12 +109,11 @@ export class LLMContextServiceImpl extends WithEventBus implements LLMContextSer
131
109
  ].sort() as [number, number];
132
110
 
133
111
  if (selection[0] === selection[1]) {
134
- this.addFileToContext(event.payload.editorUri, undefined, false);
112
+ this.addFileToContext(event.payload.editorUri, undefined);
135
113
  } else {
136
114
  this.addFileToContext(
137
115
  event.payload.editorUri,
138
116
  selection.sort((a, b) => a - b),
139
- false,
140
117
  );
141
118
  }
142
119
  }
@@ -150,51 +127,42 @@ export class LLMContextServiceImpl extends WithEventBus implements LLMContextSer
150
127
 
151
128
  serialize(): SerializedContext {
152
129
  const files = this.getAllContextFiles();
153
- const workspaceRoot = URI.file(this.appConfig.workspaceDir);
154
-
155
- return {
156
- recentlyViewFiles: this.serializeRecentlyViewFiles(files.viewed, workspaceRoot),
157
- attachedFiles: this.serializeAttachedFiles(files.attached, workspaceRoot),
158
- };
159
- }
160
-
161
- private serializeRecentlyViewFiles(files: FileContext[], workspaceRoot: URI): string[] {
162
- return files
163
- .map((file) => workspaceRoot.relative(file.uri)?.toString() || file.uri.parent.toString())
130
+ const recentlyViewFiles = files
131
+ .filter((v) => !v.selection)
132
+ .map((file) => {
133
+ const relativePath = URI.file(this.appConfig.workspaceDir).relative(file.uri);
134
+ if (relativePath) {
135
+ return relativePath.toString();
136
+ }
137
+ return file.uri.parent.toString();
138
+ })
164
139
  .filter(Boolean);
165
- }
166
-
167
- private serializeAttachedFiles(files: FileContext[], workspaceRoot: URI): AttachFileContext[] {
168
- return files
169
- .map((file) => this.serializeAttachedFile(file, workspaceRoot))
170
- .filter(Boolean) as unknown as AttachFileContext[];
171
- }
172
140
 
173
- private serializeAttachedFile(file: FileContext, workspaceRoot: URI) {
174
- try {
175
- const ref = this.docModelManager.getModelReference(file.uri);
176
- if (!ref) {
177
- return null;
178
- }
179
-
180
- return {
181
- content: ref.instance.getText(),
182
- lineErrors: this.getFileErrors(file.uri),
183
- path: workspaceRoot.relative(file.uri)!.toString(),
184
- language: ref.instance.languageId!,
185
- };
186
- } catch (e) {
187
- return null;
188
- }
189
- }
190
-
191
- private getFileErrors(uri: URI): string[] {
192
- return this.markerService
193
- .getManager()
194
- .getMarkers({
195
- resource: uri.toString(),
196
- severities: MarkerSeverity.Error,
141
+ const attachedFiles = files
142
+ .filter((v) => v.selection)
143
+ .map((file) => {
144
+ const ref = this.docModelManager.getModelReference(file.uri);
145
+ const content = ref!.instance.getText();
146
+ const lineErrors = this.markerService
147
+ .getManager()
148
+ .getMarkers({
149
+ resource: file.uri.toString(),
150
+ severities: MarkerSeverity.Error,
151
+ })
152
+ .map((marker) => marker.message);
153
+
154
+ return {
155
+ content,
156
+ lineErrors,
157
+ path: URI.file(this.appConfig.workspaceDir).relative(file.uri)!.toString(),
158
+ language: ref?.instance.languageId!,
159
+ };
197
160
  })
198
- .map((marker) => marker.message);
161
+ .filter(Boolean);
162
+
163
+ return {
164
+ recentlyViewFiles,
165
+ attachedFiles,
166
+ };
199
167
  }
200
168
  }
@@ -15,13 +15,13 @@ export interface LLMContextService {
15
15
  */
16
16
  cleanFileContext(): void;
17
17
 
18
- onDidContextFilesChangeEvent: Event<{ viewed: FileContext[]; attached: FileContext[] }>;
18
+ onDidContextFilesChangeEvent: Event<FileContext[]>;
19
19
 
20
20
  /**
21
21
  * 从 context 中移除文件
22
22
  * @param uri URI
23
23
  */
24
- removeFileFromContext(uri: URI, isManual?: boolean): void;
24
+ removeFileFromContext(uri: URI): void;
25
25
 
26
26
  /** 导出为可序列化格式 */
27
27
  serialize(): SerializedContext;
@@ -30,18 +30,12 @@ export interface LLMContextService {
30
30
  export interface FileContext {
31
31
  uri: URI;
32
32
  selection?: [number, number];
33
+ isManual: boolean;
33
34
  }
34
35
 
35
36
  export const LLMContextServiceToken = Symbol('LLMContextService');
36
37
 
37
- export interface AttachFileContext {
38
- content: string;
39
- lineErrors: string[];
40
- path: string;
41
- language: string;
42
- }
43
-
44
38
  export interface SerializedContext {
45
39
  recentlyViewFiles: string[];
46
- attachedFiles: Array<AttachFileContext>;
40
+ attachedFiles: Array<{ content: string; lineErrors: string[]; path: string; language: string }>;
47
41
  }