@qwen-code/qwen-code 0.12.0 → 0.12.1-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -38,7 +38,7 @@ Qwen Code is an open-source AI agent for the terminal, optimized for [Qwen3-Code
38
38
  #### Linux / macOS
39
39
 
40
40
  ```bash
41
- curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash
41
+ bash -c "$(curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh)"
42
42
  ```
43
43
 
44
44
  #### Windows (Run as Administrator CMD)
package/cli.js CHANGED
@@ -157672,7 +157672,7 @@ __export(geminiContentGenerator_exports, {
157672
157672
  createGeminiContentGenerator: () => createGeminiContentGenerator
157673
157673
  });
157674
157674
  function createGeminiContentGenerator(config2, gcConfig) {
157675
- const version2 = "0.12.0";
157675
+ const version2 = "0.12.1-preview.0";
157676
157676
  const userAgent2 = config2.userAgent || `QwenCode/${version2} (${process.platform}; ${process.arch})`;
157677
157677
  const baseHeaders = {
157678
157678
  "User-Agent": userAgent2
@@ -219907,7 +219907,8 @@ var init_edit = __esm({
219907
219907
  * It needs to calculate the diff to show the user.
219908
219908
  */
219909
219909
  async shouldConfirmExecute(abortSignal) {
219910
- if (this.config.getApprovalMode() === ApprovalMode.AUTO_EDIT) {
219910
+ const mode = this.config.getApprovalMode();
219911
+ if (mode === ApprovalMode.AUTO_EDIT || mode === ApprovalMode.YOLO) {
219911
219912
  return false;
219912
219913
  }
219913
219914
  let editData;
@@ -223773,6 +223774,9 @@ var init_oauth_utils = __esm({
223773
223774
  const authServerMetadata2 = await this.discoverAuthorizationServerMetadata(authServerUrl);
223774
223775
  if (authServerMetadata2) {
223775
223776
  const config2 = this.metadataToOAuthConfig(authServerMetadata2);
223777
+ if (resourceMetadata.scopes_supported?.length) {
223778
+ config2.scopes = resourceMetadata.scopes_supported;
223779
+ }
223776
223780
  if (authServerMetadata2.registration_endpoint) {
223777
223781
  debugLogger50.debug(`Dynamic client registration is supported at: ${authServerMetadata2.registration_endpoint}`);
223778
223782
  }
@@ -223825,7 +223829,11 @@ var init_oauth_utils = __esm({
223825
223829
  const authServerUrl = resourceMetadata.authorization_servers[0];
223826
223830
  const authServerMetadata = await this.discoverAuthorizationServerMetadata(authServerUrl);
223827
223831
  if (authServerMetadata) {
223828
- return this.metadataToOAuthConfig(authServerMetadata);
223832
+ const config2 = this.metadataToOAuthConfig(authServerMetadata);
223833
+ if (resourceMetadata.scopes_supported?.length) {
223834
+ config2.scopes = resourceMetadata.scopes_supported;
223835
+ }
223836
+ return config2;
223829
223837
  }
223830
223838
  return null;
223831
223839
  }
@@ -231830,7 +231838,8 @@ var init_write_file = __esm({
231830
231838
  return `Writing to ${shortenPath(relativePath)}`;
231831
231839
  }
231832
231840
  async shouldConfirmExecute(_abortSignal) {
231833
- if (this.config.getApprovalMode() === ApprovalMode.AUTO_EDIT) {
231841
+ const mode = this.config.getApprovalMode();
231842
+ if (mode === ApprovalMode.AUTO_EDIT || mode === ApprovalMode.YOLO) {
231834
231843
  return false;
231835
231844
  }
231836
231845
  const correctedContentResult = await getCorrectedFileContent(this.config, this.params.file_path, this.params.content);
@@ -309532,7 +309541,7 @@ var init_zh = __esm({
309532
309541
  'Theme "{{themeName}}" not found.': '\u672A\u627E\u5230\u4E3B\u9898 "{{themeName}}"\u3002',
309533
309542
  'Theme "{{themeName}}" not found in selected scope.': '\u5728\u6240\u9009\u4F5C\u7528\u57DF\u4E2D\u672A\u627E\u5230\u4E3B\u9898 "{{themeName}}"\u3002',
309534
309543
  "Clear conversation history and free up context": "\u6E05\u9664\u5BF9\u8BDD\u5386\u53F2\u5E76\u91CA\u653E\u4E0A\u4E0B\u6587",
309535
- "Compresses the context by replacing it with a summary.": "\u901A\u8FC7\u7528\u6458\u8981\u66FF\u6362\u6765\u538B\u7F29\u4E0A\u4E0B\u6587",
309544
+ "Compresses the context by replacing it with a summary.": "\u901A\u8FC7\u6458\u8981\u66FF\u6362\u6765\u538B\u7F29\u4E0A\u4E0B\u6587",
309536
309545
  "open full Qwen Code documentation in your browser": "\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u5B8C\u6574\u7684 Qwen Code \u6587\u6863",
309537
309546
  "Configuration not available.": "\u914D\u7F6E\u4E0D\u53EF\u7528",
309538
309547
  "change the auth method": "\u66F4\u6539\u8BA4\u8BC1\u65B9\u6CD5",
@@ -381722,7 +381731,8 @@ var SETTINGS_SCHEMA = {
381722
381731
  requiresRestart: true,
381723
381732
  default: void 0,
381724
381733
  description: "A list of MCP servers to allow.",
381725
- showInDialog: false
381734
+ showInDialog: false,
381735
+ mergeStrategy: "concat" /* CONCAT */
381726
381736
  },
381727
381737
  excluded: {
381728
381738
  type: "array",
@@ -381731,7 +381741,8 @@ var SETTINGS_SCHEMA = {
381731
381741
  requiresRestart: true,
381732
381742
  default: void 0,
381733
381743
  description: "A list of MCP servers to exclude.",
381734
- showInDialog: false
381744
+ showInDialog: false,
381745
+ mergeStrategy: "concat" /* CONCAT */
381735
381746
  }
381736
381747
  }
381737
381748
  },
@@ -390461,7 +390472,7 @@ __name(getPackageJson, "getPackageJson");
390461
390472
  // packages/cli/src/utils/version.ts
390462
390473
  async function getCliVersion() {
390463
390474
  const pkgJson = await getPackageJson();
390464
- return "0.12.0";
390475
+ return "0.12.1-preview.0";
390465
390476
  }
390466
390477
  __name(getCliVersion, "getCliVersion");
390467
390478
 
@@ -398022,7 +398033,7 @@ var formatDuration = /* @__PURE__ */ __name((milliseconds) => {
398022
398033
 
398023
398034
  // packages/cli/src/generated/git-commit.ts
398024
398035
  init_esbuild_shims();
398025
- var GIT_COMMIT_INFO = "426e9c24";
398036
+ var GIT_COMMIT_INFO = "9c3e64d2";
398026
398037
 
398027
398038
  // packages/cli/src/utils/systemInfo.ts
398028
398039
  async function getNpmVersion() {
@@ -428880,7 +428891,7 @@ function useTextBuffer({
428880
428891
  const openInExternalEditor = (0, import_react46.useCallback)(
428881
428892
  async (opts = {}) => {
428882
428893
  const editor = opts.editor ?? process.env["VISUAL"] ?? process.env["EDITOR"] ?? (process.platform === "win32" ? "notepad" : "vi");
428883
- const tmpDir = fs99.mkdtempSync(pathMod.join(os35.tmpdir(), "gemini-edit-"));
428894
+ const tmpDir = fs99.mkdtempSync(pathMod.join(os35.tmpdir(), "qwen-edit-"));
428884
428895
  const filePath = pathMod.join(tmpDir, "buffer.txt");
428885
428896
  fs99.writeFileSync(filePath, text, "utf8");
428886
428897
  dispatch({ type: "create_undo_snapshot" });
@@ -438854,7 +438865,7 @@ var ServerDetailStep = /* @__PURE__ */ __name(({
438854
438865
  ] }),
438855
438866
  /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(Box_default, { children: [
438856
438867
  /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Box_default, { width: LABEL_WIDTH, children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Text3, { color: theme.text.primary, children: t4("Source:") }) }),
438857
- /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Text3, { color: theme.text.primary, children: server.scope === "user" ? t4("User Settings") : server.scope === "workspace" ? t4("Workspace Settings") : t4("Extension") }) })
438868
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Text3, { color: theme.text.primary, children: server.source === "user" ? t4("User Settings") : server.source === "project" ? t4("Workspace Settings") : t4("Extension") }) })
438858
438869
  ] }),
438859
438870
  /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(Box_default, { children: [
438860
438871
  /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Box_default, { width: LABEL_WIDTH, children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Text3, { color: theme.text.primary, children: t4("Command:") }) }),
@@ -439280,14 +439291,10 @@ var MCPManagementDialog = /* @__PURE__ */ __name(({
439280
439291
  let source2 = "user";
439281
439292
  if (serverConfig.extensionName) {
439282
439293
  source2 = "extension";
439283
- }
439284
- let scope = "user";
439285
- if (serverConfig.extensionName) {
439286
- scope = "extension";
439287
439294
  } else if (workspaceSettings.mcpServers?.[name3]) {
439288
- scope = "workspace";
439295
+ source2 = "project";
439289
439296
  } else if (userSettings.mcpServers?.[name3]) {
439290
- scope = "user";
439297
+ source2 = "user";
439291
439298
  }
439292
439299
  const isDisabled = config2.isMcpServerDisabled(name3);
439293
439300
  const invalidToolCount = serverTools.filter(
@@ -439297,7 +439304,6 @@ var MCPManagementDialog = /* @__PURE__ */ __name(({
439297
439304
  name: name3,
439298
439305
  status,
439299
439306
  source: source2,
439300
- scope,
439301
439307
  config: serverConfig,
439302
439308
  toolCount: serverTools.length,
439303
439309
  invalidToolCount,
@@ -439463,13 +439469,13 @@ var MCPManagementDialog = /* @__PURE__ */ __name(({
439463
439469
  const server = selectedServer;
439464
439470
  const settings = loadSettings();
439465
439471
  let targetScope = "user";
439466
- if (server.scope === "extension") {
439472
+ if (server.source === "extension") {
439467
439473
  debugLogger120.warn(
439468
439474
  `Cannot disable extension MCP server '${server.name}'`
439469
439475
  );
439470
439476
  setIsLoading(false);
439471
439477
  return;
439472
- } else if (server.scope === "workspace") {
439478
+ } else if (server.source === "project") {
439473
439479
  targetScope = "workspace";
439474
439480
  }
439475
439481
  const scopeSettings = settings.forScope(
@@ -446703,7 +446709,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
446703
446709
  const userMessageTimestamp = Date.now();
446704
446710
  if (!options2?.isContinuation) {
446705
446711
  setModelSwitchedFromQuotaError(false);
446706
- if (pendingRetryCountdownItemRef.current) {
446712
+ if (pendingRetryCountdownItemRef.current || pendingRetryErrorItemRef.current) {
446707
446713
  clearRetryCountdown();
446708
446714
  }
446709
446715
  }
@@ -446821,6 +446827,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
446821
446827
  handleLoopDetectedEvent,
446822
446828
  clearRetryCountdown,
446823
446829
  pendingRetryCountdownItemRef,
446830
+ pendingRetryErrorItemRef,
446824
446831
  setPendingRetryErrorItem
446825
446832
  ]
446826
446833
  );
@@ -456633,7 +456640,7 @@ var QwenAgent = class {
456633
456640
  async initialize(args) {
456634
456641
  this.clientCapabilities = args.clientCapabilities;
456635
456642
  const authMethods = buildAuthMethods();
456636
- const version2 = "0.12.0";
456643
+ const version2 = "0.12.1-preview.0";
456637
456644
  return {
456638
456645
  protocolVersion: PROTOCOL_VERSION,
456639
456646
  agentInfo: {
@@ -457321,6 +457328,17 @@ function setWindowTitle(title, settings) {
457321
457328
  __name(setWindowTitle, "setWindowTitle");
457322
457329
 
457323
457330
  // packages/cli/index.ts
457331
+ process.on("uncaughtException", (error40) => {
457332
+ if (process.platform === "win32" && error40 instanceof Error && error40.message === "Cannot resize a pty that has already exited") {
457333
+ return;
457334
+ }
457335
+ if (error40 instanceof Error) {
457336
+ writeStderrLine(error40.stack ?? error40.message);
457337
+ } else {
457338
+ writeStderrLine(String(error40));
457339
+ }
457340
+ process.exit(1);
457341
+ });
457324
457342
  main().catch((error40) => {
457325
457343
  if (error40 instanceof FatalError) {
457326
457344
  let errorMessage = error40.message;
package/locales/zh.js CHANGED
@@ -138,7 +138,7 @@ export default {
138
138
  '在所选作用域中未找到主题 "{{themeName}}"。',
139
139
  'Clear conversation history and free up context': '清除对话历史并释放上下文',
140
140
  'Compresses the context by replacing it with a summary.':
141
- '通过用摘要替换来压缩上下文',
141
+ '通过摘要替换来压缩上下文',
142
142
  'open full Qwen Code documentation in your browser':
143
143
  '在浏览器中打开完整的 Qwen Code 文档',
144
144
  'Configuration not available.': '配置不可用',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qwen-code/qwen-code",
3
- "version": "0.12.0",
3
+ "version": "0.12.1-preview.0",
4
4
  "description": "Qwen Code - AI-powered coding assistant",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,7 +20,7 @@
20
20
  "locales"
21
21
  ],
22
22
  "config": {
23
- "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.12.0"
23
+ "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.12.1-preview.0"
24
24
  },
25
25
  "dependencies": {},
26
26
  "optionalDependencies": {