@opensumi/ide-ai-native 3.9.1-next-1755745798.0 → 3.9.1-next-1755755826.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/mcp/tools/getDiagnosticsByPath.d.ts.map +1 -1
- package/lib/browser/mcp/tools/getDiagnosticsByPath.js +14 -8
- package/lib/browser/mcp/tools/getDiagnosticsByPath.js.map +1 -1
- package/lib/node/base-language-model.d.ts.map +1 -1
- package/lib/node/base-language-model.js +35 -1
- package/lib/node/base-language-model.js.map +1 -1
- package/package.json +25 -25
- package/src/browser/mcp/tools/getDiagnosticsByPath.ts +14 -9
- package/src/node/base-language-model.ts +34 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDiagnosticsByPath.d.ts","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/getDiagnosticsByPath.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoC,GAAG,EAAQ,MAAM,2BAA2B,CAAC;AAGxF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMtG,qBACa,kBAAmB,YAAW,qBAAqB;IAE9D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IAGrD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IAGvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA8B;IAG3D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;IAEjD,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIrD,iBAAiB,IAAI,iBAAiB;cA2BtB,aAAa,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"getDiagnosticsByPath.d.ts","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/getDiagnosticsByPath.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoC,GAAG,EAAQ,MAAM,2BAA2B,CAAC;AAGxF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMtG,qBACa,kBAAmB,YAAW,qBAAqB;IAE9D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IAGrD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IAGvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA8B;IAG3D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;IAEjD,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIrD,iBAAiB,IAAI,iBAAiB;cA2BtB,aAAa,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;cA+B1D,kBAAkB,CAAC,GAAG,EAAE,GAAG;YAsB7B,OAAO;IAgCrB,OAAO,CAAC,iBAAiB;CAc1B"}
|
|
@@ -49,14 +49,17 @@ let GetDiagnosticsTool = class GetDiagnosticsTool {
|
|
|
49
49
|
logger.appendLine('Error: Cannot determine project directory');
|
|
50
50
|
throw new Error('Cannot determine project directory');
|
|
51
51
|
}
|
|
52
|
-
//
|
|
53
|
-
|
|
52
|
+
// Construct and validate full file path securely (prevent path traversal)
|
|
53
|
+
const rootUri = ide_core_common_1.URI.parse(workspaceRoots[0].uri);
|
|
54
|
+
const rootFsPath = rootUri.codeUri.fsPath;
|
|
55
|
+
const resolvedFsPath = ide_core_common_1.path.resolve(rootFsPath, filePathInProject);
|
|
56
|
+
const rel = ide_core_common_1.path.relative(rootFsPath, resolvedFsPath);
|
|
57
|
+
// rel starts with '..' or is an absolute path ⇒ outside workspace
|
|
58
|
+
if (rel.startsWith('..') || ide_core_common_1.path.isAbsolute(rel)) {
|
|
54
59
|
logger.appendLine('Error: File is outside of project scope');
|
|
55
60
|
throw new Error('File is outside of project scope');
|
|
56
61
|
}
|
|
57
|
-
|
|
58
|
-
const rootUri = ide_core_common_1.URI.parse(workspaceRoots[0].uri);
|
|
59
|
-
const fullPathUri = ide_core_common_1.URI.file(ide_core_common_1.path.join(rootUri.codeUri.fsPath, filePathInProject));
|
|
62
|
+
const fullPathUri = ide_core_common_1.URI.file(resolvedFsPath);
|
|
60
63
|
// Check if file exists
|
|
61
64
|
const fileExists = await this.fileServiceClient.access(fullPathUri.toString());
|
|
62
65
|
if (!fileExists) {
|
|
@@ -72,16 +75,19 @@ let GetDiagnosticsTool = class GetDiagnosticsTool {
|
|
|
72
75
|
const markerChangeDeferred = new ide_core_common_1.Deferred();
|
|
73
76
|
// TODO: 诊断信息更新延迟问题如何彻底解决?现在事件都是从插件单向通知上来的
|
|
74
77
|
// 首次打开文件时最大4s, 如果4s内marker没有变化,则认为marker本身就是空的
|
|
75
|
-
this.markerService.getManager().onMarkerChanged((e) => {
|
|
78
|
+
const disposable = this.markerService.getManager().onMarkerChanged((e) => {
|
|
76
79
|
if (e.some((uriStr) => uriStr === uri.toString())) {
|
|
77
80
|
markerChangeDeferred.resolve();
|
|
78
81
|
}
|
|
79
82
|
});
|
|
80
83
|
await this.modelService.createModelReference(uri);
|
|
81
|
-
|
|
84
|
+
const timeoutId = setTimeout(() => {
|
|
82
85
|
markerChangeDeferred.resolve();
|
|
86
|
+
}, 4000);
|
|
87
|
+
await markerChangeDeferred.promise.finally(() => {
|
|
88
|
+
disposable.dispose();
|
|
89
|
+
clearTimeout(timeoutId);
|
|
83
90
|
});
|
|
84
|
-
await markerChangeDeferred.promise;
|
|
85
91
|
}
|
|
86
92
|
}
|
|
87
93
|
async handler(args, logger) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDiagnosticsByPath.js","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/getDiagnosticsByPath.ts"],"names":[],"mappings":";;;;AAAA,6BAAwB;AAExB,qCAAyC;AACzC,+DAAwF;AACxF,8DAA+E;AAC/E,iEAAgE;AAChE,uDAAuD;AACvD,2DAA4D;AAE5D,uCAAsG;AAEtG,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3B,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;CAC/F,CAAC,CAAC;AAGI,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAa7B,iBAAiB,CAAC,QAA4B;QAC5C,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,iBAAiB;QACf,OAAO;YACL,IAAI,EAAE,yBAAyB;YAC/B,KAAK,EAAE,yBAAyB;YAChC,KAAK,EAAE,CAAC;YACR,WAAW,EACT,iGAAiG;gBACjG,uEAAuE;gBACvE,iIAAiI;gBACjI,mGAAmG;gBACnG,2EAA2E;gBAC3E,uDAAuD;gBACvD,sDAAsD;gBACtD,gFAAgF;gBAChF,oCAAoC;gBACpC,oFAAoF;gBACpF,uHAAuH;gBACvH,yHAAyH;gBACzH,2CAA2C;gBAC3C,uHAAuH;gBACvH,sJAAsJ;gBACtJ,sLAAsL;YACxL,WAAW;YACX,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;SACjC,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,aAAa,CAAC,iBAAyB,EAAE,MAAiB;QACxE,sBAAsB;QACtB,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAC3D,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnD,MAAM,CAAC,UAAU,CAAC,2CAA2C,CAAC,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"getDiagnosticsByPath.js","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/getDiagnosticsByPath.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-language-model.d.ts","sourceRoot":"","sources":["../../src/node/base-language-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2E,MAAM,IAAI,CAAC;AAG1G,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,8BAA8B,EAE9B,WAAW,EACZ,MAAM,oCAAoC,CAAC;AAE5C,8BACsB,iBAAiB;IACrC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAG/C,SAAS,CAAC,QAAQ,CAAC,6BAA6B,EAAE,8BAA8B,CAAC;IAGjF,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAEvC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,GAAG;IAEnE,OAAO,CACX,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,kBAAkB,EACtC,OAAO,EAAE,oBAAoB,EAC7B,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,OAAO,CAAC,GAAG,CAAC;IAiCf,OAAO,CAAC,0BAA0B;IAalC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG;IAE3E,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,SAAS;cAE9F,sBAAsB,CACpC,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,WAAW,EAAE,EACpB,kBAAkB,EAAE,kBAAkB,EACtC,OAAO,GAAE,WAAW,EAAO,EAC3B,OAAO,CAAC,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,OAAO,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"base-language-model.d.ts","sourceRoot":"","sources":["../../src/node/base-language-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2E,MAAM,IAAI,CAAC;AAG1G,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,8BAA8B,EAE9B,WAAW,EACZ,MAAM,oCAAoC,CAAC;AAE5C,8BACsB,iBAAiB;IACrC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAG/C,SAAS,CAAC,QAAQ,CAAC,6BAA6B,EAAE,8BAA8B,CAAC;IAGjF,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAEvC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,GAAG;IAEnE,OAAO,CACX,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,kBAAkB,EACtC,OAAO,EAAE,oBAAoB,EAC7B,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,OAAO,CAAC,GAAG,CAAC;IAiCf,OAAO,CAAC,0BAA0B;IAalC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG;IAE3E,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,SAAS;cAE9F,sBAAsB,CACpC,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,WAAW,EAAE,EACpB,kBAAkB,EAAE,kBAAkB,EACtC,OAAO,GAAE,WAAW,EAAO,EAC3B,OAAO,CAAC,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,OAAO,CAAC,GAAG,CAAC;CAmMhB"}
|
|
@@ -36,7 +36,7 @@ let BaseLanguageModel = class BaseLanguageModel {
|
|
|
36
36
|
});
|
|
37
37
|
}
|
|
38
38
|
async handleStreamingRequest(provider, request, tools, chatReadableStream, history = [], modelId, providerOptions, trimTexts, systemPrompt, maxTokens, images, cancellationToken) {
|
|
39
|
-
var _a;
|
|
39
|
+
var _a, _b;
|
|
40
40
|
try {
|
|
41
41
|
const aiTools = Object.fromEntries(tools.map((tool) => [tool.name, this.convertToolRequestToAITool(tool)]));
|
|
42
42
|
const abortController = new AbortController();
|
|
@@ -76,6 +76,8 @@ let BaseLanguageModel = class BaseLanguageModel {
|
|
|
76
76
|
let isFirstChunk = true;
|
|
77
77
|
let bufferedText = '';
|
|
78
78
|
const pendingLines = [];
|
|
79
|
+
// 跟踪正在进行的工具调用状态
|
|
80
|
+
const ongoingToolCalls = new Map();
|
|
79
81
|
for await (const chunk of stream.fullStream) {
|
|
80
82
|
if (chunk.type === 'text-delta') {
|
|
81
83
|
if (trimTexts === null || trimTexts === void 0 ? void 0 : trimTexts.length) {
|
|
@@ -117,6 +119,8 @@ let BaseLanguageModel = class BaseLanguageModel {
|
|
|
117
119
|
});
|
|
118
120
|
}
|
|
119
121
|
else if (chunk.type === 'tool-call-streaming-start') {
|
|
122
|
+
// 记录开始的工具调用
|
|
123
|
+
ongoingToolCalls.set(chunk.toolCallId, { name: chunk.toolName });
|
|
120
124
|
chatReadableStream.emitData({
|
|
121
125
|
kind: 'toolCall',
|
|
122
126
|
content: {
|
|
@@ -128,6 +132,11 @@ let BaseLanguageModel = class BaseLanguageModel {
|
|
|
128
132
|
});
|
|
129
133
|
}
|
|
130
134
|
else if (chunk.type === 'tool-call-delta') {
|
|
135
|
+
// 更新工具调用状态
|
|
136
|
+
const existing = ongoingToolCalls.get(chunk.toolCallId);
|
|
137
|
+
if (existing) {
|
|
138
|
+
existing.args = (existing.args || '') + chunk.argsTextDelta;
|
|
139
|
+
}
|
|
131
140
|
chatReadableStream.emitData({
|
|
132
141
|
kind: 'toolCall',
|
|
133
142
|
content: {
|
|
@@ -139,6 +148,8 @@ let BaseLanguageModel = class BaseLanguageModel {
|
|
|
139
148
|
});
|
|
140
149
|
}
|
|
141
150
|
else if (chunk.type === 'tool-result') {
|
|
151
|
+
// 移除已完成的工具调用
|
|
152
|
+
ongoingToolCalls.delete(chunk.toolCallId);
|
|
142
153
|
chatReadableStream.emitData({
|
|
143
154
|
kind: 'toolCall',
|
|
144
155
|
content: {
|
|
@@ -160,6 +171,29 @@ let BaseLanguageModel = class BaseLanguageModel {
|
|
|
160
171
|
});
|
|
161
172
|
}
|
|
162
173
|
}
|
|
174
|
+
// 处理未完成的工具调用 - 将它们标记为完成状态
|
|
175
|
+
for (const [toolCallId, toolCall] of ongoingToolCalls) {
|
|
176
|
+
try {
|
|
177
|
+
chatReadableStream.emitData({
|
|
178
|
+
kind: 'toolCall',
|
|
179
|
+
content: {
|
|
180
|
+
id: toolCallId,
|
|
181
|
+
type: 'function',
|
|
182
|
+
function: {
|
|
183
|
+
name: toolCall.name,
|
|
184
|
+
arguments: toolCall.args || '{}',
|
|
185
|
+
},
|
|
186
|
+
state: 'complete',
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
// 记录错误但不阻止流的结束
|
|
192
|
+
(_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(`Failed to finalize tool call ${toolCallId}:`, error);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// 清空正在进行的工具调用
|
|
196
|
+
ongoingToolCalls.clear();
|
|
163
197
|
if (trimTexts === null || trimTexts === void 0 ? void 0 : trimTexts[1]) {
|
|
164
198
|
// 完成处理所有块后,检查并发送剩余文本
|
|
165
199
|
// 将剩余缓冲区加入待发送行
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-language-model.js","sourceRoot":"","sources":["../../src/node/base-language-model.ts"],"names":[],"mappings":";;;;AAAA,2BAA0G;AAE1G,qCAAqD;AAErD,2DAA0E;AAI1E,iFAI4C;AAGrC,IAAe,iBAAiB,GAAhC,MAAe,iBAAiB;IAWrC,KAAK,CAAC,OAAO,CACX,OAAe,EACf,kBAAsC,EACtC,OAA6B,EAC7B,iBAAqC;QAErC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAElC,IAAI,YAAY,GAAkB,EAAE,CAAC;QACrC,yBAAyB;QACzB,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC1E,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;YAEhE,UAAU;YACV,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACxD,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,sBAAsB,CAChC,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,kBAAkB,EAClB,OAAO,CAAC,OAAO,IAAI,EAAE,EACrB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,MAAM,EACd,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAEO,0BAA0B,CAAC,WAAwB;QACzD,OAAO,IAAA,SAAI,EAAC;YACV,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,EAAE;YAC1C,sCAAsC;YACtC,UAAU,EAAE,IAAA,eAAU,EAAC,WAAW,CAAC,UAAU,CAAC;YAC9C,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,OAA6B,EAAE,EAAE;gBAC1D,SAAS;gBACT,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBACxE,OAAO,MAAM,CAAC;YAChB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAMS,KAAK,CAAC,sBAAsB,CACpC,QAAa,EACb,OAAe,EACf,KAAoB,EACpB,kBAAsC,EACtC,UAAyB,EAAE,EAC3B,OAAgB,EAChB,eAAqC,EACrC,SAA4B,EAC5B,YAAqB,EACrB,SAAkB,EAClB,MAAiB,EACjB,iBAAqC;;QAErC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAE5G,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;YAC9C,IAAI,iBAAiB,EAAE,CAAC;gBACtB,iBAAiB,CAAC,uBAAuB,CAAC,GAAG,EAAE;oBAC7C,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC1B,CAAC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,QAAQ,GAAkB;gBAC9B,GAAG,OAAO;gBACV;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM;wBACrB,CAAC,CAAC;4BACE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAc;4BAC3C,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,EAAgB,CAAA,CAAC;yBAClF;wBACH,CAAC,CAAC,OAAO;iBACZ;aACF,CAAC;YACF,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpF,MAAM,MAAM,GAAG,IAAA,eAAU,EAAC;gBACxB,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;gBACjD,KAAK,EAAE,OAAO;gBACd,QAAQ;gBACR,WAAW,EAAE,eAAe,CAAC,MAAM;gBACnC,8BAA8B,EAAE,IAAI;gBACpC,QAAQ,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,mCAAI,EAAE;gBACnC,SAAS;gBACT,MAAM,EAAE,YAAY;gBACpB,eAAe;gBACf,GAAG,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,MAAK,SAAS,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC;gBACnF,GAAG,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,MAAK,SAAS,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;gBAC9D,GAAG,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,MAAK,SAAS,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;aAC/D,CAAC,CAAC;YAEH,SAAS;YACT,IAAI,YAAY,GAAG,IAAI,CAAC;YACxB,IAAI,YAAY,GAAG,EAAE,CAAC;YACtB,MAAM,YAAY,GAAa,EAAE,CAAC;YAClC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAChC,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,EAAE,CAAC;wBACtB,eAAe;wBACf,YAAY,IAAI,KAAK,CAAC,SAAS,CAAC;wBAEhC,qBAAqB;wBACrB,IAAI,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4BACxD,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;4BAChG,YAAY,GAAG,KAAK,CAAC;wBACvB,CAAC;wBAED,0BAA0B;wBAC1B,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAEvC,wBAAwB;wBACxB,YAAY,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;wBAEjC,gBAAgB;wBAChB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACrB,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;wBAC9B,CAAC;wBAED,4BAA4B;wBAC5B,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC/B,mBAAmB;4BACnB,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;4BAC/C,kBAAkB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;wBACxE,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,kBAAkB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;oBAC7E,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBACtC,kBAAkB,CAAC,QAAQ,CAAC;wBAC1B,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE;4BACP,EAAE,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;4BAC7C,IAAI,EAAE,UAAU;4BAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;4BACzE,KAAK,EAAE,UAAU;yBAClB;qBACF,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,2BAA2B,EAAE,CAAC;oBACtD,kBAAkB,CAAC,QAAQ,CAAC;wBAC1B,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE;4BACP,EAAE,EAAE,KAAK,CAAC,UAAU;4BACpB,IAAI,EAAE,UAAU;4BAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE;4BAClC,KAAK,EAAE,iBAAiB;yBACzB;qBACF,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBAC5C,kBAAkB,CAAC,QAAQ,CAAC;wBAC1B,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE;4BACP,EAAE,EAAE,KAAK,CAAC,UAAU;4BACpB,IAAI,EAAE,UAAU;4BAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,aAAa,EAAE;4BAClE,KAAK,EAAE,WAAW;yBACnB;qBACF,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACxC,kBAAkB,CAAC,QAAQ,CAAC;wBAC1B,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE;4BACP,EAAE,EAAE,KAAK,CAAC,UAAU;4BACpB,IAAI,EAAE,UAAU;4BAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;4BACzE,MAAM,EAAE,KAAK,CAAC,MAAM;4BACpB,KAAK,EAAE,QAAQ;yBAChB;qBACF,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAClC,kBAAkB,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC,CAAC;gBACjE,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBACtC,kBAAkB,CAAC,QAAQ,CAAC;wBAC1B,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,KAAK,CAAC,SAAS;qBACzB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,qBAAqB;gBAErB,eAAe;gBACf,IAAI,YAAY,EAAE,CAAC;oBACjB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAClC,CAAC;gBAED,gBAAgB;gBAChB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,IAAI,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAE5D,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpC,OAAO;wBACP,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;wBACxE,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;oBACnD,CAAC;gBACH,CAAC;gBAED,WAAW;gBACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7C,MAAM,UAAU,GAAG,CAAC,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;oBACjD,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC9D,kBAAkB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;YAED,kBAAkB,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wDAAwD;YACxD,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CACF,CAAA;
|
|
1
|
+
{"version":3,"file":"base-language-model.js","sourceRoot":"","sources":["../../src/node/base-language-model.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensumi/ide-ai-native",
|
|
3
|
-
"version": "3.9.1-next-
|
|
3
|
+
"version": "3.9.1-next-1755755826.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"lib",
|
|
6
6
|
"src"
|
|
@@ -24,28 +24,28 @@
|
|
|
24
24
|
"@ai-sdk/openai": "^1.1.9",
|
|
25
25
|
"@ai-sdk/openai-compatible": "^0.1.11",
|
|
26
26
|
"@modelcontextprotocol/sdk": "^1.11.4",
|
|
27
|
-
"@opensumi/ide-addons": "3.9.1-next-
|
|
28
|
-
"@opensumi/ide-components": "3.9.1-next-
|
|
29
|
-
"@opensumi/ide-connection": "3.9.1-next-
|
|
30
|
-
"@opensumi/ide-core-common": "3.9.1-next-
|
|
31
|
-
"@opensumi/ide-core-node": "3.9.1-next-
|
|
32
|
-
"@opensumi/ide-debug": "3.9.1-next-
|
|
33
|
-
"@opensumi/ide-design": "3.9.1-next-
|
|
34
|
-
"@opensumi/ide-editor": "3.9.1-next-
|
|
35
|
-
"@opensumi/ide-file-search": "3.9.1-next-
|
|
36
|
-
"@opensumi/ide-file-service": "3.9.1-next-
|
|
37
|
-
"@opensumi/ide-main-layout": "3.9.1-next-
|
|
38
|
-
"@opensumi/ide-markers": "3.9.1-next-
|
|
39
|
-
"@opensumi/ide-monaco": "3.9.1-next-
|
|
40
|
-
"@opensumi/ide-outline": "3.9.1-next-
|
|
41
|
-
"@opensumi/ide-overlay": "3.9.1-next-
|
|
42
|
-
"@opensumi/ide-preferences": "3.9.1-next-
|
|
43
|
-
"@opensumi/ide-quick-open": "3.9.1-next-
|
|
44
|
-
"@opensumi/ide-search": "3.9.1-next-
|
|
45
|
-
"@opensumi/ide-terminal-next": "3.9.1-next-
|
|
46
|
-
"@opensumi/ide-theme": "3.9.1-next-
|
|
47
|
-
"@opensumi/ide-utils": "3.9.1-next-
|
|
48
|
-
"@opensumi/ide-workspace": "3.9.1-next-
|
|
27
|
+
"@opensumi/ide-addons": "3.9.1-next-1755755826.0",
|
|
28
|
+
"@opensumi/ide-components": "3.9.1-next-1755755826.0",
|
|
29
|
+
"@opensumi/ide-connection": "3.9.1-next-1755755826.0",
|
|
30
|
+
"@opensumi/ide-core-common": "3.9.1-next-1755755826.0",
|
|
31
|
+
"@opensumi/ide-core-node": "3.9.1-next-1755755826.0",
|
|
32
|
+
"@opensumi/ide-debug": "3.9.1-next-1755755826.0",
|
|
33
|
+
"@opensumi/ide-design": "3.9.1-next-1755755826.0",
|
|
34
|
+
"@opensumi/ide-editor": "3.9.1-next-1755755826.0",
|
|
35
|
+
"@opensumi/ide-file-search": "3.9.1-next-1755755826.0",
|
|
36
|
+
"@opensumi/ide-file-service": "3.9.1-next-1755755826.0",
|
|
37
|
+
"@opensumi/ide-main-layout": "3.9.1-next-1755755826.0",
|
|
38
|
+
"@opensumi/ide-markers": "3.9.1-next-1755755826.0",
|
|
39
|
+
"@opensumi/ide-monaco": "3.9.1-next-1755755826.0",
|
|
40
|
+
"@opensumi/ide-outline": "3.9.1-next-1755755826.0",
|
|
41
|
+
"@opensumi/ide-overlay": "3.9.1-next-1755755826.0",
|
|
42
|
+
"@opensumi/ide-preferences": "3.9.1-next-1755755826.0",
|
|
43
|
+
"@opensumi/ide-quick-open": "3.9.1-next-1755755826.0",
|
|
44
|
+
"@opensumi/ide-search": "3.9.1-next-1755755826.0",
|
|
45
|
+
"@opensumi/ide-terminal-next": "3.9.1-next-1755755826.0",
|
|
46
|
+
"@opensumi/ide-theme": "3.9.1-next-1755755826.0",
|
|
47
|
+
"@opensumi/ide-utils": "3.9.1-next-1755755826.0",
|
|
48
|
+
"@opensumi/ide-workspace": "3.9.1-next-1755755826.0",
|
|
49
49
|
"@xterm/xterm": "5.5.0",
|
|
50
50
|
"ai": "^4.3.16",
|
|
51
51
|
"ansi-regex": "^2.0.0",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"zod-to-json-schema": "^3.24.1"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
|
-
"@opensumi/ide-core-browser": "3.9.1-next-
|
|
65
|
+
"@opensumi/ide-core-browser": "3.9.1-next-1755755826.0"
|
|
66
66
|
},
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "266d2174884e0216b388fa145dc114053c25cd11"
|
|
68
68
|
}
|
|
@@ -66,15 +66,17 @@ export class GetDiagnosticsTool implements MCPServerContribution {
|
|
|
66
66
|
throw new Error('Cannot determine project directory');
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
//
|
|
70
|
-
|
|
69
|
+
// Construct and validate full file path securely (prevent path traversal)
|
|
70
|
+
const rootUri = URI.parse(workspaceRoots[0].uri);
|
|
71
|
+
const rootFsPath = rootUri.codeUri.fsPath;
|
|
72
|
+
const resolvedFsPath = path.resolve(rootFsPath, filePathInProject);
|
|
73
|
+
const rel = path.relative(rootFsPath, resolvedFsPath);
|
|
74
|
+
// rel starts with '..' or is an absolute path ⇒ outside workspace
|
|
75
|
+
if (rel.startsWith('..') || path.isAbsolute(rel)) {
|
|
71
76
|
logger.appendLine('Error: File is outside of project scope');
|
|
72
77
|
throw new Error('File is outside of project scope');
|
|
73
78
|
}
|
|
74
|
-
|
|
75
|
-
// Construct full file path
|
|
76
|
-
const rootUri = URI.parse(workspaceRoots[0].uri);
|
|
77
|
-
const fullPathUri = URI.file(path.join(rootUri.codeUri.fsPath, filePathInProject));
|
|
79
|
+
const fullPathUri = URI.file(resolvedFsPath);
|
|
78
80
|
|
|
79
81
|
// Check if file exists
|
|
80
82
|
const fileExists = await this.fileServiceClient.access(fullPathUri.toString());
|
|
@@ -93,16 +95,19 @@ export class GetDiagnosticsTool implements MCPServerContribution {
|
|
|
93
95
|
const markerChangeDeferred = new Deferred<void>();
|
|
94
96
|
// TODO: 诊断信息更新延迟问题如何彻底解决?现在事件都是从插件单向通知上来的
|
|
95
97
|
// 首次打开文件时最大4s, 如果4s内marker没有变化,则认为marker本身就是空的
|
|
96
|
-
this.markerService.getManager().onMarkerChanged((e) => {
|
|
98
|
+
const disposable = this.markerService.getManager().onMarkerChanged((e) => {
|
|
97
99
|
if (e.some((uriStr) => uriStr === uri.toString())) {
|
|
98
100
|
markerChangeDeferred.resolve();
|
|
99
101
|
}
|
|
100
102
|
});
|
|
101
103
|
await this.modelService.createModelReference(uri);
|
|
102
|
-
|
|
104
|
+
const timeoutId = setTimeout(() => {
|
|
103
105
|
markerChangeDeferred.resolve();
|
|
106
|
+
}, 4000);
|
|
107
|
+
await markerChangeDeferred.promise.finally(() => {
|
|
108
|
+
disposable.dispose();
|
|
109
|
+
clearTimeout(timeoutId);
|
|
104
110
|
});
|
|
105
|
-
await markerChangeDeferred.promise;
|
|
106
111
|
}
|
|
107
112
|
}
|
|
108
113
|
|
|
@@ -135,6 +135,8 @@ export abstract class BaseLanguageModel {
|
|
|
135
135
|
let isFirstChunk = true;
|
|
136
136
|
let bufferedText = '';
|
|
137
137
|
const pendingLines: string[] = [];
|
|
138
|
+
// 跟踪正在进行的工具调用状态
|
|
139
|
+
const ongoingToolCalls = new Map<string, { name: string; args?: string }>();
|
|
138
140
|
for await (const chunk of stream.fullStream) {
|
|
139
141
|
if (chunk.type === 'text-delta') {
|
|
140
142
|
if (trimTexts?.length) {
|
|
@@ -178,6 +180,8 @@ export abstract class BaseLanguageModel {
|
|
|
178
180
|
},
|
|
179
181
|
});
|
|
180
182
|
} else if (chunk.type === 'tool-call-streaming-start') {
|
|
183
|
+
// 记录开始的工具调用
|
|
184
|
+
ongoingToolCalls.set(chunk.toolCallId, { name: chunk.toolName });
|
|
181
185
|
chatReadableStream.emitData({
|
|
182
186
|
kind: 'toolCall',
|
|
183
187
|
content: {
|
|
@@ -188,6 +192,11 @@ export abstract class BaseLanguageModel {
|
|
|
188
192
|
},
|
|
189
193
|
});
|
|
190
194
|
} else if (chunk.type === 'tool-call-delta') {
|
|
195
|
+
// 更新工具调用状态
|
|
196
|
+
const existing = ongoingToolCalls.get(chunk.toolCallId);
|
|
197
|
+
if (existing) {
|
|
198
|
+
existing.args = (existing.args || '') + chunk.argsTextDelta;
|
|
199
|
+
}
|
|
191
200
|
chatReadableStream.emitData({
|
|
192
201
|
kind: 'toolCall',
|
|
193
202
|
content: {
|
|
@@ -198,6 +207,8 @@ export abstract class BaseLanguageModel {
|
|
|
198
207
|
},
|
|
199
208
|
});
|
|
200
209
|
} else if (chunk.type === 'tool-result') {
|
|
210
|
+
// 移除已完成的工具调用
|
|
211
|
+
ongoingToolCalls.delete(chunk.toolCallId);
|
|
201
212
|
chatReadableStream.emitData({
|
|
202
213
|
kind: 'toolCall',
|
|
203
214
|
content: {
|
|
@@ -218,6 +229,29 @@ export abstract class BaseLanguageModel {
|
|
|
218
229
|
}
|
|
219
230
|
}
|
|
220
231
|
|
|
232
|
+
// 处理未完成的工具调用 - 将它们标记为完成状态
|
|
233
|
+
for (const [toolCallId, toolCall] of ongoingToolCalls) {
|
|
234
|
+
try {
|
|
235
|
+
chatReadableStream.emitData({
|
|
236
|
+
kind: 'toolCall',
|
|
237
|
+
content: {
|
|
238
|
+
id: toolCallId,
|
|
239
|
+
type: 'function',
|
|
240
|
+
function: {
|
|
241
|
+
name: toolCall.name,
|
|
242
|
+
arguments: toolCall.args || '{}',
|
|
243
|
+
},
|
|
244
|
+
state: 'complete',
|
|
245
|
+
},
|
|
246
|
+
});
|
|
247
|
+
} catch (error) {
|
|
248
|
+
// 记录错误但不阻止流的结束
|
|
249
|
+
this.logger?.error(`Failed to finalize tool call ${toolCallId}:`, error);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
// 清空正在进行的工具调用
|
|
253
|
+
ongoingToolCalls.clear();
|
|
254
|
+
|
|
221
255
|
if (trimTexts?.[1]) {
|
|
222
256
|
// 完成处理所有块后,检查并发送剩余文本
|
|
223
257
|
|