@qwen-code/qwen-code 0.21.6-preview.0 → 0.21.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/settings.md +19 -9
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -1
- package/bundled/qc-helper/docs/features/channels/github.md +31 -19
- package/bundled/qc-helper/docs/features/code-review.md +30 -1
- package/bundled/qc-helper/docs/qwen-serve.md +1 -1
- package/bundled/review/SKILL.md +59 -22
- package/chunks/{MaxSizedBox-A3UYJS6B.js → MaxSizedBox-ANWZBPTS.js} +38 -38
- package/chunks/{StandaloneSessionPicker-NGLY26I4.js → StandaloneSessionPicker-XKS3VU3A.js} +56 -55
- package/chunks/{acp-startup-profiler-3RICG2YW.js → acp-startup-profiler-ORIQ2CCQ.js} +2 -2
- package/chunks/{acpAgent-V54T2EEL.js → acpAgent-KUAZ3GCZ.js} +1091 -150
- package/chunks/{agent-2P53VL2L.js → agent-T6PTGX5R.js} +35 -35
- package/chunks/{agent-headless-6X4GCFRD.js → agent-headless-PR7YCB7S.js} +35 -35
- package/chunks/{anthropicContentGenerator-3CAHEZBM.js → anthropicContentGenerator-DTMVEL5M.js} +7 -7
- package/chunks/{artifact-tool-RROCCJDA.js → artifact-tool-U4VOZIK5.js} +2 -2
- package/chunks/{askUserQuestion-2EPPBPUZ.js → askUserQuestion-XOBQLPFA.js} +2 -2
- package/chunks/{bridge-TCFMLKHR.js → bridge-NU6YEEHK.js} +41 -41
- package/chunks/{channel-management-service-5XPPTWUQ.js → channel-management-service-FSQ7SHYI.js} +1 -1
- package/chunks/{channel-settings-store-B4HNMNQV.js → channel-settings-store-35VQVUVV.js} +42 -42
- package/chunks/{channel-worker-group-SVGPDH2C.js → channel-worker-group-JWQK224X.js} +5 -5
- package/chunks/{channel-worker-manager-72ZK2GTS.js → channel-worker-manager-77E3OXRQ.js} +5 -5
- package/chunks/{channel-worker-supervisor-NUEDVHX4.js → channel-worker-supervisor-62YWUGP2.js} +3 -3
- package/chunks/{chunk-XC656O42.js → chunk-22NBYCPD.js} +3 -3
- package/chunks/{chunk-WXS647W5.js → chunk-23RZCH76.js} +3 -3
- package/chunks/{chunk-O656RSMC.js → chunk-2U3WZGZG.js} +18 -10
- package/chunks/chunk-2VSTGY6M.js +107 -0
- package/chunks/{chunk-AU3XNTMV.js → chunk-33ACCIIY.js} +3 -3
- package/chunks/{chunk-MBEMTXQT.js → chunk-3K7FH2KQ.js} +1 -32
- package/chunks/{chunk-CJBRIJ7W.js → chunk-3NB7TSE2.js} +3 -3
- package/chunks/{chunk-QYPT3QUD.js → chunk-3ULCB3NE.js} +3 -3
- package/chunks/{chunk-7FUVSN4D.js → chunk-55LYDVPU.js} +1 -1
- package/chunks/{chunk-3ZRS2XNY.js → chunk-5KH532V7.js} +1 -1
- package/chunks/{chunk-P7LKADIT.js → chunk-6EOI4HOK.js} +7 -7
- package/chunks/{chunk-X6DV3WKN.js → chunk-6GONZVLS.js} +1 -1
- package/chunks/{chunk-T4XY5CT4.js → chunk-6HVUFDS2.js} +7 -7
- package/chunks/{chunk-5L6CQ4ZU.js → chunk-6M26GBKX.js} +2 -2
- package/chunks/{chunk-SPUDIAHX.js → chunk-6UWFTUQL.js} +530 -388
- package/chunks/{chunk-EKWNNQQD.js → chunk-6XJMFJ4D.js} +16 -10
- package/chunks/{chunk-72DZPDH4.js → chunk-6XU3PH66.js} +10 -5
- package/chunks/{chunk-WIPQR44Y.js → chunk-72LNFGUY.js} +3 -3
- package/chunks/{chunk-33FNCQSY.js → chunk-7MH4J33A.js} +2 -2
- package/chunks/{chunk-2AGOQ7QO.js → chunk-7UFKAV7Y.js} +118 -6
- package/chunks/{chunk-HKNSU4WX.js → chunk-AE77C5ZU.js} +198 -35
- package/chunks/{chunk-JELIWHXD.js → chunk-AOHJKPKL.js} +1 -1
- package/chunks/{chunk-GLNBDYUX.js → chunk-AXMWHKXA.js} +6 -2
- package/chunks/{chunk-H36SETQS.js → chunk-B2GJNDTV.js} +1 -1
- package/chunks/{chunk-QMBEW7EW.js → chunk-BGG4MBYD.js} +2 -2
- package/chunks/{chunk-QL4TN4HS.js → chunk-BRVWYMKV.js} +1 -1
- package/chunks/{chunk-6WBWIPBF.js → chunk-BVWVWGLE.js} +2 -2
- package/chunks/{chunk-WPKIU4PA.js → chunk-CB2464BK.js} +6 -6
- package/chunks/{chunk-2UISUFHQ.js → chunk-CJXIIILK.js} +3 -3
- package/chunks/{chunk-WK4TJUEA.js → chunk-CKASRHZI.js} +1 -1
- package/chunks/{chunk-Z7JILXGX.js → chunk-CNIID3TV.js} +3 -3
- package/chunks/{chunk-6KEN3RIC.js → chunk-CSZEXZBE.js} +3 -3
- package/chunks/{chunk-KKN2IE7Q.js → chunk-CTJLZLB5.js} +1 -1
- package/chunks/{chunk-5CDI4UOY.js → chunk-CXE7E23H.js} +131 -48
- package/chunks/{chunk-URJHXOSO.js → chunk-CYR3HI5X.js} +3 -3
- package/chunks/{chunk-546CDN6D.js → chunk-DBOFL3LQ.js} +3 -3
- package/chunks/{chunk-4LKVQFHM.js → chunk-DREZZAZM.js} +2 -2
- package/chunks/{chunk-2U7GPHA6.js → chunk-E33LOKRA.js} +1 -1
- package/chunks/{chunk-2DNKEBXY.js → chunk-EI3HZX6C.js} +1 -1
- package/chunks/{chunk-U25CMJYY.js → chunk-EKPKKXY2.js} +1 -1
- package/chunks/{chunk-QG2ACINA.js → chunk-EORNAQDT.js} +1 -1
- package/chunks/{chunk-432XCUHF.js → chunk-EQL65XGA.js} +1 -1
- package/chunks/{chunk-TYERNYH4.js → chunk-EUNWC2VS.js} +2 -2
- package/chunks/{chunk-CDHNGCJI.js → chunk-EUQTXRKZ.js} +7 -7
- package/chunks/{chunk-UH7Z7Y45.js → chunk-FOGU3LJX.js} +1 -1
- package/chunks/{chunk-BU4BRCPX.js → chunk-FPM27XN4.js} +5 -5
- package/chunks/{chunk-E4WHKETF.js → chunk-FVKHVJZQ.js} +2 -49
- package/chunks/{chunk-NKST54XA.js → chunk-FZBZSYKU.js} +1 -1
- package/chunks/{chunk-XZCMQUOF.js → chunk-GDXET5XU.js} +31 -3387
- package/chunks/{chunk-A5YZ3FA2.js → chunk-GM463R2B.js} +1 -1
- package/chunks/{chunk-MOHAWIAW.js → chunk-GNPNYXJB.js} +2 -2
- package/chunks/{chunk-AFZTZLFB.js → chunk-GSS34377.js} +3 -3
- package/chunks/{chunk-MVLM6PJK.js → chunk-H2UQ2M5Z.js} +6 -2
- package/chunks/{chunk-BK2UNYWD.js → chunk-HIBNSEJE.js} +12 -0
- package/chunks/{chunk-CXYBX4AL.js → chunk-HQB2KUAN.js} +1 -1
- package/chunks/{chunk-ZQL73PPE.js → chunk-HYRDKNUY.js} +2 -2
- package/chunks/{chunk-D7D7RXIJ.js → chunk-IC4Z6LX6.js} +1 -1
- package/chunks/{chunk-HU5TUALO.js → chunk-IIJEYBNH.js} +3 -3
- package/chunks/{chunk-DTAPI453.js → chunk-IUFV6FYU.js} +2 -2
- package/chunks/{chunk-MISUEWB4.js → chunk-J6SZID63.js} +12 -8
- package/chunks/{chunk-OWAK7LMW.js → chunk-KGJGEEVR.js} +7 -0
- package/chunks/{chunk-BFHXDAR7.js → chunk-KKBPOU75.js} +1 -1
- package/chunks/{chunk-XOZ2R6XI.js → chunk-KKJJB5X6.js} +3578 -1487
- package/chunks/{chunk-PQTK2FVO.js → chunk-KR4ZSC7K.js} +4 -4
- package/chunks/{chunk-NAYPZ72V.js → chunk-KXSDEOFU.js} +1 -1
- package/chunks/{chunk-MGSSJT27.js → chunk-L4N6TIP7.js} +5 -3
- package/chunks/{chunk-4T6QMNX2.js → chunk-LA7YLSR6.js} +185 -12
- package/chunks/{chunk-4E5PO6R7.js → chunk-LEMXGVEP.js} +4 -4
- package/chunks/{chunk-WVAESIM6.js → chunk-LZC3B5N2.js} +4 -4
- package/chunks/{chunk-6O5DVH27.js → chunk-M6HMMKVG.js} +1 -1
- package/chunks/{chunk-Z5S6KH2B.js → chunk-MAJS7AT4.js} +6 -6
- package/chunks/{chunk-XNZBXQCG.js → chunk-MKVZE4ZJ.js} +1 -1
- package/chunks/{chunk-I7JDGNG6.js → chunk-MVUQRLOH.js} +9 -5
- package/chunks/{chunk-GLWP3FDB.js → chunk-MZSJ43WV.js} +31 -2
- package/chunks/{chunk-ZPPP6VCL.js → chunk-NG2R4N5O.js} +1 -1
- package/chunks/chunk-NKLP3DCK.js +22 -0
- package/chunks/{chunk-WIRAPZ62.js → chunk-NLREQJFK.js} +7 -1
- package/chunks/{chunk-N47ZM2KI.js → chunk-OFI7IGST.js} +12 -12
- package/chunks/{chunk-DBIEZC7T.js → chunk-OH2VKQXH.js} +42 -16
- package/chunks/{chunk-C4GRKMUL.js → chunk-OHJLEW5J.js} +5 -5
- package/chunks/{chunk-3RXUYQJI.js → chunk-OIVKILPI.js} +49 -0
- package/chunks/{chunk-VDLXPEI5.js → chunk-OMKQH5C5.js} +3 -3
- package/chunks/{chunk-LBWNSLJK.js → chunk-ONSZH6VM.js} +2 -2
- package/chunks/{chunk-DYA25Y7U.js → chunk-OWMAZHIX.js} +1 -1
- package/chunks/{chunk-WAOLM6SQ.js → chunk-P2AJ7FTI.js} +1 -1
- package/chunks/{chunk-MFBUJMQ3.js → chunk-P3LEG54R.js} +4 -4
- package/chunks/{chunk-WVRJKSIG.js → chunk-PJOBIWUG.js} +1 -1
- package/chunks/{chunk-YUVTZ4UH.js → chunk-PQBHU2IA.js} +114 -18
- package/chunks/{chunk-GTM6IHBB.js → chunk-Q3JQ7OSU.js} +2 -1
- package/chunks/{chunk-IISDPZ5X.js → chunk-QETYKPMG.js} +1 -1
- package/chunks/{chunk-UKZEXS6K.js → chunk-R574ATRM.js} +11 -0
- package/chunks/{chunk-DOICUTPO.js → chunk-RERATVSK.js} +11 -10
- package/chunks/chunk-RGSBTHSU.js +3381 -0
- package/chunks/{chunk-6D6V55ZQ.js → chunk-RMH5OWLD.js} +1 -1
- package/chunks/{chunk-AVDEBBMI.js → chunk-RNVQB725.js} +2 -2
- package/chunks/{chunk-QWUYFMAR.js → chunk-RUL4S3K3.js} +87 -67
- package/chunks/{chunk-RTWF7FF7.js → chunk-RZHU3ILK.js} +5 -5
- package/chunks/{chunk-3DTM3RPU.js → chunk-S7CV4KO6.js} +3 -3
- package/chunks/{chunk-ZH7G3A4U.js → chunk-SCI7K3GM.js} +4 -4
- package/chunks/{chunk-YAVY33G4.js → chunk-SEZ556DZ.js} +1 -1
- package/chunks/{chunk-6KZP75GT.js → chunk-SHZYHGQH.js} +1 -1
- package/chunks/chunk-SOORFWKY.js +155 -0
- package/chunks/{chunk-NYZAL2W2.js → chunk-SPMY6CX6.js} +4 -4
- package/chunks/{chunk-EHMN6SEG.js → chunk-TDXGKHDN.js} +4 -4
- package/chunks/{chunk-XKTCA6BW.js → chunk-TLV2IMHR.js} +5 -5
- package/chunks/{chunk-XSGQKR37.js → chunk-TRLYP7OF.js} +358 -20
- package/chunks/{chunk-DG563ZCS.js → chunk-TYKC75AX.js} +3 -3
- package/chunks/{chunk-KVUBYJDM.js → chunk-TZEZYNYD.js} +1 -1
- package/chunks/{chunk-XC2VAFVZ.js → chunk-UVX4Y6IN.js} +1 -1
- package/chunks/{chunk-IKXE3AAC.js → chunk-VOARQPTA.js} +2 -2
- package/chunks/{chunk-TVFC3XF5.js → chunk-W4B7UBUS.js} +7 -7
- package/chunks/{chunk-M744OFVE.js → chunk-W7U4ESW2.js} +1 -1
- package/chunks/{chunk-URN76TKR.js → chunk-WCG5O7IP.js} +2 -2
- package/chunks/{chunk-A6SX5TAH.js → chunk-XCWO3SMQ.js} +9 -5
- package/chunks/{chunk-FDV3CXTD.js → chunk-Y4EWSQF7.js} +3 -3
- package/chunks/{chunk-3PRJYMXC.js → chunk-Y4NGLFGJ.js} +1 -1
- package/chunks/{chunk-DOA7MCDY.js → chunk-Y7E5LNLO.js} +973 -892
- package/chunks/{chunk-3LGZEYOF.js → chunk-YHEEE624.js} +2 -2
- package/chunks/{chunk-Y5HIDFKZ.js → chunk-YJQCUTT2.js} +4 -4
- package/chunks/{chunk-QONSRAEV.js → chunk-YP5KH5Y7.js} +1 -1
- package/chunks/{chunk-SQ3ZJOYL.js → chunk-ZJ3VGYHK.js} +20 -20
- package/chunks/{chunk-7GYP5COR.js → chunk-ZXU5UHMI.js} +1 -1
- package/chunks/{computer-use-GTOP2CVH.js → computer-use-KEAPATUY.js} +35 -35
- package/chunks/{config-utils-LIRO7NSU.js → config-utils-K7SCOWHD.js} +2 -2
- package/chunks/{contextCommand-K6T6RRF3.js → contextCommand-ZJA6A5K5.js} +38 -38
- package/chunks/{core-runtime-D2626QQU.js → core-runtime-QMJPWHCI.js} +35 -35
- package/chunks/create-sub-session-DJE6XICH.js +772 -0
- package/chunks/{create-sub-session-6EWLAZD5.js → create-sub-session-E4PBYXV5.js} +2 -2
- package/chunks/{cron-create-CCRIULJE.js → cron-create-GRBWYMIJ.js} +4 -4
- package/chunks/{cron-delete-FCFW6BGP.js → cron-delete-4CMKBR2M.js} +4 -4
- package/chunks/{cron-list-QDBVCHRF.js → cron-list-W7K4ASOA.js} +4 -4
- package/chunks/{daemon-CCIX4BMG.js → daemon-SCTQMM7Z.js} +165 -5
- package/chunks/{daemon-status-provider-2EHRZZVF.js → daemon-status-provider-FSWDPE2G.js} +45 -45
- package/chunks/{daemon-trust-policy-B3EPDJDR.js → daemon-trust-policy-P5L5VFAY.js} +41 -41
- package/chunks/{daemon-trust-policy-monitor-MFM5X26G.js → daemon-trust-policy-monitor-73JYN6ET.js} +41 -41
- package/chunks/{deferred-core-runtime-KXN7HLN7.js → deferred-core-runtime-BWRCCFTE.js} +35 -35
- package/chunks/discovery-XLHITE74.js +220 -0
- package/chunks/{display-image-GUJA352B.js → display-image-O2XFPQTC.js} +4 -4
- package/chunks/{dist-A7H2KKUC.js → dist-K4WWQBHS.js} +277 -98
- package/chunks/{dist-IKGVITP3.js → dist-KS4O2NKE.js} +99 -6
- package/chunks/{earlyInputCapture-WUNYYFOS.js → earlyInputCapture-L5ST23A6.js} +36 -36
- package/chunks/{edit-DMFCBP2D.js → edit-LHHRFNFK.js} +35 -35
- package/chunks/{enter-worktree-5SVBCXFC.js → enter-worktree-6NXCRZPF.js} +35 -35
- package/chunks/{enterPlanMode-QUIZFQ4M.js → enterPlanMode-ZVQT4U7D.js} +35 -35
- package/chunks/{environment-U6QP23VJ.js → environment-GJ2HWJOS.js} +38 -38
- package/chunks/{errors-GZWFA6ON.js → errors-6RLH3XXC.js} +38 -38
- package/chunks/{exit-worktree-FUB44KAF.js → exit-worktree-I2YLUHHY.js} +35 -35
- package/chunks/{exitPlanMode-XSHHYR73.js → exitPlanMode-7CCWKO7I.js} +35 -35
- package/chunks/{fast-path-JHQJSIMZ.js → fast-path-DVFD4HQD.js} +2 -2
- package/chunks/{gemini-O44ETOKT.js → gemini-7FWGOYD4.js} +78 -78
- package/chunks/{geminiContentGenerator-TTM4TZJM.js → geminiContentGenerator-V2WVLIXU.js} +6 -6
- package/chunks/{glob-YECOWTRW.js → glob-3N6GGI75.js} +35 -35
- package/chunks/{goal-tools-3AZKX5WQ.js → goal-tools-APOW6UXL.js} +3 -3
- package/chunks/{grep-BZO4LOTA.js → grep-V43ILZVX.js} +35 -35
- package/chunks/{handleAutoUpdate-TOO52D6H.js → handleAutoUpdate-A5WFVWIA.js} +40 -40
- package/chunks/{i18n-ARJYXZQ5.js → i18n-PLVQ4FBZ.js} +37 -37
- package/chunks/{image-gen-J6Q2YBEU.js → image-gen-7C6IK6DC.js} +9 -9
- package/chunks/{initializer-CEZ4RPQV.js → initializer-CVAIKZYL.js} +42 -42
- package/chunks/{installationInfo-AEGIIQAT.js → installationInfo-J6QDHNTK.js} +36 -36
- package/chunks/{keychain-token-storage-7BT4TQ2A.js → keychain-token-storage-TVAMTNP7.js} +2 -2
- package/chunks/{list-7XLPV5GC.js → list-ZZ4OUUWV.js} +44 -44
- package/chunks/{list-agents-GC4BRET7.js → list-agents-KFFIIS2G.js} +2 -2
- package/chunks/{loadedSettingsAdapter-YK5SBHOT.js → loadedSettingsAdapter-QRYRJSWL.js} +41 -41
- package/chunks/{loggingContentGenerator-I7QDXS43.js → loggingContentGenerator-OJCO75HM.js} +17 -17
- package/chunks/{loop-wakeup-SQQSBMEY.js → loop-wakeup-TLMJPMMP.js} +5 -5
- package/chunks/{ls-63CC3NNX.js → ls-UVVE2XGE.js} +4 -4
- package/chunks/{lsp-P6NVJVNT.js → lsp-QMEA2VLB.js} +2 -2
- package/chunks/{managed-npm-update-YSL7PA7G.js → managed-npm-update-PCOSCP2N.js} +48 -39
- package/chunks/{mcp-RKFQZXP6.js → mcp-M3WKKWKY.js} +41 -41
- package/chunks/{monitor-QHHJIKGL.js → monitor-GN24FH6C.js} +35 -35
- package/chunks/{nonInteractiveCli-XEBIE7MG.js → nonInteractiveCli-KPTU3VSQ.js} +75 -75
- package/chunks/{notebook-edit-SG7X2EQA.js → notebook-edit-4YM65BBO.js} +35 -35
- package/chunks/{openaiContentGenerator-63CVR33K.js → openaiContentGenerator-EDQT6GTV.js} +19 -19
- package/chunks/{pidfile-I3CXJGQD.js → pidfile-JOIIRN2C.js} +36 -36
- package/chunks/{processUtils-LJ3DSANX.js → processUtils-5SV4MX3Q.js} +2 -2
- package/chunks/{qwenContentGenerator-JINBVCH6.js → qwenContentGenerator-ODRJSUGR.js} +40 -40
- package/chunks/{qwenOAuth2-SY2O3NRR.js → qwenOAuth2-NESCMZ47.js} +8 -8
- package/chunks/{read-file-PGTXF25I.js → read-file-HPSODLPK.js} +10 -10
- package/chunks/{read-mcp-resource-RTSSEER5.js → read-mcp-resource-2TNSJTC3.js} +2 -2
- package/chunks/{record-artifact-E6AWQU2Z.js → record-artifact-RAON52FC.js} +3 -3
- package/chunks/{resumeHistoryUtils-FB2NFVZ2.js → resumeHistoryUtils-TXCOFFMQ.js} +42 -41
- package/chunks/{ripGrep-IY3KGPM6.js → ripGrep-ZKQGTQAO.js} +35 -35
- package/chunks/{run-qwen-serve-UYEMGPKA.js → run-qwen-serve-ZPKPKECF.js} +516 -87
- package/chunks/{runtime-CG3BKRFE.js → runtime-2FLNNM36.js} +44 -44
- package/chunks/{scheduler-VFUVGDE5.js → scheduler-365PJHNR.js} +35 -35
- package/chunks/{sdk-exporters-http-IL2346MJ.js → sdk-exporters-http-KHAB5JSD.js} +2 -2
- package/chunks/{sdk-impl-SYKGVWOZ.js → sdk-impl-KD7FSTC3.js} +2 -2
- package/chunks/{send-message-TL6FIMMN.js → send-message-ZM7MRUGP.js} +5 -5
- package/chunks/{serve-ZCCQ2G2L.js → serve-QD2RNLKJ.js} +42 -42
- package/chunks/{server-WS7LWXPP.js → server-XLJVLTYM.js} +7952 -611
- package/chunks/{session-IQLCT32T.js → session-3VTUHH4Q.js} +78 -78
- package/chunks/{settings-NX4EUIE6.js → settings-KULVPCQC.js} +40 -40
- package/chunks/{shell-THDYM4CS.js → shell-3SWW22MH.js} +35 -35
- package/chunks/{skill-OXXZBNQB.js → skill-KDHWYS7W.js} +14 -14
- package/chunks/{skill-settings-T3JZ33T2.js → skill-settings-NMY4JEJC.js} +40 -40
- package/chunks/{spawnChannel-COLJMSA7.js → spawnChannel-ZKS4Q5OU.js} +37 -37
- package/chunks/{standalone-update-ICW7H5IF.js → standalone-update-7CXPGAQ4.js} +38 -38
- package/chunks/{startInteractiveUI-6BDRXSMF.js → startInteractiveUI-2QQLEKM6.js} +473 -233
- package/chunks/{stdioHelpers-HGIYTWAY.js → stdioHelpers-7A2EE64Z.js} +5 -3
- package/chunks/{syntheticOutput-BN7E626U.js → syntheticOutput-ZLCUTKO2.js} +3 -3
- package/chunks/{task-create-2X4UP4F3.js → task-create-CQP5UEA3.js} +9 -9
- package/chunks/{task-list-WOLJPZ64.js → task-list-XLEZOJXP.js} +5 -5
- package/chunks/{task-stop-TNXRNAL2.js → task-stop-7ZQM5CFF.js} +2 -2
- package/chunks/{task-update-VDUSN36E.js → task-update-JA75U2SN.js} +9 -9
- package/chunks/{team-create-BCSMDK4Z.js → team-create-2WTNGAOX.js} +35 -35
- package/chunks/{team-delete-D2VMSDOT.js → team-delete-MHY3UZGY.js} +5 -5
- package/chunks/{team-plan-approval-B5YRLJFV.js → team-plan-approval-LZTYLEG4.js} +35 -35
- package/chunks/{terminal-image-renderer-PW6Z6VFY.js → terminal-image-renderer-R5HHAFJN.js} +41 -36
- package/chunks/{theme-manager-CMVKD2JH.js → theme-manager-PAUCSJFF.js} +36 -36
- package/chunks/{todoWrite-MHWHO5UO.js → todoWrite-UPVOHYGD.js} +4 -4
- package/chunks/{tool-search-SQTUSG6P.js → tool-search-2BFCGLI6.js} +13 -13
- package/chunks/{total-session-admission-XAXOSE46.js → total-session-admission-MK4SINFK.js} +41 -41
- package/chunks/{trustedFolders-Z2UAEG2V.js → trustedFolders-TJ5S26N7.js} +37 -37
- package/chunks/{update-relaunch-JBLI6LJF.js → update-relaunch-N7AYLARF.js} +6 -6
- package/chunks/{updateCheck-FDAVGOFT.js → updateCheck-QRZ3DVT5.js} +39 -39
- package/chunks/{useAutoAcceptIndicator-PDZFIYRM.js → useAutoAcceptIndicator-DBJ7Y5AF.js} +44 -44
- package/chunks/{validateNonInterActiveAuth-Q4763ONQ.js → validateNonInterActiveAuth-6ZQWUDS3.js} +72 -72
- package/chunks/{version-C7MPCGWD.js → version-AJQGQWXC.js} +1 -1
- package/chunks/{web-fetch-L7RAPOJB.js → web-fetch-QWJYRXFL.js} +13 -13
- package/chunks/{web-search-IDOYUOWX.js → web-search-2AOXJGHU.js} +9 -9
- package/chunks/web-shell-static-O73YPVVC.js +33 -0
- package/chunks/{workflow-HXURUJB5.js → workflow-ERH3SJG2.js} +36 -36
- package/chunks/{workspace-providers-status-JZ3GPWNU.js → workspace-providers-status-HZ474RA4.js} +44 -44
- package/chunks/{workspace-registration-store-SM2PWB6L.js → workspace-registration-store-6EUP4JXG.js} +1 -1
- package/chunks/{workspace-registry-6W4ES7BJ.js → workspace-registry-R4APRRNC.js} +41 -41
- package/chunks/{workspace-service-V47ZFJRX.js → workspace-service-HFIFDMU7.js} +46 -46
- package/chunks/{workspace-skills-status-6ZQ45XKA.js → workspace-skills-status-HAHEIHGK.js} +42 -42
- package/chunks/{workspace-trust-reconciler-6V25LMCN.js → workspace-trust-reconciler-65GTAGDK.js} +50 -50
- package/chunks/{write-file-H2QOF25K.js → write-file-B34CDELV.js} +35 -35
- package/chunks/{zoom-image-JTUSS43N.js → zoom-image-HPRBZHSS.js} +10 -10
- package/cli.js +15 -15
- package/package.json +3 -3
- package/web-shell/assets/{arc-DtI1rZcQ.js → arc-Ip-FFDJ0.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-BPZwSVct.js → architectureDiagram-3BPJPVTR-CChqgwIb.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-BIQ03j4C.js → blockDiagram-GPEHLZMM-BHN-Tfss.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-CB0RyFGm.js → c4Diagram-AAUBKEIU-BhyjzDjN.js} +1 -1
- package/web-shell/assets/channel-Cu8qd6OB.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-B3WoS-4H.js → chunk-2J33WTMH-BB9eyHrx.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-C98xYZ1X.js → chunk-4BX2VUAB-BeV7ce_J.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-CbTIWRwQ.js → chunk-55IACEB6-DO7kXDiV.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-DWGnKTPu.js → chunk-727SXJPM-B27MPznD.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-4__QyCEX.js → chunk-AQP2D5EJ-DHIjqjD_.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-DFtG1YCW.js → chunk-FMBD7UC4-DabMqyN2.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-rvAhW51N.js → chunk-ND2GUHAM-Dw7Nnnxc.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-DfiU9pwZ.js → chunk-QZHKN3VN-DdaZew1Q.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BI3KrXhq.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BI3KrXhq.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-Cc4EIdxu.js → cose-bilkent-S5V4N54A-CgBpCYH5.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-CZNj4dGW.js → dagre-BM42HDAG-BB4IU8G0.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-D5tiqQCr.js → diagram-2AECGRRQ-BcUTHU37.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-pwzw0jVO.js → diagram-5GNKFQAL-B6Lyihyv.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-4CWiM00x.js → diagram-KO2AKTUF-CRIJOjpG.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-Dd7rc7Qf.js → diagram-LMA3HP47-DdNiwWWT.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-_vzV52ml.js → diagram-OG6HWLK6-Dz4b32Do.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CqbE2bx_.js → erDiagram-TEJ5UH35-D-8NGw77.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-CaxNr7w4.js → flowDiagram-I6XJVG4X-Dun26LyM.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-AGjrtfUA.js → ganttDiagram-6RSMTGT7-F10Hu1Gc.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-ADG2zSkc.js → gitGraphDiagram-PVQCEYII-Bf8Ez6-D.js} +1 -1
- package/web-shell/assets/{index-BOryKCqt.js → index-BXqw-nGq.js} +1 -1
- package/web-shell/assets/index-QQlUCJGg.css +5 -0
- package/web-shell/assets/index-hcgjV7vS.js +1768 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-CE3B_IoZ.js → infoDiagram-5YYISTIA-DVgTMLvj.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CN-Frhoi.js → ishikawaDiagram-YF4QCWOH-uT-KepvK.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-CGgezS93.js → journeyDiagram-JHISSGLW-Vg_XadQf.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-BqWijky5.js → kanban-definition-UN3LZRKU-Dyv1ESBE.js} +1 -1
- package/web-shell/assets/{linear-D8sfpZf6.js → linear-BMIepYX3.js} +1 -1
- package/web-shell/assets/{mermaid.core-3PA4QrzM.js → mermaid.core-zA8pJ9ag.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-D9QxwiCY.js → mindmap-definition-RKZ34NQL-BCW_BZ_5.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-Bioaf6uE.js → pieDiagram-4H26LBE5-DseNEGp2.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DBb2AS73.js → quadrantDiagram-W4KKPZXB-6Z7wr1Fi.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-DXOvZ3KB.js → requirementDiagram-4Y6WPE33-CVOlCRPf.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-D9qg09Dm.js → sankeyDiagram-5OEKKPKP-CGhgrUJZ.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DSAUIfpw.js → sequenceDiagram-3UESZ5HK-dlqmpLuQ.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-BPZkzfQ3.js → stateDiagram-AJRCARHV-B9EW10Xb.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CJTZJJ5X.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-UDaQp9sP.js → timeline-definition-PNZ67QCA-BBRh0mgZ.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-2ouhAnHO.js → vennDiagram-CIIHVFJN-B8Gs-REP.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-Cq_WEvTK.js → wardley-L42UT6IY-D_y80Ur7.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-Dt24aXOM.js → wardleyDiagram-YWT4CUSO-D-CNfHJ-.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-A5Xk2WCH.js → xychartDiagram-2RQKCTM6-DQ5CvELo.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/create-sub-session-MWUWNBM6.js +0 -401
- package/web-shell/assets/channel-vfbVFuM1.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-Cvr8atq3.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Cvr8atq3.js +0 -1
- package/web-shell/assets/index-Cb1LjsCv.css +0 -5
- package/web-shell/assets/index-CvJDaIy8.js +0 -1756
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DInOqnhZ.js +0 -1
|
@@ -213,7 +213,16 @@ Settings are organized into categories. Most settings should be placed within th
|
|
|
213
213
|
|
|
214
214
|
**timeout (request timeout):**
|
|
215
215
|
|
|
216
|
-
`timeout` is the per-request timeout in milliseconds (default `120000`). Set it to `0` to disable the request timeout — matching the `QWEN_STREAM_IDLE_TIMEOUT_MS=0` convention — rather than aborting the request. It can also be set via the `QWEN_CODE_API_TIMEOUT_MS` environment variable. This is distinct from
|
|
216
|
+
`timeout` is the per-request timeout in milliseconds (default `120000`). Set it to `0` to disable the request timeout — matching the `QWEN_STREAM_IDLE_TIMEOUT_MS=0` convention — rather than aborting the request. It can also be set via the `QWEN_CODE_API_TIMEOUT_MS` environment variable. This is distinct from the two stream guards below.
|
|
217
|
+
|
|
218
|
+
**stream guards (OpenAI-compatible providers only):**
|
|
219
|
+
|
|
220
|
+
Two guards bound a streaming response, each accepting `0` to disable. Neither is implemented by the Anthropic/Gemini generators, which leave the drip-fed shape below unbounded.
|
|
221
|
+
|
|
222
|
+
- `QWEN_STREAM_IDLE_TIMEOUT_MS` (default `240000`) bounds inactivity _between_ streamed chunks: a stream that goes silent for this long is aborted as a retryable `ETIMEDOUT`.
|
|
223
|
+
- `QWEN_STREAM_MAX_LIFETIME_MS` (default `900000`) caps the _total_ upstream-wait time of one streaming response regardless of chunk flow — the bound a drip-fed stream that never completes cannot reset.
|
|
224
|
+
|
|
225
|
+
These are **environment variables (or, for embedders, `ContentGeneratorConfig.streamIdleTimeoutMs` / `streamMaxLifetimeMs`) only — there is no settings.json key**; writing `"streamMaxLifetimeMs"` into settings.json has no effect. Upgrade notes: a deployment that previously set `QWEN_STREAM_IDLE_TIMEOUT_MS=0` — or passed `streamIdleTimeoutMs: 0` in `ContentGeneratorConfig` — to opt out of stream aborts now also needs `QWEN_STREAM_MAX_LIFETIME_MS=0` (or `streamMaxLifetimeMs: 0`) to keep that; and the 15-minute lifetime cap bounds even a stream whose idle timeout you raised above it (e.g. `QWEN_STREAM_IDLE_TIMEOUT_MS=1800000`) — raise the cap likewise, or set it to `0`, if you rely on a longer window.
|
|
217
226
|
|
|
218
227
|
**max_tokens (output token limit):**
|
|
219
228
|
|
|
@@ -545,14 +554,15 @@ LSP server configuration is done through `.lsp.json` files in your project root
|
|
|
545
554
|
|
|
546
555
|
#### security
|
|
547
556
|
|
|
548
|
-
| Setting
|
|
549
|
-
|
|
|
550
|
-
| `security.folderTrust.enabled`
|
|
551
|
-
| `security.auth.selectedType`
|
|
552
|
-
| `security.auth.enforcedType`
|
|
553
|
-
| `security.auth.useExternal`
|
|
554
|
-
| `security.auth.apiKey`
|
|
555
|
-
| `security.auth.baseUrl`
|
|
557
|
+
| Setting | Type | Description | Default |
|
|
558
|
+
| --------------------------------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
|
|
559
|
+
| `security.folderTrust.enabled` | boolean | Setting to track whether Folder trust is enabled. | `false` |
|
|
560
|
+
| `security.auth.selectedType` | string | The currently selected authentication type. | `undefined` |
|
|
561
|
+
| `security.auth.enforcedType` | string | The required auth type (useful for enterprises). | `undefined` |
|
|
562
|
+
| `security.auth.useExternal` | boolean | Whether to use an external authentication flow. | `undefined` |
|
|
563
|
+
| `security.auth.apiKey` | string | **Deprecated.** API key for OpenAI-compatible authentication. Migrate to `modelProviders` with `envKey` instead — see [Model Providers](./model-providers). | `undefined` |
|
|
564
|
+
| `security.auth.baseUrl` | string | **Deprecated.** Base URL for the OpenAI-compatible API. Migrate to `modelProviders` instead — see [Model Providers](./model-providers). | `undefined` |
|
|
565
|
+
| `security.allowedInsecureVoiceBaseUrls` | array of strings | Complete voice provider base URLs that may use HTTP or resolve to private-network addresses. Each entry must include an explicit `http://` or `https://` scheme and the full path (for example, `/v1`); only URL serialization and trailing slashes are normalized. Wildcards are not supported; metadata, link-local, local-use NAT64, 6to4, and Teredo addresses remain blocked even when listed, as do hostnames that resolve to loopback; IPv4-mapped, IPv4-compatible, and well-known NAT64 (`64:ff9b::/96`) literals are classified by their embedded IPv4 address. Only User, System, and SystemDefaults scopes are honored. Use only for trusted endpoints in managed private networks. Cleartext HTTP also exposes the provider API key transmitted in the Authorization header. An allowlisted hostname is only as trustworthy as its DNS; prefer IP-literal entries when the gateway address is stable. The exact match covers the batch request URL; streaming transports connect to a WebSocket URL derived from it (same scheme, host, and port, `/api-ws/v1/...` path), not to the allowlisted path itself. | `[]` |
|
|
556
566
|
|
|
557
567
|
#### advanced
|
|
558
568
|
|
|
@@ -121,7 +121,7 @@ DingTalk bots work in both DM and group conversations. To enable group support:
|
|
|
121
121
|
|
|
122
122
|
By default, the bot requires an @mention in group chats (`requireMention: true`). Set `"requireMention": false` for a specific group to make it respond to all messages. See [Group Chats](./overview#group-chats) for full details.
|
|
123
123
|
|
|
124
|
-
Set `"atSender": true` to have the bot @mention the member whose group message triggered its response. It is off by default and only applies to agent replies with a DingTalk staff ID.
|
|
124
|
+
Set `"atSender": true` to have the bot @mention the member whose group message triggered its response. It is off by default and only applies to agent replies with a DingTalk staff ID. Replies are sent as DingTalk markdown whether or not they carry a mention; the mention prefix is included in the first message chunk.
|
|
125
125
|
|
|
126
126
|
### Finding a Group's Conversation ID
|
|
127
127
|
|
|
@@ -4,17 +4,31 @@ This guide covers setting up a Qwen Code channel that monitors GitHub notificati
|
|
|
4
4
|
|
|
5
5
|
## Prerequisites
|
|
6
6
|
|
|
7
|
-
- A GitHub account
|
|
8
|
-
|
|
9
|
-
- A GitHub Personal Access Token (PAT) with `notifications` and `public_repo` (or `repo`) scopes
|
|
7
|
+
- A GitHub account authenticated with the permissions needed to read notifications and post comments
|
|
8
|
+
- The [GitHub CLI](https://cli.github.com/) installed on the host running Qwen Code when using local `gh` authentication
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
Use a dedicated bot account when the authenticated account also needs to operate the channel. GitHub does not generate a usable notification for the account's own activity, and the adapter ignores its own comments to prevent reply loops.
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
## Authentication
|
|
13
|
+
|
|
14
|
+
To reuse the GitHub CLI login on the Qwen Code host, authenticate `gh` and explicitly set `useLocalGh: true` in the channel configuration:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
gh auth login
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Local `gh` authentication is account-wide and may expose notifications from every repository visible to that GitHub account. Enable it only when the workspace operator is trusted to use that account. Otherwise, configure a dedicated PAT.
|
|
21
|
+
|
|
22
|
+
For GitHub Enterprise Server, authenticate the same host used by `baseUrl`:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
gh auth login --hostname github.example.com
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
You can instead configure a classic personal access token (PAT). An explicit `token` overrides local `gh` authentication. The PAT needs these scopes:
|
|
29
|
+
|
|
30
|
+
- **notifications** — read notification threads
|
|
31
|
+
- **public_repo** (or **repo** for private repos) — post comments
|
|
18
32
|
|
|
19
33
|
## Configuration
|
|
20
34
|
|
|
@@ -25,7 +39,7 @@ Add the channel to `~/.qwen/settings.json`:
|
|
|
25
39
|
"channels": {
|
|
26
40
|
"my-github": {
|
|
27
41
|
"type": "github",
|
|
28
|
-
"
|
|
42
|
+
"useLocalGh": true,
|
|
29
43
|
"pollInterval": 60000,
|
|
30
44
|
"reasonFilter": ["mention", "review_requested", "assign"],
|
|
31
45
|
"senderPolicy": "allowlist",
|
|
@@ -42,18 +56,13 @@ Add the channel to `~/.qwen/settings.json`:
|
|
|
42
56
|
}
|
|
43
57
|
```
|
|
44
58
|
|
|
45
|
-
|
|
59
|
+
To override local `gh` authentication with a PAT, add `"token": "$GITHUB_TOKEN"` to the channel and set the environment variable before starting Qwen Code:
|
|
46
60
|
|
|
47
61
|
```bash
|
|
48
62
|
export GITHUB_TOKEN="ghp_your_token_here"
|
|
49
63
|
```
|
|
50
64
|
|
|
51
|
-
The
|
|
52
|
-
provide a usable notification, and the adapter intentionally ignores its own
|
|
53
|
-
comments to prevent reply loops. If the PAT owner needs to operate the channel,
|
|
54
|
-
use a separate bot-owned PAT and put only operator accounts in `allowedUsers`.
|
|
55
|
-
Startup rejects an allowlist containing only the PAT owner and warns when the
|
|
56
|
-
PAT owner appears alongside other operators.
|
|
65
|
+
The authenticated account cannot trigger its own channel. If that account needs to operate the channel, authenticate a separate bot account and put only operator accounts in `allowedUsers`. Startup rejects an allowlist containing only the authenticated account and warns when it appears alongside other operators.
|
|
57
66
|
|
|
58
67
|
### GitHub Enterprise
|
|
59
68
|
|
|
@@ -65,11 +74,14 @@ For GitHub Enterprise Server, set `baseUrl`:
|
|
|
65
74
|
}
|
|
66
75
|
```
|
|
67
76
|
|
|
77
|
+
Local `gh` authentication requires an HTTPS `baseUrl` so the daemon host credential cannot be sent over plaintext HTTP.
|
|
78
|
+
|
|
68
79
|
## Configuration Options
|
|
69
80
|
|
|
70
81
|
| Option | Default | Description |
|
|
71
82
|
| ------------------------- | ------------------------ | --------------------------------------------------------------------------------------------- |
|
|
72
|
-
| `token` |
|
|
83
|
+
| `token` | unset | Optional classic PAT with `notifications` scope; overrides local `gh` authentication |
|
|
84
|
+
| `useLocalGh` | `false` | Explicitly reuse the daemon host's account-wide GitHub CLI authentication |
|
|
73
85
|
| `pollInterval` | `60000` | Poll interval in ms |
|
|
74
86
|
| `baseUrl` | `https://api.github.com` | API base URL (for GHE) |
|
|
75
87
|
| `groupPolicy` | `"disabled"` | Must be `"open"` for notifications to flow |
|
|
@@ -141,7 +153,7 @@ not retried automatically because GitHub may have created the comment.
|
|
|
141
153
|
- If a user marks a notification as read on github.com before the bot's poll cycle, the bot will not process it.
|
|
142
154
|
- The bot does not read comments before the current polling window; `author` and `comment` notifications may aggregate up to 20 comments from that window.
|
|
143
155
|
- Inline PR review comments and review summary bodies are not enumerated; only issue/PR comments are processed.
|
|
144
|
-
-
|
|
156
|
+
- The selected credential must support the Notifications API. Fine-grained PATs do not support it; use local `gh` authentication or a classic PAT with `notifications` scope.
|
|
145
157
|
|
|
146
158
|
## Starting the Channel
|
|
147
159
|
|
|
@@ -238,7 +238,9 @@ export QWEN_REVIEW_ASSETS_REPO=your-org/your-repo # a repo you can push to
|
|
|
238
238
|
|
|
239
239
|
Maintainers typically point it at the repo under review; anyone else can use a fork or a scratch repo. Images land on the `pr-assets/<pr>-review` branch with content-hashed names, and comments reference them by **commit-pinned** URL — immutable even if the branch later moves, and working unchanged on GitHub Enterprise.
|
|
240
240
|
|
|
241
|
-
|
|
241
|
+
For GitHub-triggered reviews (the PR-review workflow), the same variable is wired from a **repository variable** of the same name: with the variable unset the workflow passes an empty value and publishing refuses — nothing changes. A maintainer who sets `QWEN_REVIEW_ASSETS_REPO` in the repository's Actions variables (typically to the repository itself) enables review comments to embed capture PNGs; the branches it writes are cleaned up by the visuals cleanup workflow when the variable points at the same repository, while a fork or scratch destination manages its own retention.
|
|
242
|
+
|
|
243
|
+
The publishing is gated exactly like posting: no designated repo means no publish, and an unauthorized run (no effective `--comment`) is refused the same way `submit` refuses. Only image types are accepted (SVG is excluded deliberately), with size caps, and each file's bytes must match the format its extension claims — mislabeled or unrecognized content is refused. A manifest records every file pushed. Without a designation, findings keep their evidence as local file paths in the terminal and saved report — nothing breaks, comments just stay text-only.
|
|
242
244
|
|
|
243
245
|
## Follow-up Actions
|
|
244
246
|
|
|
@@ -264,6 +266,33 @@ You can customize review criteria per project. `/review` reads rules from these
|
|
|
264
266
|
|
|
265
267
|
Rules are injected into the LLM review agents (0-6) as additional criteria. For PR reviews, rules are read from the **base branch** to prevent a malicious PR from injecting bypass rules.
|
|
266
268
|
|
|
269
|
+
## Repository Context
|
|
270
|
+
|
|
271
|
+
Repositories can hand the reviewers bounded, repository-specific guidance by committing a strict JSON manifest to `.qwen/review-context.json`. At medium or high effort, `/review` reads the manifest after capturing the plan and attaches the matching guidance before any agent launches:
|
|
272
|
+
|
|
273
|
+
```json
|
|
274
|
+
{
|
|
275
|
+
"version": 1,
|
|
276
|
+
"label": "Example repository",
|
|
277
|
+
"rules": [
|
|
278
|
+
{
|
|
279
|
+
"paths": ["packages/*/src/**"],
|
|
280
|
+
"domains": ["runtime"],
|
|
281
|
+
"relatedPaths": ["packages/runtime/src/**"],
|
|
282
|
+
"recommendedTests": ["npm run test:runtime"],
|
|
283
|
+
"requiredConfigurations": ["debug"],
|
|
284
|
+
"requiredAgents": ["test-matrix"],
|
|
285
|
+
"unverifiedDimensions": ["Alternate runtime was not exercised"],
|
|
286
|
+
"verificationNotes": ["Use the repository native test runner"]
|
|
287
|
+
}
|
|
288
|
+
]
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
A rule applies when any changed file matches one of its `paths` globs (`*`, `?`, and `**` segments; case-sensitive). All matching rules merge their guidance: domains and related files for the review agents, recommended tests and required configurations for the build-and-test agent, extra reviewer roles (honoured only when the chosen effort and topology run them), and proof boundaries the final review discloses as unverified dimensions. Arrays may be written in any order; duplicate entries are rejected.
|
|
293
|
+
|
|
294
|
+
For PR reviews the manifest is read from the merge base, so the PR under review cannot opt itself into or out of guidance; local reviews read it from the current worktree. Low-effort and cross-repository reviews skip repository context. The full contract and trust model live in the [design doc](../../design/review-repository-context.md).
|
|
295
|
+
|
|
267
296
|
## Issue Fidelity
|
|
268
297
|
|
|
269
298
|
For bugfix PRs, the Issue Fidelity agent fetches issue evidence directly instead of relying on PR description text. It uses `gh pr view <pr> --repo <owner/repo> --json closingIssuesReferences` for GitHub's strong closing-issue metadata, then `gh issue view <number> --repo <issue_owner>/<issue_repo> --json title,body,comments` for the original report and discussion — the `--json` form includes the issue **body** (the reporter's original repro), which `--comments` alone omits, and the issue's own repository is read from each reference (a PR can close an issue in a different repo). This agent runs only for PR targets; local-diff and file-path reviews skip it.
|
|
@@ -408,7 +408,7 @@ Notes:
|
|
|
408
408
|
| `--http-bridge` | `true` | Stage 1 mode: production attempts to preheat one primary `qwen --acp` child for compatibility and retries on first use after failure, while each trusted secondary can start one child on demand. Sessions targeting a runtime multiplex onto its child via ACP `newSession()`; untrusted secondaries cannot start ACP. Stage 2 native in-process becomes available later. |
|
|
409
409
|
| `--initialize-timeout-ms <n>` | `10000` | ACP child request timeout, including the `initialize` handshake (ms). Must be a positive integer up to `2147483647`. Values above the JS timer ceiling (`2^31-1`) are rejected at boot because Node silently compresses them to 1 ms. Cold-container deployments that need extra headroom for child startup can raise this; the same value governs `newSession`, workspace-status polls, and other ACP ext-method deadlines. |
|
|
410
410
|
| `--allow-origin <pat>` | — | T2.4 ([#4514](https://github.com/QwenLM/qwen-code/issues/4514)). Cross-origin allowlist for browser webui clients. Repeatable. Each value is `*` (any origin — boot refuses if no bearer token is configured; `--require-auth` on loopback is recommended so `/health` and `/demo` are also bearer-gated, since both are pre-auth on loopback by default) or a canonical URL origin (`<scheme>://<host>[:<port>]`, no trailing slash / path / userinfo / query). **Subdomain wildcards (`https://*.example.com`) are intentionally unsupported** — list each subdomain explicitly, or use `*` with a configured token (and `--require-auth` for full hardening). Matched origins receive CORS response headers (`Access-Control-Allow-Origin`, `Vary: Origin`, methods, headers, max-age, and exposed `Retry-After`); unmatched origins still get a 403 with the same envelope as today's wall. `Origin: null` (sandboxed iframes, file:// docs) is always rejected, even under `*`. Pre-flight via `caps.features.allow_origin`. Loopback self-origin hits are unaffected. |
|
|
411
|
-
| `--web` / `--no-web` | `true` | Serve the built Web Shell SPA at the daemon root (`GET /`, `/assets/*`, and
|
|
411
|
+
| `--web` / `--no-web` | `true` | Serve the built Web Shell SPA at the daemon root (`GET /`, `/assets/*`, and `GET /session/<id>` document navigations). These entry points are registered **before** the bearer-auth gate — a browser can't attach a token to a `<script>` subresource or an address-bar navigation, and the shell carries no secrets. Every API route stays token-gated regardless, and the SPA deep-link fallback for all other paths sits behind the bearer gate too. On non-loopback binds a one-line stderr warning notes the UI is reachable without auth. Use `--no-web` for an API-only daemon. No effect when the build omits the Web Shell assets (the daemon logs a breadcrumb and runs API-only). |
|
|
412
412
|
| `--open` | `false` | After the listener is up, open the Web Shell in your default browser at the daemon URL (with `#token=` appended as a URL fragment when a token is configured — a fragment is never sent to the server, keeping the token out of access logs and Referer headers). No-op with `--no-web`, or in headless / CI / SSH environments where no browser is available. |
|
|
413
413
|
|
|
414
414
|
> **Memory project scope caveats.**
|