@qwen-code/qwen-code 0.19.9 → 0.19.10-nightly.20260715.c538bd70d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/settings.md +8 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +3 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +11 -3
- package/bundled/qc-helper/docs/features/code-review.md +88 -44
- package/bundled/qc-helper/docs/features/commands.md +6 -6
- package/bundled/qc-helper/docs/features/hooks.md +29 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
- package/bundled/qc-helper/docs/qwen-serve.md +46 -20
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
- package/bundled/review/DESIGN.md +219 -33
- package/bundled/review/SKILL.md +449 -153
- package/chunks/{MaxSizedBox-6HYJ3ZPJ.js → MaxSizedBox-LOOBDOTZ.js} +31 -31
- package/chunks/{StandaloneSessionPicker-WS4GXYOG.js → StandaloneSessionPicker-76CLZSH2.js} +51 -49
- package/chunks/{acpAgent-5FWSOZL5.js → acpAgent-DFJOK7EB.js} +567 -482
- package/chunks/{agent-HOLHB3RT.js → agent-OJQWXNHP.js} +26 -26
- package/chunks/{agent-headless-SXL6H56A.js → agent-headless-ND7GOORY.js} +26 -26
- package/chunks/{anthropicContentGenerator-L73TO3DB.js → anthropicContentGenerator-56U3YCP2.js} +5 -5
- package/chunks/{artifact-tool-U7IRTLIV.js → artifact-tool-MIZLXBLF.js} +2 -2
- package/chunks/{askUserQuestion-2DLUUZZG.js → askUserQuestion-XMJVPNWM.js} +2 -2
- package/chunks/{bridge-BCJQ7BBB.js → bridge-SNJK2JLK.js} +32 -32
- package/chunks/{ca-UJ6HC4H2.js → ca-C2JTT2N5.js} +4 -1
- package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
- package/chunks/channel-worker-manager-YSFB4HUU.js +418 -0
- package/chunks/channel-worker-supervisor-QCKIOYZD.js +20 -0
- package/chunks/{chunk-CCDMCZPP.js → chunk-26UABK2C.js} +1 -1
- package/chunks/{chunk-LXNEJD34.js → chunk-2FO5GFKZ.js} +1 -1
- package/chunks/{chunk-L36P3NBD.js → chunk-2W3OOD4W.js} +2 -0
- package/chunks/{chunk-7R3CZA3Q.js → chunk-2Z5UX4KI.js} +1 -1
- package/chunks/chunk-3MX7D6QN.js +516 -0
- package/chunks/{chunk-CLFKOZEK.js → chunk-3XULHBC7.js} +1 -1
- package/chunks/chunk-4QZADKJS.js +34 -0
- package/chunks/{chunk-E2IY465S.js → chunk-4UDHAJFV.js} +10 -10
- package/chunks/{chunk-5U27BZ72.js → chunk-55SAYASQ.js} +190 -77
- package/chunks/chunk-5HBA2Z7V.js +28 -0
- package/chunks/{chunk-ZJE7NSL3.js → chunk-5M6IDOMF.js} +34 -97
- package/chunks/{chunk-HVY356M2.js → chunk-5SQ55XJZ.js} +3 -3
- package/chunks/{chunk-EAXLGSFP.js → chunk-6GRAQNTY.js} +8 -8
- package/chunks/{chunk-K434OPES.js → chunk-6WPJRYLZ.js} +3 -3
- package/chunks/{chunk-VWPVHAMO.js → chunk-7DXHIMXL.js} +5 -1
- package/chunks/{chunk-J4TSQ5EQ.js → chunk-7NFB7LBQ.js} +8 -1
- package/chunks/{chunk-5SFOMFG4.js → chunk-7R4DPSRA.js} +36 -2
- package/chunks/{chunk-W2UIXQDL.js → chunk-7STBROEV.js} +1 -1
- package/chunks/{chunk-BMGVRZN4.js → chunk-AETEZU4U.js} +1 -1
- package/chunks/{chunk-HPDUL5MF.js → chunk-AGZWN4WV.js} +1 -1
- package/chunks/{chunk-RDJSGHZE.js → chunk-ALGGS7UH.js} +1 -38
- package/chunks/{chunk-GWHYEOV2.js → chunk-ARKANCNX.js} +2 -1
- package/chunks/{chunk-34Z3U5RQ.js → chunk-AU4R7ACM.js} +518 -114
- package/chunks/{channel-worker-supervisor-WSOAAYUO.js → chunk-B7MFJBKE.js} +67 -35
- package/chunks/{chunk-524RQP4Q.js → chunk-B7NUUEXC.js} +10 -4
- package/chunks/{chunk-MC23XKFE.js → chunk-BLPMRN4B.js} +3 -3
- package/chunks/{chunk-A3XKDTSH.js → chunk-BRRKAUGR.js} +4 -4
- package/chunks/{chunk-W3JHSWRP.js → chunk-BUPLOPUA.js} +4 -4
- package/chunks/{chunk-3VAGG5T5.js → chunk-BYOOK22F.js} +121 -16
- package/chunks/{chunk-EMDMPBJ4.js → chunk-C47ENMZJ.js} +3 -3
- package/chunks/{chunk-3AHXV67U.js → chunk-C5TVXLJZ.js} +1 -1
- package/chunks/{chunk-X6TJ3YZV.js → chunk-CGT5TQIZ.js} +159 -57
- package/chunks/{chunk-4C5BQ2D2.js → chunk-CQQD7MDG.js} +82 -12
- package/chunks/{chunk-KKNMOEZH.js → chunk-E2UVIFI2.js} +185 -398
- package/chunks/{chunk-P67PFTUT.js → chunk-EPY4ZEU6.js} +4 -4
- package/chunks/{chunk-6PESIEKJ.js → chunk-EZSRHWGS.js} +68 -6
- package/chunks/{chunk-4GORAUCN.js → chunk-F333XEAU.js} +1 -1
- package/chunks/{chunk-YLV3XXFB.js → chunk-FBU7WRZI.js} +17 -1
- package/chunks/{chunk-Q6I5QHMH.js → chunk-FGTCZJOD.js} +1 -1
- package/chunks/{chunk-LK7KUE55.js → chunk-FSA7ERJ2.js} +1 -1
- package/chunks/{chunk-B4G2WOFA.js → chunk-FTU55ZZ7.js} +3 -3
- package/chunks/{chunk-EGYZ275M.js → chunk-GCD7PEDZ.js} +4 -4
- package/chunks/{chunk-SJHDYNHF.js → chunk-GDQQRV43.js} +3 -3
- package/chunks/{chunk-3BTRNWWD.js → chunk-GOXKNSDZ.js} +1 -64
- package/chunks/{chunk-GZRTYZ2R.js → chunk-GQKWT45X.js} +154 -1
- package/chunks/chunk-GYTKQYDB.js +23 -0
- package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
- package/chunks/{chunk-N3EMS75V.js → chunk-HKM2TEF7.js} +1268 -1233
- package/chunks/chunk-IDS7MSUP.js +74 -0
- package/chunks/{chunk-PVZM22CK.js → chunk-INKAZNYC.js} +5 -5
- package/chunks/{chunk-3G7CIHVV.js → chunk-IOQ75R4R.js} +4 -4
- package/chunks/{chunk-AURZZYMD.js → chunk-IQOOJSPR.js} +4 -4
- package/chunks/{chunk-AKIVHSJR.js → chunk-J4UQXGVL.js} +111 -93
- package/chunks/{chunk-VTU57BWZ.js → chunk-JEKOCLRN.js} +1 -1
- package/chunks/{chunk-B5ORX3FG.js → chunk-JGUT3LWZ.js} +6 -1
- package/chunks/{chunk-PDZ7MBDG.js → chunk-JIQHT2O6.js} +27 -6
- package/chunks/{chunk-XUOOWUZS.js → chunk-JPAH76WA.js} +1 -1
- package/chunks/{chunk-BAPGSC7U.js → chunk-K4LG6TVJ.js} +23 -9
- package/chunks/chunk-KET3M4K4.js +493 -0
- package/chunks/{chunk-ORBGV7NJ.js → chunk-KKRTYONM.js} +6 -4
- package/chunks/{chunk-SCGXUJBT.js → chunk-KPA5QGN2.js} +3 -3
- package/chunks/{chunk-IAVB3HM3.js → chunk-KSO42X3Z.js} +13 -0
- package/chunks/{chunk-4QLQE5WJ.js → chunk-L5U3ELZX.js} +1 -1
- package/chunks/{chunk-77XJ3SWN.js → chunk-LIUEXYPL.js} +5 -5
- package/chunks/{chunk-4ZVWQHEQ.js → chunk-LQIDP6K5.js} +1 -1
- package/chunks/{chunk-34MW4KTI.js → chunk-LT5CRUA5.js} +2 -2
- package/chunks/{chunk-DC5Z3DU6.js → chunk-LXLTBIDP.js} +43 -6
- package/chunks/{chunk-VA4KQY6V.js → chunk-MEK7CQJR.js} +3 -3
- package/chunks/{chunk-KHUQZZJ6.js → chunk-MO7O5722.js} +370 -36
- package/chunks/chunk-MR3PXB6E.js +48 -0
- package/chunks/{chunk-PODM4SZ4.js → chunk-MV52C5MA.js} +5 -5
- package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
- package/chunks/{chunk-X4NKFGFJ.js → chunk-OJAMDVF5.js} +0 -15
- package/chunks/{chunk-BZIFY5TF.js → chunk-OKAIGAYW.js} +3 -3
- package/chunks/{chunk-ECNYL4AA.js → chunk-OPNPGO6D.js} +1 -1
- package/chunks/{chunk-3SJSQXNS.js → chunk-PEJWA3QQ.js} +12 -8
- package/chunks/{chunk-MXL5UP4X.js → chunk-Q6TUALBE.js} +1 -1
- package/chunks/{chunk-QYMQSECS.js → chunk-QAW7PIHT.js} +2 -2
- package/chunks/{chunk-5HOMWMCL.js → chunk-QEDYXCLG.js} +4167 -1338
- package/chunks/chunk-QNNTA7IX.js +91 -0
- package/chunks/{chunk-D2GFWEXB.js → chunk-QNT5T4Q2.js} +6 -6
- package/chunks/{chunk-CUMMSHH6.js → chunk-R5XLNDE2.js} +1 -1
- package/chunks/{chunk-LUODI7WD.js → chunk-RCEEXIOO.js} +6 -4
- package/chunks/{chunk-WQUQVGTF.js → chunk-RQWDLG6Z.js} +183 -96
- package/chunks/{chunk-XYQSMABS.js → chunk-SLCVZX6F.js} +4 -4
- package/chunks/{chunk-CEA3E3JB.js → chunk-SPJQO2CE.js} +2 -2
- package/chunks/{chunk-JSG7ZSBC.js → chunk-TQBODCFD.js} +1 -1
- package/chunks/chunk-TV6K2FB4.js +224 -0
- package/chunks/{chunk-5XUCZNSY.js → chunk-TYLOFD2U.js} +1 -1
- package/chunks/{chunk-CNEIYWSA.js → chunk-UKWAQ7AV.js} +5 -5
- package/chunks/{chunk-7PU4FYLG.js → chunk-US4YQT62.js} +4 -4
- package/chunks/{chunk-Q4YQW46J.js → chunk-UYPPCIJQ.js} +36 -18
- package/chunks/{chunk-YAUFFXDS.js → chunk-UZKG7HFG.js} +12 -11
- package/chunks/{chunk-GWLSNBG4.js → chunk-VQLRHJKL.js} +30 -26
- package/chunks/{chunk-L6P4KPHR.js → chunk-VRUHAVZS.js} +59 -39
- package/chunks/{chunk-HKMAENAO.js → chunk-W2U4RJJU.js} +8 -6
- package/chunks/{chunk-ATAKVRIF.js → chunk-WDSCTLAB.js} +7 -7
- package/chunks/{chunk-ZLXQN2QS.js → chunk-WIEO4CWB.js} +1 -1
- package/chunks/{chunk-OQ4DRIOA.js → chunk-WJOC24IW.js} +2 -2
- package/chunks/{chunk-J3JA76CF.js → chunk-WTNZ6DXB.js} +1 -1
- package/chunks/{chunk-NVYTCB5Z.js → chunk-XCR44EEA.js} +14589 -13980
- package/chunks/{chunk-TDEXZKMT.js → chunk-Y66VOBRP.js} +2 -2
- package/chunks/{chunk-CC2ITGCF.js → chunk-YHN5SUIJ.js} +49 -6
- package/chunks/{chunk-D5SKC4YG.js → chunk-ZBAROUR6.js} +41 -13
- package/chunks/{chunk-U2NNEY4R.js → chunk-ZEEVKDO7.js} +1 -1
- package/chunks/{chunk-5VXNZWGF.js → chunk-ZLOHB76C.js} +1 -1
- package/chunks/{chunk-JZETEN3Z.js → chunk-ZNCLTRNU.js} +3 -3
- package/chunks/{chunk-TO6QE22P.js → chunk-ZP4ZZJJG.js} +26 -22
- package/chunks/{chunk-UOZWKTQG.js → chunk-ZPAHLFZU.js} +2 -2
- package/chunks/{chunk-XLA62MYB.js → chunk-ZTXZ7FM4.js} +2 -2
- package/chunks/{computer-use-HM37RX6A.js → computer-use-DRETHEQF.js} +26 -26
- package/chunks/{config-utils-NV2SVGPB.js → config-utils-XSHOMMK4.js} +3 -2
- package/chunks/{contextCommand-OF5SFGH2.js → contextCommand-7YJUW23J.js} +28 -28
- package/chunks/{create-sub-session-INX7TXJI.js → create-sub-session-EAB2U5XW.js} +2 -2
- package/chunks/{create-sub-session-KPRT7ECJ.js → create-sub-session-L5HOZAEL.js} +26 -26
- package/chunks/{cron-create-AMBKGZX6.js → cron-create-GMVKSXZT.js} +4 -4
- package/chunks/{cron-delete-LRU4OJYG.js → cron-delete-VDZKUAVK.js} +4 -4
- package/chunks/{cron-list-WVP2JXER.js → cron-list-UG7C7RAR.js} +4 -4
- package/chunks/{daemon-ARHTSTXP.js → daemon-MI5HF26N.js} +603 -62
- package/chunks/{daemon-status-provider-B2UTZUJ2.js → daemon-status-provider-2D47GOJT.js} +36 -36
- package/chunks/{de-EBJN3OVN.js → de-2VCDRDGU.js} +4 -1
- package/chunks/{dist-WKPOYU7O.js → dist-IEXZC5ZR.js} +1 -1
- package/chunks/{dist-XKU3ABM5.js → dist-PQK4GCKA.js} +1 -1
- package/chunks/{dist-VHV4EVHG.js → dist-U75JK3PF.js} +1 -1
- package/chunks/{dist-R7LN5AZE.js → dist-VXO7QBON.js} +2 -2
- package/chunks/{dist-PNVLTKTL.js → dist-WH4TZSH3.js} +158 -4
- package/chunks/{dist-QYCAEZIT.js → dist-X2ABIW5R.js} +5 -1
- package/chunks/{earlyInputCapture-3VTHRC4C.js → earlyInputCapture-OJQPGCSX.js} +27 -27
- package/chunks/{edit-VNI4NJ73.js → edit-LZOAFLT2.js} +27 -27
- package/chunks/{en-5A6LA7RK.js → en-NJCA3TAA.js} +5 -1
- package/chunks/{enter-worktree-IYYBKPZT.js → enter-worktree-VL2TCGI5.js} +26 -26
- package/chunks/{enterPlanMode-GMC5FD5A.js → enterPlanMode-QGHBHZWI.js} +42 -27
- package/chunks/{environment-5HSSRMJ7.js → environment-2G5IC2EU.js} +30 -29
- package/chunks/{errors-HMFCJJ7P.js → errors-7QNQDNI2.js} +28 -28
- package/chunks/{exit-worktree-6BHCMP5G.js → exit-worktree-5V3X2MRH.js} +26 -26
- package/chunks/{exitPlanMode-CJW7G74W.js → exitPlanMode-XDPNQB4H.js} +26 -26
- package/chunks/{fast-path-FRDMDVHG.js → fast-path-NNSD4BVZ.js} +3 -3
- package/chunks/{fast-path-settings-5QZE64HR.js → fast-path-settings-DAOVFADC.js} +6 -4
- package/chunks/{fr-YXRABLYZ.js → fr-5F3E7WKD.js} +4 -1
- package/chunks/{gemini-QYSEGHAX.js → gemini-RKDUWGXJ.js} +139 -76
- package/chunks/{geminiContentGenerator-J7YNZDYP.js → geminiContentGenerator-V7QGHXVF.js} +4 -4
- package/chunks/{glob-BRCSGFOT.js → glob-ZNQUUOTS.js} +28 -27
- package/chunks/{grep-EE2DUOSY.js → grep-NYIGLM7R.js} +26 -26
- package/chunks/{handleAutoUpdate-5NWTLR67.js → handleAutoUpdate-UBQ4IQXY.js} +30 -30
- package/chunks/{i18n-BASPENNQ.js → i18n-5T3S6SGP.js} +27 -27
- package/chunks/initializer-TJED246Q.js +73 -0
- package/chunks/{installationInfo-W6V4DT7W.js → installationInfo-OTEU7FKR.js} +27 -27
- package/chunks/{ja-7VQOANVG.js → ja-66J6B53L.js} +5 -2
- package/chunks/{keychain-token-storage-VKUBNCP4.js → keychain-token-storage-AU22CQI6.js} +2 -2
- package/chunks/list-6OHS7MFJ.js +76 -0
- package/chunks/loadedSettingsAdapter-5456XIYG.js +70 -0
- package/chunks/{loop-wakeup-WX7BLWWP.js → loop-wakeup-C4EXLYVA.js} +5 -5
- package/chunks/{ls-ZB2BDP6T.js → ls-2OUTG3IZ.js} +4 -4
- package/chunks/{lsp-V5DN4YUJ.js → lsp-4VMNXZW6.js} +2 -2
- package/chunks/mcp-NOWRPFKY.js +70 -0
- package/chunks/{monitor-X5Z3H4FY.js → monitor-CVDZO3IZ.js} +26 -26
- package/chunks/nonInteractiveCli-UGI7Y43E.js +129 -0
- package/chunks/{notebook-edit-TRM2QIJK.js → notebook-edit-NWIA5TEJ.js} +27 -27
- package/chunks/{openaiContentGenerator-AAYONPMF.js → openaiContentGenerator-KJONBBJO.js} +12 -12
- package/chunks/{pidfile-D4I4FTVA.js → pidfile-L3TGXMTF.js} +27 -27
- package/chunks/{pt-2C6YCSHL.js → pt-TFZO5Y6T.js} +4 -1
- package/chunks/{qwenContentGenerator-K3HZ2H76.js → qwenContentGenerator-GXUZB5SJ.js} +28 -28
- package/chunks/{qwenOAuth2-PJQ27GSO.js → qwenOAuth2-LEYOU7RU.js} +5 -5
- package/chunks/{read-file-7SZSIZOL.js → read-file-I4OUZXTA.js} +8 -8
- package/chunks/{read-mcp-resource-SM5DA4RG.js → read-mcp-resource-JUFHCKSC.js} +2 -2
- package/chunks/{record-artifact-4XKZX3UW.js → record-artifact-DWSMBXYY.js} +2 -2
- package/chunks/{ripGrep-YNPFVCZP.js → ripGrep-XLCXANIO.js} +26 -26
- package/chunks/{ru-6BBHVZZV.js → ru-4L4LFHIT.js} +4 -1
- package/chunks/{run-qwen-serve-DMWV5N6L.js → run-qwen-serve-R6SBP6YS.js} +1232 -371
- package/chunks/{runtime-57WWRVHN.js → runtime-U3S33YUQ.js} +42 -37
- package/chunks/{scheduler-YBLGWSIL.js → scheduler-65QCIELP.js} +26 -26
- package/chunks/{send-message-F36YD6KQ.js → send-message-JZ752NWD.js} +3 -3
- package/chunks/{serve-R63NK3CV.js → serve-PSPOFCOD.js} +36 -34
- package/chunks/{server-Z22GCAXP.js → server-6P5ZB56O.js} +5561 -1377
- package/chunks/{session-HKAAI7BN.js → session-ILLOYW75.js} +298 -98
- package/chunks/{settings-3EYN66GK.js → settings-RMUJGYIK.js} +34 -32
- package/chunks/{shell-6YXINTWJ.js → shell-65GTAN5Q.js} +28 -26
- package/chunks/{skill-OO57P4X6.js → skill-L76U3YCX.js} +10 -10
- package/chunks/{spawnChannel-JD7G4VU6.js → spawnChannel-LXIGZ4EM.js} +28 -28
- package/chunks/{src-G5UPLZSZ.js → src-DWZT2X3Z.js} +87 -27
- package/chunks/{standalone-update-OB7F4JPZ.js → standalone-update-F6SRKPSD.js} +28 -28
- package/chunks/{startInteractiveUI-73EGLIIH.js → startInteractiveUI-UEJQP7S3.js} +730 -397
- package/chunks/{syntheticOutput-34H7LGA7.js → syntheticOutput-LELY6HAI.js} +3 -3
- package/chunks/{task-create-FRGOEIKY.js → task-create-QY3BIMNM.js} +8 -7
- package/chunks/{task-list-OW766BXZ.js → task-list-D2U47WBJ.js} +6 -5
- package/chunks/{task-stop-SIR5SNBN.js → task-stop-N6E5IYLH.js} +2 -2
- package/chunks/{task-update-YRA532MT.js → task-update-HJCQILLB.js} +8 -7
- package/chunks/{team-create-PECAAPXK.js → team-create-4QBZVOGN.js} +26 -26
- package/chunks/{team-delete-6OSECUZC.js → team-delete-RCWYDRF4.js} +6 -5
- package/chunks/{team-plan-approval-L6F434RY.js → team-plan-approval-BK4CIOFV.js} +26 -26
- package/chunks/{theme-manager-ZG4RY6GU.js → theme-manager-5F2IGW6E.js} +27 -27
- package/chunks/{todoWrite-YDMFEV4G.js → todoWrite-FKCGATPJ.js} +4 -4
- package/chunks/{tool-search-THVIWAPB.js → tool-search-J2ESO33H.js} +9 -9
- package/chunks/{total-session-admission-JOKNRIIA.js → total-session-admission-U4LZ5QTQ.js} +33 -33
- package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
- package/chunks/{trustedFolders-EOGT3UVS.js → trustedFolders-TIDOXCJA.js} +29 -28
- package/chunks/types-ML3TRJQ5.js +16 -0
- package/chunks/{updateCheck-2KYEYVSB.js → updateCheck-VRVR26FI.js} +29 -29
- package/chunks/{validateNonInterActiveAuth-EN6ZQSR2.js → validateNonInterActiveAuth-UGKYAVLG.js} +75 -71
- package/chunks/{version-3UEA6ZIR.js → version-7HR6VZAT.js} +1 -1
- package/chunks/{web-fetch-PAAEQKBW.js → web-fetch-QGODBB6S.js} +5 -5
- package/chunks/{workflow-QCCCMYP3.js → workflow-EDQAITEW.js} +27 -27
- package/chunks/workspace-providers-status-27UGAK77.js +73 -0
- package/chunks/workspace-registration-store-5H7577YQ.js +27 -0
- package/chunks/{workspace-registry-24QFLQYH.js → workspace-registry-F3THGAXC.js} +33 -33
- package/chunks/workspace-service-4JSAQAHP.js +86 -0
- package/chunks/workspace-skills-status-5JTWZHZU.js +72 -0
- package/chunks/{write-file-I3MUDRIE.js → write-file-UY6XCZZM.js} +27 -27
- package/chunks/{zh-RQE7I22T.js → zh-FSAH32JB.js} +6 -2
- package/chunks/{zh-TW-TBPQGHKH.js → zh-TW-D2YIE2LO.js} +6 -2
- package/cli.js +11 -11
- package/locales/ca.js +6 -0
- package/locales/de.js +6 -0
- package/locales/en.js +8 -0
- package/locales/fr.js +6 -0
- package/locales/ja.js +7 -1
- package/locales/pt.js +6 -0
- package/locales/ru.js +6 -0
- package/locales/zh-TW.js +9 -1
- package/locales/zh.js +9 -1
- package/package.json +3 -3
- package/web-shell/assets/{arc-C15hqnJe.js → arc-CObt_TK9.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-B-At37J_.js → architectureDiagram-3BPJPVTR-B7aiJ6CK.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-B51wjcU7.js → blockDiagram-GPEHLZMM-BSK2CrID.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-xBK7BAwN.js → c4Diagram-AAUBKEIU-Bhx2p7T_.js} +1 -1
- package/web-shell/assets/channel-BBaLq8MV.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-xKmLg7Yr.js → chunk-2J33WTMH-c3Hzv0Ni.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BfkdKZCM.js → chunk-4BX2VUAB-DNXaK7ZF.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DT713sZf.js → chunk-55IACEB6-BXjvDj_i.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-CYEeAamv.js → chunk-727SXJPM-B6CaKFp-.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-DBN-5CFd.js → chunk-AQP2D5EJ-tij6Mz9B.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CGZKk4PH.js → chunk-FMBD7UC4-DdlsGk2h.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-qQbC2O-y.js → chunk-ND2GUHAM-CdgGZSHE.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-B3zeXwsX.js → chunk-QZHKN3VN-D8oJn1C0.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-B2ZK6sWE.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B2ZK6sWE.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BKsl1Wvy.js → cose-bilkent-S5V4N54A-BUVmNp1Y.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-CuuuLiBK.js → dagre-BM42HDAG-CO4q310O.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-CG4_eKiV.js → diagram-2AECGRRQ-C6gFvWkg.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-DSFTmZB1.js → diagram-5GNKFQAL-NG2I_c0h.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BxwlEHn8.js → diagram-KO2AKTUF-DFKMS6I9.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BUAg-jMG.js → diagram-LMA3HP47-BiElfsfP.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-BFM2jlO5.js → diagram-OG6HWLK6-zLWDYUqu.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CerbFPa2.js → erDiagram-TEJ5UH35-DoVaazhK.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BNeZz5Zz.js → flowDiagram-I6XJVG4X-0RLz-mXg.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-CTOogLaM.js → ganttDiagram-6RSMTGT7-C-eX1A39.js} +3 -3
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-yxSFkXPj.js → gitGraphDiagram-PVQCEYII-BauQu1Bu.js} +1 -1
- package/web-shell/assets/index-3uAT3ehO.css +5 -0
- package/web-shell/assets/index-CVHa2QH7.js +3 -0
- package/web-shell/assets/index-D1KigWat.js +1128 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DYdAUevm.js → infoDiagram-5YYISTIA-C800cFvZ.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CNuijZ90.js → ishikawaDiagram-YF4QCWOH-CFK1Jk6e.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-BTyiuonf.js → journeyDiagram-JHISSGLW-Cjx0WAC4.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-DPJo0Uow.js → kanban-definition-UN3LZRKU-DWMDHbiv.js} +1 -1
- package/web-shell/assets/{linear-C8wKCbIC.js → linear-vpW4FrZs.js} +1 -1
- package/web-shell/assets/{mermaid.core-BV5o7nW5.js → mermaid.core-DsHRUnDd.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BtLcBmSt.js → mindmap-definition-RKZ34NQL-D3Eb1cAK.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-C22J7A9Q.js → pieDiagram-4H26LBE5-Cr2-6sWt.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DSL10wiL.js → quadrantDiagram-W4KKPZXB-Yd7yUgVp.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-feqh0UpX.js → requirementDiagram-4Y6WPE33-BE6SprL8.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-Z4OVaWaZ.js → sankeyDiagram-5OEKKPKP-DzkuMK8d.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DIluIcb1.js → sequenceDiagram-3UESZ5HK-wD9A3Dhi.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-hlhnuoYH.js → stateDiagram-AJRCARHV-BOp5q1Nm.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BDsWUmPG.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-Dqf_CqgL.js → timeline-definition-PNZ67QCA-Btc08sUA.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DD2QhaTX.js → vennDiagram-CIIHVFJN-Bv6upsOA.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-B2uI85U_.js → wardley-L42UT6IY-D-XamnCK.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-U1aJX71g.js → wardleyDiagram-YWT4CUSO-BbP_5Wfp.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-C0ODHUee.js → xychartDiagram-2RQKCTM6-CO5Hh28b.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-CU3L64TP.js +0 -93
- package/chunks/initializer-UTQ7FB7G.js +0 -71
- package/chunks/list-DEICDL65.js +0 -74
- package/chunks/loadedSettingsAdapter-NOWEGDYJ.js +0 -68
- package/chunks/mcp-L5JXEEIA.js +0 -68
- package/chunks/nonInteractiveCli-LS2K4X6A.js +0 -124
- package/chunks/types-JNKGKUJT.js +0 -12
- package/chunks/workspace-providers-status-4KMGETOJ.js +0 -71
- package/chunks/workspace-service-RVLBMSMZ.js +0 -80
- package/chunks/workspace-skills-status-DS4ZVFTO.js +0 -70
- package/web-shell/assets/channel-CLiQD50f.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-D3sYqow5.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-D3sYqow5.js +0 -1
- package/web-shell/assets/index-D5IWFVk1.css +0 -5
- package/web-shell/assets/index-KFJRDhX7.js +0 -783
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BhQMwgpl.js +0 -1
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
t
|
|
5
|
+
} from "./chunk-UZKG7HFG.js";
|
|
6
|
+
import {
|
|
7
|
+
writeStderrLine
|
|
8
|
+
} from "./chunk-YUZI3WAC.js";
|
|
9
|
+
import {
|
|
10
|
+
createDebugLogger
|
|
11
|
+
} from "./chunk-7NFB7LBQ.js";
|
|
12
|
+
import {
|
|
13
|
+
init_esbuild_shims
|
|
14
|
+
} from "./chunk-5O2XNYP6.js";
|
|
15
|
+
import {
|
|
16
|
+
__name
|
|
17
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
18
|
+
|
|
19
|
+
// packages/cli/src/utils/chat-recording-failure.ts
|
|
20
|
+
init_esbuild_shims();
|
|
21
|
+
import { randomUUID } from "node:crypto";
|
|
22
|
+
var CHAT_RECORDING_FAILURE_MESSAGE = "Session recording stopped after a write failure. New messages for the affected session will not be saved. Check disk space and permissions, then start a new session to resume recording. See the debug log for details.";
|
|
23
|
+
var TUI_CHAT_RECORDING_FAILURE_MESSAGE = "Session recording stopped after a write failure. New messages for the affected session will not be saved. Check disk space and permissions, then run `/clear` to start a new recorded session. See the debug log for details.";
|
|
24
|
+
var CHAT_RECORDING_SETTLE_TIMEOUT_MS = 2e3;
|
|
25
|
+
var debugLogger = createDebugLogger("CHAT_RECORDING");
|
|
26
|
+
function createChatRecordingFailureSystemMessage(event) {
|
|
27
|
+
return {
|
|
28
|
+
type: "system",
|
|
29
|
+
subtype: "session_recording_degraded",
|
|
30
|
+
uuid: randomUUID(),
|
|
31
|
+
session_id: event.sessionId,
|
|
32
|
+
parent_tool_use_id: null,
|
|
33
|
+
data: {
|
|
34
|
+
session_id: event.sessionId,
|
|
35
|
+
reason: "write_failed",
|
|
36
|
+
message: CHAT_RECORDING_FAILURE_MESSAGE
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
__name(createChatRecordingFailureSystemMessage, "createChatRecordingFailureSystemMessage");
|
|
41
|
+
function reportChatRecordingFailureToAdapter(adapter, event) {
|
|
42
|
+
adapter.emitMessage(createChatRecordingFailureSystemMessage(event));
|
|
43
|
+
}
|
|
44
|
+
__name(reportChatRecordingFailureToAdapter, "reportChatRecordingFailureToAdapter");
|
|
45
|
+
function subscribeToHeadlessChatRecordingFailures(config, adapter) {
|
|
46
|
+
if (typeof config.onChatRecordingFailure !== "function") return () => {
|
|
47
|
+
};
|
|
48
|
+
return config.onChatRecordingFailure((event) => {
|
|
49
|
+
if (config.getOutputFormat() === "text" /* TEXT */) {
|
|
50
|
+
writeStderrLine(`Warning: ${t(CHAT_RECORDING_FAILURE_MESSAGE)}`);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
reportChatRecordingFailureToAdapter(adapter, event);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
__name(subscribeToHeadlessChatRecordingFailures, "subscribeToHeadlessChatRecordingFailures");
|
|
57
|
+
async function settleChatRecording(config, options) {
|
|
58
|
+
if (typeof config.getChatRecordingService !== "function") return "settled";
|
|
59
|
+
const recorder = config.getChatRecordingService();
|
|
60
|
+
if (!recorder) return "settled";
|
|
61
|
+
if (options.finalize) recorder.finalize();
|
|
62
|
+
let timer;
|
|
63
|
+
const timeout = new Promise((resolve) => {
|
|
64
|
+
timer = setTimeout(() => {
|
|
65
|
+
debugLogger.debug("Timed out waiting for chat recording to flush");
|
|
66
|
+
resolve("timeout");
|
|
67
|
+
}, CHAT_RECORDING_SETTLE_TIMEOUT_MS);
|
|
68
|
+
});
|
|
69
|
+
const settled = recorder.flush().then(
|
|
70
|
+
() => "settled",
|
|
71
|
+
() => "settled"
|
|
72
|
+
);
|
|
73
|
+
try {
|
|
74
|
+
return await Promise.race([settled, timeout]);
|
|
75
|
+
} finally {
|
|
76
|
+
if (timer) clearTimeout(timer);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
__name(settleChatRecording, "settleChatRecording");
|
|
80
|
+
|
|
81
|
+
export {
|
|
82
|
+
TUI_CHAT_RECORDING_FAILURE_MESSAGE,
|
|
83
|
+
reportChatRecordingFailureToAdapter,
|
|
84
|
+
subscribeToHeadlessChatRecordingFailures,
|
|
85
|
+
settleChatRecording
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* @license
|
|
89
|
+
* Copyright 2025 Qwen Team
|
|
90
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
91
|
+
*/
|
|
@@ -2,24 +2,24 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
t
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-UZKG7HFG.js";
|
|
6
6
|
import {
|
|
7
7
|
computeThresholds,
|
|
8
8
|
getCoreSystemPrompt
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-XCR44EEA.js";
|
|
10
10
|
import {
|
|
11
11
|
buildSkillLlmContent
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-2Z5UX4KI.js";
|
|
13
13
|
import {
|
|
14
14
|
DiscoveredMCPTool,
|
|
15
15
|
uiTelemetryService
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-BYOOK22F.js";
|
|
17
17
|
import {
|
|
18
18
|
ToolNames
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-JGUT3LWZ.js";
|
|
20
20
|
import {
|
|
21
21
|
DEFAULT_TOKEN_LIMIT
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-B7NUUEXC.js";
|
|
23
23
|
import {
|
|
24
24
|
init_esbuild_shims
|
|
25
25
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
|
-
getInboxesDir
|
|
4
|
+
getInboxesDir
|
|
5
|
+
} from "./chunk-TV6K2FB4.js";
|
|
6
|
+
import {
|
|
5
7
|
require_proper_lockfile
|
|
6
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-E2UVIFI2.js";
|
|
7
9
|
import {
|
|
8
10
|
Mutex
|
|
9
11
|
} from "./chunk-VGC4I5JJ.js";
|
|
10
12
|
import {
|
|
11
13
|
atomicWriteJSON
|
|
12
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-WIEO4CWB.js";
|
|
13
15
|
import {
|
|
14
16
|
createDebugLogger,
|
|
15
17
|
isNodeError
|
|
16
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-7NFB7LBQ.js";
|
|
17
19
|
import {
|
|
18
20
|
init_esbuild_shims
|
|
19
21
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
LOAD_REPLAY_BULK_MODE,
|
|
5
|
+
LOAD_REPLAY_META_KEY,
|
|
6
|
+
LOAD_REPLAY_MODE_META_KEY,
|
|
7
|
+
LOAD_REPLAY_VERSION,
|
|
8
|
+
MID_TURN_QUEUE_DRAIN_METHOD
|
|
9
|
+
} from "./chunk-PZL23GTM.js";
|
|
10
|
+
import {
|
|
11
|
+
DEFAULT_RING_SIZE,
|
|
12
|
+
EVENT_SCHEMA_VERSION,
|
|
13
|
+
EventBus,
|
|
14
|
+
serializedBridgeEventByteLength
|
|
15
|
+
} from "./chunk-6RLROE6G.js";
|
|
16
|
+
import {
|
|
17
|
+
normalizeCompactedReplayMaxBytes
|
|
18
|
+
} from "./chunk-COH43MRJ.js";
|
|
3
19
|
import {
|
|
4
20
|
MCP_RESTART_SERVER_DEADLINE_MS
|
|
5
21
|
} from "./chunk-OCPBI7J5.js";
|
|
@@ -22,29 +38,10 @@ import {
|
|
|
22
38
|
SessionShellDisabledError,
|
|
23
39
|
WorkspaceMismatchError,
|
|
24
40
|
isNotCurrentlyGeneratingCancelError
|
|
25
|
-
} from "./chunk-
|
|
26
|
-
import {
|
|
27
|
-
LOAD_REPLAY_BULK_MODE,
|
|
28
|
-
LOAD_REPLAY_META_KEY,
|
|
29
|
-
LOAD_REPLAY_MODE_META_KEY,
|
|
30
|
-
LOAD_REPLAY_VERSION,
|
|
31
|
-
MID_TURN_QUEUE_DRAIN_METHOD
|
|
32
|
-
} from "./chunk-PZL23GTM.js";
|
|
33
|
-
import {
|
|
34
|
-
canonicalizeWorkspace
|
|
35
|
-
} from "./chunk-W7FJ3N32.js";
|
|
36
|
-
import {
|
|
37
|
-
DEFAULT_RING_SIZE,
|
|
38
|
-
EVENT_SCHEMA_VERSION,
|
|
39
|
-
EventBus,
|
|
40
|
-
serializedBridgeEventByteLength
|
|
41
|
-
} from "./chunk-6RLROE6G.js";
|
|
42
|
-
import {
|
|
43
|
-
normalizeCompactedReplayMaxBytes
|
|
44
|
-
} from "./chunk-COH43MRJ.js";
|
|
41
|
+
} from "./chunk-KSO42X3Z.js";
|
|
45
42
|
import {
|
|
46
43
|
defaultSpawnChannelFactory
|
|
47
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-3XULHBC7.js";
|
|
48
45
|
import {
|
|
49
46
|
BridgeChannelClosedError,
|
|
50
47
|
BridgeTimeoutError,
|
|
@@ -53,7 +50,10 @@ import {
|
|
|
53
50
|
STATUS_SCHEMA_VERSION,
|
|
54
51
|
createIdleWorkspaceExtensionsStatus,
|
|
55
52
|
createIdleWorkspaceHooksStatus
|
|
56
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-7DXHIMXL.js";
|
|
54
|
+
import {
|
|
55
|
+
canonicalizeWorkspace
|
|
56
|
+
} from "./chunk-W7FJ3N32.js";
|
|
57
57
|
import {
|
|
58
58
|
ClientSideConnection,
|
|
59
59
|
PROTOCOL_VERSION,
|
|
@@ -70,11 +70,11 @@ import {
|
|
|
70
70
|
metadataBudgetBytes,
|
|
71
71
|
normalizeSnapshotPayload,
|
|
72
72
|
stableSessionArtifactId
|
|
73
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-XCR44EEA.js";
|
|
74
74
|
import {
|
|
75
75
|
DAEMON_TRACEPARENT_META_KEY,
|
|
76
76
|
DAEMON_TRACESTATE_META_KEY
|
|
77
|
-
} from "./chunk-
|
|
77
|
+
} from "./chunk-BYOOK22F.js";
|
|
78
78
|
import {
|
|
79
79
|
init_esbuild_shims
|
|
80
80
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -1332,7 +1332,8 @@ function isTrustedArtifactToolUpdate(params, updateMeta) {
|
|
|
1332
1332
|
__name(isTrustedArtifactToolUpdate, "isTrustedArtifactToolUpdate");
|
|
1333
1333
|
function preserveFsErrorOverAcp(err) {
|
|
1334
1334
|
if (isFsErrorShape(err)) {
|
|
1335
|
-
|
|
1335
|
+
const code = err.kind === "parse_error" ? -32602 : -32603;
|
|
1336
|
+
throw new RequestError(code, err.message, {
|
|
1336
1337
|
errorKind: err.kind,
|
|
1337
1338
|
...err.hint !== void 0 ? { hint: err.hint } : {},
|
|
1338
1339
|
...err.status !== void 0 ? { status: err.status } : {}
|
|
@@ -1587,18 +1588,23 @@ var BridgeClient = class {
|
|
|
1587
1588
|
return;
|
|
1588
1589
|
}
|
|
1589
1590
|
const durationMs = updateMeta?.["durationMs"];
|
|
1591
|
+
const apiErrors = updateMeta?.["apiErrors"];
|
|
1592
|
+
const apiRetries = updateMeta?.["apiRetries"];
|
|
1590
1593
|
this.onTokenUsage(
|
|
1591
1594
|
typeof inputTokens === "number" ? inputTokens : 0,
|
|
1592
1595
|
typeof outputTokens === "number" ? outputTokens : 0,
|
|
1593
|
-
typeof durationMs === "number" ? durationMs : void 0
|
|
1596
|
+
typeof durationMs === "number" ? durationMs : void 0,
|
|
1597
|
+
typeof apiErrors === "number" ? apiErrors : 0,
|
|
1598
|
+
typeof apiRetries === "number" ? apiRetries : 0
|
|
1594
1599
|
);
|
|
1595
1600
|
}
|
|
1596
1601
|
/**
|
|
1597
|
-
* Bounded early-event buffer.
|
|
1598
|
-
*
|
|
1599
|
-
*
|
|
1600
|
-
*
|
|
1601
|
-
*
|
|
1602
|
+
* Bounded early-event buffer. The map is scoped to this BridgeClient and
|
|
1603
|
+
* therefore to one channel; a stale channel cannot seed a fresh channel's
|
|
1604
|
+
* future session. Frames are keyed by sessionId; each entry tracks its
|
|
1605
|
+
* `expiresAt` for lazy TTL-based eviction in `bufferEarlyEvent`. Drained by
|
|
1606
|
+
* `drainEarlyEvents` whenever the bridge registers a session with a matching
|
|
1607
|
+
* id. See MAX_EARLY_EVENT_* constants for capacity bounds.
|
|
1602
1608
|
*/
|
|
1603
1609
|
earlyEvents = /* @__PURE__ */ new Map();
|
|
1604
1610
|
/**
|
|
@@ -1623,7 +1629,7 @@ var BridgeClient = class {
|
|
|
1623
1629
|
/**
|
|
1624
1630
|
* Allow-list of sessionIds currently being restored via
|
|
1625
1631
|
* `session/load` / `session/resume`. Bypasses the tombstone check
|
|
1626
|
-
* in `bufferEarlyEvent` so restore-time
|
|
1632
|
+
* in `bufferEarlyEvent` so restore-time events for a
|
|
1627
1633
|
* previously-closed id flow through to the future
|
|
1628
1634
|
* `createSessionEntry -> drainEarlyEvents` call.
|
|
1629
1635
|
*
|
|
@@ -1801,6 +1807,7 @@ var BridgeClient = class {
|
|
|
1801
1807
|
* `qwen/notify/session/model-update`,
|
|
1802
1808
|
* `qwen/notify/session/mode-update`,
|
|
1803
1809
|
* `qwen/notify/session/title-update` (auto/in-process session titles),
|
|
1810
|
+
* `qwen/notify/session/recording-degraded`,
|
|
1804
1811
|
* `qwen/notify/session/prompt-suggestion` (followup assist),
|
|
1805
1812
|
* `qwen/notify/session/artifact-event` (hook artifacts),
|
|
1806
1813
|
* `qwen/notify/session/terminal-sequence`, and
|
|
@@ -1837,6 +1844,28 @@ var BridgeClient = class {
|
|
|
1837
1844
|
}
|
|
1838
1845
|
return;
|
|
1839
1846
|
}
|
|
1847
|
+
if (method === "qwen/notify/session/recording-degraded") {
|
|
1848
|
+
const sessionId2 = params["sessionId"];
|
|
1849
|
+
if (params["v"] !== 1 || typeof sessionId2 !== "string" || sessionId2.length === 0 || params["reason"] !== "write_failed") {
|
|
1850
|
+
writeStderrLine(
|
|
1851
|
+
`[demux] session=${typeof sessionId2 === "string" ? sessionId2 : "<missing>"} type=session_recording_degraded action=dropped reason=malformed`
|
|
1852
|
+
);
|
|
1853
|
+
return;
|
|
1854
|
+
}
|
|
1855
|
+
const entry = this.resolveEntry(sessionId2);
|
|
1856
|
+
if (entry && !this.ownsSession(sessionId2)) {
|
|
1857
|
+
writeStderrLine(
|
|
1858
|
+
`[demux] session=${sessionId2} type=session_recording_degraded action=dropped reason=session_not_owned`
|
|
1859
|
+
);
|
|
1860
|
+
return;
|
|
1861
|
+
}
|
|
1862
|
+
if (entry) entry.recordingDegraded = true;
|
|
1863
|
+
this.publishExtNotification(sessionId2, "session_recording_degraded", {
|
|
1864
|
+
sessionId: sessionId2,
|
|
1865
|
+
reason: "write_failed"
|
|
1866
|
+
});
|
|
1867
|
+
return;
|
|
1868
|
+
}
|
|
1840
1869
|
if (method === "qwen/notify/session/prompt-suggestion") {
|
|
1841
1870
|
const sessionId2 = params["sessionId"];
|
|
1842
1871
|
const suggestion = params["suggestion"];
|
|
@@ -2093,7 +2122,7 @@ var BridgeClient = class {
|
|
|
2093
2122
|
this.sweepExpiredTombstones(now);
|
|
2094
2123
|
if (this.tombstonedSessionIds.has(sessionId) && !this.inFlightRestoreIds.has(sessionId)) {
|
|
2095
2124
|
writeStderrLine(
|
|
2096
|
-
`qwen serve: dropping
|
|
2125
|
+
`qwen serve: dropping early extNotification for tombstoned session ${JSON.stringify(sessionId)} (post-close stale event)`
|
|
2097
2126
|
);
|
|
2098
2127
|
return;
|
|
2099
2128
|
}
|
|
@@ -2102,7 +2131,7 @@ var BridgeClient = class {
|
|
|
2102
2131
|
if (!buf) {
|
|
2103
2132
|
if (this.earlyEvents.size >= MAX_EARLY_EVENT_SESSIONS) {
|
|
2104
2133
|
writeStderrLine(
|
|
2105
|
-
`qwen serve: dropping
|
|
2134
|
+
`qwen serve: dropping early extNotification \u2014 early-event buffer at MAX_EARLY_EVENT_SESSIONS (${MAX_EARLY_EVENT_SESSIONS}); possible session-id fanout abuse`
|
|
2106
2135
|
);
|
|
2107
2136
|
return;
|
|
2108
2137
|
}
|
|
@@ -2111,7 +2140,7 @@ var BridgeClient = class {
|
|
|
2111
2140
|
}
|
|
2112
2141
|
if (buf.frames.length >= MAX_EARLY_EVENTS_PER_SESSION) {
|
|
2113
2142
|
writeStderrLine(
|
|
2114
|
-
`qwen serve: dropping
|
|
2143
|
+
`qwen serve: dropping early extNotification for session ${JSON.stringify(sessionId)} \u2014 per-session cap (${MAX_EARLY_EVENTS_PER_SESSION}) reached`
|
|
2115
2144
|
);
|
|
2116
2145
|
return;
|
|
2117
2146
|
}
|
|
@@ -2145,7 +2174,7 @@ var BridgeClient = class {
|
|
|
2145
2174
|
* Mark a sessionId as currently being restored via `session/load` /
|
|
2146
2175
|
* `session/resume`. While in this set, `bufferEarlyEvent` accepts
|
|
2147
2176
|
* frames for the id even if it's tombstoned — so restore-time
|
|
2148
|
-
*
|
|
2177
|
+
* early events from the freshly-restored child reach
|
|
2149
2178
|
* `drainEarlyEvents` instead of being rejected by the tombstone.
|
|
2150
2179
|
*
|
|
2151
2180
|
* Bridge factory calls this BEFORE awaiting the ACP restore call.
|
|
@@ -2179,7 +2208,12 @@ var BridgeClient = class {
|
|
|
2179
2208
|
this.tombstonedSessionIds.delete(sessionId);
|
|
2180
2209
|
const buf = this.earlyEvents.get(sessionId);
|
|
2181
2210
|
if (!buf) return;
|
|
2182
|
-
for (const frame of buf.frames)
|
|
2211
|
+
for (const frame of buf.frames) {
|
|
2212
|
+
if (frame.type === "session_recording_degraded") {
|
|
2213
|
+
entry.recordingDegraded = true;
|
|
2214
|
+
}
|
|
2215
|
+
entry.events.publish(frame);
|
|
2216
|
+
}
|
|
2183
2217
|
this.earlyEvents.delete(sessionId);
|
|
2184
2218
|
}
|
|
2185
2219
|
async writeTextFile(params) {
|
|
@@ -2246,6 +2280,18 @@ var BridgeClient = class {
|
|
|
2246
2280
|
if (typeof params.limit === "number" && params.limit <= 0) {
|
|
2247
2281
|
return { content: "" };
|
|
2248
2282
|
}
|
|
2283
|
+
if (typeof params.limit === "number" && params.limit > 0 && !Number.isSafeInteger(params.limit)) {
|
|
2284
|
+
throw RequestError.invalidParams(
|
|
2285
|
+
void 0,
|
|
2286
|
+
`\`limit\` must be a positive integer, got ${params.limit}`
|
|
2287
|
+
);
|
|
2288
|
+
}
|
|
2289
|
+
if (typeof params.line === "number" && params.line > 0 && !Number.isSafeInteger(params.line)) {
|
|
2290
|
+
throw RequestError.invalidParams(
|
|
2291
|
+
void 0,
|
|
2292
|
+
`\`line\` must be a positive integer, got ${params.line}`
|
|
2293
|
+
);
|
|
2294
|
+
}
|
|
2249
2295
|
const READ_FILE_SIZE_CAP = 100 * 1024 * 1024;
|
|
2250
2296
|
const stats = await fs.stat(params.path);
|
|
2251
2297
|
if (!stats.isFile()) {
|
|
@@ -4799,6 +4845,12 @@ function parseWorkspaceMemoryDreamResult(response) {
|
|
|
4799
4845
|
};
|
|
4800
4846
|
}
|
|
4801
4847
|
__name(parseWorkspaceMemoryDreamResult, "parseWorkspaceMemoryDreamResult");
|
|
4848
|
+
function pickUserInputEchoMeta(meta) {
|
|
4849
|
+
if (!meta || typeof meta !== "object" || Array.isArray(meta)) return {};
|
|
4850
|
+
const inputAnnotations = meta["inputAnnotations"];
|
|
4851
|
+
return Array.isArray(inputAnnotations) ? { inputAnnotations } : {};
|
|
4852
|
+
}
|
|
4853
|
+
__name(pickUserInputEchoMeta, "pickUserInputEchoMeta");
|
|
4802
4854
|
function echoPromptToSessionBus(entry, req, originatorClientId) {
|
|
4803
4855
|
const prompt = req.prompt;
|
|
4804
4856
|
if (!Array.isArray(prompt) || prompt.length === 0) return;
|
|
@@ -4820,7 +4872,11 @@ function echoPromptToSessionBus(entry, req, originatorClientId) {
|
|
|
4820
4872
|
// field permitted alongside spec fields, the SDK normalizer
|
|
4821
4873
|
// reads it from `update._meta`/`data._meta`, and every other
|
|
4822
4874
|
// agent-emitted session_update carries `_meta` the same way.
|
|
4823
|
-
_meta: {
|
|
4875
|
+
_meta: {
|
|
4876
|
+
...pickUserInputEchoMeta(req._meta),
|
|
4877
|
+
serverTimestamp,
|
|
4878
|
+
source: "bridge-echo"
|
|
4879
|
+
}
|
|
4824
4880
|
}
|
|
4825
4881
|
},
|
|
4826
4882
|
...originatorClientId ? { originatorClientId } : {}
|
|
@@ -5206,6 +5262,7 @@ function createAcpSessionBridge(opts) {
|
|
|
5206
5262
|
const aliveChannels = /* @__PURE__ */ new Set();
|
|
5207
5263
|
let inFlightChannelSpawn;
|
|
5208
5264
|
const byId = /* @__PURE__ */ new Map();
|
|
5265
|
+
const inFlightExtensionRefreshes = /* @__PURE__ */ new Map();
|
|
5209
5266
|
const toSessionSummary = /* @__PURE__ */ __name((entry) => {
|
|
5210
5267
|
let isWaitingForPermission = false;
|
|
5211
5268
|
let isWaitingForUserQuestion = false;
|
|
@@ -5257,6 +5314,7 @@ function createAcpSessionBridge(opts) {
|
|
|
5257
5314
|
}
|
|
5258
5315
|
);
|
|
5259
5316
|
let shuttingDown = false;
|
|
5317
|
+
let shutdownPromise;
|
|
5260
5318
|
const teeServeDebugLine = /* @__PURE__ */ __name((message) => {
|
|
5261
5319
|
writeServeDebugLine(message);
|
|
5262
5320
|
if (opts.onDiagnosticLine && isServeDebugLoggingEnabled()) {
|
|
@@ -5382,10 +5440,12 @@ function createAcpSessionBridge(opts) {
|
|
|
5382
5440
|
// at the session/update fan-in to the daemon host's metrics ring via
|
|
5383
5441
|
// the telemetry seam. Optional-chained so non-daemon callers (tests,
|
|
5384
5442
|
// Mode A) that wire no `tokenUsage` metric are a silent no-op.
|
|
5385
|
-
(inputTokens, outputTokens, durationMs) => telemetry.metrics?.tokenUsage?.(
|
|
5443
|
+
(inputTokens, outputTokens, durationMs, apiErrors, apiRetries) => telemetry.metrics?.tokenUsage?.(
|
|
5386
5444
|
inputTokens,
|
|
5387
5445
|
outputTokens,
|
|
5388
|
-
durationMs
|
|
5446
|
+
durationMs,
|
|
5447
|
+
apiErrors,
|
|
5448
|
+
apiRetries
|
|
5389
5449
|
),
|
|
5390
5450
|
// `create_sub_session` tool: forward the request/response hook so a child
|
|
5391
5451
|
// tool can ask the daemon to spawn a sub-session and (for 'first-turn')
|
|
@@ -6125,6 +6185,7 @@ function createAcpSessionBridge(opts) {
|
|
|
6125
6185
|
workspaceCwd,
|
|
6126
6186
|
persistence: createSessionArtifactPersistence(ci.connection, sessionId)
|
|
6127
6187
|
}),
|
|
6188
|
+
recordingDegraded: false,
|
|
6128
6189
|
promptQueue: Promise.resolve(),
|
|
6129
6190
|
pendingPromptCount: 0,
|
|
6130
6191
|
pendingPromptList: [],
|
|
@@ -7241,7 +7302,8 @@ function createAcpSessionBridge(opts) {
|
|
|
7241
7302
|
data: {
|
|
7242
7303
|
sessionId: entry.sessionId,
|
|
7243
7304
|
currentModelId: entry.currentModelId ?? null,
|
|
7244
|
-
currentApprovalMode: entry.currentApprovalMode ?? null
|
|
7305
|
+
currentApprovalMode: entry.currentApprovalMode ?? null,
|
|
7306
|
+
recordingDegraded: entry.recordingDegraded
|
|
7245
7307
|
}
|
|
7246
7308
|
}), "snapshotFrame");
|
|
7247
7309
|
async function* withSnapshot() {
|
|
@@ -7535,7 +7597,7 @@ function createAcpSessionBridge(opts) {
|
|
|
7535
7597
|
const r = res;
|
|
7536
7598
|
if (r && r.persisted === false) {
|
|
7537
7599
|
writeStderrLine(
|
|
7538
|
-
`qwen serve: displayName for ${sessionId} was not persisted
|
|
7600
|
+
`qwen serve: displayName for ${sessionId} was not persisted`
|
|
7539
7601
|
);
|
|
7540
7602
|
}
|
|
7541
7603
|
}).catch((err) => {
|
|
@@ -7975,12 +8037,26 @@ function createAcpSessionBridge(opts) {
|
|
|
7975
8037
|
return { refreshed: 0, failed: 0 };
|
|
7976
8038
|
}
|
|
7977
8039
|
try {
|
|
7978
|
-
|
|
7979
|
-
|
|
7980
|
-
|
|
8040
|
+
let inFlight = inFlightExtensionRefreshes.get(entry.sessionId);
|
|
8041
|
+
if (!inFlight || inFlight.connection !== entry.connection) {
|
|
8042
|
+
const promise = (async () => {
|
|
8043
|
+
await entry.connection.extMethod(
|
|
7981
8044
|
SERVE_CONTROL_EXT_METHODS.workspaceExtensionsRefresh,
|
|
7982
8045
|
{ sessionId: entry.sessionId }
|
|
7983
|
-
)
|
|
8046
|
+
);
|
|
8047
|
+
})();
|
|
8048
|
+
inFlight = { connection: entry.connection, promise };
|
|
8049
|
+
inFlightExtensionRefreshes.set(entry.sessionId, inFlight);
|
|
8050
|
+
const clear = /* @__PURE__ */ __name(() => {
|
|
8051
|
+
if (inFlightExtensionRefreshes.get(entry.sessionId) === inFlight) {
|
|
8052
|
+
inFlightExtensionRefreshes.delete(entry.sessionId);
|
|
8053
|
+
}
|
|
8054
|
+
}, "clear");
|
|
8055
|
+
void promise.then(clear, clear);
|
|
8056
|
+
}
|
|
8057
|
+
await Promise.race([
|
|
8058
|
+
withTimeout(
|
|
8059
|
+
inFlight.promise,
|
|
7984
8060
|
3e4,
|
|
7985
8061
|
SERVE_CONTROL_EXT_METHODS.workspaceExtensionsRefresh
|
|
7986
8062
|
),
|
|
@@ -8764,60 +8840,71 @@ function createAcpSessionBridge(opts) {
|
|
|
8764
8840
|
}
|
|
8765
8841
|
}
|
|
8766
8842
|
},
|
|
8767
|
-
|
|
8768
|
-
|
|
8769
|
-
|
|
8770
|
-
|
|
8771
|
-
|
|
8772
|
-
|
|
8773
|
-
|
|
8774
|
-
|
|
8775
|
-
|
|
8776
|
-
|
|
8777
|
-
|
|
8778
|
-
|
|
8779
|
-
|
|
8780
|
-
|
|
8781
|
-
|
|
8782
|
-
|
|
8783
|
-
|
|
8784
|
-
|
|
8785
|
-
|
|
8786
|
-
|
|
8787
|
-
|
|
8788
|
-
|
|
8789
|
-
|
|
8790
|
-
|
|
8791
|
-
|
|
8792
|
-
|
|
8843
|
+
shutdown(options) {
|
|
8844
|
+
if (shutdownPromise) return shutdownPromise;
|
|
8845
|
+
const shutdownReason = options?.reason ?? "daemon_shutdown";
|
|
8846
|
+
let resolveShutdown;
|
|
8847
|
+
let rejectShutdown;
|
|
8848
|
+
shutdownPromise = new Promise((resolve2, reject) => {
|
|
8849
|
+
resolveShutdown = resolve2;
|
|
8850
|
+
rejectShutdown = reject;
|
|
8851
|
+
});
|
|
8852
|
+
void (async () => {
|
|
8853
|
+
shuttingDown = true;
|
|
8854
|
+
cancelIdleTimer();
|
|
8855
|
+
stopSessionReaper();
|
|
8856
|
+
const entries = Array.from(byId.values());
|
|
8857
|
+
const channels = Array.from(aliveChannels);
|
|
8858
|
+
for (const ci of channels) ci.isDying = true;
|
|
8859
|
+
for (const e of entries) {
|
|
8860
|
+
permissionMediator.forgetSession(e.sessionId);
|
|
8861
|
+
e.pendingPermissionIds.clear();
|
|
8862
|
+
e.pendingInteractions.clear();
|
|
8863
|
+
}
|
|
8864
|
+
defaultEntry = void 0;
|
|
8865
|
+
byId.clear();
|
|
8866
|
+
for (const e of entries) {
|
|
8867
|
+
telemetry.metrics?.sessionLifecycle("die");
|
|
8868
|
+
emitSessionLifecycle({
|
|
8869
|
+
type: "removed",
|
|
8870
|
+
sessionId: e.sessionId,
|
|
8871
|
+
workspaceCwd: e.workspaceCwd,
|
|
8872
|
+
reason: shutdownReason
|
|
8793
8873
|
});
|
|
8794
|
-
|
|
8874
|
+
try {
|
|
8875
|
+
e.events.publish({
|
|
8876
|
+
type: "session_died",
|
|
8877
|
+
data: { sessionId: e.sessionId, reason: shutdownReason }
|
|
8878
|
+
});
|
|
8879
|
+
} catch {
|
|
8880
|
+
}
|
|
8881
|
+
e.events.close();
|
|
8795
8882
|
}
|
|
8796
|
-
|
|
8797
|
-
|
|
8798
|
-
|
|
8799
|
-
|
|
8800
|
-
|
|
8801
|
-
|
|
8802
|
-
)
|
|
8803
|
-
|
|
8804
|
-
|
|
8805
|
-
|
|
8883
|
+
const inFlightSessionAwaits = Array.from(inFlightSpawns.values()).map(
|
|
8884
|
+
(p) => p.then(
|
|
8885
|
+
() => void 0,
|
|
8886
|
+
() => void 0
|
|
8887
|
+
)
|
|
8888
|
+
);
|
|
8889
|
+
const inFlightRestoreAwaits = Array.from(inFlightRestores.values()).map(
|
|
8890
|
+
(restore) => restore.promise.then(
|
|
8891
|
+
() => void 0,
|
|
8892
|
+
() => void 0
|
|
8893
|
+
)
|
|
8894
|
+
);
|
|
8895
|
+
const inFlightChannelAwait = inFlightChannelSpawn ? inFlightChannelSpawn.then(
|
|
8806
8896
|
() => void 0,
|
|
8807
8897
|
() => void 0
|
|
8808
|
-
)
|
|
8809
|
-
|
|
8810
|
-
|
|
8811
|
-
|
|
8812
|
-
|
|
8813
|
-
|
|
8814
|
-
|
|
8815
|
-
|
|
8816
|
-
|
|
8817
|
-
|
|
8818
|
-
...inFlightRestoreAwaits,
|
|
8819
|
-
inFlightChannelAwait
|
|
8820
|
-
]);
|
|
8898
|
+
) : Promise.resolve();
|
|
8899
|
+
await Promise.all([
|
|
8900
|
+
...channels.map((ci) => ci.channel.kill().catch(() => {
|
|
8901
|
+
})),
|
|
8902
|
+
...inFlightSessionAwaits,
|
|
8903
|
+
...inFlightRestoreAwaits,
|
|
8904
|
+
inFlightChannelAwait
|
|
8905
|
+
]);
|
|
8906
|
+
})().then(resolveShutdown, rejectShutdown);
|
|
8907
|
+
return shutdownPromise;
|
|
8821
8908
|
},
|
|
8822
8909
|
async preheat() {
|
|
8823
8910
|
if (shuttingDown) return;
|
|
@@ -3,19 +3,19 @@
|
|
|
3
3
|
import {
|
|
4
4
|
getInstallationInfo,
|
|
5
5
|
resolveUpdateCommand
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-WJOC24IW.js";
|
|
7
7
|
import {
|
|
8
8
|
performStandaloneUpdate
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-C47ENMZJ.js";
|
|
10
10
|
import {
|
|
11
11
|
updateEventEmitter
|
|
12
12
|
} from "./chunk-YAF2MQZ6.js";
|
|
13
13
|
import {
|
|
14
14
|
t
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-UZKG7HFG.js";
|
|
16
16
|
import {
|
|
17
17
|
createDebugLogger
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-7NFB7LBQ.js";
|
|
19
19
|
import {
|
|
20
20
|
init_esbuild_shims
|
|
21
21
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
} from "./chunk-VGC4I5JJ.js";
|
|
6
6
|
import {
|
|
7
7
|
atomicWriteJSON
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-WIEO4CWB.js";
|
|
9
9
|
import {
|
|
10
10
|
Storage,
|
|
11
11
|
getProjectHash
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-7NFB7LBQ.js";
|
|
13
13
|
import {
|
|
14
14
|
init_esbuild_shims
|
|
15
15
|
} from "./chunk-5O2XNYP6.js";
|