@qwen-code/qwen-code 0.19.12-preview.0 → 0.19.12
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/bundled/qc-helper/docs/features/channels/overview.md +4 -2
- package/chunks/{MaxSizedBox-3KIWAU6Z.js → MaxSizedBox-QOXLJGAF.js} +4 -4
- package/chunks/{StandaloneSessionPicker-TF626NO7.js → StandaloneSessionPicker-FLV6CGYJ.js} +16 -16
- package/chunks/{acpAgent-JDVJXVBO.js → acpAgent-OB2CTF3P.js} +46 -46
- package/chunks/{agent-BONWC4VY.js → agent-CKSI7BTR.js} +4 -4
- package/chunks/{agent-headless-H7HKMGLZ.js → agent-headless-U36LIYTU.js} +4 -4
- package/chunks/{bridge-ATN2TLWJ.js → bridge-AIKTINJG.js} +7 -7
- package/chunks/{channel-worker-group-S3H5QHTI.js → channel-worker-group-NEUVTPB2.js} +4 -4
- package/chunks/{channel-worker-manager-ZJ4HTMO2.js → channel-worker-manager-7CQVOVWV.js} +4 -4
- package/chunks/{channel-worker-supervisor-JA6VZ5V5.js → channel-worker-supervisor-3BU2KNCZ.js} +3 -3
- package/chunks/{chunk-SMASS3CY.js → chunk-2476XGOU.js} +1 -1
- package/chunks/{chunk-QGONRHUS.js → chunk-2CCDMJM7.js} +1 -1
- package/chunks/{chunk-F2YCCUXI.js → chunk-3B6PSWHE.js} +3 -3
- package/chunks/{chunk-XACBIZJB.js → chunk-3ESL7JXA.js} +1 -1
- package/chunks/{chunk-DYUPBU7H.js → chunk-42VIHAYT.js} +1 -1
- package/chunks/{chunk-PTXVHS2O.js → chunk-4MPYGENG.js} +4 -4
- package/chunks/{chunk-IQRQVPGN.js → chunk-4SJJT466.js} +20 -20
- package/chunks/{chunk-WTHRMVKB.js → chunk-5N7M4XYN.js} +3 -3
- package/chunks/{chunk-ZFHHBRRA.js → chunk-5QSVANRT.js} +1 -1
- package/chunks/{chunk-TFV3XVAZ.js → chunk-64GC5EMF.js} +1 -1
- package/chunks/{chunk-JUNVFQVY.js → chunk-67Q33DQY.js} +4 -4
- package/chunks/{chunk-7KS72E2N.js → chunk-6ETOSWAO.js} +1 -1
- package/chunks/{chunk-ILQ42UG6.js → chunk-6IITZE7O.js} +5 -5
- package/chunks/{chunk-7O7WZH7N.js → chunk-APOFULHK.js} +1 -1
- package/chunks/{chunk-53UMEONK.js → chunk-BABX5XRO.js} +1 -1
- package/chunks/{chunk-MHEZV3OY.js → chunk-BKNPMEN6.js} +157 -58
- package/chunks/{chunk-66F4IJ4L.js → chunk-CHPQFLW6.js} +3 -3
- package/chunks/{chunk-YN2I5I42.js → chunk-CPU6I5YV.js} +4 -4
- package/chunks/{chunk-OZWJAFFE.js → chunk-DJ4VHAFJ.js} +3 -3
- package/chunks/{chunk-SNONG66P.js → chunk-DUR7BZYK.js} +7 -7
- package/chunks/{chunk-CHVH4DVN.js → chunk-EDFD7VOX.js} +1 -1
- package/chunks/{chunk-NJQPQ4IO.js → chunk-EFAXBOQO.js} +7 -7
- package/chunks/{chunk-BEFQGC6H.js → chunk-EISVEV45.js} +2 -2
- package/chunks/{chunk-NVUGS23Y.js → chunk-ETN2G32U.js} +4 -4
- package/chunks/{chunk-54KPEDM2.js → chunk-FUSMC3SZ.js} +3 -3
- package/chunks/{chunk-6TDA4EVC.js → chunk-GCY7QTCE.js} +708 -292
- package/chunks/{chunk-JCYMQU5F.js → chunk-GFYFLDEG.js} +2 -2
- package/chunks/{chunk-W4DFAUAO.js → chunk-GLH2NTPB.js} +1 -1
- package/chunks/{chunk-XFJU7SVP.js → chunk-GMUPIMHF.js} +1 -1
- package/chunks/{chunk-CXWUXRD5.js → chunk-GSPWDTYY.js} +10 -10
- package/chunks/{chunk-6WZZHJSZ.js → chunk-GW7BONBU.js} +3 -3
- package/chunks/{chunk-WACI4VES.js → chunk-GXFYV7MP.js} +4 -4
- package/chunks/{chunk-HQ7MDVBO.js → chunk-HD6EGS5K.js} +5 -5
- package/chunks/{chunk-2DZ7E27L.js → chunk-HVGJWOR6.js} +2 -2
- package/chunks/{chunk-7LMAKIWE.js → chunk-HZ4M2UQD.js} +1 -1
- package/chunks/{chunk-HVWPSGDY.js → chunk-I7RRHHYG.js} +1 -1
- package/chunks/{chunk-IKLWU6YS.js → chunk-KGWA7XYL.js} +4 -4
- package/chunks/{chunk-DULSE2SH.js → chunk-KMJOMWHE.js} +1 -1
- package/chunks/{chunk-R32BTEZY.js → chunk-KNGZ5EYL.js} +1 -1
- package/chunks/{chunk-4AGBO6RB.js → chunk-KRMARA3A.js} +2 -2
- package/chunks/{chunk-675SVDMD.js → chunk-LUJQUNKY.js} +9 -9
- package/chunks/{chunk-6QGZVKOO.js → chunk-MRE77ST5.js} +4 -4
- package/chunks/{chunk-LODZMRXC.js → chunk-N47VAEAJ.js} +10 -10
- package/chunks/{chunk-PSISZNIT.js → chunk-NALRQ3SG.js} +36 -28
- package/chunks/{chunk-K7P34F2J.js → chunk-NE6HHLL3.js} +1 -1
- package/chunks/{chunk-Z4ZCVYJ5.js → chunk-NPMVLWYL.js} +3 -3
- package/chunks/{chunk-4W55BHOC.js → chunk-OBSLEYCD.js} +1 -1
- package/chunks/{chunk-MCYZTKBV.js → chunk-OEHCAWUA.js} +2 -2
- package/chunks/{chunk-ZPVGEMVC.js → chunk-PK7COE5O.js} +1 -1
- package/chunks/{chunk-NGTQA57Y.js → chunk-PR5XQ73G.js} +1 -1
- package/chunks/{chunk-FEZXQXW2.js → chunk-PUKUUASO.js} +1 -1
- package/chunks/{chunk-LHEQDKAR.js → chunk-QIFTJDBY.js} +1 -1
- package/chunks/{chunk-LYFDJTXE.js → chunk-R3EDIMYZ.js} +1 -1
- package/chunks/{chunk-HZXU6YZW.js → chunk-RKUMFUFM.js} +4 -4
- package/chunks/{chunk-3PE7OY2G.js → chunk-TKASNYDS.js} +1 -1
- package/chunks/{chunk-EWPLL4OT.js → chunk-UCTCDLDS.js} +1 -1
- package/chunks/{chunk-LLIGYAQU.js → chunk-UZC5VPOJ.js} +2 -2
- package/chunks/{chunk-CMHJEUVB.js → chunk-VEFR4XJQ.js} +1 -1
- package/chunks/{chunk-AWOU24F6.js → chunk-VLHQMOZK.js} +3 -3
- package/chunks/{chunk-4OVECYBM.js → chunk-W4UN42YP.js} +4 -4
- package/chunks/{chunk-E655RDRL.js → chunk-W6CQPLWM.js} +1 -1
- package/chunks/{chunk-Y5UDBQYF.js → chunk-WIYV7CSF.js} +2 -2
- package/chunks/{chunk-7OZGMFHC.js → chunk-XSEWNUMZ.js} +5 -5
- package/chunks/{chunk-R4RIMOJL.js → chunk-ZGT623SG.js} +10 -10
- package/chunks/{chunk-NSZJQACR.js → chunk-ZSDFNE6Y.js} +1 -1
- package/chunks/{computer-use-UY4A72X7.js → computer-use-4PUGCUQK.js} +4 -4
- package/chunks/{config-utils-KWTRFP7D.js → config-utils-6PJUXHLI.js} +3 -3
- package/chunks/{contextCommand-3DZ2SVH6.js → contextCommand-C57KTWFV.js} +6 -6
- package/chunks/{create-sub-session-OT7WXLDO.js → create-sub-session-5Q42XR6I.js} +4 -4
- package/chunks/{daemon-status-provider-GTZOYSBO.js → daemon-status-provider-YPV3UXHT.js} +11 -11
- package/chunks/{dist-RZBJT5O2.js → dist-3DQNQJ6H.js} +1 -1
- package/chunks/{dist-HCUUS6IH.js → dist-IEQSDXS7.js} +2 -2
- package/chunks/{dist-Y54RURGT.js → dist-IGZMVS5R.js} +1 -1
- package/chunks/{dist-O2IP3G5D.js → dist-J2H4KTLB.js} +1 -1
- package/chunks/{dist-ZJHKKWUD.js → dist-NUXRQHC5.js} +1 -1
- package/chunks/{dist-YTPTCUAD.js → dist-XLE6ODMB.js} +1 -1
- package/chunks/{earlyInputCapture-GGWVGBZ7.js → earlyInputCapture-5VDWSYAM.js} +4 -4
- package/chunks/{edit-JN467GIR.js → edit-GORZTX2U.js} +5 -5
- package/chunks/{enter-worktree-MMO4VBQE.js → enter-worktree-LJB2AW4L.js} +4 -4
- package/chunks/{enterPlanMode-BRZOG4DB.js → enterPlanMode-LIIPP37T.js} +4 -4
- package/chunks/{environment-LOCDCWMZ.js → environment-HQ2UHJ35.js} +6 -6
- package/chunks/{errors-XXSL5HGG.js → errors-6JD5VMVQ.js} +6 -6
- package/chunks/{exit-worktree-UD7PI5H5.js → exit-worktree-IEP2WHOV.js} +4 -4
- package/chunks/{exitPlanMode-EIUETQI6.js → exitPlanMode-U5Z6XBLO.js} +4 -4
- package/chunks/{fast-path-ULGAEUVK.js → fast-path-HFKNMP23.js} +2 -2
- package/chunks/{gemini-KW3APZ4P.js → gemini-C2SCJH3N.js} +40 -40
- package/chunks/{geminiContentGenerator-4BQ5QHPR.js → geminiContentGenerator-ADZTXEKV.js} +1 -1
- package/chunks/{glob-FPKAMR6B.js → glob-GOAPGD6G.js} +4 -4
- package/chunks/{grep-MOGRCYB4.js → grep-HZLSTX7D.js} +4 -4
- package/chunks/{handleAutoUpdate-QUMRZZOS.js → handleAutoUpdate-UF74WGFE.js} +8 -8
- package/chunks/{i18n-F3W6YUYP.js → i18n-FMXIYUOC.js} +5 -5
- package/chunks/{initializer-KLU2KAIZ.js → initializer-ERDBM3DU.js} +9 -9
- package/chunks/{installationInfo-P3ZP2SIZ.js → installationInfo-LROMXYLX.js} +5 -5
- package/chunks/{list-4X6D5JD2.js → list-6JPJROU5.js} +12 -12
- package/chunks/{loadedSettingsAdapter-446B6WKA.js → loadedSettingsAdapter-QCWYUBBF.js} +9 -9
- package/chunks/{mcp-JYVOJZOD.js → mcp-3P3KWYWO.js} +9 -9
- package/chunks/{monitor-KY7YH7TL.js → monitor-LMYKCF6R.js} +4 -4
- package/chunks/{nonInteractiveCli-EK35TLVJ.js → nonInteractiveCli-YURFHZV5.js} +39 -39
- package/chunks/{notebook-edit-IHGW42QK.js → notebook-edit-IBEOVZ6A.js} +5 -5
- package/chunks/{openaiContentGenerator-FURUCKQJ.js → openaiContentGenerator-42PZKET5.js} +2 -2
- package/chunks/{pidfile-WKUVXDMR.js → pidfile-VTBDIGOH.js} +4 -4
- package/chunks/{processUtils-LHSRN76X.js → processUtils-L7ZKOGDG.js} +2 -2
- package/chunks/{qwenContentGenerator-NRLM7R36.js → qwenContentGenerator-VR2CNFGI.js} +5 -5
- package/chunks/{qwenOAuth2-5FNX3AWH.js → qwenOAuth2-6LS2T3Q6.js} +3 -3
- package/chunks/{read-file-VLEAEXFP.js → read-file-VSKOE22I.js} +1 -1
- package/chunks/{ripGrep-MT23EIDD.js → ripGrep-5V5FLW2A.js} +4 -4
- package/chunks/{run-qwen-serve-5HWOQFLI.js → run-qwen-serve-LSOPP4R2.js} +30 -30
- package/chunks/{runtime-6IVKJSLW.js → runtime-LT7R4CS5.js} +13 -13
- package/chunks/{scheduler-63GJG75U.js → scheduler-YOWQ7KZP.js} +4 -4
- package/chunks/{serve-3LL7RRDP.js → serve-VWLBXKGK.js} +9 -9
- package/chunks/{server-AA24QLPA.js → server-3RW3FYOH.js} +32 -32
- package/chunks/{session-LRVCFQQQ.js → session-ZONXFOBQ.js} +40 -40
- package/chunks/{settings-ZX3OKUT4.js → settings-JC3VC53L.js} +8 -8
- package/chunks/{shell-KR3IMYH6.js → shell-2NGEMAVM.js} +4 -4
- package/chunks/{skill-QLM2LSF7.js → skill-3U2T6H3E.js} +1 -1
- package/chunks/{spawnChannel-6WFOK3SA.js → spawnChannel-QEAUPARQ.js} +6 -6
- package/chunks/{src-ADLNIPHD.js → src-75ZPXO7B.js} +4 -4
- package/chunks/{standalone-update-C54OTJWJ.js → standalone-update-UUJWJWYY.js} +6 -6
- package/chunks/{startInteractiveUI-KFAOS6HC.js → startInteractiveUI-V7XISPQ6.js} +62 -54
- package/chunks/{team-create-Q5B5M7UD.js → team-create-R6AXDYPG.js} +4 -4
- package/chunks/{team-plan-approval-J55PXNY2.js → team-plan-approval-O2ZPPT64.js} +4 -4
- package/chunks/{theme-manager-QWTDRPHV.js → theme-manager-YIX2IC2D.js} +4 -4
- package/chunks/{tool-search-LSSKWZKH.js → tool-search-5IE2VO7X.js} +1 -1
- package/chunks/{total-session-admission-S6ATY5HY.js → total-session-admission-K6APQYEF.js} +7 -7
- package/chunks/{trustedFolders-CY4TUPDJ.js → trustedFolders-GPSSPVBF.js} +5 -5
- package/chunks/{update-relaunch-IOKOUV3K.js → update-relaunch-4BVAPX6Y.js} +5 -5
- package/chunks/{updateCheck-YNRFE4V7.js → updateCheck-AHTHWLAM.js} +6 -6
- package/chunks/{validateNonInterActiveAuth-OXTECS4B.js → validateNonInterActiveAuth-UKAPCWDM.js} +35 -35
- package/chunks/{version-2CZQQDL5.js → version-EXGWKKQE.js} +1 -1
- package/chunks/{web-fetch-7QTEGJI5.js → web-fetch-ZDNE6FF2.js} +2 -2
- package/chunks/{workflow-G3CZU256.js → workflow-G7U6OQWS.js} +5 -5
- package/chunks/{workspace-providers-status-UHQOIPAZ.js → workspace-providers-status-W6CEA6YM.js} +12 -12
- package/chunks/{workspace-registration-store-5WPCMX4F.js → workspace-registration-store-OGBMWCLC.js} +1 -1
- package/chunks/{workspace-registry-LAQCRQTH.js → workspace-registry-ZUWQM44P.js} +7 -7
- package/chunks/{workspace-service-6ZEUJY2Z.js → workspace-service-UXX5P7GU.js} +13 -13
- package/chunks/{workspace-skills-status-YG6OITSM.js → workspace-skills-status-635B5R7N.js} +10 -10
- package/chunks/{write-file-E7T3PU3B.js → write-file-DR3HN7IH.js} +5 -5
- package/cli.js +11 -11
- package/package.json +3 -3
|
@@ -50,6 +50,8 @@ init_esbuild_shims();
|
|
|
50
50
|
|
|
51
51
|
// packages/channels/base/dist/paths.js
|
|
52
52
|
init_esbuild_shims();
|
|
53
|
+
import * as crypto from "node:crypto";
|
|
54
|
+
import * as fs from "node:fs";
|
|
53
55
|
import * as path from "node:path";
|
|
54
56
|
import * as os from "node:os";
|
|
55
57
|
function resolvePath(dir) {
|
|
@@ -58,10 +60,7 @@ function resolvePath(dir) {
|
|
|
58
60
|
const relativeSegments = resolved === "~" ? [] : resolved.slice(2).split(/[/\\]+/).filter(Boolean);
|
|
59
61
|
resolved = path.join(os.homedir(), ...relativeSegments);
|
|
60
62
|
}
|
|
61
|
-
|
|
62
|
-
resolved = path.resolve(resolved);
|
|
63
|
-
}
|
|
64
|
-
return resolved;
|
|
63
|
+
return path.resolve(resolved);
|
|
65
64
|
}
|
|
66
65
|
__name(resolvePath, "resolvePath");
|
|
67
66
|
function getGlobalQwenDir() {
|
|
@@ -73,6 +72,22 @@ function getGlobalQwenDir() {
|
|
|
73
72
|
return homeDir ? path.join(homeDir, ".qwen") : path.join(os.tmpdir(), ".qwen");
|
|
74
73
|
}
|
|
75
74
|
__name(getGlobalQwenDir, "getGlobalQwenDir");
|
|
75
|
+
function canonicalizeWorkspacePath(workspaceCwd) {
|
|
76
|
+
const resolved = resolvePath(workspaceCwd);
|
|
77
|
+
try {
|
|
78
|
+
return fs.realpathSync.native(resolved);
|
|
79
|
+
} catch {
|
|
80
|
+
return resolved;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
__name(canonicalizeWorkspacePath, "canonicalizeWorkspacePath");
|
|
84
|
+
function getWorkspaceScopeDirName(workspaceCwd) {
|
|
85
|
+
const resolved = canonicalizeWorkspacePath(workspaceCwd);
|
|
86
|
+
const hash = crypto.createHash("sha256").update(resolved).digest("hex").slice(0, 12);
|
|
87
|
+
const base = path.basename(resolved).replace(/[^a-zA-Z0-9._-]/g, "_").slice(0, 32);
|
|
88
|
+
return base ? `${base}-${hash}` : hash;
|
|
89
|
+
}
|
|
90
|
+
__name(getWorkspaceScopeDirName, "getWorkspaceScopeDirName");
|
|
76
91
|
|
|
77
92
|
// packages/channels/base/dist/AcpBridge.js
|
|
78
93
|
init_esbuild_shims();
|
|
@@ -308,7 +323,7 @@ var AcpBridge = class extends EventEmitter {
|
|
|
308
323
|
this.child = null;
|
|
309
324
|
this.emit("disconnected", code, signal);
|
|
310
325
|
});
|
|
311
|
-
await new Promise((
|
|
326
|
+
await new Promise((resolve3) => setTimeout(resolve3, 1e3));
|
|
312
327
|
if (!this.child || this.child.killed) {
|
|
313
328
|
throw new Error("ACP process failed to start");
|
|
314
329
|
}
|
|
@@ -493,7 +508,7 @@ var AcpBridge = class extends EventEmitter {
|
|
|
493
508
|
requestPermission(request) {
|
|
494
509
|
const requestId = `acp-permission-${randomUUID()}`;
|
|
495
510
|
const sessionId = typeof request.sessionId === "string" && request.sessionId.length > 0 ? request.sessionId : request.toolCall.toolCallId;
|
|
496
|
-
return new Promise((
|
|
511
|
+
return new Promise((resolve3) => {
|
|
497
512
|
const timeout = setTimeout(() => {
|
|
498
513
|
const pending = this.pendingPermissions.get(requestId);
|
|
499
514
|
if (!pending) {
|
|
@@ -512,7 +527,7 @@ var AcpBridge = class extends EventEmitter {
|
|
|
512
527
|
});
|
|
513
528
|
}, ACP_PERMISSION_RESPONSE_TIMEOUT_MS);
|
|
514
529
|
timeout.unref?.();
|
|
515
|
-
this.pendingPermissions.set(requestId, { sessionId, resolve:
|
|
530
|
+
this.pendingPermissions.set(requestId, { sessionId, resolve: resolve3, timeout });
|
|
516
531
|
this.emitResponseBoundary(sessionId);
|
|
517
532
|
this.emit("permissionRequest", {
|
|
518
533
|
requestId,
|
|
@@ -855,7 +870,7 @@ var DaemonChannelBridge = class extends EventEmitter2 {
|
|
|
855
870
|
const result = await session.prompt({ prompt }, controller.signal);
|
|
856
871
|
await Promise.race([
|
|
857
872
|
turnBarrier,
|
|
858
|
-
new Promise((
|
|
873
|
+
new Promise((resolve3) => setTimeout(resolve3, 0))
|
|
859
874
|
]);
|
|
860
875
|
const textResult = chunks.join("") || slashCommandOutput;
|
|
861
876
|
this.emit("promptComplete", {
|
|
@@ -1259,15 +1274,15 @@ var DaemonChannelBridge = class extends EventEmitter2 {
|
|
|
1259
1274
|
this.emit("responseBoundary", sessionId);
|
|
1260
1275
|
}
|
|
1261
1276
|
createTurnBarrier(sessionId) {
|
|
1262
|
-
return new Promise((
|
|
1263
|
-
this.turnBarriers.set(sessionId,
|
|
1277
|
+
return new Promise((resolve3) => {
|
|
1278
|
+
this.turnBarriers.set(sessionId, resolve3);
|
|
1264
1279
|
});
|
|
1265
1280
|
}
|
|
1266
1281
|
resolveTurnBarrier(sessionId) {
|
|
1267
|
-
const
|
|
1268
|
-
if (
|
|
1282
|
+
const resolve3 = this.turnBarriers.get(sessionId);
|
|
1283
|
+
if (resolve3) {
|
|
1269
1284
|
this.turnBarriers.delete(sessionId);
|
|
1270
|
-
|
|
1285
|
+
resolve3();
|
|
1271
1286
|
}
|
|
1272
1287
|
}
|
|
1273
1288
|
clearTurnBarrier(sessionId) {
|
|
@@ -1388,7 +1403,7 @@ var BlockStreamer = class {
|
|
|
1388
1403
|
|
|
1389
1404
|
// packages/channels/base/dist/ChannelBase.js
|
|
1390
1405
|
init_esbuild_shims();
|
|
1391
|
-
import { basename, join as join5 } from "node:path";
|
|
1406
|
+
import { basename as basename3, join as join5 } from "node:path";
|
|
1392
1407
|
|
|
1393
1408
|
// packages/channels/base/dist/GroupGate.js
|
|
1394
1409
|
init_esbuild_shims();
|
|
@@ -1750,8 +1765,8 @@ var SenderGate = class {
|
|
|
1750
1765
|
|
|
1751
1766
|
// packages/channels/base/dist/PairingStore.js
|
|
1752
1767
|
init_esbuild_shims();
|
|
1753
|
-
import * as
|
|
1754
|
-
import * as
|
|
1768
|
+
import * as crypto2 from "node:crypto";
|
|
1769
|
+
import * as fs2 from "node:fs";
|
|
1755
1770
|
import * as path2 from "node:path";
|
|
1756
1771
|
var SAFE_ALPHABET = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";
|
|
1757
1772
|
var CODE_LENGTH = 8;
|
|
@@ -1764,10 +1779,94 @@ var PairingStore = class {
|
|
|
1764
1779
|
dir;
|
|
1765
1780
|
pendingPath;
|
|
1766
1781
|
allowlistPath;
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1782
|
+
migratedSentinelPath;
|
|
1783
|
+
/**
|
|
1784
|
+
* @param channelName Channel name the state is keyed by.
|
|
1785
|
+
* @param workspaceCwd Workspace working directory to scope the state to.
|
|
1786
|
+
* When provided, files live under
|
|
1787
|
+
* `<qwen-home>/channels/<workspace-scope>/` so two workspaces using the
|
|
1788
|
+
* same channel name never share pairing requests or allowlist entries
|
|
1789
|
+
* (see #7017 — sharing them is an authorization-boundary violation in
|
|
1790
|
+
* multi-workspace daemon deployments). Omitting it preserves the legacy
|
|
1791
|
+
* global layout (`<qwen-home>/channels/`).
|
|
1792
|
+
*/
|
|
1793
|
+
constructor(channelName, workspaceCwd) {
|
|
1794
|
+
const channelsRoot = path2.join(getGlobalQwenDir(), "channels");
|
|
1795
|
+
this.dir = workspaceCwd ? path2.join(channelsRoot, getWorkspaceScopeDirName(workspaceCwd)) : channelsRoot;
|
|
1796
|
+
const safeChannelName = encodeURIComponent(channelName);
|
|
1797
|
+
this.pendingPath = path2.join(this.dir, `${safeChannelName}-pairing.json`);
|
|
1798
|
+
this.allowlistPath = path2.join(this.dir, `${safeChannelName}-allowlist.json`);
|
|
1799
|
+
this.migratedSentinelPath = path2.join(this.dir, `${safeChannelName}.migrated`);
|
|
1800
|
+
if (workspaceCwd) {
|
|
1801
|
+
this.migrateLegacyState(channelsRoot, channelName);
|
|
1802
|
+
}
|
|
1803
|
+
}
|
|
1804
|
+
/**
|
|
1805
|
+
* One-time grandfathering of pre-scoping state: the first time this
|
|
1806
|
+
* (workspace, channel) pair is constructed, copy the legacy GLOBAL files in
|
|
1807
|
+
* so senders that were already approved stay approved after upgrading.
|
|
1808
|
+
*
|
|
1809
|
+
* Gated by a per-channel sentinel file inside the scope directory — NOT by
|
|
1810
|
+
* the directory itself: one workspace can start several channels in turn,
|
|
1811
|
+
* and a directory-level gate would let only the first channel ever migrate.
|
|
1812
|
+
* The sentinel is written even when there was nothing to copy, so a legacy
|
|
1813
|
+
* file written later (e.g. by an older version still running concurrently)
|
|
1814
|
+
* is never absorbed into a scope that already went through this decision.
|
|
1815
|
+
*
|
|
1816
|
+
* Each file is copied independently and best-effort (an unreadable pairing
|
|
1817
|
+
* file must not block the allowlist, and vice versa), via a
|
|
1818
|
+
* uniquely-named temp file + atomic rename so a crash mid-copy cannot
|
|
1819
|
+
* leave a truncated scoped file behind the closed gate. A file the scoped
|
|
1820
|
+
* store already has is never overwritten.
|
|
1821
|
+
*
|
|
1822
|
+
* Copy, not move: another workspace upgrading later must be able to
|
|
1823
|
+
* grandfather the same baseline, and an older qwen version running
|
|
1824
|
+
* concurrently still reads the global files.
|
|
1825
|
+
*
|
|
1826
|
+
* Revocation therefore means REMOVING ENTRIES from the scoped allowlist
|
|
1827
|
+
* (and from the legacy global file, while it exists) — not deleting files.
|
|
1828
|
+
*/
|
|
1829
|
+
migrateLegacyState(channelsRoot, channelName) {
|
|
1830
|
+
try {
|
|
1831
|
+
if (fs2.existsSync(this.migratedSentinelPath)) {
|
|
1832
|
+
return;
|
|
1833
|
+
}
|
|
1834
|
+
const legacyPairs = [
|
|
1835
|
+
[
|
|
1836
|
+
path2.join(channelsRoot, `${channelName}-pairing.json`),
|
|
1837
|
+
this.pendingPath
|
|
1838
|
+
],
|
|
1839
|
+
[
|
|
1840
|
+
path2.join(channelsRoot, `${channelName}-allowlist.json`),
|
|
1841
|
+
this.allowlistPath
|
|
1842
|
+
]
|
|
1843
|
+
];
|
|
1844
|
+
this.ensureDir();
|
|
1845
|
+
let allSucceeded = true;
|
|
1846
|
+
for (const [legacyPath, scopedPath] of legacyPairs) {
|
|
1847
|
+
try {
|
|
1848
|
+
if (path2.dirname(path2.resolve(legacyPath)) !== channelsRoot) {
|
|
1849
|
+
continue;
|
|
1850
|
+
}
|
|
1851
|
+
if (fs2.existsSync(scopedPath) || !fs2.existsSync(legacyPath)) {
|
|
1852
|
+
continue;
|
|
1853
|
+
}
|
|
1854
|
+
const tmpPath = `${scopedPath}.${process.pid}.migrating`;
|
|
1855
|
+
fs2.copyFileSync(legacyPath, tmpPath);
|
|
1856
|
+
fs2.renameSync(tmpPath, scopedPath);
|
|
1857
|
+
} catch (err) {
|
|
1858
|
+
allSucceeded = false;
|
|
1859
|
+
process.stderr.write(`[PairingStore] legacy migration of ${path2.basename(legacyPath)} failed for channel "${channelName}": ${err?.message}; will retry on next start
|
|
1860
|
+
`);
|
|
1861
|
+
}
|
|
1862
|
+
}
|
|
1863
|
+
if (allSucceeded) {
|
|
1864
|
+
fs2.writeFileSync(this.migratedSentinelPath, "");
|
|
1865
|
+
}
|
|
1866
|
+
} catch (err) {
|
|
1867
|
+
process.stderr.write(`[PairingStore] legacy migration failed for channel "${channelName}": ${err?.message}; scoped store starts empty
|
|
1868
|
+
`);
|
|
1869
|
+
}
|
|
1771
1870
|
}
|
|
1772
1871
|
isApproved(senderId) {
|
|
1773
1872
|
const list = this.readAllowlist();
|
|
@@ -1823,13 +1922,13 @@ var PairingStore = class {
|
|
|
1823
1922
|
return this.readAllowlist();
|
|
1824
1923
|
}
|
|
1825
1924
|
ensureDir() {
|
|
1826
|
-
if (!
|
|
1827
|
-
|
|
1925
|
+
if (!fs2.existsSync(this.dir)) {
|
|
1926
|
+
fs2.mkdirSync(this.dir, { recursive: true });
|
|
1828
1927
|
}
|
|
1829
1928
|
}
|
|
1830
1929
|
readPending() {
|
|
1831
1930
|
try {
|
|
1832
|
-
const data =
|
|
1931
|
+
const data = fs2.readFileSync(this.pendingPath, "utf-8");
|
|
1833
1932
|
return JSON.parse(data);
|
|
1834
1933
|
} catch {
|
|
1835
1934
|
return [];
|
|
@@ -1837,11 +1936,11 @@ var PairingStore = class {
|
|
|
1837
1936
|
}
|
|
1838
1937
|
writePending(requests) {
|
|
1839
1938
|
this.ensureDir();
|
|
1840
|
-
|
|
1939
|
+
fs2.writeFileSync(this.pendingPath, JSON.stringify(requests, null, 2));
|
|
1841
1940
|
}
|
|
1842
1941
|
readAllowlist() {
|
|
1843
1942
|
try {
|
|
1844
|
-
const data =
|
|
1943
|
+
const data = fs2.readFileSync(this.allowlistPath, "utf-8");
|
|
1845
1944
|
return JSON.parse(data);
|
|
1846
1945
|
} catch {
|
|
1847
1946
|
return [];
|
|
@@ -1849,13 +1948,13 @@ var PairingStore = class {
|
|
|
1849
1948
|
}
|
|
1850
1949
|
writeAllowlist(list) {
|
|
1851
1950
|
this.ensureDir();
|
|
1852
|
-
|
|
1951
|
+
fs2.writeFileSync(this.allowlistPath, JSON.stringify(list, null, 2));
|
|
1853
1952
|
}
|
|
1854
1953
|
};
|
|
1855
1954
|
function generateCode() {
|
|
1856
1955
|
let code = "";
|
|
1857
1956
|
for (let i = 0; i < CODE_LENGTH; i++) {
|
|
1858
|
-
code += SAFE_ALPHABET[
|
|
1957
|
+
code += SAFE_ALPHABET[crypto2.randomInt(SAFE_ALPHABET.length)];
|
|
1859
1958
|
}
|
|
1860
1959
|
return code;
|
|
1861
1960
|
}
|
|
@@ -1863,8 +1962,8 @@ __name(generateCode, "generateCode");
|
|
|
1863
1962
|
|
|
1864
1963
|
// packages/channels/base/dist/SessionRouter.js
|
|
1865
1964
|
init_esbuild_shims();
|
|
1866
|
-
import { chmodSync as chmodSync2, existsSync as existsSync3, mkdirSync as mkdirSync3, readFileSync as readFileSync3, renameSync as
|
|
1867
|
-
import { dirname as
|
|
1965
|
+
import { chmodSync as chmodSync2, existsSync as existsSync3, mkdirSync as mkdirSync3, readFileSync as readFileSync3, renameSync as renameSync3, rmSync, unlinkSync, writeFileSync as writeFileSync3 } from "node:fs";
|
|
1966
|
+
import { dirname as dirname3, join as join4 } from "node:path";
|
|
1868
1967
|
import process2 from "node:process";
|
|
1869
1968
|
var SessionRouter = class {
|
|
1870
1969
|
static {
|
|
@@ -2345,7 +2444,7 @@ var SessionRouter = class {
|
|
|
2345
2444
|
} catch (error) {
|
|
2346
2445
|
const quarantinePath = `${persistPath}.corrupt-${Date.now()}`;
|
|
2347
2446
|
try {
|
|
2348
|
-
|
|
2447
|
+
renameSync3(persistPath, quarantinePath);
|
|
2349
2448
|
} catch {
|
|
2350
2449
|
}
|
|
2351
2450
|
process2.stderr.write(`[SessionRouter] Corrupted persist file at ${sanitizeLogText(persistPath, 1024)}: ${sanitizeLogText(error instanceof Error ? error.message : String(error), 512)}
|
|
@@ -2355,7 +2454,7 @@ var SessionRouter = class {
|
|
|
2355
2454
|
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
2356
2455
|
const quarantinePath = `${persistPath}.corrupt-${Date.now()}`;
|
|
2357
2456
|
try {
|
|
2358
|
-
|
|
2457
|
+
renameSync3(persistPath, quarantinePath);
|
|
2359
2458
|
} catch {
|
|
2360
2459
|
}
|
|
2361
2460
|
process2.stderr.write(`[SessionRouter] Invalid route store at ${sanitizeLogText(persistPath, 1024)}: expected an object
|
|
@@ -2396,7 +2495,7 @@ var SessionRouter = class {
|
|
|
2396
2495
|
cwd: this.toCwd.get(sessionId) ?? this.defaultCwd
|
|
2397
2496
|
};
|
|
2398
2497
|
}
|
|
2399
|
-
const dir =
|
|
2498
|
+
const dir = dirname3(this.persistPath);
|
|
2400
2499
|
const tempPath = join4(dir, `${Date.now()}-${process2.pid}-${Math.random().toString(16).slice(2)}.tmp`);
|
|
2401
2500
|
try {
|
|
2402
2501
|
mkdirSync3(dir, { recursive: true, mode: 448 });
|
|
@@ -2408,7 +2507,7 @@ var SessionRouter = class {
|
|
|
2408
2507
|
encoding: "utf-8",
|
|
2409
2508
|
mode: 384
|
|
2410
2509
|
});
|
|
2411
|
-
|
|
2510
|
+
renameSync3(tempPath, this.persistPath);
|
|
2412
2511
|
try {
|
|
2413
2512
|
chmodSync2(this.persistPath, 384);
|
|
2414
2513
|
} catch {
|
|
@@ -2511,8 +2610,8 @@ var SessionRouter = class {
|
|
|
2511
2610
|
createSessionReservation() {
|
|
2512
2611
|
let resolveReservation;
|
|
2513
2612
|
let rejectReservation;
|
|
2514
|
-
const promise = new Promise((
|
|
2515
|
-
resolveReservation =
|
|
2613
|
+
const promise = new Promise((resolve3, reject) => {
|
|
2614
|
+
resolveReservation = resolve3;
|
|
2516
2615
|
rejectReservation = reject;
|
|
2517
2616
|
});
|
|
2518
2617
|
return {
|
|
@@ -3310,7 +3409,7 @@ var ChannelBase = class {
|
|
|
3310
3409
|
this.observedContacts = options?.observedContacts;
|
|
3311
3410
|
this.groupGate = new GroupGate(config.groupPolicy, config.groups);
|
|
3312
3411
|
this.dmGate = new DmGate(config.dmPolicy);
|
|
3313
|
-
const pairingStore = config.senderPolicy === "pairing" ? new PairingStore(name) : void 0;
|
|
3412
|
+
const pairingStore = config.senderPolicy === "pairing" ? new PairingStore(name, config.cwd) : void 0;
|
|
3314
3413
|
this.gate = new SenderGate(config.senderPolicy, config.allowedUsers, pairingStore);
|
|
3315
3414
|
this.router = options?.router || new SessionRouter(bridge, config.cwd, config.sessionScope);
|
|
3316
3415
|
this.registerSharedCommands();
|
|
@@ -3600,8 +3699,8 @@ ${promptText}` : promptText;
|
|
|
3600
3699
|
}
|
|
3601
3700
|
let doneResolve = /* @__PURE__ */ __name(() => {
|
|
3602
3701
|
}, "doneResolve");
|
|
3603
|
-
const done = new Promise((
|
|
3604
|
-
doneResolve =
|
|
3702
|
+
const done = new Promise((resolve3) => {
|
|
3703
|
+
doneResolve = resolve3;
|
|
3605
3704
|
});
|
|
3606
3705
|
const promptState = {
|
|
3607
3706
|
cancelled: false,
|
|
@@ -3812,8 +3911,8 @@ ${promptText}` : promptText;
|
|
|
3812
3911
|
}
|
|
3813
3912
|
let doneResolve = /* @__PURE__ */ __name(() => {
|
|
3814
3913
|
}, "doneResolve");
|
|
3815
|
-
const done = new Promise((
|
|
3816
|
-
doneResolve =
|
|
3914
|
+
const done = new Promise((resolve3) => {
|
|
3915
|
+
doneResolve = resolve3;
|
|
3817
3916
|
});
|
|
3818
3917
|
const promptState = {
|
|
3819
3918
|
cancelled: false,
|
|
@@ -3963,8 +4062,8 @@ ${promptText}` : promptText;
|
|
|
3963
4062
|
try {
|
|
3964
4063
|
const cancelled = await Promise.race([
|
|
3965
4064
|
promptBridge.cancelSession(sessionId).then(() => true),
|
|
3966
|
-
new Promise((
|
|
3967
|
-
graceTimer = setTimeout(() =>
|
|
4065
|
+
new Promise((resolve3) => {
|
|
4066
|
+
graceTimer = setTimeout(() => resolve3(false), LOOP_CANCEL_GRACE_MS);
|
|
3968
4067
|
graceTimer.unref?.();
|
|
3969
4068
|
})
|
|
3970
4069
|
]);
|
|
@@ -4054,8 +4153,8 @@ ${promptText}` : promptText;
|
|
|
4054
4153
|
try {
|
|
4055
4154
|
const cancelled = await Promise.race([
|
|
4056
4155
|
active.cancelRequested,
|
|
4057
|
-
new Promise((
|
|
4058
|
-
timer = setTimeout(() =>
|
|
4156
|
+
new Promise((resolve3) => {
|
|
4157
|
+
timer = setTimeout(() => resolve3(false), CLEAR_CANCEL_TIMEOUT_MS);
|
|
4059
4158
|
timer.unref?.();
|
|
4060
4159
|
})
|
|
4061
4160
|
]);
|
|
@@ -4421,7 +4520,7 @@ ${requestList}`);
|
|
|
4421
4520
|
`Memory: ${sanitizeQuotedText(this.memoryScope.namespace, 128)}`
|
|
4422
4521
|
] : [],
|
|
4423
4522
|
// Only the basename — don't leak the absolute cwd to group members.
|
|
4424
|
-
`Workspace: ${
|
|
4523
|
+
`Workspace: ${basename3(this.config.cwd)}`,
|
|
4425
4524
|
`Session: ${active ? "active" : "none"}${scopeNote}`
|
|
4426
4525
|
].join("\n"));
|
|
4427
4526
|
return true;
|
|
@@ -5344,8 +5443,8 @@ ${sanitizePromptText(entry.text).trim()}` : `No channel memory entry ${intent.id
|
|
|
5344
5443
|
let timer;
|
|
5345
5444
|
const settled = await Promise.race([
|
|
5346
5445
|
active.done.then(() => true),
|
|
5347
|
-
new Promise((
|
|
5348
|
-
timer = setTimeout(() =>
|
|
5446
|
+
new Promise((resolve3) => {
|
|
5447
|
+
timer = setTimeout(() => resolve3(false), CLEAR_CANCEL_TIMEOUT_MS);
|
|
5349
5448
|
})
|
|
5350
5449
|
]);
|
|
5351
5450
|
clearTimeout(timer);
|
|
@@ -6040,8 +6139,8 @@ __name(truncateLoopLabel, "truncateLoopLabel");
|
|
|
6040
6139
|
|
|
6041
6140
|
// packages/channels/base/dist/ChannelLoopStore.js
|
|
6042
6141
|
init_esbuild_shims();
|
|
6043
|
-
import * as
|
|
6044
|
-
import * as
|
|
6142
|
+
import * as crypto3 from "node:crypto";
|
|
6143
|
+
import * as fs3 from "node:fs/promises";
|
|
6045
6144
|
import * as path3 from "node:path";
|
|
6046
6145
|
var ChannelLoopStore = class {
|
|
6047
6146
|
static {
|
|
@@ -6054,7 +6153,7 @@ var ChannelLoopStore = class {
|
|
|
6054
6153
|
constructor(options) {
|
|
6055
6154
|
this.filePath = options.filePath;
|
|
6056
6155
|
this.now = options.now ?? (() => /* @__PURE__ */ new Date());
|
|
6057
|
-
this.idFactory = options.idFactory ?? (() =>
|
|
6156
|
+
this.idFactory = options.idFactory ?? (() => crypto3.randomUUID());
|
|
6058
6157
|
}
|
|
6059
6158
|
async list() {
|
|
6060
6159
|
return this.readJobs();
|
|
@@ -6129,7 +6228,7 @@ var ChannelLoopStore = class {
|
|
|
6129
6228
|
async readJobs() {
|
|
6130
6229
|
let raw;
|
|
6131
6230
|
try {
|
|
6132
|
-
raw = await
|
|
6231
|
+
raw = await fs3.readFile(this.filePath, "utf8");
|
|
6133
6232
|
} catch (err) {
|
|
6134
6233
|
if (err.code === "ENOENT")
|
|
6135
6234
|
return [];
|
|
@@ -6157,20 +6256,20 @@ var ChannelLoopStore = class {
|
|
|
6157
6256
|
}
|
|
6158
6257
|
async writeJobs(jobs) {
|
|
6159
6258
|
const dir = path3.dirname(this.filePath);
|
|
6160
|
-
await
|
|
6161
|
-
await
|
|
6259
|
+
await fs3.mkdir(dir, { recursive: true, mode: 448 });
|
|
6260
|
+
await fs3.chmod(dir, 448).catch(() => {
|
|
6162
6261
|
});
|
|
6163
|
-
const tmpPath = `${this.filePath}.${
|
|
6262
|
+
const tmpPath = `${this.filePath}.${crypto3.randomBytes(6).toString("hex")}.tmp`;
|
|
6164
6263
|
try {
|
|
6165
|
-
await
|
|
6264
|
+
await fs3.writeFile(tmpPath, JSON.stringify(jobs, null, 2), {
|
|
6166
6265
|
encoding: "utf8",
|
|
6167
6266
|
mode: 384
|
|
6168
6267
|
});
|
|
6169
|
-
await
|
|
6170
|
-
await
|
|
6268
|
+
await fs3.rename(tmpPath, this.filePath);
|
|
6269
|
+
await fs3.chmod(this.filePath, 384).catch(() => {
|
|
6171
6270
|
});
|
|
6172
6271
|
} catch (err) {
|
|
6173
|
-
await
|
|
6272
|
+
await fs3.rm(tmpPath, { force: true }).catch(() => {
|
|
6174
6273
|
});
|
|
6175
6274
|
throw err;
|
|
6176
6275
|
}
|
|
@@ -8,16 +8,16 @@ import {
|
|
|
8
8
|
initializeI18n,
|
|
9
9
|
resolveLanguageSetting,
|
|
10
10
|
t
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-TKASNYDS.js";
|
|
12
12
|
import {
|
|
13
13
|
IdeClient
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-GCY7QTCE.js";
|
|
15
15
|
import {
|
|
16
16
|
AuthEvent,
|
|
17
17
|
IdeConnectionEvent,
|
|
18
18
|
logAuth,
|
|
19
19
|
logIdeConnection
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-CPU6I5YV.js";
|
|
21
21
|
import {
|
|
22
22
|
getErrorMessage
|
|
23
23
|
} from "./chunk-UE5TZ55T.js";
|
|
@@ -70652,11 +70652,11 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
|
|
|
70652
70652
|
let baseGenerator;
|
|
70653
70653
|
try {
|
|
70654
70654
|
if (authType === "openai" /* USE_OPENAI */) {
|
|
70655
|
-
const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-
|
|
70655
|
+
const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-42PZKET5.js");
|
|
70656
70656
|
baseGenerator = createOpenAIContentGenerator(generatorConfig, config);
|
|
70657
70657
|
} else if (authType === "qwen-oauth" /* QWEN_OAUTH */) {
|
|
70658
|
-
const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-
|
|
70659
|
-
const { QwenContentGenerator } = await import("./qwenContentGenerator-
|
|
70658
|
+
const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-6LS2T3Q6.js");
|
|
70659
|
+
const { QwenContentGenerator } = await import("./qwenContentGenerator-VR2CNFGI.js");
|
|
70660
70660
|
try {
|
|
70661
70661
|
const qwenClient = await getQwenOauthClient(
|
|
70662
70662
|
config,
|
|
@@ -70677,7 +70677,7 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
|
|
|
70677
70677
|
const { createAnthropicContentGenerator } = await import("./anthropicContentGenerator-ZZRGFEES.js");
|
|
70678
70678
|
baseGenerator = createAnthropicContentGenerator(generatorConfig, config);
|
|
70679
70679
|
} else if (authType === "gemini" /* USE_GEMINI */ || authType === "vertex-ai" /* USE_VERTEX_AI */) {
|
|
70680
|
-
const { createGeminiContentGenerator } = await import("./geminiContentGenerator-
|
|
70680
|
+
const { createGeminiContentGenerator } = await import("./geminiContentGenerator-ADZTXEKV.js");
|
|
70681
70681
|
baseGenerator = createGeminiContentGenerator(generatorConfig, config);
|
|
70682
70682
|
} else {
|
|
70683
70683
|
throw new Error(
|
|
@@ -14,14 +14,14 @@ import {
|
|
|
14
14
|
} from "./chunk-TJTKSVIV.js";
|
|
15
15
|
import {
|
|
16
16
|
loadSettings
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-6IITZE7O.js";
|
|
18
18
|
import {
|
|
19
19
|
writeStderrLine
|
|
20
20
|
} from "./chunk-OWAK7LMW.js";
|
|
21
21
|
import {
|
|
22
22
|
MCP_BUDGET_WARN_FRACTION,
|
|
23
23
|
parsePositiveIntegerEnv
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-GCY7QTCE.js";
|
|
25
25
|
import {
|
|
26
26
|
openBrowserSecurely,
|
|
27
27
|
shouldLaunchBrowser
|
|
@@ -297,7 +297,7 @@ var serveCommand = {
|
|
|
297
297
|
process.exit(1);
|
|
298
298
|
}
|
|
299
299
|
}
|
|
300
|
-
const { runQwenServe } = await import("./run-qwen-serve-
|
|
300
|
+
const { runQwenServe } = await import("./run-qwen-serve-LSOPP4R2.js");
|
|
301
301
|
try {
|
|
302
302
|
const handle = await runQwenServe({
|
|
303
303
|
port: argv.port,
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
buildPermissionSettings
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-QIFTJDBY.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveVoiceStreamConfig,
|
|
8
8
|
resolveVoiceTranscriptionConfig,
|
|
9
9
|
transcribeVoiceAudio
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-3ESL7JXA.js";
|
|
11
11
|
import {
|
|
12
12
|
getVoiceSettingsScope,
|
|
13
13
|
isSelectableVoiceModel,
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
readVoiceMode,
|
|
17
17
|
readVoiceModel,
|
|
18
18
|
resolveVoiceTransport
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-2476XGOU.js";
|
|
20
20
|
import {
|
|
21
21
|
WorkspacePermissionRulesSessionRequiredError,
|
|
22
22
|
WorkspaceSettingsPartialPersistError,
|
|
@@ -46,14 +46,14 @@ import {
|
|
|
46
46
|
createIdleWorkspaceProvidersStatus,
|
|
47
47
|
createIdleWorkspaceSkillsStatus,
|
|
48
48
|
mapDomainErrorToErrorKind
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-64GC5EMF.js";
|
|
50
50
|
import {
|
|
51
51
|
getPersistScopeForModelSelection,
|
|
52
52
|
loadSettings
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-6IITZE7O.js";
|
|
54
54
|
import {
|
|
55
55
|
getWorkspaceTrustStatus
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-GMUPIMHF.js";
|
|
57
57
|
import {
|
|
58
58
|
writeStderrLine
|
|
59
59
|
} from "./chunk-OWAK7LMW.js";
|
|
@@ -61,7 +61,7 @@ import {
|
|
|
61
61
|
ModelsConfig,
|
|
62
62
|
SkillManager,
|
|
63
63
|
require_yauzl
|
|
64
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-GCY7QTCE.js";
|
|
65
65
|
import {
|
|
66
66
|
Storage,
|
|
67
67
|
createDebugLogger
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
resolveChannelCwd
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-W6CQPLWM.js";
|
|
6
6
|
import {
|
|
7
7
|
init_esbuild_shims
|
|
8
8
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -21,12 +21,12 @@ function ensureBuiltins() {
|
|
|
21
21
|
if (!builtinsPromise) {
|
|
22
22
|
builtinsPromise = (async () => {
|
|
23
23
|
const labelled = [
|
|
24
|
-
{ name: "telegram", promise: import("./dist-
|
|
25
|
-
{ name: "weixin", promise: import("./dist-
|
|
26
|
-
{ name: "dingtalk", promise: import("./dist-
|
|
27
|
-
{ name: "wecom", promise: import("./dist-
|
|
28
|
-
{ name: "feishu", promise: import("./dist-
|
|
29
|
-
{ name: "qqbot", promise: import("./dist-
|
|
24
|
+
{ name: "telegram", promise: import("./dist-3DQNQJ6H.js") },
|
|
25
|
+
{ name: "weixin", promise: import("./dist-IEQSDXS7.js") },
|
|
26
|
+
{ name: "dingtalk", promise: import("./dist-IGZMVS5R.js") },
|
|
27
|
+
{ name: "wecom", promise: import("./dist-NUXRQHC5.js") },
|
|
28
|
+
{ name: "feishu", promise: import("./dist-XLE6ODMB.js") },
|
|
29
|
+
{ name: "qqbot", promise: import("./dist-J2H4KTLB.js") }
|
|
30
30
|
];
|
|
31
31
|
const results = await Promise.allSettled(labelled.map((l) => l.promise));
|
|
32
32
|
for (let i = 0; i < results.length; i++) {
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
isChannelWebhookTaskResultMessage,
|
|
22
22
|
normalizeWorkerDiagnostic,
|
|
23
23
|
sanitizeWorkerDiagnostic
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-I7RRHHYG.js";
|
|
25
25
|
import {
|
|
26
26
|
channelSelectionNames
|
|
27
27
|
} from "./chunk-TJTKSVIV.js";
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
} from "./chunk-5HBA2Z7V.js";
|
|
33
33
|
import {
|
|
34
34
|
sanitizeLogText
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-BKNPMEN6.js";
|
|
36
36
|
import {
|
|
37
37
|
init_esbuild_shims
|
|
38
38
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
getErrorMessage
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-UZC5VPOJ.js";
|
|
6
6
|
import {
|
|
7
7
|
extensionToOutputString,
|
|
8
8
|
getExtensionManager
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-RKUMFUFM.js";
|
|
10
10
|
import {
|
|
11
11
|
loadSettings
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-6IITZE7O.js";
|
|
13
13
|
import {
|
|
14
14
|
initializeI18n,
|
|
15
15
|
resolveLanguageSetting,
|
|
16
16
|
t
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-TKASNYDS.js";
|
|
18
18
|
import {
|
|
19
19
|
writeStderrLine,
|
|
20
20
|
writeStdoutLine
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
import {
|
|
4
4
|
getInstallationInfo,
|
|
5
5
|
resolveUpdateCommand
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-OBSLEYCD.js";
|
|
7
7
|
import {
|
|
8
8
|
performStandaloneUpdate
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-WIYV7CSF.js";
|
|
10
10
|
import {
|
|
11
11
|
updateEventEmitter
|
|
12
12
|
} from "./chunk-YAF2MQZ6.js";
|
|
13
13
|
import {
|
|
14
14
|
t
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-TKASNYDS.js";
|
|
16
16
|
import {
|
|
17
17
|
createDebugLogger
|
|
18
18
|
} from "./chunk-UE5TZ55T.js";
|