@qwen-code/qwen-code 0.19.7 → 0.19.8
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/features/channels/overview.md +15 -8
- package/bundled/qc-helper/docs/features/channels/plugins.md +1 -0
- package/bundled/qc-helper/docs/features/hooks.md +36 -34
- package/bundled/qc-helper/docs/features/memory.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve.md +17 -10
- package/bundled/review/SKILL.md +6 -2
- package/chunks/{MaxSizedBox-XY5LIO5O.js → MaxSizedBox-5DT2SD7B.js} +7 -7
- package/chunks/{StandaloneSessionPicker-APISIRJZ.js → StandaloneSessionPicker-EYRGH6PJ.js} +23 -21
- package/chunks/{acpAgent-MMOSC2YA.js → acpAgent-GRFTTRHW.js} +74 -69
- package/chunks/{agent-TKIBLLQT.js → agent-H2DGKS77.js} +4 -4
- package/chunks/{agent-headless-VLX4C7KX.js → agent-headless-KFMFIT6J.js} +4 -4
- package/chunks/{anthropicContentGenerator-AKYPSZIV.js → anthropicContentGenerator-CPF22MA7.js} +28 -1
- package/chunks/{bridge-BCU73DZO.js → bridge-NA3ZQQKJ.js} +11 -10
- package/chunks/{ca-HCMB2I54.js → ca-MKD32FQL.js} +26 -1
- package/chunks/{channel-worker-supervisor-CRCVYQIE.js → channel-worker-supervisor-NZQUOEFJ.js} +3 -3
- package/chunks/{chunk-B4U2M63D.js → chunk-27BHARDE.js} +8 -8
- package/chunks/{chunk-OWVIH4HY.js → chunk-2EM7ECZD.js} +251 -71
- package/chunks/{chunk-YEGT55NW.js → chunk-3GNOQZDC.js} +1562 -1025
- package/chunks/{chunk-G7ZG7CA6.js → chunk-3UP777ZS.js} +8 -7
- package/chunks/{chunk-VEB3NYSO.js → chunk-5MBO76SL.js} +5 -0
- package/chunks/{chunk-ALZ75L2X.js → chunk-6VK6FIMQ.js} +1 -1
- package/chunks/{chunk-SD4N3QJ2.js → chunk-A5JOJ77H.js} +35 -14
- package/chunks/{chunk-NZEGNV4V.js → chunk-AYNCLGTW.js} +5 -5
- package/chunks/{chunk-AJBEAUIS.js → chunk-BOBOCR5H.js} +4 -3
- package/chunks/chunk-BOBRZZKD.js +468 -0
- package/chunks/{chunk-GMOWQOQQ.js → chunk-BUZ6HGL4.js} +5 -5
- package/chunks/{chunk-PRDFOIZF.js → chunk-BVYU3ZTI.js} +2 -2
- package/chunks/{chunk-TBAZMRW3.js → chunk-CD6USWHZ.js} +1 -1
- package/chunks/{chunk-YDSYD7UI.js → chunk-CHB5SLZZ.js} +2 -2
- package/chunks/{chunk-FRFFNYUY.js → chunk-DCZWC4PF.js} +2 -2
- package/chunks/{chunk-XSAFNANZ.js → chunk-DHOLNQLC.js} +11 -11
- package/chunks/{chunk-MIG5SQNL.js → chunk-DICGXFAI.js} +1 -1
- package/chunks/{chunk-4ZJIPVPB.js → chunk-DIWVZ3VM.js} +8 -8
- package/chunks/{chunk-VQWAZSXN.js → chunk-E7EMCSUG.js} +1 -1
- package/chunks/{chunk-Q6OEPOOC.js → chunk-EEN2TKST.js} +1 -1
- package/chunks/{chunk-DNV4FSN5.js → chunk-FBET5XZ2.js} +6 -4
- package/chunks/{chunk-QZF5U5KA.js → chunk-FQNC62B2.js} +4 -4
- package/chunks/{chunk-B34OV7K2.js → chunk-GGQQA4JW.js} +13 -0
- package/chunks/chunk-GLE2YUPU.js +34 -0
- package/chunks/{chunk-X265R5C6.js → chunk-GN3F6PIU.js} +1 -1
- package/chunks/{chunk-FTFXDZYI.js → chunk-GSHQYYIV.js} +45 -9
- package/chunks/{chunk-MJI36HER.js → chunk-HDOH3QYE.js} +1 -1
- package/chunks/{chunk-CISB3IQF.js → chunk-I6WGFJJ3.js} +63 -4
- package/chunks/{chunk-2NPS2UDH.js → chunk-IBY3Q3HG.js} +390 -9
- package/chunks/{chunk-LEIJKM7Q.js → chunk-J7RCB6N5.js} +1 -1
- package/chunks/{chunk-4UCTWSTP.js → chunk-JCH35JB3.js} +1 -1
- package/chunks/{chunk-CNSF3WO5.js → chunk-JPALE3PA.js} +3 -3
- package/chunks/{chunk-P7I3D7FM.js → chunk-JRQ7EVGE.js} +1 -1
- package/chunks/{chunk-24XYI5EI.js → chunk-JZHIQJOE.js} +3 -3
- package/chunks/{chunk-7JGISHHZ.js → chunk-L46XKEGM.js} +14 -153
- package/chunks/{chunk-HJ3GX3Y3.js → chunk-L4AMBVQG.js} +9 -9
- package/chunks/{chunk-JF7DFPQ5.js → chunk-LAXNEOBG.js} +1 -1
- package/chunks/{chunk-STAZRKOT.js → chunk-M7S4GK5Z.js} +66 -445
- package/chunks/{chunk-4RQIB5UZ.js → chunk-O2YT7VB4.js} +0 -34
- package/chunks/{chunk-QAKFYMJI.js → chunk-O33TBKDC.js} +10 -10
- package/chunks/chunk-O7FIRWJV.js +168 -0
- package/chunks/{chunk-4KJ2BPIT.js → chunk-OACJLMLD.js} +2 -38
- package/chunks/{chunk-6BN7NZ5Z.js → chunk-ON3JA3RU.js} +2 -2
- package/chunks/{chunk-IUE7YWC3.js → chunk-OQXDAMKY.js} +3 -3
- package/chunks/{chunk-DGHJTO2K.js → chunk-P3XEEI3X.js} +1 -1
- package/chunks/{chunk-U4FRHCLA.js → chunk-PMFULMLX.js} +296 -81
- package/chunks/{chunk-XISQIIT7.js → chunk-PUVCVELY.js} +1 -1
- package/chunks/{chunk-PUQLHSQ2.js → chunk-RMLZAUWH.js} +4 -4
- package/chunks/{chunk-JD33UY7E.js → chunk-SQ2UATK7.js} +14 -8
- package/chunks/{chunk-4O344UEE.js → chunk-TI3BWD4D.js} +1 -1
- package/chunks/{chunk-AIY5UTFI.js → chunk-TSPB77TG.js} +57 -35
- package/chunks/{chunk-XPJH4PKR.js → chunk-UX6OTBVD.js} +1 -1
- package/chunks/{chunk-GD236YPV.js → chunk-UXEW557D.js} +1 -1
- package/chunks/chunk-V35MD7KN.js +13 -0
- package/chunks/{chunk-RYFZCUJO.js → chunk-VGGOPZUL.js} +6 -5
- package/chunks/{chunk-65CFHNSE.js → chunk-WF4FAXDL.js} +2 -2
- package/chunks/{chunk-ME3YSROJ.js → chunk-WHJQ3JUS.js} +20 -8
- package/chunks/{chunk-BWVQN2HV.js → chunk-WQTHLB5T.js} +3 -3
- package/chunks/chunk-XNXVCNAT.js +88 -0
- package/chunks/{chunk-TDGF35EN.js → chunk-XOHNA2S6.js} +1 -1
- package/chunks/{chunk-GL5TV7B5.js → chunk-XYR5RUA5.js} +14 -5
- package/chunks/{chunk-I4A4K72C.js → chunk-YDOXPLYL.js} +244 -47
- package/chunks/{chunk-AFOLR6YL.js → chunk-YHKAK72D.js} +11 -11
- package/chunks/{chunk-RFIL6REB.js → chunk-YKZIAK7C.js} +119 -29
- package/chunks/chunk-Z3I3QJK3.js +47 -0
- package/chunks/{chunk-ADZG46HR.js → chunk-ZE6E424U.js} +1 -1
- package/chunks/chunk-ZL5HN75Q.js +61 -0
- package/chunks/{computer-use-X4KUU3NM.js → computer-use-WMY3UOBX.js} +4 -4
- package/chunks/{contextCommand-LAYJZF7H.js → contextCommand-LXFZRP4L.js} +6 -6
- package/chunks/{daemon-F3I2RXP6.js → daemon-WPAENEBW.js} +48 -0
- package/chunks/{daemon-status-provider-XSAFKVDS.js → daemon-status-provider-GJRXY5EN.js} +15 -13
- package/chunks/{de-PLLFDERI.js → de-ZFPPQVSF.js} +26 -1
- package/chunks/{dist-IMFFBMAT.js → dist-BEXOZXLQ.js} +1 -1
- package/chunks/{dist-OT7G2WNM.js → dist-E6UANPIM.js} +1 -1
- package/chunks/{dist-FQ5WRJPL.js → dist-H2AEJCZ5.js} +2 -2
- package/chunks/{dist-YTRKAVUB.js → dist-O2IRTRPP.js} +1 -1
- package/chunks/{dist-573HNSVO.js → dist-SCFLLYMK.js} +1 -1
- package/chunks/{dist-PKFTNUHO.js → dist-Z34QPAQW.js} +1 -1
- package/chunks/{earlyInputCapture-AERYYGXE.js → earlyInputCapture-KNOYZ4MJ.js} +4 -4
- package/chunks/{edit-WZTZDGCI.js → edit-OTYWAXGP.js} +5 -5
- package/chunks/{en-GA2RMXY5.js → en-N4EPZAQI.js} +26 -1
- package/chunks/{enter-worktree-DEPXBJEL.js → enter-worktree-HNYBDVCX.js} +4 -4
- package/chunks/{enterPlanMode-JFGXZHHJ.js → enterPlanMode-CJCNGT63.js} +4 -4
- package/chunks/environment-ATFTYMLZ.js +88 -0
- package/chunks/{errors-GMZL4QV7.js → errors-A54HAADA.js} +6 -6
- package/chunks/{exit-worktree-Y7XBK3VV.js → exit-worktree-DUUKOE3X.js} +4 -4
- package/chunks/{exitPlanMode-WQQER65F.js → exitPlanMode-AMMSXOAJ.js} +4 -4
- package/chunks/{fast-path-W2U6XDNO.js → fast-path-OV6NIP3K.js} +12 -3
- package/chunks/{fast-path-settings-RCRXH2JG.js → fast-path-settings-7RIFI3PK.js} +3 -2
- package/chunks/{fr-GWNQG4XH.js → fr-5WWMY53B.js} +26 -1
- package/chunks/{gemini-T4WX6SRW.js → gemini-NQ3WWBKB.js} +431 -135
- package/chunks/{geminiContentGenerator-MKQACXEJ.js → geminiContentGenerator-CDUNEJQE.js} +1 -1
- package/chunks/{glob-4KKSHZDF.js → glob-ROV3YS4R.js} +4 -4
- package/chunks/{grep-GHRYXSLZ.js → grep-NRITKDCD.js} +4 -4
- package/chunks/{handleAutoUpdate-HN7ZOSXY.js → handleAutoUpdate-CEZJAARW.js} +6 -6
- package/chunks/{initializer-SRN3IM42.js → initializer-BRFJKRRX.js} +11 -9
- package/chunks/{ja-2HOTA47X.js → ja-CUHZOLEJ.js} +26 -1
- package/chunks/{list-INTVXUPA.js → list-KVHF7O4X.js} +13 -11
- package/chunks/{loadedSettingsAdapter-QVHHQPGM.js → loadedSettingsAdapter-LL5PSFKX.js} +11 -9
- package/chunks/{ls-L654WOAT.js → ls-7MFU2QYW.js} +1 -1
- package/chunks/{lsp-M35KE54Y.js → lsp-XHDTPTGV.js} +2 -4
- package/chunks/{mcp-7V4T46RG.js → mcp-3GCXRTOQ.js} +11 -9
- package/chunks/{monitor-464OY2UE.js → monitor-FL2ZO33W.js} +4 -4
- package/chunks/{nonInteractiveCli-LJEEODU2.js → nonInteractiveCli-PTQI3DV6.js} +44 -41
- package/chunks/{notebook-edit-BLJYCNDO.js → notebook-edit-6PULTHL5.js} +5 -5
- package/chunks/{openaiContentGenerator-PFF6HYB2.js → openaiContentGenerator-YE42PKCY.js} +3 -3
- package/chunks/{pidfile-LIBUENIV.js → pidfile-NZYSCFRK.js} +4 -4
- package/chunks/{pt-2THT3YHA.js → pt-OLYN42DS.js} +26 -1
- package/chunks/{qwenContentGenerator-SUUHZ6CR.js → qwenContentGenerator-NX2E7PB7.js} +5 -5
- package/chunks/{read-file-L7TBQVX7.js → read-file-33XGP5HF.js} +2 -2
- package/chunks/{record-artifact-PP3LKHTS.js → record-artifact-SQ2OKRJW.js} +3 -3
- package/chunks/{ripGrep-CKKX3GRB.js → ripGrep-QWZLGTAN.js} +4 -4
- package/chunks/{ru-Z67YJHBG.js → ru-LDM3GWVQ.js} +26 -1
- package/chunks/{run-qwen-serve-5OKADVLE.js → run-qwen-serve-JK2DL7PI.js} +596 -143
- package/chunks/{scheduler-ZRW3AIDU.js → scheduler-O4IGVZKK.js} +4 -4
- package/chunks/{send-message-OA6MV4EU.js → send-message-76GT3JMC.js} +1 -1
- package/chunks/{serve-36WS32W6.js → serve-JTMIGANH.js} +13 -10
- package/chunks/{server-M372UENX.js → server-SGNPKX2O.js} +667 -243
- package/chunks/{session-F5KSNP2N.js → session-5BNM25EZ.js} +45 -42
- package/chunks/{settings-WFLNS3WT.js → settings-3MI4XXP6.js} +20 -16
- package/chunks/{shell-DEDSWN56.js → shell-YJKBE67T.js} +4 -4
- package/chunks/{skill-A2TL2NPC.js → skill-I22QK5XS.js} +2 -2
- package/chunks/{spawnChannel-RQHUWTCL.js → spawnChannel-UNV6W4DU.js} +6 -6
- package/chunks/{src-XKZMNHXS.js → src-BBQSM46M.js} +8 -4
- package/chunks/{startInteractiveUI-REKSTOHU.js → startInteractiveUI-JII36UGN.js} +619 -288
- package/chunks/{task-create-RPFZNB4B.js → task-create-WCHTB435.js} +2 -2
- package/chunks/{task-update-5WUG5MVQ.js → task-update-XYWMHJGJ.js} +2 -2
- package/chunks/{team-create-TBQVWAG7.js → team-create-A7NUU5AQ.js} +4 -4
- package/chunks/{team-plan-approval-FZPGUSHJ.js → team-plan-approval-TOQRJ2KI.js} +4 -4
- package/chunks/{theme-manager-DQZVNSOC.js → theme-manager-WZ4RRMMB.js} +4 -4
- package/chunks/{tool-search-FDQ3SLNJ.js → tool-search-SZ4EFS2T.js} +3 -3
- package/chunks/total-session-admission-ULXJWXFV.js +72 -0
- package/chunks/{trustedFolders-Z475EIHL.js → trustedFolders-LAZZPZ3D.js} +5 -5
- package/chunks/{updateCheck-E2ZX7RL7.js → updateCheck-KONLM73X.js} +5 -5
- package/chunks/{validateNonInterActiveAuth-O4ECBHQL.js → validateNonInterActiveAuth-MPKSRCXD.js} +41 -38
- package/chunks/{version-CEDD6ZZR.js → version-NO2XSNNP.js} +1 -1
- package/chunks/{workflow-CQQ4J4I6.js → workflow-WO2H6NRI.js} +5 -5
- package/chunks/{workspace-providers-status-MVYXMYDG.js → workspace-providers-status-3W7E7DFW.js} +14 -11
- package/chunks/workspace-registry-SXJZNN3O.js +74 -0
- package/chunks/{workspace-service-OMBR6ZLG.js → workspace-service-CZRQZ4Q4.js} +17 -15
- package/chunks/{workspace-skills-status-IMMQ7CAY.js → workspace-skills-status-K7WFREPD.js} +12 -10
- package/chunks/{write-file-VWGY7AJP.js → write-file-PX2Z7IBE.js} +5 -5
- package/chunks/{zh-7XVVRTDH.js → zh-J4F6QWQV.js} +26 -1
- package/chunks/{zh-TW-DPH554OG.js → zh-TW-XVDWOLSW.js} +26 -1
- package/cli.js +11 -11
- package/locales/ca.js +30 -0
- package/locales/de.js +30 -0
- package/locales/en.js +30 -0
- package/locales/fr.js +30 -0
- package/locales/ja.js +30 -0
- package/locales/pt.js +30 -0
- package/locales/ru.js +30 -0
- package/locales/zh-TW.js +30 -0
- package/locales/zh.js +30 -0
- package/node_modules/@qwen-code/audio-capture/package.json +1 -1
- package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-C7hjaa7g.js → arc-BWyoJpY2.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-pm9KtMZY.js → architectureDiagram-3BPJPVTR-BT0mGrz2.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-CApElKsU.js → blockDiagram-GPEHLZMM-BLgUWvyf.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-BeDe0-9N.js → c4Diagram-AAUBKEIU-DYx9M7oU.js} +1 -1
- package/web-shell/assets/channel-wmPUGHtg.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-DJEkmLdl.js → chunk-2J33WTMH-CfMHWbuZ.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DXX8gdpe.js → chunk-4BX2VUAB-B1URoqEV.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DORmk1kQ.js → chunk-55IACEB6-DAIaM4QF.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-DWmO4mCZ.js → chunk-727SXJPM-B2X34knw.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-C7LRaYw2.js → chunk-AQP2D5EJ-Cif-zLTQ.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CCdXgyC5.js → chunk-FMBD7UC4-H18WCXdY.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-SyL_xvWc.js → chunk-ND2GUHAM-YFtetHi0.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-BzOuCKxa.js → chunk-QZHKN3VN-By2hiH3r.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BA2ljEjW.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BA2ljEjW.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BMPWyDKc.js → cose-bilkent-S5V4N54A-VrcnnLZu.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-B_GnPWik.js → dagre-BM42HDAG-CGo-IaVV.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-fJqMc3S_.js → diagram-2AECGRRQ-Dl4QjzIB.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-ximV3O9D.js → diagram-5GNKFQAL-qMLmsO0u.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-2vVyjzqw.js → diagram-KO2AKTUF-CHlmuxPI.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-Dckcx1sT.js → diagram-LMA3HP47-BUwU3GwT.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-BAVv47ga.js → diagram-OG6HWLK6-HEhwPDUM.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-Bn3nf5J0.js → erDiagram-TEJ5UH35-1n0llBmM.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BIbGF9JT.js → flowDiagram-I6XJVG4X-BN74uMnt.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-CDbhb3AH.js → ganttDiagram-6RSMTGT7-BoOq78i3.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CbKG1a_w.js → gitGraphDiagram-PVQCEYII-CN8b00c8.js} +1 -1
- package/web-shell/assets/index-CNwoO1Cn.js +783 -0
- package/web-shell/assets/index-CWQ0z6kZ.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DUFxTy8m.js → infoDiagram-5YYISTIA-CCurnIna.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-D69hrBG8.js → ishikawaDiagram-YF4QCWOH-AwuRqdUP.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-DsvEw51Y.js → journeyDiagram-JHISSGLW-B7IICk-E.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-lFFjZEYd.js → kanban-definition-UN3LZRKU-BYF0OKhx.js} +1 -1
- package/web-shell/assets/{linear-Bo5bWzvo.js → linear-GWWguGfD.js} +1 -1
- package/web-shell/assets/{mermaid.core-C_HKMJx5.js → mermaid.core-JqtkxvCl.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-DlV-NUTs.js → mindmap-definition-RKZ34NQL-B0MmHsZ6.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-B2e6FH2a.js → pieDiagram-4H26LBE5-DhImUZLQ.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-D75kSk-b.js → quadrantDiagram-W4KKPZXB-DGeSC3DT.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-CQ6xakhM.js → requirementDiagram-4Y6WPE33-DkspY6Re.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-J_XTKrcY.js → sankeyDiagram-5OEKKPKP-CaOofS2x.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-D7jTcBtf.js → sequenceDiagram-3UESZ5HK-DFQ_kFnN.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-CrlM_OT3.js → stateDiagram-AJRCARHV-D3snw0Tz.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BbSm_9d0.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-5oZi76Ef.js → timeline-definition-PNZ67QCA-l4zH8nLM.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DO5YptPK.js → vennDiagram-CIIHVFJN-BnRlA98M.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-4t1eJDvM.js → wardley-L42UT6IY-BS0xUdmd.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DKZc661S.js → wardleyDiagram-YWT4CUSO-DKGBUWyQ.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-su9hp08G.js → xychartDiagram-2RQKCTM6-DVb2HuOB.js} +1 -1
- package/web-shell/index.html +2 -2
- package/web-shell/assets/channel-BNf1dW-j.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-uOIGlzgi.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-uOIGlzgi.js +0 -1
- package/web-shell/assets/index-CnE2ur2L.js +0 -779
- package/web-shell/assets/index-hSKXrlSE.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-Bs4TK_84.js +0 -1
|
@@ -16668,6 +16668,9 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
16668
16668
|
session_branch: { since: "v1" },
|
|
16669
16669
|
rate_limit: { since: "v1" },
|
|
16670
16670
|
workspace_reload: { since: "v1" },
|
|
16671
|
+
// Multi-workspace sessions closed loop (issue #6378 Phase 2a). Advertised
|
|
16672
|
+
// only when one daemon hosts more than one registered workspace runtime.
|
|
16673
|
+
multi_workspace_sessions: { since: "v1" },
|
|
16671
16674
|
// Phase 2 "reverse tool channel" (issue #5626). A connected WS client (e.g.
|
|
16672
16675
|
// the Chrome extension) can host an MCP server that the daemon's agent
|
|
16673
16676
|
// calls by carrying `mcp_message` JSON-RPC frames over the daemon WS,
|
|
@@ -16720,6 +16723,10 @@ var CONDITIONAL_SERVE_FEATURES = /* @__PURE__ */ new Map([
|
|
|
16720
16723
|
],
|
|
16721
16724
|
["rate_limit", (toggles) => toggles.rateLimit === true],
|
|
16722
16725
|
["workspace_reload", (toggles) => toggles.reloadAvailable === true],
|
|
16726
|
+
[
|
|
16727
|
+
"multi_workspace_sessions",
|
|
16728
|
+
(toggles) => toggles.multiWorkspaceSessionsEnabled === true
|
|
16729
|
+
],
|
|
16723
16730
|
["client_mcp_over_ws", (toggles) => toggles.clientMcpOverWsEnabled === true],
|
|
16724
16731
|
["cdp_tunnel_over_ws", (toggles) => toggles.cdpTunnelOverWsEnabled === true],
|
|
16725
16732
|
[
|
|
@@ -17231,35 +17238,78 @@ __name(parseDaemonStatusDetail, "parseDaemonStatusDetail");
|
|
|
17231
17238
|
async function buildDaemonStatusResponse(detail, input) {
|
|
17232
17239
|
const bridgeSnapshot = input.bridge.getDaemonStatusSnapshot();
|
|
17233
17240
|
const lastActivity = input.bridge.lastActivityAt ?? null;
|
|
17241
|
+
const workspaceRuntimes = input.workspaceRegistry?.list();
|
|
17242
|
+
const workspaceSnapshots = workspaceRuntimes?.map((runtime) => ({
|
|
17243
|
+
workspaceCwd: runtime.workspaceCwd,
|
|
17244
|
+
snapshot: runtime.bridge === input.bridge ? bridgeSnapshot : runtime.bridge.getDaemonStatusSnapshot(),
|
|
17245
|
+
lastActivity: runtime.bridge === input.bridge ? lastActivity : runtime.bridge.lastActivityAt ?? null
|
|
17246
|
+
})) ?? [
|
|
17247
|
+
{
|
|
17248
|
+
workspaceCwd: input.boundWorkspace,
|
|
17249
|
+
snapshot: bridgeSnapshot,
|
|
17250
|
+
lastActivity
|
|
17251
|
+
}
|
|
17252
|
+
];
|
|
17253
|
+
const aggregatedSessionCount = workspaceSnapshots.reduce(
|
|
17254
|
+
(sum, item) => sum + item.snapshot.sessionCount,
|
|
17255
|
+
0
|
|
17256
|
+
);
|
|
17257
|
+
const aggregatedPendingPermissionCount = workspaceSnapshots.reduce(
|
|
17258
|
+
(sum, item) => sum + item.snapshot.pendingPermissionCount,
|
|
17259
|
+
0
|
|
17260
|
+
);
|
|
17261
|
+
const aggregatedChannelLive = workspaceSnapshots.some(
|
|
17262
|
+
(item) => item.snapshot.channelLive
|
|
17263
|
+
);
|
|
17264
|
+
const aggregatedLastActivity = workspaceSnapshots.reduce(
|
|
17265
|
+
(latest, item) => item.lastActivity !== null && (latest === null || item.lastActivity > latest) ? item.lastActivity : latest,
|
|
17266
|
+
null
|
|
17267
|
+
);
|
|
17234
17268
|
const acpSnapshot = input.acpHandle?.registry.getSnapshot();
|
|
17235
17269
|
const rateLimitHits = input.rateLimiter?.getHitCounts() ?? zeroRateHits();
|
|
17236
17270
|
let pendingPrompts = 0;
|
|
17237
17271
|
let derivedQueuedPrompts = 0;
|
|
17238
|
-
|
|
17239
|
-
|
|
17240
|
-
|
|
17241
|
-
|
|
17242
|
-
|
|
17243
|
-
|
|
17272
|
+
const derivedQueuedPromptsByWorkspace = [];
|
|
17273
|
+
for (const [index, { snapshot }] of workspaceSnapshots.entries()) {
|
|
17274
|
+
let derivedQueuedPromptsForWorkspace = 0;
|
|
17275
|
+
for (const session of snapshot.sessions) {
|
|
17276
|
+
pendingPrompts += session.pendingPromptCount;
|
|
17277
|
+
const sessionQueuedPrompts = Math.max(
|
|
17278
|
+
0,
|
|
17279
|
+
session.pendingPromptCount - (session.hasActivePrompt ? 1 : 0)
|
|
17280
|
+
);
|
|
17281
|
+
derivedQueuedPrompts += sessionQueuedPrompts;
|
|
17282
|
+
derivedQueuedPromptsForWorkspace += sessionQueuedPrompts;
|
|
17283
|
+
}
|
|
17284
|
+
derivedQueuedPromptsByWorkspace[index] = derivedQueuedPromptsForWorkspace;
|
|
17244
17285
|
}
|
|
17245
|
-
const queuedPrompts =
|
|
17286
|
+
const queuedPrompts = workspaceRuntimes?.reduce(
|
|
17287
|
+
(sum, runtime, index) => sum + (runtime.bridge.pendingPromptTotal ?? derivedQueuedPromptsByWorkspace[index] ?? 0),
|
|
17288
|
+
0
|
|
17289
|
+
) ?? input.bridge.pendingPromptTotal ?? derivedQueuedPrompts;
|
|
17246
17290
|
const channelWorker = input.getChannelWorkerSnapshot?.() ?? {
|
|
17247
17291
|
enabled: false,
|
|
17248
17292
|
state: "disabled",
|
|
17249
17293
|
channels: []
|
|
17250
17294
|
};
|
|
17295
|
+
const totalAdmissionSnapshot = input.getTotalSessionAdmissionSnapshot?.();
|
|
17251
17296
|
const issues = [];
|
|
17252
17297
|
let full;
|
|
17253
17298
|
pushRuntimeIssues(
|
|
17254
17299
|
issues,
|
|
17255
|
-
bridgeSnapshot,
|
|
17256
17300
|
acpSnapshot,
|
|
17257
17301
|
rateLimitHits,
|
|
17258
17302
|
input,
|
|
17259
|
-
channelWorker
|
|
17303
|
+
channelWorker,
|
|
17304
|
+
totalAdmissionSnapshot,
|
|
17305
|
+
workspaceSnapshots
|
|
17260
17306
|
);
|
|
17261
17307
|
if (detail === "full") {
|
|
17262
|
-
full = await buildFullStatus(
|
|
17308
|
+
full = await buildFullStatus(
|
|
17309
|
+
input,
|
|
17310
|
+
acpSnapshot,
|
|
17311
|
+
workspaceSnapshots.flatMap((item) => item.snapshot.sessions)
|
|
17312
|
+
);
|
|
17263
17313
|
pushFullIssues(issues, full);
|
|
17264
17314
|
}
|
|
17265
17315
|
return {
|
|
@@ -17288,26 +17338,39 @@ async function buildDaemonStatusResponse(detail, input) {
|
|
|
17288
17338
|
},
|
|
17289
17339
|
limits: {
|
|
17290
17340
|
maxSessions: bridgeSnapshot.limits.maxSessions,
|
|
17341
|
+
maxTotalSessions: positiveFiniteOrNull(input.opts.maxTotalSessions),
|
|
17291
17342
|
maxPendingPromptsPerSession: bridgeSnapshot.limits.maxPendingPromptsPerSession,
|
|
17292
17343
|
listenerMaxConnections: listenerMaxConnections(input.opts.maxConnections),
|
|
17293
17344
|
eventRingSize: bridgeSnapshot.limits.eventRingSize,
|
|
17345
|
+
compactedReplayMaxBytes: bridgeSnapshot.limits.compactedReplayMaxBytes,
|
|
17294
17346
|
promptDeadlineMs: positiveFiniteOrNull(input.opts.promptDeadlineMs),
|
|
17295
17347
|
writerIdleTimeoutMs: positiveFiniteOrNull(input.opts.writerIdleTimeoutMs),
|
|
17296
17348
|
channelIdleTimeoutMs: bridgeSnapshot.limits.channelIdleTimeoutMs,
|
|
17297
17349
|
sessionIdleTimeoutMs: bridgeSnapshot.limits.sessionIdleTimeoutMs,
|
|
17298
17350
|
acpConnectionCap: acpSnapshot?.connectionCap ?? null
|
|
17299
17351
|
},
|
|
17352
|
+
...workspaceRuntimes && workspaceRuntimes.length > 1 ? {
|
|
17353
|
+
workspaces: workspaceRuntimes.map((runtime) => ({
|
|
17354
|
+
id: runtime.workspaceId,
|
|
17355
|
+
cwd: runtime.workspaceCwd,
|
|
17356
|
+
primary: runtime.primary,
|
|
17357
|
+
trusted: runtime.trusted
|
|
17358
|
+
}))
|
|
17359
|
+
} : {},
|
|
17300
17360
|
capabilities: {
|
|
17301
17361
|
protocolVersions: input.protocolVersions,
|
|
17302
17362
|
features: [...input.features]
|
|
17303
17363
|
},
|
|
17304
17364
|
runtime: {
|
|
17305
|
-
sessions: {
|
|
17365
|
+
sessions: {
|
|
17366
|
+
active: aggregatedSessionCount,
|
|
17367
|
+
...totalAdmissionSnapshot ? { admissionInFlight: totalAdmissionSnapshot.inFlight } : {}
|
|
17368
|
+
},
|
|
17306
17369
|
permissions: {
|
|
17307
|
-
pending:
|
|
17370
|
+
pending: aggregatedPendingPermissionCount,
|
|
17308
17371
|
policy: bridgeSnapshot.permissionPolicy
|
|
17309
17372
|
},
|
|
17310
|
-
channel: { live:
|
|
17373
|
+
channel: { live: aggregatedChannelLive },
|
|
17311
17374
|
channelWorker,
|
|
17312
17375
|
transport: {
|
|
17313
17376
|
restSseActive: input.getRestSseActive(),
|
|
@@ -17328,11 +17391,14 @@ async function buildDaemonStatusResponse(detail, input) {
|
|
|
17328
17391
|
...input.getPerfSnapshot ? { perf: input.getPerfSnapshot() } : {},
|
|
17329
17392
|
...input.getMetricsSeries ? { metrics: { series: input.getMetricsSeries() } } : {},
|
|
17330
17393
|
activity: {
|
|
17331
|
-
activePrompts:
|
|
17394
|
+
activePrompts: workspaceRuntimes?.reduce(
|
|
17395
|
+
(sum, runtime) => sum + (runtime.bridge.activePromptCount ?? 0),
|
|
17396
|
+
0
|
|
17397
|
+
) ?? input.bridge.activePromptCount ?? 0,
|
|
17332
17398
|
pendingPrompts,
|
|
17333
17399
|
queuedPrompts,
|
|
17334
|
-
lastActivityAt:
|
|
17335
|
-
idleSinceMs:
|
|
17400
|
+
lastActivityAt: aggregatedLastActivity !== null ? new Date(aggregatedLastActivity).toISOString() : null,
|
|
17401
|
+
idleSinceMs: aggregatedLastActivity !== null ? Date.now() - aggregatedLastActivity : null
|
|
17336
17402
|
},
|
|
17337
17403
|
process: process.memoryUsage()
|
|
17338
17404
|
},
|
|
@@ -17354,7 +17420,7 @@ function cloneStartup(startup) {
|
|
|
17354
17420
|
};
|
|
17355
17421
|
}
|
|
17356
17422
|
__name(cloneStartup, "cloneStartup");
|
|
17357
|
-
async function buildFullStatus(input,
|
|
17423
|
+
async function buildFullStatus(input, acpSnapshot, sessions) {
|
|
17358
17424
|
const ctx = {
|
|
17359
17425
|
route: "GET /daemon/status",
|
|
17360
17426
|
workspaceCwd: input.boundWorkspace
|
|
@@ -17394,7 +17460,7 @@ async function buildFullStatus(input, bridgeSnapshot, acpSnapshot) {
|
|
|
17394
17460
|
)
|
|
17395
17461
|
]);
|
|
17396
17462
|
return {
|
|
17397
|
-
sessions
|
|
17463
|
+
sessions,
|
|
17398
17464
|
acpConnections: acpSnapshot?.connections ?? [],
|
|
17399
17465
|
workspace: {
|
|
17400
17466
|
mcp,
|
|
@@ -17452,13 +17518,30 @@ async function withTimeout(promise, section, timeoutMs) {
|
|
|
17452
17518
|
}
|
|
17453
17519
|
}
|
|
17454
17520
|
__name(withTimeout, "withTimeout");
|
|
17455
|
-
function pushRuntimeIssues(issues,
|
|
17456
|
-
|
|
17457
|
-
|
|
17458
|
-
|
|
17459
|
-
|
|
17460
|
-
|
|
17461
|
-
|
|
17521
|
+
function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWorker, totalAdmissionSnapshot, workspaceSnapshots) {
|
|
17522
|
+
for (const { workspaceCwd, snapshot } of workspaceSnapshots) {
|
|
17523
|
+
if (snapshot.limits.maxSessions !== null && snapshot.limits.maxSessions > 0 && snapshot.sessionCount / snapshot.limits.maxSessions >= CAPACITY_WARNING_RATIO) {
|
|
17524
|
+
issues.push({
|
|
17525
|
+
code: "session_capacity_high",
|
|
17526
|
+
severity: "warning",
|
|
17527
|
+
message: workspaceSnapshots.length > 1 ? `Workspace ${workspaceCwd} active sessions are at ${snapshot.sessionCount}/${snapshot.limits.maxSessions}.` : `Active sessions are at ${snapshot.sessionCount}/${snapshot.limits.maxSessions}.`
|
|
17528
|
+
});
|
|
17529
|
+
}
|
|
17530
|
+
}
|
|
17531
|
+
const maxTotalSessions = positiveFiniteOrNull(input.opts.maxTotalSessions);
|
|
17532
|
+
if (maxTotalSessions !== null) {
|
|
17533
|
+
const fallbackLiveCount = workspaceSnapshots.reduce(
|
|
17534
|
+
(sum, item) => sum + item.snapshot.sessionCount,
|
|
17535
|
+
0
|
|
17536
|
+
);
|
|
17537
|
+
const totalActive = (totalAdmissionSnapshot?.liveCount ?? fallbackLiveCount) + (totalAdmissionSnapshot?.inFlight ?? 0);
|
|
17538
|
+
if (totalActive / maxTotalSessions >= CAPACITY_WARNING_RATIO) {
|
|
17539
|
+
issues.push({
|
|
17540
|
+
code: "total_session_capacity_high",
|
|
17541
|
+
severity: "warning",
|
|
17542
|
+
message: `Total active and in-flight sessions are at ${totalActive}/${maxTotalSessions}.`
|
|
17543
|
+
});
|
|
17544
|
+
}
|
|
17462
17545
|
}
|
|
17463
17546
|
if (acpSnapshot !== void 0 && acpSnapshot.connectionCap !== null && acpSnapshot.connectionCap > 0 && acpSnapshot.connectionCount / acpSnapshot.connectionCap >= CAPACITY_WARNING_RATIO) {
|
|
17464
17547
|
issues.push({
|
|
@@ -17467,18 +17550,25 @@ function pushRuntimeIssues(issues, bridgeSnapshot, acpSnapshot, rateLimitHits, i
|
|
|
17467
17550
|
message: `ACP connections are at ${acpSnapshot.connectionCount}/${acpSnapshot.connectionCap}.`
|
|
17468
17551
|
});
|
|
17469
17552
|
}
|
|
17470
|
-
|
|
17553
|
+
const pendingPermissionCount = workspaceSnapshots.reduce(
|
|
17554
|
+
(sum, item) => sum + item.snapshot.pendingPermissionCount,
|
|
17555
|
+
0
|
|
17556
|
+
);
|
|
17557
|
+
if (pendingPermissionCount > 0) {
|
|
17471
17558
|
issues.push({
|
|
17472
17559
|
code: "pending_permissions",
|
|
17473
17560
|
severity: "warning",
|
|
17474
|
-
message: `${
|
|
17561
|
+
message: `${pendingPermissionCount} permission request(s) are pending.`
|
|
17475
17562
|
});
|
|
17476
17563
|
}
|
|
17477
|
-
|
|
17564
|
+
const downWorkspaces = workspaceSnapshots.filter(
|
|
17565
|
+
(item) => item.snapshot.sessionCount > 0 && !item.snapshot.channelLive
|
|
17566
|
+
);
|
|
17567
|
+
if (downWorkspaces.length > 0) {
|
|
17478
17568
|
issues.push({
|
|
17479
17569
|
code: "acp_channel_down",
|
|
17480
17570
|
severity: "error",
|
|
17481
|
-
message:
|
|
17571
|
+
message: downWorkspaces.length === 1 ? `Active sessions exist but the ACP channel is not live for ${downWorkspaces[0].workspaceCwd}.` : `Active sessions exist but the ACP channel is not live for ${downWorkspaces.length} workspace(s).`
|
|
17482
17572
|
});
|
|
17483
17573
|
}
|
|
17484
17574
|
if (input.opts.rateLimit === true && sumRateHits(rateLimitHits) > 0) {
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
init_esbuild_shims
|
|
5
|
+
} from "./chunk-A4BMJM77.js";
|
|
6
|
+
|
|
7
|
+
// packages/cli/src/config/shared-env-keys.ts
|
|
8
|
+
init_esbuild_shims();
|
|
9
|
+
var DEFAULT_EXCLUDED_ENV_VARS = ["DEBUG", "DEBUG_MODE"];
|
|
10
|
+
var ENV_CORRUPTED_PATH = "QWEN_CODE_SETTINGS_CORRUPTED_PATH";
|
|
11
|
+
var ENV_WAS_RECOVERED = "QWEN_CODE_SETTINGS_WAS_RECOVERED";
|
|
12
|
+
var PROJECT_ENV_HARDCODED_EXCLUSIONS = [
|
|
13
|
+
"QWEN_HOME",
|
|
14
|
+
"QWEN_RUNTIME_DIR",
|
|
15
|
+
"QWEN_CODE_MCP_APPROVALS_PATH",
|
|
16
|
+
"QWEN_CODE_TRUSTED_FOLDERS_PATH",
|
|
17
|
+
ENV_CORRUPTED_PATH,
|
|
18
|
+
ENV_WAS_RECOVERED,
|
|
19
|
+
// QWEN_TLS_INSECURE (and NODE_TLS_REJECT_UNAUTHORIZED, which it mirrors)
|
|
20
|
+
// disable TLS certificate verification for all outbound API connections. A
|
|
21
|
+
// project `.env` must never enable either — that would let an untrusted repo
|
|
22
|
+
// silently turn off MITM protection. Opt-in stays with the user via the
|
|
23
|
+
// `--insecure` flag, the shell environment, or a home `.env`. The initial
|
|
24
|
+
// `.env` load only consults this list, so both keys must be here (not just
|
|
25
|
+
// RELOAD_EXCLUDED_KEYS, which only applies on reload).
|
|
26
|
+
"QWEN_TLS_INSECURE",
|
|
27
|
+
"NODE_TLS_REJECT_UNAUTHORIZED"
|
|
28
|
+
];
|
|
29
|
+
var HOME_ENV_BOOTSTRAP_KEYS = [
|
|
30
|
+
"QWEN_HOME",
|
|
31
|
+
"QWEN_RUNTIME_DIR",
|
|
32
|
+
"QWEN_CODE_MCP_APPROVALS_PATH",
|
|
33
|
+
"QWEN_CODE_TRUSTED_FOLDERS_PATH"
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
export {
|
|
37
|
+
DEFAULT_EXCLUDED_ENV_VARS,
|
|
38
|
+
ENV_CORRUPTED_PATH,
|
|
39
|
+
ENV_WAS_RECOVERED,
|
|
40
|
+
PROJECT_ENV_HARDCODED_EXCLUSIONS,
|
|
41
|
+
HOME_ENV_BOOTSTRAP_KEYS
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* @license
|
|
45
|
+
* Copyright 2025 Qwen Team
|
|
46
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
47
|
+
*/
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
TotalSessionLimitExceededError
|
|
5
|
+
} from "./chunk-GGQQA4JW.js";
|
|
6
|
+
import {
|
|
7
|
+
init_esbuild_shims
|
|
8
|
+
} from "./chunk-A4BMJM77.js";
|
|
9
|
+
import {
|
|
10
|
+
__name
|
|
11
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
12
|
+
|
|
13
|
+
// packages/cli/src/serve/total-session-admission.ts
|
|
14
|
+
init_esbuild_shims();
|
|
15
|
+
function createTotalSessionAdmissionController({
|
|
16
|
+
maxTotalSessions,
|
|
17
|
+
getBridges
|
|
18
|
+
}) {
|
|
19
|
+
let inFlight = 0;
|
|
20
|
+
const limit = maxTotalSessions === void 0 || maxTotalSessions === 0 || maxTotalSessions === Number.POSITIVE_INFINITY ? Number.POSITIVE_INFINITY : maxTotalSessions;
|
|
21
|
+
return {
|
|
22
|
+
admit(context) {
|
|
23
|
+
if (limit !== Number.POSITIVE_INFINITY) {
|
|
24
|
+
if (getLiveCount(getBridges()) + inFlight >= limit) {
|
|
25
|
+
throw Object.assign(new TotalSessionLimitExceededError(limit), {
|
|
26
|
+
operation: context.operation,
|
|
27
|
+
workspaceCwd: context.workspaceCwd,
|
|
28
|
+
...context.sessionId ? { sessionId: context.sessionId } : {},
|
|
29
|
+
...context.sourceSessionId ? { sourceSessionId: context.sourceSessionId } : {}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
inFlight++;
|
|
34
|
+
let released = false;
|
|
35
|
+
return {
|
|
36
|
+
release() {
|
|
37
|
+
if (released) return;
|
|
38
|
+
released = true;
|
|
39
|
+
inFlight--;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
},
|
|
43
|
+
snapshot() {
|
|
44
|
+
return { liveCount: getLiveCount(getBridges()), inFlight };
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
__name(createTotalSessionAdmissionController, "createTotalSessionAdmissionController");
|
|
49
|
+
function getLiveCount(bridges) {
|
|
50
|
+
return bridges.reduce((sum, bridge) => sum + bridge.sessionCount, 0);
|
|
51
|
+
}
|
|
52
|
+
__name(getLiveCount, "getLiveCount");
|
|
53
|
+
|
|
54
|
+
export {
|
|
55
|
+
createTotalSessionAdmissionController
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* @license
|
|
59
|
+
* Copyright 2026 Qwen Team
|
|
60
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
61
|
+
*/
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
Client,
|
|
5
5
|
So,
|
|
6
6
|
StdioClientTransport
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-3GNOQZDC.js";
|
|
8
8
|
import "./chunk-5P5XGNYH.js";
|
|
9
9
|
import "./chunk-SKAZWEV5.js";
|
|
10
10
|
import "./chunk-K5PGHDBN.js";
|
|
@@ -19,7 +19,7 @@ import "./chunk-FV7425LN.js";
|
|
|
19
19
|
import "./chunk-MLZQVCF3.js";
|
|
20
20
|
import "./chunk-LQ7TMOCE.js";
|
|
21
21
|
import "./chunk-E5A7LHNN.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-5MBO76SL.js";
|
|
23
23
|
import "./chunk-GO6LNQXT.js";
|
|
24
24
|
import "./chunk-NQKLOAVJ.js";
|
|
25
25
|
import "./chunk-WMPVYQ4P.js";
|
|
@@ -27,12 +27,12 @@ import "./chunk-TLWA7TPR.js";
|
|
|
27
27
|
import "./chunk-QYNNN7BK.js";
|
|
28
28
|
import {
|
|
29
29
|
safeJsonStringify
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-BUZ6HGL4.js";
|
|
31
31
|
import "./chunk-E6US47KI.js";
|
|
32
32
|
import "./chunk-UWCTAVOD.js";
|
|
33
33
|
import "./chunk-OFEVLU4C.js";
|
|
34
34
|
import "./chunk-OMX7CUOE.js";
|
|
35
|
-
import "./chunk-
|
|
35
|
+
import "./chunk-OACJLMLD.js";
|
|
36
36
|
import "./chunk-SUAKHHK7.js";
|
|
37
37
|
import "./chunk-FEJ2FZ3U.js";
|
|
38
38
|
import {
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
collectContextData,
|
|
5
5
|
contextCommand,
|
|
6
6
|
formatContextUsageText
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-WQTHLB5T.js";
|
|
8
8
|
import "./chunk-UIDXQNMV.js";
|
|
9
9
|
import "./chunk-SAIILPQ3.js";
|
|
10
10
|
import "./chunk-KYMBIKIW.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-O33TBKDC.js";
|
|
12
12
|
import "./chunk-Y6Z2O3WR.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-3GNOQZDC.js";
|
|
14
14
|
import "./chunk-5P5XGNYH.js";
|
|
15
15
|
import "./chunk-SKAZWEV5.js";
|
|
16
16
|
import "./chunk-K5PGHDBN.js";
|
|
@@ -25,18 +25,18 @@ import "./chunk-FV7425LN.js";
|
|
|
25
25
|
import "./chunk-MLZQVCF3.js";
|
|
26
26
|
import "./chunk-LQ7TMOCE.js";
|
|
27
27
|
import "./chunk-E5A7LHNN.js";
|
|
28
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-5MBO76SL.js";
|
|
29
29
|
import "./chunk-GO6LNQXT.js";
|
|
30
30
|
import "./chunk-NQKLOAVJ.js";
|
|
31
31
|
import "./chunk-WMPVYQ4P.js";
|
|
32
32
|
import "./chunk-TLWA7TPR.js";
|
|
33
33
|
import "./chunk-QYNNN7BK.js";
|
|
34
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-BUZ6HGL4.js";
|
|
35
35
|
import "./chunk-E6US47KI.js";
|
|
36
36
|
import "./chunk-UWCTAVOD.js";
|
|
37
37
|
import "./chunk-OFEVLU4C.js";
|
|
38
38
|
import "./chunk-OMX7CUOE.js";
|
|
39
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-OACJLMLD.js";
|
|
40
40
|
import "./chunk-SUAKHHK7.js";
|
|
41
41
|
import "./chunk-FEJ2FZ3U.js";
|
|
42
42
|
import "./chunk-X3YGAX7V.js";
|
|
@@ -3322,6 +3322,11 @@ var DAEMON_KNOWN_EVENT_TYPE_VALUES = [
|
|
|
3322
3322
|
// reseeds state. Synthetic (no `id`) so it doesn't burn a slot
|
|
3323
3323
|
// in the per-session monotonic sequence.
|
|
3324
3324
|
"state_resync_required",
|
|
3325
|
+
// Synthetic marker prepended to a bounded `/session/:id/load` replay
|
|
3326
|
+
// snapshot when older replay history was dropped from the daemon's
|
|
3327
|
+
// in-memory window. This is NOT a resync request: consumers should render
|
|
3328
|
+
// it as transcript status and continue applying the retained snapshot.
|
|
3329
|
+
"history_truncated",
|
|
3325
3330
|
// MCP guardrail push events. See `mcp_guardrail_events` capability
|
|
3326
3331
|
// tag. Both fire on the per-session SSE bus; consumers should
|
|
3327
3332
|
// pre-flight `caps.features.includes('mcp_guardrail_events')`
|
|
@@ -3418,6 +3423,7 @@ var MAX_PENDING_PER_SESSION = 64;
|
|
|
3418
3423
|
var MAX_FORBIDDEN_VOTES_PER_SESSION = 32;
|
|
3419
3424
|
var RESYNC_PASSTHROUGH_TYPES = /* @__PURE__ */ new Set([
|
|
3420
3425
|
"state_resync_required",
|
|
3426
|
+
"history_truncated",
|
|
3421
3427
|
"session_died",
|
|
3422
3428
|
"session_closed",
|
|
3423
3429
|
"client_evicted",
|
|
@@ -3475,6 +3481,8 @@ function createDaemonSessionViewState(seed = {}) {
|
|
|
3475
3481
|
awaitingResync: seed.awaitingResync ?? false,
|
|
3476
3482
|
resyncRequiredCount: seed.resyncRequiredCount ?? 0,
|
|
3477
3483
|
lastResyncRequired: seed.lastResyncRequired,
|
|
3484
|
+
historyTruncatedCount: seed.historyTruncatedCount ?? 0,
|
|
3485
|
+
lastHistoryTruncated: seed.lastHistoryTruncated,
|
|
3478
3486
|
lastFollowupSuggestion: seed.lastFollowupSuggestion,
|
|
3479
3487
|
rewindCount: seed.rewindCount ?? 0,
|
|
3480
3488
|
lastRewind: seed.lastRewind,
|
|
@@ -3537,6 +3545,8 @@ function asKnownDaemonEvent(event) {
|
|
|
3537
3545
|
return isStreamErrorData(event.data) ? event : void 0;
|
|
3538
3546
|
case "state_resync_required":
|
|
3539
3547
|
return isStateResyncRequiredData(event.data) ? event : void 0;
|
|
3548
|
+
case "history_truncated":
|
|
3549
|
+
return isHistoryTruncatedData(event.data) ? event : void 0;
|
|
3540
3550
|
case "mcp_budget_warning":
|
|
3541
3551
|
return isMcpBudgetWarningData(event.data) ? event : void 0;
|
|
3542
3552
|
case "mcp_child_refused_batch":
|
|
@@ -3773,6 +3783,12 @@ function reduceDaemonSessionEvent(state, rawEvent) {
|
|
|
3773
3783
|
resyncRequiredCount: base.resyncRequiredCount + 1,
|
|
3774
3784
|
lastResyncRequired: event.data
|
|
3775
3785
|
};
|
|
3786
|
+
case "history_truncated":
|
|
3787
|
+
return {
|
|
3788
|
+
...base,
|
|
3789
|
+
historyTruncatedCount: base.historyTruncatedCount + 1,
|
|
3790
|
+
lastHistoryTruncated: event.data
|
|
3791
|
+
};
|
|
3776
3792
|
case "mcp_budget_warning":
|
|
3777
3793
|
return {
|
|
3778
3794
|
...base,
|
|
@@ -4136,6 +4152,14 @@ function isStateResyncRequiredData(value) {
|
|
|
4136
4152
|
return isRecord(value) && isNonEmptyString(value["reason"]) && isFiniteNumber(value["lastDeliveredId"]) && isFiniteNumber(value["earliestAvailableId"]);
|
|
4137
4153
|
}
|
|
4138
4154
|
__name(isStateResyncRequiredData, "isStateResyncRequiredData");
|
|
4155
|
+
function isHistoryTruncatedData(value) {
|
|
4156
|
+
if (!isRecord(value) || value["reason"] !== "replay_window_exceeded" || !isFiniteNumber(value["truncatedEvents"]) || !isFiniteNumber(value["retainedEvents"]) || !isFiniteNumber(value["maxBytes"]) || value["fullTranscriptAvailable"] !== false) {
|
|
4157
|
+
return false;
|
|
4158
|
+
}
|
|
4159
|
+
const truncatedTurns = value["truncatedTurns"];
|
|
4160
|
+
return isNonNegativeInteger(value["truncatedEvents"]) && isNonNegativeInteger(value["retainedEvents"]) && isNonNegativeInteger(value["maxBytes"]) && (truncatedTurns === void 0 || isNonNegativeInteger(truncatedTurns));
|
|
4161
|
+
}
|
|
4162
|
+
__name(isHistoryTruncatedData, "isHistoryTruncatedData");
|
|
4139
4163
|
function isSlowClientWarningData(value) {
|
|
4140
4164
|
if (!isRecord(value)) return false;
|
|
4141
4165
|
const threshold = value["threshold"];
|
|
@@ -4372,6 +4396,10 @@ function isOptionalNumberOrNull(value) {
|
|
|
4372
4396
|
return value === void 0 || value === null || isFiniteNumber(value);
|
|
4373
4397
|
}
|
|
4374
4398
|
__name(isOptionalNumberOrNull, "isOptionalNumberOrNull");
|
|
4399
|
+
function isNonNegativeInteger(value) {
|
|
4400
|
+
return isFiniteNumber(value) && Number.isInteger(value) && value >= 0;
|
|
4401
|
+
}
|
|
4402
|
+
__name(isNonNegativeInteger, "isNonNegativeInteger");
|
|
4375
4403
|
function isOptionalStringOrNull(value) {
|
|
4376
4404
|
return value === void 0 || value === null || typeof value === "string";
|
|
4377
4405
|
}
|
|
@@ -4780,6 +4808,8 @@ function normalizeDaemonEvent(event, opts = {}) {
|
|
|
4780
4808
|
}
|
|
4781
4809
|
case "state_resync_required":
|
|
4782
4810
|
return normalizeStateResyncRequired(event, base);
|
|
4811
|
+
case "history_truncated":
|
|
4812
|
+
return normalizeHistoryTruncated(event, base);
|
|
4783
4813
|
case "session_rewound":
|
|
4784
4814
|
return normalizeSessionRewound(event, base);
|
|
4785
4815
|
case "session_branched":
|
|
@@ -4905,6 +4935,24 @@ function normalizeStateResyncRequired(event, base) {
|
|
|
4905
4935
|
];
|
|
4906
4936
|
}
|
|
4907
4937
|
__name(normalizeStateResyncRequired, "normalizeStateResyncRequired");
|
|
4938
|
+
function normalizeHistoryTruncated(event, base) {
|
|
4939
|
+
const reason = getString2(event.data, "reason");
|
|
4940
|
+
const truncatedEvents = numberField(event.data, "truncatedEvents");
|
|
4941
|
+
const retainedEvents = numberField(event.data, "retainedEvents");
|
|
4942
|
+
const maxBytes = numberField(event.data, "maxBytes");
|
|
4943
|
+
if (reason !== "replay_window_exceeded" || truncatedEvents === void 0 || retainedEvents === void 0 || maxBytes === void 0 || isRecord2(event.data) && event.data["fullTranscriptAvailable"] !== false) {
|
|
4944
|
+
return fallbackDebug(event, base, "malformed history_truncated payload");
|
|
4945
|
+
}
|
|
4946
|
+
return [
|
|
4947
|
+
{
|
|
4948
|
+
...base,
|
|
4949
|
+
type: "status",
|
|
4950
|
+
text: `History truncated: retained ${retainedEvents}, dropped ${truncatedEvents} (window ${maxBytes} bytes).`,
|
|
4951
|
+
source: "history_truncated"
|
|
4952
|
+
}
|
|
4953
|
+
];
|
|
4954
|
+
}
|
|
4955
|
+
__name(normalizeHistoryTruncated, "normalizeHistoryTruncated");
|
|
4908
4956
|
function normalizeSessionRewound(event, base) {
|
|
4909
4957
|
const promptId = getString2(event.data, "promptId");
|
|
4910
4958
|
const targetTurnIndex = numberField(event.data, "targetTurnIndex");
|
|
@@ -2,23 +2,25 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
createDaemonStatusProvider
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-L46XKEGM.js";
|
|
6
|
+
import "./chunk-JZHIQJOE.js";
|
|
7
7
|
import "./chunk-KHDZHZMH.js";
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-B34OV7K2.js";
|
|
8
|
+
import "./chunk-O7FIRWJV.js";
|
|
9
|
+
import "./chunk-PMFULMLX.js";
|
|
11
10
|
import "./chunk-AGHU5VRK.js";
|
|
11
|
+
import "./chunk-3UP777ZS.js";
|
|
12
|
+
import "./chunk-GLE2YUPU.js";
|
|
13
|
+
import "./chunk-P7M4GA57.js";
|
|
14
|
+
import "./chunk-GGQQA4JW.js";
|
|
12
15
|
import "./chunk-ER3BKOLB.js";
|
|
13
|
-
import "./chunk-G7ZG7CA6.js";
|
|
14
16
|
import "./chunk-VRDMOSQS.js";
|
|
15
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-BOBOCR5H.js";
|
|
16
18
|
import "./chunk-EXPMGZZV.js";
|
|
17
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-LAXNEOBG.js";
|
|
18
20
|
import "./chunk-HLKG6CZN.js";
|
|
19
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-UXEW557D.js";
|
|
20
22
|
import "./chunk-43W4YSO6.js";
|
|
21
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-3GNOQZDC.js";
|
|
22
24
|
import "./chunk-5P5XGNYH.js";
|
|
23
25
|
import "./chunk-SKAZWEV5.js";
|
|
24
26
|
import "./chunk-K5PGHDBN.js";
|
|
@@ -33,18 +35,18 @@ import "./chunk-FV7425LN.js";
|
|
|
33
35
|
import "./chunk-MLZQVCF3.js";
|
|
34
36
|
import "./chunk-LQ7TMOCE.js";
|
|
35
37
|
import "./chunk-E5A7LHNN.js";
|
|
36
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-5MBO76SL.js";
|
|
37
39
|
import "./chunk-GO6LNQXT.js";
|
|
38
40
|
import "./chunk-NQKLOAVJ.js";
|
|
39
41
|
import "./chunk-WMPVYQ4P.js";
|
|
40
42
|
import "./chunk-TLWA7TPR.js";
|
|
41
43
|
import "./chunk-QYNNN7BK.js";
|
|
42
|
-
import "./chunk-
|
|
44
|
+
import "./chunk-BUZ6HGL4.js";
|
|
43
45
|
import "./chunk-E6US47KI.js";
|
|
44
46
|
import "./chunk-UWCTAVOD.js";
|
|
45
47
|
import "./chunk-OFEVLU4C.js";
|
|
46
48
|
import "./chunk-OMX7CUOE.js";
|
|
47
|
-
import "./chunk-
|
|
49
|
+
import "./chunk-OACJLMLD.js";
|
|
48
50
|
import "./chunk-SUAKHHK7.js";
|
|
49
51
|
import "./chunk-FEJ2FZ3U.js";
|
|
50
52
|
import "./chunk-X3YGAX7V.js";
|
|
@@ -1556,7 +1556,32 @@ var de_default = {
|
|
|
1556
1556
|
reqs: "Anfr.",
|
|
1557
1557
|
in: "ein",
|
|
1558
1558
|
out: "aus",
|
|
1559
|
-
"In/Out": "Ein/Aus"
|
|
1559
|
+
"In/Out": "Ein/Aus",
|
|
1560
|
+
// ============================================================================
|
|
1561
|
+
// reload-plugins command
|
|
1562
|
+
// ============================================================================
|
|
1563
|
+
"{{count}} extension": "{{count}} extension",
|
|
1564
|
+
"{{count}} extensions": "{{count}} extensions",
|
|
1565
|
+
"{{count}} command": "{{count}} command",
|
|
1566
|
+
"{{count}} commands": "{{count}} commands",
|
|
1567
|
+
"{{count}} skill": "{{count}} skill",
|
|
1568
|
+
"{{count}} skills": "{{count}} skills",
|
|
1569
|
+
"{{count}} agent": "{{count}} agent",
|
|
1570
|
+
"{{count}} agents": "{{count}} agents",
|
|
1571
|
+
"{{count}} hook": "{{count}} hook",
|
|
1572
|
+
"{{count}} hooks": "{{count}} hooks",
|
|
1573
|
+
"{{count}} extension MCP server": "{{count}} extension MCP server",
|
|
1574
|
+
"{{count}} extension MCP servers": "{{count}} extension MCP servers",
|
|
1575
|
+
"{{count}} extension LSP server": "{{count}} extension LSP server",
|
|
1576
|
+
"{{count}} extension LSP servers": "{{count}} extension LSP servers",
|
|
1577
|
+
"Reload extension changes from disk": "Reload extension changes from disk",
|
|
1578
|
+
"Reloaded extensions: {{summary}}": "Reloaded extensions: {{summary}}",
|
|
1579
|
+
"Reload failed: {{message}}": "Reload failed: {{message}}",
|
|
1580
|
+
"Reload failed.": "Reload failed.",
|
|
1581
|
+
"Extensions changed on disk. Run /reload-plugins to apply updates.": "Extensions changed on disk. Run /reload-plugins to apply updates.",
|
|
1582
|
+
"Failed to refresh extension content: {{message}}. Run /reload-plugins to apply updates.": "Failed to refresh extension content: {{message}}. Run /reload-plugins to apply updates.",
|
|
1583
|
+
"Failed to refresh extension content. Run /reload-plugins to apply updates.": "Failed to refresh extension content. Run /reload-plugins to apply updates.",
|
|
1584
|
+
"Extension reload did not complete. Run /reload-plugins to try again.": "Extension reload did not complete. Run /reload-plugins to try again."
|
|
1560
1585
|
};
|
|
1561
1586
|
export {
|
|
1562
1587
|
de_default as default
|