@qwen-code/qwen-code 0.7.0-preview.1 → 0.7.1-nightly.20260115.985f65f8
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 +5 -0
- package/cli.js +65 -72
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -201,6 +201,11 @@ If you encounter issues, check the [troubleshooting guide](https://qwenlm.github
|
|
|
201
201
|
|
|
202
202
|
To report a bug from within the CLI, run `/bug` and include a short title and repro steps.
|
|
203
203
|
|
|
204
|
+
## Connect with Us
|
|
205
|
+
|
|
206
|
+
- Discord: https://discord.gg/ycKBjdNd
|
|
207
|
+
- Dingtalk: https://qr.dingtalk.com/action/joingroup?code=v1,k1,+FX6Gf/ZDlTahTIRi8AEQhIaBlqykA0j+eBKKdhLeAE=&_dt_no_comment=1&origin=1
|
|
208
|
+
|
|
204
209
|
## Acknowledgments
|
|
205
210
|
|
|
206
211
|
This project is based on [Google Gemini CLI](https://github.com/google-gemini/gemini-cli). We acknowledge and appreciate the excellent work of the Gemini CLI team. Our main contribution focuses on parser-level adaptations to better support Qwen-Coder models.
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
155417
|
+
const version2 = "0.7.1-nightly.20260115.985f65f8";
|
|
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(
|
|
155530
|
-
const validation2 = validateModelConfig(
|
|
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
|
-
|
|
155535
|
-
|
|
155536
|
-
|
|
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
|
-
|
|
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(
|
|
155544
|
-
|
|
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
|
-
|
|
155553
|
-
|
|
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
|
-
|
|
155558
|
-
|
|
155555
|
+
baseGenerator = createGeminiContentGenerator2(generatorConfig, config2);
|
|
155556
|
+
} else {
|
|
155557
|
+
throw new Error(`Error creating contentGenerator: Unsupported authType: ${authType}`);
|
|
155559
155558
|
}
|
|
155560
|
-
|
|
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
|
|
218904
|
+
const dirname26 = sysPath.dirname(file);
|
|
218906
218905
|
const basename21 = sysPath.basename(file);
|
|
218907
|
-
const parent = this.fsw._getWatchedDir(
|
|
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(
|
|
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
|
|
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 (!
|
|
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
|
|
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.
|
|
222205
|
-
|
|
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
|
|
287453
|
+
var dirname26 = '"' + path111.dirname(s5) + '"';
|
|
287461
287454
|
var basename21 = '"' + path111.basename(s5) + '"';
|
|
287462
|
-
return
|
|
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
|
|
335079
|
-
if (
|
|
335071
|
+
const dirname26 = path111.dirname(name4);
|
|
335072
|
+
if (dirname26 === name4) {
|
|
335080
335073
|
return original;
|
|
335081
335074
|
}
|
|
335082
|
-
return find(
|
|
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
|
|
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(
|
|
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
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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:
|
|
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
|
|
359526
|
-
import { join as join32, dirname as
|
|
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 =
|
|
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
|
|
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.
|
|
359948
|
+
return "0.7.1-nightly.20260115.985f65f8";
|
|
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 = "
|
|
367848
|
+
var GIT_COMMIT_INFO2 = "ae5ac1f2";
|
|
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.
|
|
419287
|
+
const version2 = "0.7.1-nightly.20260115.985f65f8";
|
|
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.
|
|
3
|
+
"version": "0.7.1-nightly.20260115.985f65f8",
|
|
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.
|
|
23
|
+
"sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.7.1-nightly.20260115.985f65f8"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"tiktoken": "^1.0.21"
|