@qwen-code/qwen-code 0.7.0 → 0.7.1

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 (2) hide show
  1. package/cli.js +65 -72
  2. package/package.json +2 -2
package/cli.js CHANGED
@@ -131816,11 +131816,10 @@ var init_loggingContentGenerator = __esm({
131816
131816
  config;
131817
131817
  openaiLogger;
131818
131818
  schemaCompliance;
131819
- constructor(wrapped, config2) {
131819
+ constructor(wrapped, config2, generatorConfig) {
131820
131820
  this.wrapped = wrapped;
131821
131821
  this.config = config2;
131822
- const generatorConfig = this.config.getContentGeneratorConfig();
131823
- if (generatorConfig?.enableOpenAILogging) {
131822
+ if (generatorConfig.enableOpenAILogging) {
131824
131823
  this.openaiLogger = new OpenAILogger(generatorConfig.openAILoggingDir);
131825
131824
  this.schemaCompliance = generatorConfig.schemaCompliance;
131826
131825
  }
@@ -131833,14 +131832,14 @@ var init_loggingContentGenerator = __esm({
131833
131832
  logApiRequest(this.config, new ApiRequestEvent(model, promptId, requestText));
131834
131833
  }
131835
131834
  _logApiResponse(responseId, durationMs, model, prompt_id, usageMetadata, responseText) {
131836
- logApiResponse(this.config, new ApiResponseEvent(responseId, model, durationMs, prompt_id, this.config.getContentGeneratorConfig()?.authType, usageMetadata, responseText));
131835
+ logApiResponse(this.config, new ApiResponseEvent(responseId, model, durationMs, prompt_id, this.config.getAuthType(), usageMetadata, responseText));
131837
131836
  }
131838
131837
  _logApiError(responseId, durationMs, error2, model, prompt_id) {
131839
131838
  const errorMessage = error2 instanceof Error ? error2.message : String(error2);
131840
131839
  const errorType = error2?.type || (error2 instanceof Error ? error2.name : "unknown");
131841
131840
  const errorResponseId = error2?.requestID || error2?.request_id || responseId;
131842
131841
  const errorStatus = error2?.code ?? error2?.status ?? (isStructuredError(error2) ? error2.status : void 0);
131843
- logApiError(this.config, new ApiErrorEvent(errorResponseId, model, errorMessage, durationMs, prompt_id, this.config.getContentGeneratorConfig()?.authType, errorType, errorStatus));
131842
+ logApiError(this.config, new ApiErrorEvent(errorResponseId, model, errorMessage, durationMs, prompt_id, this.config.getAuthType(), errorType, errorStatus));
131844
131843
  }
131845
131844
  async generateContent(req, userPromptId) {
131846
131845
  const startTime = Date.now();
@@ -155415,7 +155414,7 @@ __export(geminiContentGenerator_exports, {
155415
155414
  createGeminiContentGenerator: () => createGeminiContentGenerator
155416
155415
  });
155417
155416
  function createGeminiContentGenerator(config2, gcConfig) {
155418
- const version2 = "0.7.0";
155417
+ const version2 = "0.7.1";
155419
155418
  const userAgent2 = config2.userAgent || `QwenCode/${version2} (${process.platform}; ${process.arch})`;
155420
155419
  const baseHeaders = {
155421
155420
  "User-Agent": userAgent2
@@ -155526,38 +155525,38 @@ function validateModelConfig(config2, isStrictModelProvider = false) {
155526
155525
  }
155527
155526
  return { valid: errors.length === 0, errors };
155528
155527
  }
155529
- async function createContentGenerator(config2, gcConfig, isInitialAuth) {
155530
- const validation2 = validateModelConfig(config2, false);
155528
+ async function createContentGenerator(generatorConfig, config2, isInitialAuth) {
155529
+ const validation2 = validateModelConfig(generatorConfig, false);
155531
155530
  if (!validation2.valid) {
155532
155531
  throw new Error(validation2.errors.map((e4) => e4.message).join("\n"));
155533
155532
  }
155534
- if (config2.authType === AuthType2.USE_OPENAI) {
155535
- const { createOpenAIContentGenerator: createOpenAIContentGenerator2 } = await Promise.resolve().then(() => (init_openaiContentGenerator2(), openaiContentGenerator_exports));
155536
- const generator = createOpenAIContentGenerator2(config2, gcConfig);
155537
- return new LoggingContentGenerator(generator, gcConfig);
155533
+ const authType = generatorConfig.authType;
155534
+ if (!authType) {
155535
+ throw new Error("ContentGeneratorConfig must have an authType");
155538
155536
  }
155539
- if (config2.authType === AuthType2.QWEN_OAUTH) {
155537
+ let baseGenerator;
155538
+ if (authType === AuthType2.USE_OPENAI) {
155539
+ const { createOpenAIContentGenerator: createOpenAIContentGenerator2 } = await Promise.resolve().then(() => (init_openaiContentGenerator2(), openaiContentGenerator_exports));
155540
+ baseGenerator = createOpenAIContentGenerator2(generatorConfig, config2);
155541
+ } else if (authType === AuthType2.QWEN_OAUTH) {
155540
155542
  const { getQwenOAuthClient: getQwenOauthClient } = await Promise.resolve().then(() => (init_qwenOAuth2(), qwenOAuth2_exports));
155541
155543
  const { QwenContentGenerator: QwenContentGenerator2 } = await Promise.resolve().then(() => (init_qwenContentGenerator(), qwenContentGenerator_exports));
155542
155544
  try {
155543
- const qwenClient = await getQwenOauthClient(gcConfig, isInitialAuth ? { requireCachedCredentials: true } : void 0);
155544
- const generator = new QwenContentGenerator2(qwenClient, config2, gcConfig);
155545
- return new LoggingContentGenerator(generator, gcConfig);
155545
+ const qwenClient = await getQwenOauthClient(config2, isInitialAuth ? { requireCachedCredentials: true } : void 0);
155546
+ baseGenerator = new QwenContentGenerator2(qwenClient, generatorConfig, config2);
155546
155547
  } catch (error2) {
155547
155548
  throw new Error(`${error2 instanceof Error ? error2.message : String(error2)}`);
155548
155549
  }
155549
- }
155550
- if (config2.authType === AuthType2.USE_ANTHROPIC) {
155550
+ } else if (authType === AuthType2.USE_ANTHROPIC) {
155551
155551
  const { createAnthropicContentGenerator: createAnthropicContentGenerator2 } = await Promise.resolve().then(() => (init_anthropicContentGenerator2(), anthropicContentGenerator_exports));
155552
- const generator = createAnthropicContentGenerator2(config2, gcConfig);
155553
- return new LoggingContentGenerator(generator, gcConfig);
155554
- }
155555
- if (config2.authType === AuthType2.USE_GEMINI || config2.authType === AuthType2.USE_VERTEX_AI) {
155552
+ baseGenerator = createAnthropicContentGenerator2(generatorConfig, config2);
155553
+ } else if (authType === AuthType2.USE_GEMINI || authType === AuthType2.USE_VERTEX_AI) {
155556
155554
  const { createGeminiContentGenerator: createGeminiContentGenerator2 } = await Promise.resolve().then(() => (init_geminiContentGenerator2(), geminiContentGenerator_exports));
155557
- const generator = createGeminiContentGenerator2(config2, gcConfig);
155558
- return new LoggingContentGenerator(generator, gcConfig);
155555
+ baseGenerator = createGeminiContentGenerator2(generatorConfig, config2);
155556
+ } else {
155557
+ throw new Error(`Error creating contentGenerator: Unsupported authType: ${authType}`);
155559
155558
  }
155560
- throw new Error(`Error creating contentGenerator: Unsupported authType: ${config2.authType}`);
155559
+ return new LoggingContentGenerator(baseGenerator, config2, generatorConfig);
155561
155560
  }
155562
155561
  var AuthType2;
155563
155562
  var init_contentGenerator = __esm({
@@ -218902,9 +218901,9 @@ var init_handler2 = __esm({
218902
218901
  if (this.fsw.closed) {
218903
218902
  return;
218904
218903
  }
218905
- const dirname27 = sysPath.dirname(file);
218904
+ const dirname26 = sysPath.dirname(file);
218906
218905
  const basename21 = sysPath.basename(file);
218907
- const parent = this.fsw._getWatchedDir(dirname27);
218906
+ const parent = this.fsw._getWatchedDir(dirname26);
218908
218907
  let prevStats = stats;
218909
218908
  if (parent.has(basename21))
218910
218909
  return;
@@ -218931,7 +218930,7 @@ var init_handler2 = __esm({
218931
218930
  prevStats = newStats2;
218932
218931
  }
218933
218932
  } catch (error2) {
218934
- this.fsw._remove(dirname27, basename21);
218933
+ this.fsw._remove(dirname26, basename21);
218935
218934
  }
218936
218935
  } else if (parent.has(basename21)) {
218937
218936
  const at2 = newStats.atimeMs;
@@ -220231,6 +220230,7 @@ var init_skill_manager = __esm({
220231
220230
  return;
220232
220231
  }
220233
220232
  this.watchStarted = true;
220233
+ await this.ensureUserSkillsDir();
220234
220234
  await this.refreshCache();
220235
220235
  this.updateWatchersFromCache();
220236
220236
  }
@@ -220404,33 +220404,16 @@ var init_skill_manager = __esm({
220404
220404
  }
220405
220405
  }
220406
220406
  updateWatchersFromCache() {
220407
- const desiredPaths = /* @__PURE__ */ new Set();
220408
- for (const level of ["project", "user"]) {
220409
- const baseDir = this.getSkillsBaseDir(level);
220410
- const parentDir = path47.dirname(baseDir);
220411
- if (fsSync2.existsSync(parentDir)) {
220412
- desiredPaths.add(parentDir);
220413
- }
220414
- if (fsSync2.existsSync(baseDir)) {
220415
- desiredPaths.add(baseDir);
220416
- }
220417
- const levelSkills = this.skillsCache?.get(level) || [];
220418
- for (const skill of levelSkills) {
220419
- const skillDir = path47.dirname(skill.filePath);
220420
- if (fsSync2.existsSync(skillDir)) {
220421
- desiredPaths.add(skillDir);
220422
- }
220423
- }
220424
- }
220407
+ const watchTargets = new Set(["project", "user"].map((level) => this.getSkillsBaseDir(level)).filter((baseDir) => fsSync2.existsSync(baseDir)));
220425
220408
  for (const existingPath of this.watchers.keys()) {
220426
- if (!desiredPaths.has(existingPath)) {
220409
+ if (!watchTargets.has(existingPath)) {
220427
220410
  void this.watchers.get(existingPath)?.close().catch((error2) => {
220428
220411
  console.warn(`Failed to close skills watcher for ${existingPath}:`, error2);
220429
220412
  });
220430
220413
  this.watchers.delete(existingPath);
220431
220414
  }
220432
220415
  }
220433
- for (const watchPath of desiredPaths) {
220416
+ for (const watchPath of watchTargets) {
220434
220417
  if (this.watchers.has(watchPath)) {
220435
220418
  continue;
220436
220419
  }
@@ -220457,6 +220440,14 @@ var init_skill_manager = __esm({
220457
220440
  void this.refreshCache().then(() => this.updateWatchersFromCache());
220458
220441
  }, 150);
220459
220442
  }
220443
+ async ensureUserSkillsDir() {
220444
+ const baseDir = this.getSkillsBaseDir("user");
220445
+ try {
220446
+ await fs43.mkdir(baseDir, { recursive: true });
220447
+ } catch (error2) {
220448
+ console.warn(`Failed to create user skills directory at ${baseDir}:`, error2);
220449
+ }
220450
+ }
220460
220451
  };
220461
220452
  }
220462
220453
  });
@@ -221981,7 +221972,7 @@ var init_config3 = __esm({
221981
221972
  toolRegistry;
221982
221973
  promptRegistry;
221983
221974
  subagentManager;
221984
- skillManager;
221975
+ skillManager = null;
221985
221976
  fileSystemService;
221986
221977
  contentGeneratorConfig;
221987
221978
  contentGeneratorConfigSources = {};
@@ -222201,8 +222192,10 @@ var init_config3 = __esm({
222201
222192
  }
222202
222193
  this.promptRegistry = new PromptRegistry();
222203
222194
  this.subagentManager = new SubagentManager(this);
222204
- this.skillManager = new SkillManager(this);
222205
- await this.skillManager.startWatching();
222195
+ if (this.getExperimentalSkills()) {
222196
+ this.skillManager = new SkillManager(this);
222197
+ await this.skillManager.startWatching();
222198
+ }
222206
222199
  if (this.sessionSubagents.length > 0) {
222207
222200
  this.subagentManager.loadSessionSubagents(this.sessionSubagents);
222208
222201
  }
@@ -287457,9 +287450,9 @@ var require_command_exists = __commonJS({
287457
287450
  cleanInput = /* @__PURE__ */ __name(function(s5) {
287458
287451
  var isPathName = /[\\]/.test(s5);
287459
287452
  if (isPathName) {
287460
- var dirname27 = '"' + path111.dirname(s5) + '"';
287453
+ var dirname26 = '"' + path111.dirname(s5) + '"';
287461
287454
  var basename21 = '"' + path111.basename(s5) + '"';
287462
- return dirname27 + ":" + basename21;
287455
+ return dirname26 + ":" + basename21;
287463
287456
  }
287464
287457
  return '"' + s5 + '"';
287465
287458
  }, "cleanInput");
@@ -335075,11 +335068,11 @@ var require_util30 = __commonJS({
335075
335068
  if (files.includes("node_modules") || files.includes("package.json") || files.includes("package.json5") || files.includes("package.yaml") || files.includes("pnpm-workspace.yaml")) {
335076
335069
  return name4;
335077
335070
  }
335078
- const dirname27 = path111.dirname(name4);
335079
- if (dirname27 === name4) {
335071
+ const dirname26 = path111.dirname(name4);
335072
+ if (dirname26 === name4) {
335080
335073
  return original;
335081
335074
  }
335082
- return find(dirname27, original);
335075
+ return find(dirname26, original);
335083
335076
  } catch (error2) {
335084
335077
  if (name4 === original) {
335085
335078
  if (error2.code === "ENOENT") {
@@ -347287,7 +347280,7 @@ import path64 from "node:path";
347287
347280
  // node_modules/tar/dist/esm/list.js
347288
347281
  init_esbuild_shims();
347289
347282
  import fs58 from "node:fs";
347290
- import { dirname as dirname18, parse as parse9 } from "path";
347283
+ import { dirname as dirname17, parse as parse9 } from "path";
347291
347284
 
347292
347285
  // node_modules/tar/dist/esm/make-command.js
347293
347286
  init_esbuild_shims();
@@ -348953,7 +348946,7 @@ var filesFilter = /* @__PURE__ */ __name((opt, files) => {
348953
348946
  if (m3 !== void 0) {
348954
348947
  ret = m3;
348955
348948
  } else {
348956
- ret = mapHas(dirname18(file), root);
348949
+ ret = mapHas(dirname17(file), root);
348957
348950
  }
348958
348951
  }
348959
348952
  map2.set(file, ret);
@@ -350704,7 +350697,7 @@ var checkCwd = /* @__PURE__ */ __name((dir, cb) => {
350704
350697
  cb(er2);
350705
350698
  });
350706
350699
  }, "checkCwd");
350707
- var mkdir5 = /* @__PURE__ */ __name((dir, opt, cb) => {
350700
+ var mkdir6 = /* @__PURE__ */ __name((dir, opt, cb) => {
350708
350701
  dir = normalizeWindowsPath(dir);
350709
350702
  const umask = opt.umask ?? 18;
350710
350703
  const mode = opt.mode | 448;
@@ -351252,7 +351245,7 @@ var Unpack = class extends Parser2 {
351252
351245
  }
351253
351246
  }
351254
351247
  [MKDIR](dir, mode, cb) {
351255
- mkdir5(normalizeWindowsPath(dir), {
351248
+ mkdir6(normalizeWindowsPath(dir), {
351256
351249
  uid: this.uid,
351257
351250
  gid: this.gid,
351258
351251
  processUid: this.processUid,
@@ -354677,18 +354670,18 @@ __name(ui, "ui");
354677
354670
 
354678
354671
  // node_modules/escalade/sync/index.mjs
354679
354672
  init_esbuild_shims();
354680
- import { dirname as dirname21, resolve as resolve19 } from "path";
354673
+ import { dirname as dirname20, resolve as resolve19 } from "path";
354681
354674
  import { readdirSync as readdirSync3, statSync as statSync5 } from "fs";
354682
354675
  function sync_default(start, callback) {
354683
354676
  let dir = resolve19(".", start);
354684
354677
  let tmp, stats = statSync5(dir);
354685
354678
  if (!stats.isDirectory()) {
354686
- dir = dirname21(dir);
354679
+ dir = dirname20(dir);
354687
354680
  }
354688
354681
  while (true) {
354689
354682
  tmp = callback(dir, readdirSync3(dir));
354690
354683
  if (tmp) return resolve19(dir, tmp);
354691
- dir = dirname21(tmp = dir);
354684
+ dir = dirname20(tmp = dir);
354692
354685
  if (tmp === dir) break;
354693
354686
  }
354694
354687
  }
@@ -355731,7 +355724,7 @@ yargsParser.looksLikeNumber = looksLikeNumber;
355731
355724
  var lib_default = yargsParser;
355732
355725
 
355733
355726
  // node_modules/yargs/lib/platform-shims/esm.mjs
355734
- import { basename as basename16, dirname as dirname22, extname as extname5, relative as relative8, resolve as resolve22 } from "path";
355727
+ import { basename as basename16, dirname as dirname21, extname as extname5, relative as relative8, resolve as resolve22 } from "path";
355735
355728
 
355736
355729
  // node_modules/yargs/build/lib/utils/process-argv.js
355737
355730
  init_esbuild_shims();
@@ -355998,7 +355991,7 @@ var esm_default3 = {
355998
355991
  Parser: lib_default,
355999
355992
  path: {
356000
355993
  basename: basename16,
356001
- dirname: dirname22,
355994
+ dirname: dirname21,
356002
355995
  extname: extname5,
356003
355996
  relative: relative8,
356004
355997
  resolve: resolve22
@@ -359522,11 +359515,11 @@ var linkCommand = {
359522
359515
 
359523
359516
  // packages/cli/src/commands/extensions/new.ts
359524
359517
  init_esbuild_shims();
359525
- import { access as access6, cp, mkdir as mkdir6, readdir as readdir9, writeFile as writeFile8 } from "node:fs/promises";
359526
- import { join as join32, dirname as dirname23, basename as basename17 } from "node:path";
359518
+ import { access as access6, cp, mkdir as mkdir7, readdir as readdir9, writeFile as writeFile8 } from "node:fs/promises";
359519
+ import { join as join32, dirname as dirname22, basename as basename17 } from "node:path";
359527
359520
  import { fileURLToPath as fileURLToPath8 } from "node:url";
359528
359521
  var __filename3 = fileURLToPath8(import.meta.url);
359529
- var __dirname5 = dirname23(__filename3);
359522
+ var __dirname5 = dirname22(__filename3);
359530
359523
  var EXAMPLES_PATH = join32(__dirname5, "examples");
359531
359524
  async function pathExists(path111) {
359532
359525
  try {
@@ -359541,7 +359534,7 @@ async function createDirectory(path111) {
359541
359534
  if (await pathExists(path111)) {
359542
359535
  throw new Error(`Path already exists: ${path111}`);
359543
359536
  }
359544
- await mkdir6(path111, { recursive: true });
359537
+ await mkdir7(path111, { recursive: true });
359545
359538
  }
359546
359539
  __name(createDirectory, "createDirectory");
359547
359540
  async function copyDirectory(template, path111) {
@@ -359952,7 +359945,7 @@ __name(getPackageJson, "getPackageJson");
359952
359945
  // packages/cli/src/utils/version.ts
359953
359946
  async function getCliVersion() {
359954
359947
  const pkgJson = await getPackageJson();
359955
- return "0.7.0";
359948
+ return "0.7.1";
359956
359949
  }
359957
359950
  __name(getCliVersion, "getCliVersion");
359958
359951
 
@@ -367852,7 +367845,7 @@ var formatDuration = /* @__PURE__ */ __name((milliseconds) => {
367852
367845
 
367853
367846
  // packages/cli/src/generated/git-commit.ts
367854
367847
  init_esbuild_shims();
367855
- var GIT_COMMIT_INFO2 = "c2e62b91";
367848
+ var GIT_COMMIT_INFO2 = "985f65f8";
367856
367849
 
367857
367850
  // packages/cli/src/utils/systemInfo.ts
367858
367851
  async function getNpmVersion() {
@@ -419291,7 +419284,7 @@ var GeminiAgent = class {
419291
419284
  name: APPROVAL_MODE_INFO[mode].name,
419292
419285
  description: APPROVAL_MODE_INFO[mode].description
419293
419286
  }));
419294
- const version2 = "0.7.0";
419287
+ const version2 = "0.7.1";
419295
419288
  return {
419296
419289
  protocolVersion: PROTOCOL_VERSION,
419297
419290
  agentInfo: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qwen-code/qwen-code",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
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.7.0"
23
+ "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.7.1"
24
24
  },
25
25
  "dependencies": {
26
26
  "tiktoken": "^1.0.21"