@qwen-code/qwen-code 0.21.6 → 0.21.7-nightly.20260808.4ec0371e6
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 +50 -31
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +41 -3
- package/bundled/qc-helper/docs/features/channels/feishu.md +13 -2
- package/bundled/qc-helper/docs/features/channels/github.md +13 -11
- package/bundled/qc-helper/docs/features/channels/gitlab.md +13 -11
- package/bundled/qc-helper/docs/features/channels/overview.md +49 -31
- package/bundled/qc-helper/docs/features/channels/plugins.md +2 -2
- package/bundled/qc-helper/docs/features/channels/qqbot.md +4 -2
- package/bundled/qc-helper/docs/features/channels/telegram.md +4 -2
- package/bundled/qc-helper/docs/features/channels/wecom.md +1 -1
- package/bundled/qc-helper/docs/features/code-review.md +31 -0
- package/bundled/qc-helper/docs/features/hooks.md +2 -0
- package/bundled/qc-helper/docs/qwen-serve.md +4 -1
- package/bundled/review/SKILL.md +52 -16
- package/chunks/{MaxSizedBox-2HFKP4LI.js → MaxSizedBox-COZBVNCI.js} +42 -41
- package/chunks/{StandaloneSessionPicker-RBV72M5N.js → StandaloneSessionPicker-3OF2FS6S.js} +59 -57
- package/chunks/{acpAgent-WO6JFCVQ.js → acpAgent-3JCJ6KWG.js} +236 -185
- package/chunks/{agent-AHGLYNZ4.js → agent-DBSC47CD.js} +39 -38
- package/chunks/{agent-headless-NTXKKGRO.js → agent-headless-ZJHZ7I3S.js} +39 -38
- package/chunks/{anthropicContentGenerator-3CAHEZBM.js → anthropicContentGenerator-SSFE2753.js} +15 -15
- package/chunks/{artifact-tool-RROCCJDA.js → artifact-tool-N652YE4L.js} +2 -2
- package/chunks/{askUserQuestion-2EPPBPUZ.js → askUserQuestion-ONW74PKJ.js} +2 -2
- package/chunks/{bridge-RPAU64CA.js → bridge-NFBYT4ZI.js} +43 -42
- package/chunks/{channel-management-service-IGEUOVRT.js → channel-management-service-LXSJXQGM.js} +19 -10
- package/chunks/{channel-settings-store-ON64MF7G.js → channel-settings-store-LABKDKSI.js} +46 -45
- package/chunks/{channel-worker-group-JWQK224X.js → channel-worker-group-MTW2AGT3.js} +4 -4
- package/chunks/{channel-worker-manager-77E3OXRQ.js → channel-worker-manager-UU6PTQSI.js} +4 -4
- package/chunks/{channel-worker-supervisor-62YWUGP2.js → channel-worker-supervisor-5SRD24FG.js} +3 -3
- package/chunks/{chunk-XC656O42.js → chunk-22NBYCPD.js} +3 -3
- package/chunks/{chunk-K2B3X3E7.js → chunk-26ISE5EG.js} +4 -4
- package/chunks/{chunk-Z7JILXGX.js → chunk-2UUMVNYT.js} +3 -3
- package/chunks/{chunk-ACZRB7AD.js → chunk-3ARO4N5G.js} +3 -3
- package/chunks/{chunk-CJ5WLD5Y.js → chunk-3HS6Y4UA.js} +96 -22
- package/chunks/{chunk-MBEMTXQT.js → chunk-3K7FH2KQ.js} +1 -32
- package/chunks/{chunk-QYPT3QUD.js → chunk-3ULCB3NE.js} +3 -3
- package/chunks/{chunk-IMOQO6YL.js → chunk-4Q6N3SNL.js} +1 -1
- package/chunks/{chunk-3UOLYNTF.js → chunk-4QJJHIZ5.js} +23 -14
- package/chunks/{chunk-VGFPFM4U.js → chunk-5PGKKSO6.js} +42 -16
- package/chunks/{chunk-NGJOAKJY.js → chunk-5YT3Y33M.js} +3 -3
- package/chunks/{chunk-T4JSA7KU.js → chunk-64YLXLMY.js} +3 -3
- package/chunks/{chunk-5L6CQ4ZU.js → chunk-6M26GBKX.js} +2 -2
- package/chunks/{chunk-ZPPP6VCL.js → chunk-6ZRFAKXK.js} +1 -1
- package/chunks/{chunk-OP2OHZ7K.js → chunk-764F335K.js} +18 -9
- package/chunks/{chunk-PPUOYL77.js → chunk-77WOUGCA.js} +53 -22
- package/chunks/{chunk-33FNCQSY.js → chunk-7MH4J33A.js} +2 -2
- package/chunks/{chunk-S7CV4KO6.js → chunk-AB4A73VL.js} +2 -2
- package/chunks/{chunk-O7V7N4G7.js → chunk-ACHMWGC5.js} +198 -35
- package/chunks/{chunk-NKSF7HYF.js → chunk-AG3P2RES.js} +1 -1
- package/chunks/{chunk-6PEXNQTX.js → chunk-ALFTV7GA.js} +26 -2
- package/chunks/{chunk-JELIWHXD.js → chunk-AOHJKPKL.js} +1 -1
- package/chunks/{chunk-XA4TMLFN.js → chunk-APMRLB2H.js} +580 -394
- package/chunks/{chunk-75QMRMO7.js → chunk-APNNM3JC.js} +3 -3
- package/chunks/{chunk-GLNBDYUX.js → chunk-AXMWHKXA.js} +6 -2
- package/chunks/{chunk-VNQCPBC2.js → chunk-B23P3YWE.js} +3 -3
- package/chunks/{chunk-H36SETQS.js → chunk-B2GJNDTV.js} +1 -1
- package/chunks/{chunk-Q5RM32DR.js → chunk-BCMJPTXV.js} +1 -1
- package/chunks/{chunk-A4VTILZT.js → chunk-BFSQBXHV.js} +714 -398
- package/chunks/{chunk-QMBEW7EW.js → chunk-BGG4MBYD.js} +2 -2
- package/chunks/{chunk-SLSWFHDF.js → chunk-BJKFFPX2.js} +4 -4
- package/chunks/{chunk-N2GJU6KI.js → chunk-BN3OROB3.js} +12 -12
- package/chunks/chunk-CE5UCTKO.js +3508 -0
- package/chunks/{chunk-2UISUFHQ.js → chunk-CJXIIILK.js} +3 -3
- package/chunks/{chunk-WK4TJUEA.js → chunk-CKASRHZI.js} +1 -1
- package/chunks/chunk-CPG6P4GG.js +82 -0
- package/chunks/{chunk-KKN2IE7Q.js → chunk-CTJLZLB5.js} +1 -1
- package/chunks/{chunk-DIEFUBV6.js → chunk-DIWZNWZT.js} +205 -35
- package/chunks/{chunk-CA4UIDFU.js → chunk-DPH3MUAP.js} +1 -1
- package/chunks/{chunk-4LKVQFHM.js → chunk-DREZZAZM.js} +2 -2
- package/chunks/{chunk-2DNKEBXY.js → chunk-EI3HZX6C.js} +1 -1
- package/chunks/{chunk-U25CMJYY.js → chunk-EKPKKXY2.js} +1 -1
- package/chunks/{chunk-432XCUHF.js → chunk-EQL65XGA.js} +1 -1
- package/chunks/{chunk-TYERNYH4.js → chunk-EUNWC2VS.js} +2 -2
- package/chunks/{chunk-4JH77A2U.js → chunk-EZ53KMUN.js} +1 -1
- package/chunks/{chunk-HY25ULVN.js → chunk-F3LPXDJP.js} +157 -56
- package/chunks/{chunk-D3UEZIQH.js → chunk-FJ6YHWHZ.js} +2 -2
- package/chunks/{chunk-UH7Z7Y45.js → chunk-FOGU3LJX.js} +1 -1
- package/chunks/{chunk-E4WHKETF.js → chunk-FVKHVJZQ.js} +2 -49
- package/chunks/{chunk-YZQTA3ID.js → chunk-GDXET5XU.js} +31 -3396
- package/chunks/{chunk-A5YZ3FA2.js → chunk-GM463R2B.js} +1 -1
- package/chunks/{chunk-MOHAWIAW.js → chunk-GNPNYXJB.js} +2 -2
- package/chunks/{chunk-SUKEUUAA.js → chunk-GUFY6D3E.js} +1 -1
- package/chunks/{chunk-FZFP7RZI.js → chunk-H2352CX2.js} +3 -3
- package/chunks/{chunk-GWRHVJY2.js → chunk-HKCYGZZ4.js} +22 -22
- package/chunks/{chunk-3PRJYMXC.js → chunk-HUWENAHO.js} +1 -1
- package/chunks/{chunk-G5NNWEYE.js → chunk-HY2INPTA.js} +4 -4
- package/chunks/{chunk-WVAESIM6.js → chunk-IA7TGCN2.js} +4 -4
- package/chunks/{chunk-HU5TUALO.js → chunk-IIJEYBNH.js} +3 -3
- package/chunks/{chunk-XM2O73NC.js → chunk-IMK3SJ43.js} +5703 -4343
- package/chunks/{chunk-4S4OEQ6U.js → chunk-J6SZID63.js} +2 -2
- package/chunks/{chunk-OWSW7EYP.js → chunk-JACAHYEN.js} +7 -7
- package/chunks/{chunk-R5RBXLNC.js → chunk-JRIJOZXO.js} +5 -5
- package/chunks/{chunk-SQOMTWQT.js → chunk-JSJTZ6GO.js} +4 -4
- package/chunks/{chunk-VWOVHOTT.js → chunk-KJZ26VBX.js} +1 -1
- package/chunks/{chunk-BFHXDAR7.js → chunk-KKBPOU75.js} +1 -1
- package/chunks/{chunk-TGGEZINK.js → chunk-KKRGVSHC.js} +7 -7
- package/chunks/{chunk-RK2EE3T7.js → chunk-KPMB4JEZ.js} +4 -4
- package/chunks/{chunk-MKVZE4ZJ.js → chunk-KTJFU7RT.js} +3 -2
- package/chunks/{chunk-MGSSJT27.js → chunk-L4N6TIP7.js} +5 -3
- package/chunks/{chunk-U4AF3QLU.js → chunk-L4OW63GW.js} +8 -8
- package/chunks/{chunk-C4CBJQKY.js → chunk-LDUGDB5H.js} +1 -1
- package/chunks/{chunk-W5DXUTXD.js → chunk-LDY4J4G6.js} +8 -8
- package/chunks/{chunk-GK2H5GRC.js → chunk-LMEIS6WW.js} +16 -6
- package/chunks/{chunk-6O5DVH27.js → chunk-M6HMMKVG.js} +1 -1
- package/chunks/{chunk-TOGZTG4X.js → chunk-MIA37QO3.js} +2 -2
- package/chunks/{chunk-536SWZTA.js → chunk-MV7VUCIG.js} +4 -4
- package/chunks/{chunk-T5U6IM4C.js → chunk-MVUQRLOH.js} +3 -3
- package/chunks/{chunk-GLWP3FDB.js → chunk-MZSJ43WV.js} +31 -2
- package/chunks/{chunk-UGTWD35F.js → chunk-NLREQJFK.js} +1 -1
- package/chunks/{chunk-RFUHDCNF.js → chunk-O7VQ3F22.js} +1 -1
- package/chunks/{chunk-3RXUYQJI.js → chunk-OIVKILPI.js} +49 -0
- package/chunks/{chunk-LBWNSLJK.js → chunk-ONSZH6VM.js} +2 -2
- package/chunks/{chunk-4WTAQEHV.js → chunk-OQTXYMKW.js} +3 -3
- package/chunks/{chunk-DYA25Y7U.js → chunk-OWMAZHIX.js} +1 -1
- package/chunks/{chunk-LAAFLUQV.js → chunk-P74TZRXD.js} +2 -2
- package/chunks/{chunk-BOGOR4HB.js → chunk-P7HUJDBZ.js} +7 -7
- package/chunks/chunk-PJRW65JO.js +107 -0
- package/chunks/{chunk-D7D7RXIJ.js → chunk-PYQADEFD.js} +6 -1
- package/chunks/{chunk-WO2B5E5B.js → chunk-Q3JQ7OSU.js} +1 -1
- package/chunks/{chunk-3LZKY4V4.js → chunk-QKJT5K4Q.js} +5 -5
- package/chunks/{chunk-OXX3FG2N.js → chunk-R2KZWK5Z.js} +3 -3
- package/chunks/{chunk-QZKYZCN3.js → chunk-REHWPCG2.js} +3 -3
- package/chunks/{chunk-2POQWYM6.js → chunk-RFA6VDCR.js} +3 -3
- package/chunks/{chunk-DIT4V3XH.js → chunk-RGTB44BO.js} +1 -1
- package/chunks/{chunk-SQC6K5HI.js → chunk-RPWVIXDB.js} +19 -2
- package/chunks/{chunk-ODPXHGLL.js → chunk-RZMGG3HP.js} +2 -2
- package/chunks/{chunk-2AGOQ7QO.js → chunk-S6HYI3MF.js} +118 -6
- package/chunks/chunk-SAH4BD2J.js +92 -0
- package/chunks/{chunk-JE44IPH6.js → chunk-SDUDZNF4.js} +2 -2
- package/chunks/{chunk-YAVY33G4.js → chunk-SEZ556DZ.js} +1 -1
- package/chunks/chunk-SOORFWKY.js +155 -0
- package/chunks/{chunk-KHUA3NQV.js → chunk-TAOSTUHI.js} +2 -2
- package/chunks/{chunk-VSALQLT7.js → chunk-TSYIQDG7.js} +1 -1
- package/chunks/{chunk-ULPQQSDN.js → chunk-TX3KSSDN.js} +3 -3
- package/chunks/{chunk-KVUBYJDM.js → chunk-TZEZYNYD.js} +1 -1
- package/chunks/{chunk-24ER7UV4.js → chunk-UFALT4LK.js} +1 -1
- package/chunks/{chunk-GESMMPAK.js → chunk-UKAYEQDU.js} +91 -63
- package/chunks/{chunk-XC2VAFVZ.js → chunk-UVX4Y6IN.js} +1 -1
- package/chunks/chunk-VDS2WYM5.js +244 -0
- package/chunks/{chunk-DVBEGGLG.js → chunk-VLFX3L3X.js} +10 -9
- package/chunks/{chunk-WNU7TZTO.js → chunk-VT3VNFVW.js} +3 -3
- package/chunks/{chunk-6WBWIPBF.js → chunk-WAUGQKUU.js} +4 -64
- package/chunks/{chunk-URN76TKR.js → chunk-WCG5O7IP.js} +2 -2
- package/chunks/{chunk-PX5DNLSA.js → chunk-XCG76UE6.js} +18 -10
- package/chunks/{chunk-TSERKWCX.js → chunk-XCWO3SMQ.js} +3 -3
- package/chunks/{chunk-5MJGUQU5.js → chunk-XIDHBXUI.js} +3 -3
- package/chunks/{chunk-3LGZEYOF.js → chunk-YHEEE624.js} +2 -2
- package/chunks/{chunk-SKNE3KQC.js → chunk-Z5ZAWED3.js} +19 -10
- package/chunks/{chunk-YMBOEAF4.js → chunk-Z6W3XDLN.js} +1 -1
- package/chunks/{chunk-EXCEQD22.js → chunk-ZKUJ4AO7.js} +4 -4
- package/chunks/{chunk-RHTTKJTP.js → chunk-ZQGHESAS.js} +1 -1
- package/chunks/{chunk-WUC6ZFXO.js → chunk-ZWBUH5UP.js} +1 -1
- package/chunks/{computer-use-5HXJ2P4X.js → computer-use-QLJ27OCZ.js} +39 -38
- package/chunks/{config-utils-VXD4SPVR.js → config-utils-KIEXWA4F.js} +4 -4
- package/chunks/{contextCommand-7BEHRX2H.js → contextCommand-JDTOJRBO.js} +41 -40
- package/chunks/{core-runtime-U4VJ5TIV.js → core-runtime-MZIAVYQC.js} +43 -42
- package/chunks/{create-sub-session-6EWLAZD5.js → create-sub-session-QIDZUOPU.js} +2 -2
- package/chunks/{create-sub-session-QZNQY332.js → create-sub-session-YBBCNSHE.js} +39 -38
- package/chunks/{cron-create-CCRIULJE.js → cron-create-VONA5JYY.js} +4 -4
- package/chunks/{cron-delete-FCFW6BGP.js → cron-delete-5JXSP2MI.js} +4 -4
- package/chunks/{cron-list-QDBVCHRF.js → cron-list-KE4F2CIR.js} +4 -4
- package/chunks/{daemon-YI5RY62O.js → daemon-SCTQMM7Z.js} +50 -2
- package/chunks/{daemon-status-provider-UJUGTDTL.js → daemon-status-provider-BZ7RD4ZJ.js} +47 -46
- package/chunks/{daemon-trust-policy-ZHDD5VYQ.js → daemon-trust-policy-2E4C3M7S.js} +45 -44
- package/chunks/{daemon-trust-policy-monitor-5SHYBDGA.js → daemon-trust-policy-monitor-UYLFH6RW.js} +45 -44
- package/chunks/{deferred-core-runtime-QWAEBTR5.js → deferred-core-runtime-6XZYMJZB.js} +39 -38
- package/chunks/{display-image-GUJA352B.js → display-image-NQRSIBXM.js} +4 -4
- package/chunks/{dist-SFQ34F4M.js → dist-26RK5XZO.js} +1 -1
- package/chunks/{dist-DPPHJAVL.js → dist-BATY7GI4.js} +187 -6
- package/chunks/{dist-A7H2KKUC.js → dist-HIACTZEK.js} +332 -113
- package/chunks/{dist-3BMEUGTG.js → dist-IRL7WA5Z.js} +1 -1
- package/chunks/{dist-HVBMEYWK.js → dist-KVISB2O2.js} +1 -1
- package/chunks/{dist-KS4O2NKE.js → dist-MBF3I5MX.js} +14 -8
- package/chunks/{dist-7JGAAQSC.js → dist-RCH3I7SS.js} +2 -2
- package/chunks/{dist-C5U4LJKW.js → dist-TUSWNE2I.js} +5 -4
- package/chunks/{earlyInputCapture-5BMSGKOI.js → earlyInputCapture-LATQCGDC.js} +40 -39
- package/chunks/{edit-IVQQVYYK.js → edit-72DP57CD.js} +39 -38
- package/chunks/{enter-worktree-P3DF2N6O.js → enter-worktree-B4FY2ZPP.js} +39 -38
- package/chunks/{enterPlanMode-KKTDVLAD.js → enterPlanMode-TQBWGCPL.js} +39 -38
- package/chunks/{environment-W5TRDM3G.js → environment-MOGZGZDS.js} +42 -41
- package/chunks/{errors-GJJB36IG.js → errors-PGON5GH7.js} +41 -40
- package/chunks/{exit-worktree-LV5RLOCU.js → exit-worktree-EYUD4YP2.js} +39 -38
- package/chunks/{exitPlanMode-TUGOB2LL.js → exitPlanMode-4Q7BSQXR.js} +39 -38
- package/chunks/{fast-path-2FU23PAQ.js → fast-path-WI7D5MER.js} +23 -3
- package/chunks/{fast-path-settings-WQJU2LAT.js → fast-path-settings-YBRL24DB.js} +2 -2
- package/chunks/{gemini-KDULDQPP.js → gemini-ZXURGM6Y.js} +87 -82
- package/chunks/{geminiContentGenerator-LOCFHNVA.js → geminiContentGenerator-EOODO75Y.js} +6 -6
- package/chunks/{glob-Z4NQFKWS.js → glob-QNRIUOS6.js} +39 -38
- package/chunks/{goal-tools-3AZKX5WQ.js → goal-tools-QSYW65HV.js} +3 -3
- package/chunks/{grep-Z67Z7EN6.js → grep-56MTW67B.js} +39 -38
- package/chunks/{handleAutoUpdate-DFUZE6I6.js → handleAutoUpdate-XGFIPVT4.js} +43 -42
- package/chunks/{i18n-R4FMZ7N2.js → i18n-RZB35L4B.js} +40 -39
- package/chunks/{image-gen-4CQJPQP5.js → image-gen-OE2EEKN3.js} +9 -9
- package/chunks/{initializer-DK672ZVE.js → initializer-YPVMTMKD.js} +46 -45
- package/chunks/{installationInfo-PO4Z3ES7.js → installationInfo-ZTMTMYNW.js} +40 -39
- package/chunks/{keychain-token-storage-7BT4TQ2A.js → keychain-token-storage-TVAMTNP7.js} +2 -2
- package/chunks/{list-QXQF6C53.js → list-NIW3WID5.js} +48 -47
- package/chunks/{list-agents-GC4BRET7.js → list-agents-Z4WABFDZ.js} +2 -2
- package/chunks/{loadedSettingsAdapter-4D7GUGW6.js → loadedSettingsAdapter-VSLILTOZ.js} +45 -44
- package/chunks/{loggingContentGenerator-2P3MNACM.js → loggingContentGenerator-KFZYVAGV.js} +17 -17
- package/chunks/{loop-wakeup-SQQSBMEY.js → loop-wakeup-UZ5RL5Y2.js} +5 -5
- package/chunks/{ls-63CC3NNX.js → ls-TVHDGIES.js} +4 -4
- package/chunks/{lsp-P6NVJVNT.js → lsp-CVN6OQPI.js} +2 -2
- package/chunks/{managed-npm-update-LWVJQTWO.js → managed-npm-update-WHTA2K5V.js} +40 -39
- package/chunks/{mcp-GHETAR6V.js → mcp-7KGK3CS3.js} +45 -44
- package/chunks/{monitor-4T7W4M6Q.js → monitor-FDWEJQWP.js} +39 -38
- package/chunks/nonInteractiveCli-2MVJ6TCS.js +155 -0
- package/chunks/{notebook-edit-OC2V7U5D.js → notebook-edit-ZUVK2XWE.js} +47 -38
- package/chunks/{openaiContentGenerator-RAJUFWQY.js → openaiContentGenerator-TNLWOPH5.js} +28 -21
- package/chunks/{pidfile-HVPYVRLS.js → pidfile-BB6SKPH2.js} +40 -39
- package/chunks/{process-registry-2CHQBXH5.js → process-registry-PMJOA5CO.js} +15 -0
- package/chunks/{processUtils-VIQ4JHVX.js → processUtils-WKHJOPDH.js} +2 -2
- package/chunks/{qwenContentGenerator-2QLCUFNZ.js → qwenContentGenerator-FZS2DYF7.js} +48 -46
- package/chunks/{qwenOAuth2-J2X3EN43.js → qwenOAuth2-UYMYRXBB.js} +9 -9
- package/chunks/{read-file-ZNAN2B26.js → read-file-FMTE6LPA.js} +10 -10
- package/chunks/{read-mcp-resource-RTSSEER5.js → read-mcp-resource-PZ4ZF6YL.js} +2 -2
- package/chunks/{record-artifact-E6AWQU2Z.js → record-artifact-P4HFMS7X.js} +3 -3
- package/chunks/{resumeHistoryUtils-RCY7AL5Y.js → resumeHistoryUtils-Z34RCZFF.js} +45 -43
- package/chunks/{ripGrep-C3KMLZM5.js → ripGrep-DUIYUZGM.js} +39 -38
- package/chunks/{run-qwen-serve-3JN75CIQ.js → run-qwen-serve-KOHHR3F4.js} +145 -62
- package/chunks/{runtime-VUA4WQYD.js → runtime-K4NTZSAU.js} +50 -49
- package/chunks/{scheduler-Z4IBXCOY.js → scheduler-6G6AMURS.js} +39 -38
- package/chunks/{sdk-exporters-http-IL2346MJ.js → sdk-exporters-http-KHAB5JSD.js} +2 -2
- package/chunks/{sdk-impl-SYKGVWOZ.js → sdk-impl-KD7FSTC3.js} +2 -2
- package/chunks/{send-message-TL6FIMMN.js → send-message-CAMSLG2L.js} +6 -5
- package/chunks/{serve-67T3P7XI.js → serve-NMG2TM5K.js} +46 -45
- package/chunks/{server-46ZO2CLV.js → server-FS7KDELS.js} +679 -360
- package/chunks/{session-B4IFAFC4.js → session-XZADUVKJ.js} +82 -81
- package/chunks/{settings-AI2BTBOZ.js → settings-G75R6FOA.js} +44 -43
- package/chunks/{shell-BKII3B6E.js → shell-3D3PMQHE.js} +39 -38
- package/chunks/{skill-6CFOWVGA.js → skill-TSEYMVQ2.js} +14 -14
- package/chunks/{skill-settings-6BFQWMW4.js → skill-settings-HJC2CPBJ.js} +44 -43
- package/chunks/{spawnChannel-FJXW35U7.js → spawnChannel-YWCN74G5.js} +41 -40
- package/chunks/{standalone-update-WVINHRNS.js → standalone-update-HLYOLX6V.js} +41 -40
- package/chunks/{startInteractiveUI-YE57CJ57.js → startInteractiveUI-ROUIQ5KU.js} +486 -187
- package/chunks/{syntheticOutput-BN7E626U.js → syntheticOutput-PEBJQYJV.js} +3 -3
- package/chunks/{task-create-Q727MXHJ.js → task-create-5NWCQSJF.js} +10 -9
- package/chunks/{task-list-G6KPQ5JT.js → task-list-53265TRZ.js} +5 -5
- package/chunks/{task-stop-TNXRNAL2.js → task-stop-FPCOIRYX.js} +2 -2
- package/chunks/{task-update-YB7PXO4R.js → task-update-5HN577LS.js} +10 -9
- package/chunks/{team-create-GNC7NFY6.js → team-create-OTP5SSB2.js} +39 -38
- package/chunks/{team-delete-GDO7H2T4.js → team-delete-MMQB4OSC.js} +5 -5
- package/chunks/{team-plan-approval-ECALJLIO.js → team-plan-approval-TQX5TMXU.js} +39 -38
- package/chunks/{terminal-image-renderer-II74TFVW.js → terminal-image-renderer-KF3GKNWW.js} +45 -39
- package/chunks/{theme-manager-2MGEDD22.js → theme-manager-XVWAAGAM.js} +40 -39
- package/chunks/{todoWrite-MHWHO5UO.js → todoWrite-JGV6VLOX.js} +4 -4
- package/chunks/{tool-search-S6LRRACA.js → tool-search-7N4D4O56.js} +14 -13
- package/chunks/{total-session-admission-7WVAWQPU.js → total-session-admission-ZQ4VKIRW.js} +43 -42
- package/chunks/{trustedFolders-NFS4KHO4.js → trustedFolders-4XYFPWVV.js} +40 -39
- package/chunks/{update-relaunch-Q5HLZ6UW.js → update-relaunch-L4GSBLUU.js} +5 -5
- package/chunks/{updateCheck-UOVZSTP7.js → updateCheck-PCUTVRFE.js} +42 -41
- package/chunks/{useAutoAcceptIndicator-PC6MOJCO.js → useAutoAcceptIndicator-WMXY7MND.js} +47 -46
- package/chunks/{validateNonInterActiveAuth-YMQP3ZM7.js → validateNonInterActiveAuth-5S3U2D56.js} +78 -77
- package/chunks/{version-T4AQFZJH.js → version-P57IQU2T.js} +1 -1
- package/chunks/{web-fetch-JQCJHEEX.js → web-fetch-5ZLLLCDD.js} +13 -13
- package/chunks/{web-search-QGZ2KY4G.js → web-search-NELKANTW.js} +10 -10
- package/chunks/web-shell-static-O73YPVVC.js +33 -0
- package/chunks/{workflow-YIT27YWZ.js → workflow-RXKBF3LO.js} +42 -40
- package/chunks/{workspace-providers-status-FIDZQ2PL.js → workspace-providers-status-HAEMNAWC.js} +48 -47
- package/chunks/{workspace-registration-store-RCSPE4DU.js → workspace-registration-store-U3U3YM6V.js} +1 -1
- package/chunks/{workspace-registry-5PEUCY6E.js → workspace-registry-ZFP33GVB.js} +43 -42
- package/chunks/{workspace-service-LANDVPL7.js → workspace-service-QMISJBMA.js} +50 -49
- package/chunks/{workspace-skills-status-2IQVJNIN.js → workspace-skills-status-K7EOUGXL.js} +46 -45
- package/chunks/{workspace-trust-reconciler-CZPZZCZC.js → workspace-trust-reconciler-BFPKULDZ.js} +50 -49
- package/chunks/{write-file-G5VNGCOG.js → write-file-2F76RRFE.js} +39 -38
- package/chunks/{zoom-image-6RBLD7X6.js → zoom-image-DPR22XWY.js} +10 -10
- package/cli.js +12 -12
- package/package.json +3 -3
- package/web-shell/assets/{arc-B-Vtkp1W.js → arc-CunFPPcQ.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-qmTXIj64.js → architectureDiagram-3BPJPVTR-D3SqCgeM.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-ZlnXEtdP.js → blockDiagram-GPEHLZMM-CPRx90S_.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-Wyoirf6Z.js → c4Diagram-AAUBKEIU-CahP9Ue4.js} +1 -1
- package/web-shell/assets/channel-zbv7GWAw.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-WQwbq9d8.js → chunk-2J33WTMH-DckIWZ12.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DQKnAXC4.js → chunk-4BX2VUAB-D2Kfctyn.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DIdgXNcO.js → chunk-55IACEB6-DkI11FTX.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-CUwGOLEd.js → chunk-727SXJPM-rR-TSCIi.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-CCBGZFZ4.js → chunk-AQP2D5EJ-DFGKcGRO.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-DMGXProk.js → chunk-FMBD7UC4-CjWqcTPE.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-yejcFqsh.js → chunk-ND2GUHAM-RXe-87UV.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-DxCyqTf7.js → chunk-QZHKN3VN-Dz0c_Yrn.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-DSjLkJJZ.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DSjLkJJZ.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-DOrF3cg_.js → cose-bilkent-S5V4N54A-ZHF0-jvV.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-Be6CdYQ_.js → dagre-BM42HDAG-7Umz_ygJ.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-B_Rjsft2.js → diagram-2AECGRRQ-DomN8nxq.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-BvQbKSm1.js → diagram-5GNKFQAL-eebvj2OL.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BsdmMdpS.js → diagram-KO2AKTUF-IR1mmn9d.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-CrQlBaNr.js → diagram-LMA3HP47-CKysx5KF.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-aB1MD_DL.js → diagram-OG6HWLK6-cBy5puHn.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-F-eUUn9n.js → erDiagram-TEJ5UH35-B5RJagPG.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-DY_d8lUK.js → flowDiagram-I6XJVG4X-CfHgDmPg.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-Dqu7KBPg.js → ganttDiagram-6RSMTGT7-DUfFF5nb.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-2IkU_VEj.js → gitGraphDiagram-PVQCEYII-M9dt57k5.js} +1 -1
- package/web-shell/assets/{index-QQlUCJGg.css → index-B8e-CkuC.css} +2 -2
- package/web-shell/assets/{index-BuSbqggh.js → index-CKjO4myk.js} +1 -1
- package/web-shell/assets/index-Dc-fTO0V.js +1768 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-C4orwzPw.js → infoDiagram-5YYISTIA-CTKMmIro.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-fXUEfef_.js → ishikawaDiagram-YF4QCWOH-DJIJDP4s.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-Bs0I1_J5.js → journeyDiagram-JHISSGLW-DgRnvn6S.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-BPRj1dw_.js → kanban-definition-UN3LZRKU-VUwO8yrg.js} +1 -1
- package/web-shell/assets/{linear-DFS6ZDpW.js → linear-BCvgV5I_.js} +1 -1
- package/web-shell/assets/{mermaid.core-CZxjWMaO.js → mermaid.core-mv_kVV6q.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-Dsr3PmNs.js → mindmap-definition-RKZ34NQL-sfnjMlOd.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-D5Ngpz5Y.js → pieDiagram-4H26LBE5-BlhICse4.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-WJK9I25z.js → quadrantDiagram-W4KKPZXB-BgTQzwen.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-CmrYcwOH.js → requirementDiagram-4Y6WPE33-CZ-FTrrN.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-7SjCc4Mv.js → sankeyDiagram-5OEKKPKP-G5Wp_jn3.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Dl9E0IRM.js → sequenceDiagram-3UESZ5HK-C8MKZ3i1.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-CRRio7yV.js → stateDiagram-AJRCARHV-Bo0ZDm7y.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-31TSCPcH.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-DVyXjjfq.js → timeline-definition-PNZ67QCA-M3L9E01f.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-Nb2Lckzq.js → vennDiagram-CIIHVFJN-DD4eHCrm.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-DuL_otIP.js → wardley-L42UT6IY-DNEL_3g4.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DVI9Q4Aa.js → wardleyDiagram-YWT4CUSO-q484OoqI.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-BNjAm7KD.js → xychartDiagram-2RQKCTM6-4mcNt1Yg.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-EMYZIABH.js +0 -81
- package/chunks/nonInteractiveCli-P4UKCJFM.js +0 -154
- package/web-shell/assets/channel-DXaHnfjS.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BigU82A0.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BigU82A0.js +0 -1
- package/web-shell/assets/index-DrfC2e9s.js +0 -1768
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-1atT7XaU.js +0 -1
|
@@ -14,8 +14,9 @@ import {
|
|
|
14
14
|
ChannelBase,
|
|
15
15
|
ChannelProactiveDeliveryError,
|
|
16
16
|
isChannelProactiveDeliveryError,
|
|
17
|
-
isTerminalTaskLifecycleType
|
|
18
|
-
|
|
17
|
+
isTerminalTaskLifecycleType,
|
|
18
|
+
sanitizeSenderName
|
|
19
|
+
} from "./chunk-DIWZNWZT.js";
|
|
19
20
|
import "./chunk-UDXSXLER.js";
|
|
20
21
|
import "./chunk-H6XPXXMH.js";
|
|
21
22
|
import {
|
|
@@ -88998,6 +88999,7 @@ __name(downloadMedia, "downloadMedia");
|
|
|
88998
88999
|
|
|
88999
89000
|
// packages/channels/feishu/dist/FeishuAdapter.js
|
|
89000
89001
|
var DEDUP_TTL_MS = 5 * 60 * 1e3;
|
|
89002
|
+
var OBSERVED_LABEL_CACHE_LIMIT = 500;
|
|
89001
89003
|
var CARD_UPDATE_INTERVAL_MS = 1500;
|
|
89002
89004
|
var FEISHU_RUNNING_STATUS_LABEL = "\u8FD0\u884C\u4E2D...";
|
|
89003
89005
|
var FEISHU_STOPPED_STATUS_LABEL = "\u5DF2\u505C\u6B62\u751F\u6210";
|
|
@@ -89047,6 +89049,15 @@ var FeishuChannel = class extends ChannelBase {
|
|
|
89047
89049
|
botOpenId;
|
|
89048
89050
|
tokenCache;
|
|
89049
89051
|
tokenRefreshPromise;
|
|
89052
|
+
// Core (non-silent) callers waiting on the shared token refresh, so a
|
|
89053
|
+
// silent-initiated refresh still logs token errors for them.
|
|
89054
|
+
tokenRefreshHasCoreWaiters = false;
|
|
89055
|
+
observedUserNames = /* @__PURE__ */ new Map();
|
|
89056
|
+
observedChatNames = /* @__PURE__ */ new Map();
|
|
89057
|
+
observedUserLookups = /* @__PURE__ */ new Map();
|
|
89058
|
+
observedChatLookups = /* @__PURE__ */ new Map();
|
|
89059
|
+
observedContactWrites = /* @__PURE__ */ new Map();
|
|
89060
|
+
hydratedObservedNames = false;
|
|
89050
89061
|
collapsible;
|
|
89051
89062
|
collapsibleThreshold;
|
|
89052
89063
|
constructor(name, config, bridge, options) {
|
|
@@ -89385,10 +89396,12 @@ var FeishuChannel = class extends ChannelBase {
|
|
|
89385
89396
|
text = text.replace(/^好的,<at[^>]*><\/at>\s*\n*/, "");
|
|
89386
89397
|
return text.trim() || void 0;
|
|
89387
89398
|
}
|
|
89388
|
-
async getTenantAccessToken() {
|
|
89399
|
+
async getTenantAccessToken(options) {
|
|
89389
89400
|
if (this.tokenCache && Date.now() < this.tokenCache.expiresAt) {
|
|
89390
89401
|
return this.tokenCache.token;
|
|
89391
89402
|
}
|
|
89403
|
+
if (!options?.silent)
|
|
89404
|
+
this.tokenRefreshHasCoreWaiters = true;
|
|
89392
89405
|
if (this.tokenRefreshPromise)
|
|
89393
89406
|
return this.tokenRefreshPromise;
|
|
89394
89407
|
this.tokenRefreshPromise = this.refreshToken();
|
|
@@ -89396,6 +89409,7 @@ var FeishuChannel = class extends ChannelBase {
|
|
|
89396
89409
|
return await this.tokenRefreshPromise;
|
|
89397
89410
|
} finally {
|
|
89398
89411
|
this.tokenRefreshPromise = void 0;
|
|
89412
|
+
this.tokenRefreshHasCoreWaiters = false;
|
|
89399
89413
|
}
|
|
89400
89414
|
}
|
|
89401
89415
|
async refreshToken() {
|
|
@@ -89410,8 +89424,10 @@ var FeishuChannel = class extends ChannelBase {
|
|
|
89410
89424
|
signal: AbortSignal.timeout(15e3)
|
|
89411
89425
|
});
|
|
89412
89426
|
if (!resp.ok) {
|
|
89413
|
-
|
|
89427
|
+
if (this.tokenRefreshHasCoreWaiters) {
|
|
89428
|
+
process.stderr.write(`[Feishu:${this.name}] getTenantAccessToken failed: HTTP ${resp.status}
|
|
89414
89429
|
`);
|
|
89430
|
+
}
|
|
89415
89431
|
if (resp.status === 401)
|
|
89416
89432
|
this.tokenCache = void 0;
|
|
89417
89433
|
return void 0;
|
|
@@ -89424,11 +89440,172 @@ var FeishuChannel = class extends ChannelBase {
|
|
|
89424
89440
|
};
|
|
89425
89441
|
return this.tokenCache.token;
|
|
89426
89442
|
} catch (err) {
|
|
89427
|
-
|
|
89443
|
+
if (this.tokenRefreshHasCoreWaiters) {
|
|
89444
|
+
process.stderr.write(`[Feishu:${this.name}] getTenantAccessToken error: ${err}
|
|
89428
89445
|
`);
|
|
89446
|
+
}
|
|
89429
89447
|
return void 0;
|
|
89430
89448
|
}
|
|
89431
89449
|
}
|
|
89450
|
+
hydrateObservedNames() {
|
|
89451
|
+
if (this.hydratedObservedNames)
|
|
89452
|
+
return;
|
|
89453
|
+
this.hydratedObservedNames = true;
|
|
89454
|
+
const graph = this.persistedObservedContacts();
|
|
89455
|
+
if (!graph)
|
|
89456
|
+
return;
|
|
89457
|
+
const newestUser = /* @__PURE__ */ new Map();
|
|
89458
|
+
const newestChat = /* @__PURE__ */ new Map();
|
|
89459
|
+
const consider = /* @__PURE__ */ __name((best, id, label, at) => {
|
|
89460
|
+
if (label === id)
|
|
89461
|
+
return;
|
|
89462
|
+
const current = best.get(id);
|
|
89463
|
+
if (!current || at >= current.at)
|
|
89464
|
+
best.set(id, { label, at });
|
|
89465
|
+
}, "consider");
|
|
89466
|
+
for (const user of graph.users) {
|
|
89467
|
+
consider(newestUser, user.id, user.label, user.lastObservedAt);
|
|
89468
|
+
}
|
|
89469
|
+
for (const group of graph.groups) {
|
|
89470
|
+
consider(newestChat, group.id, group.label, group.lastObservedAt);
|
|
89471
|
+
for (const member of group.users) {
|
|
89472
|
+
consider(newestUser, member.id, member.label, member.lastObservedAt);
|
|
89473
|
+
}
|
|
89474
|
+
}
|
|
89475
|
+
for (const [id, entry] of newestUser) {
|
|
89476
|
+
this.observedUserNames.set(id, entry.label);
|
|
89477
|
+
}
|
|
89478
|
+
for (const [id, entry] of newestChat) {
|
|
89479
|
+
this.observedChatNames.set(id, entry.label);
|
|
89480
|
+
}
|
|
89481
|
+
this.capObservedCache(this.observedUserNames);
|
|
89482
|
+
this.capObservedCache(this.observedChatNames);
|
|
89483
|
+
}
|
|
89484
|
+
/** Evicts the oldest-inserted entries once a runtime cache exceeds the cap. */
|
|
89485
|
+
capObservedCache(cache) {
|
|
89486
|
+
let evicted = false;
|
|
89487
|
+
while (cache.size > OBSERVED_LABEL_CACHE_LIMIT) {
|
|
89488
|
+
const oldest = cache.keys().next();
|
|
89489
|
+
if (oldest.done)
|
|
89490
|
+
break;
|
|
89491
|
+
cache.delete(oldest.value);
|
|
89492
|
+
evicted = true;
|
|
89493
|
+
}
|
|
89494
|
+
return evicted;
|
|
89495
|
+
}
|
|
89496
|
+
observedUserName(userId) {
|
|
89497
|
+
const userIdType = userId.startsWith("ou_") ? "open_id" : userId.startsWith("on_") ? "union_id" : "user_id";
|
|
89498
|
+
return this.observedNameLookup({
|
|
89499
|
+
lookups: this.observedUserLookups,
|
|
89500
|
+
names: this.observedUserNames,
|
|
89501
|
+
id: userId,
|
|
89502
|
+
request: /* @__PURE__ */ __name((token) => fetch(`${BASE_URL2}/contact/v3/users/basic_batch?user_id_type=${userIdType}`, {
|
|
89503
|
+
method: "POST",
|
|
89504
|
+
headers: {
|
|
89505
|
+
Authorization: `Bearer ${token}`,
|
|
89506
|
+
"Content-Type": "application/json"
|
|
89507
|
+
},
|
|
89508
|
+
body: JSON.stringify({ user_ids: [userId] }),
|
|
89509
|
+
signal: AbortSignal.timeout(15e3)
|
|
89510
|
+
}), "request"),
|
|
89511
|
+
extractName: /* @__PURE__ */ __name((body) => {
|
|
89512
|
+
const data = body;
|
|
89513
|
+
return data.code === 0 ? data.data?.users?.[0]?.name : void 0;
|
|
89514
|
+
}, "extractName")
|
|
89515
|
+
});
|
|
89516
|
+
}
|
|
89517
|
+
observedChatName(chatId) {
|
|
89518
|
+
return this.observedNameLookup({
|
|
89519
|
+
lookups: this.observedChatLookups,
|
|
89520
|
+
names: this.observedChatNames,
|
|
89521
|
+
id: chatId,
|
|
89522
|
+
request: /* @__PURE__ */ __name((token) => fetch(`${BASE_URL2}/im/v1/chats/${encodeURIComponent(chatId)}`, {
|
|
89523
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
89524
|
+
signal: AbortSignal.timeout(15e3)
|
|
89525
|
+
}), "request"),
|
|
89526
|
+
extractName: /* @__PURE__ */ __name((body) => {
|
|
89527
|
+
const data = body;
|
|
89528
|
+
return data.code === 0 ? data.data?.name : void 0;
|
|
89529
|
+
}, "extractName")
|
|
89530
|
+
});
|
|
89531
|
+
}
|
|
89532
|
+
observedNameLookup(options) {
|
|
89533
|
+
const cached = options.names.get(options.id);
|
|
89534
|
+
if (cached)
|
|
89535
|
+
return Promise.resolve(cached);
|
|
89536
|
+
const existing = options.lookups.get(options.id);
|
|
89537
|
+
if (existing)
|
|
89538
|
+
return existing;
|
|
89539
|
+
const lookup = (async () => {
|
|
89540
|
+
try {
|
|
89541
|
+
const token = await this.getTenantAccessToken({ silent: true });
|
|
89542
|
+
if (!token) {
|
|
89543
|
+
options.lookups.delete(options.id);
|
|
89544
|
+
return void 0;
|
|
89545
|
+
}
|
|
89546
|
+
const response = await options.request(token);
|
|
89547
|
+
if (!response.ok) {
|
|
89548
|
+
if (response.status === 401) {
|
|
89549
|
+
this.tokenCache = void 0;
|
|
89550
|
+
options.lookups.delete(options.id);
|
|
89551
|
+
}
|
|
89552
|
+
return void 0;
|
|
89553
|
+
}
|
|
89554
|
+
const name = options.extractName(await response.json())?.trim();
|
|
89555
|
+
if (!name)
|
|
89556
|
+
return void 0;
|
|
89557
|
+
const label = sanitizeSenderName(name);
|
|
89558
|
+
if (label === "unknown")
|
|
89559
|
+
return void 0;
|
|
89560
|
+
options.names.set(options.id, label);
|
|
89561
|
+
if (this.capObservedCache(options.names)) {
|
|
89562
|
+
this.hydratedObservedNames = false;
|
|
89563
|
+
}
|
|
89564
|
+
return label;
|
|
89565
|
+
} catch {
|
|
89566
|
+
return void 0;
|
|
89567
|
+
}
|
|
89568
|
+
})();
|
|
89569
|
+
options.lookups.set(options.id, lookup);
|
|
89570
|
+
this.capObservedCache(options.lookups);
|
|
89571
|
+
return lookup;
|
|
89572
|
+
}
|
|
89573
|
+
onObservedContact(envelope) {
|
|
89574
|
+
this.observedContactWrites.set(this.observedContactKey(envelope), {
|
|
89575
|
+
senderName: envelope.senderName,
|
|
89576
|
+
chatName: envelope.chatName
|
|
89577
|
+
});
|
|
89578
|
+
this.capObservedCache(this.observedContactWrites);
|
|
89579
|
+
void this.enrichObservedContact(envelope).catch(() => {
|
|
89580
|
+
});
|
|
89581
|
+
}
|
|
89582
|
+
observedContactKey(envelope) {
|
|
89583
|
+
return envelope.isGroup ? `${envelope.senderId}\0${envelope.chatId}\0${envelope.threadId ?? ""}` : envelope.senderId;
|
|
89584
|
+
}
|
|
89585
|
+
async enrichObservedContact(envelope) {
|
|
89586
|
+
const [senderName, chatName] = await Promise.all([
|
|
89587
|
+
this.observedUserName(envelope.senderId),
|
|
89588
|
+
envelope.isGroup ? this.observedChatName(envelope.chatId) : Promise.resolve(void 0)
|
|
89589
|
+
]);
|
|
89590
|
+
if (!senderName && !chatName)
|
|
89591
|
+
return;
|
|
89592
|
+
const key = this.observedContactKey(envelope);
|
|
89593
|
+
const nextLabels = {
|
|
89594
|
+
senderName: senderName ?? envelope.senderName,
|
|
89595
|
+
chatName: chatName ?? envelope.chatName
|
|
89596
|
+
};
|
|
89597
|
+
const persistedLabels = this.observedContactWrites.get(key);
|
|
89598
|
+
if (persistedLabels && persistedLabels.senderName === nextLabels.senderName && persistedLabels.chatName === nextLabels.chatName) {
|
|
89599
|
+
return;
|
|
89600
|
+
}
|
|
89601
|
+
this.observedContactWrites.set(key, nextLabels);
|
|
89602
|
+
this.capObservedCache(this.observedContactWrites);
|
|
89603
|
+
await this.recordObservedContact({
|
|
89604
|
+
...envelope,
|
|
89605
|
+
...senderName ? { senderName } : {},
|
|
89606
|
+
...chatName ? { chatName } : {}
|
|
89607
|
+
});
|
|
89608
|
+
}
|
|
89432
89609
|
async sendMessage(chatId, text) {
|
|
89433
89610
|
await this.sendMessageInternal(chatId, text, false);
|
|
89434
89611
|
}
|
|
@@ -90286,6 +90463,9 @@ ${contentPart}` : prefix : contentPart;
|
|
|
90286
90463
|
const isGroup = msg.chat_type === "group";
|
|
90287
90464
|
const chatId = msg.chat_id;
|
|
90288
90465
|
const senderId = sender.sender_id?.open_id || sender.sender_id?.user_id || sender.sender_id?.union_id || "";
|
|
90466
|
+
this.hydrateObservedNames();
|
|
90467
|
+
const senderName = this.observedUserNames.get(senderId) || senderId;
|
|
90468
|
+
const chatName = isGroup ? this.observedChatNames.get(chatId) : void 0;
|
|
90289
90469
|
const content = this.extractContent(msg.message_type, msg.content);
|
|
90290
90470
|
let isMentioned = false;
|
|
90291
90471
|
let cleanText = content.text;
|
|
@@ -90315,8 +90495,9 @@ ${contentPart}` : prefix : contentPart;
|
|
|
90315
90495
|
const envelope = {
|
|
90316
90496
|
channelName: this.name,
|
|
90317
90497
|
senderId,
|
|
90318
|
-
senderName
|
|
90498
|
+
senderName,
|
|
90319
90499
|
chatId,
|
|
90500
|
+
...chatName ? { chatName } : {},
|
|
90320
90501
|
text: cleanText,
|
|
90321
90502
|
messageId: msgId,
|
|
90322
90503
|
threadId: msg.root_id || void 0,
|