@qwen-code/qwen-code 0.22.0 → 0.22.2-nightly.20260828.7357136dd1
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/computer-use/SKILL.md +229 -0
- package/bundled/computer-use/agents/openai.yaml +4 -0
- package/bundled/coordinate/SKILL.md +5 -5
- package/bundled/goal-draft/SKILL.md +109 -0
- package/bundled/qc-helper/docs/configuration/auth.md +7 -7
- package/bundled/qc-helper/docs/configuration/model-providers.md +70 -9
- package/bundled/qc-helper/docs/configuration/settings.md +48 -48
- package/bundled/qc-helper/docs/extension/introduction.md +3 -1
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/channels/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +12 -0
- package/bundled/qc-helper/docs/features/channels/dws.md +120 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +37 -6
- package/bundled/qc-helper/docs/features/code-review.md +27 -23
- package/bundled/qc-helper/docs/features/commands.md +4 -3
- package/bundled/qc-helper/docs/features/computer-use.md +57 -51
- package/bundled/qc-helper/docs/features/goals.md +58 -0
- package/bundled/qc-helper/docs/features/headless.md +13 -11
- package/bundled/qc-helper/docs/features/mcp.md +35 -12
- package/bundled/qc-helper/docs/features/status-line.md +3 -3
- package/bundled/qc-helper/docs/features/sub-agents.md +1 -1
- package/bundled/qc-helper/docs/features/worktree.md +1 -1
- package/bundled/qc-helper/docs/overview.md +1 -1
- package/bundled/qc-helper/docs/quickstart.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve.md +29 -6
- package/bundled/review/SKILL.md +185 -435
- package/bundled/review/references/aone.md +18 -0
- package/bundled/review/references/persistence.md +109 -0
- package/bundled/review/references/posting.md +272 -0
- package/chunks/MaxSizedBox-LMWXCLDV.js +110 -0
- package/chunks/{StandaloneSessionPicker-KTHPCSR6.js → StandaloneSessionPicker-W3F7U3JL.js} +87 -88
- package/chunks/{acp-startup-profiler-T4GEAPLX.js → acp-startup-profiler-GNYAL6LI.js} +2 -2
- package/chunks/{acpAgent-CRY3JZ5O.js → acpAgent-EYZ6EEHD.js} +3223 -2145
- package/chunks/agent-RBLGBY65.js +95 -0
- package/chunks/agent-headless-L5T4Y4OZ.js +85 -0
- package/chunks/{anthropicContentGenerator-Y2OX6LS4.js → anthropicContentGenerator-GMHML35Q.js} +128 -59
- package/chunks/{artifact-tool-SBXMTVCB.js → artifact-tool-XSMPHZBT.js} +11 -3
- package/chunks/{askUserQuestion-KEQJRFD6.js → askUserQuestion-4SWJY65V.js} +2 -2
- package/chunks/bridge-5LR2F2ND.js +119 -0
- package/chunks/{ca-D3F4S6NG.js → ca-7HPYOYSZ.js} +3 -0
- package/chunks/{channel-management-service-IRTT7RNE.js → channel-management-service-KHR3N6CH.js} +6 -6
- package/chunks/channel-settings-store-4FOAZW72.js +120 -0
- package/chunks/{channel-worker-group-BJNMR2MP.js → channel-worker-group-6NA6BBZV.js} +9 -7
- package/chunks/{channel-worker-manager-EMA7CQDJ.js → channel-worker-manager-NEZ2J6RK.js} +11 -8
- package/chunks/{channel-worker-supervisor-F6I6WSWW.js → channel-worker-supervisor-FKU7DIHJ.js} +12 -6
- package/chunks/{chunk-HDKCKCYO.js → chunk-23RFD54N.js} +1 -1
- package/chunks/{read-package-up-UXSW3YPB.js → chunk-2EAZ43JQ.js} +1 -0
- package/chunks/{chunk-KM73TBQ4.js → chunk-2LD5U7Q3.js} +31 -0
- package/chunks/{chunk-GIWB5QLV.js → chunk-2SXSLSQE.js} +4 -4
- package/chunks/chunk-2TNL5KPM.js +49 -0
- package/chunks/chunk-335CJSNF.js +2320 -0
- package/chunks/chunk-36LGBEM6.js +130 -0
- package/chunks/{chunk-O5BDEWBC.js → chunk-3JXM2CVW.js} +3 -3
- package/chunks/{chunk-2E3V7G6Y.js → chunk-3K6TUZHS.js} +55 -50
- package/chunks/{chunk-WWUSHZ7M.js → chunk-3OOXT6CR.js} +5 -5
- package/chunks/{chunk-2UZJWSVD.js → chunk-3WK3QDNV.js} +2 -2
- package/chunks/{chunk-4J7OPYNS.js → chunk-3XOKEVII.js} +6 -6
- package/chunks/chunk-3Y34Q3JV.js +1584 -0
- package/chunks/{chunk-YMVFIYHV.js → chunk-42IDLQWS.js} +26 -20
- package/chunks/{chunk-7HFULI45.js → chunk-454XFGH4.js} +3 -3
- package/chunks/chunk-4CMJKUND.js +95 -0
- package/chunks/{chunk-XLDFW44M.js → chunk-4K7KNVWH.js} +3 -3
- package/chunks/{chunk-YDJRMQU4.js → chunk-4QHPPXK2.js} +16 -8
- package/chunks/{chunk-7KOFLDEP.js → chunk-5JTIYALA.js} +1 -1
- package/chunks/{chunk-CXJHQVEK.js → chunk-5PA6UEYA.js} +4 -0
- package/chunks/{chunk-7NBVNAJJ.js → chunk-62GQFYID.js} +3 -3
- package/chunks/{chunk-JGUBDRBC.js → chunk-6DIGWMGT.js} +3 -3
- package/chunks/{chunk-X7V3N6YH.js → chunk-6JCGO55P.js} +885 -3380
- package/chunks/{chunk-HIK2OF33.js → chunk-6PJOTWAN.js} +1 -1
- package/chunks/{chunk-VUMLT7E5.js → chunk-6W2IK5KC.js} +956 -17
- package/chunks/{chunk-S4C4JJKE.js → chunk-6ZZBRRKQ.js} +5 -5
- package/chunks/{chunk-W4CRPSC5.js → chunk-7EQQR46F.js} +1 -1
- package/chunks/{chunk-PHJJ3RVO.js → chunk-7GWQW5ID.js} +7 -15
- package/chunks/chunk-7J6OTNGO.js +424 -0
- package/chunks/{chunk-URN2JIAQ.js → chunk-7TUBJBBJ.js} +5 -1
- package/chunks/{chunk-A5F63FEW.js → chunk-7VD6IPQM.js} +1 -1
- package/chunks/{chunk-36OF5PRW.js → chunk-ABS25QER.js} +7 -3
- package/chunks/{chunk-UU4WC7DK.js → chunk-AJGR6E6Z.js} +117 -30
- package/chunks/{chunk-MQP3MHWN.js → chunk-AU3MMVJF.js} +43 -20
- package/chunks/{chunk-ZS5BHEPD.js → chunk-AXC26UCQ.js} +1 -1
- package/chunks/{chunk-PDL6LKB5.js → chunk-AY3BNYEQ.js} +1 -1
- package/chunks/{chunk-O5Z7EB6Y.js → chunk-AYHQZBJ4.js} +170 -207
- package/chunks/{chunk-WRT324N6.js → chunk-B466ZSHZ.js} +3 -3
- package/chunks/{chunk-5XHAOUWD.js → chunk-B5OUL5EL.js} +3 -3
- package/chunks/{chunk-GAHYKJPV.js → chunk-B5PHIJGI.js} +186 -60
- package/chunks/{chunk-IBJ5S45N.js → chunk-B7CDU2SL.js} +2 -2
- package/chunks/{chunk-UZPYR3EV.js → chunk-BFPESSTR.js} +1 -1
- package/chunks/{chunk-43T5WDQ7.js → chunk-BFSFJR3D.js} +1 -1
- package/chunks/{chunk-IWOWEENB.js → chunk-BKWNKLZB.js} +404 -44
- package/chunks/{chunk-3CLIDIVQ.js → chunk-BOWFGCEU.js} +3 -3
- package/chunks/{chunk-BB5IMQCV.js → chunk-BPAKYXQ3.js} +2 -2
- package/chunks/{chunk-ZRYQMWEP.js → chunk-BWORX6FA.js} +2 -2
- package/chunks/{chunk-AP3B7LKD.js → chunk-BXDAPVQU.js} +2 -2
- package/chunks/{chunk-NUGZAFR2.js → chunk-C2X7KY45.js} +147 -6
- package/chunks/{chunk-MZKWFWVG.js → chunk-C3KURPP7.js} +6 -6
- package/chunks/{chunk-WZDM44SB.js → chunk-CAJTKR6W.js} +7 -7
- package/chunks/{chunk-DB2OKNTU.js → chunk-CFJY4DGX.js} +2 -2
- package/chunks/{chunk-QKBYFU2Q.js → chunk-CFKIH3D3.js} +21 -1
- package/chunks/{chunk-I432KXWD.js → chunk-CMHFCLBU.js} +1 -1
- package/chunks/{create-sub-session-XBCVGNFU.js → chunk-CQH5KTKC.js} +4 -6
- package/chunks/{chunk-5HJUPACR.js → chunk-CRKKHXTI.js} +185 -174
- package/chunks/{chunk-L4HVF7LM.js → chunk-CYAUBK46.js} +3 -3
- package/chunks/{chunk-AZF6SME3.js → chunk-D5LUXLUH.js} +3 -3
- package/chunks/{chunk-RPJQ3O4M.js → chunk-DFDWJE6Z.js} +60 -53
- package/chunks/{chunk-KSPRQSB4.js → chunk-DIMEPKCW.js} +52 -12
- package/chunks/chunk-DJBQCO2E.js +842 -0
- package/chunks/{chunk-OVH5Y7KS.js → chunk-DP4MWIM3.js} +19 -3
- package/chunks/{chunk-LI4YHTQK.js → chunk-DYXFD5RO.js} +182 -3
- package/chunks/{chunk-NW35NVFN.js → chunk-E3XVSVKK.js} +26 -4
- package/chunks/{chunk-VSNPOSDN.js → chunk-EB6QRGHM.js} +108 -13
- package/chunks/{chunk-FVBVJEBG.js → chunk-EKNBU2X7.js} +10 -8
- package/chunks/{chunk-DJEHYM4H.js → chunk-EKSCLBBF.js} +3 -3
- package/chunks/{chunk-624NHDGB.js → chunk-ERFDKH32.js} +11 -0
- package/chunks/chunk-EW5VVLJT.js +3525 -0
- package/chunks/{chunk-T6XLJRQY.js → chunk-EWIQ3NAE.js} +38774 -6955
- package/chunks/{chunk-4XPSVIED.js → chunk-FALBWZF4.js} +6 -6
- package/chunks/chunk-FBX2SDQ4.js +48 -0
- package/chunks/{chunk-VMJL7RH6.js → chunk-FEHMA4RO.js} +539 -651
- package/chunks/{chunk-PXOJLJ5W.js → chunk-FMFBLTLY.js} +606 -223
- package/chunks/{chunk-ZLCT4C5A.js → chunk-FTF2YIZ5.js} +1 -1
- package/chunks/{chunk-IOSEW6KP.js → chunk-G6FECKTJ.js} +9 -6
- package/chunks/{chunk-RDG44S5I.js → chunk-GGNE3JAW.js} +2 -2
- package/chunks/chunk-GYTKQYDB.js +23 -0
- package/chunks/{chunk-B6UBOIFE.js → chunk-H33EQVMG.js} +14 -11
- package/chunks/chunk-H72BQNM3.js +645 -0
- package/chunks/{chunk-YZBDKFRQ.js → chunk-HGIMWQVT.js} +995 -892
- package/chunks/chunk-HOCJDUFY.js +20 -0
- package/chunks/{chunk-6UQSU7CQ.js → chunk-HPXV655A.js} +60 -107
- package/chunks/{chunk-45NQKMYB.js → chunk-HVC3PNVC.js} +1 -1
- package/chunks/{chunk-QJHPWLZC.js → chunk-HYDJDQGJ.js} +1 -1
- package/chunks/{chunk-7DMTAQJ6.js → chunk-IB7FQJRY.js} +163 -57
- package/chunks/{chunk-AW27A43Y.js → chunk-ICURCKIU.js} +1428 -120
- package/chunks/{chunk-4F5WV4RF.js → chunk-ISKH4QX3.js} +288 -15
- package/chunks/{chunk-SE55HQGF.js → chunk-J6S24ZJE.js} +92 -70
- package/chunks/{chunk-7DYNJFES.js → chunk-JB4JIVTJ.js} +6 -1
- package/chunks/{chunk-OARZJFZX.js → chunk-JN4IWWMN.js} +4 -4
- package/chunks/{chunk-6PCOVQO2.js → chunk-JUUBLSZU.js} +8 -8
- package/chunks/{chunk-FEMQ6Y7W.js → chunk-JWALNCLT.js} +47 -126
- package/chunks/{chunk-TBVSALA3.js → chunk-K5KXUXWC.js} +3 -3
- package/chunks/{chunk-XYQHT3AW.js → chunk-KTJFDCX4.js} +2 -2
- package/chunks/{chunk-6FRJEE2S.js → chunk-LEFCFTEX.js} +6 -6
- package/chunks/{chunk-BUGYW6FB.js → chunk-LEGTMYAE.js} +1 -1
- package/chunks/{chunk-MPHLIJYL.js → chunk-LLZA2IK3.js} +20 -8
- package/chunks/{chunk-BEGIBJAZ.js → chunk-LNETQKBE.js} +4 -4
- package/chunks/{chunk-KVGR4MCF.js → chunk-LUEHOUHM.js} +3 -3
- package/chunks/{chunk-2A4C2MEG.js → chunk-LVPZO674.js} +35 -12
- package/chunks/{chunk-25NESM4G.js → chunk-M4ORUPYI.js} +29 -5
- package/chunks/{chunk-VFACN2CE.js → chunk-M6FOJXW3.js} +1 -1
- package/chunks/{chunk-FYZMB6DB.js → chunk-MAYHGRP4.js} +12 -12
- package/chunks/{chunk-K3LPAED5.js → chunk-MQM5PJML.js} +24 -4
- package/chunks/{chunk-ZRFUT5VV.js → chunk-MTJN7FOT.js} +7 -7
- package/chunks/{chunk-BGXZBI5B.js → chunk-N4X7G4J2.js} +2 -1
- package/chunks/{chunk-2TRNCJK4.js → chunk-NIFYWDYN.js} +1 -1
- package/chunks/{chunk-SQS55KR4.js → chunk-NU7RKEZR.js} +2 -2
- package/chunks/{chunk-U2UYQMM6.js → chunk-NXMBRVMQ.js} +3 -3
- package/chunks/chunk-OI4NY7RA.js +346 -0
- package/chunks/{chunk-LURJYO2T.js → chunk-OZ6KS6KW.js} +4 -0
- package/chunks/{chunk-K52PZNU4.js → chunk-PDQGMSZK.js} +2 -2
- package/chunks/{chunk-PZRUV52H.js → chunk-PPKZ7JOE.js} +20 -2
- package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
- package/chunks/{chunk-AO4M6NMD.js → chunk-PWIGAMA4.js} +146 -27
- package/chunks/{chunk-S3G6YFQC.js → chunk-QFCDF5PL.js} +1 -1
- package/chunks/chunk-QHMLYMMS.js +32 -0
- package/chunks/{chunk-5XUTPXQU.js → chunk-QPTRRPZU.js} +47 -13
- package/chunks/{chunk-UUQFJILB.js → chunk-RFI4YGMR.js} +34 -267
- package/chunks/{chunk-A6NRNRKE.js → chunk-RFIDDFAL.js} +1 -1
- package/chunks/chunk-RKFGE7JH.js +93 -0
- package/chunks/chunk-RNVFRIOO.js +275 -0
- package/chunks/{chunk-WU5E4HMO.js → chunk-RU7BK6B3.js} +1 -1
- package/chunks/{chunk-J5ZDDUKM.js → chunk-RVXDXY6I.js} +4 -4
- package/chunks/{chunk-OE52YHCZ.js → chunk-RWZB422L.js} +11 -11
- package/chunks/chunk-RXFQM6FQ.js +42 -0
- package/chunks/{chunk-MHG6NDS6.js → chunk-RYNZQGXN.js} +19 -2
- package/chunks/{chunk-4CWDWDL6.js → chunk-SJ5ERAW3.js} +1 -1
- package/chunks/{chunk-Q54XG7IX.js → chunk-SMPR7SPO.js} +1 -1
- package/chunks/{chunk-UIRLQ3N7.js → chunk-SRZZY4IY.js} +3 -3
- package/chunks/{chunk-ND7NOI4P.js → chunk-STUJ7IMZ.js} +0 -92
- package/chunks/{chunk-VYC7XFYV.js → chunk-SUX7HDNA.js} +5 -5
- package/chunks/{chunk-ZZUVC6RI.js → chunk-SVNO44PF.js} +3 -3
- package/chunks/{chunk-FDD2IUEL.js → chunk-SZLBBZH4.js} +370 -35
- package/chunks/{chunk-GHY5OIYP.js → chunk-T2NKRHZZ.js} +13 -13
- package/chunks/chunk-T4EFG2P5.js +113 -0
- package/chunks/{chunk-BMCSKS37.js → chunk-TLHUNMO7.js} +6 -6
- package/chunks/{chunk-JOLJTKIG.js → chunk-TPI7O7HR.js} +1 -1
- package/chunks/{chunk-6QSA4JHL.js → chunk-TQHGJYR3.js} +4492 -1121
- package/chunks/{chunk-ISJMN3ML.js → chunk-TTX2JUE6.js} +1 -1
- package/chunks/{chunk-EFB657PR.js → chunk-TW3E6YNO.js} +3 -3
- package/chunks/{chunk-LD5VIJ7S.js → chunk-TWSKM647.js} +1 -1
- package/chunks/chunk-U54AYGEC.js +337 -0
- package/chunks/{chunk-A5F2YNO6.js → chunk-UHQFIS7N.js} +260 -10
- package/chunks/{chunk-6NFAEG54.js → chunk-UTLCH2FK.js} +24 -13
- package/chunks/{chunk-7JBHIQS2.js → chunk-UY3PBNY3.js} +19 -37
- package/chunks/{chunk-DWCKACFL.js → chunk-V2NDP3I4.js} +2 -2
- package/chunks/{chunk-2GXYDNXP.js → chunk-V2QDDC5J.js} +19 -9
- package/chunks/{chunk-VLRBJ24J.js → chunk-V5J4J5TP.js} +2 -2
- package/chunks/{chunk-X2UOOG5V.js → chunk-VQUGEVGR.js} +1 -1
- package/chunks/{chunk-RDQ7QB4Y.js → chunk-VTHREBQM.js} +2 -2
- package/chunks/{chunk-YLFLHKDL.js → chunk-W3N5XAZ6.js} +1 -1
- package/chunks/{chunk-62JOGZL5.js → chunk-W6DUQ5GA.js} +11497 -10502
- package/chunks/{chunk-P47E4SJC.js → chunk-WALC5VJH.js} +4 -4
- package/chunks/{chunk-3ZFJUBTP.js → chunk-WAOIHTJS.js} +1 -1
- package/chunks/{chunk-KIVGVFMM.js → chunk-WBHKK3CU.js} +16 -4
- package/chunks/{chunk-XZJKSETB.js → chunk-WXEA74YB.js} +3 -3
- package/chunks/{chunk-VEND4KA4.js → chunk-X3ZRTCJD.js} +1 -1
- package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
- package/chunks/{chunk-XL5K4SVK.js → chunk-XF63PKEN.js} +1 -1
- package/chunks/{chunk-LDGWX737.js → chunk-XLLQJRAH.js} +323 -510
- package/chunks/{chunk-2Z6LSQMF.js → chunk-XQFT3QUF.js} +1 -1
- package/chunks/{chunk-P3QQPMQA.js → chunk-XZA32HII.js} +4 -4
- package/chunks/{chunk-C72BXMJ5.js → chunk-Y3QL45LS.js} +1 -1
- package/chunks/{chunk-QS4ENGVF.js → chunk-Y4TPOUEV.js} +17 -8
- package/chunks/{chunk-AVCCKIZ6.js → chunk-YRZX2PHA.js} +1 -1
- package/chunks/{chunk-Z3JMO2CH.js → chunk-YTDVNSUQ.js} +1 -1
- package/chunks/{chunk-WS7PAXXR.js → chunk-YWQ237GX.js} +15 -199
- package/chunks/chunk-ZELCTN6Y.js +29 -0
- package/chunks/{chunk-TQOF5KBL.js → chunk-ZEZKIS2K.js} +0 -31
- package/chunks/{chunk-IIWGSX4L.js → chunk-ZTP35P4B.js} +1 -1
- package/chunks/{chunk-K623ENWT.js → chunk-ZU4UDIWX.js} +23 -1
- package/chunks/chunk-ZYNTSXWK.js +32 -0
- package/chunks/config-utils-JVGAP34H.js +113 -0
- package/chunks/contextCommand-XDB7OSO7.js +106 -0
- package/chunks/{core-runtime-CES6JSVV.js → core-runtime-XHYA2RH7.js} +66 -63
- package/chunks/create-sub-session-23ITIELI.js +17 -0
- package/chunks/{create-sub-session-UJTPMVOG.js → create-sub-session-MHYCFNCM.js} +168 -87
- package/chunks/{cron-create-IKA56DAF.js → cron-create-KJ4IY6PP.js} +57 -10
- package/chunks/{cron-delete-K5Q62EGH.js → cron-delete-MBLQCAYY.js} +4 -4
- package/chunks/{cron-list-QBFGAMP7.js → cron-list-DWH2PQ47.js} +4 -4
- package/chunks/{daemon-RZZUPGOJ.js → daemon-K5XS42ID.js} +567 -27
- package/chunks/{daemon-git-worktree-guard-3QY2BQYB.js → daemon-git-worktree-guard-V3P5XLHB.js} +339 -95
- package/chunks/daemon-status-provider-KKU7ZTLM.js +117 -0
- package/chunks/daemon-trust-policy-TZGK34DW.js +112 -0
- package/chunks/{daemon-trust-policy-monitor-TK4K7M63.js → daemon-trust-policy-monitor-F23DD2M4.js} +69 -69
- package/chunks/{de-RYUHH2C6.js → de-X6HLSIFE.js} +1 -0
- package/chunks/deferred-core-runtime-LKLGBCGZ.js +114 -0
- package/chunks/{display-image-OEJMJV3S.js → display-image-BE7I6ZB6.js} +5 -5
- package/chunks/{dist-5EV2G6MC.js → dist-4WXLCBDR.js} +1 -1
- package/chunks/{dist-ES6HNUW2.js → dist-5VXFRTWU.js} +525 -64
- package/chunks/{dist-ESS34DHC.js → dist-6BPYWHVD.js} +89 -65
- package/chunks/{dist-2OG3PGKO.js → dist-GFN5DCBX.js} +76 -67
- package/chunks/{dist-K7IQB53U.js → dist-HZNT6GQS.js} +1 -1
- package/chunks/{dist-J6P3C52Z.js → dist-LVZCXVPF.js} +99 -26
- package/chunks/{dist-LZO24N3E.js → dist-N6W6E753.js} +71 -64
- package/chunks/dist-QDLFKWOL.js +2512 -0
- package/chunks/{dist-VVQBOKDH.js → dist-SWQMYP2Q.js} +18 -16
- package/chunks/earlyInputCapture-NERYFYTR.js +107 -0
- package/chunks/{edit-A2633SLR.js → edit-ACCATIXB.js} +49 -51
- package/chunks/{en-3RHLPITS.js → en-YLXBXM4Z.js} +5 -1
- package/chunks/{enter-worktree-OIAHE2TB.js → enter-worktree-35QCAAFP.js} +7 -8
- package/chunks/{enterPlanMode-SUGIKLR7.js → enterPlanMode-NEN6EPVM.js} +48 -50
- package/chunks/environment-CKWHBC5T.js +129 -0
- package/chunks/errors-XTZPNQ77.js +113 -0
- package/chunks/{exit-worktree-3UT3SSWT.js → exit-worktree-XQD6D543.js} +7 -8
- package/chunks/exitPlanMode-CY344X5J.js +83 -0
- package/chunks/{fast-path-3AVP3G35.js → fast-path-YSOX4PAM.js} +31 -10
- package/chunks/{fast-path-settings-WHX3J3ZI.js → fast-path-settings-XMFBYFUH.js} +2 -2
- package/chunks/{fr-4PL5GHG4.js → fr-FTZWF462.js} +1 -0
- package/chunks/{gemini-7PVQWHTH.js → gemini-VQY2YCPH.js} +137 -129
- package/chunks/{geminiContentGenerator-B2FOJJDJ.js → geminiContentGenerator-PAPXNIGU.js} +16 -13
- package/chunks/{glob-7YGXE6OV.js → glob-GVCUSBBF.js} +48 -50
- package/chunks/{goal-tools-TLJCE7YZ.js → goal-tools-5STK6OXW.js} +77 -31
- package/chunks/{grep-6DV6LTON.js → grep-5GPICQBU.js} +6 -6
- package/chunks/handleAutoUpdate-ZJPJN42W.js +109 -0
- package/chunks/i18n-BZYKOST7.js +124 -0
- package/chunks/{image-gen-7CSCJ73T.js → image-gen-J6FDGUZP.js} +8 -12
- package/chunks/initializer-GO2C5HE3.js +113 -0
- package/chunks/installationInfo-WM2GXQZ6.js +107 -0
- package/chunks/{ja-HZ7X7PQO.js → ja-2GL5FKYJ.js} +1 -0
- package/chunks/{keychain-token-storage-MTFTAESK.js → keychain-token-storage-37XPR34V.js} +2 -2
- package/chunks/list-ERDJB7PQ.js +116 -0
- package/chunks/{list-agents-43XUEXJV.js → list-agents-DI3YFTDT.js} +2 -2
- package/chunks/loadedSettingsAdapter-7JOCVOKV.js +110 -0
- package/chunks/{loggingContentGenerator-RNE66CKK.js → loggingContentGenerator-3ONLU3BS.js} +327 -39
- package/chunks/{loop-wakeup-E54KDUXC.js → loop-wakeup-XJFONSQ7.js} +5 -5
- package/chunks/{ls-CGL2UC3H.js → ls-3VAT2J7A.js} +4 -4
- package/chunks/{lsp-5IKUO5DX.js → lsp-5W7IRUBH.js} +2 -2
- package/chunks/{managed-npm-update-Y3SC3GLJ.js → managed-npm-update-TLRCC2GE.js} +62 -62
- package/chunks/mcp-2LH3QXR2.js +110 -0
- package/chunks/{monitor-PXYSGSUN.js → monitor-P7LDAL4W.js} +48 -50
- package/chunks/nonInteractiveCli-E5T7PZ27.js +184 -0
- package/chunks/{notebook-edit-ISIBJVBR.js → notebook-edit-F7KSG4WQ.js} +49 -51
- package/chunks/open-with-auth-4UI3KHUR.js +55 -0
- package/chunks/{openaiContentGenerator-6TBOPEGT.js → openaiContentGenerator-2EXCZUGN.js} +29 -32
- package/chunks/pidfile-P25DWA5Q.js +111 -0
- package/chunks/process-registry-OAEG6WGC.js +662 -0
- package/chunks/{processUtils-YK2TDTTU.js → processUtils-PVDKBL35.js} +2 -2
- package/chunks/prompt-terminal-ledger-AJ7T7OIV.js +105 -0
- package/chunks/{pt-QT5N2Q6Q.js → pt-XN2YWJVM.js} +1 -0
- package/chunks/{qwenContentGenerator-CLDMA2Y4.js → qwenContentGenerator-TBBRLWIT.js} +54 -62
- package/chunks/{qwenOAuth2-DLDR6UC5.js → qwenOAuth2-OF5WRBQT.js} +7 -11
- package/chunks/read-file-6IIY4RLJ.js +32 -0
- package/chunks/{read-mcp-resource-XYES2B42.js → read-mcp-resource-XD257PGJ.js} +2 -2
- package/chunks/read-package-up-6T6ICKR7.js +13 -0
- package/chunks/{record-artifact-W3IBTGL7.js → record-artifact-VW23GS4F.js} +4 -5
- package/chunks/report-findings-XA3FJG3N.js +33 -0
- package/chunks/request-shutdown-BCLA3JV2.js +133 -0
- package/chunks/resumeHistoryUtils-44IETXDY.js +118 -0
- package/chunks/ripGrep-E7ESZ7SS.js +39 -0
- package/chunks/{ru-STMG5BPD.js → ru-OLTMFJEW.js} +1 -0
- package/chunks/{run-qwen-serve-XJHOW2NY.js → run-qwen-serve-DXBCYW7V.js} +924 -356
- package/chunks/runtime-RUSPD35D.js +148 -0
- package/chunks/scheduled-tasks-DVRJZO6I.js +127 -0
- package/chunks/scheduler-TDRB2NSY.js +122 -0
- package/chunks/{sdk-exporters-http-RSIOP3G2.js → sdk-exporters-http-TTU2CHBU.js} +5 -5
- package/chunks/{sdk-impl-CB3KARSK.js → sdk-impl-UUMVYMAL.js} +12 -6
- package/chunks/{send-message-J4VT46OI.js → send-message-AJ4OCUBV.js} +24 -29
- package/chunks/serve-KITOM7OR.js +118 -0
- package/chunks/{server-74ONDK62.js → server-THCOMUC2.js} +5814 -4549
- package/chunks/{session-BO6VBWJP.js → session-XKR5MPXE.js} +152 -142
- package/chunks/session-pr-refresh-KRBH7KDA.js +278 -0
- package/chunks/{settings-35QZNFDG.js → settings-YXZ4XBKK.js} +72 -72
- package/chunks/shell-5FJ2DZ3W.js +93 -0
- package/chunks/{skill-DKEMQSNJ.js → skill-VMMJZ6CJ.js} +161 -33
- package/chunks/skill-settings-7SG4YA2W.js +118 -0
- package/chunks/spawnChannel-BPMIXRBI.js +112 -0
- package/chunks/standalone-update-QN5HFRIC.js +118 -0
- package/chunks/{startInteractiveUI-J2QSGWPU.js → startInteractiveUI-5A7RQFRP.js} +3139 -2438
- package/chunks/{syntheticOutput-JAXMIMZP.js → syntheticOutput-ML43GEFN.js} +3 -3
- package/chunks/{task-create-I2H322E4.js → task-create-QN4LYRSE.js} +11 -11
- package/chunks/{task-list-3OLIWFTQ.js → task-list-JPLGK45U.js} +5 -5
- package/chunks/{task-stop-JAUY6MSY.js → task-stop-CXEH5L2D.js} +2 -2
- package/chunks/{task-update-B3XO4CPI.js → task-update-IWEOJFV2.js} +11 -11
- package/chunks/{team-create-W534PMGX.js → team-create-HVGVUL2L.js} +49 -51
- package/chunks/{team-delete-Q7GE7RRI.js → team-delete-RZVVSGCY.js} +5 -5
- package/chunks/{team-plan-approval-WNV6P6NG.js → team-plan-approval-S5A5FQWU.js} +48 -50
- package/chunks/terminal-image-renderer-SIVPPXDI.js +114 -0
- package/chunks/theme-manager-TA33UZZX.js +102 -0
- package/chunks/{todoWrite-FJJTY2TI.js → todoWrite-WDJNQEMW.js} +43 -25
- package/chunks/{tool-search-Y4KL3LRE.js → tool-search-NX7IPDKP.js} +19 -20
- package/chunks/total-session-admission-PWXZBOVX.js +114 -0
- package/chunks/trustedFolders-V6Y4CU3F.js +122 -0
- package/chunks/{update-relaunch-OHVFN6KF.js → update-relaunch-CGSX3R37.js} +6 -6
- package/chunks/updateCheck-T5O2WGIB.js +118 -0
- package/chunks/useAutoAcceptIndicator-ULBJJWPY.js +120 -0
- package/chunks/{validateNonInterActiveAuth-WJXH426F.js → validateNonInterActiveAuth-E5S2JSRC.js} +114 -108
- package/chunks/{version-QMDRADXM.js → version-LS5JPU36.js} +2 -2
- package/chunks/{web-fetch-ROS6P4LP.js → web-fetch-RLMFZTS3.js} +25 -244
- package/chunks/{web-search-JS3E76O6.js → web-search-LMCIC4N5.js} +11 -13
- package/chunks/{web-shell-static-3NUTRHAH.js → web-shell-static-A6QMUNNV.js} +11 -4
- package/chunks/webapi-Z5OM224P.js +4118 -0
- package/chunks/{workflow-2FCMBTBZ.js → workflow-JBXU3IGA.js} +713 -138
- package/chunks/workspace-providers-status-525ORQBH.js +114 -0
- package/chunks/{workspace-registration-store-SU4EJKSD.js → workspace-registration-store-7Y44R4LV.js} +1 -1
- package/chunks/workspace-registry-HS4RWUSQ.js +123 -0
- package/chunks/workspace-service-7PXDM6EB.js +129 -0
- package/chunks/workspace-skills-status-FMJGC2XI.js +113 -0
- package/chunks/{workspace-trust-reconciler-4Y4F7XIX.js → workspace-trust-reconciler-3YTWSQBY.js} +78 -77
- package/chunks/write-file-BVQRYQQO.js +88 -0
- package/chunks/{zh-TW-NX43Z2S2.js → zh-TW-RPTMRTHG.js} +5 -1
- package/chunks/{zh-3JQ75KFU.js → zh-UNY63FR3.js} +5 -1
- package/chunks/{zoom-image-DNBKCGGF.js → zoom-image-FGCELNS4.js} +14 -15
- package/cli.js +13 -13
- package/locales/ca.js +3 -0
- package/locales/de.js +1 -0
- package/locales/en.js +5 -0
- package/locales/fr.js +1 -0
- package/locales/ja.js +1 -0
- package/locales/pt.js +1 -0
- package/locales/ru.js +1 -0
- package/locales/zh-TW.js +5 -0
- package/locales/zh.js +5 -0
- package/package.json +3 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-DWHXEVlf.js → abnfDiagram-VCTEODGH-2XZDeWYO.js} +1 -1
- package/web-shell/assets/{arc-CXKjm86V.js → arc-B6UgMh90.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-B_ynI0cX.js → architectureDiagram-5GKGNRK7-DZgNFeN1.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-DMebd9X0.js → blockDiagram-NRAW4CY4-DQ2wvBFN.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-BZ5BlxS-.js → c4Diagram-UCG6FXSJ-DMmQMrc4.js} +1 -1
- package/web-shell/assets/channel-D_TyfiTx.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-CluJKopE.js → chunk-2Q5K7J3B-C8Zh2e9y.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-hzDAPFOo.js → chunk-5VM5RSS4-C3LTenP8.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-6vHioKJe.js → chunk-F27PBJKO-CxABOc8n.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-B_5hKTGo.js → chunk-G27WJ6UU-CD_JxHDC.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-CO9VoFCH.js → chunk-JWPE2WC7-BdmZPmce.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-7L5JpxYu.js → chunk-LCL6LL3I-80bcHmfK.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-DHLJMAqj.js → chunk-POPQ4Y6H-CNpLZyQF.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-Dt-4Cqdl.js → chunk-SVP7TREG-CXlKgMv3.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-QlSQ3ssG.js → chunk-XXDRQBXY-CivyYyvL.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-Bw_H3xMd.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-Bw_H3xMd.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-DMw3EOxl.js → cose-bilkent-JH36ORCC-COAjRH3w.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-s6vEA7RQ.js → cynefin-OW5HDTMX-DqU1JHO6.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-AOKsvYLt.js → cynefinDiagram-5FMLGOSQ-BCLI1Bvj.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-9QAZn3m7.js → dagre-3AP2YEHR-DmAz8nqF.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-CWpnu4FN.js → diagram-S7CK7UJ4-Ck-5QLT5.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-9l0jXD8q.js → diagram-UQ7AKVKN-C0ljX0mW.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-BMUHroj4.js → diagram-VSXAHHWV-DPgvT24v.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-Co9x27vm.js → diagram-VX7I27RA-D7hWr1LR.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-BKnTeOER.js → diagram-Z3DM3KII-D59tlOta.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-QBZD9CKG.js → ebnfDiagram-PWID7BFC-CY2DDx00.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-dKWAEGun.js → erDiagram-SSCWMZ5O-AR4h8Q8k.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-CR_UgVqj.js → flowDiagram-A5DVABFB-DbF0HqBz.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-DQUnjWO6.js → ganttDiagram-EL5Y4UJY-J52mrIhc.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-C4j59wPL.js → gitGraphDiagram-WWUBYQGX-CcgMY5EV.js} +1 -1
- package/web-shell/assets/index-BjUg3vPr.css +5 -0
- package/web-shell/assets/index-CFwYYVFU.js +1873 -0
- package/web-shell/assets/{index-tYXRIPz4.js → index-MQs7l15A.js} +1 -1
- package/web-shell/assets/{infoDiagram-RXCK75RN-mzqbt50w.js → infoDiagram-RXCK75RN-Buu3ibp2.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-ChLOqhGl.js → ishikawaDiagram-5VMMS53U-CoKQxnF3.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-SifZE-R8.js → journeyDiagram-EYS64GPL-CxK35mTC.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-Sft2qlbc.js → kanban-definition-3QL26DDD-tk2CHTQ1.js} +1 -1
- package/web-shell/assets/{layout-O2uHVkPd.js → layout-DEpMwb4u.js} +1 -1
- package/web-shell/assets/{linear-BVqYgjSc.js → linear-DSQsLh53.js} +1 -1
- package/web-shell/assets/{mermaid.core-CZ9MQaJ6.js → mermaid.core-DIZuPBQT.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-BNQYjBqM.js → mindmap-definition-FBJOCRG2-CCAvk8r_.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-rh1J8uv6.js → pegDiagram-XKGWAZYB-CpJ28jxz.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-BQHR5mn9.js → pieDiagram-E7YTZNPT-ziJR2R32.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-CLCbP7mK.js → quadrantDiagram-AXDQQJYC-B60zE3Mh.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-CDQhrkbm.js → railroadDiagram-O6MQD6OU-M3GqQ_g1.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BdP9uswg.js → requirementDiagram-EFPCY7ZU-ntCtYqTk.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CFZDFBXF.js → sankeyDiagram-P5KCCOFB-AYLoItcZ.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BW9WOJXI.js → sequenceDiagram-WJ2MYXX4-DEWk4Mlj.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-CPMia32z.js → sizeCapture-X5ZJPWSS-OOWvzPay.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-BANp9p7F.js → stateDiagram-HBIQ2CUA-BcMmvxem.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DRLLqPWO.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-JroXksK-.js → swimlanes-XN3QIQJK-DuZTWWvh.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DOfLQQYt.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-DfuVIfYY.js → timeline-definition-24CTP7MA-CjqtZXEd.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-BZXoSjRB.js → vennDiagram-4TSXK5OY-knVCVkQ4.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-BdiY8avC.js → wardleyDiagram-VM6X3IG4-yoWhw0a2.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-DcXh_U4H.js → xychartDiagram-S5SC5T6Z-ue14E_gL.js} +1 -1
- package/web-shell/index.html +20 -5
- package/chunks/MaxSizedBox-3OZJCC3J.js +0 -110
- package/chunks/agent-BFE3DQM3.js +0 -93
- package/chunks/agent-headless-LLVKZZ4P.js +0 -87
- package/chunks/bridge-EBYO4SYM.js +0 -118
- package/chunks/channel-settings-store-5VP2Y2YM.js +0 -115
- package/chunks/chunk-2J3OJGTL.js +0 -98
- package/chunks/chunk-7IV52LTO.js +0 -202
- package/chunks/chunk-AXMWHKXA.js +0 -42
- package/chunks/chunk-F6WFNA7U.js +0 -22
- package/chunks/chunk-IO257NUD.js +0 -623
- package/chunks/chunk-JS73NNWF.js +0 -30
- package/chunks/chunk-SJ4HB27T.js +0 -945
- package/chunks/chunk-VGHZT6JR.js +0 -51
- package/chunks/chunk-YHC2EYYG.js +0 -125
- package/chunks/computer-use-EGPWFEX6.js +0 -2142
- package/chunks/config-utils-WZ43VOBS.js +0 -25
- package/chunks/contextCommand-5DSEQI6S.js +0 -106
- package/chunks/daemon-status-provider-EYMLPYJU.js +0 -116
- package/chunks/daemon-trust-policy-CQYKZ7VO.js +0 -112
- package/chunks/deferred-core-runtime-WFEPUXZR.js +0 -114
- package/chunks/earlyInputCapture-PN4PP7V5.js +0 -107
- package/chunks/environment-WUPHLPKZ.js +0 -127
- package/chunks/errors-WPMPVIAT.js +0 -113
- package/chunks/exitPlanMode-MLFHYZNB.js +0 -85
- package/chunks/handleAutoUpdate-F5OTWUT5.js +0 -109
- package/chunks/i18n-C562S6KN.js +0 -124
- package/chunks/initializer-7YPGOFP4.js +0 -113
- package/chunks/installationInfo-ARU5Q2H7.js +0 -107
- package/chunks/list-KTSK275C.js +0 -116
- package/chunks/loadedSettingsAdapter-F3T2EQ5J.js +0 -110
- package/chunks/mcp-6ONTVPAY.js +0 -110
- package/chunks/nonInteractiveCli-KZDWFAN6.js +0 -178
- package/chunks/pidfile-IO7ALSZF.js +0 -111
- package/chunks/process-registry-PMJOA5CO.js +0 -172
- package/chunks/prompt-terminal-ledger-TCE7PMCE.js +0 -105
- package/chunks/read-file-2HOD2ATO.js +0 -33
- package/chunks/resumeHistoryUtils-DDSBAQJS.js +0 -118
- package/chunks/ripGrep-E7P6K4QR.js +0 -40
- package/chunks/runtime-J4SPTJRQ.js +0 -148
- package/chunks/scheduler-VRAEZZ4E.js +0 -122
- package/chunks/serve-KEAWV4TI.js +0 -118
- package/chunks/shell-H6K63WG3.js +0 -95
- package/chunks/skill-settings-TCKLXIXM.js +0 -118
- package/chunks/spawnChannel-2K6NKWM5.js +0 -111
- package/chunks/standalone-update-LSCGOEFP.js +0 -118
- package/chunks/terminal-image-renderer-UHX3UD66.js +0 -114
- package/chunks/theme-manager-6B47ZPIF.js +0 -102
- package/chunks/total-session-admission-NSCFWGJH.js +0 -113
- package/chunks/trustedFolders-7XMJWGQ3.js +0 -122
- package/chunks/updateCheck-EOVLHD4T.js +0 -118
- package/chunks/useAutoAcceptIndicator-ZNMIGBTN.js +0 -120
- package/chunks/workspace-providers-status-GPGU5YMT.js +0 -113
- package/chunks/workspace-registry-BQISXT6Y.js +0 -122
- package/chunks/workspace-service-LLY6HCUC.js +0 -129
- package/chunks/workspace-skills-status-L5N2Y3ZP.js +0 -113
- package/chunks/write-file-EJHU2Z3E.js +0 -90
- package/web-shell/assets/channel-Zg3WHgq_.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-C16l9jQz.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-C16l9jQz.js +0 -1
- package/web-shell/assets/index-BN_m_uHJ.css +0 -5
- package/web-shell/assets/index-DrlJu79f.js +0 -1792
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-NZYAoQLU.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-3YdVX3vj.js +0 -8
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
sanitizePromptText,
|
|
12
12
|
sanitizeSenderName,
|
|
13
13
|
truncateCodePoints
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-ICURCKIU.js";
|
|
15
15
|
import "./chunk-IW6RQPQB.js";
|
|
16
16
|
import "./chunk-CQ35AJ4Z.js";
|
|
17
17
|
import {
|
|
@@ -31,6 +31,7 @@ init_esbuild_shims();
|
|
|
31
31
|
|
|
32
32
|
// packages/channels/qqbot/dist/QQChannel.js
|
|
33
33
|
init_esbuild_shims();
|
|
34
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
34
35
|
import { readFileSync as readFileSync2, writeFileSync as writeFileSync2, existsSync as existsSync2, mkdirSync as mkdirSync2, renameSync, unlinkSync } from "node:fs";
|
|
35
36
|
import { join as join2 } from "node:path";
|
|
36
37
|
|
|
@@ -403,6 +404,8 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
403
404
|
chatTypeMap = /* @__PURE__ */ new Map();
|
|
404
405
|
/** Track the latest user messageId per chatId for proper reply (msg_id). */
|
|
405
406
|
replyMsgId = /* @__PURE__ */ new Map();
|
|
407
|
+
replyContextByMessageId = /* @__PURE__ */ new Map();
|
|
408
|
+
inboundReplyContext = new AsyncLocalStorage();
|
|
406
409
|
/** msg_seq counter per user messageId, for multi-block streaming. */
|
|
407
410
|
msgSeqMap = /* @__PURE__ */ new Map();
|
|
408
411
|
/** Periodic cleanup timer for expired replyMsgId entries. */
|
|
@@ -469,6 +472,21 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
469
472
|
_reconnectId = 0;
|
|
470
473
|
blockStreaming = false;
|
|
471
474
|
flushedSessions = /* @__PURE__ */ new Set();
|
|
475
|
+
/**
|
|
476
|
+
* Sessions with a prompt turn currently in flight, tracked via
|
|
477
|
+
* onPromptStart/onPromptEnd.
|
|
478
|
+
*
|
|
479
|
+
* This is the discriminator the cron textChunk handler uses to tell
|
|
480
|
+
* "prompt-response chunk" from "cron/non-prompt chunk". streamState
|
|
481
|
+
* cannot serve that role (#6094): it is never populated when
|
|
482
|
+
* blockStreaming is 'on' (onResponseChunk early-returns), so prompt
|
|
483
|
+
* chunks leak into cronBuffer; and a residual entry from a finished
|
|
484
|
+
* turn's unsettled flush silently blocks cron delivery. This set is
|
|
485
|
+
* reliable because ChannelBase always brackets a prompt turn with
|
|
486
|
+
* onPromptStart and onPromptEnd (onPromptEnd runs in the prompt path's
|
|
487
|
+
* finally, even on error/cancel), independent of streaming config.
|
|
488
|
+
*/
|
|
489
|
+
activePromptSessions = /* @__PURE__ */ new Set();
|
|
472
490
|
qqStatePath;
|
|
473
491
|
/**
|
|
474
492
|
* Path to the global sessions.json managed by start.ts.
|
|
@@ -523,7 +541,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
523
541
|
}
|
|
524
542
|
if (!wasInCronFlow)
|
|
525
543
|
return;
|
|
526
|
-
if (this.
|
|
544
|
+
if (this.activePromptSessions.has(sessionId))
|
|
527
545
|
return;
|
|
528
546
|
let entry = this.cronBuffer.get(sessionId);
|
|
529
547
|
if (!entry) {
|
|
@@ -548,7 +566,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
548
566
|
if (toFlush) {
|
|
549
567
|
const target = this.router.getTarget(sessionId);
|
|
550
568
|
if (target) {
|
|
551
|
-
this.
|
|
569
|
+
this.sendMessageWithReplyContext(target.chatId, toFlush).then(() => {
|
|
552
570
|
if (!entry.buffer && this.cronBuffer.get(sessionId) === entry)
|
|
553
571
|
this.cronBuffer.delete(sessionId);
|
|
554
572
|
}).catch((err) => {
|
|
@@ -578,7 +596,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
578
596
|
this.cronBuffer.delete(sessionId);
|
|
579
597
|
return;
|
|
580
598
|
}
|
|
581
|
-
this.
|
|
599
|
+
this.sendMessageWithReplyContext(retryTarget.chatId, toFlush).then(() => {
|
|
582
600
|
entry.pendingRetry = "";
|
|
583
601
|
if (!entry.buffer && this.cronBuffer.get(sessionId) === entry)
|
|
584
602
|
this.cronBuffer.delete(sessionId);
|
|
@@ -612,7 +630,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
612
630
|
this.cronBuffer.delete(sessionId);
|
|
613
631
|
return;
|
|
614
632
|
}
|
|
615
|
-
this.
|
|
633
|
+
this.sendMessageWithReplyContext(retryTarget2.chatId, toFlush).then(() => {
|
|
616
634
|
entry.pendingRetry = "";
|
|
617
635
|
if (!entry.buffer && this.cronBuffer.get(sessionId) === entry)
|
|
618
636
|
this.cronBuffer.delete(sessionId);
|
|
@@ -743,7 +761,26 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
743
761
|
}
|
|
744
762
|
}
|
|
745
763
|
}
|
|
764
|
+
async handleInbound(envelope) {
|
|
765
|
+
const context = envelope.messageId ? this.replyContextByMessageId.get(envelope.messageId) : void 0;
|
|
766
|
+
if (!context || context.chatId !== envelope.chatId) {
|
|
767
|
+
await super.handleInbound(envelope);
|
|
768
|
+
return;
|
|
769
|
+
}
|
|
770
|
+
await this.inboundReplyContext.run(context, () => super.handleInbound(envelope));
|
|
771
|
+
}
|
|
746
772
|
async sendMessage(chatId, text) {
|
|
773
|
+
const inboundContext = this.inboundReplyContext.getStore();
|
|
774
|
+
const latest = this.replyMsgId.get(chatId);
|
|
775
|
+
const replyContext = inboundContext?.chatId === chatId ? inboundContext : latest ? { chatId, ...latest } : void 0;
|
|
776
|
+
await this.sendMessageWithReplyContext(chatId, text, replyContext);
|
|
777
|
+
}
|
|
778
|
+
async sendResponseMessage(chatId, text, sessionId) {
|
|
779
|
+
const messageId = this.getResponseMessageId(sessionId);
|
|
780
|
+
const replyContext = messageId ? this.replyContextByMessageId.get(messageId) : void 0;
|
|
781
|
+
await this.sendMessageWithReplyContext(chatId, text, replyContext);
|
|
782
|
+
}
|
|
783
|
+
async sendMessageWithReplyContext(chatId, text, replyContext) {
|
|
747
784
|
if (text.trim() === "<noreply>") {
|
|
748
785
|
process.stderr.write(`[QQ:${this.name}] <noreply> skipped for ${sanitizeLogText(chatId, 64)}
|
|
749
786
|
`);
|
|
@@ -752,13 +789,12 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
752
789
|
const route = await this.resolveRoute(chatId);
|
|
753
790
|
if (!route)
|
|
754
791
|
return;
|
|
755
|
-
const entry =
|
|
792
|
+
const entry = replyContext?.chatId === chatId ? replyContext : void 0;
|
|
756
793
|
const msgId = entry && Date.now() - entry.timestamp < _QQChannel.REPLY_MSG_ID_TTL_MS ? entry.msgId : void 0;
|
|
757
794
|
if (entry && !msgId) {
|
|
758
795
|
process.stderr.write(`[QQ:${this.name}] replyMsgId entry expired for ${sanitizeLogText(chatId, 64)}, reply context expired, sending without msg_id
|
|
759
796
|
`);
|
|
760
|
-
this.
|
|
761
|
-
this.replyMsgId.delete(chatId);
|
|
797
|
+
this.deleteReplyContext(entry);
|
|
762
798
|
this.saveQQState();
|
|
763
799
|
}
|
|
764
800
|
if (!msgId && this.groupActiveMsgEnabled.get(chatId) === false) {
|
|
@@ -976,6 +1012,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
976
1012
|
this.detachCronHandler();
|
|
977
1013
|
this.chatTypeMap.clear();
|
|
978
1014
|
this.replyMsgId.clear();
|
|
1015
|
+
this.replyContextByMessageId.clear();
|
|
979
1016
|
this.msgSeqMap.clear();
|
|
980
1017
|
this.botOpenIdByGroup.clear();
|
|
981
1018
|
this.warnedSenderOpenIds.clear();
|
|
@@ -995,23 +1032,36 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
995
1032
|
this.flushingSessions.clear();
|
|
996
1033
|
this.pendingStreamDelete.clear();
|
|
997
1034
|
this.flushedSessions.clear();
|
|
1035
|
+
this.activePromptSessions.clear();
|
|
998
1036
|
}
|
|
999
1037
|
/**
|
|
1000
|
-
* QQ Bot API V2 does not provide a typing indicator endpoint
|
|
1001
|
-
*
|
|
1002
|
-
*
|
|
1038
|
+
* QQ Bot API V2 does not provide a typing indicator endpoint, but these
|
|
1039
|
+
* hooks still maintain activePromptSessions — the cron textChunk
|
|
1040
|
+
* discriminator (see activePromptSessions). ChannelBase always pairs the
|
|
1041
|
+
* two calls per prompt turn (onPromptEnd runs in the prompt path's
|
|
1042
|
+
* finally, even on error/cancel).
|
|
1003
1043
|
*/
|
|
1004
|
-
onPromptStart(_chatId,
|
|
1044
|
+
onPromptStart(_chatId, sessionId, _messageId) {
|
|
1045
|
+
this.activePromptSessions.add(sessionId);
|
|
1005
1046
|
}
|
|
1006
|
-
onPromptEnd(_chatId,
|
|
1047
|
+
onPromptEnd(_chatId, sessionId, _messageId) {
|
|
1048
|
+
this.activePromptSessions.delete(sessionId);
|
|
1007
1049
|
}
|
|
1008
1050
|
// ── Streaming (idle-flush with per-session buffers) ────────────
|
|
1009
|
-
onResponseChunk(chatId, chunk, sessionId) {
|
|
1051
|
+
onResponseChunk(chatId, chunk, sessionId, segment) {
|
|
1010
1052
|
if (this.blockStreaming)
|
|
1011
1053
|
return;
|
|
1012
1054
|
let state = this.streamState.get(sessionId);
|
|
1013
1055
|
if (!state) {
|
|
1014
|
-
|
|
1056
|
+
const messageId = segment?.messageId ?? this.getResponseMessageId(sessionId);
|
|
1057
|
+
const replyContext = messageId ? this.replyContextByMessageId.get(messageId) : void 0;
|
|
1058
|
+
state = {
|
|
1059
|
+
chatId,
|
|
1060
|
+
buffer: chunk,
|
|
1061
|
+
timer: null,
|
|
1062
|
+
retryCount: 0,
|
|
1063
|
+
...replyContext ? { replyContext } : {}
|
|
1064
|
+
};
|
|
1015
1065
|
this.streamState.set(sessionId, state);
|
|
1016
1066
|
} else {
|
|
1017
1067
|
state.buffer += chunk;
|
|
@@ -1071,7 +1121,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
1071
1121
|
*/
|
|
1072
1122
|
flushAndTrack(sessionId, buffer, state, logLabel) {
|
|
1073
1123
|
this.flushingSessions.add(sessionId);
|
|
1074
|
-
this.
|
|
1124
|
+
this.sendMessageWithReplyContext(state.chatId, buffer, state.replyContext).then(() => {
|
|
1075
1125
|
const current = this.streamState.get(sessionId);
|
|
1076
1126
|
if (current !== state)
|
|
1077
1127
|
return;
|
|
@@ -1218,6 +1268,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
1218
1268
|
this.flushingSessions.delete(sessionId);
|
|
1219
1269
|
this.pendingStreamDelete.delete(sessionId);
|
|
1220
1270
|
this.flushedSessions.delete(sessionId);
|
|
1271
|
+
this.activePromptSessions.delete(sessionId);
|
|
1221
1272
|
super.onSessionDied(sessionId);
|
|
1222
1273
|
}
|
|
1223
1274
|
// ── State Persistence (cross-server context continuation) ──────
|
|
@@ -1341,7 +1392,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
1341
1392
|
if (v === null || typeof v !== "object")
|
|
1342
1393
|
return false;
|
|
1343
1394
|
const o = v;
|
|
1344
|
-
return typeof o["msgId"] === "string" && o["msgId"].length <= 128 && typeof o["timestamp"] === "number" && Number.isFinite(o["timestamp"]) && o["timestamp"] <= Date.now() + _QQChannel.REPLY_MSG_ID_TTL_MS;
|
|
1395
|
+
return typeof o["msgId"] === "string" && o["msgId"].length <= 128 && typeof o["timestamp"] === "number" && Number.isFinite(o["timestamp"]) && o["timestamp"] >= Date.now() - _QQChannel.REPLY_MSG_ID_TTL_MS && o["timestamp"] <= Date.now() + _QQChannel.REPLY_MSG_ID_TTL_MS;
|
|
1345
1396
|
}).map(([k, v]) => [
|
|
1346
1397
|
k,
|
|
1347
1398
|
typeof v === "string" ? { msgId: v, timestamp: Date.now() } : v
|
|
@@ -1351,6 +1402,10 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
1351
1402
|
`);
|
|
1352
1403
|
}
|
|
1353
1404
|
}
|
|
1405
|
+
this.replyContextByMessageId = new Map(Array.from(this.replyMsgId, ([chatId, entry]) => [
|
|
1406
|
+
entry.msgId,
|
|
1407
|
+
{ chatId, ...entry }
|
|
1408
|
+
]));
|
|
1354
1409
|
if (raw.msgSeqMap) {
|
|
1355
1410
|
const arr = raw.msgSeqMap;
|
|
1356
1411
|
const totalRaw = Array.isArray(arr) ? arr.length : 0;
|
|
@@ -1360,6 +1415,11 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
1360
1415
|
`);
|
|
1361
1416
|
}
|
|
1362
1417
|
}
|
|
1418
|
+
for (const msgId of this.msgSeqMap.keys()) {
|
|
1419
|
+
if (!this.replyContextByMessageId.has(msgId)) {
|
|
1420
|
+
this.msgSeqMap.delete(msgId);
|
|
1421
|
+
}
|
|
1422
|
+
}
|
|
1363
1423
|
if (raw.groupActiveMsgEnabled) {
|
|
1364
1424
|
const arr = raw.groupActiveMsgEnabled;
|
|
1365
1425
|
const totalRaw = Array.isArray(arr) ? arr.length : 0;
|
|
@@ -1459,18 +1519,19 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
1459
1519
|
}
|
|
1460
1520
|
}
|
|
1461
1521
|
// ── ReplyMsgId helpers ────────────────────────────────────────
|
|
1462
|
-
/**
|
|
1463
|
-
* Set replyMsgId for a chat, cleaning up the previous entry's msgSeqMap
|
|
1464
|
-
* to prevent orphaned entries accumulating over time.
|
|
1465
|
-
*/
|
|
1466
1522
|
setReplyMsgId(chatId, msgId) {
|
|
1467
|
-
const
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
}
|
|
1471
|
-
this.replyMsgId.set(chatId, { msgId, timestamp: Date.now() });
|
|
1523
|
+
const timestamp = Date.now();
|
|
1524
|
+
this.replyMsgId.set(chatId, { msgId, timestamp });
|
|
1525
|
+
this.replyContextByMessageId.set(msgId, { chatId, msgId, timestamp });
|
|
1472
1526
|
this.saveQQState();
|
|
1473
1527
|
}
|
|
1528
|
+
deleteReplyContext(context) {
|
|
1529
|
+
this.replyContextByMessageId.delete(context.msgId);
|
|
1530
|
+
this.msgSeqMap.delete(context.msgId);
|
|
1531
|
+
if (this.replyMsgId.get(context.chatId)?.msgId === context.msgId) {
|
|
1532
|
+
this.replyMsgId.delete(context.chatId);
|
|
1533
|
+
}
|
|
1534
|
+
}
|
|
1474
1535
|
/**
|
|
1475
1536
|
* Start periodic cleanup of expired replyMsgId entries.
|
|
1476
1537
|
* Evicts entries older than 5 minutes every 60 seconds, and cascades
|
|
@@ -1481,6 +1542,12 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
1481
1542
|
this.replyMsgIdCleanupTimer = setInterval(() => {
|
|
1482
1543
|
const cutoff = Date.now() - _QQChannel.REPLY_MSG_ID_TTL_MS;
|
|
1483
1544
|
let dirty = false;
|
|
1545
|
+
for (const context of this.replyContextByMessageId.values()) {
|
|
1546
|
+
if (context.timestamp < cutoff) {
|
|
1547
|
+
this.deleteReplyContext(context);
|
|
1548
|
+
dirty = true;
|
|
1549
|
+
}
|
|
1550
|
+
}
|
|
1484
1551
|
for (const [chatId, entry] of this.replyMsgId) {
|
|
1485
1552
|
if (entry.timestamp < cutoff) {
|
|
1486
1553
|
this.msgSeqMap.delete(entry.msgId);
|
|
@@ -2267,6 +2334,12 @@ var QQChannel = class _QQChannel extends ChannelBase {
|
|
|
2267
2334
|
if (replyEntry)
|
|
2268
2335
|
this.msgSeqMap.delete(replyEntry.msgId);
|
|
2269
2336
|
this.replyMsgId.delete(groupId);
|
|
2337
|
+
for (const context of this.replyContextByMessageId.values()) {
|
|
2338
|
+
if (context.chatId === groupId) {
|
|
2339
|
+
this.replyContextByMessageId.delete(context.msgId);
|
|
2340
|
+
this.msgSeqMap.delete(context.msgId);
|
|
2341
|
+
}
|
|
2342
|
+
}
|
|
2270
2343
|
this.botOpenIdByGroup.delete(groupId);
|
|
2271
2344
|
this._lastKeywordNoMatchLog.delete(groupId);
|
|
2272
2345
|
let cleanedCron = 0;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
ChannelBase,
|
|
5
5
|
isTerminalTaskLifecycleType
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ICURCKIU.js";
|
|
7
7
|
import "./chunk-IW6RQPQB.js";
|
|
8
8
|
import {
|
|
9
9
|
require_abort_controller,
|
|
@@ -9737,20 +9737,21 @@ var TelegramChannel = class extends ChannelBase {
|
|
|
9737
9737
|
const photo = msg.photo[msg.photo.length - 1];
|
|
9738
9738
|
if (!photo)
|
|
9739
9739
|
return;
|
|
9740
|
-
|
|
9741
|
-
|
|
9742
|
-
|
|
9743
|
-
|
|
9744
|
-
|
|
9745
|
-
|
|
9746
|
-
|
|
9747
|
-
|
|
9748
|
-
|
|
9749
|
-
|
|
9750
|
-
|
|
9740
|
+
this.prepareThenHandleInbound(envelope, async () => {
|
|
9741
|
+
try {
|
|
9742
|
+
const file = await ctx.api.getFile(photo.file_id);
|
|
9743
|
+
const fileUrl = this.getFileUrl(file.file_path);
|
|
9744
|
+
const resp = await fetch(fileUrl);
|
|
9745
|
+
if (!resp.ok)
|
|
9746
|
+
throw new Error(`HTTP ${resp.status}`);
|
|
9747
|
+
const buf = Buffer.from(await resp.arrayBuffer());
|
|
9748
|
+
envelope.imageBase64 = buf.toString("base64");
|
|
9749
|
+
envelope.imageMimeType = "image/jpeg";
|
|
9750
|
+
} catch (err) {
|
|
9751
|
+
process.stderr.write(`[Telegram:${this.name}] Failed to download photo: ${err instanceof Error ? err.message : err}
|
|
9751
9752
|
`);
|
|
9752
|
-
|
|
9753
|
-
|
|
9753
|
+
}
|
|
9754
|
+
}).catch((err) => {
|
|
9754
9755
|
process.stderr.write(`[Telegram:${this.name}] Error handling message: ${err}
|
|
9755
9756
|
`);
|
|
9756
9757
|
ctx.reply("Sorry, something went wrong processing your message.").catch(() => {
|
|
@@ -9762,34 +9763,35 @@ var TelegramChannel = class extends ChannelBase {
|
|
|
9762
9763
|
const doc = msg.document;
|
|
9763
9764
|
const fileName = doc.file_name || `file_${Date.now()}`;
|
|
9764
9765
|
const envelope = this.buildEnvelope(msg, msg.caption || `(file: ${fileName})`, msg.caption_entities);
|
|
9765
|
-
|
|
9766
|
-
|
|
9767
|
-
|
|
9768
|
-
|
|
9769
|
-
|
|
9770
|
-
|
|
9771
|
-
|
|
9772
|
-
|
|
9773
|
-
|
|
9774
|
-
|
|
9775
|
-
|
|
9776
|
-
|
|
9777
|
-
|
|
9778
|
-
|
|
9779
|
-
|
|
9780
|
-
|
|
9781
|
-
|
|
9782
|
-
|
|
9783
|
-
|
|
9784
|
-
|
|
9785
|
-
|
|
9786
|
-
|
|
9766
|
+
this.prepareThenHandleInbound(envelope, async () => {
|
|
9767
|
+
try {
|
|
9768
|
+
const file = await ctx.api.getFile(doc.file_id);
|
|
9769
|
+
const fileUrl = this.getFileUrl(file.file_path);
|
|
9770
|
+
const resp = await fetch(fileUrl);
|
|
9771
|
+
if (!resp.ok)
|
|
9772
|
+
throw new Error(`HTTP ${resp.status}`);
|
|
9773
|
+
const buf = Buffer.from(await resp.arrayBuffer());
|
|
9774
|
+
const dir = join(tmpdir(), "channel-files", randomUUID());
|
|
9775
|
+
mkdirSync(dir, { recursive: true });
|
|
9776
|
+
const filePath = join(dir, basename(fileName) || `file_${Date.now()}`);
|
|
9777
|
+
writeFileSync(filePath, buf);
|
|
9778
|
+
envelope.text = msg.caption || "";
|
|
9779
|
+
envelope.attachments = [
|
|
9780
|
+
{
|
|
9781
|
+
type: "file",
|
|
9782
|
+
filePath,
|
|
9783
|
+
mimeType: doc.mime_type || "application/octet-stream",
|
|
9784
|
+
fileName
|
|
9785
|
+
}
|
|
9786
|
+
];
|
|
9787
|
+
} catch (err) {
|
|
9788
|
+
process.stderr.write(`[Telegram:${this.name}] Failed to download document: ${err instanceof Error ? err.message : err}
|
|
9787
9789
|
`);
|
|
9788
|
-
|
|
9790
|
+
envelope.text = (msg.caption || "") + `
|
|
9789
9791
|
|
|
9790
9792
|
(User sent a file "${fileName}" but download failed)`;
|
|
9791
|
-
|
|
9792
|
-
|
|
9793
|
+
}
|
|
9794
|
+
}).catch((err) => {
|
|
9793
9795
|
process.stderr.write(`[Telegram:${this.name}] Error handling message: ${err}
|
|
9794
9796
|
`);
|
|
9795
9797
|
ctx.reply("Sorry, something went wrong processing your message.").catch(() => {
|
|
@@ -9801,34 +9803,35 @@ var TelegramChannel = class extends ChannelBase {
|
|
|
9801
9803
|
const voice = msg.voice;
|
|
9802
9804
|
const fileName = `voice_${Date.now()}.ogg`;
|
|
9803
9805
|
const envelope = this.buildEnvelope(msg, msg.caption || "(voice message)", msg.caption_entities);
|
|
9804
|
-
|
|
9805
|
-
|
|
9806
|
-
|
|
9807
|
-
|
|
9808
|
-
|
|
9809
|
-
|
|
9810
|
-
|
|
9811
|
-
|
|
9812
|
-
|
|
9813
|
-
|
|
9814
|
-
|
|
9815
|
-
|
|
9816
|
-
|
|
9817
|
-
|
|
9818
|
-
|
|
9819
|
-
|
|
9820
|
-
|
|
9821
|
-
|
|
9822
|
-
|
|
9823
|
-
|
|
9824
|
-
|
|
9825
|
-
|
|
9806
|
+
this.prepareThenHandleInbound(envelope, async () => {
|
|
9807
|
+
try {
|
|
9808
|
+
const file = await ctx.api.getFile(voice.file_id);
|
|
9809
|
+
const fileUrl = this.getFileUrl(file.file_path);
|
|
9810
|
+
const resp = await fetch(fileUrl);
|
|
9811
|
+
if (!resp.ok)
|
|
9812
|
+
throw new Error(`HTTP ${resp.status}`);
|
|
9813
|
+
const buf = Buffer.from(await resp.arrayBuffer());
|
|
9814
|
+
const dir = join(tmpdir(), "channel-files", randomUUID());
|
|
9815
|
+
mkdirSync(dir, { recursive: true });
|
|
9816
|
+
const filePath = join(dir, fileName);
|
|
9817
|
+
writeFileSync(filePath, buf);
|
|
9818
|
+
envelope.text = msg.caption || "";
|
|
9819
|
+
envelope.attachments = [
|
|
9820
|
+
{
|
|
9821
|
+
type: "audio",
|
|
9822
|
+
filePath,
|
|
9823
|
+
mimeType: voice.mime_type || "audio/ogg",
|
|
9824
|
+
fileName
|
|
9825
|
+
}
|
|
9826
|
+
];
|
|
9827
|
+
} catch (err) {
|
|
9828
|
+
process.stderr.write(`[Telegram:${this.name}] Failed to download voice message: ${err instanceof Error ? err.message : err}
|
|
9826
9829
|
`);
|
|
9827
|
-
|
|
9830
|
+
envelope.text = (msg.caption || "") + `
|
|
9828
9831
|
|
|
9829
9832
|
(User sent a voice message but download failed)`;
|
|
9830
|
-
|
|
9831
|
-
|
|
9833
|
+
}
|
|
9834
|
+
}).catch((err) => {
|
|
9832
9835
|
process.stderr.write(`[Telegram:${this.name}] Error handling message: ${err}
|
|
9833
9836
|
`);
|
|
9834
9837
|
ctx.reply("Sorry, something went wrong processing your message.").catch(() => {
|
|
@@ -9913,6 +9916,10 @@ var TelegramChannel = class extends ChannelBase {
|
|
|
9913
9916
|
const route = envelope.threadId === void 0 ? {} : { threadId: envelope.threadId };
|
|
9914
9917
|
await this.inboundRoute.run(route, () => super.handleInbound(envelope));
|
|
9915
9918
|
}
|
|
9919
|
+
async prepareThenHandleInbound(envelope, prepare) {
|
|
9920
|
+
const route = envelope.threadId === void 0 ? {} : { threadId: envelope.threadId };
|
|
9921
|
+
await this.inboundRoute.run(route, () => super.prepareThenHandleInbound(envelope, prepare));
|
|
9922
|
+
}
|
|
9916
9923
|
async sendMessage(chatId, text) {
|
|
9917
9924
|
await this.sendTelegramMessage(chatId, text, this.inboundRoute.getStore()?.threadId);
|
|
9918
9925
|
}
|