@qwen-code/qwen-code 0.12.3 → 0.12.4-nightly.20260316.110fcd7b7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cli.js CHANGED
@@ -31045,9 +31045,9 @@ var require_logging_utils = __commonJS({
31045
31045
  this.debugPkg = pkg2;
31046
31046
  }
31047
31047
  makeLogger(namespace) {
31048
- const debugLogger137 = this.debugPkg(namespace);
31048
+ const debugLogger138 = this.debugPkg(namespace);
31049
31049
  return (fields, ...args) => {
31050
- debugLogger137(args[0], ...args.slice(1));
31050
+ debugLogger138(args[0], ...args.slice(1));
31051
31051
  };
31052
31052
  }
31053
31053
  setFilters() {
@@ -31071,7 +31071,7 @@ var require_logging_utils = __commonJS({
31071
31071
  }
31072
31072
  makeLogger(namespace) {
31073
31073
  var _a7;
31074
- const debugLogger137 = (_a7 = this.upstream) === null || _a7 === void 0 ? void 0 : _a7.makeLogger(namespace);
31074
+ const debugLogger138 = (_a7 = this.upstream) === null || _a7 === void 0 ? void 0 : _a7.makeLogger(namespace);
31075
31075
  return (fields, ...args) => {
31076
31076
  var _a8;
31077
31077
  const severity = (_a8 = fields.severity) !== null && _a8 !== void 0 ? _a8 : LogSeverity.INFO;
@@ -31080,8 +31080,8 @@ var require_logging_utils = __commonJS({
31080
31080
  message: util3.format(...args)
31081
31081
  }, fields);
31082
31082
  const jsonString = JSON.stringify(json3);
31083
- if (debugLogger137) {
31084
- debugLogger137(fields, jsonString);
31083
+ if (debugLogger138) {
31084
+ debugLogger138(fields, jsonString);
31085
31085
  } else {
31086
31086
  console.log("%s", jsonString);
31087
31087
  }
@@ -126040,7 +126040,7 @@ var require_import_in_the_middle = __commonJS({
126040
126040
  init_esbuild_shims();
126041
126041
  var path128 = __require("path");
126042
126042
  var parse14 = require_module_details_from_path();
126043
- var { fileURLToPath: fileURLToPath17 } = __require("url");
126043
+ var { fileURLToPath: fileURLToPath18 } = __require("url");
126044
126044
  var { MessageChannel: MessageChannel2 } = __require("worker_threads");
126045
126045
  var {
126046
126046
  importHooks,
@@ -126124,7 +126124,7 @@ var require_import_in_the_middle = __commonJS({
126124
126124
  } else {
126125
126125
  if (name3.startsWith("file://")) {
126126
126126
  try {
126127
- name3 = fileURLToPath17(name3);
126127
+ name3 = fileURLToPath18(name3);
126128
126128
  } catch (e4) {
126129
126129
  }
126130
126130
  }
@@ -126139,7 +126139,7 @@ var require_import_in_the_middle = __commonJS({
126139
126139
  if (moduleName2 === name3) {
126140
126140
  if (baseDir) {
126141
126141
  if (internals) {
126142
- name3 = name3 + path128.sep + path128.relative(baseDir, fileURLToPath17(filename));
126142
+ name3 = name3 + path128.sep + path128.relative(baseDir, fileURLToPath18(filename));
126143
126143
  } else {
126144
126144
  if (!getExperimentalPatchInternals() && !baseDir.endsWith(specifiers.get(filename))) continue;
126145
126145
  }
@@ -130045,7 +130045,7 @@ function initializeTelemetry(config2) {
130045
130045
  if (telemetryInitialized || !config2.getTelemetryEnabled()) {
130046
130046
  return;
130047
130047
  }
130048
- const debugLogger137 = createDebugLogger("OTEL");
130048
+ const debugLogger138 = createDebugLogger("OTEL");
130049
130049
  const resource = (0, import_resources.resourceFromAttributes)({
130050
130050
  [SemanticResourceAttributes.SERVICE_NAME]: SERVICE_NAME,
130051
130051
  [SemanticResourceAttributes.SERVICE_VERSION]: process.version,
@@ -130114,11 +130114,11 @@ function initializeTelemetry(config2) {
130114
130114
  });
130115
130115
  try {
130116
130116
  sdk.start();
130117
- debugLogger137.debug("OpenTelemetry SDK started successfully.");
130117
+ debugLogger138.debug("OpenTelemetry SDK started successfully.");
130118
130118
  telemetryInitialized = true;
130119
130119
  initializeMetrics(config2);
130120
130120
  } catch (error40) {
130121
- debugLogger137.error("Error starting OpenTelemetry SDK:", error40);
130121
+ debugLogger138.error("Error starting OpenTelemetry SDK:", error40);
130122
130122
  }
130123
130123
  process.on("SIGTERM", () => {
130124
130124
  shutdownTelemetry();
@@ -130134,12 +130134,12 @@ async function shutdownTelemetry() {
130134
130134
  if (!telemetryInitialized || !sdk) {
130135
130135
  return;
130136
130136
  }
130137
- const debugLogger137 = createDebugLogger("OTEL");
130137
+ const debugLogger138 = createDebugLogger("OTEL");
130138
130138
  try {
130139
130139
  await sdk.shutdown();
130140
- debugLogger137.debug("OpenTelemetry SDK shut down successfully.");
130140
+ debugLogger138.debug("OpenTelemetry SDK shut down successfully.");
130141
130141
  } catch (error40) {
130142
- debugLogger137.error("Error shutting down SDK:", error40);
130142
+ debugLogger138.error("Error shutting down SDK:", error40);
130143
130143
  } finally {
130144
130144
  telemetryInitialized = false;
130145
130145
  }
@@ -132797,46 +132797,50 @@ var init_converter = __esm({
132797
132797
  * Convert OpenAI response to Gemini format
132798
132798
  */
132799
132799
  convertOpenAIResponseToGemini(openaiResponse) {
132800
- const choice2 = openaiResponse.choices[0];
132800
+ const choice2 = openaiResponse.choices?.[0];
132801
132801
  const response = new GenerateContentResponse();
132802
- const parts = [];
132803
- const reasoningText = choice2.message.reasoning_content ?? choice2.message.reasoning;
132804
- if (reasoningText) {
132805
- parts.push({ text: reasoningText, thought: true });
132806
- }
132807
- if (choice2.message.content) {
132808
- parts.push({ text: choice2.message.content });
132809
- }
132810
- if (choice2.message.tool_calls) {
132811
- for (const toolCall of choice2.message.tool_calls) {
132812
- if (toolCall.function) {
132813
- let args = {};
132814
- if (toolCall.function.arguments) {
132815
- args = safeJsonParse(toolCall.function.arguments, {});
132816
- }
132817
- parts.push({
132818
- functionCall: {
132819
- id: toolCall.id,
132820
- name: toolCall.function.name,
132821
- args
132802
+ if (choice2) {
132803
+ const parts = [];
132804
+ const reasoningText = choice2.message.reasoning_content ?? choice2.message.reasoning;
132805
+ if (reasoningText) {
132806
+ parts.push({ text: reasoningText, thought: true });
132807
+ }
132808
+ if (choice2.message.content) {
132809
+ parts.push({ text: choice2.message.content });
132810
+ }
132811
+ if (choice2.message.tool_calls) {
132812
+ for (const toolCall of choice2.message.tool_calls) {
132813
+ if (toolCall.function) {
132814
+ let args = {};
132815
+ if (toolCall.function.arguments) {
132816
+ args = safeJsonParse(toolCall.function.arguments, {});
132822
132817
  }
132823
- });
132818
+ parts.push({
132819
+ functionCall: {
132820
+ id: toolCall.id,
132821
+ name: toolCall.function.name,
132822
+ args
132823
+ }
132824
+ });
132825
+ }
132824
132826
  }
132825
132827
  }
132828
+ response.candidates = [
132829
+ {
132830
+ content: {
132831
+ parts,
132832
+ role: "model"
132833
+ },
132834
+ finishReason: this.mapOpenAIFinishReasonToGemini(choice2.finish_reason || "stop"),
132835
+ index: 0,
132836
+ safetyRatings: []
132837
+ }
132838
+ ];
132839
+ } else {
132840
+ response.candidates = [];
132826
132841
  }
132827
132842
  response.responseId = openaiResponse.id;
132828
132843
  response.createTime = openaiResponse.created ? openaiResponse.created.toString() : (/* @__PURE__ */ new Date()).getTime().toString();
132829
- response.candidates = [
132830
- {
132831
- content: {
132832
- parts,
132833
- role: "model"
132834
- },
132835
- finishReason: this.mapOpenAIFinishReasonToGemini(choice2.finish_reason || "stop"),
132836
- index: 0,
132837
- safetyRatings: []
132838
- }
132839
- ];
132840
132844
  response.modelVersion = this.model;
132841
132845
  response.promptFeedback = { safetyRatings: [] };
132842
132846
  if (openaiResponse.usage) {
@@ -133871,6 +133875,7 @@ var init_tokenLimits = __esm({
133871
133875
  [/^qwen3-max/, LIMITS["64k"]],
133872
133876
  // DeepSeek
133873
133877
  [/^deepseek-reasoner/, LIMITS["64k"]],
133878
+ [/^deepseek-r1/, LIMITS["64k"]],
133874
133879
  [/^deepseek-chat/, LIMITS["8k"]],
133875
133880
  // Zhipu GLM
133876
133881
  [/^glm-5/, LIMITS["128k"]],
@@ -157714,7 +157719,7 @@ __export(geminiContentGenerator_exports, {
157714
157719
  createGeminiContentGenerator: () => createGeminiContentGenerator
157715
157720
  });
157716
157721
  function createGeminiContentGenerator(config2, gcConfig) {
157717
- const version2 = "0.12.3";
157722
+ const version2 = "0.12.4-nightly.20260316.110fcd7b7";
157718
157723
  const userAgent2 = config2.userAgent || `QwenCode/${version2} (${process.platform}; ${process.arch})`;
157719
157724
  const baseHeaders = {
157720
157725
  "User-Agent": userAgent2
@@ -174759,6 +174764,13 @@ var init_coreToolScheduler = __esm({
174759
174764
  originalContent: waitingCall.confirmationDetails.originalContent,
174760
174765
  newContent: waitingCall.confirmationDetails.newContent
174761
174766
  };
174767
+ } else if (waitingCall.confirmationDetails.type === "plan") {
174768
+ resultDisplay = {
174769
+ type: "plan_summary",
174770
+ message: "Plan was rejected. Remaining in plan mode.",
174771
+ plan: waitingCall.confirmationDetails.plan,
174772
+ rejected: true
174773
+ };
174762
174774
  }
174763
174775
  } else if (currentCall.status === "executing") {
174764
174776
  const executingCall = currentCall;
@@ -194772,6 +194784,21 @@ async function detectFileType(filePath) {
194772
194784
  }
194773
194785
  return "text";
194774
194786
  }
194787
+ function mediaModalityKey(fileType) {
194788
+ if (fileType === "image" || fileType === "pdf" || fileType === "audio" || fileType === "video") {
194789
+ return fileType;
194790
+ }
194791
+ return void 0;
194792
+ }
194793
+ function unsupportedModalityMessage(modality, displayName) {
194794
+ let hint;
194795
+ if (modality === "pdf") {
194796
+ hint = "This model does not support PDF input directly. The read_file tool cannot extract PDF content either. To extract text from the PDF file, try using skills if applicable, or guide user to install pdf skill by running this slash command:\n/extensions install https://github.com/anthropics/skills:document-skills";
194797
+ } else {
194798
+ hint = `This model does not support ${modality} input. The read_file tool cannot process this type of file either. To handle this file, try using skills if applicable, or any tools installed at system wide, or let the user know you cannot process this type of file.`;
194799
+ }
194800
+ return `[Unsupported ${modality} file: "${displayName}". ${hint}]`;
194801
+ }
194775
194802
  async function processSingleFileContent(filePath, config2, offset, limit2) {
194776
194803
  const rootDirectory = config2.getTargetDir();
194777
194804
  try {
@@ -194804,6 +194831,18 @@ async function processSingleFileContent(filePath, config2, offset, limit2) {
194804
194831
  const fileType = await detectFileType(filePath);
194805
194832
  const relativePathForDisplay = path28.relative(rootDirectory, filePath).replace(/\\/g, "/");
194806
194833
  const displayName = path28.basename(filePath);
194834
+ const modality = mediaModalityKey(fileType);
194835
+ if (modality) {
194836
+ const modalities = config2.getContentGeneratorConfig()?.modalities ?? {};
194837
+ if (!modalities[modality]) {
194838
+ const message = unsupportedModalityMessage(modality, displayName);
194839
+ debugLogger33.warn(`Model '${config2.getModel()}' does not support ${modality} input. Skipping file: ${relativePathForDisplay}`);
194840
+ return {
194841
+ llmContent: message,
194842
+ returnDisplay: `Skipped ${fileType} file: ${relativePathForDisplay} (model doesn't support ${modality} input)`
194843
+ };
194844
+ }
194845
+ }
194807
194846
  switch (fileType) {
194808
194847
  case "binary": {
194809
194848
  return {
@@ -194958,6 +194997,8 @@ var init_fileUtils = __esm({
194958
194997
  __name(isWithinRoot, "isWithinRoot");
194959
194998
  __name(isBinaryFile, "isBinaryFile");
194960
194999
  __name(detectFileType, "detectFileType");
195000
+ __name(mediaModalityKey, "mediaModalityKey");
195001
+ __name(unsupportedModalityMessage, "unsupportedModalityMessage");
194961
195002
  __name(processSingleFileContent, "processSingleFileContent");
194962
195003
  __name(fileExists, "fileExists");
194963
195004
  }
@@ -233931,9 +233972,9 @@ var init_handler = __esm({
233931
233972
  if (this.fsw.closed) {
233932
233973
  return;
233933
233974
  }
233934
- const dirname27 = sysPath.dirname(file2);
233975
+ const dirname28 = sysPath.dirname(file2);
233935
233976
  const basename26 = sysPath.basename(file2);
233936
- const parent = this.fsw._getWatchedDir(dirname27);
233977
+ const parent = this.fsw._getWatchedDir(dirname28);
233937
233978
  let prevStats = stats;
233938
233979
  if (parent.has(basename26))
233939
233980
  return;
@@ -233960,7 +234001,7 @@ var init_handler = __esm({
233960
234001
  prevStats = newStats2;
233961
234002
  }
233962
234003
  } catch (error40) {
233963
- this.fsw._remove(dirname27, basename26);
234004
+ this.fsw._remove(dirname28, basename26);
233964
234005
  }
233965
234006
  } else if (parent.has(basename26)) {
233966
234007
  const at2 = newStats.atimeMs;
@@ -235211,6 +235252,7 @@ import * as fs45 from "fs/promises";
235211
235252
  import * as fsSync2 from "fs";
235212
235253
  import * as path49 from "path";
235213
235254
  import * as os18 from "os";
235255
+ import { fileURLToPath as fileURLToPath7 } from "url";
235214
235256
  var debugLogger59, QWEN_CONFIG_DIR2, SKILLS_CONFIG_DIR, SKILL_MANIFEST_FILE2, SkillManager;
235215
235257
  var init_skill_manager = __esm({
235216
235258
  "packages/core/dist/src/skills/skill-manager.js"() {
@@ -235237,8 +235279,10 @@ var init_skill_manager = __esm({
235237
235279
  watchers = /* @__PURE__ */ new Map();
235238
235280
  watchStarted = false;
235239
235281
  refreshTimer = null;
235282
+ bundledSkillsDir;
235240
235283
  constructor(config2) {
235241
235284
  this.config = config2;
235285
+ this.bundledSkillsDir = path49.join(path49.dirname(fileURLToPath7(import.meta.url)), "bundled");
235242
235286
  }
235243
235287
  /**
235244
235288
  * Adds a listener that will be called when skills change.
@@ -235279,7 +235323,7 @@ var init_skill_manager = __esm({
235279
235323
  debugLogger59.debug(`Listing skills${options2.level ? ` at level: ${options2.level}` : ""}${options2.force ? " (forced refresh)" : ""}`);
235280
235324
  const skills = [];
235281
235325
  const seenNames = /* @__PURE__ */ new Set();
235282
- const levelsToCheck = options2.level ? [options2.level] : ["project", "user", "extension"];
235326
+ const levelsToCheck = options2.level ? [options2.level] : ["project", "user", "extension", "bundled"];
235283
235327
  const shouldUseCache = !options2.force && this.skillsCache !== null;
235284
235328
  if (!shouldUseCache) {
235285
235329
  debugLogger59.debug("Cache miss or force refresh, reloading skills");
@@ -235306,7 +235350,7 @@ var init_skill_manager = __esm({
235306
235350
  /**
235307
235351
  * Loads a skill configuration by name.
235308
235352
  * If level is specified, only searches that level.
235309
- * If level is omitted, searches project-level first, then user-level.
235353
+ * If level is omitted, searches in precedence order: project > user > extension > bundled.
235310
235354
  *
235311
235355
  * @param name - Name of the skill to load
235312
235356
  * @param level - Optional level to limit search to
@@ -235336,10 +235380,15 @@ var init_skill_manager = __esm({
235336
235380
  const extensionSkill = await this.findSkillByNameAtLevel(name3, "extension");
235337
235381
  if (extensionSkill) {
235338
235382
  debugLogger59.debug(`Found skill ${name3} at extension level`);
235383
+ return extensionSkill;
235384
+ }
235385
+ const bundledSkill = await this.findSkillByNameAtLevel(name3, "bundled");
235386
+ if (bundledSkill) {
235387
+ debugLogger59.debug(`Found skill ${name3} at bundled level`);
235339
235388
  } else {
235340
- debugLogger59.debug(`Skill ${name3} not found at any level`);
235389
+ debugLogger59.debug(`Skill ${name3} not found at any level (checked: project, user, extension, bundled)`);
235341
235390
  }
235342
- return extensionSkill;
235391
+ return bundledSkill;
235343
235392
  }
235344
235393
  /**
235345
235394
  * Loads a skill with its full content, ready for runtime use.
@@ -235375,7 +235424,7 @@ var init_skill_manager = __esm({
235375
235424
  debugLogger59.info("Refreshing skills cache...");
235376
235425
  const skillsCache = /* @__PURE__ */ new Map();
235377
235426
  this.parseErrors.clear();
235378
- const levels = ["project", "user", "extension"];
235427
+ const levels = ["project", "user", "extension", "bundled"];
235379
235428
  let totalSkills = 0;
235380
235429
  for (const level of levels) {
235381
235430
  const levelSkills = await this.listSkillsAtLevel(level);
@@ -235512,8 +235561,18 @@ var init_skill_manager = __esm({
235512
235561
  * @returns Absolute directory path
235513
235562
  */
235514
235563
  getSkillsBaseDir(level) {
235515
- const baseDir = level === "project" ? path49.join(this.config.getProjectRoot(), QWEN_CONFIG_DIR2, SKILLS_CONFIG_DIR) : path49.join(os18.homedir(), QWEN_CONFIG_DIR2, SKILLS_CONFIG_DIR);
235516
- return baseDir;
235564
+ switch (level) {
235565
+ case "project":
235566
+ return path49.join(this.config.getProjectRoot(), QWEN_CONFIG_DIR2, SKILLS_CONFIG_DIR);
235567
+ case "user":
235568
+ return path49.join(os18.homedir(), QWEN_CONFIG_DIR2, SKILLS_CONFIG_DIR);
235569
+ case "bundled":
235570
+ return this.bundledSkillsDir;
235571
+ case "extension":
235572
+ throw new Error("Extension skills do not have a base directory; they are loaded from active extensions.");
235573
+ default:
235574
+ throw new Error(`Unknown skill level: ${level}`);
235575
+ }
235517
235576
  }
235518
235577
  /**
235519
235578
  * Lists skills at a specific level.
@@ -235540,6 +235599,17 @@ var init_skill_manager = __esm({
235540
235599
  debugLogger59.debug(`Loaded ${skills2.length} extension-level skills from ${extensions.length} extensions`);
235541
235600
  return skills2;
235542
235601
  }
235602
+ if (level === "bundled") {
235603
+ const bundledDir = this.bundledSkillsDir;
235604
+ if (!fsSync2.existsSync(bundledDir)) {
235605
+ debugLogger59.warn(`Bundled skills directory not found: ${bundledDir}. This may indicate an incomplete installation.`);
235606
+ return [];
235607
+ }
235608
+ debugLogger59.debug(`Loading bundled skills from: ${bundledDir}`);
235609
+ const skills2 = await this.loadSkillsFromDir(bundledDir, "bundled");
235610
+ debugLogger59.debug(`Loaded ${skills2.length} bundled skills`);
235611
+ return skills2;
235612
+ }
235543
235613
  const baseDir = this.getSkillsBaseDir(level);
235544
235614
  debugLogger59.debug(`Loading ${level} level skills from: ${baseDir}`);
235545
235615
  const skills = await this.loadSkillsFromDir(baseDir, level);
@@ -235617,6 +235687,9 @@ var init_skill_manager = __esm({
235617
235687
  this.skillsCache.set(level, levelSkills);
235618
235688
  }
235619
235689
  }
235690
+ // Only watch project and user skill directories for changes.
235691
+ // Bundled skills are immutable (shipped with the package) and extension
235692
+ // skills are managed by the extension system, so neither needs watching.
235620
235693
  updateWatchersFromCache() {
235621
235694
  const watchTargets = new Set(["project", "user"].map((level) => this.getSkillsBaseDir(level)).filter((baseDir) => fsSync2.existsSync(baseDir)));
235622
235695
  for (const existingPath of this.watchers.keys()) {
@@ -235692,8 +235765,8 @@ var init_validation = __esm({
235692
235765
  }
235693
235766
  if (!config2.description || config2.description.trim().length === 0) {
235694
235767
  errors.push("Description is required and cannot be empty");
235695
- } else if (config2.description.length > 500) {
235696
- warnings.push("Description is quite long (>500 chars), consider shortening for better readability");
235768
+ } else if (config2.description.length > 1e3) {
235769
+ warnings.push("Description is quite long (>1,000 chars), consider shortening for better readability");
235697
235770
  }
235698
235771
  const promptValidation = this.validateSystemPrompt(config2.systemPrompt);
235699
235772
  if (!promptValidation.isValid) {
@@ -235800,9 +235873,7 @@ var init_validation = __esm({
235800
235873
  errors.push("System prompt must be at least 10 characters long");
235801
235874
  }
235802
235875
  if (trimmedPrompt.length > 1e4) {
235803
- errors.push("System prompt is too long (>10,000 characters)");
235804
- } else if (trimmedPrompt.length > 5e3) {
235805
- warnings.push("System prompt is quite long (>5,000 characters), consider shortening");
235876
+ warnings.push("System prompt is quite long (>10,000 characters), consider shortening");
235806
235877
  }
235807
235878
  return {
235808
235879
  isValid: errors.length === 0,
@@ -238899,7 +238970,7 @@ var init_strip_trailing_slashes = __esm({
238899
238970
 
238900
238971
  // node_modules/tar/dist/esm/list.js
238901
238972
  import fs48 from "node:fs";
238902
- import { dirname as dirname13, parse as parse8 } from "path";
238973
+ import { dirname as dirname14, parse as parse8 } from "path";
238903
238974
  var onReadEntryFunction, filesFilter, listFileSync, listFile, list;
238904
238975
  var init_list = __esm({
238905
238976
  "node_modules/tar/dist/esm/list.js"() {
@@ -238928,7 +238999,7 @@ var init_list = __esm({
238928
238999
  if (m3 !== void 0) {
238929
239000
  ret = m3;
238930
239001
  } else {
238931
- ret = mapHas(dirname13(file2), root);
239002
+ ret = mapHas(dirname14(file2), root);
238932
239003
  }
238933
239004
  }
238934
239005
  map3.set(file2, ret);
@@ -243854,9 +243925,10 @@ async function cloneFromGit(installMetadata, destination) {
243854
243925
  } catch {
243855
243926
  }
243856
243927
  }
243928
+ const symlinkValue = os20.platform() === "win32" ? "false" : "true";
243857
243929
  await git.clone(sourceUrl, "./", [
243858
243930
  "-c",
243859
- "core.symlinks=true",
243931
+ `core.symlinks=${symlinkValue}`,
243860
243932
  "--depth",
243861
243933
  "1"
243862
243934
  ]);
@@ -261559,7 +261631,7 @@ var init_NativeLspClient = __esm({
261559
261631
 
261560
261632
  // packages/core/dist/src/lsp/NativeLspService.js
261561
261633
  import * as path75 from "path";
261562
- import { fileURLToPath as fileURLToPath7 } from "url";
261634
+ import { fileURLToPath as fileURLToPath8 } from "url";
261563
261635
  import * as fs72 from "node:fs";
261564
261636
  var debugLogger77, NativeLspService;
261565
261637
  var init_NativeLspService = __esm({
@@ -262083,7 +262155,7 @@ var init_NativeLspService = __esm({
262083
262155
  * Apply text edits to a file
262084
262156
  */
262085
262157
  async applyTextEdits(uri, edits) {
262086
- let filePath = uri.startsWith("file://") ? fileURLToPath7(uri) : uri;
262158
+ let filePath = uri.startsWith("file://") ? fileURLToPath8(uri) : uri;
262087
262159
  if (!path75.isAbsolute(filePath)) {
262088
262160
  filePath = path75.resolve(this.workspaceRoot, filePath);
262089
262161
  }
@@ -303954,6 +304026,7 @@ var init_de2 = __esm({
303954
304026
  // ============================================================================
303955
304027
  "Analyzes the project and creates a tailored QWEN.md file.": "Analysiert das Projekt und erstellt eine ma\xDFgeschneiderte QWEN.md-Datei.",
303956
304028
  "List available Qwen Code tools. Usage: /tools [desc]": "Verf\xFCgbare Qwen Code Werkzeuge auflisten. Verwendung: /tools [desc]",
304029
+ "List available skills.": "Verf\xFCgbare Skills auflisten.",
303957
304030
  "Available Qwen Code CLI tools:": "Verf\xFCgbare Qwen Code CLI-Werkzeuge:",
303958
304031
  "No tools available": "Keine Werkzeuge verf\xFCgbar",
303959
304032
  "View or change the approval mode for tool usage": "Genehmigungsmodus f\xFCr Werkzeugnutzung anzeigen oder \xE4ndern",
@@ -304172,6 +304245,7 @@ var init_de2 = __esm({
304172
304245
  "These editors are currently supported. Please note that some editors cannot be used in sandbox mode.": "Diese Editoren werden derzeit unterst\xFCtzt. Bitte beachten Sie, dass einige Editoren nicht im Sandbox-Modus verwendet werden k\xF6nnen.",
304173
304246
  "Your preferred editor is:": "Ihr bevorzugter Editor ist:",
304174
304247
  "Manage extensions": "Erweiterungen verwalten",
304248
+ "Manage installed extensions": "Installierte Erweiterungen verwalten",
304175
304249
  "List active extensions": "Aktive Erweiterungen auflisten",
304176
304250
  "Update extensions. Usage: update <extension-names>|--all": "Erweiterungen aktualisieren. Verwendung: update <Erweiterungsnamen>|--all",
304177
304251
  "Disable an extension": "Erweiterung deaktivieren",
@@ -304302,6 +304376,30 @@ var init_de2 = __esm({
304302
304376
  "{{terminalName}} keybindings already configured.": "{{terminalName}}-Tastenbelegungen bereits konfiguriert.",
304303
304377
  "Failed to configure {{terminalName}}.": "Fehler beim Konfigurieren von {{terminalName}}.",
304304
304378
  "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).",
304379
+ // ============================================================================
304380
+ // Commands - Hooks
304381
+ // ============================================================================
304382
+ "Manage Qwen Code hooks": "Qwen Code-Hooks verwalten",
304383
+ "List all configured hooks": "Alle konfigurierten Hooks auflisten",
304384
+ "Enable a disabled hook": "Einen deaktivierten Hook aktivieren",
304385
+ "Disable an active hook": "Einen aktiven Hook deaktivieren",
304386
+ // ============================================================================
304387
+ // Commands - Session Export
304388
+ // ============================================================================
304389
+ "Export current session message history to a file": "Den Nachrichtenverlauf der aktuellen Sitzung in eine Datei exportieren",
304390
+ "Export session to HTML format": "Sitzung in das HTML-Format exportieren",
304391
+ "Export session to JSON format": "Sitzung in das JSON-Format exportieren",
304392
+ "Export session to JSONL format (one message per line)": "Sitzung in das JSONL-Format exportieren (eine Nachricht pro Zeile)",
304393
+ "Export session to markdown format": "Sitzung in das Markdown-Format exportieren",
304394
+ // ============================================================================
304395
+ // Commands - Insights
304396
+ // ============================================================================
304397
+ "generate personalized programming insights from your chat history": "Personalisierte Programmier-Einblicke aus Ihrem Chatverlauf generieren",
304398
+ // ============================================================================
304399
+ // Commands - Session History
304400
+ // ============================================================================
304401
+ "Resume a previous session": "Eine vorherige Sitzung fortsetzen",
304402
+ "Restore a tool call. This will reset the conversation and file history to the state it was in when the tool call was suggested": "Einen Tool-Aufruf wiederherstellen. Dadurch werden Konversations- und Dateiverlauf auf den Zustand zur\xFCckgesetzt, in dem der Tool-Aufruf vorgeschlagen wurde",
304305
304403
  "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.",
304306
304404
  'Terminal "{{terminal}}" is not supported yet.': 'Terminal "{{terminal}}" wird noch nicht unterst\xFCtzt.',
304307
304405
  // ============================================================================
@@ -305167,6 +305265,7 @@ var init_en3 = __esm({
305167
305265
  // ============================================================================
305168
305266
  "Analyzes the project and creates a tailored QWEN.md file.": "Analyzes the project and creates a tailored QWEN.md file.",
305169
305267
  "List available Qwen Code tools. Usage: /tools [desc]": "List available Qwen Code tools. Usage: /tools [desc]",
305268
+ "List available skills.": "List available skills.",
305170
305269
  "Available Qwen Code CLI tools:": "Available Qwen Code CLI tools:",
305171
305270
  "No tools available": "No tools available",
305172
305271
  "View or change the approval mode for tool usage": "View or change the approval mode for tool usage",
@@ -305445,6 +305544,7 @@ var init_en3 = __esm({
305445
305544
  "These editors are currently supported. Please note that some editors cannot be used in sandbox mode.": "These editors are currently supported. Please note that some editors cannot be used in sandbox mode.",
305446
305545
  "Your preferred editor is:": "Your preferred editor is:",
305447
305546
  "Manage extensions": "Manage extensions",
305547
+ "Manage installed extensions": "Manage installed extensions",
305448
305548
  "List active extensions": "List active extensions",
305449
305549
  "Update extensions. Usage: update <extension-names>|--all": "Update extensions. Usage: update <extension-names>|--all",
305450
305550
  "Disable an extension": "Disable an extension",
@@ -305575,6 +305675,30 @@ var init_en3 = __esm({
305575
305675
  "{{terminalName}} keybindings already configured.": "{{terminalName}} keybindings already configured.",
305576
305676
  "Failed to configure {{terminalName}}.": "Failed to configure {{terminalName}}.",
305577
305677
  "Your terminal is already configured for an optimal experience with multiline input (Shift+Enter and Ctrl+Enter).": "Your terminal is already configured for an optimal experience with multiline input (Shift+Enter and Ctrl+Enter).",
305678
+ // ============================================================================
305679
+ // Commands - Hooks
305680
+ // ============================================================================
305681
+ "Manage Qwen Code hooks": "Manage Qwen Code hooks",
305682
+ "List all configured hooks": "List all configured hooks",
305683
+ "Enable a disabled hook": "Enable a disabled hook",
305684
+ "Disable an active hook": "Disable an active hook",
305685
+ // ============================================================================
305686
+ // Commands - Session Export
305687
+ // ============================================================================
305688
+ "Export current session message history to a file": "Export current session message history to a file",
305689
+ "Export session to HTML format": "Export session to HTML format",
305690
+ "Export session to JSON format": "Export session to JSON format",
305691
+ "Export session to JSONL format (one message per line)": "Export session to JSONL format (one message per line)",
305692
+ "Export session to markdown format": "Export session to markdown format",
305693
+ // ============================================================================
305694
+ // Commands - Insights
305695
+ // ============================================================================
305696
+ "generate personalized programming insights from your chat history": "generate personalized programming insights from your chat history",
305697
+ // ============================================================================
305698
+ // Commands - Session History
305699
+ // ============================================================================
305700
+ "Resume a previous session": "Resume a previous session",
305701
+ "Restore a tool call. This will reset the conversation and file history to the state it was in when the tool call was suggested": "Restore a tool call. This will reset the conversation and file history to the state it was in when the tool call was suggested",
305578
305702
  "Could not detect terminal type. Supported terminals: VS Code, Cursor, Windsurf, and Trae.": "Could not detect terminal type. Supported terminals: VS Code, Cursor, Windsurf, and Trae.",
305579
305703
  'Terminal "{{terminal}}" is not supported yet.': 'Terminal "{{terminal}}" is not supported yet.',
305580
305704
  // ============================================================================
@@ -306414,6 +306538,7 @@ var init_ja2 = __esm({
306414
306538
  // ============================================================================
306415
306539
  "Analyzes the project and creates a tailored QWEN.md file.": "\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u5206\u6790\u3057\u3001\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3055\u308C\u305F QWEN.md \u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210",
306416
306540
  "List available Qwen Code tools. Usage: /tools [desc]": "\u5229\u7528\u53EF\u80FD\u306A Qwen Code \u30C4\u30FC\u30EB\u3092\u4E00\u89A7\u8868\u793A\u3002\u4F7F\u3044\u65B9: /tools [desc]",
306541
+ "List available skills.": "\u5229\u7528\u53EF\u80FD\u306A\u30B9\u30AD\u30EB\u3092\u4E00\u89A7\u8868\u793A\u3059\u308B\u3002",
306417
306542
  "Available Qwen Code CLI tools:": "\u5229\u7528\u53EF\u80FD\u306A Qwen Code CLI \u30C4\u30FC\u30EB:",
306418
306543
  "No tools available": "\u5229\u7528\u53EF\u80FD\u306A\u30C4\u30FC\u30EB\u306F\u3042\u308A\u307E\u305B\u3093",
306419
306544
  "View or change the approval mode for tool usage": "\u30C4\u30FC\u30EB\u4F7F\u7528\u306E\u627F\u8A8D\u30E2\u30FC\u30C9\u3092\u8868\u793A\u307E\u305F\u306F\u5909\u66F4",
@@ -306609,6 +306734,7 @@ var init_ja2 = __esm({
306609
306734
  "Show all directories in the workspace": "\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u5185\u306E\u3059\u3079\u3066\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u8868\u793A",
306610
306735
  "set external editor preference": "\u5916\u90E8\u30A8\u30C7\u30A3\u30BF\u306E\u8A2D\u5B9A",
306611
306736
  "Manage extensions": "\u62E1\u5F35\u6A5F\u80FD\u3092\u7BA1\u7406",
306737
+ "Manage installed extensions": "\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6E08\u307F\u306E\u62E1\u5F35\u6A5F\u80FD\u3092\u7BA1\u7406\u3059\u308B",
306612
306738
  "List active extensions": "\u6709\u52B9\u306A\u62E1\u5F35\u6A5F\u80FD\u3092\u4E00\u89A7\u8868\u793A",
306613
306739
  "Update extensions. Usage: update <extension-names>|--all": "\u62E1\u5F35\u6A5F\u80FD\u3092\u66F4\u65B0\u3002\u4F7F\u3044\u65B9: update <\u62E1\u5F35\u6A5F\u80FD\u540D>|--all",
306614
306740
  "You are installing an extension from {{originSource}}. Some features may not work perfectly with Qwen Code.": "{{originSource}} \u304B\u3089\u62E1\u5F35\u6A5F\u80FD\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u3044\u307E\u3059\u3002\u4E00\u90E8\u306E\u6A5F\u80FD\u306F Qwen Code \u3067\u5B8C\u5168\u306B\u52D5\u4F5C\u3057\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002",
@@ -306636,6 +306762,30 @@ var init_ja2 = __esm({
306636
306762
  "{{terminalName}} keybindings already configured.": "{{terminalName}} \u306E\u30AD\u30FC\u30D0\u30A4\u30F3\u30C9\u306F\u65E2\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059",
306637
306763
  "Failed to configure {{terminalName}}.": "{{terminalName}} \u306E\u8A2D\u5B9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
306638
306764
  "Your terminal is already configured for an optimal experience with multiline input (Shift+Enter and Ctrl+Enter).": "\u30BF\u30FC\u30DF\u30CA\u30EB\u306F\u8907\u6570\u884C\u5165\u529B(Shift+Enter \u3068 Ctrl+Enter)\u306B\u6700\u9069\u5316\u3055\u308C\u3066\u3044\u307E\u3059",
306765
+ // ============================================================================
306766
+ // Commands - Hooks
306767
+ // ============================================================================
306768
+ "Manage Qwen Code hooks": "Qwen Code \u306E\u30D5\u30C3\u30AF\u3092\u7BA1\u7406\u3059\u308B",
306769
+ "List all configured hooks": "\u8A2D\u5B9A\u6E08\u307F\u306E\u30D5\u30C3\u30AF\u3092\u3059\u3079\u3066\u8868\u793A\u3059\u308B",
306770
+ "Enable a disabled hook": "\u7121\u52B9\u306A\u30D5\u30C3\u30AF\u3092\u6709\u52B9\u306B\u3059\u308B",
306771
+ "Disable an active hook": "\u6709\u52B9\u306A\u30D5\u30C3\u30AF\u3092\u7121\u52B9\u306B\u3059\u308B",
306772
+ // ============================================================================
306773
+ // Commands - Session Export
306774
+ // ============================================================================
306775
+ "Export current session message history to a file": "\u73FE\u5728\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u5C65\u6B74\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B",
306776
+ "Export session to HTML format": "\u30BB\u30C3\u30B7\u30E7\u30F3\u3092 HTML \u5F62\u5F0F\u3067\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B",
306777
+ "Export session to JSON format": "\u30BB\u30C3\u30B7\u30E7\u30F3\u3092 JSON \u5F62\u5F0F\u3067\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B",
306778
+ "Export session to JSONL format (one message per line)": "\u30BB\u30C3\u30B7\u30E7\u30F3\u3092 JSONL \u5F62\u5F0F\u3067\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B\uFF081 \u884C\u306B 1 \u30E1\u30C3\u30BB\u30FC\u30B8\uFF09",
306779
+ "Export session to markdown format": "\u30BB\u30C3\u30B7\u30E7\u30F3\u3092 Markdown \u5F62\u5F0F\u3067\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B",
306780
+ // ============================================================================
306781
+ // Commands - Insights
306782
+ // ============================================================================
306783
+ "generate personalized programming insights from your chat history": "\u30C1\u30E3\u30C3\u30C8\u5C65\u6B74\u304B\u3089\u30D1\u30FC\u30BD\u30CA\u30E9\u30A4\u30BA\u3055\u308C\u305F\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u30A4\u30F3\u30B5\u30A4\u30C8\u3092\u751F\u6210\u3059\u308B",
306784
+ // ============================================================================
306785
+ // Commands - Session History
306786
+ // ============================================================================
306787
+ "Resume a previous session": "\u524D\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u518D\u958B\u3059\u308B",
306788
+ "Restore a tool call. This will reset the conversation and file history to the state it was in when the tool call was suggested": "\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u3092\u5FA9\u5143\u3057\u307E\u3059\u3002\u3053\u308C\u306B\u3088\u308A\u3001\u4F1A\u8A71\u3068\u30D5\u30A1\u30A4\u30EB\u306E\u5C65\u6B74\u306F\u305D\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u304C\u63D0\u6848\u3055\u308C\u305F\u6642\u70B9\u306E\u72B6\u614B\u306B\u623B\u308A\u307E\u3059",
306639
306789
  "Could not detect terminal type. Supported terminals: VS Code, Cursor, Windsurf, and Trae.": "\u30BF\u30FC\u30DF\u30CA\u30EB\u306E\u7A2E\u985E\u3092\u691C\u51FA\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u30BF\u30FC\u30DF\u30CA\u30EB: VS Code\u3001Cursor\u3001Windsurf\u3001Trae",
306640
306790
  'Terminal "{{terminal}}" is not supported yet.': '\u30BF\u30FC\u30DF\u30CA\u30EB "{{terminal}}" \u306F\u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093',
306641
306791
  // Commands - Language
@@ -307301,6 +307451,7 @@ var init_pt2 = __esm({
307301
307451
  // ============================================================================
307302
307452
  "Analyzes the project and creates a tailored QWEN.md file.": "Analisa o projeto e cria um arquivo QWEN.md personalizado.",
307303
307453
  "List available Qwen Code tools. Usage: /tools [desc]": "Listar ferramentas Qwen Code dispon\xEDveis. Uso: /tools [desc]",
307454
+ "List available skills.": "Listar habilidades dispon\xEDveis.",
307304
307455
  "Available Qwen Code CLI tools:": "Ferramentas CLI do Qwen Code dispon\xEDveis:",
307305
307456
  "No tools available": "Nenhuma ferramenta dispon\xEDvel",
307306
307457
  "View or change the approval mode for tool usage": "Ver ou alterar o modo de aprova\xE7\xE3o para uso de ferramentas",
@@ -307527,6 +307678,7 @@ var init_pt2 = __esm({
307527
307678
  "These editors are currently supported. Please note that some editors cannot be used in sandbox mode.": "Estes editores s\xE3o suportados atualmente. Note que alguns editores n\xE3o podem ser usados no modo sandbox.",
307528
307679
  "Your preferred editor is:": "Seu editor preferido \xE9:",
307529
307680
  "Manage extensions": "Gerenciar extens\xF5es",
307681
+ "Manage installed extensions": "Gerenciar extens\xF5es instaladas",
307530
307682
  "List active extensions": "Listar extens\xF5es ativas",
307531
307683
  "Update extensions. Usage: update <extension-names>|--all": "Atualizar extens\xF5es. Uso: update <nomes-das-extensoes>|--all",
307532
307684
  "Disable an extension": "Desativar uma extens\xE3o",
@@ -307646,6 +307798,30 @@ var init_pt2 = __esm({
307646
307798
  "{{terminalName}} keybindings already configured.": "Atalhos de {{terminalName}} j\xE1 configurados.",
307647
307799
  "Failed to configure {{terminalName}}.": "Falha ao configurar {{terminalName}}.",
307648
307800
  "Your terminal is already configured for an optimal experience with multiline input (Shift+Enter and Ctrl+Enter).": "Seu terminal j\xE1 est\xE1 configurado para uma experi\xEAncia ideal com entrada multilinhas (Shift+Enter e Ctrl+Enter).",
307801
+ // ============================================================================
307802
+ // Commands - Hooks
307803
+ // ============================================================================
307804
+ "Manage Qwen Code hooks": "Gerenciar hooks do Qwen Code",
307805
+ "List all configured hooks": "Listar todos os hooks configurados",
307806
+ "Enable a disabled hook": "Ativar um hook desativado",
307807
+ "Disable an active hook": "Desativar um hook ativo",
307808
+ // ============================================================================
307809
+ // Commands - Session Export
307810
+ // ============================================================================
307811
+ "Export current session message history to a file": "Exportar o hist\xF3rico de mensagens da sess\xE3o atual para um arquivo",
307812
+ "Export session to HTML format": "Exportar a sess\xE3o para o formato HTML",
307813
+ "Export session to JSON format": "Exportar a sess\xE3o para o formato JSON",
307814
+ "Export session to JSONL format (one message per line)": "Exportar a sess\xE3o para o formato JSONL (uma mensagem por linha)",
307815
+ "Export session to markdown format": "Exportar a sess\xE3o para o formato Markdown",
307816
+ // ============================================================================
307817
+ // Commands - Insights
307818
+ // ============================================================================
307819
+ "generate personalized programming insights from your chat history": "Gerar insights personalizados de programa\xE7\xE3o a partir do seu hist\xF3rico de chat",
307820
+ // ============================================================================
307821
+ // Commands - Session History
307822
+ // ============================================================================
307823
+ "Resume a previous session": "Retomar uma sess\xE3o anterior",
307824
+ "Restore a tool call. This will reset the conversation and file history to the state it was in when the tool call was suggested": "Restaurar uma chamada de ferramenta. Isso redefinir\xE1 o hist\xF3rico da conversa e dos arquivos para o estado em que a chamada da ferramenta foi sugerida",
307649
307825
  "Could not detect terminal type. Supported terminals: VS Code, Cursor, Windsurf, and Trae.": "N\xE3o foi poss\xEDvel detectar o tipo de terminal. Terminais suportados: VS Code, Cursor, Windsurf e Trae.",
307650
307826
  'Terminal "{{terminal}}" is not supported yet.': 'O terminal "{{terminal}}" ainda n\xE3o \xE9 suportado.',
307651
307827
  // ============================================================================
@@ -308504,6 +308680,7 @@ var init_ru2 = __esm({
308504
308680
  // ============================================================================
308505
308681
  "Analyzes the project and creates a tailored QWEN.md file.": "\u0410\u043D\u0430\u043B\u0438\u0437 \u043F\u0440\u043E\u0435\u043A\u0442\u0430 \u0438 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u0430\u0434\u0430\u043F\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 QWEN.md",
308506
308682
  "List available Qwen Code tools. Usage: /tools [desc]": "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 Qwen Code. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435: /tools [desc]",
308683
+ "List available skills.": "\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435 \u043D\u0430\u0432\u044B\u043A\u0438.",
308507
308684
  "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:",
308508
308685
  "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",
308509
308686
  "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",
@@ -308724,6 +308901,7 @@ var init_ru2 = __esm({
308724
308901
  "These editors are currently supported. Please note that some editors cannot be used in sandbox mode.": "\u0412 \u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0435\u0435 \u0432\u0440\u0435\u043C\u044F \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u044B. \u041E\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043D\u0438\u043C\u0430\u043D\u0438\u0435, \u0447\u0442\u043E \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u044B \u043D\u0435\u043B\u044C\u0437\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0432 \u0440\u0435\u0436\u0438\u043C\u0435 \u043F\u0435\u0441\u043E\u0447\u043D\u0438\u0446\u044B.",
308725
308902
  "Your preferred editor is:": "\u0412\u0430\u0448 \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0438\u0442\u0430\u0435\u043C\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440:",
308726
308903
  "Manage extensions": "\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F\u043C\u0438",
308904
+ "Manage installed extensions": "\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u043C\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F\u043C\u0438",
308727
308905
  "List active extensions": "\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F",
308728
308906
  "Update extensions. Usage: update <extension-names>|--all": "\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435: update <extension-names>|--all",
308729
308907
  "Disable an extension": "\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u0435",
@@ -308854,6 +309032,30 @@ var init_ru2 = __esm({
308854
309032
  "{{terminalName}} keybindings already configured.": "\u041F\u0440\u0438\u0432\u044F\u0437\u043A\u0438 \u043A\u043B\u0430\u0432\u0438\u0448 {{terminalName}} \u0443\u0436\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u044B.",
308855
309033
  "Failed to configure {{terminalName}}.": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C {{terminalName}}.",
308856
309034
  "Your terminal is already configured for an optimal experience with multiline input (Shift+Enter and Ctrl+Enter).": "\u0412\u0430\u0448 \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B \u0443\u0436\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D \u0434\u043B\u044F \u043E\u043F\u0442\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0439 \u0440\u0430\u0431\u043E\u0442\u044B \u0441 \u043C\u043D\u043E\u0433\u043E\u0441\u0442\u0440\u043E\u0447\u043D\u044B\u043C \u0432\u0432\u043E\u0434\u043E\u043C (Shift+Enter \u0438 Ctrl+Enter).",
309035
+ // ============================================================================
309036
+ // Commands - Hooks
309037
+ // ============================================================================
309038
+ "Manage Qwen Code hooks": "\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C \u0445\u0443\u043A\u0430\u043C\u0438 Qwen Code",
309039
+ "List all configured hooks": "\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435 \u0445\u0443\u043A\u0438",
309040
+ "Enable a disabled hook": "\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u043D\u044B\u0439 \u0445\u0443\u043A",
309041
+ "Disable an active hook": "\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0439 \u0445\u0443\u043A",
309042
+ // ============================================================================
309043
+ // Commands - Session Export
309044
+ // ============================================================================
309045
+ "Export current session message history to a file": "\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0438\u0441\u0442\u043E\u0440\u0438\u044E \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u0432 \u0444\u0430\u0439\u043B",
309046
+ "Export session to HTML format": "\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0435\u0441\u0441\u0438\u044E \u0432 \u0444\u043E\u0440\u043C\u0430\u0442 HTML",
309047
+ "Export session to JSON format": "\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0435\u0441\u0441\u0438\u044E \u0432 \u0444\u043E\u0440\u043C\u0430\u0442 JSON",
309048
+ "Export session to JSONL format (one message per line)": "\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0435\u0441\u0441\u0438\u044E \u0432 \u0444\u043E\u0440\u043C\u0430\u0442 JSONL (\u043E\u0434\u043D\u043E \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043D\u0430 \u0441\u0442\u0440\u043E\u043A\u0443)",
309049
+ "Export session to markdown format": "\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0435\u0441\u0441\u0438\u044E \u0432 \u0444\u043E\u0440\u043C\u0430\u0442 Markdown",
309050
+ // ============================================================================
309051
+ // Commands - Insights
309052
+ // ============================================================================
309053
+ "generate personalized programming insights from your chat history": "\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0438\u043D\u0441\u0430\u0439\u0442\u044B \u043F\u043E \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044E \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0438\u0441\u0442\u043E\u0440\u0438\u0438 \u0447\u0430\u0442\u0430",
309054
+ // ============================================================================
309055
+ // Commands - Session History
309056
+ // ============================================================================
309057
+ "Resume a previous session": "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0443\u044E \u0441\u0435\u0441\u0441\u0438\u044E",
309058
+ "Restore a tool call. This will reset the conversation and file history to the state it was in when the tool call was suggested": "\u0412\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0432\u044B\u0437\u043E\u0432 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430. \u042D\u0442\u043E \u0432\u0435\u0440\u043D\u0435\u0442 \u0438\u0441\u0442\u043E\u0440\u0438\u044E \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u0430 \u0438 \u0444\u0430\u0439\u043B\u043E\u0432 \u043A \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044E \u043D\u0430 \u043C\u043E\u043C\u0435\u043D\u0442, \u043A\u043E\u0433\u0434\u0430 \u0431\u044B\u043B \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D \u044D\u0442\u043E\u0442 \u0432\u044B\u0437\u043E\u0432 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430",
308857
309059
  "Could not detect terminal type. Supported terminals: VS Code, Cursor, Windsurf, and Trae.": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0442\u0438\u043F \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B\u0430. \u041F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043C\u044B\u0435 \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B\u044B: VS Code, Cursor, Windsurf \u0438 Trae.",
308858
309060
  'Terminal "{{terminal}}" is not supported yet.': '\u0422\u0435\u0440\u043C\u0438\u043D\u0430\u043B "{{terminal}}" \u0435\u0449\u0435 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F.',
308859
309061
  // ============================================================================
@@ -309723,6 +309925,7 @@ var init_zh = __esm({
309723
309925
  // ============================================================================
309724
309926
  "Analyzes the project and creates a tailored QWEN.md file.": "\u5206\u6790\u9879\u76EE\u5E76\u521B\u5EFA\u5B9A\u5236\u7684 QWEN.md \u6587\u4EF6",
309725
309927
  "List available Qwen Code tools. Usage: /tools [desc]": "\u5217\u51FA\u53EF\u7528\u7684 Qwen Code \u5DE5\u5177\u3002\u7528\u6CD5\uFF1A/tools [desc]",
309928
+ "List available skills.": "\u5217\u51FA\u53EF\u7528\u6280\u80FD\u3002",
309726
309929
  "Available Qwen Code CLI tools:": "\u53EF\u7528\u7684 Qwen Code CLI \u5DE5\u5177\uFF1A",
309727
309930
  "No tools available": "\u6CA1\u6709\u53EF\u7528\u5DE5\u5177",
309728
309931
  "View or change the approval mode for tool usage": "\u67E5\u770B\u6216\u66F4\u6539\u5DE5\u5177\u4F7F\u7528\u7684\u5BA1\u6279\u6A21\u5F0F",
@@ -310000,6 +310203,7 @@ var init_zh = __esm({
310000
310203
  "These editors are currently supported. Please note that some editors cannot be used in sandbox mode.": "\u5F53\u524D\u652F\u6301\u4EE5\u4E0B\u7F16\u8F91\u5668\u3002\u8BF7\u6CE8\u610F\uFF0C\u67D0\u4E9B\u7F16\u8F91\u5668\u65E0\u6CD5\u5728\u6C99\u7BB1\u6A21\u5F0F\u4E0B\u4F7F\u7528\u3002",
310001
310204
  "Your preferred editor is:": "\u60A8\u7684\u9996\u9009\u7F16\u8F91\u5668\u662F\uFF1A",
310002
310205
  "Manage extensions": "\u7BA1\u7406\u6269\u5C55",
310206
+ "Manage installed extensions": "\u7BA1\u7406\u5DF2\u5B89\u88C5\u7684\u6269\u5C55",
310003
310207
  "List active extensions": "\u5217\u51FA\u6D3B\u52A8\u6269\u5C55",
310004
310208
  "Update extensions. Usage: update <extension-names>|--all": "\u66F4\u65B0\u6269\u5C55\u3002\u7528\u6CD5\uFF1Aupdate <extension-names>|--all",
310005
310209
  "Disable an extension": "\u7981\u7528\u6269\u5C55",
@@ -310130,6 +310334,30 @@ var init_zh = __esm({
310130
310334
  "{{terminalName}} keybindings already configured.": "{{terminalName}} \u6309\u952E\u7ED1\u5B9A\u5DF2\u914D\u7F6E\u3002",
310131
310335
  "Failed to configure {{terminalName}}.": "\u914D\u7F6E {{terminalName}} \u5931\u8D25\u3002",
310132
310336
  "Your terminal is already configured for an optimal experience with multiline input (Shift+Enter and Ctrl+Enter).": "\u60A8\u7684\u7EC8\u7AEF\u5DF2\u914D\u7F6E\u4E3A\u652F\u6301\u591A\u884C\u8F93\u5165\uFF08Shift+Enter \u548C Ctrl+Enter\uFF09\u7684\u6700\u4F73\u4F53\u9A8C\u3002",
310337
+ // ============================================================================
310338
+ // Commands - Hooks
310339
+ // ============================================================================
310340
+ "Manage Qwen Code hooks": "\u7BA1\u7406 Qwen Code Hook",
310341
+ "List all configured hooks": "\u5217\u51FA\u6240\u6709\u5DF2\u914D\u7F6E\u7684 Hook",
310342
+ "Enable a disabled hook": "\u542F\u7528\u5DF2\u7981\u7528\u7684 Hook",
310343
+ "Disable an active hook": "\u7981\u7528\u5DF2\u542F\u7528\u7684 Hook",
310344
+ // ============================================================================
310345
+ // Commands - Session Export
310346
+ // ============================================================================
310347
+ "Export current session message history to a file": "\u5C06\u5F53\u524D\u4F1A\u8BDD\u7684\u6D88\u606F\u8BB0\u5F55\u5BFC\u51FA\u5230\u6587\u4EF6",
310348
+ "Export session to HTML format": "\u5C06\u4F1A\u8BDD\u5BFC\u51FA\u4E3A HTML \u6587\u4EF6",
310349
+ "Export session to JSON format": "\u5C06\u4F1A\u8BDD\u5BFC\u51FA\u4E3A JSON \u6587\u4EF6",
310350
+ "Export session to JSONL format (one message per line)": "\u5C06\u4F1A\u8BDD\u5BFC\u51FA\u4E3A JSONL \u6587\u4EF6\uFF08\u6BCF\u884C\u4E00\u6761\u6D88\u606F\uFF09",
310351
+ "Export session to markdown format": "\u5C06\u4F1A\u8BDD\u5BFC\u51FA\u4E3A Markdown \u6587\u4EF6",
310352
+ // ============================================================================
310353
+ // Commands - Insights
310354
+ // ============================================================================
310355
+ "generate personalized programming insights from your chat history": "\u6839\u636E\u4F60\u7684\u804A\u5929\u8BB0\u5F55\u751F\u6210\u4E2A\u6027\u5316\u7F16\u7A0B\u6D1E\u5BDF",
310356
+ // ============================================================================
310357
+ // Commands - Session History
310358
+ // ============================================================================
310359
+ "Resume a previous session": "\u6062\u590D\u5148\u524D\u4F1A\u8BDD",
310360
+ "Restore a tool call. This will reset the conversation and file history to the state it was in when the tool call was suggested": "\u6062\u590D\u67D0\u6B21\u5DE5\u5177\u8C03\u7528\u3002\u8FD9\u5C06\u628A\u5BF9\u8BDD\u4E0E\u6587\u4EF6\u5386\u53F2\u91CD\u7F6E\u5230\u63D0\u51FA\u8BE5\u5DE5\u5177\u8C03\u7528\u5EFA\u8BAE\u65F6\u7684\u72B6\u6001",
310133
310361
  "Could not detect terminal type. Supported terminals: VS Code, Cursor, Windsurf, and Trae.": "\u65E0\u6CD5\u68C0\u6D4B\u7EC8\u7AEF\u7C7B\u578B\u3002\u652F\u6301\u7684\u7EC8\u7AEF\uFF1AVS Code\u3001Cursor\u3001Windsurf \u548C Trae\u3002",
310134
310362
  'Terminal "{{terminal}}" is not supported yet.': '\u7EC8\u7AEF "{{terminal}}" \u5C1A\u672A\u652F\u6301\u3002',
310135
310363
  // ============================================================================
@@ -325447,9 +325675,9 @@ var require_command_exists = __commonJS({
325447
325675
  cleanInput = /* @__PURE__ */ __name(function(s5) {
325448
325676
  var isPathName = /[\\]/.test(s5);
325449
325677
  if (isPathName) {
325450
- var dirname27 = '"' + path128.dirname(s5) + '"';
325678
+ var dirname28 = '"' + path128.dirname(s5) + '"';
325451
325679
  var basename26 = '"' + path128.basename(s5) + '"';
325452
- return dirname27 + ":" + basename26;
325680
+ return dirname28 + ":" + basename26;
325453
325681
  }
325454
325682
  return '"' + s5 + '"';
325455
325683
  }, "cleanInput");
@@ -359851,9 +360079,9 @@ var require_logging_utils2 = __commonJS({
359851
360079
  this.debugPkg = pkg2;
359852
360080
  }
359853
360081
  makeLogger(namespace) {
359854
- const debugLogger137 = this.debugPkg(namespace);
360082
+ const debugLogger138 = this.debugPkg(namespace);
359855
360083
  return (fields, ...args) => {
359856
- debugLogger137(args[0], ...args.slice(1));
360084
+ debugLogger138(args[0], ...args.slice(1));
359857
360085
  };
359858
360086
  }
359859
360087
  setFilters() {
@@ -359877,7 +360105,7 @@ var require_logging_utils2 = __commonJS({
359877
360105
  }
359878
360106
  makeLogger(namespace) {
359879
360107
  var _a7;
359880
- const debugLogger137 = (_a7 = this.upstream) === null || _a7 === void 0 ? void 0 : _a7.makeLogger(namespace);
360108
+ const debugLogger138 = (_a7 = this.upstream) === null || _a7 === void 0 ? void 0 : _a7.makeLogger(namespace);
359881
360109
  return (fields, ...args) => {
359882
360110
  var _a8;
359883
360111
  const severity = (_a8 = fields.severity) !== null && _a8 !== void 0 ? _a8 : LogSeverity.INFO;
@@ -359886,8 +360114,8 @@ var require_logging_utils2 = __commonJS({
359886
360114
  message: util3.format(...args)
359887
360115
  }, fields);
359888
360116
  const jsonString = JSON.stringify(json3);
359889
- if (debugLogger137) {
359890
- debugLogger137(fields, jsonString);
360117
+ if (debugLogger138) {
360118
+ debugLogger138(fields, jsonString);
359891
360119
  } else {
359892
360120
  console.log("%s", jsonString);
359893
360121
  }
@@ -369879,11 +370107,11 @@ var require_util32 = __commonJS({
369879
370107
  if (files.includes("node_modules") || files.includes("package.json") || files.includes("package.json5") || files.includes("package.yaml") || files.includes("pnpm-workspace.yaml")) {
369880
370108
  return name4;
369881
370109
  }
369882
- const dirname27 = path128.dirname(name4);
369883
- if (dirname27 === name4) {
370110
+ const dirname28 = path128.dirname(name4);
370111
+ if (dirname28 === name4) {
369884
370112
  return original;
369885
370113
  }
369886
- return find(dirname27, original);
370114
+ return find(dirname28, original);
369887
370115
  } catch (error40) {
369888
370116
  if (name4 === original) {
369889
370117
  if (error40.code === "ENOENT") {
@@ -379988,6 +380216,59 @@ var TOGGLE_TYPES = /* @__PURE__ */ new Set([
379988
380216
  "boolean",
379989
380217
  "enum"
379990
380218
  ]);
380219
+ var HOOK_DEFINITION_ITEMS = {
380220
+ type: "object",
380221
+ description: "A hook definition with an optional matcher and a list of hook configurations.",
380222
+ properties: {
380223
+ matcher: {
380224
+ type: "string",
380225
+ description: "An optional matcher pattern to filter when this hook definition applies."
380226
+ },
380227
+ sequential: {
380228
+ type: "boolean",
380229
+ description: "Whether the hooks should be executed sequentially instead of in parallel."
380230
+ },
380231
+ hooks: {
380232
+ type: "array",
380233
+ description: "The list of hook configurations to execute.",
380234
+ required: true,
380235
+ items: {
380236
+ type: "object",
380237
+ description: "A hook configuration entry that defines a command to execute.",
380238
+ properties: {
380239
+ type: {
380240
+ type: "string",
380241
+ description: "The type of hook.",
380242
+ enum: ["command"],
380243
+ required: true
380244
+ },
380245
+ command: {
380246
+ type: "string",
380247
+ description: "The command to execute when the hook is triggered.",
380248
+ required: true
380249
+ },
380250
+ name: {
380251
+ type: "string",
380252
+ description: "An optional name for the hook."
380253
+ },
380254
+ description: {
380255
+ type: "string",
380256
+ description: "An optional description of what the hook does."
380257
+ },
380258
+ timeout: {
380259
+ type: "number",
380260
+ description: "Timeout in milliseconds for the hook execution."
380261
+ },
380262
+ env: {
380263
+ type: "object",
380264
+ description: "Environment variables to set when executing the hook command.",
380265
+ additionalProperties: { type: "string" }
380266
+ }
380267
+ }
380268
+ }
380269
+ }
380270
+ }
380271
+ };
379991
380272
  var SETTINGS_SCHEMA = {
379992
380273
  // Maintained for compatibility/criticality
379993
380274
  mcpServers: {
@@ -381064,7 +381345,8 @@ var SETTINGS_SCHEMA = {
381064
381345
  default: [],
381065
381346
  description: "Hooks that execute before agent processing. Can modify prompts or inject context.",
381066
381347
  showInDialog: false,
381067
- mergeStrategy: "concat" /* CONCAT */
381348
+ mergeStrategy: "concat" /* CONCAT */,
381349
+ items: HOOK_DEFINITION_ITEMS
381068
381350
  },
381069
381351
  Stop: {
381070
381352
  type: "array",
@@ -381074,7 +381356,8 @@ var SETTINGS_SCHEMA = {
381074
381356
  default: [],
381075
381357
  description: "Hooks that execute after agent processing. Can post-process responses or log interactions.",
381076
381358
  showInDialog: false,
381077
- mergeStrategy: "concat" /* CONCAT */
381359
+ mergeStrategy: "concat" /* CONCAT */,
381360
+ items: HOOK_DEFINITION_ITEMS
381078
381361
  }
381079
381362
  }
381080
381363
  }
@@ -381156,7 +381439,7 @@ import * as fs82 from "node:fs";
381156
381439
  init_esbuild_shims();
381157
381440
  import * as fs80 from "node:fs";
381158
381441
  import * as path84 from "node:path";
381159
- import { fileURLToPath as fileURLToPath8, pathToFileURL as pathToFileURL5 } from "node:url";
381442
+ import { fileURLToPath as fileURLToPath9, pathToFileURL as pathToFileURL5 } from "node:url";
381160
381443
  import { homedir as homedir15 } from "node:os";
381161
381444
 
381162
381445
  // import("./locales/**/*.js") in packages/cli/src/i18n/index.ts
@@ -381175,7 +381458,7 @@ var translations = {};
381175
381458
  var translationCache = {};
381176
381459
  var loadingPromises = {};
381177
381460
  var getBuiltinLocalesDir = /* @__PURE__ */ __name(() => {
381178
- const __filename5 = fileURLToPath8(import.meta.url);
381461
+ const __filename5 = fileURLToPath9(import.meta.url);
381179
381462
  return path84.join(path84.dirname(__filename5), "locales");
381180
381463
  }, "getBuiltinLocalesDir");
381181
381464
  var getUserLocalesDir = /* @__PURE__ */ __name(() => path84.join(homedir15(), ".qwen", "locales"), "getUserLocalesDir");
@@ -384080,18 +384363,18 @@ __name(ui, "ui");
384080
384363
 
384081
384364
  // node_modules/escalade/sync/index.mjs
384082
384365
  init_esbuild_shims();
384083
- import { dirname as dirname22, resolve as resolve23 } from "path";
384366
+ import { dirname as dirname23, resolve as resolve23 } from "path";
384084
384367
  import { readdirSync as readdirSync4, statSync as statSync9 } from "fs";
384085
384368
  function sync_default(start, callback) {
384086
384369
  let dir = resolve23(".", start);
384087
384370
  let tmp, stats = statSync9(dir);
384088
384371
  if (!stats.isDirectory()) {
384089
- dir = dirname22(dir);
384372
+ dir = dirname23(dir);
384090
384373
  }
384091
384374
  while (true) {
384092
384375
  tmp = callback(dir, readdirSync4(dir));
384093
384376
  if (tmp) return resolve23(dir, tmp);
384094
- dir = dirname22(tmp = dir);
384377
+ dir = dirname23(tmp = dir);
384095
384378
  if (tmp === dir) break;
384096
384379
  }
384097
384380
  }
@@ -384100,7 +384383,7 @@ __name(sync_default, "default");
384100
384383
  // node_modules/yargs/lib/platform-shims/esm.mjs
384101
384384
  import { inspect as inspect2 } from "util";
384102
384385
  import { readFileSync as readFileSync19 } from "fs";
384103
- import { fileURLToPath as fileURLToPath9 } from "url";
384386
+ import { fileURLToPath as fileURLToPath10 } from "url";
384104
384387
 
384105
384388
  // node_modules/yargs-parser/build/lib/index.js
384106
384389
  init_esbuild_shims();
@@ -385134,7 +385417,7 @@ yargsParser.looksLikeNumber = looksLikeNumber;
385134
385417
  var lib_default = yargsParser;
385135
385418
 
385136
385419
  // node_modules/yargs/lib/platform-shims/esm.mjs
385137
- import { basename as basename18, dirname as dirname23, extname as extname5, relative as relative9, resolve as resolve26 } from "path";
385420
+ import { basename as basename18, dirname as dirname24, extname as extname5, relative as relative9, resolve as resolve26 } from "path";
385138
385421
 
385139
385422
  // node_modules/yargs/build/lib/utils/process-argv.js
385140
385423
  init_esbuild_shims();
@@ -385377,7 +385660,7 @@ var REQUIRE_ERROR = "require is not supported by ESM";
385377
385660
  var REQUIRE_DIRECTORY_ERROR = "loading a directory of commands is not supported yet for ESM";
385378
385661
  var __dirname4;
385379
385662
  try {
385380
- __dirname4 = fileURLToPath9(import.meta.url);
385663
+ __dirname4 = fileURLToPath10(import.meta.url);
385381
385664
  } catch (e4) {
385382
385665
  __dirname4 = process.cwd();
385383
385666
  }
@@ -385401,7 +385684,7 @@ var esm_default3 = {
385401
385684
  Parser: lib_default,
385402
385685
  path: {
385403
385686
  basename: basename18,
385404
- dirname: dirname23,
385687
+ dirname: dirname24,
385405
385688
  extname: extname5,
385406
385689
  relative: relative9,
385407
385690
  resolve: resolve26
@@ -388949,10 +389232,10 @@ var linkCommand = {
388949
389232
  // packages/cli/src/commands/extensions/new.ts
388950
389233
  init_esbuild_shims();
388951
389234
  import { access as access7, cp as cp2, mkdir as mkdir7, readdir as readdir9, writeFile as writeFile9 } from "node:fs/promises";
388952
- import { join as join39, dirname as dirname24, basename as basename19 } from "node:path";
388953
- import { fileURLToPath as fileURLToPath10 } from "node:url";
388954
- var __filename3 = fileURLToPath10(import.meta.url);
388955
- var __dirname5 = dirname24(__filename3);
389235
+ import { join as join39, dirname as dirname25, basename as basename19 } from "node:path";
389236
+ import { fileURLToPath as fileURLToPath11 } from "node:url";
389237
+ var __filename3 = fileURLToPath11(import.meta.url);
389238
+ var __dirname5 = dirname25(__filename3);
388956
389239
  var EXAMPLES_PATH = join39(__dirname5, "examples");
388957
389240
  async function pathExists(path128) {
388958
389241
  try {
@@ -389366,9 +389649,9 @@ import path90 from "node:path";
389366
389649
  init_esbuild_shims();
389367
389650
  import process28 from "node:process";
389368
389651
  import fsPromises3 from "node:fs/promises";
389369
- import { fileURLToPath as fileURLToPath11 } from "node:url";
389652
+ import { fileURLToPath as fileURLToPath12 } from "node:url";
389370
389653
  import path88 from "node:path";
389371
- var toPath = /* @__PURE__ */ __name((urlOrPath) => urlOrPath instanceof URL ? fileURLToPath11(urlOrPath) : urlOrPath, "toPath");
389654
+ var toPath = /* @__PURE__ */ __name((urlOrPath) => urlOrPath instanceof URL ? fileURLToPath12(urlOrPath) : urlOrPath, "toPath");
389372
389655
  async function findUp(name3, {
389373
389656
  cwd: cwd7 = process28.cwd(),
389374
389657
  type = "file",
@@ -389530,9 +389813,9 @@ var import_normalize_package_data = __toESM(require_normalize2(), 1);
389530
389813
 
389531
389814
  // node_modules/unicorn-magic/node.js
389532
389815
  init_esbuild_shims();
389533
- import { fileURLToPath as fileURLToPath12 } from "node:url";
389816
+ import { fileURLToPath as fileURLToPath13 } from "node:url";
389534
389817
  function toPath2(urlOrPath) {
389535
- return urlOrPath instanceof URL ? fileURLToPath12(urlOrPath) : urlOrPath;
389818
+ return urlOrPath instanceof URL ? fileURLToPath13(urlOrPath) : urlOrPath;
389536
389819
  }
389537
389820
  __name(toPath2, "toPath");
389538
389821
 
@@ -389565,9 +389848,9 @@ async function readPackageUp(options2) {
389565
389848
  __name(readPackageUp, "readPackageUp");
389566
389849
 
389567
389850
  // packages/cli/src/utils/package.ts
389568
- import { fileURLToPath as fileURLToPath13 } from "node:url";
389851
+ import { fileURLToPath as fileURLToPath14 } from "node:url";
389569
389852
  import path91 from "node:path";
389570
- var __filename4 = fileURLToPath13(import.meta.url);
389853
+ var __filename4 = fileURLToPath14(import.meta.url);
389571
389854
  var __dirname6 = path91.dirname(__filename4);
389572
389855
  var packageJson;
389573
389856
  async function getPackageJson() {
@@ -389586,7 +389869,7 @@ __name(getPackageJson, "getPackageJson");
389586
389869
  // packages/cli/src/utils/version.ts
389587
389870
  async function getCliVersion() {
389588
389871
  const pkgJson = await getPackageJson();
389589
- return "0.12.3";
389872
+ return "0.12.4-nightly.20260316.110fcd7b7";
389590
389873
  }
389591
389874
  __name(getCliVersion, "getCliVersion");
389592
389875
 
@@ -397149,7 +397432,7 @@ var formatDuration = /* @__PURE__ */ __name((milliseconds) => {
397149
397432
 
397150
397433
  // packages/cli/src/generated/git-commit.ts
397151
397434
  init_esbuild_shims();
397152
- var GIT_COMMIT_INFO = "f1ee4638";
397435
+ var GIT_COMMIT_INFO = "6620ce73e";
397153
397436
 
397154
397437
  // packages/cli/src/utils/systemInfo.ts
397155
397438
  async function getNpmVersion() {
@@ -399744,30 +400027,40 @@ async function exportJsonlAction(context2) {
399744
400027
  __name(exportJsonlAction, "exportJsonlAction");
399745
400028
  var exportCommand = {
399746
400029
  name: "export",
399747
- description: "Export current session message history to a file",
400030
+ get description() {
400031
+ return t4("Export current session message history to a file");
400032
+ },
399748
400033
  kind: "built-in" /* BUILT_IN */,
399749
400034
  subCommands: [
399750
400035
  {
399751
400036
  name: "html",
399752
- description: "Export session to HTML format",
400037
+ get description() {
400038
+ return t4("Export session to HTML format");
400039
+ },
399753
400040
  kind: "built-in" /* BUILT_IN */,
399754
400041
  action: exportHtmlAction
399755
400042
  },
399756
400043
  {
399757
400044
  name: "md",
399758
- description: "Export session to markdown format",
400045
+ get description() {
400046
+ return t4("Export session to markdown format");
400047
+ },
399759
400048
  kind: "built-in" /* BUILT_IN */,
399760
400049
  action: exportMarkdownAction
399761
400050
  },
399762
400051
  {
399763
400052
  name: "json",
399764
- description: "Export session to JSON format",
400053
+ get description() {
400054
+ return t4("Export session to JSON format");
400055
+ },
399765
400056
  kind: "built-in" /* BUILT_IN */,
399766
400057
  action: exportJsonAction
399767
400058
  },
399768
400059
  {
399769
400060
  name: "jsonl",
399770
- description: "Export session to JSONL format (one message per line)",
400061
+ get description() {
400062
+ return t4("Export session to JSONL format (one message per line)");
400063
+ },
399771
400064
  kind: "built-in" /* BUILT_IN */,
399772
400065
  action: exportJsonlAction
399773
400066
  }
@@ -401381,7 +401674,11 @@ var restoreCommand = /* @__PURE__ */ __name((config2) => {
401381
401674
  }
401382
401675
  return {
401383
401676
  name: "restore",
401384
- description: "Restore a tool call. This will reset the conversation and file history to the state it was in when the tool call was suggested",
401677
+ get description() {
401678
+ return t4(
401679
+ "Restore a tool call. This will reset the conversation and file history to the state it was in when the tool call was suggested"
401680
+ );
401681
+ },
401385
401682
  kind: "built-in" /* BUILT_IN */,
401386
401683
  action: restoreAction,
401387
401684
  completion: completion2
@@ -403031,7 +403328,7 @@ ${commonData}`;
403031
403328
  return result;
403032
403329
  } catch (error40) {
403033
403330
  logger3.error("Failed to generate insight:", error40);
403034
- throw error40;
403331
+ return void 0;
403035
403332
  }
403036
403333
  }, "generate");
403037
403334
  const schemaImpressiveWorkflows = {
@@ -403854,6 +404151,49 @@ var BuiltinCommandLoader = class {
403854
404151
  }
403855
404152
  };
403856
404153
 
404154
+ // packages/cli/src/services/BundledSkillLoader.ts
404155
+ init_esbuild_shims();
404156
+ var debugLogger94 = createDebugLogger("BUNDLED_SKILL_LOADER");
404157
+ var BundledSkillLoader = class {
404158
+ constructor(config2) {
404159
+ this.config = config2;
404160
+ }
404161
+ static {
404162
+ __name(this, "BundledSkillLoader");
404163
+ }
404164
+ async loadCommands(_signal) {
404165
+ const skillManager = this.config?.getSkillManager();
404166
+ if (!skillManager) {
404167
+ debugLogger94.debug("SkillManager not available, skipping bundled skills");
404168
+ return [];
404169
+ }
404170
+ try {
404171
+ const skills = await skillManager.listSkills({ level: "bundled" });
404172
+ debugLogger94.debug(
404173
+ `Loaded ${skills.length} bundled skill(s) as slash commands`
404174
+ );
404175
+ return skills.map((skill) => ({
404176
+ name: skill.name,
404177
+ description: skill.description,
404178
+ kind: "skill" /* SKILL */,
404179
+ action: /* @__PURE__ */ __name(async (context2, _args) => {
404180
+ const content = context2.invocation?.args ? appendToLastTextPart(
404181
+ [{ text: skill.body }],
404182
+ context2.invocation.raw
404183
+ ) : [{ text: skill.body }];
404184
+ return {
404185
+ type: "submit_prompt",
404186
+ content
404187
+ };
404188
+ }, "action")
404189
+ }));
404190
+ } catch (error40) {
404191
+ debugLogger94.error("Failed to load bundled skills:", error40);
404192
+ return [];
404193
+ }
404194
+ }
404195
+ };
404196
+
403857
404197
  // packages/cli/src/services/FileCommandLoader.ts
403858
404198
  init_esbuild_shims();
403859
404199
  var import_toml2 = __toESM(require_toml(), 1);
@@ -404130,7 +404470,7 @@ var ShellProcessor = class {
404130
404470
 
404131
404471
  // packages/cli/src/services/prompt-processors/atFileProcessor.ts
404132
404472
  init_esbuild_shims();
404133
- var debugLogger94 = createDebugLogger("AT_FILE_PROCESSOR");
404473
+ var debugLogger95 = createDebugLogger("AT_FILE_PROCESSOR");
404134
404474
  var AtFileProcessor = class {
404135
404475
  constructor(commandName) {
404136
404476
  this.commandName = commandName;
@@ -404176,7 +404516,7 @@ var AtFileProcessor = class {
404176
404516
  } catch (error40) {
404177
404517
  const message = error40 instanceof Error ? error40.message : String(error40);
404178
404518
  const uiMessage = `Failed to inject content for '@{${pathStr}}': ${message}`;
404179
- debugLogger94.error(
404519
+ debugLogger95.error(
404180
404520
  `[AtFileProcessor] ${uiMessage}. Leaving placeholder in prompt.`
404181
404521
  );
404182
404522
  context2.ui.addItem(
@@ -404201,7 +404541,7 @@ var AtFileProcessor = class {
404201
404541
  };
404202
404542
 
404203
404543
  // packages/cli/src/services/command-factory.ts
404204
- var debugLogger95 = createDebugLogger("COMMAND_FACTORY");
404544
+ var debugLogger96 = createDebugLogger("COMMAND_FACTORY");
404205
404545
  function createSlashCommandFromDefinition(filePath, baseDir, definition, extensionName, fileExtension) {
404206
404546
  const relativePathWithExt = path105.relative(baseDir, filePath);
404207
404547
  const relativePath = relativePathWithExt.substring(
@@ -404238,7 +404578,7 @@ function createSlashCommandFromDefinition(filePath, baseDir, definition, extensi
404238
404578
  extensionName,
404239
404579
  action: /* @__PURE__ */ __name(async (context2, _args) => {
404240
404580
  if (!context2.invocation) {
404241
- debugLogger95.error(
404581
+ debugLogger96.error(
404242
404582
  `[FileCommandLoader] Critical error: Command '${baseCommandName}' was executed without invocation context.`
404243
404583
  );
404244
404584
  return {
@@ -404276,7 +404616,7 @@ function createSlashCommandFromDefinition(filePath, baseDir, definition, extensi
404276
404616
  __name(createSlashCommandFromDefinition, "createSlashCommandFromDefinition");
404277
404617
 
404278
404618
  // packages/cli/src/services/FileCommandLoader.ts
404279
- var debugLogger96 = createDebugLogger("FILE_COMMAND_LOADER");
404619
+ var debugLogger97 = createDebugLogger("FILE_COMMAND_LOADER");
404280
404620
  var TomlCommandDefSchema = external_exports.object({
404281
404621
  prompt: external_exports.string({
404282
404622
  required_error: "The 'prompt' field is required.",
@@ -404350,7 +404690,7 @@ var FileCommandLoader = class {
404350
404690
  const isEnoent = error40.code === "ENOENT";
404351
404691
  const isAbortError3 = error40 instanceof Error && error40.name === "AbortError";
404352
404692
  if (!isEnoent && !isAbortError3) {
404353
- debugLogger96.error(
404693
+ debugLogger97.error(
404354
404694
  `[FileCommandLoader] Error loading commands from ${dirInfo.path}:`,
404355
404695
  error40
404356
404696
  );
@@ -404407,7 +404747,7 @@ var FileCommandLoader = class {
404407
404747
  }
404408
404748
  }
404409
404749
  } catch (error40) {
404410
- debugLogger96.warn(
404750
+ debugLogger97.warn(
404411
404751
  `Failed to read extension config for ${ext2.name}:`,
404412
404752
  error40
404413
404753
  );
@@ -404433,7 +404773,7 @@ var FileCommandLoader = class {
404433
404773
  try {
404434
404774
  fileContent = await fs96.readFile(filePath, "utf-8");
404435
404775
  } catch (error40) {
404436
- debugLogger96.error(
404776
+ debugLogger97.error(
404437
404777
  `[FileCommandLoader] Failed to read file ${filePath}:`,
404438
404778
  error40 instanceof Error ? error40.message : String(error40)
404439
404779
  );
@@ -404443,7 +404783,7 @@ var FileCommandLoader = class {
404443
404783
  try {
404444
404784
  parsed = import_toml2.default.parse(fileContent);
404445
404785
  } catch (error40) {
404446
- debugLogger96.error(
404786
+ debugLogger97.error(
404447
404787
  `[FileCommandLoader] Failed to parse TOML file ${filePath}:`,
404448
404788
  error40 instanceof Error ? error40.message : String(error40)
404449
404789
  );
@@ -404451,7 +404791,7 @@ var FileCommandLoader = class {
404451
404791
  }
404452
404792
  const validationResult = TomlCommandDefSchema.safeParse(parsed);
404453
404793
  if (!validationResult.success) {
404454
- debugLogger96.error(
404794
+ debugLogger97.error(
404455
404795
  `[FileCommandLoader] Skipping invalid command file: ${filePath}. Validation errors:`,
404456
404796
  validationResult.error.flatten()
404457
404797
  );
@@ -404478,7 +404818,7 @@ var FileCommandLoader = class {
404478
404818
  try {
404479
404819
  fileContent = await fs96.readFile(filePath, "utf-8");
404480
404820
  } catch (error40) {
404481
- debugLogger96.error(
404821
+ debugLogger97.error(
404482
404822
  `[FileCommandLoader] Failed to read file ${filePath}:`,
404483
404823
  error40 instanceof Error ? error40.message : String(error40)
404484
404824
  );
@@ -404488,7 +404828,7 @@ var FileCommandLoader = class {
404488
404828
  try {
404489
404829
  parsed = parseMarkdownCommand(fileContent);
404490
404830
  } catch (error40) {
404491
- debugLogger96.error(
404831
+ debugLogger97.error(
404492
404832
  `[FileCommandLoader] Failed to parse Markdown file ${filePath}:`,
404493
404833
  error40 instanceof Error ? error40.message : String(error40)
404494
404834
  );
@@ -404496,7 +404836,7 @@ var FileCommandLoader = class {
404496
404836
  }
404497
404837
  const validationResult = MarkdownCommandDefSchema.safeParse(parsed);
404498
404838
  if (!validationResult.success) {
404499
- debugLogger96.error(
404839
+ debugLogger97.error(
404500
404840
  `[FileCommandLoader] Skipping invalid command file: ${filePath}. Validation errors:`,
404501
404841
  validationResult.error.flatten()
404502
404842
  );
@@ -404546,7 +404886,7 @@ function createNonInteractiveUI() {
404546
404886
  __name(createNonInteractiveUI, "createNonInteractiveUI");
404547
404887
 
404548
404888
  // packages/cli/src/nonInteractiveCliCommands.ts
404549
- var debugLogger97 = createDebugLogger("NON_INTERACTIVE_COMMANDS");
404889
+ var debugLogger98 = createDebugLogger("NON_INTERACTIVE_COMMANDS");
404550
404890
  var ALLOWED_BUILTIN_COMMANDS_NON_INTERACTIVE = [
404551
404891
  "init",
404552
404892
  "summary",
@@ -404625,7 +404965,7 @@ function handleCommandResult(result) {
404625
404965
  __name(handleCommandResult, "handleCommandResult");
404626
404966
  function filterCommandsForNonInteractive(commands, allowedBuiltinCommandNames) {
404627
404967
  return commands.filter((cmd) => {
404628
- if (cmd.kind === "file" /* FILE */) {
404968
+ if (cmd.kind === "file" /* FILE */ || cmd.kind === "skill" /* SKILL */) {
404629
404969
  return true;
404630
404970
  }
404631
404971
  if (cmd.kind === "built-in" /* BUILT_IN */) {
@@ -404648,6 +404988,7 @@ var handleSlashCommand = /* @__PURE__ */ __name(async (rawQuery, abortController
404648
404988
  const allowedBuiltinSet = new Set(allowedBuiltinCommandNames ?? []);
404649
404989
  const allLoaders = [
404650
404990
  new BuiltinCommandLoader(config2),
404991
+ new BundledSkillLoader(config2),
404651
404992
  new FileCommandLoader(config2)
404652
404993
  ];
404653
404994
  const commandService = await CommandService.create(
@@ -404725,7 +405066,11 @@ var getAvailableCommands = /* @__PURE__ */ __name(async (config2, abortSignal, a
404725
405066
  ]) => {
404726
405067
  try {
404727
405068
  const allowedBuiltinSet = new Set(allowedBuiltinCommandNames ?? []);
404728
- const loaders = allowedBuiltinSet.size > 0 ? [new BuiltinCommandLoader(config2), new FileCommandLoader(config2)] : [new FileCommandLoader(config2)];
405069
+ const loaders = allowedBuiltinSet.size > 0 ? [
405070
+ new BuiltinCommandLoader(config2),
405071
+ new BundledSkillLoader(config2),
405072
+ new FileCommandLoader(config2)
405073
+ ] : [new BundledSkillLoader(config2), new FileCommandLoader(config2)];
404729
405074
  const commandService = await CommandService.create(loaders, abortSignal);
404730
405075
  const commands = commandService.getCommands();
404731
405076
  const filteredCommands = filterCommandsForNonInteractive(
@@ -404734,13 +405079,13 @@ var getAvailableCommands = /* @__PURE__ */ __name(async (config2, abortSignal, a
404734
405079
  );
404735
405080
  return filteredCommands.filter((cmd) => !cmd.hidden);
404736
405081
  } catch (error40) {
404737
- debugLogger97.error("Error loading available commands:", error40);
405082
+ debugLogger98.error("Error loading available commands:", error40);
404738
405083
  return [];
404739
405084
  }
404740
405085
  }, "getAvailableCommands");
404741
405086
 
404742
405087
  // packages/cli/src/utils/nonInteractiveHelpers.ts
404743
- var debugLogger98 = createDebugLogger("NON_INTERACTIVE");
405088
+ var debugLogger99 = createDebugLogger("NON_INTERACTIVE");
404744
405089
  function normalizePartList(parts) {
404745
405090
  if (!parts) {
404746
405091
  return [];
@@ -404813,7 +405158,7 @@ async function loadSlashCommandNames(config2, allowedBuiltinCommandNames) {
404813
405158
  );
404814
405159
  return commands.map((cmd) => cmd.name).sort();
404815
405160
  } catch (error40) {
404816
- debugLogger98.error(
405161
+ debugLogger99.error(
404817
405162
  "[buildSystemMessage] Failed to load slash commands:",
404818
405163
  error40
404819
405164
  );
@@ -404841,7 +405186,7 @@ async function buildSystemMessage(config2, sessionId, permissionMode, allowedBui
404841
405186
  const subagents = await subagentManager.listSubagents();
404842
405187
  agentNames = subagents.map((subagent) => subagent.name);
404843
405188
  } catch (error40) {
404844
- debugLogger98.error("[buildSystemMessage] Failed to load subagents:", error40);
405189
+ debugLogger99.error("[buildSystemMessage] Failed to load subagents:", error40);
404845
405190
  }
404846
405191
  const systemMessage = {
404847
405192
  type: "system",
@@ -406424,7 +406769,7 @@ ${messages.join("\n")}`;
406424
406769
  __name(handleAtCommand, "handleAtCommand");
406425
406770
 
406426
406771
  // packages/cli/src/nonInteractiveCli.ts
406427
- var debugLogger99 = createDebugLogger("NON_INTERACTIVE_CLI");
406772
+ var debugLogger100 = createDebugLogger("NON_INTERACTIVE_CLI");
406428
406773
  async function emitNonInteractiveFinalMessage(params) {
406429
406774
  const { message, isError, adapter, config: config2 } = params;
406430
406775
  adapter.startAssistantMessage();
@@ -406477,7 +406822,7 @@ async function runNonInteractive(config2, settings, input, prompt_id, options2 =
406477
406822
  const geminiClient = config2.getGeminiClient();
406478
406823
  const abortController = options2.abortController ?? new AbortController();
406479
406824
  const shutdownHandler = /* @__PURE__ */ __name(() => {
406480
- debugLogger99.debug("[runNonInteractive] Shutdown signal received");
406825
+ debugLogger100.debug("[runNonInteractive] Shutdown signal received");
406481
406826
  abortController.abort();
406482
406827
  }, "shutdownHandler");
406483
406828
  try {
@@ -406903,7 +407248,7 @@ var BaseController = class {
406903
407248
  };
406904
407249
 
406905
407250
  // packages/cli/src/nonInteractive/control/controllers/systemController.ts
406906
- var debugLogger100 = createDebugLogger("SYSTEM_CONTROLLER");
407251
+ var debugLogger101 = createDebugLogger("SYSTEM_CONTROLLER");
406907
407252
  var SystemController = class extends BaseController {
406908
407253
  static {
406909
407254
  __name(this, "SystemController");
@@ -406997,11 +407342,11 @@ var SystemController = class extends BaseController {
406997
407342
  if (sdkServerCount > 0) {
406998
407343
  try {
406999
407344
  this.context.config.addMcpServers(sdkServers);
407000
- debugLogger100.debug(
407345
+ debugLogger101.debug(
407001
407346
  `[SystemController] Added ${sdkServerCount} SDK MCP servers to config`
407002
407347
  );
407003
407348
  } catch (error40) {
407004
- debugLogger100.error(
407349
+ debugLogger101.error(
407005
407350
  "[SystemController] Failed to add SDK MCP servers:",
407006
407351
  error40
407007
407352
  );
@@ -407023,11 +407368,11 @@ var SystemController = class extends BaseController {
407023
407368
  if (externalCount > 0) {
407024
407369
  try {
407025
407370
  this.context.config.addMcpServers(externalServers);
407026
- debugLogger100.debug(
407371
+ debugLogger101.debug(
407027
407372
  `[SystemController] Added ${externalCount} external MCP servers to config`
407028
407373
  );
407029
407374
  } catch (error40) {
407030
- debugLogger100.error(
407375
+ debugLogger101.error(
407031
407376
  "[SystemController] Failed to add external MCP servers:",
407032
407377
  error40
407033
407378
  );
@@ -407037,18 +407382,18 @@ var SystemController = class extends BaseController {
407037
407382
  if (payload.agents && Array.isArray(payload.agents)) {
407038
407383
  try {
407039
407384
  this.context.config.setSessionSubagents(payload.agents);
407040
- debugLogger100.debug(
407385
+ debugLogger101.debug(
407041
407386
  `[SystemController] Added ${payload.agents.length} session subagents to config`
407042
407387
  );
407043
407388
  } catch (error40) {
407044
- debugLogger100.error(
407389
+ debugLogger101.error(
407045
407390
  "[SystemController] Failed to add session subagents:",
407046
407391
  error40
407047
407392
  );
407048
407393
  }
407049
407394
  }
407050
407395
  const capabilities = this.buildControlCapabilities();
407051
- debugLogger100.debug(
407396
+ debugLogger101.debug(
407052
407397
  `[SystemController] Initialized with ${this.context.sdkMcpServers.size} SDK MCP servers`
407053
407398
  );
407054
407399
  return {
@@ -407077,7 +407422,7 @@ var SystemController = class extends BaseController {
407077
407422
  }
407078
407423
  normalizeMcpServerConfig(serverName, config2) {
407079
407424
  if (!config2 || typeof config2 !== "object") {
407080
- debugLogger100.warn(
407425
+ debugLogger101.warn(
407081
407426
  `[SystemController] Ignoring invalid MCP server config for '${serverName}'`
407082
407427
  );
407083
407428
  return null;
@@ -407117,7 +407462,7 @@ var SystemController = class extends BaseController {
407117
407462
  case AuthProviderType.SERVICE_ACCOUNT_IMPERSONATION:
407118
407463
  return value;
407119
407464
  default:
407120
- debugLogger100.warn(
407465
+ debugLogger101.warn(
407121
407466
  `[SystemController] Unsupported authProviderType '${value}', skipping`
407122
407467
  );
407123
407468
  return void 0;
@@ -407150,9 +407495,9 @@ var SystemController = class extends BaseController {
407150
407495
  this.context.onInterrupt();
407151
407496
  }
407152
407497
  if (this.context.abortSignal && !this.context.abortSignal.aborted) {
407153
- debugLogger100.debug("[SystemController] Interrupt signal triggered");
407498
+ debugLogger101.debug("[SystemController] Interrupt signal triggered");
407154
407499
  }
407155
- debugLogger100.debug("[SystemController] Interrupt handled");
407500
+ debugLogger101.debug("[SystemController] Interrupt handled");
407156
407501
  return { subtype: "interrupt" };
407157
407502
  }
407158
407503
  /**
@@ -407170,14 +407515,14 @@ var SystemController = class extends BaseController {
407170
407515
  }
407171
407516
  try {
407172
407517
  await this.context.config.setModel(model);
407173
- debugLogger100.info(`[SystemController] Model switched to: ${model}`);
407518
+ debugLogger101.info(`[SystemController] Model switched to: ${model}`);
407174
407519
  return {
407175
407520
  subtype: "set_model",
407176
407521
  model
407177
407522
  };
407178
407523
  } catch (error40) {
407179
407524
  const errorMessage = error40 instanceof Error ? error40.message : "Failed to set model";
407180
- debugLogger100.error(
407525
+ debugLogger101.error(
407181
407526
  `[SystemController] Failed to set model ${model}:`,
407182
407527
  error40
407183
407528
  );
@@ -407219,7 +407564,7 @@ var SystemController = class extends BaseController {
407219
407564
  if (signal.aborted) {
407220
407565
  return [];
407221
407566
  }
407222
- debugLogger100.error(
407567
+ debugLogger101.error(
407223
407568
  "[SystemController] Failed to load slash commands:",
407224
407569
  error40
407225
407570
  );
@@ -407672,7 +408017,7 @@ var SdkMcpController = class extends BaseController {
407672
408017
  };
407673
408018
 
407674
408019
  // packages/cli/src/nonInteractive/control/ControlDispatcher.ts
407675
- var debugLogger101 = createDebugLogger("CONTROL_DISPATCHER");
408020
+ var debugLogger102 = createDebugLogger("CONTROL_DISPATCHER");
407676
408021
  var ControlDispatcher = class {
407677
408022
  static {
407678
408023
  __name(this, "ControlDispatcher");
@@ -407731,7 +408076,7 @@ var ControlDispatcher = class {
407731
408076
  const requestId = responsePayload.request_id;
407732
408077
  const pending = this.pendingOutgoingRequests.get(requestId);
407733
408078
  if (!pending) {
407734
- debugLogger101.debug(
408079
+ debugLogger102.debug(
407735
408080
  `[ControlDispatcher] No pending outgoing request for: ${requestId}`
407736
408081
  );
407737
408082
  return;
@@ -407760,7 +408105,7 @@ var ControlDispatcher = class {
407760
408105
  pending.abortController.abort();
407761
408106
  this.deregisterIncomingRequest(requestId);
407762
408107
  this.sendErrorResponse(requestId, "Request cancelled");
407763
- debugLogger101.debug(
408108
+ debugLogger102.debug(
407764
408109
  `[ControlDispatcher] Cancelled incoming request: ${requestId}`
407765
408110
  );
407766
408111
  }
@@ -407774,7 +408119,7 @@ var ControlDispatcher = class {
407774
408119
  this.sendErrorResponse(id, "All requests cancelled");
407775
408120
  }
407776
408121
  }
407777
- debugLogger101.debug(
408122
+ debugLogger102.debug(
407778
408123
  `[ControlDispatcher] Cancelled all ${requestIds.length} pending incoming requests`
407779
408124
  );
407780
408125
  }
@@ -407791,7 +408136,7 @@ var ControlDispatcher = class {
407791
408136
  this.context.inputClosed = true;
407792
408137
  const requestIds = Array.from(this.pendingOutgoingRequests.keys());
407793
408138
  if (this.context.debugMode) {
407794
- debugLogger101.debug(
408139
+ debugLogger102.debug(
407795
408140
  `[ControlDispatcher] Input closed, rejecting ${requestIds.length} pending outgoing requests`
407796
408141
  );
407797
408142
  }
@@ -407807,7 +408152,7 @@ var ControlDispatcher = class {
407807
408152
  * Stops all pending requests and cleans up all controllers
407808
408153
  */
407809
408154
  shutdown() {
407810
- debugLogger101.debug("[ControlDispatcher] Shutting down");
408155
+ debugLogger102.debug("[ControlDispatcher] Shutting down");
407811
408156
  if (this.abortHandler) {
407812
408157
  this.context.abortSignal.removeEventListener("abort", this.abortHandler);
407813
408158
  this.abortHandler = null;
@@ -407894,7 +408239,7 @@ var ControlDispatcher = class {
407894
408239
  const startTime = Date.now();
407895
408240
  while (this.pendingIncomingRequests.size > 0) {
407896
408241
  if (Date.now() - startTime > timeoutMs) {
407897
- debugLogger101.warn(
408242
+ debugLogger102.warn(
407898
408243
  `[ControlDispatcher] Timeout waiting for ${this.pendingIncomingRequests.size} pending incoming requests`
407899
408244
  );
407900
408245
  break;
@@ -407902,7 +408247,7 @@ var ControlDispatcher = class {
407902
408247
  await new Promise((resolve30) => setTimeout(resolve30, pollIntervalMs));
407903
408248
  }
407904
408249
  if (this.pendingIncomingRequests.size === 0) {
407905
- debugLogger101.debug("[ControlDispatcher] All incoming requests completed");
408250
+ debugLogger102.debug("[ControlDispatcher] All incoming requests completed");
407906
408251
  }
407907
408252
  }
407908
408253
  /**
@@ -408123,7 +408468,7 @@ function isControlCancel(msg) {
408123
408468
  __name(isControlCancel, "isControlCancel");
408124
408469
 
408125
408470
  // packages/cli/src/nonInteractive/session.ts
408126
- var debugLogger102 = createDebugLogger("NON_INTERACTIVE_SESSION");
408471
+ var debugLogger103 = createDebugLogger("NON_INTERACTIVE_SESSION");
408127
408472
  var Session2 = class {
408128
408473
  static {
408129
408474
  __name(this, "Session");
@@ -408186,12 +408531,12 @@ var Session2 = class {
408186
408531
  if (this.configInitialized) {
408187
408532
  return;
408188
408533
  }
408189
- debugLogger102.debug("[Session] Initializing config");
408534
+ debugLogger103.debug("[Session] Initializing config");
408190
408535
  try {
408191
408536
  await this.config.initialize(options2);
408192
408537
  this.configInitialized = true;
408193
408538
  } catch (error40) {
408194
- debugLogger102.error("[Session] Failed to initialize config:", error40);
408539
+ debugLogger103.error("[Session] Failed to initialize config:", error40);
408195
408540
  throw error40;
408196
408541
  }
408197
408542
  }
@@ -408200,7 +408545,7 @@ var Session2 = class {
408200
408545
  */
408201
408546
  completeInitialization() {
408202
408547
  if (this.initializationResolve) {
408203
- debugLogger102.debug("[Session] Initialization complete");
408548
+ debugLogger103.debug("[Session] Initialization complete");
408204
408549
  this.initializationResolve();
408205
408550
  this.initializationResolve = null;
408206
408551
  this.initializationReject = null;
@@ -408211,7 +408556,7 @@ var Session2 = class {
408211
408556
  */
408212
408557
  failInitialization(error40) {
408213
408558
  if (this.initializationReject) {
408214
- debugLogger102.error("[Session] Initialization failed:", error40);
408559
+ debugLogger103.error("[Session] Initialization failed:", error40);
408215
408560
  this.initializationReject(error40);
408216
408561
  this.initializationResolve = null;
408217
408562
  this.initializationReject = null;
@@ -408270,7 +408615,7 @@ var Session2 = class {
408270
408615
  void this.initializeSdkMode(request4);
408271
408616
  return;
408272
408617
  }
408273
- debugLogger102.debug(
408618
+ debugLogger103.debug(
408274
408619
  "[Session] Ignoring non-initialize control request during initialization"
408275
408620
  );
408276
408621
  return;
@@ -408294,7 +408639,7 @@ var Session2 = class {
408294
408639
  await this.ensureConfigInitialized({ sendSdkMcpMessage });
408295
408640
  this.completeInitialization();
408296
408641
  } catch (error40) {
408297
- debugLogger102.error("[Session] SDK mode initialization failed:", error40);
408642
+ debugLogger103.error("[Session] SDK mode initialization failed:", error40);
408298
408643
  this.failInitialization(
408299
408644
  error40 instanceof Error ? error40 : new Error(String(error40))
408300
408645
  );
@@ -408311,7 +408656,7 @@ var Session2 = class {
408311
408656
  this.completeInitialization();
408312
408657
  this.enqueueUserMessage(userMessage);
408313
408658
  } catch (error40) {
408314
- debugLogger102.error("[Session] Direct mode initialization failed:", error40);
408659
+ debugLogger103.error("[Session] Direct mode initialization failed:", error40);
408315
408660
  this.failInitialization(
408316
408661
  error40 instanceof Error ? error40 : new Error(String(error40))
408317
408662
  );
@@ -408324,11 +408669,11 @@ var Session2 = class {
408324
408669
  handleControlRequestAsync(request4) {
408325
408670
  const dispatcher = this.getDispatcher();
408326
408671
  if (!dispatcher) {
408327
- debugLogger102.warn("[Session] Control system not enabled");
408672
+ debugLogger103.warn("[Session] Control system not enabled");
408328
408673
  return;
408329
408674
  }
408330
408675
  void dispatcher.dispatch(request4).catch((error40) => {
408331
- debugLogger102.error("[Session] Control request dispatch error:", error40);
408676
+ debugLogger103.error("[Session] Control request dispatch error:", error40);
408332
408677
  });
408333
408678
  }
408334
408679
  /**
@@ -408352,7 +408697,7 @@ var Session2 = class {
408352
408697
  async processUserMessage(userMessage) {
408353
408698
  const input = extractUserMessageText(userMessage);
408354
408699
  if (!input) {
408355
- debugLogger102.debug("[Session] No text content in user message");
408700
+ debugLogger103.debug("[Session] No text content in user message");
408356
408701
  return;
408357
408702
  }
408358
408703
  await this.waitForInitialization();
@@ -408370,7 +408715,7 @@ var Session2 = class {
408370
408715
  }
408371
408716
  );
408372
408717
  } catch (error40) {
408373
- debugLogger102.error("[Session] Query execution error:", error40);
408718
+ debugLogger103.error("[Session] Query execution error:", error40);
408374
408719
  }
408375
408720
  }
408376
408721
  async processUserMessageQueue() {
@@ -408382,7 +408727,7 @@ var Session2 = class {
408382
408727
  try {
408383
408728
  await this.processUserMessage(userMessage);
408384
408729
  } catch (error40) {
408385
- debugLogger102.error("[Session] Error processing user message:", error40);
408730
+ debugLogger103.error("[Session] Error processing user message:", error40);
408386
408731
  this.emitErrorResult(error40);
408387
408732
  }
408388
408733
  }
@@ -408414,12 +408759,12 @@ var Session2 = class {
408414
408759
  });
408415
408760
  }
408416
408761
  handleInterrupt() {
408417
- debugLogger102.info("[Session] Interrupt requested");
408762
+ debugLogger103.info("[Session] Interrupt requested");
408418
408763
  this.abortController.abort();
408419
408764
  }
408420
408765
  setupSignalHandlers() {
408421
408766
  this.shutdownHandler = () => {
408422
- debugLogger102.info("[Session] Shutdown signal received");
408767
+ debugLogger103.info("[Session] Shutdown signal received");
408423
408768
  this.isShuttingDown = true;
408424
408769
  this.abortController.abort();
408425
408770
  };
@@ -408433,7 +408778,7 @@ var Session2 = class {
408433
408778
  try {
408434
408779
  await this.waitForInitialization();
408435
408780
  } catch (error40) {
408436
- debugLogger102.error(
408781
+ debugLogger103.error(
408437
408782
  "[Session] Initialization error during shutdown:",
408438
408783
  error40
408439
408784
  );
@@ -408441,23 +408786,23 @@ var Session2 = class {
408441
408786
  if (this.dispatcher) {
408442
408787
  const pendingCount = this.dispatcher.getPendingIncomingRequestCount();
408443
408788
  if (pendingCount > 0) {
408444
- debugLogger102.debug(
408789
+ debugLogger103.debug(
408445
408790
  `[Session] Waiting for ${pendingCount} pending control request handlers`
408446
408791
  );
408447
408792
  }
408448
408793
  await this.dispatcher.waitForPendingIncomingRequests();
408449
408794
  }
408450
408795
  while (this.processingPromise) {
408451
- debugLogger102.debug("[Session] Waiting for user message processing");
408796
+ debugLogger103.debug("[Session] Waiting for user message processing");
408452
408797
  try {
408453
408798
  await this.processingPromise;
408454
408799
  } catch (error40) {
408455
- debugLogger102.error("[Session] Error in user message processing:", error40);
408800
+ debugLogger103.error("[Session] Error in user message processing:", error40);
408456
408801
  }
408457
408802
  }
408458
408803
  }
408459
408804
  async shutdown() {
408460
- debugLogger102.debug("[Session] Shutting down");
408805
+ debugLogger103.debug("[Session] Shutting down");
408461
408806
  this.isShuttingDown = true;
408462
408807
  await this.waitForAllPendingWork();
408463
408808
  this.dispatcher?.shutdown();
@@ -408487,7 +408832,7 @@ var Session2 = class {
408487
408832
  */
408488
408833
  async run() {
408489
408834
  try {
408490
- debugLogger102.info("[Session] Starting session", this.sessionId);
408835
+ debugLogger103.info("[Session] Starting session", this.sessionId);
408491
408836
  if (this.initialPrompt !== null) {
408492
408837
  this.handleFirstMessage(this.initialPrompt);
408493
408838
  }
@@ -408511,7 +408856,7 @@ var Session2 = class {
408511
408856
  } else if (isCLIUserMessage(message)) {
408512
408857
  this.enqueueUserMessage(message);
408513
408858
  } else if (!isCLIAssistantMessage(message) && !isCLISystemMessage(message) && !isCLIResultMessage(message) && !isCLIPartialAssistantMessage(message)) {
408514
- debugLogger102.warn(
408859
+ debugLogger103.warn(
408515
408860
  "[Session] Unknown message type:",
408516
408861
  JSON.stringify(message, null, 2)
408517
408862
  );
@@ -408521,7 +408866,7 @@ var Session2 = class {
408521
408866
  }
408522
408867
  }
408523
408868
  } catch (streamError) {
408524
- debugLogger102.error("[Session] Stream reading error:", streamError);
408869
+ debugLogger103.error("[Session] Stream reading error:", streamError);
408525
408870
  throw streamError;
408526
408871
  }
408527
408872
  if (this.dispatcher) {
@@ -408530,7 +408875,7 @@ var Session2 = class {
408530
408875
  await this.waitForAllPendingWork();
408531
408876
  await this.shutdown();
408532
408877
  } catch (error40) {
408533
- debugLogger102.error("[Session] Error:", error40);
408878
+ debugLogger103.error("[Session] Error:", error40);
408534
408879
  await this.shutdown();
408535
408880
  throw error40;
408536
408881
  } finally {
@@ -422795,7 +423140,7 @@ var OverflowProvider = /* @__PURE__ */ __name(({
422795
423140
  // packages/cli/src/ui/components/shared/MaxSizedBox.tsx
422796
423141
  var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
422797
423142
  var enableDebugLog = false;
422798
- var debugLogger103 = createDebugLogger("MAX_SIZED_BOX");
423143
+ var debugLogger104 = createDebugLogger("MAX_SIZED_BOX");
422799
423144
  var MINIMUM_MAX_HEIGHT = 2;
422800
423145
  function setMaxSizedBoxDebugging(value) {
422801
423146
  enableDebugLog = value;
@@ -422804,7 +423149,7 @@ __name(setMaxSizedBoxDebugging, "setMaxSizedBoxDebugging");
422804
423149
  function debugReportError(message, element) {
422805
423150
  if (!enableDebugLog) return;
422806
423151
  if (!import_react35.default.isValidElement(element)) {
422807
- debugLogger103.error(
423152
+ debugLogger104.error(
422808
423153
  message,
422809
423154
  `Invalid element: '${String(element)}' typeof=${typeof element}`
422810
423155
  );
@@ -422817,9 +423162,9 @@ function debugReportError(message, element) {
422817
423162
  const lineNumber = elementWithSource._source?.lineNumber;
422818
423163
  sourceMessage = fileName ? `${fileName}:${lineNumber}` : "<Unknown file>";
422819
423164
  } catch (error40) {
422820
- debugLogger103.error("Error while trying to get file name:", error40);
423165
+ debugLogger104.error("Error while trying to get file name:", error40);
422821
423166
  }
422822
- debugLogger103.error(
423167
+ debugLogger104.error(
422823
423168
  message,
422824
423169
  `${String(element.type)}. Source: ${sourceMessage}`
422825
423170
  );
@@ -423172,7 +423517,7 @@ __name(layoutInkElementAsStyledText, "layoutInkElementAsStyledText");
423172
423517
  // packages/cli/src/ui/utils/CodeColorizer.tsx
423173
423518
  var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);
423174
423519
  var lowlight = createLowlight(grammars);
423175
- var debugLogger104 = createDebugLogger("CODE_COLORIZER");
423520
+ var debugLogger105 = createDebugLogger("CODE_COLORIZER");
423176
423521
  function renderHastNode(node, theme2, inheritedColor) {
423177
423522
  if (node.type === "text") {
423178
423523
  const color = inheritedColor || theme2.defaultColor;
@@ -423258,7 +423603,7 @@ function colorizeCode(code2, language, availableHeight, maxWidth, theme2, settin
423258
423603
  }
423259
423604
  );
423260
423605
  } catch (error40) {
423261
- debugLogger104.error(
423606
+ debugLogger105.error(
423262
423607
  `[colorizeCode] Error highlighting code for language "${language}":`,
423263
423608
  error40
423264
423609
  );
@@ -423294,7 +423639,7 @@ var STRIKETHROUGH_MARKER_LENGTH = 2;
423294
423639
  var INLINE_CODE_MARKER_LENGTH = 1;
423295
423640
  var UNDERLINE_TAG_START_LENGTH = 3;
423296
423641
  var UNDERLINE_TAG_END_LENGTH = 4;
423297
- var debugLogger105 = createDebugLogger("INLINE_MARKDOWN");
423642
+ var debugLogger106 = createDebugLogger("INLINE_MARKDOWN");
423298
423643
  var RenderInlineInternal = /* @__PURE__ */ __name(({
423299
423644
  text,
423300
423645
  textColor = theme.text.primary
@@ -423357,7 +423702,7 @@ var RenderInlineInternal = /* @__PURE__ */ __name(({
423357
423702
  renderedNode = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Text3, { color: theme.text.link, children: fullMatch }, key);
423358
423703
  }
423359
423704
  } catch (e4) {
423360
- debugLogger105.error("Error parsing inline markdown part:", fullMatch, e4);
423705
+ debugLogger106.error("Error parsing inline markdown part:", fullMatch, e4);
423361
423706
  renderedNode = null;
423362
423707
  }
423363
423708
  nodes.push(renderedNode ?? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Text3, { children: fullMatch }, key));
@@ -424699,7 +425044,7 @@ import { PassThrough as PassThrough5 } from "node:stream";
424699
425044
  init_esbuild_shims();
424700
425045
  import * as fs98 from "node:fs/promises";
424701
425046
  import * as path108 from "node:path";
424702
- var debugLogger106 = createDebugLogger("CLIPBOARD_UTILS");
425047
+ var debugLogger107 = createDebugLogger("CLIPBOARD_UTILS");
424703
425048
  var cachedClipboardModule = null;
424704
425049
  var clipboardLoadAttempted = false;
424705
425050
  async function getClipboardModule() {
@@ -424710,7 +425055,7 @@ async function getClipboardModule() {
424710
425055
  cachedClipboardModule = await import(modName);
424711
425056
  return cachedClipboardModule;
424712
425057
  } catch (_e2) {
424713
- debugLogger106.error(
425058
+ debugLogger107.error(
424714
425059
  "Failed to load @teddyzhu/clipboard native module. Clipboard image features will be unavailable."
424715
425060
  );
424716
425061
  return null;
@@ -424724,7 +425069,7 @@ async function clipboardHasImage() {
424724
425069
  const clipboard = new mod2.ClipboardManager();
424725
425070
  return clipboard.hasFormat("image");
424726
425071
  } catch (error40) {
424727
- debugLogger106.error("Error checking clipboard for image:", error40);
425072
+ debugLogger107.error("Error checking clipboard for image:", error40);
424728
425073
  return false;
424729
425074
  }
424730
425075
  }
@@ -424750,7 +425095,7 @@ async function saveClipboardImage(targetDir) {
424750
425095
  await fs98.writeFile(tempFilePath, buffer);
424751
425096
  return tempFilePath;
424752
425097
  } catch (error40) {
424753
- debugLogger106.error("Error saving clipboard image:", error40);
425098
+ debugLogger107.error("Error saving clipboard image:", error40);
424754
425099
  return null;
424755
425100
  }
424756
425101
  }
@@ -424873,7 +425218,7 @@ var KITTY_KEYPAD_FUNCTIONAL_KEYCODE_TO_NAME = {
424873
425218
  var KeypressContext = (0, import_react42.createContext)(
424874
425219
  void 0
424875
425220
  );
424876
- var debugLogger107 = createDebugLogger("KEYPRESS");
425221
+ var debugLogger108 = createDebugLogger("KEYPRESS");
424877
425222
  function useKeypressContext() {
424878
425223
  const context2 = (0, import_react42.useContext)(KeypressContext);
424879
425224
  if (!context2) {
@@ -425278,7 +425623,7 @@ function KeypressProvider({
425278
425623
  }
425279
425624
  if (key.ctrl && key.name === "c" || key.sequence === `${ESC2}${KITTY_CTRL_C}`) {
425280
425625
  if (kittySequenceBuffer && debugKeystrokeLogging) {
425281
- debugLogger107.debug(
425626
+ debugLogger108.debug(
425282
425627
  "[DEBUG] Kitty buffer cleared on Ctrl+C:",
425283
425628
  kittySequenceBuffer
425284
425629
  );
@@ -425303,7 +425648,7 @@ function KeypressProvider({
425303
425648
  if (kittySequenceBuffer || key.sequence.startsWith(`${ESC2}[`) && !key.sequence.startsWith(PASTE_MODE_PREFIX) && !key.sequence.startsWith(PASTE_MODE_SUFFIX) && !key.sequence.startsWith(FOCUS_IN) && !key.sequence.startsWith(FOCUS_OUT)) {
425304
425649
  kittySequenceBuffer += key.sequence;
425305
425650
  if (debugKeystrokeLogging) {
425306
- debugLogger107.debug(
425651
+ debugLogger108.debug(
425307
425652
  "[DEBUG] Kitty buffer accumulating:",
425308
425653
  kittySequenceBuffer
425309
425654
  );
@@ -425315,7 +425660,7 @@ function KeypressProvider({
425315
425660
  const nextStart = kittySequenceBuffer.indexOf(`${ESC2}[`, 1);
425316
425661
  if (nextStart > 0) {
425317
425662
  if (debugKeystrokeLogging) {
425318
- debugLogger107.debug(
425663
+ debugLogger108.debug(
425319
425664
  "[DEBUG] Skipping incomplete/invalid CSI prefix:",
425320
425665
  kittySequenceBuffer.slice(0, nextStart)
425321
425666
  );
@@ -425331,12 +425676,12 @@ function KeypressProvider({
425331
425676
  parsed.length
425332
425677
  );
425333
425678
  if (kittySequenceBuffer.length > parsed.length) {
425334
- debugLogger107.debug(
425679
+ debugLogger108.debug(
425335
425680
  "[DEBUG] Kitty sequence parsed successfully (prefix):",
425336
425681
  parsedSequence
425337
425682
  );
425338
425683
  } else {
425339
- debugLogger107.debug(
425684
+ debugLogger108.debug(
425340
425685
  "[DEBUG] Kitty sequence parsed successfully:",
425341
425686
  parsedSequence
425342
425687
  );
@@ -425351,11 +425696,11 @@ function KeypressProvider({
425351
425696
  const codes = Array.from(kittySequenceBuffer).map(
425352
425697
  (ch) => ch.charCodeAt(0)
425353
425698
  );
425354
- debugLogger107.warn("Kitty sequence buffer has char codes:", codes);
425699
+ debugLogger108.warn("Kitty sequence buffer has char codes:", codes);
425355
425700
  }
425356
425701
  if (kittySequenceBuffer.length > MAX_KITTY_SEQUENCE_LENGTH) {
425357
425702
  if (debugKeystrokeLogging) {
425358
- debugLogger107.debug(
425703
+ debugLogger108.debug(
425359
425704
  "[DEBUG] Kitty buffer overflow, clearing:",
425360
425705
  kittySequenceBuffer
425361
425706
  );
@@ -425552,7 +425897,7 @@ function useKeypress(onKeypress, { isActive }) {
425552
425897
  __name(useKeypress, "useKeypress");
425553
425898
 
425554
425899
  // packages/cli/src/ui/hooks/useSelectionList.ts
425555
- var debugLogger108 = createDebugLogger("SELECTION_LIST");
425900
+ var debugLogger109 = createDebugLogger("SELECTION_LIST");
425556
425901
  var NUMBER_INPUT_TIMEOUT_MS = 1e3;
425557
425902
  var findNextValidIndex = /* @__PURE__ */ __name((currentIndex, direction, items) => {
425558
425903
  const len = items.length;
@@ -425642,7 +425987,7 @@ function selectionListReducer(state, action) {
425642
425987
  }
425643
425988
  default: {
425644
425989
  const exhaustiveCheck = action;
425645
- debugLogger108.error(`Unknown selection list action: ${exhaustiveCheck}`);
425990
+ debugLogger109.error(`Unknown selection list action: ${exhaustiveCheck}`);
425646
425991
  return state;
425647
425992
  }
425648
425993
  }
@@ -426810,7 +427155,7 @@ function handleVimAction(state, action) {
426810
427155
  __name(handleVimAction, "handleVimAction");
426811
427156
 
426812
427157
  // packages/cli/src/ui/components/shared/text-buffer.ts
426813
- var debugLogger109 = createDebugLogger("TEXT_BUFFER");
427158
+ var debugLogger110 = createDebugLogger("TEXT_BUFFER");
426814
427159
  function isWordChar(ch) {
426815
427160
  if (ch === void 0) {
426816
427161
  return false;
@@ -427437,7 +427782,7 @@ function textBufferReducerLogic(state, action) {
427437
427782
  break;
427438
427783
  default: {
427439
427784
  const exhaustiveCheck = dir;
427440
- debugLogger109.error(
427785
+ debugLogger110.error(
427441
427786
  `Unknown visual movement direction: ${exhaustiveCheck}`
427442
427787
  );
427443
427788
  return state;
@@ -427744,7 +428089,7 @@ function textBufferReducerLogic(state, action) {
427744
428089
  return handleVimAction(state, action);
427745
428090
  default: {
427746
428091
  const exhaustiveCheck = action;
427747
- debugLogger109.error(`Unknown action encountered: ${exhaustiveCheck}`);
428092
+ debugLogger110.error(`Unknown action encountered: ${exhaustiveCheck}`);
427748
428093
  return state;
427749
428094
  }
427750
428095
  }
@@ -428028,7 +428373,7 @@ function useTextBuffer({
428028
428373
  newText = newText.replace(/\r\n?/g, "\n");
428029
428374
  dispatch({ type: "set_text", payload: newText, pushToUndo: false });
428030
428375
  } catch (err) {
428031
- debugLogger109.error("[useTextBuffer] external editor error", err);
428376
+ debugLogger110.error("[useTextBuffer] external editor error", err);
428032
428377
  } finally {
428033
428378
  if (wasRaw) setRawMode?.(true);
428034
428379
  try {
@@ -428801,7 +429146,7 @@ __name(useLaunchEditor, "useLaunchEditor");
428801
429146
 
428802
429147
  // packages/cli/src/ui/components/subagents/create/CreationSummary.tsx
428803
429148
  var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1);
428804
- var debugLogger110 = createDebugLogger("SUBAGENT_CREATION_SUMMARY");
429149
+ var debugLogger111 = createDebugLogger("SUBAGENT_CREATION_SUMMARY");
428805
429150
  function CreationSummary({
428806
429151
  state,
428807
429152
  onPrevious: _onPrevious,
@@ -428857,9 +429202,9 @@ function CreationSummary({
428857
429202
  }
428858
429203
  }
428859
429204
  } catch (error40) {
428860
- debugLogger110.warn("Error checking subagent name availability:", error40);
429205
+ debugLogger111.warn("Error checking subagent name availability:", error40);
428861
429206
  }
428862
- if (state.generatedDescription.length > 300) {
429207
+ if (state.generatedDescription.length > 1e3) {
428863
429208
  allWarnings.push(
428864
429209
  t4("Description is over {{length}} characters", {
428865
429210
  length: state.generatedDescription.length.toString()
@@ -429763,7 +430108,7 @@ __name(EditOptionsStep, "EditOptionsStep");
429763
430108
  // packages/cli/src/ui/components/subagents/manage/AgentDeleteStep.tsx
429764
430109
  init_esbuild_shims();
429765
430110
  var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
429766
- var debugLogger111 = createDebugLogger("AGENT_DELETE_STEP");
430111
+ var debugLogger112 = createDebugLogger("AGENT_DELETE_STEP");
429767
430112
  function AgentDeleteStep({
429768
430113
  selectedAgent,
429769
430114
  onDelete,
@@ -429776,7 +430121,7 @@ function AgentDeleteStep({
429776
430121
  try {
429777
430122
  await onDelete(selectedAgent);
429778
430123
  } catch (error40) {
429779
- debugLogger111.error("Failed to delete agent:", error40);
430124
+ debugLogger112.error("Failed to delete agent:", error40);
429780
430125
  }
429781
430126
  } else if (key.name === "n") {
429782
430127
  onNavigateBack();
@@ -429795,7 +430140,7 @@ __name(AgentDeleteStep, "AgentDeleteStep");
429795
430140
 
429796
430141
  // packages/cli/src/ui/components/subagents/manage/AgentsManagerDialog.tsx
429797
430142
  var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
429798
- var debugLogger112 = createDebugLogger("AGENTS_MANAGER_DIALOG");
430143
+ var debugLogger113 = createDebugLogger("AGENTS_MANAGER_DIALOG");
429799
430144
  function AgentsManagerDialog({
429800
430145
  onClose,
429801
430146
  config: config2
@@ -429851,7 +430196,7 @@ function AgentsManagerDialog({
429851
430196
  setNavigationStack([MANAGEMENT_STEPS.AGENT_SELECTION]);
429852
430197
  setSelectedAgentIndex(-1);
429853
430198
  } catch (error40) {
429854
- debugLogger112.error("Failed to delete agent:", error40);
430199
+ debugLogger113.error("Failed to delete agent:", error40);
429855
430200
  throw error40;
429856
430201
  }
429857
430202
  },
@@ -429957,7 +430302,7 @@ function AgentsManagerDialog({
429957
430302
  await loadAgents();
429958
430303
  handleNavigateBack();
429959
430304
  } catch (error40) {
429960
- debugLogger112.error("Failed to save agent changes:", error40);
430305
+ debugLogger113.error("Failed to save agent changes:", error40);
429961
430306
  }
429962
430307
  }
429963
430308
  },
@@ -429982,7 +430327,7 @@ function AgentsManagerDialog({
429982
430327
  await loadAgents();
429983
430328
  handleNavigateBack();
429984
430329
  } catch (error40) {
429985
- debugLogger112.error("Failed to save color changes:", error40);
430330
+ debugLogger113.error("Failed to save color changes:", error40);
429986
430331
  }
429987
430332
  }
429988
430333
  }
@@ -431086,9 +431431,10 @@ var PlanSummaryDisplay = /* @__PURE__ */ __name(({
431086
431431
  availableHeight,
431087
431432
  childWidth
431088
431433
  }) => {
431089
- const { message, plan } = data;
431434
+ const { message, plan, rejected } = data;
431435
+ const messageColor = rejected ? Colors.AccentYellow : Colors.AccentGreen;
431090
431436
  return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(Box_default, { flexDirection: "column", children: [
431091
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Box_default, { marginBottom: 1, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Text3, { color: Colors.AccentGreen, wrap: "wrap", children: message }) }),
431437
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Box_default, { marginBottom: 1, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Text3, { color: messageColor, wrap: "wrap", children: message }) }),
431092
431438
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
431093
431439
  MarkdownDisplay,
431094
431440
  {
@@ -432698,7 +433044,7 @@ __name(formatCommandLabel, "formatCommandLabel");
432698
433044
  // packages/cli/src/ui/components/views/ExtensionsList.tsx
432699
433045
  init_esbuild_shims();
432700
433046
  var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1);
432701
- var debugLogger113 = createDebugLogger("EXTENSIONS_LIST");
433047
+ var debugLogger114 = createDebugLogger("EXTENSIONS_LIST");
432702
433048
  var ExtensionsList = /* @__PURE__ */ __name(() => {
432703
433049
  const { extensionsUpdateState, commandContext } = useUIState();
432704
433050
  const extensions = commandContext.services.config?.getExtensions() || [];
@@ -432732,7 +433078,7 @@ var ExtensionsList = /* @__PURE__ */ __name(() => {
432732
433078
  stateColor = "green";
432733
433079
  break;
432734
433080
  default:
432735
- debugLogger113.error(`Unhandled ExtensionUpdateState ${state}`);
433081
+ debugLogger114.error(`Unhandled ExtensionUpdateState ${state}`);
432736
433082
  break;
432737
433083
  }
432738
433084
  return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Box_default, { flexDirection: "column", marginBottom: 1, children: [
@@ -434608,7 +434954,7 @@ var useVimMode = /* @__PURE__ */ __name(() => {
434608
434954
  // packages/cli/src/ui/components/SettingsDialog.tsx
434609
434955
  var import_chalk8 = __toESM(require_source(), 1);
434610
434956
  var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1);
434611
- var debugLogger114 = createDebugLogger("SETTINGS_DIALOG");
434957
+ var debugLogger115 = createDebugLogger("SETTINGS_DIALOG");
434612
434958
  var maxItemsToShow = 8;
434613
434959
  function SettingsDialog({
434614
434960
  settings,
@@ -434691,7 +435037,7 @@ function SettingsDialog({
434691
435037
  newValue,
434692
435038
  {}
434693
435039
  );
434694
- debugLogger114.debug(
435040
+ debugLogger115.debug(
434695
435041
  `[DEBUG SettingsDialog] Saving ${key} immediately with value:`,
434696
435042
  newValue
434697
435043
  );
@@ -434703,14 +435049,14 @@ function SettingsDialog({
434703
435049
  );
434704
435050
  if (key === "general.vimMode" && newValue !== vimEnabled) {
434705
435051
  toggleVimEnabled().catch((error40) => {
434706
- debugLogger114.error("Failed to toggle vim mode:", error40);
435052
+ debugLogger115.error("Failed to toggle vim mode:", error40);
434707
435053
  });
434708
435054
  }
434709
435055
  if (key === "tools.approvalMode" && settings.merged.tools?.approvalMode) {
434710
435056
  try {
434711
435057
  config2?.setApprovalMode(settings.merged.tools.approvalMode);
434712
435058
  } catch (error40) {
434713
- debugLogger114.error(
435059
+ debugLogger115.error(
434714
435060
  "Failed to apply approval mode to current session:",
434715
435061
  error40
434716
435062
  );
@@ -435063,7 +435409,7 @@ function SettingsDialog({
435063
435409
  try {
435064
435410
  config2?.setApprovalMode(settings.merged.tools.approvalMode);
435065
435411
  } catch (error40) {
435066
- debugLogger114.error(
435412
+ debugLogger115.error(
435067
435413
  "Failed to apply approval mode to current session:",
435068
435414
  error40
435069
435415
  );
@@ -435968,7 +436314,7 @@ var editorSettingsManager = new EditorSettingsManager();
435968
436314
 
435969
436315
  // packages/cli/src/ui/components/EditorSettingsDialog.tsx
435970
436316
  var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1);
435971
- var debugLogger115 = createDebugLogger("EDITOR_SETTINGS_DIALOG");
436317
+ var debugLogger116 = createDebugLogger("EDITOR_SETTINGS_DIALOG");
435972
436318
  function EditorSettingsDialog({
435973
436319
  onSelect,
435974
436320
  settings,
@@ -435995,7 +436341,7 @@ function EditorSettingsDialog({
435995
436341
  (item) => item.type === currentPreference
435996
436342
  ) : 0;
435997
436343
  if (editorIndex === -1) {
435998
- debugLogger115.error(`Editor is not supported: ${currentPreference}`);
436344
+ debugLogger116.error(`Editor is not supported: ${currentPreference}`);
435999
436345
  editorIndex = 0;
436000
436346
  }
436001
436347
  const handleEditorSelect = /* @__PURE__ */ __name((editorType) => {
@@ -436739,7 +437085,7 @@ import process35 from "node:process";
436739
437085
  // packages/cli/src/ui/components/IdeTrustChangeDialog.tsx
436740
437086
  init_esbuild_shims();
436741
437087
  var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1);
436742
- var debugLogger116 = createDebugLogger("IDE_TRUST_DIALOG");
437088
+ var debugLogger117 = createDebugLogger("IDE_TRUST_DIALOG");
436743
437089
  var IdeTrustChangeDialog = /* @__PURE__ */ __name(({ reason }) => {
436744
437090
  useKeypress(
436745
437091
  (key) => {
@@ -436751,7 +437097,7 @@ var IdeTrustChangeDialog = /* @__PURE__ */ __name(({ reason }) => {
436751
437097
  );
436752
437098
  let message = "Workspace trust has changed.";
436753
437099
  if (reason === "NONE") {
436754
- debugLogger116.error(
437100
+ debugLogger117.error(
436755
437101
  'IdeTrustChangeDialog rendered with unexpected reason "NONE"'
436756
437102
  );
436757
437103
  } else if (reason === "CONNECTION_CHANGE") {
@@ -437140,7 +437486,7 @@ var ActionSelectionStep2 = /* @__PURE__ */ __name(({
437140
437486
  // packages/cli/src/ui/components/extensions/steps/UninstallConfirmStep.tsx
437141
437487
  init_esbuild_shims();
437142
437488
  var import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1);
437143
- var debugLogger117 = createDebugLogger("EXTENSION_UNINSTALL_STEP");
437489
+ var debugLogger118 = createDebugLogger("EXTENSION_UNINSTALL_STEP");
437144
437490
  function UninstallConfirmStep({
437145
437491
  selectedExtension,
437146
437492
  onConfirm,
@@ -437153,7 +437499,7 @@ function UninstallConfirmStep({
437153
437499
  try {
437154
437500
  await onConfirm(selectedExtension);
437155
437501
  } catch (error40) {
437156
- debugLogger117.error("Failed to uninstall extension:", error40);
437502
+ debugLogger118.error("Failed to uninstall extension:", error40);
437157
437503
  }
437158
437504
  } else if (key.name === "n" || key.name === "escape") {
437159
437505
  onNavigateBack();
@@ -437220,7 +437566,7 @@ __name(ScopeSelectStep, "ScopeSelectStep");
437220
437566
 
437221
437567
  // packages/cli/src/ui/components/extensions/ExtensionsManagerDialog.tsx
437222
437568
  var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1);
437223
- var debugLogger118 = createDebugLogger("EXTENSIONS_MANAGER_DIALOG");
437569
+ var debugLogger119 = createDebugLogger("EXTENSIONS_MANAGER_DIALOG");
437224
437570
  function ExtensionsManagerDialog({
437225
437571
  onClose,
437226
437572
  config: config2
@@ -437241,7 +437587,7 @@ function ExtensionsManagerDialog({
437241
437587
  if (!config2) return;
437242
437588
  const extensionManager = config2.getExtensionManager();
437243
437589
  if (!extensionManager) {
437244
- debugLogger118.error("ExtensionManager not available");
437590
+ debugLogger119.error("ExtensionManager not available");
437245
437591
  return;
437246
437592
  }
437247
437593
  try {
@@ -437249,7 +437595,7 @@ function ExtensionsManagerDialog({
437249
437595
  const loadedExtensions = extensionManager.getLoadedExtensions();
437250
437596
  setExtensions(loadedExtensions);
437251
437597
  } catch (error40) {
437252
- debugLogger118.error("Failed to load extensions:", error40);
437598
+ debugLogger119.error("Failed to load extensions:", error40);
437253
437599
  }
437254
437600
  }, [config2]);
437255
437601
  (0, import_react90.useEffect)(() => {
@@ -437303,12 +437649,12 @@ function ExtensionsManagerDialog({
437303
437649
  selectedExtension,
437304
437650
  "update available" /* UPDATE_AVAILABLE */,
437305
437651
  (name3, newState) => {
437306
- debugLogger118.debug(`Update state for ${name3}:`, newState);
437652
+ debugLogger119.debug(`Update state for ${name3}:`, newState);
437307
437653
  }
437308
437654
  );
437309
437655
  await loadExtensions();
437310
437656
  await extensionManager.checkForAllExtensionUpdates((name3, newState) => {
437311
- debugLogger118.debug(`Recheck update state for ${name3}:`, newState);
437657
+ debugLogger119.debug(`Recheck update state for ${name3}:`, newState);
437312
437658
  });
437313
437659
  setSuccessMessage(
437314
437660
  t4('Extension "{{name}}" updated successfully.', {
@@ -437317,7 +437663,7 @@ function ExtensionsManagerDialog({
437317
437663
  );
437318
437664
  handleNavigateBack();
437319
437665
  } catch (error40) {
437320
- debugLogger118.error("Failed to update extension:", error40);
437666
+ debugLogger119.error("Failed to update extension:", error40);
437321
437667
  setUpdateError(
437322
437668
  error40 instanceof Error ? error40.message : "Unknown error occurred"
437323
437669
  );
@@ -437390,7 +437736,7 @@ function ExtensionsManagerDialog({
437390
437736
  setErrorMessage(null);
437391
437737
  setNavigationStack([MANAGEMENT_STEPS2.EXTENSION_LIST]);
437392
437738
  } catch (error40) {
437393
- debugLogger118.error(
437739
+ debugLogger119.error(
437394
437740
  `Failed to ${newState ? "enable" : "disable"} extension:`,
437395
437741
  error40
437396
437742
  );
@@ -437431,7 +437777,7 @@ function ExtensionsManagerDialog({
437431
437777
  setNavigationStack([MANAGEMENT_STEPS2.EXTENSION_LIST]);
437432
437778
  setSelectedExtensionIndex(-1);
437433
437779
  } catch (error40) {
437434
- debugLogger118.error("Failed to uninstall extension:", error40);
437780
+ debugLogger119.error("Failed to uninstall extension:", error40);
437435
437781
  throw error40;
437436
437782
  }
437437
437783
  },
@@ -438336,7 +438682,7 @@ var AuthenticateStep = /* @__PURE__ */ __name(({
438336
438682
 
438337
438683
  // packages/cli/src/ui/components/mcp/MCPManagementDialog.tsx
438338
438684
  var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1);
438339
- var debugLogger119 = createDebugLogger("MCP_DIALOG");
438685
+ var debugLogger120 = createDebugLogger("MCP_DIALOG");
438340
438686
  var MCPManagementDialog = /* @__PURE__ */ __name(({
438341
438687
  onClose
438342
438688
  }) => {
@@ -438413,7 +438759,7 @@ var MCPManagementDialog = /* @__PURE__ */ __name(({
438413
438759
  const serverInfos = await fetchServerData();
438414
438760
  setServers(serverInfos);
438415
438761
  } catch (error40) {
438416
- debugLogger119.error("Error loading MCP servers:", error40);
438762
+ debugLogger120.error("Error loading MCP servers:", error40);
438417
438763
  } finally {
438418
438764
  setIsLoading(false);
438419
438765
  }
@@ -438494,7 +438840,7 @@ var MCPManagementDialog = /* @__PURE__ */ __name(({
438494
438840
  const serverInfos = await fetchServerData();
438495
438841
  setServers(serverInfos);
438496
438842
  } catch (error40) {
438497
- debugLogger119.error("Error reloading MCP servers:", error40);
438843
+ debugLogger120.error("Error reloading MCP servers:", error40);
438498
438844
  } finally {
438499
438845
  setIsLoading(false);
438500
438846
  }
@@ -438505,7 +438851,7 @@ var MCPManagementDialog = /* @__PURE__ */ __name(({
438505
438851
  setIsLoading(true);
438506
438852
  const tokenStorage = new MCPOAuthTokenStorage();
438507
438853
  await tokenStorage.deleteCredentials(selectedServer.name);
438508
- debugLogger119.info(
438854
+ debugLogger120.info(
438509
438855
  `Cleared OAuth tokens for server '${selectedServer.name}'`
438510
438856
  );
438511
438857
  const toolRegistry = config2.getToolRegistry();
@@ -438514,7 +438860,7 @@ var MCPManagementDialog = /* @__PURE__ */ __name(({
438514
438860
  }
438515
438861
  await reloadServers();
438516
438862
  } catch (error40) {
438517
- debugLogger119.error(
438863
+ debugLogger120.error(
438518
438864
  `Error clearing OAuth tokens for server '${selectedServer.name}':`,
438519
438865
  error40
438520
438866
  );
@@ -438532,7 +438878,7 @@ var MCPManagementDialog = /* @__PURE__ */ __name(({
438532
438878
  }
438533
438879
  await reloadServers();
438534
438880
  } catch (error40) {
438535
- debugLogger119.error(
438881
+ debugLogger120.error(
438536
438882
  `Error reconnecting to server '${selectedServer.name}':`,
438537
438883
  error40
438538
438884
  );
@@ -438567,7 +438913,7 @@ var MCPManagementDialog = /* @__PURE__ */ __name(({
438567
438913
  }
438568
438914
  await reloadServers();
438569
438915
  } catch (error40) {
438570
- debugLogger119.error(
438916
+ debugLogger120.error(
438571
438917
  `Error enabling server '${selectedServer.name}':`,
438572
438918
  error40
438573
438919
  );
@@ -438586,7 +438932,7 @@ var MCPManagementDialog = /* @__PURE__ */ __name(({
438586
438932
  const settings = loadSettings();
438587
438933
  let targetScope = "user";
438588
438934
  if (server.source === "extension") {
438589
- debugLogger119.warn(
438935
+ debugLogger120.warn(
438590
438936
  `Cannot disable extension MCP server '${server.name}'`
438591
438937
  );
438592
438938
  setIsLoading(false);
@@ -438612,7 +438958,7 @@ var MCPManagementDialog = /* @__PURE__ */ __name(({
438612
438958
  }
438613
438959
  await reloadServers();
438614
438960
  } catch (error40) {
438615
- debugLogger119.error(
438961
+ debugLogger120.error(
438616
438962
  `Error disabling server '${selectedServer.name}':`,
438617
438963
  error40
438618
438964
  );
@@ -438647,7 +438993,7 @@ var MCPManagementDialog = /* @__PURE__ */ __name(({
438647
438993
  await reloadServers();
438648
438994
  handleNavigateBack();
438649
438995
  } catch (error40) {
438650
- debugLogger119.error(
438996
+ debugLogger120.error(
438651
438997
  `Error disabling server '${selectedServer.name}':`,
438652
438998
  error40
438653
438999
  );
@@ -439771,7 +440117,7 @@ var import_react100 = __toESM(require_react(), 1);
439771
440117
  import * as fs101 from "node:fs/promises";
439772
440118
  import * as path110 from "node:path";
439773
440119
  var MAX_HISTORY_LENGTH2 = 100;
439774
- var debugLogger120 = createDebugLogger("SHELL_HISTORY");
440120
+ var debugLogger121 = createDebugLogger("SHELL_HISTORY");
439775
440121
  async function getHistoryFilePath(projectRoot, configStorage) {
439776
440122
  const storage = configStorage ?? new Storage(projectRoot);
439777
440123
  return storage.getHistoryFilePath();
@@ -439797,7 +440143,7 @@ async function readHistoryFile(filePath) {
439797
440143
  return result;
439798
440144
  } catch (err) {
439799
440145
  if (isNodeError(err) && err.code === "ENOENT") return [];
439800
- debugLogger120.error("Error reading history:", err);
440146
+ debugLogger121.error("Error reading history:", err);
439801
440147
  return [];
439802
440148
  }
439803
440149
  }
@@ -439807,7 +440153,7 @@ async function writeHistoryFile(filePath, history) {
439807
440153
  await fs101.mkdir(path110.dirname(filePath), { recursive: true });
439808
440154
  await fs101.writeFile(filePath, history.join("\n"));
439809
440155
  } catch (error40) {
439810
- debugLogger120.error("Error writing shell history:", error40);
440156
+ debugLogger121.error("Error writing shell history:", error40);
439811
440157
  }
439812
440158
  }
439813
440159
  __name(writeHistoryFile, "writeHistoryFile");
@@ -440225,12 +440571,12 @@ __name(useAtCompletion, "useAtCompletion");
440225
440571
  init_esbuild_shims();
440226
440572
  var import_react104 = __toESM(require_react(), 1);
440227
440573
  init_fzf_es();
440228
- var debugLogger121 = createDebugLogger("SLASH_COMPLETION");
440574
+ var debugLogger122 = createDebugLogger("SLASH_COMPLETION");
440229
440575
  function logErrorSafely(error40, context2) {
440230
440576
  if (error40 instanceof Error) {
440231
- debugLogger121.error(`[${context2}]`, error40);
440577
+ debugLogger122.error(`[${context2}]`, error40);
440232
440578
  } else {
440233
- debugLogger121.error(`[${context2}] Non-error thrown:`, error40);
440579
+ debugLogger122.error(`[${context2}] Non-error thrown:`, error40);
440234
440580
  }
440235
440581
  }
440236
440582
  __name(logErrorSafely, "logErrorSafely");
@@ -440325,7 +440671,7 @@ function useCommandSuggestions(parserResult, commandContext, getFzfForCommands,
440325
440671
  const fetchAndSetSuggestions = /* @__PURE__ */ __name(async () => {
440326
440672
  if (signal.aborted) return;
440327
440673
  if (!leafCommand?.completion) {
440328
- debugLogger121.warn(
440674
+ debugLogger122.warn(
440329
440675
  "Attempted argument completion without completion function"
440330
440676
  );
440331
440677
  return;
@@ -440930,7 +441276,7 @@ var FeedbackDialog = /* @__PURE__ */ __name(() => {
440930
441276
 
440931
441277
  // packages/cli/src/ui/components/InputPrompt.tsx
440932
441278
  var import_jsx_runtime102 = __toESM(require_jsx_runtime(), 1);
440933
- var debugLogger122 = createDebugLogger("INPUT_PROMPT");
441279
+ var debugLogger123 = createDebugLogger("INPUT_PROMPT");
440934
441280
  var calculatePromptWidths = /* @__PURE__ */ __name((terminalWidth) => {
440935
441281
  const widthFraction = 0.9;
440936
441282
  const FRAME_PADDING_AND_BORDER = 4;
@@ -441185,7 +441531,7 @@ ${finalValue.trim()}`;
441185
441531
  }
441186
441532
  }
441187
441533
  } catch (error40) {
441188
- debugLogger122.error("Error handling clipboard image:", error40);
441534
+ debugLogger123.error("Error handling clipboard image:", error40);
441189
441535
  }
441190
441536
  }, []);
441191
441537
  const handleAttachmentDelete = (0, import_react107.useCallback)((index) => {
@@ -442589,7 +442935,7 @@ var FEEDBACK_SHOW_PROBABILITY = 0.25;
442589
442935
  var MIN_TOOL_CALLS = 10;
442590
442936
  var MIN_USER_MESSAGES = 5;
442591
442937
  var FEEDBACK_COOLDOWN_HOURS = 24;
442592
- var debugLogger123 = createDebugLogger("FEEDBACK_DIALOG");
442938
+ var debugLogger124 = createDebugLogger("FEEDBACK_DIALOG");
442593
442939
  var lastMessageIsAIResponse = /* @__PURE__ */ __name((history) => history.length > 0 && history[history.length - 1].type === "gemini" /* GEMINI */, "lastMessageIsAIResponse");
442594
442940
  var getFeedbackLastShownTimestampFromFile = /* @__PURE__ */ __name(() => {
442595
442941
  try {
@@ -442600,7 +442946,7 @@ var getFeedbackLastShownTimestampFromFile = /* @__PURE__ */ __name(() => {
442600
442946
  }
442601
442947
  } catch (error40) {
442602
442948
  if (isNodeError(error40) && error40.code !== "ENOENT") {
442603
- debugLogger123.warn(
442949
+ debugLogger124.warn(
442604
442950
  "Failed to read feedbackLastShownTimestamp from settings file:",
442605
442951
  error40
442606
442952
  );
@@ -443923,7 +444269,7 @@ var McpPromptLoader = class {
443923
444269
  };
443924
444270
 
443925
444271
  // packages/cli/src/ui/hooks/slashCommandProcessor.ts
443926
- var debugLogger124 = createDebugLogger("SLASH_COMMAND_PROCESSOR");
444272
+ var debugLogger125 = createDebugLogger("SLASH_COMMAND_PROCESSOR");
443927
444273
  function serializeHistoryItemForRecording(item) {
443928
444274
  const clone4 = { ...item };
443929
444275
  if ("timestamp" in clone4 && clone4["timestamp"] instanceof Date) {
@@ -444125,6 +444471,7 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config2, settings, addIte
444125
444471
  const loaders = [
444126
444472
  new McpPromptLoader(config2),
444127
444473
  new BuiltinCommandLoader(config2),
444474
+ new BundledSkillLoader(config2),
444128
444475
  new FileCommandLoader(config2)
444129
444476
  ];
444130
444477
  const commandService = await CommandService.create(
@@ -444421,7 +444768,7 @@ ${commandToExecute.subCommands.map((sc) => ` - ${sc.name}: ${sc.description ||
444421
444768
  });
444422
444769
  }
444423
444770
  } catch (recordError) {
444424
- debugLogger124.error(
444771
+ debugLogger125.error(
444425
444772
  "[slashCommand] Failed to record slash command:",
444426
444773
  recordError
444427
444774
  );
@@ -444508,7 +444855,7 @@ import os36 from "node:os";
444508
444855
  import fs103 from "node:fs";
444509
444856
  var OUTPUT_UPDATE_INTERVAL_MS2 = 1e3;
444510
444857
  var MAX_OUTPUT_LENGTH2 = 1e4;
444511
- var debugLogger125 = createDebugLogger("SHELL_COMMAND_PROCESSOR");
444858
+ var debugLogger126 = createDebugLogger("SHELL_COMMAND_PROCESSOR");
444512
444859
  function addShellCommandToGeminiHistory(geminiClient, rawQuery, resultText) {
444513
444860
  const modelContent = resultText.length > MAX_OUTPUT_LENGTH2 ? resultText.substring(0, MAX_OUTPUT_LENGTH2) + "\n... (truncated)" : resultText;
444514
444861
  geminiClient.addHistory({
@@ -444650,7 +444997,7 @@ var useShellCommandProcessor = /* @__PURE__ */ __name((addItemToHistory, setPend
444650
444997
  config2.getShouldUseNodePtyShell(),
444651
444998
  shellExecutionConfig
444652
444999
  );
444653
- debugLogger125.debug(terminalHeight, terminalWidth);
445000
+ debugLogger126.debug(terminalHeight, terminalWidth);
444654
445001
  executionPid = pid;
444655
445002
  if (pid) {
444656
445003
  setActiveShellPtyId(pid);
@@ -444861,7 +445208,7 @@ var useStateAndRef = /* @__PURE__ */ __name((initialValue) => {
444861
445208
  // packages/cli/src/ui/hooks/useReactToolScheduler.ts
444862
445209
  init_esbuild_shims();
444863
445210
  var import_react124 = __toESM(require_react(), 1);
444864
- var debugLogger126 = createDebugLogger("REACT_TOOL_SCHEDULER");
445211
+ var debugLogger127 = createDebugLogger("REACT_TOOL_SCHEDULER");
444865
445212
  function useReactToolScheduler(onComplete, config2, getPreferredEditor, onEditorClose) {
444866
445213
  const [toolCallsForDisplay, setToolCallsForDisplay] = (0, import_react124.useState)([]);
444867
445214
  const outputUpdateHandler = (0, import_react124.useCallback)(
@@ -444967,7 +445314,7 @@ function mapCoreStatusToDisplayStatus(coreStatus) {
444967
445314
  return "Pending" /* Pending */;
444968
445315
  default: {
444969
445316
  const exhaustiveCheck = coreStatus;
444970
- debugLogger126.warn(`Unknown core status encountered: ${exhaustiveCheck}`);
445317
+ debugLogger127.warn(`Unknown core status encountered: ${exhaustiveCheck}`);
444971
445318
  return "Error" /* Error */;
444972
445319
  }
444973
445320
  }
@@ -445066,7 +445413,7 @@ __name(mapToDisplay, "mapToDisplay");
445066
445413
  // packages/cli/src/ui/hooks/useGeminiStream.ts
445067
445414
  import { promises as fs104 } from "node:fs";
445068
445415
  import path114 from "node:path";
445069
- var debugLogger127 = createDebugLogger("GEMINI_STREAM");
445416
+ var debugLogger128 = createDebugLogger("GEMINI_STREAM");
445070
445417
  function checkImageFormatsSupport(parts) {
445071
445418
  const unsupportedMimeTypes = [];
445072
445419
  let hasImages = false;
@@ -445987,7 +446334,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
445987
446334
  ToolConfirmationOutcome.ProceedOnce
445988
446335
  );
445989
446336
  } catch (error40) {
445990
- debugLogger127.error(
446337
+ debugLogger128.error(
445991
446338
  `Failed to auto-approve tool call ${call.request.callId}:`,
445992
446339
  error40
445993
446340
  );
@@ -446221,7 +446568,7 @@ var import_react126 = __toESM(require_react(), 1);
446221
446568
  var DIGIT_MULTIPLIER = 10;
446222
446569
  var DEFAULT_COUNT = 1;
446223
446570
  var DIGIT_1_TO_9 = /^[1-9]$/;
446224
- var debugLogger128 = createDebugLogger("VIM_MODE");
446571
+ var debugLogger129 = createDebugLogger("VIM_MODE");
446225
446572
  var CMD_TYPES = {
446226
446573
  DELETE_WORD_FORWARD: "dw",
446227
446574
  DELETE_WORD_BACKWARD: "db",
@@ -446471,7 +446818,7 @@ function useVim(buffer, onSubmit) {
446471
446818
  try {
446472
446819
  normalizedKey = normalizeKey(key);
446473
446820
  } catch (error40) {
446474
- debugLogger128.warn("Malformed key input in vim mode:", key, error40);
446821
+ debugLogger129.warn("Malformed key input in vim mode:", key, error40);
446475
446822
  return false;
446476
446823
  }
446477
446824
  if (state.mode === "INSERT") {
@@ -447082,7 +447429,7 @@ init_esbuild_shims();
447082
447429
  init_esbuild_shims();
447083
447430
  import process47 from "node:process";
447084
447431
  import { spawn as spawn10 } from "node:child_process";
447085
- import { fileURLToPath as fileURLToPath15 } from "node:url";
447432
+ import { fileURLToPath as fileURLToPath16 } from "node:url";
447086
447433
  import path123 from "node:path";
447087
447434
  import { format as format3 } from "node:util";
447088
447435
 
@@ -449128,7 +449475,7 @@ var isNpmOrYarn = isNpm || isYarn;
449128
449475
  init_esbuild_shims();
449129
449476
  import fs109 from "node:fs";
449130
449477
  import path122 from "node:path";
449131
- import { fileURLToPath as fileURLToPath14 } from "node:url";
449478
+ import { fileURLToPath as fileURLToPath15 } from "node:url";
449132
449479
 
449133
449480
  // node_modules/global-directory/index.js
449134
449481
  init_esbuild_shims();
@@ -449235,7 +449582,7 @@ function isPathInside(childPath, parentPath) {
449235
449582
  __name(isPathInside, "isPathInside");
449236
449583
 
449237
449584
  // node_modules/is-installed-globally/index.js
449238
- var __dirname7 = path122.dirname(fileURLToPath14(import.meta.url));
449585
+ var __dirname7 = path122.dirname(fileURLToPath15(import.meta.url));
449239
449586
  var isInstalledGlobally = (() => {
449240
449587
  try {
449241
449588
  return isPathInside(__dirname7, global_directory_default.yarn.packages) || isPathInside(__dirname7, fs109.realpathSync(global_directory_default.npm.packages));
@@ -449733,7 +450080,7 @@ function pupa(template, data, { ignoreMissing = false, transform: transform2 = /
449733
450080
  __name(pupa, "pupa");
449734
450081
 
449735
450082
  // node_modules/update-notifier/update-notifier.js
449736
- var __dirname8 = path123.dirname(fileURLToPath15(import.meta.url));
450083
+ var __dirname8 = path123.dirname(fileURLToPath16(import.meta.url));
449737
450084
  var ONE_DAY = 1e3 * 60 * 60 * 24;
449738
450085
  var UpdateNotifier = class {
449739
450086
  static {
@@ -449859,7 +450206,7 @@ __name(updateNotifier, "updateNotifier");
449859
450206
 
449860
450207
  // packages/cli/src/ui/utils/updateCheck.ts
449861
450208
  var import_semver3 = __toESM(require_semver3(), 1);
449862
- var debugLogger129 = createDebugLogger("UPDATE_CHECK");
450209
+ var debugLogger130 = createDebugLogger("UPDATE_CHECK");
449863
450210
  function getBestAvailableUpdate(nightly, stable) {
449864
450211
  if (!nightly) return stable || null;
449865
450212
  if (!stable) return nightly || null;
@@ -449919,7 +450266,7 @@ async function checkForUpdates() {
449919
450266
  }
449920
450267
  return null;
449921
450268
  } catch (e4) {
449922
- debugLogger129.warn("Failed to check for updates: " + e4);
450269
+ debugLogger130.warn("Failed to check for updates: " + e4);
449923
450270
  return null;
449924
450271
  }
449925
450272
  }
@@ -449933,7 +450280,7 @@ init_esbuild_shims();
449933
450280
  import * as fs110 from "node:fs";
449934
450281
  import * as path124 from "node:path";
449935
450282
  import * as childProcess2 from "node:child_process";
449936
- var debugLogger130 = createDebugLogger("INSTALLATION_INFO");
450283
+ var debugLogger131 = createDebugLogger("INSTALLATION_INFO");
449937
450284
  function getInstallationInfo(projectRoot, isAutoUpdateEnabled) {
449938
450285
  const cliPath = process.argv[1];
449939
450286
  if (!cliPath) {
@@ -450035,7 +450382,7 @@ function getInstallationInfo(projectRoot, isAutoUpdateEnabled) {
450035
450382
  updateMessage: isAutoUpdateEnabled ? "Installed with npm. Attempting to automatically update now..." : `Please run ${updateCommand2} to update`
450036
450383
  };
450037
450384
  } catch (error40) {
450038
- debugLogger130.error("Failed to detect installation info:", error40);
450385
+ debugLogger131.error("Failed to detect installation info:", error40);
450039
450386
  return { packageManager: "unknown" /* UNKNOWN */, isGlobal: false };
450040
450387
  }
450041
450388
  }
@@ -450767,7 +451114,7 @@ var import_react144 = __toESM(require_react(), 1);
450767
451114
  init_esbuild_shims();
450768
451115
  import process48 from "node:process";
450769
451116
  var TERMINAL_BELL = "\x07";
450770
- var debugLogger131 = createDebugLogger("ATTENTION_NOTIFICATION");
451117
+ var debugLogger132 = createDebugLogger("ATTENTION_NOTIFICATION");
450771
451118
  function notifyTerminalAttention(_reason, options2 = {}) {
450772
451119
  if (options2.enabled === false) {
450773
451120
  return false;
@@ -450780,7 +451127,7 @@ function notifyTerminalAttention(_reason, options2 = {}) {
450780
451127
  stream2.write(TERMINAL_BELL);
450781
451128
  return true;
450782
451129
  } catch (error40) {
450783
- debugLogger131.warn("Failed to send terminal bell:", error40);
451130
+ debugLogger132.warn("Failed to send terminal bell:", error40);
450784
451131
  return false;
450785
451132
  }
450786
451133
  }
@@ -450829,7 +451176,7 @@ var useAttentionNotifications = /* @__PURE__ */ __name(({
450829
451176
  // packages/cli/src/ui/AppContainer.tsx
450830
451177
  var import_jsx_runtime115 = __toESM(require_jsx_runtime(), 1);
450831
451178
  var CTRL_EXIT_PROMPT_DURATION_MS = 1e3;
450832
- var debugLogger132 = createDebugLogger("APP_CONTAINER");
451179
+ var debugLogger133 = createDebugLogger("APP_CONTAINER");
450833
451180
  function isToolExecuting(pendingHistoryItems) {
450834
451181
  return pendingHistoryItems.some((item) => {
450835
451182
  if (item && item.type === "tool_group") {
@@ -451215,7 +451562,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
451215
451562
  },
451216
451563
  Date.now()
451217
451564
  );
451218
- debugLogger132.debug(
451565
+ debugLogger133.debug(
451219
451566
  `[DEBUG] Refreshed memory content in config: ${memoryContent.substring(
451220
451567
  0,
451221
451568
  200
@@ -451230,7 +451577,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
451230
451577
  },
451231
451578
  Date.now()
451232
451579
  );
451233
- debugLogger132.error("Error refreshing memory:", error40);
451580
+ debugLogger133.error("Error refreshing memory:", error40);
451234
451581
  }
451235
451582
  }, [config2, historyManager, settings.merged]);
451236
451583
  const cancelHandlerRef = (0, import_react145.useRef)(() => {
@@ -451597,7 +451944,7 @@ ${migrationResult.failedFiles.map((f5) => ` \u2022 ${f5.file}: ${f5.error}`).jo
451597
451944
  const handleGlobalKeypress = (0, import_react145.useCallback)(
451598
451945
  (key) => {
451599
451946
  if (settings.merged.general?.debugKeystrokeLogging) {
451600
- debugLogger132.debug("[DEBUG] Keystroke:", JSON.stringify(key));
451947
+ debugLogger133.debug("[DEBUG] Keystroke:", JSON.stringify(key));
451601
451948
  }
451602
451949
  if (keyMatchers["quit" /* QUIT */](key)) {
451603
451950
  if (isAuthenticating) {
@@ -452169,7 +452516,7 @@ import { exec as exec4, execSync as execSync8, spawn as spawn13 } from "node:chi
452169
452516
  import os43 from "node:os";
452170
452517
  import path126 from "node:path";
452171
452518
  import fs113 from "node:fs";
452172
- import { fileURLToPath as fileURLToPath16 } from "node:url";
452519
+ import { fileURLToPath as fileURLToPath17 } from "node:url";
452173
452520
  import { promisify as promisify12 } from "node:util";
452174
452521
  import { randomBytes as randomBytes5 } from "node:crypto";
452175
452522
  var execAsync3 = promisify12(exec4);
@@ -452285,7 +452632,7 @@ async function start_sandbox(config2, nodeArgs = [], cliConfig, cliArgs = []) {
452285
452632
  );
452286
452633
  }
452287
452634
  const profile = process.env["SEATBELT_PROFILE"] ??= "permissive-open";
452288
- let profileFile = fileURLToPath16(
452635
+ let profileFile = fileURLToPath17(
452289
452636
  new URL(`sandbox-macos-${profile}.sb`, import.meta.url)
452290
452637
  );
452291
452638
  if (!BUILTIN_SEATBELT_PROFILES.includes(profile)) {
@@ -454724,7 +455071,7 @@ __name(parseAcpModelOption, "parseAcpModelOption");
454724
455071
  // packages/cli/src/acp-integration/session/SubAgentTracker.ts
454725
455072
  init_esbuild_shims();
454726
455073
  init_zod();
454727
- var debugLogger133 = createDebugLogger("ACP_SUBAGENT_TRACKER");
455074
+ var debugLogger134 = createDebugLogger("ACP_SUBAGENT_TRACKER");
454728
455075
  var basicPermissionOptions = [
454729
455076
  {
454730
455077
  optionId: ToolConfirmationOutcome.ProceedOnce,
@@ -454804,7 +455151,7 @@ var SubAgentTracker = class {
454804
455151
  try {
454805
455152
  invocation = tool.build(event.args);
454806
455153
  } catch (e4) {
454807
- debugLogger133.warn(`Failed to build subagent tool ${event.name}:`, e4);
455154
+ debugLogger134.warn(`Failed to build subagent tool ${event.name}:`, e4);
454808
455155
  }
454809
455156
  }
454810
455157
  this.toolStates.set(event.callId, {
@@ -454882,7 +455229,7 @@ var SubAgentTracker = class {
454882
455229
  const outcome = output.outcome.outcome === "cancelled" ? ToolConfirmationOutcome.Cancel : external_exports.nativeEnum(ToolConfirmationOutcome).parse(output.outcome.optionId);
454883
455230
  await event.respond(outcome);
454884
455231
  } catch (error40) {
454885
- debugLogger133.error(
455232
+ debugLogger134.error(
454886
455233
  `Permission request failed for subagent tool ${event.name}:`,
454887
455234
  error40
454888
455235
  );
@@ -454983,7 +455330,7 @@ var SubAgentTracker = class {
454983
455330
  };
454984
455331
 
454985
455332
  // packages/cli/src/acp-integration/session/Session.ts
454986
- var debugLogger134 = createDebugLogger("SESSION");
455333
+ var debugLogger135 = createDebugLogger("SESSION");
454987
455334
  var Session3 = class {
454988
455335
  constructor(id, chat, config2, client, settings) {
454989
455336
  this.chat = chat;
@@ -455163,7 +455510,7 @@ var Session3 = class {
455163
455510
  };
455164
455511
  await this.sendUpdate(update2);
455165
455512
  } catch (error40) {
455166
- debugLogger134.error("Error sending available commands update:", error40);
455513
+ debugLogger135.error("Error sending available commands update:", error40);
455167
455514
  }
455168
455515
  }
455169
455516
  /**
@@ -455607,7 +455954,7 @@ ${contextPart.text}`
455607
455954
  }
455608
455955
  debug(msg) {
455609
455956
  if (this.config.getDebugMode()) {
455610
- debugLogger134.warn(msg);
455957
+ debugLogger135.warn(msg);
455611
455958
  }
455612
455959
  }
455613
455960
  };
@@ -455706,7 +456053,7 @@ function toPermissionOptions(confirmation) {
455706
456053
  __name(toPermissionOptions, "toPermissionOptions");
455707
456054
 
455708
456055
  // packages/cli/src/acp-integration/acpAgent.ts
455709
- var debugLogger135 = createDebugLogger("ACP_AGENT");
456056
+ var debugLogger136 = createDebugLogger("ACP_AGENT");
455710
456057
  async function runAcpAgent(config2, settings, argv) {
455711
456058
  const stdout = Writable2.toWeb(process.stdout);
455712
456059
  const stdin = Readable5.toWeb(process.stdin);
@@ -455743,7 +456090,7 @@ var QwenAgent = class {
455743
456090
  async initialize(args) {
455744
456091
  this.clientCapabilities = args.clientCapabilities;
455745
456092
  const authMethods = buildAuthMethods();
455746
- const version2 = "0.12.3";
456093
+ const version2 = "0.12.4-nightly.20260316.110fcd7b7";
455747
456094
  return {
455748
456095
  protocolVersion: PROTOCOL_VERSION,
455749
456096
  agentInfo: {
@@ -455970,7 +456317,7 @@ var QwenAgent = class {
455970
456317
  try {
455971
456318
  await config2.refreshAuth(selectedType, true);
455972
456319
  } catch (e4) {
455973
- debugLogger135.error(`Authentication failed: ${e4}`);
456320
+ debugLogger136.error(`Authentication failed: ${e4}`);
455974
456321
  throw RequestError.authRequired(
455975
456322
  {
455976
456323
  authMethods: this.pickAuthMethodsForAuthRequired(selectedType, e4)
@@ -456123,7 +456470,7 @@ var QwenAgent = class {
456123
456470
 
456124
456471
  // packages/cli/src/gemini.tsx
456125
456472
  var import_jsx_runtime117 = __toESM(require_jsx_runtime(), 1);
456126
- var debugLogger136 = createDebugLogger("STARTUP");
456473
+ var debugLogger137 = createDebugLogger("STARTUP");
456127
456474
  function validateDnsResolutionOrder(order) {
456128
456475
  const defaultValue = "ipv4first";
456129
456476
  if (order === void 0) {
@@ -456219,7 +456566,7 @@ async function startInteractiveUI(config2, settings, startupWarnings, workspaceR
456219
456566
  checkForUpdates().then((info) => {
456220
456567
  handleAutoUpdate(info, settings, config2.getProjectRoot());
456221
456568
  }).catch((err) => {
456222
- debugLogger136.warn(`Update check failed: ${err}`);
456569
+ debugLogger137.warn(`Update check failed: ${err}`);
456223
456570
  });
456224
456571
  }
456225
456572
  registerCleanup(() => instance.unmount());
@@ -456412,7 +456759,7 @@ ${input}`;
456412
456759
  auth_type: config2.getContentGeneratorConfig()?.authType,
456413
456760
  prompt_length: input.length
456414
456761
  });
456415
- debugLogger136.debug(`Session ID: ${config2.getSessionId()}`);
456762
+ debugLogger137.debug(`Session ID: ${config2.getSessionId()}`);
456416
456763
  await runNonInteractive(nonInteractiveConfig, settings, input, prompt_id);
456417
456764
  await runExitCleanup();
456418
456765
  process.exit(0);