@qwen-code/qwen-code 0.21.8 → 0.21.9
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/README.md +2 -1
- package/bundled/qc-helper/docs/configuration/settings.md +32 -30
- package/bundled/qc-helper/docs/extension/introduction.md +15 -1
- package/bundled/qc-helper/docs/features/code-review.md +2 -0
- package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve.md +42 -39
- package/bundled/review/SKILL.md +11 -7
- package/chunks/{MaxSizedBox-7PM6BGJ5.js → MaxSizedBox-6BZANW7X.js} +9 -9
- package/chunks/{StandaloneSessionPicker-3UQHM7GV.js → StandaloneSessionPicker-VDC5KE7T.js} +28 -25
- package/chunks/{acpAgent-5UWLFV6V.js → acpAgent-F2NSBCUF.js} +1433 -706
- package/chunks/{agent-624T2BLO.js → agent-VOHJOEBB.js} +8 -8
- package/chunks/{agent-headless-2EE5J2KX.js → agent-headless-J5NFOPHP.js} +8 -8
- package/chunks/{bridge-JENKGFFP.js → bridge-NQIZZLAS.js} +13 -13
- package/chunks/{channel-management-service-DDWUPHMU.js → channel-management-service-PHELKOW2.js} +4 -4
- package/chunks/{channel-settings-store-SA6JZSPH.js → channel-settings-store-VIY2OENO.js} +17 -15
- package/chunks/{channel-worker-group-E67EN3RV.js → channel-worker-group-MSHT6CWR.js} +6 -6
- package/chunks/{channel-worker-manager-SW4C45CF.js → channel-worker-manager-XXD3GDSK.js} +6 -6
- package/chunks/{channel-worker-supervisor-5SRD24FG.js → channel-worker-supervisor-IVSDIMI4.js} +4 -4
- package/chunks/{chunk-S3Y3GBFD.js → chunk-23VQTELM.js} +2 -2
- package/chunks/{chunk-XZKQT2B2.js → chunk-3WDYBTTI.js} +5 -5
- package/chunks/{chunk-YEF7XEO2.js → chunk-3XVDTHBJ.js} +3 -3
- package/chunks/{chunk-IBYULW65.js → chunk-46YJDYCU.js} +145 -10
- package/chunks/chunk-4JRM2BSM.js +48 -0
- package/chunks/{chunk-L4N6TIP7.js → chunk-4TRQPFDP.js} +4 -2
- package/chunks/{chunk-5ZGR6RKJ.js → chunk-4XQNB3KN.js} +3 -3
- package/chunks/chunk-5EJZE3FP.js +140 -0
- package/chunks/{chunk-XHD7CRP2.js → chunk-5RBDAGC6.js} +2 -2
- package/chunks/{chunk-KJZ26VBX.js → chunk-67EWJE77.js} +1 -1
- package/chunks/{chunk-TE3ZAJE7.js → chunk-6Q5ABMTU.js} +1 -1
- package/chunks/{chunk-U5SLIG7E.js → chunk-7AEPJGL4.js} +1 -1
- package/chunks/{chunk-OHKJVAKG.js → chunk-7GOYZQPR.js} +20 -1977
- package/chunks/{chunk-3SE7J4DR.js → chunk-7S4JBJLU.js} +3 -3
- package/chunks/{chunk-TKSZJ5BV.js → chunk-AKJQSWV4.js} +3 -3
- package/chunks/{chunk-E4ZBKMSF.js → chunk-ATMO54WE.js} +6 -6
- package/chunks/{chunk-KKDVZLGL.js → chunk-BAMN6XSD.js} +1 -1
- package/chunks/{chunk-IUQ52YJK.js → chunk-BIRWP6LU.js} +1 -1
- package/chunks/{chunk-AKA24BGO.js → chunk-BT6GQIEJ.js} +1 -1
- package/chunks/{chunk-ZCLLJARV.js → chunk-BZP4QPNK.js} +10 -10
- package/chunks/{chunk-2M5N3DHY.js → chunk-CMOBWHWW.js} +1 -1
- package/chunks/{chunk-WV5J6Q6N.js → chunk-D7BXVKSF.js} +1 -1
- package/chunks/{chunk-NLREQJFK.js → chunk-DA4HRSBW.js} +15 -0
- package/chunks/{chunk-GOEVOFQI.js → chunk-DH5YXSIF.js} +3 -3
- package/chunks/{chunk-DIWZNWZT.js → chunk-DX3RGJMS.js} +13 -2
- package/chunks/{chunk-PLFATELK.js → chunk-DZUO626D.js} +1 -1
- package/chunks/{chunk-NGYI5EF5.js → chunk-E2FPSSKP.js} +8 -8
- package/chunks/{chunk-ZPLALRXZ.js → chunk-FBMCDU63.js} +4 -137
- package/chunks/{chunk-2ILAOM2I.js → chunk-FCLHHEUK.js} +17 -16
- package/chunks/{chunk-SNRT2TJJ.js → chunk-G2TX5ZXC.js} +3 -3
- package/chunks/{chunk-C5VWPTGT.js → chunk-GAKGOXTC.js} +1 -1
- package/chunks/{chunk-QQWD7LZV.js → chunk-HADWBW5R.js} +4 -4
- package/chunks/{chunk-77QVBFCU.js → chunk-HZGBKOX3.js} +3 -3
- package/chunks/{chunk-RPWVIXDB.js → chunk-I5VM3SKY.js} +4 -4
- package/chunks/{chunk-7VUERJHS.js → chunk-II6G3EY6.js} +325 -104
- package/chunks/{chunk-FN6YXJOP.js → chunk-IOEZE2YT.js} +1 -1
- package/chunks/chunk-JUWS2Z5K.js +1995 -0
- package/chunks/{chunk-VXZ5HAOV.js → chunk-K4ADGWHU.js} +1 -1
- package/chunks/{chunk-YOM7DEGB.js → chunk-KSAFZ5TA.js} +2 -2
- package/chunks/{chunk-KAQCJO6Y.js → chunk-KTKYGS2P.js} +35 -9
- package/chunks/{chunk-GBDINRIL.js → chunk-KTQGGPGV.js} +3 -3
- package/chunks/{chunk-6M26GBKX.js → chunk-L2AFWWJE.js} +42 -3
- package/chunks/{chunk-QXVSWG66.js → chunk-LHEC5V6G.js} +2 -2
- package/chunks/{chunk-J26HHFI5.js → chunk-LP2QGNSP.js} +32 -2
- package/chunks/{chunk-HWX5HPUG.js → chunk-LZZLUCRS.js} +108 -11
- package/chunks/{chunk-KTJFU7RT.js → chunk-MFDYOYZZ.js} +2 -2
- package/chunks/{chunk-3WNQOYHQ.js → chunk-MHP476D3.js} +74 -31
- package/chunks/{chunk-Y4TETC74.js → chunk-MTCYGTWH.js} +4 -4
- package/chunks/{chunk-EN2TKTFH.js → chunk-NV3F44FL.js} +6 -2
- package/chunks/{chunk-BF52U4XJ.js → chunk-OGDIJKHK.js} +1 -1
- package/chunks/{chunk-7DVT4LVV.js → chunk-OGNFHGIG.js} +3 -3
- package/chunks/{chunk-IYES5WOT.js → chunk-P2FK2HBV.js} +2 -2
- package/chunks/{chunk-2M4K4KYS.js → chunk-P3RBMQ4P.js} +4 -4
- package/chunks/{chunk-FYAXKJK7.js → chunk-P4ZEZSJZ.js} +692 -106
- package/chunks/{chunk-UFALT4LK.js → chunk-PBRVUF5B.js} +1 -1
- package/chunks/{chunk-LKRMNRSN.js → chunk-PDPFQ2FO.js} +2 -0
- package/chunks/{chunk-6TR7CFXH.js → chunk-PNBBJOCP.js} +1 -1
- package/chunks/{chunk-M3STHEMM.js → chunk-PVOGHGSF.js} +5 -5
- package/chunks/{chunk-4WU6NY7F.js → chunk-QSNSL4R4.js} +2 -2
- package/chunks/{chunk-DQSDACD2.js → chunk-RBHQXGDK.js} +1 -1
- package/chunks/{chunk-ZHA242R4.js → chunk-RVSTTOJ4.js} +2 -2
- package/chunks/{chunk-EIVICVHM.js → chunk-SCAZZ3Q4.js} +4 -4
- package/chunks/{chunk-BF224XHL.js → chunk-T5RLUXWJ.js} +2 -2
- package/chunks/{chunk-B52AWKBB.js → chunk-T6HEQR2Q.js} +16 -5
- package/chunks/{chunk-FWBXMANW.js → chunk-THIKWITR.js} +3 -3
- package/chunks/{chunk-WG6542MA.js → chunk-TQCYNLNJ.js} +1 -1
- package/chunks/chunk-TQOF5KBL.js +71 -0
- package/chunks/{chunk-NPUXXRJI.js → chunk-TZ6KJ44L.js} +1 -1
- package/chunks/{chunk-YHJFF7KH.js → chunk-UJUM2SRN.js} +147 -47
- package/chunks/{chunk-4ALIARFY.js → chunk-UYAUA63Q.js} +1 -1
- package/chunks/chunk-VFMASYQA.js +389 -0
- package/chunks/chunk-VGHZT6JR.js +51 -0
- package/chunks/{chunk-ZWBUH5UP.js → chunk-VKJ4KTPJ.js} +1 -1
- package/chunks/{chunk-QGHSP65Z.js → chunk-VNNWAZSI.js} +2 -2
- package/chunks/{chunk-757GB46F.js → chunk-W3FSZSF2.js} +1 -1
- package/chunks/{chunk-GQCEQPYQ.js → chunk-WGK4TSB7.js} +3 -3
- package/chunks/{chunk-PG62DFWD.js → chunk-WP5VOXF7.js} +6 -127
- package/chunks/{chunk-NVRDQFCX.js → chunk-XTY5DN4Y.js} +1 -1
- package/chunks/{chunk-GXSNGY5M.js → chunk-XX7QFP34.js} +1677 -1307
- package/chunks/{chunk-3PY4LPJF.js → chunk-YGT2AUJ7.js} +84 -4
- package/chunks/{chunk-4DU3NCHG.js → chunk-YTFDX4PR.js} +8 -3
- package/chunks/{chunk-OA4JVLSA.js → chunk-Z7VOMGDC.js} +22 -1
- package/chunks/{chunk-DX5W5AON.js → chunk-ZBXGWQ4S.js} +3 -3
- package/chunks/chunk-ZLBIFIMV.js +1099 -0
- package/chunks/{chunk-HA3SAB64.js → chunk-ZOSTTOUJ.js} +1 -1
- package/chunks/{chunk-VWMUDKLC.js → chunk-ZTQSOV56.js} +4 -4
- package/chunks/{computer-use-ESQYJ3JY.js → computer-use-PMZ7ICGY.js} +8 -8
- package/chunks/{config-utils-XQHBJP7G.js → config-utils-ULCSRMWD.js} +4 -4
- package/chunks/{contextCommand-CX3YF4ZE.js → contextCommand-GEZU7YHE.js} +11 -10
- package/chunks/{core-runtime-DIAU7JMG.js → core-runtime-HRJI2MN6.js} +8 -8
- package/chunks/{create-sub-session-HDPD6HOA.js → create-sub-session-VBNVI4YU.js} +9 -9
- package/chunks/{daemon-VZBGJUNL.js → daemon-POSQPD3G.js} +115 -7
- package/chunks/{daemon-status-provider-H6O4UQ4F.js → daemon-status-provider-N4CRQKFI.js} +18 -18
- package/chunks/{daemon-trust-policy-BNUXG6MT.js → daemon-trust-policy-BHO3JUHM.js} +16 -14
- package/chunks/{daemon-trust-policy-monitor-E4EQ7GF4.js → daemon-trust-policy-monitor-YEKJ2726.js} +16 -14
- package/chunks/{deferred-core-runtime-CBMSHPAU.js → deferred-core-runtime-SH57E3J3.js} +8 -8
- package/chunks/{dist-KVISB2O2.js → dist-3NTTUAHT.js} +1 -1
- package/chunks/{dist-RCH3I7SS.js → dist-6BMOAE3Z.js} +2 -2
- package/chunks/{dist-IRL7WA5Z.js → dist-B2CGTW6T.js} +1 -1
- package/chunks/{dist-TUSWNE2I.js → dist-EWW3J4HQ.js} +1 -1
- package/chunks/{dist-HIACTZEK.js → dist-EZE3V3Q7.js} +1 -1
- package/chunks/{dist-EEEQGCZA.js → dist-J47AXBZC.js} +1 -1
- package/chunks/{dist-MKX5OSFF.js → dist-OTUO3AS2.js} +4 -1088
- package/chunks/{dist-MBF3I5MX.js → dist-Z3CS4OVP.js} +1 -1
- package/chunks/{earlyInputCapture-UIOP7OIN.js → earlyInputCapture-B2JJ2HME.js} +8 -8
- package/chunks/{edit-ITMZYFKA.js → edit-7FTXENAN.js} +10 -8
- package/chunks/{enter-worktree-S4PL5UV6.js → enter-worktree-JPHV2PBG.js} +8 -8
- package/chunks/{enterPlanMode-YV52NNJT.js → enterPlanMode-CGBJ3AHJ.js} +8 -8
- package/chunks/{environment-NGOWPRZV.js → environment-LXASZAHD.js} +11 -11
- package/chunks/{errors-BU26DTDX.js → errors-XIGVT2AD.js} +10 -10
- package/chunks/{exit-worktree-XRM6LH5F.js → exit-worktree-DKSGXW65.js} +8 -8
- package/chunks/{exitPlanMode-ZLI5F7KR.js → exitPlanMode-THFL2HYN.js} +8 -8
- package/chunks/{fast-path-UJWORIED.js → fast-path-4NXAT5UL.js} +4 -3
- package/chunks/{fast-path-settings-37WQD5B2.js → fast-path-settings-RPAVBD7P.js} +2 -2
- package/chunks/{gemini-ZSKNDUMU.js → gemini-B3N6FACU.js} +56 -60
- package/chunks/{geminiContentGenerator-YGEXOEKD.js → geminiContentGenerator-YYFE2HIE.js} +1 -1
- package/chunks/{glob-7KZG44BR.js → glob-BPHSCFJP.js} +8 -8
- package/chunks/{grep-6ZFC7RJ5.js → grep-ROZIRFLU.js} +8 -8
- package/chunks/{handleAutoUpdate-KSEL3TQS.js → handleAutoUpdate-WV6SPZQB.js} +13 -12
- package/chunks/{i18n-ZIUXBW5V.js → i18n-YWJWPQKD.js} +13 -11
- package/chunks/{image-gen-AUIZJJNK.js → image-gen-SISRZ6FS.js} +1 -1
- package/chunks/{initializer-7AHY3N6Q.js → initializer-66OAD6GO.js} +16 -14
- package/chunks/{installationInfo-VGBXMYLY.js → installationInfo-3YUGIP36.js} +9 -9
- package/chunks/{list-PSFKQHLB.js → list-VEYR66XB.js} +19 -17
- package/chunks/{loadedSettingsAdapter-FTMRCTOF.js → loadedSettingsAdapter-V2JCPCYD.js} +16 -14
- package/chunks/{loggingContentGenerator-MZAN52UV.js → loggingContentGenerator-RBLNDREC.js} +6 -6
- package/chunks/main-PXAUXNF2.js +8 -0
- package/chunks/{managed-npm-update-O4NHK45X.js → managed-npm-update-C5ID5R4R.js} +9 -9
- package/chunks/{mcp-6CFP2AYQ.js → mcp-OZ54NZJQ.js} +16 -14
- package/chunks/{monitor-DAKD6OU4.js → monitor-7Y4TVFTK.js} +18 -14
- package/chunks/{nonInteractiveCli-RC7VIUZL.js → nonInteractiveCli-QEK4LHAC.js} +51 -49
- package/chunks/{notebook-edit-474DPMRL.js → notebook-edit-OG35EBGY.js} +9 -8
- package/chunks/{openaiContentGenerator-2NFY2MWO.js → openaiContentGenerator-443BNRPJ.js} +5 -5
- package/chunks/{pidfile-KBFVDNQP.js → pidfile-ZK4OLRZA.js} +8 -8
- package/chunks/{processUtils-6GRYH4Y3.js → processUtils-4YGB4RUZ.js} +2 -2
- package/chunks/{qwenContentGenerator-KAHU6IZY.js → qwenContentGenerator-D5C2LCSZ.js} +9 -9
- package/chunks/{qwenOAuth2-RRQTCP4W.js → qwenOAuth2-Z4YQBMYN.js} +1 -1
- package/chunks/{read-file-3M6WXDXP.js → read-file-EXTJLWMU.js} +4 -4
- package/chunks/{resumeHistoryUtils-D6TAY3HX.js → resumeHistoryUtils-UPCGRJUL.js} +13 -12
- package/chunks/{ripGrep-PLPENT3E.js → ripGrep-QBVIRCU4.js} +8 -8
- package/chunks/{run-qwen-serve-ZAFIJKJC.js → run-qwen-serve-ZYGJNE3E.js} +169 -68
- package/chunks/{runtime-ZED7CYOZ.js → runtime-BZZ4LWCP.js} +21 -19
- package/chunks/{scheduler-MD3AL2W5.js → scheduler-YNQNOU2E.js} +135 -15
- package/chunks/{sdk-exporters-http-KHAB5JSD.js → sdk-exporters-http-XVTZQRCE.js} +2 -2
- package/chunks/{sdk-impl-KD7FSTC3.js → sdk-impl-7W7AKCS4.js} +7 -3
- package/chunks/{serve-E3VUDRZN.js → serve-LJHAXDCH.js} +18 -14
- package/chunks/{server-OWMEMAKR.js → server-ADMLELR6.js} +1229 -1098
- package/chunks/{session-HZ57QK7K.js → session-YKZXFFTM.js} +55 -53
- package/chunks/{settings-V7BR3RKP.js → settings-EQBUAQ7Y.js} +15 -13
- package/chunks/{shell-23OMNMW6.js → shell-3QZOJGTT.js} +8 -8
- package/chunks/{skill-6HBDYZRS.js → skill-UWSSMXE7.js} +5 -5
- package/chunks/{skill-settings-HWJLTU7M.js → skill-settings-T6MLB7NU.js} +15 -13
- package/chunks/{spawnChannel-N6KKUW5B.js → spawnChannel-VS7ZFUFP.js} +11 -11
- package/chunks/{standalone-update-QGIKHATD.js → standalone-update-2W26SRRO.js} +11 -10
- package/chunks/{startInteractiveUI-GX2CRL42.js → startInteractiveUI-CVS7K3D6.js} +86 -75
- package/chunks/{team-create-CFFKU7KL.js → team-create-4WFTNNUL.js} +8 -8
- package/chunks/{team-plan-approval-6EFOKR6A.js → team-plan-approval-DBYI33S3.js} +8 -8
- package/chunks/{terminal-image-renderer-TLDNACQY.js → terminal-image-renderer-S5WPPQKH.js} +8 -8
- package/chunks/{theme-manager-5LJ3H7VO.js → theme-manager-LI2RIOVR.js} +8 -8
- package/chunks/{tool-search-UJV3A24H.js → tool-search-4773EUQ4.js} +4 -4
- package/chunks/{total-session-admission-D63QYXGO.js → total-session-admission-PAY5CH2Z.js} +16 -15
- package/chunks/{trustedFolders-KZCOB53W.js → trustedFolders-FRSLE674.js} +9 -9
- package/chunks/{types-ML3TRJQ5.js → types-WYCFCEHR.js} +5 -3
- package/chunks/{update-relaunch-IFILM3SA.js → update-relaunch-ZSFQTU6M.js} +5 -5
- package/chunks/{updateCheck-YZ2CRCFC.js → updateCheck-AXWSO7KA.js} +12 -11
- package/chunks/{useAutoAcceptIndicator-AXEVNA3Q.js → useAutoAcceptIndicator-VHLXIA7U.js} +18 -16
- package/chunks/{validateNonInterActiveAuth-3WTOJFWA.js → validateNonInterActiveAuth-PDJECMFU.js} +48 -46
- package/chunks/{version-GXK7OHZY.js → version-RBN764QS.js} +1 -1
- package/chunks/{web-fetch-ILB4GAVR.js → web-fetch-7BJK42AF.js} +4 -4
- package/chunks/{web-search-HKRPGPZZ.js → web-search-L2CILQXV.js} +4 -3
- package/chunks/{workflow-FXIPRQQA.js → workflow-5VH2R74I.js} +170 -137
- package/chunks/{workspace-providers-status-NYHC7HSR.js → workspace-providers-status-OZTQ6JFH.js} +19 -17
- package/chunks/{workspace-registration-store-AKEB7OMW.js → workspace-registration-store-IX5RJQS5.js} +1 -1
- package/chunks/{workspace-registry-CDAS5TVZ.js → workspace-registry-73N4BGG4.js} +16 -15
- package/chunks/{workspace-service-PAMUKMAV.js → workspace-service-I5RUPSNV.js} +26 -22
- package/chunks/{workspace-skills-status-YQSHCCMS.js → workspace-skills-status-DMK6VYDO.js} +17 -15
- package/chunks/{workspace-trust-reconciler-RPTXOIY2.js → workspace-trust-reconciler-QX4RL3TC.js} +24 -21
- package/chunks/{write-file-CGS57TS4.js → write-file-UGDD5UTS.js} +8 -8
- package/chunks/{zoom-image-E7D72GYV.js → zoom-image-ZAHEO3YP.js} +4 -4
- package/cli.js +12 -12
- package/package.json +3 -3
- package/web-shell/assets/{arc-DybZaz32.js → arc-CHY4saMJ.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-jN3qBd19.js → architectureDiagram-3BPJPVTR-Bu6CwvHj.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-Ct5DZPrj.js → blockDiagram-GPEHLZMM-XGt6iGf_.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-CUAFMlUG.js → c4Diagram-AAUBKEIU-CBbYl19W.js} +1 -1
- package/web-shell/assets/channel-B40srHOa.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-CuV8n90B.js → chunk-2J33WTMH-BEhmVrdx.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BUzl_kls.js → chunk-4BX2VUAB-fQLyE0Bg.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-BnDBLX6A.js → chunk-55IACEB6-yGdtyx4a.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-B83uTOjm.js → chunk-727SXJPM-DYbX2GLo.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-DM3HLgpT.js → chunk-AQP2D5EJ-DyKTEsYn.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CSQ5hgyb.js → chunk-FMBD7UC4-D8Uy_GzX.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-BWOF4SxX.js → chunk-ND2GUHAM-C8wNR2K7.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-BsOH9LMi.js → chunk-QZHKN3VN-BnybNxnt.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-qumcXQW_.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-qumcXQW_.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-IENqH2iJ.js → cose-bilkent-S5V4N54A-jq4uiFRp.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG--dyzDTGo.js → dagre-BM42HDAG-Bs7oye1U.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BE7Dcqof.js → diagram-2AECGRRQ-BHGGJNyM.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-Cr8-5OTj.js → diagram-5GNKFQAL-BJezVLGT.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-Bzey3uAY.js → diagram-KO2AKTUF-5JzQN_rL.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-sErl28Xb.js → diagram-LMA3HP47-BlPYOgY9.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-Dq30ATIo.js → diagram-OG6HWLK6-CtMHEaFK.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-BkCoEfVW.js → erDiagram-TEJ5UH35-CRNdq2AB.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-DHwO0rrI.js → flowDiagram-I6XJVG4X-De1WwLzu.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-s7vAPxWq.js → ganttDiagram-6RSMTGT7-YbWfL5Zn.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CQxhwPOU.js → gitGraphDiagram-PVQCEYII-DzCN8bmd.js} +1 -1
- package/web-shell/assets/index-BDOGGGaN.css +5 -0
- package/web-shell/assets/{index-CF4wApWp.js → index-CocPvF9Q.js} +1 -1
- package/web-shell/assets/index-DSH2KrMc.js +1771 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-BnFrD0bq.js → infoDiagram-5YYISTIA-DLHoopnE.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-Bf9zK5NK.js → ishikawaDiagram-YF4QCWOH-XnbU04SS.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-CyGAhsxi.js → journeyDiagram-JHISSGLW-CipPyEeJ.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-CbsK5akB.js → kanban-definition-UN3LZRKU-DrSeyE5d.js} +1 -1
- package/web-shell/assets/{linear-cQsF4P8D.js → linear-LrBKnAo_.js} +1 -1
- package/web-shell/assets/{mermaid.core-Z4HVqrKY.js → mermaid.core-C3U9UVmf.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-CYnrBo_f.js → mindmap-definition-RKZ34NQL-DqRWgC9H.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-CBzOfhrs.js → pieDiagram-4H26LBE5-BNXY5p6H.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-D4LK1Ebn.js → quadrantDiagram-W4KKPZXB-Ccj9QzE4.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-Bzti2Lcj.js → requirementDiagram-4Y6WPE33-CjPM2_gx.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-yTBw5Z2s.js → sankeyDiagram-5OEKKPKP-C0RsvKbj.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-D07UVRiZ.js → sequenceDiagram-3UESZ5HK-ClN1P5z7.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-UE_lHsTn.js → stateDiagram-AJRCARHV-By0eiB2Y.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-Ds0WlK3F.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-DRvYdiTs.js → timeline-definition-PNZ67QCA-g_iaSQgv.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-CQLIXs0u.js → vennDiagram-CIIHVFJN-y9ZqJ-TD.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-JZz_Xqse.js → wardley-L42UT6IY-BVVfaxpF.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO--i7BiJwB.js → wardleyDiagram-YWT4CUSO-D3ooZKZT.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-Bkc-bW0S.js → xychartDiagram-2RQKCTM6-6GXrY6M1.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-RXFQM6FQ.js +0 -42
- package/chunks/chunk-UA5H3DS2.js +0 -203
- package/web-shell/assets/channel-BMwLrwLW.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BGDv98jY.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BGDv98jY.js +0 -1
- package/web-shell/assets/index-Bckpjr-I.css +0 -5
- package/web-shell/assets/index-DwEr9HEW.js +0 -1768
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DC6xgXjX.js +0 -1
- /package/chunks/{chunk-VXZBKKQR.js → chunk-NTTBXH7U.js} +0 -0
- /package/chunks/{chunk-GRC5HGPI.js → chunk-OIBUG24X.js} +0 -0
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
writeStderrLineSafe
|
|
5
|
+
} from "./chunk-KGJGEEVR.js";
|
|
6
|
+
import {
|
|
7
|
+
init_esbuild_shims
|
|
8
|
+
} from "./chunk-5O2XNYP6.js";
|
|
9
|
+
import {
|
|
10
|
+
__name
|
|
11
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
12
|
+
|
|
13
|
+
// packages/cli/src/config/acp-channel-fallback.ts
|
|
14
|
+
init_esbuild_shims();
|
|
15
|
+
var QWEN_CODE_SERVE_ENV = "QWEN_CODE_SERVE";
|
|
16
|
+
var QWEN_CODE_DESKTOP_ENV = "QWEN_CODE_DESKTOP";
|
|
17
|
+
function resolveAcpChannelFallback(env = process.env) {
|
|
18
|
+
if (env[QWEN_CODE_DESKTOP_ENV] === "1") {
|
|
19
|
+
return "desktop";
|
|
20
|
+
}
|
|
21
|
+
if (env[QWEN_CODE_SERVE_ENV] === "1") {
|
|
22
|
+
return "daemon";
|
|
23
|
+
}
|
|
24
|
+
return "ACP";
|
|
25
|
+
}
|
|
26
|
+
__name(resolveAcpChannelFallback, "resolveAcpChannelFallback");
|
|
27
|
+
|
|
28
|
+
// packages/cli/src/config/shared-env-keys.ts
|
|
29
|
+
init_esbuild_shims();
|
|
30
|
+
var DEFAULT_EXCLUDED_ENV_VARS = ["DEBUG", "DEBUG_MODE"];
|
|
31
|
+
var ENV_CORRUPTED_PATH = "QWEN_CODE_SETTINGS_CORRUPTED_PATH";
|
|
32
|
+
var ENV_WAS_RECOVERED = "QWEN_CODE_SETTINGS_WAS_RECOVERED";
|
|
33
|
+
var ENV_ACP_REPEATED_TOOL_FAILURE_GUARD = "QWEN_CODE_ACP_REPEATED_TOOL_FAILURE_GUARD";
|
|
34
|
+
var PROJECT_ENV_HARDCODED_EXCLUSIONS = [
|
|
35
|
+
"QWEN_HOME",
|
|
36
|
+
"QWEN_RUNTIME_DIR",
|
|
37
|
+
"QWEN_CODE_MCP_APPROVALS_PATH",
|
|
38
|
+
"QWEN_CODE_TRUSTED_FOLDERS_PATH",
|
|
39
|
+
// Runtime attribution markers are stamped by trusted launchers. A project
|
|
40
|
+
// `.env` must not spoof client channel telemetry.
|
|
41
|
+
QWEN_CODE_SERVE_ENV,
|
|
42
|
+
QWEN_CODE_DESKTOP_ENV,
|
|
43
|
+
ENV_CORRUPTED_PATH,
|
|
44
|
+
ENV_WAS_RECOVERED,
|
|
45
|
+
// This is an operator rollout policy. A project must not be able to promote
|
|
46
|
+
// itself from the default shadow cohort into warning or enforcement.
|
|
47
|
+
ENV_ACP_REPEATED_TOOL_FAILURE_GUARD,
|
|
48
|
+
// QWEN_TLS_INSECURE (and NODE_TLS_REJECT_UNAUTHORIZED, which it mirrors)
|
|
49
|
+
// disable TLS certificate verification for all outbound API connections. A
|
|
50
|
+
// project `.env` must never enable either — that would let an untrusted repo
|
|
51
|
+
// silently turn off MITM protection. Opt-in stays with the user via the
|
|
52
|
+
// `--insecure` flag, the shell environment, or a home `.env`. The initial
|
|
53
|
+
// `.env` load only consults this list, so both keys must be here (not just
|
|
54
|
+
// RELOAD_EXCLUDED_KEYS, which only applies on reload).
|
|
55
|
+
"QWEN_TLS_INSECURE",
|
|
56
|
+
"NODE_TLS_REJECT_UNAUTHORIZED",
|
|
57
|
+
// NODE_EXTRA_CA_CERTS reaches the same outcome by adding a TLS trust
|
|
58
|
+
// anchor instead of disabling verification.
|
|
59
|
+
"NODE_EXTRA_CA_CERTS",
|
|
60
|
+
// The non-Node TLS trust-anchor vars reach the SAME MITM outcome for the
|
|
61
|
+
// curl/git/openssl/python tools a session subprocess routinely shells out
|
|
62
|
+
// to: they are honored unconditionally as a CA bundle/dir, and npm/pip
|
|
63
|
+
// honor their own equivalents (npm_config_cafile / npm_config_ca / PIP_CERT
|
|
64
|
+
// as attacker CAs, npm_config_strict_ssl=false disables verification with
|
|
65
|
+
// no CA at all; GIT_SSL_CAPATH is git's directory-form twin of
|
|
66
|
+
// GIT_SSL_CAINFO). A project `.env` pointing any of them at an attacker CA
|
|
67
|
+
// lets an untrusted repo silently intercept token-bearing traffic
|
|
68
|
+
// (git/npm/pip fetches) for every workspace's sessions — the exact outcome
|
|
69
|
+
// NODE_EXTRA_CA_CERTS is blocked for. Like NODE_EXTRA_CA_CERTS these stay
|
|
70
|
+
// reject-from-project-`.env` only: a value the operator set in their own
|
|
71
|
+
// login shell or home `.env` is their trusted choice and is preserved.
|
|
72
|
+
"SSL_CERT_FILE",
|
|
73
|
+
"SSL_CERT_DIR",
|
|
74
|
+
"CURL_CA_BUNDLE",
|
|
75
|
+
"REQUESTS_CA_BUNDLE",
|
|
76
|
+
"GIT_SSL_CAINFO",
|
|
77
|
+
"GIT_SSL_CAPATH",
|
|
78
|
+
"npm_config_cafile",
|
|
79
|
+
"npm_config_ca",
|
|
80
|
+
// npm treats underscore/hyphen spellings of a config key as the same key
|
|
81
|
+
// (see canonicalLoaderKey below), so both forms of strict-ssl are listed.
|
|
82
|
+
"npm_config_strict_ssl",
|
|
83
|
+
"npm_config_strict-ssl",
|
|
84
|
+
"PIP_CERT",
|
|
85
|
+
// CURL_HOME / WGETRC redirect curl/wget at attacker rc files
|
|
86
|
+
// (`$CURL_HOME/.curlrc`, the file WGETRC names) whose `proxy`, `cacert`, or
|
|
87
|
+
// `insecure` directives intercept or downgrade the same token-bearing
|
|
88
|
+
// traffic — the config-file-redirect class this list already blocks for npm
|
|
89
|
+
// (`npm_config_userconfig`), git (`GIT_CONFIG_GLOBAL`), and OpenSSL
|
|
90
|
+
// (`OPENSSL_CONF`).
|
|
91
|
+
"CURL_HOME",
|
|
92
|
+
"WGETRC",
|
|
93
|
+
// PIP_CONFIG_FILE redirects all of pip's configuration at the file it
|
|
94
|
+
// names — index-url, trusted-host, proxy, cert, or client-cert in an
|
|
95
|
+
// attacker file sends session pip traffic or credentials to attacker
|
|
96
|
+
// infrastructure — the same config-file-redirect class as
|
|
97
|
+
// npm_config_userconfig and GIT_CONFIG_GLOBAL.
|
|
98
|
+
"PIP_CONFIG_FILE",
|
|
99
|
+
// The git command-execution env family: git runs these on any invocation in
|
|
100
|
+
// a session subprocess. GIT_SSH_COMMAND / GIT_SSH (its documented legacy
|
|
101
|
+
// counterpart, still exec'd by git for SSH transports) / GIT_EXTERNAL_DIFF
|
|
102
|
+
// execute a command directly; GIT_ASKPASS / GIT_PROXY_COMMAND / GIT_EDITOR
|
|
103
|
+
// / GIT_SEQUENCE_EDITOR are exec'd conditionally (credential prompt, proxy
|
|
104
|
+
// transport, editor, `git rebase -i` todo-list edit);
|
|
105
|
+
// GIT_EXEC_PATH redirects git's own remote-helper/subcommand lookup at an
|
|
106
|
+
// attacker directory and GIT_TEMPLATE_DIR plants hooks that run after the
|
|
107
|
+
// next clone/init; GIT_CONFIG_* injects arbitrary config (`core.hooksPath`,
|
|
108
|
+
// `core.fsmonitor`, …) that turns a routine `git commit` into
|
|
109
|
+
// attacker-code execution as the daemon user — GIT_CONFIG_PARAMETERS
|
|
110
|
+
// carries the same injection as one quoted string, so it is blocked with
|
|
111
|
+
// GIT_CONFIG_COUNT and the numbered pairs. core/utils/git-branches.ts
|
|
112
|
+
// scrubs the config-injection subset from the repo's own git invocations,
|
|
113
|
+
// so a project `.env` setting this family contradicts that model. Numbered
|
|
114
|
+
// GIT_CONFIG_KEY_<n>/GIT_CONFIG_VALUE_<n> pairs are matched by numeric
|
|
115
|
+
// suffix below.
|
|
116
|
+
"GIT_SSH_COMMAND",
|
|
117
|
+
"GIT_SSH",
|
|
118
|
+
"GIT_EXEC_PATH",
|
|
119
|
+
"GIT_TEMPLATE_DIR",
|
|
120
|
+
"GIT_ASKPASS",
|
|
121
|
+
"GIT_PROXY_COMMAND",
|
|
122
|
+
"GIT_EDITOR",
|
|
123
|
+
"GIT_SEQUENCE_EDITOR",
|
|
124
|
+
"GIT_EXTERNAL_DIFF",
|
|
125
|
+
"GIT_CONFIG_GLOBAL",
|
|
126
|
+
"GIT_CONFIG_SYSTEM",
|
|
127
|
+
// git merges `$XDG_CONFIG_HOME/git/config` with `~/.gitconfig`, so a
|
|
128
|
+
// project `.env` redirecting XDG_CONFIG_HOME plants the same config
|
|
129
|
+
// injection (`core.hooksPath`, …) the GIT_CONFIG_* keys block — without
|
|
130
|
+
// naming a git config file at all.
|
|
131
|
+
"XDG_CONFIG_HOME",
|
|
132
|
+
"GIT_CONFIG_COUNT",
|
|
133
|
+
"GIT_CONFIG_PARAMETERS",
|
|
134
|
+
// git falls back to executing $SSH_ASKPASS for passphrase prompts (its
|
|
135
|
+
// askpass order is GIT_ASKPASS > core.askPass > SSH_ASKPASS, and ssh runs
|
|
136
|
+
// it whenever SSH_ASKPASS_REQUIRE=force or no terminal is available), so a
|
|
137
|
+
// project `.env` pointing it at an attacker script is code execution on
|
|
138
|
+
// any git/ssh auth challenge. SSH_ASKPASS_REQUIRE stays settable: it only
|
|
139
|
+
// selects *when* the askpass program runs, and with SSH_ASKPASS
|
|
140
|
+
// project-blocked it has no program to execute.
|
|
141
|
+
"SSH_ASKPASS",
|
|
142
|
+
// less executes $LESSOPEN as an input preprocessor on every file a session
|
|
143
|
+
// views (and $LESSCLOSE on exit whenever the preprocessor ran), so a
|
|
144
|
+
// project `.env` setting either is attacker command execution the first
|
|
145
|
+
// time a session runs `less`.
|
|
146
|
+
"LESSOPEN",
|
|
147
|
+
"LESSCLOSE",
|
|
148
|
+
// node-gyp interpreter selection: node-gyp's find-python.js executes
|
|
149
|
+
// NODE_GYP_FORCE_PYTHON / npm_config_python / PYTHON as the build Python,
|
|
150
|
+
// so a project `.env` pointing them at an attacker script is code execution
|
|
151
|
+
// during any native-addon `npm install` in another workspace's session.
|
|
152
|
+
// Unlike the pure-injection loader keys these have a legitimate
|
|
153
|
+
// operator-shell use (selecting a real interpreter), so they are
|
|
154
|
+
// reject-from-project-`.env` only, not scrubbed from the launch env.
|
|
155
|
+
"NODE_GYP_FORCE_PYTHON",
|
|
156
|
+
"npm_config_python",
|
|
157
|
+
"PYTHON",
|
|
158
|
+
// CPython executes $PYTHONSTARTUP at interactive startup — the Python
|
|
159
|
+
// analogue of NODE_REPL_EXTERNAL_MODULE. It stays reject-only (like
|
|
160
|
+
// PYTHON) because operators legitimately set it in their own shells.
|
|
161
|
+
"PYTHONSTARTUP",
|
|
162
|
+
// git's documented editor fallback chain (GIT_EDITOR → core.editor →
|
|
163
|
+
// $VISUAL → $EDITOR) executes these exactly like the blocked GIT_EDITOR,
|
|
164
|
+
// and the CLI's own useLaunchEditor spawns them from ordinary interactive
|
|
165
|
+
// flows.
|
|
166
|
+
"VISUAL",
|
|
167
|
+
"EDITOR",
|
|
168
|
+
// npm runs `$npm_config_git` as the git binary for install-from-git and
|
|
169
|
+
// similar flows, so a project `.env` pointing it at an attacker script is
|
|
170
|
+
// the same exec redirect as the interpreter keys above.
|
|
171
|
+
"npm_config_git",
|
|
172
|
+
// The CLI itself execs $BROWSER via openBrowserSecurely (core/utils/
|
|
173
|
+
// secure-browser-launcher.ts) before any CI/DISPLAY gate, so a project
|
|
174
|
+
// `.env` pointing it at an attacker script runs on any browser-launch
|
|
175
|
+
// flow.
|
|
176
|
+
"BROWSER",
|
|
177
|
+
// QWEN_CLI_ENTRY is the script path daemon-spawned session processes run.
|
|
178
|
+
// A project `.env` or settings.env fixing it turns
|
|
179
|
+
// `cd <untrusted repo> && qwen serve` into code execution as the daemon
|
|
180
|
+
// via an attacker-chosen ACP entrypoint, for every workspace's sessions.
|
|
181
|
+
"QWEN_CLI_ENTRY",
|
|
182
|
+
// QWEN_CDP_MCP_COMMAND is the command the daemon spawns as the
|
|
183
|
+
// browser-automation MCP adapter, and QWEN_SERVE_CDP_TUNNEL_OVER_WS
|
|
184
|
+
// switches that tunnel surface on. A project `.env` or settings.env fixing
|
|
185
|
+
// either hijacks the daemon the same way QWEN_CLI_ENTRY does; values the
|
|
186
|
+
// operator set in the daemon's launch env still apply.
|
|
187
|
+
"QWEN_CDP_MCP_COMMAND",
|
|
188
|
+
"QWEN_SERVE_CDP_TUNNEL_OVER_WS",
|
|
189
|
+
// DEV gates the daemon's inherited-loader-env scrub (run-qwen-serve.ts);
|
|
190
|
+
// only the dev harness (scripts/dev.js) stamps it into the launch env. A
|
|
191
|
+
// project file setting it would silently keep loader vars in the base env
|
|
192
|
+
// distributed to every workspace's session children — reopening the #8653
|
|
193
|
+
// vector for any repo whose .env happens to carry DEV=true.
|
|
194
|
+
"DEV"
|
|
195
|
+
];
|
|
196
|
+
var HARDCODED_PROJECT_ENV_EXCLUSIONS = new Set(
|
|
197
|
+
PROJECT_ENV_HARDCODED_EXCLUSIONS.map((key) => key.toLowerCase())
|
|
198
|
+
);
|
|
199
|
+
var HARDCODED_PROJECT_ENV_EXCLUSION_PATTERNS = [
|
|
200
|
+
/^git_config_key_\d+$/u,
|
|
201
|
+
/^git_config_value_\d+$/u
|
|
202
|
+
];
|
|
203
|
+
function isHardcodedProjectEnvExclusion(key) {
|
|
204
|
+
const lowerKey = key.toLowerCase();
|
|
205
|
+
return HARDCODED_PROJECT_ENV_EXCLUSIONS.has(lowerKey) || HARDCODED_PROJECT_ENV_EXCLUSION_PATTERNS.some(
|
|
206
|
+
(pattern) => pattern.test(lowerKey)
|
|
207
|
+
);
|
|
208
|
+
}
|
|
209
|
+
__name(isHardcodedProjectEnvExclusion, "isHardcodedProjectEnvExclusion");
|
|
210
|
+
var HOME_ENV_BOOTSTRAP_KEYS = [
|
|
211
|
+
"QWEN_HOME",
|
|
212
|
+
"QWEN_RUNTIME_DIR",
|
|
213
|
+
"QWEN_CODE_MCP_APPROVALS_PATH",
|
|
214
|
+
"QWEN_CODE_TRUSTED_FOLDERS_PATH"
|
|
215
|
+
];
|
|
216
|
+
var INHERITED_LOADER_ENV_KEYS = [
|
|
217
|
+
"NODE_OPTIONS",
|
|
218
|
+
// npm maps its `node-options` config onto npm_config_node_options in the
|
|
219
|
+
// environment, and `npm run` lifecycle scripts apply it like NODE_OPTIONS —
|
|
220
|
+
// the same hijack through an adjacent key. The config-file keys are the
|
|
221
|
+
// same hijack one level up: they point npm at an attacker-chosen .npmrc
|
|
222
|
+
// that can itself set node-options/script-shell/ignore-scripts, and `npm
|
|
223
|
+
// run` itself exports them into the script environment.
|
|
224
|
+
"npm_config_node_options",
|
|
225
|
+
"npm_config_userconfig",
|
|
226
|
+
"npm_config_globalconfig",
|
|
227
|
+
"npm_config_script_shell",
|
|
228
|
+
"npm_config_prefix",
|
|
229
|
+
"NODE_PATH",
|
|
230
|
+
// OPENSSL_CONF points Node's startup crypto init at an attacker `.cnf`
|
|
231
|
+
// whose `nodejs_conf` section can dlopen an arbitrary engine/provider `.so`
|
|
232
|
+
// before any user code runs — a pure code-injection vector with no benign
|
|
233
|
+
// cross-workspace inheritance, so it is scrubbed like NODE_OPTIONS.
|
|
234
|
+
"OPENSSL_CONF",
|
|
235
|
+
// NODE_REPL_EXTERNAL_MODULE makes a spawned `node` REPL require() an
|
|
236
|
+
// attacker file at startup. npm_config_node_gyp overrides the node-gyp
|
|
237
|
+
// *script* npm's shim runs verbatim (`"$npm_config_node_gyp" "$@"`), and
|
|
238
|
+
// npm_config_init_module is require()d by `npm init` (even `-y`). All three
|
|
239
|
+
// are executable/module redirects with no legitimate login-shell use, so
|
|
240
|
+
// they join the scrubbed loader set rather than the reject-only tier.
|
|
241
|
+
"NODE_REPL_EXTERNAL_MODULE",
|
|
242
|
+
"npm_config_node_gyp",
|
|
243
|
+
"npm_config_init_module",
|
|
244
|
+
"LD_PRELOAD",
|
|
245
|
+
"LD_AUDIT",
|
|
246
|
+
"DYLD_INSERT_LIBRARIES",
|
|
247
|
+
"BASH_ENV",
|
|
248
|
+
// zsh sources $ZDOTDIR/.zshenv on every invocation, including
|
|
249
|
+
// non-interactive `zsh -c` — the zsh analogue of BASH_ENV.
|
|
250
|
+
"ZDOTDIR"
|
|
251
|
+
// BASH_FUNC_* exported-function definitions are bash's other env-driven
|
|
252
|
+
// code-import channel (non-interactive `bash -c` still imports them);
|
|
253
|
+
// matched by prefix in isLoaderEnvKey, not listed here.
|
|
254
|
+
];
|
|
255
|
+
var canonicalLoaderKey = /* @__PURE__ */ __name((key) => key.toLowerCase().replace(/_/gu, "-"), "canonicalLoaderKey");
|
|
256
|
+
var LOADER_ENV_KEYS = new Set(
|
|
257
|
+
INHERITED_LOADER_ENV_KEYS.map(canonicalLoaderKey)
|
|
258
|
+
);
|
|
259
|
+
function isLoaderEnvKey(key) {
|
|
260
|
+
const canonical = canonicalLoaderKey(key);
|
|
261
|
+
return canonical.startsWith("bash-func-") || LOADER_ENV_KEYS.has(canonical);
|
|
262
|
+
}
|
|
263
|
+
__name(isLoaderEnvKey, "isLoaderEnvKey");
|
|
264
|
+
function scrubInheritedLoaderEnv(env, snapshotInto) {
|
|
265
|
+
const removedKeys = [];
|
|
266
|
+
for (const key of Object.keys(env)) {
|
|
267
|
+
if (isLoaderEnvKey(key)) {
|
|
268
|
+
const value = env[key];
|
|
269
|
+
if (snapshotInto && value !== void 0) snapshotInto.set(key, value);
|
|
270
|
+
delete env[key];
|
|
271
|
+
removedKeys.push(key);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return removedKeys;
|
|
275
|
+
}
|
|
276
|
+
__name(scrubInheritedLoaderEnv, "scrubInheritedLoaderEnv");
|
|
277
|
+
function scrubAndReportInheritedLoaderEnv(env, commandLabel, processLabel, snapshotInto) {
|
|
278
|
+
const removedKeys = scrubInheritedLoaderEnv(env, snapshotInto);
|
|
279
|
+
if (removedKeys.length > 0) {
|
|
280
|
+
writeStderrLineSafe(
|
|
281
|
+
`${commandLabel}: scrubbed inherited loader env vars from the ${processLabel} process; session subprocesses will not inherit them: ${removedKeys.join(", ")}`
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
return removedKeys;
|
|
285
|
+
}
|
|
286
|
+
__name(scrubAndReportInheritedLoaderEnv, "scrubAndReportInheritedLoaderEnv");
|
|
287
|
+
var sharedProcessEnvScrubDepth = 0;
|
|
288
|
+
var sharedProcessEnvScrubOriginals = /* @__PURE__ */ new Map();
|
|
289
|
+
function acquireInheritedLoaderEnvScrub(env, commandLabel, processLabel) {
|
|
290
|
+
sharedProcessEnvScrubDepth++;
|
|
291
|
+
const removedKeys = scrubAndReportInheritedLoaderEnv(
|
|
292
|
+
env,
|
|
293
|
+
commandLabel,
|
|
294
|
+
processLabel,
|
|
295
|
+
sharedProcessEnvScrubOriginals
|
|
296
|
+
);
|
|
297
|
+
let released = false;
|
|
298
|
+
return {
|
|
299
|
+
removedKeys,
|
|
300
|
+
release() {
|
|
301
|
+
if (released) return;
|
|
302
|
+
released = true;
|
|
303
|
+
sharedProcessEnvScrubDepth--;
|
|
304
|
+
if (sharedProcessEnvScrubDepth > 0) return;
|
|
305
|
+
for (const [key, value] of sharedProcessEnvScrubOriginals) {
|
|
306
|
+
if (!Object.hasOwn(env, key)) env[key] = value;
|
|
307
|
+
}
|
|
308
|
+
sharedProcessEnvScrubOriginals.clear();
|
|
309
|
+
}
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
__name(acquireInheritedLoaderEnvScrub, "acquireInheritedLoaderEnvScrub");
|
|
313
|
+
var reportedLoaderKeyRejections = /* @__PURE__ */ new Map();
|
|
314
|
+
var loaderKeyRejectionReporter;
|
|
315
|
+
function setLoaderKeyRejectionReporter(reporter) {
|
|
316
|
+
loaderKeyRejectionReporter = reporter;
|
|
317
|
+
}
|
|
318
|
+
__name(setLoaderKeyRejectionReporter, "setLoaderKeyRejectionReporter");
|
|
319
|
+
function clearLoaderKeyRejectionReporterIfCurrent(reporter) {
|
|
320
|
+
if (loaderKeyRejectionReporter === reporter) {
|
|
321
|
+
loaderKeyRejectionReporter = void 0;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
__name(clearLoaderKeyRejectionReporterIfCurrent, "clearLoaderKeyRejectionReporterIfCurrent");
|
|
325
|
+
function reportRejectedLoaderKeys(source, candidateKeys) {
|
|
326
|
+
const rejectedKeys = candidateKeys.filter(isLoaderEnvKey);
|
|
327
|
+
const warnedKeys = reportedLoaderKeyRejections.get(source) ?? /* @__PURE__ */ new Set();
|
|
328
|
+
const freshKeys = rejectedKeys.filter((key) => !warnedKeys.has(key));
|
|
329
|
+
if (freshKeys.length === 0) return rejectedKeys;
|
|
330
|
+
for (const key of freshKeys) warnedKeys.add(key);
|
|
331
|
+
reportedLoaderKeyRejections.set(source, warnedKeys);
|
|
332
|
+
if (loaderKeyRejectionReporter) {
|
|
333
|
+
loaderKeyRejectionReporter(source, freshKeys);
|
|
334
|
+
} else {
|
|
335
|
+
writeStderrLineSafe(
|
|
336
|
+
`qwen: ${source} cannot set loader-affecting env vars; ignored: ` + freshKeys.join(", ")
|
|
337
|
+
);
|
|
338
|
+
}
|
|
339
|
+
return rejectedKeys;
|
|
340
|
+
}
|
|
341
|
+
__name(reportRejectedLoaderKeys, "reportRejectedLoaderKeys");
|
|
342
|
+
function resetLoaderKeyRejectionReportingForTesting() {
|
|
343
|
+
reportedLoaderKeyRejections.clear();
|
|
344
|
+
}
|
|
345
|
+
__name(resetLoaderKeyRejectionReportingForTesting, "resetLoaderKeyRejectionReportingForTesting");
|
|
346
|
+
|
|
347
|
+
// packages/cli/src/config/compile-cache.ts
|
|
348
|
+
init_esbuild_shims();
|
|
349
|
+
var PENDING_COMPILE_CACHE_ENV = "QWEN_CODE_PENDING_COMPILE_CACHE";
|
|
350
|
+
function publishPendingCompileCache(env = process.env) {
|
|
351
|
+
const pendingDirectory = env[PENDING_COMPILE_CACHE_ENV];
|
|
352
|
+
delete env[PENDING_COMPILE_CACHE_ENV];
|
|
353
|
+
if (pendingDirectory && !env["NODE_COMPILE_CACHE"] && env["NODE_DISABLE_COMPILE_CACHE"] !== "1") {
|
|
354
|
+
env["NODE_COMPILE_CACHE"] = pendingDirectory;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
__name(publishPendingCompileCache, "publishPendingCompileCache");
|
|
358
|
+
|
|
359
|
+
export {
|
|
360
|
+
QWEN_CODE_SERVE_ENV,
|
|
361
|
+
QWEN_CODE_DESKTOP_ENV,
|
|
362
|
+
resolveAcpChannelFallback,
|
|
363
|
+
DEFAULT_EXCLUDED_ENV_VARS,
|
|
364
|
+
ENV_CORRUPTED_PATH,
|
|
365
|
+
ENV_WAS_RECOVERED,
|
|
366
|
+
ENV_ACP_REPEATED_TOOL_FAILURE_GUARD,
|
|
367
|
+
PROJECT_ENV_HARDCODED_EXCLUSIONS,
|
|
368
|
+
isHardcodedProjectEnvExclusion,
|
|
369
|
+
HOME_ENV_BOOTSTRAP_KEYS,
|
|
370
|
+
isLoaderEnvKey,
|
|
371
|
+
scrubInheritedLoaderEnv,
|
|
372
|
+
scrubAndReportInheritedLoaderEnv,
|
|
373
|
+
acquireInheritedLoaderEnvScrub,
|
|
374
|
+
setLoaderKeyRejectionReporter,
|
|
375
|
+
clearLoaderKeyRejectionReporterIfCurrent,
|
|
376
|
+
reportRejectedLoaderKeys,
|
|
377
|
+
resetLoaderKeyRejectionReportingForTesting,
|
|
378
|
+
publishPendingCompileCache
|
|
379
|
+
};
|
|
380
|
+
/**
|
|
381
|
+
* @license
|
|
382
|
+
* Copyright 2026 Qwen Team
|
|
383
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
384
|
+
*/
|
|
385
|
+
/**
|
|
386
|
+
* @license
|
|
387
|
+
* Copyright 2025 Qwen Team
|
|
388
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
389
|
+
*/
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
init_esbuild_shims
|
|
5
|
+
} from "./chunk-5O2XNYP6.js";
|
|
6
|
+
import {
|
|
7
|
+
__name
|
|
8
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
9
|
+
|
|
10
|
+
// packages/core/dist/src/services/tool-write-origin.js
|
|
11
|
+
init_esbuild_shims();
|
|
12
|
+
var TOOL_WRITE_ORIGIN_META_KEY = "qwen-code/tool-write-origin";
|
|
13
|
+
var TOOL_WRITE_ORIGINS = [
|
|
14
|
+
"write_file",
|
|
15
|
+
"edit",
|
|
16
|
+
"notebook_edit",
|
|
17
|
+
"shell_sed_edit"
|
|
18
|
+
];
|
|
19
|
+
var TOOL_WRITE_ORIGIN_SET = new Set(TOOL_WRITE_ORIGINS);
|
|
20
|
+
function buildToolWriteOriginMeta(meta, source) {
|
|
21
|
+
const sanitized = { ...meta };
|
|
22
|
+
delete sanitized[TOOL_WRITE_ORIGIN_META_KEY];
|
|
23
|
+
if (source !== void 0) {
|
|
24
|
+
sanitized[TOOL_WRITE_ORIGIN_META_KEY] = { version: 1, source };
|
|
25
|
+
}
|
|
26
|
+
return Object.keys(sanitized).length > 0 ? sanitized : void 0;
|
|
27
|
+
}
|
|
28
|
+
__name(buildToolWriteOriginMeta, "buildToolWriteOriginMeta");
|
|
29
|
+
function parseToolWriteOriginMeta(meta) {
|
|
30
|
+
const marker = meta?.[TOOL_WRITE_ORIGIN_META_KEY];
|
|
31
|
+
if (typeof marker !== "object" || marker === null || Array.isArray(marker)) {
|
|
32
|
+
return void 0;
|
|
33
|
+
}
|
|
34
|
+
const keys = Object.keys(marker);
|
|
35
|
+
if (keys.length !== 2 || !Object.hasOwn(marker, "version") || !Object.hasOwn(marker, "source")) {
|
|
36
|
+
return void 0;
|
|
37
|
+
}
|
|
38
|
+
const record = marker;
|
|
39
|
+
return record["version"] === 1 && typeof record["source"] === "string" && TOOL_WRITE_ORIGIN_SET.has(record["source"]) ? record["source"] : void 0;
|
|
40
|
+
}
|
|
41
|
+
__name(parseToolWriteOriginMeta, "parseToolWriteOriginMeta");
|
|
42
|
+
|
|
43
|
+
export {
|
|
44
|
+
buildToolWriteOriginMeta,
|
|
45
|
+
parseToolWriteOriginMeta
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* @license
|
|
49
|
+
* Copyright 2025 Google LLC
|
|
50
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
51
|
+
*/
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
MODIFIER_SHIFT_BIT,
|
|
17
17
|
MODIFIER_SUPER_BIT,
|
|
18
18
|
clipboardHasImage
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-NV3F44FL.js";
|
|
20
20
|
import {
|
|
21
21
|
noteInteraction
|
|
22
22
|
} from "./chunk-KW7NOTN6.js";
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
import {
|
|
34
34
|
KittySequenceOverflowEvent,
|
|
35
35
|
logKittySequenceOverflow
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-YGT2AUJ7.js";
|
|
37
37
|
import {
|
|
38
38
|
createDebugLogger
|
|
39
39
|
} from "./chunk-OIVKILPI.js";
|
|
@@ -563,7 +563,7 @@ var WorkspaceRegistrationStore = class {
|
|
|
563
563
|
return removed;
|
|
564
564
|
}
|
|
565
565
|
async update(mutate) {
|
|
566
|
-
const { atomicWriteFile } = await import("./deferred-core-runtime-
|
|
566
|
+
const { atomicWriteFile } = await import("./deferred-core-runtime-SH57E3J3.js");
|
|
567
567
|
return withInProcessLock(this.filePath, async () => {
|
|
568
568
|
const lock = await acquireFileLock(this.filePath);
|
|
569
569
|
let committed = false;
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
performStandaloneUpdate
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-RVSTTOJ4.js";
|
|
6
6
|
import {
|
|
7
7
|
updateEventEmitter
|
|
8
8
|
} from "./chunk-YAF2MQZ6.js";
|
|
9
9
|
import {
|
|
10
10
|
t
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-WP5VOXF7.js";
|
|
12
12
|
import {
|
|
13
13
|
getInstallationInfo,
|
|
14
14
|
resolveUpdateCommand
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-BIRWP6LU.js";
|
|
16
16
|
import {
|
|
17
17
|
createDebugLogger
|
|
18
18
|
} from "./chunk-OIVKILPI.js";
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
resolveSupportedLanguage
|
|
5
|
+
} from "./chunk-5EJZE3FP.js";
|
|
3
6
|
import {
|
|
4
7
|
resolveBundleDir
|
|
5
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-XX7QFP34.js";
|
|
6
9
|
import {
|
|
7
10
|
Storage
|
|
8
11
|
} from "./chunk-OIVKILPI.js";
|
|
@@ -23,125 +26,6 @@ import * as fs from "node:fs";
|
|
|
23
26
|
import * as path from "node:path";
|
|
24
27
|
import { pathToFileURL } from "node:url";
|
|
25
28
|
|
|
26
|
-
// packages/cli/src/i18n/languages.ts
|
|
27
|
-
init_esbuild_shims();
|
|
28
|
-
var SUPPORTED_LANGUAGES = [
|
|
29
|
-
{
|
|
30
|
-
code: "en",
|
|
31
|
-
id: "en-US",
|
|
32
|
-
fullName: "English",
|
|
33
|
-
nativeName: "English"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
code: "zh-TW",
|
|
37
|
-
id: "zh-TW",
|
|
38
|
-
fullName: "Traditional Chinese",
|
|
39
|
-
nativeName: "\u7E41\u9AD4\u4E2D\u6587",
|
|
40
|
-
strictParity: true
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
code: "zh",
|
|
44
|
-
id: "zh-CN",
|
|
45
|
-
fullName: "Chinese",
|
|
46
|
-
nativeName: "\u4E2D\u6587",
|
|
47
|
-
strictParity: true
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
code: "ru",
|
|
51
|
-
id: "ru-RU",
|
|
52
|
-
fullName: "Russian",
|
|
53
|
-
nativeName: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439"
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
code: "de",
|
|
57
|
-
id: "de-DE",
|
|
58
|
-
fullName: "German",
|
|
59
|
-
nativeName: "Deutsch"
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
code: "ja",
|
|
63
|
-
id: "ja-JP",
|
|
64
|
-
fullName: "Japanese",
|
|
65
|
-
nativeName: "\u65E5\u672C\u8A9E"
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
code: "pt",
|
|
69
|
-
id: "pt-BR",
|
|
70
|
-
fullName: "Portuguese",
|
|
71
|
-
nativeName: "Portugu\xEAs"
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
code: "fr",
|
|
75
|
-
id: "fr-FR",
|
|
76
|
-
fullName: "French",
|
|
77
|
-
nativeName: "Fran\xE7ais"
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
code: "ca",
|
|
81
|
-
id: "ca-ES",
|
|
82
|
-
fullName: "Catalan",
|
|
83
|
-
nativeName: "Catal\xE0"
|
|
84
|
-
}
|
|
85
|
-
];
|
|
86
|
-
function normalizeLanguageCandidate(input) {
|
|
87
|
-
return input.trim().replace(/_/g, "-").toLowerCase();
|
|
88
|
-
}
|
|
89
|
-
__name(normalizeLanguageCandidate, "normalizeLanguageCandidate");
|
|
90
|
-
function matchesLocaleToken(candidate, token) {
|
|
91
|
-
return candidate === token || candidate.startsWith(`${token}-`) || candidate.startsWith(`${token}.`) || candidate.startsWith(`${token}@`);
|
|
92
|
-
}
|
|
93
|
-
__name(matchesLocaleToken, "matchesLocaleToken");
|
|
94
|
-
function getMatchedLocaleTokenLength(candidate, language) {
|
|
95
|
-
const code = language.code.toLowerCase();
|
|
96
|
-
const id = language.id.toLowerCase();
|
|
97
|
-
if (matchesLocaleToken(candidate, id)) {
|
|
98
|
-
return id.length;
|
|
99
|
-
}
|
|
100
|
-
if (matchesLocaleToken(candidate, code)) {
|
|
101
|
-
return code.length;
|
|
102
|
-
}
|
|
103
|
-
return void 0;
|
|
104
|
-
}
|
|
105
|
-
__name(getMatchedLocaleTokenLength, "getMatchedLocaleTokenLength");
|
|
106
|
-
function resolveSupportedLanguage(input) {
|
|
107
|
-
const normalized = normalizeLanguageCandidate(input);
|
|
108
|
-
if (!normalized) {
|
|
109
|
-
return void 0;
|
|
110
|
-
}
|
|
111
|
-
let bestMatch;
|
|
112
|
-
for (const language of SUPPORTED_LANGUAGES) {
|
|
113
|
-
if (normalized === language.fullName.toLowerCase() || language.nativeName && normalized === language.nativeName.toLowerCase()) {
|
|
114
|
-
return language.code;
|
|
115
|
-
}
|
|
116
|
-
const tokenLength = getMatchedLocaleTokenLength(normalized, language);
|
|
117
|
-
if (tokenLength !== void 0 && (!bestMatch || tokenLength > bestMatch.tokenLength)) {
|
|
118
|
-
bestMatch = { code: language.code, tokenLength };
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
return bestMatch?.code;
|
|
122
|
-
}
|
|
123
|
-
__name(resolveSupportedLanguage, "resolveSupportedLanguage");
|
|
124
|
-
function getLanguageNameFromLocale(locale) {
|
|
125
|
-
const resolved = resolveSupportedLanguage(locale);
|
|
126
|
-
const lang = resolved ? SUPPORTED_LANGUAGES.find((language) => language.code === resolved) : void 0;
|
|
127
|
-
return lang?.fullName || "English";
|
|
128
|
-
}
|
|
129
|
-
__name(getLanguageNameFromLocale, "getLanguageNameFromLocale");
|
|
130
|
-
function getLanguageSettingsOptions() {
|
|
131
|
-
return [
|
|
132
|
-
{ value: "auto", label: "Auto (detect from system)" },
|
|
133
|
-
...SUPPORTED_LANGUAGES.map((l) => ({
|
|
134
|
-
value: l.code,
|
|
135
|
-
label: l.nativeName ? `${l.nativeName} (${l.fullName})` : `${l.fullName} (${l.id})`
|
|
136
|
-
}))
|
|
137
|
-
];
|
|
138
|
-
}
|
|
139
|
-
__name(getLanguageSettingsOptions, "getLanguageSettingsOptions");
|
|
140
|
-
function getSupportedLanguageIds(separator = "|") {
|
|
141
|
-
return SUPPORTED_LANGUAGES.map((l) => l.id).join(separator);
|
|
142
|
-
}
|
|
143
|
-
__name(getSupportedLanguageIds, "getSupportedLanguageIds");
|
|
144
|
-
|
|
145
29
|
// packages/cli/src/i18n/translationDict.ts
|
|
146
30
|
init_esbuild_shims();
|
|
147
31
|
function getTranslationModuleExport(module) {
|
|
@@ -484,11 +368,6 @@ function resolveLanguageSetting(settingsLanguage) {
|
|
|
484
368
|
__name(resolveLanguageSetting, "resolveLanguageSetting");
|
|
485
369
|
|
|
486
370
|
export {
|
|
487
|
-
SUPPORTED_LANGUAGES,
|
|
488
|
-
resolveSupportedLanguage,
|
|
489
|
-
getLanguageNameFromLocale,
|
|
490
|
-
getLanguageSettingsOptions,
|
|
491
|
-
getSupportedLanguageIds,
|
|
492
371
|
MUST_TRANSLATE_KEYS,
|
|
493
372
|
getUserLocalesDirectory,
|
|
494
373
|
detectSystemLanguage,
|
|
@@ -503,11 +382,11 @@ export {
|
|
|
503
382
|
};
|
|
504
383
|
/**
|
|
505
384
|
* @license
|
|
506
|
-
* Copyright
|
|
385
|
+
* Copyright 2026 Qwen Team
|
|
507
386
|
* SPDX-License-Identifier: Apache-2.0
|
|
508
387
|
*/
|
|
509
388
|
/**
|
|
510
389
|
* @license
|
|
511
|
-
* Copyright
|
|
390
|
+
* Copyright 2025 Qwen team
|
|
512
391
|
* SPDX-License-Identifier: Apache-2.0
|
|
513
392
|
*/
|