@qwen-code/qwen-code 0.21.13 → 0.21.14
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 +13 -7
- package/bundled/qc-helper/docs/features/code-review.md +5 -1
- package/bundled/qc-helper/docs/features/commands.md +120 -8
- package/bundled/qc-helper/docs/features/sub-agents.md +2 -2
- package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve.md +20 -3
- package/bundled/review/SKILL.md +50 -30
- package/chunks/{MaxSizedBox-UQALOVVT.js → MaxSizedBox-67IDQILY.js} +24 -23
- package/chunks/{StandaloneSessionPicker-KEGXNUG6.js → StandaloneSessionPicker-G4QJIRMH.js} +41 -40
- package/chunks/{acp-startup-profiler-NMDXYGDN.js → acp-startup-profiler-HUYGO57H.js} +2 -2
- package/chunks/{acpAgent-XPES32S7.js → acpAgent-BS3YYO33.js} +626 -141
- package/chunks/{agent-DPTOZFEM.js → agent-EHHEXKWN.js} +22 -21
- package/chunks/{agent-headless-GJCQMURW.js → agent-headless-UT2ZF76T.js} +22 -21
- package/chunks/{anthropicContentGenerator-G7BVXTKN.js → anthropicContentGenerator-M7XRJMSK.js} +3 -3
- package/chunks/{bridge-YNQBAA4Z.js → bridge-WQ4IL2RF.js} +26 -25
- package/chunks/{ca-4CQ6MYNQ.js → ca-SLZJD6QH.js} +8 -0
- package/chunks/{channel-management-service-GWY2GAIC.js → channel-management-service-X6LCQUAD.js} +1 -1
- package/chunks/{channel-settings-store-WNWYFHG7.js → channel-settings-store-ZDFXY7VY.js} +30 -29
- package/chunks/{channel-worker-group-7LXCMZ77.js → channel-worker-group-TJ35JDPE.js} +2 -2
- package/chunks/{channel-worker-manager-RYEME4ZZ.js → channel-worker-manager-G5LKWGOG.js} +2 -2
- package/chunks/{chunk-4PKCUT7F.js → chunk-2A6VQJYK.js} +6 -6
- package/chunks/chunk-2C6HJMG3.js +757 -0
- package/chunks/chunk-3PWCMXIR.js +9169 -0
- package/chunks/{chunk-BVJS5BSP.js → chunk-3PWNVF6N.js} +1 -1
- package/chunks/{chunk-X26JYGTD.js → chunk-3SL2P3WX.js} +1 -1
- package/chunks/{chunk-ZYBBISBY.js → chunk-3YRVPHT3.js} +15 -12
- package/chunks/{chunk-AS5IN4GK.js → chunk-47L5MLB5.js} +3 -3
- package/chunks/{chunk-3U3VAL47.js → chunk-4SR45OM4.js} +1 -1
- package/chunks/{chunk-OMLJNPBE.js → chunk-4ZMS3JCR.js} +1 -0
- package/chunks/{chunk-UKMR3CKV.js → chunk-4ZS3BLER.js} +3 -3
- package/chunks/{chunk-5EYKMUUY.js → chunk-544KT7X4.js} +1 -1
- package/chunks/{chunk-TUGSVUJB.js → chunk-55VKMB7X.js} +5 -5
- package/chunks/{chunk-GO7STP6N.js → chunk-5IJSFWQO.js} +4 -4
- package/chunks/{chunk-A4QRWUDE.js → chunk-5IYS4WWR.js} +1 -1
- package/chunks/{chunk-TS6625XH.js → chunk-5MK45KZ3.js} +9 -5
- package/chunks/{chunk-MLPXSYXR.js → chunk-6BJSYAML.js} +25 -16
- package/chunks/{chunk-V57QC6WW.js → chunk-6LAPGPVA.js} +5 -3
- package/chunks/{chunk-NNHNLJ2X.js → chunk-6RDZLBSJ.js} +240 -42
- package/chunks/{chunk-ZZO74WKW.js → chunk-73JUK3ZW.js} +24 -18
- package/chunks/{chunk-N5YPT6PH.js → chunk-7VNHO4MN.js} +7 -4
- package/chunks/{chunk-OVZPVYZB.js → chunk-AKBOLMUF.js} +95 -17
- package/chunks/{chunk-NHDR76JX.js → chunk-BQWNIPTE.js} +1 -1
- package/chunks/{chunk-IWPYVAO2.js → chunk-C3T6M24E.js} +2 -2
- package/chunks/{chunk-NM5V5OVW.js → chunk-CEXU72GE.js} +2 -2
- package/chunks/{chunk-AA2BEKV3.js → chunk-CH5OFRV7.js} +1 -1
- package/chunks/{chunk-MS7GNABG.js → chunk-CXJHQVEK.js} +8 -0
- package/chunks/{chunk-E23IPNGS.js → chunk-CZK622ZK.js} +12 -3
- package/chunks/{chunk-K5IDV3PC.js → chunk-D34RDOLP.js} +12 -2
- package/chunks/{chunk-OXCMMLED.js → chunk-DGJ7O55J.js} +1 -1
- package/chunks/{chunk-DGK6P3BQ.js → chunk-DHUPMYMC.js} +10 -10
- package/chunks/{chunk-O4D7SPJN.js → chunk-DRAONPUW.js} +3 -3
- package/chunks/{chunk-P7MPQI75.js → chunk-DVR7XKO5.js} +1 -1
- package/chunks/{chunk-PP4FUZNV.js → chunk-E5WQMF3K.js} +2 -2
- package/chunks/{chunk-4NFY2S7N.js → chunk-E7REAOTN.js} +15 -0
- package/chunks/{chunk-ZYYTZUI2.js → chunk-EOPBFLA5.js} +3 -3
- package/chunks/{chunk-OOQUVWIG.js → chunk-FN6M5WUL.js} +4 -4
- package/chunks/{chunk-DGZEMW5R.js → chunk-FS5NGKWC.js} +1 -1
- package/chunks/{chunk-MRMJCLIY.js → chunk-G6KI5UOJ.js} +2 -2
- package/chunks/{chunk-6ORZ2EDC.js → chunk-H3SHU2XU.js} +1 -1
- package/chunks/{chunk-GMIEIY3Y.js → chunk-I3N2Z25H.js} +1 -1
- package/chunks/{chunk-BHILXOC3.js → chunk-J63PKMYA.js} +1 -1
- package/chunks/{chunk-KD5BOPLP.js → chunk-J6YS7Z25.js} +98 -4
- package/chunks/chunk-K2Y45XXS.js +3887 -0
- package/chunks/{chunk-RVOJ2FBP.js → chunk-KC4WMLZO.js} +1486 -10574
- package/chunks/{chunk-LJQAUZMR.js → chunk-L3T4V5GZ.js} +925 -92
- package/chunks/{chunk-M6NDLY2T.js → chunk-LD5VIJ7S.js} +1 -1
- package/chunks/{chunk-RIAABG2K.js → chunk-LSO6EL4Y.js} +1 -1
- package/chunks/{chunk-XHRY7BXD.js → chunk-MDIGJH5X.js} +3 -3
- package/chunks/{chunk-MC4TLKEI.js → chunk-MVHJZ3FZ.js} +2 -2
- package/chunks/{chunk-YEYY7TEP.js → chunk-N6RSOOWJ.js} +5 -5
- package/chunks/{chunk-OD2WU5QY.js → chunk-NRPXRNN4.js} +1 -1
- package/chunks/{chunk-CKSJECTU.js → chunk-NVRMCWTP.js} +8 -4
- package/chunks/{chunk-Y3YCSWG5.js → chunk-OBJYN4MX.js} +1 -1
- package/chunks/{chunk-GGDBMYGZ.js → chunk-OEYAK5O6.js} +3 -3
- package/chunks/{chunk-6YKYPVDV.js → chunk-OEZCXK7Y.js} +3 -3
- package/chunks/{chunk-4S5337WV.js → chunk-OFTPCOGR.js} +4312 -2704
- package/chunks/{chunk-7UXUJ5T3.js → chunk-OJB5FYVK.js} +1 -1
- package/chunks/{chunk-WFSTRPRO.js → chunk-OJOP26ET.js} +1 -1
- package/chunks/{chunk-TIGA2IVL.js → chunk-OO4FKHLO.js} +2 -2
- package/chunks/{chunk-BZ263IKX.js → chunk-OVY67CYC.js} +1 -1
- package/chunks/{chunk-PQ36L4F5.js → chunk-P3AA6S7O.js} +1 -1
- package/chunks/{chunk-CU6GJD55.js → chunk-PCETXVVV.js} +1 -1
- package/chunks/{chunk-AFSG32D5.js → chunk-PHN4R2ZV.js} +1 -1
- package/chunks/{chunk-QF2NHSPB.js → chunk-PJSD2FOR.js} +233 -184
- package/chunks/{chunk-NEFOOD54.js → chunk-QAVTWAHL.js} +2 -2
- package/chunks/{chunk-AW4TRXOC.js → chunk-QEHH23OM.js} +1 -1
- package/chunks/{chunk-CZBYX5MY.js → chunk-QEJZUXSK.js} +1 -1
- package/chunks/{chunk-XIT3GURH.js → chunk-QRVHGEVY.js} +3 -3
- package/chunks/{chunk-M732YJPW.js → chunk-RXHBTKMG.js} +2 -2
- package/chunks/{chunk-JOOFMXGF.js → chunk-S7N3HUIB.js} +5 -5
- package/chunks/{chunk-76J3IJ3M.js → chunk-SCZU65AI.js} +3 -3
- package/chunks/{chunk-QIH2HAEN.js → chunk-SFJMFZT5.js} +1 -1
- package/chunks/{chunk-JNDY2MDR.js → chunk-SFTKAX4O.js} +1 -1
- package/chunks/{chunk-WSH6GRKG.js → chunk-SLILKYV2.js} +2 -2
- package/chunks/{chunk-DXIBNLBZ.js → chunk-SNQZZ765.js} +1 -1
- package/chunks/{chunk-V26NVGAU.js → chunk-TSMPNGBC.js} +8 -3
- package/chunks/{chunk-QV5YN5YD.js → chunk-U657UZJN.js} +5 -5
- package/chunks/{chunk-QNQAPSN2.js → chunk-UC67T4SF.js} +3 -1
- package/chunks/{chunk-O565M6A4.js → chunk-UYDGFWIJ.js} +199 -14
- package/chunks/{chunk-OY5RNSV4.js → chunk-V6WEMZPD.js} +3 -3
- package/chunks/{chunk-A267JX7H.js → chunk-VFP5YOHJ.js} +6 -6
- package/chunks/{chunk-HUTNYWBG.js → chunk-VTOLYFWM.js} +18 -10
- package/chunks/{chunk-EZ5RP345.js → chunk-W7EYJGN7.js} +40 -9
- package/chunks/{chunk-BKPPWD33.js → chunk-WAO53ZQF.js} +1 -1
- package/chunks/{chunk-S5DWMTHO.js → chunk-WP4WIUOJ.js} +2 -0
- package/chunks/{chunk-25EYDK42.js → chunk-WPVUOVYX.js} +1 -1
- package/chunks/{chunk-AXN7UPYQ.js → chunk-WSSH2BNO.js} +1 -1
- package/chunks/chunk-WZAD4ZNJ.js +59 -0
- package/chunks/{chunk-JUEPY766.js → chunk-XITLNXLX.js} +2 -2
- package/chunks/{chunk-EL5SXY3T.js → chunk-XT4RKHVE.js} +2 -2
- package/chunks/{chunk-IGGGG5CX.js → chunk-XYRBK56E.js} +4635 -1655
- package/chunks/{chunk-UZPM4XHR.js → chunk-Y4RVDOXV.js} +29 -8
- package/chunks/{chunk-QRCNA3SR.js → chunk-Y7QY6DKW.js} +49 -69
- package/chunks/{chunk-FDGGZIYW.js → chunk-YECDICIO.js} +2 -2
- package/chunks/{chunk-46UV252V.js → chunk-YHC2EYYG.js} +35 -38
- package/chunks/{chunk-U3VNBPUO.js → chunk-YHXQK4SR.js} +2 -2
- package/chunks/{chunk-A4MFR4C5.js → chunk-ZIGC3MUS.js} +2 -4
- package/chunks/{computer-use-77C5FHMW.js → computer-use-YORZJQE5.js} +22 -21
- package/chunks/{config-utils-IVHRSXWI.js → config-utils-NJQA5YLJ.js} +2 -2
- package/chunks/{contextCommand-PJ77GBWL.js → contextCommand-PACHGIF4.js} +24 -23
- package/chunks/{core-runtime-7VMIKUTG.js → core-runtime-6HD5DSPX.js} +22 -21
- package/chunks/{create-sub-session-2L5MQRN4.js → create-sub-session-IQFIPUQA.js} +26 -24
- package/chunks/{cron-create-H7UEPDSN.js → cron-create-NFRZEOQX.js} +2 -2
- package/chunks/{cron-delete-6SZK7YFM.js → cron-delete-GFVSVO7C.js} +2 -2
- package/chunks/{cron-list-H25JIHEZ.js → cron-list-NRW34CLU.js} +2 -2
- package/chunks/{daemon-2KTG7ZBN.js → daemon-XH76IXOC.js} +356 -21
- package/chunks/{daemon-git-worktree-guard-DXYIMWFT.js → daemon-git-worktree-guard-6P27GKSU.js} +24 -23
- package/chunks/{daemon-status-provider-ZDOYJCU6.js → daemon-status-provider-SXS66ZIR.js} +31 -30
- package/chunks/{daemon-trust-policy-E67OYUK2.js → daemon-trust-policy-5QJHAS3N.js} +29 -28
- package/chunks/{daemon-trust-policy-monitor-RYYGCQ3J.js → daemon-trust-policy-monitor-JA2WZRZ3.js} +29 -28
- package/chunks/{de-UBEBKG6V.js → de-AH4LGCF5.js} +8 -0
- package/chunks/{deferred-core-runtime-3SGXFXEQ.js → deferred-core-runtime-R2VWOVG3.js} +22 -21
- package/chunks/{discovery-ORA5J7YP.js → discovery-X2NV535U.js} +1 -1
- package/chunks/{dist-WJ4BHIEW.js → dist-ESS34DHC.js} +72 -0
- package/chunks/{earlyInputCapture-KJMLFVQV.js → earlyInputCapture-PQEEOFKJ.js} +22 -21
- package/chunks/{edit-I4LQFAEC.js → edit-RASZHTU2.js} +25 -23
- package/chunks/{en-X6YV7GME.js → en-MD3GP5YL.js} +8 -0
- package/chunks/{enter-worktree-YNPOJSRH.js → enter-worktree-CH5OMHJE.js} +22 -21
- package/chunks/{enterPlanMode-XCPK62ER.js → enterPlanMode-AQKR3CAH.js} +22 -21
- package/chunks/{environment-S7CTIHMX.js → environment-7QRYIEBA.js} +25 -24
- package/chunks/{errors-7HB2AIDS.js → errors-P2LL5452.js} +24 -23
- package/chunks/{exit-worktree-AIIY7SR6.js → exit-worktree-WUDL26CY.js} +22 -21
- package/chunks/{exitPlanMode-R4JY7V2O.js → exitPlanMode-JM75SAUI.js} +22 -21
- package/chunks/{fast-path-NDJV3ZFJ.js → fast-path-KVNSOHVA.js} +3 -3
- package/chunks/{fast-path-settings-LNOFM2YP.js → fast-path-settings-WHX3J3ZI.js} +2 -2
- package/chunks/{fr-VENTC2BS.js → fr-ZEML2JWS.js} +8 -0
- package/chunks/{gemini-RSUFP5OE.js → gemini-ADMD2EOS.js} +62 -61
- package/chunks/{geminiContentGenerator-SQ5XBPZ7.js → geminiContentGenerator-CS3M7SOS.js} +3 -3
- package/chunks/{glob-J4RUJAHX.js → glob-WIJOGYVV.js} +22 -21
- package/chunks/{goal-tools-VHTNVOKK.js → goal-tools-K5OHOJ6B.js} +1 -1
- package/chunks/{grep-VJWPLFOT.js → grep-CIFRQBR7.js} +22 -21
- package/chunks/{handleAutoUpdate-POCX2MNB.js → handleAutoUpdate-KJ4SN7DM.js} +26 -25
- package/chunks/{i18n-RM5YOICI.js → i18n-36SZUO4C.js} +23 -22
- package/chunks/{image-gen-EXECB5XM.js → image-gen-R4B5VUYB.js} +2 -2
- package/chunks/{initializer-Z2AFGBNR.js → initializer-CW5YCAOL.js} +29 -28
- package/chunks/{installationInfo-4I5FXNMH.js → installationInfo-NMQIOUGY.js} +23 -22
- package/chunks/{ja-QHT4EQTO.js → ja-UM5B2HMD.js} +8 -0
- package/chunks/{list-ZMBFIGZA.js → list-HHGT3S4P.js} +32 -31
- package/chunks/{loadedSettingsAdapter-T6TV4YJ7.js → loadedSettingsAdapter-SJ2MJF35.js} +29 -28
- package/chunks/{loggingContentGenerator-WF4ZOJEZ.js → loggingContentGenerator-GR2QQ2C5.js} +12 -10
- package/chunks/{loop-wakeup-WQS6JYAG.js → loop-wakeup-HWVUU5CF.js} +3 -3
- package/chunks/{managed-npm-update-E7IW6N7V.js → managed-npm-update-ADQJHKTO.js} +23 -22
- package/chunks/{mcp-6UNYX4HG.js → mcp-QW3OTL5W.js} +29 -28
- package/chunks/{monitor-EE2UYMGE.js → monitor-RJKPVERH.js} +22 -21
- package/chunks/{nonInteractiveCli-WAY237O4.js → nonInteractiveCli-MROMHSTL.js} +59 -57
- package/chunks/{notebook-edit-NTDY4QDU.js → notebook-edit-2ENWDBZO.js} +26 -24
- package/chunks/{openaiContentGenerator-YNFVJMRJ.js → openaiContentGenerator-Z3GPWJU4.js} +12 -11
- package/chunks/{pidfile-4XSFLYBZ.js → pidfile-5G42YSTP.js} +22 -21
- package/chunks/{processUtils-WDA2MJFD.js → processUtils-ZDMXYKQY.js} +2 -2
- package/chunks/{pt-VL3I5RNY.js → pt-5BMJ3XYH.js} +8 -0
- package/chunks/{qwenContentGenerator-434M7QKY.js → qwenContentGenerator-NLEMBZVU.js} +25 -24
- package/chunks/{qwenOAuth2-GMYZOO6A.js → qwenOAuth2-EBV52DWJ.js} +3 -3
- package/chunks/{read-file-TAFBKMNI.js → read-file-5BYIF53O.js} +9 -7
- package/chunks/{record-artifact-SEYFJEJF.js → record-artifact-GLU3UWBV.js} +3 -1
- package/chunks/{resumeHistoryUtils-EVG3WYK2.js → resumeHistoryUtils-AFTBRS3G.js} +25 -24
- package/chunks/{ripGrep-WOEK2PXS.js → ripGrep-NN7AOLQY.js} +22 -21
- package/chunks/{ru-4RCKL4PY.js → ru-6GL66ORV.js} +8 -0
- package/chunks/{run-qwen-serve-3QSGRXAN.js → run-qwen-serve-UR3DYDAF.js} +49 -40
- package/chunks/{runtime-5MLLZ7DC.js → runtime-PR5RKGNH.js} +32 -31
- package/chunks/{scheduler-RPBJ63CH.js → scheduler-GPMLVKJM.js} +24 -23
- package/chunks/{sdk-exporters-http-XUVP63H6.js → sdk-exporters-http-NC746HLT.js} +2 -2
- package/chunks/{sdk-impl-YXUEN2Z2.js → sdk-impl-YVL7BP6Y.js} +2 -2
- package/chunks/{send-message-VZENRWRH.js → send-message-TNBG5EVA.js} +1 -1
- package/chunks/{serve-HS3XLPXU.js → serve-E7V2JVA2.js} +29 -30
- package/chunks/{server-TC4A7AAZ.js → server-YXB3DBN7.js} +1267 -165
- package/chunks/{session-UBOFXVMN.js → session-DZEAUT7S.js} +60 -58
- package/chunks/{settings-D5644OM5.js → settings-ESZ3NWAP.js} +28 -27
- package/chunks/{shell-3PZULQQV.js → shell-JMSK5WIL.js} +22 -21
- package/chunks/{skill-PEVVXQ3L.js → skill-5K5CSUJV.js} +11 -9
- package/chunks/{skill-settings-J65JKKES.js → skill-settings-V64NIOTI.js} +28 -27
- package/chunks/{spawnChannel-IYGXRHSQ.js → spawnChannel-S63APBZZ.js} +24 -23
- package/chunks/{standalone-update-IFM53PE7.js → standalone-update-P42HDFXX.js} +24 -23
- package/chunks/{startInteractiveUI-3AVH7L6H.js → startInteractiveUI-LFBLFHJ4.js} +262 -191
- package/chunks/{task-create-FCBDX7UH.js → task-create-EILHJJB7.js} +4 -4
- package/chunks/{task-list-YIYIUFUA.js → task-list-WGJR6YL5.js} +18 -4
- package/chunks/{task-update-MYPFVOVM.js → task-update-XZAHVXJ5.js} +79 -8
- package/chunks/{team-create-ZAIA7KAV.js → team-create-EDNOUM2U.js} +23 -23
- package/chunks/{team-delete-6UMU4XLS.js → team-delete-UEP4QOOT.js} +3 -3
- package/chunks/{team-plan-approval-UNIUS7OD.js → team-plan-approval-QRSNK2DX.js} +22 -21
- package/chunks/{terminal-image-renderer-G343P2RV.js → terminal-image-renderer-6J2NPL32.js} +22 -21
- package/chunks/{theme-manager-Z3RIT7DB.js → theme-manager-WJMLRBXS.js} +22 -21
- package/chunks/{todoWrite-U2R4NVF4.js → todoWrite-ATS62CAP.js} +1 -1
- package/chunks/{tool-search-5R2OE4C7.js → tool-search-MZ6WU7DM.js} +9 -7
- package/chunks/{total-session-admission-4KBHMQQ2.js → total-session-admission-DQVW2LIP.js} +26 -25
- package/chunks/{trustedFolders-LK6T4XC7.js → trustedFolders-QMH25GOX.js} +23 -22
- package/chunks/{update-relaunch-UBKROIC6.js → update-relaunch-EG75LLW5.js} +5 -5
- package/chunks/{updateCheck-W4Y2GFSD.js → updateCheck-MTZIVGT5.js} +25 -24
- package/chunks/{useAutoAcceptIndicator-C7BEICBF.js → useAutoAcceptIndicator-IGCW5EPO.js} +31 -30
- package/chunks/{validateNonInterActiveAuth-LTEI2TB6.js → validateNonInterActiveAuth-D5FPAB2C.js} +56 -54
- package/chunks/{version-G5A5DGVS.js → version-UOLDLLRB.js} +1 -1
- package/chunks/{web-fetch-RTEQTR5Z.js → web-fetch-QKKW6CWH.js} +11 -8
- package/chunks/{web-search-5OXHEZPV.js → web-search-JYRBZMCW.js} +2 -2
- package/chunks/{workflow-ISQJHPG2.js → workflow-SR7SEAU7.js} +139 -37
- package/chunks/{workspace-providers-status-2ZPZPUPZ.js → workspace-providers-status-OXGV4EFF.js} +32 -31
- package/chunks/{workspace-registration-store-CYNY6IP6.js → workspace-registration-store-V5EGKLBH.js} +1 -1
- package/chunks/{workspace-registry-34GTUUHB.js → workspace-registry-KJVIYTF5.js} +26 -25
- package/chunks/{workspace-service-XCDQLE2Y.js → workspace-service-6RLSGUB5.js} +33 -32
- package/chunks/{workspace-skills-status-RS4O7AIJ.js → workspace-skills-status-BHFEPDGH.js} +30 -29
- package/chunks/{workspace-trust-reconciler-AYGXC7A3.js → workspace-trust-reconciler-DB5ERSUN.js} +33 -32
- package/chunks/{write-file-EWXKVVXF.js → write-file-IUP4GTZ4.js} +22 -21
- package/chunks/{zh-TW-SQ4HTSCW.js → zh-TW-LVLBK4KF.js} +8 -0
- package/chunks/{zh-LMSTK4WD.js → zh-UBMWS2BJ.js} +8 -0
- package/chunks/{zoom-image-4BFYJ3HG.js → zoom-image-SRBDTIVA.js} +14 -11
- package/cli.js +13 -13
- package/locales/ca.js +13 -0
- package/locales/de.js +12 -0
- package/locales/en.js +11 -0
- package/locales/fr.js +13 -0
- package/locales/ja.js +13 -0
- package/locales/pt.js +12 -0
- package/locales/ru.js +12 -0
- package/locales/zh-TW.js +11 -0
- package/locales/zh.js +11 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-CgOpDKvm.js → arc-DItbX0DI.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-0Ag_m34F.js → architectureDiagram-3BPJPVTR-CmnIlH8y.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-IwTwFau0.js → blockDiagram-GPEHLZMM-pObnB9kw.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-DLa5GUv8.js → c4Diagram-AAUBKEIU-BNBmMS0Y.js} +1 -1
- package/web-shell/assets/channel-hZnMfWA9.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-DcYP-WFG.js → chunk-2J33WTMH-Dz4JBOO6.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-C8MVPMiQ.js → chunk-4BX2VUAB-Cz2GnvAR.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-BUi4Yfv3.js → chunk-55IACEB6-CC6kOQYx.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-Cy3Su2YY.js → chunk-727SXJPM-Z4lY4gbh.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-Dp8Teqv6.js → chunk-AQP2D5EJ-Yz0hZr3D.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-BDTDM-4j.js → chunk-FMBD7UC4-nKmTWTv9.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-7HfDt0r2.js → chunk-ND2GUHAM-CjZz0f6Y.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-BIBU0uCF.js → chunk-QZHKN3VN-Bab3FpuS.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BRnxm8DX.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BRnxm8DX.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-DRLdcg9p.js → cose-bilkent-S5V4N54A-BuSAGFox.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-DCCgDwqW.js → dagre-BM42HDAG-CRZXTg3g.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-CsBTBmk3.js → diagram-2AECGRRQ-BFx1Ayrz.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-C9qjH8Lt.js → diagram-5GNKFQAL-B2hMZ3gS.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-Brjs_lj2.js → diagram-KO2AKTUF-DKxAQLmc.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-DtiWCl_F.js → diagram-LMA3HP47-Bo1xGqVY.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-DmfKLkBT.js → diagram-OG6HWLK6-B9NG78d-.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-Bve_4deH.js → erDiagram-TEJ5UH35-DltQKiqQ.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-C2_kXCcV.js → flowDiagram-I6XJVG4X-5xXGmS4I.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BSBIjiTF.js → ganttDiagram-6RSMTGT7-bhGL5n0l.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CyebwI55.js → gitGraphDiagram-PVQCEYII-ZYnz9hgh.js} +1 -1
- package/web-shell/assets/{index-d0yfnV1M.js → index-CBBeUArD.js} +1 -1
- package/web-shell/assets/index-CbgU-jUo.css +5 -0
- package/web-shell/assets/index-_nhzXqab.js +1750 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-CSDGnWxU.js → infoDiagram-5YYISTIA-Cg-jamQf.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BK4jU13p.js → ishikawaDiagram-YF4QCWOH-CcmvKlyq.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-D_W6j-oF.js → journeyDiagram-JHISSGLW-BRsOQZp1.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-C7xf-SdC.js → kanban-definition-UN3LZRKU-xW-dmEHK.js} +1 -1
- package/web-shell/assets/{linear-DQmzxpxd.js → linear-ClBfEZH2.js} +1 -1
- package/web-shell/assets/{mermaid.core-9P7AGOLG.js → mermaid.core-D65NDkzc.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-DgcgMyPk.js → mindmap-definition-RKZ34NQL-CyvFslYa.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-3wWGb9eG.js → pieDiagram-4H26LBE5-BwSefMyG.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BeCXnQw9.js → quadrantDiagram-W4KKPZXB-GqBJspFS.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-Bi1UOHDz.js → requirementDiagram-4Y6WPE33-B137PlTJ.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-lrLUjjbb.js → sankeyDiagram-5OEKKPKP-maHkkt8i.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-BFuqKz6Q.js → sequenceDiagram-3UESZ5HK-DJ1mRaG3.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-8DemQLhu.js → stateDiagram-AJRCARHV-aRmP7Q4i.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-Db39gvZ_.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-uzEuVQXg.js → timeline-definition-PNZ67QCA-CIQ3BRPA.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BQTeZ_-o.js → vennDiagram-CIIHVFJN-DR9VPd5h.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-B6yM5Im7.js → wardley-L42UT6IY-ZcfIbT4D.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-ChM8bmgn.js → wardleyDiagram-YWT4CUSO-D0jgPi4T.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-oNG6HyB1.js → xychartDiagram-2RQKCTM6-BGWU4s5o.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-MPHPFVKK.js +0 -48
- package/chunks/chunk-RLKC46YT.js +0 -3582
- package/chunks/chunk-UPDOZBWO.js +0 -358
- package/web-shell/assets/channel-BrGVBa2L.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-B5TUzJzI.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B5TUzJzI.js +0 -1
- package/web-shell/assets/index-CIDsgxTe.js +0 -1792
- package/web-shell/assets/index-DiQnWi_E.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DhM5ixYd.js +0 -1
- /package/chunks/{chunk-NTTBXH7U.js → chunk-UGK4K2N2.js} +0 -0
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
} from "./chunk-3Z43GZUQ.js";
|
|
9
9
|
import {
|
|
10
10
|
t
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-VTOLYFWM.js";
|
|
12
12
|
import {
|
|
13
13
|
So
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-OFTPCOGR.js";
|
|
15
15
|
import {
|
|
16
16
|
createDebugLogger
|
|
17
17
|
} from "./chunk-BUQDLC2G.js";
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
getUserSettingsPath,
|
|
5
5
|
v1ToV2Migration
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-VFP5YOHJ.js";
|
|
7
7
|
import {
|
|
8
8
|
getSystemDefaultsPath,
|
|
9
9
|
getSystemSettingsPath
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
TrustLevel,
|
|
14
14
|
getExplicitTrustLevel,
|
|
15
15
|
getTrustedFoldersPath
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-C3T6M24E.js";
|
|
17
17
|
import {
|
|
18
18
|
require_strip_json_comments
|
|
19
19
|
} from "./chunk-NPQ5ZKRP.js";
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
} from "./chunk-MR3PXB6E.js";
|
|
23
23
|
import {
|
|
24
24
|
ideContextStore
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-OFTPCOGR.js";
|
|
26
26
|
import {
|
|
27
27
|
init_esbuild_shims
|
|
28
28
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
MODIFIER_SHIFT_BIT,
|
|
17
17
|
MODIFIER_SUPER_BIT,
|
|
18
18
|
clipboardHasImage
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-SNQZZ765.js";
|
|
20
20
|
import {
|
|
21
21
|
require_jsx_runtime
|
|
22
22
|
} from "./chunk-SV5PQVQE.js";
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
import {
|
|
34
34
|
KittySequenceOverflowEvent,
|
|
35
35
|
logKittySequenceOverflow
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-KC4WMLZO.js";
|
|
37
37
|
import {
|
|
38
38
|
createDebugLogger
|
|
39
39
|
} from "./chunk-BUQDLC2G.js";
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
loadSettings
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-VFP5YOHJ.js";
|
|
6
6
|
import {
|
|
7
7
|
getCurrentLanguage
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-VTOLYFWM.js";
|
|
9
9
|
import {
|
|
10
10
|
isWorkspaceTrusted
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-C3T6M24E.js";
|
|
12
12
|
import {
|
|
13
13
|
require_strip_json_comments
|
|
14
14
|
} from "./chunk-NPQ5ZKRP.js";
|
|
@@ -23,10 +23,10 @@ import {
|
|
|
23
23
|
isGatedMcpScope,
|
|
24
24
|
normalizeClaudeMcpServer,
|
|
25
25
|
runWithTimeout
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-OFTPCOGR.js";
|
|
27
27
|
import {
|
|
28
28
|
atomicWriteFile
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-YECDICIO.js";
|
|
30
30
|
import {
|
|
31
31
|
Storage,
|
|
32
32
|
getErrorMessage
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
t
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-VTOLYFWM.js";
|
|
6
6
|
import {
|
|
7
7
|
SessionReferenceService,
|
|
8
8
|
SessionService,
|
|
9
9
|
readManyFiles,
|
|
10
10
|
stripTerminalControlSequences
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-OFTPCOGR.js";
|
|
12
12
|
import {
|
|
13
13
|
emptyMcpResourceText,
|
|
14
14
|
formatMcpResourceContents,
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
} from "./chunk-ZPJWUGCS.js";
|
|
17
17
|
import {
|
|
18
18
|
shouldRunVisionBridge
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-KC4WMLZO.js";
|
|
20
20
|
import {
|
|
21
21
|
Storage,
|
|
22
22
|
getErrorMessage,
|
|
@@ -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-R2VWOVG3.js");
|
|
567
567
|
return withInProcessLock(this.filePath, async () => {
|
|
568
568
|
const lock = await acquireFileLock(this.filePath);
|
|
569
569
|
let committed = false;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
getInboxesDir
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-AKBOLMUF.js";
|
|
6
6
|
import {
|
|
7
7
|
require_proper_lockfile
|
|
8
8
|
} from "./chunk-MLXTMF7H.js";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
} from "./chunk-VGC4I5JJ.js";
|
|
12
12
|
import {
|
|
13
13
|
atomicWriteJSON
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-YECDICIO.js";
|
|
15
15
|
import {
|
|
16
16
|
createDebugLogger,
|
|
17
17
|
isNodeError
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
BaseJsonOutputAdapter
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-Y4RVDOXV.js";
|
|
6
|
+
import {
|
|
7
|
+
observeHeadlessJsonToolResultWire
|
|
8
|
+
} from "./chunk-K2Y45XXS.js";
|
|
6
9
|
import {
|
|
7
10
|
init_esbuild_shims
|
|
8
11
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -58,8 +61,10 @@ var JsonOutputAdapter = class extends BaseJsonOutputAdapter {
|
|
|
58
61
|
}
|
|
59
62
|
} else {
|
|
60
63
|
const json = JSON.stringify(this.messages);
|
|
61
|
-
|
|
62
|
-
|
|
64
|
+
const frame = `${json}
|
|
65
|
+
`;
|
|
66
|
+
observeHeadlessJsonToolResultWire(this.messages, frame);
|
|
67
|
+
process.stdout.write(frame);
|
|
63
68
|
}
|
|
64
69
|
}
|
|
65
70
|
emitMessage(message) {
|
|
@@ -5,26 +5,26 @@ import {
|
|
|
5
5
|
} from "./chunk-57OAHC2Y.js";
|
|
6
6
|
import {
|
|
7
7
|
loadSettings
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-VFP5YOHJ.js";
|
|
9
9
|
import {
|
|
10
10
|
getCurrentLanguage,
|
|
11
11
|
t
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-VTOLYFWM.js";
|
|
13
13
|
import {
|
|
14
14
|
isWorkspaceTrusted
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-C3T6M24E.js";
|
|
16
16
|
import {
|
|
17
17
|
ExtensionManager,
|
|
18
18
|
getExtensionDescription,
|
|
19
19
|
getExtensionDisplayName,
|
|
20
20
|
require_prompts
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-OFTPCOGR.js";
|
|
22
22
|
import {
|
|
23
23
|
stripAnsi
|
|
24
24
|
} from "./chunk-TWPJO254.js";
|
|
25
25
|
import {
|
|
26
26
|
redactUrlCredentials
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-XT4RKHVE.js";
|
|
28
28
|
import {
|
|
29
29
|
writeStdoutLine
|
|
30
30
|
} from "./chunk-KGJGEEVR.js";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
SkillError
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-WPVUOVYX.js";
|
|
6
6
|
import {
|
|
7
7
|
init_esbuild_shims
|
|
8
8
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -130,6 +130,8 @@ var SERVE_CONTROL_EXT_METHODS = {
|
|
|
130
130
|
sessionGoalGet: "qwen/control/session/goal/get",
|
|
131
131
|
sessionMcpRuntimeAdd: "qwen/control/session/mcp/runtime-add",
|
|
132
132
|
sessionMcpRuntimeRemove: "qwen/control/session/mcp/runtime-remove",
|
|
133
|
+
/** Read a bounded settled `turn_result` from the active transcript. */
|
|
134
|
+
sessionTurnStatus: "qwen/control/session/turn_status",
|
|
133
135
|
workspaceMcpRuntimeAdd: "qwen/control/workspace/mcp/runtime-add",
|
|
134
136
|
workspaceMcpRuntimeRemove: "qwen/control/workspace/mcp/runtime-remove",
|
|
135
137
|
workspaceReload: "qwen/control/workspace/reload",
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
} from "./chunk-NYWWQ437.js";
|
|
18
18
|
import {
|
|
19
19
|
CLIENT_MCP_OVER_WS_CONFIG_FLAG
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-WP4WIUOJ.js";
|
|
21
21
|
import {
|
|
22
22
|
MAX_WORKSPACE_PATH_LENGTH,
|
|
23
23
|
translateAndCheckAbsoluteWorkspacePath
|
|
@@ -923,9 +923,107 @@ function isDeepHealthQuery(raw) {
|
|
|
923
923
|
}
|
|
924
924
|
__name(isDeepHealthQuery, "isDeepHealthQuery");
|
|
925
925
|
|
|
926
|
-
// packages/cli/src/serve/
|
|
926
|
+
// packages/cli/src/serve/local-control/credentials.ts
|
|
927
927
|
init_esbuild_shims();
|
|
928
928
|
import { createHash, timingSafeEqual } from "node:crypto";
|
|
929
|
+
var CredentialStore = class {
|
|
930
|
+
static {
|
|
931
|
+
__name(this, "CredentialStore");
|
|
932
|
+
}
|
|
933
|
+
#runtime;
|
|
934
|
+
/** Pairing id → sha256 of the pairing secret. */
|
|
935
|
+
#pairing = /* @__PURE__ */ new Map();
|
|
936
|
+
constructor(runtimeToken) {
|
|
937
|
+
this.#runtime = hashToken(runtimeToken);
|
|
938
|
+
}
|
|
939
|
+
addPairingToken(id, token) {
|
|
940
|
+
this.#pairing.set(id, createHash("sha256").update(token, "utf8").digest());
|
|
941
|
+
}
|
|
942
|
+
revokePairingToken(id) {
|
|
943
|
+
return this.#pairing.delete(id);
|
|
944
|
+
}
|
|
945
|
+
/**
|
|
946
|
+
* Is the gate open — i.e. may an unauthenticated request through?
|
|
947
|
+
*
|
|
948
|
+
* Only ever true on the primary listener of a no-token loopback daemon,
|
|
949
|
+
* preserving today's developer default. The LAN listener is never open: it
|
|
950
|
+
* exists only while a pairing token does, and it must not inherit the
|
|
951
|
+
* "operator chose the surface area" reasoning that governs `--hostname`.
|
|
952
|
+
*/
|
|
953
|
+
isOpen(listener) {
|
|
954
|
+
if (listener.kind === "local-control") return false;
|
|
955
|
+
return this.#runtime === void 0;
|
|
956
|
+
}
|
|
957
|
+
/**
|
|
958
|
+
* Constant-time check of a presented credential against those valid for
|
|
959
|
+
* `listener`. Every candidate in scope is compared even after a match so the
|
|
960
|
+
* work is independent of which credential matched — with a handful of
|
|
961
|
+
* pairing tokens the cost is negligible and the timing signal is not worth
|
|
962
|
+
* reasoning about separately.
|
|
963
|
+
*/
|
|
964
|
+
verify(credentials, listener) {
|
|
965
|
+
const candidate = createHash("sha256").update(credentials, "utf8").digest();
|
|
966
|
+
let matched = false;
|
|
967
|
+
if (listener.kind === "local-control") {
|
|
968
|
+
for (const expected of this.#pairing.values()) {
|
|
969
|
+
if (equalDigest(candidate, expected)) matched = true;
|
|
970
|
+
}
|
|
971
|
+
return matched;
|
|
972
|
+
}
|
|
973
|
+
return this.#runtime !== void 0 && equalDigest(candidate, this.#runtime);
|
|
974
|
+
}
|
|
975
|
+
};
|
|
976
|
+
function singleTokenCredentials(token) {
|
|
977
|
+
const expected = hashToken(token);
|
|
978
|
+
return {
|
|
979
|
+
isOpen: /* @__PURE__ */ __name((listener) => expected === void 0 && listener.kind !== "local-control", "isOpen"),
|
|
980
|
+
verify: /* @__PURE__ */ __name((candidate, listener) => {
|
|
981
|
+
if (expected === void 0 || listener.kind === "local-control") {
|
|
982
|
+
return false;
|
|
983
|
+
}
|
|
984
|
+
return equalDigest(
|
|
985
|
+
createHash("sha256").update(candidate, "utf8").digest(),
|
|
986
|
+
expected
|
|
987
|
+
);
|
|
988
|
+
}, "verify")
|
|
989
|
+
};
|
|
990
|
+
}
|
|
991
|
+
__name(singleTokenCredentials, "singleTokenCredentials");
|
|
992
|
+
function hashToken(token) {
|
|
993
|
+
return token === void 0 || token === "" ? void 0 : createHash("sha256").update(token, "utf8").digest();
|
|
994
|
+
}
|
|
995
|
+
__name(hashToken, "hashToken");
|
|
996
|
+
function equalDigest(a, b) {
|
|
997
|
+
return a.length === b.length && timingSafeEqual(a, b);
|
|
998
|
+
}
|
|
999
|
+
__name(equalDigest, "equalDigest");
|
|
1000
|
+
|
|
1001
|
+
// packages/cli/src/serve/local-control/listener-identity.ts
|
|
1002
|
+
init_esbuild_shims();
|
|
1003
|
+
var LISTENER_TAG = Symbol.for("qwen.serve.listenerIdentity");
|
|
1004
|
+
function tagListener(server, identity) {
|
|
1005
|
+
server[LISTENER_TAG] = identity;
|
|
1006
|
+
}
|
|
1007
|
+
__name(tagListener, "tagListener");
|
|
1008
|
+
var PRIMARY = { kind: "primary" };
|
|
1009
|
+
function fromServer(server) {
|
|
1010
|
+
if (!server || typeof server !== "object") return void 0;
|
|
1011
|
+
return server[LISTENER_TAG];
|
|
1012
|
+
}
|
|
1013
|
+
__name(fromServer, "fromServer");
|
|
1014
|
+
function listenerIdentityOf(req) {
|
|
1015
|
+
const socket = req.socket;
|
|
1016
|
+
return fromServer(socket?.server) ?? PRIMARY;
|
|
1017
|
+
}
|
|
1018
|
+
__name(listenerIdentityOf, "listenerIdentityOf");
|
|
1019
|
+
function listenerIdentityOfSocket(socket) {
|
|
1020
|
+
const withServer = socket;
|
|
1021
|
+
return fromServer(withServer?.server) ?? PRIMARY;
|
|
1022
|
+
}
|
|
1023
|
+
__name(listenerIdentityOfSocket, "listenerIdentityOfSocket");
|
|
1024
|
+
|
|
1025
|
+
// packages/cli/src/serve/auth.ts
|
|
1026
|
+
init_esbuild_shims();
|
|
929
1027
|
var denyBrowserOriginCors = /* @__PURE__ */ __name((req, res, next) => {
|
|
930
1028
|
if (req.headers.origin) {
|
|
931
1029
|
res.setHeader("Vary", "Origin");
|
|
@@ -973,7 +1071,42 @@ function parseAllowOriginPatterns(raw) {
|
|
|
973
1071
|
return { allowAny, origins };
|
|
974
1072
|
}
|
|
975
1073
|
__name(parseAllowOriginPatterns, "parseAllowOriginPatterns");
|
|
1074
|
+
var MutableOriginAllowlist = class {
|
|
1075
|
+
static {
|
|
1076
|
+
__name(this, "MutableOriginAllowlist");
|
|
1077
|
+
}
|
|
1078
|
+
#allowAny;
|
|
1079
|
+
#static;
|
|
1080
|
+
#dynamic = /* @__PURE__ */ new Map();
|
|
1081
|
+
constructor(base) {
|
|
1082
|
+
this.#allowAny = base.allowAny;
|
|
1083
|
+
this.#static = new Set(base.origins);
|
|
1084
|
+
}
|
|
1085
|
+
allows(origin) {
|
|
1086
|
+
if (this.#allowAny) return true;
|
|
1087
|
+
const normalized = origin.toLowerCase();
|
|
1088
|
+
if (this.#static.has(normalized)) return true;
|
|
1089
|
+
for (const value of this.#dynamic.values()) {
|
|
1090
|
+
if (value === normalized) return true;
|
|
1091
|
+
}
|
|
1092
|
+
return false;
|
|
1093
|
+
}
|
|
1094
|
+
/** Add a runtime origin under `key`; re-adding the same key replaces it. */
|
|
1095
|
+
add(key, origin) {
|
|
1096
|
+
this.#dynamic.set(key, origin.toLowerCase());
|
|
1097
|
+
}
|
|
1098
|
+
remove(key) {
|
|
1099
|
+
this.#dynamic.delete(key);
|
|
1100
|
+
}
|
|
1101
|
+
};
|
|
1102
|
+
function toMatcher(patterns) {
|
|
1103
|
+
return "allows" in patterns ? patterns : {
|
|
1104
|
+
allows: /* @__PURE__ */ __name((origin) => patterns.allowAny || patterns.origins.has(origin.toLowerCase()), "allows")
|
|
1105
|
+
};
|
|
1106
|
+
}
|
|
1107
|
+
__name(toMatcher, "toMatcher");
|
|
976
1108
|
function allowOriginCors(patterns) {
|
|
1109
|
+
const matcher = toMatcher(patterns);
|
|
977
1110
|
const allowedMethods = "GET, POST, PATCH, DELETE, OPTIONS";
|
|
978
1111
|
const allowedHeaders = "Authorization, Content-Type, X-Qwen-Client-Id, Last-Event-ID, X-Qwen-Event-Epoch";
|
|
979
1112
|
const maxAgeSeconds = "86400";
|
|
@@ -989,7 +1122,7 @@ function allowOriginCors(patterns) {
|
|
|
989
1122
|
res.status(403).json({ error: "Request denied by CORS policy" });
|
|
990
1123
|
return;
|
|
991
1124
|
}
|
|
992
|
-
const matched =
|
|
1125
|
+
const matched = matcher.allows(origin);
|
|
993
1126
|
if (matched) {
|
|
994
1127
|
res.setHeader("Access-Control-Allow-Origin", origin);
|
|
995
1128
|
res.setHeader("Vary", "Origin");
|
|
@@ -1010,6 +1143,24 @@ function allowOriginCors(patterns) {
|
|
|
1010
1143
|
}
|
|
1011
1144
|
__name(allowOriginCors, "allowOriginCors");
|
|
1012
1145
|
function hostAllowlist(bind, getPort) {
|
|
1146
|
+
const primaryGate = buildPrimaryHostGate(bind, getPort);
|
|
1147
|
+
return (req, res, next) => {
|
|
1148
|
+
const listener = listenerIdentityOf(req);
|
|
1149
|
+
if (listener.kind !== "local-control") {
|
|
1150
|
+
primaryGate(req, res, next);
|
|
1151
|
+
return;
|
|
1152
|
+
}
|
|
1153
|
+
const host = (req.headers.host || "").toLowerCase();
|
|
1154
|
+
const browserHost = listener.origin === void 0 ? void 0 : new URL(listener.origin).host.toLowerCase();
|
|
1155
|
+
if (listener.authority === void 0 || host !== listener.authority && host !== browserHost) {
|
|
1156
|
+
res.status(403).json({ error: "Invalid Host header" });
|
|
1157
|
+
return;
|
|
1158
|
+
}
|
|
1159
|
+
next();
|
|
1160
|
+
};
|
|
1161
|
+
}
|
|
1162
|
+
__name(hostAllowlist, "hostAllowlist");
|
|
1163
|
+
function buildPrimaryHostGate(bind, getPort) {
|
|
1013
1164
|
if (!isLoopbackBind(bind)) {
|
|
1014
1165
|
return (_req, _res, next) => next();
|
|
1015
1166
|
}
|
|
@@ -1042,13 +1193,15 @@ function hostAllowlist(bind, getPort) {
|
|
|
1042
1193
|
next();
|
|
1043
1194
|
};
|
|
1044
1195
|
}
|
|
1045
|
-
__name(
|
|
1046
|
-
function bearerAuth(
|
|
1047
|
-
|
|
1048
|
-
return (_req, _res, next) => next();
|
|
1049
|
-
}
|
|
1050
|
-
const expected = createHash("sha256").update(token, "utf8").digest();
|
|
1196
|
+
__name(buildPrimaryHostGate, "buildPrimaryHostGate");
|
|
1197
|
+
function bearerAuth(source) {
|
|
1198
|
+
const credentials = typeof source === "object" && source !== null ? source : singleTokenCredentials(source);
|
|
1051
1199
|
return (req, res, next) => {
|
|
1200
|
+
const listener = listenerIdentityOf(req);
|
|
1201
|
+
if (credentials.isOpen(listener)) {
|
|
1202
|
+
next();
|
|
1203
|
+
return;
|
|
1204
|
+
}
|
|
1052
1205
|
const header = req.headers.authorization;
|
|
1053
1206
|
if (!header) {
|
|
1054
1207
|
res.status(401).json({ error: "Unauthorized" });
|
|
@@ -1068,26 +1221,35 @@ function bearerAuth(token) {
|
|
|
1068
1221
|
while (credStart < header.length && (header.charCodeAt(credStart) === 32 || header.charCodeAt(credStart) === 9)) {
|
|
1069
1222
|
credStart++;
|
|
1070
1223
|
}
|
|
1071
|
-
const
|
|
1072
|
-
if (
|
|
1224
|
+
const presented = header.slice(credStart);
|
|
1225
|
+
if (presented.length === 0) {
|
|
1073
1226
|
res.status(401).json({ error: "Unauthorized" });
|
|
1074
1227
|
return;
|
|
1075
1228
|
}
|
|
1076
|
-
|
|
1077
|
-
if (!timingSafeEqual(candidate, expected)) {
|
|
1229
|
+
if (!credentials.verify(presented, listener)) {
|
|
1078
1230
|
res.status(401).json({ error: "Unauthorized" });
|
|
1079
1231
|
return;
|
|
1080
1232
|
}
|
|
1233
|
+
req[AUTHENTICATED_REQUEST] = true;
|
|
1081
1234
|
next();
|
|
1082
1235
|
};
|
|
1083
1236
|
}
|
|
1084
1237
|
__name(bearerAuth, "bearerAuth");
|
|
1238
|
+
var AUTHENTICATED_REQUEST = Symbol("qwen.serve.authenticatedRequest");
|
|
1239
|
+
function requestWasAuthenticated(req) {
|
|
1240
|
+
return req[AUTHENTICATED_REQUEST] === true;
|
|
1241
|
+
}
|
|
1242
|
+
__name(requestWasAuthenticated, "requestWasAuthenticated");
|
|
1085
1243
|
function createMutationGate(deps) {
|
|
1086
1244
|
const passthrough = /* @__PURE__ */ __name((_req, _res, next) => next(), "passthrough");
|
|
1087
1245
|
if (deps.requireAuth || deps.tokenConfigured) {
|
|
1088
1246
|
return () => passthrough;
|
|
1089
1247
|
}
|
|
1090
|
-
const strictDenier = /* @__PURE__ */ __name((
|
|
1248
|
+
const strictDenier = /* @__PURE__ */ __name((req, res, next) => {
|
|
1249
|
+
if (requestWasAuthenticated(req)) {
|
|
1250
|
+
next();
|
|
1251
|
+
return;
|
|
1252
|
+
}
|
|
1091
1253
|
res.status(401).json({
|
|
1092
1254
|
error: "This route requires the daemon to be configured with a bearer token. Set QWEN_SERVER_TOKEN or pass --token to enable bearer auth.",
|
|
1093
1255
|
code: "token_required"
|
|
@@ -1270,6 +1432,11 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1270
1432
|
session_source_metadata: { since: "v1" },
|
|
1271
1433
|
session_side_task: { since: "v1" },
|
|
1272
1434
|
session_prompt: { since: "v1" },
|
|
1435
|
+
session_turn_status: { since: "v1" },
|
|
1436
|
+
// Prompts and mid-turn messages support session-scoped media uploaded once
|
|
1437
|
+
// and referenced by `mediaId`. The bridge resolves bytes only when ACP input
|
|
1438
|
+
// is dispatched, keeping base64 out of JSON and SSE payloads.
|
|
1439
|
+
session_media: { since: "v1" },
|
|
1273
1440
|
session_mid_turn_message_mutation: { since: "v1" },
|
|
1274
1441
|
// Daemon-owned reconciliation surface for mid-turn messages:
|
|
1275
1442
|
// `GET /session/:id/mid-turn-messages` returns the messages still waiting
|
|
@@ -1603,6 +1770,17 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1603
1770
|
// This remains independent from active export so older daemons cannot ignore
|
|
1604
1771
|
// archive intent and return an active transcript with the same session id.
|
|
1605
1772
|
workspace_archived_session_export: { since: "v1" },
|
|
1773
|
+
// Workspace-qualified, memory-only session live-state snapshot plus the
|
|
1774
|
+
// in-memory catalog version token
|
|
1775
|
+
// (`GET /workspaces/:workspace/sessions/live-state`). Independent from
|
|
1776
|
+
// `workspace_qualified_rest_core`: released daemons can advertise that tag
|
|
1777
|
+
// without implementing this route, so clients must pre-flight it directly.
|
|
1778
|
+
// The route stays subject to the per-workspace trust check even when the
|
|
1779
|
+
// tag is advertised.
|
|
1780
|
+
workspace_session_live_state: { since: "v1" },
|
|
1781
|
+
// Workspace-qualified metadata updates for active, inactive, and archived
|
|
1782
|
+
// persisted sessions.
|
|
1783
|
+
workspace_session_metadata: { since: "v1" },
|
|
1606
1784
|
// Workspace-qualified ACP transport (issue #6378 Phase 4):
|
|
1607
1785
|
// `/workspaces/:workspace/acp` mounts a per-runtime ACP dispatcher (HTTP +
|
|
1608
1786
|
// WebSocket) for each registered workspace, with per-runtime device-flow and
|
|
@@ -3882,11 +4060,18 @@ export {
|
|
|
3882
4060
|
createBridgeFileSystemAdapter,
|
|
3883
4061
|
PathMutexRegistry,
|
|
3884
4062
|
isDeepHealthQuery,
|
|
4063
|
+
CredentialStore,
|
|
4064
|
+
singleTokenCredentials,
|
|
4065
|
+
tagListener,
|
|
4066
|
+
listenerIdentityOf,
|
|
4067
|
+
listenerIdentityOfSocket,
|
|
3885
4068
|
denyBrowserOriginCors,
|
|
3886
4069
|
parseAllowOriginPatterns,
|
|
4070
|
+
MutableOriginAllowlist,
|
|
3887
4071
|
allowOriginCors,
|
|
3888
4072
|
hostAllowlist,
|
|
3889
4073
|
bearerAuth,
|
|
4074
|
+
requestWasAuthenticated,
|
|
3890
4075
|
createMutationGate,
|
|
3891
4076
|
ClientMcpSenderRegistry,
|
|
3892
4077
|
createClientMcpServerProvider,
|
|
@@ -8,14 +8,14 @@ import {
|
|
|
8
8
|
} from "./chunk-Z4X5MTRT.js";
|
|
9
9
|
import {
|
|
10
10
|
STATUS_SCHEMA_VERSION
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-UC67T4SF.js";
|
|
12
12
|
import {
|
|
13
13
|
loadSettings
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-VFP5YOHJ.js";
|
|
15
15
|
import {
|
|
16
16
|
SkillManager,
|
|
17
17
|
isSafeModeEnv
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-OFTPCOGR.js";
|
|
19
19
|
import {
|
|
20
20
|
writeStderrLine
|
|
21
21
|
} from "./chunk-KGJGEEVR.js";
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "./chunk-RKUWKYED.js";
|
|
7
7
|
import {
|
|
8
8
|
getSettingsSchema
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-CZK622ZK.js";
|
|
10
10
|
import {
|
|
11
11
|
CONSOLIDATED_DISABLE_KEYS,
|
|
12
12
|
V1_INDICATOR_KEYS,
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
} from "./chunk-IDS7MSUP.js";
|
|
22
22
|
import {
|
|
23
23
|
t
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-VTOLYFWM.js";
|
|
25
25
|
import {
|
|
26
26
|
SUPPORTED_LANGUAGES,
|
|
27
27
|
getLanguageNameFromLocale
|
|
@@ -30,21 +30,21 @@ import {
|
|
|
30
30
|
getHomeEnvFallbackVars,
|
|
31
31
|
loadEnvironment,
|
|
32
32
|
preResolveHomeEnvOverrides
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-MVHJZ3FZ.js";
|
|
34
34
|
import {
|
|
35
35
|
ENV_CORRUPTED_PATH,
|
|
36
36
|
ENV_WAS_RECOVERED
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-CXJHQVEK.js";
|
|
38
38
|
import {
|
|
39
39
|
isWorkspaceTrusted,
|
|
40
40
|
updateSettingsFilePreservingFormat
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-C3T6M24E.js";
|
|
42
42
|
import {
|
|
43
43
|
require_strip_json_comments
|
|
44
44
|
} from "./chunk-NPQ5ZKRP.js";
|
|
45
45
|
import {
|
|
46
46
|
stripRuntimeSnapshotPrefix
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-544KT7X4.js";
|
|
48
48
|
import {
|
|
49
49
|
FatalConfigError,
|
|
50
50
|
Storage,
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from "./chunk-5EJZE3FP.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveBundleDir
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-OFTPCOGR.js";
|
|
9
9
|
import {
|
|
10
10
|
Storage
|
|
11
11
|
} from "./chunk-BUQDLC2G.js";
|
|
@@ -74,6 +74,14 @@ var MUST_TRANSLATE_KEYS = [
|
|
|
74
74
|
"prompts",
|
|
75
75
|
"tools",
|
|
76
76
|
"Ask a quick side question without affecting the main conversation",
|
|
77
|
+
"Get a second opinion on the current conversation from a reviewer model",
|
|
78
|
+
"Consulting advisor...",
|
|
79
|
+
"Advisor review failed: {{error}}",
|
|
80
|
+
"No conversation context available for /advisor",
|
|
81
|
+
"Focus too long (max {{max}} chars)",
|
|
82
|
+
"Another operation is in progress, wait for it to complete before running /advisor",
|
|
83
|
+
"No response received.",
|
|
84
|
+
"No model configured.",
|
|
77
85
|
"Manage Arena sessions",
|
|
78
86
|
"Start an Arena session with multiple models competing on the same task",
|
|
79
87
|
"Stop the current Arena session",
|
|
@@ -156,15 +164,15 @@ var MUST_TRANSLATE_KEYS = [
|
|
|
156
164
|
|
|
157
165
|
// import("./locales/**/*.js") in packages/cli/src/i18n/index.ts
|
|
158
166
|
var globImport_locales_js = __glob({
|
|
159
|
-
"./locales/ca.js": () => import("./ca-
|
|
160
|
-
"./locales/de.js": () => import("./de-
|
|
161
|
-
"./locales/en.js": () => import("./en-
|
|
162
|
-
"./locales/fr.js": () => import("./fr-
|
|
163
|
-
"./locales/ja.js": () => import("./ja-
|
|
164
|
-
"./locales/pt.js": () => import("./pt-
|
|
165
|
-
"./locales/ru.js": () => import("./ru-
|
|
166
|
-
"./locales/zh-TW.js": () => import("./zh-TW-
|
|
167
|
-
"./locales/zh.js": () => import("./zh-
|
|
167
|
+
"./locales/ca.js": () => import("./ca-SLZJD6QH.js"),
|
|
168
|
+
"./locales/de.js": () => import("./de-AH4LGCF5.js"),
|
|
169
|
+
"./locales/en.js": () => import("./en-MD3GP5YL.js"),
|
|
170
|
+
"./locales/fr.js": () => import("./fr-ZEML2JWS.js"),
|
|
171
|
+
"./locales/ja.js": () => import("./ja-UM5B2HMD.js"),
|
|
172
|
+
"./locales/pt.js": () => import("./pt-5BMJ3XYH.js"),
|
|
173
|
+
"./locales/ru.js": () => import("./ru-6GL66ORV.js"),
|
|
174
|
+
"./locales/zh-TW.js": () => import("./zh-TW-LVLBK4KF.js"),
|
|
175
|
+
"./locales/zh.js": () => import("./zh-UBMWS2BJ.js")
|
|
168
176
|
});
|
|
169
177
|
|
|
170
178
|
// packages/cli/src/i18n/index.ts
|