@qwen-code/qwen-code 0.19.9 → 0.19.10-nightly.20260716.506ce0a1a
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 +14 -6
- package/bundled/qc-helper/docs/features/approval-mode.md +2 -2
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +33 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +64 -20
- package/bundled/qc-helper/docs/features/channels/wecom.md +8 -7
- package/bundled/qc-helper/docs/features/code-review.md +88 -44
- package/bundled/qc-helper/docs/features/commands.md +6 -6
- package/bundled/qc-helper/docs/features/hooks.md +29 -0
- package/bundled/qc-helper/docs/features/sandbox.md +2 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
- package/bundled/qc-helper/docs/qwen-serve.md +49 -20
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
- package/bundled/review/DESIGN.md +219 -33
- package/bundled/review/SKILL.md +429 -382
- package/chunks/{MaxSizedBox-6HYJ3ZPJ.js → MaxSizedBox-WOC3YDWA.js} +31 -32
- package/chunks/{StandaloneSessionPicker-WS4GXYOG.js → StandaloneSessionPicker-H5HZCAFD.js} +49 -48
- package/chunks/{acpAgent-5FWSOZL5.js → acpAgent-55YDJDNM.js} +922 -550
- package/chunks/{agent-HOLHB3RT.js → agent-H6VE5W3L.js} +26 -27
- package/chunks/{agent-headless-SXL6H56A.js → agent-headless-T4XJOCRU.js} +26 -27
- package/chunks/{anthropicContentGenerator-L73TO3DB.js → anthropicContentGenerator-HBRXJSP4.js} +78 -16
- package/chunks/{artifact-tool-U7IRTLIV.js → artifact-tool-MIZLXBLF.js} +2 -2
- package/chunks/{askUserQuestion-2DLUUZZG.js → askUserQuestion-XMJVPNWM.js} +2 -2
- package/chunks/{bridge-BCJQ7BBB.js → bridge-FTB6ZP3R.js} +31 -34
- package/chunks/{ca-UJ6HC4H2.js → ca-CODEN7TD.js} +9 -1
- package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
- package/chunks/channel-worker-manager-CUDPU4CN.js +418 -0
- package/chunks/channel-worker-supervisor-4XTO2ZD3.js +20 -0
- package/chunks/{chunk-LXNEJD34.js → chunk-2FO5GFKZ.js} +1 -1
- package/chunks/{chunk-VA4KQY6V.js → chunk-2JNR4VP2.js} +3 -3
- package/chunks/{chunk-L36P3NBD.js → chunk-2W3OOD4W.js} +2 -0
- package/chunks/{chunk-7R3CZA3Q.js → chunk-2Z5UX4KI.js} +1 -1
- package/chunks/{chunk-CUMMSHH6.js → chunk-3DWIFU7L.js} +1 -1
- package/chunks/chunk-3MX7D6QN.js +516 -0
- package/chunks/{chunk-SJHDYNHF.js → chunk-4BJVSIS3.js} +3 -3
- package/chunks/{chunk-TO6QE22P.js → chunk-5CNYZ7TN.js} +26 -22
- package/chunks/{chunk-N3EMS75V.js → chunk-5DEJ4T6C.js} +1333 -1232
- package/chunks/chunk-5HBA2Z7V.js +28 -0
- package/chunks/{chunk-ZJE7NSL3.js → chunk-5M6IDOMF.js} +34 -97
- package/chunks/{chunk-SCGXUJBT.js → chunk-6LI3L22E.js} +3 -3
- package/chunks/{chunk-K434OPES.js → chunk-6WPJRYLZ.js} +3 -3
- package/chunks/{chunk-YAUFFXDS.js → chunk-7GM2RWCR.js} +12 -11
- package/chunks/{chunk-OQ4DRIOA.js → chunk-7HWE2W74.js} +2 -2
- package/chunks/{chunk-J4TSQ5EQ.js → chunk-7NFB7LBQ.js} +8 -1
- package/chunks/{chunk-MC23XKFE.js → chunk-A2HWMJVO.js} +37 -3
- package/chunks/{chunk-3G7CIHVV.js → chunk-ABNYOMDG.js} +4 -4
- package/chunks/{chunk-3AHXV67U.js → chunk-AGZLXLBY.js} +1 -1
- package/chunks/{chunk-RDJSGHZE.js → chunk-ALGGS7UH.js} +1 -38
- package/chunks/{chunk-Q4YQW46J.js → chunk-AMRZVQUY.js} +43 -40
- package/chunks/{chunk-W3JHSWRP.js → chunk-AN6C2U46.js} +4 -4
- package/chunks/{chunk-GWHYEOV2.js → chunk-ARKANCNX.js} +2 -1
- package/chunks/{chunk-5SFOMFG4.js → chunk-AVEOWVOM.js} +36 -2
- package/chunks/{chunk-34MW4KTI.js → chunk-BA5JGE5F.js} +2 -2
- package/chunks/{chunk-5HOMWMCL.js → chunk-BSJAQUFD.js} +5492 -1336
- package/chunks/{chunk-L6P4KPHR.js → chunk-BWJKL5DB.js} +58 -38
- package/chunks/{chunk-PVZM22CK.js → chunk-C32JFRGV.js} +5 -5
- package/chunks/{chunk-AKIVHSJR.js → chunk-CZIHPO7L.js} +163 -782
- package/chunks/chunk-DL7RCO6V.js +493 -0
- package/chunks/{chunk-KKNMOEZH.js → chunk-E2UVIFI2.js} +185 -398
- package/chunks/{chunk-5VXNZWGF.js → chunk-ENUQSKEY.js} +1 -1
- package/chunks/{chunk-PDZ7MBDG.js → chunk-EWILX3BM.js} +27 -6
- package/chunks/{chunk-BMGVRZN4.js → chunk-EZWX232B.js} +1 -1
- package/chunks/{chunk-4GORAUCN.js → chunk-F333XEAU.js} +1 -1
- package/chunks/{chunk-YLV3XXFB.js → chunk-FBU7WRZI.js} +17 -1
- package/chunks/chunk-FEOZBUMT.js +77 -0
- package/chunks/{chunk-5U27BZ72.js → chunk-FKEGVMPX.js} +269 -83
- package/chunks/chunk-FNX3LGAK.js +34 -0
- package/chunks/{chunk-LK7KUE55.js → chunk-FSA7ERJ2.js} +1 -1
- package/chunks/{chunk-PODM4SZ4.js → chunk-G3BIBPI7.js} +5 -5
- package/chunks/{chunk-A3XKDTSH.js → chunk-GA65O2TB.js} +4 -4
- package/chunks/{chunk-3BTRNWWD.js → chunk-GOXKNSDZ.js} +1 -64
- package/chunks/{channel-worker-supervisor-WSOAAYUO.js → chunk-GXGIM7QP.js} +67 -35
- package/chunks/{chunk-6PESIEKJ.js → chunk-GXUWGPYX.js} +68 -6
- package/chunks/chunk-GYTKQYDB.js +23 -0
- package/chunks/{chunk-GZRTYZ2R.js → chunk-H3XMJV7T.js} +218 -1
- package/chunks/{chunk-WQUQVGTF.js → chunk-HGRXW4HQ.js} +467 -106
- package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
- package/chunks/{chunk-ECNYL4AA.js → chunk-HUEWOHKV.js} +1 -1
- package/chunks/chunk-IDS7MSUP.js +74 -0
- package/chunks/{chunk-KHUQZZJ6.js → chunk-IHDRJLLR.js} +382 -36
- package/chunks/{chunk-CLFKOZEK.js → chunk-J4SEAF4X.js} +114 -4
- package/chunks/{chunk-B5ORX3FG.js → chunk-JGUT3LWZ.js} +6 -1
- package/chunks/{chunk-P67PFTUT.js → chunk-KEYEYCHZ.js} +4 -4
- package/chunks/{chunk-ORBGV7NJ.js → chunk-KKRTYONM.js} +6 -4
- package/chunks/{chunk-7PU4FYLG.js → chunk-KOXFAG6P.js} +4 -18
- package/chunks/{chunk-EGYZ275M.js → chunk-KWLVWNF5.js} +55 -7
- package/chunks/{chunk-XLA62MYB.js → chunk-KXECVZPD.js} +2 -2
- package/chunks/{chunk-IAVB3HM3.js → chunk-L4Y55KIS.js} +33 -1
- package/chunks/{chunk-4QLQE5WJ.js → chunk-L5U3ELZX.js} +1 -1
- package/chunks/{chunk-4ZVWQHEQ.js → chunk-LQIDP6K5.js} +1 -1
- package/chunks/{chunk-DC5Z3DU6.js → chunk-LXLTBIDP.js} +43 -6
- package/chunks/chunk-LXXMOYPL.js +22 -0
- package/chunks/{chunk-Q6I5QHMH.js → chunk-MFNKBXYH.js} +1 -1
- package/chunks/chunk-MR3PXB6E.js +48 -0
- package/chunks/{chunk-JZETEN3Z.js → chunk-N45S36AH.js} +3 -3
- package/chunks/{chunk-GWLSNBG4.js → chunk-NA3IG6XG.js} +748 -27
- package/chunks/{chunk-D5SKC4YG.js → chunk-O3M25JXE.js} +213 -29
- package/chunks/{chunk-EAXLGSFP.js → chunk-O6XGHDS5.js} +11 -11
- package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
- package/chunks/{chunk-X4NKFGFJ.js → chunk-OJAMDVF5.js} +0 -15
- package/chunks/{chunk-BZIFY5TF.js → chunk-OKAIGAYW.js} +3 -3
- package/chunks/{chunk-CNEIYWSA.js → chunk-OVIV236K.js} +5 -5
- package/chunks/{chunk-3SJSQXNS.js → chunk-PEJWA3QQ.js} +12 -8
- package/chunks/{chunk-E2IY465S.js → chunk-PWNOAWXB.js} +59 -12
- package/chunks/{chunk-B4G2WOFA.js → chunk-Q5MKHNIR.js} +28 -5
- package/chunks/{chunk-MXL5UP4X.js → chunk-Q6TUALBE.js} +1 -1
- package/chunks/{chunk-QYMQSECS.js → chunk-QAW7PIHT.js} +2 -2
- package/chunks/{chunk-HKMAENAO.js → chunk-QDTGDM2T.js} +14 -9
- package/chunks/{chunk-LUODI7WD.js → chunk-RCEEXIOO.js} +6 -4
- package/chunks/{chunk-W2UIXQDL.js → chunk-RTV5TUYB.js} +12 -4
- package/chunks/chunk-RW7DUKFO.js +91 -0
- package/chunks/{chunk-NVYTCB5Z.js → chunk-SA6QVLWI.js} +17325 -16259
- package/chunks/chunk-SJSI7PXU.js +59 -0
- package/chunks/{chunk-HVY356M2.js → chunk-SMGBWLNU.js} +3 -3
- package/chunks/{chunk-CEA3E3JB.js → chunk-SPJQO2CE.js} +2 -2
- package/chunks/{chunk-CC2ITGCF.js → chunk-STZQCNN3.js} +49 -6
- package/chunks/{chunk-HPDUL5MF.js → chunk-T2ZDAER2.js} +1 -1
- package/chunks/{chunk-XUOOWUZS.js → chunk-T3TQ3ACP.js} +1 -1
- package/chunks/{chunk-4C5BQ2D2.js → chunk-TIKDHS6V.js} +100 -17
- package/chunks/chunk-TV6K2FB4.js +224 -0
- package/chunks/{chunk-5XUCZNSY.js → chunk-TYLOFD2U.js} +1 -1
- package/chunks/{chunk-D2GFWEXB.js → chunk-UCUUH2JV.js} +6 -6
- package/chunks/{chunk-BAPGSC7U.js → chunk-UZP7K33Y.js} +23 -9
- package/chunks/{chunk-77XJ3SWN.js → chunk-VDAR6UO2.js} +8 -6
- package/chunks/{chunk-XYQSMABS.js → chunk-VKLVGA2D.js} +4 -4
- package/chunks/{chunk-JSG7ZSBC.js → chunk-VRR65QYW.js} +251 -3
- package/chunks/{chunk-U2NNEY4R.js → chunk-VT5AWJN4.js} +1 -1
- package/chunks/{chunk-ZLXQN2QS.js → chunk-WIEO4CWB.js} +1 -1
- package/chunks/{chunk-X6TJ3YZV.js → chunk-WKEO3GLZ.js} +160 -60
- package/chunks/{chunk-J3JA76CF.js → chunk-WTNZ6DXB.js} +1 -1
- package/chunks/{chunk-VWPVHAMO.js → chunk-XIWQ5QST.js} +8 -1
- package/chunks/{chunk-TDEXZKMT.js → chunk-Y66VOBRP.js} +2 -2
- package/chunks/{chunk-3VAGG5T5.js → chunk-YYBZUIPL.js} +1015 -100
- package/chunks/{chunk-CCDMCZPP.js → chunk-YZ3SBNP7.js} +1 -1
- package/chunks/{chunk-ATAKVRIF.js → chunk-Z3XA2TNG.js} +7 -7
- package/chunks/{chunk-EMDMPBJ4.js → chunk-Z7SVC7PJ.js} +10 -3
- package/chunks/{chunk-AURZZYMD.js → chunk-ZIVSSTUG.js} +4 -4
- package/chunks/{chunk-UOZWKTQG.js → chunk-ZPAHLFZU.js} +2 -2
- package/chunks/{chunk-34Z3U5RQ.js → chunk-ZQIYGQCG.js} +765 -168
- package/chunks/{computer-use-HM37RX6A.js → computer-use-NADT7ULB.js} +26 -27
- package/chunks/{config-utils-NV2SVGPB.js → config-utils-IQQT3GCI.js} +3 -2
- package/chunks/{contextCommand-OF5SFGH2.js → contextCommand-U7NEJYJ7.js} +28 -29
- package/chunks/{create-sub-session-INX7TXJI.js → create-sub-session-EAB2U5XW.js} +2 -2
- package/chunks/{create-sub-session-KPRT7ECJ.js → create-sub-session-SUN33INC.js} +26 -27
- package/chunks/{cron-create-AMBKGZX6.js → cron-create-GMVKSXZT.js} +4 -4
- package/chunks/{cron-delete-LRU4OJYG.js → cron-delete-VDZKUAVK.js} +4 -4
- package/chunks/{cron-list-WVP2JXER.js → cron-list-UG7C7RAR.js} +4 -4
- package/chunks/{daemon-ARHTSTXP.js → daemon-SJXEKP3H.js} +773 -126
- package/chunks/daemon-status-provider-WIIYLGZJ.js +74 -0
- package/chunks/{de-EBJN3OVN.js → de-NOXPCSYN.js} +9 -1
- package/chunks/{dist-XKU3ABM5.js → dist-4WCQEZIN.js} +4 -51
- package/chunks/{dist-QYCAEZIT.js → dist-DOPL5LSQ.js} +5 -1
- package/chunks/{dist-WKPOYU7O.js → dist-GXJVCOS7.js} +1 -1
- package/chunks/{dist-R7LN5AZE.js → dist-PX2ERZ6I.js} +2 -2
- package/chunks/{dist-PNVLTKTL.js → dist-V2YVLYOW.js} +215 -33
- package/chunks/{dist-VHV4EVHG.js → dist-VYWUKURL.js} +1 -1
- package/chunks/{earlyInputCapture-3VTHRC4C.js → earlyInputCapture-6FRM6UMU.js} +27 -28
- package/chunks/{edit-VNI4NJ73.js → edit-7GOIQTCZ.js} +27 -28
- package/chunks/{en-5A6LA7RK.js → en-JFVULHTB.js} +11 -1
- package/chunks/{enter-worktree-IYYBKPZT.js → enter-worktree-476E6WIK.js} +26 -27
- package/chunks/{enterPlanMode-GMC5FD5A.js → enterPlanMode-IRJM6W3C.js} +42 -28
- package/chunks/{environment-5HSSRMJ7.js → environment-ROMULS2X.js} +30 -30
- package/chunks/{errors-HMFCJJ7P.js → errors-OUIWPUDY.js} +28 -29
- package/chunks/{exit-worktree-6BHCMP5G.js → exit-worktree-PPSFK753.js} +26 -27
- package/chunks/{exitPlanMode-CJW7G74W.js → exitPlanMode-YKQMD4D7.js} +26 -27
- package/chunks/{fast-path-FRDMDVHG.js → fast-path-CNK2HHKH.js} +3 -3
- package/chunks/{fast-path-settings-5QZE64HR.js → fast-path-settings-DAOVFADC.js} +6 -4
- package/chunks/{fr-YXRABLYZ.js → fr-HVFNU42H.js} +9 -1
- package/chunks/{gemini-QYSEGHAX.js → gemini-WQNFT6TR.js} +216 -90
- package/chunks/{geminiContentGenerator-J7YNZDYP.js → geminiContentGenerator-4QJH2JDP.js} +4 -4
- package/chunks/{glob-BRCSGFOT.js → glob-36TVLBWW.js} +28 -28
- package/chunks/{grep-EE2DUOSY.js → grep-QTYLNO2M.js} +26 -27
- package/chunks/{handleAutoUpdate-5NWTLR67.js → handleAutoUpdate-36FQFODK.js} +30 -31
- package/chunks/{i18n-BASPENNQ.js → i18n-JUGYPVSP.js} +27 -28
- package/chunks/initializer-OBBJUS25.js +72 -0
- package/chunks/{installationInfo-W6V4DT7W.js → installationInfo-MCKTPX64.js} +27 -28
- package/chunks/{ja-7VQOANVG.js → ja-PY5AF544.js} +10 -2
- package/chunks/{keychain-token-storage-VKUBNCP4.js → keychain-token-storage-AU22CQI6.js} +2 -2
- package/chunks/list-VW5QY4VJ.js +75 -0
- package/chunks/loadedSettingsAdapter-IELOOXG6.js +69 -0
- package/chunks/{loop-wakeup-WX7BLWWP.js → loop-wakeup-QXWZSCYM.js} +5 -5
- package/chunks/{ls-ZB2BDP6T.js → ls-2OUTG3IZ.js} +4 -4
- package/chunks/{lsp-V5DN4YUJ.js → lsp-4VMNXZW6.js} +2 -2
- package/chunks/mcp-Q3EC37ZS.js +69 -0
- package/chunks/{monitor-X5Z3H4FY.js → monitor-DCZ27AFR.js} +26 -27
- package/chunks/nonInteractiveCli-KXD7PFO4.js +128 -0
- package/chunks/{notebook-edit-TRM2QIJK.js → notebook-edit-YU4XF5LI.js} +27 -28
- package/chunks/{openaiContentGenerator-AAYONPMF.js → openaiContentGenerator-KL5WER2D.js} +13 -13
- package/chunks/{pidfile-D4I4FTVA.js → pidfile-WBOD7EJV.js} +27 -28
- package/chunks/processUtils-AOV4R34M.js +29 -0
- package/chunks/{pt-2C6YCSHL.js → pt-A3PRQXMU.js} +9 -1
- package/chunks/{qwenContentGenerator-K3HZ2H76.js → qwenContentGenerator-YIGBHYE3.js} +28 -29
- package/chunks/{qwenOAuth2-PJQ27GSO.js → qwenOAuth2-LEYOU7RU.js} +5 -5
- package/chunks/{read-file-7SZSIZOL.js → read-file-WVL4Y76X.js} +9 -9
- package/chunks/{read-mcp-resource-SM5DA4RG.js → read-mcp-resource-JUFHCKSC.js} +2 -2
- package/chunks/{record-artifact-4XKZX3UW.js → record-artifact-DWSMBXYY.js} +2 -2
- package/chunks/{ripGrep-YNPFVCZP.js → ripGrep-6GSWJERP.js} +26 -27
- package/chunks/{ru-6BBHVZZV.js → ru-IBCWUTOC.js} +9 -1
- package/chunks/{run-qwen-serve-DMWV5N6L.js → run-qwen-serve-QYUQMEDT.js} +1233 -371
- package/chunks/{runtime-57WWRVHN.js → runtime-K2YZCNB3.js} +42 -38
- package/chunks/{scheduler-YBLGWSIL.js → scheduler-EQCSN7QV.js} +26 -27
- package/chunks/{send-message-F36YD6KQ.js → send-message-JZ752NWD.js} +3 -3
- package/chunks/{serve-R63NK3CV.js → serve-DX5UGZD4.js} +36 -35
- package/chunks/{server-Z22GCAXP.js → server-T6HJH3DR.js} +5869 -1398
- package/chunks/{session-HKAAI7BN.js → session-SNU6ACY6.js} +299 -100
- package/chunks/{settings-3EYN66GK.js → settings-AKHZZNEL.js} +34 -33
- package/chunks/{shell-6YXINTWJ.js → shell-EY74IEZK.js} +28 -27
- package/chunks/{skill-OO57P4X6.js → skill-DPU62O3H.js} +11 -11
- package/chunks/{spawnChannel-JD7G4VU6.js → spawnChannel-RQZRWJ2V.js} +28 -30
- package/chunks/{src-G5UPLZSZ.js → src-7FITDSVC.js} +164 -52
- package/chunks/{standalone-update-OB7F4JPZ.js → standalone-update-XO3RK6DO.js} +28 -29
- package/chunks/{startInteractiveUI-73EGLIIH.js → startInteractiveUI-DVWZRHYQ.js} +728 -382
- package/chunks/{syntheticOutput-34H7LGA7.js → syntheticOutput-LELY6HAI.js} +3 -3
- package/chunks/{task-create-FRGOEIKY.js → task-create-QY3BIMNM.js} +8 -7
- package/chunks/{task-list-OW766BXZ.js → task-list-D2U47WBJ.js} +6 -5
- package/chunks/{task-stop-SIR5SNBN.js → task-stop-N6E5IYLH.js} +2 -2
- package/chunks/{task-update-YRA532MT.js → task-update-HJCQILLB.js} +8 -7
- package/chunks/{team-create-PECAAPXK.js → team-create-FOSRT62K.js} +26 -27
- package/chunks/{team-delete-6OSECUZC.js → team-delete-RCWYDRF4.js} +6 -5
- package/chunks/{team-plan-approval-L6F434RY.js → team-plan-approval-6VUDV27J.js} +26 -27
- package/chunks/{theme-manager-ZG4RY6GU.js → theme-manager-6UT6IO5T.js} +27 -28
- package/chunks/{todoWrite-YDMFEV4G.js → todoWrite-FKCGATPJ.js} +4 -4
- package/chunks/{tool-search-THVIWAPB.js → tool-search-ASSFMMN5.js} +10 -10
- package/chunks/{total-session-admission-JOKNRIIA.js → total-session-admission-YYWUO23H.js} +32 -35
- package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
- package/chunks/{trustedFolders-EOGT3UVS.js → trustedFolders-4BWV2IBK.js} +29 -29
- package/chunks/types-ML3TRJQ5.js +16 -0
- package/chunks/update-relaunch-74DLGH73.js +87 -0
- package/chunks/{updateCheck-2KYEYVSB.js → updateCheck-CRFCGFO5.js} +31 -30
- package/chunks/{validateNonInterActiveAuth-EN6ZQSR2.js → validateNonInterActiveAuth-BTTEPBGQ.js} +76 -73
- package/chunks/{version-3UEA6ZIR.js → version-Y5JE5Q63.js} +1 -1
- package/chunks/{web-fetch-PAAEQKBW.js → web-fetch-CFCWTCAP.js} +5 -6
- package/chunks/{workflow-QCCCMYP3.js → workflow-6WC7VPQN.js} +27 -28
- package/chunks/workspace-providers-status-RVG2C5ZS.js +72 -0
- package/chunks/workspace-registration-store-SLEU3D3X.js +27 -0
- package/chunks/{workspace-registry-24QFLQYH.js → workspace-registry-QMWGVOTF.js} +32 -35
- package/chunks/workspace-service-G572JSEU.js +84 -0
- package/chunks/workspace-skills-status-VSSMSMNK.js +71 -0
- package/chunks/{write-file-I3MUDRIE.js → write-file-5XVDRORP.js} +27 -28
- package/chunks/{zh-RQE7I22T.js → zh-PAUNIMHQ.js} +12 -2
- package/chunks/{zh-TW-TBPQGHKH.js → zh-TW-GNEUIUFF.js} +12 -2
- package/cli-entry.js +92 -8
- package/cli.js +11 -11
- package/locales/ca.js +16 -0
- package/locales/de.js +16 -0
- package/locales/en.js +19 -0
- package/locales/fr.js +16 -0
- package/locales/ja.js +17 -1
- package/locales/pt.js +16 -0
- package/locales/ru.js +16 -0
- package/locales/zh-TW.js +20 -1
- package/locales/zh.js +20 -1
- package/package.json +3 -3
- package/web-shell/assets/{arc-C15hqnJe.js → arc-vx1tRwnX.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-B-At37J_.js → architectureDiagram-3BPJPVTR-DBi6iUA1.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-B51wjcU7.js → blockDiagram-GPEHLZMM-Ga9JJ4Ak.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-xBK7BAwN.js → c4Diagram-AAUBKEIU-D8Vi5FYw.js} +1 -1
- package/web-shell/assets/channel-B29zQDTL.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-xKmLg7Yr.js → chunk-2J33WTMH-CSV6yQpU.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BfkdKZCM.js → chunk-4BX2VUAB-toYlppdI.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DT713sZf.js → chunk-55IACEB6-DbjzuyAr.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-CYEeAamv.js → chunk-727SXJPM-IkkSjSkk.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-DBN-5CFd.js → chunk-AQP2D5EJ-D5wUL6Zm.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CGZKk4PH.js → chunk-FMBD7UC4-C3o2DXG0.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-qQbC2O-y.js → chunk-ND2GUHAM-CutIi14T.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-B3zeXwsX.js → chunk-QZHKN3VN-DZ0NRHH-.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BNGI2SvC.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BNGI2SvC.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BKsl1Wvy.js → cose-bilkent-S5V4N54A-B3Dl88UJ.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-CuuuLiBK.js → dagre-BM42HDAG-DfTxfF6-.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-CG4_eKiV.js → diagram-2AECGRRQ-CJyH98yO.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-DSFTmZB1.js → diagram-5GNKFQAL-EbOiJNmW.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BxwlEHn8.js → diagram-KO2AKTUF-AYNqpqqA.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BUAg-jMG.js → diagram-LMA3HP47-BY5VPa4H.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-BFM2jlO5.js → diagram-OG6HWLK6-BhMYAKlk.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CerbFPa2.js → erDiagram-TEJ5UH35-Bp8S_F9l.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BNeZz5Zz.js → flowDiagram-I6XJVG4X-az3TE9PU.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-CTOogLaM.js → ganttDiagram-6RSMTGT7-CfkAEpCe.js} +3 -3
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-yxSFkXPj.js → gitGraphDiagram-PVQCEYII-D1QmjMCy.js} +1 -1
- package/web-shell/assets/index-C8sDwQUv.js +1130 -0
- package/web-shell/assets/index-CaBoc5bb.js +3 -0
- package/web-shell/assets/index-Dpg5Wymg.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DYdAUevm.js → infoDiagram-5YYISTIA-D3ompLrG.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CNuijZ90.js → ishikawaDiagram-YF4QCWOH-D3MRWp9I.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-BTyiuonf.js → journeyDiagram-JHISSGLW-DVkKCa44.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-DPJo0Uow.js → kanban-definition-UN3LZRKU-BLif81wF.js} +1 -1
- package/web-shell/assets/{linear-C8wKCbIC.js → linear-BDU96EGS.js} +1 -1
- package/web-shell/assets/{mermaid.core-BV5o7nW5.js → mermaid.core-B-CwC26B.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BtLcBmSt.js → mindmap-definition-RKZ34NQL-CS1WOJ4G.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-C22J7A9Q.js → pieDiagram-4H26LBE5-BzgtNXVP.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DSL10wiL.js → quadrantDiagram-W4KKPZXB-BRfGC8MA.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-feqh0UpX.js → requirementDiagram-4Y6WPE33-CPBZkC7g.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-Z4OVaWaZ.js → sankeyDiagram-5OEKKPKP-nqNvinIk.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DIluIcb1.js → sequenceDiagram-3UESZ5HK-CM_Wdjh3.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-hlhnuoYH.js → stateDiagram-AJRCARHV-L0y-48VE.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BX1DdF8s.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-Dqf_CqgL.js → timeline-definition-PNZ67QCA-B_n5rb3A.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DD2QhaTX.js → vennDiagram-CIIHVFJN-C9NmLV5e.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-B2uI85U_.js → wardley-L42UT6IY-CrefK9gt.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-U1aJX71g.js → wardleyDiagram-YWT4CUSO-BUccf-bC.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-C0ODHUee.js → xychartDiagram-2RQKCTM6-DM6ef92l.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-524RQP4Q.js +0 -305
- package/chunks/chunk-CARU2RR2.js +0 -24
- package/chunks/chunk-CU3L64TP.js +0 -93
- package/chunks/chunk-OCPBI7J5.js +0 -18
- package/chunks/chunk-TEGEBB2I.js +0 -122
- package/chunks/chunk-VTU57BWZ.js +0 -30
- package/chunks/daemon-status-provider-B2UTZUJ2.js +0 -76
- package/chunks/initializer-UTQ7FB7G.js +0 -71
- package/chunks/list-DEICDL65.js +0 -74
- package/chunks/loadedSettingsAdapter-NOWEGDYJ.js +0 -68
- package/chunks/mcp-L5JXEEIA.js +0 -68
- package/chunks/nonInteractiveCli-LS2K4X6A.js +0 -124
- package/chunks/types-JNKGKUJT.js +0 -12
- package/chunks/workspace-providers-status-4KMGETOJ.js +0 -71
- package/chunks/workspace-service-RVLBMSMZ.js +0 -80
- package/chunks/workspace-skills-status-DS4ZVFTO.js +0 -70
- package/web-shell/assets/channel-CLiQD50f.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-D3sYqow5.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-D3sYqow5.js +0 -1
- package/web-shell/assets/index-D5IWFVk1.css +0 -5
- package/web-shell/assets/index-KFJRDhX7.js +0 -783
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BhQMwgpl.js +0 -1
|
@@ -9,19 +9,19 @@ import {
|
|
|
9
9
|
import {
|
|
10
10
|
DEFAULT_COMPACTED_REPLAY_MAX_BYTES
|
|
11
11
|
} from "./chunk-COH43MRJ.js";
|
|
12
|
-
import {
|
|
13
|
-
loadSettings
|
|
14
|
-
} from "./chunk-4C5BQ2D2.js";
|
|
15
12
|
import {
|
|
16
13
|
normalizeServeChannelSelection
|
|
17
14
|
} from "./chunk-TJTKSVIV.js";
|
|
15
|
+
import {
|
|
16
|
+
loadSettings
|
|
17
|
+
} from "./chunk-TIKDHS6V.js";
|
|
18
18
|
import {
|
|
19
19
|
writeStderrLine
|
|
20
20
|
} from "./chunk-YUZI3WAC.js";
|
|
21
21
|
import {
|
|
22
22
|
MCP_BUDGET_WARN_FRACTION,
|
|
23
23
|
parsePositiveIntegerEnv
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-SA6QVLWI.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-QYUQMEDT.js");
|
|
301
301
|
try {
|
|
302
302
|
const handle = await runQwenServe({
|
|
303
303
|
port: argv.port,
|
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
mapSkillConfigToStatus
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-2W3OOD4W.js";
|
|
6
6
|
import {
|
|
7
7
|
STATUS_SCHEMA_VERSION
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-XIWQ5QST.js";
|
|
9
9
|
import {
|
|
10
10
|
loadSettings
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-TIKDHS6V.js";
|
|
12
12
|
import {
|
|
13
13
|
writeStderrLine
|
|
14
14
|
} from "./chunk-YUZI3WAC.js";
|
|
15
15
|
import {
|
|
16
16
|
SkillManager,
|
|
17
17
|
isSafeModeEnv
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-SA6QVLWI.js";
|
|
19
19
|
import {
|
|
20
20
|
init_esbuild_shims
|
|
21
21
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -221,79 +221,16 @@ var V1_INDICATOR_KEYS = [
|
|
|
221
221
|
"disableCacheControl"
|
|
222
222
|
];
|
|
223
223
|
|
|
224
|
-
// packages/cli/src/config/storage-paths-lite.ts
|
|
225
|
-
init_esbuild_shims();
|
|
226
|
-
import * as os from "node:os";
|
|
227
|
-
import * as path from "node:path";
|
|
228
|
-
var SETTINGS_DIRECTORY_NAME = ".qwen";
|
|
229
|
-
function resolveConfigPathLite(dir, cwd) {
|
|
230
|
-
let resolved = dir;
|
|
231
|
-
if (resolved === "~" || resolved.startsWith("~/") || resolved.startsWith("~\\")) {
|
|
232
|
-
const relativeSegments = resolved === "~" ? [] : resolved.slice(2).split(/[/\\]+/).filter(Boolean);
|
|
233
|
-
resolved = path.join(os.homedir(), ...relativeSegments);
|
|
234
|
-
}
|
|
235
|
-
if (!path.isAbsolute(resolved)) {
|
|
236
|
-
resolved = path.resolve(cwd || process.cwd(), resolved);
|
|
237
|
-
}
|
|
238
|
-
return resolved;
|
|
239
|
-
}
|
|
240
|
-
__name(resolveConfigPathLite, "resolveConfigPathLite");
|
|
241
|
-
function getGlobalQwenDirLite() {
|
|
242
|
-
const envDir = process.env["QWEN_HOME"];
|
|
243
|
-
if (envDir) {
|
|
244
|
-
return resolveConfigPathLite(envDir);
|
|
245
|
-
}
|
|
246
|
-
const homeDir = os.homedir();
|
|
247
|
-
if (!homeDir) {
|
|
248
|
-
return path.join(os.tmpdir(), SETTINGS_DIRECTORY_NAME);
|
|
249
|
-
}
|
|
250
|
-
return path.join(homeDir, SETTINGS_DIRECTORY_NAME);
|
|
251
|
-
}
|
|
252
|
-
__name(getGlobalQwenDirLite, "getGlobalQwenDirLite");
|
|
253
|
-
function getSystemSettingsPath() {
|
|
254
|
-
if (process.env["QWEN_CODE_SYSTEM_SETTINGS_PATH"]) {
|
|
255
|
-
return process.env["QWEN_CODE_SYSTEM_SETTINGS_PATH"];
|
|
256
|
-
}
|
|
257
|
-
if (os.platform() === "darwin") {
|
|
258
|
-
return "/Library/Application Support/QwenCode/settings.json";
|
|
259
|
-
}
|
|
260
|
-
if (os.platform() === "win32") {
|
|
261
|
-
return "C:\\ProgramData\\qwen-code\\settings.json";
|
|
262
|
-
}
|
|
263
|
-
return "/etc/qwen-code/settings.json";
|
|
264
|
-
}
|
|
265
|
-
__name(getSystemSettingsPath, "getSystemSettingsPath");
|
|
266
|
-
function getSystemDefaultsPath() {
|
|
267
|
-
if (process.env["QWEN_CODE_SYSTEM_DEFAULTS_PATH"]) {
|
|
268
|
-
return process.env["QWEN_CODE_SYSTEM_DEFAULTS_PATH"];
|
|
269
|
-
}
|
|
270
|
-
return path.join(
|
|
271
|
-
path.dirname(getSystemSettingsPath()),
|
|
272
|
-
"system-defaults.json"
|
|
273
|
-
);
|
|
274
|
-
}
|
|
275
|
-
__name(getSystemDefaultsPath, "getSystemDefaultsPath");
|
|
276
|
-
|
|
277
224
|
export {
|
|
278
225
|
resolveEnvVarsInObject,
|
|
279
226
|
V1_TO_V2_MIGRATION_MAP,
|
|
280
227
|
V2_CONTAINER_KEYS,
|
|
281
228
|
V1_TO_V2_PRESERVE_DISABLE_MAP,
|
|
282
229
|
CONSOLIDATED_DISABLE_KEYS,
|
|
283
|
-
V1_INDICATOR_KEYS
|
|
284
|
-
SETTINGS_DIRECTORY_NAME,
|
|
285
|
-
resolveConfigPathLite,
|
|
286
|
-
getGlobalQwenDirLite,
|
|
287
|
-
getSystemSettingsPath,
|
|
288
|
-
getSystemDefaultsPath
|
|
230
|
+
V1_INDICATOR_KEYS
|
|
289
231
|
};
|
|
290
232
|
/**
|
|
291
233
|
* @license
|
|
292
234
|
* Copyright 2025 Google LLC
|
|
293
235
|
* SPDX-License-Identifier: Apache-2.0
|
|
294
236
|
*/
|
|
295
|
-
/**
|
|
296
|
-
* @license
|
|
297
|
-
* Copyright 2025 Qwen Team
|
|
298
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
299
|
-
*/
|
|
@@ -2,28 +2,33 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
CHANNEL_DAEMON_WORKER_SENTINEL,
|
|
5
|
-
CHANNEL_WEBHOOK_TASK_IPC_TIMEOUT_MS,
|
|
6
5
|
CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS,
|
|
7
|
-
ChannelWebhookEnqueueError,
|
|
8
6
|
QWEN_DAEMON_TOKEN_ENV,
|
|
9
7
|
QWEN_DAEMON_URL_ENV,
|
|
10
8
|
QWEN_DAEMON_WORKSPACE_ENV,
|
|
11
|
-
QWEN_SERVER_TOKEN_ENV
|
|
12
|
-
|
|
13
|
-
isChannelWebhookEnqueueErrorCode,
|
|
14
|
-
isChannelWebhookTaskResultMessage
|
|
15
|
-
} from "./chunk-X4NKFGFJ.js";
|
|
9
|
+
QWEN_SERVER_TOKEN_ENV
|
|
10
|
+
} from "./chunk-GYTKQYDB.js";
|
|
16
11
|
import {
|
|
17
12
|
channelSelectionNames
|
|
18
13
|
} from "./chunk-TJTKSVIV.js";
|
|
19
14
|
import {
|
|
20
15
|
redactLogCredentials
|
|
21
16
|
} from "./chunk-M5GB774H.js";
|
|
17
|
+
import {
|
|
18
|
+
CHANNEL_WORKER_KILL_GRACE_MS,
|
|
19
|
+
CHANNEL_WORKER_STARTUP_TIMEOUT_MS,
|
|
20
|
+
CHANNEL_WORKER_STOP_GRACE_MS
|
|
21
|
+
} from "./chunk-5HBA2Z7V.js";
|
|
22
|
+
import {
|
|
23
|
+
CHANNEL_WEBHOOK_TASK_IPC_TIMEOUT_MS,
|
|
24
|
+
ChannelWebhookEnqueueError,
|
|
25
|
+
createChannelWebhookTaskMessage,
|
|
26
|
+
isChannelWebhookEnqueueErrorCode,
|
|
27
|
+
isChannelWebhookTaskResultMessage
|
|
28
|
+
} from "./chunk-OJAMDVF5.js";
|
|
22
29
|
import {
|
|
23
30
|
sanitizeLogText
|
|
24
|
-
} from "./chunk-
|
|
25
|
-
import "./chunk-UDXSXLER.js";
|
|
26
|
-
import "./chunk-H6XPXXMH.js";
|
|
31
|
+
} from "./chunk-ZQIYGQCG.js";
|
|
27
32
|
import {
|
|
28
33
|
init_esbuild_shims
|
|
29
34
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -35,9 +40,7 @@ import {
|
|
|
35
40
|
init_esbuild_shims();
|
|
36
41
|
import { fork } from "node:child_process";
|
|
37
42
|
import { randomUUID } from "node:crypto";
|
|
38
|
-
var DEFAULT_CHANNEL_WORKER_STARTUP_TIMEOUT_MS = 3e4;
|
|
39
43
|
var DEFAULT_CHANNEL_WORKER_HEARTBEAT_TIMEOUT_MS = 45e3;
|
|
40
|
-
var CHANNEL_WORKER_STOP_GRACE_MS = 1e4;
|
|
41
44
|
var MAX_WORKER_LOG_LINE_LENGTH = 4096;
|
|
42
45
|
var MAX_WORKER_LOG_BUFFER_LENGTH = 64 * 1024;
|
|
43
46
|
var MAX_WORKER_LOG_DISCARDED_REMAINDER_LENGTH = MAX_WORKER_LOG_BUFFER_LENGTH;
|
|
@@ -47,6 +50,15 @@ var ANSI_CSI_SEQUENCE_RE = new RegExp(
|
|
|
47
50
|
);
|
|
48
51
|
var WORKER_LOG_INVISIBLE_RE = new RegExp("[\\p{Cf}\\u2028\\u2029]|\\p{Variation_Selector}", "gu");
|
|
49
52
|
var WORKER_LOG_CONTROL_RE = /[\x00-\x08\x0a-\x1f\x7f]/g;
|
|
53
|
+
var ChannelWorkerStopError = class extends Error {
|
|
54
|
+
static {
|
|
55
|
+
__name(this, "ChannelWorkerStopError");
|
|
56
|
+
}
|
|
57
|
+
constructor(message = "Channel worker did not exit after SIGKILL.") {
|
|
58
|
+
super(message);
|
|
59
|
+
this.name = "ChannelWorkerStopError";
|
|
60
|
+
}
|
|
61
|
+
};
|
|
50
62
|
var DEFAULT_RESTART_POLICY = {
|
|
51
63
|
maxRestarts: 3,
|
|
52
64
|
windowMs: 5 * 6e4,
|
|
@@ -118,15 +130,17 @@ __name(notifyLog, "notifyLog");
|
|
|
118
130
|
function waitForExit(child, timeoutMs) {
|
|
119
131
|
return new Promise((resolve) => {
|
|
120
132
|
let settled = false;
|
|
133
|
+
const onExit = /* @__PURE__ */ __name(() => done(true), "onExit");
|
|
121
134
|
const done = /* @__PURE__ */ __name((exited) => {
|
|
122
135
|
if (settled) return;
|
|
123
136
|
settled = true;
|
|
124
|
-
|
|
137
|
+
clearTimeout(timer);
|
|
138
|
+
child.removeListener("exit", onExit);
|
|
125
139
|
resolve(exited);
|
|
126
140
|
}, "done");
|
|
127
141
|
const timer = setTimeout(() => done(false), timeoutMs);
|
|
128
142
|
timer.unref();
|
|
129
|
-
child.once("exit",
|
|
143
|
+
child.once("exit", onExit);
|
|
130
144
|
});
|
|
131
145
|
}
|
|
132
146
|
__name(waitForExit, "waitForExit");
|
|
@@ -135,7 +149,7 @@ function hasObservedExit(snapshot) {
|
|
|
135
149
|
}
|
|
136
150
|
__name(hasObservedExit, "hasObservedExit");
|
|
137
151
|
function createWorkerEnv(opts) {
|
|
138
|
-
const env = { ...process.env };
|
|
152
|
+
const env = { ...opts.baseEnv ?? process.env };
|
|
139
153
|
env["QWEN_CODE_NO_RELAUNCH"] = "true";
|
|
140
154
|
env[CHANNEL_DAEMON_WORKER_SENTINEL] = randomUUID();
|
|
141
155
|
env[QWEN_DAEMON_URL_ENV] = opts.daemonUrl;
|
|
@@ -428,7 +442,8 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
428
442
|
const env = createWorkerEnv({
|
|
429
443
|
daemonUrl: opts.daemonUrl,
|
|
430
444
|
workspace: opts.workspace,
|
|
431
|
-
...opts.daemonToken ? { daemonToken: opts.daemonToken } : {}
|
|
445
|
+
...opts.daemonToken ? { daemonToken: opts.daemonToken } : {},
|
|
446
|
+
...opts.workerBaseEnv ? { baseEnv: opts.workerBaseEnv } : {}
|
|
432
447
|
});
|
|
433
448
|
const redaction = workerLogRedactionOptions(opts.daemonToken, env);
|
|
434
449
|
const requestedChannels = requestedChannelNames(opts.selection);
|
|
@@ -507,18 +522,27 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
507
522
|
cleanupLaunch();
|
|
508
523
|
if (terminatingBeforeReady) return;
|
|
509
524
|
terminatingBeforeReady = true;
|
|
510
|
-
const exited = waitForExit(startedChild,
|
|
525
|
+
const exited = waitForExit(startedChild, CHANNEL_WORKER_KILL_GRACE_MS);
|
|
511
526
|
startedChild.kill("SIGTERM");
|
|
512
527
|
void exited.then(async (didExit) => {
|
|
513
528
|
if (!didExit && child === startedChild && !exitObserved) {
|
|
514
|
-
const killed = waitForExit(
|
|
529
|
+
const killed = waitForExit(
|
|
530
|
+
startedChild,
|
|
531
|
+
CHANNEL_WORKER_KILL_GRACE_MS
|
|
532
|
+
);
|
|
515
533
|
startedChild.kill("SIGKILL");
|
|
516
534
|
if (!await killed && child === startedChild && !exitObserved) {
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
}
|
|
535
|
+
stopping = true;
|
|
536
|
+
notifyLog(opts.onLog, {
|
|
537
|
+
stream: "stderr",
|
|
538
|
+
line: "Channel worker did not exit after SIGKILL; automatic restart is disabled."
|
|
539
|
+
});
|
|
540
|
+
snapshot = {
|
|
541
|
+
...snapshot,
|
|
542
|
+
state: "failed",
|
|
543
|
+
error: snapshot.error ?? "Channel worker did not exit after SIGKILL."
|
|
544
|
+
};
|
|
545
|
+
notifyExit(opts.onExit, snapshotCopy());
|
|
522
546
|
}
|
|
523
547
|
}
|
|
524
548
|
});
|
|
@@ -628,7 +652,7 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
628
652
|
}
|
|
629
653
|
__name(settleError, "settleError");
|
|
630
654
|
startupTimer = setTimeout(() => {
|
|
631
|
-
const timeoutMs = opts.startupTimeoutMs ??
|
|
655
|
+
const timeoutMs = opts.startupTimeoutMs ?? CHANNEL_WORKER_STARTUP_TIMEOUT_MS;
|
|
632
656
|
const error = `Channel worker did not become ready within ${timeoutMs}ms.`;
|
|
633
657
|
snapshot = {
|
|
634
658
|
...snapshot,
|
|
@@ -639,7 +663,7 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
639
663
|
if (child === startedChild) {
|
|
640
664
|
terminateBeforeReady();
|
|
641
665
|
}
|
|
642
|
-
}, opts.startupTimeoutMs ??
|
|
666
|
+
}, opts.startupTimeoutMs ?? CHANNEL_WORKER_STARTUP_TIMEOUT_MS);
|
|
643
667
|
startupTimer.unref();
|
|
644
668
|
startedChild.on("message", handleMessage);
|
|
645
669
|
startedChild.once("exit", settleExit);
|
|
@@ -648,7 +672,15 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
648
672
|
}, "launch");
|
|
649
673
|
const supervisor = {
|
|
650
674
|
async start() {
|
|
651
|
-
if (disposed
|
|
675
|
+
if (disposed) return;
|
|
676
|
+
if (child) {
|
|
677
|
+
if (stopping) {
|
|
678
|
+
throw new ChannelWorkerStopError(
|
|
679
|
+
"Channel worker stop is not yet confirmed."
|
|
680
|
+
);
|
|
681
|
+
}
|
|
682
|
+
return;
|
|
683
|
+
}
|
|
652
684
|
stopping = false;
|
|
653
685
|
clearRestartTimer();
|
|
654
686
|
restartAttemptTimes = [];
|
|
@@ -666,22 +698,20 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
666
698
|
snapshot = { ...snapshot, state: "stopped" };
|
|
667
699
|
return;
|
|
668
700
|
}
|
|
669
|
-
const
|
|
701
|
+
const stoppingChild = child;
|
|
702
|
+
const exited = waitForExit(stoppingChild, CHANNEL_WORKER_STOP_GRACE_MS);
|
|
670
703
|
stopping = true;
|
|
671
|
-
|
|
672
|
-
if (!await exited) {
|
|
673
|
-
const killed = waitForExit(
|
|
674
|
-
|
|
704
|
+
stoppingChild.kill("SIGTERM");
|
|
705
|
+
if (!await exited && child === stoppingChild) {
|
|
706
|
+
const killed = waitForExit(stoppingChild, CHANNEL_WORKER_KILL_GRACE_MS);
|
|
707
|
+
stoppingChild.kill("SIGKILL");
|
|
675
708
|
if (!await killed) {
|
|
676
|
-
child = void 0;
|
|
677
|
-
stopping = false;
|
|
678
709
|
snapshot = {
|
|
679
710
|
...snapshot,
|
|
680
711
|
state: "failed",
|
|
681
|
-
signal: "SIGKILL",
|
|
682
712
|
error: "Channel worker did not exit after SIGKILL."
|
|
683
713
|
};
|
|
684
|
-
|
|
714
|
+
throw new ChannelWorkerStopError();
|
|
685
715
|
}
|
|
686
716
|
}
|
|
687
717
|
child = void 0;
|
|
@@ -784,6 +814,8 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
784
814
|
return supervisor;
|
|
785
815
|
}
|
|
786
816
|
__name(createChannelWorkerSupervisor, "createChannelWorkerSupervisor");
|
|
817
|
+
|
|
787
818
|
export {
|
|
819
|
+
ChannelWorkerStopError,
|
|
788
820
|
createChannelWorkerSupervisor
|
|
789
821
|
};
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
escapeAnsiCtrlCodes
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-MFNKBXYH.js";
|
|
6
6
|
import {
|
|
7
7
|
wrapper_default
|
|
8
8
|
} from "./chunk-TYAMGABM.js";
|
|
9
9
|
import {
|
|
10
10
|
createDebugLogger
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-7NFB7LBQ.js";
|
|
12
12
|
import {
|
|
13
13
|
init_esbuild_shims
|
|
14
14
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -50,6 +50,10 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
|
|
|
50
50
|
headers: options.headers
|
|
51
51
|
}));
|
|
52
52
|
return new Promise((resolve, reject) => {
|
|
53
|
+
if (deps.abortSignal?.aborted) {
|
|
54
|
+
reject(new Error("Voice stream opening was aborted."));
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
53
57
|
const streamUrl = deriveStreamUrl(config.baseUrl);
|
|
54
58
|
const ws = createWebSocket(streamUrl, {
|
|
55
59
|
headers: config.apiKey ? { Authorization: `Bearer ${config.apiKey}` } : {}
|
|
@@ -66,6 +70,12 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
|
|
|
66
70
|
let terminalError = null;
|
|
67
71
|
let finishedTranscript = null;
|
|
68
72
|
let backpressureWarned = false;
|
|
73
|
+
let onAbort;
|
|
74
|
+
const removeAbortListener = /* @__PURE__ */ __name(() => {
|
|
75
|
+
if (!onAbort) return;
|
|
76
|
+
deps.abortSignal?.removeEventListener("abort", onAbort);
|
|
77
|
+
onAbort = void 0;
|
|
78
|
+
}, "removeAbortListener");
|
|
69
79
|
const clearFinishTimer = /* @__PURE__ */ __name(() => {
|
|
70
80
|
if (finishTimer) {
|
|
71
81
|
clearTimeout(finishTimer);
|
|
@@ -81,6 +91,7 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
|
|
|
81
91
|
const fail = /* @__PURE__ */ __name((error) => {
|
|
82
92
|
if (settled) return;
|
|
83
93
|
settled = true;
|
|
94
|
+
removeAbortListener();
|
|
84
95
|
const normalized = error instanceof Error ? error : new Error(String(error));
|
|
85
96
|
clearConnectTimer();
|
|
86
97
|
clearFinishTimer();
|
|
@@ -101,6 +112,14 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
|
|
|
101
112
|
}
|
|
102
113
|
}
|
|
103
114
|
}, "fail");
|
|
115
|
+
if (deps.abortSignal) {
|
|
116
|
+
onAbort = /* @__PURE__ */ __name(() => fail(new Error("Voice stream opening was aborted.")), "onAbort");
|
|
117
|
+
if (deps.abortSignal.aborted) {
|
|
118
|
+
onAbort();
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
deps.abortSignal.addEventListener("abort", onAbort, { once: true });
|
|
122
|
+
}
|
|
104
123
|
connectTimer = setTimeout(() => {
|
|
105
124
|
if (!started) fail(new Error("Voice stream connection timed out."));
|
|
106
125
|
}, CONNECT_TIMEOUT_MS);
|
|
@@ -208,6 +227,7 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
|
|
|
208
227
|
}
|
|
209
228
|
finishedTranscript = committed.trim();
|
|
210
229
|
settled = true;
|
|
230
|
+
removeAbortListener();
|
|
211
231
|
clearConnectTimer();
|
|
212
232
|
clearFinishTimer();
|
|
213
233
|
try {
|
|
@@ -234,6 +254,7 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
|
|
|
234
254
|
fail(error instanceof Error ? error : new Error(String(error)));
|
|
235
255
|
});
|
|
236
256
|
ws.on("close", () => {
|
|
257
|
+
removeAbortListener();
|
|
237
258
|
clearConnectTimer();
|
|
238
259
|
clearFinishTimer();
|
|
239
260
|
if (settled) return;
|
|
@@ -292,6 +313,10 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
|
|
|
292
313
|
headers: options.headers
|
|
293
314
|
}));
|
|
294
315
|
return new Promise((resolve, reject) => {
|
|
316
|
+
if (deps.abortSignal?.aborted) {
|
|
317
|
+
reject(new Error("Voice stream opening was aborted."));
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
295
320
|
const ws = createWebSocket(
|
|
296
321
|
deriveQwenRealtimeUrl(config.baseUrl, config.model),
|
|
297
322
|
{
|
|
@@ -310,6 +335,12 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
|
|
|
310
335
|
let terminalError = null;
|
|
311
336
|
let failed = false;
|
|
312
337
|
let backpressureWarned = false;
|
|
338
|
+
let onAbort;
|
|
339
|
+
const removeAbortListener = /* @__PURE__ */ __name(() => {
|
|
340
|
+
if (!onAbort) return;
|
|
341
|
+
deps.abortSignal?.removeEventListener("abort", onAbort);
|
|
342
|
+
onAbort = void 0;
|
|
343
|
+
}, "removeAbortListener");
|
|
313
344
|
const sendJson = /* @__PURE__ */ __name((body) => {
|
|
314
345
|
ws.send(JSON.stringify({ event_id: randomUUID2(), ...body }));
|
|
315
346
|
}, "sendJson");
|
|
@@ -334,6 +365,7 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
|
|
|
334
365
|
const fail = /* @__PURE__ */ __name((error) => {
|
|
335
366
|
if (failed) return;
|
|
336
367
|
failed = true;
|
|
368
|
+
removeAbortListener();
|
|
337
369
|
const normalized = toError(error);
|
|
338
370
|
clearConnectTimer();
|
|
339
371
|
clearFinishTimer();
|
|
@@ -352,6 +384,14 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
|
|
|
352
384
|
terminalError = normalized;
|
|
353
385
|
callbacks.onError?.(normalized);
|
|
354
386
|
}, "fail");
|
|
387
|
+
if (deps.abortSignal) {
|
|
388
|
+
onAbort = /* @__PURE__ */ __name(() => fail(new Error("Voice stream opening was aborted.")), "onAbort");
|
|
389
|
+
if (deps.abortSignal.aborted) {
|
|
390
|
+
onAbort();
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
deps.abortSignal.addEventListener("abort", onAbort, { once: true });
|
|
394
|
+
}
|
|
355
395
|
connectTimer = setTimeout(() => {
|
|
356
396
|
if (!opened) fail(new Error("Qwen ASR realtime connection timed out."));
|
|
357
397
|
}, CONNECT_TIMEOUT_MS2);
|
|
@@ -469,6 +509,7 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
|
|
|
469
509
|
break;
|
|
470
510
|
}
|
|
471
511
|
failed = true;
|
|
512
|
+
removeAbortListener();
|
|
472
513
|
clearFinishTimer();
|
|
473
514
|
finishedTranscript = committed.trim();
|
|
474
515
|
finishResolve?.(finishedTranscript);
|
|
@@ -491,6 +532,7 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
|
|
|
491
532
|
});
|
|
492
533
|
ws.on("error", fail);
|
|
493
534
|
ws.on("close", () => {
|
|
535
|
+
removeAbortListener();
|
|
494
536
|
clearConnectTimer();
|
|
495
537
|
clearFinishTimer();
|
|
496
538
|
if (failed) return;
|
|
@@ -523,8 +565,22 @@ __name(openQwenAsrRealtimeStream, "openQwenAsrRealtimeStream");
|
|
|
523
565
|
init_esbuild_shims();
|
|
524
566
|
var RETRY_DELAY_MS = 200;
|
|
525
567
|
var debugLogger3 = createDebugLogger("VOICE_STREAM");
|
|
526
|
-
function delay(ms) {
|
|
527
|
-
return new Promise((resolve) =>
|
|
568
|
+
function delay(ms, abortSignal) {
|
|
569
|
+
return new Promise((resolve, reject) => {
|
|
570
|
+
if (abortSignal?.aborted) {
|
|
571
|
+
reject(new Error("Voice stream opening was aborted."));
|
|
572
|
+
return;
|
|
573
|
+
}
|
|
574
|
+
const timer = setTimeout(() => {
|
|
575
|
+
abortSignal?.removeEventListener("abort", onAbort);
|
|
576
|
+
resolve();
|
|
577
|
+
}, ms);
|
|
578
|
+
const onAbort = /* @__PURE__ */ __name(() => {
|
|
579
|
+
clearTimeout(timer);
|
|
580
|
+
reject(new Error("Voice stream opening was aborted."));
|
|
581
|
+
}, "onAbort");
|
|
582
|
+
abortSignal?.addEventListener("abort", onAbort, { once: true });
|
|
583
|
+
});
|
|
528
584
|
}
|
|
529
585
|
__name(delay, "delay");
|
|
530
586
|
function isRetryable(error) {
|
|
@@ -537,7 +593,10 @@ function isRetryable(error) {
|
|
|
537
593
|
return true;
|
|
538
594
|
}
|
|
539
595
|
__name(isRetryable, "isRetryable");
|
|
540
|
-
async function openVoiceStreamWithRetry(open) {
|
|
596
|
+
async function openVoiceStreamWithRetry(open, opts = {}) {
|
|
597
|
+
if (opts.abortSignal?.aborted) {
|
|
598
|
+
throw new Error("Voice stream opening was aborted.");
|
|
599
|
+
}
|
|
541
600
|
try {
|
|
542
601
|
return await open();
|
|
543
602
|
} catch (error) {
|
|
@@ -545,7 +604,10 @@ async function openVoiceStreamWithRetry(open) {
|
|
|
545
604
|
throw error;
|
|
546
605
|
}
|
|
547
606
|
debugLogger3.debug("[voice] stream open failed, retrying:", error);
|
|
548
|
-
await delay(RETRY_DELAY_MS);
|
|
607
|
+
await delay(RETRY_DELAY_MS, opts.abortSignal);
|
|
608
|
+
if (opts.abortSignal?.aborted) {
|
|
609
|
+
throw new Error("Voice stream opening was aborted.");
|
|
610
|
+
}
|
|
549
611
|
return open();
|
|
550
612
|
}
|
|
551
613
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
init_esbuild_shims
|
|
5
|
+
} from "./chunk-5O2XNYP6.js";
|
|
6
|
+
|
|
7
|
+
// packages/cli/src/serve/channel-worker-env.ts
|
|
8
|
+
init_esbuild_shims();
|
|
9
|
+
var CHANNEL_DAEMON_WORKER_SENTINEL = "QWEN_CHANNEL_DAEMON_WORKER";
|
|
10
|
+
var CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS = 15e3;
|
|
11
|
+
var QWEN_DAEMON_TOKEN_ENV = "QWEN_DAEMON_TOKEN";
|
|
12
|
+
var QWEN_DAEMON_URL_ENV = "QWEN_DAEMON_URL";
|
|
13
|
+
var QWEN_DAEMON_WORKSPACE_ENV = "QWEN_DAEMON_WORKSPACE";
|
|
14
|
+
var QWEN_SERVER_TOKEN_ENV = "QWEN_SERVER_TOKEN";
|
|
15
|
+
|
|
16
|
+
export {
|
|
17
|
+
CHANNEL_DAEMON_WORKER_SENTINEL,
|
|
18
|
+
CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS,
|
|
19
|
+
QWEN_DAEMON_TOKEN_ENV,
|
|
20
|
+
QWEN_DAEMON_URL_ENV,
|
|
21
|
+
QWEN_DAEMON_WORKSPACE_ENV,
|
|
22
|
+
QWEN_SERVER_TOKEN_ENV
|
|
23
|
+
};
|