@opensumi/ide-ai-native 3.8.1-next-1740735952.0 → 3.8.1-next-1740965430.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.
Files changed (139) hide show
  1. package/lib/browser/ai-core.contribution.d.ts +4 -1
  2. package/lib/browser/ai-core.contribution.d.ts.map +1 -1
  3. package/lib/browser/ai-core.contribution.js +20 -1
  4. package/lib/browser/ai-core.contribution.js.map +1 -1
  5. package/lib/browser/chat/chat-agent.service.d.ts +8 -0
  6. package/lib/browser/chat/chat-agent.service.d.ts.map +1 -1
  7. package/lib/browser/chat/chat-agent.service.js +34 -0
  8. package/lib/browser/chat/chat-agent.service.js.map +1 -1
  9. package/lib/browser/chat/chat-manager.service.d.ts +1 -0
  10. package/lib/browser/chat/chat-manager.service.d.ts.map +1 -1
  11. package/lib/browser/chat/chat-manager.service.js +13 -0
  12. package/lib/browser/chat/chat-manager.service.js.map +1 -1
  13. package/lib/browser/chat/chat-model.d.ts.map +1 -1
  14. package/lib/browser/chat/chat-model.js +3 -2
  15. package/lib/browser/chat/chat-model.js.map +1 -1
  16. package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
  17. package/lib/browser/chat/chat-proxy.service.js +1 -1
  18. package/lib/browser/chat/chat-proxy.service.js.map +1 -1
  19. package/lib/browser/chat/chat.internal.service.d.ts +1 -0
  20. package/lib/browser/chat/chat.internal.service.d.ts.map +1 -1
  21. package/lib/browser/chat/chat.internal.service.js +3 -0
  22. package/lib/browser/chat/chat.internal.service.js.map +1 -1
  23. package/lib/browser/chat/chat.module.less +1 -2
  24. package/lib/browser/chat/chat.view.d.ts.map +1 -1
  25. package/lib/browser/chat/chat.view.js +6 -38
  26. package/lib/browser/chat/chat.view.js.map +1 -1
  27. package/lib/browser/components/ChatContext/index.js +2 -2
  28. package/lib/browser/components/ChatContext/index.js.map +1 -1
  29. package/lib/browser/components/ChatHistory.d.ts +0 -1
  30. package/lib/browser/components/ChatHistory.d.ts.map +1 -1
  31. package/lib/browser/components/ChatHistory.js +14 -14
  32. package/lib/browser/components/ChatHistory.js.map +1 -1
  33. package/lib/browser/components/ChatInput.d.ts.map +1 -1
  34. package/lib/browser/components/ChatInput.js +25 -1
  35. package/lib/browser/components/ChatInput.js.map +1 -1
  36. package/lib/browser/components/ChatToolRender.d.ts.map +1 -1
  37. package/lib/browser/components/ChatToolRender.js +2 -3
  38. package/lib/browser/components/ChatToolRender.js.map +1 -1
  39. package/lib/browser/components/{chat-history.css → chat-history.module.less} +1 -1
  40. package/lib/browser/components/components.module.less +20 -0
  41. package/lib/browser/context/llm-context.service.d.ts +18 -5
  42. package/lib/browser/context/llm-context.service.d.ts.map +1 -1
  43. package/lib/browser/context/llm-context.service.js +80 -47
  44. package/lib/browser/context/llm-context.service.js.map +1 -1
  45. package/lib/browser/layout/layout.module.less +4 -4
  46. package/lib/browser/mcp/base-apply.service.d.ts +31 -40
  47. package/lib/browser/mcp/base-apply.service.d.ts.map +1 -1
  48. package/lib/browser/mcp/base-apply.service.js +233 -167
  49. package/lib/browser/mcp/base-apply.service.js.map +1 -1
  50. package/lib/browser/mcp/tools/components/EditFile.d.ts.map +1 -1
  51. package/lib/browser/mcp/tools/components/EditFile.js +55 -41
  52. package/lib/browser/mcp/tools/components/EditFile.js.map +1 -1
  53. package/lib/browser/mcp/tools/components/index.module.less +23 -3
  54. package/lib/browser/mcp/tools/createNewFileWithText.d.ts.map +1 -1
  55. package/lib/browser/mcp/tools/createNewFileWithText.js +1 -0
  56. package/lib/browser/mcp/tools/createNewFileWithText.js.map +1 -1
  57. package/lib/browser/mcp/tools/editFile.js +1 -1
  58. package/lib/browser/mcp/tools/editFile.js.map +1 -1
  59. package/lib/browser/mcp/tools/getDiagnosticsByPath.d.ts.map +1 -1
  60. package/lib/browser/mcp/tools/getDiagnosticsByPath.js +1 -0
  61. package/lib/browser/mcp/tools/getDiagnosticsByPath.js.map +1 -1
  62. package/lib/browser/mcp/tools/handlers/EditFile.d.ts +5 -1
  63. package/lib/browser/mcp/tools/handlers/EditFile.d.ts.map +1 -1
  64. package/lib/browser/mcp/tools/handlers/EditFile.js +4 -4
  65. package/lib/browser/mcp/tools/handlers/EditFile.js.map +1 -1
  66. package/lib/browser/mcp/tools/handlers/RunCommand.d.ts.map +1 -1
  67. package/lib/browser/mcp/tools/handlers/RunCommand.js +2 -0
  68. package/lib/browser/mcp/tools/handlers/RunCommand.js.map +1 -1
  69. package/lib/browser/mcp/tools/runTerminalCmd.d.ts.map +1 -1
  70. package/lib/browser/mcp/tools/runTerminalCmd.js +1 -0
  71. package/lib/browser/mcp/tools/runTerminalCmd.js.map +1 -1
  72. package/lib/browser/model/msg-history-manager.d.ts +1 -0
  73. package/lib/browser/model/msg-history-manager.d.ts.map +1 -1
  74. package/lib/browser/model/msg-history-manager.js +12 -2
  75. package/lib/browser/model/msg-history-manager.js.map +1 -1
  76. package/lib/browser/preferences/schema.d.ts.map +1 -1
  77. package/lib/browser/preferences/schema.js +0 -1
  78. package/lib/browser/preferences/schema.js.map +1 -1
  79. package/lib/browser/types.d.ts +1 -1
  80. package/lib/browser/types.d.ts.map +1 -1
  81. package/lib/browser/widget/inline-diff/inline-diff-manager.d.ts +6 -0
  82. package/lib/browser/widget/inline-diff/inline-diff-manager.d.ts.map +1 -0
  83. package/lib/browser/widget/inline-diff/inline-diff-manager.js +27 -0
  84. package/lib/browser/widget/inline-diff/inline-diff-manager.js.map +1 -0
  85. package/lib/browser/widget/inline-diff/inline-diff-widget.module.less +12 -0
  86. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts +2 -0
  87. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts.map +1 -1
  88. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js +11 -4
  89. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js.map +1 -1
  90. package/lib/common/llm-context.d.ts +13 -9
  91. package/lib/common/llm-context.d.ts.map +1 -1
  92. package/lib/common/llm-context.js.map +1 -1
  93. package/lib/common/prompts/context-prompt-provider.d.ts +4 -3
  94. package/lib/common/prompts/context-prompt-provider.d.ts.map +1 -1
  95. package/lib/common/prompts/context-prompt-provider.js +33 -22
  96. package/lib/common/prompts/context-prompt-provider.js.map +1 -1
  97. package/lib/common/types.d.ts +17 -0
  98. package/lib/common/types.d.ts.map +1 -1
  99. package/lib/common/types.js.map +1 -1
  100. package/lib/node/base-language-model.d.ts +1 -1
  101. package/lib/node/base-language-model.d.ts.map +1 -1
  102. package/lib/node/base-language-model.js +54 -3
  103. package/lib/node/base-language-model.js.map +1 -1
  104. package/package.json +23 -23
  105. package/src/browser/ai-core.contribution.ts +25 -1
  106. package/src/browser/chat/chat-agent.service.ts +42 -3
  107. package/src/browser/chat/chat-manager.service.ts +12 -0
  108. package/src/browser/chat/chat-model.ts +11 -6
  109. package/src/browser/chat/chat-proxy.service.ts +2 -1
  110. package/src/browser/chat/chat.internal.service.ts +4 -0
  111. package/src/browser/chat/chat.module.less +1 -2
  112. package/src/browser/chat/chat.view.tsx +7 -70
  113. package/src/browser/components/ChatContext/index.tsx +2 -2
  114. package/src/browser/components/ChatHistory.tsx +21 -15
  115. package/src/browser/components/ChatInput.tsx +67 -4
  116. package/src/browser/components/ChatToolRender.tsx +1 -2
  117. package/src/browser/components/{chat-history.css → chat-history.module.less} +1 -1
  118. package/src/browser/components/components.module.less +20 -0
  119. package/src/browser/context/llm-context.service.ts +93 -54
  120. package/src/browser/layout/layout.module.less +4 -4
  121. package/src/browser/mcp/base-apply.service.ts +266 -213
  122. package/src/browser/mcp/tools/components/EditFile.tsx +82 -60
  123. package/src/browser/mcp/tools/components/index.module.less +23 -3
  124. package/src/browser/mcp/tools/createNewFileWithText.ts +1 -0
  125. package/src/browser/mcp/tools/editFile.ts +2 -2
  126. package/src/browser/mcp/tools/getDiagnosticsByPath.ts +1 -0
  127. package/src/browser/mcp/tools/handlers/EditFile.ts +4 -4
  128. package/src/browser/mcp/tools/handlers/RunCommand.ts +2 -0
  129. package/src/browser/mcp/tools/runTerminalCmd.ts +1 -0
  130. package/src/browser/model/msg-history-manager.ts +12 -2
  131. package/src/browser/preferences/schema.ts +0 -1
  132. package/src/browser/types.ts +1 -1
  133. package/src/browser/widget/inline-diff/inline-diff-manager.tsx +38 -0
  134. package/src/browser/widget/inline-diff/inline-diff-widget.module.less +12 -0
  135. package/src/browser/widget/inline-stream-diff/inline-stream-diff.handler.tsx +13 -4
  136. package/src/common/llm-context.ts +10 -4
  137. package/src/common/prompts/context-prompt-provider.ts +38 -29
  138. package/src/common/types.ts +20 -0
  139. package/src/node/base-language-model.ts +63 -1
@@ -60,6 +60,7 @@ export abstract class BaseLanguageModel {
60
60
  options.topP,
61
61
  options.topK,
62
62
  options.providerOptions,
63
+ options.trimTexts,
63
64
  cancellationToken,
64
65
  );
65
66
  }
@@ -87,6 +88,7 @@ export abstract class BaseLanguageModel {
87
88
  topP?: number,
88
89
  topK?: number,
89
90
  providerOptions?: Record<string, any>,
91
+ trimTexts?: [string, string],
90
92
  cancellationToken?: CancellationToken,
91
93
  ): Promise<any> {
92
94
  try {
@@ -120,9 +122,42 @@ export abstract class BaseLanguageModel {
120
122
  providerOptions,
121
123
  });
122
124
 
125
+ // 状态跟踪变量
126
+ let isFirstChunk = true;
127
+ let bufferedText = '';
128
+ const pendingLines: string[] = [];
123
129
  for await (const chunk of stream.fullStream) {
124
130
  if (chunk.type === 'text-delta') {
125
- chatReadableStream.emitData({ kind: 'content', content: chunk.textDelta });
131
+ if (trimTexts?.length) {
132
+ // 将收到的文本追加到缓冲区
133
+ bufferedText += chunk.textDelta;
134
+
135
+ // 处理第一个文本块的前缀(只处理一次)
136
+ if (isFirstChunk && bufferedText.includes(trimTexts[0])) {
137
+ bufferedText = bufferedText.substring(bufferedText.indexOf(trimTexts[0]) + trimTexts[0].length);
138
+ isFirstChunk = false;
139
+ }
140
+
141
+ // 检查是否有完整的行,并将它们添加到待发送行队列
142
+ const lines = bufferedText.split('\n');
143
+
144
+ // 最后一个元素可能是不完整的行,保留在缓冲区
145
+ bufferedText = lines.pop() || '';
146
+
147
+ // 将完整的行添加到待发送队列
148
+ if (lines.length > 0) {
149
+ pendingLines.push(...lines);
150
+ }
151
+
152
+ // 发送除最后几行外的所有行(保留足够的行以处理后缀)
153
+ while (pendingLines.length > 3) {
154
+ // 保留最后3行以确保能完整识别后缀
155
+ const lineToSend = pendingLines.shift() + '\n';
156
+ chatReadableStream.emitData({ kind: 'content', content: lineToSend });
157
+ }
158
+ } else {
159
+ chatReadableStream.emitData({ kind: 'content', content: chunk.textDelta });
160
+ }
126
161
  } else if (chunk.type === 'tool-call') {
127
162
  chatReadableStream.emitData({
128
163
  kind: 'toolCall',
@@ -169,6 +204,33 @@ export abstract class BaseLanguageModel {
169
204
  }
170
205
  }
171
206
 
207
+ if (trimTexts?.[1]) {
208
+ // 完成处理所有块后,检查并发送剩余文本
209
+
210
+ // 将剩余缓冲区加入待发送行
211
+ if (bufferedText) {
212
+ pendingLines.push(bufferedText);
213
+ }
214
+
215
+ // 处理最后一行可能存在的后缀
216
+ if (pendingLines.length > 0) {
217
+ let lastLine = pendingLines[pendingLines.length - 1];
218
+
219
+ if (lastLine.endsWith(trimTexts[1])) {
220
+ // 移除后缀
221
+ lastLine = lastLine.substring(0, lastLine.length - trimTexts[1].length);
222
+ pendingLines[pendingLines.length - 1] = lastLine;
223
+ }
224
+ }
225
+
226
+ // 发送所有剩余的行
227
+ for (let i = 0; i < pendingLines.length; i++) {
228
+ const isLastLine = i === pendingLines.length - 1;
229
+ const lineToSend = pendingLines[i] + (isLastLine ? '' : '\n');
230
+ chatReadableStream.emitData({ kind: 'content', content: lineToSend });
231
+ }
232
+ }
233
+
172
234
  chatReadableStream.end();
173
235
  } catch (error) {
174
236
  // Use a logger service in production instead of console