@mmmbuto/qwen-code-termux 0.6.2-termux → 0.6.4-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.
@@ -5758,7 +5758,7 @@ var require_client_h1 = __commonJS({
5758
5758
  kResume,
5759
5759
  kHTTPContext
5760
5760
  } = require_symbols();
5761
- var constants4 = require_constants2();
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(constants4.TYPE.RESPONSE);
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 === constants4.ERROR.PAUSED_UPGRADE) {
5932
+ if (ret === constants5.ERROR.PAUSED_UPGRADE) {
5933
5933
  this.onUpgrade(data.slice(offset));
5934
- } else if (ret === constants4.ERROR.PAUSED) {
5934
+ } else if (ret === constants5.ERROR.PAUSED) {
5935
5935
  this.paused = true;
5936
5936
  socket.unshift(data.slice(offset));
5937
- } else if (ret !== constants4.ERROR.OK) {
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, constants4.ERROR[ret], data.slice(offset));
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 ? constants4.ERROR.PAUSED : 0;
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 constants4.ERROR.PAUSED;
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 constants4.ERROR.PAUSED;
6176
+ return constants5.ERROR.PAUSED;
6177
6177
  } else if (!shouldKeepAlive) {
6178
6178
  util4.destroy(socket, new InformationalError("reset"));
6179
- return constants4.ERROR.PAUSED;
6179
+ return constants5.ERROR.PAUSED;
6180
6180
  } else if (socket[kReset2] && client[kRunning] === 0) {
6181
6181
  util4.destroy(socket, new InformationalError("reset"));
6182
- return constants4.ERROR.PAUSED;
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, constants4) {
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, constants4);
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, constants4) {
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, constants4);
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, constants4) {
58215
- this.code = optimizeExpr(this.code, names, constants4);
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, constants4) {
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, constants4))
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, constants4) {
58317
+ optimizeNames(names, constants5) {
58318
58318
  var _a7;
58319
- this.else = (_a7 = this.else) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names, constants4);
58320
- if (!(super.optimizeNames(names, constants4) || this.else))
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, constants4);
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, constants4) {
58352
- if (!super.optimizeNames(names, constants4))
58351
+ optimizeNames(names, constants5) {
58352
+ if (!super.optimizeNames(names, constants5))
58353
58353
  return;
58354
- this.iteration = optimizeExpr(this.iteration, names, constants4);
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, constants4) {
58397
- if (!super.optimizeNames(names, constants4))
58396
+ optimizeNames(names, constants5) {
58397
+ if (!super.optimizeNames(names, constants5))
58398
58398
  return;
58399
- this.iterable = optimizeExpr(this.iterable, names, constants4);
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, constants4) {
58450
+ optimizeNames(names, constants5) {
58451
58451
  var _a7, _b2;
58452
- super.optimizeNames(names, constants4);
58453
- (_a7 = this.catch) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names, constants4);
58454
- (_b2 = this.finally) === null || _b2 === void 0 ? void 0 : _b2.optimizeNames(names, constants4);
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, constants4) {
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 = constants4[n3.str];
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 && constants4[c4.str] !== void 0);
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, constants4) {
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, constants4);
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, constants4) {
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, constants4);
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, constants4) {
65261
- this.code = optimizeExpr(this.code, names, constants4);
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, constants4) {
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, constants4))
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, constants4) {
65363
+ optimizeNames(names, constants5) {
65364
65364
  var _a7;
65365
- this.else = (_a7 = this.else) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names, constants4);
65366
- if (!(super.optimizeNames(names, constants4) || this.else))
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, constants4);
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, constants4) {
65398
- if (!super.optimizeNames(names, constants4))
65397
+ optimizeNames(names, constants5) {
65398
+ if (!super.optimizeNames(names, constants5))
65399
65399
  return;
65400
- this.iteration = optimizeExpr(this.iteration, names, constants4);
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, constants4) {
65443
- if (!super.optimizeNames(names, constants4))
65442
+ optimizeNames(names, constants5) {
65443
+ if (!super.optimizeNames(names, constants5))
65444
65444
  return;
65445
- this.iterable = optimizeExpr(this.iterable, names, constants4);
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, constants4) {
65496
+ optimizeNames(names, constants5) {
65497
65497
  var _a7, _b2;
65498
- super.optimizeNames(names, constants4);
65499
- (_a7 = this.catch) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names, constants4);
65500
- (_b2 = this.finally) === null || _b2 === void 0 ? void 0 : _b2.optimizeNames(names, constants4);
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, constants4) {
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 = constants4[n3.str];
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 && constants4[c4.str] !== void 0);
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 fixBooleanCasing(data) {
70955
+ function fixBooleanValues(data) {
70956
70956
  for (const key of Object.keys(data)) {
70957
70957
  if (!(key in data))
70958
70958
  continue;
70959
- if (typeof data[key] === "object") {
70960
- fixBooleanCasing(data[key]);
70961
- } else if (data[key] === "True")
70962
- data[key] = "true";
70963
- else if (data[key] === "False")
70964
- data[key] = "false";
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
- const valid = validate3(data);
71010
+ let valid = validate3(data);
71006
71011
  if (!valid && validate3.errors) {
71007
- fixBooleanCasing(data);
71008
- const validate4 = ajValidator.compile(schema);
71009
- const valid2 = validate4(data);
71010
- if (!valid2 && validate4.errors) {
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(fixBooleanCasing, "fixBooleanCasing");
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 combinedContent = [
131565
- typeof lastMessage.content === "string" ? lastMessage.content : "",
131566
- typeof message.content === "string" ? message.content : ""
131567
- ].filter(Boolean).join("");
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
- const reasoning = this.contentGeneratorConfig.reasoning;
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 { execSync } from "node:child_process";
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
- try {
142964
- const possiblePaths = [
142965
- "/data/data/com.termux/files/usr/bin/termux-open-url",
142966
- "/usr/bin/termux-open-url",
142967
- "termux-open-url"
142968
- ];
142969
- let termuxOpenUrl = "termux-open-url";
142970
- for (const path112 of possiblePaths) {
142971
- try {
142972
- execSync(`test -x "${path112}"`, { stdio: "ignore" });
142973
- termuxOpenUrl = path112;
142974
- break;
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
- execSync(`"${termuxOpenUrl}" "${url2}"`, {
142980
- stdio: ["ignore", "ignore", "ignore"],
142981
- env: { ...process.env, PATH: process.env["PATH"] }
143031
+ execFileSync2(termuxOpenUrl, args, {
143032
+ stdio: "ignore",
143033
+ env: env7
142982
143034
  });
143035
+ return;
142983
143036
  } catch (error2) {
142984
- console.error(`Failed to open URL with termux-open-url: ${error2 instanceof Error ? error2.message : String(error2)}`);
142985
- throw error2;
143037
+ const rawUserId = resolvedUserId ?? process.env["TERMUX__USER_ID"] ?? "0";
143038
+ const userId = /^\d+$/.test(rawUserId) ? rawUserId : "0";
143039
+ try {
143040
+ const amCandidates = [
143041
+ "/data/data/com.termux/files/usr/bin/am",
143042
+ "/system/bin/am",
143043
+ "am"
143044
+ ];
143045
+ const amPath = resolveAndroidCommand(amCandidates) ?? "am";
143046
+ execFileSync2(amPath, [
143047
+ "start",
143048
+ "--user",
143049
+ userId,
143050
+ "-a",
143051
+ "android.intent.action.VIEW",
143052
+ "-d",
143053
+ url2
143054
+ ], {
143055
+ stdio: "ignore",
143056
+ env: env7
143057
+ });
143058
+ return;
143059
+ } catch (amError) {
143060
+ console.error(`Failed to open URL with termux-open-url: ${error2 instanceof Error ? error2.message : String(error2)}`);
143061
+ console.error(`Fallback 'am start' failed: ${amError instanceof Error ? amError.message : String(amError)}`);
143062
+ throw error2;
143063
+ }
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.2-termux";
155011
+ const version2 = "0.6.4-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 as execSync2 } from "node:child_process";
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 = execSync2("git rev-parse --abbrev-ref HEAD", {
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 execSync3, spawn, spawnSync } from "node:child_process";
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
- execSync3(process.platform === "win32" ? `where.exe ${cmd}` : `command -v ${cmd}`, { stdio: "ignore" });
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 execSync4 } from "node:child_process";
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 = execSync4("chcp", { encoding: "utf8" });
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 = execSync4("locale charmap", { encoding: "utf8" }).toString().trim();
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
- ShellExecutionService = class {
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: !isWindows8,
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.activePtys.delete(child.pid);
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: void 0, result };
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 execFileSync2 } from "node:child_process";
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 = execFileSync2(checkCommand, checkArgs, {
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 = execFileSync2(shell2, checkArgs, {
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
- accessSync(result, fsConstants2.X_OK);
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.getIdeMode() && !this.config.getExperimentalZedIntegration() && this.config.getInputFormat() !== InputFormat.STREAM_JSON;
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 spawnSync5(command2, args, options2) {
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(spawnSync5, "spawnSync");
203053
+ __name(spawnSync6, "spawnSync");
202915
203054
  module2.exports = spawn11;
202916
203055
  module2.exports.spawn = spawn11;
202917
- module2.exports.sync = spawnSync5;
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 constants4 = require_constants11();
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
- } = constants4;
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 = constants4.globChars(opts.windows);
223851
- const EXTGLOB_CHARS = constants4.extglobChars(PLATFORM_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
- } = constants4.globChars(opts.windows);
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 constants4 = require_constants11();
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 = constants4;
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 execSync10 = __require("child_process").execSync;
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 accessSync2 = fs101.accessSync;
281354
- var constants4 = fs101.constants || fs101;
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
- constants4.F_OK,
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
- accessSync2(commandName, constants4.F_OK);
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
- constants4.F_OK | constants4.X_OK,
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
- accessSync2(commandName, constants4.F_OK | constants4.X_OK);
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 = execSync10(
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 = execSync10("where " + cleanedCommandName, { stdio: [] });
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, constants4) {
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, constants4);
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, constants4) {
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, constants4);
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, constants4) {
282023
- this.code = optimizeExpr(this.code, names, constants4);
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, constants4) {
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, constants4))
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, constants4) {
282269
+ optimizeNames(names, constants5) {
282126
282270
  var _a7;
282127
- this.else = (_a7 = this.else) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names, constants4);
282128
- if (!(super.optimizeNames(names, constants4) || this.else))
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, constants4);
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, constants4) {
282160
- if (!super.optimizeNames(names, constants4))
282303
+ optimizeNames(names, constants5) {
282304
+ if (!super.optimizeNames(names, constants5))
282161
282305
  return;
282162
- this.iteration = optimizeExpr(this.iteration, names, constants4);
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, constants4) {
282205
- if (!super.optimizeNames(names, constants4))
282348
+ optimizeNames(names, constants5) {
282349
+ if (!super.optimizeNames(names, constants5))
282206
282350
  return;
282207
- this.iterable = optimizeExpr(this.iterable, names, constants4);
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, constants4) {
282402
+ optimizeNames(names, constants5) {
282259
282403
  var _a7, _b2;
282260
- super.optimizeNames(names, constants4);
282261
- (_a7 = this.catch) === null || _a7 === void 0 ? void 0 : _a7.optimizeNames(names, constants4);
282262
- (_b2 = this.finally) === null || _b2 === void 0 ? void 0 : _b2.optimizeNames(names, constants4);
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, constants4) {
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 = constants4[n3.str];
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 && constants4[c4.str] !== void 0);
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 constants4 = require_constants15();
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(constants4.TYPE.RESPONSE);
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 === constants4.ERROR.PAUSED_UPGRADE) {
296855
+ if (ret === constants5.ERROR.PAUSED_UPGRADE) {
295872
296856
  this.onUpgrade(data.slice(offset));
295873
- } else if (ret === constants4.ERROR.PAUSED) {
296857
+ } else if (ret === constants5.ERROR.PAUSED) {
295874
296858
  this.paused = true;
295875
296859
  socket.unshift(data.slice(offset));
295876
- } else if (ret !== constants4.ERROR.OK) {
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, constants4.ERROR[ret], data.slice(offset));
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 ? constants4.ERROR.PAUSED : 0;
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 constants4.ERROR.PAUSED;
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 constants4.ERROR.PAUSED;
297099
+ return constants5.ERROR.PAUSED;
296116
297100
  } else if (!shouldKeepAlive) {
296117
297101
  util4.destroy(socket, new InformationalError("reset"));
296118
- return constants4.ERROR.PAUSED;
297102
+ return constants5.ERROR.PAUSED;
296119
297103
  } else if (socket[kReset2] && client[kRunning] === 0) {
296120
297104
  util4.destroy(socket, new InformationalError("reset"));
296121
- return constants4.ERROR.PAUSED;
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 constants4 = __require("constants");
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 (constants4.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
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
- constants4.O_WRONLY | constants4.O_SYMLINK,
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, constants4.O_WRONLY | constants4.O_SYMLINK, mode);
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 (constants4.hasOwnProperty("O_SYMLINK") && fs102.futimes) {
329508
+ if (constants5.hasOwnProperty("O_SYMLINK") && fs102.futimes) {
328525
329509
  fs102.lutimes = function(path112, at2, mt2, cb) {
328526
- fs102.open(path112, constants4.O_SYMLINK, function(er2, fd) {
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, constants4.O_SYMLINK);
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 constants4 = __require("constants");
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 (constants4.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
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
- constants4.O_WRONLY | constants4.O_SYMLINK,
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, constants4.O_WRONLY | constants4.O_SYMLINK, mode);
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 (constants4.hasOwnProperty("O_SYMLINK") && fs102.futimes) {
331084
+ if (constants5.hasOwnProperty("O_SYMLINK") && fs102.futimes) {
330101
331085
  fs102.lutimes = function(path112, at2, mt2, cb) {
330102
- fs102.open(path112, constants4.O_SYMLINK, function(er2, fd) {
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, constants4.O_SYMLINK);
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 constants4 = require_constants13();
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: constants4.SEMVER_SPEC_VERSION,
333572
- RELEASE_TYPES: constants4.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 constants2 = {
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 = constants2;
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, _errorCode, resultDisplay) {
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 constants3 = Object.freeze(Object.assign(/* @__PURE__ */ Object.create(null), {
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 || constants3.Z_NO_FLUSH;
344073
- opts.finishFlush = opts.finishFlush || constants3.Z_FINISH;
344074
- opts.fullFlushFlag = constants3.Z_FULL_FLUSH;
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(constants3.Z_SYNC_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 || constants3.BROTLI_OPERATION_PROCESS;
344143
- opts.finishFlush = opts.finishFlush || constants3.BROTLI_OPERATION_FINISH;
344144
- opts.fullFlushFlag = constants3.BROTLI_OPERATION_FLUSH;
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 || constants3.ZSTD_e_continue;
344171
- opts.finishFlush = opts.finishFlush || constants3.ZSTD_e_end;
344172
- opts.fullFlushFlag = constants3.ZSTD_e_flush;
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.2-termux";
357001
+ return "0.6.4-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("experimental-acp", {
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"] && !result["channel"]) {
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
- extraExcludes.push(ShellTool.Name, EditTool.Name, WriteFileTool.Name);
361473
+ excludeUnlessExplicit(ShellTool.Name);
361474
+ excludeUnlessExplicit(EditTool.Name);
361475
+ excludeUnlessExplicit(WriteFileTool.Name);
360446
361476
  break;
360447
361477
  case ApprovalMode.AUTO_EDIT:
360448
- extraExcludes.push(ShellTool.Name);
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 execSync6 } from "node:child_process";
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 = "6e378690";
365084
+ var GIT_COMMIT_INFO2 = "3b146e8f";
364054
365085
 
364055
365086
  // packages/cli/src/utils/systemInfo.ts
364056
365087
  async function getNpmVersion() {
364057
365088
  try {
364058
- return execSync6("npm --version", { encoding: "utf-8" }).trim();
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 (_context, _args) => ({
364194
- type: "dialog",
364195
- dialog: "approval-mode"
364196
- }), "action")
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: `No installer is available for ${ideClient.getDetectedIdeDisplayName()}. Please install the '${QWEN_CODE_COMPANION_EXTENSION_NAME}' extension manually from the marketplace.`
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 execSync7 } from "node:child_process";
368101
+ import { execSync as execSync6 } from "node:child_process";
367019
368102
  var isGitHubRepository = /* @__PURE__ */ __name(() => {
367020
368103
  try {
367021
- const remotes = (execSync7("git remote -v", {
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 = (execSync7("git rev-parse --show-toplevel", {
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 = execSync7("git remote get-url origin", {
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 (config2.getApprovalMode() !== ApprovalMode.YOLO) {
367464
- disallowedCommands.forEach((uc) => commandsToConfirm.add(uc));
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 fragment = [subject?.trim(), description?.trim()].filter((value) => value && value.length > 0).join(": ");
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
- isTaskTool && taskToolProgressHandler ? {
369928
- outputUpdateHandler: taskToolProgressHandler,
369929
- onToolCallsUpdate: toolCallUpdateCallback
369930
- } : toolCallUpdateCallback ? {
369931
- onToolCallsUpdate: toolCallUpdateCallback
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 spawnSync3 } from "node:child_process";
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 } = spawnSync3(editor, [filePath], {
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 spawnSync4 } from "child_process";
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 } = spawnSync4(editorCommand2, editorArgs, {
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 in ${ideName ?? "your editor"}.` : `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"}.`;
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
  {
@@ -409923,7 +411036,7 @@ function getInstallationInfo(projectRoot, isAutoUpdateDisabled) {
409923
411036
  }
409924
411037
  }
409925
411038
  if (realPath.includes("/.pnpm/global")) {
409926
- const updateCommand3 = "pnpm add -g @qwen-code/qwen-code@latest";
411039
+ const updateCommand3 = "pnpm add -g @mmmbuto/qwen-code-termux@latest";
409927
411040
  return {
409928
411041
  packageManager: "pnpm" /* PNPM */,
409929
411042
  isGlobal: true,
@@ -409932,7 +411045,7 @@ function getInstallationInfo(projectRoot, isAutoUpdateDisabled) {
409932
411045
  };
409933
411046
  }
409934
411047
  if (realPath.includes("/.yarn/global")) {
409935
- const updateCommand3 = "yarn global add @qwen-code/qwen-code@latest";
411048
+ const updateCommand3 = "yarn global add @mmmbuto/qwen-code-termux@latest";
409936
411049
  return {
409937
411050
  packageManager: "yarn" /* YARN */,
409938
411051
  isGlobal: true,
@@ -409948,7 +411061,7 @@ function getInstallationInfo(projectRoot, isAutoUpdateDisabled) {
409948
411061
  };
409949
411062
  }
409950
411063
  if (realPath.includes("/.bun/bin")) {
409951
- const updateCommand3 = "bun add -g @qwen-code/qwen-code@latest";
411064
+ const updateCommand3 = "bun add -g @mmmbuto/qwen-code-termux@latest";
409952
411065
  return {
409953
411066
  packageManager: "bun" /* BUN */,
409954
411067
  isGlobal: true,
@@ -409971,7 +411084,7 @@ function getInstallationInfo(projectRoot, isAutoUpdateDisabled) {
409971
411084
  updateMessage: "Locally installed. Please update via your project's package.json."
409972
411085
  };
409973
411086
  }
409974
- const updateCommand2 = "npm install -g @qwen-code/qwen-code@latest";
411087
+ const updateCommand2 = "npm install -g @mmmbuto/qwen-code-termux@latest";
409975
411088
  return {
409976
411089
  packageManager: "npm" /* NPM */,
409977
411090
  isGlobal: true,
@@ -411293,7 +412406,11 @@ ${queuedText}` : queuedText;
411293
412406
  const handleIdePromptComplete = (0, import_react134.useCallback)(
411294
412407
  (result) => {
411295
412408
  if (result.userSelection === "yes") {
411296
- handleSlashCommand2("/ide install");
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 execSync9, spawn as spawn10 } from "node:child_process";
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(execSync9(`getconf DARWIN_USER_CACHE_DIR`).toString().trim())}`
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
- execSync9(
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
- execSync9(
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
- execSync9(
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 = execSync9(
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 = execSync9("id -u").toString().trim();
412416
- const gid = execSync9("id -g").toString().trim();
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
- execSync9(`${config2.command} rm -f ${SANDBOX_PROXY_NAME}`);
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)(KeypressProvider, { kittyProtocolEnabled: false, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
412837
- StandalonePickerScreen,
413953
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
413954
+ KeypressProvider,
412838
413955
  {
412839
- sessionService,
412840
- onSelect: (id) => {
412841
- selectedId = id;
412842
- },
412843
- onCancel: () => {
412844
- selectedId = void 0;
412845
- },
412846
- currentBranch: getGitBranch(cwd7)
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.2-termux";
416302
+ const version2 = "0.6.4-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
- checkForUpdates().then((info) => {
415494
- handleAutoUpdate(info, settings, config2.getProjectRoot());
415495
- }).catch((err) => {
415496
- if (config2.getDebugMode()) {
415497
- console.error("Update check failed:", err);
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