@qwen-code/qwen-code 0.19.9-nightly.20260714.9dd8389eb → 0.19.10
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/configuration/settings.md +6 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
- package/bundled/qc-helper/docs/qwen-serve.md +7 -2
- package/bundled/review/SKILL.md +23 -11
- package/chunks/{MaxSizedBox-QAYHOC4F.js → MaxSizedBox-67ODZ4SZ.js} +5 -6
- package/chunks/{StandaloneSessionPicker-D3R6YYX3.js → StandaloneSessionPicker-SIPBQT5Z.js} +17 -18
- package/chunks/{acpAgent-ENHBW72A.js → acpAgent-VPZJXLFX.js} +141 -80
- package/chunks/{agent-57LX4KMG.js → agent-Z7NWL6XL.js} +2 -3
- package/chunks/{agent-headless-AC6EVNAP.js → agent-headless-73HZ6ROQ.js} +2 -3
- package/chunks/{bridge-4OZH44MK.js → bridge-XFKW6S7Q.js} +5 -6
- package/chunks/{chunk-DPSWJWZI.js → chunk-2W3OOD4W.js} +1 -0
- package/chunks/{chunk-FDL4PB5H.js → chunk-3XJFUTNM.js} +8 -8
- package/chunks/{chunk-AAS2Q2TV.js → chunk-422XAKCK.js} +2 -2
- package/chunks/{chunk-7U7UIO5W.js → chunk-4FMG7EDJ.js} +19 -4
- package/chunks/{chunk-X7EBAABW.js → chunk-4YWLED2A.js} +1 -1
- package/chunks/{chunk-WN4D7YCI.js → chunk-5EBKKSBX.js} +1 -1
- package/chunks/{chunk-G6QTKQN4.js → chunk-5LROA5W4.js} +3 -3
- package/chunks/{chunk-SUWGUGAD.js → chunk-65N2J6V2.js} +2 -2
- package/chunks/{chunk-T2L6SGQY.js → chunk-6GETGQWP.js} +26 -6
- package/chunks/{chunk-T5C2OUCI.js → chunk-6GKMJPOC.js} +3 -3
- package/chunks/{chunk-K3PPUB46.js → chunk-6W6DI34P.js} +1 -1
- package/chunks/{chunk-WM5HY72H.js → chunk-7L4XBYVW.js} +2 -2
- package/chunks/{chunk-CLTWL6HD.js → chunk-7MJAZMXK.js} +5 -5
- package/chunks/{chunk-6HHAADP2.js → chunk-AAR5SGMD.js} +4 -4
- package/chunks/{chunk-P3S67A5R.js → chunk-B5I2IIWY.js} +3 -3
- package/chunks/{chunk-4DYYRLIE.js → chunk-CEW4HDPK.js} +639 -317
- package/chunks/{chunk-JR63TOV4.js → chunk-CJFNEBYB.js} +1 -1
- package/chunks/{chunk-PMRH4YYW.js → chunk-CUUXANEQ.js} +2 -1
- package/chunks/{chunk-Z56JO4JZ.js → chunk-DK33QJ3V.js} +6 -6
- package/chunks/{chunk-N7FCSERB.js → chunk-DPFBNG72.js} +1 -1
- package/chunks/{chunk-HZYUNZDQ.js → chunk-EQY6POVO.js} +1 -1
- package/chunks/{chunk-MBJ3D6SF.js → chunk-F7NXQH4Y.js} +1 -1
- package/chunks/{chunk-C4CXFRKY.js → chunk-FXMC7SL2.js} +25 -4
- package/chunks/{chunk-CSACSGAW.js → chunk-GGJII3FM.js} +2 -2
- package/chunks/{chunk-EU3U7USF.js → chunk-H3FQOPPS.js} +2 -2
- package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
- package/chunks/{chunk-MBP3K324.js → chunk-HHEFI4RP.js} +32 -11
- package/chunks/{chunk-B6ABUBYY.js → chunk-JSJFKYWT.js} +67 -5
- package/chunks/{chunk-QABSSDQH.js → chunk-K4PZ5F5T.js} +1 -1
- package/chunks/{chunk-SSFDPGFN.js → chunk-K7CRWKOE.js} +7879 -5472
- package/chunks/{chunk-J2TDDOSM.js → chunk-L37RC7MQ.js} +1 -1
- package/chunks/{chunk-V75IOTWF.js → chunk-L62SEJWY.js} +4 -4
- package/chunks/{chunk-HE54PGVI.js → chunk-LNUXFLLJ.js} +2 -2
- package/chunks/{chunk-PHYCWSDG.js → chunk-LQU7EVFA.js} +1 -1
- package/chunks/{chunk-AUGSSJX3.js → chunk-LTNI523B.js} +2 -2
- package/chunks/{chunk-4LJNI7MU.js → chunk-MO7O5722.js} +262 -7
- package/chunks/{chunk-S2QXYLUB.js → chunk-N6FXRR6P.js} +1 -1
- package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
- package/chunks/{chunk-XHW5VUIQ.js → chunk-OFEVHGVU.js} +157 -55
- package/chunks/{chunk-T7FSRWQ5.js → chunk-P6LART6G.js} +107 -6
- package/chunks/{chunk-GYGGUR4Q.js → chunk-Q5GLXH5Q.js} +3 -3
- package/chunks/{chunk-SE74CIZD.js → chunk-RDRVMDWV.js} +1 -1
- package/chunks/{chunk-DKXW66XA.js → chunk-SPUYQB4T.js} +1 -1
- package/chunks/{chunk-AGBFWLA5.js → chunk-TISZXPAX.js} +1 -1
- package/chunks/{chunk-ZLM3KXBT.js → chunk-TTUO4DNG.js} +14 -13
- package/chunks/{chunk-4QOPEEL2.js → chunk-UFOKA4PR.js} +1 -1
- package/chunks/{chunk-2MF6ICOL.js → chunk-V7EQTZYR.js} +36 -8
- package/chunks/{chunk-WWQ3QIJS.js → chunk-VBRRNQB7.js} +10 -10
- package/chunks/{chunk-OCC3UTWA.js → chunk-W34A5MJH.js} +1 -1
- package/chunks/{chunk-LAM6CGP5.js → chunk-WDW64OW3.js} +3 -3
- package/chunks/{chunk-DMTQY5GY.js → chunk-WDWJ4OQJ.js} +3 -3
- package/chunks/{chunk-B6KHOCU7.js → chunk-WIASPMLX.js} +8 -8
- package/chunks/{chunk-4FPUAYTT.js → chunk-WLXYAKV7.js} +4 -4
- package/chunks/{chunk-YWUK7OS7.js → chunk-WTSXKLG5.js} +1 -1
- package/chunks/{chunk-7BIZARI2.js → chunk-X362TMXZ.js} +4 -4
- package/chunks/{chunk-ASVORVFT.js → chunk-XLIRF7IK.js} +1 -1
- package/chunks/{chunk-DNKX35GS.js → chunk-XXJKGHZV.js} +4 -4
- package/chunks/{chunk-UI3W56WF.js → chunk-YU56QGXX.js} +1 -1
- package/chunks/{chunk-RJL5T4WJ.js → chunk-YX4LLZ3D.js} +47 -35
- package/chunks/{chunk-YH4J5XI3.js → chunk-YYPXHMWO.js} +4 -4
- package/chunks/{chunk-AAWKZ5R7.js → chunk-ZKMGAFYV.js} +1 -1
- package/chunks/{chunk-EUNRLYJG.js → chunk-ZQTZXVHP.js} +4 -4
- package/chunks/{computer-use-DIP5BWXP.js → computer-use-IYTX45WA.js} +2 -3
- package/chunks/{contextCommand-QU4GJWWD.js → contextCommand-272V77WU.js} +4 -5
- package/chunks/{create-sub-session-TCLIYVGR.js → create-sub-session-CBJMQLYP.js} +2 -3
- package/chunks/{daemon-CEZ27OH4.js → daemon-RNGFPMAB.js} +315 -36
- package/chunks/{daemon-status-provider-SIBFMLBQ.js → daemon-status-provider-L4STG5VO.js} +9 -10
- package/chunks/{earlyInputCapture-L66BEG2C.js → earlyInputCapture-EN4BRREQ.js} +2 -3
- package/chunks/{edit-Y5LAJSST.js → edit-OMAF2QDR.js} +2 -3
- package/chunks/{enter-worktree-X5LML7T4.js → enter-worktree-BBZX52HG.js} +2 -3
- package/chunks/{enterPlanMode-XWF32QOW.js → enterPlanMode-5NNFMBUY.js} +2 -3
- package/chunks/{environment-YVMA5F4I.js → environment-7TEWMJYN.js} +4 -5
- package/chunks/{errors-4Y5SUAOC.js → errors-I4VKVX3F.js} +4 -5
- package/chunks/{exit-worktree-SFHU7XYC.js → exit-worktree-FUWRJI33.js} +2 -3
- package/chunks/{exitPlanMode-FP3NAN6E.js → exitPlanMode-IHCJ5EEI.js} +2 -3
- package/chunks/{fast-path-ZJNFFCBM.js → fast-path-ZA57TOH4.js} +2 -2
- package/chunks/{gemini-5CAB22BI.js → gemini-UOAKVXBG.js} +91 -33
- package/chunks/{geminiContentGenerator-GE3HPIFB.js → geminiContentGenerator-G6UCE6MW.js} +1 -1
- package/chunks/{glob-YPACZAEL.js → glob-4GJQ2UFF.js} +2 -3
- package/chunks/{grep-IPR4XW37.js → grep-5QSYXF2E.js} +2 -3
- package/chunks/{handleAutoUpdate-P2KEP56V.js → handleAutoUpdate-ULHNWL6R.js} +6 -7
- package/chunks/{i18n-BRCT66AA.js → i18n-CYDUTF6F.js} +3 -4
- package/chunks/{initializer-34HXSK3A.js → initializer-NRFKUGIO.js} +7 -8
- package/chunks/{installationInfo-WOTDQMSC.js → installationInfo-WELKRHHE.js} +3 -4
- package/chunks/{list-XOGP7UPP.js → list-JVDXEG2E.js} +10 -11
- package/chunks/{loadedSettingsAdapter-L4YKGU6F.js → loadedSettingsAdapter-WAM4VUTG.js} +7 -8
- package/chunks/{mcp-HH7DIP7Y.js → mcp-YHOZN3ZM.js} +7 -8
- package/chunks/{monitor-25DEBT6U.js → monitor-R7XZPJHQ.js} +2 -3
- package/chunks/{nonInteractiveCli-CT3VSSLK.js → nonInteractiveCli-NSOB6D74.js} +34 -35
- package/chunks/{notebook-edit-TAVXSWQ6.js → notebook-edit-6RNKE2L2.js} +2 -3
- package/chunks/{openaiContentGenerator-6I7DKUAN.js → openaiContentGenerator-XNS5S64I.js} +2 -2
- package/chunks/{pidfile-SIQGCFLZ.js → pidfile-XE4RRR2P.js} +2 -3
- package/chunks/{qwenContentGenerator-5DDIXI2N.js → qwenContentGenerator-APDPJ3VN.js} +3 -4
- package/chunks/{read-file-WDOAYRFU.js → read-file-XSUWXSR7.js} +1 -1
- package/chunks/{ripGrep-MI7PHN3Q.js → ripGrep-APB3CDMU.js} +2 -3
- package/chunks/{run-qwen-serve-PNTYF3RE.js → run-qwen-serve-NWTGPERT.js} +224 -75
- package/chunks/{runtime-V3FBMUTG.js → runtime-EIO3NQKR.js} +8 -9
- package/chunks/{scheduler-4TAUIJBM.js → scheduler-JJDZBDRN.js} +2 -3
- package/chunks/{serve-WB2TR7XM.js → serve-WTIPB3EI.js} +7 -8
- package/chunks/{server-AF6LNFPK.js → server-NJPHQHLH.js} +2458 -755
- package/chunks/{session-BIGK4NRW.js → session-O4AO7FTS.js} +35 -36
- package/chunks/{settings-IXF5FIQO.js → settings-HQNDK7TG.js} +6 -7
- package/chunks/{shell-5VWJ2PPG.js → shell-UIXM6PWG.js} +2 -3
- package/chunks/{skill-SI667Y3B.js → skill-3XMB4ULV.js} +1 -1
- package/chunks/{spawnChannel-IKX6DD7J.js → spawnChannel-3R632QRM.js} +4 -5
- package/chunks/{src-55DZWDAK.js → src-USZKPUOC.js} +33 -4
- package/chunks/{standalone-update-MHLSFHE6.js → standalone-update-L5XW3D7K.js} +4 -5
- package/chunks/{startInteractiveUI-V2EDWLAX.js → startInteractiveUI-CPZOL2WB.js} +174 -122
- package/chunks/{team-create-IZAMLBJS.js → team-create-XXPRF3IQ.js} +2 -3
- package/chunks/{team-plan-approval-3R4RCKCP.js → team-plan-approval-EOTTKHDW.js} +2 -3
- package/chunks/{theme-manager-LCOXZ5DO.js → theme-manager-P6UITO2L.js} +2 -3
- package/chunks/{tool-search-NYNCD5LF.js → tool-search-DDNGK2LR.js} +1 -1
- package/chunks/{total-session-admission-PJWGOMQE.js → total-session-admission-PL5N7DNY.js} +5 -6
- package/chunks/{trustedFolders-DOJDHNYP.js → trustedFolders-C5LMF3UR.js} +3 -4
- package/chunks/types-ML3TRJQ5.js +16 -0
- package/chunks/{updateCheck-ZXL66KIG.js → updateCheck-QTVVISH7.js} +4 -5
- package/chunks/{validateNonInterActiveAuth-JSNJZCYY.js → validateNonInterActiveAuth-RY4RKBQG.js} +30 -31
- package/chunks/{version-3NLBENG5.js → version-U45RYOSD.js} +1 -1
- package/chunks/{workflow-BQYLF7XP.js → workflow-TCIAQYOA.js} +3 -4
- package/chunks/{workspace-providers-status-FA2DGEZW.js → workspace-providers-status-I3G2HYLY.js} +10 -11
- package/chunks/{workspace-registration-store-TARTAGMI.js → workspace-registration-store-IH5GLZ6Y.js} +1 -1
- package/chunks/{workspace-registry-AGE7WAXX.js → workspace-registry-QEKBELIX.js} +5 -6
- package/chunks/{workspace-service-ERC5VR2B.js → workspace-service-ORKHGLP3.js} +17 -14
- package/chunks/{workspace-skills-status-FKYWGNCN.js → workspace-skills-status-D7QCNDYY.js} +9 -10
- package/chunks/{write-file-S47KSK7Z.js → write-file-JGRQR5VM.js} +2 -3
- package/cli.js +11 -11
- package/package.json +3 -3
- package/web-shell/assets/{arc-Zj4EkBUY.js → arc-CUeDlxvE.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-DAk1Ua3Y.js → architectureDiagram-3BPJPVTR-PiUszkQA.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-DBNqUthM.js → blockDiagram-GPEHLZMM-s2wYSO7e.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-Dq5QGJ53.js → c4Diagram-AAUBKEIU-DyLxZoz9.js} +1 -1
- package/web-shell/assets/channel-DkuJJ0qd.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-DY0AeGru.js → chunk-2J33WTMH-Dsdai7Tk.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-COX3OyIi.js → chunk-4BX2VUAB-DEosOjV7.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-Csoyddbh.js → chunk-55IACEB6-sNsRLTXf.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-BJPONdxX.js → chunk-727SXJPM-DkRNZzmh.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-syLVH6fg.js → chunk-AQP2D5EJ-BrsRNpzd.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-Cfm59Nhw.js → chunk-FMBD7UC4-CI039lpl.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-DZf6tAqS.js → chunk-ND2GUHAM-M-pkeIfu.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-DKBp_v5q.js → chunk-QZHKN3VN-C4ckGNbH.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CwqHc0TB.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwqHc0TB.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-DUU3mMQ5.js → cose-bilkent-S5V4N54A-BciKUAFq.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-BUgNfbh-.js → dagre-BM42HDAG-C1nTSgU6.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-DT7MVfAg.js → diagram-2AECGRRQ-BDPNWr1m.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-Cv4YG-ec.js → diagram-5GNKFQAL-CNFhTszL.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BAe9LLkn.js → diagram-KO2AKTUF-CjPa4p5a.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-DW8wqTIP.js → diagram-LMA3HP47-ZzPykSyG.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-CmkuWbaK.js → diagram-OG6HWLK6-0UVtZ9A4.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-DwvdHjZ9.js → erDiagram-TEJ5UH35-CajDZCat.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-CSsXrhW_.js → flowDiagram-I6XJVG4X-BRuFBIvL.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BtuznCdi.js → ganttDiagram-6RSMTGT7-BevGmJqG.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DGmAm06g.js → gitGraphDiagram-PVQCEYII-DvPMpBMb.js} +1 -1
- package/web-shell/assets/index-Cnvv4VcI.css +5 -0
- package/web-shell/assets/index-D1Uyklxa.js +1088 -0
- package/web-shell/assets/{index-BEtz1cvN.js → index-DzHwQkQq.js} +1 -1
- package/web-shell/assets/{infoDiagram-5YYISTIA-OAiZ1q0K.js → infoDiagram-5YYISTIA-Oixn7tA9.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DyK0KTIT.js → ishikawaDiagram-YF4QCWOH-BgKpeg-j.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-DzYJlwfO.js → journeyDiagram-JHISSGLW-74mwxIaA.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-CU_tcDwi.js → kanban-definition-UN3LZRKU-D4D6cEqA.js} +1 -1
- package/web-shell/assets/{linear-DvZXjF17.js → linear-atZRE_L2.js} +1 -1
- package/web-shell/assets/{mermaid.core-_ZFEQlOl.js → mermaid.core-KKudX-JC.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-Or4p64HB.js → mindmap-definition-RKZ34NQL-CMCej9yG.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-lXE-zZ6b.js → pieDiagram-4H26LBE5-nhx40X7q.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DUXb9mUV.js → quadrantDiagram-W4KKPZXB-CUmVcN3M.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-D_10uHfo.js → requirementDiagram-4Y6WPE33-C_vyEwyy.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-E8c0fPqe.js → sankeyDiagram-5OEKKPKP-DU6G4VWR.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CJMtFttK.js → sequenceDiagram-3UESZ5HK-DdeRR_KJ.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-DhbviRbB.js → stateDiagram-AJRCARHV-C6iCI8ps.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C0_6nR6C.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-CM5yMkFK.js → timeline-definition-PNZ67QCA-B_Ea8Cb7.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BCi-zWNN.js → vennDiagram-CIIHVFJN-BPUVZEJA.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-BJ_yJNjJ.js → wardley-L42UT6IY-BWEj0lKY.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-TjtLk-qN.js → wardleyDiagram-YWT4CUSO-BvDsdIQw.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-D1TjyoQ3.js → xychartDiagram-2RQKCTM6-crz0QhF_.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-CU3L64TP.js +0 -93
- package/chunks/types-JNKGKUJT.js +0 -12
- package/web-shell/assets/channel-DWfYijFS.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-DDht-78J.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DDht-78J.js +0 -1
- package/web-shell/assets/index-B9Xwf4OS.css +0 -5
- package/web-shell/assets/index-BUkM4ZXX.js +0 -1088
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CntljfwW.js +0 -1
|
@@ -434,7 +434,7 @@ var WorkspaceRegistrationStore = class {
|
|
|
434
434
|
return removed;
|
|
435
435
|
}
|
|
436
436
|
async update(mutate) {
|
|
437
|
-
const { atomicWriteFile } = await import("./src-
|
|
437
|
+
const { atomicWriteFile } = await import("./src-USZKPUOC.js");
|
|
438
438
|
return withInProcessLock(this.filePath, async () => {
|
|
439
439
|
const lock = await acquireFileLock(this.filePath);
|
|
440
440
|
let committed = false;
|
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
getErrorMessage
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-65N2J6V2.js";
|
|
6
6
|
import {
|
|
7
7
|
extensionToOutputString,
|
|
8
8
|
getExtensionManager
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-AAR5SGMD.js";
|
|
10
10
|
import {
|
|
11
11
|
loadSettings
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-6GETGQWP.js";
|
|
13
13
|
import {
|
|
14
14
|
initializeI18n,
|
|
15
15
|
resolveLanguageSetting,
|
|
16
16
|
t
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-RDRVMDWV.js";
|
|
18
18
|
import {
|
|
19
19
|
writeStderrLine,
|
|
20
20
|
writeStdoutLine
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from "./chunk-QHTIBUWB.js";
|
|
9
9
|
import {
|
|
10
10
|
t
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-RDRVMDWV.js";
|
|
12
12
|
import {
|
|
13
13
|
require_clean,
|
|
14
14
|
require_constants,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
ansi_regex_exports,
|
|
28
28
|
init_ansi_regex,
|
|
29
29
|
stripAnsi
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-K7CRWKOE.js";
|
|
31
31
|
import {
|
|
32
32
|
require_graceful_fs
|
|
33
33
|
} from "./chunk-E2UVIFI2.js";
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
functionResponsePartsToString
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-YX4LLZ3D.js";
|
|
6
6
|
import {
|
|
7
7
|
parseAndFormatApiError
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-K7CRWKOE.js";
|
|
9
9
|
import {
|
|
10
10
|
init_esbuild_shims
|
|
11
11
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -18,9 +18,6 @@ import {
|
|
|
18
18
|
import {
|
|
19
19
|
writeStderrLine
|
|
20
20
|
} from "./chunk-YUZI3WAC.js";
|
|
21
|
-
import {
|
|
22
|
-
require_once
|
|
23
|
-
} from "./chunk-CU3L64TP.js";
|
|
24
21
|
import {
|
|
25
22
|
require_safer
|
|
26
23
|
} from "./chunk-XWRJCPHC.js";
|
|
@@ -11322,6 +11319,86 @@ var require_utils2 = __commonJS({
|
|
|
11322
11319
|
}
|
|
11323
11320
|
});
|
|
11324
11321
|
|
|
11322
|
+
// node_modules/wrappy/wrappy.js
|
|
11323
|
+
var require_wrappy = __commonJS({
|
|
11324
|
+
"node_modules/wrappy/wrappy.js"(exports, module) {
|
|
11325
|
+
init_esbuild_shims();
|
|
11326
|
+
module.exports = wrappy;
|
|
11327
|
+
function wrappy(fn, cb) {
|
|
11328
|
+
if (fn && cb) return wrappy(fn)(cb);
|
|
11329
|
+
if (typeof fn !== "function")
|
|
11330
|
+
throw new TypeError("need wrapper function");
|
|
11331
|
+
Object.keys(fn).forEach(function(k) {
|
|
11332
|
+
wrapper[k] = fn[k];
|
|
11333
|
+
});
|
|
11334
|
+
return wrapper;
|
|
11335
|
+
function wrapper() {
|
|
11336
|
+
var args = new Array(arguments.length);
|
|
11337
|
+
for (var i = 0; i < args.length; i++) {
|
|
11338
|
+
args[i] = arguments[i];
|
|
11339
|
+
}
|
|
11340
|
+
var ret = fn.apply(this, args);
|
|
11341
|
+
var cb2 = args[args.length - 1];
|
|
11342
|
+
if (typeof ret === "function" && ret !== cb2) {
|
|
11343
|
+
Object.keys(cb2).forEach(function(k) {
|
|
11344
|
+
ret[k] = cb2[k];
|
|
11345
|
+
});
|
|
11346
|
+
}
|
|
11347
|
+
return ret;
|
|
11348
|
+
}
|
|
11349
|
+
__name(wrapper, "wrapper");
|
|
11350
|
+
}
|
|
11351
|
+
__name(wrappy, "wrappy");
|
|
11352
|
+
}
|
|
11353
|
+
});
|
|
11354
|
+
|
|
11355
|
+
// node_modules/once/once.js
|
|
11356
|
+
var require_once = __commonJS({
|
|
11357
|
+
"node_modules/once/once.js"(exports, module) {
|
|
11358
|
+
init_esbuild_shims();
|
|
11359
|
+
var wrappy = require_wrappy();
|
|
11360
|
+
module.exports = wrappy(once);
|
|
11361
|
+
module.exports.strict = wrappy(onceStrict);
|
|
11362
|
+
once.proto = once(function() {
|
|
11363
|
+
Object.defineProperty(Function.prototype, "once", {
|
|
11364
|
+
value: /* @__PURE__ */ __name(function() {
|
|
11365
|
+
return once(this);
|
|
11366
|
+
}, "value"),
|
|
11367
|
+
configurable: true
|
|
11368
|
+
});
|
|
11369
|
+
Object.defineProperty(Function.prototype, "onceStrict", {
|
|
11370
|
+
value: /* @__PURE__ */ __name(function() {
|
|
11371
|
+
return onceStrict(this);
|
|
11372
|
+
}, "value"),
|
|
11373
|
+
configurable: true
|
|
11374
|
+
});
|
|
11375
|
+
});
|
|
11376
|
+
function once(fn) {
|
|
11377
|
+
var f = /* @__PURE__ */ __name(function() {
|
|
11378
|
+
if (f.called) return f.value;
|
|
11379
|
+
f.called = true;
|
|
11380
|
+
return f.value = fn.apply(this, arguments);
|
|
11381
|
+
}, "f");
|
|
11382
|
+
f.called = false;
|
|
11383
|
+
return f;
|
|
11384
|
+
}
|
|
11385
|
+
__name(once, "once");
|
|
11386
|
+
function onceStrict(fn) {
|
|
11387
|
+
var f = /* @__PURE__ */ __name(function() {
|
|
11388
|
+
if (f.called)
|
|
11389
|
+
throw new Error(f.onceError);
|
|
11390
|
+
f.called = true;
|
|
11391
|
+
return f.value = fn.apply(this, arguments);
|
|
11392
|
+
}, "f");
|
|
11393
|
+
var name = fn.name || "Function wrapped with `once`";
|
|
11394
|
+
f.onceError = name + " shouldn't be called more than once";
|
|
11395
|
+
f.called = false;
|
|
11396
|
+
return f;
|
|
11397
|
+
}
|
|
11398
|
+
__name(onceStrict, "onceStrict");
|
|
11399
|
+
}
|
|
11400
|
+
});
|
|
11401
|
+
|
|
11325
11402
|
// node_modules/is-promise/index.js
|
|
11326
11403
|
var require_is_promise = __commonJS({
|
|
11327
11404
|
"node_modules/is-promise/index.js"(exports, module) {
|
|
@@ -16553,6 +16630,7 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
16553
16630
|
// unregistered — the toggle takes effect on the next ACP child spawn
|
|
16554
16631
|
// (`tools.disabled` is consulted at `Config` construction time).
|
|
16555
16632
|
workspace_tool_toggle: { since: "v1" },
|
|
16633
|
+
workspace_skill_toggle: { since: "v1" },
|
|
16556
16634
|
workspace_settings: { since: "v1" },
|
|
16557
16635
|
// `GET /workspace/permissions` is always available when this tag is
|
|
16558
16636
|
// advertised. `POST /workspace/permissions` updates the active ACP
|
|
@@ -16694,13 +16772,27 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
16694
16772
|
// workspace agent CRUD, and persisted session organization surfaces.
|
|
16695
16773
|
// Workspace-qualified settings also require the existing
|
|
16696
16774
|
// `workspace_settings` tag because that surface depends on settings
|
|
16697
|
-
// persistence. ACP/WebSocket
|
|
16698
|
-
//
|
|
16775
|
+
// persistence. ACP/WebSocket and auth stay outside this core tag;
|
|
16776
|
+
// workspace-qualified Voice REST/WebSocket routes use their separate
|
|
16777
|
+
// `workspace_qualified_voice` capability below. V2 extension management
|
|
16778
|
+
// is advertised separately via `extension_management_v2`.
|
|
16699
16779
|
workspace_qualified_rest_core: { since: "v1" },
|
|
16780
|
+
// Workspace-qualified Voice REST and WebSocket routes. This tag is enough
|
|
16781
|
+
// to discover plural modalities because legacy Voice tags describe only
|
|
16782
|
+
// the primary runtime and may be absent for a secondary-only setup.
|
|
16783
|
+
workspace_qualified_voice: { since: "v1" },
|
|
16784
|
+
// Global extension catalog/mutations plus workspace-qualified activation
|
|
16785
|
+
// projections. This is additive to the legacy primary-workspace
|
|
16786
|
+
// `workspace_extensions` contract.
|
|
16787
|
+
extension_management_v2: { since: "v1" },
|
|
16700
16788
|
// Workspace-qualified, daemon-local persisted transcript paging. The tag is
|
|
16701
16789
|
// unconditional because the route also serves a trusted single-workspace
|
|
16702
16790
|
// primary; authorization is evaluated for the selected runtime per request.
|
|
16703
16791
|
workspace_persisted_transcript: { since: "v1" },
|
|
16792
|
+
// Workspace-qualified full session export from active persisted storage.
|
|
16793
|
+
// This is separate from `session_export` so clients do not infer the plural
|
|
16794
|
+
// route from the legacy primary-workspace export capability.
|
|
16795
|
+
workspace_session_export: { since: "v1" },
|
|
16704
16796
|
// Workspace-qualified ACP transport (issue #6378 Phase 4):
|
|
16705
16797
|
// `/workspaces/:workspace/acp` mounts a per-runtime ACP dispatcher (HTTP +
|
|
16706
16798
|
// WebSocket) for each registered workspace, with per-runtime device-flow and
|
|
@@ -16799,6 +16891,12 @@ var CONDITIONAL_SERVE_FEATURES = /* @__PURE__ */ new Map([
|
|
|
16799
16891
|
// for the always-available legacy `/acp` surface.
|
|
16800
16892
|
(toggles) => toggles.acpHttpEnabled === true && toggles.multiWorkspaceSessionsEnabled === true
|
|
16801
16893
|
],
|
|
16894
|
+
[
|
|
16895
|
+
"workspace_qualified_voice",
|
|
16896
|
+
// Like qualified ACP, the plural Voice surface is mounted ahead of time
|
|
16897
|
+
// but only becomes useful once the daemon has a secondary runtime.
|
|
16898
|
+
(toggles) => toggles.acpHttpEnabled === true && toggles.multiWorkspaceSessionsEnabled === true
|
|
16899
|
+
],
|
|
16802
16900
|
["client_mcp_over_ws", (toggles) => toggles.clientMcpOverWsEnabled === true],
|
|
16803
16901
|
["cdp_tunnel_over_ws", (toggles) => toggles.cdpTunnelOverWsEnabled === true],
|
|
16804
16902
|
[
|
|
@@ -16870,6 +16968,7 @@ var PROTOTYPE_POLLUTION_KEYS = /* @__PURE__ */ new Set([
|
|
|
16870
16968
|
var CLIENT_ID_HEADER = "x-qwen-client-id";
|
|
16871
16969
|
var MAX_CLIENT_ID_LENGTH = 128;
|
|
16872
16970
|
var MAX_TOOL_NAME_LENGTH = 256;
|
|
16971
|
+
var MAX_SKILL_NAME_LENGTH = 256;
|
|
16873
16972
|
var MAX_SERVER_NAME_LENGTH = 256;
|
|
16874
16973
|
var CLIENT_ID_RE = /^[A-Za-z0-9._:-]+$/;
|
|
16875
16974
|
var INVALID_PERMISSION_OUTCOME_ERROR = '`outcome` must be `{ outcome: "cancelled" }` or `{ outcome: "selected", optionId: string }`';
|
|
@@ -16972,7 +17071,8 @@ __name(validateMcpRuntimeServerName, "validateMcpRuntimeServerName");
|
|
|
16972
17071
|
function parseAndValidateWorkspaceClientId(req, res, bridge) {
|
|
16973
17072
|
const raw = parseClientIdHeader(req, res);
|
|
16974
17073
|
if (raw === null || raw === void 0) return raw;
|
|
16975
|
-
|
|
17074
|
+
const bridges = Array.isArray(bridge) ? bridge : [bridge];
|
|
17075
|
+
if (!bridges.some((candidate) => candidate.knownClientIds().has(raw))) {
|
|
16976
17076
|
res.status(400).json({
|
|
16977
17077
|
error: `Client id "${raw}" is not registered for this workspace`,
|
|
16978
17078
|
code: "invalid_client_id",
|
|
@@ -17958,6 +18058,157 @@ function isBrowserAutomationMcpAvailable(opts, env) {
|
|
|
17958
18058
|
}
|
|
17959
18059
|
__name(isBrowserAutomationMcpAvailable, "isBrowserAutomationMcpAvailable");
|
|
17960
18060
|
|
|
18061
|
+
// packages/cli/src/serve/voice/workspace-voice-coordinator.ts
|
|
18062
|
+
init_esbuild_shims();
|
|
18063
|
+
var MAX_CONCURRENT_VOICE_SESSIONS = 8;
|
|
18064
|
+
var DISPOSE_WAIT_MS = 5e3;
|
|
18065
|
+
var VoiceLeaseAbortError = class extends Error {
|
|
18066
|
+
constructor(kind, message) {
|
|
18067
|
+
super(message);
|
|
18068
|
+
this.kind = kind;
|
|
18069
|
+
this.name = "VoiceLeaseAbortError";
|
|
18070
|
+
}
|
|
18071
|
+
static {
|
|
18072
|
+
__name(this, "VoiceLeaseAbortError");
|
|
18073
|
+
}
|
|
18074
|
+
};
|
|
18075
|
+
var Lease = class {
|
|
18076
|
+
constructor(onRelease) {
|
|
18077
|
+
this.onRelease = onRelease;
|
|
18078
|
+
}
|
|
18079
|
+
static {
|
|
18080
|
+
__name(this, "Lease");
|
|
18081
|
+
}
|
|
18082
|
+
controller = new AbortController();
|
|
18083
|
+
signal = this.controller.signal;
|
|
18084
|
+
released = false;
|
|
18085
|
+
release() {
|
|
18086
|
+
if (this.released) return;
|
|
18087
|
+
this.released = true;
|
|
18088
|
+
this.onRelease(this);
|
|
18089
|
+
}
|
|
18090
|
+
abort(reason) {
|
|
18091
|
+
if (!this.signal.aborted) this.controller.abort(reason);
|
|
18092
|
+
}
|
|
18093
|
+
};
|
|
18094
|
+
var WorkspaceVoiceCoordinator = class {
|
|
18095
|
+
static {
|
|
18096
|
+
__name(this, "WorkspaceVoiceCoordinator");
|
|
18097
|
+
}
|
|
18098
|
+
states = /* @__PURE__ */ new Map();
|
|
18099
|
+
disposed = /* @__PURE__ */ new WeakSet();
|
|
18100
|
+
active = 0;
|
|
18101
|
+
acquire(runtime) {
|
|
18102
|
+
if (this.disposed.has(runtime)) {
|
|
18103
|
+
return { kind: "rejected", reason: "draining" };
|
|
18104
|
+
}
|
|
18105
|
+
const state = this.stateFor(runtime);
|
|
18106
|
+
if (state.draining) return { kind: "rejected", reason: "draining" };
|
|
18107
|
+
if (this.active >= MAX_CONCURRENT_VOICE_SESSIONS) {
|
|
18108
|
+
return { kind: "rejected", reason: "capacity" };
|
|
18109
|
+
}
|
|
18110
|
+
const lease = new Lease((current) => this.release(runtime, current));
|
|
18111
|
+
state.leases.add(lease);
|
|
18112
|
+
this.active++;
|
|
18113
|
+
return { kind: "admitted", lease };
|
|
18114
|
+
}
|
|
18115
|
+
beginWorkspaceDrain(runtime) {
|
|
18116
|
+
this.stateFor(runtime).draining = true;
|
|
18117
|
+
}
|
|
18118
|
+
cancelWorkspaceDrain(runtime) {
|
|
18119
|
+
const state = this.states.get(runtime);
|
|
18120
|
+
if (!state || state.completed) return;
|
|
18121
|
+
state.draining = false;
|
|
18122
|
+
if (state.leases.size === 0) this.states.delete(runtime);
|
|
18123
|
+
}
|
|
18124
|
+
completeWorkspaceDrain(runtime) {
|
|
18125
|
+
this.disposed.add(runtime);
|
|
18126
|
+
const state = this.states.get(runtime);
|
|
18127
|
+
if (!state) return;
|
|
18128
|
+
state.draining = true;
|
|
18129
|
+
state.completed = true;
|
|
18130
|
+
const abortReason = new VoiceLeaseAbortError(
|
|
18131
|
+
"workspace_removed",
|
|
18132
|
+
"Workspace drain completed"
|
|
18133
|
+
);
|
|
18134
|
+
for (const lease of state.leases) lease.abort(abortReason);
|
|
18135
|
+
this.deleteIfIdle(runtime, state);
|
|
18136
|
+
}
|
|
18137
|
+
getWorkspaceActivity(runtime) {
|
|
18138
|
+
return this.states.get(runtime)?.leases.size ?? 0;
|
|
18139
|
+
}
|
|
18140
|
+
async disposeRuntime(runtime, reason) {
|
|
18141
|
+
this.disposed.add(runtime);
|
|
18142
|
+
const state = this.states.get(runtime);
|
|
18143
|
+
if (!state) return;
|
|
18144
|
+
state.draining = true;
|
|
18145
|
+
state.completed = true;
|
|
18146
|
+
const abortReason = new VoiceLeaseAbortError(
|
|
18147
|
+
reason,
|
|
18148
|
+
reason === "workspace_removed" ? "Workspace runtime was removed" : "Daemon is shutting down"
|
|
18149
|
+
);
|
|
18150
|
+
for (const lease of state.leases) lease.abort(abortReason);
|
|
18151
|
+
if (state.leases.size === 0) {
|
|
18152
|
+
this.deleteIfIdle(runtime, state);
|
|
18153
|
+
return;
|
|
18154
|
+
}
|
|
18155
|
+
let resolveIdle;
|
|
18156
|
+
const idle = new Promise((resolve) => {
|
|
18157
|
+
resolveIdle = resolve;
|
|
18158
|
+
state.idleWaiters.add(resolve);
|
|
18159
|
+
});
|
|
18160
|
+
let timeout;
|
|
18161
|
+
let timedOut = false;
|
|
18162
|
+
try {
|
|
18163
|
+
await Promise.race([
|
|
18164
|
+
idle,
|
|
18165
|
+
new Promise((resolve) => {
|
|
18166
|
+
timeout = setTimeout(() => {
|
|
18167
|
+
timedOut = true;
|
|
18168
|
+
resolve();
|
|
18169
|
+
}, DISPOSE_WAIT_MS);
|
|
18170
|
+
timeout.unref?.();
|
|
18171
|
+
})
|
|
18172
|
+
]);
|
|
18173
|
+
} finally {
|
|
18174
|
+
if (timeout) clearTimeout(timeout);
|
|
18175
|
+
if (resolveIdle) state.idleWaiters.delete(resolveIdle);
|
|
18176
|
+
}
|
|
18177
|
+
if (timedOut && state.leases.size > 0) {
|
|
18178
|
+
process.stderr.write(
|
|
18179
|
+
`qwen serve: Voice runtime disposal timed out with ${state.leases.size} active lease(s).
|
|
18180
|
+
`
|
|
18181
|
+
);
|
|
18182
|
+
}
|
|
18183
|
+
}
|
|
18184
|
+
stateFor(runtime) {
|
|
18185
|
+
let state = this.states.get(runtime);
|
|
18186
|
+
if (!state) {
|
|
18187
|
+
state = {
|
|
18188
|
+
draining: false,
|
|
18189
|
+
completed: false,
|
|
18190
|
+
leases: /* @__PURE__ */ new Set(),
|
|
18191
|
+
idleWaiters: /* @__PURE__ */ new Set()
|
|
18192
|
+
};
|
|
18193
|
+
this.states.set(runtime, state);
|
|
18194
|
+
}
|
|
18195
|
+
return state;
|
|
18196
|
+
}
|
|
18197
|
+
release(runtime, lease) {
|
|
18198
|
+
const state = this.states.get(runtime);
|
|
18199
|
+
if (!state || !state.leases.delete(lease)) return;
|
|
18200
|
+
this.active--;
|
|
18201
|
+
if (state.leases.size === 0) {
|
|
18202
|
+
for (const resolve of state.idleWaiters) resolve();
|
|
18203
|
+
state.idleWaiters.clear();
|
|
18204
|
+
}
|
|
18205
|
+
this.deleteIfIdle(runtime, state);
|
|
18206
|
+
}
|
|
18207
|
+
deleteIfIdle(runtime, state) {
|
|
18208
|
+
if (state.completed && state.leases.size === 0) this.states.delete(runtime);
|
|
18209
|
+
}
|
|
18210
|
+
};
|
|
18211
|
+
|
|
17961
18212
|
export {
|
|
17962
18213
|
require_express2 as require_express,
|
|
17963
18214
|
sanitizeForStderr,
|
|
@@ -17988,6 +18239,7 @@ export {
|
|
|
17988
18239
|
CLIENT_ID_HEADER,
|
|
17989
18240
|
MAX_CLIENT_ID_LENGTH,
|
|
17990
18241
|
MAX_TOOL_NAME_LENGTH,
|
|
18242
|
+
MAX_SKILL_NAME_LENGTH,
|
|
17991
18243
|
MAX_SERVER_NAME_LENGTH,
|
|
17992
18244
|
CLIENT_ID_RE,
|
|
17993
18245
|
safeBody,
|
|
@@ -18013,7 +18265,10 @@ export {
|
|
|
18013
18265
|
resolveAcpHttpEnabled,
|
|
18014
18266
|
QWEN_CDP_MCP_COMMAND_ENV,
|
|
18015
18267
|
resolveCdpMcpCommand,
|
|
18016
|
-
isBrowserAutomationMcpAvailable
|
|
18268
|
+
isBrowserAutomationMcpAvailable,
|
|
18269
|
+
MAX_CONCURRENT_VOICE_SESSIONS,
|
|
18270
|
+
VoiceLeaseAbortError,
|
|
18271
|
+
WorkspaceVoiceCoordinator
|
|
18017
18272
|
};
|
|
18018
18273
|
/**
|
|
18019
18274
|
* @license
|
|
@@ -33,10 +33,36 @@ var WorkspacePermissionRulesSessionRequiredError = class extends Error {
|
|
|
33
33
|
this.name = "WorkspacePermissionRulesSessionRequiredError";
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
|
+
var WorkspaceSkillNotFoundError = class extends Error {
|
|
37
|
+
constructor(skillName) {
|
|
38
|
+
super(`Skill not found: ${skillName}`);
|
|
39
|
+
this.skillName = skillName;
|
|
40
|
+
this.name = "WorkspaceSkillNotFoundError";
|
|
41
|
+
}
|
|
42
|
+
static {
|
|
43
|
+
__name(this, "WorkspaceSkillNotFoundError");
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
var WorkspaceSkillNotToggleableError = class extends Error {
|
|
47
|
+
constructor(skillName, reason, lockedScope) {
|
|
48
|
+
super(
|
|
49
|
+
lockedScope ? `Skill ${skillName} is locked by ${lockedScope} settings` : `Skill ${skillName} is not toggleable: ${reason}`
|
|
50
|
+
);
|
|
51
|
+
this.skillName = skillName;
|
|
52
|
+
this.reason = reason;
|
|
53
|
+
this.lockedScope = lockedScope;
|
|
54
|
+
this.name = "WorkspaceSkillNotToggleableError";
|
|
55
|
+
}
|
|
56
|
+
static {
|
|
57
|
+
__name(this, "WorkspaceSkillNotToggleableError");
|
|
58
|
+
}
|
|
59
|
+
};
|
|
36
60
|
|
|
37
61
|
export {
|
|
38
62
|
WorkspaceSettingsPartialPersistError,
|
|
39
|
-
WorkspacePermissionRulesSessionRequiredError
|
|
63
|
+
WorkspacePermissionRulesSessionRequiredError,
|
|
64
|
+
WorkspaceSkillNotFoundError,
|
|
65
|
+
WorkspaceSkillNotToggleableError
|
|
40
66
|
};
|
|
41
67
|
/**
|
|
42
68
|
* @license
|