@qwen-code/qwen-code 0.19.9 → 0.19.10-nightly.20260716.506ce0a1a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/settings.md +14 -6
- package/bundled/qc-helper/docs/features/approval-mode.md +2 -2
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +33 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +64 -20
- package/bundled/qc-helper/docs/features/channels/wecom.md +8 -7
- package/bundled/qc-helper/docs/features/code-review.md +88 -44
- package/bundled/qc-helper/docs/features/commands.md +6 -6
- package/bundled/qc-helper/docs/features/hooks.md +29 -0
- package/bundled/qc-helper/docs/features/sandbox.md +2 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
- package/bundled/qc-helper/docs/qwen-serve.md +49 -20
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
- package/bundled/review/DESIGN.md +219 -33
- package/bundled/review/SKILL.md +429 -382
- package/chunks/{MaxSizedBox-6HYJ3ZPJ.js → MaxSizedBox-WOC3YDWA.js} +31 -32
- package/chunks/{StandaloneSessionPicker-WS4GXYOG.js → StandaloneSessionPicker-H5HZCAFD.js} +49 -48
- package/chunks/{acpAgent-5FWSOZL5.js → acpAgent-55YDJDNM.js} +922 -550
- package/chunks/{agent-HOLHB3RT.js → agent-H6VE5W3L.js} +26 -27
- package/chunks/{agent-headless-SXL6H56A.js → agent-headless-T4XJOCRU.js} +26 -27
- package/chunks/{anthropicContentGenerator-L73TO3DB.js → anthropicContentGenerator-HBRXJSP4.js} +78 -16
- package/chunks/{artifact-tool-U7IRTLIV.js → artifact-tool-MIZLXBLF.js} +2 -2
- package/chunks/{askUserQuestion-2DLUUZZG.js → askUserQuestion-XMJVPNWM.js} +2 -2
- package/chunks/{bridge-BCJQ7BBB.js → bridge-FTB6ZP3R.js} +31 -34
- package/chunks/{ca-UJ6HC4H2.js → ca-CODEN7TD.js} +9 -1
- package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
- package/chunks/channel-worker-manager-CUDPU4CN.js +418 -0
- package/chunks/channel-worker-supervisor-4XTO2ZD3.js +20 -0
- package/chunks/{chunk-LXNEJD34.js → chunk-2FO5GFKZ.js} +1 -1
- package/chunks/{chunk-VA4KQY6V.js → chunk-2JNR4VP2.js} +3 -3
- package/chunks/{chunk-L36P3NBD.js → chunk-2W3OOD4W.js} +2 -0
- package/chunks/{chunk-7R3CZA3Q.js → chunk-2Z5UX4KI.js} +1 -1
- package/chunks/{chunk-CUMMSHH6.js → chunk-3DWIFU7L.js} +1 -1
- package/chunks/chunk-3MX7D6QN.js +516 -0
- package/chunks/{chunk-SJHDYNHF.js → chunk-4BJVSIS3.js} +3 -3
- package/chunks/{chunk-TO6QE22P.js → chunk-5CNYZ7TN.js} +26 -22
- package/chunks/{chunk-N3EMS75V.js → chunk-5DEJ4T6C.js} +1333 -1232
- package/chunks/chunk-5HBA2Z7V.js +28 -0
- package/chunks/{chunk-ZJE7NSL3.js → chunk-5M6IDOMF.js} +34 -97
- package/chunks/{chunk-SCGXUJBT.js → chunk-6LI3L22E.js} +3 -3
- package/chunks/{chunk-K434OPES.js → chunk-6WPJRYLZ.js} +3 -3
- package/chunks/{chunk-YAUFFXDS.js → chunk-7GM2RWCR.js} +12 -11
- package/chunks/{chunk-OQ4DRIOA.js → chunk-7HWE2W74.js} +2 -2
- package/chunks/{chunk-J4TSQ5EQ.js → chunk-7NFB7LBQ.js} +8 -1
- package/chunks/{chunk-MC23XKFE.js → chunk-A2HWMJVO.js} +37 -3
- package/chunks/{chunk-3G7CIHVV.js → chunk-ABNYOMDG.js} +4 -4
- package/chunks/{chunk-3AHXV67U.js → chunk-AGZLXLBY.js} +1 -1
- package/chunks/{chunk-RDJSGHZE.js → chunk-ALGGS7UH.js} +1 -38
- package/chunks/{chunk-Q4YQW46J.js → chunk-AMRZVQUY.js} +43 -40
- package/chunks/{chunk-W3JHSWRP.js → chunk-AN6C2U46.js} +4 -4
- package/chunks/{chunk-GWHYEOV2.js → chunk-ARKANCNX.js} +2 -1
- package/chunks/{chunk-5SFOMFG4.js → chunk-AVEOWVOM.js} +36 -2
- package/chunks/{chunk-34MW4KTI.js → chunk-BA5JGE5F.js} +2 -2
- package/chunks/{chunk-5HOMWMCL.js → chunk-BSJAQUFD.js} +5492 -1336
- package/chunks/{chunk-L6P4KPHR.js → chunk-BWJKL5DB.js} +58 -38
- package/chunks/{chunk-PVZM22CK.js → chunk-C32JFRGV.js} +5 -5
- package/chunks/{chunk-AKIVHSJR.js → chunk-CZIHPO7L.js} +163 -782
- package/chunks/chunk-DL7RCO6V.js +493 -0
- package/chunks/{chunk-KKNMOEZH.js → chunk-E2UVIFI2.js} +185 -398
- package/chunks/{chunk-5VXNZWGF.js → chunk-ENUQSKEY.js} +1 -1
- package/chunks/{chunk-PDZ7MBDG.js → chunk-EWILX3BM.js} +27 -6
- package/chunks/{chunk-BMGVRZN4.js → chunk-EZWX232B.js} +1 -1
- package/chunks/{chunk-4GORAUCN.js → chunk-F333XEAU.js} +1 -1
- package/chunks/{chunk-YLV3XXFB.js → chunk-FBU7WRZI.js} +17 -1
- package/chunks/chunk-FEOZBUMT.js +77 -0
- package/chunks/{chunk-5U27BZ72.js → chunk-FKEGVMPX.js} +269 -83
- package/chunks/chunk-FNX3LGAK.js +34 -0
- package/chunks/{chunk-LK7KUE55.js → chunk-FSA7ERJ2.js} +1 -1
- package/chunks/{chunk-PODM4SZ4.js → chunk-G3BIBPI7.js} +5 -5
- package/chunks/{chunk-A3XKDTSH.js → chunk-GA65O2TB.js} +4 -4
- package/chunks/{chunk-3BTRNWWD.js → chunk-GOXKNSDZ.js} +1 -64
- package/chunks/{channel-worker-supervisor-WSOAAYUO.js → chunk-GXGIM7QP.js} +67 -35
- package/chunks/{chunk-6PESIEKJ.js → chunk-GXUWGPYX.js} +68 -6
- package/chunks/chunk-GYTKQYDB.js +23 -0
- package/chunks/{chunk-GZRTYZ2R.js → chunk-H3XMJV7T.js} +218 -1
- package/chunks/{chunk-WQUQVGTF.js → chunk-HGRXW4HQ.js} +467 -106
- package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
- package/chunks/{chunk-ECNYL4AA.js → chunk-HUEWOHKV.js} +1 -1
- package/chunks/chunk-IDS7MSUP.js +74 -0
- package/chunks/{chunk-KHUQZZJ6.js → chunk-IHDRJLLR.js} +382 -36
- package/chunks/{chunk-CLFKOZEK.js → chunk-J4SEAF4X.js} +114 -4
- package/chunks/{chunk-B5ORX3FG.js → chunk-JGUT3LWZ.js} +6 -1
- package/chunks/{chunk-P67PFTUT.js → chunk-KEYEYCHZ.js} +4 -4
- package/chunks/{chunk-ORBGV7NJ.js → chunk-KKRTYONM.js} +6 -4
- package/chunks/{chunk-7PU4FYLG.js → chunk-KOXFAG6P.js} +4 -18
- package/chunks/{chunk-EGYZ275M.js → chunk-KWLVWNF5.js} +55 -7
- package/chunks/{chunk-XLA62MYB.js → chunk-KXECVZPD.js} +2 -2
- package/chunks/{chunk-IAVB3HM3.js → chunk-L4Y55KIS.js} +33 -1
- package/chunks/{chunk-4QLQE5WJ.js → chunk-L5U3ELZX.js} +1 -1
- package/chunks/{chunk-4ZVWQHEQ.js → chunk-LQIDP6K5.js} +1 -1
- package/chunks/{chunk-DC5Z3DU6.js → chunk-LXLTBIDP.js} +43 -6
- package/chunks/chunk-LXXMOYPL.js +22 -0
- package/chunks/{chunk-Q6I5QHMH.js → chunk-MFNKBXYH.js} +1 -1
- package/chunks/chunk-MR3PXB6E.js +48 -0
- package/chunks/{chunk-JZETEN3Z.js → chunk-N45S36AH.js} +3 -3
- package/chunks/{chunk-GWLSNBG4.js → chunk-NA3IG6XG.js} +748 -27
- package/chunks/{chunk-D5SKC4YG.js → chunk-O3M25JXE.js} +213 -29
- package/chunks/{chunk-EAXLGSFP.js → chunk-O6XGHDS5.js} +11 -11
- package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
- package/chunks/{chunk-X4NKFGFJ.js → chunk-OJAMDVF5.js} +0 -15
- package/chunks/{chunk-BZIFY5TF.js → chunk-OKAIGAYW.js} +3 -3
- package/chunks/{chunk-CNEIYWSA.js → chunk-OVIV236K.js} +5 -5
- package/chunks/{chunk-3SJSQXNS.js → chunk-PEJWA3QQ.js} +12 -8
- package/chunks/{chunk-E2IY465S.js → chunk-PWNOAWXB.js} +59 -12
- package/chunks/{chunk-B4G2WOFA.js → chunk-Q5MKHNIR.js} +28 -5
- package/chunks/{chunk-MXL5UP4X.js → chunk-Q6TUALBE.js} +1 -1
- package/chunks/{chunk-QYMQSECS.js → chunk-QAW7PIHT.js} +2 -2
- package/chunks/{chunk-HKMAENAO.js → chunk-QDTGDM2T.js} +14 -9
- package/chunks/{chunk-LUODI7WD.js → chunk-RCEEXIOO.js} +6 -4
- package/chunks/{chunk-W2UIXQDL.js → chunk-RTV5TUYB.js} +12 -4
- package/chunks/chunk-RW7DUKFO.js +91 -0
- package/chunks/{chunk-NVYTCB5Z.js → chunk-SA6QVLWI.js} +17325 -16259
- package/chunks/chunk-SJSI7PXU.js +59 -0
- package/chunks/{chunk-HVY356M2.js → chunk-SMGBWLNU.js} +3 -3
- package/chunks/{chunk-CEA3E3JB.js → chunk-SPJQO2CE.js} +2 -2
- package/chunks/{chunk-CC2ITGCF.js → chunk-STZQCNN3.js} +49 -6
- package/chunks/{chunk-HPDUL5MF.js → chunk-T2ZDAER2.js} +1 -1
- package/chunks/{chunk-XUOOWUZS.js → chunk-T3TQ3ACP.js} +1 -1
- package/chunks/{chunk-4C5BQ2D2.js → chunk-TIKDHS6V.js} +100 -17
- package/chunks/chunk-TV6K2FB4.js +224 -0
- package/chunks/{chunk-5XUCZNSY.js → chunk-TYLOFD2U.js} +1 -1
- package/chunks/{chunk-D2GFWEXB.js → chunk-UCUUH2JV.js} +6 -6
- package/chunks/{chunk-BAPGSC7U.js → chunk-UZP7K33Y.js} +23 -9
- package/chunks/{chunk-77XJ3SWN.js → chunk-VDAR6UO2.js} +8 -6
- package/chunks/{chunk-XYQSMABS.js → chunk-VKLVGA2D.js} +4 -4
- package/chunks/{chunk-JSG7ZSBC.js → chunk-VRR65QYW.js} +251 -3
- package/chunks/{chunk-U2NNEY4R.js → chunk-VT5AWJN4.js} +1 -1
- package/chunks/{chunk-ZLXQN2QS.js → chunk-WIEO4CWB.js} +1 -1
- package/chunks/{chunk-X6TJ3YZV.js → chunk-WKEO3GLZ.js} +160 -60
- package/chunks/{chunk-J3JA76CF.js → chunk-WTNZ6DXB.js} +1 -1
- package/chunks/{chunk-VWPVHAMO.js → chunk-XIWQ5QST.js} +8 -1
- package/chunks/{chunk-TDEXZKMT.js → chunk-Y66VOBRP.js} +2 -2
- package/chunks/{chunk-3VAGG5T5.js → chunk-YYBZUIPL.js} +1015 -100
- package/chunks/{chunk-CCDMCZPP.js → chunk-YZ3SBNP7.js} +1 -1
- package/chunks/{chunk-ATAKVRIF.js → chunk-Z3XA2TNG.js} +7 -7
- package/chunks/{chunk-EMDMPBJ4.js → chunk-Z7SVC7PJ.js} +10 -3
- package/chunks/{chunk-AURZZYMD.js → chunk-ZIVSSTUG.js} +4 -4
- package/chunks/{chunk-UOZWKTQG.js → chunk-ZPAHLFZU.js} +2 -2
- package/chunks/{chunk-34Z3U5RQ.js → chunk-ZQIYGQCG.js} +765 -168
- package/chunks/{computer-use-HM37RX6A.js → computer-use-NADT7ULB.js} +26 -27
- package/chunks/{config-utils-NV2SVGPB.js → config-utils-IQQT3GCI.js} +3 -2
- package/chunks/{contextCommand-OF5SFGH2.js → contextCommand-U7NEJYJ7.js} +28 -29
- package/chunks/{create-sub-session-INX7TXJI.js → create-sub-session-EAB2U5XW.js} +2 -2
- package/chunks/{create-sub-session-KPRT7ECJ.js → create-sub-session-SUN33INC.js} +26 -27
- package/chunks/{cron-create-AMBKGZX6.js → cron-create-GMVKSXZT.js} +4 -4
- package/chunks/{cron-delete-LRU4OJYG.js → cron-delete-VDZKUAVK.js} +4 -4
- package/chunks/{cron-list-WVP2JXER.js → cron-list-UG7C7RAR.js} +4 -4
- package/chunks/{daemon-ARHTSTXP.js → daemon-SJXEKP3H.js} +773 -126
- package/chunks/daemon-status-provider-WIIYLGZJ.js +74 -0
- package/chunks/{de-EBJN3OVN.js → de-NOXPCSYN.js} +9 -1
- package/chunks/{dist-XKU3ABM5.js → dist-4WCQEZIN.js} +4 -51
- package/chunks/{dist-QYCAEZIT.js → dist-DOPL5LSQ.js} +5 -1
- package/chunks/{dist-WKPOYU7O.js → dist-GXJVCOS7.js} +1 -1
- package/chunks/{dist-R7LN5AZE.js → dist-PX2ERZ6I.js} +2 -2
- package/chunks/{dist-PNVLTKTL.js → dist-V2YVLYOW.js} +215 -33
- package/chunks/{dist-VHV4EVHG.js → dist-VYWUKURL.js} +1 -1
- package/chunks/{earlyInputCapture-3VTHRC4C.js → earlyInputCapture-6FRM6UMU.js} +27 -28
- package/chunks/{edit-VNI4NJ73.js → edit-7GOIQTCZ.js} +27 -28
- package/chunks/{en-5A6LA7RK.js → en-JFVULHTB.js} +11 -1
- package/chunks/{enter-worktree-IYYBKPZT.js → enter-worktree-476E6WIK.js} +26 -27
- package/chunks/{enterPlanMode-GMC5FD5A.js → enterPlanMode-IRJM6W3C.js} +42 -28
- package/chunks/{environment-5HSSRMJ7.js → environment-ROMULS2X.js} +30 -30
- package/chunks/{errors-HMFCJJ7P.js → errors-OUIWPUDY.js} +28 -29
- package/chunks/{exit-worktree-6BHCMP5G.js → exit-worktree-PPSFK753.js} +26 -27
- package/chunks/{exitPlanMode-CJW7G74W.js → exitPlanMode-YKQMD4D7.js} +26 -27
- package/chunks/{fast-path-FRDMDVHG.js → fast-path-CNK2HHKH.js} +3 -3
- package/chunks/{fast-path-settings-5QZE64HR.js → fast-path-settings-DAOVFADC.js} +6 -4
- package/chunks/{fr-YXRABLYZ.js → fr-HVFNU42H.js} +9 -1
- package/chunks/{gemini-QYSEGHAX.js → gemini-WQNFT6TR.js} +216 -90
- package/chunks/{geminiContentGenerator-J7YNZDYP.js → geminiContentGenerator-4QJH2JDP.js} +4 -4
- package/chunks/{glob-BRCSGFOT.js → glob-36TVLBWW.js} +28 -28
- package/chunks/{grep-EE2DUOSY.js → grep-QTYLNO2M.js} +26 -27
- package/chunks/{handleAutoUpdate-5NWTLR67.js → handleAutoUpdate-36FQFODK.js} +30 -31
- package/chunks/{i18n-BASPENNQ.js → i18n-JUGYPVSP.js} +27 -28
- package/chunks/initializer-OBBJUS25.js +72 -0
- package/chunks/{installationInfo-W6V4DT7W.js → installationInfo-MCKTPX64.js} +27 -28
- package/chunks/{ja-7VQOANVG.js → ja-PY5AF544.js} +10 -2
- package/chunks/{keychain-token-storage-VKUBNCP4.js → keychain-token-storage-AU22CQI6.js} +2 -2
- package/chunks/list-VW5QY4VJ.js +75 -0
- package/chunks/loadedSettingsAdapter-IELOOXG6.js +69 -0
- package/chunks/{loop-wakeup-WX7BLWWP.js → loop-wakeup-QXWZSCYM.js} +5 -5
- package/chunks/{ls-ZB2BDP6T.js → ls-2OUTG3IZ.js} +4 -4
- package/chunks/{lsp-V5DN4YUJ.js → lsp-4VMNXZW6.js} +2 -2
- package/chunks/mcp-Q3EC37ZS.js +69 -0
- package/chunks/{monitor-X5Z3H4FY.js → monitor-DCZ27AFR.js} +26 -27
- package/chunks/nonInteractiveCli-KXD7PFO4.js +128 -0
- package/chunks/{notebook-edit-TRM2QIJK.js → notebook-edit-YU4XF5LI.js} +27 -28
- package/chunks/{openaiContentGenerator-AAYONPMF.js → openaiContentGenerator-KL5WER2D.js} +13 -13
- package/chunks/{pidfile-D4I4FTVA.js → pidfile-WBOD7EJV.js} +27 -28
- package/chunks/processUtils-AOV4R34M.js +29 -0
- package/chunks/{pt-2C6YCSHL.js → pt-A3PRQXMU.js} +9 -1
- package/chunks/{qwenContentGenerator-K3HZ2H76.js → qwenContentGenerator-YIGBHYE3.js} +28 -29
- package/chunks/{qwenOAuth2-PJQ27GSO.js → qwenOAuth2-LEYOU7RU.js} +5 -5
- package/chunks/{read-file-7SZSIZOL.js → read-file-WVL4Y76X.js} +9 -9
- package/chunks/{read-mcp-resource-SM5DA4RG.js → read-mcp-resource-JUFHCKSC.js} +2 -2
- package/chunks/{record-artifact-4XKZX3UW.js → record-artifact-DWSMBXYY.js} +2 -2
- package/chunks/{ripGrep-YNPFVCZP.js → ripGrep-6GSWJERP.js} +26 -27
- package/chunks/{ru-6BBHVZZV.js → ru-IBCWUTOC.js} +9 -1
- package/chunks/{run-qwen-serve-DMWV5N6L.js → run-qwen-serve-QYUQMEDT.js} +1233 -371
- package/chunks/{runtime-57WWRVHN.js → runtime-K2YZCNB3.js} +42 -38
- package/chunks/{scheduler-YBLGWSIL.js → scheduler-EQCSN7QV.js} +26 -27
- package/chunks/{send-message-F36YD6KQ.js → send-message-JZ752NWD.js} +3 -3
- package/chunks/{serve-R63NK3CV.js → serve-DX5UGZD4.js} +36 -35
- package/chunks/{server-Z22GCAXP.js → server-T6HJH3DR.js} +5869 -1398
- package/chunks/{session-HKAAI7BN.js → session-SNU6ACY6.js} +299 -100
- package/chunks/{settings-3EYN66GK.js → settings-AKHZZNEL.js} +34 -33
- package/chunks/{shell-6YXINTWJ.js → shell-EY74IEZK.js} +28 -27
- package/chunks/{skill-OO57P4X6.js → skill-DPU62O3H.js} +11 -11
- package/chunks/{spawnChannel-JD7G4VU6.js → spawnChannel-RQZRWJ2V.js} +28 -30
- package/chunks/{src-G5UPLZSZ.js → src-7FITDSVC.js} +164 -52
- package/chunks/{standalone-update-OB7F4JPZ.js → standalone-update-XO3RK6DO.js} +28 -29
- package/chunks/{startInteractiveUI-73EGLIIH.js → startInteractiveUI-DVWZRHYQ.js} +728 -382
- package/chunks/{syntheticOutput-34H7LGA7.js → syntheticOutput-LELY6HAI.js} +3 -3
- package/chunks/{task-create-FRGOEIKY.js → task-create-QY3BIMNM.js} +8 -7
- package/chunks/{task-list-OW766BXZ.js → task-list-D2U47WBJ.js} +6 -5
- package/chunks/{task-stop-SIR5SNBN.js → task-stop-N6E5IYLH.js} +2 -2
- package/chunks/{task-update-YRA532MT.js → task-update-HJCQILLB.js} +8 -7
- package/chunks/{team-create-PECAAPXK.js → team-create-FOSRT62K.js} +26 -27
- package/chunks/{team-delete-6OSECUZC.js → team-delete-RCWYDRF4.js} +6 -5
- package/chunks/{team-plan-approval-L6F434RY.js → team-plan-approval-6VUDV27J.js} +26 -27
- package/chunks/{theme-manager-ZG4RY6GU.js → theme-manager-6UT6IO5T.js} +27 -28
- package/chunks/{todoWrite-YDMFEV4G.js → todoWrite-FKCGATPJ.js} +4 -4
- package/chunks/{tool-search-THVIWAPB.js → tool-search-ASSFMMN5.js} +10 -10
- package/chunks/{total-session-admission-JOKNRIIA.js → total-session-admission-YYWUO23H.js} +32 -35
- package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
- package/chunks/{trustedFolders-EOGT3UVS.js → trustedFolders-4BWV2IBK.js} +29 -29
- package/chunks/types-ML3TRJQ5.js +16 -0
- package/chunks/update-relaunch-74DLGH73.js +87 -0
- package/chunks/{updateCheck-2KYEYVSB.js → updateCheck-CRFCGFO5.js} +31 -30
- package/chunks/{validateNonInterActiveAuth-EN6ZQSR2.js → validateNonInterActiveAuth-BTTEPBGQ.js} +76 -73
- package/chunks/{version-3UEA6ZIR.js → version-Y5JE5Q63.js} +1 -1
- package/chunks/{web-fetch-PAAEQKBW.js → web-fetch-CFCWTCAP.js} +5 -6
- package/chunks/{workflow-QCCCMYP3.js → workflow-6WC7VPQN.js} +27 -28
- package/chunks/workspace-providers-status-RVG2C5ZS.js +72 -0
- package/chunks/workspace-registration-store-SLEU3D3X.js +27 -0
- package/chunks/{workspace-registry-24QFLQYH.js → workspace-registry-QMWGVOTF.js} +32 -35
- package/chunks/workspace-service-G572JSEU.js +84 -0
- package/chunks/workspace-skills-status-VSSMSMNK.js +71 -0
- package/chunks/{write-file-I3MUDRIE.js → write-file-5XVDRORP.js} +27 -28
- package/chunks/{zh-RQE7I22T.js → zh-PAUNIMHQ.js} +12 -2
- package/chunks/{zh-TW-TBPQGHKH.js → zh-TW-GNEUIUFF.js} +12 -2
- package/cli-entry.js +92 -8
- package/cli.js +11 -11
- package/locales/ca.js +16 -0
- package/locales/de.js +16 -0
- package/locales/en.js +19 -0
- package/locales/fr.js +16 -0
- package/locales/ja.js +17 -1
- package/locales/pt.js +16 -0
- package/locales/ru.js +16 -0
- package/locales/zh-TW.js +20 -1
- package/locales/zh.js +20 -1
- package/package.json +3 -3
- package/web-shell/assets/{arc-C15hqnJe.js → arc-vx1tRwnX.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-B-At37J_.js → architectureDiagram-3BPJPVTR-DBi6iUA1.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-B51wjcU7.js → blockDiagram-GPEHLZMM-Ga9JJ4Ak.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-xBK7BAwN.js → c4Diagram-AAUBKEIU-D8Vi5FYw.js} +1 -1
- package/web-shell/assets/channel-B29zQDTL.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-xKmLg7Yr.js → chunk-2J33WTMH-CSV6yQpU.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BfkdKZCM.js → chunk-4BX2VUAB-toYlppdI.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DT713sZf.js → chunk-55IACEB6-DbjzuyAr.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-CYEeAamv.js → chunk-727SXJPM-IkkSjSkk.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-DBN-5CFd.js → chunk-AQP2D5EJ-D5wUL6Zm.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CGZKk4PH.js → chunk-FMBD7UC4-C3o2DXG0.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-qQbC2O-y.js → chunk-ND2GUHAM-CutIi14T.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-B3zeXwsX.js → chunk-QZHKN3VN-DZ0NRHH-.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BNGI2SvC.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BNGI2SvC.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BKsl1Wvy.js → cose-bilkent-S5V4N54A-B3Dl88UJ.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-CuuuLiBK.js → dagre-BM42HDAG-DfTxfF6-.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-CG4_eKiV.js → diagram-2AECGRRQ-CJyH98yO.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-DSFTmZB1.js → diagram-5GNKFQAL-EbOiJNmW.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BxwlEHn8.js → diagram-KO2AKTUF-AYNqpqqA.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BUAg-jMG.js → diagram-LMA3HP47-BY5VPa4H.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-BFM2jlO5.js → diagram-OG6HWLK6-BhMYAKlk.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CerbFPa2.js → erDiagram-TEJ5UH35-Bp8S_F9l.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BNeZz5Zz.js → flowDiagram-I6XJVG4X-az3TE9PU.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-CTOogLaM.js → ganttDiagram-6RSMTGT7-CfkAEpCe.js} +3 -3
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-yxSFkXPj.js → gitGraphDiagram-PVQCEYII-D1QmjMCy.js} +1 -1
- package/web-shell/assets/index-C8sDwQUv.js +1130 -0
- package/web-shell/assets/index-CaBoc5bb.js +3 -0
- package/web-shell/assets/index-Dpg5Wymg.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DYdAUevm.js → infoDiagram-5YYISTIA-D3ompLrG.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CNuijZ90.js → ishikawaDiagram-YF4QCWOH-D3MRWp9I.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-BTyiuonf.js → journeyDiagram-JHISSGLW-DVkKCa44.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-DPJo0Uow.js → kanban-definition-UN3LZRKU-BLif81wF.js} +1 -1
- package/web-shell/assets/{linear-C8wKCbIC.js → linear-BDU96EGS.js} +1 -1
- package/web-shell/assets/{mermaid.core-BV5o7nW5.js → mermaid.core-B-CwC26B.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BtLcBmSt.js → mindmap-definition-RKZ34NQL-CS1WOJ4G.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-C22J7A9Q.js → pieDiagram-4H26LBE5-BzgtNXVP.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DSL10wiL.js → quadrantDiagram-W4KKPZXB-BRfGC8MA.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-feqh0UpX.js → requirementDiagram-4Y6WPE33-CPBZkC7g.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-Z4OVaWaZ.js → sankeyDiagram-5OEKKPKP-nqNvinIk.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DIluIcb1.js → sequenceDiagram-3UESZ5HK-CM_Wdjh3.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-hlhnuoYH.js → stateDiagram-AJRCARHV-L0y-48VE.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BX1DdF8s.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-Dqf_CqgL.js → timeline-definition-PNZ67QCA-B_n5rb3A.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DD2QhaTX.js → vennDiagram-CIIHVFJN-C9NmLV5e.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-B2uI85U_.js → wardley-L42UT6IY-CrefK9gt.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-U1aJX71g.js → wardleyDiagram-YWT4CUSO-BUccf-bC.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-C0ODHUee.js → xychartDiagram-2RQKCTM6-DM6ef92l.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-524RQP4Q.js +0 -305
- package/chunks/chunk-CARU2RR2.js +0 -24
- package/chunks/chunk-CU3L64TP.js +0 -93
- package/chunks/chunk-OCPBI7J5.js +0 -18
- package/chunks/chunk-TEGEBB2I.js +0 -122
- package/chunks/chunk-VTU57BWZ.js +0 -30
- package/chunks/daemon-status-provider-B2UTZUJ2.js +0 -76
- package/chunks/initializer-UTQ7FB7G.js +0 -71
- package/chunks/list-DEICDL65.js +0 -74
- package/chunks/loadedSettingsAdapter-NOWEGDYJ.js +0 -68
- package/chunks/mcp-L5JXEEIA.js +0 -68
- package/chunks/nonInteractiveCli-LS2K4X6A.js +0 -124
- package/chunks/types-JNKGKUJT.js +0 -12
- package/chunks/workspace-providers-status-4KMGETOJ.js +0 -71
- package/chunks/workspace-service-RVLBMSMZ.js +0 -80
- package/chunks/workspace-skills-status-DS4ZVFTO.js +0 -70
- package/web-shell/assets/channel-CLiQD50f.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-D3sYqow5.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-D3sYqow5.js +0 -1
- package/web-shell/assets/index-D5IWFVk1.css +0 -5
- package/web-shell/assets/index-KFJRDhX7.js +0 -783
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BhQMwgpl.js +0 -1
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
contextCommand
|
|
5
|
+
} from "./chunk-UCUUH2JV.js";
|
|
3
6
|
import {
|
|
4
7
|
ExtensionRefreshState,
|
|
8
|
+
clearSkillArgs,
|
|
5
9
|
isValidSessionId,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
contextCommand
|
|
13
|
-
} from "./chunk-D2GFWEXB.js";
|
|
10
|
+
skillArgsNote,
|
|
11
|
+
skillArgsPath,
|
|
12
|
+
staleArgsWarning,
|
|
13
|
+
validateAuthMethod,
|
|
14
|
+
writeSkillArgs
|
|
15
|
+
} from "./chunk-BSJAQUFD.js";
|
|
14
16
|
import {
|
|
15
17
|
VSCODE_SHIFT_ENTER_SEQUENCE,
|
|
16
18
|
calculateCost,
|
|
@@ -22,28 +24,28 @@ import {
|
|
|
22
24
|
levelLabel,
|
|
23
25
|
useKeypress,
|
|
24
26
|
writeOsc52
|
|
25
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-NA3IG6XG.js";
|
|
28
|
+
import {
|
|
29
|
+
Text
|
|
30
|
+
} from "./chunk-OVIV236K.js";
|
|
31
|
+
import {
|
|
32
|
+
isKittyProtocolEnabled
|
|
33
|
+
} from "./chunk-5DTTYNB7.js";
|
|
26
34
|
import {
|
|
27
35
|
isTerminalGoalStatusKind
|
|
28
36
|
} from "./chunk-7X7TEQNX.js";
|
|
29
|
-
import {
|
|
30
|
-
Text
|
|
31
|
-
} from "./chunk-CNEIYWSA.js";
|
|
32
37
|
import {
|
|
33
38
|
require_react
|
|
34
39
|
} from "./chunk-HTHUX2T5.js";
|
|
35
|
-
import {
|
|
36
|
-
themeManager
|
|
37
|
-
} from "./chunk-MXL5UP4X.js";
|
|
38
|
-
import {
|
|
39
|
-
getErrorMessage as getErrorMessage2
|
|
40
|
-
} from "./chunk-VA4KQY6V.js";
|
|
41
40
|
import {
|
|
42
41
|
getInstallationInfo
|
|
43
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-7HWE2W74.js";
|
|
44
43
|
import {
|
|
45
44
|
rollbackStandaloneUpdate
|
|
46
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-Z7SVC7PJ.js";
|
|
46
|
+
import {
|
|
47
|
+
themeManager
|
|
48
|
+
} from "./chunk-Q6TUALBE.js";
|
|
47
49
|
import {
|
|
48
50
|
GITHUB_WORKFLOW_PATHS,
|
|
49
51
|
INSIGHT_CSS,
|
|
@@ -56,24 +58,19 @@ import {
|
|
|
56
58
|
toJson,
|
|
57
59
|
toJsonl,
|
|
58
60
|
toMarkdown
|
|
59
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-5DEJ4T6C.js";
|
|
60
62
|
import {
|
|
61
63
|
stripUnsafeCharacters,
|
|
62
64
|
toCodePoints
|
|
63
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-MFNKBXYH.js";
|
|
64
66
|
import {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
isSelectableVoiceModel,
|
|
68
|
-
isVoiceEnabled,
|
|
69
|
-
readVoiceMode,
|
|
70
|
-
readVoiceModel
|
|
71
|
-
} from "./chunk-HPDUL5MF.js";
|
|
67
|
+
getErrorMessage as getErrorMessage2
|
|
68
|
+
} from "./chunk-2JNR4VP2.js";
|
|
72
69
|
import {
|
|
73
70
|
getExtendedSystemInfo,
|
|
74
71
|
getGitVersion,
|
|
75
72
|
getNpmVersion
|
|
76
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-AN6C2U46.js";
|
|
77
74
|
import {
|
|
78
75
|
formatDuration,
|
|
79
76
|
formatMemoryUsage,
|
|
@@ -82,7 +79,15 @@ import {
|
|
|
82
79
|
import {
|
|
83
80
|
isInlineModelOverrideAllowed,
|
|
84
81
|
parseAcpModelOption
|
|
85
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-BA5JGE5F.js";
|
|
83
|
+
import {
|
|
84
|
+
formatUnsupportedVoiceModelMessage,
|
|
85
|
+
getVoiceSettingsScope,
|
|
86
|
+
isSelectableVoiceModel,
|
|
87
|
+
isVoiceEnabled,
|
|
88
|
+
readVoiceMode,
|
|
89
|
+
readVoiceModel
|
|
90
|
+
} from "./chunk-T2ZDAER2.js";
|
|
86
91
|
import {
|
|
87
92
|
OUTPUT_LANGUAGE_AUTO,
|
|
88
93
|
getAllSettingKeys,
|
|
@@ -94,7 +99,7 @@ import {
|
|
|
94
99
|
resolveOutputLanguage,
|
|
95
100
|
validateSettingValue,
|
|
96
101
|
writeOutputLanguageAndRegisterPath
|
|
97
|
-
} from "./chunk-
|
|
102
|
+
} from "./chunk-TIKDHS6V.js";
|
|
98
103
|
import {
|
|
99
104
|
SUPPORTED_LANGUAGES,
|
|
100
105
|
getCurrentLanguage,
|
|
@@ -102,14 +107,14 @@ import {
|
|
|
102
107
|
resolveSupportedLanguage,
|
|
103
108
|
setLanguageAsync,
|
|
104
109
|
t
|
|
105
|
-
} from "./chunk-
|
|
110
|
+
} from "./chunk-7GM2RWCR.js";
|
|
106
111
|
import {
|
|
107
112
|
isFolderTrustEnabled,
|
|
108
113
|
loadTrustedFolders
|
|
109
|
-
} from "./chunk-
|
|
114
|
+
} from "./chunk-QDTGDM2T.js";
|
|
110
115
|
import {
|
|
111
116
|
require_strip_json_comments
|
|
112
|
-
} from "./chunk-
|
|
117
|
+
} from "./chunk-ALGGS7UH.js";
|
|
113
118
|
import {
|
|
114
119
|
ArenaManager,
|
|
115
120
|
BTW_MAX_INPUT_LENGTH,
|
|
@@ -127,6 +132,7 @@ import {
|
|
|
127
132
|
buildBareRememberPrompt,
|
|
128
133
|
buildBtwCacheSafeParams,
|
|
129
134
|
buildBtwPrompt,
|
|
135
|
+
buildLearnSkillPrompt,
|
|
130
136
|
buildManagedRememberPrompt,
|
|
131
137
|
canUseRipgrep,
|
|
132
138
|
checkArgumentSafety,
|
|
@@ -153,7 +159,7 @@ import {
|
|
|
153
159
|
glob,
|
|
154
160
|
hookEventSupportsMatcher,
|
|
155
161
|
ideContextStore,
|
|
156
|
-
|
|
162
|
+
isExtensionCommittedWithWarningsError,
|
|
157
163
|
isSuccessStatus,
|
|
158
164
|
isTerminalStatus,
|
|
159
165
|
listSavedWorkflows,
|
|
@@ -178,44 +184,46 @@ import {
|
|
|
178
184
|
stripStartupContext,
|
|
179
185
|
tryGenerateSessionTitle,
|
|
180
186
|
unregisterGoalHook
|
|
181
|
-
} from "./chunk-
|
|
187
|
+
} from "./chunk-SA6QVLWI.js";
|
|
182
188
|
import {
|
|
183
189
|
external_exports
|
|
184
190
|
} from "./chunk-H6XPXXMH.js";
|
|
185
|
-
import {
|
|
186
|
-
runSideQuery
|
|
187
|
-
} from "./chunk-W2UIXQDL.js";
|
|
188
191
|
import {
|
|
189
192
|
APPROVAL_MODES,
|
|
190
193
|
FORK_SUBAGENT_TYPE
|
|
191
|
-
} from "./chunk-
|
|
194
|
+
} from "./chunk-F333XEAU.js";
|
|
192
195
|
import {
|
|
193
196
|
applySkillAllowedTools,
|
|
194
197
|
buildSkillLlmContent
|
|
195
|
-
} from "./chunk-
|
|
198
|
+
} from "./chunk-2Z5UX4KI.js";
|
|
196
199
|
import {
|
|
197
200
|
HookEventName,
|
|
198
201
|
sanitizeUserPromptExpansionAdditionalContext
|
|
199
|
-
} from "./chunk-
|
|
202
|
+
} from "./chunk-ARKANCNX.js";
|
|
200
203
|
import {
|
|
201
204
|
IdeConnectionEvent,
|
|
202
205
|
formatTokenUsageSummaryAsCsv,
|
|
203
206
|
formatTokenUsageSummaryAsJson,
|
|
204
207
|
getCurrentGeminiMdFilename,
|
|
205
208
|
getMCPServerStatus,
|
|
209
|
+
isImageCapable,
|
|
206
210
|
logIdeConnection,
|
|
207
211
|
queryTokenUsage,
|
|
208
212
|
read,
|
|
209
213
|
recordSkillInvocation,
|
|
210
214
|
resolveOpenAILogDir,
|
|
211
215
|
uiTelemetryService
|
|
212
|
-
} from "./chunk-
|
|
216
|
+
} from "./chunk-YYBZUIPL.js";
|
|
217
|
+
import {
|
|
218
|
+
runSideQuery
|
|
219
|
+
} from "./chunk-RTV5TUYB.js";
|
|
213
220
|
import {
|
|
214
221
|
getAutoMemoryRoot
|
|
215
|
-
} from "./chunk-
|
|
222
|
+
} from "./chunk-FBU7WRZI.js";
|
|
216
223
|
import {
|
|
217
|
-
ToolNames
|
|
218
|
-
|
|
224
|
+
ToolNames,
|
|
225
|
+
isShellProgressData
|
|
226
|
+
} from "./chunk-JGUT3LWZ.js";
|
|
219
227
|
import {
|
|
220
228
|
openBrowserSecurely
|
|
221
229
|
} from "./chunk-JESCGQM3.js";
|
|
@@ -231,12 +239,12 @@ import {
|
|
|
231
239
|
isSubpath,
|
|
232
240
|
resolvePath,
|
|
233
241
|
updateSymlink
|
|
234
|
-
} from "./chunk-
|
|
242
|
+
} from "./chunk-7NFB7LBQ.js";
|
|
235
243
|
import {
|
|
236
244
|
isCpuProfileRecording,
|
|
237
245
|
startCpuProfile,
|
|
238
246
|
stopCpuProfile
|
|
239
|
-
} from "./chunk-
|
|
247
|
+
} from "./chunk-YZ3SBNP7.js";
|
|
240
248
|
import {
|
|
241
249
|
init_esbuild_shims
|
|
242
250
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -1823,7 +1831,12 @@ init_esbuild_shims();
|
|
|
1823
1831
|
// packages/cli/src/ui/hooks/useAutoAcceptIndicator.ts
|
|
1824
1832
|
init_esbuild_shims();
|
|
1825
1833
|
var import_react = __toESM(require_react(), 1);
|
|
1826
|
-
var
|
|
1834
|
+
var AUTO_MODE_FIRST_TIME_MESSAGE_KEY = "auto_mode.entry_notice";
|
|
1835
|
+
var AUTO_MODE_FIRST_TIME_MESSAGE_FALLBACK = "Auto mode enabled.\n An LLM classifier evaluates each tool call \u2014 safe actions auto-approve,\n risky ones are blocked. Exit: Shift+Tab or /approval-mode default.";
|
|
1836
|
+
var getAutoModeFirstTimeMessage = /* @__PURE__ */ __name(() => {
|
|
1837
|
+
const message = t(AUTO_MODE_FIRST_TIME_MESSAGE_KEY);
|
|
1838
|
+
return message === AUTO_MODE_FIRST_TIME_MESSAGE_KEY ? AUTO_MODE_FIRST_TIME_MESSAGE_FALLBACK : message;
|
|
1839
|
+
}, "getAutoModeFirstTimeMessage");
|
|
1827
1840
|
function useAutoAcceptIndicator({
|
|
1828
1841
|
config,
|
|
1829
1842
|
settings,
|
|
@@ -1884,7 +1897,7 @@ function emitAutoModeEntryNotices(opts) {
|
|
|
1884
1897
|
const acknowledged = settings?.merged.ui?.autoModeAcknowledged === true;
|
|
1885
1898
|
if (!acknowledged) {
|
|
1886
1899
|
addItem(
|
|
1887
|
-
{ type: "info" /* INFO */, text:
|
|
1900
|
+
{ type: "info" /* INFO */, text: getAutoModeFirstTimeMessage() },
|
|
1888
1901
|
now
|
|
1889
1902
|
);
|
|
1890
1903
|
if (settings) {
|
|
@@ -1913,10 +1926,16 @@ __name(emitAutoModeEntryNotices, "emitAutoModeEntryNotices");
|
|
|
1913
1926
|
init_esbuild_shims();
|
|
1914
1927
|
function formatApprovalModeName(mode) {
|
|
1915
1928
|
switch (mode) {
|
|
1929
|
+
case "plan" /* PLAN */:
|
|
1930
|
+
return t("plan mode");
|
|
1916
1931
|
case "default" /* DEFAULT */:
|
|
1917
1932
|
return t("Ask permissions");
|
|
1933
|
+
case "auto-edit" /* AUTO_EDIT */:
|
|
1934
|
+
return t("auto-accept edits");
|
|
1935
|
+
case "auto" /* AUTO */:
|
|
1936
|
+
return t("Auto mode");
|
|
1918
1937
|
case "yolo" /* YOLO */:
|
|
1919
|
-
return "YOLO";
|
|
1938
|
+
return t("YOLO mode");
|
|
1920
1939
|
default:
|
|
1921
1940
|
return mode;
|
|
1922
1941
|
}
|
|
@@ -3359,6 +3378,13 @@ var compressFastCommand = {
|
|
|
3359
3378
|
);
|
|
3360
3379
|
return;
|
|
3361
3380
|
}
|
|
3381
|
+
if (context.invocation?.args?.trim()) {
|
|
3382
|
+
return {
|
|
3383
|
+
type: "message",
|
|
3384
|
+
messageType: "info",
|
|
3385
|
+
content: t("The /compress-fast command does not accept arguments.")
|
|
3386
|
+
};
|
|
3387
|
+
}
|
|
3362
3388
|
const pendingMessage = {
|
|
3363
3389
|
type: "compression" /* COMPRESSION */,
|
|
3364
3390
|
compression: {
|
|
@@ -5970,6 +5996,20 @@ async function installAction(context, args) {
|
|
|
5970
5996
|
);
|
|
5971
5997
|
context.ui.reloadCommands();
|
|
5972
5998
|
} catch (error) {
|
|
5999
|
+
if (isExtensionCommittedWithWarningsError(error)) {
|
|
6000
|
+
context.ui.addItem(
|
|
6001
|
+
{
|
|
6002
|
+
type: "warning" /* WARNING */,
|
|
6003
|
+
text: t(
|
|
6004
|
+
"Extension was installed but could not be reloaded: {{error}}",
|
|
6005
|
+
{ error: redactUrlCredentials(getErrorMessage2(error)) }
|
|
6006
|
+
)
|
|
6007
|
+
},
|
|
6008
|
+
Date.now()
|
|
6009
|
+
);
|
|
6010
|
+
context.ui.reloadCommands();
|
|
6011
|
+
return;
|
|
6012
|
+
}
|
|
5973
6013
|
context.ui.addItem(
|
|
5974
6014
|
{
|
|
5975
6015
|
type: "error" /* ERROR */,
|
|
@@ -6443,6 +6483,16 @@ function getHookExitCodes(eventName) {
|
|
|
6443
6483
|
{ code: 2, description: t("show stderr to model immediately") },
|
|
6444
6484
|
{ code: "Other", description: t("show stderr to user only") }
|
|
6445
6485
|
],
|
|
6486
|
+
["MessageDisplay" /* MessageDisplay */]: [
|
|
6487
|
+
{
|
|
6488
|
+
code: 0,
|
|
6489
|
+
description: t("fire-and-forget; exit status is ignored")
|
|
6490
|
+
},
|
|
6491
|
+
{
|
|
6492
|
+
code: "Other",
|
|
6493
|
+
description: t("fire-and-forget; exit status is ignored")
|
|
6494
|
+
}
|
|
6495
|
+
],
|
|
6446
6496
|
["Notification" /* Notification */]: [
|
|
6447
6497
|
{ code: 0, description: t("stdout/stderr not shown") },
|
|
6448
6498
|
{ code: "Other", description: t("show stderr to user only") }
|
|
@@ -6563,6 +6613,9 @@ function getHookShortDescription(eventName) {
|
|
|
6563
6613
|
"When a slash command expands into a prompt"
|
|
6564
6614
|
),
|
|
6565
6615
|
["SessionStart" /* SessionStart */]: t("When a new session is started"),
|
|
6616
|
+
["MessageDisplay" /* MessageDisplay */]: t(
|
|
6617
|
+
"Repeatedly, as the assistant reply streams"
|
|
6618
|
+
),
|
|
6566
6619
|
["Stop" /* Stop */]: t("Right before Qwen Code concludes its response"),
|
|
6567
6620
|
["SubagentStart" /* SubagentStart */]: t(
|
|
6568
6621
|
"When a subagent (Agent tool call) is started"
|
|
@@ -6618,6 +6671,9 @@ function getHookDescription(eventName) {
|
|
|
6618
6671
|
["SessionStart" /* SessionStart */]: t(
|
|
6619
6672
|
"Input to command is JSON with session start source."
|
|
6620
6673
|
),
|
|
6674
|
+
["MessageDisplay" /* MessageDisplay */]: t(
|
|
6675
|
+
"Input to command is JSON with message_id, displayed_text (cumulative text streamed so far), and is_final. Fire-and-forget: output and exit status are ignored."
|
|
6676
|
+
),
|
|
6621
6677
|
["SessionEnd" /* SessionEnd */]: t(
|
|
6622
6678
|
"Input to command is JSON with session end reason."
|
|
6623
6679
|
),
|
|
@@ -7896,7 +7952,23 @@ function formatUiLanguageDisplay(lang) {
|
|
|
7896
7952
|
return option.nativeName && option.nativeName !== option.fullName ? `${option.nativeName} (${option.fullName}) [${option.id}]` : `${option.fullName} [${option.id}]`;
|
|
7897
7953
|
}
|
|
7898
7954
|
__name(formatUiLanguageDisplay, "formatUiLanguageDisplay");
|
|
7899
|
-
|
|
7955
|
+
function parseUiScopeFlags(input) {
|
|
7956
|
+
let remaining = input;
|
|
7957
|
+
const hasProject = /(?:^|\s)--project(?:\s|$)/.test(remaining);
|
|
7958
|
+
const hasGlobal = /(?:^|\s)--global(?:\s|$)/.test(remaining);
|
|
7959
|
+
let scope;
|
|
7960
|
+
if (hasProject) {
|
|
7961
|
+
scope = "Workspace" /* Workspace */;
|
|
7962
|
+
remaining = remaining.replace(/(?:^|\s)--project(?:\s|$)/, " ").trim();
|
|
7963
|
+
}
|
|
7964
|
+
if (hasGlobal) {
|
|
7965
|
+
scope = "User" /* User */;
|
|
7966
|
+
remaining = remaining.replace(/(?:^|\s)--global(?:\s|$)/, " ").trim();
|
|
7967
|
+
}
|
|
7968
|
+
return { scope, remaining, hasProject, hasGlobal };
|
|
7969
|
+
}
|
|
7970
|
+
__name(parseUiScopeFlags, "parseUiScopeFlags");
|
|
7971
|
+
async function setUiLanguage(context, lang, scope = "User" /* User */) {
|
|
7900
7972
|
const { services } = context;
|
|
7901
7973
|
if (!services.config) {
|
|
7902
7974
|
return {
|
|
@@ -7908,7 +7980,7 @@ async function setUiLanguage(context, lang) {
|
|
|
7908
7980
|
await setLanguageAsync(lang);
|
|
7909
7981
|
if (services.settings?.setValue) {
|
|
7910
7982
|
try {
|
|
7911
|
-
services.settings.setValue(
|
|
7983
|
+
services.settings.setValue(scope, "general.language", lang);
|
|
7912
7984
|
} catch (error) {
|
|
7913
7985
|
debugLogger9.warn("Failed to save language setting:", error);
|
|
7914
7986
|
}
|
|
@@ -8046,7 +8118,28 @@ var languageCommand = {
|
|
|
8046
8118
|
kind: "built-in" /* BUILT_IN */,
|
|
8047
8119
|
supportedModes: ["interactive", "non_interactive", "acp"],
|
|
8048
8120
|
action: /* @__PURE__ */ __name(async (context, args) => {
|
|
8049
|
-
const
|
|
8121
|
+
const { scope, remaining, hasProject, hasGlobal } = parseUiScopeFlags(
|
|
8122
|
+
args.trim()
|
|
8123
|
+
);
|
|
8124
|
+
if (hasProject && hasGlobal) {
|
|
8125
|
+
return {
|
|
8126
|
+
type: "message",
|
|
8127
|
+
messageType: "error",
|
|
8128
|
+
content: t(
|
|
8129
|
+
"Cannot use both --project and --global. Choose one scope flag."
|
|
8130
|
+
)
|
|
8131
|
+
};
|
|
8132
|
+
}
|
|
8133
|
+
if (scope === "Workspace" /* Workspace */ && context.services.settings && !context.services.settings.isTrusted) {
|
|
8134
|
+
return {
|
|
8135
|
+
type: "message",
|
|
8136
|
+
messageType: "error",
|
|
8137
|
+
content: t(
|
|
8138
|
+
"Workspace is untrusted; run /trust first or use --global."
|
|
8139
|
+
)
|
|
8140
|
+
};
|
|
8141
|
+
}
|
|
8142
|
+
const trimmedArgs = remaining;
|
|
8050
8143
|
if (!trimmedArgs) {
|
|
8051
8144
|
return {
|
|
8052
8145
|
type: "message",
|
|
@@ -8079,7 +8172,7 @@ var languageCommand = {
|
|
|
8079
8172
|
})
|
|
8080
8173
|
};
|
|
8081
8174
|
}
|
|
8082
|
-
return setUiLanguage(context, targetLang);
|
|
8175
|
+
return setUiLanguage(context, targetLang, scope);
|
|
8083
8176
|
}, "action"),
|
|
8084
8177
|
// Nested subcommands for each supported language (e.g., /language ui zh-CN)
|
|
8085
8178
|
subCommands: SUPPORTED_LANGUAGES.map(
|
|
@@ -9446,7 +9539,10 @@ var renameCommand = {
|
|
|
9446
9539
|
}
|
|
9447
9540
|
const chatRecordingService = config.getChatRecordingService();
|
|
9448
9541
|
if (chatRecordingService) {
|
|
9449
|
-
const ok = chatRecordingService.recordCustomTitle(
|
|
9542
|
+
const ok = await chatRecordingService.recordCustomTitle(
|
|
9543
|
+
name,
|
|
9544
|
+
titleSource
|
|
9545
|
+
);
|
|
9450
9546
|
if (!ok) {
|
|
9451
9547
|
return {
|
|
9452
9548
|
type: "message",
|
|
@@ -12325,6 +12421,7 @@ None captured`;
|
|
|
12325
12421
|
async generateMetrics(files, onProgress) {
|
|
12326
12422
|
const heatmap = {};
|
|
12327
12423
|
const activeHours = {};
|
|
12424
|
+
let latestActiveTimestamp = null;
|
|
12328
12425
|
const sessionStartTimes = {};
|
|
12329
12426
|
const sessionEndTimes = {};
|
|
12330
12427
|
let totalMessages = 0;
|
|
@@ -12350,6 +12447,9 @@ None captured`;
|
|
|
12350
12447
|
totalMessages++;
|
|
12351
12448
|
heatmap[dateKey] = (heatmap[dateKey] || 0) + 1;
|
|
12352
12449
|
activeHours[hour] = (activeHours[hour] || 0) + 1;
|
|
12450
|
+
if (latestActiveTimestamp === null || timestamp > latestActiveTimestamp) {
|
|
12451
|
+
latestActiveTimestamp = timestamp;
|
|
12452
|
+
}
|
|
12353
12453
|
}
|
|
12354
12454
|
if (!sessionStartTimes[record.sessionId]) {
|
|
12355
12455
|
sessionStartTimes[record.sessionId] = timestamp;
|
|
@@ -12412,18 +12512,10 @@ None captured`;
|
|
|
12412
12512
|
}
|
|
12413
12513
|
}
|
|
12414
12514
|
const totalHours = Math.round(totalDurationMs / (1e3 * 60 * 60));
|
|
12415
|
-
|
|
12416
|
-
|
|
12417
|
-
|
|
12418
|
-
|
|
12419
|
-
if (date > latestTimestamp) {
|
|
12420
|
-
latestTimestamp = date;
|
|
12421
|
-
latestActiveTime = date.toLocaleTimeString([], {
|
|
12422
|
-
hour: "2-digit",
|
|
12423
|
-
minute: "2-digit"
|
|
12424
|
-
});
|
|
12425
|
-
}
|
|
12426
|
-
}
|
|
12515
|
+
const latestActiveTime = latestActiveTimestamp ? latestActiveTimestamp.toLocaleTimeString([], {
|
|
12516
|
+
hour: "2-digit",
|
|
12517
|
+
minute: "2-digit"
|
|
12518
|
+
}) : null;
|
|
12427
12519
|
const topTools = Object.entries(toolUsage).sort((a, b) => b[1] - a[1]).slice(0, 10);
|
|
12428
12520
|
return {
|
|
12429
12521
|
heatmap,
|
|
@@ -12582,6 +12674,7 @@ var TemplateRenderer = class {
|
|
|
12582
12674
|
}
|
|
12583
12675
|
// Render the complete HTML file
|
|
12584
12676
|
async renderInsightHTML(insights) {
|
|
12677
|
+
const insightJson = JSON.stringify(insights).replace(/</g, "\\u003c").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
12585
12678
|
const html = `<!doctype html>
|
|
12586
12679
|
<html lang="en">
|
|
12587
12680
|
<head>
|
|
@@ -12609,7 +12702,7 @@ var TemplateRenderer = class {
|
|
|
12609
12702
|
|
|
12610
12703
|
<!-- Application Data -->
|
|
12611
12704
|
<script>
|
|
12612
|
-
window.INSIGHT_DATA = ${
|
|
12705
|
+
window.INSIGHT_DATA = ${insightJson};
|
|
12613
12706
|
</script>
|
|
12614
12707
|
|
|
12615
12708
|
<!-- App Script -->
|
|
@@ -12887,6 +12980,45 @@ var insightCommand = {
|
|
|
12887
12980
|
}, "action")
|
|
12888
12981
|
};
|
|
12889
12982
|
|
|
12983
|
+
// packages/cli/src/ui/commands/learn-command.ts
|
|
12984
|
+
init_esbuild_shims();
|
|
12985
|
+
var learnCommand = {
|
|
12986
|
+
name: "learn",
|
|
12987
|
+
get description() {
|
|
12988
|
+
return t(
|
|
12989
|
+
"Create a reusable skill from a knowledge source (file, URL, conversation, or text)."
|
|
12990
|
+
);
|
|
12991
|
+
},
|
|
12992
|
+
kind: "built-in" /* BUILT_IN */,
|
|
12993
|
+
supportedModes: ["interactive", "acp"],
|
|
12994
|
+
argumentHint: "<path|URL|text>",
|
|
12995
|
+
action: /* @__PURE__ */ __name(async (context, args) => {
|
|
12996
|
+
const rawInput = args.trim();
|
|
12997
|
+
if (!rawInput) {
|
|
12998
|
+
return {
|
|
12999
|
+
type: "message",
|
|
13000
|
+
messageType: "error",
|
|
13001
|
+
content: t(
|
|
13002
|
+
"Usage: /learn <path|URL|text>\nExamples:\n /learn https://docs.example.com/api\n /learn ~/projects/acme-sdk\n /learn Our deploy process: ssh to prod, run migrate, restart"
|
|
13003
|
+
)
|
|
13004
|
+
};
|
|
13005
|
+
}
|
|
13006
|
+
const config = context.services.config;
|
|
13007
|
+
if (!config) {
|
|
13008
|
+
return {
|
|
13009
|
+
type: "message",
|
|
13010
|
+
messageType: "error",
|
|
13011
|
+
content: t("Config not loaded.")
|
|
13012
|
+
};
|
|
13013
|
+
}
|
|
13014
|
+
const projectRoot = config.getProjectRoot();
|
|
13015
|
+
return {
|
|
13016
|
+
type: "submit_prompt",
|
|
13017
|
+
content: await buildLearnSkillPrompt(rawInput, projectRoot)
|
|
13018
|
+
};
|
|
13019
|
+
}, "action")
|
|
13020
|
+
};
|
|
13021
|
+
|
|
12890
13022
|
// packages/cli/src/ui/commands/statuslineCommand.ts
|
|
12891
13023
|
init_esbuild_shims();
|
|
12892
13024
|
var statuslineCommand = {
|
|
@@ -13009,14 +13141,18 @@ var updateCommand = {
|
|
|
13009
13141
|
action: /* @__PURE__ */ __name(async (context) => {
|
|
13010
13142
|
const [
|
|
13011
13143
|
{ checkForUpdatesDetailed },
|
|
13012
|
-
{
|
|
13144
|
+
{
|
|
13145
|
+
CUSTOM_SANDBOX_IMAGE_ENV_VAR,
|
|
13146
|
+
HOST_UPDATE_RELAUNCH_ENV_VAR,
|
|
13147
|
+
relaunchForUpdate
|
|
13148
|
+
},
|
|
13013
13149
|
{ performStandaloneUpdate },
|
|
13014
13150
|
installationInfo
|
|
13015
13151
|
] = await Promise.all([
|
|
13016
|
-
import("./updateCheck-
|
|
13017
|
-
import("./
|
|
13018
|
-
import("./standalone-update-
|
|
13019
|
-
import("./installationInfo-
|
|
13152
|
+
import("./updateCheck-CRFCGFO5.js"),
|
|
13153
|
+
import("./processUtils-AOV4R34M.js"),
|
|
13154
|
+
import("./standalone-update-XO3RK6DO.js"),
|
|
13155
|
+
import("./installationInfo-MCKTPX64.js")
|
|
13020
13156
|
]);
|
|
13021
13157
|
const { formatUpdateInstructions, getInstallationInfo: getInstallationInfo2 } = installationInfo;
|
|
13022
13158
|
const settings = context.services.settings;
|
|
@@ -13066,10 +13202,37 @@ var updateCommand = {
|
|
|
13066
13202
|
};
|
|
13067
13203
|
}, "manualInstructions");
|
|
13068
13204
|
if (context.executionMode === "interactive" && projectRoot) {
|
|
13205
|
+
const customSandboxImage = process.env[CUSTOM_SANDBOX_IMAGE_ENV_VAR];
|
|
13206
|
+
if (customSandboxImage) {
|
|
13207
|
+
return {
|
|
13208
|
+
type: "message",
|
|
13209
|
+
messageType: "info",
|
|
13210
|
+
content: `${info.message}
|
|
13211
|
+
${t(
|
|
13212
|
+
"This session uses the custom sandbox image {{image}}. Update that image and restart Qwen Code.",
|
|
13213
|
+
{ image: customSandboxImage }
|
|
13214
|
+
)}`
|
|
13215
|
+
};
|
|
13216
|
+
}
|
|
13217
|
+
const hostUpdateRelaunch = process.env[HOST_UPDATE_RELAUNCH_ENV_VAR];
|
|
13069
13218
|
const isAutoUpdateEnabled = settings.merged.general?.enableAutoUpdate !== false;
|
|
13219
|
+
if (hostUpdateRelaunch === "true" && isAutoUpdateEnabled) {
|
|
13220
|
+
await relaunchForUpdate();
|
|
13221
|
+
return;
|
|
13222
|
+
}
|
|
13223
|
+
if (hostUpdateRelaunch !== void 0) {
|
|
13224
|
+
return {
|
|
13225
|
+
type: "message",
|
|
13226
|
+
messageType: "info",
|
|
13227
|
+
content: `${info.message}
|
|
13228
|
+
${t(
|
|
13229
|
+
"Update Qwen Code on the host, then restart the sandbox."
|
|
13230
|
+
)}`
|
|
13231
|
+
};
|
|
13232
|
+
}
|
|
13070
13233
|
const canAutoUpdate = installInfo.updateCommand || installInfo.isStandalone && installInfo.standaloneDir;
|
|
13071
13234
|
if (isAutoUpdateEnabled && canAutoUpdate) {
|
|
13072
|
-
|
|
13235
|
+
await relaunchForUpdate();
|
|
13073
13236
|
return;
|
|
13074
13237
|
}
|
|
13075
13238
|
return manualInstructions();
|
|
@@ -13174,6 +13337,7 @@ var BuiltinCommandLoader = class {
|
|
|
13174
13337
|
importConfigCommand,
|
|
13175
13338
|
initCommand,
|
|
13176
13339
|
languageCommand,
|
|
13340
|
+
learnCommand,
|
|
13177
13341
|
mcpCommand,
|
|
13178
13342
|
...this.config?.isManagedMemoryAvailable() ? [dreamCommand, forgetCommand] : [],
|
|
13179
13343
|
goalCommand,
|
|
@@ -13292,10 +13456,19 @@ ${body}`;
|
|
|
13292
13456
|
dirname2(skill.filePath),
|
|
13293
13457
|
body
|
|
13294
13458
|
);
|
|
13295
|
-
const
|
|
13296
|
-
|
|
13297
|
-
|
|
13298
|
-
|
|
13459
|
+
const rawArgs = context.invocation?.args ?? "";
|
|
13460
|
+
let content;
|
|
13461
|
+
if (rawArgs) {
|
|
13462
|
+
content = appendToLastTextPart(
|
|
13463
|
+
[{ text: skillPrompt }],
|
|
13464
|
+
context.invocation.raw + (writeSkillArgs(skill.name, rawArgs) ? skillArgsNote(skillArgsPath(skill.name), rawArgs) : "")
|
|
13465
|
+
);
|
|
13466
|
+
} else {
|
|
13467
|
+
content = [{ text: skillPrompt }];
|
|
13468
|
+
if (!clearSkillArgs(skill.name)) {
|
|
13469
|
+
content = appendToLastTextPart(content, staleArgsWarning());
|
|
13470
|
+
}
|
|
13471
|
+
}
|
|
13299
13472
|
return {
|
|
13300
13473
|
type: "submit_prompt",
|
|
13301
13474
|
content
|
|
@@ -14375,7 +14548,19 @@ var SkillCommandLoader = class {
|
|
|
14375
14548
|
dirname3(skill.filePath),
|
|
14376
14549
|
skill.body
|
|
14377
14550
|
);
|
|
14378
|
-
const
|
|
14551
|
+
const rawArgs = context.invocation?.args ?? "";
|
|
14552
|
+
let content;
|
|
14553
|
+
if (rawArgs) {
|
|
14554
|
+
content = appendToLastTextPart(
|
|
14555
|
+
[{ text: body }],
|
|
14556
|
+
context.invocation.raw + (writeSkillArgs(skill.name, rawArgs) ? skillArgsNote(skillArgsPath(skill.name), rawArgs) : "")
|
|
14557
|
+
);
|
|
14558
|
+
} else {
|
|
14559
|
+
content = [{ text: body }];
|
|
14560
|
+
if (!clearSkillArgs(skill.name)) {
|
|
14561
|
+
content = appendToLastTextPart(content, staleArgsWarning());
|
|
14562
|
+
}
|
|
14563
|
+
}
|
|
14379
14564
|
return {
|
|
14380
14565
|
type: "submit_prompt",
|
|
14381
14566
|
content
|
|
@@ -15017,7 +15202,7 @@ function isMcpToolProgressData(output) {
|
|
|
15017
15202
|
__name(isMcpToolProgressData, "isMcpToolProgressData");
|
|
15018
15203
|
function createToolProgressHandler(request, adapter) {
|
|
15019
15204
|
const handler = /* @__PURE__ */ __name((_callId, output) => {
|
|
15020
|
-
if (isMcpToolProgressData(output)) {
|
|
15205
|
+
if (isMcpToolProgressData(output) || isShellProgressData(output)) {
|
|
15021
15206
|
adapter.emitToolProgress(request, output);
|
|
15022
15207
|
}
|
|
15023
15208
|
}, "handler");
|
|
@@ -15144,7 +15329,8 @@ __name(createAgentToolProgressHandler, "createAgentToolProgressHandler");
|
|
|
15144
15329
|
function functionResponsePartsToString(parts) {
|
|
15145
15330
|
return parts.map((part) => {
|
|
15146
15331
|
if ("functionResponse" in part) {
|
|
15147
|
-
const
|
|
15332
|
+
const response = part.functionResponse?.response;
|
|
15333
|
+
const content = response?.["output"] ?? response?.["error"] ?? "";
|
|
15148
15334
|
return content;
|
|
15149
15335
|
}
|
|
15150
15336
|
return JSON.stringify(part);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
resolvePath
|
|
5
|
+
} from "./chunk-ZQIYGQCG.js";
|
|
6
|
+
import {
|
|
7
|
+
init_esbuild_shims
|
|
8
|
+
} from "./chunk-5O2XNYP6.js";
|
|
9
|
+
import {
|
|
10
|
+
__name
|
|
11
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
12
|
+
|
|
13
|
+
// packages/cli/src/commands/channel/channel-cwd.ts
|
|
14
|
+
init_esbuild_shims();
|
|
15
|
+
import * as path from "node:path";
|
|
16
|
+
function isHomeRelative(value) {
|
|
17
|
+
return value === "~" || value.startsWith("~/") || value.startsWith("~\\");
|
|
18
|
+
}
|
|
19
|
+
__name(isHomeRelative, "isHomeRelative");
|
|
20
|
+
function resolveChannelCwd(rawCwd, defaultCwd) {
|
|
21
|
+
if (!rawCwd) return resolvePath(defaultCwd);
|
|
22
|
+
if (isHomeRelative(rawCwd)) return resolvePath(rawCwd);
|
|
23
|
+
return path.resolve(defaultCwd, rawCwd);
|
|
24
|
+
}
|
|
25
|
+
__name(resolveChannelCwd, "resolveChannelCwd");
|
|
26
|
+
|
|
27
|
+
export {
|
|
28
|
+
resolveChannelCwd
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* @license
|
|
32
|
+
* Copyright 2026 Qwen Team
|
|
33
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
34
|
+
*/
|