@qwen-code/qwen-code 0.19.9 → 0.19.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/settings.md +7 -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-67ODZ4SZ.js} +31 -31
- package/chunks/{StandaloneSessionPicker-WS4GXYOG.js → StandaloneSessionPicker-SIPBQT5Z.js} +51 -49
- package/chunks/{acpAgent-5FWSOZL5.js → acpAgent-VPZJXLFX.js} +528 -478
- package/chunks/{agent-HOLHB3RT.js → agent-Z7NWL6XL.js} +26 -26
- package/chunks/{agent-headless-SXL6H56A.js → agent-headless-73HZ6ROQ.js} +26 -26
- package/chunks/{anthropicContentGenerator-L73TO3DB.js → anthropicContentGenerator-56U3YCP2.js} +5 -5
- package/chunks/{artifact-tool-U7IRTLIV.js → artifact-tool-BWZZJ42H.js} +2 -2
- package/chunks/{askUserQuestion-2DLUUZZG.js → askUserQuestion-WU3S5A5T.js} +2 -2
- package/chunks/{bridge-BCJQ7BBB.js → bridge-XFKW6S7Q.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-5RWKSGEU.js +418 -0
- package/chunks/channel-worker-supervisor-PCDAZN4D.js +20 -0
- package/chunks/{chunk-LXNEJD34.js → chunk-2FO5GFKZ.js} +1 -1
- package/chunks/{chunk-B5ORX3FG.js → chunk-2UUAIFQO.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-E2IY465S.js → chunk-3XJFUTNM.js} +10 -10
- package/chunks/{chunk-JZETEN3Z.js → chunk-422XAKCK.js} +3 -3
- package/chunks/{chunk-N3EMS75V.js → chunk-4FMG7EDJ.js} +1268 -1233
- package/chunks/{chunk-HKMAENAO.js → chunk-4YWLED2A.js} +8 -6
- package/chunks/{chunk-SCGXUJBT.js → chunk-5EBKKSBX.js} +3 -3
- package/chunks/chunk-5HBA2Z7V.js +28 -0
- package/chunks/{chunk-XYQSMABS.js → chunk-5LROA5W4.js} +4 -4
- package/chunks/{chunk-ZJE7NSL3.js → chunk-5M6IDOMF.js} +34 -97
- package/chunks/{chunk-VA4KQY6V.js → chunk-65N2J6V2.js} +3 -3
- package/chunks/{chunk-4C5BQ2D2.js → chunk-6GETGQWP.js} +71 -12
- package/chunks/{chunk-PVZM22CK.js → chunk-6GKMJPOC.js} +5 -5
- package/chunks/{chunk-W2UIXQDL.js → chunk-6OATMEYN.js} +1 -1
- package/chunks/{chunk-GZRTYZ2R.js → chunk-6W6DI34P.js} +154 -1
- package/chunks/{chunk-EMDMPBJ4.js → chunk-7L4XBYVW.js} +3 -3
- package/chunks/{chunk-EAXLGSFP.js → chunk-7MJAZMXK.js} +8 -8
- package/chunks/{chunk-K434OPES.js → chunk-7NAWTFVY.js} +3 -3
- package/chunks/{chunk-J4TSQ5EQ.js → chunk-7NFB7LBQ.js} +8 -1
- package/chunks/{chunk-5SFOMFG4.js → chunk-7R4DPSRA.js} +36 -2
- package/chunks/{chunk-P67PFTUT.js → chunk-AAR5SGMD.js} +4 -4
- package/chunks/{chunk-RDJSGHZE.js → chunk-ALGGS7UH.js} +1 -38
- package/chunks/{chunk-GWHYEOV2.js → chunk-ARKANCNX.js} +2 -1
- package/chunks/{chunk-D2GFWEXB.js → chunk-B5I2IIWY.js} +6 -6
- package/chunks/{chunk-524RQP4Q.js → chunk-B7NUUEXC.js} +10 -4
- package/chunks/{chunk-CUMMSHH6.js → chunk-BBNVFRGD.js} +1 -1
- package/chunks/{chunk-5HOMWMCL.js → chunk-CEW4HDPK.js} +4166 -1338
- package/chunks/chunk-CJFNEBYB.js +91 -0
- package/chunks/{chunk-VWPVHAMO.js → chunk-CUUXANEQ.js} +5 -1
- package/chunks/{chunk-GWLSNBG4.js → chunk-DK33QJ3V.js} +30 -26
- package/chunks/{chunk-HPDUL5MF.js → chunk-DPFBNG72.js} +1 -1
- package/chunks/{chunk-KKNMOEZH.js → chunk-E2UVIFI2.js} +185 -398
- package/chunks/{chunk-MC23XKFE.js → chunk-E67NFMF4.js} +3 -3
- package/chunks/{chunk-OQ4DRIOA.js → chunk-EQY6POVO.js} +2 -2
- package/chunks/{chunk-XUOOWUZS.js → chunk-F7NXQH4Y.js} +1 -1
- package/chunks/{chunk-YLV3XXFB.js → chunk-FBU7WRZI.js} +17 -1
- package/chunks/{chunk-LK7KUE55.js → chunk-FSA7ERJ2.js} +1 -1
- package/chunks/{chunk-PDZ7MBDG.js → chunk-FXMC7SL2.js} +27 -6
- package/chunks/{chunk-SJHDYNHF.js → chunk-GDQQRV43.js} +3 -3
- package/chunks/{chunk-34MW4KTI.js → chunk-GGJII3FM.js} +2 -2
- package/chunks/{chunk-3BTRNWWD.js → chunk-GOXKNSDZ.js} +1 -64
- package/chunks/chunk-GYTKQYDB.js +23 -0
- package/chunks/{chunk-HVY356M2.js → chunk-H3FQOPPS.js} +3 -3
- package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
- package/chunks/{chunk-WQUQVGTF.js → chunk-HHEFI4RP.js} +183 -96
- package/chunks/chunk-IDS7MSUP.js +74 -0
- package/chunks/{chunk-6PESIEKJ.js → chunk-JSJFKYWT.js} +68 -6
- package/chunks/{chunk-CNEIYWSA.js → chunk-K4PZ5F5T.js} +5 -5
- package/chunks/{chunk-NVYTCB5Z.js → chunk-K7CRWKOE.js} +14534 -13980
- package/chunks/{chunk-ORBGV7NJ.js → chunk-KKRTYONM.js} +6 -4
- package/chunks/{chunk-IAVB3HM3.js → chunk-KSO42X3Z.js} +13 -0
- package/chunks/chunk-L37RC7MQ.js +493 -0
- package/chunks/{chunk-4QLQE5WJ.js → chunk-L5U3ELZX.js} +1 -1
- package/chunks/{chunk-3G7CIHVV.js → chunk-L62SEJWY.js} +4 -4
- package/chunks/{chunk-EGYZ275M.js → chunk-LNUXFLLJ.js} +4 -4
- package/chunks/{chunk-4ZVWQHEQ.js → chunk-LQIDP6K5.js} +1 -1
- package/chunks/{chunk-VTU57BWZ.js → chunk-LQU7EVFA.js} +1 -1
- package/chunks/{chunk-B4G2WOFA.js → chunk-LTNI523B.js} +2 -2
- package/chunks/{chunk-DC5Z3DU6.js → chunk-LXLTBIDP.js} +43 -6
- package/chunks/{chunk-KHUQZZJ6.js → chunk-MO7O5722.js} +370 -36
- package/chunks/chunk-MR3PXB6E.js +48 -0
- package/chunks/{chunk-5VXNZWGF.js → chunk-N6FXRR6P.js} +1 -1
- package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
- package/chunks/{chunk-TO6QE22P.js → chunk-OATTJGPJ.js} +26 -22
- package/chunks/{chunk-X6TJ3YZV.js → chunk-OFEVHGVU.js} +159 -57
- package/chunks/{chunk-X4NKFGFJ.js → chunk-OJAMDVF5.js} +0 -15
- package/chunks/{chunk-BZIFY5TF.js → chunk-OKAIGAYW.js} +3 -3
- package/chunks/{chunk-3VAGG5T5.js → chunk-P6LART6G.js} +116 -15
- package/chunks/{chunk-3SJSQXNS.js → chunk-PEJWA3QQ.js} +12 -8
- package/chunks/{chunk-BAPGSC7U.js → chunk-Q5GLXH5Q.js} +23 -9
- package/chunks/{chunk-MXL5UP4X.js → chunk-Q6TUALBE.js} +1 -1
- package/chunks/{chunk-QYMQSECS.js → chunk-QAW7PIHT.js} +2 -2
- package/chunks/{chunk-LUODI7WD.js → chunk-RCEEXIOO.js} +6 -4
- package/chunks/{chunk-YAUFFXDS.js → chunk-RDRVMDWV.js} +12 -11
- package/chunks/{chunk-CEA3E3JB.js → chunk-SPJQO2CE.js} +2 -2
- package/chunks/{chunk-U2NNEY4R.js → chunk-SPUYQB4T.js} +1 -1
- package/chunks/{chunk-34Z3U5RQ.js → chunk-SXU3KKNI.js} +514 -114
- package/chunks/{chunk-ECNYL4AA.js → chunk-TISZXPAX.js} +1 -1
- package/chunks/{chunk-JSG7ZSBC.js → chunk-TQBODCFD.js} +1 -1
- package/chunks/{chunk-AKIVHSJR.js → chunk-TTUO4DNG.js} +111 -93
- package/chunks/chunk-TV6K2FB4.js +224 -0
- package/chunks/{chunk-4GORAUCN.js → chunk-TXY2C3D2.js} +1 -1
- package/chunks/{chunk-5XUCZNSY.js → chunk-TYLOFD2U.js} +1 -1
- package/chunks/{chunk-CLFKOZEK.js → chunk-UFOKA4PR.js} +1 -1
- package/chunks/{channel-worker-supervisor-WSOAAYUO.js → chunk-URU5UEK6.js} +67 -35
- package/chunks/{chunk-D5SKC4YG.js → chunk-V7EQTZYR.js} +41 -13
- package/chunks/{chunk-L6P4KPHR.js → chunk-VBRRNQB7.js} +59 -39
- package/chunks/{chunk-BMGVRZN4.js → chunk-W34A5MJH.js} +1 -1
- package/chunks/{chunk-PODM4SZ4.js → chunk-WDW64OW3.js} +5 -5
- package/chunks/{chunk-W3JHSWRP.js → chunk-WDWJ4OQJ.js} +4 -4
- package/chunks/{chunk-Q4YQW46J.js → chunk-WIASPMLX.js} +31 -17
- package/chunks/{chunk-ZLXQN2QS.js → chunk-WIEO4CWB.js} +1 -1
- package/chunks/{chunk-A3XKDTSH.js → chunk-WLXYAKV7.js} +4 -4
- package/chunks/{chunk-Q6I5QHMH.js → chunk-WTSXKLG5.js} +1 -1
- package/chunks/{chunk-J3JA76CF.js → chunk-WX6SD4IQ.js} +1 -1
- package/chunks/{chunk-77XJ3SWN.js → chunk-X362TMXZ.js} +5 -5
- package/chunks/{chunk-CCDMCZPP.js → chunk-XLIRF7IK.js} +1 -1
- package/chunks/{chunk-AURZZYMD.js → chunk-XXJKGHZV.js} +4 -4
- package/chunks/{chunk-TDEXZKMT.js → chunk-Y66VOBRP.js} +2 -2
- package/chunks/{chunk-CC2ITGCF.js → chunk-YHN5SUIJ.js} +49 -6
- package/chunks/{chunk-3AHXV67U.js → chunk-YU56QGXX.js} +1 -1
- package/chunks/{chunk-5U27BZ72.js → chunk-YX4LLZ3D.js} +187 -75
- package/chunks/{chunk-ATAKVRIF.js → chunk-YYPXHMWO.js} +7 -7
- package/chunks/{chunk-XLA62MYB.js → chunk-ZKMGAFYV.js} +2 -2
- package/chunks/{chunk-UOZWKTQG.js → chunk-ZPAHLFZU.js} +2 -2
- package/chunks/{chunk-7PU4FYLG.js → chunk-ZQTZXVHP.js} +4 -4
- package/chunks/chunk-ZRKBI3DP.js +34 -0
- package/chunks/{computer-use-HM37RX6A.js → computer-use-IYTX45WA.js} +26 -26
- package/chunks/{config-utils-NV2SVGPB.js → config-utils-CFT33LTP.js} +3 -2
- package/chunks/{contextCommand-OF5SFGH2.js → contextCommand-272V77WU.js} +28 -28
- package/chunks/{create-sub-session-KPRT7ECJ.js → create-sub-session-CBJMQLYP.js} +26 -26
- package/chunks/{create-sub-session-INX7TXJI.js → create-sub-session-WNX2OQVX.js} +2 -2
- package/chunks/{cron-create-AMBKGZX6.js → cron-create-36TIFKRT.js} +4 -4
- package/chunks/{cron-delete-LRU4OJYG.js → cron-delete-OQD3WULU.js} +4 -4
- package/chunks/{cron-list-WVP2JXER.js → cron-list-4533T2FH.js} +4 -4
- package/chunks/{daemon-ARHTSTXP.js → daemon-RNGFPMAB.js} +575 -58
- package/chunks/{daemon-status-provider-B2UTZUJ2.js → daemon-status-provider-L4STG5VO.js} +36 -36
- package/chunks/{de-EBJN3OVN.js → de-2VCDRDGU.js} +4 -1
- package/chunks/{dist-VHV4EVHG.js → dist-3V3ZV6ML.js} +1 -1
- package/chunks/{dist-XKU3ABM5.js → dist-ERCPDVA6.js} +1 -1
- package/chunks/{dist-PNVLTKTL.js → dist-HNN7DR2L.js} +158 -4
- package/chunks/{dist-WKPOYU7O.js → dist-JZE7F6YR.js} +1 -1
- package/chunks/{dist-QYCAEZIT.js → dist-MOEC47TR.js} +5 -1
- package/chunks/{dist-R7LN5AZE.js → dist-PHEPJLXD.js} +2 -2
- package/chunks/{earlyInputCapture-3VTHRC4C.js → earlyInputCapture-EN4BRREQ.js} +27 -27
- package/chunks/{edit-VNI4NJ73.js → edit-OMAF2QDR.js} +27 -27
- package/chunks/{en-5A6LA7RK.js → en-NJCA3TAA.js} +5 -1
- package/chunks/{enter-worktree-IYYBKPZT.js → enter-worktree-BBZX52HG.js} +26 -26
- package/chunks/{enterPlanMode-GMC5FD5A.js → enterPlanMode-5NNFMBUY.js} +42 -27
- package/chunks/{environment-5HSSRMJ7.js → environment-7TEWMJYN.js} +30 -29
- package/chunks/{errors-HMFCJJ7P.js → errors-I4VKVX3F.js} +28 -28
- package/chunks/{exit-worktree-6BHCMP5G.js → exit-worktree-FUWRJI33.js} +26 -26
- package/chunks/{exitPlanMode-CJW7G74W.js → exitPlanMode-IHCJ5EEI.js} +26 -26
- package/chunks/{fast-path-FRDMDVHG.js → fast-path-ZA57TOH4.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-UOAKVXBG.js} +139 -76
- package/chunks/{geminiContentGenerator-J7YNZDYP.js → geminiContentGenerator-G6UCE6MW.js} +4 -4
- package/chunks/{glob-BRCSGFOT.js → glob-4GJQ2UFF.js} +28 -27
- package/chunks/{grep-EE2DUOSY.js → grep-5QSYXF2E.js} +26 -26
- package/chunks/{handleAutoUpdate-5NWTLR67.js → handleAutoUpdate-ULHNWL6R.js} +30 -30
- package/chunks/{i18n-BASPENNQ.js → i18n-CYDUTF6F.js} +27 -27
- package/chunks/initializer-NRFKUGIO.js +73 -0
- package/chunks/{installationInfo-W6V4DT7W.js → installationInfo-WELKRHHE.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-JVDXEG2E.js +76 -0
- package/chunks/loadedSettingsAdapter-WAM4VUTG.js +70 -0
- package/chunks/{loop-wakeup-WX7BLWWP.js → loop-wakeup-MVUKDVCP.js} +5 -5
- package/chunks/{ls-ZB2BDP6T.js → ls-RXNIAQDE.js} +4 -4
- package/chunks/{lsp-V5DN4YUJ.js → lsp-HB5LM5IL.js} +2 -2
- package/chunks/mcp-YHOZN3ZM.js +70 -0
- package/chunks/{monitor-X5Z3H4FY.js → monitor-R7XZPJHQ.js} +26 -26
- package/chunks/nonInteractiveCli-NSOB6D74.js +129 -0
- package/chunks/{notebook-edit-TRM2QIJK.js → notebook-edit-6RNKE2L2.js} +27 -27
- package/chunks/{openaiContentGenerator-AAYONPMF.js → openaiContentGenerator-XNS5S64I.js} +12 -12
- package/chunks/{pidfile-D4I4FTVA.js → pidfile-XE4RRR2P.js} +27 -27
- package/chunks/{pt-2C6YCSHL.js → pt-TFZO5Y6T.js} +4 -1
- package/chunks/{qwenContentGenerator-K3HZ2H76.js → qwenContentGenerator-APDPJ3VN.js} +28 -28
- package/chunks/{qwenOAuth2-PJQ27GSO.js → qwenOAuth2-LEYOU7RU.js} +5 -5
- package/chunks/{read-file-7SZSIZOL.js → read-file-XSUWXSR7.js} +8 -8
- package/chunks/{read-mcp-resource-SM5DA4RG.js → read-mcp-resource-6LRTZKXI.js} +2 -2
- package/chunks/{record-artifact-4XKZX3UW.js → record-artifact-PMDTY4OS.js} +2 -2
- package/chunks/{ripGrep-YNPFVCZP.js → ripGrep-APB3CDMU.js} +26 -26
- package/chunks/{ru-6BBHVZZV.js → ru-4L4LFHIT.js} +4 -1
- package/chunks/{run-qwen-serve-DMWV5N6L.js → run-qwen-serve-NWTGPERT.js} +1232 -371
- package/chunks/{runtime-57WWRVHN.js → runtime-EIO3NQKR.js} +42 -37
- package/chunks/{scheduler-YBLGWSIL.js → scheduler-JJDZBDRN.js} +26 -26
- package/chunks/{send-message-F36YD6KQ.js → send-message-SR4WSXP2.js} +3 -3
- package/chunks/{serve-R63NK3CV.js → serve-WTIPB3EI.js} +36 -34
- package/chunks/{server-Z22GCAXP.js → server-NJPHQHLH.js} +5238 -1328
- package/chunks/{session-HKAAI7BN.js → session-O4AO7FTS.js} +298 -98
- package/chunks/{settings-3EYN66GK.js → settings-HQNDK7TG.js} +34 -32
- package/chunks/{shell-6YXINTWJ.js → shell-UIXM6PWG.js} +26 -26
- package/chunks/{skill-OO57P4X6.js → skill-3XMB4ULV.js} +10 -10
- package/chunks/{spawnChannel-JD7G4VU6.js → spawnChannel-3R632QRM.js} +28 -28
- package/chunks/{src-G5UPLZSZ.js → src-USZKPUOC.js} +85 -27
- package/chunks/{standalone-update-OB7F4JPZ.js → standalone-update-L5XW3D7K.js} +28 -28
- package/chunks/{startInteractiveUI-73EGLIIH.js → startInteractiveUI-CPZOL2WB.js} +730 -397
- package/chunks/{syntheticOutput-34H7LGA7.js → syntheticOutput-YKFNUQZD.js} +3 -3
- package/chunks/{task-create-FRGOEIKY.js → task-create-NUFOHU53.js} +8 -7
- package/chunks/{task-list-OW766BXZ.js → task-list-Z2IKQY3S.js} +6 -5
- package/chunks/{task-stop-SIR5SNBN.js → task-stop-KQFIVQTJ.js} +2 -2
- package/chunks/{task-update-YRA532MT.js → task-update-HKADXSTD.js} +8 -7
- package/chunks/{team-create-PECAAPXK.js → team-create-XXPRF3IQ.js} +26 -26
- package/chunks/{team-delete-6OSECUZC.js → team-delete-SDNTGZLG.js} +6 -5
- package/chunks/{team-plan-approval-L6F434RY.js → team-plan-approval-EOTTKHDW.js} +26 -26
- package/chunks/{theme-manager-ZG4RY6GU.js → theme-manager-P6UITO2L.js} +27 -27
- package/chunks/{todoWrite-YDMFEV4G.js → todoWrite-YNXB27GB.js} +4 -4
- package/chunks/{tool-search-THVIWAPB.js → tool-search-DDNGK2LR.js} +9 -9
- package/chunks/{total-session-admission-JOKNRIIA.js → total-session-admission-PL5N7DNY.js} +33 -33
- package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
- package/chunks/{trustedFolders-EOGT3UVS.js → trustedFolders-C5LMF3UR.js} +29 -28
- package/chunks/types-ML3TRJQ5.js +16 -0
- package/chunks/{updateCheck-2KYEYVSB.js → updateCheck-QTVVISH7.js} +29 -29
- package/chunks/{validateNonInterActiveAuth-EN6ZQSR2.js → validateNonInterActiveAuth-RY4RKBQG.js} +75 -71
- package/chunks/{version-3UEA6ZIR.js → version-U45RYOSD.js} +1 -1
- package/chunks/{web-fetch-PAAEQKBW.js → web-fetch-ZSPR3PRR.js} +5 -5
- package/chunks/{workflow-QCCCMYP3.js → workflow-TCIAQYOA.js} +27 -27
- package/chunks/workspace-providers-status-I3G2HYLY.js +73 -0
- package/chunks/workspace-registration-store-IH5GLZ6Y.js +27 -0
- package/chunks/{workspace-registry-24QFLQYH.js → workspace-registry-QEKBELIX.js} +33 -33
- package/chunks/workspace-service-ORKHGLP3.js +86 -0
- package/chunks/workspace-skills-status-D7QCNDYY.js +72 -0
- package/chunks/{write-file-I3MUDRIE.js → write-file-JGRQR5VM.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-CUeDlxvE.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-B-At37J_.js → architectureDiagram-3BPJPVTR-PiUszkQA.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-B51wjcU7.js → blockDiagram-GPEHLZMM-s2wYSO7e.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-xBK7BAwN.js → c4Diagram-AAUBKEIU-DyLxZoz9.js} +1 -1
- package/web-shell/assets/channel-DkuJJ0qd.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-xKmLg7Yr.js → chunk-2J33WTMH-Dsdai7Tk.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BfkdKZCM.js → chunk-4BX2VUAB-DEosOjV7.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DT713sZf.js → chunk-55IACEB6-sNsRLTXf.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-CYEeAamv.js → chunk-727SXJPM-DkRNZzmh.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-DBN-5CFd.js → chunk-AQP2D5EJ-BrsRNpzd.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CGZKk4PH.js → chunk-FMBD7UC4-CI039lpl.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-qQbC2O-y.js → chunk-ND2GUHAM-M-pkeIfu.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-B3zeXwsX.js → chunk-QZHKN3VN-C4ckGNbH.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CwqHc0TB.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwqHc0TB.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BKsl1Wvy.js → cose-bilkent-S5V4N54A-BciKUAFq.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-CuuuLiBK.js → dagre-BM42HDAG-C1nTSgU6.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-CG4_eKiV.js → diagram-2AECGRRQ-BDPNWr1m.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-DSFTmZB1.js → diagram-5GNKFQAL-CNFhTszL.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BxwlEHn8.js → diagram-KO2AKTUF-CjPa4p5a.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BUAg-jMG.js → diagram-LMA3HP47-ZzPykSyG.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-BFM2jlO5.js → diagram-OG6HWLK6-0UVtZ9A4.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CerbFPa2.js → erDiagram-TEJ5UH35-CajDZCat.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BNeZz5Zz.js → flowDiagram-I6XJVG4X-BRuFBIvL.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-CTOogLaM.js → ganttDiagram-6RSMTGT7-BevGmJqG.js} +3 -3
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-yxSFkXPj.js → gitGraphDiagram-PVQCEYII-DvPMpBMb.js} +1 -1
- package/web-shell/assets/index-Cnvv4VcI.css +5 -0
- package/web-shell/assets/index-D1Uyklxa.js +1088 -0
- package/web-shell/assets/index-DzHwQkQq.js +3 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DYdAUevm.js → infoDiagram-5YYISTIA-Oixn7tA9.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CNuijZ90.js → ishikawaDiagram-YF4QCWOH-BgKpeg-j.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-BTyiuonf.js → journeyDiagram-JHISSGLW-74mwxIaA.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-DPJo0Uow.js → kanban-definition-UN3LZRKU-D4D6cEqA.js} +1 -1
- package/web-shell/assets/{linear-C8wKCbIC.js → linear-atZRE_L2.js} +1 -1
- package/web-shell/assets/{mermaid.core-BV5o7nW5.js → mermaid.core-KKudX-JC.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BtLcBmSt.js → mindmap-definition-RKZ34NQL-CMCej9yG.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-C22J7A9Q.js → pieDiagram-4H26LBE5-nhx40X7q.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DSL10wiL.js → quadrantDiagram-W4KKPZXB-CUmVcN3M.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-feqh0UpX.js → requirementDiagram-4Y6WPE33-C_vyEwyy.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-Z4OVaWaZ.js → sankeyDiagram-5OEKKPKP-DU6G4VWR.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DIluIcb1.js → sequenceDiagram-3UESZ5HK-DdeRR_KJ.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-hlhnuoYH.js → stateDiagram-AJRCARHV-C6iCI8ps.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C0_6nR6C.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-Dqf_CqgL.js → timeline-definition-PNZ67QCA-B_Ea8Cb7.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DD2QhaTX.js → vennDiagram-CIIHVFJN-BPUVZEJA.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-B2uI85U_.js → wardley-L42UT6IY-BWEj0lKY.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-U1aJX71g.js → wardleyDiagram-YWT4CUSO-BvDsdIQw.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-C0ODHUee.js → xychartDiagram-2RQKCTM6-crz0QhF_.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
|
@@ -60,7 +60,7 @@ async function runExitCleanup(options = {}) {
|
|
|
60
60
|
}
|
|
61
61
|
__name(runExitCleanup, "runExitCleanup");
|
|
62
62
|
async function cleanupCheckpoints() {
|
|
63
|
-
const { Storage } = await import("./src-
|
|
63
|
+
const { Storage } = await import("./src-USZKPUOC.js");
|
|
64
64
|
const storage = new Storage(process.cwd());
|
|
65
65
|
const tempDir = storage.getProjectTempDir();
|
|
66
66
|
const checkpointsDir = join(tempDir, "checkpoints");
|
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
relaunchApp
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-LQU7EVFA.js";
|
|
6
|
+
import {
|
|
7
|
+
MINIMUM_MAX_HEIGHT,
|
|
8
|
+
MaxSizedBox
|
|
9
|
+
} from "./chunk-H3FQOPPS.js";
|
|
6
10
|
import {
|
|
7
11
|
CODE_FENCE_RE,
|
|
8
12
|
TABLE_MAX_ROW_LINES,
|
|
@@ -16,7 +20,7 @@ import {
|
|
|
16
20
|
getCommandSubcommandNames,
|
|
17
21
|
splitMarkdownTableRow,
|
|
18
22
|
useSessionStats
|
|
19
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-XXJKGHZV.js";
|
|
20
24
|
import {
|
|
21
25
|
Colors,
|
|
22
26
|
RowMouseController,
|
|
@@ -25,7 +29,7 @@ import {
|
|
|
25
29
|
useMouseEvents,
|
|
26
30
|
useSettings,
|
|
27
31
|
useTerminalSize
|
|
28
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-422XAKCK.js";
|
|
29
33
|
import {
|
|
30
34
|
CompactToolGroupDisplay,
|
|
31
35
|
SCREEN_READER_MODEL_PREFIX,
|
|
@@ -48,14 +52,7 @@ import {
|
|
|
48
52
|
levelLabel,
|
|
49
53
|
useKeypress,
|
|
50
54
|
wrapForMultiplexer
|
|
51
|
-
} from "./chunk-
|
|
52
|
-
import {
|
|
53
|
-
isTerminalGoalStatusKind
|
|
54
|
-
} from "./chunk-7X7TEQNX.js";
|
|
55
|
-
import {
|
|
56
|
-
MINIMUM_MAX_HEIGHT,
|
|
57
|
-
MaxSizedBox
|
|
58
|
-
} from "./chunk-HVY356M2.js";
|
|
55
|
+
} from "./chunk-DK33QJ3V.js";
|
|
59
56
|
import {
|
|
60
57
|
Box_default,
|
|
61
58
|
Static,
|
|
@@ -65,53 +62,57 @@ import {
|
|
|
65
62
|
theme,
|
|
66
63
|
use_is_screen_reader_enabled_default,
|
|
67
64
|
use_stdin_default
|
|
68
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-K4PZ5F5T.js";
|
|
66
|
+
import {
|
|
67
|
+
isTerminalGoalStatusKind
|
|
68
|
+
} from "./chunk-7X7TEQNX.js";
|
|
69
69
|
import {
|
|
70
70
|
require_react
|
|
71
71
|
} from "./chunk-HTHUX2T5.js";
|
|
72
72
|
import {
|
|
73
73
|
resolveColor,
|
|
74
74
|
themeManager
|
|
75
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-Q6TUALBE.js";
|
|
76
76
|
import {
|
|
77
77
|
cpLen,
|
|
78
78
|
cpSlice,
|
|
79
79
|
escapeAnsiCtrlCodes,
|
|
80
80
|
getCachedStringWidth,
|
|
81
|
+
sanitizeMultilineForDisplay,
|
|
81
82
|
sanitizeSensitiveText,
|
|
82
83
|
sanitizeTerminalText,
|
|
83
84
|
stringWidth,
|
|
84
85
|
stripUnsafeCharacters,
|
|
85
86
|
toCodePoints,
|
|
86
87
|
wrapToVisualLines
|
|
87
|
-
} from "./chunk-
|
|
88
|
+
} from "./chunk-WTSXKLG5.js";
|
|
88
89
|
import {
|
|
89
90
|
eastAsianWidth
|
|
90
91
|
} from "./chunk-QHTIBUWB.js";
|
|
91
|
-
import {
|
|
92
|
-
require_has_flag,
|
|
93
|
-
require_source
|
|
94
|
-
} from "./chunk-57OAHC2Y.js";
|
|
95
92
|
import {
|
|
96
93
|
formatDuration,
|
|
97
94
|
formatMemoryUsage,
|
|
98
95
|
formatRelativeTime,
|
|
99
96
|
formatTokenCount
|
|
100
97
|
} from "./chunk-E5Z2AVNV.js";
|
|
98
|
+
import {
|
|
99
|
+
require_has_flag,
|
|
100
|
+
require_source
|
|
101
|
+
} from "./chunk-57OAHC2Y.js";
|
|
101
102
|
import {
|
|
102
103
|
createLoadedSettingsAdapter
|
|
103
|
-
} from "./chunk-
|
|
104
|
+
} from "./chunk-W34A5MJH.js";
|
|
104
105
|
import {
|
|
105
106
|
getPersistScopeForModelSelection
|
|
106
|
-
} from "./chunk-
|
|
107
|
+
} from "./chunk-6GETGQWP.js";
|
|
107
108
|
import {
|
|
108
109
|
getCurrentLanguage,
|
|
109
110
|
localizeToolDisplayName,
|
|
110
111
|
t
|
|
111
|
-
} from "./chunk-
|
|
112
|
+
} from "./chunk-RDRVMDWV.js";
|
|
112
113
|
import {
|
|
113
114
|
isWorkspaceTrusted
|
|
114
|
-
} from "./chunk-
|
|
115
|
+
} from "./chunk-4YWLED2A.js";
|
|
115
116
|
import {
|
|
116
117
|
ALL_PROVIDERS,
|
|
117
118
|
IdeClient,
|
|
@@ -132,21 +133,21 @@ import {
|
|
|
132
133
|
resolveMetadataKey,
|
|
133
134
|
resolveOwnsModel,
|
|
134
135
|
stripAnsi
|
|
135
|
-
} from "./chunk-
|
|
136
|
+
} from "./chunk-K7CRWKOE.js";
|
|
136
137
|
import {
|
|
137
138
|
MAIN_SOURCE,
|
|
138
139
|
getMCPServerStatus
|
|
139
|
-
} from "./chunk-
|
|
140
|
+
} from "./chunk-P6LART6G.js";
|
|
140
141
|
import {
|
|
141
142
|
ToolDisplayNames,
|
|
142
143
|
ToolNames,
|
|
143
144
|
ToolNamesMigration
|
|
144
|
-
} from "./chunk-
|
|
145
|
+
} from "./chunk-2UUAIFQO.js";
|
|
145
146
|
import {
|
|
146
147
|
createDebugLogger,
|
|
147
148
|
escapePath,
|
|
148
149
|
unescapePath
|
|
149
|
-
} from "./chunk-
|
|
150
|
+
} from "./chunk-7NFB7LBQ.js";
|
|
150
151
|
import {
|
|
151
152
|
init_esbuild_shims
|
|
152
153
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -7356,6 +7357,7 @@ var AssistantMessageContent = /* @__PURE__ */ __name(({
|
|
|
7356
7357
|
}
|
|
7357
7358
|
), "AssistantMessageContent");
|
|
7358
7359
|
var MAX_STREAMING_THINKING_VISUAL_LINES = 4;
|
|
7360
|
+
var BRIEF_THOUGHT_THRESHOLD_MS = 1e3;
|
|
7359
7361
|
function tailVisualLines(text, width, maxLines) {
|
|
7360
7362
|
const charBudget = maxLines * width * 2;
|
|
7361
7363
|
let sliceStart = Math.max(0, text.length - charBudget);
|
|
@@ -7369,6 +7371,31 @@ function tailVisualLines(text, width, maxLines) {
|
|
|
7369
7371
|
return lines.slice(-maxLines).join("\n");
|
|
7370
7372
|
}
|
|
7371
7373
|
__name(tailVisualLines, "tailVisualLines");
|
|
7374
|
+
var ThinkBody = /* @__PURE__ */ __name(({ text, isPending, expanded, availableTerminalHeight, contentWidth }) => {
|
|
7375
|
+
if (!isPending && !expanded) return null;
|
|
7376
|
+
if (isPending && !expanded) {
|
|
7377
|
+
const innerWidth = Math.max(contentWidth - 2, 20);
|
|
7378
|
+
const maxLines = availableTerminalHeight != null ? Math.max(
|
|
7379
|
+
1,
|
|
7380
|
+
Math.min(
|
|
7381
|
+
MAX_STREAMING_THINKING_VISUAL_LINES,
|
|
7382
|
+
Math.floor(availableTerminalHeight / 3)
|
|
7383
|
+
)
|
|
7384
|
+
) : MAX_STREAMING_THINKING_VISUAL_LINES;
|
|
7385
|
+
const display = tailVisualLines(text, innerWidth, maxLines);
|
|
7386
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Box_default, { paddingLeft: 2, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Text, { dimColor: true, wrap: "truncate", children: display }) });
|
|
7387
|
+
}
|
|
7388
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Box_default, { paddingLeft: 2, flexDirection: "column", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
7389
|
+
MarkdownDisplay,
|
|
7390
|
+
{
|
|
7391
|
+
text,
|
|
7392
|
+
isPending,
|
|
7393
|
+
availableTerminalHeight,
|
|
7394
|
+
contentWidth: contentWidth - 2,
|
|
7395
|
+
textColor: theme.text.secondary
|
|
7396
|
+
}
|
|
7397
|
+
) });
|
|
7398
|
+
}, "ThinkBody");
|
|
7372
7399
|
var ThinkMessage = /* @__PURE__ */ __name(({
|
|
7373
7400
|
text,
|
|
7374
7401
|
isPending,
|
|
@@ -7379,54 +7406,35 @@ var ThinkMessage = /* @__PURE__ */ __name(({
|
|
|
7379
7406
|
clickable = false
|
|
7380
7407
|
}) => {
|
|
7381
7408
|
const durationSuffix = durationMs != null ? ` ${formatDuration2(durationMs)}` : "";
|
|
7409
|
+
const completedLabel = durationMs == null ? null : durationMs < BRIEF_THOUGHT_THRESHOLD_MS ? t("Thought briefly") : `${t("Thought for")} ${formatDuration2(durationMs)}`;
|
|
7382
7410
|
if (!isPending && !expanded) {
|
|
7383
|
-
const
|
|
7411
|
+
const label2 = completedLabel ?? t("Thinking");
|
|
7384
7412
|
const hint = clickable ? t("(click or {{keyHint}} to expand)", { keyHint: toggleKeyHint }) : t("({{keyHint}} to expand)", { keyHint: toggleKeyHint });
|
|
7385
7413
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Text, { dimColor: true, italic: true, children: [
|
|
7386
7414
|
THINKING_ICON,
|
|
7387
|
-
|
|
7415
|
+
label2,
|
|
7388
7416
|
" ",
|
|
7389
7417
|
hint
|
|
7390
7418
|
] });
|
|
7391
7419
|
}
|
|
7392
|
-
|
|
7393
|
-
|
|
7394
|
-
const maxLines = availableTerminalHeight != null ? Math.max(
|
|
7395
|
-
1,
|
|
7396
|
-
Math.min(
|
|
7397
|
-
MAX_STREAMING_THINKING_VISUAL_LINES,
|
|
7398
|
-
Math.floor(availableTerminalHeight / 3)
|
|
7399
|
-
)
|
|
7400
|
-
) : MAX_STREAMING_THINKING_VISUAL_LINES;
|
|
7401
|
-
const display = tailVisualLines(text, innerWidth, maxLines);
|
|
7402
|
-
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Box_default, { flexDirection: "column", children: [
|
|
7403
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Text, { dimColor: true, italic: true, children: [
|
|
7404
|
-
THINKING_ICON_PENDING,
|
|
7405
|
-
t("Thinking"),
|
|
7406
|
-
"\u2026",
|
|
7407
|
-
durationSuffix
|
|
7408
|
-
] }),
|
|
7409
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Box_default, { paddingLeft: 2, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Text, { dimColor: true, wrap: "truncate", children: display }) })
|
|
7410
|
-
] });
|
|
7411
|
-
}
|
|
7412
|
-
const expandedLabel = durationMs != null ? `${t("Thought for")} ${formatDuration2(durationMs)}` : `${t("Thinking")}\u2026`;
|
|
7420
|
+
const label = isPending ? `${t("Thinking")}\u2026${durationSuffix}` : completedLabel ?? `${t("Thinking")}\u2026`;
|
|
7421
|
+
const collapseHint = !isPending && expanded ? ` ${t("({{keyHint}} to collapse)", { keyHint: toggleKeyHint })}` : "";
|
|
7413
7422
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Box_default, { flexDirection: "column", children: [
|
|
7414
7423
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Text, { dimColor: true, italic: true, children: [
|
|
7415
|
-
THINKING_ICON,
|
|
7416
|
-
|
|
7417
|
-
|
|
7418
|
-
t("({{keyHint}} to collapse)", { keyHint: toggleKeyHint })
|
|
7424
|
+
isPending ? THINKING_ICON_PENDING : THINKING_ICON,
|
|
7425
|
+
label,
|
|
7426
|
+
collapseHint
|
|
7419
7427
|
] }),
|
|
7420
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
7421
|
-
|
|
7428
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
7429
|
+
ThinkBody,
|
|
7422
7430
|
{
|
|
7423
7431
|
text,
|
|
7424
|
-
isPending
|
|
7432
|
+
isPending,
|
|
7433
|
+
expanded,
|
|
7425
7434
|
availableTerminalHeight,
|
|
7426
|
-
contentWidth
|
|
7427
|
-
textColor: theme.text.secondary
|
|
7435
|
+
contentWidth
|
|
7428
7436
|
}
|
|
7429
|
-
)
|
|
7437
|
+
)
|
|
7430
7438
|
] });
|
|
7431
7439
|
}, "ThinkMessage");
|
|
7432
7440
|
var ThinkMessageContent = /* @__PURE__ */ __name(({
|
|
@@ -7435,33 +7443,16 @@ var ThinkMessageContent = /* @__PURE__ */ __name(({
|
|
|
7435
7443
|
expanded = false,
|
|
7436
7444
|
availableTerminalHeight,
|
|
7437
7445
|
contentWidth
|
|
7438
|
-
}) =>
|
|
7439
|
-
|
|
7440
|
-
|
|
7441
|
-
|
|
7442
|
-
|
|
7443
|
-
|
|
7444
|
-
|
|
7445
|
-
|
|
7446
|
-
Math.min(
|
|
7447
|
-
MAX_STREAMING_THINKING_VISUAL_LINES,
|
|
7448
|
-
Math.floor(availableTerminalHeight / 3)
|
|
7449
|
-
)
|
|
7450
|
-
) : MAX_STREAMING_THINKING_VISUAL_LINES;
|
|
7451
|
-
const display = tailVisualLines(text, innerWidth, maxLines);
|
|
7452
|
-
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Box_default, { paddingLeft: 2, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Text, { dimColor: true, wrap: "truncate", children: display }) });
|
|
7446
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
7447
|
+
ThinkBody,
|
|
7448
|
+
{
|
|
7449
|
+
text,
|
|
7450
|
+
isPending,
|
|
7451
|
+
expanded,
|
|
7452
|
+
availableTerminalHeight,
|
|
7453
|
+
contentWidth
|
|
7453
7454
|
}
|
|
7454
|
-
|
|
7455
|
-
MarkdownDisplay,
|
|
7456
|
-
{
|
|
7457
|
-
text,
|
|
7458
|
-
isPending: false,
|
|
7459
|
-
availableTerminalHeight,
|
|
7460
|
-
contentWidth: contentWidth - 2,
|
|
7461
|
-
textColor: theme.text.secondary
|
|
7462
|
-
}
|
|
7463
|
-
) });
|
|
7464
|
-
}, "ThinkMessageContent");
|
|
7455
|
+
), "ThinkMessageContent");
|
|
7465
7456
|
|
|
7466
7457
|
// packages/cli/src/ui/components/messages/ToolGroupMessage.tsx
|
|
7467
7458
|
init_esbuild_shims();
|
|
@@ -12307,12 +12298,22 @@ var ShellInputPrompt = /* @__PURE__ */ __name(({
|
|
|
12307
12298
|
return null;
|
|
12308
12299
|
}, "ShellInputPrompt");
|
|
12309
12300
|
|
|
12301
|
+
// packages/cli/src/ui/utils/tool-display-map.ts
|
|
12302
|
+
init_esbuild_shims();
|
|
12303
|
+
var TOOL_DISPLAY_BY_NAME = Object.fromEntries(
|
|
12304
|
+
Object.keys(ToolNames).map((key) => [
|
|
12305
|
+
ToolNames[key],
|
|
12306
|
+
ToolDisplayNames[key]
|
|
12307
|
+
])
|
|
12308
|
+
);
|
|
12309
|
+
|
|
12310
12310
|
// packages/cli/src/ui/components/messages/ToolMessage.tsx
|
|
12311
12311
|
var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1);
|
|
12312
12312
|
var AGENT_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
12313
12313
|
ToolNames.AGENT,
|
|
12314
12314
|
...Object.entries(ToolNamesMigration).filter(([, canonical]) => canonical === ToolNames.AGENT).map(([legacy]) => legacy)
|
|
12315
12315
|
]);
|
|
12316
|
+
var APPROVAL_CONTEXT_CALLS = 3;
|
|
12316
12317
|
var STATIC_HEIGHT = 1;
|
|
12317
12318
|
var RESERVED_LINE_COUNT = 5;
|
|
12318
12319
|
var MIN_LINES_SHOWN = 2;
|
|
@@ -12431,21 +12432,42 @@ var PlanResultRenderer = /* @__PURE__ */ __name(({ data, availableHeight, childW
|
|
|
12431
12432
|
childWidth
|
|
12432
12433
|
}
|
|
12433
12434
|
), "PlanResultRenderer");
|
|
12435
|
+
var priorApprovalCalls = /* @__PURE__ */ __name((data) => (data.toolCalls ?? []).filter((call) => call.status !== "awaiting_approval").slice(-APPROVAL_CONTEXT_CALLS), "priorApprovalCalls");
|
|
12436
|
+
var SubagentApprovalContext = /* @__PURE__ */ __name(({ data }) => {
|
|
12437
|
+
const priorCalls = priorApprovalCalls(data);
|
|
12438
|
+
if (priorCalls.length === 0) return null;
|
|
12439
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Box_default, { flexDirection: "column", children: priorCalls.map((call) => {
|
|
12440
|
+
const glyph = call.status === "failed" ? "\u2716" : call.status === "success" ? "\u2714" : "\u25CB";
|
|
12441
|
+
const displayName = localizeToolDisplayName(
|
|
12442
|
+
TOOL_DISPLAY_BY_NAME[call.name] ?? call.name
|
|
12443
|
+
);
|
|
12444
|
+
const desc = (call.description ?? "").replace(/\s*\n\s*/g, " ").trim();
|
|
12445
|
+
const label = desc ? `${displayName} ${desc}` : displayName;
|
|
12446
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Text, { color: theme.text.secondary, wrap: "truncate-end", children: ` ${glyph} ${sanitizeMultilineForDisplay(label)}` }) }, call.callId);
|
|
12447
|
+
}) });
|
|
12448
|
+
}, "SubagentApprovalContext");
|
|
12434
12449
|
var SubagentExecutionRenderer = /* @__PURE__ */ __name(({ data, availableHeight, childWidth, config, isFocused }) => {
|
|
12435
12450
|
if (data.pendingConfirmation && isFocused) {
|
|
12436
12451
|
const agentLabel = escapeAnsiCtrlCodes(data.subagentName || "agent");
|
|
12452
|
+
const HEADER_LINES = 1;
|
|
12453
|
+
const contextLines = priorApprovalCalls(data).length;
|
|
12454
|
+
const confirmationHeight = availableHeight !== void 0 ? Math.max(
|
|
12455
|
+
MINIMUM_MAX_HEIGHT,
|
|
12456
|
+
availableHeight - contextLines - HEADER_LINES
|
|
12457
|
+
) : availableHeight;
|
|
12437
12458
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Box_default, { flexDirection: "column", paddingLeft: 1, children: [
|
|
12438
12459
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Box_default, { children: [
|
|
12439
12460
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Text, { color: theme.text.secondary, children: "Approval requested by " }),
|
|
12440
12461
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Text, { bold: true, color: theme.text.accent, children: agentLabel }),
|
|
12441
12462
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Text, { color: theme.text.secondary, children: ":" })
|
|
12442
12463
|
] }),
|
|
12464
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SubagentApprovalContext, { data }),
|
|
12443
12465
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
12444
12466
|
ToolConfirmationMessage,
|
|
12445
12467
|
{
|
|
12446
12468
|
confirmationDetails: data.pendingConfirmation,
|
|
12447
12469
|
isFocused,
|
|
12448
|
-
availableTerminalHeight:
|
|
12470
|
+
availableTerminalHeight: confirmationHeight,
|
|
12449
12471
|
contentWidth: childWidth - 2,
|
|
12450
12472
|
compactMode: true,
|
|
12451
12473
|
config
|
|
@@ -12774,12 +12796,6 @@ function isAgentResult(rd) {
|
|
|
12774
12796
|
return typeof rd === "object" && rd !== null && "type" in rd && rd.type === "task_execution";
|
|
12775
12797
|
}
|
|
12776
12798
|
__name(isAgentResult, "isAgentResult");
|
|
12777
|
-
var TOOL_DISPLAY_BY_NAME = Object.fromEntries(
|
|
12778
|
-
Object.keys(ToolNames).map((key) => [
|
|
12779
|
-
ToolNames[key],
|
|
12780
|
-
ToolDisplayNames[key]
|
|
12781
|
-
])
|
|
12782
|
-
);
|
|
12783
12799
|
function activityLabel(row) {
|
|
12784
12800
|
const last = row.recentActivity;
|
|
12785
12801
|
if (!last) return "";
|
|
@@ -12906,7 +12922,7 @@ var AgentRow = /* @__PURE__ */ __name(({ row, now }) => {
|
|
|
12906
12922
|
const { glyph, color } = statusGlyph(row.status);
|
|
12907
12923
|
const safeName = escapeAnsiCtrlCodes(row.name);
|
|
12908
12924
|
const displayName = truncateMiddle(safeName, NAME_COL_WIDTH);
|
|
12909
|
-
const activity =
|
|
12925
|
+
const activity = sanitizeMultilineForDisplay(activityLabel(row));
|
|
12910
12926
|
const elapsed = elapsedLabel(row, now);
|
|
12911
12927
|
const tokens = row.tokenCount && row.tokenCount > 0 ? formatTokenCount(row.tokenCount) : "";
|
|
12912
12928
|
const trailingParts = [];
|
|
@@ -15564,6 +15580,7 @@ var ExtensionsList = /* @__PURE__ */ __name(() => {
|
|
|
15564
15580
|
break;
|
|
15565
15581
|
case "update available" /* UPDATE_AVAILABLE */:
|
|
15566
15582
|
case "updated, needs restart" /* UPDATED_NEEDS_RESTART */:
|
|
15583
|
+
case "updated with warnings" /* UPDATED_WITH_WARNINGS */:
|
|
15567
15584
|
stateColor = "yellow";
|
|
15568
15585
|
break;
|
|
15569
15586
|
case "error" /* ERROR */:
|
|
@@ -17646,6 +17663,7 @@ export {
|
|
|
17646
17663
|
renderSoftwareCursor,
|
|
17647
17664
|
TextInput,
|
|
17648
17665
|
ToolConfirmationMessage,
|
|
17666
|
+
TOOL_DISPLAY_BY_NAME,
|
|
17649
17667
|
dist_default,
|
|
17650
17668
|
AboutBox,
|
|
17651
17669
|
dist_default2,
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
INBOXES_DIR,
|
|
5
|
+
LEADER_NAME,
|
|
6
|
+
TASKS_DIR,
|
|
7
|
+
TEAMMATE_COLORS,
|
|
8
|
+
TEAMS_DIR,
|
|
9
|
+
TEAM_CONFIG_FILENAME
|
|
10
|
+
} from "./chunk-CPBF7KYF.js";
|
|
11
|
+
import {
|
|
12
|
+
atomicWriteJSON
|
|
13
|
+
} from "./chunk-WIEO4CWB.js";
|
|
14
|
+
import {
|
|
15
|
+
Storage,
|
|
16
|
+
isNodeError
|
|
17
|
+
} from "./chunk-7NFB7LBQ.js";
|
|
18
|
+
import {
|
|
19
|
+
init_esbuild_shims
|
|
20
|
+
} from "./chunk-5O2XNYP6.js";
|
|
21
|
+
import {
|
|
22
|
+
__name
|
|
23
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
24
|
+
|
|
25
|
+
// packages/core/src/agents/team/teamHelpers.ts
|
|
26
|
+
init_esbuild_shims();
|
|
27
|
+
import * as fs from "node:fs/promises";
|
|
28
|
+
import * as path from "node:path";
|
|
29
|
+
function getTeamsRootDir() {
|
|
30
|
+
return path.join(Storage.getGlobalQwenDir(), TEAMS_DIR);
|
|
31
|
+
}
|
|
32
|
+
__name(getTeamsRootDir, "getTeamsRootDir");
|
|
33
|
+
function getTeamDir(teamName) {
|
|
34
|
+
return path.join(getTeamsRootDir(), teamName);
|
|
35
|
+
}
|
|
36
|
+
__name(getTeamDir, "getTeamDir");
|
|
37
|
+
function getTeamFilePath(teamName) {
|
|
38
|
+
return path.join(getTeamDir(teamName), TEAM_CONFIG_FILENAME);
|
|
39
|
+
}
|
|
40
|
+
__name(getTeamFilePath, "getTeamFilePath");
|
|
41
|
+
function getInboxesDir(teamName) {
|
|
42
|
+
return path.join(getTeamDir(teamName), INBOXES_DIR);
|
|
43
|
+
}
|
|
44
|
+
__name(getInboxesDir, "getInboxesDir");
|
|
45
|
+
function getTasksDir(teamName) {
|
|
46
|
+
return path.join(Storage.getGlobalQwenDir(), TASKS_DIR, teamName);
|
|
47
|
+
}
|
|
48
|
+
__name(getTasksDir, "getTasksDir");
|
|
49
|
+
function sanitizeName(name) {
|
|
50
|
+
return name.toLowerCase().replace(/[^a-z0-9-]/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
|
|
51
|
+
}
|
|
52
|
+
__name(sanitizeName, "sanitizeName");
|
|
53
|
+
function formatAgentId(name, teamName) {
|
|
54
|
+
return `${sanitizeName(name)}@${sanitizeName(teamName)}`;
|
|
55
|
+
}
|
|
56
|
+
__name(formatAgentId, "formatAgentId");
|
|
57
|
+
function generateUniqueTeammateName(baseName, existingMembers) {
|
|
58
|
+
const sanitized = sanitizeName(baseName);
|
|
59
|
+
if (!sanitized) {
|
|
60
|
+
throw new Error(
|
|
61
|
+
`Teammate name "${baseName}" sanitizes to an empty string. Choose a name with at least one alphanumeric character.`
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
if (sanitized === LEADER_NAME) {
|
|
65
|
+
throw new Error(
|
|
66
|
+
`"${LEADER_NAME}" is reserved for the team leader. Choose a different teammate name.`
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
const existingNames = new Set(existingMembers.map((m) => m.name));
|
|
70
|
+
if (existingNames.has(sanitized)) {
|
|
71
|
+
const existingList = [...existingNames].join(", ") || "<none>";
|
|
72
|
+
throw new Error(
|
|
73
|
+
`A teammate named "${sanitized}" already exists in this team (existing: ${existingList}). Choose a different name.`
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
return sanitized;
|
|
77
|
+
}
|
|
78
|
+
__name(generateUniqueTeammateName, "generateUniqueTeammateName");
|
|
79
|
+
function assignTeammateColor(existingMembers) {
|
|
80
|
+
const usedColors = new Set(
|
|
81
|
+
existingMembers.map((m) => m.color).filter((c) => c !== void 0)
|
|
82
|
+
);
|
|
83
|
+
for (const color of TEAMMATE_COLORS) {
|
|
84
|
+
if (!usedColors.has(color)) {
|
|
85
|
+
return color;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return TEAMMATE_COLORS[existingMembers.length % TEAMMATE_COLORS.length];
|
|
89
|
+
}
|
|
90
|
+
__name(assignTeammateColor, "assignTeammateColor");
|
|
91
|
+
function clearTeammateColors(members) {
|
|
92
|
+
return members.map((m) => {
|
|
93
|
+
const { color: _, ...rest } = m;
|
|
94
|
+
return rest;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
__name(clearTeammateColors, "clearTeammateColors");
|
|
98
|
+
function setMemberActive(members, agentId, isActive) {
|
|
99
|
+
return members.map((m) => m.agentId === agentId ? { ...m, isActive } : m);
|
|
100
|
+
}
|
|
101
|
+
__name(setMemberActive, "setMemberActive");
|
|
102
|
+
function findMemberById(members, agentId) {
|
|
103
|
+
return members.find((m) => m.agentId === agentId);
|
|
104
|
+
}
|
|
105
|
+
__name(findMemberById, "findMemberById");
|
|
106
|
+
function findMemberByName(members, name) {
|
|
107
|
+
const sanitized = sanitizeName(name);
|
|
108
|
+
return members.find((m) => m.name === sanitized);
|
|
109
|
+
}
|
|
110
|
+
__name(findMemberByName, "findMemberByName");
|
|
111
|
+
function classifyShutdownResponse(message) {
|
|
112
|
+
const trimmed = message.trimStart();
|
|
113
|
+
if (/^shutdown_approved\b/i.test(trimmed)) return "shutdown_approved";
|
|
114
|
+
if (/^shutdown_rejected\b/i.test(trimmed)) return "shutdown_rejected";
|
|
115
|
+
return void 0;
|
|
116
|
+
}
|
|
117
|
+
__name(classifyShutdownResponse, "classifyShutdownResponse");
|
|
118
|
+
async function readTeamFile(teamName) {
|
|
119
|
+
const filePath = getTeamFilePath(teamName);
|
|
120
|
+
try {
|
|
121
|
+
const raw = await fs.readFile(filePath, "utf-8");
|
|
122
|
+
return JSON.parse(raw);
|
|
123
|
+
} catch (err) {
|
|
124
|
+
if (isNodeError(err) && err.code === "ENOENT") {
|
|
125
|
+
return void 0;
|
|
126
|
+
}
|
|
127
|
+
throw err;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
__name(readTeamFile, "readTeamFile");
|
|
131
|
+
async function writeTeamFile(teamName, teamFile) {
|
|
132
|
+
const filePath = getTeamFilePath(teamName);
|
|
133
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
134
|
+
await atomicWriteJSON(filePath, teamFile);
|
|
135
|
+
}
|
|
136
|
+
__name(writeTeamFile, "writeTeamFile");
|
|
137
|
+
async function createTeamFile(teamName, teamFile) {
|
|
138
|
+
const filePath = getTeamFilePath(teamName);
|
|
139
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
140
|
+
await fs.writeFile(filePath, JSON.stringify(teamFile, null, 2) + "\n", {
|
|
141
|
+
encoding: "utf-8",
|
|
142
|
+
flag: "wx"
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
__name(createTeamFile, "createTeamFile");
|
|
146
|
+
function isPidAlive(pid) {
|
|
147
|
+
try {
|
|
148
|
+
process.kill(pid, 0);
|
|
149
|
+
return true;
|
|
150
|
+
} catch (err) {
|
|
151
|
+
return isNodeError(err) && err.code === "EPERM";
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
__name(isPidAlive, "isPidAlive");
|
|
155
|
+
async function tryReclaimStaleTeam(teamName) {
|
|
156
|
+
let existing;
|
|
157
|
+
try {
|
|
158
|
+
existing = await readTeamFile(teamName);
|
|
159
|
+
} catch {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
if (!existing) {
|
|
163
|
+
await deleteTeamDirs(teamName);
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
if (typeof existing.leadPid !== "number" || existing.leadPid <= 0) {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
if (existing.leadPid !== process.pid && isPidAlive(existing.leadPid)) {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
await deleteTeamDirs(teamName);
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
175
|
+
__name(tryReclaimStaleTeam, "tryReclaimStaleTeam");
|
|
176
|
+
async function deleteTeamDirs(teamName) {
|
|
177
|
+
const teamDir = getTeamDir(teamName);
|
|
178
|
+
const tasksDir = getTasksDir(teamName);
|
|
179
|
+
await Promise.allSettled([
|
|
180
|
+
fs.rm(teamDir, { recursive: true, force: true }),
|
|
181
|
+
fs.rm(tasksDir, { recursive: true, force: true })
|
|
182
|
+
]);
|
|
183
|
+
}
|
|
184
|
+
__name(deleteTeamDirs, "deleteTeamDirs");
|
|
185
|
+
async function listTeamNames() {
|
|
186
|
+
const teamsRoot = getTeamsRootDir();
|
|
187
|
+
try {
|
|
188
|
+
const entries = await fs.readdir(teamsRoot, {
|
|
189
|
+
withFileTypes: true
|
|
190
|
+
});
|
|
191
|
+
return entries.filter((e) => e.isDirectory()).map((e) => e.name);
|
|
192
|
+
} catch {
|
|
193
|
+
return [];
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
__name(listTeamNames, "listTeamNames");
|
|
197
|
+
|
|
198
|
+
export {
|
|
199
|
+
getTeamsRootDir,
|
|
200
|
+
getTeamDir,
|
|
201
|
+
getTeamFilePath,
|
|
202
|
+
getInboxesDir,
|
|
203
|
+
getTasksDir,
|
|
204
|
+
sanitizeName,
|
|
205
|
+
formatAgentId,
|
|
206
|
+
generateUniqueTeammateName,
|
|
207
|
+
assignTeammateColor,
|
|
208
|
+
clearTeammateColors,
|
|
209
|
+
setMemberActive,
|
|
210
|
+
findMemberById,
|
|
211
|
+
findMemberByName,
|
|
212
|
+
classifyShutdownResponse,
|
|
213
|
+
readTeamFile,
|
|
214
|
+
writeTeamFile,
|
|
215
|
+
createTeamFile,
|
|
216
|
+
tryReclaimStaleTeam,
|
|
217
|
+
deleteTeamDirs,
|
|
218
|
+
listTeamNames
|
|
219
|
+
};
|
|
220
|
+
/**
|
|
221
|
+
* @license
|
|
222
|
+
* Copyright 2025 Qwen
|
|
223
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
224
|
+
*/
|