@qwen-code/qwen-code 0.19.7 → 0.19.8-nightly.20260710.205430235
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/SKILL.md +1 -0
- package/bundled/qc-helper/docs/configuration/auth.md +40 -55
- package/bundled/qc-helper/docs/configuration/model-providers.md +224 -218
- package/bundled/qc-helper/docs/configuration/settings.md +43 -36
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +20 -12
- package/bundled/qc-helper/docs/features/channels/plugins.md +1 -0
- package/bundled/qc-helper/docs/features/code-review.md +2 -1
- package/bundled/qc-helper/docs/features/commands.md +39 -38
- package/bundled/qc-helper/docs/features/computer-use.md +77 -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/features/tool-use-summaries.md +19 -23
- package/bundled/qc-helper/docs/qwen-serve.md +22 -12
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
- package/bundled/review/DESIGN.md +14 -13
- package/bundled/review/SKILL.md +38 -61
- package/chunks/{MaxSizedBox-XY5LIO5O.js → MaxSizedBox-LOFYQFYJ.js} +13 -14
- package/chunks/{StandaloneSessionPicker-APISIRJZ.js → StandaloneSessionPicker-U5OQBGEB.js} +31 -29
- package/chunks/{acpAgent-MMOSC2YA.js → acpAgent-SDIFRIED.js} +637 -131
- package/chunks/{agent-TKIBLLQT.js → agent-JIBBVHNQ.js} +10 -10
- package/chunks/{agent-headless-VLX4C7KX.js → agent-headless-6LGZYJYU.js} +10 -10
- package/chunks/{anthropicContentGenerator-AKYPSZIV.js → anthropicContentGenerator-55REPTTF.js} +30 -3
- package/chunks/{artifact-tool-D233YJFH.js → artifact-tool-EIN46DPM.js} +1 -1
- package/chunks/{askUserQuestion-MKL5ZTMC.js → askUserQuestion-6YX6ZRX7.js} +1 -1
- package/chunks/{bridge-BCU73DZO.js → bridge-HVPFYNM4.js} +17 -16
- package/chunks/{ca-HCMB2I54.js → ca-MULEGDVS.js} +89 -5
- package/chunks/{channel-worker-supervisor-CRCVYQIE.js → channel-worker-supervisor-OPXXT4JK.js} +20 -3
- package/chunks/{chunk-DGHJTO2K.js → chunk-2AF26HVM.js} +31 -2
- package/chunks/{chunk-3B26UVCX.js → chunk-2GUVUHJY.js} +6 -4
- package/chunks/{chunk-FV7425LN.js → chunk-2SZOMGOR.js} +4 -1
- package/chunks/{chunk-CNSF3WO5.js → chunk-32KS5XSX.js} +3 -3
- package/chunks/{chunk-4UCTWSTP.js → chunk-34UUM3IN.js} +1 -1
- package/chunks/{chunk-G7ZG7CA6.js → chunk-3UP777ZS.js} +8 -7
- package/chunks/{chunk-MIG5SQNL.js → chunk-4CSVIZLT.js} +4 -4
- package/chunks/{chunk-GD236YPV.js → chunk-4ONWIT5C.js} +1 -1
- package/chunks/{chunk-4ZJIPVPB.js → chunk-4XK7TNBP.js} +8 -8
- package/chunks/{chunk-I4A4K72C.js → chunk-5F2H3PXG.js} +446 -232
- package/chunks/chunk-5HOF2K5U.js +19 -0
- package/chunks/{chunk-GMOWQOQQ.js → chunk-5ZVIYNLN.js} +228 -36
- package/chunks/chunk-6O6Z2I5Q.js +292 -0
- package/chunks/{chunk-RYFZCUJO.js → chunk-6QKT5VNZ.js} +14 -6
- package/chunks/{chunk-SD4N3QJ2.js → chunk-6ZPSVWLF.js} +61 -17
- package/chunks/{chunk-X265R5C6.js → chunk-7YGSDQ5J.js} +2 -2
- package/chunks/{chunk-PRDFOIZF.js → chunk-A6KEUFJO.js} +32 -5
- package/chunks/{chunk-OWVIH4HY.js → chunk-B5OAMPJ5.js} +389 -87
- package/chunks/{chunk-ME3YSROJ.js → chunk-CV2AT2WJ.js} +22 -10
- package/chunks/{chunk-U4FRHCLA.js → chunk-DDKUYKHA.js} +1912 -201
- package/chunks/{chunk-YDSYD7UI.js → chunk-E3SA2LY4.js} +2 -2
- package/chunks/{chunk-6IAWPIQ6.js → chunk-EDM5O3SX.js} +2 -2
- package/chunks/{chunk-CISB3IQF.js → chunk-FONJQQWI.js} +65 -6
- package/chunks/{chunk-FRFFNYUY.js → chunk-G3WIMNL4.js} +3 -3
- package/chunks/{chunk-B34OV7K2.js → chunk-GGQQA4JW.js} +13 -0
- package/chunks/chunk-GLE2YUPU.js +34 -0
- package/chunks/{chunk-MJI36HER.js → chunk-GOTMC3BX.js} +1 -1
- package/chunks/{chunk-RFIL6REB.js → chunk-GRB4QSBD.js} +168 -31
- package/chunks/chunk-GVVY7GSP.js +38 -0
- package/chunks/{chunk-7JGISHHZ.js → chunk-HDEUQRAR.js} +14 -156
- package/chunks/{chunk-NZEGNV4V.js → chunk-HPRI22FZ.js} +6 -6
- package/chunks/{chunk-STAZRKOT.js → chunk-I34IHZFJ.js} +117 -459
- package/chunks/{chunk-JF7DFPQ5.js → chunk-I3MBKL6Z.js} +12 -2
- package/chunks/{chunk-DNV4FSN5.js → chunk-I5XN6KDI.js} +21 -4
- package/chunks/{chunk-VZ7HY3YU.js → chunk-IAMRWMFU.js} +1 -1
- package/chunks/{chunk-44NROQYV.js → chunk-JOQMY62N.js} +1 -1
- package/chunks/{chunk-VQWAZSXN.js → chunk-JW4IKIZ2.js} +57 -35
- package/chunks/{chunk-SAIILPQ3.js → chunk-KJMYXFUR.js} +3 -1
- package/chunks/{chunk-AFOLR6YL.js → chunk-KQ6MKCFE.js} +102 -16
- package/chunks/{chunk-X3YGAX7V.js → chunk-KS2FRTYI.js} +2 -0
- package/chunks/{chunk-IUE7YWC3.js → chunk-LE7EF36E.js} +7 -7
- package/chunks/{chunk-B4U2M63D.js → chunk-LRY7HD3Q.js} +2101 -11
- package/chunks/{chunk-PUQLHSQ2.js → chunk-ME7E6WZB.js} +6 -8
- package/chunks/{chunk-LEIJKM7Q.js → chunk-MEK7ZRJ3.js} +1 -1
- package/chunks/{chunk-AJBEAUIS.js → chunk-MG2TNCRX.js} +4 -3
- package/chunks/{chunk-GL5TV7B5.js → chunk-MSMQURDV.js} +21 -5
- package/chunks/{chunk-6BN7NZ5Z.js → chunk-NXDJLKKX.js} +4 -6
- package/chunks/{chunk-FEJ2FZ3U.js → chunk-NY2ZOFMM.js} +1 -1
- package/chunks/{chunk-QZF5U5KA.js → chunk-NY5BE643.js} +8 -8
- package/chunks/{chunk-4RQIB5UZ.js → chunk-O2YT7VB4.js} +0 -34
- package/chunks/{chunk-4KJ2BPIT.js → chunk-OACJLMLD.js} +2 -38
- package/chunks/chunk-PCWSPWXZ.js +168 -0
- package/chunks/{chunk-XPJH4PKR.js → chunk-PJ74K3DH.js} +1 -1
- package/chunks/{chunk-FTFXDZYI.js → chunk-PW7VWRLX.js} +45 -29
- package/chunks/chunk-R3SLDK6Y.js +468 -0
- package/chunks/{chunk-4O344UEE.js → chunk-SDJOZOYY.js} +38 -18
- package/chunks/{chunk-ALZ75L2X.js → chunk-SMYIBRAA.js} +412 -376
- package/chunks/{chunk-CCGOFQV3.js → chunk-SS5P6JM6.js} +6 -5
- package/chunks/{chunk-AIY5UTFI.js → chunk-T3XHYGMG.js} +925 -2872
- package/chunks/{chunk-Q6OEPOOC.js → chunk-TB6GWNV4.js} +1 -1
- package/chunks/{chunk-24XYI5EI.js → chunk-TERKDCOZ.js} +3 -3
- package/chunks/chunk-TVO5C767.js +159 -0
- package/chunks/{chunk-TBAZMRW3.js → chunk-TVW53EK7.js} +1 -1
- package/chunks/chunk-TX5QZYK6.js +296 -0
- package/chunks/{chunk-JD33UY7E.js → chunk-TZRVTPJ6.js} +15 -9
- package/chunks/{chunk-65CFHNSE.js → chunk-UAFB2DNB.js} +59 -59
- package/chunks/{chunk-QAKFYMJI.js → chunk-UOXLB2LY.js} +152 -17
- package/chunks/chunk-V35MD7KN.js +13 -0
- package/chunks/{chunk-XSAFNANZ.js → chunk-VWDJHVXM.js} +12 -12
- package/chunks/{chunk-XISQIIT7.js → chunk-W77ZLCSX.js} +1 -1
- package/chunks/{chunk-BWVQN2HV.js → chunk-WTEIUA2V.js} +4 -4
- package/chunks/{chunk-TDGF35EN.js → chunk-XOHNA2S6.js} +1 -1
- package/chunks/{chunk-HJ3GX3Y3.js → chunk-XZVUZSDG.js} +25 -11
- package/chunks/{chunk-ADZG46HR.js → chunk-YHGCTQG3.js} +1 -1
- package/chunks/{chunk-2NPS2UDH.js → chunk-YUNPEB3Q.js} +478 -43
- package/chunks/chunk-Z3I3QJK3.js +47 -0
- package/chunks/{chunk-P7I3D7FM.js → chunk-Z466FBSA.js} +1 -1
- package/chunks/{chunk-YEGT55NW.js → chunk-ZDAZSR2O.js} +3009 -1220
- package/chunks/{chunk-VEB3NYSO.js → chunk-ZJQBTFJ6.js} +6 -1
- package/chunks/chunk-ZL5HN75Q.js +61 -0
- package/chunks/{computer-use-X4KUU3NM.js → computer-use-IW5XBECT.js} +10 -10
- package/chunks/{contextCommand-LAYJZF7H.js → contextCommand-4QPLK2SH.js} +14 -14
- package/chunks/create-sub-session-7JK3EYWA.js +212 -0
- package/chunks/create-sub-session-EVYZYAE3.js +364 -0
- package/chunks/{cron-create-JSXEIPVS.js → cron-create-2CCO2PW6.js} +2 -2
- package/chunks/{cron-delete-OIFVEPGU.js → cron-delete-ETVTP5IV.js} +2 -2
- package/chunks/{cron-list-D4ZX4IOE.js → cron-list-FS3KWOY5.js} +2 -2
- package/chunks/{daemon-F3I2RXP6.js → daemon-NNUYIBWA.js} +461 -0
- package/chunks/{daemon-status-provider-XSAFKVDS.js → daemon-status-provider-3EPG6BXX.js} +21 -19
- package/chunks/{de-PLLFDERI.js → de-QRG6J2CM.js} +89 -5
- package/chunks/{dist-YTRKAVUB.js → dist-3EIIFOJV.js} +1 -1
- package/chunks/{dist-PKFTNUHO.js → dist-7F5GWZDZ.js} +2 -1
- package/chunks/{dist-FQ5WRJPL.js → dist-CBJ7OJ5R.js} +2 -2
- package/chunks/{dist-OT7G2WNM.js → dist-LIFJ2YAI.js} +1 -1
- package/chunks/{dist-573HNSVO.js → dist-OKXOQ63L.js} +2 -1
- package/chunks/{dist-IMFFBMAT.js → dist-SU5LY5R4.js} +3 -1
- package/chunks/{earlyInputCapture-AERYYGXE.js → earlyInputCapture-HP5XAS7A.js} +10 -10
- package/chunks/{edit-WZTZDGCI.js → edit-MDICC6KH.js} +11 -11
- package/chunks/{en-GA2RMXY5.js → en-HF3KFWZG.js} +91 -5
- package/chunks/{enter-worktree-DEPXBJEL.js → enter-worktree-JWTRNEN4.js} +10 -10
- package/chunks/{enterPlanMode-JFGXZHHJ.js → enterPlanMode-GMRZMTBQ.js} +10 -10
- package/chunks/environment-2CJAFOFN.js +88 -0
- package/chunks/{errors-GMZL4QV7.js → errors-UZOVFD2U.js} +13 -13
- package/chunks/{exit-worktree-Y7XBK3VV.js → exit-worktree-QQGEG343.js} +10 -10
- package/chunks/{exitPlanMode-WQQER65F.js → exitPlanMode-YK2JVAAB.js} +10 -10
- package/chunks/{fast-path-W2U6XDNO.js → fast-path-6SD4JNQW.js} +12 -3
- package/chunks/{fast-path-settings-RCRXH2JG.js → fast-path-settings-RAQGCIT7.js} +3 -2
- package/chunks/{fr-GWNQG4XH.js → fr-RSCO6HHD.js} +89 -5
- package/chunks/{gemini-T4WX6SRW.js → gemini-TFQXPUZB.js} +436 -140
- package/chunks/{geminiContentGenerator-MKQACXEJ.js → geminiContentGenerator-LJ2BNXHX.js} +1 -1
- package/chunks/{glob-4KKSHZDF.js → glob-3IJ6JR5W.js} +10 -10
- package/chunks/{grep-GHRYXSLZ.js → grep-UFZ2RFQZ.js} +10 -10
- package/chunks/{handleAutoUpdate-HN7ZOSXY.js → handleAutoUpdate-TEZC5ZIR.js} +17 -13
- package/chunks/i18n-5QEODTJV.js +84 -0
- package/chunks/{initializer-SRN3IM42.js → initializer-222MPCLQ.js} +18 -16
- package/chunks/installationInfo-OZ62OHZ2.js +65 -0
- package/chunks/{ja-2HOTA47X.js → ja-RRFGG2DC.js} +89 -5
- package/chunks/{list-INTVXUPA.js → list-BN5VBIIE.js} +20 -18
- package/chunks/{loadedSettingsAdapter-QVHHQPGM.js → loadedSettingsAdapter-EHTUJRFB.js} +18 -16
- package/chunks/{loop-wakeup-OHWEMFP5.js → loop-wakeup-SR2KWT4B.js} +3 -3
- package/chunks/{ls-L654WOAT.js → ls-RUBQK5Q2.js} +2 -2
- package/chunks/{lsp-M35KE54Y.js → lsp-DUTVY2ZA.js} +3 -5
- package/chunks/{mcp-7V4T46RG.js → mcp-OPGHD26Y.js} +18 -16
- package/chunks/{monitor-464OY2UE.js → monitor-WXBDVYYV.js} +10 -10
- package/chunks/{nonInteractiveCli-LJEEODU2.js → nonInteractiveCli-CWIBGJ4U.js} +54 -49
- package/chunks/{notebook-edit-BLJYCNDO.js → notebook-edit-T7P7M73F.js} +11 -11
- package/chunks/{openaiContentGenerator-PFF6HYB2.js → openaiContentGenerator-OES264C3.js} +7 -7
- package/chunks/{pidfile-LIBUENIV.js → pidfile-LJ3NLS2P.js} +10 -10
- package/chunks/{pt-2THT3YHA.js → pt-D4CG46JM.js} +89 -5
- package/chunks/{qwenContentGenerator-SUUHZ6CR.js → qwenContentGenerator-QJ67LAJ5.js} +12 -12
- package/chunks/{read-file-L7TBQVX7.js → read-file-KZD7TLU7.js} +5 -5
- package/chunks/{read-mcp-resource-CNQHBSJM.js → read-mcp-resource-Q56IMYOH.js} +1 -1
- package/chunks/{record-artifact-PP3LKHTS.js → record-artifact-GZ5D5HZX.js} +4 -4
- package/chunks/{ripGrep-CKKX3GRB.js → ripGrep-KUJLX75U.js} +10 -10
- package/chunks/{ru-Z67YJHBG.js → ru-O2QUEL22.js} +89 -5
- package/chunks/{run-qwen-serve-5OKADVLE.js → run-qwen-serve-M52KVRGI.js} +664 -153
- package/chunks/{scheduler-ZRW3AIDU.js → scheduler-FFATTAYZ.js} +10 -10
- package/chunks/{send-message-OA6MV4EU.js → send-message-HAGK3VTV.js} +2 -2
- package/chunks/{serve-36WS32W6.js → serve-B5S32524.js} +21 -18
- package/chunks/{server-M372UENX.js → server-6HK5FJMR.js} +3301 -665
- package/chunks/{session-F5KSNP2N.js → session-3WB76VTQ.js} +55 -50
- package/chunks/{settings-WFLNS3WT.js → settings-W3IX7NHK.js} +27 -23
- package/chunks/{shell-DEDSWN56.js → shell-HZIU2ZG7.js} +10 -10
- package/chunks/{skill-A2TL2NPC.js → skill-34OUFB65.js} +5 -5
- package/chunks/{spawnChannel-RQHUWTCL.js → spawnChannel-FTZJ3I5O.js} +12 -12
- package/chunks/{src-XKZMNHXS.js → src-NELBIIGI.js} +48 -10
- package/chunks/standalone-update-LICI2VSK.js +79 -0
- package/chunks/{startInteractiveUI-REKSTOHU.js → startInteractiveUI-LZEV5YI2.js} +2203 -1764
- package/chunks/stdioHelpers-CA7MG65Z.js +14 -0
- package/chunks/{syntheticOutput-F7LSDCAR.js → syntheticOutput-XFFJVCGV.js} +2 -2
- package/chunks/{task-create-RPFZNB4B.js → task-create-VINUSVBF.js} +3 -3
- package/chunks/{task-list-TGGJX7EA.js → task-list-YZ2AWQEG.js} +1 -1
- package/chunks/{task-stop-W7NGTMYQ.js → task-stop-PEXPKUW3.js} +1 -1
- package/chunks/{task-update-5WUG5MVQ.js → task-update-BHIX57YH.js} +3 -3
- package/chunks/{team-create-TBQVWAG7.js → team-create-2JS2OYSF.js} +10 -10
- package/chunks/{team-delete-UHQQ2QQX.js → team-delete-2OHXSBVS.js} +1 -1
- package/chunks/{team-plan-approval-FZPGUSHJ.js → team-plan-approval-PHLGYUY7.js} +10 -10
- package/chunks/{theme-manager-DQZVNSOC.js → theme-manager-UYXLX37P.js} +10 -10
- package/chunks/{todoWrite-C4ZAMSR3.js → todoWrite-7Q4ELT4F.js} +1 -1
- package/chunks/{tool-search-FDQ3SLNJ.js → tool-search-2MWA3GWE.js} +6 -6
- package/chunks/total-session-admission-PRZK35X4.js +72 -0
- package/chunks/{trustedFolders-Z475EIHL.js → trustedFolders-IT4JBNPG.js} +12 -12
- package/chunks/{updateCheck-E2ZX7RL7.js → updateCheck-X3ZWDO3Z.js} +17 -13
- package/chunks/updateEventEmitter-NXWTRHXY.js +10 -0
- package/chunks/{validateNonInterActiveAuth-O4ECBHQL.js → validateNonInterActiveAuth-IAOL7CM3.js} +51 -45
- package/chunks/{version-CEDD6ZZR.js → version-25QF6A5H.js} +1 -1
- package/chunks/{web-fetch-UYGMOHW4.js → web-fetch-I7FOWHGA.js} +2 -2
- package/chunks/{workflow-CQQ4J4I6.js → workflow-LZZ5U3IT.js} +11 -11
- package/chunks/{workspace-providers-status-MVYXMYDG.js → workspace-providers-status-7DTOAWEL.js} +21 -18
- package/chunks/workspace-registry-BBIPESIZ.js +76 -0
- package/chunks/{workspace-service-OMBR6ZLG.js → workspace-service-SY3P3FUY.js} +25 -23
- package/chunks/{workspace-skills-status-IMMQ7CAY.js → workspace-skills-status-GTT2A4WN.js} +20 -18
- package/chunks/{write-file-VWGY7AJP.js → write-file-M6IHNW3V.js} +11 -11
- package/chunks/{zh-7XVVRTDH.js → zh-K2EH6BDD.js} +91 -5
- package/chunks/{zh-TW-DPH554OG.js → zh-TW-4GPXJ7ZY.js} +91 -5
- package/cli.js +13 -12
- package/locales/ca.js +115 -7
- package/locales/de.js +114 -7
- package/locales/en.js +118 -7
- package/locales/fr.js +115 -7
- package/locales/ja.js +116 -6
- package/locales/pt.js +114 -7
- package/locales/ru.js +114 -7
- package/locales/zh-TW.js +114 -6
- package/locales/zh.js +114 -6
- package/package.json +3 -6
- package/web-shell/assets/{arc-C7hjaa7g.js → arc-G3HZaqaL.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-pm9KtMZY.js → architectureDiagram-3BPJPVTR-DhBrwwch.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-CApElKsU.js → blockDiagram-GPEHLZMM-16JbbF0N.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-BeDe0-9N.js → c4Diagram-AAUBKEIU-DQ3-pKgc.js} +1 -1
- package/web-shell/assets/channel-CX7ZHuuL.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-DJEkmLdl.js → chunk-2J33WTMH-ERCn30sp.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DXX8gdpe.js → chunk-4BX2VUAB-DTysfbFi.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DORmk1kQ.js → chunk-55IACEB6-BFGrbTBi.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-DWmO4mCZ.js → chunk-727SXJPM-DCX4Oar-.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-C7LRaYw2.js → chunk-AQP2D5EJ-CgT6sBr3.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CCdXgyC5.js → chunk-FMBD7UC4-C1Uuk1KV.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-SyL_xvWc.js → chunk-ND2GUHAM-DajgESiu.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-BzOuCKxa.js → chunk-QZHKN3VN-DLJSvy9X.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-B-oT3UI8.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B-oT3UI8.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BMPWyDKc.js → cose-bilkent-S5V4N54A-CH3w3qs7.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-B_GnPWik.js → dagre-BM42HDAG-BloXan9B.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-fJqMc3S_.js → diagram-2AECGRRQ-BbZiGcmK.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-ximV3O9D.js → diagram-5GNKFQAL-GQlYvLJv.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-2vVyjzqw.js → diagram-KO2AKTUF-CtIBvVq3.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-Dckcx1sT.js → diagram-LMA3HP47-D5TBo9a2.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-BAVv47ga.js → diagram-OG6HWLK6-N0gQhw6R.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-Bn3nf5J0.js → erDiagram-TEJ5UH35-zab9vDj3.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BIbGF9JT.js → flowDiagram-I6XJVG4X-BnnjtWJa.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-CDbhb3AH.js → ganttDiagram-6RSMTGT7-2T0SQU4f.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CbKG1a_w.js → gitGraphDiagram-PVQCEYII-DAD6_que.js} +1 -1
- package/web-shell/assets/index-XLkWfLja.css +5 -0
- package/web-shell/assets/index-srlTR1Jg.js +786 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DUFxTy8m.js → infoDiagram-5YYISTIA-C-j8d0xO.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-D69hrBG8.js → ishikawaDiagram-YF4QCWOH-D97bAKoT.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-DsvEw51Y.js → journeyDiagram-JHISSGLW-BJAHfJmm.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-lFFjZEYd.js → kanban-definition-UN3LZRKU-CZgR5aac.js} +1 -1
- package/web-shell/assets/{linear-Bo5bWzvo.js → linear-DOd4kYhA.js} +1 -1
- package/web-shell/assets/{mermaid.core-C_HKMJx5.js → mermaid.core-BBaplnXA.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-DlV-NUTs.js → mindmap-definition-RKZ34NQL-IhBF_BR5.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-B2e6FH2a.js → pieDiagram-4H26LBE5-B4R4sYyH.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-D75kSk-b.js → quadrantDiagram-W4KKPZXB-DKd1SJ61.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-CQ6xakhM.js → requirementDiagram-4Y6WPE33-Cw96V0Xb.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-J_XTKrcY.js → sankeyDiagram-5OEKKPKP-C6ne_yWi.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-D7jTcBtf.js → sequenceDiagram-3UESZ5HK-CCyp4PDp.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-CrlM_OT3.js → stateDiagram-AJRCARHV-DHvIqTmx.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DvFhmpwA.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-5oZi76Ef.js → timeline-definition-PNZ67QCA-amb3n9zH.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DO5YptPK.js → vennDiagram-CIIHVFJN-Abf2qRFJ.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-4t1eJDvM.js → wardley-L42UT6IY-BBlOp1av.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DKZc661S.js → wardleyDiagram-YWT4CUSO-gE_sZ0Ak.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-su9hp08G.js → xychartDiagram-2RQKCTM6-BwOni53i.js} +1 -1
- package/web-shell/index.html +16 -4
- package/chunks/chunk-6SHO7WFF.js +0 -79
- package/chunks/chunk-IFEWJXFS.js +0 -37
- package/node_modules/@qwen-code/audio-capture/dist/index.d.ts +0 -35
- package/node_modules/@qwen-code/audio-capture/dist/index.js +0 -48
- package/node_modules/@qwen-code/audio-capture/dist/index.js.map +0 -1
- package/node_modules/@qwen-code/audio-capture/dist/platform.d.ts +0 -7
- package/node_modules/@qwen-code/audio-capture/dist/platform.js +0 -18
- package/node_modules/@qwen-code/audio-capture/dist/platform.js.map +0 -1
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/LICENSE +0 -21
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/README.md +0 -58
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/SECURITY.md +0 -5
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/bin.js +0 -84
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/build-test.js +0 -19
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/index.js +0 -6
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/node-gyp-build.js +0 -207
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/optional.js +0 -7
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/package.json +0 -43
- package/node_modules/@qwen-code/audio-capture/package.json +0 -30
- 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/linux-arm64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/linux-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/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
- /package/chunks/{chunk-Y6Z2O3WR.js → chunk-JM7BYJO5.js} +0 -0
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
functionResponsePartsToString
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-B5OAMPJ5.js";
|
|
6
6
|
import {
|
|
7
7
|
parseAndFormatApiError
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ZDAZSR2O.js";
|
|
9
9
|
import {
|
|
10
10
|
init_esbuild_shims
|
|
11
11
|
} from "./chunk-A4BMJM77.js";
|
|
@@ -9,12 +9,12 @@ import {
|
|
|
9
9
|
|
|
10
10
|
// packages/cli/src/serve/workspace-skills-mapping.ts
|
|
11
11
|
init_esbuild_shims();
|
|
12
|
-
function mapSkillConfigToStatus(skill, disabledSkillNames = /* @__PURE__ */ new Set()) {
|
|
12
|
+
function mapSkillConfigToStatus(skill, disabledSkillNames = /* @__PURE__ */ new Set(), opts = {}) {
|
|
13
13
|
const userDisabled = disabledSkillNames.has(skill.name.toLowerCase());
|
|
14
14
|
const modelInvocable = skill.disableModelInvocation !== true;
|
|
15
15
|
return {
|
|
16
16
|
kind: "skill",
|
|
17
|
-
status: userDisabled ? "disabled" : "ok",
|
|
17
|
+
status: opts.disabled || userDisabled ? "disabled" : "ok",
|
|
18
18
|
name: skill.name,
|
|
19
19
|
description: skill.description,
|
|
20
20
|
level: skill.level,
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
TaggedThinkingParser,
|
|
6
6
|
getRateLimitErrorDetails,
|
|
7
7
|
openaiRequestCaptureContext
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-5ZVIYNLN.js";
|
|
9
9
|
import {
|
|
10
10
|
RequestTokenizer
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-JOQMY62N.js";
|
|
12
12
|
import {
|
|
13
13
|
DASHSCOPE_PROXY_BASE_URL,
|
|
14
14
|
DEFAULT_DASHSCOPE_BASE_URL,
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
import {
|
|
25
25
|
runtimeDiagnostics,
|
|
26
26
|
safeJsonParse
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-SS5P6JM6.js";
|
|
28
28
|
import {
|
|
29
29
|
GenerateContentResponse
|
|
30
30
|
} from "./chunk-55ZMG67I.js";
|
|
@@ -8154,6 +8154,33 @@ var StreamInactivityTimeoutError = class extends Error {
|
|
|
8154
8154
|
}
|
|
8155
8155
|
code = "ETIMEDOUT";
|
|
8156
8156
|
};
|
|
8157
|
+
var NON_SSE_BODY_PREFIX_LIMIT = 512;
|
|
8158
|
+
function isSSECompatibleContentType(contentType) {
|
|
8159
|
+
if (!contentType) return true;
|
|
8160
|
+
const mediaType = (contentType.split(";")[0] ?? "").trim().toLowerCase();
|
|
8161
|
+
return mediaType === "text/event-stream" || mediaType === "application/x-ndjson" || mediaType === "application/stream+json";
|
|
8162
|
+
}
|
|
8163
|
+
__name(isSSECompatibleContentType, "isSSECompatibleContentType");
|
|
8164
|
+
var NonSSEResponseError = class extends Error {
|
|
8165
|
+
constructor(contentType, httpStatus, bodyPrefix, requestId) {
|
|
8166
|
+
const preview = bodyPrefix.length > 0 ? ` Body prefix: ${bodyPrefix}` : "";
|
|
8167
|
+
super(
|
|
8168
|
+
`Streaming request received a non-SSE response (HTTP ${httpStatus}, Content-Type: ${contentType || "unknown"}).${preview}`
|
|
8169
|
+
);
|
|
8170
|
+
this.contentType = contentType;
|
|
8171
|
+
this.httpStatus = httpStatus;
|
|
8172
|
+
this.bodyPrefix = bodyPrefix;
|
|
8173
|
+
this.requestId = requestId;
|
|
8174
|
+
this.name = "NonSSEResponseError";
|
|
8175
|
+
this.status = httpStatus;
|
|
8176
|
+
this.request_id = requestId;
|
|
8177
|
+
}
|
|
8178
|
+
static {
|
|
8179
|
+
__name(this, "NonSSEResponseError");
|
|
8180
|
+
}
|
|
8181
|
+
status;
|
|
8182
|
+
request_id;
|
|
8183
|
+
};
|
|
8157
8184
|
function resolveStreamIdleTimeoutMs(config) {
|
|
8158
8185
|
const fromConfig = config.streamIdleTimeoutMs;
|
|
8159
8186
|
if (typeof fromConfig === "number") {
|
|
@@ -8283,9 +8310,41 @@ var ContentGenerationPipeline = class {
|
|
|
8283
8310
|
const perRequestAc = createChildAbortController(parentSignal);
|
|
8284
8311
|
let stream;
|
|
8285
8312
|
try {
|
|
8286
|
-
|
|
8287
|
-
|
|
8288
|
-
|
|
8313
|
+
const createPromise = this.client.chat.completions.create(
|
|
8314
|
+
openaiRequest,
|
|
8315
|
+
{ signal: perRequestAc.signal }
|
|
8316
|
+
);
|
|
8317
|
+
if (typeof createPromise.withResponse === "function") {
|
|
8318
|
+
const {
|
|
8319
|
+
data,
|
|
8320
|
+
response: httpResponse,
|
|
8321
|
+
request_id
|
|
8322
|
+
} = await createPromise.withResponse();
|
|
8323
|
+
stream = data;
|
|
8324
|
+
const contentType = httpResponse.headers.get("content-type") ?? null;
|
|
8325
|
+
if (!isSSECompatibleContentType(contentType)) {
|
|
8326
|
+
let bodyPrefix = "";
|
|
8327
|
+
try {
|
|
8328
|
+
if (httpResponse.body) {
|
|
8329
|
+
const reader = httpResponse.body.getReader();
|
|
8330
|
+
const { value } = await reader.read();
|
|
8331
|
+
reader.releaseLock();
|
|
8332
|
+
if (value) {
|
|
8333
|
+
bodyPrefix = new TextDecoder().decode(value).slice(0, NON_SSE_BODY_PREFIX_LIMIT);
|
|
8334
|
+
}
|
|
8335
|
+
}
|
|
8336
|
+
} catch {
|
|
8337
|
+
}
|
|
8338
|
+
throw new NonSSEResponseError(
|
|
8339
|
+
contentType,
|
|
8340
|
+
httpResponse.status,
|
|
8341
|
+
bodyPrefix,
|
|
8342
|
+
request_id
|
|
8343
|
+
);
|
|
8344
|
+
}
|
|
8345
|
+
} else {
|
|
8346
|
+
stream = await createPromise;
|
|
8347
|
+
}
|
|
8289
8348
|
} catch (e) {
|
|
8290
8349
|
perRequestAc.abort();
|
|
8291
8350
|
throw e;
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
writeStderrLine
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-JM7BYJO5.js";
|
|
6
6
|
import {
|
|
7
7
|
JsonFormatter,
|
|
8
8
|
parseAndFormatApiError
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-ZDAZSR2O.js";
|
|
10
10
|
import {
|
|
11
11
|
FatalBudgetExceededError,
|
|
12
12
|
FatalCancellationError,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
} from "./chunk-22MNNNXE.js";
|
|
16
16
|
import {
|
|
17
17
|
runExitCleanup
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-34UUM3IN.js";
|
|
19
19
|
import {
|
|
20
20
|
init_esbuild_shims
|
|
21
21
|
} from "./chunk-A4BMJM77.js";
|
|
@@ -118,6 +118,18 @@ var SessionLimitExceededError = class extends Error {
|
|
|
118
118
|
this.limit = limit;
|
|
119
119
|
}
|
|
120
120
|
};
|
|
121
|
+
var TotalSessionLimitExceededError = class extends Error {
|
|
122
|
+
static {
|
|
123
|
+
__name(this, "TotalSessionLimitExceededError");
|
|
124
|
+
}
|
|
125
|
+
limit;
|
|
126
|
+
scope = "total";
|
|
127
|
+
constructor(limit) {
|
|
128
|
+
super(`Total session limit reached (${limit})`);
|
|
129
|
+
this.name = "TotalSessionLimitExceededError";
|
|
130
|
+
this.limit = limit;
|
|
131
|
+
}
|
|
132
|
+
};
|
|
121
133
|
var PromptQueueFullError = class extends Error {
|
|
122
134
|
static {
|
|
123
135
|
__name(this, "PromptQueueFullError");
|
|
@@ -394,6 +406,7 @@ export {
|
|
|
394
406
|
RestoreInProgressError,
|
|
395
407
|
InvalidSessionScopeError,
|
|
396
408
|
SessionLimitExceededError,
|
|
409
|
+
TotalSessionLimitExceededError,
|
|
397
410
|
PromptQueueFullError,
|
|
398
411
|
WorkspaceMismatchError,
|
|
399
412
|
InvalidClientIdError,
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
init_esbuild_shims
|
|
5
|
+
} from "./chunk-A4BMJM77.js";
|
|
6
|
+
import {
|
|
7
|
+
__name
|
|
8
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
9
|
+
|
|
10
|
+
// packages/acp-bridge/src/replayWindowLimits.ts
|
|
11
|
+
init_esbuild_shims();
|
|
12
|
+
var DEFAULT_COMPACTED_REPLAY_MAX_BYTES = 4 * 1024 * 1024;
|
|
13
|
+
var MAX_COMPACTED_REPLAY_MAX_BYTES = 256 * 1024 * 1024;
|
|
14
|
+
function normalizeCompactedReplayMaxBytes(value) {
|
|
15
|
+
if (value === void 0) return DEFAULT_COMPACTED_REPLAY_MAX_BYTES;
|
|
16
|
+
if (!Number.isSafeInteger(value) || value < 1 || value > MAX_COMPACTED_REPLAY_MAX_BYTES) {
|
|
17
|
+
throw new TypeError(
|
|
18
|
+
`Invalid compactedReplayMaxBytes: ${value}. Must be a positive safe integer in [1, ${MAX_COMPACTED_REPLAY_MAX_BYTES}].`
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
__name(normalizeCompactedReplayMaxBytes, "normalizeCompactedReplayMaxBytes");
|
|
24
|
+
|
|
25
|
+
export {
|
|
26
|
+
DEFAULT_COMPACTED_REPLAY_MAX_BYTES,
|
|
27
|
+
MAX_COMPACTED_REPLAY_MAX_BYTES,
|
|
28
|
+
normalizeCompactedReplayMaxBytes
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* @license
|
|
32
|
+
* Copyright 2026 Qwen Team
|
|
33
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
34
|
+
*/
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
} from "./chunk-ER3BKOLB.js";
|
|
18
18
|
import {
|
|
19
19
|
writeStderrLine
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-JM7BYJO5.js";
|
|
21
21
|
import {
|
|
22
22
|
require_once
|
|
23
23
|
} from "./chunk-5P5XGNYH.js";
|
|
@@ -16455,6 +16455,7 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
16455
16455
|
session_cancel: { since: "v1" },
|
|
16456
16456
|
session_events: { since: "v1" },
|
|
16457
16457
|
session_artifacts: { since: "v1" },
|
|
16458
|
+
session_artifacts_persistence: { since: "v1" },
|
|
16458
16459
|
// Daemon emits `slow_client_warning` synthetic frames at 75% queue
|
|
16459
16460
|
// fill and honors `?maxQueued=N` (range [16, 2048]) on
|
|
16460
16461
|
// `GET /session/:id/events`. Old daemons silently lack both — SDK
|
|
@@ -16668,6 +16669,24 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
16668
16669
|
session_branch: { since: "v1" },
|
|
16669
16670
|
rate_limit: { since: "v1" },
|
|
16670
16671
|
workspace_reload: { since: "v1" },
|
|
16672
|
+
// Daemon supports reloading its daemon-managed channel worker via
|
|
16673
|
+
// `POST /workspace/channel/reload`. The worker is stopped and relaunched;
|
|
16674
|
+
// on relaunch it re-reads settings.json (channels / proxy / per-channel
|
|
16675
|
+
// model), so channel settings changes apply without a full daemon restart.
|
|
16676
|
+
// Advertised CONDITIONALLY — only when the daemon was started with
|
|
16677
|
+
// `--channel` (i.e. a channel worker exists to reload).
|
|
16678
|
+
channel_reload: { since: "v1" },
|
|
16679
|
+
// Multi-workspace sessions closed loop (issue #6378 Phase 2a). Advertised
|
|
16680
|
+
// only when one daemon hosts more than one registered workspace runtime.
|
|
16681
|
+
multi_workspace_sessions: { since: "v1" },
|
|
16682
|
+
// Workspace-qualified core REST routes under `/workspaces/:workspace/...`.
|
|
16683
|
+
// Covers core file/status/permissions/trust/lifecycle/MCP/tool, memory,
|
|
16684
|
+
// workspace agent CRUD, and persisted session organization surfaces.
|
|
16685
|
+
// Workspace-qualified settings also require the existing
|
|
16686
|
+
// `workspace_settings` tag because that surface depends on settings
|
|
16687
|
+
// persistence. ACP/WebSocket, auth, voice, and extensions stay on their
|
|
16688
|
+
// existing primary-workspace routes in this phase.
|
|
16689
|
+
workspace_qualified_rest_core: { since: "v1" },
|
|
16671
16690
|
// Phase 2 "reverse tool channel" (issue #5626). A connected WS client (e.g.
|
|
16672
16691
|
// the Chrome extension) can host an MCP server that the daemon's agent
|
|
16673
16692
|
// calls by carrying `mcp_message` JSON-RPC frames over the daemon WS,
|
|
@@ -16684,6 +16703,12 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
16684
16703
|
// frames. Advertised when explicitly enabled or when the daemon is serving a
|
|
16685
16704
|
// Chrome extension origin.
|
|
16686
16705
|
cdp_tunnel_over_ws: { since: "v1" },
|
|
16706
|
+
// Browser automation MCP tools are available only when the CDP tunnel is on
|
|
16707
|
+
// and the operator has configured an external stdio adapter via
|
|
16708
|
+
// QWEN_CDP_MCP_COMMAND. This is separate from `cdp_tunnel_over_ws`: a daemon
|
|
16709
|
+
// may expose the tunnel while intentionally not bundling/registering a
|
|
16710
|
+
// chrome-devtools MCP adapter.
|
|
16711
|
+
browser_automation_mcp: { since: "v1" },
|
|
16687
16712
|
// Daemon hosts the `/voice/stream` WebSocket: the browser captures audio and
|
|
16688
16713
|
// streams raw PCM, the daemon transcribes server-side via the configured
|
|
16689
16714
|
// `voiceModel` (credentials never reach the client). Advertised
|
|
@@ -16718,10 +16743,23 @@ var CONDITIONAL_SERVE_FEATURES = /* @__PURE__ */ new Map([
|
|
|
16718
16743
|
"session_shell_command",
|
|
16719
16744
|
(toggles) => toggles.sessionShellCommandEnabled === true
|
|
16720
16745
|
],
|
|
16746
|
+
[
|
|
16747
|
+
"session_artifacts_persistence",
|
|
16748
|
+
(toggles) => toggles.sessionArtifactsPersistenceAvailable === true
|
|
16749
|
+
],
|
|
16721
16750
|
["rate_limit", (toggles) => toggles.rateLimit === true],
|
|
16722
16751
|
["workspace_reload", (toggles) => toggles.reloadAvailable === true],
|
|
16752
|
+
["channel_reload", (toggles) => toggles.channelReloadAvailable === true],
|
|
16753
|
+
[
|
|
16754
|
+
"multi_workspace_sessions",
|
|
16755
|
+
(toggles) => toggles.multiWorkspaceSessionsEnabled === true
|
|
16756
|
+
],
|
|
16723
16757
|
["client_mcp_over_ws", (toggles) => toggles.clientMcpOverWsEnabled === true],
|
|
16724
16758
|
["cdp_tunnel_over_ws", (toggles) => toggles.cdpTunnelOverWsEnabled === true],
|
|
16759
|
+
[
|
|
16760
|
+
"browser_automation_mcp",
|
|
16761
|
+
(toggles) => toggles.browserAutomationMcpAvailable === true
|
|
16762
|
+
],
|
|
16725
16763
|
[
|
|
16726
16764
|
// Advertised whenever the `/voice/stream` WS endpoint exists. A configured
|
|
16727
16765
|
// token (or `--require-auth`) no longer suppresses it: browsers can't set
|
|
@@ -17231,35 +17269,78 @@ __name(parseDaemonStatusDetail, "parseDaemonStatusDetail");
|
|
|
17231
17269
|
async function buildDaemonStatusResponse(detail, input) {
|
|
17232
17270
|
const bridgeSnapshot = input.bridge.getDaemonStatusSnapshot();
|
|
17233
17271
|
const lastActivity = input.bridge.lastActivityAt ?? null;
|
|
17272
|
+
const workspaceRuntimes = input.workspaceRegistry?.list();
|
|
17273
|
+
const workspaceSnapshots = workspaceRuntimes?.map((runtime) => ({
|
|
17274
|
+
workspaceCwd: runtime.workspaceCwd,
|
|
17275
|
+
snapshot: runtime.bridge === input.bridge ? bridgeSnapshot : runtime.bridge.getDaemonStatusSnapshot(),
|
|
17276
|
+
lastActivity: runtime.bridge === input.bridge ? lastActivity : runtime.bridge.lastActivityAt ?? null
|
|
17277
|
+
})) ?? [
|
|
17278
|
+
{
|
|
17279
|
+
workspaceCwd: input.boundWorkspace,
|
|
17280
|
+
snapshot: bridgeSnapshot,
|
|
17281
|
+
lastActivity
|
|
17282
|
+
}
|
|
17283
|
+
];
|
|
17284
|
+
const aggregatedSessionCount = workspaceSnapshots.reduce(
|
|
17285
|
+
(sum, item) => sum + item.snapshot.sessionCount,
|
|
17286
|
+
0
|
|
17287
|
+
);
|
|
17288
|
+
const aggregatedPendingPermissionCount = workspaceSnapshots.reduce(
|
|
17289
|
+
(sum, item) => sum + item.snapshot.pendingPermissionCount,
|
|
17290
|
+
0
|
|
17291
|
+
);
|
|
17292
|
+
const aggregatedChannelLive = workspaceSnapshots.some(
|
|
17293
|
+
(item) => item.snapshot.channelLive
|
|
17294
|
+
);
|
|
17295
|
+
const aggregatedLastActivity = workspaceSnapshots.reduce(
|
|
17296
|
+
(latest, item) => item.lastActivity !== null && (latest === null || item.lastActivity > latest) ? item.lastActivity : latest,
|
|
17297
|
+
null
|
|
17298
|
+
);
|
|
17234
17299
|
const acpSnapshot = input.acpHandle?.registry.getSnapshot();
|
|
17235
17300
|
const rateLimitHits = input.rateLimiter?.getHitCounts() ?? zeroRateHits();
|
|
17236
17301
|
let pendingPrompts = 0;
|
|
17237
17302
|
let derivedQueuedPrompts = 0;
|
|
17238
|
-
|
|
17239
|
-
|
|
17240
|
-
|
|
17241
|
-
|
|
17242
|
-
|
|
17243
|
-
|
|
17303
|
+
const derivedQueuedPromptsByWorkspace = [];
|
|
17304
|
+
for (const [index, { snapshot }] of workspaceSnapshots.entries()) {
|
|
17305
|
+
let derivedQueuedPromptsForWorkspace = 0;
|
|
17306
|
+
for (const session of snapshot.sessions) {
|
|
17307
|
+
pendingPrompts += session.pendingPromptCount;
|
|
17308
|
+
const sessionQueuedPrompts = Math.max(
|
|
17309
|
+
0,
|
|
17310
|
+
session.pendingPromptCount - (session.hasActivePrompt ? 1 : 0)
|
|
17311
|
+
);
|
|
17312
|
+
derivedQueuedPrompts += sessionQueuedPrompts;
|
|
17313
|
+
derivedQueuedPromptsForWorkspace += sessionQueuedPrompts;
|
|
17314
|
+
}
|
|
17315
|
+
derivedQueuedPromptsByWorkspace[index] = derivedQueuedPromptsForWorkspace;
|
|
17244
17316
|
}
|
|
17245
|
-
const queuedPrompts =
|
|
17317
|
+
const queuedPrompts = workspaceRuntimes?.reduce(
|
|
17318
|
+
(sum, runtime, index) => sum + (runtime.bridge.pendingPromptTotal ?? derivedQueuedPromptsByWorkspace[index] ?? 0),
|
|
17319
|
+
0
|
|
17320
|
+
) ?? input.bridge.pendingPromptTotal ?? derivedQueuedPrompts;
|
|
17246
17321
|
const channelWorker = input.getChannelWorkerSnapshot?.() ?? {
|
|
17247
17322
|
enabled: false,
|
|
17248
17323
|
state: "disabled",
|
|
17249
17324
|
channels: []
|
|
17250
17325
|
};
|
|
17326
|
+
const totalAdmissionSnapshot = input.getTotalSessionAdmissionSnapshot?.();
|
|
17251
17327
|
const issues = [];
|
|
17252
17328
|
let full;
|
|
17253
17329
|
pushRuntimeIssues(
|
|
17254
17330
|
issues,
|
|
17255
|
-
bridgeSnapshot,
|
|
17256
17331
|
acpSnapshot,
|
|
17257
17332
|
rateLimitHits,
|
|
17258
17333
|
input,
|
|
17259
|
-
channelWorker
|
|
17334
|
+
channelWorker,
|
|
17335
|
+
totalAdmissionSnapshot,
|
|
17336
|
+
workspaceSnapshots
|
|
17260
17337
|
);
|
|
17261
17338
|
if (detail === "full") {
|
|
17262
|
-
full = await buildFullStatus(
|
|
17339
|
+
full = await buildFullStatus(
|
|
17340
|
+
input,
|
|
17341
|
+
acpSnapshot,
|
|
17342
|
+
workspaceSnapshots.flatMap((item) => item.snapshot.sessions)
|
|
17343
|
+
);
|
|
17263
17344
|
pushFullIssues(issues, full);
|
|
17264
17345
|
}
|
|
17265
17346
|
return {
|
|
@@ -17288,26 +17369,39 @@ async function buildDaemonStatusResponse(detail, input) {
|
|
|
17288
17369
|
},
|
|
17289
17370
|
limits: {
|
|
17290
17371
|
maxSessions: bridgeSnapshot.limits.maxSessions,
|
|
17372
|
+
maxTotalSessions: positiveFiniteOrNull(input.opts.maxTotalSessions),
|
|
17291
17373
|
maxPendingPromptsPerSession: bridgeSnapshot.limits.maxPendingPromptsPerSession,
|
|
17292
17374
|
listenerMaxConnections: listenerMaxConnections(input.opts.maxConnections),
|
|
17293
17375
|
eventRingSize: bridgeSnapshot.limits.eventRingSize,
|
|
17376
|
+
compactedReplayMaxBytes: bridgeSnapshot.limits.compactedReplayMaxBytes,
|
|
17294
17377
|
promptDeadlineMs: positiveFiniteOrNull(input.opts.promptDeadlineMs),
|
|
17295
17378
|
writerIdleTimeoutMs: positiveFiniteOrNull(input.opts.writerIdleTimeoutMs),
|
|
17296
17379
|
channelIdleTimeoutMs: bridgeSnapshot.limits.channelIdleTimeoutMs,
|
|
17297
17380
|
sessionIdleTimeoutMs: bridgeSnapshot.limits.sessionIdleTimeoutMs,
|
|
17298
17381
|
acpConnectionCap: acpSnapshot?.connectionCap ?? null
|
|
17299
17382
|
},
|
|
17383
|
+
...workspaceRuntimes && workspaceRuntimes.length > 1 ? {
|
|
17384
|
+
workspaces: workspaceRuntimes.map((runtime) => ({
|
|
17385
|
+
id: runtime.workspaceId,
|
|
17386
|
+
cwd: runtime.workspaceCwd,
|
|
17387
|
+
primary: runtime.primary,
|
|
17388
|
+
trusted: runtime.trusted
|
|
17389
|
+
}))
|
|
17390
|
+
} : {},
|
|
17300
17391
|
capabilities: {
|
|
17301
17392
|
protocolVersions: input.protocolVersions,
|
|
17302
17393
|
features: [...input.features]
|
|
17303
17394
|
},
|
|
17304
17395
|
runtime: {
|
|
17305
|
-
sessions: {
|
|
17396
|
+
sessions: {
|
|
17397
|
+
active: aggregatedSessionCount,
|
|
17398
|
+
...totalAdmissionSnapshot ? { admissionInFlight: totalAdmissionSnapshot.inFlight } : {}
|
|
17399
|
+
},
|
|
17306
17400
|
permissions: {
|
|
17307
|
-
pending:
|
|
17401
|
+
pending: aggregatedPendingPermissionCount,
|
|
17308
17402
|
policy: bridgeSnapshot.permissionPolicy
|
|
17309
17403
|
},
|
|
17310
|
-
channel: { live:
|
|
17404
|
+
channel: { live: aggregatedChannelLive },
|
|
17311
17405
|
channelWorker,
|
|
17312
17406
|
transport: {
|
|
17313
17407
|
restSseActive: input.getRestSseActive(),
|
|
@@ -17328,11 +17422,14 @@ async function buildDaemonStatusResponse(detail, input) {
|
|
|
17328
17422
|
...input.getPerfSnapshot ? { perf: input.getPerfSnapshot() } : {},
|
|
17329
17423
|
...input.getMetricsSeries ? { metrics: { series: input.getMetricsSeries() } } : {},
|
|
17330
17424
|
activity: {
|
|
17331
|
-
activePrompts:
|
|
17425
|
+
activePrompts: workspaceRuntimes?.reduce(
|
|
17426
|
+
(sum, runtime) => sum + (runtime.bridge.activePromptCount ?? 0),
|
|
17427
|
+
0
|
|
17428
|
+
) ?? input.bridge.activePromptCount ?? 0,
|
|
17332
17429
|
pendingPrompts,
|
|
17333
17430
|
queuedPrompts,
|
|
17334
|
-
lastActivityAt:
|
|
17335
|
-
idleSinceMs:
|
|
17431
|
+
lastActivityAt: aggregatedLastActivity !== null ? new Date(aggregatedLastActivity).toISOString() : null,
|
|
17432
|
+
idleSinceMs: aggregatedLastActivity !== null ? Date.now() - aggregatedLastActivity : null
|
|
17336
17433
|
},
|
|
17337
17434
|
process: process.memoryUsage()
|
|
17338
17435
|
},
|
|
@@ -17354,7 +17451,7 @@ function cloneStartup(startup) {
|
|
|
17354
17451
|
};
|
|
17355
17452
|
}
|
|
17356
17453
|
__name(cloneStartup, "cloneStartup");
|
|
17357
|
-
async function buildFullStatus(input,
|
|
17454
|
+
async function buildFullStatus(input, acpSnapshot, sessions) {
|
|
17358
17455
|
const ctx = {
|
|
17359
17456
|
route: "GET /daemon/status",
|
|
17360
17457
|
workspaceCwd: input.boundWorkspace
|
|
@@ -17394,7 +17491,7 @@ async function buildFullStatus(input, bridgeSnapshot, acpSnapshot) {
|
|
|
17394
17491
|
)
|
|
17395
17492
|
]);
|
|
17396
17493
|
return {
|
|
17397
|
-
sessions
|
|
17494
|
+
sessions,
|
|
17398
17495
|
acpConnections: acpSnapshot?.connections ?? [],
|
|
17399
17496
|
workspace: {
|
|
17400
17497
|
mcp,
|
|
@@ -17452,13 +17549,30 @@ async function withTimeout(promise, section, timeoutMs) {
|
|
|
17452
17549
|
}
|
|
17453
17550
|
}
|
|
17454
17551
|
__name(withTimeout, "withTimeout");
|
|
17455
|
-
function pushRuntimeIssues(issues,
|
|
17456
|
-
|
|
17457
|
-
|
|
17458
|
-
|
|
17459
|
-
|
|
17460
|
-
|
|
17461
|
-
|
|
17552
|
+
function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWorker, totalAdmissionSnapshot, workspaceSnapshots) {
|
|
17553
|
+
for (const { workspaceCwd, snapshot } of workspaceSnapshots) {
|
|
17554
|
+
if (snapshot.limits.maxSessions !== null && snapshot.limits.maxSessions > 0 && snapshot.sessionCount / snapshot.limits.maxSessions >= CAPACITY_WARNING_RATIO) {
|
|
17555
|
+
issues.push({
|
|
17556
|
+
code: "session_capacity_high",
|
|
17557
|
+
severity: "warning",
|
|
17558
|
+
message: workspaceSnapshots.length > 1 ? `Workspace ${workspaceCwd} active sessions are at ${snapshot.sessionCount}/${snapshot.limits.maxSessions}.` : `Active sessions are at ${snapshot.sessionCount}/${snapshot.limits.maxSessions}.`
|
|
17559
|
+
});
|
|
17560
|
+
}
|
|
17561
|
+
}
|
|
17562
|
+
const maxTotalSessions = positiveFiniteOrNull(input.opts.maxTotalSessions);
|
|
17563
|
+
if (maxTotalSessions !== null) {
|
|
17564
|
+
const fallbackLiveCount = workspaceSnapshots.reduce(
|
|
17565
|
+
(sum, item) => sum + item.snapshot.sessionCount,
|
|
17566
|
+
0
|
|
17567
|
+
);
|
|
17568
|
+
const totalActive = (totalAdmissionSnapshot?.liveCount ?? fallbackLiveCount) + (totalAdmissionSnapshot?.inFlight ?? 0);
|
|
17569
|
+
if (totalActive / maxTotalSessions >= CAPACITY_WARNING_RATIO) {
|
|
17570
|
+
issues.push({
|
|
17571
|
+
code: "total_session_capacity_high",
|
|
17572
|
+
severity: "warning",
|
|
17573
|
+
message: `Total active and in-flight sessions are at ${totalActive}/${maxTotalSessions}.`
|
|
17574
|
+
});
|
|
17575
|
+
}
|
|
17462
17576
|
}
|
|
17463
17577
|
if (acpSnapshot !== void 0 && acpSnapshot.connectionCap !== null && acpSnapshot.connectionCap > 0 && acpSnapshot.connectionCount / acpSnapshot.connectionCap >= CAPACITY_WARNING_RATIO) {
|
|
17464
17578
|
issues.push({
|
|
@@ -17467,18 +17581,25 @@ function pushRuntimeIssues(issues, bridgeSnapshot, acpSnapshot, rateLimitHits, i
|
|
|
17467
17581
|
message: `ACP connections are at ${acpSnapshot.connectionCount}/${acpSnapshot.connectionCap}.`
|
|
17468
17582
|
});
|
|
17469
17583
|
}
|
|
17470
|
-
|
|
17584
|
+
const pendingPermissionCount = workspaceSnapshots.reduce(
|
|
17585
|
+
(sum, item) => sum + item.snapshot.pendingPermissionCount,
|
|
17586
|
+
0
|
|
17587
|
+
);
|
|
17588
|
+
if (pendingPermissionCount > 0) {
|
|
17471
17589
|
issues.push({
|
|
17472
17590
|
code: "pending_permissions",
|
|
17473
17591
|
severity: "warning",
|
|
17474
|
-
message: `${
|
|
17592
|
+
message: `${pendingPermissionCount} permission request(s) are pending.`
|
|
17475
17593
|
});
|
|
17476
17594
|
}
|
|
17477
|
-
|
|
17595
|
+
const downWorkspaces = workspaceSnapshots.filter(
|
|
17596
|
+
(item) => item.snapshot.sessionCount > 0 && !item.snapshot.channelLive
|
|
17597
|
+
);
|
|
17598
|
+
if (downWorkspaces.length > 0) {
|
|
17478
17599
|
issues.push({
|
|
17479
17600
|
code: "acp_channel_down",
|
|
17480
17601
|
severity: "error",
|
|
17481
|
-
message:
|
|
17602
|
+
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
17603
|
});
|
|
17483
17604
|
}
|
|
17484
17605
|
if (input.opts.rateLimit === true && sumRateHits(rateLimitHits) > 0) {
|
|
@@ -17743,6 +17864,19 @@ function copyNumber(from, to, key) {
|
|
|
17743
17864
|
}
|
|
17744
17865
|
__name(copyNumber, "copyNumber");
|
|
17745
17866
|
|
|
17867
|
+
// packages/cli/src/serve/cdp-mcp-command.ts
|
|
17868
|
+
init_esbuild_shims();
|
|
17869
|
+
var QWEN_CDP_MCP_COMMAND_ENV = "QWEN_CDP_MCP_COMMAND";
|
|
17870
|
+
function resolveCdpMcpCommand(env) {
|
|
17871
|
+
const command = env[QWEN_CDP_MCP_COMMAND_ENV]?.trim();
|
|
17872
|
+
return command ? command : void 0;
|
|
17873
|
+
}
|
|
17874
|
+
__name(resolveCdpMcpCommand, "resolveCdpMcpCommand");
|
|
17875
|
+
function isBrowserAutomationMcpAvailable(opts, env) {
|
|
17876
|
+
return opts.cdpTunnelOverWs === true && !opts.token && env["QWEN_SERVE_ACP_HTTP"] !== "0" && resolveCdpMcpCommand(env) !== void 0;
|
|
17877
|
+
}
|
|
17878
|
+
__name(isBrowserAutomationMcpAvailable, "isBrowserAutomationMcpAvailable");
|
|
17879
|
+
|
|
17746
17880
|
export {
|
|
17747
17881
|
require_express2 as require_express,
|
|
17748
17882
|
sanitizeForStderr,
|
|
@@ -17794,7 +17928,10 @@ export {
|
|
|
17794
17928
|
buildDaemonStatusResponse,
|
|
17795
17929
|
allowOriginMode,
|
|
17796
17930
|
listenerMaxConnections,
|
|
17797
|
-
positiveFiniteOrNull
|
|
17931
|
+
positiveFiniteOrNull,
|
|
17932
|
+
QWEN_CDP_MCP_COMMAND_ENV,
|
|
17933
|
+
resolveCdpMcpCommand,
|
|
17934
|
+
isBrowserAutomationMcpAvailable
|
|
17798
17935
|
};
|
|
17799
17936
|
/**
|
|
17800
17937
|
* @license
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
t
|
|
5
|
+
} from "./chunk-UOXLB2LY.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/ui/utils/history-gap-notice.ts
|
|
14
|
+
init_esbuild_shims();
|
|
15
|
+
function formatHistoryGapNotice(_gap) {
|
|
16
|
+
return t(
|
|
17
|
+
"\u26A0\uFE0F History gap: earlier conversation was lost before this point (storage interruption) and could not be recovered."
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
__name(formatHistoryGapNotice, "formatHistoryGapNotice");
|
|
21
|
+
function indexGapsByChild(gaps) {
|
|
22
|
+
const byChild = /* @__PURE__ */ new Map();
|
|
23
|
+
for (const gap of gaps ?? []) {
|
|
24
|
+
byChild.set(gap.childUuid, gap);
|
|
25
|
+
}
|
|
26
|
+
return byChild;
|
|
27
|
+
}
|
|
28
|
+
__name(indexGapsByChild, "indexGapsByChild");
|
|
29
|
+
|
|
30
|
+
export {
|
|
31
|
+
formatHistoryGapNotice,
|
|
32
|
+
indexGapsByChild
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* @license
|
|
36
|
+
* Copyright 2025 Qwen Code
|
|
37
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
38
|
+
*/
|