@qwen-code/qwen-code 0.19.9 → 0.19.10-nightly.20260715.c538bd70d
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 +8 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +3 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +11 -3
- 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/sub-agents.md +21 -0
- package/bundled/qc-helper/docs/qwen-serve.md +46 -20
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
- package/bundled/review/DESIGN.md +219 -33
- package/bundled/review/SKILL.md +449 -153
- package/chunks/{MaxSizedBox-6HYJ3ZPJ.js → MaxSizedBox-LOOBDOTZ.js} +31 -31
- package/chunks/{StandaloneSessionPicker-WS4GXYOG.js → StandaloneSessionPicker-76CLZSH2.js} +51 -49
- package/chunks/{acpAgent-5FWSOZL5.js → acpAgent-DFJOK7EB.js} +567 -482
- package/chunks/{agent-HOLHB3RT.js → agent-OJQWXNHP.js} +26 -26
- package/chunks/{agent-headless-SXL6H56A.js → agent-headless-ND7GOORY.js} +26 -26
- package/chunks/{anthropicContentGenerator-L73TO3DB.js → anthropicContentGenerator-56U3YCP2.js} +5 -5
- 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-SNJK2JLK.js} +32 -32
- package/chunks/{ca-UJ6HC4H2.js → ca-C2JTT2N5.js} +4 -1
- package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
- package/chunks/channel-worker-manager-YSFB4HUU.js +418 -0
- package/chunks/channel-worker-supervisor-QCKIOYZD.js +20 -0
- package/chunks/{chunk-CCDMCZPP.js → chunk-26UABK2C.js} +1 -1
- package/chunks/{chunk-LXNEJD34.js → chunk-2FO5GFKZ.js} +1 -1
- package/chunks/{chunk-L36P3NBD.js → chunk-2W3OOD4W.js} +2 -0
- package/chunks/{chunk-7R3CZA3Q.js → chunk-2Z5UX4KI.js} +1 -1
- package/chunks/chunk-3MX7D6QN.js +516 -0
- package/chunks/{chunk-CLFKOZEK.js → chunk-3XULHBC7.js} +1 -1
- package/chunks/chunk-4QZADKJS.js +34 -0
- package/chunks/{chunk-E2IY465S.js → chunk-4UDHAJFV.js} +10 -10
- package/chunks/{chunk-5U27BZ72.js → chunk-55SAYASQ.js} +190 -77
- package/chunks/chunk-5HBA2Z7V.js +28 -0
- package/chunks/{chunk-ZJE7NSL3.js → chunk-5M6IDOMF.js} +34 -97
- package/chunks/{chunk-HVY356M2.js → chunk-5SQ55XJZ.js} +3 -3
- package/chunks/{chunk-EAXLGSFP.js → chunk-6GRAQNTY.js} +8 -8
- package/chunks/{chunk-K434OPES.js → chunk-6WPJRYLZ.js} +3 -3
- package/chunks/{chunk-VWPVHAMO.js → chunk-7DXHIMXL.js} +5 -1
- package/chunks/{chunk-J4TSQ5EQ.js → chunk-7NFB7LBQ.js} +8 -1
- package/chunks/{chunk-5SFOMFG4.js → chunk-7R4DPSRA.js} +36 -2
- package/chunks/{chunk-W2UIXQDL.js → chunk-7STBROEV.js} +1 -1
- package/chunks/{chunk-BMGVRZN4.js → chunk-AETEZU4U.js} +1 -1
- package/chunks/{chunk-HPDUL5MF.js → chunk-AGZWN4WV.js} +1 -1
- package/chunks/{chunk-RDJSGHZE.js → chunk-ALGGS7UH.js} +1 -38
- package/chunks/{chunk-GWHYEOV2.js → chunk-ARKANCNX.js} +2 -1
- package/chunks/{chunk-34Z3U5RQ.js → chunk-AU4R7ACM.js} +518 -114
- package/chunks/{channel-worker-supervisor-WSOAAYUO.js → chunk-B7MFJBKE.js} +67 -35
- package/chunks/{chunk-524RQP4Q.js → chunk-B7NUUEXC.js} +10 -4
- package/chunks/{chunk-MC23XKFE.js → chunk-BLPMRN4B.js} +3 -3
- package/chunks/{chunk-A3XKDTSH.js → chunk-BRRKAUGR.js} +4 -4
- package/chunks/{chunk-W3JHSWRP.js → chunk-BUPLOPUA.js} +4 -4
- package/chunks/{chunk-3VAGG5T5.js → chunk-BYOOK22F.js} +121 -16
- package/chunks/{chunk-EMDMPBJ4.js → chunk-C47ENMZJ.js} +3 -3
- package/chunks/{chunk-3AHXV67U.js → chunk-C5TVXLJZ.js} +1 -1
- package/chunks/{chunk-X6TJ3YZV.js → chunk-CGT5TQIZ.js} +159 -57
- package/chunks/{chunk-4C5BQ2D2.js → chunk-CQQD7MDG.js} +82 -12
- package/chunks/{chunk-KKNMOEZH.js → chunk-E2UVIFI2.js} +185 -398
- package/chunks/{chunk-P67PFTUT.js → chunk-EPY4ZEU6.js} +4 -4
- package/chunks/{chunk-6PESIEKJ.js → chunk-EZSRHWGS.js} +68 -6
- package/chunks/{chunk-4GORAUCN.js → chunk-F333XEAU.js} +1 -1
- package/chunks/{chunk-YLV3XXFB.js → chunk-FBU7WRZI.js} +17 -1
- package/chunks/{chunk-Q6I5QHMH.js → chunk-FGTCZJOD.js} +1 -1
- package/chunks/{chunk-LK7KUE55.js → chunk-FSA7ERJ2.js} +1 -1
- package/chunks/{chunk-B4G2WOFA.js → chunk-FTU55ZZ7.js} +3 -3
- package/chunks/{chunk-EGYZ275M.js → chunk-GCD7PEDZ.js} +4 -4
- package/chunks/{chunk-SJHDYNHF.js → chunk-GDQQRV43.js} +3 -3
- package/chunks/{chunk-3BTRNWWD.js → chunk-GOXKNSDZ.js} +1 -64
- package/chunks/{chunk-GZRTYZ2R.js → chunk-GQKWT45X.js} +154 -1
- package/chunks/chunk-GYTKQYDB.js +23 -0
- package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
- package/chunks/{chunk-N3EMS75V.js → chunk-HKM2TEF7.js} +1268 -1233
- package/chunks/chunk-IDS7MSUP.js +74 -0
- package/chunks/{chunk-PVZM22CK.js → chunk-INKAZNYC.js} +5 -5
- package/chunks/{chunk-3G7CIHVV.js → chunk-IOQ75R4R.js} +4 -4
- package/chunks/{chunk-AURZZYMD.js → chunk-IQOOJSPR.js} +4 -4
- package/chunks/{chunk-AKIVHSJR.js → chunk-J4UQXGVL.js} +111 -93
- package/chunks/{chunk-VTU57BWZ.js → chunk-JEKOCLRN.js} +1 -1
- package/chunks/{chunk-B5ORX3FG.js → chunk-JGUT3LWZ.js} +6 -1
- package/chunks/{chunk-PDZ7MBDG.js → chunk-JIQHT2O6.js} +27 -6
- package/chunks/{chunk-XUOOWUZS.js → chunk-JPAH76WA.js} +1 -1
- package/chunks/{chunk-BAPGSC7U.js → chunk-K4LG6TVJ.js} +23 -9
- package/chunks/chunk-KET3M4K4.js +493 -0
- package/chunks/{chunk-ORBGV7NJ.js → chunk-KKRTYONM.js} +6 -4
- package/chunks/{chunk-SCGXUJBT.js → chunk-KPA5QGN2.js} +3 -3
- package/chunks/{chunk-IAVB3HM3.js → chunk-KSO42X3Z.js} +13 -0
- package/chunks/{chunk-4QLQE5WJ.js → chunk-L5U3ELZX.js} +1 -1
- package/chunks/{chunk-77XJ3SWN.js → chunk-LIUEXYPL.js} +5 -5
- package/chunks/{chunk-4ZVWQHEQ.js → chunk-LQIDP6K5.js} +1 -1
- package/chunks/{chunk-34MW4KTI.js → chunk-LT5CRUA5.js} +2 -2
- package/chunks/{chunk-DC5Z3DU6.js → chunk-LXLTBIDP.js} +43 -6
- package/chunks/{chunk-VA4KQY6V.js → chunk-MEK7CQJR.js} +3 -3
- package/chunks/{chunk-KHUQZZJ6.js → chunk-MO7O5722.js} +370 -36
- package/chunks/chunk-MR3PXB6E.js +48 -0
- package/chunks/{chunk-PODM4SZ4.js → chunk-MV52C5MA.js} +5 -5
- 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-ECNYL4AA.js → chunk-OPNPGO6D.js} +1 -1
- package/chunks/{chunk-3SJSQXNS.js → chunk-PEJWA3QQ.js} +12 -8
- package/chunks/{chunk-MXL5UP4X.js → chunk-Q6TUALBE.js} +1 -1
- package/chunks/{chunk-QYMQSECS.js → chunk-QAW7PIHT.js} +2 -2
- package/chunks/{chunk-5HOMWMCL.js → chunk-QEDYXCLG.js} +4167 -1338
- package/chunks/chunk-QNNTA7IX.js +91 -0
- package/chunks/{chunk-D2GFWEXB.js → chunk-QNT5T4Q2.js} +6 -6
- package/chunks/{chunk-CUMMSHH6.js → chunk-R5XLNDE2.js} +1 -1
- package/chunks/{chunk-LUODI7WD.js → chunk-RCEEXIOO.js} +6 -4
- package/chunks/{chunk-WQUQVGTF.js → chunk-RQWDLG6Z.js} +183 -96
- package/chunks/{chunk-XYQSMABS.js → chunk-SLCVZX6F.js} +4 -4
- package/chunks/{chunk-CEA3E3JB.js → chunk-SPJQO2CE.js} +2 -2
- package/chunks/{chunk-JSG7ZSBC.js → chunk-TQBODCFD.js} +1 -1
- package/chunks/chunk-TV6K2FB4.js +224 -0
- package/chunks/{chunk-5XUCZNSY.js → chunk-TYLOFD2U.js} +1 -1
- package/chunks/{chunk-CNEIYWSA.js → chunk-UKWAQ7AV.js} +5 -5
- package/chunks/{chunk-7PU4FYLG.js → chunk-US4YQT62.js} +4 -4
- package/chunks/{chunk-Q4YQW46J.js → chunk-UYPPCIJQ.js} +36 -18
- package/chunks/{chunk-YAUFFXDS.js → chunk-UZKG7HFG.js} +12 -11
- package/chunks/{chunk-GWLSNBG4.js → chunk-VQLRHJKL.js} +30 -26
- package/chunks/{chunk-L6P4KPHR.js → chunk-VRUHAVZS.js} +59 -39
- package/chunks/{chunk-HKMAENAO.js → chunk-W2U4RJJU.js} +8 -6
- package/chunks/{chunk-ATAKVRIF.js → chunk-WDSCTLAB.js} +7 -7
- package/chunks/{chunk-ZLXQN2QS.js → chunk-WIEO4CWB.js} +1 -1
- package/chunks/{chunk-OQ4DRIOA.js → chunk-WJOC24IW.js} +2 -2
- package/chunks/{chunk-J3JA76CF.js → chunk-WTNZ6DXB.js} +1 -1
- package/chunks/{chunk-NVYTCB5Z.js → chunk-XCR44EEA.js} +14589 -13980
- package/chunks/{chunk-TDEXZKMT.js → chunk-Y66VOBRP.js} +2 -2
- package/chunks/{chunk-CC2ITGCF.js → chunk-YHN5SUIJ.js} +49 -6
- package/chunks/{chunk-D5SKC4YG.js → chunk-ZBAROUR6.js} +41 -13
- package/chunks/{chunk-U2NNEY4R.js → chunk-ZEEVKDO7.js} +1 -1
- package/chunks/{chunk-5VXNZWGF.js → chunk-ZLOHB76C.js} +1 -1
- package/chunks/{chunk-JZETEN3Z.js → chunk-ZNCLTRNU.js} +3 -3
- package/chunks/{chunk-TO6QE22P.js → chunk-ZP4ZZJJG.js} +26 -22
- package/chunks/{chunk-UOZWKTQG.js → chunk-ZPAHLFZU.js} +2 -2
- package/chunks/{chunk-XLA62MYB.js → chunk-ZTXZ7FM4.js} +2 -2
- package/chunks/{computer-use-HM37RX6A.js → computer-use-DRETHEQF.js} +26 -26
- package/chunks/{config-utils-NV2SVGPB.js → config-utils-XSHOMMK4.js} +3 -2
- package/chunks/{contextCommand-OF5SFGH2.js → contextCommand-7YJUW23J.js} +28 -28
- package/chunks/{create-sub-session-INX7TXJI.js → create-sub-session-EAB2U5XW.js} +2 -2
- package/chunks/{create-sub-session-KPRT7ECJ.js → create-sub-session-L5HOZAEL.js} +26 -26
- 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-MI5HF26N.js} +603 -62
- package/chunks/{daemon-status-provider-B2UTZUJ2.js → daemon-status-provider-2D47GOJT.js} +36 -36
- package/chunks/{de-EBJN3OVN.js → de-2VCDRDGU.js} +4 -1
- package/chunks/{dist-WKPOYU7O.js → dist-IEXZC5ZR.js} +1 -1
- package/chunks/{dist-XKU3ABM5.js → dist-PQK4GCKA.js} +1 -1
- package/chunks/{dist-VHV4EVHG.js → dist-U75JK3PF.js} +1 -1
- package/chunks/{dist-R7LN5AZE.js → dist-VXO7QBON.js} +2 -2
- package/chunks/{dist-PNVLTKTL.js → dist-WH4TZSH3.js} +158 -4
- package/chunks/{dist-QYCAEZIT.js → dist-X2ABIW5R.js} +5 -1
- package/chunks/{earlyInputCapture-3VTHRC4C.js → earlyInputCapture-OJQPGCSX.js} +27 -27
- package/chunks/{edit-VNI4NJ73.js → edit-LZOAFLT2.js} +27 -27
- package/chunks/{en-5A6LA7RK.js → en-NJCA3TAA.js} +5 -1
- package/chunks/{enter-worktree-IYYBKPZT.js → enter-worktree-VL2TCGI5.js} +26 -26
- package/chunks/{enterPlanMode-GMC5FD5A.js → enterPlanMode-QGHBHZWI.js} +42 -27
- package/chunks/{environment-5HSSRMJ7.js → environment-2G5IC2EU.js} +30 -29
- package/chunks/{errors-HMFCJJ7P.js → errors-7QNQDNI2.js} +28 -28
- package/chunks/{exit-worktree-6BHCMP5G.js → exit-worktree-5V3X2MRH.js} +26 -26
- package/chunks/{exitPlanMode-CJW7G74W.js → exitPlanMode-XDPNQB4H.js} +26 -26
- package/chunks/{fast-path-FRDMDVHG.js → fast-path-NNSD4BVZ.js} +3 -3
- package/chunks/{fast-path-settings-5QZE64HR.js → fast-path-settings-DAOVFADC.js} +6 -4
- package/chunks/{fr-YXRABLYZ.js → fr-5F3E7WKD.js} +4 -1
- package/chunks/{gemini-QYSEGHAX.js → gemini-RKDUWGXJ.js} +139 -76
- package/chunks/{geminiContentGenerator-J7YNZDYP.js → geminiContentGenerator-V7QGHXVF.js} +4 -4
- package/chunks/{glob-BRCSGFOT.js → glob-ZNQUUOTS.js} +28 -27
- package/chunks/{grep-EE2DUOSY.js → grep-NYIGLM7R.js} +26 -26
- package/chunks/{handleAutoUpdate-5NWTLR67.js → handleAutoUpdate-UBQ4IQXY.js} +30 -30
- package/chunks/{i18n-BASPENNQ.js → i18n-5T3S6SGP.js} +27 -27
- package/chunks/initializer-TJED246Q.js +73 -0
- package/chunks/{installationInfo-W6V4DT7W.js → installationInfo-OTEU7FKR.js} +27 -27
- package/chunks/{ja-7VQOANVG.js → ja-66J6B53L.js} +5 -2
- package/chunks/{keychain-token-storage-VKUBNCP4.js → keychain-token-storage-AU22CQI6.js} +2 -2
- package/chunks/list-6OHS7MFJ.js +76 -0
- package/chunks/loadedSettingsAdapter-5456XIYG.js +70 -0
- package/chunks/{loop-wakeup-WX7BLWWP.js → loop-wakeup-C4EXLYVA.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-NOWRPFKY.js +70 -0
- package/chunks/{monitor-X5Z3H4FY.js → monitor-CVDZO3IZ.js} +26 -26
- package/chunks/nonInteractiveCli-UGI7Y43E.js +129 -0
- package/chunks/{notebook-edit-TRM2QIJK.js → notebook-edit-NWIA5TEJ.js} +27 -27
- package/chunks/{openaiContentGenerator-AAYONPMF.js → openaiContentGenerator-KJONBBJO.js} +12 -12
- package/chunks/{pidfile-D4I4FTVA.js → pidfile-L3TGXMTF.js} +27 -27
- package/chunks/{pt-2C6YCSHL.js → pt-TFZO5Y6T.js} +4 -1
- package/chunks/{qwenContentGenerator-K3HZ2H76.js → qwenContentGenerator-GXUZB5SJ.js} +28 -28
- package/chunks/{qwenOAuth2-PJQ27GSO.js → qwenOAuth2-LEYOU7RU.js} +5 -5
- package/chunks/{read-file-7SZSIZOL.js → read-file-I4OUZXTA.js} +8 -8
- 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-XLCXANIO.js} +26 -26
- package/chunks/{ru-6BBHVZZV.js → ru-4L4LFHIT.js} +4 -1
- package/chunks/{run-qwen-serve-DMWV5N6L.js → run-qwen-serve-R6SBP6YS.js} +1232 -371
- package/chunks/{runtime-57WWRVHN.js → runtime-U3S33YUQ.js} +42 -37
- package/chunks/{scheduler-YBLGWSIL.js → scheduler-65QCIELP.js} +26 -26
- package/chunks/{send-message-F36YD6KQ.js → send-message-JZ752NWD.js} +3 -3
- package/chunks/{serve-R63NK3CV.js → serve-PSPOFCOD.js} +36 -34
- package/chunks/{server-Z22GCAXP.js → server-6P5ZB56O.js} +5561 -1377
- package/chunks/{session-HKAAI7BN.js → session-ILLOYW75.js} +298 -98
- package/chunks/{settings-3EYN66GK.js → settings-RMUJGYIK.js} +34 -32
- package/chunks/{shell-6YXINTWJ.js → shell-65GTAN5Q.js} +28 -26
- package/chunks/{skill-OO57P4X6.js → skill-L76U3YCX.js} +10 -10
- package/chunks/{spawnChannel-JD7G4VU6.js → spawnChannel-LXIGZ4EM.js} +28 -28
- package/chunks/{src-G5UPLZSZ.js → src-DWZT2X3Z.js} +87 -27
- package/chunks/{standalone-update-OB7F4JPZ.js → standalone-update-F6SRKPSD.js} +28 -28
- package/chunks/{startInteractiveUI-73EGLIIH.js → startInteractiveUI-UEJQP7S3.js} +730 -397
- 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-4QBZVOGN.js} +26 -26
- package/chunks/{team-delete-6OSECUZC.js → team-delete-RCWYDRF4.js} +6 -5
- package/chunks/{team-plan-approval-L6F434RY.js → team-plan-approval-BK4CIOFV.js} +26 -26
- package/chunks/{theme-manager-ZG4RY6GU.js → theme-manager-5F2IGW6E.js} +27 -27
- package/chunks/{todoWrite-YDMFEV4G.js → todoWrite-FKCGATPJ.js} +4 -4
- package/chunks/{tool-search-THVIWAPB.js → tool-search-J2ESO33H.js} +9 -9
- package/chunks/{total-session-admission-JOKNRIIA.js → total-session-admission-U4LZ5QTQ.js} +33 -33
- package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
- package/chunks/{trustedFolders-EOGT3UVS.js → trustedFolders-TIDOXCJA.js} +29 -28
- package/chunks/types-ML3TRJQ5.js +16 -0
- package/chunks/{updateCheck-2KYEYVSB.js → updateCheck-VRVR26FI.js} +29 -29
- package/chunks/{validateNonInterActiveAuth-EN6ZQSR2.js → validateNonInterActiveAuth-UGKYAVLG.js} +75 -71
- package/chunks/{version-3UEA6ZIR.js → version-7HR6VZAT.js} +1 -1
- package/chunks/{web-fetch-PAAEQKBW.js → web-fetch-QGODBB6S.js} +5 -5
- package/chunks/{workflow-QCCCMYP3.js → workflow-EDQAITEW.js} +27 -27
- package/chunks/workspace-providers-status-27UGAK77.js +73 -0
- package/chunks/workspace-registration-store-5H7577YQ.js +27 -0
- package/chunks/{workspace-registry-24QFLQYH.js → workspace-registry-F3THGAXC.js} +33 -33
- package/chunks/workspace-service-4JSAQAHP.js +86 -0
- package/chunks/workspace-skills-status-5JTWZHZU.js +72 -0
- package/chunks/{write-file-I3MUDRIE.js → write-file-UY6XCZZM.js} +27 -27
- package/chunks/{zh-RQE7I22T.js → zh-FSAH32JB.js} +6 -2
- package/chunks/{zh-TW-TBPQGHKH.js → zh-TW-D2YIE2LO.js} +6 -2
- package/cli.js +11 -11
- package/locales/ca.js +6 -0
- package/locales/de.js +6 -0
- package/locales/en.js +8 -0
- package/locales/fr.js +6 -0
- package/locales/ja.js +7 -1
- package/locales/pt.js +6 -0
- package/locales/ru.js +6 -0
- package/locales/zh-TW.js +9 -1
- package/locales/zh.js +9 -1
- package/package.json +3 -3
- package/web-shell/assets/{arc-C15hqnJe.js → arc-CObt_TK9.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-B-At37J_.js → architectureDiagram-3BPJPVTR-B7aiJ6CK.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-B51wjcU7.js → blockDiagram-GPEHLZMM-BSK2CrID.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-xBK7BAwN.js → c4Diagram-AAUBKEIU-Bhx2p7T_.js} +1 -1
- package/web-shell/assets/channel-BBaLq8MV.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-xKmLg7Yr.js → chunk-2J33WTMH-c3Hzv0Ni.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BfkdKZCM.js → chunk-4BX2VUAB-DNXaK7ZF.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DT713sZf.js → chunk-55IACEB6-BXjvDj_i.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-CYEeAamv.js → chunk-727SXJPM-B6CaKFp-.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-DBN-5CFd.js → chunk-AQP2D5EJ-tij6Mz9B.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CGZKk4PH.js → chunk-FMBD7UC4-DdlsGk2h.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-qQbC2O-y.js → chunk-ND2GUHAM-CdgGZSHE.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-B3zeXwsX.js → chunk-QZHKN3VN-D8oJn1C0.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-B2ZK6sWE.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B2ZK6sWE.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BKsl1Wvy.js → cose-bilkent-S5V4N54A-BUVmNp1Y.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-CuuuLiBK.js → dagre-BM42HDAG-CO4q310O.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-CG4_eKiV.js → diagram-2AECGRRQ-C6gFvWkg.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-DSFTmZB1.js → diagram-5GNKFQAL-NG2I_c0h.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BxwlEHn8.js → diagram-KO2AKTUF-DFKMS6I9.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BUAg-jMG.js → diagram-LMA3HP47-BiElfsfP.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-BFM2jlO5.js → diagram-OG6HWLK6-zLWDYUqu.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CerbFPa2.js → erDiagram-TEJ5UH35-DoVaazhK.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BNeZz5Zz.js → flowDiagram-I6XJVG4X-0RLz-mXg.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-CTOogLaM.js → ganttDiagram-6RSMTGT7-C-eX1A39.js} +3 -3
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-yxSFkXPj.js → gitGraphDiagram-PVQCEYII-BauQu1Bu.js} +1 -1
- package/web-shell/assets/index-3uAT3ehO.css +5 -0
- package/web-shell/assets/index-CVHa2QH7.js +3 -0
- package/web-shell/assets/index-D1KigWat.js +1128 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DYdAUevm.js → infoDiagram-5YYISTIA-C800cFvZ.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CNuijZ90.js → ishikawaDiagram-YF4QCWOH-CFK1Jk6e.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-BTyiuonf.js → journeyDiagram-JHISSGLW-Cjx0WAC4.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-DPJo0Uow.js → kanban-definition-UN3LZRKU-DWMDHbiv.js} +1 -1
- package/web-shell/assets/{linear-C8wKCbIC.js → linear-vpW4FrZs.js} +1 -1
- package/web-shell/assets/{mermaid.core-BV5o7nW5.js → mermaid.core-DsHRUnDd.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BtLcBmSt.js → mindmap-definition-RKZ34NQL-D3Eb1cAK.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-C22J7A9Q.js → pieDiagram-4H26LBE5-Cr2-6sWt.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DSL10wiL.js → quadrantDiagram-W4KKPZXB-Yd7yUgVp.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-feqh0UpX.js → requirementDiagram-4Y6WPE33-BE6SprL8.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-Z4OVaWaZ.js → sankeyDiagram-5OEKKPKP-DzkuMK8d.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DIluIcb1.js → sequenceDiagram-3UESZ5HK-wD9A3Dhi.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-hlhnuoYH.js → stateDiagram-AJRCARHV-BOp5q1Nm.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BDsWUmPG.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-Dqf_CqgL.js → timeline-definition-PNZ67QCA-Btc08sUA.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DD2QhaTX.js → vennDiagram-CIIHVFJN-Bv6upsOA.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-B2uI85U_.js → wardley-L42UT6IY-D-XamnCK.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-U1aJX71g.js → wardleyDiagram-YWT4CUSO-BbP_5Wfp.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-C0ODHUee.js → xychartDiagram-2RQKCTM6-CO5Hh28b.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-CU3L64TP.js +0 -93
- 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
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
} from "./chunk-57OAHC2Y.js";
|
|
6
6
|
import {
|
|
7
7
|
loadSettings
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-CQQD7MDG.js";
|
|
9
9
|
import {
|
|
10
10
|
getCurrentLanguage,
|
|
11
11
|
t
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-UZKG7HFG.js";
|
|
13
13
|
import {
|
|
14
14
|
isWorkspaceTrusted
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-W2U4RJJU.js";
|
|
16
16
|
import {
|
|
17
17
|
writeStdoutLine
|
|
18
18
|
} from "./chunk-YUZI3WAC.js";
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
redactUrlCredentials,
|
|
24
24
|
require_prompts,
|
|
25
25
|
stripAnsi
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-XCR44EEA.js";
|
|
27
27
|
import {
|
|
28
28
|
init_esbuild_shims
|
|
29
29
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
escapeAnsiCtrlCodes
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-FGTCZJOD.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
|
}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
Storage,
|
|
6
6
|
resolvePath,
|
|
7
7
|
sanitizeCwd
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-7NFB7LBQ.js";
|
|
9
9
|
import {
|
|
10
10
|
init_esbuild_shims
|
|
11
11
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -170,6 +170,21 @@ function isTeamAutoMemPath(absolutePath, projectRoot) {
|
|
|
170
170
|
return rel === "" || !rel.startsWith("..") && !path.isAbsolute(rel);
|
|
171
171
|
}
|
|
172
172
|
__name(isTeamAutoMemPath, "isTeamAutoMemPath");
|
|
173
|
+
function isManagedMemoryPath(filePath, projectRoot, baseDir = projectRoot) {
|
|
174
|
+
const absolutePath = path.resolve(baseDir, filePath);
|
|
175
|
+
const resolvedPath = path.normalize(realpathNearestExisting(absolutePath));
|
|
176
|
+
const roots = [
|
|
177
|
+
getAutoMemoryRoot(projectRoot),
|
|
178
|
+
getUserAutoMemoryRoot(),
|
|
179
|
+
getTeamAutoMemoryRoot(projectRoot)
|
|
180
|
+
];
|
|
181
|
+
return roots.some((root) => {
|
|
182
|
+
const resolvedRoot = path.normalize(realpathNearestExisting(root));
|
|
183
|
+
const rel = path.relative(resolvedRoot, resolvedPath);
|
|
184
|
+
return rel === "" || !rel.startsWith("..") && !path.isAbsolute(rel);
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
__name(isManagedMemoryPath, "isManagedMemoryPath");
|
|
173
188
|
function resolveLeafSymlink(inputPath) {
|
|
174
189
|
const maxHops = 40;
|
|
175
190
|
let current = path.resolve(inputPath);
|
|
@@ -250,6 +265,7 @@ export {
|
|
|
250
265
|
getTeamAutoMemoryRoot,
|
|
251
266
|
getTeamAutoMemoryIndexPath,
|
|
252
267
|
isTeamAutoMemPath,
|
|
268
|
+
isManagedMemoryPath,
|
|
253
269
|
isAnyAutoMemPath
|
|
254
270
|
};
|
|
255
271
|
/**
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
functionResponsePartsToString
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-55SAYASQ.js";
|
|
6
6
|
import {
|
|
7
7
|
parseAndFormatApiError
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-XCR44EEA.js";
|
|
9
9
|
import {
|
|
10
10
|
init_esbuild_shims
|
|
11
11
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -792,7 +792,7 @@ ${event.value}`, null);
|
|
|
792
792
|
* to emit stream events when includePartialMessages is enabled.
|
|
793
793
|
*
|
|
794
794
|
* @param _request - Tool call request info
|
|
795
|
-
* @param _progress - Structured MCP progress data
|
|
795
|
+
* @param _progress - Structured MCP progress data or shell liveness heartbeat
|
|
796
796
|
*/
|
|
797
797
|
emitToolProgress(_request, _progress) {
|
|
798
798
|
}
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from "./chunk-QHTIBUWB.js";
|
|
9
9
|
import {
|
|
10
10
|
t
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-UZKG7HFG.js";
|
|
12
12
|
import {
|
|
13
13
|
require_clean,
|
|
14
14
|
require_constants,
|
|
@@ -27,13 +27,13 @@ import {
|
|
|
27
27
|
ansi_regex_exports,
|
|
28
28
|
init_ansi_regex,
|
|
29
29
|
stripAnsi
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-XCR44EEA.js";
|
|
31
31
|
import {
|
|
32
32
|
require_graceful_fs
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-E2UVIFI2.js";
|
|
34
34
|
import {
|
|
35
35
|
createDebugLogger
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-7NFB7LBQ.js";
|
|
37
37
|
import {
|
|
38
38
|
__qwen_dirname,
|
|
39
39
|
init_esbuild_shims
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
isSupportedImageMimeType
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-B7NUUEXC.js";
|
|
6
6
|
import {
|
|
7
7
|
TextTokenizer
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-TQBODCFD.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";
|
|
@@ -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
|
-
*/
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
HistoryReplayer
|
|
5
|
+
} from "./chunk-HKM2TEF7.js";
|
|
3
6
|
import {
|
|
4
7
|
redactLogCredentials
|
|
5
8
|
} from "./chunk-M5GB774H.js";
|
|
@@ -274,6 +277,152 @@ function isValidServerName(name) {
|
|
|
274
277
|
}
|
|
275
278
|
__name(isValidServerName, "isValidServerName");
|
|
276
279
|
|
|
280
|
+
// packages/cli/src/acp-integration/session/history-replay-page.ts
|
|
281
|
+
init_esbuild_shims();
|
|
282
|
+
function createReplayCumulativeUsage() {
|
|
283
|
+
return {
|
|
284
|
+
promptTokens: 0,
|
|
285
|
+
cachedTokens: 0,
|
|
286
|
+
candidateTokens: 0,
|
|
287
|
+
apiTimeMs: 0
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
__name(createReplayCumulativeUsage, "createReplayCumulativeUsage");
|
|
291
|
+
function copyCumulativeUsage(target, source) {
|
|
292
|
+
target.promptTokens = source.promptTokens;
|
|
293
|
+
target.cachedTokens = source.cachedTokens;
|
|
294
|
+
target.candidateTokens = source.candidateTokens;
|
|
295
|
+
target.apiTimeMs = source.apiTimeMs;
|
|
296
|
+
}
|
|
297
|
+
__name(copyCumulativeUsage, "copyCumulativeUsage");
|
|
298
|
+
function isObjectRecord(value) {
|
|
299
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
300
|
+
}
|
|
301
|
+
__name(isObjectRecord, "isObjectRecord");
|
|
302
|
+
function isCumulativeUsage(value) {
|
|
303
|
+
if (!isObjectRecord(value)) return false;
|
|
304
|
+
return typeof value["promptTokens"] === "number" && Number.isFinite(value["promptTokens"]) && typeof value["cachedTokens"] === "number" && Number.isFinite(value["cachedTokens"]) && typeof value["candidateTokens"] === "number" && Number.isFinite(value["candidateTokens"]) && typeof value["apiTimeMs"] === "number" && Number.isFinite(value["apiTimeMs"]);
|
|
305
|
+
}
|
|
306
|
+
__name(isCumulativeUsage, "isCumulativeUsage");
|
|
307
|
+
function isPendingReplayToolCall(value) {
|
|
308
|
+
if (!isObjectRecord(value)) return false;
|
|
309
|
+
return typeof value["callId"] === "string" && typeof value["toolName"] === "string" && (value["timestamp"] === void 0 || typeof value["timestamp"] === "string") && typeof value["recordId"] === "string";
|
|
310
|
+
}
|
|
311
|
+
__name(isPendingReplayToolCall, "isPendingReplayToolCall");
|
|
312
|
+
function parseTranscriptReplayState(replay, logger) {
|
|
313
|
+
if (!isObjectRecord(replay)) {
|
|
314
|
+
return {
|
|
315
|
+
pendingToolCalls: [],
|
|
316
|
+
cumulativeUsage: createReplayCumulativeUsage()
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
const rawPending = replay["pendingToolCalls"];
|
|
320
|
+
const pendingToolCalls = Array.isArray(rawPending) ? rawPending.filter(isPendingReplayToolCall) : [];
|
|
321
|
+
if (logger && Array.isArray(rawPending) && pendingToolCalls.length !== rawPending.length) {
|
|
322
|
+
const dropped = rawPending.length - pendingToolCalls.length;
|
|
323
|
+
logger.warn(
|
|
324
|
+
`[transcript] replay state dropped ${dropped} of ${rawPending.length} malformed pending tool calls`
|
|
325
|
+
);
|
|
326
|
+
}
|
|
327
|
+
const cumulativeUsage = isCumulativeUsage(replay["cumulativeUsage"]) ? { ...replay["cumulativeUsage"] } : createReplayCumulativeUsage();
|
|
328
|
+
return { pendingToolCalls, cumulativeUsage };
|
|
329
|
+
}
|
|
330
|
+
__name(parseTranscriptReplayState, "parseTranscriptReplayState");
|
|
331
|
+
function replayContext(sessionId, updates, cumulativeUsage, config) {
|
|
332
|
+
return {
|
|
333
|
+
sessionId,
|
|
334
|
+
sendUpdate: /* @__PURE__ */ __name(async (update) => {
|
|
335
|
+
updates.push(update);
|
|
336
|
+
}, "sendUpdate"),
|
|
337
|
+
cumulativeUsage,
|
|
338
|
+
...config ? { config } : {}
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
__name(replayContext, "replayContext");
|
|
342
|
+
async function collectHistoryReplayUpdates({
|
|
343
|
+
sessionId,
|
|
344
|
+
config,
|
|
345
|
+
records,
|
|
346
|
+
gaps,
|
|
347
|
+
cumulativeUsage,
|
|
348
|
+
logger
|
|
349
|
+
}) {
|
|
350
|
+
const updates = [];
|
|
351
|
+
try {
|
|
352
|
+
await new HistoryReplayer(
|
|
353
|
+
replayContext(sessionId, updates, cumulativeUsage, config)
|
|
354
|
+
).replay(records, gaps);
|
|
355
|
+
} catch (error) {
|
|
356
|
+
const replayError = error instanceof Error ? error.message : String(error);
|
|
357
|
+
logger?.warn(
|
|
358
|
+
"[historyReplay] History replay failed for session %s (partial updates: %d):",
|
|
359
|
+
sessionId,
|
|
360
|
+
updates.length,
|
|
361
|
+
error
|
|
362
|
+
);
|
|
363
|
+
return { updates: liftSessionUpdateTimestamps(updates), replayError };
|
|
364
|
+
}
|
|
365
|
+
return { updates: liftSessionUpdateTimestamps(updates) };
|
|
366
|
+
}
|
|
367
|
+
__name(collectHistoryReplayUpdates, "collectHistoryReplayUpdates");
|
|
368
|
+
function liftSessionUpdateTimestamps(updates) {
|
|
369
|
+
return updates.map((update) => {
|
|
370
|
+
const record = update;
|
|
371
|
+
const meta = record["_meta"];
|
|
372
|
+
const timestamp = isObjectRecord(meta) ? meta["timestamp"] : void 0;
|
|
373
|
+
return typeof timestamp === "number" || typeof timestamp === "string" ? { ...record, timestamp } : update;
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
__name(liftSessionUpdateTimestamps, "liftSessionUpdateTimestamps");
|
|
377
|
+
async function replayTranscriptRecordPage({
|
|
378
|
+
sessionId,
|
|
379
|
+
page,
|
|
380
|
+
config,
|
|
381
|
+
encodeCursor,
|
|
382
|
+
logger
|
|
383
|
+
}) {
|
|
384
|
+
const state = parseTranscriptReplayState(page.replay, logger);
|
|
385
|
+
const updates = [];
|
|
386
|
+
const replayer = new HistoryReplayer(
|
|
387
|
+
replayContext(sessionId, updates, state.cumulativeUsage, config)
|
|
388
|
+
);
|
|
389
|
+
let pendingToolCalls;
|
|
390
|
+
let replayError;
|
|
391
|
+
try {
|
|
392
|
+
const replayState = await replayer.replayPage(page.records, {
|
|
393
|
+
pendingToolCalls: state.pendingToolCalls,
|
|
394
|
+
finalizeDangling: !page.hasMore,
|
|
395
|
+
gaps: page.gaps
|
|
396
|
+
});
|
|
397
|
+
pendingToolCalls = replayState.pendingToolCalls;
|
|
398
|
+
} catch (error) {
|
|
399
|
+
logger?.warn(
|
|
400
|
+
"[historyReplay] Paged history replay failed for session %s (partial updates: %d):",
|
|
401
|
+
sessionId,
|
|
402
|
+
updates.length,
|
|
403
|
+
error
|
|
404
|
+
);
|
|
405
|
+
pendingToolCalls = replayer.getPendingToolCalls();
|
|
406
|
+
replayError = "Replay conversion failed for this page";
|
|
407
|
+
}
|
|
408
|
+
const nextCursor = page.nextCursorState && replayError === void 0 ? encodeCursor({
|
|
409
|
+
...page.nextCursorState,
|
|
410
|
+
replay: {
|
|
411
|
+
pendingToolCalls,
|
|
412
|
+
cumulativeUsage: state.cumulativeUsage
|
|
413
|
+
}
|
|
414
|
+
}) : void 0;
|
|
415
|
+
return {
|
|
416
|
+
updates: liftSessionUpdateTimestamps(updates),
|
|
417
|
+
...nextCursor ? { nextCursor } : {},
|
|
418
|
+
hasMore: replayError === void 0 && page.hasMore,
|
|
419
|
+
startTime: page.startTime,
|
|
420
|
+
lastUpdated: page.lastUpdated,
|
|
421
|
+
...replayError ? { partial: true, replayError } : {}
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
__name(replayTranscriptRecordPage, "replayTranscriptRecordPage");
|
|
425
|
+
|
|
277
426
|
export {
|
|
278
427
|
createWorkspaceMemoryExtractionErrorLogger,
|
|
279
428
|
extractRememberErrorCode,
|
|
@@ -283,7 +432,11 @@ export {
|
|
|
283
432
|
MAX_REMEMBER_CONTENT_BYTES,
|
|
284
433
|
formatWorkspaceMemoryForgetSummary,
|
|
285
434
|
formatWorkspaceMemoryDreamSummary,
|
|
286
|
-
isValidServerName
|
|
435
|
+
isValidServerName,
|
|
436
|
+
createReplayCumulativeUsage,
|
|
437
|
+
copyCumulativeUsage,
|
|
438
|
+
collectHistoryReplayUpdates,
|
|
439
|
+
replayTranscriptRecordPage
|
|
287
440
|
};
|
|
288
441
|
/**
|
|
289
442
|
* @license
|
|
@@ -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
|
+
};
|
|
@@ -23,6 +23,8 @@ var DaemonMetricsRing = class {
|
|
|
23
23
|
curQueueWaits = [];
|
|
24
24
|
curPromptDurations = [];
|
|
25
25
|
curLlmDurations = [];
|
|
26
|
+
curLlmApiErrors = 0;
|
|
27
|
+
curLlmApiRetries = 0;
|
|
26
28
|
curPipeInBytes = 0;
|
|
27
29
|
curPipeOutBytes = 0;
|
|
28
30
|
curTokensIn = 0;
|
|
@@ -49,6 +51,19 @@ var DaemonMetricsRing = class {
|
|
|
49
51
|
recordLlmDuration(durationMs) {
|
|
50
52
|
pushCapped(this.curLlmDurations, durationMs);
|
|
51
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Fold one model round's per-round model-API-error and automatic-retry
|
|
56
|
+
* increments (from the same token frame) into the open window. Both are
|
|
57
|
+
* plain counters — a burst in one window accrues exactly, past the sample
|
|
58
|
+
* cap that only bounds the percentile arrays. Non-finite / negative inputs
|
|
59
|
+
* are ignored so a malformed frame cannot poison the totals.
|
|
60
|
+
*/
|
|
61
|
+
recordApiActivity(errors, retries) {
|
|
62
|
+
if (Number.isFinite(errors) && errors > 0) this.curLlmApiErrors += errors;
|
|
63
|
+
if (Number.isFinite(retries) && retries > 0) {
|
|
64
|
+
this.curLlmApiRetries += retries;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
52
67
|
/** Fold one ACP-child pipe message's payload size into the open window. */
|
|
53
68
|
recordPipe(direction, bytes) {
|
|
54
69
|
if (!Number.isFinite(bytes) || bytes < 0) return;
|
|
@@ -84,6 +99,8 @@ var DaemonMetricsRing = class {
|
|
|
84
99
|
promptDurationP95Ms: percentile(this.curPromptDurations, 0.95),
|
|
85
100
|
llmApiP50Ms: percentile(this.curLlmDurations, 0.5),
|
|
86
101
|
llmApiP95Ms: percentile(this.curLlmDurations, 0.95),
|
|
102
|
+
llmApiErrors: this.curLlmApiErrors,
|
|
103
|
+
llmApiRetries: this.curLlmApiRetries,
|
|
87
104
|
cpuPercent: finiteGauge(gauges.cpuPercent),
|
|
88
105
|
rssBytes: finiteGauge(gauges.rssBytes),
|
|
89
106
|
heapUsedBytes: finiteGauge(gauges.heapUsedBytes),
|
|
@@ -109,6 +126,8 @@ var DaemonMetricsRing = class {
|
|
|
109
126
|
this.curQueueWaits.length = 0;
|
|
110
127
|
this.curPromptDurations.length = 0;
|
|
111
128
|
this.curLlmDurations.length = 0;
|
|
129
|
+
this.curLlmApiErrors = 0;
|
|
130
|
+
this.curLlmApiRetries = 0;
|
|
112
131
|
this.curPipeInBytes = 0;
|
|
113
132
|
this.curPipeOutBytes = 0;
|
|
114
133
|
this.curTokensIn = 0;
|