@qwen-code/qwen-code 0.10.0-preview.1 → 0.10.0-preview.3
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/README.md +1 -1
- package/cli.js +297 -165
- package/locales/de.js +0 -3
- package/locales/en.js +0 -3
- package/locales/ja.js +0 -3
- package/locales/pt.js +0 -3
- package/locales/ru.js +0 -3
- package/locales/zh.js +0 -3
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -36,7 +36,7 @@ Qwen Code is an open-source AI agent for the terminal, optimized for [Qwen3-Code
|
|
|
36
36
|
#### Linux / macOS
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
|
-
|
|
39
|
+
curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
#### Windows (Run as Administrator CMD)
|
package/cli.js
CHANGED
|
@@ -60297,8 +60297,8 @@ var require_resolve = __commonJS({
|
|
|
60297
60297
|
return count;
|
|
60298
60298
|
}
|
|
60299
60299
|
__name(countKeys, "countKeys");
|
|
60300
|
-
function getFullPath(resolver, id = "",
|
|
60301
|
-
if (
|
|
60300
|
+
function getFullPath(resolver, id = "", normalize12) {
|
|
60301
|
+
if (normalize12 !== false)
|
|
60302
60302
|
id = normalizeId(id);
|
|
60303
60303
|
const p2 = resolver.parse(id);
|
|
60304
60304
|
return _getFullPath(resolver, p2);
|
|
@@ -61674,7 +61674,7 @@ var require_fast_uri = __commonJS({
|
|
|
61674
61674
|
init_esbuild_shims();
|
|
61675
61675
|
var { normalizeIPv6, normalizeIPv4, removeDotSegments, recomposeAuthority, normalizeComponentEncoding } = require_utils2();
|
|
61676
61676
|
var SCHEMES = require_schemes();
|
|
61677
|
-
function
|
|
61677
|
+
function normalize12(uri, options2) {
|
|
61678
61678
|
if (typeof uri === "string") {
|
|
61679
61679
|
uri = serialize2(parse14(uri, options2), options2);
|
|
61680
61680
|
} else if (typeof uri === "object") {
|
|
@@ -61682,7 +61682,7 @@ var require_fast_uri = __commonJS({
|
|
|
61682
61682
|
}
|
|
61683
61683
|
return uri;
|
|
61684
61684
|
}
|
|
61685
|
-
__name(
|
|
61685
|
+
__name(normalize12, "normalize");
|
|
61686
61686
|
function resolve30(baseURI, relativeURI, options2) {
|
|
61687
61687
|
const schemelessOptions = Object.assign({ scheme: "null" }, options2);
|
|
61688
61688
|
const resolved = resolveComponents(parse14(baseURI, schemelessOptions), parse14(relativeURI, schemelessOptions), schemelessOptions, true);
|
|
@@ -61919,7 +61919,7 @@ var require_fast_uri = __commonJS({
|
|
|
61919
61919
|
__name(parse14, "parse");
|
|
61920
61920
|
var fastUri = {
|
|
61921
61921
|
SCHEMES,
|
|
61922
|
-
normalize:
|
|
61922
|
+
normalize: normalize12,
|
|
61923
61923
|
resolve: resolve30,
|
|
61924
61924
|
resolveComponents,
|
|
61925
61925
|
equal,
|
|
@@ -67311,8 +67311,8 @@ var require_resolve2 = __commonJS({
|
|
|
67311
67311
|
return count;
|
|
67312
67312
|
}
|
|
67313
67313
|
__name(countKeys, "countKeys");
|
|
67314
|
-
function getFullPath(resolver, id = "",
|
|
67315
|
-
if (
|
|
67314
|
+
function getFullPath(resolver, id = "", normalize12) {
|
|
67315
|
+
if (normalize12 !== false)
|
|
67316
67316
|
id = normalizeId(id);
|
|
67317
67317
|
const p2 = resolver.parse(id);
|
|
67318
67318
|
return _getFullPath(resolver, p2);
|
|
@@ -71639,6 +71639,17 @@ var init_tools = __esm({
|
|
|
71639
71639
|
});
|
|
71640
71640
|
|
|
71641
71641
|
// packages/core/dist/src/tools/mcp-tool.js
|
|
71642
|
+
function wrapMcpCallToolResultAsParts(toolName, result) {
|
|
71643
|
+
const response = result.isError ? { error: result, content: result.content } : result;
|
|
71644
|
+
return [
|
|
71645
|
+
{
|
|
71646
|
+
functionResponse: {
|
|
71647
|
+
name: toolName,
|
|
71648
|
+
response
|
|
71649
|
+
}
|
|
71650
|
+
}
|
|
71651
|
+
];
|
|
71652
|
+
}
|
|
71642
71653
|
function transformTextBlock(block2) {
|
|
71643
71654
|
return { text: block2.text };
|
|
71644
71655
|
}
|
|
@@ -71756,8 +71767,10 @@ var init_mcp_tool = __esm({
|
|
|
71756
71767
|
displayName;
|
|
71757
71768
|
trust;
|
|
71758
71769
|
cliConfig;
|
|
71770
|
+
mcpClient;
|
|
71771
|
+
mcpTimeout;
|
|
71759
71772
|
static allowlist = /* @__PURE__ */ new Set();
|
|
71760
|
-
constructor(mcpTool, serverName, serverToolName, displayName, trust, params = {}, cliConfig) {
|
|
71773
|
+
constructor(mcpTool, serverName, serverToolName, displayName, trust, params = {}, cliConfig, mcpClient, mcpTimeout) {
|
|
71761
71774
|
super(params);
|
|
71762
71775
|
this.mcpTool = mcpTool;
|
|
71763
71776
|
this.serverName = serverName;
|
|
@@ -71765,6 +71778,8 @@ var init_mcp_tool = __esm({
|
|
|
71765
71778
|
this.displayName = displayName;
|
|
71766
71779
|
this.trust = trust;
|
|
71767
71780
|
this.cliConfig = cliConfig;
|
|
71781
|
+
this.mcpClient = mcpClient;
|
|
71782
|
+
this.mcpTimeout = mcpTimeout;
|
|
71768
71783
|
}
|
|
71769
71784
|
async shouldConfirmExecute(_abortSignal) {
|
|
71770
71785
|
const serverAllowListKey = this.serverName;
|
|
@@ -71808,7 +71823,63 @@ var init_mcp_tool = __esm({
|
|
|
71808
71823
|
}
|
|
71809
71824
|
return false;
|
|
71810
71825
|
}
|
|
71811
|
-
async execute(signal) {
|
|
71826
|
+
async execute(signal, updateOutput2) {
|
|
71827
|
+
if (this.mcpClient) {
|
|
71828
|
+
return this.executeWithDirectClient(signal, updateOutput2);
|
|
71829
|
+
}
|
|
71830
|
+
return this.executeWithCallableTool(signal);
|
|
71831
|
+
}
|
|
71832
|
+
/**
|
|
71833
|
+
* Execute using the raw MCP SDK Client, which supports progress
|
|
71834
|
+
* notifications via the onprogress callback. This enables real-time
|
|
71835
|
+
* streaming of progress updates to the user during long-running
|
|
71836
|
+
* MCP tool calls (e.g., browser automation).
|
|
71837
|
+
*/
|
|
71838
|
+
async executeWithDirectClient(signal, updateOutput2) {
|
|
71839
|
+
const callToolResult = await this.mcpClient.callTool({
|
|
71840
|
+
name: this.serverToolName,
|
|
71841
|
+
arguments: this.params
|
|
71842
|
+
}, void 0, {
|
|
71843
|
+
onprogress: /* @__PURE__ */ __name((progress) => {
|
|
71844
|
+
if (updateOutput2) {
|
|
71845
|
+
const progressData = {
|
|
71846
|
+
type: "mcp_tool_progress",
|
|
71847
|
+
progress: progress.progress,
|
|
71848
|
+
...progress.total != null && { total: progress.total },
|
|
71849
|
+
...progress.message != null && { message: progress.message }
|
|
71850
|
+
};
|
|
71851
|
+
updateOutput2(progressData);
|
|
71852
|
+
}
|
|
71853
|
+
}, "onprogress"),
|
|
71854
|
+
timeout: this.mcpTimeout,
|
|
71855
|
+
signal
|
|
71856
|
+
});
|
|
71857
|
+
const rawResponseParts = wrapMcpCallToolResultAsParts(this.serverToolName, callToolResult);
|
|
71858
|
+
if (this.isMCPToolError(rawResponseParts)) {
|
|
71859
|
+
const errorMessage = `MCP tool '${this.serverToolName}' reported tool error for function call: ${safeJsonStringify({
|
|
71860
|
+
name: this.serverToolName,
|
|
71861
|
+
args: this.params
|
|
71862
|
+
})} with response: ${safeJsonStringify(rawResponseParts)}`;
|
|
71863
|
+
return {
|
|
71864
|
+
llmContent: errorMessage,
|
|
71865
|
+
returnDisplay: `Error: MCP tool '${this.serverToolName}' reported an error.`,
|
|
71866
|
+
error: {
|
|
71867
|
+
message: errorMessage,
|
|
71868
|
+
type: ToolErrorType.MCP_TOOL_ERROR
|
|
71869
|
+
}
|
|
71870
|
+
};
|
|
71871
|
+
}
|
|
71872
|
+
const transformedParts = transformMcpContentToParts(rawResponseParts);
|
|
71873
|
+
return {
|
|
71874
|
+
llmContent: transformedParts,
|
|
71875
|
+
returnDisplay: getStringifiedResultForDisplay(rawResponseParts)
|
|
71876
|
+
};
|
|
71877
|
+
}
|
|
71878
|
+
/**
|
|
71879
|
+
* Fallback: execute using the @google/genai CallableTool wrapper.
|
|
71880
|
+
* This path does NOT support progress notifications.
|
|
71881
|
+
*/
|
|
71882
|
+
async executeWithCallableTool(signal) {
|
|
71812
71883
|
const functionCalls = [
|
|
71813
71884
|
{
|
|
71814
71885
|
name: this.serverToolName,
|
|
@@ -71871,16 +71942,18 @@ var init_mcp_tool = __esm({
|
|
|
71871
71942
|
parameterSchema;
|
|
71872
71943
|
trust;
|
|
71873
71944
|
cliConfig;
|
|
71874
|
-
|
|
71945
|
+
mcpClient;
|
|
71946
|
+
mcpTimeout;
|
|
71947
|
+
constructor(mcpTool, serverName, serverToolName, description, parameterSchema, trust, nameOverride, cliConfig, mcpClient, mcpTimeout) {
|
|
71875
71948
|
super(
|
|
71876
|
-
nameOverride ?? generateValidName(serverToolName),
|
|
71949
|
+
nameOverride ?? generateValidName(`mcp__${serverName}__${serverToolName}`),
|
|
71877
71950
|
`${serverToolName} (${serverName} MCP Server)`,
|
|
71878
71951
|
description,
|
|
71879
71952
|
Kind.Other,
|
|
71880
71953
|
parameterSchema,
|
|
71881
71954
|
true,
|
|
71882
71955
|
// isOutputMarkdown
|
|
71883
|
-
|
|
71956
|
+
true
|
|
71884
71957
|
);
|
|
71885
71958
|
this.mcpTool = mcpTool;
|
|
71886
71959
|
this.serverName = serverName;
|
|
@@ -71888,14 +71961,17 @@ var init_mcp_tool = __esm({
|
|
|
71888
71961
|
this.parameterSchema = parameterSchema;
|
|
71889
71962
|
this.trust = trust;
|
|
71890
71963
|
this.cliConfig = cliConfig;
|
|
71964
|
+
this.mcpClient = mcpClient;
|
|
71965
|
+
this.mcpTimeout = mcpTimeout;
|
|
71891
71966
|
}
|
|
71892
71967
|
asFullyQualifiedTool() {
|
|
71893
|
-
return new _DiscoveredMCPTool(this.mcpTool, this.serverName, this.serverToolName, this.description, this.parameterSchema, this.trust,
|
|
71968
|
+
return new _DiscoveredMCPTool(this.mcpTool, this.serverName, this.serverToolName, this.description, this.parameterSchema, this.trust, generateValidName(`mcp__${this.serverName}__${this.serverToolName}`), this.cliConfig, this.mcpClient, this.mcpTimeout);
|
|
71894
71969
|
}
|
|
71895
71970
|
createInvocation(params) {
|
|
71896
|
-
return new DiscoveredMCPToolInvocation(this.mcpTool, this.serverName, this.serverToolName, this.displayName, this.trust, params, this.cliConfig);
|
|
71971
|
+
return new DiscoveredMCPToolInvocation(this.mcpTool, this.serverName, this.serverToolName, this.displayName, this.trust, params, this.cliConfig, this.mcpClient, this.mcpTimeout);
|
|
71897
71972
|
}
|
|
71898
71973
|
};
|
|
71974
|
+
__name(wrapMcpCallToolResultAsParts, "wrapMcpCallToolResultAsParts");
|
|
71899
71975
|
__name(transformTextBlock, "transformTextBlock");
|
|
71900
71976
|
__name(transformImageAudioBlock, "transformImageAudioBlock");
|
|
71901
71977
|
__name(transformResourceBlock, "transformResourceBlock");
|
|
@@ -87601,13 +87677,13 @@ var require_path = __commonJS({
|
|
|
87601
87677
|
return /^(?:\/|\w+:)/.test(path124);
|
|
87602
87678
|
}, "isAbsolute")
|
|
87603
87679
|
);
|
|
87604
|
-
var
|
|
87680
|
+
var normalize12 = (
|
|
87605
87681
|
/**
|
|
87606
87682
|
* Normalizes the specified path.
|
|
87607
87683
|
* @param {string} path Path to normalize
|
|
87608
87684
|
* @returns {string} Normalized path
|
|
87609
87685
|
*/
|
|
87610
|
-
path123.normalize = /* @__PURE__ */ __name(function
|
|
87686
|
+
path123.normalize = /* @__PURE__ */ __name(function normalize13(path124) {
|
|
87611
87687
|
path124 = path124.replace(/\\/g, "/").replace(/\/{2,}/g, "/");
|
|
87612
87688
|
var parts = path124.split("/"), absolute = isAbsolute13(path124), prefix = "";
|
|
87613
87689
|
if (absolute)
|
|
@@ -87630,12 +87706,12 @@ var require_path = __commonJS({
|
|
|
87630
87706
|
);
|
|
87631
87707
|
path123.resolve = /* @__PURE__ */ __name(function resolve30(originPath, includePath, alreadyNormalized) {
|
|
87632
87708
|
if (!alreadyNormalized)
|
|
87633
|
-
includePath =
|
|
87709
|
+
includePath = normalize12(includePath);
|
|
87634
87710
|
if (isAbsolute13(includePath))
|
|
87635
87711
|
return includePath;
|
|
87636
87712
|
if (!alreadyNormalized)
|
|
87637
|
-
originPath =
|
|
87638
|
-
return (originPath = originPath.replace(/(?:\/|^)[^/]+$/, "")).length ?
|
|
87713
|
+
originPath = normalize12(originPath);
|
|
87714
|
+
return (originPath = originPath.replace(/(?:\/|^)[^/]+$/, "")).length ? normalize12(originPath + "/" + includePath) : includePath;
|
|
87639
87715
|
}, "resolve");
|
|
87640
87716
|
}
|
|
87641
87717
|
});
|
|
@@ -124436,7 +124512,7 @@ var require_require_in_the_middle = __commonJS({
|
|
|
124436
124512
|
return _resolve(moduleName2, basedir);
|
|
124437
124513
|
}
|
|
124438
124514
|
__name(resolve30, "resolve");
|
|
124439
|
-
var
|
|
124515
|
+
var normalize12 = /([/\\]index)?(\.js)?$/;
|
|
124440
124516
|
var ExportsCache = class {
|
|
124441
124517
|
static {
|
|
124442
124518
|
__name(this, "ExportsCache");
|
|
@@ -124638,7 +124714,7 @@ var require_require_in_the_middle = __commonJS({
|
|
|
124638
124714
|
};
|
|
124639
124715
|
function resolveModuleName(stat10) {
|
|
124640
124716
|
const normalizedPath = path123.sep !== "/" ? stat10.path.split(path123.sep).join("/") : stat10.path;
|
|
124641
|
-
return path123.posix.join(stat10.name, normalizedPath).replace(
|
|
124717
|
+
return path123.posix.join(stat10.name, normalizedPath).replace(normalize12, "");
|
|
124642
124718
|
}
|
|
124643
124719
|
__name(resolveModuleName, "resolveModuleName");
|
|
124644
124720
|
}
|
|
@@ -133399,57 +133475,16 @@ var init_modelsConfig = __esm({
|
|
|
133399
133475
|
detail: "baseUrl"
|
|
133400
133476
|
};
|
|
133401
133477
|
const gc = model.generationConfig;
|
|
133402
|
-
|
|
133403
|
-
|
|
133404
|
-
|
|
133405
|
-
authType: model.authType,
|
|
133406
|
-
modelId: model.id,
|
|
133407
|
-
detail: "generationConfig.samplingParams"
|
|
133408
|
-
};
|
|
133409
|
-
this._generationConfig.timeout = gc.timeout;
|
|
133410
|
-
this.generationConfigSources["timeout"] = {
|
|
133411
|
-
kind: "modelProviders",
|
|
133412
|
-
authType: model.authType,
|
|
133413
|
-
modelId: model.id,
|
|
133414
|
-
detail: "generationConfig.timeout"
|
|
133415
|
-
};
|
|
133416
|
-
this._generationConfig.maxRetries = gc.maxRetries;
|
|
133417
|
-
this.generationConfigSources["maxRetries"] = {
|
|
133418
|
-
kind: "modelProviders",
|
|
133419
|
-
authType: model.authType,
|
|
133420
|
-
modelId: model.id,
|
|
133421
|
-
detail: "generationConfig.maxRetries"
|
|
133422
|
-
};
|
|
133423
|
-
this._generationConfig.enableCacheControl = gc.enableCacheControl;
|
|
133424
|
-
this.generationConfigSources["enableCacheControl"] = {
|
|
133425
|
-
kind: "modelProviders",
|
|
133426
|
-
authType: model.authType,
|
|
133427
|
-
modelId: model.id,
|
|
133428
|
-
detail: "generationConfig.enableCacheControl"
|
|
133429
|
-
};
|
|
133430
|
-
this._generationConfig.schemaCompliance = gc.schemaCompliance;
|
|
133431
|
-
this.generationConfigSources["schemaCompliance"] = {
|
|
133432
|
-
kind: "modelProviders",
|
|
133433
|
-
authType: model.authType,
|
|
133434
|
-
modelId: model.id,
|
|
133435
|
-
detail: "generationConfig.schemaCompliance"
|
|
133436
|
-
};
|
|
133437
|
-
this._generationConfig.reasoning = gc.reasoning;
|
|
133438
|
-
this.generationConfigSources["reasoning"] = {
|
|
133439
|
-
kind: "modelProviders",
|
|
133440
|
-
authType: model.authType,
|
|
133441
|
-
modelId: model.id,
|
|
133442
|
-
detail: "generationConfig.reasoning"
|
|
133443
|
-
};
|
|
133444
|
-
if (gc.contextWindowSize !== void 0) {
|
|
133445
|
-
this._generationConfig.contextWindowSize = gc.contextWindowSize;
|
|
133446
|
-
this.generationConfigSources["contextWindowSize"] = {
|
|
133478
|
+
for (const field of MODEL_GENERATION_CONFIG_FIELDS) {
|
|
133479
|
+
this._generationConfig[field] = gc[field];
|
|
133480
|
+
this.generationConfigSources[field] = {
|
|
133447
133481
|
kind: "modelProviders",
|
|
133448
133482
|
authType: model.authType,
|
|
133449
133483
|
modelId: model.id,
|
|
133450
|
-
detail:
|
|
133484
|
+
detail: `generationConfig.${field}`
|
|
133451
133485
|
};
|
|
133452
|
-
}
|
|
133486
|
+
}
|
|
133487
|
+
if (gc.contextWindowSize === void 0) {
|
|
133453
133488
|
this._generationConfig.contextWindowSize = tokenLimit(model.id, "input");
|
|
133454
133489
|
this.generationConfigSources["contextWindowSize"] = {
|
|
133455
133490
|
kind: "computed",
|
|
@@ -145073,12 +145108,12 @@ var require_tr46 = __commonJS({
|
|
|
145073
145108
|
TRANSITIONAL: 0,
|
|
145074
145109
|
NONTRANSITIONAL: 1
|
|
145075
145110
|
};
|
|
145076
|
-
function
|
|
145111
|
+
function normalize12(str2) {
|
|
145077
145112
|
return str2.split("\0").map(function(s5) {
|
|
145078
145113
|
return s5.normalize("NFC");
|
|
145079
145114
|
}).join("\0");
|
|
145080
145115
|
}
|
|
145081
|
-
__name(
|
|
145116
|
+
__name(normalize12, "normalize");
|
|
145082
145117
|
function findStatus(val) {
|
|
145083
145118
|
var start = 0;
|
|
145084
145119
|
var end = mappingTable.length - 1;
|
|
@@ -145157,7 +145192,7 @@ var require_tr46 = __commonJS({
|
|
|
145157
145192
|
processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;
|
|
145158
145193
|
}
|
|
145159
145194
|
var error2 = false;
|
|
145160
|
-
if (
|
|
145195
|
+
if (normalize12(label) !== label || label[3] === "-" && label[4] === "-" || label[0] === "-" || label[label.length - 1] === "-" || label.indexOf(".") !== -1 || label.search(combiningMarksRegex) === 0) {
|
|
145161
145196
|
error2 = true;
|
|
145162
145197
|
}
|
|
145163
145198
|
var len = countSymbols(label);
|
|
@@ -145176,7 +145211,7 @@ var require_tr46 = __commonJS({
|
|
|
145176
145211
|
__name(validateLabel, "validateLabel");
|
|
145177
145212
|
function processing(domain_name, useSTD3, processing_option) {
|
|
145178
145213
|
var result = mapChars(domain_name, useSTD3, processing_option);
|
|
145179
|
-
result.string =
|
|
145214
|
+
result.string = normalize12(result.string);
|
|
145180
145215
|
var labels = result.string.split(".");
|
|
145181
145216
|
for (var i3 = 0; i3 < labels.length; ++i3) {
|
|
145182
145217
|
try {
|
|
@@ -156353,7 +156388,7 @@ __export(geminiContentGenerator_exports, {
|
|
|
156353
156388
|
createGeminiContentGenerator: () => createGeminiContentGenerator
|
|
156354
156389
|
});
|
|
156355
156390
|
function createGeminiContentGenerator(config2, gcConfig) {
|
|
156356
|
-
const version2 = "0.10.0-preview.
|
|
156391
|
+
const version2 = "0.10.0-preview.3";
|
|
156357
156392
|
const userAgent2 = config2.userAgent || `QwenCode/${version2} (${process.platform}; ${process.arch})`;
|
|
156358
156393
|
const baseHeaders = {
|
|
156359
156394
|
"User-Agent": userAgent2
|
|
@@ -172357,8 +172392,8 @@ function checkCommandPermissions(command2, config2, sessionAllowlist) {
|
|
|
172357
172392
|
isHardDenial: true
|
|
172358
172393
|
};
|
|
172359
172394
|
}
|
|
172360
|
-
const
|
|
172361
|
-
const commandsToValidate = splitCommands(command2).map(
|
|
172395
|
+
const normalize12 = /* @__PURE__ */ __name((cmd) => cmd.trim().replace(/\s+/g, " "), "normalize");
|
|
172396
|
+
const commandsToValidate = splitCommands(command2).map(normalize12);
|
|
172362
172397
|
const invocation = {
|
|
172363
172398
|
params: { command: "" }
|
|
172364
172399
|
};
|
|
@@ -172993,8 +173028,19 @@ function convertToFunctionResponse(toolName, callId, llmContent) {
|
|
|
172993
173028
|
return [createFunctionResponsePart(callId, toolName, contentToProcess)];
|
|
172994
173029
|
}
|
|
172995
173030
|
if (Array.isArray(contentToProcess)) {
|
|
172996
|
-
const
|
|
172997
|
-
|
|
173031
|
+
const textParts = [];
|
|
173032
|
+
const mediaParts = [];
|
|
173033
|
+
for (const part of toParts(contentToProcess)) {
|
|
173034
|
+
if (part.text !== void 0) {
|
|
173035
|
+
textParts.push(part.text);
|
|
173036
|
+
} else if (part.inlineData) {
|
|
173037
|
+
mediaParts.push({ inlineData: part.inlineData });
|
|
173038
|
+
} else if (part.fileData) {
|
|
173039
|
+
mediaParts.push({ fileData: part.fileData });
|
|
173040
|
+
}
|
|
173041
|
+
}
|
|
173042
|
+
const output = textParts.length > 0 ? textParts.join("\n") : "Tool execution succeeded.";
|
|
173043
|
+
return [createFunctionResponsePart(callId, toolName, output, mediaParts)];
|
|
172998
173044
|
}
|
|
172999
173045
|
if (contentToProcess.functionResponse) {
|
|
173000
173046
|
if (contentToProcess.functionResponse.response?.["content"]) {
|
|
@@ -208647,8 +208693,8 @@ var init_constants6 = __esm({
|
|
|
208647
208693
|
"packages/core/dist/src/mcp/constants.js"() {
|
|
208648
208694
|
"use strict";
|
|
208649
208695
|
init_esbuild_shims();
|
|
208650
|
-
MCP_OAUTH_CLIENT_NAME = "
|
|
208651
|
-
MCP_SA_IMPERSONATION_CLIENT_NAME = "
|
|
208696
|
+
MCP_OAUTH_CLIENT_NAME = "Qwen Code MCP Client";
|
|
208697
|
+
MCP_SA_IMPERSONATION_CLIENT_NAME = "Qwen Code (Service Account Impersonation)";
|
|
208652
208698
|
OAUTH_REDIRECT_PORT = 7777;
|
|
208653
208699
|
OAUTH_REDIRECT_PATH = "/oauth/callback";
|
|
208654
208700
|
}
|
|
@@ -209482,7 +209528,7 @@ var init_hybrid_token_storage = __esm({
|
|
|
209482
209528
|
init_base_token_storage();
|
|
209483
209529
|
init_file_token_storage();
|
|
209484
209530
|
init_types9();
|
|
209485
|
-
FORCE_FILE_STORAGE_ENV_VAR = "
|
|
209531
|
+
FORCE_FILE_STORAGE_ENV_VAR = "QWEN_CODE_FORCE_FILE_STORAGE";
|
|
209486
209532
|
HybridTokenStorage = class extends BaseTokenStorage {
|
|
209487
209533
|
static {
|
|
209488
209534
|
__name(this, "HybridTokenStorage");
|
|
@@ -209955,12 +210001,22 @@ var init_oauth_utils = __esm({
|
|
|
209955
210001
|
/**
|
|
209956
210002
|
* Build a resource parameter for OAuth requests.
|
|
209957
210003
|
*
|
|
209958
|
-
*
|
|
209959
|
-
*
|
|
210004
|
+
* Per MCP spec and RFC 8707, the resource parameter MUST be the
|
|
210005
|
+
* canonical URI of the MCP server. Clients SHOULD provide the most
|
|
210006
|
+
* specific URI they can. The URI MUST NOT include a fragment and
|
|
210007
|
+
* SHOULD NOT include a query component.
|
|
210008
|
+
*
|
|
210009
|
+
* @param endpointUrl The MCP server endpoint URL
|
|
210010
|
+
* @returns The canonical resource URI
|
|
209960
210011
|
*/
|
|
209961
210012
|
static buildResourceParameter(endpointUrl) {
|
|
209962
210013
|
const url2 = new URL(endpointUrl);
|
|
209963
|
-
|
|
210014
|
+
const path123 = url2.pathname === "/" ? "" : url2.pathname;
|
|
210015
|
+
let canonical = `${url2.protocol}//${url2.host}${path123}`;
|
|
210016
|
+
if (canonical.endsWith("/") && path123 !== "") {
|
|
210017
|
+
canonical = canonical.slice(0, -1);
|
|
210018
|
+
}
|
|
210019
|
+
return canonical;
|
|
209964
210020
|
}
|
|
209965
210021
|
};
|
|
209966
210022
|
}
|
|
@@ -210096,7 +210152,7 @@ var init_oauth_provider = __esm({
|
|
|
210096
210152
|
<html>
|
|
210097
210153
|
<body>
|
|
210098
210154
|
<h1>Authentication Successful!</h1>
|
|
210099
|
-
<p>You can close this window and return to
|
|
210155
|
+
<p>You can close this window and return to Qwen Code.</p>
|
|
210100
210156
|
<script>window.close();</script>
|
|
210101
210157
|
</body>
|
|
210102
210158
|
</html>
|
|
@@ -210539,13 +210595,26 @@ async function discoverTools(mcpServerName, mcpServerConfig, mcpClient, cliConfi
|
|
|
210539
210595
|
if (!Array.isArray(tool.functionDeclarations)) {
|
|
210540
210596
|
return [];
|
|
210541
210597
|
}
|
|
210598
|
+
const mcpTimeout = mcpServerConfig.timeout ?? MCP_DEFAULT_TIMEOUT_MSEC;
|
|
210542
210599
|
const discoveredTools = [];
|
|
210543
210600
|
for (const funcDecl of tool.functionDeclarations) {
|
|
210544
210601
|
try {
|
|
210545
210602
|
if (!isEnabled(funcDecl, mcpServerName, mcpServerConfig)) {
|
|
210546
210603
|
continue;
|
|
210547
210604
|
}
|
|
210548
|
-
discoveredTools.push(new DiscoveredMCPTool(
|
|
210605
|
+
discoveredTools.push(new DiscoveredMCPTool(
|
|
210606
|
+
mcpCallableTool,
|
|
210607
|
+
mcpServerName,
|
|
210608
|
+
funcDecl.name,
|
|
210609
|
+
funcDecl.description ?? "",
|
|
210610
|
+
funcDecl.parametersJsonSchema ?? { type: "object", properties: {} },
|
|
210611
|
+
mcpServerConfig.trust,
|
|
210612
|
+
void 0,
|
|
210613
|
+
cliConfig,
|
|
210614
|
+
mcpClient,
|
|
210615
|
+
// raw MCP Client for direct callTool with progress
|
|
210616
|
+
mcpTimeout
|
|
210617
|
+
));
|
|
210549
210618
|
} catch (error2) {
|
|
210550
210619
|
debugLogger49.error(`Error discovering tool: '${funcDecl.name}' from MCP server '${mcpServerName}': ${error2.message}`);
|
|
210551
210620
|
}
|
|
@@ -246219,7 +246288,7 @@ function asciiFuzzyIndex(input, pattern, caseSensitive) {
|
|
|
246219
246288
|
}
|
|
246220
246289
|
return firstIdx;
|
|
246221
246290
|
}
|
|
246222
|
-
function calculateScore(caseSensitive,
|
|
246291
|
+
function calculateScore(caseSensitive, normalize12, text, pattern, sidx, eidx, withPos) {
|
|
246223
246292
|
let pidx = 0, score = 0, inGap = false, consecutive = 0, firstBonus = toShort(0);
|
|
246224
246293
|
const pos2 = createPosSet(withPos);
|
|
246225
246294
|
let prevCharClass = 0;
|
|
@@ -246236,7 +246305,7 @@ function calculateScore(caseSensitive, normalize11, text, pattern, sidx, eidx, w
|
|
|
246236
246305
|
rune = String.fromCodePoint(rune).toLowerCase().codePointAt(0);
|
|
246237
246306
|
}
|
|
246238
246307
|
}
|
|
246239
|
-
if (
|
|
246308
|
+
if (normalize12) {
|
|
246240
246309
|
rune = normalizeRune(rune);
|
|
246241
246310
|
}
|
|
246242
246311
|
if (rune === pattern[pidx]) {
|
|
@@ -246646,14 +246715,14 @@ var init_fzf_es = __esm({
|
|
|
246646
246715
|
__name(trySkip, "trySkip");
|
|
246647
246716
|
__name(isAscii, "isAscii");
|
|
246648
246717
|
__name(asciiFuzzyIndex, "asciiFuzzyIndex");
|
|
246649
|
-
fuzzyMatchV2 = /* @__PURE__ */ __name((caseSensitive,
|
|
246718
|
+
fuzzyMatchV2 = /* @__PURE__ */ __name((caseSensitive, normalize12, forward, input, pattern, withPos, slab2) => {
|
|
246650
246719
|
const M2 = pattern.length;
|
|
246651
246720
|
if (M2 === 0) {
|
|
246652
246721
|
return [{ start: 0, end: 0, score: 0 }, createPosSet(withPos)];
|
|
246653
246722
|
}
|
|
246654
246723
|
const N2 = input.length;
|
|
246655
246724
|
if (slab2 !== null && N2 * M2 > slab2.i16.length) {
|
|
246656
|
-
return fuzzyMatchV1(caseSensitive,
|
|
246725
|
+
return fuzzyMatchV1(caseSensitive, normalize12, forward, input, pattern, withPos);
|
|
246657
246726
|
}
|
|
246658
246727
|
const idx = asciiFuzzyIndex(input, pattern, caseSensitive);
|
|
246659
246728
|
if (idx < 0) {
|
|
@@ -246686,7 +246755,7 @@ var init_fzf_es = __esm({
|
|
|
246686
246755
|
if (!caseSensitive && charClass === 2) {
|
|
246687
246756
|
char = String.fromCodePoint(char).toLowerCase().codePointAt(0);
|
|
246688
246757
|
}
|
|
246689
|
-
if (
|
|
246758
|
+
if (normalize12) {
|
|
246690
246759
|
char = normalizeRune(char);
|
|
246691
246760
|
}
|
|
246692
246761
|
}
|
|
@@ -246827,7 +246896,7 @@ var init_fzf_es = __esm({
|
|
|
246827
246896
|
return [{ start: j2, end: maxScorePos + 1, score: maxScore }, pos2];
|
|
246828
246897
|
}, "fuzzyMatchV2");
|
|
246829
246898
|
__name(calculateScore, "calculateScore");
|
|
246830
|
-
fuzzyMatchV1 = /* @__PURE__ */ __name((caseSensitive,
|
|
246899
|
+
fuzzyMatchV1 = /* @__PURE__ */ __name((caseSensitive, normalize12, forward, text, pattern, withPos, slab2) => {
|
|
246831
246900
|
if (pattern.length === 0) {
|
|
246832
246901
|
return [{ start: 0, end: 0, score: 0 }, null];
|
|
246833
246902
|
}
|
|
@@ -246846,7 +246915,7 @@ var init_fzf_es = __esm({
|
|
|
246846
246915
|
rune = String.fromCodePoint(rune).toLowerCase().codePointAt(0);
|
|
246847
246916
|
}
|
|
246848
246917
|
}
|
|
246849
|
-
if (
|
|
246918
|
+
if (normalize12) {
|
|
246850
246919
|
rune = normalizeRune(rune);
|
|
246851
246920
|
}
|
|
246852
246921
|
const pchar = pattern[indexAt(pidx, lenPattern, forward)];
|
|
@@ -246890,7 +246959,7 @@ var init_fzf_es = __esm({
|
|
|
246890
246959
|
}
|
|
246891
246960
|
const [score, pos2] = calculateScore(
|
|
246892
246961
|
caseSensitive,
|
|
246893
|
-
|
|
246962
|
+
normalize12,
|
|
246894
246963
|
text,
|
|
246895
246964
|
pattern,
|
|
246896
246965
|
sidx,
|
|
@@ -246901,7 +246970,7 @@ var init_fzf_es = __esm({
|
|
|
246901
246970
|
}
|
|
246902
246971
|
return [{ start: -1, end: -1, score: 0 }, null];
|
|
246903
246972
|
}, "fuzzyMatchV1");
|
|
246904
|
-
exactMatchNaive = /* @__PURE__ */ __name((caseSensitive,
|
|
246973
|
+
exactMatchNaive = /* @__PURE__ */ __name((caseSensitive, normalize12, forward, text, pattern, withPos, slab2) => {
|
|
246905
246974
|
if (pattern.length === 0) {
|
|
246906
246975
|
return [{ start: 0, end: 0, score: 0 }, null];
|
|
246907
246976
|
}
|
|
@@ -246925,7 +246994,7 @@ var init_fzf_es = __esm({
|
|
|
246925
246994
|
rune = String.fromCodePoint(rune).toLowerCase().codePointAt(0);
|
|
246926
246995
|
}
|
|
246927
246996
|
}
|
|
246928
|
-
if (
|
|
246997
|
+
if (normalize12) {
|
|
246929
246998
|
rune = normalizeRune(rune);
|
|
246930
246999
|
}
|
|
246931
247000
|
const pidx_ = indexAt(pidx, lenPattern, forward);
|
|
@@ -246962,7 +247031,7 @@ var init_fzf_es = __esm({
|
|
|
246962
247031
|
sidx = lenRunes - (bestPos + 1);
|
|
246963
247032
|
eidx = lenRunes - (bestPos - lenPattern + 1);
|
|
246964
247033
|
}
|
|
246965
|
-
const [score] = calculateScore(caseSensitive,
|
|
247034
|
+
const [score] = calculateScore(caseSensitive, normalize12, text, pattern, sidx, eidx, false);
|
|
246966
247035
|
return [{ start: sidx, end: eidx, score }, null];
|
|
246967
247036
|
}
|
|
246968
247037
|
return [{ start: -1, end: -1, score: 0 }, null];
|
|
@@ -246971,7 +247040,7 @@ var init_fzf_es = __esm({
|
|
|
246971
247040
|
SLAB_32_SIZE = 2048;
|
|
246972
247041
|
__name(makeSlab, "makeSlab");
|
|
246973
247042
|
slab = makeSlab(SLAB_16_SIZE, SLAB_32_SIZE);
|
|
246974
|
-
buildPatternForBasicMatch = /* @__PURE__ */ __name((query, casing,
|
|
247043
|
+
buildPatternForBasicMatch = /* @__PURE__ */ __name((query, casing, normalize12) => {
|
|
246975
247044
|
let caseSensitive = false;
|
|
246976
247045
|
switch (casing) {
|
|
246977
247046
|
case "smart-case":
|
|
@@ -246988,7 +247057,7 @@ var init_fzf_es = __esm({
|
|
|
246988
247057
|
break;
|
|
246989
247058
|
}
|
|
246990
247059
|
let queryRunes = strToRunes(query);
|
|
246991
|
-
if (
|
|
247060
|
+
if (normalize12) {
|
|
246992
247061
|
queryRunes = queryRunes.map(normalizeRune);
|
|
246993
247062
|
}
|
|
246994
247063
|
return {
|
|
@@ -297005,8 +297074,6 @@ var init_de = __esm({
|
|
|
297005
297074
|
// MCP Status
|
|
297006
297075
|
// ============================================================================
|
|
297007
297076
|
"No MCP servers configured.": "Keine MCP-Server konfiguriert.",
|
|
297008
|
-
"Please view MCP documentation in your browser:": "Bitte sehen Sie die MCP-Dokumentation in Ihrem Browser:",
|
|
297009
|
-
"or use the cli /docs command": "oder verwenden Sie den CLI-Befehl /docs",
|
|
297010
297077
|
"\u23F3 MCP servers are starting up ({{count}} initializing)...": "\u23F3 MCP-Server werden gestartet ({{count}} werden initialisiert)...",
|
|
297011
297078
|
"Note: First startup may take longer. Tool availability will update automatically.": "Hinweis: Der erste Start kann l\xE4nger dauern. Werkzeugverf\xFCgbarkeit wird automatisch aktualisiert.",
|
|
297012
297079
|
"Configured MCP servers:": "Konfigurierte MCP-Server:",
|
|
@@ -298042,8 +298109,6 @@ var init_en3 = __esm({
|
|
|
298042
298109
|
// MCP Status
|
|
298043
298110
|
// ============================================================================
|
|
298044
298111
|
"No MCP servers configured.": "No MCP servers configured.",
|
|
298045
|
-
"Please view MCP documentation in your browser:": "Please view MCP documentation in your browser:",
|
|
298046
|
-
"or use the cli /docs command": "or use the cli /docs command",
|
|
298047
298112
|
"\u23F3 MCP servers are starting up ({{count}} initializing)...": "\u23F3 MCP servers are starting up ({{count}} initializing)...",
|
|
298048
298113
|
"Note: First startup may take longer. Tool availability will update automatically.": "Note: First startup may take longer. Tool availability will update automatically.",
|
|
298049
298114
|
"Configured MCP servers:": "Configured MCP servers:",
|
|
@@ -298877,8 +298942,6 @@ var init_ja = __esm({
|
|
|
298877
298942
|
"Press Ctrl+D again to exit.": "Ctrl+D \u3092\u3082\u3046\u4E00\u5EA6\u62BC\u3059\u3068\u7D42\u4E86\u3057\u307E\u3059",
|
|
298878
298943
|
"Press Esc again to clear.": "Esc \u3092\u3082\u3046\u4E00\u5EA6\u62BC\u3059\u3068\u30AF\u30EA\u30A2\u3057\u307E\u3059",
|
|
298879
298944
|
// MCP Status
|
|
298880
|
-
"Please view MCP documentation in your browser:": "\u30D6\u30E9\u30A6\u30B6\u3067MCP\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044:",
|
|
298881
|
-
"or use the cli /docs command": "\u307E\u305F\u306F CLI \u306E /docs \u30B3\u30DE\u30F3\u30C9\u3092\u4F7F\u7528",
|
|
298882
298945
|
"\u23F3 MCP servers are starting up ({{count}} initializing)...": "\u23F3 MCP\u30B5\u30FC\u30D0\u30FC\u3092\u8D77\u52D5\u4E2D({{count}} \u521D\u671F\u5316\u4E2D)...",
|
|
298883
298946
|
"Note: First startup may take longer. Tool availability will update automatically.": "\u6CE8: \u521D\u56DE\u8D77\u52D5\u306B\u306F\u6642\u9593\u304C\u304B\u304B\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\u30C4\u30FC\u30EB\u306E\u5229\u7528\u53EF\u80FD\u72B6\u6CC1\u306F\u81EA\u52D5\u7684\u306B\u66F4\u65B0\u3055\u308C\u307E\u3059",
|
|
298884
298947
|
"Starting... (first startup may take longer)": "\u8D77\u52D5\u4E2D...(\u521D\u56DE\u8D77\u52D5\u306B\u306F\u6642\u9593\u304C\u304B\u304B\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059)",
|
|
@@ -299760,8 +299823,6 @@ var init_pt = __esm({
|
|
|
299760
299823
|
// MCP Status
|
|
299761
299824
|
// ============================================================================
|
|
299762
299825
|
"No MCP servers configured.": "Nenhum servidor MCP configurado.",
|
|
299763
|
-
"Please view MCP documentation in your browser:": "Veja a documenta\xE7\xE3o do MCP no seu navegador:",
|
|
299764
|
-
"or use the cli /docs command": "ou use o comando cli /docs",
|
|
299765
299826
|
"\u23F3 MCP servers are starting up ({{count}} initializing)...": "\u23F3 Servidores MCP est\xE3o iniciando ({{count}} inicializando)...",
|
|
299766
299827
|
"Note: First startup may take longer. Tool availability will update automatically.": "Nota: A primeira inicializa\xE7\xE3o pode demorar mais. A disponibilidade da ferramenta ser\xE1 atualizada automaticamente.",
|
|
299767
299828
|
"Configured MCP servers:": "Servidores MCP configurados:",
|
|
@@ -300796,8 +300857,6 @@ var init_ru = __esm({
|
|
|
300796
300857
|
// Статус MCP
|
|
300797
300858
|
// ============================================================================
|
|
300798
300859
|
"No MCP servers configured.": "\u041D\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u043E MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u043E\u0432.",
|
|
300799
|
-
"Please view MCP documentation in your browser:": "\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0438\u0442\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u044E MCP \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435:",
|
|
300800
|
-
"or use the cli /docs command": "\u0438\u043B\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u043A\u043E\u043C\u0430\u043D\u0434\u0443 cli /docs",
|
|
300801
300860
|
"\u23F3 MCP servers are starting up ({{count}} initializing)...": "\u23F3 MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u044B \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u044E\u0442\u0441\u044F ({{count}} \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044F)...",
|
|
300802
300861
|
"Note: First startup may take longer. Tool availability will update automatically.": "\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435: \u041F\u0435\u0440\u0432\u044B\u0439 \u0437\u0430\u043F\u0443\u0441\u043A \u043C\u043E\u0436\u0435\u0442 \u0437\u0430\u043D\u044F\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u0432\u0440\u0435\u043C\u0435\u043D\u0438. \u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u044C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u0441\u044F \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438.",
|
|
300803
300862
|
"Configured MCP servers:": "\u041D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435 MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u044B:",
|
|
@@ -301834,8 +301893,6 @@ var init_zh = __esm({
|
|
|
301834
301893
|
// MCP Status
|
|
301835
301894
|
// ============================================================================
|
|
301836
301895
|
"No MCP servers configured.": "\u672A\u914D\u7F6E MCP \u670D\u52A1\u5668",
|
|
301837
|
-
"Please view MCP documentation in your browser:": "\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u67E5\u770B MCP \u6587\u6863\uFF1A",
|
|
301838
|
-
"or use the cli /docs command": "\u6216\u4F7F\u7528 cli /docs \u547D\u4EE4",
|
|
301839
301896
|
"\u23F3 MCP servers are starting up ({{count}} initializing)...": "\u23F3 MCP \u670D\u52A1\u5668\u6B63\u5728\u542F\u52A8\uFF08{{count}} \u4E2A\u6B63\u5728\u521D\u59CB\u5316\uFF09...",
|
|
301840
301897
|
"Note: First startup may take longer. Tool availability will update automatically.": "\u6CE8\u610F\uFF1A\u9996\u6B21\u542F\u52A8\u53EF\u80FD\u9700\u8981\u66F4\u957F\u65F6\u95F4\u3002\u5DE5\u5177\u53EF\u7528\u6027\u5C06\u81EA\u52A8\u66F4\u65B0",
|
|
301841
301898
|
"Configured MCP servers:": "\u5DF2\u914D\u7F6E\u7684 MCP \u670D\u52A1\u5668\uFF1A",
|
|
@@ -308459,9 +308516,9 @@ var require_make_warning = __commonJS({
|
|
|
308459
308516
|
var require_normalize2 = __commonJS({
|
|
308460
308517
|
"node_modules/normalize-package-data/lib/normalize.js"(exports2, module2) {
|
|
308461
308518
|
init_esbuild_shims();
|
|
308462
|
-
module2.exports =
|
|
308519
|
+
module2.exports = normalize12;
|
|
308463
308520
|
var fixer = require_fixer();
|
|
308464
|
-
|
|
308521
|
+
normalize12.fixer = fixer;
|
|
308465
308522
|
var makeWarning = require_make_warning();
|
|
308466
308523
|
var fieldsToFix = [
|
|
308467
308524
|
"name",
|
|
@@ -308484,7 +308541,7 @@ var require_normalize2 = __commonJS({
|
|
|
308484
308541
|
return ucFirst(fieldName) + "Field";
|
|
308485
308542
|
});
|
|
308486
308543
|
thingsToFix = thingsToFix.concat(otherThingsToFix);
|
|
308487
|
-
function
|
|
308544
|
+
function normalize12(data, warn, strict) {
|
|
308488
308545
|
if (warn === true) {
|
|
308489
308546
|
warn = null;
|
|
308490
308547
|
strict = true;
|
|
@@ -308507,7 +308564,7 @@ var require_normalize2 = __commonJS({
|
|
|
308507
308564
|
});
|
|
308508
308565
|
data._id = data.name + "@" + data.version;
|
|
308509
308566
|
}
|
|
308510
|
-
__name(
|
|
308567
|
+
__name(normalize12, "normalize");
|
|
308511
308568
|
function ucFirst(string4) {
|
|
308512
308569
|
return string4.charAt(0).toUpperCase() + string4.slice(1);
|
|
308513
308570
|
}
|
|
@@ -311054,8 +311111,8 @@ var require_resolve4 = __commonJS({
|
|
|
311054
311111
|
return count;
|
|
311055
311112
|
}
|
|
311056
311113
|
__name(countKeys, "countKeys");
|
|
311057
|
-
function getFullPath(resolver, id = "",
|
|
311058
|
-
if (
|
|
311114
|
+
function getFullPath(resolver, id = "", normalize12) {
|
|
311115
|
+
if (normalize12 !== false)
|
|
311059
311116
|
id = normalizeId(id);
|
|
311060
311117
|
const p2 = resolver.parse(id);
|
|
311061
311118
|
return _getFullPath(resolver, p2);
|
|
@@ -353991,13 +354048,13 @@ var require_envKeyToSetting = __commonJS({
|
|
|
353991
354048
|
module2.exports = function(x3) {
|
|
353992
354049
|
const colonIndex = x3.indexOf(":");
|
|
353993
354050
|
if (colonIndex === -1) {
|
|
353994
|
-
return
|
|
354051
|
+
return normalize12(x3);
|
|
353995
354052
|
}
|
|
353996
354053
|
const firstPart = x3.substr(0, colonIndex);
|
|
353997
354054
|
const secondPart = x3.substr(colonIndex + 1);
|
|
353998
|
-
return `${
|
|
354055
|
+
return `${normalize12(firstPart)}:${normalize12(secondPart)}`;
|
|
353999
354056
|
};
|
|
354000
|
-
function
|
|
354057
|
+
function normalize12(s5) {
|
|
354001
354058
|
s5 = s5.toLowerCase();
|
|
354002
354059
|
if (s5 === "_authtoken") return "_authToken";
|
|
354003
354060
|
let r5 = s5[0];
|
|
@@ -354006,7 +354063,7 @@ var require_envKeyToSetting = __commonJS({
|
|
|
354006
354063
|
}
|
|
354007
354064
|
return r5;
|
|
354008
354065
|
}
|
|
354009
|
-
__name(
|
|
354066
|
+
__name(normalize12, "normalize");
|
|
354010
354067
|
}
|
|
354011
354068
|
});
|
|
354012
354069
|
|
|
@@ -364275,6 +364332,17 @@ var SETTINGS_SCHEMA = {
|
|
|
364275
364332
|
showInDialog: false,
|
|
364276
364333
|
mergeStrategy: "replace" /* REPLACE */
|
|
364277
364334
|
},
|
|
364335
|
+
// Environment variables fallback
|
|
364336
|
+
env: {
|
|
364337
|
+
type: "object",
|
|
364338
|
+
label: "Environment Variables",
|
|
364339
|
+
category: "Advanced",
|
|
364340
|
+
requiresRestart: true,
|
|
364341
|
+
default: {},
|
|
364342
|
+
description: "Environment variables to set as fallback defaults. These are loaded with the lowest priority: system environment variables > .env files > settings.env.",
|
|
364343
|
+
showInDialog: false,
|
|
364344
|
+
mergeStrategy: "shallow_merge" /* SHALLOW_MERGE */
|
|
364345
|
+
},
|
|
364278
364346
|
general: {
|
|
364279
364347
|
type: "object",
|
|
364280
364348
|
label: "General",
|
|
@@ -365985,24 +366053,31 @@ function createMinimalSettings() {
|
|
|
365985
366053
|
);
|
|
365986
366054
|
}
|
|
365987
366055
|
__name(createMinimalSettings, "createMinimalSettings");
|
|
365988
|
-
function findEnvFile(startDir) {
|
|
366056
|
+
function findEnvFile(settings, startDir) {
|
|
366057
|
+
const homeDir = homedir15();
|
|
366058
|
+
const isTrusted = isWorkspaceTrusted(settings).isTrusted;
|
|
366059
|
+
const userLevelPaths = /* @__PURE__ */ new Set([
|
|
366060
|
+
path81.normalize(path81.join(homeDir, ".env")),
|
|
366061
|
+
path81.normalize(path81.join(homeDir, QWEN_DIR4, ".env"))
|
|
366062
|
+
]);
|
|
366063
|
+
const canUseEnvFile = /* @__PURE__ */ __name((filePath) => isTrusted !== false || userLevelPaths.has(path81.normalize(filePath)), "canUseEnvFile");
|
|
365989
366064
|
let currentDir = path81.resolve(startDir);
|
|
365990
366065
|
while (true) {
|
|
365991
366066
|
const geminiEnvPath = path81.join(currentDir, QWEN_DIR4, ".env");
|
|
365992
|
-
if (fs79.existsSync(geminiEnvPath)) {
|
|
366067
|
+
if (fs79.existsSync(geminiEnvPath) && canUseEnvFile(geminiEnvPath)) {
|
|
365993
366068
|
return geminiEnvPath;
|
|
365994
366069
|
}
|
|
365995
366070
|
const envPath = path81.join(currentDir, ".env");
|
|
365996
|
-
if (fs79.existsSync(envPath)) {
|
|
366071
|
+
if (fs79.existsSync(envPath) && canUseEnvFile(envPath)) {
|
|
365997
366072
|
return envPath;
|
|
365998
366073
|
}
|
|
365999
366074
|
const parentDir = path81.dirname(currentDir);
|
|
366000
366075
|
if (parentDir === currentDir || !parentDir) {
|
|
366001
|
-
const homeGeminiEnvPath = path81.join(
|
|
366076
|
+
const homeGeminiEnvPath = path81.join(homeDir, QWEN_DIR4, ".env");
|
|
366002
366077
|
if (fs79.existsSync(homeGeminiEnvPath)) {
|
|
366003
366078
|
return homeGeminiEnvPath;
|
|
366004
366079
|
}
|
|
366005
|
-
const homeEnvPath = path81.join(
|
|
366080
|
+
const homeEnvPath = path81.join(homeDir, ".env");
|
|
366006
366081
|
if (fs79.existsSync(homeEnvPath)) {
|
|
366007
366082
|
return homeEnvPath;
|
|
366008
366083
|
}
|
|
@@ -366027,10 +366102,7 @@ function setUpCloudShellEnvironment(envFilePath) {
|
|
|
366027
366102
|
}
|
|
366028
366103
|
__name(setUpCloudShellEnvironment, "setUpCloudShellEnvironment");
|
|
366029
366104
|
function loadEnvironment(settings) {
|
|
366030
|
-
const envFilePath = findEnvFile(process27.cwd());
|
|
366031
|
-
if (!isWorkspaceTrusted(settings).isTrusted) {
|
|
366032
|
-
return;
|
|
366033
|
-
}
|
|
366105
|
+
const envFilePath = findEnvFile(settings, process27.cwd());
|
|
366034
366106
|
if (process27.env["CLOUD_SHELL"] === "true") {
|
|
366035
366107
|
setUpCloudShellEnvironment(envFilePath);
|
|
366036
366108
|
}
|
|
@@ -366053,6 +366125,13 @@ function loadEnvironment(settings) {
|
|
|
366053
366125
|
} catch (_e2) {
|
|
366054
366126
|
}
|
|
366055
366127
|
}
|
|
366128
|
+
if (settings.env) {
|
|
366129
|
+
for (const [key, value] of Object.entries(settings.env)) {
|
|
366130
|
+
if (!Object.hasOwn(process27.env, key) && typeof value === "string") {
|
|
366131
|
+
process27.env[key] = value;
|
|
366132
|
+
}
|
|
366133
|
+
}
|
|
366134
|
+
}
|
|
366056
366135
|
}
|
|
366057
366136
|
__name(loadEnvironment, "loadEnvironment");
|
|
366058
366137
|
function loadSettings(workspaceDir = process27.cwd()) {
|
|
@@ -367652,7 +367731,7 @@ import { fileURLToPath as fileURLToPath9 } from "url";
|
|
|
367652
367731
|
// node_modules/yargs-parser/build/lib/index.js
|
|
367653
367732
|
init_esbuild_shims();
|
|
367654
367733
|
import { format } from "util";
|
|
367655
|
-
import { normalize as
|
|
367734
|
+
import { normalize as normalize9, resolve as resolve24 } from "path";
|
|
367656
367735
|
|
|
367657
367736
|
// node_modules/yargs-parser/build/lib/string-utils.js
|
|
367658
367737
|
init_esbuild_shims();
|
|
@@ -368654,7 +368733,7 @@ var parser5 = new YargsParser({
|
|
|
368654
368733
|
return env4;
|
|
368655
368734
|
}, "env"),
|
|
368656
368735
|
format,
|
|
368657
|
-
normalize:
|
|
368736
|
+
normalize: normalize9,
|
|
368658
368737
|
resolve: resolve24,
|
|
368659
368738
|
// TODO: figure out a way to combine ESM and CJS coverage, such that
|
|
368660
368739
|
// we can exercise all the lines below:
|
|
@@ -372984,16 +373063,16 @@ __name(toPath2, "toPath");
|
|
|
372984
373063
|
|
|
372985
373064
|
// node_modules/read-pkg/index.js
|
|
372986
373065
|
var getPackagePath = /* @__PURE__ */ __name((cwd7) => path85.resolve(toPath2(cwd7) ?? ".", "package.json"), "getPackagePath");
|
|
372987
|
-
var _readPackage = /* @__PURE__ */ __name((file,
|
|
373066
|
+
var _readPackage = /* @__PURE__ */ __name((file, normalize12) => {
|
|
372988
373067
|
const json2 = typeof file === "string" ? parseJson(file) : file;
|
|
372989
|
-
if (
|
|
373068
|
+
if (normalize12) {
|
|
372990
373069
|
(0, import_normalize_package_data.default)(json2);
|
|
372991
373070
|
}
|
|
372992
373071
|
return json2;
|
|
372993
373072
|
}, "_readPackage");
|
|
372994
|
-
async function readPackage({ cwd: cwd7, normalize:
|
|
373073
|
+
async function readPackage({ cwd: cwd7, normalize: normalize12 = true } = {}) {
|
|
372995
373074
|
const packageFile = await fsPromises4.readFile(getPackagePath(cwd7), "utf8");
|
|
372996
|
-
return _readPackage(packageFile,
|
|
373075
|
+
return _readPackage(packageFile, normalize12);
|
|
372997
373076
|
}
|
|
372998
373077
|
__name(readPackage, "readPackage");
|
|
372999
373078
|
|
|
@@ -373032,7 +373111,7 @@ __name(getPackageJson, "getPackageJson");
|
|
|
373032
373111
|
// packages/cli/src/utils/version.ts
|
|
373033
373112
|
async function getCliVersion() {
|
|
373034
373113
|
const pkgJson = await getPackageJson();
|
|
373035
|
-
return "0.10.0-preview.
|
|
373114
|
+
return "0.10.0-preview.3";
|
|
373036
373115
|
}
|
|
373037
373116
|
__name(getCliVersion, "getCliVersion");
|
|
373038
373117
|
|
|
@@ -373227,13 +373306,12 @@ var addCommand = {
|
|
|
373227
373306
|
alias: "s",
|
|
373228
373307
|
describe: "Configuration scope (user or project)",
|
|
373229
373308
|
type: "string",
|
|
373230
|
-
default: "
|
|
373309
|
+
default: "user",
|
|
373231
373310
|
choices: ["user", "project"]
|
|
373232
373311
|
}).option("transport", {
|
|
373233
373312
|
alias: "t",
|
|
373234
|
-
describe: "Transport type (stdio, sse, http)",
|
|
373313
|
+
describe: "Transport type (stdio, sse, http). Auto-detected from URL if not specified.",
|
|
373235
373314
|
type: "string",
|
|
373236
|
-
default: "stdio",
|
|
373237
373315
|
choices: ["stdio", "sse", "http"]
|
|
373238
373316
|
}).option("env", {
|
|
373239
373317
|
alias: "e",
|
|
@@ -373267,6 +373345,14 @@ var addCommand = {
|
|
|
373267
373345
|
const existingArgs = argv["args"] || [];
|
|
373268
373346
|
argv["args"] = [...existingArgs, ...argv["--"]];
|
|
373269
373347
|
}
|
|
373348
|
+
if (!argv["transport"]) {
|
|
373349
|
+
const commandOrUrl = argv["commandOrUrl"];
|
|
373350
|
+
if (commandOrUrl && (commandOrUrl.startsWith("http://") || commandOrUrl.startsWith("https://"))) {
|
|
373351
|
+
argv["transport"] = "http";
|
|
373352
|
+
} else {
|
|
373353
|
+
argv["transport"] = "stdio";
|
|
373354
|
+
}
|
|
373355
|
+
}
|
|
373270
373356
|
}), "builder"),
|
|
373271
373357
|
handler: /* @__PURE__ */ __name(async (argv) => {
|
|
373272
373358
|
await addMcpServer(
|
|
@@ -373302,13 +373388,18 @@ async function removeMcpServer(name3, options2) {
|
|
|
373302
373388
|
}
|
|
373303
373389
|
delete mcpServers[name3];
|
|
373304
373390
|
settings.setValue(settingsScope, "mcpServers", mcpServers);
|
|
373391
|
+
try {
|
|
373392
|
+
const tokenStorage = new MCPOAuthTokenStorage();
|
|
373393
|
+
await tokenStorage.deleteCredentials(name3);
|
|
373394
|
+
} catch {
|
|
373395
|
+
}
|
|
373305
373396
|
writeStdoutLine(`Server "${name3}" removed from ${scope} settings.`);
|
|
373306
373397
|
}
|
|
373307
373398
|
__name(removeMcpServer, "removeMcpServer");
|
|
373308
373399
|
var removeCommand = {
|
|
373309
373400
|
command: "remove <name>",
|
|
373310
373401
|
describe: "Remove a server",
|
|
373311
|
-
builder: /* @__PURE__ */ __name((yargs) => yargs.usage("Usage:
|
|
373402
|
+
builder: /* @__PURE__ */ __name((yargs) => yargs.usage("Usage: qwen mcp remove [options] <name>").positional("name", {
|
|
373312
373403
|
describe: "Name of the server",
|
|
373313
373404
|
type: "string",
|
|
373314
373405
|
demandOption: true
|
|
@@ -373316,7 +373407,7 @@ var removeCommand = {
|
|
|
373316
373407
|
alias: "s",
|
|
373317
373408
|
describe: "Configuration scope (user or project)",
|
|
373318
373409
|
type: "string",
|
|
373319
|
-
default: "
|
|
373410
|
+
default: "user",
|
|
373320
373411
|
choices: ["user", "project"]
|
|
373321
373412
|
}), "builder"),
|
|
373322
373413
|
handler: /* @__PURE__ */ __name(async (argv) => {
|
|
@@ -377028,7 +377119,7 @@ function normalizeOutputFormat(format4) {
|
|
|
377028
377119
|
__name(normalizeOutputFormat, "normalizeOutputFormat");
|
|
377029
377120
|
async function parseArguments() {
|
|
377030
377121
|
let rawArgv = hideBin(process.argv);
|
|
377031
|
-
if (rawArgv.length > 0 && (rawArgv[0].endsWith("/dist/qwen-cli/cli.js") || rawArgv[0].endsWith("/dist/cli.js"))) {
|
|
377122
|
+
if (rawArgv.length > 0 && (rawArgv[0].endsWith("/dist/qwen-cli/cli.js") || rawArgv[0].endsWith("/dist/cli.js") || rawArgv[0].endsWith("/dist/cli/cli.js"))) {
|
|
377032
377123
|
rawArgv = rawArgv.slice(1);
|
|
377033
377124
|
}
|
|
377034
377125
|
const yargsInstance = yargs_default(rawArgv).locale("en").scriptName("qwen").usage(
|
|
@@ -380543,7 +380634,7 @@ var formatDuration = /* @__PURE__ */ __name((milliseconds) => {
|
|
|
380543
380634
|
|
|
380544
380635
|
// packages/cli/src/generated/git-commit.ts
|
|
380545
380636
|
init_esbuild_shims();
|
|
380546
|
-
var GIT_COMMIT_INFO = "
|
|
380637
|
+
var GIT_COMMIT_INFO = "4ee4bd08";
|
|
380547
380638
|
|
|
380548
380639
|
// packages/cli/src/utils/systemInfo.ts
|
|
380549
380640
|
async function getNpmVersion() {
|
|
@@ -387260,6 +387351,19 @@ async function buildSystemMessage(config2, sessionId, permissionMode, allowedBui
|
|
|
387260
387351
|
return systemMessage;
|
|
387261
387352
|
}
|
|
387262
387353
|
__name(buildSystemMessage, "buildSystemMessage");
|
|
387354
|
+
function isMcpToolProgressData(output) {
|
|
387355
|
+
return typeof output === "object" && output !== null && "type" in output && output.type === "mcp_tool_progress";
|
|
387356
|
+
}
|
|
387357
|
+
__name(isMcpToolProgressData, "isMcpToolProgressData");
|
|
387358
|
+
function createToolProgressHandler(request4, adapter) {
|
|
387359
|
+
const handler = /* @__PURE__ */ __name((_callId, output) => {
|
|
387360
|
+
if (isMcpToolProgressData(output)) {
|
|
387361
|
+
adapter.emitToolProgress(request4, output);
|
|
387362
|
+
}
|
|
387363
|
+
}, "handler");
|
|
387364
|
+
return { handler };
|
|
387365
|
+
}
|
|
387366
|
+
__name(createToolProgressHandler, "createToolProgressHandler");
|
|
387263
387367
|
function createTaskToolProgressHandler(config2, taskToolCallId, adapter) {
|
|
387264
387368
|
const previousTaskStates = /* @__PURE__ */ new Map();
|
|
387265
387369
|
const emittedToolUseIds = /* @__PURE__ */ new Set();
|
|
@@ -388092,6 +388196,16 @@ ${event.value}`, null);
|
|
|
388092
388196
|
};
|
|
388093
388197
|
this.emitMessageImpl(systemMessage);
|
|
388094
388198
|
}
|
|
388199
|
+
/**
|
|
388200
|
+
* Emits a tool progress stream event.
|
|
388201
|
+
* Default implementation is a no-op. StreamJsonOutputAdapter overrides this
|
|
388202
|
+
* to emit stream events when includePartialMessages is enabled.
|
|
388203
|
+
*
|
|
388204
|
+
* @param _request - Tool call request info
|
|
388205
|
+
* @param _progress - Structured MCP progress data
|
|
388206
|
+
*/
|
|
388207
|
+
emitToolProgress(_request, _progress) {
|
|
388208
|
+
}
|
|
388095
388209
|
/**
|
|
388096
388210
|
* Builds a result message from options.
|
|
388097
388211
|
* Helper method used by both emitResult implementations.
|
|
@@ -388471,6 +388585,27 @@ var StreamJsonOutputAdapter = class extends BaseJsonOutputAdapter {
|
|
|
388471
388585
|
);
|
|
388472
388586
|
}
|
|
388473
388587
|
}
|
|
388588
|
+
/**
|
|
388589
|
+
* Emits a tool progress stream event when partial messages are enabled.
|
|
388590
|
+
* This overrides the no-op in BaseJsonOutputAdapter.
|
|
388591
|
+
*/
|
|
388592
|
+
emitToolProgress(request4, progress) {
|
|
388593
|
+
if (!this.includePartialMessages) {
|
|
388594
|
+
return;
|
|
388595
|
+
}
|
|
388596
|
+
const partial2 = {
|
|
388597
|
+
type: "stream_event",
|
|
388598
|
+
uuid: randomUUID8(),
|
|
388599
|
+
session_id: this.getSessionId(),
|
|
388600
|
+
parent_tool_use_id: null,
|
|
388601
|
+
event: {
|
|
388602
|
+
type: "tool_progress",
|
|
388603
|
+
tool_use_id: request4.callId,
|
|
388604
|
+
content: progress
|
|
388605
|
+
}
|
|
388606
|
+
};
|
|
388607
|
+
this.emitMessageImpl(partial2);
|
|
388608
|
+
}
|
|
388474
388609
|
/**
|
|
388475
388610
|
* Emits stream events when partial messages are enabled.
|
|
388476
388611
|
* This is a private method specific to StreamJsonOutputAdapter.
|
|
@@ -388960,24 +389095,21 @@ async function runNonInteractive(config2, settings, input, prompt_id, options2 =
|
|
|
388960
389095
|
const inputFormat = typeof config2.getInputFormat === "function" ? config2.getInputFormat() : InputFormat.TEXT;
|
|
388961
389096
|
const toolCallUpdateCallback = inputFormat === InputFormat.STREAM_JSON && options2.controlService ? options2.controlService.permission.getToolCallUpdateCallback() : void 0;
|
|
388962
389097
|
const isTaskTool = finalRequestInfo.name === "task";
|
|
388963
|
-
const
|
|
389098
|
+
const { handler: outputUpdateHandler } = isTaskTool ? createTaskToolProgressHandler(
|
|
388964
389099
|
config2,
|
|
388965
389100
|
finalRequestInfo.callId,
|
|
388966
389101
|
adapter
|
|
388967
|
-
) :
|
|
388968
|
-
const taskToolProgressHandler = taskToolProgress?.handler;
|
|
389102
|
+
) : createToolProgressHandler(finalRequestInfo, adapter);
|
|
388969
389103
|
const toolResponse = await executeToolCall(
|
|
388970
389104
|
config2,
|
|
388971
389105
|
finalRequestInfo,
|
|
388972
389106
|
abortController.signal,
|
|
388973
|
-
|
|
388974
|
-
|
|
388975
|
-
outputUpdateHandler: taskToolProgressHandler
|
|
388976
|
-
},
|
|
389107
|
+
{
|
|
389108
|
+
outputUpdateHandler,
|
|
388977
389109
|
...toolCallUpdateCallback && {
|
|
388978
389110
|
onToolCallsUpdate: toolCallUpdateCallback
|
|
388979
389111
|
}
|
|
388980
|
-
}
|
|
389112
|
+
}
|
|
388981
389113
|
);
|
|
388982
389114
|
if (toolResponse.error) {
|
|
388983
389115
|
handleToolError(
|
|
@@ -412797,6 +412929,15 @@ var useResultDisplayRenderer = /* @__PURE__ */ __name((resultDisplay) => import_
|
|
|
412797
412929
|
data: resultDisplay
|
|
412798
412930
|
};
|
|
412799
412931
|
}
|
|
412932
|
+
if (typeof resultDisplay === "object" && resultDisplay !== null && "type" in resultDisplay && resultDisplay.type === "mcp_tool_progress") {
|
|
412933
|
+
const progress = resultDisplay;
|
|
412934
|
+
const msg = progress.message ?? `Progress: ${progress.progress}`;
|
|
412935
|
+
const totalStr = progress.total != null ? `/${progress.total}` : "";
|
|
412936
|
+
return {
|
|
412937
|
+
type: "string",
|
|
412938
|
+
data: `\u23F3 [${progress.progress}${totalStr}] ${msg}`
|
|
412939
|
+
};
|
|
412940
|
+
}
|
|
412800
412941
|
if (typeof resultDisplay === "object" && resultDisplay !== null && "ansiOutput" in resultDisplay) {
|
|
412801
412942
|
return { type: "ansi", data: resultDisplay.ansiOutput };
|
|
412802
412943
|
}
|
|
@@ -414372,16 +414513,7 @@ var McpStatus = /* @__PURE__ */ __name(({
|
|
|
414372
414513
|
}) => {
|
|
414373
414514
|
const serverNames = Object.keys(servers);
|
|
414374
414515
|
if (serverNames.length === 0 && blockedServers.length === 0) {
|
|
414375
|
-
return /* @__PURE__ */ (0, import_jsx_runtime55.
|
|
414376
|
-
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Text3, { children: t4("No MCP servers configured.") }),
|
|
414377
|
-
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Text3, { children: [
|
|
414378
|
-
t4("Please view MCP documentation in your browser:"),
|
|
414379
|
-
" ",
|
|
414380
|
-
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Text3, { color: theme.text.link, children: "https://goo.gle/gemini-cli-docs-mcp" }),
|
|
414381
|
-
" ",
|
|
414382
|
-
t4("or use the cli /docs command")
|
|
414383
|
-
] })
|
|
414384
|
-
] });
|
|
414516
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Box_default, { flexDirection: "column", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Text3, { children: t4("No MCP servers configured.") }) });
|
|
414385
414517
|
}
|
|
414386
414518
|
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Box_default, { flexDirection: "column", children: [
|
|
414387
414519
|
discoveryInProgress && /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Box_default, { flexDirection: "column", marginBottom: 1, children: [
|
|
@@ -414916,8 +415048,8 @@ var Header2 = /* @__PURE__ */ __name(({
|
|
|
414916
415048
|
availableInfoPanelWidth - infoPanelChromeWidth
|
|
414917
415049
|
);
|
|
414918
415050
|
const authModelText = `${formattedAuthType} | ${model}`;
|
|
414919
|
-
const
|
|
414920
|
-
const
|
|
415051
|
+
const modelHintText = " (/model to change)";
|
|
415052
|
+
const showModelHint = infoPanelContentWidth > 0 && getCachedStringWidth(authModelText + modelHintText) <= infoPanelContentWidth;
|
|
414921
415053
|
const tildeifiedPath = tildeifyPath(workingDirectory);
|
|
414922
415054
|
const shortenedPath = shortenPath(tildeifiedPath, Math.max(3, maxPathLength));
|
|
414923
415055
|
const displayPath = maxPathLength <= 0 ? "" : shortenedPath.length > maxPathLength ? shortenedPath.slice(0, maxPathLength) : shortenedPath;
|
|
@@ -414959,7 +415091,7 @@ var Header2 = /* @__PURE__ */ __name(({
|
|
|
414959
415091
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Text3, { children: " " }),
|
|
414960
415092
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(Text3, { children: [
|
|
414961
415093
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Text3, { color: theme.text.secondary, children: authModelText }),
|
|
414962
|
-
|
|
415094
|
+
showModelHint && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Text3, { color: theme.text.secondary, children: modelHintText })
|
|
414963
415095
|
] }),
|
|
414964
415096
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Text3, { color: theme.text.secondary, children: displayPath })
|
|
414965
415097
|
]
|
|
@@ -434820,7 +434952,7 @@ var GeminiAgent = class {
|
|
|
434820
434952
|
name: APPROVAL_MODE_INFO[mode].name,
|
|
434821
434953
|
description: APPROVAL_MODE_INFO[mode].description
|
|
434822
434954
|
}));
|
|
434823
|
-
const version2 = "0.10.0-preview.
|
|
434955
|
+
const version2 = "0.10.0-preview.3";
|
|
434824
434956
|
return {
|
|
434825
434957
|
protocolVersion: PROTOCOL_VERSION,
|
|
434826
434958
|
agentInfo: {
|
package/locales/de.js
CHANGED
|
@@ -1055,9 +1055,6 @@ export default {
|
|
|
1055
1055
|
// MCP Status
|
|
1056
1056
|
// ============================================================================
|
|
1057
1057
|
'No MCP servers configured.': 'Keine MCP-Server konfiguriert.',
|
|
1058
|
-
'Please view MCP documentation in your browser:':
|
|
1059
|
-
'Bitte sehen Sie die MCP-Dokumentation in Ihrem Browser:',
|
|
1060
|
-
'or use the cli /docs command': 'oder verwenden Sie den CLI-Befehl /docs',
|
|
1061
1058
|
'⏳ MCP servers are starting up ({{count}} initializing)...':
|
|
1062
1059
|
'⏳ MCP-Server werden gestartet ({{count}} werden initialisiert)...',
|
|
1063
1060
|
'Note: First startup may take longer. Tool availability will update automatically.':
|
package/locales/en.js
CHANGED
|
@@ -1042,9 +1042,6 @@ export default {
|
|
|
1042
1042
|
// MCP Status
|
|
1043
1043
|
// ============================================================================
|
|
1044
1044
|
'No MCP servers configured.': 'No MCP servers configured.',
|
|
1045
|
-
'Please view MCP documentation in your browser:':
|
|
1046
|
-
'Please view MCP documentation in your browser:',
|
|
1047
|
-
'or use the cli /docs command': 'or use the cli /docs command',
|
|
1048
1045
|
'⏳ MCP servers are starting up ({{count}} initializing)...':
|
|
1049
1046
|
'⏳ MCP servers are starting up ({{count}} initializing)...',
|
|
1050
1047
|
'Note: First startup may take longer. Tool availability will update automatically.':
|
package/locales/ja.js
CHANGED
|
@@ -746,9 +746,6 @@ export default {
|
|
|
746
746
|
'Press Ctrl+D again to exit.': 'Ctrl+D をもう一度押すと終了します',
|
|
747
747
|
'Press Esc again to clear.': 'Esc をもう一度押すとクリアします',
|
|
748
748
|
// MCP Status
|
|
749
|
-
'Please view MCP documentation in your browser:':
|
|
750
|
-
'ブラウザでMCPドキュメントを確認してください:',
|
|
751
|
-
'or use the cli /docs command': 'または CLI の /docs コマンドを使用',
|
|
752
749
|
'⏳ MCP servers are starting up ({{count}} initializing)...':
|
|
753
750
|
'⏳ MCPサーバーを起動中({{count}} 初期化中)...',
|
|
754
751
|
'Note: First startup may take longer. Tool availability will update automatically.':
|
package/locales/pt.js
CHANGED
|
@@ -1065,9 +1065,6 @@ export default {
|
|
|
1065
1065
|
// MCP Status
|
|
1066
1066
|
// ============================================================================
|
|
1067
1067
|
'No MCP servers configured.': 'Nenhum servidor MCP configurado.',
|
|
1068
|
-
'Please view MCP documentation in your browser:':
|
|
1069
|
-
'Veja a documentação do MCP no seu navegador:',
|
|
1070
|
-
'or use the cli /docs command': 'ou use o comando cli /docs',
|
|
1071
1068
|
'⏳ MCP servers are starting up ({{count}} initializing)...':
|
|
1072
1069
|
'⏳ Servidores MCP estão iniciando ({{count}} inicializando)...',
|
|
1073
1070
|
'Note: First startup may take longer. Tool availability will update automatically.':
|
package/locales/ru.js
CHANGED
|
@@ -1057,9 +1057,6 @@ export default {
|
|
|
1057
1057
|
// Статус MCP
|
|
1058
1058
|
// ============================================================================
|
|
1059
1059
|
'No MCP servers configured.': 'Не настроено MCP-серверов.',
|
|
1060
|
-
'Please view MCP documentation in your browser:':
|
|
1061
|
-
'Пожалуйста, просмотрите документацию MCP в браузере:',
|
|
1062
|
-
'or use the cli /docs command': 'или используйте команду cli /docs',
|
|
1063
1060
|
'⏳ MCP servers are starting up ({{count}} initializing)...':
|
|
1064
1061
|
'⏳ MCP-серверы запускаются ({{count}} инициализируется)...',
|
|
1065
1062
|
'Note: First startup may take longer. Tool availability will update automatically.':
|
package/locales/zh.js
CHANGED
|
@@ -985,9 +985,6 @@ export default {
|
|
|
985
985
|
// MCP Status
|
|
986
986
|
// ============================================================================
|
|
987
987
|
'No MCP servers configured.': '未配置 MCP 服务器',
|
|
988
|
-
'Please view MCP documentation in your browser:':
|
|
989
|
-
'请在浏览器中查看 MCP 文档:',
|
|
990
|
-
'or use the cli /docs command': '或使用 cli /docs 命令',
|
|
991
988
|
'⏳ MCP servers are starting up ({{count}} initializing)...':
|
|
992
989
|
'⏳ MCP 服务器正在启动({{count}} 个正在初始化)...',
|
|
993
990
|
'Note: First startup may take longer. Tool availability will update automatically.':
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qwen-code/qwen-code",
|
|
3
|
-
"version": "0.10.0-preview.
|
|
3
|
+
"version": "0.10.0-preview.3",
|
|
4
4
|
"description": "Qwen Code - AI-powered coding assistant",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"locales"
|
|
21
21
|
],
|
|
22
22
|
"config": {
|
|
23
|
-
"sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.10.0-preview.
|
|
23
|
+
"sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.10.0-preview.3"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {},
|
|
26
26
|
"optionalDependencies": {
|