@mmmbuto/qwen-code-termux 0.6.2-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 +112 -3
- package/{cli.js → dist/cli.js} +1416 -285
- package/package.json +132 -17
- package/locales/en.js +0 -1073
- package/locales/ru.js +0 -1092
- package/locales/zh.js +0 -927
- /package/{sandbox-macos-permissive-closed.sb → dist/sandbox-macos-permissive-closed.sb} +0 -0
- /package/{sandbox-macos-permissive-open.sb → dist/sandbox-macos-permissive-open.sb} +0 -0
- /package/{sandbox-macos-permissive-proxied.sb → dist/sandbox-macos-permissive-proxied.sb} +0 -0
- /package/{sandbox-macos-restrictive-closed.sb → dist/sandbox-macos-restrictive-closed.sb} +0 -0
- /package/{sandbox-macos-restrictive-open.sb → dist/sandbox-macos-restrictive-open.sb} +0 -0
- /package/{sandbox-macos-restrictive-proxied.sb → dist/sandbox-macos-restrictive-proxied.sb} +0 -0
- /package/{tiktoken_bg.wasm → dist/tiktoken_bg.wasm} +0 -0
- /package/{vendor → dist/vendor}/ripgrep/COPYING +0 -0
- /package/{vendor → dist/vendor}/ripgrep/arm64-darwin/rg +0 -0
- /package/{vendor → dist/vendor}/ripgrep/arm64-linux/rg +0 -0
- /package/{vendor → dist/vendor}/ripgrep/x64-darwin/rg +0 -0
- /package/{vendor → dist/vendor}/ripgrep/x64-linux/rg +0 -0
- /package/{vendor → dist/vendor}/ripgrep/x64-win32/rg.exe +0 -0
package/{cli.js → dist/cli.js}
RENAMED
|
@@ -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,39 +142961,106 @@ __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";
|
|
142955
|
-
import {
|
|
142966
|
+
import { execFileSync as execFileSync2 } from "node:child_process";
|
|
142956
142967
|
import { EventEmitter as EventEmitter2 } from "events";
|
|
142957
142968
|
import { randomUUID as randomUUID3 } from "node:crypto";
|
|
142958
142969
|
function isTermux() {
|
|
142959
142970
|
return process.platform === "android" || process.env["PREFIX"]?.includes("com.termux") || process.env["TERMUX_VERSION"] !== void 0;
|
|
142960
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
|
+
}
|
|
142961
143005
|
async function openBrowserUrl(url2) {
|
|
142962
143006
|
if (isTermux()) {
|
|
142963
|
-
|
|
142964
|
-
|
|
142965
|
-
|
|
142966
|
-
|
|
142967
|
-
|
|
142968
|
-
|
|
142969
|
-
|
|
142970
|
-
|
|
142971
|
-
|
|
142972
|
-
|
|
142973
|
-
|
|
142974
|
-
|
|
142975
|
-
} catch {
|
|
142976
|
-
}
|
|
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 {
|
|
142977
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 {
|
|
142978
143030
|
console.debug(`Opening URL with: ${termuxOpenUrl}`);
|
|
142979
|
-
|
|
142980
|
-
stdio:
|
|
142981
|
-
env:
|
|
143031
|
+
execFileSync2(termuxOpenUrl, args, {
|
|
143032
|
+
stdio: "ignore",
|
|
143033
|
+
env: env7
|
|
142982
143034
|
});
|
|
143035
|
+
return;
|
|
142983
143036
|
} catch (error2) {
|
|
142984
|
-
|
|
142985
|
-
|
|
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
|
+
}
|
|
142986
143064
|
}
|
|
142987
143065
|
} else {
|
|
142988
143066
|
await open_default(url2);
|
|
@@ -143266,6 +143344,9 @@ var init_qwenOAuth2 = __esm({
|
|
|
143266
143344
|
QWEN_DIR3 = ".qwen";
|
|
143267
143345
|
QWEN_CREDENTIAL_FILENAME2 = "oauth_creds.json";
|
|
143268
143346
|
__name(isTermux, "isTermux");
|
|
143347
|
+
__name(ensureSystemBinInPath, "ensureSystemBinInPath");
|
|
143348
|
+
__name(resolveAndroidCommand, "resolveAndroidCommand");
|
|
143349
|
+
__name(getAndroidUserId, "getAndroidUserId");
|
|
143269
143350
|
__name(openBrowserUrl, "openBrowserUrl");
|
|
143270
143351
|
__name(generateCodeVerifier, "generateCodeVerifier");
|
|
143271
143352
|
__name(generateCodeChallenge, "generateCodeChallenge");
|
|
@@ -154927,7 +155008,7 @@ __export(geminiContentGenerator_exports, {
|
|
|
154927
155008
|
createGeminiContentGenerator: () => createGeminiContentGenerator
|
|
154928
155009
|
});
|
|
154929
155010
|
function createGeminiContentGenerator(config2, gcConfig) {
|
|
154930
|
-
const version2 = "0.6.
|
|
155011
|
+
const version2 = "0.6.3-termux";
|
|
154931
155012
|
const userAgent2 = config2.userAgent || `QwenCode/${version2} (${process.platform}; ${process.arch})`;
|
|
154932
155013
|
const baseHeaders = {
|
|
154933
155014
|
"User-Agent": userAgent2
|
|
@@ -155523,7 +155604,7 @@ var init_jsonl_utils = __esm({
|
|
|
155523
155604
|
// packages/core/dist/src/utils/gitUtils.js
|
|
155524
155605
|
import * as fs16 from "node:fs";
|
|
155525
155606
|
import * as path11 from "node:path";
|
|
155526
|
-
import { execSync
|
|
155607
|
+
import { execSync } from "node:child_process";
|
|
155527
155608
|
function isGitRepository(directory) {
|
|
155528
155609
|
try {
|
|
155529
155610
|
let currentDir = path11.resolve(directory);
|
|
@@ -155551,7 +155632,7 @@ var init_gitUtils = __esm({
|
|
|
155551
155632
|
__name(isGitRepository, "isGitRepository");
|
|
155552
155633
|
getGitBranch = /* @__PURE__ */ __name((cwd7) => {
|
|
155553
155634
|
try {
|
|
155554
|
-
const branch =
|
|
155635
|
+
const branch = execSync("git rev-parse --abbrev-ref HEAD", {
|
|
155555
155636
|
cwd: cwd7,
|
|
155556
155637
|
encoding: "utf8",
|
|
155557
155638
|
stdio: ["pipe", "pipe", "pipe"]
|
|
@@ -159468,7 +159549,7 @@ var init_types4 = __esm({
|
|
|
159468
159549
|
});
|
|
159469
159550
|
|
|
159470
159551
|
// packages/core/dist/src/utils/editor.js
|
|
159471
|
-
import { execSync as
|
|
159552
|
+
import { execSync as execSync2, spawn, spawnSync } from "node:child_process";
|
|
159472
159553
|
function isValidEditorType(editor) {
|
|
159473
159554
|
return [
|
|
159474
159555
|
"vscode",
|
|
@@ -159484,7 +159565,7 @@ function isValidEditorType(editor) {
|
|
|
159484
159565
|
}
|
|
159485
159566
|
function commandExists(cmd) {
|
|
159486
159567
|
try {
|
|
159487
|
-
|
|
159568
|
+
execSync2(process.platform === "win32" ? `where.exe ${cmd}` : `command -v ${cmd}`, { stdio: "ignore" });
|
|
159488
159569
|
return true;
|
|
159489
159570
|
} catch {
|
|
159490
159571
|
return false;
|
|
@@ -165747,7 +165828,7 @@ var require_lib3 = __commonJS({
|
|
|
165747
165828
|
});
|
|
165748
165829
|
|
|
165749
165830
|
// packages/core/dist/src/utils/systemEncoding.js
|
|
165750
|
-
import { execSync as
|
|
165831
|
+
import { execSync as execSync3 } from "node:child_process";
|
|
165751
165832
|
import os11 from "node:os";
|
|
165752
165833
|
function getCachedEncodingForBuffer(buffer) {
|
|
165753
165834
|
if (cachedSystemEncoding === void 0) {
|
|
@@ -165767,7 +165848,7 @@ function getCachedEncodingForBuffer(buffer) {
|
|
|
165767
165848
|
function getSystemEncoding() {
|
|
165768
165849
|
if (os11.platform() === "win32") {
|
|
165769
165850
|
try {
|
|
165770
|
-
const output =
|
|
165851
|
+
const output = execSync3("chcp", { encoding: "utf8" });
|
|
165771
165852
|
const match3 = output.match(/:\s*(\d+)/);
|
|
165772
165853
|
if (match3) {
|
|
165773
165854
|
const codePage = parseInt(match3[1], 10);
|
|
@@ -165785,7 +165866,7 @@ function getSystemEncoding() {
|
|
|
165785
165866
|
let locale = env7["LC_ALL"] || env7["LC_CTYPE"] || env7["LANG"] || "";
|
|
165786
165867
|
if (!locale) {
|
|
165787
165868
|
try {
|
|
165788
|
-
locale =
|
|
165869
|
+
locale = execSync3("locale charmap", { encoding: "utf8" }).toString().trim();
|
|
165789
165870
|
} catch (_e2) {
|
|
165790
165871
|
console.warn("Failed to get locale charmap.");
|
|
165791
165872
|
return null;
|
|
@@ -169777,10 +169858,10 @@ var init_terminalSerializer = __esm({
|
|
|
169777
169858
|
});
|
|
169778
169859
|
|
|
169779
169860
|
// packages/core/dist/src/services/shellExecutionService.js
|
|
169780
|
-
import { spawn as cpSpawn } from "node:child_process";
|
|
169861
|
+
import { spawn as cpSpawn, spawnSync as spawnSync2 } from "node:child_process";
|
|
169781
169862
|
import { TextDecoder as TextDecoder2 } from "node:util";
|
|
169782
169863
|
import os12 from "node:os";
|
|
169783
|
-
var import_headless, Terminal, SIGKILL_TIMEOUT_MS, getFullBufferText, ShellExecutionService;
|
|
169864
|
+
var import_headless, Terminal, SIGKILL_TIMEOUT_MS, getFullBufferText, windowsStrategy, posixStrategy, getCleanupStrategy, ShellExecutionService;
|
|
169784
169865
|
var init_shellExecutionService = __esm({
|
|
169785
169866
|
"packages/core/dist/src/services/shellExecutionService.js"() {
|
|
169786
169867
|
"use strict";
|
|
@@ -169803,11 +169884,58 @@ var init_shellExecutionService = __esm({
|
|
|
169803
169884
|
}
|
|
169804
169885
|
return lines.join("\n").trimEnd();
|
|
169805
169886
|
}, "getFullBufferText");
|
|
169806
|
-
|
|
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 {
|
|
169807
169919
|
static {
|
|
169808
169920
|
__name(this, "ShellExecutionService");
|
|
169809
169921
|
}
|
|
169810
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
|
+
}
|
|
169811
169939
|
/**
|
|
169812
169940
|
* Executes a shell command using `node-pty`, capturing all output and lifecycle events.
|
|
169813
169941
|
*
|
|
@@ -169838,7 +169966,7 @@ var init_shellExecutionService = __esm({
|
|
|
169838
169966
|
stdio: ["ignore", "pipe", "pipe"],
|
|
169839
169967
|
windowsVerbatimArguments: true,
|
|
169840
169968
|
shell: isWindows8 ? true : "bash",
|
|
169841
|
-
detached:
|
|
169969
|
+
detached: true,
|
|
169842
169970
|
env: {
|
|
169843
169971
|
...process.env,
|
|
169844
169972
|
QWEN_CODE: "1",
|
|
@@ -169934,9 +170062,12 @@ var init_shellExecutionService = __esm({
|
|
|
169934
170062
|
}
|
|
169935
170063
|
}, "abortHandler");
|
|
169936
170064
|
abortSignal.addEventListener("abort", abortHandler, { once: true });
|
|
170065
|
+
if (child.pid) {
|
|
170066
|
+
this.activeChildProcesses.add(child.pid);
|
|
170067
|
+
}
|
|
169937
170068
|
child.on("exit", (code2, signal) => {
|
|
169938
170069
|
if (child.pid) {
|
|
169939
|
-
this.
|
|
170070
|
+
this.activeChildProcesses.delete(child.pid);
|
|
169940
170071
|
}
|
|
169941
170072
|
handleExit(code2, signal);
|
|
169942
170073
|
});
|
|
@@ -169960,7 +170091,7 @@ var init_shellExecutionService = __esm({
|
|
|
169960
170091
|
}
|
|
169961
170092
|
__name(cleanup, "cleanup");
|
|
169962
170093
|
});
|
|
169963
|
-
return { pid:
|
|
170094
|
+
return { pid: child.pid, result };
|
|
169964
170095
|
} catch (e4) {
|
|
169965
170096
|
const error2 = e4;
|
|
169966
170097
|
return {
|
|
@@ -170776,8 +170907,8 @@ var init_shellReadOnlyChecker = __esm({
|
|
|
170776
170907
|
|
|
170777
170908
|
// packages/core/dist/src/utils/shell-utils.js
|
|
170778
170909
|
import os13 from "node:os";
|
|
170779
|
-
import { execFile as execFile6, execFileSync as
|
|
170780
|
-
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";
|
|
170781
170912
|
function getShellConfiguration() {
|
|
170782
170913
|
if (isWindows()) {
|
|
170783
170914
|
const comSpec = process.env["ComSpec"] || "cmd.exe";
|
|
@@ -171033,7 +171164,7 @@ function resolveCommandPath(command2) {
|
|
|
171033
171164
|
const checkArgs = [command2];
|
|
171034
171165
|
let result = null;
|
|
171035
171166
|
try {
|
|
171036
|
-
result =
|
|
171167
|
+
result = execFileSync3(checkCommand, checkArgs, {
|
|
171037
171168
|
encoding: "utf8",
|
|
171038
171169
|
shell: false
|
|
171039
171170
|
}).trim();
|
|
@@ -171046,7 +171177,7 @@ function resolveCommandPath(command2) {
|
|
|
171046
171177
|
const checkArgs = ["-c", `command -v ${escapeShellArg(command2, "bash")}`];
|
|
171047
171178
|
let result = null;
|
|
171048
171179
|
try {
|
|
171049
|
-
result =
|
|
171180
|
+
result = execFileSync3(shell2, checkArgs, {
|
|
171050
171181
|
encoding: "utf8",
|
|
171051
171182
|
shell: false
|
|
171052
171183
|
}).trim();
|
|
@@ -171055,7 +171186,7 @@ function resolveCommandPath(command2) {
|
|
|
171055
171186
|
}
|
|
171056
171187
|
if (!result)
|
|
171057
171188
|
return { path: null, error: void 0 };
|
|
171058
|
-
|
|
171189
|
+
accessSync2(result, fsConstants2.X_OK);
|
|
171059
171190
|
return { path: result, error: void 0 };
|
|
171060
171191
|
}
|
|
171061
171192
|
} catch (error2) {
|
|
@@ -171239,9 +171370,12 @@ var init_shell = __esm({
|
|
|
171239
171370
|
const processedCommand = this.addCoAuthorToGitCommit(strippedCommand);
|
|
171240
171371
|
const shouldRunInBackground = this.params.is_background;
|
|
171241
171372
|
let finalCommand = processedCommand;
|
|
171242
|
-
if (shouldRunInBackground && !finalCommand.trim().endsWith("&")) {
|
|
171373
|
+
if (!isWindows8 && shouldRunInBackground && !finalCommand.trim().endsWith("&")) {
|
|
171243
171374
|
finalCommand = finalCommand.trim() + " &";
|
|
171244
171375
|
}
|
|
171376
|
+
if (isWindows8 && shouldRunInBackground) {
|
|
171377
|
+
finalCommand = finalCommand.trim().replace(/&+$/, "").trim();
|
|
171378
|
+
}
|
|
171245
171379
|
const commandToExecute = isWindows8 ? finalCommand : (() => {
|
|
171246
171380
|
let command2 = finalCommand.trim();
|
|
171247
171381
|
if (!command2.endsWith("&"))
|
|
@@ -171253,9 +171387,6 @@ var init_shell = __esm({
|
|
|
171253
171387
|
let lastUpdateTime = Date.now();
|
|
171254
171388
|
let isBinaryStream = false;
|
|
171255
171389
|
const { result: resultPromise, pid } = await ShellExecutionService.execute(commandToExecute, cwd7, (event) => {
|
|
171256
|
-
if (!updateOutput2) {
|
|
171257
|
-
return;
|
|
171258
|
-
}
|
|
171259
171390
|
let shouldUpdate = false;
|
|
171260
171391
|
switch (event.type) {
|
|
171261
171392
|
case "data":
|
|
@@ -171280,7 +171411,7 @@ var init_shell = __esm({
|
|
|
171280
171411
|
throw new Error("An unhandled ShellOutputEvent was found.");
|
|
171281
171412
|
}
|
|
171282
171413
|
}
|
|
171283
|
-
if (shouldUpdate) {
|
|
171414
|
+
if (shouldUpdate && updateOutput2) {
|
|
171284
171415
|
updateOutput2(typeof cumulativeOutput === "string" ? cumulativeOutput : { ansiOutput: cumulativeOutput });
|
|
171285
171416
|
lastUpdateTime = Date.now();
|
|
171286
171417
|
}
|
|
@@ -171288,6 +171419,14 @@ var init_shell = __esm({
|
|
|
171288
171419
|
if (pid && setPidCallback) {
|
|
171289
171420
|
setPidCallback(pid);
|
|
171290
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
|
+
}
|
|
171291
171430
|
const result = await resultPromise;
|
|
171292
171431
|
const backgroundPIDs = [];
|
|
171293
171432
|
if (os14.platform() !== "win32") {
|
|
@@ -171941,7 +172080,7 @@ var init_coreToolScheduler = __esm({
|
|
|
171941
172080
|
this.setToolCallOutcome(reqInfo.callId, ToolConfirmationOutcome.ProceedAlways);
|
|
171942
172081
|
this.setStatusInternal(reqInfo.callId, "scheduled");
|
|
171943
172082
|
} else {
|
|
171944
|
-
const shouldAutoDeny = !this.config.isInteractive() && !this.config.
|
|
172083
|
+
const shouldAutoDeny = !this.config.isInteractive() && !this.config.getExperimentalZedIntegration() && this.config.getInputFormat() !== InputFormat.STREAM_JSON;
|
|
171945
172084
|
if (shouldAutoDeny) {
|
|
171946
172085
|
const errorMessage = `Qwen Code requires permission to use "${reqInfo.name}", but that permission was declined.`;
|
|
171947
172086
|
this.setStatusInternal(reqInfo.callId, "error", createErrorResponse(reqInfo, new Error(errorMessage), ToolErrorType.EXECUTION_DENIED));
|
|
@@ -202905,16 +203044,16 @@ var require_cross_spawn = __commonJS({
|
|
|
202905
203044
|
return spawned;
|
|
202906
203045
|
}
|
|
202907
203046
|
__name(spawn11, "spawn");
|
|
202908
|
-
function
|
|
203047
|
+
function spawnSync6(command2, args, options2) {
|
|
202909
203048
|
const parsed = parse13(command2, args, options2);
|
|
202910
203049
|
const result = cp2.spawnSync(parsed.command, parsed.args, parsed.options);
|
|
202911
203050
|
result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
|
|
202912
203051
|
return result;
|
|
202913
203052
|
}
|
|
202914
|
-
__name(
|
|
203053
|
+
__name(spawnSync6, "spawnSync");
|
|
202915
203054
|
module2.exports = spawn11;
|
|
202916
203055
|
module2.exports.spawn = spawn11;
|
|
202917
|
-
module2.exports.sync =
|
|
203056
|
+
module2.exports.sync = spawnSync6;
|
|
202918
203057
|
module2.exports._parse = parse13;
|
|
202919
203058
|
module2.exports._enoent = enoent;
|
|
202920
203059
|
}
|
|
@@ -219016,6 +219155,10 @@ function shouldAttemptBrowserLaunch() {
|
|
|
219016
219155
|
if (process.env["CI"] || process.env["DEBIAN_FRONTEND"] === "noninteractive") {
|
|
219017
219156
|
return false;
|
|
219018
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
|
+
}
|
|
219019
219162
|
const isSSH = !!process.env["SSH_CONNECTION"];
|
|
219020
219163
|
if (process.platform === "linux") {
|
|
219021
219164
|
const displayVariables = ["DISPLAY", "WAYLAND_DISPLAY", "MIR_SOCKET"];
|
|
@@ -223808,7 +223951,7 @@ var require_parse6 = __commonJS({
|
|
|
223808
223951
|
"packages/core/node_modules/picomatch/lib/parse.js"(exports2, module2) {
|
|
223809
223952
|
"use strict";
|
|
223810
223953
|
init_esbuild_shims();
|
|
223811
|
-
var
|
|
223954
|
+
var constants5 = require_constants11();
|
|
223812
223955
|
var utils = require_utils14();
|
|
223813
223956
|
var {
|
|
223814
223957
|
MAX_LENGTH,
|
|
@@ -223816,7 +223959,7 @@ var require_parse6 = __commonJS({
|
|
|
223816
223959
|
REGEX_NON_SPECIAL_CHARS,
|
|
223817
223960
|
REGEX_SPECIAL_CHARS_BACKREF,
|
|
223818
223961
|
REPLACEMENTS
|
|
223819
|
-
} =
|
|
223962
|
+
} = constants5;
|
|
223820
223963
|
var expandRange = /* @__PURE__ */ __name((args, options2) => {
|
|
223821
223964
|
if (typeof options2.expandRange === "function") {
|
|
223822
223965
|
return options2.expandRange(...args, options2);
|
|
@@ -223847,8 +223990,8 @@ var require_parse6 = __commonJS({
|
|
|
223847
223990
|
const bos = { type: "bos", value: "", output: opts.prepend || "" };
|
|
223848
223991
|
const tokens = [bos];
|
|
223849
223992
|
const capture = opts.capture ? "" : "?:";
|
|
223850
|
-
const PLATFORM_CHARS =
|
|
223851
|
-
const EXTGLOB_CHARS =
|
|
223993
|
+
const PLATFORM_CHARS = constants5.globChars(opts.windows);
|
|
223994
|
+
const EXTGLOB_CHARS = constants5.extglobChars(PLATFORM_CHARS);
|
|
223852
223995
|
const {
|
|
223853
223996
|
DOT_LITERAL,
|
|
223854
223997
|
PLUS_LITERAL,
|
|
@@ -224521,7 +224664,7 @@ var require_parse6 = __commonJS({
|
|
|
224521
224664
|
NO_DOTS_SLASH,
|
|
224522
224665
|
STAR,
|
|
224523
224666
|
START_ANCHOR
|
|
224524
|
-
} =
|
|
224667
|
+
} = constants5.globChars(opts.windows);
|
|
224525
224668
|
const nodot = opts.dot ? NO_DOTS : NO_DOT;
|
|
224526
224669
|
const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;
|
|
224527
224670
|
const capture = opts.capture ? "" : "?:";
|
|
@@ -224580,7 +224723,7 @@ var require_picomatch = __commonJS({
|
|
|
224580
224723
|
var scan = require_scan();
|
|
224581
224724
|
var parse13 = require_parse6();
|
|
224582
224725
|
var utils = require_utils14();
|
|
224583
|
-
var
|
|
224726
|
+
var constants5 = require_constants11();
|
|
224584
224727
|
var isObject4 = /* @__PURE__ */ __name((val) => val && typeof val === "object" && !Array.isArray(val), "isObject");
|
|
224585
224728
|
var picomatch3 = /* @__PURE__ */ __name((glob2, options2, returnState = false) => {
|
|
224586
224729
|
if (Array.isArray(glob2)) {
|
|
@@ -224708,7 +224851,7 @@ var require_picomatch = __commonJS({
|
|
|
224708
224851
|
return /$^/;
|
|
224709
224852
|
}
|
|
224710
224853
|
};
|
|
224711
|
-
picomatch3.constants =
|
|
224854
|
+
picomatch3.constants = constants5;
|
|
224712
224855
|
module2.exports = picomatch3;
|
|
224713
224856
|
}
|
|
224714
224857
|
});
|
|
@@ -227443,6 +227586,7 @@ var init_src2 = __esm({
|
|
|
227443
227586
|
init_fileUtils();
|
|
227444
227587
|
init_retry();
|
|
227445
227588
|
init_shell_utils();
|
|
227589
|
+
init_tool_utils();
|
|
227446
227590
|
init_terminalSerializer();
|
|
227447
227591
|
init_systemEncoding();
|
|
227448
227592
|
init_textUtils();
|
|
@@ -281346,17 +281490,17 @@ var require_command_exists = __commonJS({
|
|
|
281346
281490
|
"use strict";
|
|
281347
281491
|
init_esbuild_shims();
|
|
281348
281492
|
var exec5 = __require("child_process").exec;
|
|
281349
|
-
var
|
|
281493
|
+
var execSync9 = __require("child_process").execSync;
|
|
281350
281494
|
var fs101 = __require("fs");
|
|
281351
281495
|
var path112 = __require("path");
|
|
281352
281496
|
var access7 = fs101.access;
|
|
281353
|
-
var
|
|
281354
|
-
var
|
|
281497
|
+
var accessSync3 = fs101.accessSync;
|
|
281498
|
+
var constants5 = fs101.constants || fs101;
|
|
281355
281499
|
var isUsingWindows = process.platform == "win32";
|
|
281356
281500
|
var fileNotExists = /* @__PURE__ */ __name(function(commandName, callback) {
|
|
281357
281501
|
access7(
|
|
281358
281502
|
commandName,
|
|
281359
|
-
|
|
281503
|
+
constants5.F_OK,
|
|
281360
281504
|
function(err) {
|
|
281361
281505
|
callback(!err);
|
|
281362
281506
|
}
|
|
@@ -281364,7 +281508,7 @@ var require_command_exists = __commonJS({
|
|
|
281364
281508
|
}, "fileNotExists");
|
|
281365
281509
|
var fileNotExistsSync = /* @__PURE__ */ __name(function(commandName) {
|
|
281366
281510
|
try {
|
|
281367
|
-
|
|
281511
|
+
accessSync3(commandName, constants5.F_OK);
|
|
281368
281512
|
return false;
|
|
281369
281513
|
} catch (e4) {
|
|
281370
281514
|
return true;
|
|
@@ -281373,7 +281517,7 @@ var require_command_exists = __commonJS({
|
|
|
281373
281517
|
var localExecutable = /* @__PURE__ */ __name(function(commandName, callback) {
|
|
281374
281518
|
access7(
|
|
281375
281519
|
commandName,
|
|
281376
|
-
|
|
281520
|
+
constants5.F_OK | constants5.X_OK,
|
|
281377
281521
|
function(err) {
|
|
281378
281522
|
callback(null, !err);
|
|
281379
281523
|
}
|
|
@@ -281381,7 +281525,7 @@ var require_command_exists = __commonJS({
|
|
|
281381
281525
|
}, "localExecutable");
|
|
281382
281526
|
var localExecutableSync = /* @__PURE__ */ __name(function(commandName) {
|
|
281383
281527
|
try {
|
|
281384
|
-
|
|
281528
|
+
accessSync3(commandName, constants5.F_OK | constants5.X_OK);
|
|
281385
281529
|
return true;
|
|
281386
281530
|
} catch (e4) {
|
|
281387
281531
|
return false;
|
|
@@ -281420,7 +281564,7 @@ var require_command_exists = __commonJS({
|
|
|
281420
281564
|
var commandExistsUnixSync = /* @__PURE__ */ __name(function(commandName, cleanedCommandName) {
|
|
281421
281565
|
if (fileNotExistsSync(commandName)) {
|
|
281422
281566
|
try {
|
|
281423
|
-
var stdout =
|
|
281567
|
+
var stdout = execSync9(
|
|
281424
281568
|
"command -v " + cleanedCommandName + " 2>/dev/null && { echo >&1 " + cleanedCommandName + "; exit 0; }"
|
|
281425
281569
|
);
|
|
281426
281570
|
return !!stdout;
|
|
@@ -281435,7 +281579,7 @@ var require_command_exists = __commonJS({
|
|
|
281435
281579
|
return false;
|
|
281436
281580
|
}
|
|
281437
281581
|
try {
|
|
281438
|
-
var stdout =
|
|
281582
|
+
var stdout = execSync9("where " + cleanedCommandName, { stdio: [] });
|
|
281439
281583
|
return !!stdout;
|
|
281440
281584
|
} catch (error2) {
|
|
281441
281585
|
return false;
|
|
@@ -281916,11 +282060,11 @@ var require_codegen4 = __commonJS({
|
|
|
281916
282060
|
const rhs = this.rhs === void 0 ? "" : ` = ${this.rhs}`;
|
|
281917
282061
|
return `${varKind} ${this.name}${rhs};` + _n;
|
|
281918
282062
|
}
|
|
281919
|
-
optimizeNames(names,
|
|
282063
|
+
optimizeNames(names, constants5) {
|
|
281920
282064
|
if (!names[this.name.str])
|
|
281921
282065
|
return;
|
|
281922
282066
|
if (this.rhs)
|
|
281923
|
-
this.rhs = optimizeExpr(this.rhs, names,
|
|
282067
|
+
this.rhs = optimizeExpr(this.rhs, names, constants5);
|
|
281924
282068
|
return this;
|
|
281925
282069
|
}
|
|
281926
282070
|
get names() {
|
|
@@ -281940,10 +282084,10 @@ var require_codegen4 = __commonJS({
|
|
|
281940
282084
|
render({ _n }) {
|
|
281941
282085
|
return `${this.lhs} = ${this.rhs};` + _n;
|
|
281942
282086
|
}
|
|
281943
|
-
optimizeNames(names,
|
|
282087
|
+
optimizeNames(names, constants5) {
|
|
281944
282088
|
if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects)
|
|
281945
282089
|
return;
|
|
281946
|
-
this.rhs = optimizeExpr(this.rhs, names,
|
|
282090
|
+
this.rhs = optimizeExpr(this.rhs, names, constants5);
|
|
281947
282091
|
return this;
|
|
281948
282092
|
}
|
|
281949
282093
|
get names() {
|
|
@@ -282019,8 +282163,8 @@ var require_codegen4 = __commonJS({
|
|
|
282019
282163
|
optimizeNodes() {
|
|
282020
282164
|
return `${this.code}` ? this : void 0;
|
|
282021
282165
|
}
|
|
282022
|
-
optimizeNames(names,
|
|
282023
|
-
this.code = optimizeExpr(this.code, names,
|
|
282166
|
+
optimizeNames(names, constants5) {
|
|
282167
|
+
this.code = optimizeExpr(this.code, names, constants5);
|
|
282024
282168
|
return this;
|
|
282025
282169
|
}
|
|
282026
282170
|
get names() {
|
|
@@ -282052,12 +282196,12 @@ var require_codegen4 = __commonJS({
|
|
|
282052
282196
|
}
|
|
282053
282197
|
return nodes.length > 0 ? this : void 0;
|
|
282054
282198
|
}
|
|
282055
|
-
optimizeNames(names,
|
|
282199
|
+
optimizeNames(names, constants5) {
|
|
282056
282200
|
const { nodes } = this;
|
|
282057
282201
|
let i3 = nodes.length;
|
|
282058
282202
|
while (i3--) {
|
|
282059
282203
|
const n3 = nodes[i3];
|
|
282060
|
-
if (n3.optimizeNames(names,
|
|
282204
|
+
if (n3.optimizeNames(names, constants5))
|
|
282061
282205
|
continue;
|
|
282062
282206
|
subtractNames(names, n3.names);
|
|
282063
282207
|
nodes.splice(i3, 1);
|
|
@@ -282122,12 +282266,12 @@ var require_codegen4 = __commonJS({
|
|
|
282122
282266
|
return void 0;
|
|
282123
282267
|
return this;
|
|
282124
282268
|
}
|
|
282125
|
-
optimizeNames(names,
|
|
282269
|
+
optimizeNames(names, constants5) {
|
|
282126
282270
|
var _a7;
|
|
282127
|
-
this.else = (_a7 = this.else) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names,
|
|
282128
|
-
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))
|
|
282129
282273
|
return;
|
|
282130
|
-
this.condition = optimizeExpr(this.condition, names,
|
|
282274
|
+
this.condition = optimizeExpr(this.condition, names, constants5);
|
|
282131
282275
|
return this;
|
|
282132
282276
|
}
|
|
282133
282277
|
get names() {
|
|
@@ -282156,10 +282300,10 @@ var require_codegen4 = __commonJS({
|
|
|
282156
282300
|
render(opts) {
|
|
282157
282301
|
return `for(${this.iteration})` + super.render(opts);
|
|
282158
282302
|
}
|
|
282159
|
-
optimizeNames(names,
|
|
282160
|
-
if (!super.optimizeNames(names,
|
|
282303
|
+
optimizeNames(names, constants5) {
|
|
282304
|
+
if (!super.optimizeNames(names, constants5))
|
|
282161
282305
|
return;
|
|
282162
|
-
this.iteration = optimizeExpr(this.iteration, names,
|
|
282306
|
+
this.iteration = optimizeExpr(this.iteration, names, constants5);
|
|
282163
282307
|
return this;
|
|
282164
282308
|
}
|
|
282165
282309
|
get names() {
|
|
@@ -282201,10 +282345,10 @@ var require_codegen4 = __commonJS({
|
|
|
282201
282345
|
render(opts) {
|
|
282202
282346
|
return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts);
|
|
282203
282347
|
}
|
|
282204
|
-
optimizeNames(names,
|
|
282205
|
-
if (!super.optimizeNames(names,
|
|
282348
|
+
optimizeNames(names, constants5) {
|
|
282349
|
+
if (!super.optimizeNames(names, constants5))
|
|
282206
282350
|
return;
|
|
282207
|
-
this.iterable = optimizeExpr(this.iterable, names,
|
|
282351
|
+
this.iterable = optimizeExpr(this.iterable, names, constants5);
|
|
282208
282352
|
return this;
|
|
282209
282353
|
}
|
|
282210
282354
|
get names() {
|
|
@@ -282255,11 +282399,11 @@ var require_codegen4 = __commonJS({
|
|
|
282255
282399
|
(_b2 = this.finally) === null || _b2 === void 0 ? void 0 : _b2.optimizeNodes();
|
|
282256
282400
|
return this;
|
|
282257
282401
|
}
|
|
282258
|
-
optimizeNames(names,
|
|
282402
|
+
optimizeNames(names, constants5) {
|
|
282259
282403
|
var _a7, _b2;
|
|
282260
|
-
super.optimizeNames(names,
|
|
282261
|
-
(_a7 = this.catch) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names,
|
|
282262
|
-
(_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);
|
|
282263
282407
|
return this;
|
|
282264
282408
|
}
|
|
282265
282409
|
get names() {
|
|
@@ -282571,7 +282715,7 @@ var require_codegen4 = __commonJS({
|
|
|
282571
282715
|
return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names;
|
|
282572
282716
|
}
|
|
282573
282717
|
__name(addExprNames, "addExprNames");
|
|
282574
|
-
function optimizeExpr(expr, names,
|
|
282718
|
+
function optimizeExpr(expr, names, constants5) {
|
|
282575
282719
|
if (expr instanceof code_1.Name)
|
|
282576
282720
|
return replaceName(expr);
|
|
282577
282721
|
if (!canOptimize(expr))
|
|
@@ -282586,7 +282730,7 @@ var require_codegen4 = __commonJS({
|
|
|
282586
282730
|
return items;
|
|
282587
282731
|
}, []));
|
|
282588
282732
|
function replaceName(n3) {
|
|
282589
|
-
const c4 =
|
|
282733
|
+
const c4 = constants5[n3.str];
|
|
282590
282734
|
if (c4 === void 0 || names[n3.str] !== 1)
|
|
282591
282735
|
return n3;
|
|
282592
282736
|
delete names[n3.str];
|
|
@@ -282594,7 +282738,7 @@ var require_codegen4 = __commonJS({
|
|
|
282594
282738
|
}
|
|
282595
282739
|
__name(replaceName, "replaceName");
|
|
282596
282740
|
function canOptimize(e4) {
|
|
282597
|
-
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);
|
|
282598
282742
|
}
|
|
282599
282743
|
__name(canOptimize, "canOptimize");
|
|
282600
282744
|
}
|
|
@@ -287593,6 +287737,842 @@ var require_ajv3 = __commonJS({
|
|
|
287593
287737
|
}
|
|
287594
287738
|
});
|
|
287595
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
|
+
|
|
287596
288576
|
// packages/cli/src/i18n/locales/en.js
|
|
287597
288577
|
var en_exports = {};
|
|
287598
288578
|
__export(en_exports, {
|
|
@@ -287671,6 +288651,8 @@ var init_en3 = __esm({
|
|
|
287671
288651
|
"Available Qwen Code CLI tools:": "Available Qwen Code CLI tools:",
|
|
287672
288652
|
"No tools available": "No tools available",
|
|
287673
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}}"',
|
|
287674
288656
|
"View or change the language setting": "View or change the language setting",
|
|
287675
288657
|
"change the theme": "change the theme",
|
|
287676
288658
|
"Select Theme": "Select Theme",
|
|
@@ -288393,7 +289375,6 @@ var init_en3 = __esm({
|
|
|
288393
289375
|
"Applying percussive maintenance...",
|
|
288394
289376
|
"Searching for the correct USB orientation...",
|
|
288395
289377
|
"Ensuring the magic smoke stays inside the wires...",
|
|
288396
|
-
"Rewriting in Rust for no particular reason...",
|
|
288397
289378
|
"Trying to exit Vim...",
|
|
288398
289379
|
"Spinning up the hamster wheel...",
|
|
288399
289380
|
"That's not a bug, it's an undocumented feature...",
|
|
@@ -288508,6 +289489,8 @@ var init_ru = __esm({
|
|
|
288508
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:",
|
|
288509
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",
|
|
288510
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}}"',
|
|
288511
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",
|
|
288512
289495
|
"change the theme": "\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435 \u0442\u0435\u043C\u044B",
|
|
288513
289496
|
"Select Theme": "\u0412\u044B\u0431\u043E\u0440 \u0442\u0435\u043C\u044B",
|
|
@@ -289231,7 +290214,6 @@ var init_ru = __esm({
|
|
|
289231
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...",
|
|
289232
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...",
|
|
289233
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...",
|
|
289234
|
-
"\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...",
|
|
289235
290217
|
"\u041F\u044B\u0442\u0430\u0435\u043C\u0441\u044F \u0432\u044B\u0439\u0442\u0438 \u0438\u0437 Vim...",
|
|
289236
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...",
|
|
289237
290219
|
"\u042D\u0442\u043E \u043D\u0435 \u0431\u0430\u0433, \u0430 \u0444\u0438\u0447\u0430...",
|
|
@@ -289346,6 +290328,8 @@ var init_zh = __esm({
|
|
|
289346
290328
|
"Available Qwen Code CLI tools:": "\u53EF\u7528\u7684 Qwen Code CLI \u5DE5\u5177\uFF1A",
|
|
289347
290329
|
"No tools available": "\u6CA1\u6709\u53EF\u7528\u5DE5\u5177",
|
|
289348
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}}"',
|
|
289349
290333
|
"View or change the language setting": "\u67E5\u770B\u6216\u66F4\u6539\u8BED\u8A00\u8BBE\u7F6E",
|
|
289350
290334
|
"change the theme": "\u66F4\u6539\u4E3B\u9898",
|
|
289351
290335
|
"Select Theme": "\u9009\u62E9\u4E3B\u9898",
|
|
@@ -295697,7 +296681,7 @@ var require_client_h12 = __commonJS({
|
|
|
295697
296681
|
kResume,
|
|
295698
296682
|
kHTTPContext
|
|
295699
296683
|
} = require_symbols6();
|
|
295700
|
-
var
|
|
296684
|
+
var constants5 = require_constants15();
|
|
295701
296685
|
var EMPTY_BUF = Buffer.alloc(0);
|
|
295702
296686
|
var FastBuffer = Buffer[Symbol.species];
|
|
295703
296687
|
var addListener = util4.addListener;
|
|
@@ -295773,7 +296757,7 @@ var require_client_h12 = __commonJS({
|
|
|
295773
296757
|
constructor(client, socket, { exports: exports3 }) {
|
|
295774
296758
|
assert4(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0);
|
|
295775
296759
|
this.llhttp = exports3;
|
|
295776
|
-
this.ptr = this.llhttp.llhttp_alloc(
|
|
296760
|
+
this.ptr = this.llhttp.llhttp_alloc(constants5.TYPE.RESPONSE);
|
|
295777
296761
|
this.client = client;
|
|
295778
296762
|
this.socket = socket;
|
|
295779
296763
|
this.timeout = null;
|
|
@@ -295868,19 +296852,19 @@ var require_client_h12 = __commonJS({
|
|
|
295868
296852
|
currentBufferRef = null;
|
|
295869
296853
|
}
|
|
295870
296854
|
const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr;
|
|
295871
|
-
if (ret ===
|
|
296855
|
+
if (ret === constants5.ERROR.PAUSED_UPGRADE) {
|
|
295872
296856
|
this.onUpgrade(data.slice(offset));
|
|
295873
|
-
} else if (ret ===
|
|
296857
|
+
} else if (ret === constants5.ERROR.PAUSED) {
|
|
295874
296858
|
this.paused = true;
|
|
295875
296859
|
socket.unshift(data.slice(offset));
|
|
295876
|
-
} else if (ret !==
|
|
296860
|
+
} else if (ret !== constants5.ERROR.OK) {
|
|
295877
296861
|
const ptr = llhttp.llhttp_get_error_reason(this.ptr);
|
|
295878
296862
|
let message = "";
|
|
295879
296863
|
if (ptr) {
|
|
295880
296864
|
const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
|
|
295881
296865
|
message = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
|
|
295882
296866
|
}
|
|
295883
|
-
throw new HTTPParserError(message,
|
|
296867
|
+
throw new HTTPParserError(message, constants5.ERROR[ret], data.slice(offset));
|
|
295884
296868
|
}
|
|
295885
296869
|
} catch (err) {
|
|
295886
296870
|
util4.destroy(socket, err);
|
|
@@ -296055,7 +297039,7 @@ var require_client_h12 = __commonJS({
|
|
|
296055
297039
|
socket[kBlocking] = false;
|
|
296056
297040
|
client[kResume]();
|
|
296057
297041
|
}
|
|
296058
|
-
return pause ?
|
|
297042
|
+
return pause ? constants5.ERROR.PAUSED : 0;
|
|
296059
297043
|
}
|
|
296060
297044
|
onBody(buf) {
|
|
296061
297045
|
const { client, socket, statusCode, maxResponseSize } = this;
|
|
@@ -296077,7 +297061,7 @@ var require_client_h12 = __commonJS({
|
|
|
296077
297061
|
}
|
|
296078
297062
|
this.bytesRead += buf.length;
|
|
296079
297063
|
if (request4.onData(buf) === false) {
|
|
296080
|
-
return
|
|
297064
|
+
return constants5.ERROR.PAUSED;
|
|
296081
297065
|
}
|
|
296082
297066
|
}
|
|
296083
297067
|
onMessageComplete() {
|
|
@@ -296112,13 +297096,13 @@ var require_client_h12 = __commonJS({
|
|
|
296112
297096
|
if (socket[kWriting]) {
|
|
296113
297097
|
assert4(client[kRunning] === 0);
|
|
296114
297098
|
util4.destroy(socket, new InformationalError("reset"));
|
|
296115
|
-
return
|
|
297099
|
+
return constants5.ERROR.PAUSED;
|
|
296116
297100
|
} else if (!shouldKeepAlive) {
|
|
296117
297101
|
util4.destroy(socket, new InformationalError("reset"));
|
|
296118
|
-
return
|
|
297102
|
+
return constants5.ERROR.PAUSED;
|
|
296119
297103
|
} else if (socket[kReset2] && client[kRunning] === 0) {
|
|
296120
297104
|
util4.destroy(socket, new InformationalError("reset"));
|
|
296121
|
-
return
|
|
297105
|
+
return constants5.ERROR.PAUSED;
|
|
296122
297106
|
} else if (client[kPipelining] == null || client[kPipelining] === 1) {
|
|
296123
297107
|
setImmediate(() => client[kResume]());
|
|
296124
297108
|
} else {
|
|
@@ -328356,7 +329340,7 @@ var require_src43 = __commonJS({
|
|
|
328356
329340
|
var require_polyfills = __commonJS({
|
|
328357
329341
|
"node_modules/graceful-fs/polyfills.js"(exports2, module2) {
|
|
328358
329342
|
init_esbuild_shims();
|
|
328359
|
-
var
|
|
329343
|
+
var constants5 = __require("constants");
|
|
328360
329344
|
var origCwd = process.cwd;
|
|
328361
329345
|
var cwd7 = null;
|
|
328362
329346
|
var platform15 = process.env.GRACEFUL_FS_PLATFORM || process.platform;
|
|
@@ -328380,7 +329364,7 @@ var require_polyfills = __commonJS({
|
|
|
328380
329364
|
var chdir;
|
|
328381
329365
|
module2.exports = patch;
|
|
328382
329366
|
function patch(fs101) {
|
|
328383
|
-
if (
|
|
329367
|
+
if (constants5.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
|
|
328384
329368
|
patchLchmod(fs101);
|
|
328385
329369
|
}
|
|
328386
329370
|
if (!fs101.lutimes) {
|
|
@@ -328484,7 +329468,7 @@ var require_polyfills = __commonJS({
|
|
|
328484
329468
|
fs102.lchmod = function(path112, mode, callback) {
|
|
328485
329469
|
fs102.open(
|
|
328486
329470
|
path112,
|
|
328487
|
-
|
|
329471
|
+
constants5.O_WRONLY | constants5.O_SYMLINK,
|
|
328488
329472
|
mode,
|
|
328489
329473
|
function(err, fd) {
|
|
328490
329474
|
if (err) {
|
|
@@ -328500,7 +329484,7 @@ var require_polyfills = __commonJS({
|
|
|
328500
329484
|
);
|
|
328501
329485
|
};
|
|
328502
329486
|
fs102.lchmodSync = function(path112, mode) {
|
|
328503
|
-
var fd = fs102.openSync(path112,
|
|
329487
|
+
var fd = fs102.openSync(path112, constants5.O_WRONLY | constants5.O_SYMLINK, mode);
|
|
328504
329488
|
var threw = true;
|
|
328505
329489
|
var ret;
|
|
328506
329490
|
try {
|
|
@@ -328521,9 +329505,9 @@ var require_polyfills = __commonJS({
|
|
|
328521
329505
|
}
|
|
328522
329506
|
__name(patchLchmod, "patchLchmod");
|
|
328523
329507
|
function patchLutimes(fs102) {
|
|
328524
|
-
if (
|
|
329508
|
+
if (constants5.hasOwnProperty("O_SYMLINK") && fs102.futimes) {
|
|
328525
329509
|
fs102.lutimes = function(path112, at2, mt2, cb) {
|
|
328526
|
-
fs102.open(path112,
|
|
329510
|
+
fs102.open(path112, constants5.O_SYMLINK, function(er2, fd) {
|
|
328527
329511
|
if (er2) {
|
|
328528
329512
|
if (cb) cb(er2);
|
|
328529
329513
|
return;
|
|
@@ -328536,7 +329520,7 @@ var require_polyfills = __commonJS({
|
|
|
328536
329520
|
});
|
|
328537
329521
|
};
|
|
328538
329522
|
fs102.lutimesSync = function(path112, at2, mt2) {
|
|
328539
|
-
var fd = fs102.openSync(path112,
|
|
329523
|
+
var fd = fs102.openSync(path112, constants5.O_SYMLINK);
|
|
328540
329524
|
var ret;
|
|
328541
329525
|
var threw = true;
|
|
328542
329526
|
try {
|
|
@@ -329932,7 +330916,7 @@ var require_rc = __commonJS({
|
|
|
329932
330916
|
var require_polyfills2 = __commonJS({
|
|
329933
330917
|
"node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/polyfills.js"(exports2, module2) {
|
|
329934
330918
|
init_esbuild_shims();
|
|
329935
|
-
var
|
|
330919
|
+
var constants5 = __require("constants");
|
|
329936
330920
|
var origCwd = process.cwd;
|
|
329937
330921
|
var cwd7 = null;
|
|
329938
330922
|
var platform15 = process.env.GRACEFUL_FS_PLATFORM || process.platform;
|
|
@@ -329956,7 +330940,7 @@ var require_polyfills2 = __commonJS({
|
|
|
329956
330940
|
var chdir;
|
|
329957
330941
|
module2.exports = patch;
|
|
329958
330942
|
function patch(fs101) {
|
|
329959
|
-
if (
|
|
330943
|
+
if (constants5.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
|
|
329960
330944
|
patchLchmod(fs101);
|
|
329961
330945
|
}
|
|
329962
330946
|
if (!fs101.lutimes) {
|
|
@@ -330060,7 +331044,7 @@ var require_polyfills2 = __commonJS({
|
|
|
330060
331044
|
fs102.lchmod = function(path112, mode, callback) {
|
|
330061
331045
|
fs102.open(
|
|
330062
331046
|
path112,
|
|
330063
|
-
|
|
331047
|
+
constants5.O_WRONLY | constants5.O_SYMLINK,
|
|
330064
331048
|
mode,
|
|
330065
331049
|
function(err, fd) {
|
|
330066
331050
|
if (err) {
|
|
@@ -330076,7 +331060,7 @@ var require_polyfills2 = __commonJS({
|
|
|
330076
331060
|
);
|
|
330077
331061
|
};
|
|
330078
331062
|
fs102.lchmodSync = function(path112, mode) {
|
|
330079
|
-
var fd = fs102.openSync(path112,
|
|
331063
|
+
var fd = fs102.openSync(path112, constants5.O_WRONLY | constants5.O_SYMLINK, mode);
|
|
330080
331064
|
var threw = true;
|
|
330081
331065
|
var ret;
|
|
330082
331066
|
try {
|
|
@@ -330097,9 +331081,9 @@ var require_polyfills2 = __commonJS({
|
|
|
330097
331081
|
}
|
|
330098
331082
|
__name(patchLchmod, "patchLchmod");
|
|
330099
331083
|
function patchLutimes(fs102) {
|
|
330100
|
-
if (
|
|
331084
|
+
if (constants5.hasOwnProperty("O_SYMLINK") && fs102.futimes) {
|
|
330101
331085
|
fs102.lutimes = function(path112, at2, mt2, cb) {
|
|
330102
|
-
fs102.open(path112,
|
|
331086
|
+
fs102.open(path112, constants5.O_SYMLINK, function(er2, fd) {
|
|
330103
331087
|
if (er2) {
|
|
330104
331088
|
if (cb) cb(er2);
|
|
330105
331089
|
return;
|
|
@@ -330112,7 +331096,7 @@ var require_polyfills2 = __commonJS({
|
|
|
330112
331096
|
});
|
|
330113
331097
|
};
|
|
330114
331098
|
fs102.lutimesSync = function(path112, at2, mt2) {
|
|
330115
|
-
var fd = fs102.openSync(path112,
|
|
331099
|
+
var fd = fs102.openSync(path112, constants5.O_SYMLINK);
|
|
330116
331100
|
var ret;
|
|
330117
331101
|
var threw = true;
|
|
330118
331102
|
try {
|
|
@@ -333486,7 +334470,7 @@ var require_semver3 = __commonJS({
|
|
|
333486
334470
|
"use strict";
|
|
333487
334471
|
init_esbuild_shims();
|
|
333488
334472
|
var internalRe = require_re();
|
|
333489
|
-
var
|
|
334473
|
+
var constants5 = require_constants13();
|
|
333490
334474
|
var SemVer = require_semver2();
|
|
333491
334475
|
var identifiers = require_identifiers();
|
|
333492
334476
|
var parse13 = require_parse8();
|
|
@@ -333568,8 +334552,8 @@ var require_semver3 = __commonJS({
|
|
|
333568
334552
|
re: internalRe.re,
|
|
333569
334553
|
src: internalRe.src,
|
|
333570
334554
|
tokens: internalRe.t,
|
|
333571
|
-
SEMVER_SPEC_VERSION:
|
|
333572
|
-
RELEASE_TYPES:
|
|
334555
|
+
SEMVER_SPEC_VERSION: constants5.SEMVER_SPEC_VERSION,
|
|
334556
|
+
RELEASE_TYPES: constants5.RELEASE_TYPES,
|
|
333573
334557
|
compareIdentifiers: identifiers.compareIdentifiers,
|
|
333574
334558
|
rcompareIdentifiers: identifiers.rcompareIdentifiers
|
|
333575
334559
|
};
|
|
@@ -336059,7 +337043,7 @@ var Wrap = /* @__PURE__ */ function(Wrap2) {
|
|
|
336059
337043
|
Wrap2[Wrap2["WrapReverse"] = 2] = "WrapReverse";
|
|
336060
337044
|
return Wrap2;
|
|
336061
337045
|
}({});
|
|
336062
|
-
var
|
|
337046
|
+
var constants3 = {
|
|
336063
337047
|
ALIGN_AUTO: Align.Auto,
|
|
336064
337048
|
ALIGN_FLEX_START: Align.FlexStart,
|
|
336065
337049
|
ALIGN_CENTER: Align.Center,
|
|
@@ -336133,7 +337117,7 @@ var constants2 = {
|
|
|
336133
337117
|
WRAP_WRAP: Wrap.Wrap,
|
|
336134
337118
|
WRAP_WRAP_REVERSE: Wrap.WrapReverse
|
|
336135
337119
|
};
|
|
336136
|
-
var YGEnums_default =
|
|
337120
|
+
var YGEnums_default = constants3;
|
|
336137
337121
|
|
|
336138
337122
|
// node_modules/yoga-layout/dist/src/wrapAssembly.js
|
|
336139
337123
|
function wrapAssembly(lib) {
|
|
@@ -341855,7 +342839,8 @@ var SETTINGS_SCHEMA = {
|
|
|
341855
342839
|
{ value: "auto", label: "Auto (detect from system)" },
|
|
341856
342840
|
{ value: "en", label: "English" },
|
|
341857
342841
|
{ value: "zh", label: "\u4E2D\u6587 (Chinese)" },
|
|
341858
|
-
{ 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)" }
|
|
341859
342844
|
]
|
|
341860
342845
|
},
|
|
341861
342846
|
terminalBell: {
|
|
@@ -343075,7 +344060,18 @@ function handleError(error2, config2, customErrorCode) {
|
|
|
343075
344060
|
}
|
|
343076
344061
|
}
|
|
343077
344062
|
__name(handleError, "handleError");
|
|
343078
|
-
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
|
+
}
|
|
343079
344075
|
if (config2.getDebugMode()) {
|
|
343080
344076
|
console.error(
|
|
343081
344077
|
`Error executing tool ${toolName}: ${resultDisplay || toolError.message}`
|
|
@@ -343777,7 +344773,7 @@ import * as realZlib2 from "zlib";
|
|
|
343777
344773
|
init_esbuild_shims();
|
|
343778
344774
|
import realZlib from "zlib";
|
|
343779
344775
|
var realZlibConstants = realZlib.constants || { ZLIB_VERNUM: 4736 };
|
|
343780
|
-
var
|
|
344776
|
+
var constants4 = Object.freeze(Object.assign(/* @__PURE__ */ Object.create(null), {
|
|
343781
344777
|
Z_NO_FLUSH: 0,
|
|
343782
344778
|
Z_PARTIAL_FLUSH: 1,
|
|
343783
344779
|
Z_SYNC_FLUSH: 2,
|
|
@@ -344069,9 +345065,9 @@ var Zlib = class extends ZlibBase {
|
|
|
344069
345065
|
#strategy;
|
|
344070
345066
|
constructor(opts, mode) {
|
|
344071
345067
|
opts = opts || {};
|
|
344072
|
-
opts.flush = opts.flush ||
|
|
344073
|
-
opts.finishFlush = opts.finishFlush ||
|
|
344074
|
-
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;
|
|
344075
345071
|
super(opts, mode);
|
|
344076
345072
|
this.#level = opts.level;
|
|
344077
345073
|
this.#strategy = opts.strategy;
|
|
@@ -344084,7 +345080,7 @@ var Zlib = class extends ZlibBase {
|
|
|
344084
345080
|
if (!this.handle.params)
|
|
344085
345081
|
throw new Error("not supported in this implementation");
|
|
344086
345082
|
if (this.#level !== level || this.#strategy !== strategy) {
|
|
344087
|
-
this.flush(
|
|
345083
|
+
this.flush(constants4.Z_SYNC_FLUSH);
|
|
344088
345084
|
assert2(this.handle, "zlib binding closed");
|
|
344089
345085
|
const origFlush = this.handle.flush;
|
|
344090
345086
|
this.handle.flush = (flushFlag, cb) => {
|
|
@@ -344139,9 +345135,9 @@ var Brotli = class extends ZlibBase {
|
|
|
344139
345135
|
}
|
|
344140
345136
|
constructor(opts, mode) {
|
|
344141
345137
|
opts = opts || {};
|
|
344142
|
-
opts.flush = opts.flush ||
|
|
344143
|
-
opts.finishFlush = opts.finishFlush ||
|
|
344144
|
-
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;
|
|
344145
345141
|
super(opts, mode);
|
|
344146
345142
|
}
|
|
344147
345143
|
};
|
|
@@ -344167,9 +345163,9 @@ var Zstd = class extends ZlibBase {
|
|
|
344167
345163
|
}
|
|
344168
345164
|
constructor(opts, mode) {
|
|
344169
345165
|
opts = opts || {};
|
|
344170
|
-
opts.flush = opts.flush ||
|
|
344171
|
-
opts.finishFlush = opts.finishFlush ||
|
|
344172
|
-
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;
|
|
344173
345169
|
super(opts, mode);
|
|
344174
345170
|
}
|
|
344175
345171
|
};
|
|
@@ -356002,7 +356998,7 @@ __name(getPackageJson, "getPackageJson");
|
|
|
356002
356998
|
// packages/cli/src/utils/version.ts
|
|
356003
356999
|
async function getCliVersion() {
|
|
356004
357000
|
const pkgJson = await getPackageJson();
|
|
356005
|
-
return "0.6.
|
|
357001
|
+
return "0.6.3-termux";
|
|
356006
357002
|
}
|
|
356007
357003
|
__name(getCliVersion, "getCliVersion");
|
|
356008
357004
|
|
|
@@ -360100,9 +361096,13 @@ async function parseArguments(settings) {
|
|
|
360100
361096
|
type: "boolean",
|
|
360101
361097
|
description: "Enables checkpointing of file edits",
|
|
360102
361098
|
default: false
|
|
360103
|
-
}).option("
|
|
361099
|
+
}).option("acp", {
|
|
360104
361100
|
type: "boolean",
|
|
360105
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
|
|
360106
361106
|
}).option("experimental-skills", {
|
|
360107
361107
|
type: "boolean",
|
|
360108
361108
|
description: "Enable experimental Skills feature",
|
|
@@ -360298,7 +361298,15 @@ async function parseArguments(settings) {
|
|
|
360298
361298
|
}
|
|
360299
361299
|
}
|
|
360300
361300
|
result["query"] = q2 || void 0;
|
|
360301
|
-
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"]) {
|
|
360302
361310
|
result["channel"] = "ACP";
|
|
360303
361311
|
}
|
|
360304
361312
|
return result;
|
|
@@ -360438,14 +361446,36 @@ async function loadCliConfig(settings, extensions, extensionEnablementManager, a
|
|
|
360438
361446
|
interactive = false;
|
|
360439
361447
|
}
|
|
360440
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");
|
|
360441
361469
|
if (!interactive && !argv.experimentalAcp && inputFormat !== InputFormat.STREAM_JSON) {
|
|
360442
361470
|
switch (approvalMode) {
|
|
360443
361471
|
case ApprovalMode.PLAN:
|
|
360444
361472
|
case ApprovalMode.DEFAULT:
|
|
360445
|
-
|
|
361473
|
+
excludeUnlessExplicit(ShellTool.Name);
|
|
361474
|
+
excludeUnlessExplicit(EditTool.Name);
|
|
361475
|
+
excludeUnlessExplicit(WriteFileTool.Name);
|
|
360446
361476
|
break;
|
|
360447
361477
|
case ApprovalMode.AUTO_EDIT:
|
|
360448
|
-
|
|
361478
|
+
excludeUnlessExplicit(ShellTool.Name);
|
|
360449
361479
|
break;
|
|
360450
361480
|
case ApprovalMode.YOLO:
|
|
360451
361481
|
break;
|
|
@@ -360549,7 +361579,7 @@ async function loadCliConfig(settings, extensions, extensionEnablementManager, a
|
|
|
360549
361579
|
extensionContextFilePaths,
|
|
360550
361580
|
sessionTokenLimit: settings.model?.sessionTokenLimit ?? -1,
|
|
360551
361581
|
maxSessionTurns: argv.maxSessionTurns ?? settings.model?.maxSessionTurns ?? -1,
|
|
360552
|
-
experimentalZedIntegration: argv.experimentalAcp || false,
|
|
361582
|
+
experimentalZedIntegration: argv.acp || argv.experimentalAcp || false,
|
|
360553
361583
|
experimentalSkills: argv.experimentalSkills || false,
|
|
360554
361584
|
listExtensions: argv.listExtensions || false,
|
|
360555
361585
|
extensions: allExtensions,
|
|
@@ -363139,6 +364169,7 @@ __name(getLanguageNameFromLocale, "getLanguageNameFromLocale");
|
|
|
363139
364169
|
|
|
363140
364170
|
// import("./locales/**/*.js") in packages/cli/src/i18n/index.ts
|
|
363141
364171
|
var globImport_locales_js = __glob({
|
|
364172
|
+
"./locales/de.js": () => Promise.resolve().then(() => (init_de(), de_exports)),
|
|
363142
364173
|
"./locales/en.js": () => Promise.resolve().then(() => (init_en3(), en_exports)),
|
|
363143
364174
|
"./locales/ru.js": () => Promise.resolve().then(() => (init_ru(), ru_exports)),
|
|
363144
364175
|
"./locales/zh.js": () => Promise.resolve().then(() => (init_zh(), zh_exports))
|
|
@@ -363976,7 +365007,7 @@ var import_react26 = __toESM(require_react(), 1);
|
|
|
363976
365007
|
init_esbuild_shims();
|
|
363977
365008
|
import process28 from "node:process";
|
|
363978
365009
|
import os28 from "node:os";
|
|
363979
|
-
import { execSync as
|
|
365010
|
+
import { execSync as execSync5 } from "node:child_process";
|
|
363980
365011
|
|
|
363981
365012
|
// packages/cli/src/ui/utils/formatters.ts
|
|
363982
365013
|
init_esbuild_shims();
|
|
@@ -364050,12 +365081,12 @@ var formatDuration = /* @__PURE__ */ __name((milliseconds) => {
|
|
|
364050
365081
|
|
|
364051
365082
|
// packages/cli/src/generated/git-commit.ts
|
|
364052
365083
|
init_esbuild_shims();
|
|
364053
|
-
var GIT_COMMIT_INFO2 = "
|
|
365084
|
+
var GIT_COMMIT_INFO2 = "168aa3f6";
|
|
364054
365085
|
|
|
364055
365086
|
// packages/cli/src/utils/systemInfo.ts
|
|
364056
365087
|
async function getNpmVersion() {
|
|
364057
365088
|
try {
|
|
364058
|
-
return
|
|
365089
|
+
return execSync5("npm --version", { encoding: "utf-8" }).trim();
|
|
364059
365090
|
} catch {
|
|
364060
365091
|
return "unknown";
|
|
364061
365092
|
}
|
|
@@ -364184,16 +365215,56 @@ var agentsCommand = {
|
|
|
364184
365215
|
|
|
364185
365216
|
// packages/cli/src/ui/commands/approvalModeCommand.ts
|
|
364186
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");
|
|
364187
365226
|
var approvalModeCommand = {
|
|
364188
365227
|
name: "approval-mode",
|
|
364189
365228
|
get description() {
|
|
364190
365229
|
return t4("View or change the approval mode for tool usage");
|
|
364191
365230
|
},
|
|
364192
365231
|
kind: "built-in" /* BUILT_IN */,
|
|
364193
|
-
action: /* @__PURE__ */ __name(async (
|
|
364194
|
-
|
|
364195
|
-
|
|
364196
|
-
|
|
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")
|
|
364197
365268
|
};
|
|
364198
365269
|
|
|
364199
365270
|
// packages/cli/src/ui/commands/authCommand.ts
|
|
@@ -365119,11 +366190,23 @@ var ideCommand = /* @__PURE__ */ __name(async () => {
|
|
|
365119
366190
|
kind: "built-in" /* BUILT_IN */,
|
|
365120
366191
|
action: /* @__PURE__ */ __name(async (context2) => {
|
|
365121
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
|
+
}
|
|
365122
366204
|
if (!installer) {
|
|
366205
|
+
const ideName = ideClient.getDetectedIdeDisplayName();
|
|
365123
366206
|
context2.ui.addItem(
|
|
365124
366207
|
{
|
|
365125
366208
|
type: "error",
|
|
365126
|
-
text: `
|
|
366209
|
+
text: `Automatic installation is not supported for ${ideName}. Please install the '${QWEN_CODE_COMPANION_EXTENSION_NAME}' extension manually from the marketplace.`
|
|
365127
366210
|
},
|
|
365128
366211
|
Date.now()
|
|
365129
366212
|
);
|
|
@@ -367015,10 +368098,10 @@ import { Writable } from "node:stream";
|
|
|
367015
368098
|
// packages/cli/src/utils/gitUtils.ts
|
|
367016
368099
|
init_esbuild_shims();
|
|
367017
368100
|
var import_undici4 = __toESM(require_undici2(), 1);
|
|
367018
|
-
import { execSync as
|
|
368101
|
+
import { execSync as execSync6 } from "node:child_process";
|
|
367019
368102
|
var isGitHubRepository = /* @__PURE__ */ __name(() => {
|
|
367020
368103
|
try {
|
|
367021
|
-
const remotes = (
|
|
368104
|
+
const remotes = (execSync6("git remote -v", {
|
|
367022
368105
|
encoding: "utf-8"
|
|
367023
368106
|
}) || "").trim();
|
|
367024
368107
|
const pattern = /github\.com/;
|
|
@@ -367029,7 +368112,7 @@ var isGitHubRepository = /* @__PURE__ */ __name(() => {
|
|
|
367029
368112
|
}
|
|
367030
368113
|
}, "isGitHubRepository");
|
|
367031
368114
|
var getGitRepoRoot = /* @__PURE__ */ __name(() => {
|
|
367032
|
-
const gitRepoRoot = (
|
|
368115
|
+
const gitRepoRoot = (execSync6("git rev-parse --show-toplevel", {
|
|
367033
368116
|
encoding: "utf-8"
|
|
367034
368117
|
}) || "").trim();
|
|
367035
368118
|
if (!gitRepoRoot) {
|
|
@@ -367072,7 +368155,7 @@ var getLatestGitHubRelease = /* @__PURE__ */ __name(async (proxy) => {
|
|
|
367072
368155
|
}
|
|
367073
368156
|
}, "getLatestGitHubRelease");
|
|
367074
368157
|
function getGitHubRepoInfo() {
|
|
367075
|
-
const remoteUrl =
|
|
368158
|
+
const remoteUrl = execSync6("git remote get-url origin", {
|
|
367076
368159
|
encoding: "utf-8"
|
|
367077
368160
|
}).trim();
|
|
367078
368161
|
let urlToParse = remoteUrl;
|
|
@@ -367454,15 +368537,28 @@ var ShellProcessor = class {
|
|
|
367454
368537
|
const command2 = injection.resolvedCommand;
|
|
367455
368538
|
if (!command2) continue;
|
|
367456
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
|
+
);
|
|
367457
368549
|
if (!allAllowed) {
|
|
367458
368550
|
if (isHardDenial) {
|
|
367459
368551
|
throw new Error(
|
|
367460
368552
|
`${this.commandName} cannot be run. Blocked command: "${command2}". Reason: ${blockReason || "Blocked by configuration."}`
|
|
367461
368553
|
);
|
|
367462
368554
|
}
|
|
367463
|
-
if (
|
|
367464
|
-
|
|
368555
|
+
if (isAllowedBySettings) {
|
|
368556
|
+
continue;
|
|
368557
|
+
}
|
|
368558
|
+
if (config2.getApprovalMode() === ApprovalMode.YOLO) {
|
|
368559
|
+
continue;
|
|
367465
368560
|
}
|
|
368561
|
+
disallowedCommands.forEach((uc) => commandsToConfirm.add(uc));
|
|
367466
368562
|
}
|
|
367467
368563
|
}
|
|
367468
368564
|
if (commandsToConfirm.size > 0) {
|
|
@@ -368799,7 +369895,14 @@ ${event.value}`, null);
|
|
|
368799
369895
|
*/
|
|
368800
369896
|
appendThinking(state, subject, description, parentToolUseId) {
|
|
368801
369897
|
const actualParentToolUseId = parentToolUseId ?? null;
|
|
368802
|
-
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(": ");
|
|
368803
369906
|
if (!fragment) {
|
|
368804
369907
|
return;
|
|
368805
369908
|
}
|
|
@@ -369900,6 +371003,7 @@ async function runNonInteractive(config2, settings, input, prompt_id, options2 =
|
|
|
369900
371003
|
);
|
|
369901
371004
|
process.stderr.write(`${errorText}
|
|
369902
371005
|
`);
|
|
371006
|
+
throw new Error(errorText);
|
|
369903
371007
|
}
|
|
369904
371008
|
}
|
|
369905
371009
|
}
|
|
@@ -369920,15 +371024,23 @@ async function runNonInteractive(config2, settings, input, prompt_id, options2 =
|
|
|
369920
371024
|
adapter
|
|
369921
371025
|
) : void 0;
|
|
369922
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;
|
|
369923
371035
|
const toolResponse = await executeToolCall(
|
|
369924
371036
|
config2,
|
|
369925
371037
|
finalRequestInfo,
|
|
369926
371038
|
abortController.signal,
|
|
369927
|
-
|
|
369928
|
-
outputUpdateHandler
|
|
369929
|
-
|
|
369930
|
-
|
|
369931
|
-
|
|
371039
|
+
outputUpdateHandler || toolCallUpdateCallback ? {
|
|
371040
|
+
...outputUpdateHandler && { outputUpdateHandler },
|
|
371041
|
+
...toolCallUpdateCallback && {
|
|
371042
|
+
onToolCallsUpdate: toolCallUpdateCallback
|
|
371043
|
+
}
|
|
369932
371044
|
} : void 0
|
|
369933
371045
|
);
|
|
369934
371046
|
if (toolResponse.error) {
|
|
@@ -389168,7 +390280,7 @@ var import_chalk5 = __toESM(require_source(), 1);
|
|
|
389168
390280
|
// packages/cli/src/ui/components/shared/text-buffer.ts
|
|
389169
390281
|
init_esbuild_shims();
|
|
389170
390282
|
var import_react46 = __toESM(require_react(), 1);
|
|
389171
|
-
import { spawnSync as
|
|
390283
|
+
import { spawnSync as spawnSync4 } from "node:child_process";
|
|
389172
390284
|
import fs83 from "node:fs";
|
|
389173
390285
|
import os32 from "node:os";
|
|
389174
390286
|
import pathMod from "node:path";
|
|
@@ -391009,7 +392121,7 @@ function useTextBuffer({
|
|
|
391009
392121
|
const wasRaw = stdin?.isRaw ?? false;
|
|
391010
392122
|
try {
|
|
391011
392123
|
setRawMode?.(false);
|
|
391012
|
-
const { status, error: error2 } =
|
|
392124
|
+
const { status, error: error2 } = spawnSync4(editor, [filePath], {
|
|
391013
392125
|
stdio: "inherit"
|
|
391014
392126
|
});
|
|
391015
392127
|
if (error2) throw error2;
|
|
@@ -391712,7 +392824,7 @@ var import_react52 = __toESM(require_react(), 1);
|
|
|
391712
392824
|
// packages/cli/src/ui/hooks/useLaunchEditor.ts
|
|
391713
392825
|
init_esbuild_shims();
|
|
391714
392826
|
var import_react51 = __toESM(require_react(), 1);
|
|
391715
|
-
import { spawnSync as
|
|
392827
|
+
import { spawnSync as spawnSync5 } from "child_process";
|
|
391716
392828
|
function getEditorCommand(preferredEditor) {
|
|
391717
392829
|
if (preferredEditor) {
|
|
391718
392830
|
return preferredEditor;
|
|
@@ -391747,7 +392859,7 @@ function useLaunchEditor() {
|
|
|
391747
392859
|
const wasRaw = stdin?.isRaw ?? false;
|
|
391748
392860
|
try {
|
|
391749
392861
|
setRawMode?.(false);
|
|
391750
|
-
const { status, error: error2 } =
|
|
392862
|
+
const { status, error: error2 } = spawnSync5(editorCommand2, editorArgs, {
|
|
391751
392863
|
stdio: "inherit"
|
|
391752
392864
|
});
|
|
391753
392865
|
if (error2) throw error2;
|
|
@@ -396058,6 +397170,7 @@ function IdeIntegrationNudge({
|
|
|
396058
397170
|
{ isActive: true }
|
|
396059
397171
|
);
|
|
396060
397172
|
const { displayName: ideName } = ide;
|
|
397173
|
+
const isInSandbox = !!process.env["SANDBOX"];
|
|
396061
397174
|
const isExtensionPreInstalled = !!process.env["QWEN_CODE_IDE_SERVER_PORT"] && !!process.env["QWEN_CODE_IDE_WORKSPACE_PATH"];
|
|
396062
397175
|
const OPTIONS = [
|
|
396063
397176
|
{
|
|
@@ -396085,7 +397198,7 @@ function IdeIntegrationNudge({
|
|
|
396085
397198
|
key: "No, don't ask again"
|
|
396086
397199
|
}
|
|
396087
397200
|
];
|
|
396088
|
-
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"}.`;
|
|
396089
397202
|
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
|
|
396090
397203
|
Box_default,
|
|
396091
397204
|
{
|
|
@@ -411293,7 +412406,11 @@ ${queuedText}` : queuedText;
|
|
|
411293
412406
|
const handleIdePromptComplete = (0, import_react134.useCallback)(
|
|
411294
412407
|
(result) => {
|
|
411295
412408
|
if (result.userSelection === "yes") {
|
|
411296
|
-
|
|
412409
|
+
if (result.isExtensionPreInstalled) {
|
|
412410
|
+
handleSlashCommand2("/ide enable");
|
|
412411
|
+
} else {
|
|
412412
|
+
handleSlashCommand2("/ide install");
|
|
412413
|
+
}
|
|
411297
412414
|
settings.setValue("User" /* User */, "ide.hasSeenNudge", true);
|
|
411298
412415
|
} else if (result.userSelection === "dismiss") {
|
|
411299
412416
|
settings.setValue("User" /* User */, "ide.hasSeenNudge", true);
|
|
@@ -411877,7 +412994,7 @@ __name(relaunchAppInChildProcess, "relaunchAppInChildProcess");
|
|
|
411877
412994
|
// packages/cli/src/utils/sandbox.ts
|
|
411878
412995
|
init_esbuild_shims();
|
|
411879
412996
|
var import_shell_quote5 = __toESM(require_shell_quote(), 1);
|
|
411880
|
-
import { exec as exec4, execSync as
|
|
412997
|
+
import { exec as exec4, execSync as execSync8, spawn as spawn10 } from "node:child_process";
|
|
411881
412998
|
import os39 from "node:os";
|
|
411882
412999
|
import path109 from "node:path";
|
|
411883
413000
|
import fs97 from "node:fs";
|
|
@@ -412036,7 +413153,7 @@ async function start_sandbox(config2, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
412036
413153
|
"-D",
|
|
412037
413154
|
`HOME_DIR=${fs97.realpathSync(os39.homedir())}`,
|
|
412038
413155
|
"-D",
|
|
412039
|
-
`CACHE_DIR=${fs97.realpathSync(
|
|
413156
|
+
`CACHE_DIR=${fs97.realpathSync(execSync8(`getconf DARWIN_USER_CACHE_DIR`).toString().trim())}`
|
|
412040
413157
|
];
|
|
412041
413158
|
const MAX_INCLUDE_DIRS = 5;
|
|
412042
413159
|
const targetDir = fs97.realpathSync(cliConfig?.getTargetDir() || "");
|
|
@@ -412154,7 +413271,7 @@ async function start_sandbox(config2, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
412154
413271
|
console.error(`using ${projectSandboxDockerfile2} for sandbox`);
|
|
412155
413272
|
buildArgs += `-f ${path109.resolve(projectSandboxDockerfile2)} -i ${image2}`;
|
|
412156
413273
|
}
|
|
412157
|
-
|
|
413274
|
+
execSync8(
|
|
412158
413275
|
`cd ${gcRoot} && node scripts/build_sandbox.js -s ${buildArgs}`,
|
|
412159
413276
|
{
|
|
412160
413277
|
stdio: "inherit",
|
|
@@ -412263,12 +413380,12 @@ async function start_sandbox(config2, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
412263
413380
|
args.push("--env", `no_proxy=${noProxy}`);
|
|
412264
413381
|
}
|
|
412265
413382
|
if (proxy) {
|
|
412266
|
-
|
|
413383
|
+
execSync8(
|
|
412267
413384
|
`${config2.command} network inspect ${SANDBOX_NETWORK_NAME} || ${config2.command} network create --internal ${SANDBOX_NETWORK_NAME}`
|
|
412268
413385
|
);
|
|
412269
413386
|
args.push("--network", SANDBOX_NETWORK_NAME);
|
|
412270
413387
|
if (proxyCommand) {
|
|
412271
|
-
|
|
413388
|
+
execSync8(
|
|
412272
413389
|
`${config2.command} network inspect ${SANDBOX_PROXY_NAME} || ${config2.command} network create ${SANDBOX_PROXY_NAME}`
|
|
412273
413390
|
);
|
|
412274
413391
|
}
|
|
@@ -412284,7 +413401,7 @@ async function start_sandbox(config2, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
412284
413401
|
console.log(`ContainerName: ${containerName}`);
|
|
412285
413402
|
} else {
|
|
412286
413403
|
let index = 0;
|
|
412287
|
-
const containerNameCheck =
|
|
413404
|
+
const containerNameCheck = execSync8(
|
|
412288
413405
|
`${config2.command} ps -a --format "{{.Names}}"`
|
|
412289
413406
|
).toString().trim();
|
|
412290
413407
|
while (containerNameCheck.includes(`${imageName}-${index}`)) {
|
|
@@ -412412,8 +413529,8 @@ async function start_sandbox(config2, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
412412
413529
|
userFlag = "--user root";
|
|
412413
413530
|
} else if (await shouldUseCurrentUserInSandbox()) {
|
|
412414
413531
|
args.push("--user", "root");
|
|
412415
|
-
const uid =
|
|
412416
|
-
const gid =
|
|
413532
|
+
const uid = execSync8("id -u").toString().trim();
|
|
413533
|
+
const gid = execSync8("id -g").toString().trim();
|
|
412417
413534
|
const username = "gemini";
|
|
412418
413535
|
const homeDir = getContainerPath(os39.homedir());
|
|
412419
413536
|
const setupUserCommands = [
|
|
@@ -412442,7 +413559,7 @@ async function start_sandbox(config2, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
412442
413559
|
});
|
|
412443
413560
|
const stopProxy = /* @__PURE__ */ __name(() => {
|
|
412444
413561
|
console.log("stopping proxy container ...");
|
|
412445
|
-
|
|
413562
|
+
execSync8(`${config2.command} rm -f ${SANDBOX_PROXY_NAME}`);
|
|
412446
413563
|
}, "stopProxy");
|
|
412447
413564
|
process.on("exit", stopProxy);
|
|
412448
413565
|
process.on("SIGINT", stopProxy);
|
|
@@ -412833,19 +413950,26 @@ async function showResumeSessionPicker(cwd7 = process.cwd()) {
|
|
|
412833
413950
|
return new Promise((resolve25) => {
|
|
412834
413951
|
let selectedId;
|
|
412835
413952
|
const { unmount, waitUntilExit } = render_default(
|
|
412836
|
-
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
412837
|
-
|
|
413953
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
413954
|
+
KeypressProvider,
|
|
412838
413955
|
{
|
|
412839
|
-
|
|
412840
|
-
|
|
412841
|
-
|
|
412842
|
-
|
|
412843
|
-
|
|
412844
|
-
|
|
412845
|
-
|
|
412846
|
-
|
|
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
|
+
)
|
|
412847
413971
|
}
|
|
412848
|
-
)
|
|
413972
|
+
),
|
|
412849
413973
|
{
|
|
412850
413974
|
exitOnCtrlC: false
|
|
412851
413975
|
}
|
|
@@ -415175,7 +416299,7 @@ var GeminiAgent = class {
|
|
|
415175
416299
|
name: APPROVAL_MODE_INFO[mode].name,
|
|
415176
416300
|
description: APPROVAL_MODE_INFO[mode].description
|
|
415177
416301
|
}));
|
|
415178
|
-
const version2 = "0.6.
|
|
416302
|
+
const version2 = "0.6.3-termux";
|
|
415179
416303
|
return {
|
|
415180
416304
|
protocolVersion: PROTOCOL_VERSION,
|
|
415181
416305
|
agentInfo: {
|
|
@@ -415490,13 +416614,15 @@ async function startInteractiveUI(config2, settings, startupWarnings, workspaceR
|
|
|
415490
416614
|
isScreenReaderEnabled: config2.getScreenReader()
|
|
415491
416615
|
}
|
|
415492
416616
|
);
|
|
415493
|
-
|
|
415494
|
-
|
|
415495
|
-
|
|
415496
|
-
|
|
415497
|
-
|
|
415498
|
-
|
|
415499
|
-
|
|
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
|
+
}
|
|
415500
416626
|
registerCleanup(() => instance.unmount());
|
|
415501
416627
|
}
|
|
415502
416628
|
__name(startInteractiveUI, "startInteractiveUI");
|
|
@@ -415754,6 +416880,11 @@ main().catch((error2) => {
|
|
|
415754
416880
|
* Copyright 2025 Qwen Team
|
|
415755
416881
|
* SPDX-License-Identifier: Apache-2.0
|
|
415756
416882
|
*/
|
|
416883
|
+
/**
|
|
416884
|
+
* @license
|
|
416885
|
+
* Copyright 2026 Google LLC
|
|
416886
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
416887
|
+
*/
|
|
415757
416888
|
/**
|
|
415758
416889
|
* @license
|
|
415759
416890
|
* Copyright 2025 Qwen team
|