@mmmbuto/qwen-code-termux 0.6.1-termux → 0.6.3-termux
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 +62 -124
- package/dist/cli.js +1529 -263
- package/dist/tiktoken_bg.wasm +0 -0
- package/package.json +26 -17
- package/scripts/postinstall.cjs +0 -13
package/dist/cli.js
CHANGED
|
@@ -5758,7 +5758,7 @@ var require_client_h1 = __commonJS({
|
|
|
5758
5758
|
kResume,
|
|
5759
5759
|
kHTTPContext
|
|
5760
5760
|
} = require_symbols();
|
|
5761
|
-
var
|
|
5761
|
+
var constants5 = require_constants2();
|
|
5762
5762
|
var EMPTY_BUF = Buffer.alloc(0);
|
|
5763
5763
|
var FastBuffer = Buffer[Symbol.species];
|
|
5764
5764
|
var addListener = util4.addListener;
|
|
@@ -5834,7 +5834,7 @@ var require_client_h1 = __commonJS({
|
|
|
5834
5834
|
constructor(client, socket, { exports: exports3 }) {
|
|
5835
5835
|
assert4(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0);
|
|
5836
5836
|
this.llhttp = exports3;
|
|
5837
|
-
this.ptr = this.llhttp.llhttp_alloc(
|
|
5837
|
+
this.ptr = this.llhttp.llhttp_alloc(constants5.TYPE.RESPONSE);
|
|
5838
5838
|
this.client = client;
|
|
5839
5839
|
this.socket = socket;
|
|
5840
5840
|
this.timeout = null;
|
|
@@ -5929,19 +5929,19 @@ var require_client_h1 = __commonJS({
|
|
|
5929
5929
|
currentBufferRef = null;
|
|
5930
5930
|
}
|
|
5931
5931
|
const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr;
|
|
5932
|
-
if (ret ===
|
|
5932
|
+
if (ret === constants5.ERROR.PAUSED_UPGRADE) {
|
|
5933
5933
|
this.onUpgrade(data.slice(offset));
|
|
5934
|
-
} else if (ret ===
|
|
5934
|
+
} else if (ret === constants5.ERROR.PAUSED) {
|
|
5935
5935
|
this.paused = true;
|
|
5936
5936
|
socket.unshift(data.slice(offset));
|
|
5937
|
-
} else if (ret !==
|
|
5937
|
+
} else if (ret !== constants5.ERROR.OK) {
|
|
5938
5938
|
const ptr = llhttp.llhttp_get_error_reason(this.ptr);
|
|
5939
5939
|
let message = "";
|
|
5940
5940
|
if (ptr) {
|
|
5941
5941
|
const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
|
|
5942
5942
|
message = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
|
|
5943
5943
|
}
|
|
5944
|
-
throw new HTTPParserError(message,
|
|
5944
|
+
throw new HTTPParserError(message, constants5.ERROR[ret], data.slice(offset));
|
|
5945
5945
|
}
|
|
5946
5946
|
} catch (err) {
|
|
5947
5947
|
util4.destroy(socket, err);
|
|
@@ -6116,7 +6116,7 @@ var require_client_h1 = __commonJS({
|
|
|
6116
6116
|
socket[kBlocking] = false;
|
|
6117
6117
|
client[kResume]();
|
|
6118
6118
|
}
|
|
6119
|
-
return pause ?
|
|
6119
|
+
return pause ? constants5.ERROR.PAUSED : 0;
|
|
6120
6120
|
}
|
|
6121
6121
|
onBody(buf) {
|
|
6122
6122
|
const { client, socket, statusCode, maxResponseSize } = this;
|
|
@@ -6138,7 +6138,7 @@ var require_client_h1 = __commonJS({
|
|
|
6138
6138
|
}
|
|
6139
6139
|
this.bytesRead += buf.length;
|
|
6140
6140
|
if (request4.onData(buf) === false) {
|
|
6141
|
-
return
|
|
6141
|
+
return constants5.ERROR.PAUSED;
|
|
6142
6142
|
}
|
|
6143
6143
|
}
|
|
6144
6144
|
onMessageComplete() {
|
|
@@ -6173,13 +6173,13 @@ var require_client_h1 = __commonJS({
|
|
|
6173
6173
|
if (socket[kWriting]) {
|
|
6174
6174
|
assert4(client[kRunning] === 0);
|
|
6175
6175
|
util4.destroy(socket, new InformationalError("reset"));
|
|
6176
|
-
return
|
|
6176
|
+
return constants5.ERROR.PAUSED;
|
|
6177
6177
|
} else if (!shouldKeepAlive) {
|
|
6178
6178
|
util4.destroy(socket, new InformationalError("reset"));
|
|
6179
|
-
return
|
|
6179
|
+
return constants5.ERROR.PAUSED;
|
|
6180
6180
|
} else if (socket[kReset2] && client[kRunning] === 0) {
|
|
6181
6181
|
util4.destroy(socket, new InformationalError("reset"));
|
|
6182
|
-
return
|
|
6182
|
+
return constants5.ERROR.PAUSED;
|
|
6183
6183
|
} else if (client[kPipelining] == null || client[kPipelining] === 1) {
|
|
6184
6184
|
setImmediate(() => client[kResume]());
|
|
6185
6185
|
} else {
|
|
@@ -58108,11 +58108,11 @@ var require_codegen = __commonJS({
|
|
|
58108
58108
|
const rhs = this.rhs === void 0 ? "" : ` = ${this.rhs}`;
|
|
58109
58109
|
return `${varKind} ${this.name}${rhs};` + _n;
|
|
58110
58110
|
}
|
|
58111
|
-
optimizeNames(names,
|
|
58111
|
+
optimizeNames(names, constants5) {
|
|
58112
58112
|
if (!names[this.name.str])
|
|
58113
58113
|
return;
|
|
58114
58114
|
if (this.rhs)
|
|
58115
|
-
this.rhs = optimizeExpr(this.rhs, names,
|
|
58115
|
+
this.rhs = optimizeExpr(this.rhs, names, constants5);
|
|
58116
58116
|
return this;
|
|
58117
58117
|
}
|
|
58118
58118
|
get names() {
|
|
@@ -58132,10 +58132,10 @@ var require_codegen = __commonJS({
|
|
|
58132
58132
|
render({ _n }) {
|
|
58133
58133
|
return `${this.lhs} = ${this.rhs};` + _n;
|
|
58134
58134
|
}
|
|
58135
|
-
optimizeNames(names,
|
|
58135
|
+
optimizeNames(names, constants5) {
|
|
58136
58136
|
if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects)
|
|
58137
58137
|
return;
|
|
58138
|
-
this.rhs = optimizeExpr(this.rhs, names,
|
|
58138
|
+
this.rhs = optimizeExpr(this.rhs, names, constants5);
|
|
58139
58139
|
return this;
|
|
58140
58140
|
}
|
|
58141
58141
|
get names() {
|
|
@@ -58211,8 +58211,8 @@ var require_codegen = __commonJS({
|
|
|
58211
58211
|
optimizeNodes() {
|
|
58212
58212
|
return `${this.code}` ? this : void 0;
|
|
58213
58213
|
}
|
|
58214
|
-
optimizeNames(names,
|
|
58215
|
-
this.code = optimizeExpr(this.code, names,
|
|
58214
|
+
optimizeNames(names, constants5) {
|
|
58215
|
+
this.code = optimizeExpr(this.code, names, constants5);
|
|
58216
58216
|
return this;
|
|
58217
58217
|
}
|
|
58218
58218
|
get names() {
|
|
@@ -58244,12 +58244,12 @@ var require_codegen = __commonJS({
|
|
|
58244
58244
|
}
|
|
58245
58245
|
return nodes.length > 0 ? this : void 0;
|
|
58246
58246
|
}
|
|
58247
|
-
optimizeNames(names,
|
|
58247
|
+
optimizeNames(names, constants5) {
|
|
58248
58248
|
const { nodes } = this;
|
|
58249
58249
|
let i3 = nodes.length;
|
|
58250
58250
|
while (i3--) {
|
|
58251
58251
|
const n3 = nodes[i3];
|
|
58252
|
-
if (n3.optimizeNames(names,
|
|
58252
|
+
if (n3.optimizeNames(names, constants5))
|
|
58253
58253
|
continue;
|
|
58254
58254
|
subtractNames(names, n3.names);
|
|
58255
58255
|
nodes.splice(i3, 1);
|
|
@@ -58314,12 +58314,12 @@ var require_codegen = __commonJS({
|
|
|
58314
58314
|
return void 0;
|
|
58315
58315
|
return this;
|
|
58316
58316
|
}
|
|
58317
|
-
optimizeNames(names,
|
|
58317
|
+
optimizeNames(names, constants5) {
|
|
58318
58318
|
var _a7;
|
|
58319
|
-
this.else = (_a7 = this.else) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names,
|
|
58320
|
-
if (!(super.optimizeNames(names,
|
|
58319
|
+
this.else = (_a7 = this.else) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names, constants5);
|
|
58320
|
+
if (!(super.optimizeNames(names, constants5) || this.else))
|
|
58321
58321
|
return;
|
|
58322
|
-
this.condition = optimizeExpr(this.condition, names,
|
|
58322
|
+
this.condition = optimizeExpr(this.condition, names, constants5);
|
|
58323
58323
|
return this;
|
|
58324
58324
|
}
|
|
58325
58325
|
get names() {
|
|
@@ -58348,10 +58348,10 @@ var require_codegen = __commonJS({
|
|
|
58348
58348
|
render(opts) {
|
|
58349
58349
|
return `for(${this.iteration})` + super.render(opts);
|
|
58350
58350
|
}
|
|
58351
|
-
optimizeNames(names,
|
|
58352
|
-
if (!super.optimizeNames(names,
|
|
58351
|
+
optimizeNames(names, constants5) {
|
|
58352
|
+
if (!super.optimizeNames(names, constants5))
|
|
58353
58353
|
return;
|
|
58354
|
-
this.iteration = optimizeExpr(this.iteration, names,
|
|
58354
|
+
this.iteration = optimizeExpr(this.iteration, names, constants5);
|
|
58355
58355
|
return this;
|
|
58356
58356
|
}
|
|
58357
58357
|
get names() {
|
|
@@ -58393,10 +58393,10 @@ var require_codegen = __commonJS({
|
|
|
58393
58393
|
render(opts) {
|
|
58394
58394
|
return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts);
|
|
58395
58395
|
}
|
|
58396
|
-
optimizeNames(names,
|
|
58397
|
-
if (!super.optimizeNames(names,
|
|
58396
|
+
optimizeNames(names, constants5) {
|
|
58397
|
+
if (!super.optimizeNames(names, constants5))
|
|
58398
58398
|
return;
|
|
58399
|
-
this.iterable = optimizeExpr(this.iterable, names,
|
|
58399
|
+
this.iterable = optimizeExpr(this.iterable, names, constants5);
|
|
58400
58400
|
return this;
|
|
58401
58401
|
}
|
|
58402
58402
|
get names() {
|
|
@@ -58447,11 +58447,11 @@ var require_codegen = __commonJS({
|
|
|
58447
58447
|
(_b2 = this.finally) === null || _b2 === void 0 ? void 0 : _b2.optimizeNodes();
|
|
58448
58448
|
return this;
|
|
58449
58449
|
}
|
|
58450
|
-
optimizeNames(names,
|
|
58450
|
+
optimizeNames(names, constants5) {
|
|
58451
58451
|
var _a7, _b2;
|
|
58452
|
-
super.optimizeNames(names,
|
|
58453
|
-
(_a7 = this.catch) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names,
|
|
58454
|
-
(_b2 = this.finally) === null || _b2 === void 0 ? void 0 : _b2.optimizeNames(names,
|
|
58452
|
+
super.optimizeNames(names, constants5);
|
|
58453
|
+
(_a7 = this.catch) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names, constants5);
|
|
58454
|
+
(_b2 = this.finally) === null || _b2 === void 0 ? void 0 : _b2.optimizeNames(names, constants5);
|
|
58455
58455
|
return this;
|
|
58456
58456
|
}
|
|
58457
58457
|
get names() {
|
|
@@ -58763,7 +58763,7 @@ var require_codegen = __commonJS({
|
|
|
58763
58763
|
return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names;
|
|
58764
58764
|
}
|
|
58765
58765
|
__name(addExprNames, "addExprNames");
|
|
58766
|
-
function optimizeExpr(expr, names,
|
|
58766
|
+
function optimizeExpr(expr, names, constants5) {
|
|
58767
58767
|
if (expr instanceof code_1.Name)
|
|
58768
58768
|
return replaceName(expr);
|
|
58769
58769
|
if (!canOptimize(expr))
|
|
@@ -58778,7 +58778,7 @@ var require_codegen = __commonJS({
|
|
|
58778
58778
|
return items;
|
|
58779
58779
|
}, []));
|
|
58780
58780
|
function replaceName(n3) {
|
|
58781
|
-
const c4 =
|
|
58781
|
+
const c4 = constants5[n3.str];
|
|
58782
58782
|
if (c4 === void 0 || names[n3.str] !== 1)
|
|
58783
58783
|
return n3;
|
|
58784
58784
|
delete names[n3.str];
|
|
@@ -58786,7 +58786,7 @@ var require_codegen = __commonJS({
|
|
|
58786
58786
|
}
|
|
58787
58787
|
__name(replaceName, "replaceName");
|
|
58788
58788
|
function canOptimize(e4) {
|
|
58789
|
-
return e4 instanceof code_1._Code && e4._items.some((c4) => c4 instanceof code_1.Name && names[c4.str] === 1 &&
|
|
58789
|
+
return e4 instanceof code_1._Code && e4._items.some((c4) => c4 instanceof code_1.Name && names[c4.str] === 1 && constants5[c4.str] !== void 0);
|
|
58790
58790
|
}
|
|
58791
58791
|
__name(canOptimize, "canOptimize");
|
|
58792
58792
|
}
|
|
@@ -65154,11 +65154,11 @@ var require_codegen2 = __commonJS({
|
|
|
65154
65154
|
const rhs = this.rhs === void 0 ? "" : ` = ${this.rhs}`;
|
|
65155
65155
|
return `${varKind} ${this.name}${rhs};` + _n;
|
|
65156
65156
|
}
|
|
65157
|
-
optimizeNames(names,
|
|
65157
|
+
optimizeNames(names, constants5) {
|
|
65158
65158
|
if (!names[this.name.str])
|
|
65159
65159
|
return;
|
|
65160
65160
|
if (this.rhs)
|
|
65161
|
-
this.rhs = optimizeExpr(this.rhs, names,
|
|
65161
|
+
this.rhs = optimizeExpr(this.rhs, names, constants5);
|
|
65162
65162
|
return this;
|
|
65163
65163
|
}
|
|
65164
65164
|
get names() {
|
|
@@ -65178,10 +65178,10 @@ var require_codegen2 = __commonJS({
|
|
|
65178
65178
|
render({ _n }) {
|
|
65179
65179
|
return `${this.lhs} = ${this.rhs};` + _n;
|
|
65180
65180
|
}
|
|
65181
|
-
optimizeNames(names,
|
|
65181
|
+
optimizeNames(names, constants5) {
|
|
65182
65182
|
if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects)
|
|
65183
65183
|
return;
|
|
65184
|
-
this.rhs = optimizeExpr(this.rhs, names,
|
|
65184
|
+
this.rhs = optimizeExpr(this.rhs, names, constants5);
|
|
65185
65185
|
return this;
|
|
65186
65186
|
}
|
|
65187
65187
|
get names() {
|
|
@@ -65257,8 +65257,8 @@ var require_codegen2 = __commonJS({
|
|
|
65257
65257
|
optimizeNodes() {
|
|
65258
65258
|
return `${this.code}` ? this : void 0;
|
|
65259
65259
|
}
|
|
65260
|
-
optimizeNames(names,
|
|
65261
|
-
this.code = optimizeExpr(this.code, names,
|
|
65260
|
+
optimizeNames(names, constants5) {
|
|
65261
|
+
this.code = optimizeExpr(this.code, names, constants5);
|
|
65262
65262
|
return this;
|
|
65263
65263
|
}
|
|
65264
65264
|
get names() {
|
|
@@ -65290,12 +65290,12 @@ var require_codegen2 = __commonJS({
|
|
|
65290
65290
|
}
|
|
65291
65291
|
return nodes.length > 0 ? this : void 0;
|
|
65292
65292
|
}
|
|
65293
|
-
optimizeNames(names,
|
|
65293
|
+
optimizeNames(names, constants5) {
|
|
65294
65294
|
const { nodes } = this;
|
|
65295
65295
|
let i3 = nodes.length;
|
|
65296
65296
|
while (i3--) {
|
|
65297
65297
|
const n3 = nodes[i3];
|
|
65298
|
-
if (n3.optimizeNames(names,
|
|
65298
|
+
if (n3.optimizeNames(names, constants5))
|
|
65299
65299
|
continue;
|
|
65300
65300
|
subtractNames(names, n3.names);
|
|
65301
65301
|
nodes.splice(i3, 1);
|
|
@@ -65360,12 +65360,12 @@ var require_codegen2 = __commonJS({
|
|
|
65360
65360
|
return void 0;
|
|
65361
65361
|
return this;
|
|
65362
65362
|
}
|
|
65363
|
-
optimizeNames(names,
|
|
65363
|
+
optimizeNames(names, constants5) {
|
|
65364
65364
|
var _a7;
|
|
65365
|
-
this.else = (_a7 = this.else) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names,
|
|
65366
|
-
if (!(super.optimizeNames(names,
|
|
65365
|
+
this.else = (_a7 = this.else) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names, constants5);
|
|
65366
|
+
if (!(super.optimizeNames(names, constants5) || this.else))
|
|
65367
65367
|
return;
|
|
65368
|
-
this.condition = optimizeExpr(this.condition, names,
|
|
65368
|
+
this.condition = optimizeExpr(this.condition, names, constants5);
|
|
65369
65369
|
return this;
|
|
65370
65370
|
}
|
|
65371
65371
|
get names() {
|
|
@@ -65394,10 +65394,10 @@ var require_codegen2 = __commonJS({
|
|
|
65394
65394
|
render(opts) {
|
|
65395
65395
|
return `for(${this.iteration})` + super.render(opts);
|
|
65396
65396
|
}
|
|
65397
|
-
optimizeNames(names,
|
|
65398
|
-
if (!super.optimizeNames(names,
|
|
65397
|
+
optimizeNames(names, constants5) {
|
|
65398
|
+
if (!super.optimizeNames(names, constants5))
|
|
65399
65399
|
return;
|
|
65400
|
-
this.iteration = optimizeExpr(this.iteration, names,
|
|
65400
|
+
this.iteration = optimizeExpr(this.iteration, names, constants5);
|
|
65401
65401
|
return this;
|
|
65402
65402
|
}
|
|
65403
65403
|
get names() {
|
|
@@ -65439,10 +65439,10 @@ var require_codegen2 = __commonJS({
|
|
|
65439
65439
|
render(opts) {
|
|
65440
65440
|
return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts);
|
|
65441
65441
|
}
|
|
65442
|
-
optimizeNames(names,
|
|
65443
|
-
if (!super.optimizeNames(names,
|
|
65442
|
+
optimizeNames(names, constants5) {
|
|
65443
|
+
if (!super.optimizeNames(names, constants5))
|
|
65444
65444
|
return;
|
|
65445
|
-
this.iterable = optimizeExpr(this.iterable, names,
|
|
65445
|
+
this.iterable = optimizeExpr(this.iterable, names, constants5);
|
|
65446
65446
|
return this;
|
|
65447
65447
|
}
|
|
65448
65448
|
get names() {
|
|
@@ -65493,11 +65493,11 @@ var require_codegen2 = __commonJS({
|
|
|
65493
65493
|
(_b2 = this.finally) === null || _b2 === void 0 ? void 0 : _b2.optimizeNodes();
|
|
65494
65494
|
return this;
|
|
65495
65495
|
}
|
|
65496
|
-
optimizeNames(names,
|
|
65496
|
+
optimizeNames(names, constants5) {
|
|
65497
65497
|
var _a7, _b2;
|
|
65498
|
-
super.optimizeNames(names,
|
|
65499
|
-
(_a7 = this.catch) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names,
|
|
65500
|
-
(_b2 = this.finally) === null || _b2 === void 0 ? void 0 : _b2.optimizeNames(names,
|
|
65498
|
+
super.optimizeNames(names, constants5);
|
|
65499
|
+
(_a7 = this.catch) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names, constants5);
|
|
65500
|
+
(_b2 = this.finally) === null || _b2 === void 0 ? void 0 : _b2.optimizeNames(names, constants5);
|
|
65501
65501
|
return this;
|
|
65502
65502
|
}
|
|
65503
65503
|
get names() {
|
|
@@ -65809,7 +65809,7 @@ var require_codegen2 = __commonJS({
|
|
|
65809
65809
|
return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names;
|
|
65810
65810
|
}
|
|
65811
65811
|
__name(addExprNames, "addExprNames");
|
|
65812
|
-
function optimizeExpr(expr, names,
|
|
65812
|
+
function optimizeExpr(expr, names, constants5) {
|
|
65813
65813
|
if (expr instanceof code_1.Name)
|
|
65814
65814
|
return replaceName(expr);
|
|
65815
65815
|
if (!canOptimize(expr))
|
|
@@ -65824,7 +65824,7 @@ var require_codegen2 = __commonJS({
|
|
|
65824
65824
|
return items;
|
|
65825
65825
|
}, []));
|
|
65826
65826
|
function replaceName(n3) {
|
|
65827
|
-
const c4 =
|
|
65827
|
+
const c4 = constants5[n3.str];
|
|
65828
65828
|
if (c4 === void 0 || names[n3.str] !== 1)
|
|
65829
65829
|
return n3;
|
|
65830
65830
|
delete names[n3.str];
|
|
@@ -65832,7 +65832,7 @@ var require_codegen2 = __commonJS({
|
|
|
65832
65832
|
}
|
|
65833
65833
|
__name(replaceName, "replaceName");
|
|
65834
65834
|
function canOptimize(e4) {
|
|
65835
|
-
return e4 instanceof code_1._Code && e4._items.some((c4) => c4 instanceof code_1.Name && names[c4.str] === 1 &&
|
|
65835
|
+
return e4 instanceof code_1._Code && e4._items.some((c4) => c4 instanceof code_1.Name && names[c4.str] === 1 && constants5[c4.str] !== void 0);
|
|
65836
65836
|
}
|
|
65837
65837
|
__name(canOptimize, "canOptimize");
|
|
65838
65838
|
}
|
|
@@ -70952,16 +70952,21 @@ var require_dist3 = __commonJS({
|
|
|
70952
70952
|
});
|
|
70953
70953
|
|
|
70954
70954
|
// packages/core/dist/src/utils/schemaValidator.js
|
|
70955
|
-
function
|
|
70955
|
+
function fixBooleanValues(data) {
|
|
70956
70956
|
for (const key of Object.keys(data)) {
|
|
70957
70957
|
if (!(key in data))
|
|
70958
70958
|
continue;
|
|
70959
|
-
|
|
70960
|
-
|
|
70961
|
-
|
|
70962
|
-
|
|
70963
|
-
|
|
70964
|
-
|
|
70959
|
+
const value = data[key];
|
|
70960
|
+
if (typeof value === "object" && value !== null) {
|
|
70961
|
+
fixBooleanValues(value);
|
|
70962
|
+
} else if (typeof value === "string") {
|
|
70963
|
+
const lower3 = value.toLowerCase();
|
|
70964
|
+
if (lower3 === "true") {
|
|
70965
|
+
data[key] = true;
|
|
70966
|
+
} else if (lower3 === "false") {
|
|
70967
|
+
data[key] = false;
|
|
70968
|
+
}
|
|
70969
|
+
}
|
|
70965
70970
|
}
|
|
70966
70971
|
}
|
|
70967
70972
|
var import_ajv, addFormats, AjvClass, ajValidator, addFormatsFunc, SchemaValidator;
|
|
@@ -71002,19 +71007,18 @@ var init_schemaValidator = __esm({
|
|
|
71002
71007
|
return "Value of params must be an object";
|
|
71003
71008
|
}
|
|
71004
71009
|
const validate3 = ajValidator.compile(schema);
|
|
71005
|
-
|
|
71010
|
+
let valid = validate3(data);
|
|
71006
71011
|
if (!valid && validate3.errors) {
|
|
71007
|
-
|
|
71008
|
-
|
|
71009
|
-
|
|
71010
|
-
|
|
71011
|
-
return ajValidator.errorsText(validate4.errors, { dataVar: "params" });
|
|
71012
|
+
fixBooleanValues(data);
|
|
71013
|
+
valid = validate3(data);
|
|
71014
|
+
if (!valid && validate3.errors) {
|
|
71015
|
+
return ajValidator.errorsText(validate3.errors, { dataVar: "params" });
|
|
71012
71016
|
}
|
|
71013
71017
|
}
|
|
71014
71018
|
return null;
|
|
71015
71019
|
}
|
|
71016
71020
|
};
|
|
71017
|
-
__name(
|
|
71021
|
+
__name(fixBooleanValues, "fixBooleanValues");
|
|
71018
71022
|
}
|
|
71019
71023
|
});
|
|
71020
71024
|
|
|
@@ -131340,6 +131344,7 @@ var init_converter = __esm({
|
|
|
131340
131344
|
const totalTokens = usage2.total_tokens || 0;
|
|
131341
131345
|
const extendedUsage = usage2;
|
|
131342
131346
|
const cachedTokens = usage2.prompt_tokens_details?.cached_tokens ?? extendedUsage.cached_tokens ?? 0;
|
|
131347
|
+
const thinkingTokens = usage2.completion_tokens_details?.reasoning_tokens || 0;
|
|
131343
131348
|
let finalPromptTokens = promptTokens;
|
|
131344
131349
|
let finalCompletionTokens = completionTokens;
|
|
131345
131350
|
if (totalTokens > 0 && promptTokens === 0 && completionTokens === 0) {
|
|
@@ -131350,7 +131355,8 @@ var init_converter = __esm({
|
|
|
131350
131355
|
promptTokenCount: finalPromptTokens,
|
|
131351
131356
|
candidatesTokenCount: finalCompletionTokens,
|
|
131352
131357
|
totalTokenCount: totalTokens,
|
|
131353
|
-
cachedContentTokenCount: cachedTokens
|
|
131358
|
+
cachedContentTokenCount: cachedTokens,
|
|
131359
|
+
thoughtsTokenCount: thinkingTokens
|
|
131354
131360
|
};
|
|
131355
131361
|
}
|
|
131356
131362
|
return response;
|
|
@@ -131561,10 +131567,23 @@ var init_converter = __esm({
|
|
|
131561
131567
|
if (message.role === "assistant" && merged.length > 0) {
|
|
131562
131568
|
const lastMessage = merged[merged.length - 1];
|
|
131563
131569
|
if (lastMessage.role === "assistant") {
|
|
131564
|
-
const
|
|
131565
|
-
|
|
131566
|
-
|
|
131567
|
-
|
|
131570
|
+
const lastContent = lastMessage.content;
|
|
131571
|
+
const currentContent = message.content;
|
|
131572
|
+
const useArrayFormat = Array.isArray(lastContent) || Array.isArray(currentContent);
|
|
131573
|
+
let combinedContent;
|
|
131574
|
+
if (useArrayFormat) {
|
|
131575
|
+
const lastParts = Array.isArray(lastContent) ? lastContent : typeof lastContent === "string" && lastContent ? [{ type: "text", text: lastContent }] : [];
|
|
131576
|
+
const currentParts = Array.isArray(currentContent) ? currentContent : typeof currentContent === "string" && currentContent ? [{ type: "text", text: currentContent }] : [];
|
|
131577
|
+
combinedContent = [
|
|
131578
|
+
...lastParts,
|
|
131579
|
+
...currentParts
|
|
131580
|
+
];
|
|
131581
|
+
} else {
|
|
131582
|
+
const lastText = typeof lastContent === "string" ? lastContent : "";
|
|
131583
|
+
const currentText = typeof currentContent === "string" ? currentContent : "";
|
|
131584
|
+
const mergedText = [lastText, currentText].filter(Boolean).join("");
|
|
131585
|
+
combinedContent = mergedText || null;
|
|
131586
|
+
}
|
|
131568
131587
|
const lastToolCalls = "tool_calls" in lastMessage ? lastMessage.tool_calls || [] : [];
|
|
131569
131588
|
const currentToolCalls = "tool_calls" in message ? message.tool_calls || [] : [];
|
|
131570
131589
|
const combinedToolCalls = [...lastToolCalls, ...currentToolCalls];
|
|
@@ -139660,9 +139679,7 @@ var init_default = __esm({
|
|
|
139660
139679
|
};
|
|
139661
139680
|
}
|
|
139662
139681
|
getDefaultGenerationConfig() {
|
|
139663
|
-
return {
|
|
139664
|
-
topP: 0.95
|
|
139665
|
-
};
|
|
139682
|
+
return {};
|
|
139666
139683
|
}
|
|
139667
139684
|
};
|
|
139668
139685
|
}
|
|
@@ -140382,13 +140399,7 @@ var init_pipeline = __esm({
|
|
|
140382
140399
|
return params;
|
|
140383
140400
|
}
|
|
140384
140401
|
buildReasoningConfig() {
|
|
140385
|
-
|
|
140386
|
-
if (reasoning === false) {
|
|
140387
|
-
return {};
|
|
140388
|
-
}
|
|
140389
|
-
return {
|
|
140390
|
-
reasoning_effort: reasoning?.effort ?? "medium"
|
|
140391
|
-
};
|
|
140402
|
+
return {};
|
|
140392
140403
|
}
|
|
140393
140404
|
/**
|
|
140394
140405
|
* Common error handling wrapper for execute methods
|
|
@@ -142950,10 +142961,111 @@ __export(qwenOAuth2_exports, {
|
|
|
142950
142961
|
});
|
|
142951
142962
|
import crypto5 from "crypto";
|
|
142952
142963
|
import path9 from "node:path";
|
|
142953
|
-
import { promises as fs13 } from "node:fs";
|
|
142964
|
+
import { promises as fs13, accessSync, constants } from "node:fs";
|
|
142954
142965
|
import * as os7 from "os";
|
|
142966
|
+
import { execFileSync as execFileSync2 } from "node:child_process";
|
|
142955
142967
|
import { EventEmitter as EventEmitter2 } from "events";
|
|
142956
142968
|
import { randomUUID as randomUUID3 } from "node:crypto";
|
|
142969
|
+
function isTermux() {
|
|
142970
|
+
return process.platform === "android" || process.env["PREFIX"]?.includes("com.termux") || process.env["TERMUX_VERSION"] !== void 0;
|
|
142971
|
+
}
|
|
142972
|
+
function ensureSystemBinInPath(pathValue) {
|
|
142973
|
+
if (!pathValue)
|
|
142974
|
+
return pathValue;
|
|
142975
|
+
if (pathValue.includes("/system/bin"))
|
|
142976
|
+
return pathValue;
|
|
142977
|
+
return `${pathValue}:/system/bin`;
|
|
142978
|
+
}
|
|
142979
|
+
function resolveAndroidCommand(candidates) {
|
|
142980
|
+
for (const candidate of candidates) {
|
|
142981
|
+
try {
|
|
142982
|
+
accessSync(candidate, constants.X_OK);
|
|
142983
|
+
return candidate;
|
|
142984
|
+
} catch {
|
|
142985
|
+
}
|
|
142986
|
+
}
|
|
142987
|
+
return null;
|
|
142988
|
+
}
|
|
142989
|
+
function getAndroidUserId() {
|
|
142990
|
+
const candidates = ["cmd", "/system/bin/cmd"];
|
|
142991
|
+
const cmdPath = resolveAndroidCommand(candidates);
|
|
142992
|
+
if (!cmdPath)
|
|
142993
|
+
return void 0;
|
|
142994
|
+
try {
|
|
142995
|
+
const output = execFileSync2(cmdPath, ["activity", "get-current-user"], {
|
|
142996
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
142997
|
+
env: { ...process.env, PATH: ensureSystemBinInPath(process.env["PATH"]) }
|
|
142998
|
+
}).toString().trim();
|
|
142999
|
+
const match2 = output.match(/\d+/);
|
|
143000
|
+
return match2 ? match2[0] : void 0;
|
|
143001
|
+
} catch {
|
|
143002
|
+
return void 0;
|
|
143003
|
+
}
|
|
143004
|
+
}
|
|
143005
|
+
async function openBrowserUrl(url2) {
|
|
143006
|
+
if (isTermux()) {
|
|
143007
|
+
const possiblePaths = [
|
|
143008
|
+
"/data/data/com.termux/files/usr/bin/termux-open-url",
|
|
143009
|
+
"/usr/bin/termux-open-url",
|
|
143010
|
+
"termux-open-url"
|
|
143011
|
+
];
|
|
143012
|
+
let termuxOpenUrl = "termux-open-url";
|
|
143013
|
+
for (const candidate of possiblePaths) {
|
|
143014
|
+
try {
|
|
143015
|
+
accessSync(candidate, constants.X_OK);
|
|
143016
|
+
termuxOpenUrl = candidate;
|
|
143017
|
+
break;
|
|
143018
|
+
} catch {
|
|
143019
|
+
}
|
|
143020
|
+
}
|
|
143021
|
+
const resolvedUserId = getAndroidUserId();
|
|
143022
|
+
const termuxApp = process.env["TERMUX_OPEN_URL_APP"];
|
|
143023
|
+
const args = termuxApp ? [url2, termuxApp] : [url2];
|
|
143024
|
+
const env7 = {
|
|
143025
|
+
...process.env,
|
|
143026
|
+
PATH: ensureSystemBinInPath(process.env["PATH"]),
|
|
143027
|
+
...resolvedUserId ? { TERMUX__USER_ID: resolvedUserId } : {}
|
|
143028
|
+
};
|
|
143029
|
+
try {
|
|
143030
|
+
console.debug(`Opening URL with: ${termuxOpenUrl}`);
|
|
143031
|
+
execFileSync2(termuxOpenUrl, args, {
|
|
143032
|
+
stdio: "ignore",
|
|
143033
|
+
env: env7
|
|
143034
|
+
});
|
|
143035
|
+
return;
|
|
143036
|
+
} catch (error2) {
|
|
143037
|
+
const rawUserId = resolvedUserId ?? process.env["TERMUX__USER_ID"] ?? "0";
|
|
143038
|
+
const userId = /^\d+$/.test(rawUserId) ? rawUserId : "0";
|
|
143039
|
+
try {
|
|
143040
|
+
const amCandidates = [
|
|
143041
|
+
"/data/data/com.termux/files/usr/bin/am",
|
|
143042
|
+
"/system/bin/am",
|
|
143043
|
+
"am"
|
|
143044
|
+
];
|
|
143045
|
+
const amPath = resolveAndroidCommand(amCandidates) ?? "am";
|
|
143046
|
+
execFileSync2(amPath, [
|
|
143047
|
+
"start",
|
|
143048
|
+
"--user",
|
|
143049
|
+
userId,
|
|
143050
|
+
"-a",
|
|
143051
|
+
"android.intent.action.VIEW",
|
|
143052
|
+
"-d",
|
|
143053
|
+
url2
|
|
143054
|
+
], {
|
|
143055
|
+
stdio: "ignore",
|
|
143056
|
+
env: env7
|
|
143057
|
+
});
|
|
143058
|
+
return;
|
|
143059
|
+
} catch (amError) {
|
|
143060
|
+
console.error(`Failed to open URL with termux-open-url: ${error2 instanceof Error ? error2.message : String(error2)}`);
|
|
143061
|
+
console.error(`Fallback 'am start' failed: ${amError instanceof Error ? amError.message : String(amError)}`);
|
|
143062
|
+
throw error2;
|
|
143063
|
+
}
|
|
143064
|
+
}
|
|
143065
|
+
} else {
|
|
143066
|
+
await open_default(url2);
|
|
143067
|
+
}
|
|
143068
|
+
}
|
|
142957
143069
|
function generateCodeVerifier() {
|
|
142958
143070
|
return crypto5.randomBytes(32).toString("base64url");
|
|
142959
143071
|
}
|
|
@@ -143059,13 +143171,7 @@ ${deviceAuth.verification_uri_complete}
|
|
|
143059
143171
|
}, "showFallbackMessage");
|
|
143060
143172
|
if (!config2.isBrowserLaunchSuppressed()) {
|
|
143061
143173
|
try {
|
|
143062
|
-
|
|
143063
|
-
if (childProcess3) {
|
|
143064
|
-
childProcess3.on("error", () => {
|
|
143065
|
-
console.debug("Failed to open browser. Visit this URL to authorize:");
|
|
143066
|
-
showFallbackMessage();
|
|
143067
|
-
});
|
|
143068
|
-
}
|
|
143174
|
+
await openBrowserUrl(deviceAuth.verification_uri_complete);
|
|
143069
143175
|
} catch (_err) {
|
|
143070
143176
|
showFallbackMessage();
|
|
143071
143177
|
}
|
|
@@ -143237,6 +143343,11 @@ var init_qwenOAuth2 = __esm({
|
|
|
143237
143343
|
QWEN_OAUTH_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code";
|
|
143238
143344
|
QWEN_DIR3 = ".qwen";
|
|
143239
143345
|
QWEN_CREDENTIAL_FILENAME2 = "oauth_creds.json";
|
|
143346
|
+
__name(isTermux, "isTermux");
|
|
143347
|
+
__name(ensureSystemBinInPath, "ensureSystemBinInPath");
|
|
143348
|
+
__name(resolveAndroidCommand, "resolveAndroidCommand");
|
|
143349
|
+
__name(getAndroidUserId, "getAndroidUserId");
|
|
143350
|
+
__name(openBrowserUrl, "openBrowserUrl");
|
|
143240
143351
|
__name(generateCodeVerifier, "generateCodeVerifier");
|
|
143241
143352
|
__name(generateCodeChallenge, "generateCodeChallenge");
|
|
143242
143353
|
__name(generatePKCEPair, "generatePKCEPair");
|
|
@@ -154897,7 +155008,7 @@ __export(geminiContentGenerator_exports, {
|
|
|
154897
155008
|
createGeminiContentGenerator: () => createGeminiContentGenerator
|
|
154898
155009
|
});
|
|
154899
155010
|
function createGeminiContentGenerator(config2, gcConfig) {
|
|
154900
|
-
const version2 = "0.6.
|
|
155011
|
+
const version2 = "0.6.3-termux";
|
|
154901
155012
|
const userAgent2 = config2.userAgent || `QwenCode/${version2} (${process.platform}; ${process.arch})`;
|
|
154902
155013
|
const baseHeaders = {
|
|
154903
155014
|
"User-Agent": userAgent2
|
|
@@ -169747,10 +169858,10 @@ var init_terminalSerializer = __esm({
|
|
|
169747
169858
|
});
|
|
169748
169859
|
|
|
169749
169860
|
// packages/core/dist/src/services/shellExecutionService.js
|
|
169750
|
-
import { spawn as cpSpawn } from "node:child_process";
|
|
169861
|
+
import { spawn as cpSpawn, spawnSync as spawnSync2 } from "node:child_process";
|
|
169751
169862
|
import { TextDecoder as TextDecoder2 } from "node:util";
|
|
169752
169863
|
import os12 from "node:os";
|
|
169753
|
-
var import_headless, Terminal, SIGKILL_TIMEOUT_MS, getFullBufferText, ShellExecutionService;
|
|
169864
|
+
var import_headless, Terminal, SIGKILL_TIMEOUT_MS, getFullBufferText, windowsStrategy, posixStrategy, getCleanupStrategy, ShellExecutionService;
|
|
169754
169865
|
var init_shellExecutionService = __esm({
|
|
169755
169866
|
"packages/core/dist/src/services/shellExecutionService.js"() {
|
|
169756
169867
|
"use strict";
|
|
@@ -169773,11 +169884,58 @@ var init_shellExecutionService = __esm({
|
|
|
169773
169884
|
}
|
|
169774
169885
|
return lines.join("\n").trimEnd();
|
|
169775
169886
|
}, "getFullBufferText");
|
|
169776
|
-
|
|
169887
|
+
windowsStrategy = {
|
|
169888
|
+
killPty: /* @__PURE__ */ __name((_pid, pty) => {
|
|
169889
|
+
pty.ptyProcess.kill();
|
|
169890
|
+
}, "killPty"),
|
|
169891
|
+
killChildProcesses: /* @__PURE__ */ __name((pids) => {
|
|
169892
|
+
if (pids.size > 0) {
|
|
169893
|
+
try {
|
|
169894
|
+
const args = ["/f", "/t"];
|
|
169895
|
+
for (const pid of pids) {
|
|
169896
|
+
args.push("/pid", pid.toString());
|
|
169897
|
+
}
|
|
169898
|
+
spawnSync2("taskkill", args);
|
|
169899
|
+
} catch {
|
|
169900
|
+
}
|
|
169901
|
+
}
|
|
169902
|
+
}, "killChildProcesses")
|
|
169903
|
+
};
|
|
169904
|
+
posixStrategy = {
|
|
169905
|
+
killPty: /* @__PURE__ */ __name((pid, _pty) => {
|
|
169906
|
+
process.kill(-pid, "SIGKILL");
|
|
169907
|
+
}, "killPty"),
|
|
169908
|
+
killChildProcesses: /* @__PURE__ */ __name((pids) => {
|
|
169909
|
+
for (const pid of pids) {
|
|
169910
|
+
try {
|
|
169911
|
+
process.kill(-pid, "SIGKILL");
|
|
169912
|
+
} catch {
|
|
169913
|
+
}
|
|
169914
|
+
}
|
|
169915
|
+
}, "killChildProcesses")
|
|
169916
|
+
};
|
|
169917
|
+
getCleanupStrategy = /* @__PURE__ */ __name(() => os12.platform() === "win32" ? windowsStrategy : posixStrategy, "getCleanupStrategy");
|
|
169918
|
+
ShellExecutionService = class _ShellExecutionService {
|
|
169777
169919
|
static {
|
|
169778
169920
|
__name(this, "ShellExecutionService");
|
|
169779
169921
|
}
|
|
169780
169922
|
static activePtys = /* @__PURE__ */ new Map();
|
|
169923
|
+
static activeChildProcesses = /* @__PURE__ */ new Set();
|
|
169924
|
+
static cleanup() {
|
|
169925
|
+
const strategy = getCleanupStrategy();
|
|
169926
|
+
for (const [pid, pty] of this.activePtys) {
|
|
169927
|
+
try {
|
|
169928
|
+
strategy.killPty(pid, pty);
|
|
169929
|
+
} catch {
|
|
169930
|
+
}
|
|
169931
|
+
}
|
|
169932
|
+
strategy.killChildProcesses(this.activeChildProcesses);
|
|
169933
|
+
}
|
|
169934
|
+
static {
|
|
169935
|
+
process.on("exit", () => {
|
|
169936
|
+
_ShellExecutionService.cleanup();
|
|
169937
|
+
});
|
|
169938
|
+
}
|
|
169781
169939
|
/**
|
|
169782
169940
|
* Executes a shell command using `node-pty`, capturing all output and lifecycle events.
|
|
169783
169941
|
*
|
|
@@ -169808,7 +169966,7 @@ var init_shellExecutionService = __esm({
|
|
|
169808
169966
|
stdio: ["ignore", "pipe", "pipe"],
|
|
169809
169967
|
windowsVerbatimArguments: true,
|
|
169810
169968
|
shell: isWindows8 ? true : "bash",
|
|
169811
|
-
detached:
|
|
169969
|
+
detached: true,
|
|
169812
169970
|
env: {
|
|
169813
169971
|
...process.env,
|
|
169814
169972
|
QWEN_CODE: "1",
|
|
@@ -169904,9 +170062,12 @@ var init_shellExecutionService = __esm({
|
|
|
169904
170062
|
}
|
|
169905
170063
|
}, "abortHandler");
|
|
169906
170064
|
abortSignal.addEventListener("abort", abortHandler, { once: true });
|
|
170065
|
+
if (child.pid) {
|
|
170066
|
+
this.activeChildProcesses.add(child.pid);
|
|
170067
|
+
}
|
|
169907
170068
|
child.on("exit", (code2, signal) => {
|
|
169908
170069
|
if (child.pid) {
|
|
169909
|
-
this.
|
|
170070
|
+
this.activeChildProcesses.delete(child.pid);
|
|
169910
170071
|
}
|
|
169911
170072
|
handleExit(code2, signal);
|
|
169912
170073
|
});
|
|
@@ -169930,7 +170091,7 @@ var init_shellExecutionService = __esm({
|
|
|
169930
170091
|
}
|
|
169931
170092
|
__name(cleanup, "cleanup");
|
|
169932
170093
|
});
|
|
169933
|
-
return { pid:
|
|
170094
|
+
return { pid: child.pid, result };
|
|
169934
170095
|
} catch (e4) {
|
|
169935
170096
|
const error2 = e4;
|
|
169936
170097
|
return {
|
|
@@ -170746,8 +170907,8 @@ var init_shellReadOnlyChecker = __esm({
|
|
|
170746
170907
|
|
|
170747
170908
|
// packages/core/dist/src/utils/shell-utils.js
|
|
170748
170909
|
import os13 from "node:os";
|
|
170749
|
-
import { execFile as execFile6, execFileSync as
|
|
170750
|
-
import { accessSync, constants as fsConstants2 } from "node:fs";
|
|
170910
|
+
import { execFile as execFile6, execFileSync as execFileSync3 } from "node:child_process";
|
|
170911
|
+
import { accessSync as accessSync2, constants as fsConstants2 } from "node:fs";
|
|
170751
170912
|
function getShellConfiguration() {
|
|
170752
170913
|
if (isWindows()) {
|
|
170753
170914
|
const comSpec = process.env["ComSpec"] || "cmd.exe";
|
|
@@ -171003,7 +171164,7 @@ function resolveCommandPath(command2) {
|
|
|
171003
171164
|
const checkArgs = [command2];
|
|
171004
171165
|
let result = null;
|
|
171005
171166
|
try {
|
|
171006
|
-
result =
|
|
171167
|
+
result = execFileSync3(checkCommand, checkArgs, {
|
|
171007
171168
|
encoding: "utf8",
|
|
171008
171169
|
shell: false
|
|
171009
171170
|
}).trim();
|
|
@@ -171016,7 +171177,7 @@ function resolveCommandPath(command2) {
|
|
|
171016
171177
|
const checkArgs = ["-c", `command -v ${escapeShellArg(command2, "bash")}`];
|
|
171017
171178
|
let result = null;
|
|
171018
171179
|
try {
|
|
171019
|
-
result =
|
|
171180
|
+
result = execFileSync3(shell2, checkArgs, {
|
|
171020
171181
|
encoding: "utf8",
|
|
171021
171182
|
shell: false
|
|
171022
171183
|
}).trim();
|
|
@@ -171025,7 +171186,7 @@ function resolveCommandPath(command2) {
|
|
|
171025
171186
|
}
|
|
171026
171187
|
if (!result)
|
|
171027
171188
|
return { path: null, error: void 0 };
|
|
171028
|
-
|
|
171189
|
+
accessSync2(result, fsConstants2.X_OK);
|
|
171029
171190
|
return { path: result, error: void 0 };
|
|
171030
171191
|
}
|
|
171031
171192
|
} catch (error2) {
|
|
@@ -171209,9 +171370,12 @@ var init_shell = __esm({
|
|
|
171209
171370
|
const processedCommand = this.addCoAuthorToGitCommit(strippedCommand);
|
|
171210
171371
|
const shouldRunInBackground = this.params.is_background;
|
|
171211
171372
|
let finalCommand = processedCommand;
|
|
171212
|
-
if (shouldRunInBackground && !finalCommand.trim().endsWith("&")) {
|
|
171373
|
+
if (!isWindows8 && shouldRunInBackground && !finalCommand.trim().endsWith("&")) {
|
|
171213
171374
|
finalCommand = finalCommand.trim() + " &";
|
|
171214
171375
|
}
|
|
171376
|
+
if (isWindows8 && shouldRunInBackground) {
|
|
171377
|
+
finalCommand = finalCommand.trim().replace(/&+$/, "").trim();
|
|
171378
|
+
}
|
|
171215
171379
|
const commandToExecute = isWindows8 ? finalCommand : (() => {
|
|
171216
171380
|
let command2 = finalCommand.trim();
|
|
171217
171381
|
if (!command2.endsWith("&"))
|
|
@@ -171223,9 +171387,6 @@ var init_shell = __esm({
|
|
|
171223
171387
|
let lastUpdateTime = Date.now();
|
|
171224
171388
|
let isBinaryStream = false;
|
|
171225
171389
|
const { result: resultPromise, pid } = await ShellExecutionService.execute(commandToExecute, cwd7, (event) => {
|
|
171226
|
-
if (!updateOutput2) {
|
|
171227
|
-
return;
|
|
171228
|
-
}
|
|
171229
171390
|
let shouldUpdate = false;
|
|
171230
171391
|
switch (event.type) {
|
|
171231
171392
|
case "data":
|
|
@@ -171250,7 +171411,7 @@ var init_shell = __esm({
|
|
|
171250
171411
|
throw new Error("An unhandled ShellOutputEvent was found.");
|
|
171251
171412
|
}
|
|
171252
171413
|
}
|
|
171253
|
-
if (shouldUpdate) {
|
|
171414
|
+
if (shouldUpdate && updateOutput2) {
|
|
171254
171415
|
updateOutput2(typeof cumulativeOutput === "string" ? cumulativeOutput : { ansiOutput: cumulativeOutput });
|
|
171255
171416
|
lastUpdateTime = Date.now();
|
|
171256
171417
|
}
|
|
@@ -171258,6 +171419,14 @@ var init_shell = __esm({
|
|
|
171258
171419
|
if (pid && setPidCallback) {
|
|
171259
171420
|
setPidCallback(pid);
|
|
171260
171421
|
}
|
|
171422
|
+
if (shouldRunInBackground) {
|
|
171423
|
+
const pidMsg = pid ? ` PID: ${pid}` : "";
|
|
171424
|
+
const killHint = isWindows8 ? " (Use taskkill /F /T /PID <pid> to stop)" : " (Use kill <pid> to stop)";
|
|
171425
|
+
return {
|
|
171426
|
+
llmContent: `Background command started.${pidMsg}${killHint}`,
|
|
171427
|
+
returnDisplay: `Background command started.${pidMsg}${killHint}`
|
|
171428
|
+
};
|
|
171429
|
+
}
|
|
171261
171430
|
const result = await resultPromise;
|
|
171262
171431
|
const backgroundPIDs = [];
|
|
171263
171432
|
if (os14.platform() !== "win32") {
|
|
@@ -171911,7 +172080,7 @@ var init_coreToolScheduler = __esm({
|
|
|
171911
172080
|
this.setToolCallOutcome(reqInfo.callId, ToolConfirmationOutcome.ProceedAlways);
|
|
171912
172081
|
this.setStatusInternal(reqInfo.callId, "scheduled");
|
|
171913
172082
|
} else {
|
|
171914
|
-
const shouldAutoDeny = !this.config.isInteractive() && !this.config.
|
|
172083
|
+
const shouldAutoDeny = !this.config.isInteractive() && !this.config.getExperimentalZedIntegration() && this.config.getInputFormat() !== InputFormat.STREAM_JSON;
|
|
171915
172084
|
if (shouldAutoDeny) {
|
|
171916
172085
|
const errorMessage = `Qwen Code requires permission to use "${reqInfo.name}", but that permission was declined.`;
|
|
171917
172086
|
this.setStatusInternal(reqInfo.callId, "error", createErrorResponse(reqInfo, new Error(errorMessage), ToolErrorType.EXECUTION_DENIED));
|
|
@@ -202875,16 +203044,16 @@ var require_cross_spawn = __commonJS({
|
|
|
202875
203044
|
return spawned;
|
|
202876
203045
|
}
|
|
202877
203046
|
__name(spawn11, "spawn");
|
|
202878
|
-
function
|
|
203047
|
+
function spawnSync6(command2, args, options2) {
|
|
202879
203048
|
const parsed = parse13(command2, args, options2);
|
|
202880
203049
|
const result = cp2.spawnSync(parsed.command, parsed.args, parsed.options);
|
|
202881
203050
|
result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
|
|
202882
203051
|
return result;
|
|
202883
203052
|
}
|
|
202884
|
-
__name(
|
|
203053
|
+
__name(spawnSync6, "spawnSync");
|
|
202885
203054
|
module2.exports = spawn11;
|
|
202886
203055
|
module2.exports.spawn = spawn11;
|
|
202887
|
-
module2.exports.sync =
|
|
203056
|
+
module2.exports.sync = spawnSync6;
|
|
202888
203057
|
module2.exports._parse = parse13;
|
|
202889
203058
|
module2.exports._enoent = enoent;
|
|
202890
203059
|
}
|
|
@@ -218986,6 +219155,10 @@ function shouldAttemptBrowserLaunch() {
|
|
|
218986
219155
|
if (process.env["CI"] || process.env["DEBIAN_FRONTEND"] === "noninteractive") {
|
|
218987
219156
|
return false;
|
|
218988
219157
|
}
|
|
219158
|
+
const isTermux4 = process.platform === "android" || !!process.env["TERMUX_VERSION"] || !!(process.env["PREFIX"] && process.env["PREFIX"].includes("com.termux"));
|
|
219159
|
+
if (isTermux4) {
|
|
219160
|
+
return true;
|
|
219161
|
+
}
|
|
218989
219162
|
const isSSH = !!process.env["SSH_CONNECTION"];
|
|
218990
219163
|
if (process.platform === "linux") {
|
|
218991
219164
|
const displayVariables = ["DISPLAY", "WAYLAND_DISPLAY", "MIR_SOCKET"];
|
|
@@ -223778,7 +223951,7 @@ var require_parse6 = __commonJS({
|
|
|
223778
223951
|
"packages/core/node_modules/picomatch/lib/parse.js"(exports2, module2) {
|
|
223779
223952
|
"use strict";
|
|
223780
223953
|
init_esbuild_shims();
|
|
223781
|
-
var
|
|
223954
|
+
var constants5 = require_constants11();
|
|
223782
223955
|
var utils = require_utils14();
|
|
223783
223956
|
var {
|
|
223784
223957
|
MAX_LENGTH,
|
|
@@ -223786,7 +223959,7 @@ var require_parse6 = __commonJS({
|
|
|
223786
223959
|
REGEX_NON_SPECIAL_CHARS,
|
|
223787
223960
|
REGEX_SPECIAL_CHARS_BACKREF,
|
|
223788
223961
|
REPLACEMENTS
|
|
223789
|
-
} =
|
|
223962
|
+
} = constants5;
|
|
223790
223963
|
var expandRange = /* @__PURE__ */ __name((args, options2) => {
|
|
223791
223964
|
if (typeof options2.expandRange === "function") {
|
|
223792
223965
|
return options2.expandRange(...args, options2);
|
|
@@ -223817,8 +223990,8 @@ var require_parse6 = __commonJS({
|
|
|
223817
223990
|
const bos = { type: "bos", value: "", output: opts.prepend || "" };
|
|
223818
223991
|
const tokens = [bos];
|
|
223819
223992
|
const capture = opts.capture ? "" : "?:";
|
|
223820
|
-
const PLATFORM_CHARS =
|
|
223821
|
-
const EXTGLOB_CHARS =
|
|
223993
|
+
const PLATFORM_CHARS = constants5.globChars(opts.windows);
|
|
223994
|
+
const EXTGLOB_CHARS = constants5.extglobChars(PLATFORM_CHARS);
|
|
223822
223995
|
const {
|
|
223823
223996
|
DOT_LITERAL,
|
|
223824
223997
|
PLUS_LITERAL,
|
|
@@ -224491,7 +224664,7 @@ var require_parse6 = __commonJS({
|
|
|
224491
224664
|
NO_DOTS_SLASH,
|
|
224492
224665
|
STAR,
|
|
224493
224666
|
START_ANCHOR
|
|
224494
|
-
} =
|
|
224667
|
+
} = constants5.globChars(opts.windows);
|
|
224495
224668
|
const nodot = opts.dot ? NO_DOTS : NO_DOT;
|
|
224496
224669
|
const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;
|
|
224497
224670
|
const capture = opts.capture ? "" : "?:";
|
|
@@ -224550,7 +224723,7 @@ var require_picomatch = __commonJS({
|
|
|
224550
224723
|
var scan = require_scan();
|
|
224551
224724
|
var parse13 = require_parse6();
|
|
224552
224725
|
var utils = require_utils14();
|
|
224553
|
-
var
|
|
224726
|
+
var constants5 = require_constants11();
|
|
224554
224727
|
var isObject4 = /* @__PURE__ */ __name((val) => val && typeof val === "object" && !Array.isArray(val), "isObject");
|
|
224555
224728
|
var picomatch3 = /* @__PURE__ */ __name((glob2, options2, returnState = false) => {
|
|
224556
224729
|
if (Array.isArray(glob2)) {
|
|
@@ -224678,7 +224851,7 @@ var require_picomatch = __commonJS({
|
|
|
224678
224851
|
return /$^/;
|
|
224679
224852
|
}
|
|
224680
224853
|
};
|
|
224681
|
-
picomatch3.constants =
|
|
224854
|
+
picomatch3.constants = constants5;
|
|
224682
224855
|
module2.exports = picomatch3;
|
|
224683
224856
|
}
|
|
224684
224857
|
});
|
|
@@ -227413,6 +227586,7 @@ var init_src2 = __esm({
|
|
|
227413
227586
|
init_fileUtils();
|
|
227414
227587
|
init_retry();
|
|
227415
227588
|
init_shell_utils();
|
|
227589
|
+
init_tool_utils();
|
|
227416
227590
|
init_terminalSerializer();
|
|
227417
227591
|
init_systemEncoding();
|
|
227418
227592
|
init_textUtils();
|
|
@@ -281320,13 +281494,13 @@ var require_command_exists = __commonJS({
|
|
|
281320
281494
|
var fs101 = __require("fs");
|
|
281321
281495
|
var path112 = __require("path");
|
|
281322
281496
|
var access7 = fs101.access;
|
|
281323
|
-
var
|
|
281324
|
-
var
|
|
281497
|
+
var accessSync3 = fs101.accessSync;
|
|
281498
|
+
var constants5 = fs101.constants || fs101;
|
|
281325
281499
|
var isUsingWindows = process.platform == "win32";
|
|
281326
281500
|
var fileNotExists = /* @__PURE__ */ __name(function(commandName, callback) {
|
|
281327
281501
|
access7(
|
|
281328
281502
|
commandName,
|
|
281329
|
-
|
|
281503
|
+
constants5.F_OK,
|
|
281330
281504
|
function(err) {
|
|
281331
281505
|
callback(!err);
|
|
281332
281506
|
}
|
|
@@ -281334,7 +281508,7 @@ var require_command_exists = __commonJS({
|
|
|
281334
281508
|
}, "fileNotExists");
|
|
281335
281509
|
var fileNotExistsSync = /* @__PURE__ */ __name(function(commandName) {
|
|
281336
281510
|
try {
|
|
281337
|
-
|
|
281511
|
+
accessSync3(commandName, constants5.F_OK);
|
|
281338
281512
|
return false;
|
|
281339
281513
|
} catch (e4) {
|
|
281340
281514
|
return true;
|
|
@@ -281343,7 +281517,7 @@ var require_command_exists = __commonJS({
|
|
|
281343
281517
|
var localExecutable = /* @__PURE__ */ __name(function(commandName, callback) {
|
|
281344
281518
|
access7(
|
|
281345
281519
|
commandName,
|
|
281346
|
-
|
|
281520
|
+
constants5.F_OK | constants5.X_OK,
|
|
281347
281521
|
function(err) {
|
|
281348
281522
|
callback(null, !err);
|
|
281349
281523
|
}
|
|
@@ -281351,7 +281525,7 @@ var require_command_exists = __commonJS({
|
|
|
281351
281525
|
}, "localExecutable");
|
|
281352
281526
|
var localExecutableSync = /* @__PURE__ */ __name(function(commandName) {
|
|
281353
281527
|
try {
|
|
281354
|
-
|
|
281528
|
+
accessSync3(commandName, constants5.F_OK | constants5.X_OK);
|
|
281355
281529
|
return true;
|
|
281356
281530
|
} catch (e4) {
|
|
281357
281531
|
return false;
|
|
@@ -281886,11 +282060,11 @@ var require_codegen4 = __commonJS({
|
|
|
281886
282060
|
const rhs = this.rhs === void 0 ? "" : ` = ${this.rhs}`;
|
|
281887
282061
|
return `${varKind} ${this.name}${rhs};` + _n;
|
|
281888
282062
|
}
|
|
281889
|
-
optimizeNames(names,
|
|
282063
|
+
optimizeNames(names, constants5) {
|
|
281890
282064
|
if (!names[this.name.str])
|
|
281891
282065
|
return;
|
|
281892
282066
|
if (this.rhs)
|
|
281893
|
-
this.rhs = optimizeExpr(this.rhs, names,
|
|
282067
|
+
this.rhs = optimizeExpr(this.rhs, names, constants5);
|
|
281894
282068
|
return this;
|
|
281895
282069
|
}
|
|
281896
282070
|
get names() {
|
|
@@ -281910,10 +282084,10 @@ var require_codegen4 = __commonJS({
|
|
|
281910
282084
|
render({ _n }) {
|
|
281911
282085
|
return `${this.lhs} = ${this.rhs};` + _n;
|
|
281912
282086
|
}
|
|
281913
|
-
optimizeNames(names,
|
|
282087
|
+
optimizeNames(names, constants5) {
|
|
281914
282088
|
if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects)
|
|
281915
282089
|
return;
|
|
281916
|
-
this.rhs = optimizeExpr(this.rhs, names,
|
|
282090
|
+
this.rhs = optimizeExpr(this.rhs, names, constants5);
|
|
281917
282091
|
return this;
|
|
281918
282092
|
}
|
|
281919
282093
|
get names() {
|
|
@@ -281989,8 +282163,8 @@ var require_codegen4 = __commonJS({
|
|
|
281989
282163
|
optimizeNodes() {
|
|
281990
282164
|
return `${this.code}` ? this : void 0;
|
|
281991
282165
|
}
|
|
281992
|
-
optimizeNames(names,
|
|
281993
|
-
this.code = optimizeExpr(this.code, names,
|
|
282166
|
+
optimizeNames(names, constants5) {
|
|
282167
|
+
this.code = optimizeExpr(this.code, names, constants5);
|
|
281994
282168
|
return this;
|
|
281995
282169
|
}
|
|
281996
282170
|
get names() {
|
|
@@ -282022,12 +282196,12 @@ var require_codegen4 = __commonJS({
|
|
|
282022
282196
|
}
|
|
282023
282197
|
return nodes.length > 0 ? this : void 0;
|
|
282024
282198
|
}
|
|
282025
|
-
optimizeNames(names,
|
|
282199
|
+
optimizeNames(names, constants5) {
|
|
282026
282200
|
const { nodes } = this;
|
|
282027
282201
|
let i3 = nodes.length;
|
|
282028
282202
|
while (i3--) {
|
|
282029
282203
|
const n3 = nodes[i3];
|
|
282030
|
-
if (n3.optimizeNames(names,
|
|
282204
|
+
if (n3.optimizeNames(names, constants5))
|
|
282031
282205
|
continue;
|
|
282032
282206
|
subtractNames(names, n3.names);
|
|
282033
282207
|
nodes.splice(i3, 1);
|
|
@@ -282092,12 +282266,12 @@ var require_codegen4 = __commonJS({
|
|
|
282092
282266
|
return void 0;
|
|
282093
282267
|
return this;
|
|
282094
282268
|
}
|
|
282095
|
-
optimizeNames(names,
|
|
282269
|
+
optimizeNames(names, constants5) {
|
|
282096
282270
|
var _a7;
|
|
282097
|
-
this.else = (_a7 = this.else) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names,
|
|
282098
|
-
if (!(super.optimizeNames(names,
|
|
282271
|
+
this.else = (_a7 = this.else) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names, constants5);
|
|
282272
|
+
if (!(super.optimizeNames(names, constants5) || this.else))
|
|
282099
282273
|
return;
|
|
282100
|
-
this.condition = optimizeExpr(this.condition, names,
|
|
282274
|
+
this.condition = optimizeExpr(this.condition, names, constants5);
|
|
282101
282275
|
return this;
|
|
282102
282276
|
}
|
|
282103
282277
|
get names() {
|
|
@@ -282126,10 +282300,10 @@ var require_codegen4 = __commonJS({
|
|
|
282126
282300
|
render(opts) {
|
|
282127
282301
|
return `for(${this.iteration})` + super.render(opts);
|
|
282128
282302
|
}
|
|
282129
|
-
optimizeNames(names,
|
|
282130
|
-
if (!super.optimizeNames(names,
|
|
282303
|
+
optimizeNames(names, constants5) {
|
|
282304
|
+
if (!super.optimizeNames(names, constants5))
|
|
282131
282305
|
return;
|
|
282132
|
-
this.iteration = optimizeExpr(this.iteration, names,
|
|
282306
|
+
this.iteration = optimizeExpr(this.iteration, names, constants5);
|
|
282133
282307
|
return this;
|
|
282134
282308
|
}
|
|
282135
282309
|
get names() {
|
|
@@ -282171,10 +282345,10 @@ var require_codegen4 = __commonJS({
|
|
|
282171
282345
|
render(opts) {
|
|
282172
282346
|
return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts);
|
|
282173
282347
|
}
|
|
282174
|
-
optimizeNames(names,
|
|
282175
|
-
if (!super.optimizeNames(names,
|
|
282348
|
+
optimizeNames(names, constants5) {
|
|
282349
|
+
if (!super.optimizeNames(names, constants5))
|
|
282176
282350
|
return;
|
|
282177
|
-
this.iterable = optimizeExpr(this.iterable, names,
|
|
282351
|
+
this.iterable = optimizeExpr(this.iterable, names, constants5);
|
|
282178
282352
|
return this;
|
|
282179
282353
|
}
|
|
282180
282354
|
get names() {
|
|
@@ -282225,11 +282399,11 @@ var require_codegen4 = __commonJS({
|
|
|
282225
282399
|
(_b2 = this.finally) === null || _b2 === void 0 ? void 0 : _b2.optimizeNodes();
|
|
282226
282400
|
return this;
|
|
282227
282401
|
}
|
|
282228
|
-
optimizeNames(names,
|
|
282402
|
+
optimizeNames(names, constants5) {
|
|
282229
282403
|
var _a7, _b2;
|
|
282230
|
-
super.optimizeNames(names,
|
|
282231
|
-
(_a7 = this.catch) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names,
|
|
282232
|
-
(_b2 = this.finally) === null || _b2 === void 0 ? void 0 : _b2.optimizeNames(names,
|
|
282404
|
+
super.optimizeNames(names, constants5);
|
|
282405
|
+
(_a7 = this.catch) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names, constants5);
|
|
282406
|
+
(_b2 = this.finally) === null || _b2 === void 0 ? void 0 : _b2.optimizeNames(names, constants5);
|
|
282233
282407
|
return this;
|
|
282234
282408
|
}
|
|
282235
282409
|
get names() {
|
|
@@ -282541,7 +282715,7 @@ var require_codegen4 = __commonJS({
|
|
|
282541
282715
|
return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names;
|
|
282542
282716
|
}
|
|
282543
282717
|
__name(addExprNames, "addExprNames");
|
|
282544
|
-
function optimizeExpr(expr, names,
|
|
282718
|
+
function optimizeExpr(expr, names, constants5) {
|
|
282545
282719
|
if (expr instanceof code_1.Name)
|
|
282546
282720
|
return replaceName(expr);
|
|
282547
282721
|
if (!canOptimize(expr))
|
|
@@ -282556,7 +282730,7 @@ var require_codegen4 = __commonJS({
|
|
|
282556
282730
|
return items;
|
|
282557
282731
|
}, []));
|
|
282558
282732
|
function replaceName(n3) {
|
|
282559
|
-
const c4 =
|
|
282733
|
+
const c4 = constants5[n3.str];
|
|
282560
282734
|
if (c4 === void 0 || names[n3.str] !== 1)
|
|
282561
282735
|
return n3;
|
|
282562
282736
|
delete names[n3.str];
|
|
@@ -282564,7 +282738,7 @@ var require_codegen4 = __commonJS({
|
|
|
282564
282738
|
}
|
|
282565
282739
|
__name(replaceName, "replaceName");
|
|
282566
282740
|
function canOptimize(e4) {
|
|
282567
|
-
return e4 instanceof code_1._Code && e4._items.some((c4) => c4 instanceof code_1.Name && names[c4.str] === 1 &&
|
|
282741
|
+
return e4 instanceof code_1._Code && e4._items.some((c4) => c4 instanceof code_1.Name && names[c4.str] === 1 && constants5[c4.str] !== void 0);
|
|
282568
282742
|
}
|
|
282569
282743
|
__name(canOptimize, "canOptimize");
|
|
282570
282744
|
}
|
|
@@ -287563,6 +287737,842 @@ var require_ajv3 = __commonJS({
|
|
|
287563
287737
|
}
|
|
287564
287738
|
});
|
|
287565
287739
|
|
|
287740
|
+
// packages/cli/src/i18n/locales/de.js
|
|
287741
|
+
var de_exports = {};
|
|
287742
|
+
__export(de_exports, {
|
|
287743
|
+
default: () => de_default
|
|
287744
|
+
});
|
|
287745
|
+
var de_default;
|
|
287746
|
+
var init_de = __esm({
|
|
287747
|
+
"packages/cli/src/i18n/locales/de.js"() {
|
|
287748
|
+
"use strict";
|
|
287749
|
+
init_esbuild_shims();
|
|
287750
|
+
de_default = {
|
|
287751
|
+
// ============================================================================
|
|
287752
|
+
// Help / UI Components
|
|
287753
|
+
// ============================================================================
|
|
287754
|
+
"Basics:": "Grundlagen:",
|
|
287755
|
+
"Add context": "Kontext hinzuf\xFCgen",
|
|
287756
|
+
"Use {{symbol}} to specify files for context (e.g., {{example}}) to target specific files or folders.": "Verwenden Sie {{symbol}}, um Dateien als Kontext anzugeben (z.B. {{example}}), um bestimmte Dateien oder Ordner auszuw\xE4hlen.",
|
|
287757
|
+
"@": "@",
|
|
287758
|
+
"@src/myFile.ts": "@src/myFile.ts",
|
|
287759
|
+
"Shell mode": "Shell-Modus",
|
|
287760
|
+
"YOLO mode": "YOLO-Modus",
|
|
287761
|
+
"plan mode": "Planungsmodus",
|
|
287762
|
+
"auto-accept edits": "\xC4nderungen automatisch akzeptieren",
|
|
287763
|
+
"Accepting edits": "\xC4nderungen werden akzeptiert",
|
|
287764
|
+
"(shift + tab to cycle)": "(Umschalt + Tab zum Wechseln)",
|
|
287765
|
+
"Execute shell commands via {{symbol}} (e.g., {{example1}}) or use natural language (e.g., {{example2}}).": "Shell-Befehle \xFCber {{symbol}} ausf\xFChren (z.B. {{example1}}) oder nat\xFCrliche Sprache verwenden (z.B. {{example2}}).",
|
|
287766
|
+
"!": "!",
|
|
287767
|
+
"!npm run start": "!npm run start",
|
|
287768
|
+
"start server": "Server starten",
|
|
287769
|
+
"Commands:": "Befehle:",
|
|
287770
|
+
"shell command": "Shell-Befehl",
|
|
287771
|
+
"Model Context Protocol command (from external servers)": "Model Context Protocol Befehl (von externen Servern)",
|
|
287772
|
+
"Keyboard Shortcuts:": "Tastenk\xFCrzel:",
|
|
287773
|
+
"Jump through words in the input": "W\xF6rter in der Eingabe \xFCberspringen",
|
|
287774
|
+
"Close dialogs, cancel requests, or quit application": "Dialoge schlie\xDFen, Anfragen abbrechen oder Anwendung beenden",
|
|
287775
|
+
"New line": "Neue Zeile",
|
|
287776
|
+
"New line (Alt+Enter works for certain linux distros)": "Neue Zeile (Alt+Enter funktioniert bei bestimmten Linux-Distributionen)",
|
|
287777
|
+
"Clear the screen": "Bildschirm l\xF6schen",
|
|
287778
|
+
"Open input in external editor": "Eingabe in externem Editor \xF6ffnen",
|
|
287779
|
+
"Send message": "Nachricht senden",
|
|
287780
|
+
"Initializing...": "Initialisierung...",
|
|
287781
|
+
"Connecting to MCP servers... ({{connected}}/{{total}})": "Verbindung zu MCP-Servern wird hergestellt... ({{connected}}/{{total}})",
|
|
287782
|
+
"Type your message or @path/to/file": "Nachricht eingeben oder @Pfad/zur/Datei",
|
|
287783
|
+
"Press 'i' for INSERT mode and 'Esc' for NORMAL mode.": "Dr\xFCcken Sie 'i' f\xFCr den EINF\xDCGE-Modus und 'Esc' f\xFCr den NORMAL-Modus.",
|
|
287784
|
+
"Cancel operation / Clear input (double press)": "Vorgang abbrechen / Eingabe l\xF6schen (doppelt dr\xFCcken)",
|
|
287785
|
+
"Cycle approval modes": "Genehmigungsmodi durchschalten",
|
|
287786
|
+
"Cycle through your prompt history": "Eingabeverlauf durchbl\xE4ttern",
|
|
287787
|
+
"For a full list of shortcuts, see {{docPath}}": "Eine vollst\xE4ndige Liste der Tastenk\xFCrzel finden Sie unter {{docPath}}",
|
|
287788
|
+
"docs/keyboard-shortcuts.md": "docs/keyboard-shortcuts.md",
|
|
287789
|
+
"for help on Qwen Code": "f\xFCr Hilfe zu Qwen Code",
|
|
287790
|
+
"show version info": "Versionsinformationen anzeigen",
|
|
287791
|
+
"submit a bug report": "Fehlerbericht einreichen",
|
|
287792
|
+
"About Qwen Code": "\xDCber Qwen Code",
|
|
287793
|
+
// ============================================================================
|
|
287794
|
+
// System Information Fields
|
|
287795
|
+
// ============================================================================
|
|
287796
|
+
"CLI Version": "CLI-Version",
|
|
287797
|
+
"Git Commit": "Git-Commit",
|
|
287798
|
+
Model: "Modell",
|
|
287799
|
+
Sandbox: "Sandbox",
|
|
287800
|
+
"OS Platform": "Betriebssystem",
|
|
287801
|
+
"OS Arch": "OS-Architektur",
|
|
287802
|
+
"OS Release": "OS-Version",
|
|
287803
|
+
"Node.js Version": "Node.js-Version",
|
|
287804
|
+
"NPM Version": "NPM-Version",
|
|
287805
|
+
"Session ID": "Sitzungs-ID",
|
|
287806
|
+
"Auth Method": "Authentifizierungsmethode",
|
|
287807
|
+
"Base URL": "Basis-URL",
|
|
287808
|
+
"Memory Usage": "Speichernutzung",
|
|
287809
|
+
"IDE Client": "IDE-Client",
|
|
287810
|
+
// ============================================================================
|
|
287811
|
+
// Commands - General
|
|
287812
|
+
// ============================================================================
|
|
287813
|
+
"Analyzes the project and creates a tailored QWEN.md file.": "Analysiert das Projekt und erstellt eine ma\xDFgeschneiderte QWEN.md-Datei.",
|
|
287814
|
+
"list available Qwen Code tools. Usage: /tools [desc]": "Verf\xFCgbare Qwen Code Werkzeuge auflisten. Verwendung: /tools [desc]",
|
|
287815
|
+
"Available Qwen Code CLI tools:": "Verf\xFCgbare Qwen Code CLI-Werkzeuge:",
|
|
287816
|
+
"No tools available": "Keine Werkzeuge verf\xFCgbar",
|
|
287817
|
+
"View or change the approval mode for tool usage": "Genehmigungsmodus f\xFCr Werkzeugnutzung anzeigen oder \xE4ndern",
|
|
287818
|
+
"View or change the language setting": "Spracheinstellung anzeigen oder \xE4ndern",
|
|
287819
|
+
"change the theme": "Design \xE4ndern",
|
|
287820
|
+
"Select Theme": "Design ausw\xE4hlen",
|
|
287821
|
+
Preview: "Vorschau",
|
|
287822
|
+
"(Use Enter to select, Tab to configure scope)": "(Enter zum Ausw\xE4hlen, Tab zum Konfigurieren des Bereichs)",
|
|
287823
|
+
"(Use Enter to apply scope, Tab to select theme)": "(Enter zum Anwenden des Bereichs, Tab zum Ausw\xE4hlen des Designs)",
|
|
287824
|
+
"Theme configuration unavailable due to NO_COLOR env variable.": "Design-Konfiguration aufgrund der NO_COLOR-Umgebungsvariable nicht verf\xFCgbar.",
|
|
287825
|
+
'Theme "{{themeName}}" not found.': 'Design "{{themeName}}" nicht gefunden.',
|
|
287826
|
+
'Theme "{{themeName}}" not found in selected scope.': 'Design "{{themeName}}" im ausgew\xE4hlten Bereich nicht gefunden.',
|
|
287827
|
+
"Clear conversation history and free up context": "Gespr\xE4chsverlauf l\xF6schen und Kontext freigeben",
|
|
287828
|
+
"Compresses the context by replacing it with a summary.": "Komprimiert den Kontext durch Ersetzen mit einer Zusammenfassung.",
|
|
287829
|
+
"open full Qwen Code documentation in your browser": "Vollst\xE4ndige Qwen Code Dokumentation im Browser \xF6ffnen",
|
|
287830
|
+
"Configuration not available.": "Konfiguration nicht verf\xFCgbar.",
|
|
287831
|
+
"change the auth method": "Authentifizierungsmethode \xE4ndern",
|
|
287832
|
+
"Copy the last result or code snippet to clipboard": "Letztes Ergebnis oder Codeausschnitt in die Zwischenablage kopieren",
|
|
287833
|
+
// ============================================================================
|
|
287834
|
+
// Commands - Agents
|
|
287835
|
+
// ============================================================================
|
|
287836
|
+
"Manage subagents for specialized task delegation.": "Unteragenten f\xFCr spezialisierte Aufgabendelegation verwalten.",
|
|
287837
|
+
"Manage existing subagents (view, edit, delete).": "Bestehende Unteragenten verwalten (anzeigen, bearbeiten, l\xF6schen).",
|
|
287838
|
+
"Create a new subagent with guided setup.": "Neuen Unteragenten mit gef\xFChrter Einrichtung erstellen.",
|
|
287839
|
+
// ============================================================================
|
|
287840
|
+
// Agents - Management Dialog
|
|
287841
|
+
// ============================================================================
|
|
287842
|
+
Agents: "Agenten",
|
|
287843
|
+
"Choose Action": "Aktion w\xE4hlen",
|
|
287844
|
+
"Edit {{name}}": "{{name}} bearbeiten",
|
|
287845
|
+
"Edit Tools: {{name}}": "Werkzeuge bearbeiten: {{name}}",
|
|
287846
|
+
"Edit Color: {{name}}": "Farbe bearbeiten: {{name}}",
|
|
287847
|
+
"Delete {{name}}": "{{name}} l\xF6schen",
|
|
287848
|
+
"Unknown Step": "Unbekannter Schritt",
|
|
287849
|
+
"Esc to close": "Esc zum Schlie\xDFen",
|
|
287850
|
+
"Enter to select, \u2191\u2193 to navigate, Esc to close": "Enter zum Ausw\xE4hlen, \u2191\u2193 zum Navigieren, Esc zum Schlie\xDFen",
|
|
287851
|
+
"Esc to go back": "Esc zum Zur\xFCckgehen",
|
|
287852
|
+
"Enter to confirm, Esc to cancel": "Enter zum Best\xE4tigen, Esc zum Abbrechen",
|
|
287853
|
+
"Enter to select, \u2191\u2193 to navigate, Esc to go back": "Enter zum Ausw\xE4hlen, \u2191\u2193 zum Navigieren, Esc zum Zur\xFCckgehen",
|
|
287854
|
+
"Invalid step: {{step}}": "Ung\xFCltiger Schritt: {{step}}",
|
|
287855
|
+
"No subagents found.": "Keine Unteragenten gefunden.",
|
|
287856
|
+
"Use '/agents create' to create your first subagent.": "Verwenden Sie '/agents create', um Ihren ersten Unteragenten zu erstellen.",
|
|
287857
|
+
"(built-in)": "(integriert)",
|
|
287858
|
+
"(overridden by project level agent)": "(\xFCberschrieben durch Projektagent)",
|
|
287859
|
+
"Project Level ({{path}})": "Projektebene ({{path}})",
|
|
287860
|
+
"User Level ({{path}})": "Benutzerebene ({{path}})",
|
|
287861
|
+
"Built-in Agents": "Integrierte Agenten",
|
|
287862
|
+
"Using: {{count}} agents": "Verwendet: {{count}} Agenten",
|
|
287863
|
+
"View Agent": "Agent anzeigen",
|
|
287864
|
+
"Edit Agent": "Agent bearbeiten",
|
|
287865
|
+
"Delete Agent": "Agent l\xF6schen",
|
|
287866
|
+
Back: "Zur\xFCck",
|
|
287867
|
+
"No agent selected": "Kein Agent ausgew\xE4hlt",
|
|
287868
|
+
"File Path: ": "Dateipfad: ",
|
|
287869
|
+
"Tools: ": "Werkzeuge: ",
|
|
287870
|
+
"Color: ": "Farbe: ",
|
|
287871
|
+
"Description:": "Beschreibung:",
|
|
287872
|
+
"System Prompt:": "System-Prompt:",
|
|
287873
|
+
"Open in editor": "Im Editor \xF6ffnen",
|
|
287874
|
+
"Edit tools": "Werkzeuge bearbeiten",
|
|
287875
|
+
"Edit color": "Farbe bearbeiten",
|
|
287876
|
+
"\u274C Error:": "\u274C Fehler:",
|
|
287877
|
+
'Are you sure you want to delete agent "{{name}}"?': 'Sind Sie sicher, dass Sie den Agenten "{{name}}" l\xF6schen m\xF6chten?',
|
|
287878
|
+
// ============================================================================
|
|
287879
|
+
// Agents - Creation Wizard
|
|
287880
|
+
// ============================================================================
|
|
287881
|
+
"Project Level (.qwen/agents/)": "Projektebene (.qwen/agents/)",
|
|
287882
|
+
"User Level (~/.qwen/agents/)": "Benutzerebene (~/.qwen/agents/)",
|
|
287883
|
+
"\u2705 Subagent Created Successfully!": "\u2705 Unteragent erfolgreich erstellt!",
|
|
287884
|
+
'Subagent "{{name}}" has been saved to {{level}} level.': 'Unteragent "{{name}}" wurde auf {{level}}-Ebene gespeichert.',
|
|
287885
|
+
"Name: ": "Name: ",
|
|
287886
|
+
"Location: ": "Speicherort: ",
|
|
287887
|
+
"\u274C Error saving subagent:": "\u274C Fehler beim Speichern des Unteragenten:",
|
|
287888
|
+
"Warnings:": "Warnungen:",
|
|
287889
|
+
'Name "{{name}}" already exists at {{level}} level - will overwrite existing subagent': 'Name "{{name}}" existiert bereits auf {{level}}-Ebene - bestehender Unteragent wird \xFCberschrieben',
|
|
287890
|
+
'Name "{{name}}" exists at user level - project level will take precedence': 'Name "{{name}}" existiert auf Benutzerebene - Projektebene hat Vorrang',
|
|
287891
|
+
'Name "{{name}}" exists at project level - existing subagent will take precedence': 'Name "{{name}}" existiert auf Projektebene - bestehender Unteragent hat Vorrang',
|
|
287892
|
+
"Description is over {{length}} characters": "Beschreibung ist \xFCber {{length}} Zeichen",
|
|
287893
|
+
"System prompt is over {{length}} characters": "System-Prompt ist \xFCber {{length}} Zeichen",
|
|
287894
|
+
// Agents - Creation Wizard Steps
|
|
287895
|
+
"Step {{n}}: Choose Location": "Schritt {{n}}: Speicherort w\xE4hlen",
|
|
287896
|
+
"Step {{n}}: Choose Generation Method": "Schritt {{n}}: Generierungsmethode w\xE4hlen",
|
|
287897
|
+
"Generate with Qwen Code (Recommended)": "Mit Qwen Code generieren (Empfohlen)",
|
|
287898
|
+
"Manual Creation": "Manuelle Erstellung",
|
|
287899
|
+
"Describe what this subagent should do and when it should be used. (Be comprehensive for best results)": "Beschreiben Sie, was dieser Unteragent tun soll und wann er verwendet werden soll. (Ausf\xFChrliche Beschreibung f\xFCr beste Ergebnisse)",
|
|
287900
|
+
"e.g., Expert code reviewer that reviews code based on best practices...": "z.B. Experte f\xFCr Code-Reviews, der Code nach Best Practices \xFCberpr\xFCft...",
|
|
287901
|
+
"Generating subagent configuration...": "Unteragent-Konfiguration wird generiert...",
|
|
287902
|
+
"Failed to generate subagent: {{error}}": "Fehler beim Generieren des Unteragenten: {{error}}",
|
|
287903
|
+
"Step {{n}}: Describe Your Subagent": "Schritt {{n}}: Unteragent beschreiben",
|
|
287904
|
+
"Step {{n}}: Enter Subagent Name": "Schritt {{n}}: Unteragent-Name eingeben",
|
|
287905
|
+
"Step {{n}}: Enter System Prompt": "Schritt {{n}}: System-Prompt eingeben",
|
|
287906
|
+
"Step {{n}}: Enter Description": "Schritt {{n}}: Beschreibung eingeben",
|
|
287907
|
+
// Agents - Tool Selection
|
|
287908
|
+
"Step {{n}}: Select Tools": "Schritt {{n}}: Werkzeuge ausw\xE4hlen",
|
|
287909
|
+
"All Tools (Default)": "Alle Werkzeuge (Standard)",
|
|
287910
|
+
"All Tools": "Alle Werkzeuge",
|
|
287911
|
+
"Read-only Tools": "Nur-Lese-Werkzeuge",
|
|
287912
|
+
"Read & Edit Tools": "Lese- und Bearbeitungswerkzeuge",
|
|
287913
|
+
"Read & Edit & Execution Tools": "Lese-, Bearbeitungs- und Ausf\xFChrungswerkzeuge",
|
|
287914
|
+
"All tools selected, including MCP tools": "Alle Werkzeuge ausgew\xE4hlt, einschlie\xDFlich MCP-Werkzeuge",
|
|
287915
|
+
"Selected tools:": "Ausgew\xE4hlte Werkzeuge:",
|
|
287916
|
+
"Read-only tools:": "Nur-Lese-Werkzeuge:",
|
|
287917
|
+
"Edit tools:": "Bearbeitungswerkzeuge:",
|
|
287918
|
+
"Execution tools:": "Ausf\xFChrungswerkzeuge:",
|
|
287919
|
+
"Step {{n}}: Choose Background Color": "Schritt {{n}}: Hintergrundfarbe w\xE4hlen",
|
|
287920
|
+
"Step {{n}}: Confirm and Save": "Schritt {{n}}: Best\xE4tigen und Speichern",
|
|
287921
|
+
// Agents - Navigation & Instructions
|
|
287922
|
+
"Esc to cancel": "Esc zum Abbrechen",
|
|
287923
|
+
"Press Enter to save, e to save and edit, Esc to go back": "Enter zum Speichern, e zum Speichern und Bearbeiten, Esc zum Zur\xFCckgehen",
|
|
287924
|
+
"Press Enter to continue, {{navigation}}Esc to {{action}}": "Enter zum Fortfahren, {{navigation}}Esc zum {{action}}",
|
|
287925
|
+
cancel: "Abbrechen",
|
|
287926
|
+
"go back": "Zur\xFCckgehen",
|
|
287927
|
+
"\u2191\u2193 to navigate, ": "\u2191\u2193 zum Navigieren, ",
|
|
287928
|
+
"Enter a clear, unique name for this subagent.": "Geben Sie einen eindeutigen Namen f\xFCr diesen Unteragenten ein.",
|
|
287929
|
+
"e.g., Code Reviewer": "z.B. Code-Reviewer",
|
|
287930
|
+
"Name cannot be empty.": "Name darf nicht leer sein.",
|
|
287931
|
+
"Write the system prompt that defines this subagent's behavior. Be comprehensive for best results.": "Schreiben Sie den System-Prompt, der das Verhalten dieses Unteragenten definiert. Ausf\xFChrlich f\xFCr beste Ergebnisse.",
|
|
287932
|
+
"e.g., You are an expert code reviewer...": "z.B. Sie sind ein Experte f\xFCr Code-Reviews...",
|
|
287933
|
+
"System prompt cannot be empty.": "System-Prompt darf nicht leer sein.",
|
|
287934
|
+
"Describe when and how this subagent should be used.": "Beschreiben Sie, wann und wie dieser Unteragent verwendet werden soll.",
|
|
287935
|
+
"e.g., Reviews code for best practices and potential bugs.": "z.B. \xDCberpr\xFCft Code auf Best Practices und m\xF6gliche Fehler.",
|
|
287936
|
+
"Description cannot be empty.": "Beschreibung darf nicht leer sein.",
|
|
287937
|
+
"Failed to launch editor: {{error}}": "Fehler beim Starten des Editors: {{error}}",
|
|
287938
|
+
"Failed to save and edit subagent: {{error}}": "Fehler beim Speichern und Bearbeiten des Unteragenten: {{error}}",
|
|
287939
|
+
// ============================================================================
|
|
287940
|
+
// Commands - General (continued)
|
|
287941
|
+
// ============================================================================
|
|
287942
|
+
"View and edit Qwen Code settings": "Qwen Code Einstellungen anzeigen und bearbeiten",
|
|
287943
|
+
Settings: "Einstellungen",
|
|
287944
|
+
"(Use Enter to select{{tabText}})": "(Enter zum Ausw\xE4hlen{{tabText}})",
|
|
287945
|
+
", Tab to change focus": ", Tab zum Fokuswechsel",
|
|
287946
|
+
"To see changes, Qwen Code must be restarted. Press r to exit and apply changes now.": "Um \xC4nderungen zu sehen, muss Qwen Code neu gestartet werden. Dr\xFCcken Sie r, um jetzt zu beenden und \xC4nderungen anzuwenden.",
|
|
287947
|
+
'The command "/{{command}}" is not supported in non-interactive mode.': 'Der Befehl "/{{command}}" wird im nicht-interaktiven Modus nicht unterst\xFCtzt.',
|
|
287948
|
+
// ============================================================================
|
|
287949
|
+
// Settings Labels
|
|
287950
|
+
// ============================================================================
|
|
287951
|
+
"Vim Mode": "Vim-Modus",
|
|
287952
|
+
"Disable Auto Update": "Automatische Updates deaktivieren",
|
|
287953
|
+
"Enable Prompt Completion": "Eingabevervollst\xE4ndigung aktivieren",
|
|
287954
|
+
"Debug Keystroke Logging": "Debug-Protokollierung von Tastatureingaben",
|
|
287955
|
+
Language: "Sprache",
|
|
287956
|
+
"Output Format": "Ausgabeformat",
|
|
287957
|
+
"Hide Window Title": "Fenstertitel ausblenden",
|
|
287958
|
+
"Show Status in Title": "Status im Titel anzeigen",
|
|
287959
|
+
"Hide Tips": "Tipps ausblenden",
|
|
287960
|
+
"Hide Banner": "Banner ausblenden",
|
|
287961
|
+
"Hide Context Summary": "Kontextzusammenfassung ausblenden",
|
|
287962
|
+
"Hide CWD": "Arbeitsverzeichnis ausblenden",
|
|
287963
|
+
"Hide Sandbox Status": "Sandbox-Status ausblenden",
|
|
287964
|
+
"Hide Model Info": "Modellinformationen ausblenden",
|
|
287965
|
+
"Hide Footer": "Fu\xDFzeile ausblenden",
|
|
287966
|
+
"Show Memory Usage": "Speichernutzung anzeigen",
|
|
287967
|
+
"Show Line Numbers": "Zeilennummern anzeigen",
|
|
287968
|
+
"Show Citations": "Quellenangaben anzeigen",
|
|
287969
|
+
"Custom Witty Phrases": "Benutzerdefinierte Witzige Spr\xFCche",
|
|
287970
|
+
"Enable Welcome Back": "Willkommen-zur\xFCck aktivieren",
|
|
287971
|
+
"Disable Loading Phrases": "Ladespr\xFCche deaktivieren",
|
|
287972
|
+
"Screen Reader Mode": "Bildschirmleser-Modus",
|
|
287973
|
+
"IDE Mode": "IDE-Modus",
|
|
287974
|
+
"Max Session Turns": "Maximale Sitzungsrunden",
|
|
287975
|
+
"Skip Next Speaker Check": "N\xE4chste-Sprecher-Pr\xFCfung \xFCberspringen",
|
|
287976
|
+
"Skip Loop Detection": "Schleifenerkennung \xFCberspringen",
|
|
287977
|
+
"Skip Startup Context": "Startkontext \xFCberspringen",
|
|
287978
|
+
"Enable OpenAI Logging": "OpenAI-Protokollierung aktivieren",
|
|
287979
|
+
"OpenAI Logging Directory": "OpenAI-Protokollierungsverzeichnis",
|
|
287980
|
+
Timeout: "Zeitlimit",
|
|
287981
|
+
"Max Retries": "Maximale Wiederholungen",
|
|
287982
|
+
"Disable Cache Control": "Cache-Steuerung deaktivieren",
|
|
287983
|
+
"Memory Discovery Max Dirs": "Maximale Verzeichnisse f\xFCr Speichererkennung",
|
|
287984
|
+
"Load Memory From Include Directories": "Speicher aus Include-Verzeichnissen laden",
|
|
287985
|
+
"Respect .gitignore": ".gitignore beachten",
|
|
287986
|
+
"Respect .qwenignore": ".qwenignore beachten",
|
|
287987
|
+
"Enable Recursive File Search": "Rekursive Dateisuche aktivieren",
|
|
287988
|
+
"Disable Fuzzy Search": "Unscharfe Suche deaktivieren",
|
|
287989
|
+
"Enable Interactive Shell": "Interaktive Shell aktivieren",
|
|
287990
|
+
"Show Color": "Farbe anzeigen",
|
|
287991
|
+
"Auto Accept": "Automatisch akzeptieren",
|
|
287992
|
+
"Use Ripgrep": "Ripgrep verwenden",
|
|
287993
|
+
"Use Builtin Ripgrep": "Integriertes Ripgrep verwenden",
|
|
287994
|
+
"Enable Tool Output Truncation": "Werkzeugausgabe-K\xFCrzung aktivieren",
|
|
287995
|
+
"Tool Output Truncation Threshold": "Schwellenwert f\xFCr Werkzeugausgabe-K\xFCrzung",
|
|
287996
|
+
"Tool Output Truncation Lines": "Zeilen f\xFCr Werkzeugausgabe-K\xFCrzung",
|
|
287997
|
+
"Folder Trust": "Ordnervertrauen",
|
|
287998
|
+
"Vision Model Preview": "Vision-Modell-Vorschau",
|
|
287999
|
+
"Tool Schema Compliance": "Werkzeug-Schema-Konformit\xE4t",
|
|
288000
|
+
// Settings enum options
|
|
288001
|
+
"Auto (detect from system)": "Automatisch (vom System erkennen)",
|
|
288002
|
+
Text: "Text",
|
|
288003
|
+
JSON: "JSON",
|
|
288004
|
+
Plan: "Plan",
|
|
288005
|
+
Default: "Standard",
|
|
288006
|
+
"Auto Edit": "Automatisch bearbeiten",
|
|
288007
|
+
YOLO: "YOLO",
|
|
288008
|
+
"toggle vim mode on/off": "Vim-Modus ein-/ausschalten",
|
|
288009
|
+
"check session stats. Usage: /stats [model|tools]": "Sitzungsstatistiken pr\xFCfen. Verwendung: /stats [model|tools]",
|
|
288010
|
+
"Show model-specific usage statistics.": "Modellspezifische Nutzungsstatistiken anzeigen.",
|
|
288011
|
+
"Show tool-specific usage statistics.": "Werkzeugspezifische Nutzungsstatistiken anzeigen.",
|
|
288012
|
+
"exit the cli": "CLI beenden",
|
|
288013
|
+
"list configured MCP servers and tools, or authenticate with OAuth-enabled servers": "Konfigurierte MCP-Server und Werkzeuge auflisten oder mit OAuth-f\xE4higen Servern authentifizieren",
|
|
288014
|
+
"Manage workspace directories": "Arbeitsbereichsverzeichnisse verwalten",
|
|
288015
|
+
"Add directories to the workspace. Use comma to separate multiple paths": "Verzeichnisse zum Arbeitsbereich hinzuf\xFCgen. Komma zum Trennen mehrerer Pfade verwenden",
|
|
288016
|
+
"Show all directories in the workspace": "Alle Verzeichnisse im Arbeitsbereich anzeigen",
|
|
288017
|
+
"set external editor preference": "Externen Editor festlegen",
|
|
288018
|
+
"Manage extensions": "Erweiterungen verwalten",
|
|
288019
|
+
"List active extensions": "Aktive Erweiterungen auflisten",
|
|
288020
|
+
"Update extensions. Usage: update <extension-names>|--all": "Erweiterungen aktualisieren. Verwendung: update <Erweiterungsnamen>|--all",
|
|
288021
|
+
"manage IDE integration": "IDE-Integration verwalten",
|
|
288022
|
+
"check status of IDE integration": "Status der IDE-Integration pr\xFCfen",
|
|
288023
|
+
"install required IDE companion for {{ideName}}": "Erforderlichen IDE-Begleiter f\xFCr {{ideName}} installieren",
|
|
288024
|
+
"enable IDE integration": "IDE-Integration aktivieren",
|
|
288025
|
+
"disable IDE integration": "IDE-Integration deaktivieren",
|
|
288026
|
+
"IDE integration is not supported in your current environment. To use this feature, run Qwen Code in one of these supported IDEs: VS Code or VS Code forks.": "IDE-Integration wird in Ihrer aktuellen Umgebung nicht unterst\xFCtzt. Um diese Funktion zu nutzen, f\xFChren Sie Qwen Code in einer dieser unterst\xFCtzten IDEs aus: VS Code oder VS Code-Forks.",
|
|
288027
|
+
"Set up GitHub Actions": "GitHub Actions einrichten",
|
|
288028
|
+
"Configure terminal keybindings for multiline input (VS Code, Cursor, Windsurf, Trae)": "Terminal-Tastenbelegungen f\xFCr mehrzeilige Eingabe konfigurieren (VS Code, Cursor, Windsurf, Trae)",
|
|
288029
|
+
"Please restart your terminal for the changes to take effect.": "Bitte starten Sie Ihr Terminal neu, damit die \xC4nderungen wirksam werden.",
|
|
288030
|
+
"Failed to configure terminal: {{error}}": "Fehler beim Konfigurieren des Terminals: {{error}}",
|
|
288031
|
+
"Could not determine {{terminalName}} config path on Windows: APPDATA environment variable is not set.": "Konnte {{terminalName}}-Konfigurationspfad unter Windows nicht ermitteln: APPDATA-Umgebungsvariable ist nicht gesetzt.",
|
|
288032
|
+
"{{terminalName}} keybindings.json exists but is not a valid JSON array. Please fix the file manually or delete it to allow automatic configuration.": "{{terminalName}} keybindings.json existiert, ist aber kein g\xFCltiges JSON-Array. Bitte korrigieren Sie die Datei manuell oder l\xF6schen Sie sie, um automatische Konfiguration zu erm\xF6glichen.",
|
|
288033
|
+
"File: {{file}}": "Datei: {{file}}",
|
|
288034
|
+
"Failed to parse {{terminalName}} keybindings.json. The file contains invalid JSON. Please fix the file manually or delete it to allow automatic configuration.": "Fehler beim Parsen von {{terminalName}} keybindings.json. Die Datei enth\xE4lt ung\xFCltiges JSON. Bitte korrigieren Sie die Datei manuell oder l\xF6schen Sie sie, um automatische Konfiguration zu erm\xF6glichen.",
|
|
288035
|
+
"Error: {{error}}": "Fehler: {{error}}",
|
|
288036
|
+
"Shift+Enter binding already exists": "Umschalt+Enter-Belegung existiert bereits",
|
|
288037
|
+
"Ctrl+Enter binding already exists": "Strg+Enter-Belegung existiert bereits",
|
|
288038
|
+
"Existing keybindings detected. Will not modify to avoid conflicts.": "Bestehende Tastenbelegungen erkannt. Keine \xC4nderungen, um Konflikte zu vermeiden.",
|
|
288039
|
+
"Please check and modify manually if needed: {{file}}": "Bitte pr\xFCfen und bei Bedarf manuell \xE4ndern: {{file}}",
|
|
288040
|
+
"Added Shift+Enter and Ctrl+Enter keybindings to {{terminalName}}.": "Umschalt+Enter und Strg+Enter Tastenbelegungen zu {{terminalName}} hinzugef\xFCgt.",
|
|
288041
|
+
"Modified: {{file}}": "Ge\xE4ndert: {{file}}",
|
|
288042
|
+
"{{terminalName}} keybindings already configured.": "{{terminalName}}-Tastenbelegungen bereits konfiguriert.",
|
|
288043
|
+
"Failed to configure {{terminalName}}.": "Fehler beim Konfigurieren von {{terminalName}}.",
|
|
288044
|
+
"Your terminal is already configured for an optimal experience with multiline input (Shift+Enter and Ctrl+Enter).": "Ihr Terminal ist bereits f\xFCr optimale Erfahrung mit mehrzeiliger Eingabe konfiguriert (Umschalt+Enter und Strg+Enter).",
|
|
288045
|
+
"Could not detect terminal type. Supported terminals: VS Code, Cursor, Windsurf, and Trae.": "Terminal-Typ konnte nicht erkannt werden. Unterst\xFCtzte Terminals: VS Code, Cursor, Windsurf und Trae.",
|
|
288046
|
+
'Terminal "{{terminal}}" is not supported yet.': 'Terminal "{{terminal}}" wird noch nicht unterst\xFCtzt.',
|
|
288047
|
+
// ============================================================================
|
|
288048
|
+
// Commands - Language
|
|
288049
|
+
// ============================================================================
|
|
288050
|
+
"Invalid language. Available: en-US, zh-CN": "Ung\xFCltige Sprache. Verf\xFCgbar: en-US, zh-CN",
|
|
288051
|
+
"Language subcommands do not accept additional arguments.": "Sprach-Unterbefehle akzeptieren keine zus\xE4tzlichen Argumente.",
|
|
288052
|
+
"Current UI language: {{lang}}": "Aktuelle UI-Sprache: {{lang}}",
|
|
288053
|
+
"Current LLM output language: {{lang}}": "Aktuelle LLM-Ausgabesprache: {{lang}}",
|
|
288054
|
+
"LLM output language not set": "LLM-Ausgabesprache nicht festgelegt",
|
|
288055
|
+
"Set UI language": "UI-Sprache festlegen",
|
|
288056
|
+
"Set LLM output language": "LLM-Ausgabesprache festlegen",
|
|
288057
|
+
"Usage: /language ui [zh-CN|en-US]": "Verwendung: /language ui [zh-CN|en-US]",
|
|
288058
|
+
"Usage: /language output <language>": "Verwendung: /language output <Sprache>",
|
|
288059
|
+
"Example: /language output \u4E2D\u6587": "Beispiel: /language output Deutsch",
|
|
288060
|
+
"Example: /language output English": "Beispiel: /language output English",
|
|
288061
|
+
"Example: /language output \u65E5\u672C\u8A9E": "Beispiel: /language output Japanisch",
|
|
288062
|
+
"UI language changed to {{lang}}": "UI-Sprache ge\xE4ndert zu {{lang}}",
|
|
288063
|
+
"LLM output language rule file generated at {{path}}": "LLM-Ausgabesprach-Regeldatei generiert unter {{path}}",
|
|
288064
|
+
"Please restart the application for the changes to take effect.": "Bitte starten Sie die Anwendung neu, damit die \xC4nderungen wirksam werden.",
|
|
288065
|
+
"Failed to generate LLM output language rule file: {{error}}": "Fehler beim Generieren der LLM-Ausgabesprach-Regeldatei: {{error}}",
|
|
288066
|
+
"Invalid command. Available subcommands:": "Ung\xFCltiger Befehl. Verf\xFCgbare Unterbefehle:",
|
|
288067
|
+
"Available subcommands:": "Verf\xFCgbare Unterbefehle:",
|
|
288068
|
+
"To request additional UI language packs, please open an issue on GitHub.": "Um zus\xE4tzliche UI-Sprachpakete anzufordern, \xF6ffnen Sie bitte ein Issue auf GitHub.",
|
|
288069
|
+
"Available options:": "Verf\xFCgbare Optionen:",
|
|
288070
|
+
" - zh-CN: Simplified Chinese": " - zh-CN: Vereinfachtes Chinesisch",
|
|
288071
|
+
" - en-US: English": " - en-US: Englisch",
|
|
288072
|
+
"Set UI language to Simplified Chinese (zh-CN)": "UI-Sprache auf Vereinfachtes Chinesisch (zh-CN) setzen",
|
|
288073
|
+
"Set UI language to English (en-US)": "UI-Sprache auf Englisch (en-US) setzen",
|
|
288074
|
+
// ============================================================================
|
|
288075
|
+
// Commands - Approval Mode
|
|
288076
|
+
// ============================================================================
|
|
288077
|
+
"Approval Mode": "Genehmigungsmodus",
|
|
288078
|
+
"Current approval mode: {{mode}}": "Aktueller Genehmigungsmodus: {{mode}}",
|
|
288079
|
+
"Available approval modes:": "Verf\xFCgbare Genehmigungsmodi:",
|
|
288080
|
+
"Approval mode changed to: {{mode}}": "Genehmigungsmodus ge\xE4ndert zu: {{mode}}",
|
|
288081
|
+
"Approval mode changed to: {{mode}} (saved to {{scope}} settings{{location}})": "Genehmigungsmodus ge\xE4ndert zu: {{mode}} (gespeichert in {{scope}} Einstellungen{{location}})",
|
|
288082
|
+
"Usage: /approval-mode <mode> [--session|--user|--project]": "Verwendung: /approval-mode <Modus> [--session|--user|--project]",
|
|
288083
|
+
"Scope subcommands do not accept additional arguments.": "Bereichs-Unterbefehle akzeptieren keine zus\xE4tzlichen Argumente.",
|
|
288084
|
+
"Plan mode - Analyze only, do not modify files or execute commands": "Planungsmodus - Nur analysieren, keine Dateien \xE4ndern oder Befehle ausf\xFChren",
|
|
288085
|
+
"Default mode - Require approval for file edits or shell commands": "Standardmodus - Genehmigung f\xFCr Dateibearbeitungen oder Shell-Befehle erforderlich",
|
|
288086
|
+
"Auto-edit mode - Automatically approve file edits": "Automatischer Bearbeitungsmodus - Dateibearbeitungen automatisch genehmigen",
|
|
288087
|
+
"YOLO mode - Automatically approve all tools": "YOLO-Modus - Alle Werkzeuge automatisch genehmigen",
|
|
288088
|
+
"{{mode}} mode": "{{mode}}-Modus",
|
|
288089
|
+
"Settings service is not available; unable to persist the approval mode.": "Einstellungsdienst nicht verf\xFCgbar; Genehmigungsmodus kann nicht gespeichert werden.",
|
|
288090
|
+
"Failed to save approval mode: {{error}}": "Fehler beim Speichern des Genehmigungsmodus: {{error}}",
|
|
288091
|
+
"Failed to change approval mode: {{error}}": "Fehler beim \xC4ndern des Genehmigungsmodus: {{error}}",
|
|
288092
|
+
"Apply to current session only (temporary)": "Nur auf aktuelle Sitzung anwenden (tempor\xE4r)",
|
|
288093
|
+
"Persist for this project/workspace": "F\xFCr dieses Projekt/Arbeitsbereich speichern",
|
|
288094
|
+
"Persist for this user on this machine": "F\xFCr diesen Benutzer auf diesem Computer speichern",
|
|
288095
|
+
"Analyze only, do not modify files or execute commands": "Nur analysieren, keine Dateien \xE4ndern oder Befehle ausf\xFChren",
|
|
288096
|
+
"Require approval for file edits or shell commands": "Genehmigung f\xFCr Dateibearbeitungen oder Shell-Befehle erforderlich",
|
|
288097
|
+
"Automatically approve file edits": "Dateibearbeitungen automatisch genehmigen",
|
|
288098
|
+
"Automatically approve all tools": "Alle Werkzeuge automatisch genehmigen",
|
|
288099
|
+
"Workspace approval mode exists and takes priority. User-level change will have no effect.": "Arbeitsbereich-Genehmigungsmodus existiert und hat Vorrang. Benutzerebene-\xC4nderung hat keine Wirkung.",
|
|
288100
|
+
"(Use Enter to select, Tab to change focus)": "(Enter zum Ausw\xE4hlen, Tab zum Fokuswechsel)",
|
|
288101
|
+
"Apply To": "Anwenden auf",
|
|
288102
|
+
"User Settings": "Benutzereinstellungen",
|
|
288103
|
+
"Workspace Settings": "Arbeitsbereich-Einstellungen",
|
|
288104
|
+
// ============================================================================
|
|
288105
|
+
// Commands - Memory
|
|
288106
|
+
// ============================================================================
|
|
288107
|
+
"Commands for interacting with memory.": "Befehle f\xFCr die Interaktion mit dem Speicher.",
|
|
288108
|
+
"Show the current memory contents.": "Aktuellen Speicherinhalt anzeigen.",
|
|
288109
|
+
"Show project-level memory contents.": "Projektebene-Speicherinhalt anzeigen.",
|
|
288110
|
+
"Show global memory contents.": "Globalen Speicherinhalt anzeigen.",
|
|
288111
|
+
"Add content to project-level memory.": "Inhalt zum Projektebene-Speicher hinzuf\xFCgen.",
|
|
288112
|
+
"Add content to global memory.": "Inhalt zum globalen Speicher hinzuf\xFCgen.",
|
|
288113
|
+
"Refresh the memory from the source.": "Speicher aus der Quelle aktualisieren.",
|
|
288114
|
+
"Usage: /memory add --project <text to remember>": "Verwendung: /memory add --project <zu merkender Text>",
|
|
288115
|
+
"Usage: /memory add --global <text to remember>": "Verwendung: /memory add --global <zu merkender Text>",
|
|
288116
|
+
'Attempting to save to project memory: "{{text}}"': 'Versuche im Projektspeicher zu speichern: "{{text}}"',
|
|
288117
|
+
'Attempting to save to global memory: "{{text}}"': 'Versuche im globalen Speicher zu speichern: "{{text}}"',
|
|
288118
|
+
"Current memory content from {{count}} file(s):": "Aktueller Speicherinhalt aus {{count}} Datei(en):",
|
|
288119
|
+
"Memory is currently empty.": "Speicher ist derzeit leer.",
|
|
288120
|
+
"Project memory file not found or is currently empty.": "Projektspeicherdatei nicht gefunden oder derzeit leer.",
|
|
288121
|
+
"Global memory file not found or is currently empty.": "Globale Speicherdatei nicht gefunden oder derzeit leer.",
|
|
288122
|
+
"Global memory is currently empty.": "Globaler Speicher ist derzeit leer.",
|
|
288123
|
+
"Global memory content:\n\n---\n{{content}}\n---": "Globaler Speicherinhalt:\n\n---\n{{content}}\n---",
|
|
288124
|
+
"Project memory content from {{path}}:\n\n---\n{{content}}\n---": "Projektspeicherinhalt von {{path}}:\n\n---\n{{content}}\n---",
|
|
288125
|
+
"Project memory is currently empty.": "Projektspeicher ist derzeit leer.",
|
|
288126
|
+
"Refreshing memory from source files...": "Speicher wird aus Quelldateien aktualisiert...",
|
|
288127
|
+
"Add content to the memory. Use --global for global memory or --project for project memory.": "Inhalt zum Speicher hinzuf\xFCgen. --global f\xFCr globalen Speicher oder --project f\xFCr Projektspeicher verwenden.",
|
|
288128
|
+
"Usage: /memory add [--global|--project] <text to remember>": "Verwendung: /memory add [--global|--project] <zu merkender Text>",
|
|
288129
|
+
'Attempting to save to memory {{scope}}: "{{fact}}"': 'Versuche im Speicher {{scope}} zu speichern: "{{fact}}"',
|
|
288130
|
+
// ============================================================================
|
|
288131
|
+
// Commands - MCP
|
|
288132
|
+
// ============================================================================
|
|
288133
|
+
"Authenticate with an OAuth-enabled MCP server": "Mit einem OAuth-f\xE4higen MCP-Server authentifizieren",
|
|
288134
|
+
"List configured MCP servers and tools": "Konfigurierte MCP-Server und Werkzeuge auflisten",
|
|
288135
|
+
"Restarts MCP servers.": "MCP-Server neu starten.",
|
|
288136
|
+
"Config not loaded.": "Konfiguration nicht geladen.",
|
|
288137
|
+
"Could not retrieve tool registry.": "Werkzeugregister konnte nicht abgerufen werden.",
|
|
288138
|
+
"No MCP servers configured with OAuth authentication.": "Keine MCP-Server mit OAuth-Authentifizierung konfiguriert.",
|
|
288139
|
+
"MCP servers with OAuth authentication:": "MCP-Server mit OAuth-Authentifizierung:",
|
|
288140
|
+
"Use /mcp auth <server-name> to authenticate.": "Verwenden Sie /mcp auth <Servername> zur Authentifizierung.",
|
|
288141
|
+
"MCP server '{{name}}' not found.": "MCP-Server '{{name}}' nicht gefunden.",
|
|
288142
|
+
"Successfully authenticated and refreshed tools for '{{name}}'.": "Erfolgreich authentifiziert und Werkzeuge f\xFCr '{{name}}' aktualisiert.",
|
|
288143
|
+
"Failed to authenticate with MCP server '{{name}}': {{error}}": "Authentifizierung mit MCP-Server '{{name}}' fehlgeschlagen: {{error}}",
|
|
288144
|
+
"Re-discovering tools from '{{name}}'...": "Werkzeuge von '{{name}}' werden neu erkannt...",
|
|
288145
|
+
// ============================================================================
|
|
288146
|
+
// Commands - Chat
|
|
288147
|
+
// ============================================================================
|
|
288148
|
+
"Manage conversation history.": "Gespr\xE4chsverlauf verwalten.",
|
|
288149
|
+
"List saved conversation checkpoints": "Gespeicherte Gespr\xE4chspr\xFCfpunkte auflisten",
|
|
288150
|
+
"No saved conversation checkpoints found.": "Keine gespeicherten Gespr\xE4chspr\xFCfpunkte gefunden.",
|
|
288151
|
+
"List of saved conversations:": "Liste gespeicherter Gespr\xE4che:",
|
|
288152
|
+
"Note: Newest last, oldest first": "Hinweis: Neueste zuletzt, \xE4lteste zuerst",
|
|
288153
|
+
"Save the current conversation as a checkpoint. Usage: /chat save <tag>": "Aktuelles Gespr\xE4ch als Pr\xFCfpunkt speichern. Verwendung: /chat save <Tag>",
|
|
288154
|
+
"Missing tag. Usage: /chat save <tag>": "Tag fehlt. Verwendung: /chat save <Tag>",
|
|
288155
|
+
"Delete a conversation checkpoint. Usage: /chat delete <tag>": "Gespr\xE4chspr\xFCfpunkt l\xF6schen. Verwendung: /chat delete <Tag>",
|
|
288156
|
+
"Missing tag. Usage: /chat delete <tag>": "Tag fehlt. Verwendung: /chat delete <Tag>",
|
|
288157
|
+
"Conversation checkpoint '{{tag}}' has been deleted.": "Gespr\xE4chspr\xFCfpunkt '{{tag}}' wurde gel\xF6scht.",
|
|
288158
|
+
"Error: No checkpoint found with tag '{{tag}}'.": "Fehler: Kein Pr\xFCfpunkt mit Tag '{{tag}}' gefunden.",
|
|
288159
|
+
"Resume a conversation from a checkpoint. Usage: /chat resume <tag>": "Gespr\xE4ch von einem Pr\xFCfpunkt fortsetzen. Verwendung: /chat resume <Tag>",
|
|
288160
|
+
"Missing tag. Usage: /chat resume <tag>": "Tag fehlt. Verwendung: /chat resume <Tag>",
|
|
288161
|
+
"No saved checkpoint found with tag: {{tag}}.": "Kein gespeicherter Pr\xFCfpunkt mit Tag gefunden: {{tag}}.",
|
|
288162
|
+
"A checkpoint with the tag {{tag}} already exists. Do you want to overwrite it?": "Ein Pr\xFCfpunkt mit dem Tag {{tag}} existiert bereits. M\xF6chten Sie ihn \xFCberschreiben?",
|
|
288163
|
+
"No chat client available to save conversation.": "Kein Chat-Client verf\xFCgbar, um Gespr\xE4ch zu speichern.",
|
|
288164
|
+
"Conversation checkpoint saved with tag: {{tag}}.": "Gespr\xE4chspr\xFCfpunkt gespeichert mit Tag: {{tag}}.",
|
|
288165
|
+
"No conversation found to save.": "Kein Gespr\xE4ch zum Speichern gefunden.",
|
|
288166
|
+
"No chat client available to share conversation.": "Kein Chat-Client verf\xFCgbar, um Gespr\xE4ch zu teilen.",
|
|
288167
|
+
"Invalid file format. Only .md and .json are supported.": "Ung\xFCltiges Dateiformat. Nur .md und .json werden unterst\xFCtzt.",
|
|
288168
|
+
"Error sharing conversation: {{error}}": "Fehler beim Teilen des Gespr\xE4chs: {{error}}",
|
|
288169
|
+
"Conversation shared to {{filePath}}": "Gespr\xE4ch geteilt nach {{filePath}}",
|
|
288170
|
+
"No conversation found to share.": "Kein Gespr\xE4ch zum Teilen gefunden.",
|
|
288171
|
+
"Share the current conversation to a markdown or json file. Usage: /chat share <file>": "Aktuelles Gespr\xE4ch in eine Markdown- oder JSON-Datei teilen. Verwendung: /chat share <Datei>",
|
|
288172
|
+
// ============================================================================
|
|
288173
|
+
// Commands - Summary
|
|
288174
|
+
// ============================================================================
|
|
288175
|
+
"Generate a project summary and save it to .qwen/PROJECT_SUMMARY.md": "Projektzusammenfassung generieren und in .qwen/PROJECT_SUMMARY.md speichern",
|
|
288176
|
+
"No chat client available to generate summary.": "Kein Chat-Client verf\xFCgbar, um Zusammenfassung zu generieren.",
|
|
288177
|
+
"Already generating summary, wait for previous request to complete": "Zusammenfassung wird bereits generiert, warten Sie auf Abschluss der vorherigen Anfrage",
|
|
288178
|
+
"No conversation found to summarize.": "Kein Gespr\xE4ch zum Zusammenfassen gefunden.",
|
|
288179
|
+
"Failed to generate project context summary: {{error}}": "Fehler beim Generieren der Projektkontextzusammenfassung: {{error}}",
|
|
288180
|
+
"Saved project summary to {{filePathForDisplay}}.": "Projektzusammenfassung gespeichert unter {{filePathForDisplay}}.",
|
|
288181
|
+
"Saving project summary...": "Projektzusammenfassung wird gespeichert...",
|
|
288182
|
+
"Generating project summary...": "Projektzusammenfassung wird generiert...",
|
|
288183
|
+
"Failed to generate summary - no text content received from LLM response": "Fehler beim Generieren der Zusammenfassung - kein Textinhalt von LLM-Antwort erhalten",
|
|
288184
|
+
// ============================================================================
|
|
288185
|
+
// Commands - Model
|
|
288186
|
+
// ============================================================================
|
|
288187
|
+
"Switch the model for this session": "Modell f\xFCr diese Sitzung wechseln",
|
|
288188
|
+
"Content generator configuration not available.": "Inhaltsgenerator-Konfiguration nicht verf\xFCgbar.",
|
|
288189
|
+
"Authentication type not available.": "Authentifizierungstyp nicht verf\xFCgbar.",
|
|
288190
|
+
"No models available for the current authentication type ({{authType}}).": "Keine Modelle f\xFCr den aktuellen Authentifizierungstyp ({{authType}}) verf\xFCgbar.",
|
|
288191
|
+
// ============================================================================
|
|
288192
|
+
// Commands - Clear
|
|
288193
|
+
// ============================================================================
|
|
288194
|
+
"Starting a new session, resetting chat, and clearing terminal.": "Neue Sitzung wird gestartet, Chat wird zur\xFCckgesetzt und Terminal wird gel\xF6scht.",
|
|
288195
|
+
"Starting a new session and clearing.": "Neue Sitzung wird gestartet und gel\xF6scht.",
|
|
288196
|
+
// ============================================================================
|
|
288197
|
+
// Commands - Compress
|
|
288198
|
+
// ============================================================================
|
|
288199
|
+
"Already compressing, wait for previous request to complete": "Komprimierung l\xE4uft bereits, warten Sie auf Abschluss der vorherigen Anfrage",
|
|
288200
|
+
"Failed to compress chat history.": "Fehler beim Komprimieren des Chatverlaufs.",
|
|
288201
|
+
"Failed to compress chat history: {{error}}": "Fehler beim Komprimieren des Chatverlaufs: {{error}}",
|
|
288202
|
+
"Compressing chat history": "Chatverlauf wird komprimiert",
|
|
288203
|
+
"Chat history compressed from {{originalTokens}} to {{newTokens}} tokens.": "Chatverlauf komprimiert von {{originalTokens}} auf {{newTokens}} Token.",
|
|
288204
|
+
"Compression was not beneficial for this history size.": "Komprimierung war f\xFCr diese Verlaufsgr\xF6\xDFe nicht vorteilhaft.",
|
|
288205
|
+
"Chat history compression did not reduce size. This may indicate issues with the compression prompt.": "Chatverlauf-Komprimierung hat die Gr\xF6\xDFe nicht reduziert. Dies kann auf Probleme mit dem Komprimierungs-Prompt hindeuten.",
|
|
288206
|
+
"Could not compress chat history due to a token counting error.": "Chatverlauf konnte aufgrund eines Token-Z\xE4hlfehlers nicht komprimiert werden.",
|
|
288207
|
+
"Chat history is already compressed.": "Chatverlauf ist bereits komprimiert.",
|
|
288208
|
+
// ============================================================================
|
|
288209
|
+
// Commands - Directory
|
|
288210
|
+
// ============================================================================
|
|
288211
|
+
"Configuration is not available.": "Konfiguration ist nicht verf\xFCgbar.",
|
|
288212
|
+
"Please provide at least one path to add.": "Bitte geben Sie mindestens einen Pfad zum Hinzuf\xFCgen an.",
|
|
288213
|
+
"The /directory add command is not supported in restrictive sandbox profiles. Please use --include-directories when starting the session instead.": "Der Befehl /directory add wird in restriktiven Sandbox-Profilen nicht unterst\xFCtzt. Bitte verwenden Sie --include-directories beim Starten der Sitzung.",
|
|
288214
|
+
"Error adding '{{path}}': {{error}}": "Fehler beim Hinzuf\xFCgen von '{{path}}': {{error}}",
|
|
288215
|
+
"Successfully added QWEN.md files from the following directories if there are:\n- {{directories}}": "QWEN.md-Dateien aus folgenden Verzeichnissen erfolgreich hinzugef\xFCgt, falls vorhanden:\n- {{directories}}",
|
|
288216
|
+
"Error refreshing memory: {{error}}": "Fehler beim Aktualisieren des Speichers: {{error}}",
|
|
288217
|
+
"Successfully added directories:\n- {{directories}}": "Verzeichnisse erfolgreich hinzugef\xFCgt:\n- {{directories}}",
|
|
288218
|
+
"Current workspace directories:\n{{directories}}": "Aktuelle Arbeitsbereichsverzeichnisse:\n{{directories}}",
|
|
288219
|
+
// ============================================================================
|
|
288220
|
+
// Commands - Docs
|
|
288221
|
+
// ============================================================================
|
|
288222
|
+
"Please open the following URL in your browser to view the documentation:\n{{url}}": "Bitte \xF6ffnen Sie folgende URL in Ihrem Browser, um die Dokumentation anzusehen:\n{{url}}",
|
|
288223
|
+
"Opening documentation in your browser: {{url}}": "Dokumentation wird in Ihrem Browser ge\xF6ffnet: {{url}}",
|
|
288224
|
+
// ============================================================================
|
|
288225
|
+
// Dialogs - Tool Confirmation
|
|
288226
|
+
// ============================================================================
|
|
288227
|
+
"Do you want to proceed?": "M\xF6chten Sie fortfahren?",
|
|
288228
|
+
"Yes, allow once": "Ja, einmal erlauben",
|
|
288229
|
+
"Allow always": "Immer erlauben",
|
|
288230
|
+
No: "Nein",
|
|
288231
|
+
"No (esc)": "Nein (Esc)",
|
|
288232
|
+
"Yes, allow always for this session": "Ja, f\xFCr diese Sitzung immer erlauben",
|
|
288233
|
+
"Modify in progress:": "\xC4nderung in Bearbeitung:",
|
|
288234
|
+
"Save and close external editor to continue": "Speichern und externen Editor schlie\xDFen, um fortzufahren",
|
|
288235
|
+
"Apply this change?": "Diese \xC4nderung anwenden?",
|
|
288236
|
+
"Yes, allow always": "Ja, immer erlauben",
|
|
288237
|
+
"Modify with external editor": "Mit externem Editor bearbeiten",
|
|
288238
|
+
"No, suggest changes (esc)": "Nein, \xC4nderungen vorschlagen (Esc)",
|
|
288239
|
+
"Allow execution of: '{{command}}'?": "Ausf\xFChrung erlauben von: '{{command}}'?",
|
|
288240
|
+
"Yes, allow always ...": "Ja, immer erlauben ...",
|
|
288241
|
+
"Yes, and auto-accept edits": "Ja, und \xC4nderungen automatisch akzeptieren",
|
|
288242
|
+
"Yes, and manually approve edits": "Ja, und \xC4nderungen manuell genehmigen",
|
|
288243
|
+
"No, keep planning (esc)": "Nein, weiter planen (Esc)",
|
|
288244
|
+
"URLs to fetch:": "Abzurufende URLs:",
|
|
288245
|
+
"MCP Server: {{server}}": "MCP-Server: {{server}}",
|
|
288246
|
+
"Tool: {{tool}}": "Werkzeug: {{tool}}",
|
|
288247
|
+
'Allow execution of MCP tool "{{tool}}" from server "{{server}}"?': 'Ausf\xFChrung des MCP-Werkzeugs "{{tool}}" von Server "{{server}}" erlauben?',
|
|
288248
|
+
'Yes, always allow tool "{{tool}}" from server "{{server}}"': 'Ja, Werkzeug "{{tool}}" von Server "{{server}}" immer erlauben',
|
|
288249
|
+
'Yes, always allow all tools from server "{{server}}"': 'Ja, alle Werkzeuge von Server "{{server}}" immer erlauben',
|
|
288250
|
+
// ============================================================================
|
|
288251
|
+
// Dialogs - Shell Confirmation
|
|
288252
|
+
// ============================================================================
|
|
288253
|
+
"Shell Command Execution": "Shell-Befehlsausf\xFChrung",
|
|
288254
|
+
"A custom command wants to run the following shell commands:": "Ein benutzerdefinierter Befehl m\xF6chte folgende Shell-Befehle ausf\xFChren:",
|
|
288255
|
+
// ============================================================================
|
|
288256
|
+
// Dialogs - Pro Quota
|
|
288257
|
+
// ============================================================================
|
|
288258
|
+
"Pro quota limit reached for {{model}}.": "Pro-Kontingentlimit f\xFCr {{model}} erreicht.",
|
|
288259
|
+
"Change auth (executes the /auth command)": "Authentifizierung \xE4ndern (f\xFChrt den /auth-Befehl aus)",
|
|
288260
|
+
"Continue with {{model}}": "Mit {{model}} fortfahren",
|
|
288261
|
+
// ============================================================================
|
|
288262
|
+
// Dialogs - Welcome Back
|
|
288263
|
+
// ============================================================================
|
|
288264
|
+
"Current Plan:": "Aktueller Plan:",
|
|
288265
|
+
"Progress: {{done}}/{{total}} tasks completed": "Fortschritt: {{done}}/{{total}} Aufgaben abgeschlossen",
|
|
288266
|
+
", {{inProgress}} in progress": ", {{inProgress}} in Bearbeitung",
|
|
288267
|
+
"Pending Tasks:": "Ausstehende Aufgaben:",
|
|
288268
|
+
"What would you like to do?": "Was m\xF6chten Sie tun?",
|
|
288269
|
+
"Choose how to proceed with your session:": "W\xE4hlen Sie, wie Sie mit Ihrer Sitzung fortfahren m\xF6chten:",
|
|
288270
|
+
"Start new chat session": "Neue Chat-Sitzung starten",
|
|
288271
|
+
"Continue previous conversation": "Vorheriges Gespr\xE4ch fortsetzen",
|
|
288272
|
+
"\u{1F44B} Welcome back! (Last updated: {{timeAgo}})": "\u{1F44B} Willkommen zur\xFCck! (Zuletzt aktualisiert: {{timeAgo}})",
|
|
288273
|
+
"\u{1F3AF} Overall Goal:": "\u{1F3AF} Gesamtziel:",
|
|
288274
|
+
// ============================================================================
|
|
288275
|
+
// Dialogs - Auth
|
|
288276
|
+
// ============================================================================
|
|
288277
|
+
"Get started": "Loslegen",
|
|
288278
|
+
"How would you like to authenticate for this project?": "Wie m\xF6chten Sie sich f\xFCr dieses Projekt authentifizieren?",
|
|
288279
|
+
"OpenAI API key is required to use OpenAI authentication.": "OpenAI API-Schl\xFCssel ist f\xFCr die OpenAI-Authentifizierung erforderlich.",
|
|
288280
|
+
"You must select an auth method to proceed. Press Ctrl+C again to exit.": "Sie m\xFCssen eine Authentifizierungsmethode w\xE4hlen, um fortzufahren. Dr\xFCcken Sie erneut Strg+C zum Beenden.",
|
|
288281
|
+
"(Use Enter to Set Auth)": "(Enter zum Festlegen der Authentifizierung)",
|
|
288282
|
+
"Terms of Services and Privacy Notice for Qwen Code": "Nutzungsbedingungen und Datenschutzhinweis f\xFCr Qwen Code",
|
|
288283
|
+
"Qwen OAuth": "Qwen OAuth",
|
|
288284
|
+
OpenAI: "OpenAI",
|
|
288285
|
+
"Failed to login. Message: {{message}}": "Anmeldung fehlgeschlagen. Meldung: {{message}}",
|
|
288286
|
+
"Authentication is enforced to be {{enforcedType}}, but you are currently using {{currentType}}.": "Authentifizierung ist auf {{enforcedType}} festgelegt, aber Sie verwenden derzeit {{currentType}}.",
|
|
288287
|
+
"Qwen OAuth authentication timed out. Please try again.": "Qwen OAuth-Authentifizierung abgelaufen. Bitte versuchen Sie es erneut.",
|
|
288288
|
+
"Qwen OAuth authentication cancelled.": "Qwen OAuth-Authentifizierung abgebrochen.",
|
|
288289
|
+
"Qwen OAuth Authentication": "Qwen OAuth-Authentifizierung",
|
|
288290
|
+
"Please visit this URL to authorize:": "Bitte besuchen Sie diese URL zur Autorisierung:",
|
|
288291
|
+
"Or scan the QR code below:": "Oder scannen Sie den QR-Code unten:",
|
|
288292
|
+
"Waiting for authorization": "Warten auf Autorisierung",
|
|
288293
|
+
"Time remaining:": "Verbleibende Zeit:",
|
|
288294
|
+
"(Press ESC or CTRL+C to cancel)": "(ESC oder STRG+C zum Abbrechen dr\xFCcken)",
|
|
288295
|
+
"Qwen OAuth Authentication Timeout": "Qwen OAuth-Authentifizierung abgelaufen",
|
|
288296
|
+
"OAuth token expired (over {{seconds}} seconds). Please select authentication method again.": "OAuth-Token abgelaufen (\xFCber {{seconds}} Sekunden). Bitte w\xE4hlen Sie erneut eine Authentifizierungsmethode.",
|
|
288297
|
+
"Press any key to return to authentication type selection.": "Dr\xFCcken Sie eine beliebige Taste, um zur Authentifizierungstypauswahl zur\xFCckzukehren.",
|
|
288298
|
+
"Waiting for Qwen OAuth authentication...": "Warten auf Qwen OAuth-Authentifizierung...",
|
|
288299
|
+
"Note: Your existing API key in settings.json will not be cleared when using Qwen OAuth. You can switch back to OpenAI authentication later if needed.": "Hinweis: Ihr bestehender API-Schl\xFCssel in settings.json wird bei Verwendung von Qwen OAuth nicht gel\xF6scht. Sie k\xF6nnen sp\xE4ter bei Bedarf zur OpenAI-Authentifizierung zur\xFCckwechseln.",
|
|
288300
|
+
"Authentication timed out. Please try again.": "Authentifizierung abgelaufen. Bitte versuchen Sie es erneut.",
|
|
288301
|
+
"Waiting for auth... (Press ESC or CTRL+C to cancel)": "Warten auf Authentifizierung... (ESC oder STRG+C zum Abbrechen dr\xFCcken)",
|
|
288302
|
+
"Failed to authenticate. Message: {{message}}": "Authentifizierung fehlgeschlagen. Meldung: {{message}}",
|
|
288303
|
+
"Authenticated successfully with {{authType}} credentials.": "Erfolgreich mit {{authType}}-Anmeldedaten authentifiziert.",
|
|
288304
|
+
'Invalid QWEN_DEFAULT_AUTH_TYPE value: "{{value}}". Valid values are: {{validValues}}': 'Ung\xFCltiger QWEN_DEFAULT_AUTH_TYPE-Wert: "{{value}}". G\xFCltige Werte sind: {{validValues}}',
|
|
288305
|
+
"OpenAI Configuration Required": "OpenAI-Konfiguration erforderlich",
|
|
288306
|
+
"Please enter your OpenAI configuration. You can get an API key from": "Bitte geben Sie Ihre OpenAI-Konfiguration ein. Sie k\xF6nnen einen API-Schl\xFCssel erhalten von",
|
|
288307
|
+
"API Key:": "API-Schl\xFCssel:",
|
|
288308
|
+
"Invalid credentials: {{errorMessage}}": "Ung\xFCltige Anmeldedaten: {{errorMessage}}",
|
|
288309
|
+
"Failed to validate credentials": "Anmeldedaten konnten nicht validiert werden",
|
|
288310
|
+
"Press Enter to continue, Tab/\u2191\u2193 to navigate, Esc to cancel": "Enter zum Fortfahren, Tab/\u2191\u2193 zum Navigieren, Esc zum Abbrechen",
|
|
288311
|
+
// ============================================================================
|
|
288312
|
+
// Dialogs - Model
|
|
288313
|
+
// ============================================================================
|
|
288314
|
+
"Select Model": "Modell ausw\xE4hlen",
|
|
288315
|
+
"(Press Esc to close)": "(Esc zum Schlie\xDFen dr\xFCcken)",
|
|
288316
|
+
"The latest Qwen Coder model from Alibaba Cloud ModelStudio (version: qwen3-coder-plus-2025-09-23)": "Das neueste Qwen Coder Modell von Alibaba Cloud ModelStudio (Version: qwen3-coder-plus-2025-09-23)",
|
|
288317
|
+
"The latest Qwen Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)": "Das neueste Qwen Vision Modell von Alibaba Cloud ModelStudio (Version: qwen3-vl-plus-2025-09-23)",
|
|
288318
|
+
// ============================================================================
|
|
288319
|
+
// Dialogs - Permissions
|
|
288320
|
+
// ============================================================================
|
|
288321
|
+
"Manage folder trust settings": "Ordnervertrauenseinstellungen verwalten",
|
|
288322
|
+
// ============================================================================
|
|
288323
|
+
// Status Bar
|
|
288324
|
+
// ============================================================================
|
|
288325
|
+
"Using:": "Verwendet:",
|
|
288326
|
+
"{{count}} open file": "{{count}} ge\xF6ffnete Datei",
|
|
288327
|
+
"{{count}} open files": "{{count}} ge\xF6ffnete Dateien",
|
|
288328
|
+
"(ctrl+g to view)": "(Strg+G zum Anzeigen)",
|
|
288329
|
+
"{{count}} {{name}} file": "{{count}} {{name}}-Datei",
|
|
288330
|
+
"{{count}} {{name}} files": "{{count}} {{name}}-Dateien",
|
|
288331
|
+
"{{count}} MCP server": "{{count}} MCP-Server",
|
|
288332
|
+
"{{count}} MCP servers": "{{count}} MCP-Server",
|
|
288333
|
+
"{{count}} Blocked": "{{count}} blockiert",
|
|
288334
|
+
"(ctrl+t to view)": "(Strg+T zum Anzeigen)",
|
|
288335
|
+
"(ctrl+t to toggle)": "(Strg+T zum Umschalten)",
|
|
288336
|
+
"Press Ctrl+C again to exit.": "Dr\xFCcken Sie erneut Strg+C zum Beenden.",
|
|
288337
|
+
"Press Ctrl+D again to exit.": "Dr\xFCcken Sie erneut Strg+D zum Beenden.",
|
|
288338
|
+
"Press Esc again to clear.": "Dr\xFCcken Sie erneut Esc zum L\xF6schen.",
|
|
288339
|
+
// ============================================================================
|
|
288340
|
+
// MCP Status
|
|
288341
|
+
// ============================================================================
|
|
288342
|
+
"No MCP servers configured.": "Keine MCP-Server konfiguriert.",
|
|
288343
|
+
"Please view MCP documentation in your browser:": "Bitte sehen Sie die MCP-Dokumentation in Ihrem Browser:",
|
|
288344
|
+
"or use the cli /docs command": "oder verwenden Sie den CLI-Befehl /docs",
|
|
288345
|
+
"\u23F3 MCP servers are starting up ({{count}} initializing)...": "\u23F3 MCP-Server werden gestartet ({{count}} werden initialisiert)...",
|
|
288346
|
+
"Note: First startup may take longer. Tool availability will update automatically.": "Hinweis: Der erste Start kann l\xE4nger dauern. Werkzeugverf\xFCgbarkeit wird automatisch aktualisiert.",
|
|
288347
|
+
"Configured MCP servers:": "Konfigurierte MCP-Server:",
|
|
288348
|
+
Ready: "Bereit",
|
|
288349
|
+
"Starting... (first startup may take longer)": "Wird gestartet... (erster Start kann l\xE4nger dauern)",
|
|
288350
|
+
Disconnected: "Getrennt",
|
|
288351
|
+
"{{count}} tool": "{{count}} Werkzeug",
|
|
288352
|
+
"{{count}} tools": "{{count}} Werkzeuge",
|
|
288353
|
+
"{{count}} prompt": "{{count}} Prompt",
|
|
288354
|
+
"{{count}} prompts": "{{count}} Prompts",
|
|
288355
|
+
"(from {{extensionName}})": "(von {{extensionName}})",
|
|
288356
|
+
OAuth: "OAuth",
|
|
288357
|
+
"OAuth expired": "OAuth abgelaufen",
|
|
288358
|
+
"OAuth not authenticated": "OAuth nicht authentifiziert",
|
|
288359
|
+
"tools and prompts will appear when ready": "Werkzeuge und Prompts werden angezeigt, wenn bereit",
|
|
288360
|
+
"{{count}} tools cached": "{{count}} Werkzeuge zwischengespeichert",
|
|
288361
|
+
"Tools:": "Werkzeuge:",
|
|
288362
|
+
"Parameters:": "Parameter:",
|
|
288363
|
+
"Prompts:": "Prompts:",
|
|
288364
|
+
Blocked: "Blockiert",
|
|
288365
|
+
"\u{1F4A1} Tips:": "\u{1F4A1} Tipps:",
|
|
288366
|
+
Use: "Verwenden",
|
|
288367
|
+
"to show server and tool descriptions": "um Server- und Werkzeugbeschreibungen anzuzeigen",
|
|
288368
|
+
"to show tool parameter schemas": "um Werkzeug-Parameter-Schemas anzuzeigen",
|
|
288369
|
+
"to hide descriptions": "um Beschreibungen auszublenden",
|
|
288370
|
+
"to authenticate with OAuth-enabled servers": "um sich bei OAuth-f\xE4higen Servern zu authentifizieren",
|
|
288371
|
+
Press: "Dr\xFCcken Sie",
|
|
288372
|
+
"to toggle tool descriptions on/off": "um Werkzeugbeschreibungen ein-/auszuschalten",
|
|
288373
|
+
"Starting OAuth authentication for MCP server '{{name}}'...": "OAuth-Authentifizierung f\xFCr MCP-Server '{{name}}' wird gestartet...",
|
|
288374
|
+
"Restarting MCP servers...": "MCP-Server werden neu gestartet...",
|
|
288375
|
+
// ============================================================================
|
|
288376
|
+
// Startup Tips
|
|
288377
|
+
// ============================================================================
|
|
288378
|
+
"Tips for getting started:": "Tipps zum Einstieg:",
|
|
288379
|
+
"1. Ask questions, edit files, or run commands.": "1. Stellen Sie Fragen, bearbeiten Sie Dateien oder f\xFChren Sie Befehle aus.",
|
|
288380
|
+
"2. Be specific for the best results.": "2. Seien Sie spezifisch f\xFCr die besten Ergebnisse.",
|
|
288381
|
+
"files to customize your interactions with Qwen Code.": "Dateien, um Ihre Interaktionen mit Qwen Code anzupassen.",
|
|
288382
|
+
"for more information.": "f\xFCr weitere Informationen.",
|
|
288383
|
+
// ============================================================================
|
|
288384
|
+
// Exit Screen / Stats
|
|
288385
|
+
// ============================================================================
|
|
288386
|
+
"Agent powering down. Goodbye!": "Agent wird heruntergefahren. Auf Wiedersehen!",
|
|
288387
|
+
"To continue this session, run": "Um diese Sitzung fortzusetzen, f\xFChren Sie aus",
|
|
288388
|
+
"Interaction Summary": "Interaktionszusammenfassung",
|
|
288389
|
+
"Session ID:": "Sitzungs-ID:",
|
|
288390
|
+
"Tool Calls:": "Werkzeugaufrufe:",
|
|
288391
|
+
"Success Rate:": "Erfolgsrate:",
|
|
288392
|
+
"User Agreement:": "Benutzerzustimmung:",
|
|
288393
|
+
reviewed: "\xFCberpr\xFCft",
|
|
288394
|
+
"Code Changes:": "Code\xE4nderungen:",
|
|
288395
|
+
Performance: "Leistung",
|
|
288396
|
+
"Wall Time:": "Gesamtzeit:",
|
|
288397
|
+
"Agent Active:": "Agent aktiv:",
|
|
288398
|
+
"API Time:": "API-Zeit:",
|
|
288399
|
+
"Tool Time:": "Werkzeugzeit:",
|
|
288400
|
+
"Session Stats": "Sitzungsstatistiken",
|
|
288401
|
+
"Model Usage": "Modellnutzung",
|
|
288402
|
+
Reqs: "Anfragen",
|
|
288403
|
+
"Input Tokens": "Eingabe-Token",
|
|
288404
|
+
"Output Tokens": "Ausgabe-Token",
|
|
288405
|
+
"Savings Highlight:": "Einsparungen:",
|
|
288406
|
+
"of input tokens were served from the cache, reducing costs.": "der Eingabe-Token wurden aus dem Cache bedient, was die Kosten reduziert.",
|
|
288407
|
+
"Tip: For a full token breakdown, run `/stats model`.": "Tipp: F\xFCr eine vollst\xE4ndige Token-Aufschl\xFCsselung f\xFChren Sie `/stats model` aus.",
|
|
288408
|
+
"Model Stats For Nerds": "Modellstatistiken f\xFCr Nerds",
|
|
288409
|
+
"Tool Stats For Nerds": "Werkzeugstatistiken f\xFCr Nerds",
|
|
288410
|
+
Metric: "Metrik",
|
|
288411
|
+
API: "API",
|
|
288412
|
+
Requests: "Anfragen",
|
|
288413
|
+
Errors: "Fehler",
|
|
288414
|
+
"Avg Latency": "Durchschn. Latenz",
|
|
288415
|
+
Tokens: "Token",
|
|
288416
|
+
Total: "Gesamt",
|
|
288417
|
+
Prompt: "Prompt",
|
|
288418
|
+
Cached: "Zwischengespeichert",
|
|
288419
|
+
Thoughts: "Gedanken",
|
|
288420
|
+
Tool: "Werkzeug",
|
|
288421
|
+
Output: "Ausgabe",
|
|
288422
|
+
"No API calls have been made in this session.": "In dieser Sitzung wurden keine API-Aufrufe gemacht.",
|
|
288423
|
+
"Tool Name": "Werkzeugname",
|
|
288424
|
+
Calls: "Aufrufe",
|
|
288425
|
+
"Success Rate": "Erfolgsrate",
|
|
288426
|
+
"Avg Duration": "Durchschn. Dauer",
|
|
288427
|
+
"User Decision Summary": "Benutzerentscheidungs-Zusammenfassung",
|
|
288428
|
+
"Total Reviewed Suggestions:": "Insgesamt \xFCberpr\xFCfter Vorschl\xE4ge:",
|
|
288429
|
+
" \xBB Accepted:": " \xBB Akzeptiert:",
|
|
288430
|
+
" \xBB Rejected:": " \xBB Abgelehnt:",
|
|
288431
|
+
" \xBB Modified:": " \xBB Ge\xE4ndert:",
|
|
288432
|
+
" Overall Agreement Rate:": " Gesamtzustimmungsrate:",
|
|
288433
|
+
"No tool calls have been made in this session.": "In dieser Sitzung wurden keine Werkzeugaufrufe gemacht.",
|
|
288434
|
+
"Session start time is unavailable, cannot calculate stats.": "Sitzungsstartzeit nicht verf\xFCgbar, Statistiken k\xF6nnen nicht berechnet werden.",
|
|
288435
|
+
// ============================================================================
|
|
288436
|
+
// Loading Phrases
|
|
288437
|
+
// ============================================================================
|
|
288438
|
+
"Waiting for user confirmation...": "Warten auf Benutzerbest\xE4tigung...",
|
|
288439
|
+
"(esc to cancel, {{time}})": "(Esc zum Abbrechen, {{time}})",
|
|
288440
|
+
// ============================================================================
|
|
288441
|
+
// Loading Phrases
|
|
288442
|
+
// ============================================================================
|
|
288443
|
+
WITTY_LOADING_PHRASES: [
|
|
288444
|
+
"Auf gut Gl\xFCck!",
|
|
288445
|
+
"Genialit\xE4t wird ausgeliefert...",
|
|
288446
|
+
"Die Serifen werden aufgemalt...",
|
|
288447
|
+
"Durch den Schleimpilz navigieren...",
|
|
288448
|
+
"Die digitalen Geister werden befragt...",
|
|
288449
|
+
"Splines werden retikuliert...",
|
|
288450
|
+
"Die KI-Hamster werden aufgew\xE4rmt...",
|
|
288451
|
+
"Die Zaubermuschel wird befragt...",
|
|
288452
|
+
"Witzige Erwiderung wird generiert...",
|
|
288453
|
+
"Die Algorithmen werden poliert...",
|
|
288454
|
+
"Perfektion braucht Zeit (mein Code auch)...",
|
|
288455
|
+
"Frische Bytes werden gebr\xFCht...",
|
|
288456
|
+
"Elektronen werden gez\xE4hlt...",
|
|
288457
|
+
"Kognitive Prozessoren werden aktiviert...",
|
|
288458
|
+
"Auf Syntaxfehler im Universum wird gepr\xFCft...",
|
|
288459
|
+
"Einen Moment, Humor wird optimiert...",
|
|
288460
|
+
"Pointen werden gemischt...",
|
|
288461
|
+
"Neuronale Netze werden entwirrt...",
|
|
288462
|
+
"Brillanz wird kompiliert...",
|
|
288463
|
+
"wit.exe wird geladen...",
|
|
288464
|
+
"Die Wolke der Weisheit wird beschworen...",
|
|
288465
|
+
"Eine witzige Antwort wird vorbereitet...",
|
|
288466
|
+
"Einen Moment, ich debugge die Realit\xE4t...",
|
|
288467
|
+
"Die Optionen werden verwirrt...",
|
|
288468
|
+
"Kosmische Frequenzen werden eingestellt...",
|
|
288469
|
+
"Eine Antwort wird erstellt, die Ihrer Geduld w\xFCrdig ist...",
|
|
288470
|
+
"Die Einsen und Nullen werden kompiliert...",
|
|
288471
|
+
"Abh\xE4ngigkeiten werden aufgel\xF6st... und existenzielle Krisen...",
|
|
288472
|
+
"Erinnerungen werden defragmentiert... sowohl RAM als auch pers\xF6nliche...",
|
|
288473
|
+
"Das Humor-Modul wird neu gestartet...",
|
|
288474
|
+
"Das Wesentliche wird zwischengespeichert (haupts\xE4chlich Katzen-Memes)...",
|
|
288475
|
+
"F\xFCr l\xE4cherliche Geschwindigkeit wird optimiert",
|
|
288476
|
+
"Bits werden getauscht... sagen Sie es nicht den Bytes...",
|
|
288477
|
+
"Garbage Collection l\xE4uft... bin gleich zur\xFCck...",
|
|
288478
|
+
"Das Internet wird zusammengebaut...",
|
|
288479
|
+
"Kaffee wird in Code umgewandelt...",
|
|
288480
|
+
"Die Syntax der Realit\xE4t wird aktualisiert...",
|
|
288481
|
+
"Die Synapsen werden neu verdrahtet...",
|
|
288482
|
+
"Ein verlegtes Semikolon wird gesucht...",
|
|
288483
|
+
"Die Zahnr\xE4der werden geschmiert...",
|
|
288484
|
+
"Die Server werden vorgeheizt...",
|
|
288485
|
+
"Der Fluxkompensator wird kalibriert...",
|
|
288486
|
+
"Der Unwahrscheinlichkeitsantrieb wird aktiviert...",
|
|
288487
|
+
"Die Macht wird kanalisiert...",
|
|
288488
|
+
"Die Sterne werden f\xFCr optimale Antwort ausgerichtet...",
|
|
288489
|
+
"So sagen wir alle...",
|
|
288490
|
+
"Die n\xE4chste gro\xDFe Idee wird geladen...",
|
|
288491
|
+
"Einen Moment, ich bin in der Zone...",
|
|
288492
|
+
"Bereite mich vor, Sie mit Brillanz zu blenden...",
|
|
288493
|
+
"Einen Augenblick, ich poliere meinen Witz...",
|
|
288494
|
+
"Halten Sie durch, ich erschaffe ein Meisterwerk...",
|
|
288495
|
+
"Einen Moment, ich debugge das Universum...",
|
|
288496
|
+
"Einen Moment, ich richte die Pixel aus...",
|
|
288497
|
+
"Einen Moment, ich optimiere den Humor...",
|
|
288498
|
+
"Einen Moment, ich tune die Algorithmen...",
|
|
288499
|
+
"Warp-Geschwindigkeit aktiviert...",
|
|
288500
|
+
"Mehr Dilithium-Kristalle werden gesucht...",
|
|
288501
|
+
"Keine Panik...",
|
|
288502
|
+
"Dem wei\xDFen Kaninchen wird gefolgt...",
|
|
288503
|
+
"Die Wahrheit ist hier drin... irgendwo...",
|
|
288504
|
+
"Auf die Kassette wird gepustet...",
|
|
288505
|
+
"Ladevorgang... Machen Sie eine Fassrolle!",
|
|
288506
|
+
"Auf den Respawn wird gewartet...",
|
|
288507
|
+
"Der Kessel-Flug wird in weniger als 12 Parsec beendet...",
|
|
288508
|
+
"Der Kuchen ist keine L\xFCge, er l\xE4dt nur noch...",
|
|
288509
|
+
"Am Charaktererstellungsbildschirm wird herumgefummelt...",
|
|
288510
|
+
"Einen Moment, ich suche das richtige Meme...",
|
|
288511
|
+
"'A' wird zum Fortfahren gedr\xFCckt...",
|
|
288512
|
+
"Digitale Katzen werden geh\xFCtet...",
|
|
288513
|
+
"Die Pixel werden poliert...",
|
|
288514
|
+
"Ein passender Ladebildschirm-Witz wird gesucht...",
|
|
288515
|
+
"Ich lenke Sie mit diesem witzigen Spruch ab...",
|
|
288516
|
+
"Fast da... wahrscheinlich...",
|
|
288517
|
+
"Unsere Hamster arbeiten so schnell sie k\xF6nnen...",
|
|
288518
|
+
"Cloudy wird am Kopf gestreichelt...",
|
|
288519
|
+
"Die Katze wird gestreichelt...",
|
|
288520
|
+
"Meinen Chef rickrollen...",
|
|
288521
|
+
"Never gonna give you up, never gonna let you down...",
|
|
288522
|
+
"Auf den Bass wird geschlagen...",
|
|
288523
|
+
"Die Schnozbeeren werden probiert...",
|
|
288524
|
+
"I'm going the distance, I'm going for speed...",
|
|
288525
|
+
"Ist dies das wahre Leben? Ist dies nur Fantasie?...",
|
|
288526
|
+
"Ich habe ein gutes Gef\xFChl dabei...",
|
|
288527
|
+
"Den B\xE4ren wird gestupst...",
|
|
288528
|
+
"Recherche zu den neuesten Memes...",
|
|
288529
|
+
"\xDCberlege, wie ich das witziger machen kann...",
|
|
288530
|
+
"Hmmm... lassen Sie mich nachdenken...",
|
|
288531
|
+
"Wie nennt man einen Fisch ohne Augen? Ein Fsh...",
|
|
288532
|
+
"Warum ging der Computer zur Therapie? Er hatte zu viele Bytes...",
|
|
288533
|
+
"Warum m\xF6gen Programmierer keine Natur? Sie hat zu viele Bugs...",
|
|
288534
|
+
"Warum bevorzugen Programmierer den Dunkelmodus? Weil Licht Bugs anzieht...",
|
|
288535
|
+
"Warum ging der Entwickler pleite? Er hat seinen ganzen Cache aufgebraucht...",
|
|
288536
|
+
"Was kann man mit einem kaputten Bleistift machen? Nichts, er ist sinnlos...",
|
|
288537
|
+
"Perkussive Wartung wird angewendet...",
|
|
288538
|
+
"Die richtige USB-Ausrichtung wird gesucht...",
|
|
288539
|
+
"Es wird sichergestellt, dass der magische Rauch in den Kabeln bleibt...",
|
|
288540
|
+
"Versuche Vim zu beenden...",
|
|
288541
|
+
"Das Hamsterrad wird angeworfen...",
|
|
288542
|
+
"Das ist kein Bug, das ist ein undokumentiertes Feature...",
|
|
288543
|
+
"Engage.",
|
|
288544
|
+
"Ich komme wieder... mit einer Antwort.",
|
|
288545
|
+
"Mein anderer Prozess ist eine TARDIS...",
|
|
288546
|
+
"Mit dem Maschinengeist wird kommuniziert...",
|
|
288547
|
+
"Die Gedanken marinieren lassen...",
|
|
288548
|
+
"Gerade erinnert, wo ich meine Schl\xFCssel hingelegt habe...",
|
|
288549
|
+
"\xDCber die Kugel wird nachgedacht...",
|
|
288550
|
+
"Ich habe Dinge gesehen, die Sie nicht glauben w\xFCrden... wie einen Benutzer, der Lademeldungen liest.",
|
|
288551
|
+
"Nachdenklicher Blick wird initiiert...",
|
|
288552
|
+
"Was ist der Lieblingssnack eines Computers? Mikrochips.",
|
|
288553
|
+
"Warum tragen Java-Entwickler Brillen? Weil sie nicht C#.",
|
|
288554
|
+
"Der Laser wird aufgeladen... pew pew!",
|
|
288555
|
+
"Durch Null wird geteilt... nur Spa\xDF!",
|
|
288556
|
+
"Suche nach einem erwachsenen Aufseh... ich meine, Verarbeitung.",
|
|
288557
|
+
"Es piept und boopt.",
|
|
288558
|
+
"Pufferung... weil auch KIs einen Moment brauchen.",
|
|
288559
|
+
"Quantenteilchen werden f\xFCr schnellere Antwort verschr\xE4nkt...",
|
|
288560
|
+
"Das Chrom wird poliert... an den Algorithmen.",
|
|
288561
|
+
"Sind Sie nicht unterhalten? (Arbeite daran!)",
|
|
288562
|
+
"Die Code-Gremlins werden beschworen... zum Helfen, nat\xFCrlich.",
|
|
288563
|
+
"Warte nur auf das Einwahlton-Ende...",
|
|
288564
|
+
"Das Humor-O-Meter wird neu kalibriert.",
|
|
288565
|
+
"Mein anderer Ladebildschirm ist noch lustiger.",
|
|
288566
|
+
"Ziemlich sicher, dass irgendwo eine Katze \xFCber die Tastatur l\xE4uft...",
|
|
288567
|
+
"Verbessern... Verbessern... L\xE4dt noch.",
|
|
288568
|
+
"Das ist kein Bug, das ist ein Feature... dieses Ladebildschirms.",
|
|
288569
|
+
"Haben Sie versucht, es aus- und wieder einzuschalten? (Den Ladebildschirm, nicht mich.)",
|
|
288570
|
+
"Zus\xE4tzliche Pylonen werden gebaut..."
|
|
288571
|
+
]
|
|
288572
|
+
};
|
|
288573
|
+
}
|
|
288574
|
+
});
|
|
288575
|
+
|
|
287566
288576
|
// packages/cli/src/i18n/locales/en.js
|
|
287567
288577
|
var en_exports = {};
|
|
287568
288578
|
__export(en_exports, {
|
|
@@ -287641,6 +288651,8 @@ var init_en3 = __esm({
|
|
|
287641
288651
|
"Available Qwen Code CLI tools:": "Available Qwen Code CLI tools:",
|
|
287642
288652
|
"No tools available": "No tools available",
|
|
287643
288653
|
"View or change the approval mode for tool usage": "View or change the approval mode for tool usage",
|
|
288654
|
+
'Invalid approval mode "{{arg}}". Valid modes: {{modes}}': 'Invalid approval mode "{{arg}}". Valid modes: {{modes}}',
|
|
288655
|
+
'Approval mode set to "{{mode}}"': 'Approval mode set to "{{mode}}"',
|
|
287644
288656
|
"View or change the language setting": "View or change the language setting",
|
|
287645
288657
|
"change the theme": "change the theme",
|
|
287646
288658
|
"Select Theme": "Select Theme",
|
|
@@ -288363,7 +289375,6 @@ var init_en3 = __esm({
|
|
|
288363
289375
|
"Applying percussive maintenance...",
|
|
288364
289376
|
"Searching for the correct USB orientation...",
|
|
288365
289377
|
"Ensuring the magic smoke stays inside the wires...",
|
|
288366
|
-
"Rewriting in Rust for no particular reason...",
|
|
288367
289378
|
"Trying to exit Vim...",
|
|
288368
289379
|
"Spinning up the hamster wheel...",
|
|
288369
289380
|
"That's not a bug, it's an undocumented feature...",
|
|
@@ -288478,6 +289489,8 @@ var init_ru = __esm({
|
|
|
288478
289489
|
"Available Qwen Code CLI tools:": "\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B Qwen Code CLI:",
|
|
288479
289490
|
"No tools available": "\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432",
|
|
288480
289491
|
"View or change the approval mode for tool usage": "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0438\u043B\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435 \u0440\u0435\u0436\u0438\u043C\u0430 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432",
|
|
289492
|
+
'Invalid approval mode "{{arg}}". Valid modes: {{modes}}': '\u041D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0439 \u0440\u0435\u0436\u0438\u043C \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F "{{arg}}". \u0414\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0435 \u0440\u0435\u0436\u0438\u043C\u044B: {{modes}}',
|
|
289493
|
+
'Approval mode set to "{{mode}}"': '\u0420\u0435\u0436\u0438\u043C \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D \u043D\u0430 "{{mode}}"',
|
|
288481
289494
|
"View or change the language setting": "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0438\u043B\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A \u044F\u0437\u044B\u043A\u0430",
|
|
288482
289495
|
"change the theme": "\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435 \u0442\u0435\u043C\u044B",
|
|
288483
289496
|
"Select Theme": "\u0412\u044B\u0431\u043E\u0440 \u0442\u0435\u043C\u044B",
|
|
@@ -289201,7 +290214,6 @@ var init_ru = __esm({
|
|
|
289201
290214
|
"\u041F\u0440\u043E\u0432\u043E\u0436\u0443 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0443 \u043C\u0435\u0442\u043E\u0434\u043E\u043C \u0442\u044B\u043A\u0430...",
|
|
289202
290215
|
"\u0418\u0449\u0435\u043C, \u043A\u0430\u043A\u043E\u0439 \u0441\u0442\u043E\u0440\u043E\u043D\u043E\u0439 \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u0444\u043B\u0435\u0448\u043A\u0443...",
|
|
289203
290216
|
"\u0421\u043B\u0435\u0434\u0438\u043C, \u0447\u0442\u043E\u0431\u044B \u0432\u043E\u043B\u0448\u0435\u0431\u043D\u044B\u0439 \u0434\u044B\u043C \u043D\u0435 \u0432\u044B\u0448\u0435\u043B \u0438\u0437 \u043F\u0440\u043E\u0432\u043E\u0434\u043E\u0432...",
|
|
289204
|
-
"\u041F\u0435\u0440\u0435\u043F\u0438\u0441\u044B\u0432\u0430\u0435\u043C \u0432\u0441\u0451 \u043D\u0430 Rust \u0431\u0435\u0437 \u043E\u0441\u043E\u0431\u043E\u0439 \u043F\u0440\u0438\u0447\u0438\u043D\u044B...",
|
|
289205
290217
|
"\u041F\u044B\u0442\u0430\u0435\u043C\u0441\u044F \u0432\u044B\u0439\u0442\u0438 \u0438\u0437 Vim...",
|
|
289206
290218
|
"\u0420\u0430\u0441\u043A\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u043C \u043A\u043E\u043B\u0435\u0441\u043E \u0434\u043B\u044F \u0445\u043E\u043C\u044F\u043A\u0430...",
|
|
289207
290219
|
"\u042D\u0442\u043E \u043D\u0435 \u0431\u0430\u0433, \u0430 \u0444\u0438\u0447\u0430...",
|
|
@@ -289316,6 +290328,8 @@ var init_zh = __esm({
|
|
|
289316
290328
|
"Available Qwen Code CLI tools:": "\u53EF\u7528\u7684 Qwen Code CLI \u5DE5\u5177\uFF1A",
|
|
289317
290329
|
"No tools available": "\u6CA1\u6709\u53EF\u7528\u5DE5\u5177",
|
|
289318
290330
|
"View or change the approval mode for tool usage": "\u67E5\u770B\u6216\u66F4\u6539\u5DE5\u5177\u4F7F\u7528\u7684\u5BA1\u6279\u6A21\u5F0F",
|
|
290331
|
+
'Invalid approval mode "{{arg}}". Valid modes: {{modes}}': '\u65E0\u6548\u7684\u5BA1\u6279\u6A21\u5F0F "{{arg}}"\u3002\u6709\u6548\u6A21\u5F0F\uFF1A{{modes}}',
|
|
290332
|
+
'Approval mode set to "{{mode}}"': '\u5BA1\u6279\u6A21\u5F0F\u5DF2\u8BBE\u7F6E\u4E3A "{{mode}}"',
|
|
289319
290333
|
"View or change the language setting": "\u67E5\u770B\u6216\u66F4\u6539\u8BED\u8A00\u8BBE\u7F6E",
|
|
289320
290334
|
"change the theme": "\u66F4\u6539\u4E3B\u9898",
|
|
289321
290335
|
"Select Theme": "\u9009\u62E9\u4E3B\u9898",
|
|
@@ -295667,7 +296681,7 @@ var require_client_h12 = __commonJS({
|
|
|
295667
296681
|
kResume,
|
|
295668
296682
|
kHTTPContext
|
|
295669
296683
|
} = require_symbols6();
|
|
295670
|
-
var
|
|
296684
|
+
var constants5 = require_constants15();
|
|
295671
296685
|
var EMPTY_BUF = Buffer.alloc(0);
|
|
295672
296686
|
var FastBuffer = Buffer[Symbol.species];
|
|
295673
296687
|
var addListener = util4.addListener;
|
|
@@ -295743,7 +296757,7 @@ var require_client_h12 = __commonJS({
|
|
|
295743
296757
|
constructor(client, socket, { exports: exports3 }) {
|
|
295744
296758
|
assert4(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0);
|
|
295745
296759
|
this.llhttp = exports3;
|
|
295746
|
-
this.ptr = this.llhttp.llhttp_alloc(
|
|
296760
|
+
this.ptr = this.llhttp.llhttp_alloc(constants5.TYPE.RESPONSE);
|
|
295747
296761
|
this.client = client;
|
|
295748
296762
|
this.socket = socket;
|
|
295749
296763
|
this.timeout = null;
|
|
@@ -295838,19 +296852,19 @@ var require_client_h12 = __commonJS({
|
|
|
295838
296852
|
currentBufferRef = null;
|
|
295839
296853
|
}
|
|
295840
296854
|
const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr;
|
|
295841
|
-
if (ret ===
|
|
296855
|
+
if (ret === constants5.ERROR.PAUSED_UPGRADE) {
|
|
295842
296856
|
this.onUpgrade(data.slice(offset));
|
|
295843
|
-
} else if (ret ===
|
|
296857
|
+
} else if (ret === constants5.ERROR.PAUSED) {
|
|
295844
296858
|
this.paused = true;
|
|
295845
296859
|
socket.unshift(data.slice(offset));
|
|
295846
|
-
} else if (ret !==
|
|
296860
|
+
} else if (ret !== constants5.ERROR.OK) {
|
|
295847
296861
|
const ptr = llhttp.llhttp_get_error_reason(this.ptr);
|
|
295848
296862
|
let message = "";
|
|
295849
296863
|
if (ptr) {
|
|
295850
296864
|
const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
|
|
295851
296865
|
message = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
|
|
295852
296866
|
}
|
|
295853
|
-
throw new HTTPParserError(message,
|
|
296867
|
+
throw new HTTPParserError(message, constants5.ERROR[ret], data.slice(offset));
|
|
295854
296868
|
}
|
|
295855
296869
|
} catch (err) {
|
|
295856
296870
|
util4.destroy(socket, err);
|
|
@@ -296025,7 +297039,7 @@ var require_client_h12 = __commonJS({
|
|
|
296025
297039
|
socket[kBlocking] = false;
|
|
296026
297040
|
client[kResume]();
|
|
296027
297041
|
}
|
|
296028
|
-
return pause ?
|
|
297042
|
+
return pause ? constants5.ERROR.PAUSED : 0;
|
|
296029
297043
|
}
|
|
296030
297044
|
onBody(buf) {
|
|
296031
297045
|
const { client, socket, statusCode, maxResponseSize } = this;
|
|
@@ -296047,7 +297061,7 @@ var require_client_h12 = __commonJS({
|
|
|
296047
297061
|
}
|
|
296048
297062
|
this.bytesRead += buf.length;
|
|
296049
297063
|
if (request4.onData(buf) === false) {
|
|
296050
|
-
return
|
|
297064
|
+
return constants5.ERROR.PAUSED;
|
|
296051
297065
|
}
|
|
296052
297066
|
}
|
|
296053
297067
|
onMessageComplete() {
|
|
@@ -296082,13 +297096,13 @@ var require_client_h12 = __commonJS({
|
|
|
296082
297096
|
if (socket[kWriting]) {
|
|
296083
297097
|
assert4(client[kRunning] === 0);
|
|
296084
297098
|
util4.destroy(socket, new InformationalError("reset"));
|
|
296085
|
-
return
|
|
297099
|
+
return constants5.ERROR.PAUSED;
|
|
296086
297100
|
} else if (!shouldKeepAlive) {
|
|
296087
297101
|
util4.destroy(socket, new InformationalError("reset"));
|
|
296088
|
-
return
|
|
297102
|
+
return constants5.ERROR.PAUSED;
|
|
296089
297103
|
} else if (socket[kReset2] && client[kRunning] === 0) {
|
|
296090
297104
|
util4.destroy(socket, new InformationalError("reset"));
|
|
296091
|
-
return
|
|
297105
|
+
return constants5.ERROR.PAUSED;
|
|
296092
297106
|
} else if (client[kPipelining] == null || client[kPipelining] === 1) {
|
|
296093
297107
|
setImmediate(() => client[kResume]());
|
|
296094
297108
|
} else {
|
|
@@ -328326,7 +329340,7 @@ var require_src43 = __commonJS({
|
|
|
328326
329340
|
var require_polyfills = __commonJS({
|
|
328327
329341
|
"node_modules/graceful-fs/polyfills.js"(exports2, module2) {
|
|
328328
329342
|
init_esbuild_shims();
|
|
328329
|
-
var
|
|
329343
|
+
var constants5 = __require("constants");
|
|
328330
329344
|
var origCwd = process.cwd;
|
|
328331
329345
|
var cwd7 = null;
|
|
328332
329346
|
var platform15 = process.env.GRACEFUL_FS_PLATFORM || process.platform;
|
|
@@ -328350,7 +329364,7 @@ var require_polyfills = __commonJS({
|
|
|
328350
329364
|
var chdir;
|
|
328351
329365
|
module2.exports = patch;
|
|
328352
329366
|
function patch(fs101) {
|
|
328353
|
-
if (
|
|
329367
|
+
if (constants5.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
|
|
328354
329368
|
patchLchmod(fs101);
|
|
328355
329369
|
}
|
|
328356
329370
|
if (!fs101.lutimes) {
|
|
@@ -328454,7 +329468,7 @@ var require_polyfills = __commonJS({
|
|
|
328454
329468
|
fs102.lchmod = function(path112, mode, callback) {
|
|
328455
329469
|
fs102.open(
|
|
328456
329470
|
path112,
|
|
328457
|
-
|
|
329471
|
+
constants5.O_WRONLY | constants5.O_SYMLINK,
|
|
328458
329472
|
mode,
|
|
328459
329473
|
function(err, fd) {
|
|
328460
329474
|
if (err) {
|
|
@@ -328470,7 +329484,7 @@ var require_polyfills = __commonJS({
|
|
|
328470
329484
|
);
|
|
328471
329485
|
};
|
|
328472
329486
|
fs102.lchmodSync = function(path112, mode) {
|
|
328473
|
-
var fd = fs102.openSync(path112,
|
|
329487
|
+
var fd = fs102.openSync(path112, constants5.O_WRONLY | constants5.O_SYMLINK, mode);
|
|
328474
329488
|
var threw = true;
|
|
328475
329489
|
var ret;
|
|
328476
329490
|
try {
|
|
@@ -328491,9 +329505,9 @@ var require_polyfills = __commonJS({
|
|
|
328491
329505
|
}
|
|
328492
329506
|
__name(patchLchmod, "patchLchmod");
|
|
328493
329507
|
function patchLutimes(fs102) {
|
|
328494
|
-
if (
|
|
329508
|
+
if (constants5.hasOwnProperty("O_SYMLINK") && fs102.futimes) {
|
|
328495
329509
|
fs102.lutimes = function(path112, at2, mt2, cb) {
|
|
328496
|
-
fs102.open(path112,
|
|
329510
|
+
fs102.open(path112, constants5.O_SYMLINK, function(er2, fd) {
|
|
328497
329511
|
if (er2) {
|
|
328498
329512
|
if (cb) cb(er2);
|
|
328499
329513
|
return;
|
|
@@ -328506,7 +329520,7 @@ var require_polyfills = __commonJS({
|
|
|
328506
329520
|
});
|
|
328507
329521
|
};
|
|
328508
329522
|
fs102.lutimesSync = function(path112, at2, mt2) {
|
|
328509
|
-
var fd = fs102.openSync(path112,
|
|
329523
|
+
var fd = fs102.openSync(path112, constants5.O_SYMLINK);
|
|
328510
329524
|
var ret;
|
|
328511
329525
|
var threw = true;
|
|
328512
329526
|
try {
|
|
@@ -329902,7 +330916,7 @@ var require_rc = __commonJS({
|
|
|
329902
330916
|
var require_polyfills2 = __commonJS({
|
|
329903
330917
|
"node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/polyfills.js"(exports2, module2) {
|
|
329904
330918
|
init_esbuild_shims();
|
|
329905
|
-
var
|
|
330919
|
+
var constants5 = __require("constants");
|
|
329906
330920
|
var origCwd = process.cwd;
|
|
329907
330921
|
var cwd7 = null;
|
|
329908
330922
|
var platform15 = process.env.GRACEFUL_FS_PLATFORM || process.platform;
|
|
@@ -329926,7 +330940,7 @@ var require_polyfills2 = __commonJS({
|
|
|
329926
330940
|
var chdir;
|
|
329927
330941
|
module2.exports = patch;
|
|
329928
330942
|
function patch(fs101) {
|
|
329929
|
-
if (
|
|
330943
|
+
if (constants5.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
|
|
329930
330944
|
patchLchmod(fs101);
|
|
329931
330945
|
}
|
|
329932
330946
|
if (!fs101.lutimes) {
|
|
@@ -330030,7 +331044,7 @@ var require_polyfills2 = __commonJS({
|
|
|
330030
331044
|
fs102.lchmod = function(path112, mode, callback) {
|
|
330031
331045
|
fs102.open(
|
|
330032
331046
|
path112,
|
|
330033
|
-
|
|
331047
|
+
constants5.O_WRONLY | constants5.O_SYMLINK,
|
|
330034
331048
|
mode,
|
|
330035
331049
|
function(err, fd) {
|
|
330036
331050
|
if (err) {
|
|
@@ -330046,7 +331060,7 @@ var require_polyfills2 = __commonJS({
|
|
|
330046
331060
|
);
|
|
330047
331061
|
};
|
|
330048
331062
|
fs102.lchmodSync = function(path112, mode) {
|
|
330049
|
-
var fd = fs102.openSync(path112,
|
|
331063
|
+
var fd = fs102.openSync(path112, constants5.O_WRONLY | constants5.O_SYMLINK, mode);
|
|
330050
331064
|
var threw = true;
|
|
330051
331065
|
var ret;
|
|
330052
331066
|
try {
|
|
@@ -330067,9 +331081,9 @@ var require_polyfills2 = __commonJS({
|
|
|
330067
331081
|
}
|
|
330068
331082
|
__name(patchLchmod, "patchLchmod");
|
|
330069
331083
|
function patchLutimes(fs102) {
|
|
330070
|
-
if (
|
|
331084
|
+
if (constants5.hasOwnProperty("O_SYMLINK") && fs102.futimes) {
|
|
330071
331085
|
fs102.lutimes = function(path112, at2, mt2, cb) {
|
|
330072
|
-
fs102.open(path112,
|
|
331086
|
+
fs102.open(path112, constants5.O_SYMLINK, function(er2, fd) {
|
|
330073
331087
|
if (er2) {
|
|
330074
331088
|
if (cb) cb(er2);
|
|
330075
331089
|
return;
|
|
@@ -330082,7 +331096,7 @@ var require_polyfills2 = __commonJS({
|
|
|
330082
331096
|
});
|
|
330083
331097
|
};
|
|
330084
331098
|
fs102.lutimesSync = function(path112, at2, mt2) {
|
|
330085
|
-
var fd = fs102.openSync(path112,
|
|
331099
|
+
var fd = fs102.openSync(path112, constants5.O_SYMLINK);
|
|
330086
331100
|
var ret;
|
|
330087
331101
|
var threw = true;
|
|
330088
331102
|
try {
|
|
@@ -333456,7 +334470,7 @@ var require_semver3 = __commonJS({
|
|
|
333456
334470
|
"use strict";
|
|
333457
334471
|
init_esbuild_shims();
|
|
333458
334472
|
var internalRe = require_re();
|
|
333459
|
-
var
|
|
334473
|
+
var constants5 = require_constants13();
|
|
333460
334474
|
var SemVer = require_semver2();
|
|
333461
334475
|
var identifiers = require_identifiers();
|
|
333462
334476
|
var parse13 = require_parse8();
|
|
@@ -333538,8 +334552,8 @@ var require_semver3 = __commonJS({
|
|
|
333538
334552
|
re: internalRe.re,
|
|
333539
334553
|
src: internalRe.src,
|
|
333540
334554
|
tokens: internalRe.t,
|
|
333541
|
-
SEMVER_SPEC_VERSION:
|
|
333542
|
-
RELEASE_TYPES:
|
|
334555
|
+
SEMVER_SPEC_VERSION: constants5.SEMVER_SPEC_VERSION,
|
|
334556
|
+
RELEASE_TYPES: constants5.RELEASE_TYPES,
|
|
333543
334557
|
compareIdentifiers: identifiers.compareIdentifiers,
|
|
333544
334558
|
rcompareIdentifiers: identifiers.rcompareIdentifiers
|
|
333545
334559
|
};
|
|
@@ -336029,7 +337043,7 @@ var Wrap = /* @__PURE__ */ function(Wrap2) {
|
|
|
336029
337043
|
Wrap2[Wrap2["WrapReverse"] = 2] = "WrapReverse";
|
|
336030
337044
|
return Wrap2;
|
|
336031
337045
|
}({});
|
|
336032
|
-
var
|
|
337046
|
+
var constants3 = {
|
|
336033
337047
|
ALIGN_AUTO: Align.Auto,
|
|
336034
337048
|
ALIGN_FLEX_START: Align.FlexStart,
|
|
336035
337049
|
ALIGN_CENTER: Align.Center,
|
|
@@ -336103,7 +337117,7 @@ var constants2 = {
|
|
|
336103
337117
|
WRAP_WRAP: Wrap.Wrap,
|
|
336104
337118
|
WRAP_WRAP_REVERSE: Wrap.WrapReverse
|
|
336105
337119
|
};
|
|
336106
|
-
var YGEnums_default =
|
|
337120
|
+
var YGEnums_default = constants3;
|
|
336107
337121
|
|
|
336108
337122
|
// node_modules/yoga-layout/dist/src/wrapAssembly.js
|
|
336109
337123
|
function wrapAssembly(lib) {
|
|
@@ -341825,7 +342839,8 @@ var SETTINGS_SCHEMA = {
|
|
|
341825
342839
|
{ value: "auto", label: "Auto (detect from system)" },
|
|
341826
342840
|
{ value: "en", label: "English" },
|
|
341827
342841
|
{ value: "zh", label: "\u4E2D\u6587 (Chinese)" },
|
|
341828
|
-
{ value: "ru", label: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439 (Russian)" }
|
|
342842
|
+
{ value: "ru", label: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439 (Russian)" },
|
|
342843
|
+
{ value: "de", label: "Deutsch (German)" }
|
|
341829
342844
|
]
|
|
341830
342845
|
},
|
|
341831
342846
|
terminalBell: {
|
|
@@ -343045,7 +344060,18 @@ function handleError(error2, config2, customErrorCode) {
|
|
|
343045
344060
|
}
|
|
343046
344061
|
}
|
|
343047
344062
|
__name(handleError, "handleError");
|
|
343048
|
-
function handleToolError(toolName, toolError, config2,
|
|
344063
|
+
function handleToolError(toolName, toolError, config2, errorCode, resultDisplay) {
|
|
344064
|
+
const isExecutionDenied = errorCode === ToolErrorType.EXECUTION_DENIED;
|
|
344065
|
+
const isNonInteractive = !config2.isInteractive();
|
|
344066
|
+
const isTextMode = config2.getOutputFormat() === OutputFormat.TEXT;
|
|
344067
|
+
if (isExecutionDenied && isNonInteractive && isTextMode) {
|
|
344068
|
+
const warningMessage = `Warning: Tool "${toolName}" requires user approval but cannot execute in non-interactive mode.
|
|
344069
|
+
To enable automatic tool execution, use the -y flag (YOLO mode):
|
|
344070
|
+
Example: qwen -p 'your prompt' -y
|
|
344071
|
+
|
|
344072
|
+
`;
|
|
344073
|
+
process.stderr.write(warningMessage);
|
|
344074
|
+
}
|
|
343049
344075
|
if (config2.getDebugMode()) {
|
|
343050
344076
|
console.error(
|
|
343051
344077
|
`Error executing tool ${toolName}: ${resultDisplay || toolError.message}`
|
|
@@ -343747,7 +344773,7 @@ import * as realZlib2 from "zlib";
|
|
|
343747
344773
|
init_esbuild_shims();
|
|
343748
344774
|
import realZlib from "zlib";
|
|
343749
344775
|
var realZlibConstants = realZlib.constants || { ZLIB_VERNUM: 4736 };
|
|
343750
|
-
var
|
|
344776
|
+
var constants4 = Object.freeze(Object.assign(/* @__PURE__ */ Object.create(null), {
|
|
343751
344777
|
Z_NO_FLUSH: 0,
|
|
343752
344778
|
Z_PARTIAL_FLUSH: 1,
|
|
343753
344779
|
Z_SYNC_FLUSH: 2,
|
|
@@ -344039,9 +345065,9 @@ var Zlib = class extends ZlibBase {
|
|
|
344039
345065
|
#strategy;
|
|
344040
345066
|
constructor(opts, mode) {
|
|
344041
345067
|
opts = opts || {};
|
|
344042
|
-
opts.flush = opts.flush ||
|
|
344043
|
-
opts.finishFlush = opts.finishFlush ||
|
|
344044
|
-
opts.fullFlushFlag =
|
|
345068
|
+
opts.flush = opts.flush || constants4.Z_NO_FLUSH;
|
|
345069
|
+
opts.finishFlush = opts.finishFlush || constants4.Z_FINISH;
|
|
345070
|
+
opts.fullFlushFlag = constants4.Z_FULL_FLUSH;
|
|
344045
345071
|
super(opts, mode);
|
|
344046
345072
|
this.#level = opts.level;
|
|
344047
345073
|
this.#strategy = opts.strategy;
|
|
@@ -344054,7 +345080,7 @@ var Zlib = class extends ZlibBase {
|
|
|
344054
345080
|
if (!this.handle.params)
|
|
344055
345081
|
throw new Error("not supported in this implementation");
|
|
344056
345082
|
if (this.#level !== level || this.#strategy !== strategy) {
|
|
344057
|
-
this.flush(
|
|
345083
|
+
this.flush(constants4.Z_SYNC_FLUSH);
|
|
344058
345084
|
assert2(this.handle, "zlib binding closed");
|
|
344059
345085
|
const origFlush = this.handle.flush;
|
|
344060
345086
|
this.handle.flush = (flushFlag, cb) => {
|
|
@@ -344109,9 +345135,9 @@ var Brotli = class extends ZlibBase {
|
|
|
344109
345135
|
}
|
|
344110
345136
|
constructor(opts, mode) {
|
|
344111
345137
|
opts = opts || {};
|
|
344112
|
-
opts.flush = opts.flush ||
|
|
344113
|
-
opts.finishFlush = opts.finishFlush ||
|
|
344114
|
-
opts.fullFlushFlag =
|
|
345138
|
+
opts.flush = opts.flush || constants4.BROTLI_OPERATION_PROCESS;
|
|
345139
|
+
opts.finishFlush = opts.finishFlush || constants4.BROTLI_OPERATION_FINISH;
|
|
345140
|
+
opts.fullFlushFlag = constants4.BROTLI_OPERATION_FLUSH;
|
|
344115
345141
|
super(opts, mode);
|
|
344116
345142
|
}
|
|
344117
345143
|
};
|
|
@@ -344137,9 +345163,9 @@ var Zstd = class extends ZlibBase {
|
|
|
344137
345163
|
}
|
|
344138
345164
|
constructor(opts, mode) {
|
|
344139
345165
|
opts = opts || {};
|
|
344140
|
-
opts.flush = opts.flush ||
|
|
344141
|
-
opts.finishFlush = opts.finishFlush ||
|
|
344142
|
-
opts.fullFlushFlag =
|
|
345166
|
+
opts.flush = opts.flush || constants4.ZSTD_e_continue;
|
|
345167
|
+
opts.finishFlush = opts.finishFlush || constants4.ZSTD_e_end;
|
|
345168
|
+
opts.fullFlushFlag = constants4.ZSTD_e_flush;
|
|
344143
345169
|
super(opts, mode);
|
|
344144
345170
|
}
|
|
344145
345171
|
};
|
|
@@ -349331,6 +350357,7 @@ function getMergeStrategyForPath(path112) {
|
|
|
349331
350357
|
}
|
|
349332
350358
|
__name(getMergeStrategyForPath, "getMergeStrategyForPath");
|
|
349333
350359
|
var SETTINGS_DIRECTORY_NAME2 = ".qwen";
|
|
350360
|
+
var LEGACY_SETTINGS_FILENAME = "config.json";
|
|
349334
350361
|
var USER_SETTINGS_PATH = Storage.getGlobalSettingsPath();
|
|
349335
350362
|
var USER_SETTINGS_DIR2 = path72.dirname(USER_SETTINGS_PATH);
|
|
349336
350363
|
var DEFAULT_EXCLUDED_ENV_VARS = ["DEBUG", "DEBUG_MODE"];
|
|
@@ -349412,6 +350439,10 @@ var MIGRATION_MAP = {
|
|
|
349412
350439
|
vlmSwitchMode: "experimental.vlmSwitchMode",
|
|
349413
350440
|
visionModelPreview: "experimental.visionModelPreview"
|
|
349414
350441
|
};
|
|
350442
|
+
function isTermux2() {
|
|
350443
|
+
return process25.platform === "android" || !!process25.env["TERMUX_VERSION"] || !!(process25.env["PREFIX"] && process25.env["PREFIX"].includes("com.termux"));
|
|
350444
|
+
}
|
|
350445
|
+
__name(isTermux2, "isTermux");
|
|
349415
350446
|
function getSystemSettingsPath() {
|
|
349416
350447
|
if (process25.env["QWEN_CODE_SYSTEM_SETTINGS_PATH"]) {
|
|
349417
350448
|
return process25.env["QWEN_CODE_SYSTEM_SETTINGS_PATH"];
|
|
@@ -349731,6 +350762,11 @@ function loadSettings(workspaceDir = process25.cwd()) {
|
|
|
349731
350762
|
const systemSettingsPath = getSystemSettingsPath();
|
|
349732
350763
|
const systemDefaultsPath = getSystemDefaultsPath();
|
|
349733
350764
|
const migratedInMemorScopes = /* @__PURE__ */ new Set();
|
|
350765
|
+
const legacyUserSettingsPath = path72.join(
|
|
350766
|
+
homedir13(),
|
|
350767
|
+
SETTINGS_DIRECTORY_NAME2,
|
|
350768
|
+
LEGACY_SETTINGS_FILENAME
|
|
350769
|
+
);
|
|
349734
350770
|
const resolvedWorkspaceDir = path72.resolve(workspaceDir);
|
|
349735
350771
|
const resolvedHomeDir = path72.resolve(homedir13());
|
|
349736
350772
|
let realWorkspaceDir = resolvedWorkspaceDir;
|
|
@@ -349742,15 +350778,29 @@ function loadSettings(workspaceDir = process25.cwd()) {
|
|
|
349742
350778
|
const workspaceSettingsPath = new Storage(
|
|
349743
350779
|
workspaceDir
|
|
349744
350780
|
).getWorkspaceSettingsPath();
|
|
349745
|
-
const
|
|
350781
|
+
const legacyWorkspaceSettingsPath = path72.join(
|
|
350782
|
+
workspaceDir,
|
|
350783
|
+
SETTINGS_DIRECTORY_NAME2,
|
|
350784
|
+
LEGACY_SETTINGS_FILENAME
|
|
350785
|
+
);
|
|
350786
|
+
let warnedLegacySettings = false;
|
|
350787
|
+
const loadAndMigrate = /* @__PURE__ */ __name((filePath, scope, legacyFilePath) => {
|
|
349746
350788
|
try {
|
|
349747
|
-
|
|
349748
|
-
|
|
350789
|
+
let sourcePath = filePath;
|
|
350790
|
+
let usingLegacy = false;
|
|
350791
|
+
if (!fs70.existsSync(sourcePath) && legacyFilePath) {
|
|
350792
|
+
if (fs70.existsSync(legacyFilePath)) {
|
|
350793
|
+
sourcePath = legacyFilePath;
|
|
350794
|
+
usingLegacy = true;
|
|
350795
|
+
}
|
|
350796
|
+
}
|
|
350797
|
+
if (fs70.existsSync(sourcePath)) {
|
|
350798
|
+
const content = fs70.readFileSync(sourcePath, "utf-8");
|
|
349749
350799
|
const rawSettings = JSON.parse((0, import_strip_json_comments2.default)(content));
|
|
349750
350800
|
if (typeof rawSettings !== "object" || rawSettings === null || Array.isArray(rawSettings)) {
|
|
349751
350801
|
settingsErrors.push({
|
|
349752
350802
|
message: "Settings file is not a valid JSON object.",
|
|
349753
|
-
path:
|
|
350803
|
+
path: sourcePath
|
|
349754
350804
|
});
|
|
349755
350805
|
return { settings: {} };
|
|
349756
350806
|
}
|
|
@@ -349760,12 +350810,20 @@ function loadSettings(workspaceDir = process25.cwd()) {
|
|
|
349760
350810
|
if (migratedSettings) {
|
|
349761
350811
|
if (MIGRATE_V2_OVERWRITE) {
|
|
349762
350812
|
try {
|
|
349763
|
-
|
|
349764
|
-
|
|
349765
|
-
|
|
349766
|
-
|
|
349767
|
-
|
|
349768
|
-
|
|
350813
|
+
if (!usingLegacy) {
|
|
350814
|
+
fs70.renameSync(sourcePath, `${sourcePath}.orig`);
|
|
350815
|
+
fs70.writeFileSync(
|
|
350816
|
+
sourcePath,
|
|
350817
|
+
JSON.stringify(migratedSettings, null, 2),
|
|
350818
|
+
"utf-8"
|
|
350819
|
+
);
|
|
350820
|
+
} else {
|
|
350821
|
+
fs70.writeFileSync(
|
|
350822
|
+
filePath,
|
|
350823
|
+
JSON.stringify(migratedSettings, null, 2),
|
|
350824
|
+
"utf-8"
|
|
350825
|
+
);
|
|
350826
|
+
}
|
|
349769
350827
|
} catch (e4) {
|
|
349770
350828
|
console.error(
|
|
349771
350829
|
`Error migrating settings file on disk: ${getErrorMessage(
|
|
@@ -349782,8 +350840,9 @@ function loadSettings(workspaceDir = process25.cwd()) {
|
|
|
349782
350840
|
settingsObject[SETTINGS_VERSION_KEY] = SETTINGS_VERSION;
|
|
349783
350841
|
if (MIGRATE_V2_OVERWRITE) {
|
|
349784
350842
|
try {
|
|
350843
|
+
const targetPath = usingLegacy && sourcePath !== filePath ? filePath : sourcePath;
|
|
349785
350844
|
fs70.writeFileSync(
|
|
349786
|
-
|
|
350845
|
+
targetPath,
|
|
349787
350846
|
JSON.stringify(settingsObject, null, 2),
|
|
349788
350847
|
"utf-8"
|
|
349789
350848
|
);
|
|
@@ -349794,6 +350853,27 @@ function loadSettings(workspaceDir = process25.cwd()) {
|
|
|
349794
350853
|
}
|
|
349795
350854
|
}
|
|
349796
350855
|
}
|
|
350856
|
+
if (usingLegacy && !warnedLegacySettings) {
|
|
350857
|
+
console.warn(
|
|
350858
|
+
`Loaded legacy settings from ${sourcePath}. Please migrate to ${filePath}.`
|
|
350859
|
+
);
|
|
350860
|
+
warnedLegacySettings = true;
|
|
350861
|
+
}
|
|
350862
|
+
if (usingLegacy && MIGRATE_V2_OVERWRITE) {
|
|
350863
|
+
try {
|
|
350864
|
+
fs70.writeFileSync(
|
|
350865
|
+
filePath,
|
|
350866
|
+
JSON.stringify(settingsObject, null, 2),
|
|
350867
|
+
"utf-8"
|
|
350868
|
+
);
|
|
350869
|
+
} catch (e4) {
|
|
350870
|
+
console.error(
|
|
350871
|
+
`Error writing migrated settings to ${filePath}: ${getErrorMessage(
|
|
350872
|
+
e4
|
|
350873
|
+
)}`
|
|
350874
|
+
);
|
|
350875
|
+
}
|
|
350876
|
+
}
|
|
349797
350877
|
return { settings: settingsObject, rawJson: content };
|
|
349798
350878
|
}
|
|
349799
350879
|
} catch (error2) {
|
|
@@ -349809,7 +350889,11 @@ function loadSettings(workspaceDir = process25.cwd()) {
|
|
|
349809
350889
|
systemDefaultsPath,
|
|
349810
350890
|
"SystemDefaults" /* SystemDefaults */
|
|
349811
350891
|
);
|
|
349812
|
-
const userResult = loadAndMigrate(
|
|
350892
|
+
const userResult = loadAndMigrate(
|
|
350893
|
+
USER_SETTINGS_PATH,
|
|
350894
|
+
"User" /* User */,
|
|
350895
|
+
legacyUserSettingsPath
|
|
350896
|
+
);
|
|
349813
350897
|
let workspaceResult = {
|
|
349814
350898
|
settings: {},
|
|
349815
350899
|
rawJson: void 0
|
|
@@ -349817,7 +350901,8 @@ function loadSettings(workspaceDir = process25.cwd()) {
|
|
|
349817
350901
|
if (realWorkspaceDir !== realHomeDir) {
|
|
349818
350902
|
workspaceResult = loadAndMigrate(
|
|
349819
350903
|
workspaceSettingsPath,
|
|
349820
|
-
"Workspace" /* Workspace
|
|
350904
|
+
"Workspace" /* Workspace */,
|
|
350905
|
+
legacyWorkspaceSettingsPath
|
|
349821
350906
|
);
|
|
349822
350907
|
}
|
|
349823
350908
|
const systemOriginalSettings = structuredClone(systemResult.settings);
|
|
@@ -349830,6 +350915,39 @@ function loadSettings(workspaceDir = process25.cwd()) {
|
|
|
349830
350915
|
systemDefaultSettings = resolveEnvVarsInObject(systemDefaultsResult.settings);
|
|
349831
350916
|
userSettings = resolveEnvVarsInObject(userResult.settings);
|
|
349832
350917
|
workspaceSettings = resolveEnvVarsInObject(workspaceResult.settings);
|
|
350918
|
+
if (isTermux2()) {
|
|
350919
|
+
const hasHideBannerSetting = [
|
|
350920
|
+
systemSettings.ui?.hideBanner,
|
|
350921
|
+
systemDefaultSettings.ui?.hideBanner,
|
|
350922
|
+
userSettings.ui?.hideBanner,
|
|
350923
|
+
workspaceSettings.ui?.hideBanner
|
|
350924
|
+
].some((value) => typeof value === "boolean");
|
|
350925
|
+
if (!hasHideBannerSetting) {
|
|
350926
|
+
systemDefaultSettings = {
|
|
350927
|
+
...systemDefaultSettings,
|
|
350928
|
+
ui: {
|
|
350929
|
+
...systemDefaultSettings.ui ?? {},
|
|
350930
|
+
hideBanner: true
|
|
350931
|
+
}
|
|
350932
|
+
};
|
|
350933
|
+
}
|
|
350934
|
+
const hasUseRipgrepSetting = [
|
|
350935
|
+
systemSettings.tools?.useRipgrep,
|
|
350936
|
+
systemDefaultSettings.tools?.useRipgrep,
|
|
350937
|
+
userSettings.tools?.useRipgrep,
|
|
350938
|
+
workspaceSettings.tools?.useRipgrep
|
|
350939
|
+
].some((value) => typeof value === "boolean");
|
|
350940
|
+
if (!hasUseRipgrepSetting) {
|
|
350941
|
+
systemDefaultSettings = {
|
|
350942
|
+
...systemDefaultSettings,
|
|
350943
|
+
tools: {
|
|
350944
|
+
...systemDefaultSettings.tools ?? {},
|
|
350945
|
+
useRipgrep: false,
|
|
350946
|
+
useBuiltinRipgrep: false
|
|
350947
|
+
}
|
|
350948
|
+
};
|
|
350949
|
+
}
|
|
350950
|
+
}
|
|
349833
350951
|
if (userSettings.ui?.theme === "VS") {
|
|
349834
350952
|
userSettings.ui.theme = DefaultLight.name;
|
|
349835
350953
|
} else if (userSettings.ui?.theme === "VS2015") {
|
|
@@ -355880,7 +356998,7 @@ __name(getPackageJson, "getPackageJson");
|
|
|
355880
356998
|
// packages/cli/src/utils/version.ts
|
|
355881
356999
|
async function getCliVersion() {
|
|
355882
357000
|
const pkgJson = await getPackageJson();
|
|
355883
|
-
return "0.6.
|
|
357001
|
+
return "0.6.3-termux";
|
|
355884
357002
|
}
|
|
355885
357003
|
__name(getCliVersion, "getCliVersion");
|
|
355886
357004
|
|
|
@@ -359978,9 +361096,13 @@ async function parseArguments(settings) {
|
|
|
359978
361096
|
type: "boolean",
|
|
359979
361097
|
description: "Enables checkpointing of file edits",
|
|
359980
361098
|
default: false
|
|
359981
|
-
}).option("
|
|
361099
|
+
}).option("acp", {
|
|
359982
361100
|
type: "boolean",
|
|
359983
361101
|
description: "Starts the agent in ACP mode"
|
|
361102
|
+
}).option("experimental-acp", {
|
|
361103
|
+
type: "boolean",
|
|
361104
|
+
description: "Starts the agent in ACP mode (deprecated, use --acp instead)",
|
|
361105
|
+
hidden: true
|
|
359984
361106
|
}).option("experimental-skills", {
|
|
359985
361107
|
type: "boolean",
|
|
359986
361108
|
description: "Enable experimental Skills feature",
|
|
@@ -360176,7 +361298,15 @@ async function parseArguments(settings) {
|
|
|
360176
361298
|
}
|
|
360177
361299
|
}
|
|
360178
361300
|
result["query"] = q2 || void 0;
|
|
360179
|
-
if (result["experimentalAcp"]
|
|
361301
|
+
if (result["experimentalAcp"]) {
|
|
361302
|
+
console.warn(
|
|
361303
|
+
"\x1B[33m\u26A0 Warning: --experimental-acp is deprecated and will be removed in a future release. Please use --acp instead.\x1B[0m"
|
|
361304
|
+
);
|
|
361305
|
+
if (!result["acp"]) {
|
|
361306
|
+
result["acp"] = true;
|
|
361307
|
+
}
|
|
361308
|
+
}
|
|
361309
|
+
if ((result["acp"] || result["experimentalAcp"]) && !result["channel"]) {
|
|
360180
361310
|
result["channel"] = "ACP";
|
|
360181
361311
|
}
|
|
360182
361312
|
return result;
|
|
@@ -360316,14 +361446,36 @@ async function loadCliConfig(settings, extensions, extensionEnablementManager, a
|
|
|
360316
361446
|
interactive = false;
|
|
360317
361447
|
}
|
|
360318
361448
|
const extraExcludes = [];
|
|
361449
|
+
const resolvedCoreTools = argv.coreTools || settings.tools?.core || [];
|
|
361450
|
+
const resolvedAllowedTools = argv.allowedTools || settings.tools?.allowed || [];
|
|
361451
|
+
const isExplicitlyEnabled = /* @__PURE__ */ __name((toolName) => {
|
|
361452
|
+
if (resolvedCoreTools.length > 0) {
|
|
361453
|
+
if (isToolEnabled(toolName, resolvedCoreTools, [])) {
|
|
361454
|
+
return true;
|
|
361455
|
+
}
|
|
361456
|
+
}
|
|
361457
|
+
if (resolvedAllowedTools.length > 0) {
|
|
361458
|
+
if (isToolEnabled(toolName, resolvedAllowedTools, [])) {
|
|
361459
|
+
return true;
|
|
361460
|
+
}
|
|
361461
|
+
}
|
|
361462
|
+
return false;
|
|
361463
|
+
}, "isExplicitlyEnabled");
|
|
361464
|
+
const excludeUnlessExplicit = /* @__PURE__ */ __name((toolName) => {
|
|
361465
|
+
if (!isExplicitlyEnabled(toolName)) {
|
|
361466
|
+
extraExcludes.push(toolName);
|
|
361467
|
+
}
|
|
361468
|
+
}, "excludeUnlessExplicit");
|
|
360319
361469
|
if (!interactive && !argv.experimentalAcp && inputFormat !== InputFormat.STREAM_JSON) {
|
|
360320
361470
|
switch (approvalMode) {
|
|
360321
361471
|
case ApprovalMode.PLAN:
|
|
360322
361472
|
case ApprovalMode.DEFAULT:
|
|
360323
|
-
|
|
361473
|
+
excludeUnlessExplicit(ShellTool.Name);
|
|
361474
|
+
excludeUnlessExplicit(EditTool.Name);
|
|
361475
|
+
excludeUnlessExplicit(WriteFileTool.Name);
|
|
360324
361476
|
break;
|
|
360325
361477
|
case ApprovalMode.AUTO_EDIT:
|
|
360326
|
-
|
|
361478
|
+
excludeUnlessExplicit(ShellTool.Name);
|
|
360327
361479
|
break;
|
|
360328
361480
|
case ApprovalMode.YOLO:
|
|
360329
361481
|
break;
|
|
@@ -360427,7 +361579,7 @@ async function loadCliConfig(settings, extensions, extensionEnablementManager, a
|
|
|
360427
361579
|
extensionContextFilePaths,
|
|
360428
361580
|
sessionTokenLimit: settings.model?.sessionTokenLimit ?? -1,
|
|
360429
361581
|
maxSessionTurns: argv.maxSessionTurns ?? settings.model?.maxSessionTurns ?? -1,
|
|
360430
|
-
experimentalZedIntegration: argv.experimentalAcp || false,
|
|
361582
|
+
experimentalZedIntegration: argv.acp || argv.experimentalAcp || false,
|
|
360431
361583
|
experimentalSkills: argv.experimentalSkills || false,
|
|
360432
361584
|
listExtensions: argv.listExtensions || false,
|
|
360433
361585
|
extensions: allExtensions,
|
|
@@ -363017,6 +364169,7 @@ __name(getLanguageNameFromLocale, "getLanguageNameFromLocale");
|
|
|
363017
364169
|
|
|
363018
364170
|
// import("./locales/**/*.js") in packages/cli/src/i18n/index.ts
|
|
363019
364171
|
var globImport_locales_js = __glob({
|
|
364172
|
+
"./locales/de.js": () => Promise.resolve().then(() => (init_de(), de_exports)),
|
|
363020
364173
|
"./locales/en.js": () => Promise.resolve().then(() => (init_en3(), en_exports)),
|
|
363021
364174
|
"./locales/ru.js": () => Promise.resolve().then(() => (init_ru(), ru_exports)),
|
|
363022
364175
|
"./locales/zh.js": () => Promise.resolve().then(() => (init_zh(), zh_exports))
|
|
@@ -363928,7 +365081,7 @@ var formatDuration = /* @__PURE__ */ __name((milliseconds) => {
|
|
|
363928
365081
|
|
|
363929
365082
|
// packages/cli/src/generated/git-commit.ts
|
|
363930
365083
|
init_esbuild_shims();
|
|
363931
|
-
var GIT_COMMIT_INFO2 = "
|
|
365084
|
+
var GIT_COMMIT_INFO2 = "168aa3f6";
|
|
363932
365085
|
|
|
363933
365086
|
// packages/cli/src/utils/systemInfo.ts
|
|
363934
365087
|
async function getNpmVersion() {
|
|
@@ -364062,16 +365215,56 @@ var agentsCommand = {
|
|
|
364062
365215
|
|
|
364063
365216
|
// packages/cli/src/ui/commands/approvalModeCommand.ts
|
|
364064
365217
|
init_esbuild_shims();
|
|
365218
|
+
function parseApprovalModeArg(arg) {
|
|
365219
|
+
const trimmed2 = arg.trim().toLowerCase();
|
|
365220
|
+
if (!trimmed2) {
|
|
365221
|
+
return void 0;
|
|
365222
|
+
}
|
|
365223
|
+
return APPROVAL_MODES.find((mode) => mode.toLowerCase() === trimmed2);
|
|
365224
|
+
}
|
|
365225
|
+
__name(parseApprovalModeArg, "parseApprovalModeArg");
|
|
364065
365226
|
var approvalModeCommand = {
|
|
364066
365227
|
name: "approval-mode",
|
|
364067
365228
|
get description() {
|
|
364068
365229
|
return t4("View or change the approval mode for tool usage");
|
|
364069
365230
|
},
|
|
364070
365231
|
kind: "built-in" /* BUILT_IN */,
|
|
364071
|
-
action: /* @__PURE__ */ __name(async (
|
|
364072
|
-
|
|
364073
|
-
|
|
364074
|
-
|
|
365232
|
+
action: /* @__PURE__ */ __name(async (context2, args) => {
|
|
365233
|
+
const mode = parseApprovalModeArg(args);
|
|
365234
|
+
if (!args.trim()) {
|
|
365235
|
+
return {
|
|
365236
|
+
type: "dialog",
|
|
365237
|
+
dialog: "approval-mode"
|
|
365238
|
+
};
|
|
365239
|
+
}
|
|
365240
|
+
if (!mode) {
|
|
365241
|
+
return {
|
|
365242
|
+
type: "message",
|
|
365243
|
+
messageType: "error",
|
|
365244
|
+
content: t4('Invalid approval mode "{{arg}}". Valid modes: {{modes}}', {
|
|
365245
|
+
arg: args.trim(),
|
|
365246
|
+
modes: APPROVAL_MODES.join(", ")
|
|
365247
|
+
})
|
|
365248
|
+
};
|
|
365249
|
+
}
|
|
365250
|
+
const { config: config2 } = context2.services;
|
|
365251
|
+
if (config2) {
|
|
365252
|
+
try {
|
|
365253
|
+
config2.setApprovalMode(mode);
|
|
365254
|
+
} catch (e4) {
|
|
365255
|
+
return {
|
|
365256
|
+
type: "message",
|
|
365257
|
+
messageType: "error",
|
|
365258
|
+
content: e4.message
|
|
365259
|
+
};
|
|
365260
|
+
}
|
|
365261
|
+
}
|
|
365262
|
+
return {
|
|
365263
|
+
type: "message",
|
|
365264
|
+
messageType: "info",
|
|
365265
|
+
content: t4('Approval mode set to "{{mode}}"', { mode })
|
|
365266
|
+
};
|
|
365267
|
+
}, "action")
|
|
364075
365268
|
};
|
|
364076
365269
|
|
|
364077
365270
|
// packages/cli/src/ui/commands/authCommand.ts
|
|
@@ -364997,11 +366190,23 @@ var ideCommand = /* @__PURE__ */ __name(async () => {
|
|
|
364997
366190
|
kind: "built-in" /* BUILT_IN */,
|
|
364998
366191
|
action: /* @__PURE__ */ __name(async (context2) => {
|
|
364999
366192
|
const installer = getIdeInstaller(currentIDE);
|
|
366193
|
+
const isSandBox = !!process.env["SANDBOX"];
|
|
366194
|
+
if (isSandBox) {
|
|
366195
|
+
context2.ui.addItem(
|
|
366196
|
+
{
|
|
366197
|
+
type: "info",
|
|
366198
|
+
text: `IDE integration needs to be installed on the host. If you have already installed it, you can directly connect the ide`
|
|
366199
|
+
},
|
|
366200
|
+
Date.now()
|
|
366201
|
+
);
|
|
366202
|
+
return;
|
|
366203
|
+
}
|
|
365000
366204
|
if (!installer) {
|
|
366205
|
+
const ideName = ideClient.getDetectedIdeDisplayName();
|
|
365001
366206
|
context2.ui.addItem(
|
|
365002
366207
|
{
|
|
365003
366208
|
type: "error",
|
|
365004
|
-
text: `
|
|
366209
|
+
text: `Automatic installation is not supported for ${ideName}. Please install the '${QWEN_CODE_COMPANION_EXTENSION_NAME}' extension manually from the marketplace.`
|
|
365005
366210
|
},
|
|
365006
366211
|
Date.now()
|
|
365007
366212
|
);
|
|
@@ -367332,15 +368537,28 @@ var ShellProcessor = class {
|
|
|
367332
368537
|
const command2 = injection.resolvedCommand;
|
|
367333
368538
|
if (!command2) continue;
|
|
367334
368539
|
const { allAllowed, disallowedCommands, blockReason, isHardDenial } = checkCommandPermissions(command2, config2, sessionShellAllowlist);
|
|
368540
|
+
const allowedTools = config2.getAllowedTools() || [];
|
|
368541
|
+
const invocation = {
|
|
368542
|
+
params: { command: command2 }
|
|
368543
|
+
};
|
|
368544
|
+
const isAllowedBySettings = doesToolInvocationMatch(
|
|
368545
|
+
"run_shell_command",
|
|
368546
|
+
invocation,
|
|
368547
|
+
allowedTools
|
|
368548
|
+
);
|
|
367335
368549
|
if (!allAllowed) {
|
|
367336
368550
|
if (isHardDenial) {
|
|
367337
368551
|
throw new Error(
|
|
367338
368552
|
`${this.commandName} cannot be run. Blocked command: "${command2}". Reason: ${blockReason || "Blocked by configuration."}`
|
|
367339
368553
|
);
|
|
367340
368554
|
}
|
|
367341
|
-
if (
|
|
367342
|
-
|
|
368555
|
+
if (isAllowedBySettings) {
|
|
368556
|
+
continue;
|
|
367343
368557
|
}
|
|
368558
|
+
if (config2.getApprovalMode() === ApprovalMode.YOLO) {
|
|
368559
|
+
continue;
|
|
368560
|
+
}
|
|
368561
|
+
disallowedCommands.forEach((uc) => commandsToConfirm.add(uc));
|
|
367344
368562
|
}
|
|
367345
368563
|
}
|
|
367346
368564
|
if (commandsToConfirm.size > 0) {
|
|
@@ -368677,7 +369895,14 @@ ${event.value}`, null);
|
|
|
368677
369895
|
*/
|
|
368678
369896
|
appendThinking(state, subject, description, parentToolUseId) {
|
|
368679
369897
|
const actualParentToolUseId = parentToolUseId ?? null;
|
|
368680
|
-
const
|
|
369898
|
+
const parts = [];
|
|
369899
|
+
if (subject && subject.length > 0) {
|
|
369900
|
+
parts.push(subject);
|
|
369901
|
+
}
|
|
369902
|
+
if (description && description.length > 0) {
|
|
369903
|
+
parts.push(description);
|
|
369904
|
+
}
|
|
369905
|
+
const fragment = parts.join(": ");
|
|
368681
369906
|
if (!fragment) {
|
|
368682
369907
|
return;
|
|
368683
369908
|
}
|
|
@@ -369778,6 +371003,7 @@ async function runNonInteractive(config2, settings, input, prompt_id, options2 =
|
|
|
369778
371003
|
);
|
|
369779
371004
|
process.stderr.write(`${errorText}
|
|
369780
371005
|
`);
|
|
371006
|
+
throw new Error(errorText);
|
|
369781
371007
|
}
|
|
369782
371008
|
}
|
|
369783
371009
|
}
|
|
@@ -369798,15 +371024,23 @@ async function runNonInteractive(config2, settings, input, prompt_id, options2 =
|
|
|
369798
371024
|
adapter
|
|
369799
371025
|
) : void 0;
|
|
369800
371026
|
const taskToolProgressHandler = taskToolProgress?.handler;
|
|
371027
|
+
const nonTaskOutputHandler = !isTaskTool && !adapter ? (callId, outputChunk) => {
|
|
371028
|
+
if (typeof outputChunk === "string") {
|
|
371029
|
+
process.stdout.write(outputChunk);
|
|
371030
|
+
} else if (outputChunk && typeof outputChunk === "object" && "ansiOutput" in outputChunk) {
|
|
371031
|
+
process.stdout.write(String(outputChunk.ansiOutput));
|
|
371032
|
+
}
|
|
371033
|
+
} : void 0;
|
|
371034
|
+
const outputUpdateHandler = taskToolProgressHandler || nonTaskOutputHandler;
|
|
369801
371035
|
const toolResponse = await executeToolCall(
|
|
369802
371036
|
config2,
|
|
369803
371037
|
finalRequestInfo,
|
|
369804
371038
|
abortController.signal,
|
|
369805
|
-
|
|
369806
|
-
outputUpdateHandler
|
|
369807
|
-
|
|
369808
|
-
|
|
369809
|
-
|
|
371039
|
+
outputUpdateHandler || toolCallUpdateCallback ? {
|
|
371040
|
+
...outputUpdateHandler && { outputUpdateHandler },
|
|
371041
|
+
...toolCallUpdateCallback && {
|
|
371042
|
+
onToolCallsUpdate: toolCallUpdateCallback
|
|
371043
|
+
}
|
|
369810
371044
|
} : void 0
|
|
369811
371045
|
);
|
|
369812
371046
|
if (toolResponse.error) {
|
|
@@ -389046,7 +390280,7 @@ var import_chalk5 = __toESM(require_source(), 1);
|
|
|
389046
390280
|
// packages/cli/src/ui/components/shared/text-buffer.ts
|
|
389047
390281
|
init_esbuild_shims();
|
|
389048
390282
|
var import_react46 = __toESM(require_react(), 1);
|
|
389049
|
-
import { spawnSync as
|
|
390283
|
+
import { spawnSync as spawnSync4 } from "node:child_process";
|
|
389050
390284
|
import fs83 from "node:fs";
|
|
389051
390285
|
import os32 from "node:os";
|
|
389052
390286
|
import pathMod from "node:path";
|
|
@@ -390887,7 +392121,7 @@ function useTextBuffer({
|
|
|
390887
392121
|
const wasRaw = stdin?.isRaw ?? false;
|
|
390888
392122
|
try {
|
|
390889
392123
|
setRawMode?.(false);
|
|
390890
|
-
const { status, error: error2 } =
|
|
392124
|
+
const { status, error: error2 } = spawnSync4(editor, [filePath], {
|
|
390891
392125
|
stdio: "inherit"
|
|
390892
392126
|
});
|
|
390893
392127
|
if (error2) throw error2;
|
|
@@ -391590,7 +392824,7 @@ var import_react52 = __toESM(require_react(), 1);
|
|
|
391590
392824
|
// packages/cli/src/ui/hooks/useLaunchEditor.ts
|
|
391591
392825
|
init_esbuild_shims();
|
|
391592
392826
|
var import_react51 = __toESM(require_react(), 1);
|
|
391593
|
-
import { spawnSync as
|
|
392827
|
+
import { spawnSync as spawnSync5 } from "child_process";
|
|
391594
392828
|
function getEditorCommand(preferredEditor) {
|
|
391595
392829
|
if (preferredEditor) {
|
|
391596
392830
|
return preferredEditor;
|
|
@@ -391625,7 +392859,7 @@ function useLaunchEditor() {
|
|
|
391625
392859
|
const wasRaw = stdin?.isRaw ?? false;
|
|
391626
392860
|
try {
|
|
391627
392861
|
setRawMode?.(false);
|
|
391628
|
-
const { status, error: error2 } =
|
|
392862
|
+
const { status, error: error2 } = spawnSync5(editorCommand2, editorArgs, {
|
|
391629
392863
|
stdio: "inherit"
|
|
391630
392864
|
});
|
|
391631
392865
|
if (error2) throw error2;
|
|
@@ -395527,7 +396761,9 @@ var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1);
|
|
|
395527
396761
|
var Notifications = /* @__PURE__ */ __name(() => {
|
|
395528
396762
|
const { startupWarnings } = useAppContext();
|
|
395529
396763
|
const { initError, streamingState, updateInfo } = useUIState();
|
|
395530
|
-
const
|
|
396764
|
+
const settings = useSettings();
|
|
396765
|
+
const config2 = useConfig();
|
|
396766
|
+
const showStartupWarnings = !settings.merged.ui?.hideBanner && !config2.getScreenReader() && startupWarnings.length > 0;
|
|
395531
396767
|
const showInitError = initError && streamingState !== "responding" /* Responding */;
|
|
395532
396768
|
if (!showStartupWarnings && !showInitError && !updateInfo) {
|
|
395533
396769
|
return null;
|
|
@@ -395934,6 +397170,7 @@ function IdeIntegrationNudge({
|
|
|
395934
397170
|
{ isActive: true }
|
|
395935
397171
|
);
|
|
395936
397172
|
const { displayName: ideName } = ide;
|
|
397173
|
+
const isInSandbox = !!process.env["SANDBOX"];
|
|
395937
397174
|
const isExtensionPreInstalled = !!process.env["QWEN_CODE_IDE_SERVER_PORT"] && !!process.env["QWEN_CODE_IDE_WORKSPACE_PATH"];
|
|
395938
397175
|
const OPTIONS = [
|
|
395939
397176
|
{
|
|
@@ -395961,7 +397198,7 @@ function IdeIntegrationNudge({
|
|
|
395961
397198
|
key: "No, don't ask again"
|
|
395962
397199
|
}
|
|
395963
397200
|
];
|
|
395964
|
-
const installText = isExtensionPreInstalled ? `If you select Yes, the CLI will have access to your open files and display diffs directly
|
|
397201
|
+
const installText = isInSandbox ? `Note: In sandbox environments, IDE integration requires manual setup on the host system. If you select Yes, you'll receive instructions on how to set this up.` : isExtensionPreInstalled ? `If you select Yes, the CLI will connect to your ${ideName ?? "editor"} and have access to your open files and display diffs directly.` : `If you select Yes, we'll install an extension that allows the CLI to access your open files and display diffs directly in ${ideName ?? "your editor"}.`;
|
|
395965
397202
|
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
|
|
395966
397203
|
Box_default,
|
|
395967
397204
|
{
|
|
@@ -411169,7 +412406,11 @@ ${queuedText}` : queuedText;
|
|
|
411169
412406
|
const handleIdePromptComplete = (0, import_react134.useCallback)(
|
|
411170
412407
|
(result) => {
|
|
411171
412408
|
if (result.userSelection === "yes") {
|
|
411172
|
-
|
|
412409
|
+
if (result.isExtensionPreInstalled) {
|
|
412410
|
+
handleSlashCommand2("/ide enable");
|
|
412411
|
+
} else {
|
|
412412
|
+
handleSlashCommand2("/ide install");
|
|
412413
|
+
}
|
|
411173
412414
|
settings.setValue("User" /* User */, "ide.hasSeenNudge", true);
|
|
411174
412415
|
} else if (result.userSelection === "dismiss") {
|
|
411175
412416
|
settings.setValue("User" /* User */, "ide.hasSeenNudge", true);
|
|
@@ -412508,6 +413749,11 @@ init_esbuild_shims();
|
|
|
412508
413749
|
import fs99 from "node:fs/promises";
|
|
412509
413750
|
import * as os41 from "node:os";
|
|
412510
413751
|
import path110 from "node:path";
|
|
413752
|
+
function isTermux3() {
|
|
413753
|
+
return process.platform === "android" || !!process.env["TERMUX_VERSION"] || !!(process.env["PREFIX"] && process.env["PREFIX"].includes("com.termux"));
|
|
413754
|
+
}
|
|
413755
|
+
__name(isTermux3, "isTermux");
|
|
413756
|
+
var IS_TERMUX = isTermux3();
|
|
412511
413757
|
var homeDirectoryCheck = {
|
|
412512
413758
|
id: "home-directory",
|
|
412513
413759
|
check: /* @__PURE__ */ __name(async (options2) => {
|
|
@@ -412543,6 +413789,9 @@ var rootDirectoryCheck = {
|
|
|
412543
413789
|
var ripgrepAvailabilityCheck = {
|
|
412544
413790
|
id: "ripgrep-availability",
|
|
412545
413791
|
check: /* @__PURE__ */ __name(async (options2) => {
|
|
413792
|
+
if (IS_TERMUX) {
|
|
413793
|
+
return null;
|
|
413794
|
+
}
|
|
412546
413795
|
if (!options2.useRipgrep) {
|
|
412547
413796
|
return null;
|
|
412548
413797
|
}
|
|
@@ -412558,7 +413807,7 @@ var ripgrepAvailabilityCheck = {
|
|
|
412558
413807
|
}, "check")
|
|
412559
413808
|
};
|
|
412560
413809
|
var WARNING_CHECKS = [
|
|
412561
|
-
homeDirectoryCheck,
|
|
413810
|
+
...IS_TERMUX ? [] : [homeDirectoryCheck],
|
|
412562
413811
|
rootDirectoryCheck,
|
|
412563
413812
|
ripgrepAvailabilityCheck
|
|
412564
413813
|
];
|
|
@@ -412701,19 +413950,26 @@ async function showResumeSessionPicker(cwd7 = process.cwd()) {
|
|
|
412701
413950
|
return new Promise((resolve25) => {
|
|
412702
413951
|
let selectedId;
|
|
412703
413952
|
const { unmount, waitUntilExit } = render_default(
|
|
412704
|
-
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
412705
|
-
|
|
413953
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
413954
|
+
KeypressProvider,
|
|
412706
413955
|
{
|
|
412707
|
-
|
|
412708
|
-
|
|
412709
|
-
|
|
412710
|
-
|
|
412711
|
-
|
|
412712
|
-
|
|
412713
|
-
|
|
412714
|
-
|
|
413956
|
+
kittyProtocolEnabled: false,
|
|
413957
|
+
pasteWorkaround: process.platform === "win32" || parseInt(process.versions.node.split(".")[0], 10) < 20,
|
|
413958
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
413959
|
+
StandalonePickerScreen,
|
|
413960
|
+
{
|
|
413961
|
+
sessionService,
|
|
413962
|
+
onSelect: (id) => {
|
|
413963
|
+
selectedId = id;
|
|
413964
|
+
},
|
|
413965
|
+
onCancel: () => {
|
|
413966
|
+
selectedId = void 0;
|
|
413967
|
+
},
|
|
413968
|
+
currentBranch: getGitBranch(cwd7)
|
|
413969
|
+
}
|
|
413970
|
+
)
|
|
412715
413971
|
}
|
|
412716
|
-
)
|
|
413972
|
+
),
|
|
412717
413973
|
{
|
|
412718
413974
|
exitOnCtrlC: false
|
|
412719
413975
|
}
|
|
@@ -415043,7 +416299,7 @@ var GeminiAgent = class {
|
|
|
415043
416299
|
name: APPROVAL_MODE_INFO[mode].name,
|
|
415044
416300
|
description: APPROVAL_MODE_INFO[mode].description
|
|
415045
416301
|
}));
|
|
415046
|
-
const version2 = "0.6.
|
|
416302
|
+
const version2 = "0.6.3-termux";
|
|
415047
416303
|
return {
|
|
415048
416304
|
protocolVersion: PROTOCOL_VERSION,
|
|
415049
416305
|
agentInfo: {
|
|
@@ -415358,13 +416614,15 @@ async function startInteractiveUI(config2, settings, startupWarnings, workspaceR
|
|
|
415358
416614
|
isScreenReaderEnabled: config2.getScreenReader()
|
|
415359
416615
|
}
|
|
415360
416616
|
);
|
|
415361
|
-
|
|
415362
|
-
|
|
415363
|
-
|
|
415364
|
-
|
|
415365
|
-
|
|
415366
|
-
|
|
415367
|
-
|
|
416617
|
+
if (!settings.merged.general?.disableUpdateNag) {
|
|
416618
|
+
checkForUpdates().then((info) => {
|
|
416619
|
+
handleAutoUpdate(info, settings, config2.getProjectRoot());
|
|
416620
|
+
}).catch((err) => {
|
|
416621
|
+
if (config2.getDebugMode()) {
|
|
416622
|
+
console.error("Update check failed:", err);
|
|
416623
|
+
}
|
|
416624
|
+
});
|
|
416625
|
+
}
|
|
415368
416626
|
registerCleanup(() => instance.unmount());
|
|
415369
416627
|
}
|
|
415370
416628
|
__name(startInteractiveUI, "startInteractiveUI");
|
|
@@ -415501,7 +416759,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
415501
416759
|
return runAcpAgent(config2, settings, extensions, argv);
|
|
415502
416760
|
}
|
|
415503
416761
|
let input = config2.getQuestion();
|
|
415504
|
-
|
|
416762
|
+
let startupWarnings = [
|
|
415505
416763
|
...await getStartupWarnings(),
|
|
415506
416764
|
...await getUserStartupWarnings({
|
|
415507
416765
|
workspaceRoot: process.cwd(),
|
|
@@ -415509,6 +416767,9 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
415509
416767
|
useBuiltinRipgrep: settings.merged.tools?.useBuiltinRipgrep ?? true
|
|
415510
416768
|
})
|
|
415511
416769
|
];
|
|
416770
|
+
if (settings.merged.ui?.hideBanner || config2.getScreenReader()) {
|
|
416771
|
+
startupWarnings = [];
|
|
416772
|
+
}
|
|
415512
416773
|
if (config2.isInteractive()) {
|
|
415513
416774
|
await kittyProtocolDetectionComplete;
|
|
415514
416775
|
await startInteractiveUI(
|
|
@@ -415619,6 +416880,11 @@ main().catch((error2) => {
|
|
|
415619
416880
|
* Copyright 2025 Qwen Team
|
|
415620
416881
|
* SPDX-License-Identifier: Apache-2.0
|
|
415621
416882
|
*/
|
|
416883
|
+
/**
|
|
416884
|
+
* @license
|
|
416885
|
+
* Copyright 2026 Google LLC
|
|
416886
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
416887
|
+
*/
|
|
415622
416888
|
/**
|
|
415623
416889
|
* @license
|
|
415624
416890
|
* Copyright 2025 Qwen team
|