@qwen-code/qwen-code 0.19.8 → 0.19.9-preview.0
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 +68 -51
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +12 -2
- package/bundled/qc-helper/docs/features/channels/overview.md +82 -7
- package/bundled/qc-helper/docs/features/channels/wecom.md +6 -0
- package/bundled/qc-helper/docs/features/code-review.md +109 -41
- package/bundled/qc-helper/docs/features/commands.md +45 -44
- package/bundled/qc-helper/docs/features/computer-use.md +77 -0
- package/bundled/qc-helper/docs/features/hooks.md +29 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
- package/bundled/qc-helper/docs/features/tool-use-summaries.md +19 -23
- package/bundled/qc-helper/docs/integration-vscode.md +2 -2
- package/bundled/qc-helper/docs/qwen-serve.md +66 -23
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +2 -2
- package/bundled/review/DESIGN.md +303 -46
- package/bundled/review/SKILL.md +670 -165
- package/chunks/MaxSizedBox-BEVSAWZ6.js +70 -0
- package/chunks/{StandaloneSessionPicker-EYRGH6PJ.js → StandaloneSessionPicker-2DA2MDDE.js} +81 -79
- package/chunks/{acpAgent-GRFTTRHW.js → acpAgent-G3WJU3PS.js} +1318 -465
- package/chunks/agent-DD3WSHXE.js +68 -0
- package/chunks/agent-headless-MHI7U2CU.js +62 -0
- package/chunks/{anthropicContentGenerator-CPF22MA7.js → anthropicContentGenerator-56U3YCP2.js} +187 -31
- package/chunks/{artifact-tool-D233YJFH.js → artifact-tool-MIZLXBLF.js} +5 -5
- package/chunks/{askUserQuestion-MKL5ZTMC.js → askUserQuestion-XMJVPNWM.js} +6 -6
- package/chunks/bridge-HKEWPNB5.js +78 -0
- package/chunks/{ca-MKD32FQL.js → ca-C2JTT2N5.js} +68 -6
- package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
- package/chunks/channel-worker-manager-YSFB4HUU.js +418 -0
- package/chunks/channel-worker-supervisor-QCKIOYZD.js +20 -0
- package/chunks/chunk-2FMQQXMM.js +38 -0
- package/chunks/{chunk-CSOTA7KX.js → chunk-2FO5GFKZ.js} +2 -2
- package/chunks/{chunk-QQDPRDVW.js → chunk-2HRYPZT5.js} +1 -1
- package/chunks/{chunk-UXEW557D.js → chunk-2J4ZWME4.js} +3 -3
- package/chunks/{chunk-P3XEEI3X.js → chunk-2TQXXQMI.js} +36 -7
- package/chunks/{chunk-GSHQYYIV.js → chunk-2UW5RFRP.js} +6 -26
- package/chunks/{chunk-6IAWPIQ6.js → chunk-2W3OOD4W.js} +5 -3
- package/chunks/{chunk-2PSWA5ID.js → chunk-2X56YUSZ.js} +1 -1
- package/chunks/{chunk-NQKLOAVJ.js → chunk-2Z5UX4KI.js} +2 -2
- package/chunks/chunk-3MX7D6QN.js +516 -0
- package/chunks/{chunk-EEN2TKST.js → chunk-43RXPU5Q.js} +2 -2
- package/chunks/{chunk-55ZMG67I.js → chunk-4LD5APFL.js} +4 -4
- package/chunks/{chunk-WF4FAXDL.js → chunk-4QZ3XHWE.js} +62 -62
- package/chunks/chunk-4QZADKJS.js +34 -0
- package/chunks/{chunk-UIDXQNMV.js → chunk-4WGODMVR.js} +1 -1
- package/chunks/{chunk-E6US47KI.js → chunk-4WKAA4KS.js} +1 -1
- package/chunks/{chunk-TI3BWD4D.js → chunk-54UZQ57N.js} +39 -19
- package/chunks/{chunk-3GONHQOA.js → chunk-57OAHC2Y.js} +1 -1
- package/chunks/{chunk-JZSY4WP3.js → chunk-5DTTYNB7.js} +1 -1
- package/chunks/chunk-5HBA2Z7V.js +28 -0
- package/chunks/{chunk-SKAZWEV5.js → chunk-5M6IDOMF.js} +35 -98
- package/chunks/{chunk-A4BMJM77.js → chunk-5O2XNYP6.js} +1 -0
- package/chunks/{chunk-FQNC62B2.js → chunk-5VHASII5.js} +11 -11
- package/chunks/{chunk-GO6LNQXT.js → chunk-6AM5D4ME.js} +1 -1
- package/chunks/{chunk-BJBWRCSK.js → chunk-6H67XLET.js} +1 -1
- package/chunks/{chunk-O7FIRWJV.js → chunk-6JPDCEDB.js} +3 -3
- package/chunks/{chunk-3UP777ZS.js → chunk-6RLROE6G.js} +1 -1
- package/chunks/{chunk-GN3F6PIU.js → chunk-6WPJRYLZ.js} +5 -5
- package/chunks/{chunk-ZERZSAZL.js → chunk-75DOP5OR.js} +2 -2
- package/chunks/chunk-7DKX4A5Z.js +91 -0
- package/chunks/{chunk-M7S4GK5Z.js → chunk-7IDCQ35Q.js} +147 -30
- package/chunks/{chunk-22MNNNXE.js → chunk-7NFB7LBQ.js} +11 -3
- package/chunks/{chunk-ZL5HN75Q.js → chunk-7R4DPSRA.js} +37 -3
- package/chunks/{chunk-VZ7HY3YU.js → chunk-7STBROEV.js} +3 -3
- package/chunks/{chunk-SAIILPQ3.js → chunk-7X7TEQNX.js} +5 -3
- package/chunks/{chunk-RMLZAUWH.js → chunk-A3U2TQUL.js} +10 -12
- package/chunks/{chunk-IRJWHZWU.js → chunk-A4UCTEB5.js} +2 -2
- package/chunks/{chunk-BOBRZZKD.js → chunk-A7W4GQRW.js} +5 -5
- package/chunks/{chunk-O33TBKDC.js → chunk-AAUZBE5Y.js} +155 -19
- package/chunks/{chunk-SQ2UATK7.js → chunk-ADLYZJYZ.js} +11 -11
- package/chunks/{chunk-QYUE6W3T.js → chunk-ALGGS7UH.js} +2 -39
- package/chunks/{chunk-WMPVYQ4P.js → chunk-ARKANCNX.js} +3 -2
- package/chunks/{chunk-IBY3Q3HG.js → chunk-AU4R7ACM.js} +967 -181
- package/chunks/{channel-worker-supervisor-NZQUOEFJ.js → chunk-B7MFJBKE.js} +190 -34
- package/chunks/{chunk-HW4N45EE.js → chunk-B7NUUEXC.js} +38 -11
- package/chunks/{chunk-3B26UVCX.js → chunk-BLPMRN4B.js} +39 -10
- package/chunks/{chunk-ZN5T4BHI.js → chunk-BPZALHVR.js} +2 -2
- package/chunks/{chunk-BVYU3ZTI.js → chunk-BXT6PQ73.js} +1020 -942
- package/chunks/{chunk-OFEVLU4C.js → chunk-CARU2RR2.js} +1 -1
- package/chunks/{chunk-HDOH3QYE.js → chunk-CEGKYZDB.js} +2 -2
- package/chunks/{chunk-GLE2YUPU.js → chunk-COH43MRJ.js} +1 -1
- package/chunks/{chunk-E5A7LHNN.js → chunk-CPBF7KYF.js} +1 -1
- package/chunks/{chunk-UWCTAVOD.js → chunk-CR3C7WXL.js} +1 -1
- package/chunks/{chunk-IWKSG2AR.js → chunk-CXAOG665.js} +1 -1
- package/chunks/{chunk-64WXLC72.js → chunk-DJ2GSRLV.js} +1 -1
- package/chunks/{chunk-QN5NZ3UQ.js → chunk-DMTGGOSA.js} +2 -2
- package/chunks/{chunk-27BHARDE.js → chunk-DMVA55W5.js} +2124 -30
- package/chunks/{chunk-JPALE3PA.js → chunk-DQCCLVQK.js} +6 -6
- package/chunks/{chunk-X2XNQQJI.js → chunk-E2UVIFI2.js} +186 -399
- package/chunks/{chunk-KHDZHZMH.js → chunk-E5Z2AVNV.js} +1 -1
- package/chunks/{chunk-E7EMCSUG.js → chunk-EAHMOXLL.js} +64 -42
- package/chunks/{chunk-VGGOPZUL.js → chunk-EJ3KGYWL.js} +36 -8
- package/chunks/{chunk-DIWVZ3VM.js → chunk-ERTHKDKN.js} +5 -5
- package/chunks/{chunk-UX6OTBVD.js → chunk-EX5OULP3.js} +2 -2
- package/chunks/{chunk-5MBO76SL.js → chunk-F333XEAU.js} +3 -3
- package/chunks/{chunk-OACJLMLD.js → chunk-FBU7WRZI.js} +18 -2
- package/chunks/{chunk-5IFG2VC4.js → chunk-FCMNKVXT.js} +1 -1
- package/chunks/chunk-FEOBU3FA.js +253 -0
- package/chunks/{chunk-LAXNEOBG.js → chunk-FI2WSOWX.js} +19 -3
- package/chunks/{chunk-E7KNELIZ.js → chunk-FSA7ERJ2.js} +2 -2
- package/chunks/{chunk-44NROQYV.js → chunk-GDQQRV43.js} +4 -4
- package/chunks/{chunk-ZE6E424U.js → chunk-GN5HJJBO.js} +2 -2
- package/chunks/{chunk-O2YT7VB4.js → chunk-GOXKNSDZ.js} +2 -65
- package/chunks/{chunk-V35MD7KN.js → chunk-GRC5HGPI.js} +1 -1
- package/chunks/{chunk-ON3JA3RU.js → chunk-GTENQOEJ.js} +7 -9
- package/chunks/{chunk-S6RLAIUR.js → chunk-GYTKQYDB.js} +1 -1
- package/chunks/{chunk-A2X3KLC3.js → chunk-GZXCZHCT.js} +3 -3
- package/chunks/{chunk-K5PGHDBN.js → chunk-H6XPXXMH.js} +1 -1
- package/chunks/{chunk-PMFULMLX.js → chunk-HCJTURZD.js} +2262 -384
- package/chunks/chunk-HGG2RRXD.js +445 -0
- package/chunks/{chunk-II73RK2S.js → chunk-HGT6JR3U.js} +20 -1
- package/chunks/{chunk-DICGXFAI.js → chunk-HJCVNZLQ.js} +11 -9
- package/chunks/{chunk-3GNOQZDC.js → chunk-HJUDVNCO.js} +17663 -14877
- package/chunks/{chunk-AYNCLGTW.js → chunk-HRUGYOJN.js} +8 -51
- package/chunks/{chunk-KYMBIKIW.js → chunk-HTHUX2T5.js} +1 -1
- package/chunks/{chunk-LQ7TMOCE.js → chunk-HTO4JFDZ.js} +1 -1
- package/chunks/{chunk-BUZ6HGL4.js → chunk-HWTL6MPR.js} +357 -59
- package/chunks/chunk-IDS7MSUP.js +74 -0
- package/chunks/{chunk-4CGOWHKM.js → chunk-J4MOFEOK.js} +2 -2
- package/chunks/chunk-JCD4FM7K.js +296 -0
- package/chunks/{chunk-22IFUCVR.js → chunk-JESCGQM3.js} +1 -1
- package/chunks/{chunk-JZHIQJOE.js → chunk-JGO6RFI2.js} +6 -6
- package/chunks/{chunk-X3YGAX7V.js → chunk-JGUT3LWZ.js} +9 -2
- package/chunks/{chunk-JRQ7EVGE.js → chunk-JW7OOJC6.js} +2 -2
- package/chunks/{chunk-OQXDAMKY.js → chunk-KF5MMGG4.js} +8 -8
- package/chunks/{chunk-42XGFRJS.js → chunk-KKRTYONM.js} +8 -6
- package/chunks/{chunk-GGQQA4JW.js → chunk-KSO42X3Z.js} +15 -2
- package/chunks/{chunk-MRO43B25.js → chunk-KW7NOTN6.js} +1 -1
- package/chunks/{chunk-54YZOP7P.js → chunk-L573Z2QZ.js} +11894 -5190
- package/chunks/{chunk-TLWA7TPR.js → chunk-L5U3ELZX.js} +2 -2
- package/chunks/{chunk-YHKAK72D.js → chunk-LHEOLOXU.js} +251 -63
- package/chunks/{chunk-H6EMK6QK.js → chunk-LQIDP6K5.js} +11913 -5207
- package/chunks/{chunk-I6WGFJJ3.js → chunk-LSEJG6AM.js} +73 -19
- package/chunks/{chunk-MZ7BABX3.js → chunk-LXLTBIDP.js} +44 -7
- package/chunks/{chunk-HLKG6CZN.js → chunk-M5GB774H.js} +1 -1
- package/chunks/{chunk-JCH35JB3.js → chunk-MKK4XGLF.js} +2 -2
- package/chunks/{chunk-YKZIAK7C.js → chunk-MO7O5722.js} +424 -40
- package/chunks/chunk-MR3PXB6E.js +48 -0
- package/chunks/{chunk-A5JOJ77H.js → chunk-MRYWYBQ4.js} +38 -15
- package/chunks/{chunk-332PWN27.js → chunk-NHDKSOEY.js} +1 -1
- package/chunks/{chunk-TSPB77TG.js → chunk-NRAFASYX.js} +1016 -2967
- package/chunks/{chunk-BMFMJINR.js → chunk-OA4JVLSA.js} +28 -2
- package/chunks/{chunk-P7M4GA57.js → chunk-OCPBI7J5.js} +1 -1
- package/chunks/chunk-OJAMDVF5.js +66 -0
- package/chunks/{chunk-IJRL2S3D.js → chunk-OKAIGAYW.js} +6 -6
- package/chunks/{chunk-FBET5XZ2.js → chunk-PEJWA3QQ.js} +29 -10
- package/chunks/{chunk-L4AMBVQG.js → chunk-PMKW35AT.js} +54 -22
- package/chunks/{chunk-AGHU5VRK.js → chunk-PZL23GTM.js} +1 -1
- package/chunks/{chunk-PC4ZXHU2.js → chunk-Q6TUALBE.js} +3 -3
- package/chunks/{chunk-FXGLL2HL.js → chunk-Q7YDKOGY.js} +1 -1
- package/chunks/{chunk-XOHNA2S6.js → chunk-QAW7PIHT.js} +3 -3
- package/chunks/{chunk-XYR5RUA5.js → chunk-QE2WJ7FS.js} +10 -3
- package/chunks/{chunk-LGFAYIKX.js → chunk-QHTIBUWB.js} +1 -1
- package/chunks/{chunk-P3MYAZBY.js → chunk-QMGX2KO2.js} +1 -1
- package/chunks/{chunk-Z3I3QJK3.js → chunk-QRUIS3DN.js} +1 -1
- package/chunks/{chunk-ITOGNELQ.js → chunk-QSWDGAIC.js} +2 -2
- package/chunks/{chunk-PUVCVELY.js → chunk-QUJOI7SR.js} +70 -8
- package/chunks/{chunk-GHOTR7HL.js → chunk-QUPXZXLV.js} +1 -1
- package/chunks/{chunk-6VK6FIMQ.js → chunk-R5D5JOAM.js} +415 -379
- package/chunks/{chunk-CD6USWHZ.js → chunk-R5XLNDE2.js} +2 -2
- package/chunks/{chunk-W7EEOR7D.js → chunk-RCEEXIOO.js} +8 -6
- package/chunks/{chunk-TLRYABYP.js → chunk-RKUWKYED.js} +1 -1
- package/chunks/{chunk-RNBYOUGV.js → chunk-RXFQM6FQ.js} +1 -1
- package/chunks/{chunk-QXPI7FEC.js → chunk-S3TWXGKA.js} +4 -4
- package/chunks/{chunk-2EM7ECZD.js → chunk-SMSFWUFY.js} +309 -80
- package/chunks/{chunk-FV7425LN.js → chunk-SPJQO2CE.js} +18 -5
- package/chunks/{chunk-MLZQVCF3.js → chunk-SZRN75WQ.js} +1 -1
- package/chunks/{chunk-7RYW5LQV.js → chunk-T2NCM2ET.js} +2 -2
- package/chunks/{chunk-Z2Z3GUXZ.js → chunk-TB6UDU4T.js} +1 -1
- package/chunks/{chunk-EXPMGZZV.js → chunk-TEGEBB2I.js} +1 -1
- package/chunks/{chunk-MX2YXRER.js → chunk-TJTKSVIV.js} +1 -1
- package/chunks/{chunk-CCGOFQV3.js → chunk-TQBODCFD.js} +8 -7
- package/chunks/chunk-TV6K2FB4.js +224 -0
- package/chunks/{chunk-H6BD2ELD.js → chunk-TYAMGABM.js} +2 -2
- package/chunks/{chunk-QYNNN7BK.js → chunk-TYLOFD2U.js} +2 -2
- package/chunks/{chunk-VRDMOSQS.js → chunk-UDXSXLER.js} +2 -2
- package/chunks/{chunk-DHOLNQLC.js → chunk-UFDX27PL.js} +60 -40
- package/chunks/{chunk-WHJQ3JUS.js → chunk-UGN6CTNZ.js} +10 -10
- package/chunks/{chunk-CHB5SLZZ.js → chunk-UNLRKDMW.js} +4 -4
- package/chunks/{chunk-CJCKDMWO.js → chunk-URK542T4.js} +1 -1
- package/chunks/{chunk-AHNXYU4O.js → chunk-V6WHFGST.js} +1 -1
- package/chunks/{chunk-ZTQ26VBE.js → chunk-VDDGDZMA.js} +1 -1
- package/chunks/{chunk-BOBOCR5H.js → chunk-VEETSXYX.js} +4 -4
- package/chunks/{chunk-OMX7CUOE.js → chunk-VGC4I5JJ.js} +1 -1
- package/chunks/{chunk-43W4YSO6.js → chunk-VJNBRRZG.js} +2 -2
- package/chunks/{chunk-WQTHLB5T.js → chunk-VKS7EIOA.js} +7 -7
- package/chunks/{chunk-J7RCB6N5.js → chunk-VVDNGM6X.js} +2 -2
- package/chunks/{chunk-ER3BKOLB.js → chunk-W7FJ3N32.js} +1 -1
- package/chunks/{chunk-3HX5LZ6R.js → chunk-WBL3FJEU.js} +2 -2
- package/chunks/{chunk-7LTB54MK.js → chunk-WIEO4CWB.js} +2 -2
- package/chunks/chunk-WMC6HH7Y.js +493 -0
- package/chunks/{chunk-FEJ2FZ3U.js → chunk-WTNZ6DXB.js} +2 -2
- package/chunks/{chunk-L46XKEGM.js → chunk-X6ODDESK.js} +5 -8
- package/chunks/chunk-XDPYM5DE.js +71 -0
- package/chunks/{chunk-3RW4AZJV.js → chunk-XFSFZCM5.js} +1 -1
- package/chunks/{chunk-2MPVVENX.js → chunk-XU457J4V.js} +2 -2
- package/chunks/{chunk-SIUQ3YYX.js → chunk-XVNQMZ2I.js} +1 -1
- package/chunks/{chunk-SYCJMSIJ.js → chunk-XWRJCPHC.js} +1 -1
- package/chunks/{chunk-SUAKHHK7.js → chunk-Y66VOBRP.js} +3 -3
- package/chunks/chunk-YAF2MQZ6.js +19 -0
- package/chunks/chunk-YHN5SUIJ.js +219 -0
- package/chunks/{chunk-BR4QREVK.js → chunk-YQ3U5MUC.js} +1 -1
- package/chunks/{chunk-Y6Z2O3WR.js → chunk-YUZI3WAC.js} +1 -1
- package/chunks/{chunk-YDOXPLYL.js → chunk-ZA74ZTQU.js} +4564 -1326
- package/chunks/{chunk-DCZWC4PF.js → chunk-ZGE3222J.js} +5 -5
- package/chunks/chunk-ZP4ZZJJG.js +448 -0
- package/chunks/{chunk-AHNJGLFV.js → chunk-ZPAHLFZU.js} +3 -3
- package/chunks/cli-entry-path-4VJ3Y6T2.js +10 -0
- package/chunks/{computer-use-WMY3UOBX.js → computer-use-SHA6C3ES.js} +50 -50
- package/chunks/config-utils-XSHOMMK4.js +24 -0
- package/chunks/contextCommand-HOAF5LUC.js +68 -0
- package/chunks/create-sub-session-EAB2U5XW.js +207 -0
- package/chunks/create-sub-session-WJOWBFEP.js +375 -0
- package/chunks/{cron-create-JSXEIPVS.js → cron-create-GMVKSXZT.js} +9 -9
- package/chunks/{cron-delete-OIFVEPGU.js → cron-delete-VDZKUAVK.js} +7 -7
- package/chunks/{cron-list-D4ZX4IOE.js → cron-list-UG7C7RAR.js} +14 -10
- package/chunks/{daemon-WPAENEBW.js → daemon-MI5HF26N.js} +1074 -61
- package/chunks/daemon-status-provider-KFL3LRTP.js +76 -0
- package/chunks/{de-ZFPPQVSF.js → de-2VCDRDGU.js} +68 -6
- package/chunks/{devtools-FM6GJPYG.js → devtools-4QFYJT6U.js} +3 -3
- package/chunks/{dist-O2IRTRPP.js → dist-IEXZC5ZR.js} +10 -10
- package/chunks/{dist-SCFLLYMK.js → dist-PQK4GCKA.js} +12 -11
- package/chunks/{dist-63IS3ZMI.js → dist-PZV5RKM6.js} +4 -4
- package/chunks/{dist-E6UANPIM.js → dist-U75JK3PF.js} +1011 -197
- package/chunks/{dist-H2AEJCZ5.js → dist-VXO7QBON.js} +5 -5
- package/chunks/{dist-Z34QPAQW.js → dist-WH4TZSH3.js} +529 -79
- package/chunks/{dist-BEXOZXLQ.js → dist-X2ABIW5R.js} +36 -15
- package/chunks/earlyInputCapture-PKAQJMIP.js +69 -0
- package/chunks/{edit-OTYWAXGP.js → edit-6TXLYHJ2.js} +51 -51
- package/chunks/{en-N4EPZAQI.js → en-NJCA3TAA.js} +78 -6
- package/chunks/{enter-worktree-HNYBDVCX.js → enter-worktree-ZTILGPJX.js} +50 -50
- package/chunks/{enterPlanMode-CJCNGT63.js → enterPlanMode-62HRAMCH.js} +66 -51
- package/chunks/environment-OYA3ZVEL.js +89 -0
- package/chunks/errors-BFXOUUUR.js +75 -0
- package/chunks/{exit-worktree-DUUKOE3X.js → exit-worktree-HHJ5M6MV.js} +50 -50
- package/chunks/{exitPlanMode-AMMSXOAJ.js → exitPlanMode-M3SWHCL7.js} +51 -51
- package/chunks/{fast-path-OV6NIP3K.js → fast-path-3VMPLM74.js} +8 -8
- package/chunks/{fast-path-settings-7RIFI3PK.js → fast-path-settings-DAOVFADC.js} +8 -6
- package/chunks/{fileFromPath-IBEHA3CO.js → fileFromPath-UDALK7FM.js} +3 -3
- package/chunks/{fr-5WWMY53B.js → fr-5F3E7WKD.js} +68 -6
- package/chunks/{gemini-NQ3WWBKB.js → gemini-ZCGVYOJL.js} +181 -110
- package/chunks/{geminiContentGenerator-CDUNEJQE.js → geminiContentGenerator-XBYBAIDQ.js} +9 -9
- package/chunks/{getMachineId-bsd-4CASPIU4.js → getMachineId-bsd-EXV7SWPA.js} +3 -3
- package/chunks/{getMachineId-darwin-HPQPEMZR.js → getMachineId-darwin-IUOMFXU3.js} +3 -3
- package/chunks/{getMachineId-linux-AUARKYHL.js → getMachineId-linux-K7XJYFHL.js} +2 -2
- package/chunks/{getMachineId-unsupported-S32ZDA2T.js → getMachineId-unsupported-EA5FDRJ6.js} +2 -2
- package/chunks/{getMachineId-win-4EFLHYIJ.js → getMachineId-win-KBA6RAI5.js} +3 -3
- package/chunks/{glob-ROV3YS4R.js → glob-UOEYQNHN.js} +97 -75
- package/chunks/{grep-NRITKDCD.js → grep-OQM3CH7W.js} +50 -50
- package/chunks/handleAutoUpdate-ORBYVJHZ.js +69 -0
- package/chunks/i18n-NBP574CO.js +84 -0
- package/chunks/initializer-CWD7TCCD.js +73 -0
- package/chunks/installationInfo-CHPDUPWC.js +65 -0
- package/chunks/{ja-CUHZOLEJ.js → ja-66J6B53L.js} +69 -7
- package/chunks/{keychain-token-storage-UJV5XP4Z.js → keychain-token-storage-AU22CQI6.js} +4 -4
- package/chunks/{kittyProtocolDetector-OJRCJLIU.js → kittyProtocolDetector-HCNNKJTI.js} +2 -2
- package/chunks/list-ZTTO362W.js +76 -0
- package/chunks/loadedSettingsAdapter-V4ZTRKUO.js +70 -0
- package/chunks/{loop-wakeup-OHWEMFP5.js → loop-wakeup-C4EXLYVA.js} +10 -10
- package/chunks/{lowlight-FYAAUU5J.js → lowlight-J2OZNPCA.js} +1 -1
- package/chunks/{ls-7MFU2QYW.js → ls-2OUTG3IZ.js} +6 -6
- package/chunks/{lsp-XHDTPTGV.js → lsp-4VMNXZW6.js} +4 -4
- package/chunks/mcp-UH5PSGIK.js +70 -0
- package/chunks/{monitor-FL2ZO33W.js → monitor-F4NYEU5J.js} +50 -50
- package/chunks/{multipart-parser-AJ4WASWR.js → multipart-parser-AWZKXSQN.js} +3 -3
- package/chunks/nonInteractiveCli-7IHPXVNH.js +129 -0
- package/chunks/{notebook-edit-6PULTHL5.js → notebook-edit-HPDXNGQH.js} +51 -51
- package/chunks/openaiContentGenerator-OBDNNOE2.js +56 -0
- package/chunks/pidfile-AUMGYIOK.js +73 -0
- package/chunks/{pt-OLYN42DS.js → pt-TFZO5Y6T.js} +68 -6
- package/chunks/{qwenContentGenerator-NX2E7PB7.js → qwenContentGenerator-LH2U2YRG.js} +52 -52
- package/chunks/{qwenOAuth2-ZV7YLMND.js → qwenOAuth2-LEYOU7RU.js} +9 -9
- package/chunks/read-file-HUUFBLEO.js +30 -0
- package/chunks/{read-mcp-resource-CNQHBSJM.js → read-mcp-resource-JUFHCKSC.js} +5 -5
- package/chunks/{read-package-up-ER5OJUGP.js → read-package-up-TCM6I7S2.js} +2 -2
- package/chunks/{record-artifact-SQ2OKRJW.js → record-artifact-DWSMBXYY.js} +4 -4
- package/chunks/ripGrep-C7X33LU6.js +60 -0
- package/chunks/{ru-LDM3GWVQ.js → ru-4L4LFHIT.js} +68 -6
- package/chunks/{run-qwen-serve-JK2DL7PI.js → run-qwen-serve-DGW5AFDJ.js} +1465 -283
- package/chunks/runtime-NYUSLBEZ.js +99 -0
- package/chunks/{scheduler-O4IGVZKK.js → scheduler-5VKDXULT.js} +51 -51
- package/chunks/{send-message-76GT3JMC.js → send-message-JZ752NWD.js} +7 -7
- package/chunks/serve-UTAHSFXH.js +76 -0
- package/chunks/{server-SGNPKX2O.js → server-VUHSYSUV.js} +9088 -1817
- package/chunks/{session-5BNM25EZ.js → session-QSGSSNFB.js} +340 -135
- package/chunks/settings-X24RYEED.js +120 -0
- package/chunks/shell-4MSI2R4O.js +70 -0
- package/chunks/{skill-I22QK5XS.js → skill-JR3GTNVZ.js} +24 -24
- package/chunks/spawnChannel-RFAAO44J.js +70 -0
- package/chunks/{src-7XL4G4DC.js → src-VLI3TKEY.js} +4 -4
- package/chunks/{src-BBQSM46M.js → src-YDBNMIIM.js} +183 -53
- package/chunks/standalone-update-4CY4HKGC.js +79 -0
- package/chunks/{startInteractiveUI-JII36UGN.js → startInteractiveUI-FOD7MMVB.js} +2368 -1923
- package/chunks/stdioHelpers-UMY72QRP.js +14 -0
- package/chunks/{syntheticOutput-F7LSDCAR.js → syntheticOutput-LELY6HAI.js} +5 -5
- package/chunks/task-create-QY3BIMNM.js +23 -0
- package/chunks/{task-list-TGGJX7EA.js → task-list-D2U47WBJ.js} +11 -10
- package/chunks/{task-stop-W7NGTMYQ.js → task-stop-N6E5IYLH.js} +4 -4
- package/chunks/{task-update-XYWMHJGJ.js → task-update-HJCQILLB.js} +13 -12
- package/chunks/{team-create-A7NUU5AQ.js → team-create-ZLQSU2E3.js} +50 -50
- package/chunks/{team-delete-UHQQ2QQX.js → team-delete-RCWYDRF4.js} +11 -10
- package/chunks/{team-plan-approval-TOQRJ2KI.js → team-plan-approval-YUAYBYLS.js} +50 -50
- package/chunks/theme-manager-SKNEBMOG.js +64 -0
- package/chunks/{todoWrite-C4ZAMSR3.js → todoWrite-FKCGATPJ.js} +6 -6
- package/chunks/{tool-search-SZ4EFS2T.js → tool-search-V5J3TGWY.js} +24 -24
- package/chunks/total-session-admission-2WIH72I3.js +72 -0
- package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
- package/chunks/trustedFolders-JF265CRI.js +80 -0
- package/chunks/types-ML3TRJQ5.js +16 -0
- package/chunks/updateCheck-AMXNPBP6.js +69 -0
- package/chunks/updateEventEmitter-5MKC7BLQ.js +10 -0
- package/chunks/validateNonInterActiveAuth-6YHQO7PD.js +194 -0
- package/chunks/{version-NO2XSNNP.js → version-UEJJK7PE.js} +3 -3
- package/chunks/{web-fetch-UYGMOHW4.js → web-fetch-QGODBB6S.js} +8 -8
- package/chunks/{workflow-WO2H6NRI.js → workflow-5YFA5V4M.js} +51 -51
- package/chunks/workspace-providers-status-LMBLBNR7.js +73 -0
- package/chunks/workspace-registration-store-VV2S4MSV.js +27 -0
- package/chunks/workspace-registry-BVMPYRLN.js +76 -0
- package/chunks/workspace-service-PUYIZ3J4.js +86 -0
- package/chunks/workspace-skills-status-CJ7J2KPP.js +72 -0
- package/chunks/{write-file-PX2Z7IBE.js → write-file-OV77M6X7.js} +51 -51
- package/chunks/{yargs-B64EYTCF.js → yargs-6H2AUULL.js} +2 -2
- package/chunks/{zh-J4F6QWQV.js → zh-FSAH32JB.js} +79 -7
- package/chunks/{zh-TW-XVDWOLSW.js → zh-TW-D2YIE2LO.js} +79 -7
- package/cli.js +18 -17
- package/locales/ca.js +91 -7
- package/locales/de.js +90 -7
- package/locales/en.js +109 -7
- package/locales/fr.js +91 -7
- package/locales/ja.js +93 -7
- package/locales/pt.js +90 -7
- package/locales/ru.js +90 -7
- package/locales/zh-TW.js +106 -7
- package/locales/zh.js +106 -7
- package/package.json +3 -6
- package/web-shell/assets/{arc-BWyoJpY2.js → arc-CObt_TK9.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-BT0mGrz2.js → architectureDiagram-3BPJPVTR-B7aiJ6CK.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-BLgUWvyf.js → blockDiagram-GPEHLZMM-BSK2CrID.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-DYx9M7oU.js → c4Diagram-AAUBKEIU-Bhx2p7T_.js} +1 -1
- package/web-shell/assets/channel-BBaLq8MV.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-CfMHWbuZ.js → chunk-2J33WTMH-c3Hzv0Ni.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-B1URoqEV.js → chunk-4BX2VUAB-DNXaK7ZF.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DAIaM4QF.js → chunk-55IACEB6-BXjvDj_i.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-B2X34knw.js → chunk-727SXJPM-B6CaKFp-.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-Cif-zLTQ.js → chunk-AQP2D5EJ-tij6Mz9B.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-H18WCXdY.js → chunk-FMBD7UC4-DdlsGk2h.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-YFtetHi0.js → chunk-ND2GUHAM-CdgGZSHE.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-By2hiH3r.js → chunk-QZHKN3VN-D8oJn1C0.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-B2ZK6sWE.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B2ZK6sWE.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-VrcnnLZu.js → cose-bilkent-S5V4N54A-BUVmNp1Y.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-CGo-IaVV.js → dagre-BM42HDAG-CO4q310O.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-Dl4QjzIB.js → diagram-2AECGRRQ-C6gFvWkg.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-qMLmsO0u.js → diagram-5GNKFQAL-NG2I_c0h.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-CHlmuxPI.js → diagram-KO2AKTUF-DFKMS6I9.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BUwU3GwT.js → diagram-LMA3HP47-BiElfsfP.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-HEhwPDUM.js → diagram-OG6HWLK6-zLWDYUqu.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-1n0llBmM.js → erDiagram-TEJ5UH35-DoVaazhK.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BN74uMnt.js → flowDiagram-I6XJVG4X-0RLz-mXg.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BoOq78i3.js → ganttDiagram-6RSMTGT7-C-eX1A39.js} +3 -3
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CN8b00c8.js → gitGraphDiagram-PVQCEYII-BauQu1Bu.js} +1 -1
- package/web-shell/assets/index-3uAT3ehO.css +5 -0
- package/web-shell/assets/index-CVHa2QH7.js +3 -0
- package/web-shell/assets/index-D1KigWat.js +1128 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-CCurnIna.js → infoDiagram-5YYISTIA-C800cFvZ.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-AwuRqdUP.js → ishikawaDiagram-YF4QCWOH-CFK1Jk6e.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-B7IICk-E.js → journeyDiagram-JHISSGLW-Cjx0WAC4.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-BYF0OKhx.js → kanban-definition-UN3LZRKU-DWMDHbiv.js} +1 -1
- package/web-shell/assets/{linear-GWWguGfD.js → linear-vpW4FrZs.js} +1 -1
- package/web-shell/assets/{mermaid.core-JqtkxvCl.js → mermaid.core-DsHRUnDd.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-B0MmHsZ6.js → mindmap-definition-RKZ34NQL-D3Eb1cAK.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-DhImUZLQ.js → pieDiagram-4H26LBE5-Cr2-6sWt.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DGeSC3DT.js → quadrantDiagram-W4KKPZXB-Yd7yUgVp.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-DkspY6Re.js → requirementDiagram-4Y6WPE33-BE6SprL8.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-CaOofS2x.js → sankeyDiagram-5OEKKPKP-DzkuMK8d.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DFQ_kFnN.js → sequenceDiagram-3UESZ5HK-wD9A3Dhi.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-D3snw0Tz.js → stateDiagram-AJRCARHV-BOp5q1Nm.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BDsWUmPG.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-l4zH8nLM.js → timeline-definition-PNZ67QCA-Btc08sUA.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BnRlA98M.js → vennDiagram-CIIHVFJN-Bv6upsOA.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-BS0xUdmd.js → wardley-L42UT6IY-D-XamnCK.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DKGBUWyQ.js → wardleyDiagram-YWT4CUSO-BbP_5Wfp.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-DVb2HuOB.js → xychartDiagram-2RQKCTM6-CO5Hh28b.js} +1 -1
- package/web-shell/index.html +16 -4
- package/chunks/MaxSizedBox-5DT2SD7B.js +0 -71
- package/chunks/agent-H2DGKS77.js +0 -68
- package/chunks/agent-headless-KFMFIT6J.js +0 -62
- package/chunks/bridge-NA3ZQQKJ.js +0 -78
- package/chunks/chunk-5P5XGNYH.js +0 -93
- package/chunks/chunk-6SHO7WFF.js +0 -79
- package/chunks/chunk-IFEWJXFS.js +0 -37
- package/chunks/chunk-XNXVCNAT.js +0 -88
- package/chunks/contextCommand-LXFZRP4L.js +0 -68
- package/chunks/daemon-status-provider-GJRXY5EN.js +0 -76
- package/chunks/earlyInputCapture-KNOYZ4MJ.js +0 -69
- package/chunks/environment-ATFTYMLZ.js +0 -88
- package/chunks/errors-A54HAADA.js +0 -75
- package/chunks/handleAutoUpdate-CEZJAARW.js +0 -65
- package/chunks/initializer-BRFJKRRX.js +0 -71
- package/chunks/list-KVHF7O4X.js +0 -73
- package/chunks/loadedSettingsAdapter-LL5PSFKX.js +0 -68
- package/chunks/mcp-3GCXRTOQ.js +0 -68
- package/chunks/nonInteractiveCli-PTQI3DV6.js +0 -119
- package/chunks/openaiContentGenerator-YE42PKCY.js +0 -56
- package/chunks/pidfile-NZYSCFRK.js +0 -73
- package/chunks/read-file-33XGP5HF.js +0 -30
- package/chunks/ripGrep-QWZLGTAN.js +0 -60
- package/chunks/serve-JTMIGANH.js +0 -74
- package/chunks/settings-3MI4XXP6.js +0 -118
- package/chunks/shell-YJKBE67T.js +0 -68
- package/chunks/spawnChannel-UNV6W4DU.js +0 -70
- package/chunks/task-create-WCHTB435.js +0 -22
- package/chunks/theme-manager-WZ4RRMMB.js +0 -64
- package/chunks/total-session-admission-ULXJWXFV.js +0 -72
- package/chunks/trustedFolders-LAZZPZ3D.js +0 -79
- package/chunks/types-QX5C3CHJ.js +0 -12
- package/chunks/updateCheck-KONLM73X.js +0 -65
- package/chunks/validateNonInterActiveAuth-MPKSRCXD.js +0 -184
- package/chunks/workspace-providers-status-3W7E7DFW.js +0 -71
- package/chunks/workspace-registry-SXJZNN3O.js +0 -74
- package/chunks/workspace-service-CZRQZ4Q4.js +0 -80
- package/chunks/workspace-skills-status-K7WFREPD.js +0 -70
- 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-wmPUGHtg.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BA2ljEjW.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BA2ljEjW.js +0 -1
- package/web-shell/assets/index-CNwoO1Cn.js +0 -783
- package/web-shell/assets/index-CWQ0z6kZ.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BbSm_9d0.js +0 -1
|
@@ -2,37 +2,34 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
isLoopbackBind
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import {
|
|
7
|
-
require_lib
|
|
8
|
-
} from "./chunk-3HX5LZ6R.js";
|
|
9
|
-
import {
|
|
10
|
-
require_mime_db
|
|
11
|
-
} from "./chunk-7RYW5LQV.js";
|
|
5
|
+
} from "./chunk-RXFQM6FQ.js";
|
|
12
6
|
import {
|
|
13
7
|
CLIENT_MCP_OVER_WS_CONFIG_FLAG
|
|
14
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-PZL23GTM.js";
|
|
9
|
+
import {
|
|
10
|
+
require_lib
|
|
11
|
+
} from "./chunk-WBL3FJEU.js";
|
|
15
12
|
import {
|
|
16
13
|
MAX_WORKSPACE_PATH_LENGTH
|
|
17
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-W7FJ3N32.js";
|
|
18
15
|
import {
|
|
19
|
-
|
|
20
|
-
} from "./chunk-
|
|
16
|
+
require_mime_db
|
|
17
|
+
} from "./chunk-T2NCM2ET.js";
|
|
21
18
|
import {
|
|
22
|
-
|
|
23
|
-
} from "./chunk-
|
|
19
|
+
writeStderrLine
|
|
20
|
+
} from "./chunk-YUZI3WAC.js";
|
|
24
21
|
import {
|
|
25
22
|
require_safer
|
|
26
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-XWRJCPHC.js";
|
|
27
24
|
import {
|
|
28
25
|
require_src
|
|
29
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-DMTGGOSA.js";
|
|
30
27
|
import {
|
|
31
28
|
require_ms
|
|
32
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-YQ3U5MUC.js";
|
|
33
30
|
import {
|
|
34
31
|
init_esbuild_shims
|
|
35
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-5O2XNYP6.js";
|
|
36
33
|
import {
|
|
37
34
|
__commonJS,
|
|
38
35
|
__name,
|
|
@@ -11322,6 +11319,86 @@ var require_utils2 = __commonJS({
|
|
|
11322
11319
|
}
|
|
11323
11320
|
});
|
|
11324
11321
|
|
|
11322
|
+
// node_modules/wrappy/wrappy.js
|
|
11323
|
+
var require_wrappy = __commonJS({
|
|
11324
|
+
"node_modules/wrappy/wrappy.js"(exports, module) {
|
|
11325
|
+
init_esbuild_shims();
|
|
11326
|
+
module.exports = wrappy;
|
|
11327
|
+
function wrappy(fn, cb) {
|
|
11328
|
+
if (fn && cb) return wrappy(fn)(cb);
|
|
11329
|
+
if (typeof fn !== "function")
|
|
11330
|
+
throw new TypeError("need wrapper function");
|
|
11331
|
+
Object.keys(fn).forEach(function(k) {
|
|
11332
|
+
wrapper[k] = fn[k];
|
|
11333
|
+
});
|
|
11334
|
+
return wrapper;
|
|
11335
|
+
function wrapper() {
|
|
11336
|
+
var args = new Array(arguments.length);
|
|
11337
|
+
for (var i = 0; i < args.length; i++) {
|
|
11338
|
+
args[i] = arguments[i];
|
|
11339
|
+
}
|
|
11340
|
+
var ret = fn.apply(this, args);
|
|
11341
|
+
var cb2 = args[args.length - 1];
|
|
11342
|
+
if (typeof ret === "function" && ret !== cb2) {
|
|
11343
|
+
Object.keys(cb2).forEach(function(k) {
|
|
11344
|
+
ret[k] = cb2[k];
|
|
11345
|
+
});
|
|
11346
|
+
}
|
|
11347
|
+
return ret;
|
|
11348
|
+
}
|
|
11349
|
+
__name(wrapper, "wrapper");
|
|
11350
|
+
}
|
|
11351
|
+
__name(wrappy, "wrappy");
|
|
11352
|
+
}
|
|
11353
|
+
});
|
|
11354
|
+
|
|
11355
|
+
// node_modules/once/once.js
|
|
11356
|
+
var require_once = __commonJS({
|
|
11357
|
+
"node_modules/once/once.js"(exports, module) {
|
|
11358
|
+
init_esbuild_shims();
|
|
11359
|
+
var wrappy = require_wrappy();
|
|
11360
|
+
module.exports = wrappy(once);
|
|
11361
|
+
module.exports.strict = wrappy(onceStrict);
|
|
11362
|
+
once.proto = once(function() {
|
|
11363
|
+
Object.defineProperty(Function.prototype, "once", {
|
|
11364
|
+
value: /* @__PURE__ */ __name(function() {
|
|
11365
|
+
return once(this);
|
|
11366
|
+
}, "value"),
|
|
11367
|
+
configurable: true
|
|
11368
|
+
});
|
|
11369
|
+
Object.defineProperty(Function.prototype, "onceStrict", {
|
|
11370
|
+
value: /* @__PURE__ */ __name(function() {
|
|
11371
|
+
return onceStrict(this);
|
|
11372
|
+
}, "value"),
|
|
11373
|
+
configurable: true
|
|
11374
|
+
});
|
|
11375
|
+
});
|
|
11376
|
+
function once(fn) {
|
|
11377
|
+
var f = /* @__PURE__ */ __name(function() {
|
|
11378
|
+
if (f.called) return f.value;
|
|
11379
|
+
f.called = true;
|
|
11380
|
+
return f.value = fn.apply(this, arguments);
|
|
11381
|
+
}, "f");
|
|
11382
|
+
f.called = false;
|
|
11383
|
+
return f;
|
|
11384
|
+
}
|
|
11385
|
+
__name(once, "once");
|
|
11386
|
+
function onceStrict(fn) {
|
|
11387
|
+
var f = /* @__PURE__ */ __name(function() {
|
|
11388
|
+
if (f.called)
|
|
11389
|
+
throw new Error(f.onceError);
|
|
11390
|
+
f.called = true;
|
|
11391
|
+
return f.value = fn.apply(this, arguments);
|
|
11392
|
+
}, "f");
|
|
11393
|
+
var name = fn.name || "Function wrapped with `once`";
|
|
11394
|
+
f.onceError = name + " shouldn't be called more than once";
|
|
11395
|
+
f.called = false;
|
|
11396
|
+
return f;
|
|
11397
|
+
}
|
|
11398
|
+
__name(onceStrict, "onceStrict");
|
|
11399
|
+
}
|
|
11400
|
+
});
|
|
11401
|
+
|
|
11325
11402
|
// node_modules/is-promise/index.js
|
|
11326
11403
|
var require_is_promise = __commonJS({
|
|
11327
11404
|
"node_modules/is-promise/index.js"(exports, module) {
|
|
@@ -16455,6 +16532,7 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
16455
16532
|
session_cancel: { since: "v1" },
|
|
16456
16533
|
session_events: { since: "v1" },
|
|
16457
16534
|
session_artifacts: { since: "v1" },
|
|
16535
|
+
session_artifacts_persistence: { since: "v1" },
|
|
16458
16536
|
// Daemon emits `slow_client_warning` synthetic frames at 75% queue
|
|
16459
16537
|
// fill and honors `?maxQueued=N` (range [16, 2048]) on
|
|
16460
16538
|
// `GET /session/:id/events`. Old daemons silently lack both — SDK
|
|
@@ -16505,6 +16583,7 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
16505
16583
|
session_metadata: { since: "v1" },
|
|
16506
16584
|
session_organization: { since: "v1" },
|
|
16507
16585
|
session_export: { since: "v1" },
|
|
16586
|
+
session_transcript: { since: "v1" },
|
|
16508
16587
|
// Daemon supports the MCP client guardrail surface: an in-process
|
|
16509
16588
|
// counter exposed on `GET /workspace/mcp`, a `--mcp-client-budget=N`
|
|
16510
16589
|
// flag with `--mcp-budget-mode={enforce, warn, off}`, and a
|
|
@@ -16551,6 +16630,7 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
16551
16630
|
// unregistered — the toggle takes effect on the next ACP child spawn
|
|
16552
16631
|
// (`tools.disabled` is consulted at `Config` construction time).
|
|
16553
16632
|
workspace_tool_toggle: { since: "v1" },
|
|
16633
|
+
workspace_skill_toggle: { since: "v1" },
|
|
16554
16634
|
workspace_settings: { since: "v1" },
|
|
16555
16635
|
// `GET /workspace/permissions` is always available when this tag is
|
|
16556
16636
|
// advertised. `POST /workspace/permissions` updates the active ACP
|
|
@@ -16668,9 +16748,57 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
16668
16748
|
session_branch: { since: "v1" },
|
|
16669
16749
|
rate_limit: { since: "v1" },
|
|
16670
16750
|
workspace_reload: { since: "v1" },
|
|
16751
|
+
// Daemon supports reloading its daemon-managed channel worker via
|
|
16752
|
+
// `POST /workspace/channel/reload`. The worker is stopped and relaunched;
|
|
16753
|
+
// on relaunch it re-reads settings.json (channels / proxy / per-channel
|
|
16754
|
+
// model), so channel settings changes apply without a full daemon restart.
|
|
16755
|
+
// Advertised CONDITIONALLY while the runtime manager has a committed or
|
|
16756
|
+
// recoverable channel worker selection.
|
|
16757
|
+
channel_reload: { since: "v1" },
|
|
16758
|
+
// Runtime GET/PUT/DELETE control for daemon-managed channel selection.
|
|
16759
|
+
// The route exists even when no selection was supplied at daemon boot.
|
|
16760
|
+
channel_control: { since: "v1" },
|
|
16671
16761
|
// Multi-workspace sessions closed loop (issue #6378 Phase 2a). Advertised
|
|
16672
16762
|
// only when one daemon hosts more than one registered workspace runtime.
|
|
16673
16763
|
multi_workspace_sessions: { since: "v1" },
|
|
16764
|
+
// Singular session rewind routes resolve the owning live workspace runtime.
|
|
16765
|
+
multi_workspace_session_rewind: { since: "v1" },
|
|
16766
|
+
// Singular session shell routes resolve the owning live workspace runtime.
|
|
16767
|
+
multi_workspace_session_shell: { since: "v1" },
|
|
16768
|
+
persistent_workspace_registration: { since: "v1" },
|
|
16769
|
+
workspace_runtime_removal: { since: "v1" },
|
|
16770
|
+
// Workspace-qualified core REST routes under `/workspaces/:workspace/...`.
|
|
16771
|
+
// Covers core file/status/permissions/trust/lifecycle/MCP/tool, memory,
|
|
16772
|
+
// workspace agent CRUD, and persisted session organization surfaces.
|
|
16773
|
+
// Workspace-qualified settings also require the existing
|
|
16774
|
+
// `workspace_settings` tag because that surface depends on settings
|
|
16775
|
+
// persistence. ACP/WebSocket and auth stay outside this core tag;
|
|
16776
|
+
// workspace-qualified Voice REST/WebSocket routes use their separate
|
|
16777
|
+
// `workspace_qualified_voice` capability below. V2 extension management
|
|
16778
|
+
// is advertised separately via `extension_management_v2`.
|
|
16779
|
+
workspace_qualified_rest_core: { since: "v1" },
|
|
16780
|
+
// Workspace-qualified Voice REST and WebSocket routes. This tag is enough
|
|
16781
|
+
// to discover plural modalities because legacy Voice tags describe only
|
|
16782
|
+
// the primary runtime and may be absent for a secondary-only setup.
|
|
16783
|
+
workspace_qualified_voice: { since: "v1" },
|
|
16784
|
+
// Global extension catalog/mutations plus workspace-qualified activation
|
|
16785
|
+
// projections. This is additive to the legacy primary-workspace
|
|
16786
|
+
// `workspace_extensions` contract.
|
|
16787
|
+
extension_management_v2: { since: "v1" },
|
|
16788
|
+
// Workspace-qualified, daemon-local persisted transcript paging. The tag is
|
|
16789
|
+
// unconditional because the route also serves a trusted single-workspace
|
|
16790
|
+
// primary; authorization is evaluated for the selected runtime per request.
|
|
16791
|
+
workspace_persisted_transcript: { since: "v1" },
|
|
16792
|
+
// Workspace-qualified full session export from active persisted storage.
|
|
16793
|
+
// This is separate from `session_export` so clients do not infer the plural
|
|
16794
|
+
// route from the legacy primary-workspace export capability.
|
|
16795
|
+
workspace_session_export: { since: "v1" },
|
|
16796
|
+
// Workspace-qualified ACP transport (issue #6378 Phase 4):
|
|
16797
|
+
// `/workspaces/:workspace/acp` mounts a per-runtime ACP dispatcher (HTTP +
|
|
16798
|
+
// WebSocket) for each registered workspace, with per-runtime device-flow and
|
|
16799
|
+
// reverse client-MCP. Legacy `/acp` stays bound to the primary runtime.
|
|
16800
|
+
// Advertised only when the daemon hosts more than one workspace runtime.
|
|
16801
|
+
workspace_qualified_acp: { since: "v1" },
|
|
16674
16802
|
// Phase 2 "reverse tool channel" (issue #5626). A connected WS client (e.g.
|
|
16675
16803
|
// the Chrome extension) can host an MCP server that the daemon's agent
|
|
16676
16804
|
// calls by carrying `mcp_message` JSON-RPC frames over the daemon WS,
|
|
@@ -16687,6 +16815,12 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
16687
16815
|
// frames. Advertised when explicitly enabled or when the daemon is serving a
|
|
16688
16816
|
// Chrome extension origin.
|
|
16689
16817
|
cdp_tunnel_over_ws: { since: "v1" },
|
|
16818
|
+
// Browser automation MCP tools are available only when the CDP tunnel is on
|
|
16819
|
+
// and the operator has configured an external stdio adapter via
|
|
16820
|
+
// QWEN_CDP_MCP_COMMAND. This is separate from `cdp_tunnel_over_ws`: a daemon
|
|
16821
|
+
// may expose the tunnel while intentionally not bundling/registering a
|
|
16822
|
+
// chrome-devtools MCP adapter.
|
|
16823
|
+
browser_automation_mcp: { since: "v1" },
|
|
16690
16824
|
// Daemon hosts the `/voice/stream` WebSocket: the browser captures audio and
|
|
16691
16825
|
// streams raw PCM, the daemon transcribes server-side via the configured
|
|
16692
16826
|
// `voiceModel` (credentials never reach the client). Advertised
|
|
@@ -16721,14 +16855,54 @@ var CONDITIONAL_SERVE_FEATURES = /* @__PURE__ */ new Map([
|
|
|
16721
16855
|
"session_shell_command",
|
|
16722
16856
|
(toggles) => toggles.sessionShellCommandEnabled === true
|
|
16723
16857
|
],
|
|
16858
|
+
[
|
|
16859
|
+
"session_artifacts_persistence",
|
|
16860
|
+
(toggles) => toggles.sessionArtifactsPersistenceAvailable === true
|
|
16861
|
+
],
|
|
16724
16862
|
["rate_limit", (toggles) => toggles.rateLimit === true],
|
|
16725
16863
|
["workspace_reload", (toggles) => toggles.reloadAvailable === true],
|
|
16864
|
+
["channel_reload", (toggles) => toggles.channelReloadAvailable === true],
|
|
16865
|
+
["channel_control", (toggles) => toggles.channelControlAvailable === true],
|
|
16726
16866
|
[
|
|
16727
16867
|
"multi_workspace_sessions",
|
|
16728
16868
|
(toggles) => toggles.multiWorkspaceSessionsEnabled === true
|
|
16729
16869
|
],
|
|
16870
|
+
[
|
|
16871
|
+
"multi_workspace_session_rewind",
|
|
16872
|
+
(toggles) => toggles.multiWorkspaceSessionsEnabled === true
|
|
16873
|
+
],
|
|
16874
|
+
[
|
|
16875
|
+
"multi_workspace_session_shell",
|
|
16876
|
+
(toggles) => toggles.multiWorkspaceSessionsEnabled === true && toggles.sessionShellCommandEnabled === true
|
|
16877
|
+
],
|
|
16878
|
+
[
|
|
16879
|
+
"persistent_workspace_registration",
|
|
16880
|
+
(toggles) => toggles.persistentWorkspaceRegistrationAvailable === true
|
|
16881
|
+
],
|
|
16882
|
+
[
|
|
16883
|
+
"workspace_runtime_removal",
|
|
16884
|
+
(toggles) => toggles.workspaceRuntimeRemovalAvailable === true
|
|
16885
|
+
],
|
|
16886
|
+
[
|
|
16887
|
+
"workspace_qualified_acp",
|
|
16888
|
+
// The plural routes are pre-mounted for workspaces registered after app
|
|
16889
|
+
// creation, but the capability becomes meaningful only once a secondary
|
|
16890
|
+
// runtime exists. Until then the qualified primary route is only an alias
|
|
16891
|
+
// for the always-available legacy `/acp` surface.
|
|
16892
|
+
(toggles) => toggles.acpHttpEnabled === true && toggles.multiWorkspaceSessionsEnabled === true
|
|
16893
|
+
],
|
|
16894
|
+
[
|
|
16895
|
+
"workspace_qualified_voice",
|
|
16896
|
+
// Like qualified ACP, the plural Voice surface is mounted ahead of time
|
|
16897
|
+
// but only becomes useful once the daemon has a secondary runtime.
|
|
16898
|
+
(toggles) => toggles.acpHttpEnabled === true && toggles.multiWorkspaceSessionsEnabled === true
|
|
16899
|
+
],
|
|
16730
16900
|
["client_mcp_over_ws", (toggles) => toggles.clientMcpOverWsEnabled === true],
|
|
16731
16901
|
["cdp_tunnel_over_ws", (toggles) => toggles.cdpTunnelOverWsEnabled === true],
|
|
16902
|
+
[
|
|
16903
|
+
"browser_automation_mcp",
|
|
16904
|
+
(toggles) => toggles.browserAutomationMcpAvailable === true
|
|
16905
|
+
],
|
|
16732
16906
|
[
|
|
16733
16907
|
// Advertised whenever the `/voice/stream` WS endpoint exists. A configured
|
|
16734
16908
|
// token (or `--require-auth`) no longer suppresses it: browsers can't set
|
|
@@ -16794,6 +16968,7 @@ var PROTOTYPE_POLLUTION_KEYS = /* @__PURE__ */ new Set([
|
|
|
16794
16968
|
var CLIENT_ID_HEADER = "x-qwen-client-id";
|
|
16795
16969
|
var MAX_CLIENT_ID_LENGTH = 128;
|
|
16796
16970
|
var MAX_TOOL_NAME_LENGTH = 256;
|
|
16971
|
+
var MAX_SKILL_NAME_LENGTH = 256;
|
|
16797
16972
|
var MAX_SERVER_NAME_LENGTH = 256;
|
|
16798
16973
|
var CLIENT_ID_RE = /^[A-Za-z0-9._:-]+$/;
|
|
16799
16974
|
var INVALID_PERMISSION_OUTCOME_ERROR = '`outcome` must be `{ outcome: "cancelled" }` or `{ outcome: "selected", optionId: string }`';
|
|
@@ -16896,7 +17071,8 @@ __name(validateMcpRuntimeServerName, "validateMcpRuntimeServerName");
|
|
|
16896
17071
|
function parseAndValidateWorkspaceClientId(req, res, bridge) {
|
|
16897
17072
|
const raw = parseClientIdHeader(req, res);
|
|
16898
17073
|
if (raw === null || raw === void 0) return raw;
|
|
16899
|
-
|
|
17074
|
+
const bridges = Array.isArray(bridge) ? bridge : [bridge];
|
|
17075
|
+
if (!bridges.some((candidate) => candidate.knownClientIds().has(raw))) {
|
|
16900
17076
|
res.status(400).json({
|
|
16901
17077
|
error: `Client id "${raw}" is not registered for this workspace`,
|
|
16902
17078
|
code: "invalid_client_id",
|
|
@@ -16992,7 +17168,8 @@ init_esbuild_shims();
|
|
|
16992
17168
|
var MAX_BUCKETS = 1e4;
|
|
16993
17169
|
var GC_REQUEST_INTERVAL = 1e3;
|
|
16994
17170
|
var GC_TIMER_INTERVAL_MS = 5 * 60 * 1e3;
|
|
16995
|
-
|
|
17171
|
+
var WORKSPACE_QUALIFIED_ACP_PATH = /^\/workspaces\/[^/]+\/acp$/i;
|
|
17172
|
+
function resolveTier(method, path3, workspaceQualifiedAcpEnabled) {
|
|
16996
17173
|
const p = path3.endsWith("/") && path3.length > 1 ? path3.slice(0, -1) : path3;
|
|
16997
17174
|
if (method === "OPTIONS") return null;
|
|
16998
17175
|
if ((method === "GET" || method === "HEAD") && (p === "/health" || p === "/demo"))
|
|
@@ -17002,6 +17179,8 @@ function resolveTier(method, path3) {
|
|
|
17002
17179
|
if (method === "GET" && p.startsWith("/session/") && p.endsWith("/events"))
|
|
17003
17180
|
return null;
|
|
17004
17181
|
if (p === "/acp" || p.startsWith("/acp/")) return null;
|
|
17182
|
+
if (workspaceQualifiedAcpEnabled && WORKSPACE_QUALIFIED_ACP_PATH.test(p))
|
|
17183
|
+
return null;
|
|
17005
17184
|
if (method === "POST" && p.startsWith("/session/") && p.endsWith("/prompt"))
|
|
17006
17185
|
return "prompt";
|
|
17007
17186
|
if (method !== "GET" && method !== "HEAD") return "mutation";
|
|
@@ -17105,7 +17284,11 @@ function createRateLimiter(config) {
|
|
|
17105
17284
|
next();
|
|
17106
17285
|
return;
|
|
17107
17286
|
}
|
|
17108
|
-
const tier = resolveTier(
|
|
17287
|
+
const tier = resolveTier(
|
|
17288
|
+
req.method,
|
|
17289
|
+
req.path,
|
|
17290
|
+
config.workspaceQualifiedAcpEnabled === true
|
|
17291
|
+
);
|
|
17109
17292
|
if (tier === null) {
|
|
17110
17293
|
next();
|
|
17111
17294
|
return;
|
|
@@ -17266,6 +17449,7 @@ async function buildDaemonStatusResponse(detail, input) {
|
|
|
17266
17449
|
null
|
|
17267
17450
|
);
|
|
17268
17451
|
const acpSnapshot = input.acpHandle?.registry.getSnapshot();
|
|
17452
|
+
const acpAggregate = input.acpHandle?.getSnapshot();
|
|
17269
17453
|
const rateLimitHits = input.rateLimiter?.getHitCounts() ?? zeroRateHits();
|
|
17270
17454
|
let pendingPrompts = 0;
|
|
17271
17455
|
let derivedQueuedPrompts = 0;
|
|
@@ -17292,22 +17476,25 @@ async function buildDaemonStatusResponse(detail, input) {
|
|
|
17292
17476
|
state: "disabled",
|
|
17293
17477
|
channels: []
|
|
17294
17478
|
};
|
|
17479
|
+
const channelWorkers = (workspaceRuntimes?.length ?? 1) > 1 ? input.getChannelWorkerSnapshots?.() : void 0;
|
|
17295
17480
|
const totalAdmissionSnapshot = input.getTotalSessionAdmissionSnapshot?.();
|
|
17296
17481
|
const issues = [];
|
|
17297
17482
|
let full;
|
|
17298
17483
|
pushRuntimeIssues(
|
|
17299
17484
|
issues,
|
|
17300
17485
|
acpSnapshot,
|
|
17486
|
+
acpAggregate,
|
|
17301
17487
|
rateLimitHits,
|
|
17302
17488
|
input,
|
|
17303
17489
|
channelWorker,
|
|
17490
|
+
channelWorkers,
|
|
17304
17491
|
totalAdmissionSnapshot,
|
|
17305
17492
|
workspaceSnapshots
|
|
17306
17493
|
);
|
|
17307
17494
|
if (detail === "full") {
|
|
17308
17495
|
full = await buildFullStatus(
|
|
17309
17496
|
input,
|
|
17310
|
-
|
|
17497
|
+
acpAggregate,
|
|
17311
17498
|
workspaceSnapshots.flatMap((item) => item.snapshot.sessions)
|
|
17312
17499
|
);
|
|
17313
17500
|
pushFullIssues(issues, full);
|
|
@@ -17372,16 +17559,17 @@ async function buildDaemonStatusResponse(detail, input) {
|
|
|
17372
17559
|
},
|
|
17373
17560
|
channel: { live: aggregatedChannelLive },
|
|
17374
17561
|
channelWorker,
|
|
17562
|
+
...channelWorkers && channelWorkers.length > 0 ? { channelWorkers } : {},
|
|
17375
17563
|
transport: {
|
|
17376
17564
|
restSseActive: input.getRestSseActive(),
|
|
17377
17565
|
acp: {
|
|
17378
17566
|
enabled: acpSnapshot !== void 0,
|
|
17379
|
-
connections:
|
|
17380
|
-
connectionStreams:
|
|
17381
|
-
sessionStreams:
|
|
17382
|
-
sseStreams:
|
|
17383
|
-
wsStreams:
|
|
17384
|
-
pendingClientRequests:
|
|
17567
|
+
connections: acpAggregate?.connectionCount ?? 0,
|
|
17568
|
+
connectionStreams: acpAggregate?.connectionStreams ?? 0,
|
|
17569
|
+
sessionStreams: acpAggregate?.sessionStreams ?? 0,
|
|
17570
|
+
sseStreams: acpAggregate?.sseStreams ?? 0,
|
|
17571
|
+
wsStreams: acpAggregate?.wsStreams ?? 0,
|
|
17572
|
+
pendingClientRequests: acpAggregate?.pendingClientRequests ?? 0
|
|
17385
17573
|
}
|
|
17386
17574
|
},
|
|
17387
17575
|
rateLimit: {
|
|
@@ -17518,7 +17706,7 @@ async function withTimeout(promise, section, timeoutMs) {
|
|
|
17518
17706
|
}
|
|
17519
17707
|
}
|
|
17520
17708
|
__name(withTimeout, "withTimeout");
|
|
17521
|
-
function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWorker, totalAdmissionSnapshot, workspaceSnapshots) {
|
|
17709
|
+
function pushRuntimeIssues(issues, acpSnapshot, acpAggregate, rateLimitHits, input, channelWorker, channelWorkers, totalAdmissionSnapshot, workspaceSnapshots) {
|
|
17522
17710
|
for (const { workspaceCwd, snapshot } of workspaceSnapshots) {
|
|
17523
17711
|
if (snapshot.limits.maxSessions !== null && snapshot.limits.maxSessions > 0 && snapshot.sessionCount / snapshot.limits.maxSessions >= CAPACITY_WARNING_RATIO) {
|
|
17524
17712
|
issues.push({
|
|
@@ -17543,12 +17731,19 @@ function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWor
|
|
|
17543
17731
|
});
|
|
17544
17732
|
}
|
|
17545
17733
|
}
|
|
17546
|
-
if (acpSnapshot !== void 0 && acpSnapshot.connectionCap !== null && acpSnapshot.connectionCap > 0
|
|
17547
|
-
|
|
17548
|
-
|
|
17549
|
-
|
|
17550
|
-
|
|
17551
|
-
|
|
17734
|
+
if (acpSnapshot !== void 0 && acpSnapshot.connectionCap !== null && acpSnapshot.connectionCap > 0) {
|
|
17735
|
+
const cap = acpSnapshot.connectionCap;
|
|
17736
|
+
const busiest = (acpAggregate?.mounts ?? []).reduce(
|
|
17737
|
+
(max, m) => Math.max(max, m.connectionCount),
|
|
17738
|
+
acpSnapshot.connectionCount
|
|
17739
|
+
);
|
|
17740
|
+
if (busiest / cap >= CAPACITY_WARNING_RATIO) {
|
|
17741
|
+
issues.push({
|
|
17742
|
+
code: "connection_capacity_high",
|
|
17743
|
+
severity: "warning",
|
|
17744
|
+
message: `ACP connections are at ${busiest}/${cap} on the busiest workspace mount.`
|
|
17745
|
+
});
|
|
17746
|
+
}
|
|
17552
17747
|
}
|
|
17553
17748
|
const pendingPermissionCount = workspaceSnapshots.reduce(
|
|
17554
17749
|
(sum, item) => sum + item.snapshot.pendingPermissionCount,
|
|
@@ -17578,6 +17773,16 @@ function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWor
|
|
|
17578
17773
|
message: `${sumRateHits(rateLimitHits)} request(s) have been rejected by rate limiting since start.`
|
|
17579
17774
|
});
|
|
17580
17775
|
}
|
|
17776
|
+
const groupedWorkers = channelWorkers && channelWorkers.length > 0 ? channelWorkers : void 0;
|
|
17777
|
+
const workers = groupedWorkers ?? [channelWorker];
|
|
17778
|
+
for (const worker of workers) {
|
|
17779
|
+
pushChannelWorkerIssues(issues, worker, groupedWorkers !== void 0);
|
|
17780
|
+
}
|
|
17781
|
+
}
|
|
17782
|
+
__name(pushRuntimeIssues, "pushRuntimeIssues");
|
|
17783
|
+
function pushChannelWorkerIssues(issues, channelWorker, grouped) {
|
|
17784
|
+
const workspace = "workspaceCwd" in channelWorker ? ` for workspace ${channelWorker.workspaceCwd}` : "";
|
|
17785
|
+
const section = grouped ? "runtime.channelWorkers" : "runtime.channelWorker";
|
|
17581
17786
|
if (channelWorker.enabled && (channelWorker.state === "exited" || channelWorker.state === "failed")) {
|
|
17582
17787
|
const detailParts = [
|
|
17583
17788
|
channelWorker.pid !== void 0 ? `pid=${channelWorker.pid}` : void 0,
|
|
@@ -17596,8 +17801,8 @@ function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWor
|
|
|
17596
17801
|
issues.push({
|
|
17597
17802
|
code: "channel_worker_exited",
|
|
17598
17803
|
severity: isPermanentFailure ? "error" : "warning",
|
|
17599
|
-
message: `Channel worker is ${channelWorker.state}${details}${error}.`,
|
|
17600
|
-
section
|
|
17804
|
+
message: `Channel worker${workspace} is ${channelWorker.state}${details}${error}.`,
|
|
17805
|
+
section
|
|
17601
17806
|
});
|
|
17602
17807
|
}
|
|
17603
17808
|
if (channelWorker.enabled && channelWorker.state === "running" && channelWorker.requestedChannels !== void 0) {
|
|
@@ -17609,13 +17814,13 @@ function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWor
|
|
|
17609
17814
|
issues.push({
|
|
17610
17815
|
code: "channel_worker_partial_connect",
|
|
17611
17816
|
severity: "warning",
|
|
17612
|
-
message: `Channel worker connected ${channelWorker.channels.length}/${channelWorker.requestedChannels.length} channel(s). Failed: ${failed.join(", ")}.`,
|
|
17613
|
-
section
|
|
17817
|
+
message: `Channel worker${workspace} connected ${channelWorker.channels.length}/${channelWorker.requestedChannels.length} channel(s). Failed: ${failed.join(", ")}.`,
|
|
17818
|
+
section
|
|
17614
17819
|
});
|
|
17615
17820
|
}
|
|
17616
17821
|
}
|
|
17617
17822
|
}
|
|
17618
|
-
__name(
|
|
17823
|
+
__name(pushChannelWorkerIssues, "pushChannelWorkerIssues");
|
|
17619
17824
|
function pushFullIssues(issues, full) {
|
|
17620
17825
|
for (const [name, section] of Object.entries(full.workspace)) {
|
|
17621
17826
|
if (section.status === "unavailable") {
|
|
@@ -17833,6 +18038,177 @@ function copyNumber(from, to, key) {
|
|
|
17833
18038
|
}
|
|
17834
18039
|
__name(copyNumber, "copyNumber");
|
|
17835
18040
|
|
|
18041
|
+
// packages/cli/src/serve/acp-http-enabled.ts
|
|
18042
|
+
init_esbuild_shims();
|
|
18043
|
+
function resolveAcpHttpEnabled(env = process.env) {
|
|
18044
|
+
return env["QWEN_SERVE_ACP_HTTP"] !== "0";
|
|
18045
|
+
}
|
|
18046
|
+
__name(resolveAcpHttpEnabled, "resolveAcpHttpEnabled");
|
|
18047
|
+
|
|
18048
|
+
// packages/cli/src/serve/cdp-mcp-command.ts
|
|
18049
|
+
init_esbuild_shims();
|
|
18050
|
+
var QWEN_CDP_MCP_COMMAND_ENV = "QWEN_CDP_MCP_COMMAND";
|
|
18051
|
+
function resolveCdpMcpCommand(env) {
|
|
18052
|
+
const command = env[QWEN_CDP_MCP_COMMAND_ENV]?.trim();
|
|
18053
|
+
return command ? command : void 0;
|
|
18054
|
+
}
|
|
18055
|
+
__name(resolveCdpMcpCommand, "resolveCdpMcpCommand");
|
|
18056
|
+
function isBrowserAutomationMcpAvailable(opts, env) {
|
|
18057
|
+
return opts.cdpTunnelOverWs === true && !opts.token && resolveAcpHttpEnabled(env) && resolveCdpMcpCommand(env) !== void 0;
|
|
18058
|
+
}
|
|
18059
|
+
__name(isBrowserAutomationMcpAvailable, "isBrowserAutomationMcpAvailable");
|
|
18060
|
+
|
|
18061
|
+
// packages/cli/src/serve/voice/workspace-voice-coordinator.ts
|
|
18062
|
+
init_esbuild_shims();
|
|
18063
|
+
var MAX_CONCURRENT_VOICE_SESSIONS = 8;
|
|
18064
|
+
var DISPOSE_WAIT_MS = 5e3;
|
|
18065
|
+
var VoiceLeaseAbortError = class extends Error {
|
|
18066
|
+
constructor(kind, message) {
|
|
18067
|
+
super(message);
|
|
18068
|
+
this.kind = kind;
|
|
18069
|
+
this.name = "VoiceLeaseAbortError";
|
|
18070
|
+
}
|
|
18071
|
+
static {
|
|
18072
|
+
__name(this, "VoiceLeaseAbortError");
|
|
18073
|
+
}
|
|
18074
|
+
};
|
|
18075
|
+
var Lease = class {
|
|
18076
|
+
constructor(onRelease) {
|
|
18077
|
+
this.onRelease = onRelease;
|
|
18078
|
+
}
|
|
18079
|
+
static {
|
|
18080
|
+
__name(this, "Lease");
|
|
18081
|
+
}
|
|
18082
|
+
controller = new AbortController();
|
|
18083
|
+
signal = this.controller.signal;
|
|
18084
|
+
released = false;
|
|
18085
|
+
release() {
|
|
18086
|
+
if (this.released) return;
|
|
18087
|
+
this.released = true;
|
|
18088
|
+
this.onRelease(this);
|
|
18089
|
+
}
|
|
18090
|
+
abort(reason) {
|
|
18091
|
+
if (!this.signal.aborted) this.controller.abort(reason);
|
|
18092
|
+
}
|
|
18093
|
+
};
|
|
18094
|
+
var WorkspaceVoiceCoordinator = class {
|
|
18095
|
+
static {
|
|
18096
|
+
__name(this, "WorkspaceVoiceCoordinator");
|
|
18097
|
+
}
|
|
18098
|
+
states = /* @__PURE__ */ new Map();
|
|
18099
|
+
disposed = /* @__PURE__ */ new WeakSet();
|
|
18100
|
+
active = 0;
|
|
18101
|
+
acquire(runtime) {
|
|
18102
|
+
if (this.disposed.has(runtime)) {
|
|
18103
|
+
return { kind: "rejected", reason: "draining" };
|
|
18104
|
+
}
|
|
18105
|
+
const state = this.stateFor(runtime);
|
|
18106
|
+
if (state.draining) return { kind: "rejected", reason: "draining" };
|
|
18107
|
+
if (this.active >= MAX_CONCURRENT_VOICE_SESSIONS) {
|
|
18108
|
+
return { kind: "rejected", reason: "capacity" };
|
|
18109
|
+
}
|
|
18110
|
+
const lease = new Lease((current) => this.release(runtime, current));
|
|
18111
|
+
state.leases.add(lease);
|
|
18112
|
+
this.active++;
|
|
18113
|
+
return { kind: "admitted", lease };
|
|
18114
|
+
}
|
|
18115
|
+
beginWorkspaceDrain(runtime) {
|
|
18116
|
+
this.stateFor(runtime).draining = true;
|
|
18117
|
+
}
|
|
18118
|
+
cancelWorkspaceDrain(runtime) {
|
|
18119
|
+
const state = this.states.get(runtime);
|
|
18120
|
+
if (!state || state.completed) return;
|
|
18121
|
+
state.draining = false;
|
|
18122
|
+
if (state.leases.size === 0) this.states.delete(runtime);
|
|
18123
|
+
}
|
|
18124
|
+
completeWorkspaceDrain(runtime) {
|
|
18125
|
+
this.disposed.add(runtime);
|
|
18126
|
+
const state = this.states.get(runtime);
|
|
18127
|
+
if (!state) return;
|
|
18128
|
+
state.draining = true;
|
|
18129
|
+
state.completed = true;
|
|
18130
|
+
const abortReason = new VoiceLeaseAbortError(
|
|
18131
|
+
"workspace_removed",
|
|
18132
|
+
"Workspace drain completed"
|
|
18133
|
+
);
|
|
18134
|
+
for (const lease of state.leases) lease.abort(abortReason);
|
|
18135
|
+
this.deleteIfIdle(runtime, state);
|
|
18136
|
+
}
|
|
18137
|
+
getWorkspaceActivity(runtime) {
|
|
18138
|
+
return this.states.get(runtime)?.leases.size ?? 0;
|
|
18139
|
+
}
|
|
18140
|
+
async disposeRuntime(runtime, reason) {
|
|
18141
|
+
this.disposed.add(runtime);
|
|
18142
|
+
const state = this.states.get(runtime);
|
|
18143
|
+
if (!state) return;
|
|
18144
|
+
state.draining = true;
|
|
18145
|
+
state.completed = true;
|
|
18146
|
+
const abortReason = new VoiceLeaseAbortError(
|
|
18147
|
+
reason,
|
|
18148
|
+
reason === "workspace_removed" ? "Workspace runtime was removed" : "Daemon is shutting down"
|
|
18149
|
+
);
|
|
18150
|
+
for (const lease of state.leases) lease.abort(abortReason);
|
|
18151
|
+
if (state.leases.size === 0) {
|
|
18152
|
+
this.deleteIfIdle(runtime, state);
|
|
18153
|
+
return;
|
|
18154
|
+
}
|
|
18155
|
+
let resolveIdle;
|
|
18156
|
+
const idle = new Promise((resolve) => {
|
|
18157
|
+
resolveIdle = resolve;
|
|
18158
|
+
state.idleWaiters.add(resolve);
|
|
18159
|
+
});
|
|
18160
|
+
let timeout;
|
|
18161
|
+
let timedOut = false;
|
|
18162
|
+
try {
|
|
18163
|
+
await Promise.race([
|
|
18164
|
+
idle,
|
|
18165
|
+
new Promise((resolve) => {
|
|
18166
|
+
timeout = setTimeout(() => {
|
|
18167
|
+
timedOut = true;
|
|
18168
|
+
resolve();
|
|
18169
|
+
}, DISPOSE_WAIT_MS);
|
|
18170
|
+
timeout.unref?.();
|
|
18171
|
+
})
|
|
18172
|
+
]);
|
|
18173
|
+
} finally {
|
|
18174
|
+
if (timeout) clearTimeout(timeout);
|
|
18175
|
+
if (resolveIdle) state.idleWaiters.delete(resolveIdle);
|
|
18176
|
+
}
|
|
18177
|
+
if (timedOut && state.leases.size > 0) {
|
|
18178
|
+
process.stderr.write(
|
|
18179
|
+
`qwen serve: Voice runtime disposal timed out with ${state.leases.size} active lease(s).
|
|
18180
|
+
`
|
|
18181
|
+
);
|
|
18182
|
+
}
|
|
18183
|
+
}
|
|
18184
|
+
stateFor(runtime) {
|
|
18185
|
+
let state = this.states.get(runtime);
|
|
18186
|
+
if (!state) {
|
|
18187
|
+
state = {
|
|
18188
|
+
draining: false,
|
|
18189
|
+
completed: false,
|
|
18190
|
+
leases: /* @__PURE__ */ new Set(),
|
|
18191
|
+
idleWaiters: /* @__PURE__ */ new Set()
|
|
18192
|
+
};
|
|
18193
|
+
this.states.set(runtime, state);
|
|
18194
|
+
}
|
|
18195
|
+
return state;
|
|
18196
|
+
}
|
|
18197
|
+
release(runtime, lease) {
|
|
18198
|
+
const state = this.states.get(runtime);
|
|
18199
|
+
if (!state || !state.leases.delete(lease)) return;
|
|
18200
|
+
this.active--;
|
|
18201
|
+
if (state.leases.size === 0) {
|
|
18202
|
+
for (const resolve of state.idleWaiters) resolve();
|
|
18203
|
+
state.idleWaiters.clear();
|
|
18204
|
+
}
|
|
18205
|
+
this.deleteIfIdle(runtime, state);
|
|
18206
|
+
}
|
|
18207
|
+
deleteIfIdle(runtime, state) {
|
|
18208
|
+
if (state.completed && state.leases.size === 0) this.states.delete(runtime);
|
|
18209
|
+
}
|
|
18210
|
+
};
|
|
18211
|
+
|
|
17836
18212
|
export {
|
|
17837
18213
|
require_express2 as require_express,
|
|
17838
18214
|
sanitizeForStderr,
|
|
@@ -17863,6 +18239,7 @@ export {
|
|
|
17863
18239
|
CLIENT_ID_HEADER,
|
|
17864
18240
|
MAX_CLIENT_ID_LENGTH,
|
|
17865
18241
|
MAX_TOOL_NAME_LENGTH,
|
|
18242
|
+
MAX_SKILL_NAME_LENGTH,
|
|
17866
18243
|
MAX_SERVER_NAME_LENGTH,
|
|
17867
18244
|
CLIENT_ID_RE,
|
|
17868
18245
|
safeBody,
|
|
@@ -17884,7 +18261,14 @@ export {
|
|
|
17884
18261
|
buildDaemonStatusResponse,
|
|
17885
18262
|
allowOriginMode,
|
|
17886
18263
|
listenerMaxConnections,
|
|
17887
|
-
positiveFiniteOrNull
|
|
18264
|
+
positiveFiniteOrNull,
|
|
18265
|
+
resolveAcpHttpEnabled,
|
|
18266
|
+
QWEN_CDP_MCP_COMMAND_ENV,
|
|
18267
|
+
resolveCdpMcpCommand,
|
|
18268
|
+
isBrowserAutomationMcpAvailable,
|
|
18269
|
+
MAX_CONCURRENT_VOICE_SESSIONS,
|
|
18270
|
+
VoiceLeaseAbortError,
|
|
18271
|
+
WorkspaceVoiceCoordinator
|
|
17888
18272
|
};
|
|
17889
18273
|
/**
|
|
17890
18274
|
* @license
|