@qwen-code/qwen-code 0.16.0-preview.0 → 0.16.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.
Files changed (88) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +39 -37
  2. package/bundled/qc-helper/docs/features/_meta.ts +2 -0
  3. package/bundled/qc-helper/docs/features/approval-mode.md +119 -2
  4. package/bundled/qc-helper/docs/features/auto-mode.md +263 -0
  5. package/bundled/qc-helper/docs/features/commands.md +11 -10
  6. package/bundled/qc-helper/docs/features/skills.md +3 -0
  7. package/bundled/qc-helper/docs/features/structured-output.md +309 -0
  8. package/bundled/qc-helper/docs/features/sub-agents.md +47 -5
  9. package/bundled/qc-helper/docs/qwen-serve.md +119 -14
  10. package/bundled/review/SKILL.md +12 -3
  11. package/chunks/{agent-ZNQPH67I.js → agent-K6OWOMBN.js} +9 -11
  12. package/chunks/{anthropicContentGenerator-ICBDZ6R2.js → anthropicContentGenerator-RQJNXJIY.js} +6 -3
  13. package/chunks/{askUserQuestion-WQILGUSQ.js → askUserQuestion-PQPMPNM3.js} +1 -1
  14. package/chunks/{ca-S3XJMT6P.js → ca-UZ7BANMN.js} +3 -3
  15. package/chunks/{chunk-MNPZ2WO6.js → chunk-3T4ZT63H.js} +8685 -3846
  16. package/chunks/{chunk-XVHR7ATJ.js → chunk-4AOCVI6J.js} +1 -0
  17. package/chunks/{chunk-JHMX4QTD.js → chunk-4J63U5QO.js} +16 -348
  18. package/chunks/{chunk-AEJ2DKLP.js → chunk-C6WMLUNB.js} +1 -1
  19. package/chunks/{chunk-PPHYLJSS.js → chunk-CAVZVZX6.js} +2 -2
  20. package/chunks/{chunk-VTPOO6GV.js → chunk-CSWBPY3P.js} +1 -1
  21. package/chunks/{chunk-NAID3ZWF.js → chunk-DMIMF3CG.js} +1 -1
  22. package/chunks/{chunk-2B7UBDY5.js → chunk-GGNTZ2NH.js} +90 -19
  23. package/chunks/chunk-L34E6AGL.js +19126 -0
  24. package/chunks/{chunk-EDYSNFEM.js → chunk-L5E26RN6.js} +2 -2
  25. package/chunks/{chunk-CW44BRRA.js → chunk-MAY32HXD.js} +375 -0
  26. package/chunks/{chunk-7QXHXMC6.js → chunk-NOAHME6A.js} +96 -20
  27. package/chunks/{chunk-FZIUV27X.js → chunk-PVVL5Q3W.js} +31 -0
  28. package/chunks/{chunk-YHEAJFCI.js → chunk-USE2VQ5P.js} +3 -0
  29. package/chunks/chunk-VMOAQVBP.js +379 -0
  30. package/chunks/{chunk-C3LHPHN2.js → chunk-WCZWAKFG.js} +792 -139
  31. package/chunks/{chunk-JYQUJ5DS.js → chunk-YJLGXDQJ.js} +1 -1
  32. package/chunks/{contextCommand-IGBCEXI4.js → contextCommand-7CPNXBLO.js} +11 -13
  33. package/chunks/{cron-create-AVI3Q267.js → cron-create-IGYXQVG4.js} +27 -1
  34. package/chunks/{cron-delete-ZCEGDXXV.js → cron-delete-ETKIZCWT.js} +1 -1
  35. package/chunks/{cron-list-VN653OK5.js → cron-list-BVCUSWRU.js} +1 -1
  36. package/chunks/{de-MNR4SMAI.js → de-V4IE2OOZ.js} +3 -3
  37. package/chunks/{dist-RRYNPBOE.js → dist-4L54HRX2.js} +2 -2
  38. package/chunks/{dist-WP4AH3VK.js → dist-BXDUQ2QY.js} +1 -1
  39. package/chunks/{dist-M6GFCZ7S.js → dist-MN2PDDPR.js} +1 -1
  40. package/chunks/{edit-74Q4AFHQ.js → edit-CBM5NDVK.js} +22 -12
  41. package/chunks/{en-FIUWJSZR.js → en-HGJ2SPLM.js} +4 -3
  42. package/chunks/{enter-worktree-H72HXC7D.js → enter-worktree-XABKPLO6.js} +35 -11
  43. package/chunks/{exit-worktree-FGIQO3S3.js → exit-worktree-56MN2PCL.js} +35 -11
  44. package/chunks/{exitPlanMode-NBR2PK2D.js → exitPlanMode-YDNPCSCJ.js} +9 -11
  45. package/chunks/{fr-OFJFHLCR.js → fr-CJULI7ZX.js} +3 -3
  46. package/chunks/{geminiContentGenerator-33RP4WKD.js → geminiContentGenerator-ZGPNBFDS.js} +1 -1
  47. package/chunks/{glob-WEE3CJL6.js → glob-ZHA35VO5.js} +9 -11
  48. package/chunks/{grep-DZKSBFZK.js → grep-RV6V6T52.js} +9 -11
  49. package/chunks/{ja-V6OQ6VL7.js → ja-L7CHRQEW.js} +3 -3
  50. package/chunks/{ls-6F3VSP6S.js → ls-7HD6XG3V.js} +1 -1
  51. package/chunks/{lsp-67Y7DJN5.js → lsp-ZZSFCIWD.js} +1 -1
  52. package/chunks/{monitor-EDZWEZVS.js → monitor-5G2OBGE5.js} +21 -11
  53. package/chunks/notebook-edit-XUBTCT6L.js +756 -0
  54. package/chunks/{openaiContentGenerator-5NQG3W64.js → openaiContentGenerator-POYAZQ6I.js} +9 -8
  55. package/chunks/{pt-ZLE6SA4A.js → pt-M6JULLEQ.js} +3 -3
  56. package/chunks/{qwenContentGenerator-4DPUUS6R.js → qwenContentGenerator-2E4H56DK.js} +11 -13
  57. package/chunks/{qwenOAuth2-JE7H47TE.js → qwenOAuth2-EEJGROP7.js} +7 -1
  58. package/chunks/{read-file-CQOF7BQ2.js → read-file-3JIOOXFT.js} +4 -5
  59. package/chunks/{ripGrep-KR5LKGTI.js → ripGrep-LEI3L6PM.js} +9 -11
  60. package/chunks/{ru-A4OHIUNN.js → ru-QILM4HBC.js} +3 -3
  61. package/chunks/{send-message-GB4AQZNC.js → send-message-ULK4MQXJ.js} +22 -1
  62. package/chunks/{serve-GAD2PEST.js → serve-CFVRMD4W.js} +8368 -1746
  63. package/chunks/{shell-E2HMCBGR.js → shell-3B5DZ437.js} +9 -11
  64. package/chunks/{skill-KDZH6UZ6.js → skill-STSZUBXR.js} +19 -6
  65. package/chunks/{src-LY4RU5AI.js → src-ROFXAPEP.js} +203 -13
  66. package/chunks/{syntheticOutput-HFL3DE7R.js → syntheticOutput-IS2X5OZ2.js} +2 -2
  67. package/chunks/{task-stop-ZQF26RXS.js → task-stop-7QSJGSSP.js} +1 -1
  68. package/chunks/{todoWrite-U4SC643O.js → todoWrite-7CVACFUX.js} +2 -2
  69. package/chunks/{tool-search-U4XQVLFU.js → tool-search-ARWOD3GD.js} +4 -5
  70. package/chunks/{web-fetch-BRWZ4WSE.js → web-fetch-ENQ2I5JA.js} +5 -2
  71. package/chunks/{write-file-NBLRMNGB.js → write-file-6MRT7TEW.js} +19 -12
  72. package/chunks/{zh-V32QONGV.js → zh-PWL2NKY3.js} +4 -3
  73. package/chunks/{zh-TW-552S24LR.js → zh-TW-S3YGWICZ.js} +4 -3
  74. package/cli.js +13298 -31697
  75. package/locales/ca.js +4 -5
  76. package/locales/de.js +4 -5
  77. package/locales/en.js +6 -5
  78. package/locales/fr.js +4 -5
  79. package/locales/ja.js +4 -5
  80. package/locales/pt.js +4 -5
  81. package/locales/ru.js +4 -5
  82. package/locales/zh-TW.js +5 -4
  83. package/locales/zh.js +5 -4
  84. package/package.json +2 -2
  85. package/chunks/chunk-3MBY4GKN.js +0 -350
  86. package/chunks/chunk-5P5XGNYH.js +0 -93
  87. package/chunks/chunk-SYCJMSIJ.js +0 -82
  88. package/chunks/chunk-Y6Z2O3WR.js +0 -33
@@ -0,0 +1,379 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ resolveBundleDir
5
+ } from "./chunk-3T4ZT63H.js";
6
+ import {
7
+ Storage
8
+ } from "./chunk-XP27SJMH.js";
9
+ import {
10
+ init_esbuild_shims
11
+ } from "./chunk-A4BMJM77.js";
12
+ import {
13
+ __glob,
14
+ __name
15
+ } from "./chunk-J2S4EL5Y.js";
16
+
17
+ // packages/cli/src/utils/stdioHelpers.ts
18
+ init_esbuild_shims();
19
+ var writeStdoutLine = /* @__PURE__ */ __name((message) => {
20
+ process.stdout.write(message.endsWith("\n") ? message : `${message}
21
+ `);
22
+ }, "writeStdoutLine");
23
+ var writeStderrLine = /* @__PURE__ */ __name((message) => {
24
+ process.stderr.write(message.endsWith("\n") ? message : `${message}
25
+ `);
26
+ }, "writeStderrLine");
27
+ var clearScreen = /* @__PURE__ */ __name(() => {
28
+ console.clear();
29
+ }, "clearScreen");
30
+
31
+ // packages/cli/src/i18n/index.ts
32
+ init_esbuild_shims();
33
+ import * as fs from "node:fs";
34
+ import * as path from "node:path";
35
+ import { pathToFileURL } from "node:url";
36
+
37
+ // packages/cli/src/i18n/languages.ts
38
+ init_esbuild_shims();
39
+ var SUPPORTED_LANGUAGES = [
40
+ {
41
+ code: "en",
42
+ id: "en-US",
43
+ fullName: "English",
44
+ nativeName: "English"
45
+ },
46
+ {
47
+ code: "zh-TW",
48
+ id: "zh-TW",
49
+ fullName: "Traditional Chinese",
50
+ nativeName: "\u7E41\u9AD4\u4E2D\u6587",
51
+ strictParity: true
52
+ },
53
+ {
54
+ code: "zh",
55
+ id: "zh-CN",
56
+ fullName: "Chinese",
57
+ nativeName: "\u4E2D\u6587",
58
+ strictParity: true
59
+ },
60
+ {
61
+ code: "ru",
62
+ id: "ru-RU",
63
+ fullName: "Russian",
64
+ nativeName: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439"
65
+ },
66
+ {
67
+ code: "de",
68
+ id: "de-DE",
69
+ fullName: "German",
70
+ nativeName: "Deutsch"
71
+ },
72
+ {
73
+ code: "ja",
74
+ id: "ja-JP",
75
+ fullName: "Japanese",
76
+ nativeName: "\u65E5\u672C\u8A9E"
77
+ },
78
+ {
79
+ code: "pt",
80
+ id: "pt-BR",
81
+ fullName: "Portuguese",
82
+ nativeName: "Portugu\xEAs"
83
+ },
84
+ {
85
+ code: "fr",
86
+ id: "fr-FR",
87
+ fullName: "French",
88
+ nativeName: "Fran\xE7ais"
89
+ },
90
+ {
91
+ code: "ca",
92
+ id: "ca-ES",
93
+ fullName: "Catalan",
94
+ nativeName: "Catal\xE0"
95
+ }
96
+ ];
97
+ function normalizeLanguageCandidate(input) {
98
+ return input.trim().replace(/_/g, "-").toLowerCase();
99
+ }
100
+ __name(normalizeLanguageCandidate, "normalizeLanguageCandidate");
101
+ function matchesLocaleToken(candidate, token) {
102
+ return candidate === token || candidate.startsWith(`${token}-`) || candidate.startsWith(`${token}.`) || candidate.startsWith(`${token}@`);
103
+ }
104
+ __name(matchesLocaleToken, "matchesLocaleToken");
105
+ function getMatchedLocaleTokenLength(candidate, language) {
106
+ const code = language.code.toLowerCase();
107
+ const id = language.id.toLowerCase();
108
+ if (matchesLocaleToken(candidate, id)) {
109
+ return id.length;
110
+ }
111
+ if (matchesLocaleToken(candidate, code)) {
112
+ return code.length;
113
+ }
114
+ return void 0;
115
+ }
116
+ __name(getMatchedLocaleTokenLength, "getMatchedLocaleTokenLength");
117
+ function resolveSupportedLanguage(input) {
118
+ const normalized = normalizeLanguageCandidate(input);
119
+ if (!normalized) {
120
+ return void 0;
121
+ }
122
+ let bestMatch;
123
+ for (const language of SUPPORTED_LANGUAGES) {
124
+ if (normalized === language.fullName.toLowerCase() || language.nativeName && normalized === language.nativeName.toLowerCase()) {
125
+ return language.code;
126
+ }
127
+ const tokenLength = getMatchedLocaleTokenLength(normalized, language);
128
+ if (tokenLength !== void 0 && (!bestMatch || tokenLength > bestMatch.tokenLength)) {
129
+ bestMatch = { code: language.code, tokenLength };
130
+ }
131
+ }
132
+ return bestMatch?.code;
133
+ }
134
+ __name(resolveSupportedLanguage, "resolveSupportedLanguage");
135
+ function getLanguageNameFromLocale(locale) {
136
+ const resolved = resolveSupportedLanguage(locale);
137
+ const lang = resolved ? SUPPORTED_LANGUAGES.find((language) => language.code === resolved) : void 0;
138
+ return lang?.fullName || "English";
139
+ }
140
+ __name(getLanguageNameFromLocale, "getLanguageNameFromLocale");
141
+ function getLanguageSettingsOptions() {
142
+ return [
143
+ { value: "auto", label: "Auto (detect from system)" },
144
+ ...SUPPORTED_LANGUAGES.map((l) => ({
145
+ value: l.code,
146
+ label: l.nativeName ? `${l.nativeName} (${l.fullName})` : `${l.fullName} (${l.id})`
147
+ }))
148
+ ];
149
+ }
150
+ __name(getLanguageSettingsOptions, "getLanguageSettingsOptions");
151
+ function getSupportedLanguageIds(separator = "|") {
152
+ return SUPPORTED_LANGUAGES.map((l) => l.id).join(separator);
153
+ }
154
+ __name(getSupportedLanguageIds, "getSupportedLanguageIds");
155
+
156
+ // packages/cli/src/i18n/translationDict.ts
157
+ init_esbuild_shims();
158
+ function getTranslationModuleExport(module) {
159
+ return Object.prototype.hasOwnProperty.call(module, "default") ? module["default"] : module;
160
+ }
161
+ __name(getTranslationModuleExport, "getTranslationModuleExport");
162
+ function isTranslationDict(value) {
163
+ return value !== null && typeof value === "object" && !Array.isArray(value) && Object.keys(value).length > 0;
164
+ }
165
+ __name(isTranslationDict, "isTranslationDict");
166
+
167
+ // packages/cli/src/i18n/mustTranslateKeys.ts
168
+ init_esbuild_shims();
169
+
170
+ // import("./locales/**/*.js") in packages/cli/src/i18n/index.ts
171
+ var globImport_locales_js = __glob({
172
+ "./locales/ca.js": () => import("./ca-UZ7BANMN.js"),
173
+ "./locales/de.js": () => import("./de-V4IE2OOZ.js"),
174
+ "./locales/en.js": () => import("./en-HGJ2SPLM.js"),
175
+ "./locales/fr.js": () => import("./fr-CJULI7ZX.js"),
176
+ "./locales/ja.js": () => import("./ja-L7CHRQEW.js"),
177
+ "./locales/pt.js": () => import("./pt-M6JULLEQ.js"),
178
+ "./locales/ru.js": () => import("./ru-QILM4HBC.js"),
179
+ "./locales/zh-TW.js": () => import("./zh-TW-S3YGWICZ.js"),
180
+ "./locales/zh.js": () => import("./zh-PWL2NKY3.js")
181
+ });
182
+
183
+ // packages/cli/src/i18n/index.ts
184
+ var currentLanguage = "en";
185
+ var translations = {};
186
+ var translationCache = {};
187
+ var loadingPromises = {};
188
+ var getBuiltinLocalesDir = /* @__PURE__ */ __name(() => path.join(resolveBundleDir(import.meta.url), "locales"), "getBuiltinLocalesDir");
189
+ var getUserLocalesDir = /* @__PURE__ */ __name(() => path.join(Storage.getGlobalQwenDir(), "locales"), "getUserLocalesDir");
190
+ var getLocalePath = /* @__PURE__ */ __name((lang, useUserDir = false) => {
191
+ const baseDir = useUserDir ? getUserLocalesDir() : getBuiltinLocalesDir();
192
+ return path.join(baseDir, `${lang}.js`);
193
+ }, "getLocalePath");
194
+ function detectSystemLanguage() {
195
+ const envLang = process.env["QWEN_CODE_LANG"] || process.env["LANG"];
196
+ if (envLang) {
197
+ const resolved = resolveSupportedLanguage(envLang);
198
+ if (resolved) {
199
+ return resolved;
200
+ }
201
+ }
202
+ try {
203
+ const locale = Intl.DateTimeFormat().resolvedOptions().locale;
204
+ const resolved = resolveSupportedLanguage(locale);
205
+ if (resolved) {
206
+ return resolved;
207
+ }
208
+ } catch {
209
+ }
210
+ return "en";
211
+ }
212
+ __name(detectSystemLanguage, "detectSystemLanguage");
213
+ async function tryImportTranslations(moduleSpecifier) {
214
+ try {
215
+ const module = await import(moduleSpecifier);
216
+ const result = getTranslationModuleExport(module);
217
+ if (isTranslationDict(result)) {
218
+ return { translations: result };
219
+ }
220
+ return {
221
+ error: new Error("Module loaded but result is empty or invalid")
222
+ };
223
+ } catch (error) {
224
+ return {
225
+ error: error instanceof Error ? error : new Error(String(error))
226
+ };
227
+ }
228
+ }
229
+ __name(tryImportTranslations, "tryImportTranslations");
230
+ async function tryImportBundledTranslations(lang) {
231
+ try {
232
+ const module = await globImport_locales_js(`./locales/${lang}.js`);
233
+ const result = getTranslationModuleExport(module);
234
+ if (isTranslationDict(result)) {
235
+ return { translations: result };
236
+ }
237
+ return {
238
+ error: new Error("Module loaded but result is empty or invalid")
239
+ };
240
+ } catch (error) {
241
+ return {
242
+ error: error instanceof Error ? error : new Error(String(error))
243
+ };
244
+ }
245
+ }
246
+ __name(tryImportBundledTranslations, "tryImportBundledTranslations");
247
+ async function loadTranslationsAsync(lang) {
248
+ if (translationCache[lang]) {
249
+ return translationCache[lang];
250
+ }
251
+ const existingPromise = loadingPromises[lang];
252
+ if (existingPromise) {
253
+ return existingPromise;
254
+ }
255
+ const loadPromise = (async () => {
256
+ const userJsPath = getLocalePath(lang, true);
257
+ if (fs.existsSync(getUserLocalesDir()) && fs.existsSync(userJsPath)) {
258
+ const userResult = await tryImportTranslations(
259
+ pathToFileURL(userJsPath).href
260
+ );
261
+ if (userResult.translations) {
262
+ translationCache[lang] = userResult.translations;
263
+ return userResult.translations;
264
+ }
265
+ writeStderrLine(
266
+ `Failed to load translations from user directory for ${lang}: ${userResult.error.message}`
267
+ );
268
+ }
269
+ const builtinJsPath = getLocalePath(lang, false);
270
+ const builtinModuleSpecifiers = [];
271
+ if (fs.existsSync(getBuiltinLocalesDir()) && fs.existsSync(builtinJsPath)) {
272
+ builtinModuleSpecifiers.push(pathToFileURL(builtinJsPath).href);
273
+ }
274
+ let lastBuiltinError;
275
+ for (const moduleSpecifier of builtinModuleSpecifiers) {
276
+ const builtinResult = await tryImportTranslations(moduleSpecifier);
277
+ if (builtinResult.translations) {
278
+ translationCache[lang] = builtinResult.translations;
279
+ return builtinResult.translations;
280
+ }
281
+ lastBuiltinError = builtinResult.error;
282
+ }
283
+ const bundledBuiltinResult = await tryImportBundledTranslations(lang);
284
+ if (bundledBuiltinResult.translations) {
285
+ translationCache[lang] = bundledBuiltinResult.translations;
286
+ return bundledBuiltinResult.translations;
287
+ }
288
+ lastBuiltinError = bundledBuiltinResult.error;
289
+ if (lastBuiltinError) {
290
+ writeStderrLine(
291
+ `Failed to load JS translations for ${lang}: ${lastBuiltinError.message}`
292
+ );
293
+ }
294
+ translationCache[lang] = {};
295
+ return {};
296
+ })();
297
+ loadingPromises[lang] = loadPromise;
298
+ loadPromise.finally(() => {
299
+ delete loadingPromises[lang];
300
+ });
301
+ return loadPromise;
302
+ }
303
+ __name(loadTranslationsAsync, "loadTranslationsAsync");
304
+ function interpolate(template, params) {
305
+ if (!params) return template;
306
+ return template.replace(
307
+ /\{\{(\w+)\}\}/g,
308
+ (match, key) => params[key] ?? match
309
+ );
310
+ }
311
+ __name(interpolate, "interpolate");
312
+ function resolveLanguage(lang) {
313
+ if (lang === "auto") {
314
+ return detectSystemLanguage();
315
+ }
316
+ return resolveSupportedLanguage(lang) ?? lang;
317
+ }
318
+ __name(resolveLanguage, "resolveLanguage");
319
+ async function setLanguageAsync(lang) {
320
+ currentLanguage = resolveLanguage(lang);
321
+ translations = await loadTranslationsAsync(currentLanguage);
322
+ }
323
+ __name(setLanguageAsync, "setLanguageAsync");
324
+ function getCurrentLanguage() {
325
+ return currentLanguage;
326
+ }
327
+ __name(getCurrentLanguage, "getCurrentLanguage");
328
+ function t(key, params) {
329
+ const translation = translations[key] ?? key;
330
+ if (Array.isArray(translation)) {
331
+ return key;
332
+ }
333
+ return interpolate(translation, params);
334
+ }
335
+ __name(t, "t");
336
+ function ta(key) {
337
+ const translation = translations[key];
338
+ if (Array.isArray(translation)) {
339
+ return translation;
340
+ }
341
+ return [];
342
+ }
343
+ __name(ta, "ta");
344
+ async function initializeI18n(lang) {
345
+ await setLanguageAsync(lang ?? "auto");
346
+ }
347
+ __name(initializeI18n, "initializeI18n");
348
+
349
+ export {
350
+ writeStdoutLine,
351
+ writeStderrLine,
352
+ clearScreen,
353
+ SUPPORTED_LANGUAGES,
354
+ resolveSupportedLanguage,
355
+ getLanguageNameFromLocale,
356
+ getLanguageSettingsOptions,
357
+ getSupportedLanguageIds,
358
+ detectSystemLanguage,
359
+ setLanguageAsync,
360
+ getCurrentLanguage,
361
+ t,
362
+ ta,
363
+ initializeI18n
364
+ };
365
+ /**
366
+ * @license
367
+ * Copyright 2025 Qwen Team
368
+ * SPDX-License-Identifier: Apache-2.0
369
+ */
370
+ /**
371
+ * @license
372
+ * Copyright 2025 Qwen team
373
+ * SPDX-License-Identifier: Apache-2.0
374
+ */
375
+ /**
376
+ * @license
377
+ * Copyright 2026 Qwen Team
378
+ * SPDX-License-Identifier: Apache-2.0
379
+ */