@qwen-code/qwen-code 0.22.2 → 0.22.3-nightly.20260831.3a0c4c6108
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 +3 -3
- package/bundled/qc-helper/docs/common-workflow.md +32 -0
- package/bundled/qc-helper/docs/configuration/auth.md +6 -6
- package/bundled/qc-helper/docs/configuration/model-providers.md +4 -2
- package/bundled/qc-helper/docs/configuration/settings.md +47 -44
- package/bundled/qc-helper/docs/extension/introduction.md +1 -1
- package/bundled/qc-helper/docs/features/approval-mode.md +3 -0
- package/bundled/qc-helper/docs/features/auto-mode.md +34 -17
- package/bundled/qc-helper/docs/features/channels/dws.md +2 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +36 -3
- package/bundled/qc-helper/docs/features/code-review.md +5 -5
- package/bundled/qc-helper/docs/features/commands.md +41 -0
- package/bundled/qc-helper/docs/features/computer-use.md +2 -2
- package/bundled/qc-helper/docs/features/hooks.md +6 -2
- package/bundled/qc-helper/docs/features/memory.md +1 -0
- package/bundled/qc-helper/docs/features/tool-use-summaries.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +17 -7
- package/bundled/qc-helper/docs/qwen-serve.md +59 -55
- package/bundled/review/SKILL.md +90 -31
- package/bundled/review/references/persistence.md +7 -3
- package/bundled/review/references/posting.md +11 -5
- package/chunks/MaxSizedBox-IHRTWGSY.js +115 -0
- package/chunks/{StandaloneSessionPicker-AVLI6VJP.js → StandaloneSessionPicker-TLVWVTJ7.js} +88 -85
- package/chunks/{acp-startup-profiler-GNYAL6LI.js → acp-startup-profiler-M4X5F3VK.js} +2 -2
- package/chunks/{acpAgent-MXEAN54C.js → acpAgent-7I5LLPP3.js} +1563 -407
- package/chunks/agent-4Z4NTJXD.js +99 -0
- package/chunks/agent-headless-TVUJXQWU.js +89 -0
- package/chunks/{anthropicContentGenerator-HGMBACVE.js → anthropicContentGenerator-VSSPG7XV.js} +84 -55
- package/chunks/{artifact-tool-5YT4QF7Y.js → artifact-tool-TEYW6I4A.js} +11 -3
- package/chunks/{askUserQuestion-4SWJY65V.js → askUserQuestion-PYNBWV63.js} +45 -7
- package/chunks/bridge-EVURP4NO.js +122 -0
- package/chunks/{ca-7HPYOYSZ.js → ca-BNU7YNDE.js} +3 -0
- package/chunks/{channel-management-service-X4AZ6IXX.js → channel-management-service-IDBNYSFW.js} +6 -6
- package/chunks/channel-settings-store-MZNXRKVI.js +125 -0
- package/chunks/{channel-worker-group-27HMGD5S.js → channel-worker-group-ZLP5SJHT.js} +7 -7
- package/chunks/{channel-worker-manager-QEGX646Z.js → channel-worker-manager-FG5377T2.js} +7 -7
- package/chunks/{channel-worker-supervisor-UEW2WWCC.js → channel-worker-supervisor-HDVE4ADS.js} +4 -4
- package/chunks/{chunk-PPKZ7JOE.js → chunk-22UH7VTP.js} +1 -1
- package/chunks/chunk-24FVUD5P.js +49 -0
- package/chunks/{chunk-CMHFCLBU.js → chunk-26SIKQIC.js} +1 -1
- package/chunks/{chunk-5PA6UEYA.js → chunk-3452WXOK.js} +4 -1
- package/chunks/{chunk-SFPGAQUL.js → chunk-373DQUVA.js} +72 -31
- package/chunks/{chunk-H2WDGQ6D.js → chunk-3AKCBZVW.js} +3 -3
- package/chunks/{chunk-LXIBMVRN.js → chunk-3CZGSTZX.js} +15 -9
- package/chunks/{chunk-JVPFTDBK.js → chunk-3EGEBDTW.js} +1 -1
- package/chunks/{chunk-K2NQPH5D.js → chunk-3NQCZMUB.js} +79 -5
- package/chunks/{chunk-E7REAOTN.js → chunk-47ECGEJC.js} +4 -0
- package/chunks/{chunk-WKK5BQNP.js → chunk-4P7PPAHN.js} +45 -421
- package/chunks/chunk-4VQBQLIZ.js +293 -0
- package/chunks/{chunk-4JWNNLPT.js → chunk-5FGWVPCM.js} +4 -4
- package/chunks/{chunk-ZFKOCECU.js → chunk-5ICKESC3.js} +2 -2
- package/chunks/{chunk-3I6UTTDX.js → chunk-67AY5D3M.js} +20 -20
- package/chunks/chunk-6HUXPLB5.js +110 -0
- package/chunks/{chunk-BRVWYMKV.js → chunk-6MBXY6WM.js} +1 -1
- package/chunks/{chunk-6LFTG244.js → chunk-6NWPR2EB.js} +19 -9
- package/chunks/chunk-6OO7QEWV.js +2581 -0
- package/chunks/{chunk-TWSKM647.js → chunk-6VHIWUJP.js} +1 -1
- package/chunks/{chunk-RJC5EIKY.js → chunk-6YXNJXQW.js} +7 -5
- package/chunks/{chunk-TPI7O7HR.js → chunk-7DDTI7Q3.js} +1 -1
- package/chunks/{chunk-KGJGEEVR.js → chunk-7FA2II6K.js} +10 -1
- package/chunks/chunk-7J6OTNGO.js +424 -0
- package/chunks/{chunk-NIFYWDYN.js → chunk-7TBU7PU2.js} +1 -1
- package/chunks/{chunk-3FDFA4MZ.js → chunk-7XICSE62.js} +3 -3
- package/chunks/{chunk-V2NDP3I4.js → chunk-7XL4WRXM.js} +2 -2
- package/chunks/{chunk-F7TNAPZ4.js → chunk-AAX236AR.js} +45 -11
- package/chunks/{chunk-T32W2JHI.js → chunk-ACZ4YRYK.js} +6 -6
- package/chunks/chunk-ADJD4LZF.js +210 -0
- package/chunks/{chunk-JWALNCLT.js → chunk-AF3QB6OL.js} +1 -1
- package/chunks/{chunk-P2SU6ZTI.js → chunk-AI35S34R.js} +3 -3
- package/chunks/{chunk-OIP7C4FE.js → chunk-AKNQMSL2.js} +5 -5
- package/chunks/{chunk-6CGL7E7G.js → chunk-AN3KFCNH.js} +2 -2
- package/chunks/{chunk-ABS25QER.js → chunk-ANVG3BVV.js} +1 -1
- package/chunks/chunk-AYYKUUKP.js +972 -0
- package/chunks/chunk-B2RIIK3K.js +346 -0
- package/chunks/{chunk-F5SZP77N.js → chunk-BBYTY46C.js} +153 -112
- package/chunks/{chunk-XRSOI3DL.js → chunk-BE5FGT5Z.js} +1 -1
- package/chunks/{chunk-BGXZBI5B.js → chunk-BHTYRHJF.js} +3 -2
- package/chunks/{chunk-CSMI4FP5.js → chunk-BSJOBW4U.js} +1 -1
- package/chunks/{chunk-Z7TGYN5F.js → chunk-BXNKREX7.js} +3 -3
- package/chunks/{chunk-4MQEPP3Y.js → chunk-BY24DZ4J.js} +5 -119
- package/chunks/{chunk-5XBFCMWD.js → chunk-CAZADEU7.js} +17 -9
- package/chunks/chunk-CHEIIBT3.js +40 -0
- package/chunks/{chunk-BBWV7ONL.js → chunk-CM4F4JBB.js} +6 -6
- package/chunks/{chunk-CAJTKR6W.js → chunk-D7D3HSYQ.js} +6 -5
- package/chunks/{chunk-3DXFGHAJ.js → chunk-DBTMP3P4.js} +213 -185
- package/chunks/chunk-DJBQCO2E.js +842 -0
- package/chunks/{chunk-RXFQM6FQ.js → chunk-DMEUXLSS.js} +16 -1
- package/chunks/{chunk-3AFMQUTI.js → chunk-E4JNFXNI.js} +3 -3
- package/chunks/{chunk-UHQFIS7N.js → chunk-EAHOJF6V.js} +28 -4
- package/chunks/{chunk-OIVXBW3W.js → chunk-ED7DD7MV.js} +3 -3
- package/chunks/{chunk-6DIGWMGT.js → chunk-EIJT2PQ6.js} +2 -2
- package/chunks/{chunk-XQFT3QUF.js → chunk-ENYUKMFK.js} +1 -1
- package/chunks/{chunk-CQH5KTKC.js → chunk-ERHAMGAA.js} +1 -1
- package/chunks/{chunk-IOPCFOTF.js → chunk-ERRJA23L.js} +3 -3
- package/chunks/{chunk-LDP5OD6N.js → chunk-EU2B4P3D.js} +12 -12
- package/chunks/{chunk-W5MJJ2V7.js → chunk-FHPYRXRH.js} +1 -1
- package/chunks/{chunk-IZIVM7LZ.js → chunk-FIWZOMBF.js} +3 -3
- package/chunks/{chunk-4HV6HH33.js → chunk-FPMQT2YY.js} +9 -9
- package/chunks/{chunk-Z7VOMGDC.js → chunk-FTJMWDND.js} +0 -24
- package/chunks/{chunk-L2M46FP5.js → chunk-FXUSWLBF.js} +225 -12
- package/chunks/{chunk-VVW4ZNFY.js → chunk-GB4UKWY5.js} +16 -8
- package/chunks/{chunk-PKAYJDB3.js → chunk-GCUR24KK.js} +22 -4
- package/chunks/{chunk-DIMEPKCW.js → chunk-GDXSXL3H.js} +11 -1
- package/chunks/{chunk-7JPW6IYH.js → chunk-GN422P4J.js} +1 -1
- package/chunks/{chunk-66KDY3LV.js → chunk-GS7XT345.js} +3 -3
- package/chunks/{chunk-PFCQ62V4.js → chunk-H2A2GJGL.js} +6 -6
- package/chunks/{chunk-Z7FLBQPR.js → chunk-H5GPPDGY.js} +8 -8
- package/chunks/{chunk-CPGJJJLU.js → chunk-HDMKCJHI.js} +1 -1
- package/chunks/{chunk-6PJOTWAN.js → chunk-HT5S5TRQ.js} +1 -1
- package/chunks/{chunk-Z4X5MTRT.js → chunk-HWVUSYSN.js} +5 -12
- package/chunks/{chunk-V4QXXQJ2.js → chunk-I75VKFCJ.js} +4 -4
- package/chunks/{chunk-NU7RKEZR.js → chunk-IBMUI5EV.js} +3 -3
- package/chunks/{chunk-4J657AJR.js → chunk-ID33ZRWH.js} +42 -42
- package/chunks/{chunk-R4PMVSR5.js → chunk-IIFL7QDN.js} +30 -192
- package/chunks/{chunk-MQM5PJML.js → chunk-IVUWTA2D.js} +1 -1
- package/chunks/{chunk-E55H6BZ7.js → chunk-IXEZHTDR.js} +1616 -151
- package/chunks/{chunk-XF63PKEN.js → chunk-IXHV5MIC.js} +1 -1
- package/chunks/{chunk-JHS74YAB.js → chunk-J4Y3QJHF.js} +3 -1
- package/chunks/{chunk-MIIVI25Q.js → chunk-JDIO45X7.js} +3 -3
- package/chunks/{chunk-QFCDF5PL.js → chunk-JHN7UIDW.js} +1 -1
- package/chunks/{chunk-FDY5RMGH.js → chunk-JLSZT354.js} +2 -2
- package/chunks/chunk-JMRE4WJQ.js +1849 -0
- package/chunks/{chunk-FY76G3G5.js → chunk-JOTYTYYW.js} +6 -6
- package/chunks/{chunk-TRZTNIQ6.js → chunk-JOWQD4LO.js} +3 -3
- package/chunks/{chunk-KEKZFOL6.js → chunk-JPKTAQS3.js} +1 -1
- package/chunks/chunk-JS73NNWF.js +30 -0
- package/chunks/chunk-JX6XHPTX.js +26 -0
- package/chunks/{chunk-5JTIYALA.js → chunk-JZWOCUZ3.js} +1 -1
- package/chunks/{chunk-3JGZSIDA.js → chunk-KFN2IZYR.js} +3 -3
- package/chunks/{chunk-23RFD54N.js → chunk-KHP66DFN.js} +1 -1
- package/chunks/{chunk-AGR5UROZ.js → chunk-KUDI54QQ.js} +23 -33
- package/chunks/{chunk-3SGB2UHX.js → chunk-L2OKAIUK.js} +28 -16
- package/chunks/{chunk-BXDAPVQU.js → chunk-L6CUJZDG.js} +28 -4
- package/chunks/chunk-LAUEEBDL.js +277 -0
- package/chunks/{chunk-BNMF3K5X.js → chunk-LFAR7CPW.js} +55 -39
- package/chunks/{chunk-Y3QL45LS.js → chunk-LKODFJRD.js} +9 -9
- package/chunks/{chunk-BWORX6FA.js → chunk-LMMHS3RS.js} +1 -1
- package/chunks/{chunk-UTLCH2FK.js → chunk-LYSZVCCD.js} +10 -7
- package/chunks/{chunk-F6FV3C5K.js → chunk-MBZ5ORJB.js} +264 -283
- package/chunks/{chunk-L6YT5H34.js → chunk-MJBHSZEJ.js} +5 -5
- package/chunks/{chunk-B7CDU2SL.js → chunk-MOF6VZN2.js} +18 -21
- package/chunks/{chunk-6LFJEACX.js → chunk-MZ5A5PQW.js} +7 -7
- package/chunks/chunk-MZYWNU66.js +149 -0
- package/chunks/{chunk-2TNL5KPM.js → chunk-N4QWUPDM.js} +7 -0
- package/chunks/{chunk-5O72BNDD.js → chunk-ND7TQQPE.js} +9 -9
- package/chunks/{chunk-QP4C6WCE.js → chunk-NGKLMNWN.js} +3 -3
- package/chunks/{chunk-JSC3H3TD.js → chunk-NT5XIL5H.js} +46 -18
- package/chunks/{chunk-KUX5D6DK.js → chunk-NT7LXVV5.js} +11010 -11138
- package/chunks/{chunk-PDQGMSZK.js → chunk-ODZF64DM.js} +1 -1
- package/chunks/{chunk-FBSSIAAQ.js → chunk-OE5AQVNB.js} +8 -8
- package/chunks/chunk-OHU2H5CS.js +130 -0
- package/chunks/{chunk-2K6ORIHJ.js → chunk-OKMDOATP.js} +13 -13
- package/chunks/{chunk-JB4JIVTJ.js → chunk-OKTNXDVO.js} +1 -1
- package/chunks/{chunk-XDLEZ5HX.js → chunk-OQYXJK2V.js} +1 -1
- package/chunks/{chunk-EFUM7RVY.js → chunk-OSTQZIOY.js} +944 -18
- package/chunks/{chunk-VQUGEVGR.js → chunk-OTTNXUT5.js} +1 -1
- package/chunks/{chunk-T3WXYEZ4.js → chunk-PB7JBAHF.js} +53 -54
- package/chunks/{chunk-WAOIHTJS.js → chunk-PDAKFU7M.js} +1 -1
- package/chunks/{chunk-43GGFFLY.js → chunk-PDXYZBBQ.js} +3 -3
- package/chunks/{chunk-4CMJKUND.js → chunk-PNIGAVY6.js} +67 -2
- package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
- package/chunks/{chunk-4CDSK5AZ.js → chunk-PWR2NQBS.js} +6 -6
- package/chunks/{chunk-YTDVNSUQ.js → chunk-QAK5475D.js} +1 -1
- package/chunks/{chunk-IJKTMLBE.js → chunk-QE7DTCLX.js} +1 -1
- package/chunks/{chunk-SMPR7SPO.js → chunk-QJNDUTOL.js} +45 -239
- package/chunks/{chunk-C6K43ZDE.js → chunk-QTMPM6RC.js} +16 -10
- package/chunks/{chunk-P5GGM4KS.js → chunk-RAEEQEC5.js} +5 -5
- package/chunks/{chunk-XDFHY4R3.js → chunk-RGEV5AUD.js} +242 -14
- package/chunks/{chunk-M6FOJXW3.js → chunk-RKW36UWC.js} +1 -1
- package/chunks/{chunk-RIEFGNTP.js → chunk-RLSPPTWH.js} +5119 -683
- package/chunks/{chunk-PDMJ3KGS.js → chunk-RT4QNQ5P.js} +3 -3
- package/chunks/{chunk-SJ3ZUWFK.js → chunk-RVCGAHC7.js} +4 -26
- package/chunks/{chunk-77RG5SFQ.js → chunk-RY7DL5IF.js} +11 -6
- package/chunks/{chunk-4FTKQNWJ.js → chunk-S2T7H5MI.js} +182 -3
- package/chunks/{chunk-EOGELB3H.js → chunk-SDCHI64N.js} +4 -4
- package/chunks/{chunk-EKSCLBBF.js → chunk-SMJYTKTB.js} +23 -5
- package/chunks/{chunk-MZS7GEC7.js → chunk-SMRDCANI.js} +1 -1
- package/chunks/{chunk-43UYNAWX.js → chunk-T3TL6S3B.js} +4 -4
- package/chunks/{chunk-4K7NQDCG.js → chunk-T4EFG2P5.js} +18 -9
- package/chunks/{chunk-IK5BW3CS.js → chunk-T4RMUTTT.js} +16 -5
- package/chunks/{chunk-L6BZRIUL.js → chunk-TBJ3SNS3.js} +183 -5
- package/chunks/{chunk-CCBZDVUA.js → chunk-TNMOFNT4.js} +133 -122
- package/chunks/{chunk-Y6LSMB6J.js → chunk-TV7BJ7TX.js} +1 -1
- package/chunks/{chunk-G34IR3D6.js → chunk-U5RTYI7D.js} +102 -146
- package/chunks/{chunk-TTX2JUE6.js → chunk-U6D2PPMN.js} +1 -1
- package/chunks/{chunk-D5LUXLUH.js → chunk-UJ4DUYIH.js} +18 -4
- package/chunks/{chunk-A7YP63XN.js → chunk-UKB2TZAO.js} +5 -5
- package/chunks/{chunk-VTHREBQM.js → chunk-UKYXYWI2.js} +2 -2
- package/chunks/{chunk-2NYCN6F2.js → chunk-UVYKCRJZ.js} +46 -29
- package/chunks/{chunk-HVEYF6VT.js → chunk-UXEW7TQS.js} +2 -2
- package/chunks/{chunk-HVQ3B7FF.js → chunk-V4HN35IF.js} +44 -7
- package/chunks/chunk-VGHZT6JR.js +51 -0
- package/chunks/{chunk-V5J4J5TP.js → chunk-VYSZUQGU.js} +2 -20
- package/chunks/{chunk-6IUNAPLR.js → chunk-W4BDHLRT.js} +3 -3
- package/chunks/{chunk-Q26AYA62.js → chunk-W7KWB6AH.js} +7 -4
- package/chunks/chunk-WLEYH7CD.js +332 -0
- package/chunks/{chunk-RU7BK6B3.js → chunk-X7C7KFWA.js} +2 -2
- package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
- package/chunks/{chunk-BFPESSTR.js → chunk-XEAAO654.js} +1 -1
- package/chunks/{chunk-JU4EEXC7.js → chunk-XLENZQXH.js} +2 -2
- package/chunks/{chunk-JSHHYW6T.js → chunk-XPDKSOVW.js} +69 -64
- package/chunks/chunk-YDQ4OCDK.js +1222 -0
- package/chunks/{chunk-ZU4UDIWX.js → chunk-YKADANK6.js} +6 -7
- package/chunks/{chunk-JCQD3INC.js → chunk-YNG7XAJU.js} +3 -3
- package/chunks/{chunk-O2UN57NX.js → chunk-YOFULAHO.js} +19 -2
- package/chunks/{chunk-BAJKAAOY.js → chunk-YOMKOM7E.js} +4892 -1504
- package/chunks/{chunk-ERFDKH32.js → chunk-YPISTYEI.js} +8 -7
- package/chunks/{chunk-TGWAQ5RB.js → chunk-ZBDYI7VM.js} +6900 -6882
- package/chunks/{chunk-OZ6KS6KW.js → chunk-ZGCKTAL5.js} +6 -1
- package/chunks/chunk-ZHO2CW6D.js +205 -0
- package/chunks/{chunk-DZWPESIF.js → chunk-ZQ3FKEWA.js} +3 -3
- package/chunks/{chunk-7EQQR46F.js → chunk-ZVP4PWBU.js} +1 -1
- package/chunks/{chunk-7UYV53BC.js → chunk-ZYPJ7HVZ.js} +1 -1
- package/chunks/config-utils-NNUPVGEC.js +118 -0
- package/chunks/contextCommand-S3TPCDM5.js +111 -0
- package/chunks/{core-runtime-677KFX6Q.js → core-runtime-NASPCSQX.js} +66 -63
- package/chunks/{create-sub-session-23ITIELI.js → create-sub-session-36TNCHCP.js} +3 -3
- package/chunks/{create-sub-session-JKZAYZX7.js → create-sub-session-DS4BJLYZ.js} +97 -68
- package/chunks/{cron-create-KJ4IY6PP.js → cron-create-QXHTYUTO.js} +4 -4
- package/chunks/{cron-delete-MBLQCAYY.js → cron-delete-WV2BM42M.js} +4 -4
- package/chunks/{cron-list-DWH2PQ47.js → cron-list-7KVNBLZ7.js} +4 -4
- package/chunks/{daemon-MJQUO7RA.js → daemon-UCVUHPJD.js} +723 -90
- package/chunks/{daemon-git-worktree-guard-6MVAAZZZ.js → daemon-git-worktree-guard-ATXVQPS3.js} +63 -60
- package/chunks/daemon-status-provider-UI3GBTMO.js +121 -0
- package/chunks/daemon-trust-policy-SUCBJ2CA.js +117 -0
- package/chunks/{daemon-trust-policy-monitor-B5U6TQX5.js → daemon-trust-policy-monitor-3LM5RQNS.js} +71 -68
- package/chunks/{de-X6HLSIFE.js → de-T4BLOKEC.js} +3 -0
- package/chunks/deferred-core-runtime-SCOJLVYG.js +119 -0
- package/chunks/{display-image-BE7I6ZB6.js → display-image-Z4VBQDEJ.js} +5 -5
- package/chunks/{dist-TJUDJTCB.js → dist-5423MG3D.js} +411 -91
- package/chunks/{dist-ILDBUWDB.js → dist-7WDZYMWV.js} +43 -25
- package/chunks/{dist-ZBVOXSKF.js → dist-FLJLHASF.js} +219 -121
- package/chunks/{dist-QODVOVWI.js → dist-GPSRNVVP.js} +43 -35
- package/chunks/{dist-DJBNNPLN.js → dist-LY66XNUL.js} +10 -3
- package/chunks/{dist-7CKN54NL.js → dist-S3BKCTWF.js} +205 -89
- package/chunks/{dist-UQUFZDIY.js → dist-SDKHGH5O.js} +41 -20
- package/chunks/{dist-4Q7NTUNB.js → dist-WAUO5OMN.js} +46 -22
- package/chunks/{dist-SATKXKUR.js → dist-WIVVPE7M.js} +28 -14
- package/chunks/earlyInputCapture-INWJ2STR.js +112 -0
- package/chunks/{edit-BSV6YRVW.js → edit-B7ZRRGAE.js} +51 -49
- package/chunks/{en-YLXBXM4Z.js → en-E4AYTX6H.js} +3 -0
- package/chunks/{enter-worktree-MQXFFPKM.js → enter-worktree-SPZHEETQ.js} +7 -7
- package/chunks/{enterPlanMode-PKNF35FE.js → enterPlanMode-S554IKJ2.js} +55 -53
- package/chunks/environment-25ADH4Y6.js +134 -0
- package/chunks/errors-G2I6LFTW.js +118 -0
- package/chunks/{exit-worktree-L344UY7K.js → exit-worktree-AWUXAMAM.js} +7 -7
- package/chunks/exitPlanMode-ZFH4OYPM.js +87 -0
- package/chunks/{fast-path-773PV7PU.js → fast-path-WZHVZ2ER.js} +8 -7
- package/chunks/{fast-path-settings-XMFBYFUH.js → fast-path-settings-NILM6QZL.js} +3 -3
- package/chunks/{fr-FTZWF462.js → fr-BGHGYX6A.js} +3 -0
- package/chunks/{glob-CZHOWUEA.js → glob-UOVDMBUP.js} +50 -48
- package/chunks/{goal-tools-YZQJXTGH.js → goal-tools-7TNK5ZHC.js} +5 -4
- package/chunks/{grep-5GPICQBU.js → grep-LHYJ5V2N.js} +9 -7
- package/chunks/handleAutoUpdate-4MZ45DZY.js +114 -0
- package/chunks/i18n-KWUEI4DS.js +129 -0
- package/chunks/{image-gen-HAYOEQ4O.js → image-gen-YZDVO5YS.js} +8 -10
- package/chunks/initializer-2NBROGMG.js +118 -0
- package/chunks/installationInfo-YKUSY3ZB.js +112 -0
- package/chunks/{ja-2GL5FKYJ.js → ja-G3FTD5XE.js} +3 -0
- package/chunks/{keychain-token-storage-37XPR34V.js → keychain-token-storage-REZVMJA6.js} +2 -2
- package/chunks/list-W2WV3COM.js +121 -0
- package/chunks/list-agents-PMVMHNY7.js +128 -0
- package/chunks/{gemini-IP4FJAP5.js → llm-NPPHLIJI.js} +162 -133
- package/chunks/{geminiContentGenerator-PUNEBWJW.js → llm-content-generator-YK3WN6XW.js} +29 -29
- package/chunks/loadedSettingsAdapter-2P7DFWUR.js +115 -0
- package/chunks/{loggingContentGenerator-2GGZNGLG.js → loggingContentGenerator-QYYYGU6V.js} +318 -35
- package/chunks/{loop-wakeup-XJFONSQ7.js → loop-wakeup-EBM4F5MZ.js} +5 -5
- package/chunks/{ls-3VAT2J7A.js → ls-F6TRX3DD.js} +4 -4
- package/chunks/{lsp-5W7IRUBH.js → lsp-QYTOS2FI.js} +2 -2
- package/chunks/{managed-npm-update-5TEV2E3J.js → managed-npm-update-UMC4NBWW.js} +64 -61
- package/chunks/mcp-OFI6XDP2.js +115 -0
- package/chunks/{monitor-FI7PY36Z.js → monitor-QX3BM3JY.js} +50 -48
- package/chunks/nonInteractiveCli-NVRMD5MN.js +193 -0
- package/chunks/{notebook-edit-TPGMGBST.js → notebook-edit-AAILDPSV.js} +51 -49
- package/chunks/{open-with-auth-4UI3KHUR.js → open-with-auth-D6JD6LDS.js} +4 -4
- package/chunks/{openaiContentGenerator-SUCYANUZ.js → openaiContentGenerator-53PB3CMN.js} +27 -29
- package/chunks/pidfile-5ACKG2LI.js +116 -0
- package/chunks/process-registry-OAEG6WGC.js +662 -0
- package/chunks/{processUtils-IQZBYWSB.js → processUtils-2BCDO3DZ.js} +2 -2
- package/chunks/prompt-terminal-ledger-3RKW73A2.js +110 -0
- package/chunks/{pt-XN2YWJVM.js → pt-D73IFYT7.js} +3 -0
- package/chunks/{qwenContentGenerator-J4TXFGJT.js → qwenContentGenerator-N4LLWDPH.js} +56 -54
- package/chunks/{qwenOAuth2-RF33DNZW.js → qwenOAuth2-7AOCKSOQ.js} +7 -9
- package/chunks/{read-file-QE2B5FTX.js → read-file-DPAKXHYE.js} +13 -13
- package/chunks/{read-mcp-resource-XD257PGJ.js → read-mcp-resource-R4NO75DW.js} +2 -2
- package/chunks/{record-artifact-RZGZBENU.js → record-artifact-2EAYLAL5.js} +4 -4
- package/chunks/{report-findings-Q3SYKKW5.js → report-findings-Y4MSHDS3.js} +9 -5
- package/chunks/{request-shutdown-BCLA3JV2.js → request-shutdown-DWRMGTMB.js} +8 -7
- package/chunks/resumeHistoryUtils-3JQORXAK.js +123 -0
- package/chunks/ripGrep-AHF5QCI7.js +39 -0
- package/chunks/{ru-OLTMFJEW.js → ru-QMISLKRH.js} +3 -0
- package/chunks/{run-qwen-serve-TPHZMSXJ.js → run-qwen-serve-3LKV7KDC.js} +728 -256
- package/chunks/runtime-66F4W3IA.js +153 -0
- package/chunks/scheduled-tasks-2NVKS5Q2.js +132 -0
- package/chunks/scheduler-JNV7T3ZO.js +127 -0
- package/chunks/{sdk-exporters-http-KCJ4ZFG7.js → sdk-exporters-http-MFIWD23D.js} +2 -2
- package/chunks/{sdk-impl-HLSEDAEP.js → sdk-impl-2RXJ4Q6X.js} +11 -5
- package/chunks/send-message-WPZRCJOB.js +442 -0
- package/chunks/serve-GP2UNRP7.js +123 -0
- package/chunks/{server-DFUSSSHI.js → server-7W6C3SOW.js} +5233 -3623
- package/chunks/{session-3TEHNENZ.js → session-PZLBAQGG.js} +125 -118
- package/chunks/session-pr-refresh-OIVL3U3Z.js +367 -0
- package/chunks/{settings-VOZYKLTT.js → settings-ZOHIQWYK.js} +70 -67
- package/chunks/shell-FWZT6IUR.js +97 -0
- package/chunks/{skill-FEOKFX26.js → skill-RTQC2YGA.js} +121 -65
- package/chunks/skill-settings-AKMIXFSJ.js +123 -0
- package/chunks/spawnChannel-ZP23JL6O.js +116 -0
- package/chunks/standalone-update-P2Q5H4ZU.js +123 -0
- package/chunks/{startInteractiveUI-WHJPFOGH.js → startInteractiveUI-NSA6QPQZ.js} +2018 -1526
- package/chunks/{stdioHelpers-7A2EE64Z.js → stdioHelpers-AY6XCDY2.js} +3 -1
- package/chunks/{syntheticOutput-ML43GEFN.js → syntheticOutput-5URSQLIS.js} +3 -3
- package/chunks/{task-create-TMSV7RD5.js → task-create-3EXVDG3G.js} +12 -12
- package/chunks/{task-list-W55RBFRX.js → task-list-PIBYNSE7.js} +5 -6
- package/chunks/{task-stop-CXEH5L2D.js → task-stop-IV3BYWJC.js} +2 -2
- package/chunks/{task-update-N536I4GQ.js → task-update-H5BPDS5Y.js} +13 -14
- package/chunks/{team-create-QYSWCYCL.js → team-create-53T42W37.js} +56 -55
- package/chunks/{team-delete-FJRFX33M.js → team-delete-X3WPELS6.js} +25 -8
- package/chunks/{team-plan-approval-P7DAD644.js → team-plan-approval-D45ZC5OE.js} +50 -48
- package/chunks/terminal-image-renderer-FCRUWT6C.js +121 -0
- package/chunks/theme-manager-MHNPEDP7.js +107 -0
- package/chunks/{todoWrite-WDJNQEMW.js → todoWrite-A5IOZZ3P.js} +4 -4
- package/chunks/{tool-search-F2EMIAPV.js → tool-search-6RPBGGUX.js} +27 -23
- package/chunks/total-session-admission-MGV56XDK.js +117 -0
- package/chunks/trustedFolders-QJYEFMTU.js +127 -0
- package/chunks/{types-WYCFCEHR.js → types-HKLPXZB3.js} +1 -3
- package/chunks/{update-relaunch-4GF3OXMB.js → update-relaunch-ZDMQX63C.js} +6 -6
- package/chunks/updateCheck-4QZWCGP6.js +123 -0
- package/chunks/useAutoAcceptIndicator-DLIQN256.js +125 -0
- package/chunks/{validateNonInterActiveAuth-BPPA563H.js → validateNonInterActiveAuth-HGTG7AEK.js} +114 -107
- package/chunks/{version-ANP4TS6O.js → version-CPAZMC4B.js} +1 -1
- package/chunks/{web-fetch-QJADSAH3.js → web-fetch-N4K5M3M4.js} +16 -18
- package/chunks/{web-search-7TTQKEKM.js → web-search-4VZKM5SF.js} +9 -11
- package/chunks/{web-shell-static-A6QMUNNV.js → web-shell-static-PW7OEDQO.js} +3 -2
- package/chunks/{workflow-5XN6XSOT.js → workflow-2ALQKTHG.js} +229 -146
- package/chunks/workspace-providers-status-5JM4CB6R.js +119 -0
- package/chunks/{workspace-registration-store-XKVW2YVH.js → workspace-registration-store-RNMFVCH7.js} +2 -1
- package/chunks/workspace-registry-6EULAPZC.js +126 -0
- package/chunks/workspace-runtime-coordinator-IRI2DRCJ.js +127 -0
- package/chunks/workspace-service-SETHN4WE.js +131 -0
- package/chunks/workspace-skills-status-4D4EUEQU.js +118 -0
- package/chunks/{workspace-trust-reconciler-KLGOB53D.js → workspace-trust-reconciler-4LR3CDL4.js} +77 -76
- package/chunks/write-file-45GWPSOI.js +92 -0
- package/chunks/{zh-UNY63FR3.js → zh-2BQ7P6OD.js} +3 -0
- package/chunks/{zh-TW-RPTMRTHG.js → zh-TW-UFXRZTXX.js} +3 -0
- package/chunks/{zoom-image-6ASG6J4C.js → zoom-image-K6IQUKRC.js} +13 -13
- package/cli.js +129 -92
- package/locales/ca.js +6 -0
- package/locales/de.js +6 -0
- package/locales/en.js +6 -0
- package/locales/fr.js +6 -0
- package/locales/ja.js +6 -0
- package/locales/pt.js +6 -0
- package/locales/ru.js +6 -0
- package/locales/zh-TW.js +6 -0
- package/locales/zh.js +6 -0
- package/package.json +3 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-uS-vtfs3.js → abnfDiagram-VCTEODGH-C80OZcPP.js} +1 -1
- package/web-shell/assets/{arc-BSTnk5pu.js → arc-AUqStYgf.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-DCMyiqzy.js → architectureDiagram-5GKGNRK7-CQYOdYla.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-C7_gt0r1.js → blockDiagram-NRAW4CY4-lYKlFysy.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-BeQg2L8B.js → c4Diagram-UCG6FXSJ-BoS23iIp.js} +1 -1
- package/web-shell/assets/channel-B0ovOJeK.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-DnV9bKBe.js → chunk-2Q5K7J3B-DLLooL1E.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-rT1GAcT7.js → chunk-5VM5RSS4-kPfJxScY.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-BcgSxqGA.js → chunk-F27PBJKO-CVGFBqkD.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-Bw1ZhyZq.js → chunk-G27WJ6UU-CnM_kOVV.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-D4iDw-96.js → chunk-JWPE2WC7-Cj-ajOkT.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-D3MB3GTZ.js → chunk-LCL6LL3I-8L5c-wFo.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-Cep2ndrS.js → chunk-POPQ4Y6H-DsXTxpvL.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-BuahMHJc.js → chunk-SVP7TREG-DU5GE1_z.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-BdujIvJY.js → chunk-XXDRQBXY-D2IIWZKt.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DMll2-6_.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DMll2-6_.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-CGLLUbF8.js → cose-bilkent-JH36ORCC-CF_txUJr.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-D6kDsRSh.js → cynefin-OW5HDTMX-DEZ-My-Z.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-CCy78qZx.js → cynefinDiagram-5FMLGOSQ-BV7EKUS6.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-D5gJuJsf.js → dagre-3AP2YEHR-JGIX0G4H.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-ZwEZ5W__.js → diagram-S7CK7UJ4-DdUY7q6A.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-B036APjv.js → diagram-UQ7AKVKN-fhzRZ19v.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-BfDJ57Fq.js → diagram-VSXAHHWV-BOgOex6q.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-Wha0p5rT.js → diagram-VX7I27RA-C0NknIz6.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-L20bz2K1.js → diagram-Z3DM3KII-C__3mUBX.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-D1ZM0Cp7.js → ebnfDiagram-PWID7BFC-BvPhqycH.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-CMtA19v8.js → erDiagram-SSCWMZ5O-BqzoNoL9.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-D96m326S.js → flowDiagram-A5DVABFB-CJKOre47.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BuHiYG2o.js → ganttDiagram-EL5Y4UJY-C5xZjrp0.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-Ck3NmkSw.js → gitGraphDiagram-WWUBYQGX-C0EjwuPK.js} +1 -1
- package/web-shell/assets/index-B_IPzA0h.js +2020 -0
- package/web-shell/assets/{index-CBGz4Qjl.js → index-C5M93syE.js} +1 -1
- package/web-shell/assets/index-D1OKGQlM.css +36 -0
- package/web-shell/assets/{infoDiagram-RXCK75RN-B6DAOyXe.js → infoDiagram-RXCK75RN-BUwzsYOs.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-Bpg-joFo.js → ishikawaDiagram-5VMMS53U-EDJ_DH3V.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-BclrHzGa.js → journeyDiagram-EYS64GPL-BnfcOsS0.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-5gJzNTYG.js → kanban-definition-3QL26DDD-D_ofTVGu.js} +1 -1
- package/web-shell/assets/{layout-CEz_1L8z.js → layout-CBuQFdfZ.js} +1 -1
- package/web-shell/assets/{linear-CBjTq9Hc.js → linear-DRIHtmGv.js} +1 -1
- package/web-shell/assets/{mermaid.core-Dzhbxx_I.js → mermaid.core-CmR5wZH6.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-DQdVqlBF.js → mindmap-definition-FBJOCRG2-BV374olC.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-D1JZlYXL.js → pegDiagram-XKGWAZYB-Bpy1SplK.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-BmkpYL0w.js → pieDiagram-E7YTZNPT-CeZx4hR2.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-DRvD6co5.js → quadrantDiagram-AXDQQJYC-COYKs14h.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-CEdjDuoo.js → railroadDiagram-O6MQD6OU-5g2pOeTs.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BCHG-ie8.js → requirementDiagram-EFPCY7ZU-Yn8uPGtF.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-C9cZMnye.js → sankeyDiagram-P5KCCOFB-CTayAGq6.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DYHRV4zL.js → sequenceDiagram-WJ2MYXX4-BFWDKzUU.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-DlK21aye.js → sizeCapture-X5ZJPWSS-CtErUbj4.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-BrmZssvk.js → stateDiagram-HBIQ2CUA-Co3HFzOd.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-C3gdRjPm.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-D9xfcayR.js → swimlanes-XN3QIQJK-CDZuxzOj.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-C34TGCPZ.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-D4gdDL_d.js → timeline-definition-24CTP7MA-UcNHj8At.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-DdhIExjI.js → vennDiagram-4TSXK5OY-JKR9pVFG.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-C9RS_Zof.js → wardleyDiagram-VM6X3IG4-C4SU-yIW.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-orRgmxWk.js → xychartDiagram-S5SC5T6Z-D_yoWGZ4.js} +1 -1
- package/web-shell/index.html +197 -3
- package/chunks/MaxSizedBox-X5FZSNAJ.js +0 -112
- package/chunks/agent-PJIPDWHB.js +0 -97
- package/chunks/agent-headless-B4JVD7UK.js +0 -87
- package/chunks/bridge-FKZTVIS3.js +0 -121
- package/chunks/channel-settings-store-4UFCLBBG.js +0 -117
- package/chunks/chunk-7DJCPZE3.js +0 -945
- package/chunks/chunk-CPBF7KYF.js +0 -51
- package/chunks/chunk-H72BQNM3.js +0 -645
- package/chunks/chunk-J2OSJFP3.js +0 -202
- package/chunks/chunk-K2OJUPOE.js +0 -78
- package/chunks/chunk-P3QQPMQA.js +0 -19
- package/chunks/chunk-RUGNCYNO.js +0 -699
- package/chunks/chunk-T26EAKDL.js +0 -13
- package/chunks/chunk-ZGXYO7DY.js +0 -3416
- package/chunks/chunk-ZYNTSXWK.js +0 -32
- package/chunks/config-utils-BBOCOGZW.js +0 -113
- package/chunks/contextCommand-EET67MQ2.js +0 -108
- package/chunks/daemon-status-provider-RFKZOK3S.js +0 -119
- package/chunks/daemon-trust-policy-DRZPFB4Q.js +0 -114
- package/chunks/deferred-core-runtime-BBVIOP24.js +0 -116
- package/chunks/earlyInputCapture-2JOMMNQ4.js +0 -109
- package/chunks/environment-MOZMPUHR.js +0 -131
- package/chunks/errors-DMPQVYJL.js +0 -115
- package/chunks/exitPlanMode-UE4FGCY4.js +0 -85
- package/chunks/handleAutoUpdate-SGXKTQM6.js +0 -111
- package/chunks/i18n-B42HKHKH.js +0 -126
- package/chunks/initializer-FB66WYR3.js +0 -115
- package/chunks/installationInfo-Y7AULNMX.js +0 -109
- package/chunks/list-2HWGSVRA.js +0 -118
- package/chunks/list-agents-DI3YFTDT.js +0 -80
- package/chunks/loadedSettingsAdapter-7Y7IEI6T.js +0 -112
- package/chunks/mcp-QGG5NMJJ.js +0 -112
- package/chunks/nonInteractiveCli-4LO2TL72.js +0 -186
- package/chunks/pidfile-JMF2CLMY.js +0 -113
- package/chunks/process-registry-PMJOA5CO.js +0 -172
- package/chunks/prompt-terminal-ledger-DCZO6S7C.js +0 -107
- package/chunks/resumeHistoryUtils-CZ4JRDVW.js +0 -120
- package/chunks/ripGrep-R6B6HWPX.js +0 -39
- package/chunks/runtime-TTIGSBM4.js +0 -150
- package/chunks/scheduled-tasks-QB4ZVUQS.js +0 -129
- package/chunks/scheduler-YRUG22M7.js +0 -124
- package/chunks/send-message-Y5I6NYAM.js +0 -295
- package/chunks/serve-MXXCDAQN.js +0 -120
- package/chunks/shell-6RTKZVMI.js +0 -95
- package/chunks/skill-settings-VA4XVYVL.js +0 -120
- package/chunks/spawnChannel-F6WVP723.js +0 -114
- package/chunks/standalone-update-RGILUQVK.js +0 -120
- package/chunks/terminal-image-renderer-SMQE46UJ.js +0 -116
- package/chunks/theme-manager-RFO5WWFF.js +0 -104
- package/chunks/total-session-admission-HTVTP4BS.js +0 -116
- package/chunks/trustedFolders-7OCNMUQE.js +0 -124
- package/chunks/updateCheck-7QBDXZRT.js +0 -120
- package/chunks/useAutoAcceptIndicator-UI4SNL2O.js +0 -122
- package/chunks/workspace-providers-status-PDFZWL5Q.js +0 -116
- package/chunks/workspace-registry-23R7XRB5.js +0 -125
- package/chunks/workspace-service-MUYO2QIC.js +0 -131
- package/chunks/workspace-skills-status-IKECTOOQ.js +0 -115
- package/chunks/write-file-GGRBB5TZ.js +0 -90
- package/web-shell/assets/channel-CENAhErJ.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-CM6FArGH.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-CM6FArGH.js +0 -1
- package/web-shell/assets/index-8hXIpvo4.js +0 -1865
- package/web-shell/assets/index-DclEv91i.css +0 -5
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-B2Q7XDaE.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DpZPOSbX.js +0 -8
|
@@ -11,11 +11,11 @@ import {
|
|
|
11
11
|
sendMessage,
|
|
12
12
|
sendTyping,
|
|
13
13
|
uploadToCdn
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-SMRDCANI.js";
|
|
15
15
|
import {
|
|
16
16
|
ChannelBase,
|
|
17
17
|
isTerminalTaskLifecycleType
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-IXEZHTDR.js";
|
|
19
19
|
import "./chunk-IW6RQPQB.js";
|
|
20
20
|
import "./chunk-CQ35AJ4Z.js";
|
|
21
21
|
import {
|
|
@@ -358,7 +358,6 @@ function validateImagePath(imagePath, workspaceDirs = []) {
|
|
|
358
358
|
__name(validateImagePath, "validateImagePath");
|
|
359
359
|
async function sendText(params) {
|
|
360
360
|
const { to, text, baseUrl, token, contextToken } = params;
|
|
361
|
-
const plainText = markdownToPlainText(text);
|
|
362
361
|
await sendMessage(baseUrl, token, {
|
|
363
362
|
to_user_id: to,
|
|
364
363
|
from_user_id: "",
|
|
@@ -366,7 +365,7 @@ async function sendText(params) {
|
|
|
366
365
|
message_type: MessageType.BOT,
|
|
367
366
|
message_state: MessageState.FINISH,
|
|
368
367
|
context_token: contextToken,
|
|
369
|
-
item_list: [{ type: MessageItemType.TEXT, text_item: { text
|
|
368
|
+
item_list: [{ type: MessageItemType.TEXT, text_item: { text } }]
|
|
370
369
|
});
|
|
371
370
|
}
|
|
372
371
|
__name(sendText, "sendText");
|
|
@@ -520,40 +519,47 @@ var WeixinChannel = class extends ChannelBase {
|
|
|
520
519
|
}
|
|
521
520
|
}
|
|
522
521
|
async handleInboundWithMedia(envelope, image, file) {
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
522
|
+
await this.prepareThenHandleInbound(envelope, async () => {
|
|
523
|
+
if (image) {
|
|
524
|
+
try {
|
|
525
|
+
const imageData = await downloadAndDecrypt(image.encryptQueryParam, image.aesKey);
|
|
526
|
+
envelope.imageBase64 = imageData.toString("base64");
|
|
527
|
+
envelope.imageMimeType = detectImageMime(imageData);
|
|
528
|
+
} catch (err) {
|
|
529
|
+
process.stderr.write(`[Weixin:${this.name}] Failed to download image: ${err instanceof Error ? err.message : err}
|
|
530
530
|
`);
|
|
531
|
+
}
|
|
531
532
|
}
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
process.stderr.write(`[Weixin:${this.name}] Failed to download file: ${err instanceof Error ? err.message : err}
|
|
533
|
+
if (file) {
|
|
534
|
+
try {
|
|
535
|
+
const fileData = await downloadAndDecrypt(file.encryptQueryParam, file.aesKey);
|
|
536
|
+
const dir = join2(tmpdir2(), "channel-files", randomUUID2());
|
|
537
|
+
mkdirSync(dir, { recursive: true });
|
|
538
|
+
const filePath = join2(dir, basename(file.fileName) || `file_${Date.now()}`);
|
|
539
|
+
writeFileSync2(filePath, fileData);
|
|
540
|
+
envelope.attachments = [
|
|
541
|
+
{
|
|
542
|
+
type: "file",
|
|
543
|
+
filePath,
|
|
544
|
+
mimeType: "application/octet-stream",
|
|
545
|
+
fileName: file.fileName
|
|
546
|
+
}
|
|
547
|
+
];
|
|
548
|
+
} catch (err) {
|
|
549
|
+
process.stderr.write(`[Weixin:${this.name}] Failed to download file: ${err instanceof Error ? err.message : err}
|
|
550
550
|
`);
|
|
551
|
-
|
|
551
|
+
envelope.text = `(User sent a file "${file.fileName}" but download failed)`;
|
|
552
|
+
}
|
|
552
553
|
}
|
|
553
|
-
}
|
|
554
|
-
await super.handleInbound(envelope);
|
|
554
|
+
});
|
|
555
555
|
}
|
|
556
556
|
async sendMessage(chatId, text) {
|
|
557
|
+
await this.sendProjectedMessage(chatId, text);
|
|
558
|
+
}
|
|
559
|
+
async sendThreadMessage(chatId, _threadId, text, sourceLabel) {
|
|
560
|
+
await this.sendProjectedMessage(chatId, text, sourceLabel);
|
|
561
|
+
}
|
|
562
|
+
async sendProjectedMessage(chatId, text, sourceLabel) {
|
|
557
563
|
const contextToken = getContextToken(chatId) || "";
|
|
558
564
|
const textWithoutCode = text.replace(/```[\s\S]*?```/g, "").replace(/`[^`]*`/g, "");
|
|
559
565
|
const imageRegex = /\[IMAGE:\s*([^\]]+)\]/gi;
|
|
@@ -568,10 +574,12 @@ var WeixinChannel = class extends ChannelBase {
|
|
|
568
574
|
cleanedText = cleanedText.replace(new RegExp(`\\[IMAGE:\\s*${escapeRegex(path)}\\]`, "gi"), "");
|
|
569
575
|
}
|
|
570
576
|
cleanedText = cleanedText.replace(/\n{3,}/g, "\n\n").trim();
|
|
571
|
-
|
|
577
|
+
const plainText = cleanedText ? markdownToPlainText(cleanedText) : "";
|
|
578
|
+
const visibleText = plainText ? this.formatAttributedText(plainText, sourceLabel) : parsedImages.length > 0 ? sourceLabel : void 0;
|
|
579
|
+
if (visibleText) {
|
|
572
580
|
await sendText({
|
|
573
581
|
to: chatId,
|
|
574
|
-
text:
|
|
582
|
+
text: visibleText,
|
|
575
583
|
baseUrl: this.baseUrl,
|
|
576
584
|
token: this.token,
|
|
577
585
|
contextToken
|
|
@@ -599,7 +607,7 @@ var WeixinChannel = class extends ChannelBase {
|
|
|
599
607
|
try {
|
|
600
608
|
await sendText({
|
|
601
609
|
to: chatId,
|
|
602
|
-
text: "\u56FE\u7247\u53D1\u9001\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",
|
|
610
|
+
text: this.formatAttributedText("\u56FE\u7247\u53D1\u9001\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5", sourceLabel),
|
|
603
611
|
baseUrl: this.baseUrl,
|
|
604
612
|
token: this.token,
|
|
605
613
|
contextToken
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
import "./chunk-7E7UCJHS.js";
|
|
7
7
|
import {
|
|
8
8
|
PollingChannelBase
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-IXEZHTDR.js";
|
|
10
10
|
import "./chunk-IW6RQPQB.js";
|
|
11
11
|
import {
|
|
12
12
|
external_exports
|
|
@@ -13235,7 +13235,7 @@ var GitlabChannel = class extends PollingChannelBase {
|
|
|
13235
13235
|
async sendMessage(_chatId, _text) {
|
|
13236
13236
|
throw new Error(`[Channel:${this.name}] sendMessage requires a threadId; use sendThreadMessage`);
|
|
13237
13237
|
}
|
|
13238
|
-
async sendThreadMessage(chatId, threadId, text) {
|
|
13238
|
+
async sendThreadMessage(chatId, threadId, text, sourceLabel) {
|
|
13239
13239
|
if (!threadId) {
|
|
13240
13240
|
throw new Error(`[Channel:${this.name}] sendThreadMessage requires a threadId (e.g. "issue:42" or "mr:7")`);
|
|
13241
13241
|
}
|
|
@@ -13244,7 +13244,7 @@ var GitlabChannel = class extends PollingChannelBase {
|
|
|
13244
13244
|
throw new Error(`[Channel:${this.name}] invalid threadId format: ${threadId}`);
|
|
13245
13245
|
}
|
|
13246
13246
|
const targetType = threadId.startsWith("mr:") ? "mr" : "issue";
|
|
13247
|
-
await this.createNote(chatId, targetType, Number(match[1]), text);
|
|
13247
|
+
await this.createNote(chatId, targetType, Number(match[1]), this.formatMarkdownAttributedText(text, sourceLabel));
|
|
13248
13248
|
}
|
|
13249
13249
|
onPromptStart(chatId, _sessionId, messageId) {
|
|
13250
13250
|
if (!messageId)
|
|
@@ -13389,6 +13389,13 @@ var GitlabChannel = class extends PollingChannelBase {
|
|
|
13389
13389
|
}
|
|
13390
13390
|
try {
|
|
13391
13391
|
await this.handleInbound(envelope);
|
|
13392
|
+
} catch (err) {
|
|
13393
|
+
process2.stderr.write(`[Channel:${this.name}] error processing todo ${todo.id}: ${err}
|
|
13394
|
+
`);
|
|
13395
|
+
try {
|
|
13396
|
+
await this.createNote(chatId, targetType, target.iid, this.formatMarkdownAttributedText("\u26A0\uFE0F Failed to process this request. Please re-mention the bot to retry.", this.getInboundErrorSourceLabel(envelope)));
|
|
13397
|
+
} catch {
|
|
13398
|
+
}
|
|
13392
13399
|
} finally {
|
|
13393
13400
|
this.reactions.delete(messageId);
|
|
13394
13401
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
ChannelBase,
|
|
5
5
|
isTerminalTaskLifecycleType
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-IXEZHTDR.js";
|
|
7
7
|
import "./chunk-IW6RQPQB.js";
|
|
8
8
|
import {
|
|
9
9
|
require_abort_controller,
|
|
@@ -9667,6 +9667,7 @@ var TELEGRAM_BOT_COMMANDS = [
|
|
|
9667
9667
|
{ command: "cancel", description: "Cancel the running request" },
|
|
9668
9668
|
{ command: "status", description: "Show session info" }
|
|
9669
9669
|
];
|
|
9670
|
+
var TELEGRAM_MESSAGE_LIMIT = 4096;
|
|
9670
9671
|
var TELEGRAM_START_MESSAGE = [
|
|
9671
9672
|
"Qwen Code Telegram bot",
|
|
9672
9673
|
"",
|
|
@@ -9711,6 +9712,14 @@ var TelegramChannel = class extends ChannelBase {
|
|
|
9711
9712
|
getFileUrl(filePath) {
|
|
9712
9713
|
return `https://api.telegram.org/file/bot${this.bot.token}/${filePath}`;
|
|
9713
9714
|
}
|
|
9715
|
+
reportInboundError(envelope, error, reply) {
|
|
9716
|
+
process.stderr.write(`[Telegram:${this.name}] Error handling message: ${error}
|
|
9717
|
+
`);
|
|
9718
|
+
const sourceLabel = this.getInboundErrorSourceLabel(envelope);
|
|
9719
|
+
const delivery = sourceLabel ? this.sendThreadMessage(envelope.chatId, envelope.threadId, "Sorry, something went wrong processing your message.", sourceLabel) : reply();
|
|
9720
|
+
delivery.catch(() => {
|
|
9721
|
+
});
|
|
9722
|
+
}
|
|
9714
9723
|
async connect() {
|
|
9715
9724
|
if (this.hasConnectedOnce) {
|
|
9716
9725
|
this.bot = this.createBot();
|
|
@@ -9725,10 +9734,7 @@ var TelegramChannel = class extends ChannelBase {
|
|
|
9725
9734
|
const text = msg.text;
|
|
9726
9735
|
const envelope = this.buildEnvelope(msg, text, msg.entities);
|
|
9727
9736
|
this.handleInbound(envelope).catch((err) => {
|
|
9728
|
-
|
|
9729
|
-
`);
|
|
9730
|
-
ctx.reply("Sorry, something went wrong processing your message.").catch(() => {
|
|
9731
|
-
});
|
|
9737
|
+
this.reportInboundError(envelope, err, () => ctx.reply("Sorry, something went wrong processing your message."));
|
|
9732
9738
|
});
|
|
9733
9739
|
});
|
|
9734
9740
|
this.bot.on("message:photo", async (ctx) => {
|
|
@@ -9737,24 +9743,22 @@ var TelegramChannel = class extends ChannelBase {
|
|
|
9737
9743
|
const photo = msg.photo[msg.photo.length - 1];
|
|
9738
9744
|
if (!photo)
|
|
9739
9745
|
return;
|
|
9740
|
-
|
|
9741
|
-
|
|
9742
|
-
|
|
9743
|
-
|
|
9744
|
-
|
|
9745
|
-
|
|
9746
|
-
|
|
9747
|
-
|
|
9748
|
-
|
|
9749
|
-
|
|
9750
|
-
|
|
9751
|
-
`
|
|
9752
|
-
}
|
|
9753
|
-
this.handleInbound(envelope).catch((err) => {
|
|
9754
|
-
process.stderr.write(`[Telegram:${this.name}] Error handling message: ${err}
|
|
9746
|
+
this.prepareThenHandleInbound(envelope, async () => {
|
|
9747
|
+
try {
|
|
9748
|
+
const file = await ctx.api.getFile(photo.file_id);
|
|
9749
|
+
const fileUrl = this.getFileUrl(file.file_path);
|
|
9750
|
+
const resp = await fetch(fileUrl);
|
|
9751
|
+
if (!resp.ok)
|
|
9752
|
+
throw new Error(`HTTP ${resp.status}`);
|
|
9753
|
+
const buf = Buffer.from(await resp.arrayBuffer());
|
|
9754
|
+
envelope.imageBase64 = buf.toString("base64");
|
|
9755
|
+
envelope.imageMimeType = "image/jpeg";
|
|
9756
|
+
} catch (err) {
|
|
9757
|
+
process.stderr.write(`[Telegram:${this.name}] Failed to download photo: ${err instanceof Error ? err.message : err}
|
|
9755
9758
|
`);
|
|
9756
|
-
|
|
9757
|
-
|
|
9759
|
+
}
|
|
9760
|
+
}).catch((err) => {
|
|
9761
|
+
this.reportInboundError(envelope, err, () => ctx.reply("Sorry, something went wrong processing your message."));
|
|
9758
9762
|
});
|
|
9759
9763
|
});
|
|
9760
9764
|
this.bot.on("message:document", async (ctx) => {
|
|
@@ -9762,38 +9766,36 @@ var TelegramChannel = class extends ChannelBase {
|
|
|
9762
9766
|
const doc = msg.document;
|
|
9763
9767
|
const fileName = doc.file_name || `file_${Date.now()}`;
|
|
9764
9768
|
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
|
-
|
|
9769
|
+
this.prepareThenHandleInbound(envelope, async () => {
|
|
9770
|
+
try {
|
|
9771
|
+
const file = await ctx.api.getFile(doc.file_id);
|
|
9772
|
+
const fileUrl = this.getFileUrl(file.file_path);
|
|
9773
|
+
const resp = await fetch(fileUrl);
|
|
9774
|
+
if (!resp.ok)
|
|
9775
|
+
throw new Error(`HTTP ${resp.status}`);
|
|
9776
|
+
const buf = Buffer.from(await resp.arrayBuffer());
|
|
9777
|
+
const dir = join(tmpdir(), "channel-files", randomUUID());
|
|
9778
|
+
mkdirSync(dir, { recursive: true });
|
|
9779
|
+
const filePath = join(dir, basename(fileName) || `file_${Date.now()}`);
|
|
9780
|
+
writeFileSync(filePath, buf);
|
|
9781
|
+
envelope.text = msg.caption || "";
|
|
9782
|
+
envelope.attachments = [
|
|
9783
|
+
{
|
|
9784
|
+
type: "file",
|
|
9785
|
+
filePath,
|
|
9786
|
+
mimeType: doc.mime_type || "application/octet-stream",
|
|
9787
|
+
fileName
|
|
9788
|
+
}
|
|
9789
|
+
];
|
|
9790
|
+
} catch (err) {
|
|
9791
|
+
process.stderr.write(`[Telegram:${this.name}] Failed to download document: ${err instanceof Error ? err.message : err}
|
|
9787
9792
|
`);
|
|
9788
|
-
|
|
9793
|
+
envelope.text = (msg.caption || "") + `
|
|
9789
9794
|
|
|
9790
9795
|
(User sent a file "${fileName}" but download failed)`;
|
|
9791
|
-
|
|
9792
|
-
|
|
9793
|
-
|
|
9794
|
-
`);
|
|
9795
|
-
ctx.reply("Sorry, something went wrong processing your message.").catch(() => {
|
|
9796
|
-
});
|
|
9796
|
+
}
|
|
9797
|
+
}).catch((err) => {
|
|
9798
|
+
this.reportInboundError(envelope, err, () => ctx.reply("Sorry, something went wrong processing your message."));
|
|
9797
9799
|
});
|
|
9798
9800
|
});
|
|
9799
9801
|
this.bot.on("message:voice", async (ctx) => {
|
|
@@ -9801,38 +9803,36 @@ 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
|
-
|
|
9832
|
-
|
|
9833
|
-
`);
|
|
9834
|
-
ctx.reply("Sorry, something went wrong processing your message.").catch(() => {
|
|
9835
|
-
});
|
|
9833
|
+
}
|
|
9834
|
+
}).catch((err) => {
|
|
9835
|
+
this.reportInboundError(envelope, err, () => ctx.reply("Sorry, something went wrong processing your message."));
|
|
9836
9836
|
});
|
|
9837
9837
|
});
|
|
9838
9838
|
this.bot.start({ drop_pending_updates: true }).catch((err) => {
|
|
@@ -9913,27 +9913,44 @@ var TelegramChannel = class extends ChannelBase {
|
|
|
9913
9913
|
const route = envelope.threadId === void 0 ? {} : { threadId: envelope.threadId };
|
|
9914
9914
|
await this.inboundRoute.run(route, () => super.handleInbound(envelope));
|
|
9915
9915
|
}
|
|
9916
|
+
async prepareThenHandleInbound(envelope, prepare) {
|
|
9917
|
+
const route = envelope.threadId === void 0 ? {} : { threadId: envelope.threadId };
|
|
9918
|
+
await this.inboundRoute.run(route, () => super.prepareThenHandleInbound(envelope, prepare));
|
|
9919
|
+
}
|
|
9916
9920
|
async sendMessage(chatId, text) {
|
|
9917
9921
|
await this.sendTelegramMessage(chatId, text, this.inboundRoute.getStore()?.threadId);
|
|
9918
9922
|
}
|
|
9919
|
-
async
|
|
9923
|
+
async sendThreadMessage(chatId, threadId, text, sourceLabel) {
|
|
9924
|
+
await this.sendTelegramMessage(chatId, text, threadId, sourceLabel);
|
|
9925
|
+
}
|
|
9926
|
+
async sendResponseMessage(chatId, text, sessionId, sourceLabel) {
|
|
9920
9927
|
const inboundRoute = this.inboundRoute.getStore();
|
|
9921
9928
|
const target = this.router.getTarget(sessionId);
|
|
9922
9929
|
const threadId = inboundRoute !== void 0 ? inboundRoute.threadId : target?.channelName === this.name && target.chatId === chatId ? target.threadId : void 0;
|
|
9923
|
-
await this.sendTelegramMessage(chatId, text, threadId);
|
|
9930
|
+
await this.sendTelegramMessage(chatId, text, threadId, sourceLabel ?? this.getResponseSourceLabel(sessionId));
|
|
9924
9931
|
}
|
|
9925
|
-
async pushProactive(target, text) {
|
|
9926
|
-
await this.sendTelegramMessage(target.chatId, text, target.threadId);
|
|
9932
|
+
async pushProactive(target, text, sourceLabel) {
|
|
9933
|
+
await this.sendTelegramMessage(target.chatId, text, target.threadId, sourceLabel);
|
|
9927
9934
|
}
|
|
9928
|
-
async sendTelegramMessage(chatId, text, threadId) {
|
|
9935
|
+
async sendTelegramMessage(chatId, text, threadId, sourceLabel) {
|
|
9929
9936
|
const html = telegramFormat(text);
|
|
9930
|
-
const
|
|
9931
|
-
const
|
|
9937
|
+
const prefix = sourceLabel && text.trim().length > 0 ? `${escapeTelegramHtml(sourceLabel)} ` : void 0;
|
|
9938
|
+
const chunks = splitAttributedTelegramHtml(html, prefix, sourceLabel);
|
|
9932
9939
|
for (const chunk of chunks) {
|
|
9940
|
+
const options = chunk.isHtml ? threadId === void 0 ? { parse_mode: "HTML" } : {
|
|
9941
|
+
parse_mode: "HTML",
|
|
9942
|
+
message_thread_id: Number(threadId)
|
|
9943
|
+
} : threadId === void 0 ? void 0 : { message_thread_id: Number(threadId) };
|
|
9944
|
+
if (!chunk.isHtml) {
|
|
9945
|
+
await this.bot.api.sendMessage(chatId, chunk.text, options);
|
|
9946
|
+
continue;
|
|
9947
|
+
}
|
|
9933
9948
|
try {
|
|
9934
|
-
await this.bot.api.sendMessage(chatId, chunk, options);
|
|
9949
|
+
await this.bot.api.sendMessage(chatId, chunk.text, options);
|
|
9935
9950
|
} catch {
|
|
9936
|
-
|
|
9951
|
+
const withoutTags = chunk.text.replace(/<[^>]*>/g, "");
|
|
9952
|
+
const plainText = prefix && sourceLabel && withoutTags.startsWith(prefix) ? `${sourceLabel} ${withoutTags.slice(prefix.length)}` : withoutTags;
|
|
9953
|
+
await this.bot.api.sendMessage(chatId, plainText, threadId === void 0 ? void 0 : { message_thread_id: Number(threadId) });
|
|
9937
9954
|
}
|
|
9938
9955
|
}
|
|
9939
9956
|
}
|
|
@@ -9982,6 +9999,105 @@ var TelegramChannel = class extends ChannelBase {
|
|
|
9982
9999
|
};
|
|
9983
10000
|
}
|
|
9984
10001
|
};
|
|
10002
|
+
function splitAttributedTelegramHtml(html, prefix, sourceLabel) {
|
|
10003
|
+
const chunks = splitHtmlForTelegram(html);
|
|
10004
|
+
const contentLimit = TELEGRAM_MESSAGE_LIMIT - (prefix?.length ?? 0);
|
|
10005
|
+
if (contentLimit <= 0) {
|
|
10006
|
+
throw new Error("Telegram source label exceeds the message limit.");
|
|
10007
|
+
}
|
|
10008
|
+
const attributed = [];
|
|
10009
|
+
for (const chunk of chunks) {
|
|
10010
|
+
const split = splitTelegramHtmlAtLimit(chunk, contentLimit);
|
|
10011
|
+
if (split) {
|
|
10012
|
+
attributed.push(...split.map((part) => ({
|
|
10013
|
+
text: `${prefix ?? ""}${part}`,
|
|
10014
|
+
isHtml: true
|
|
10015
|
+
})));
|
|
10016
|
+
continue;
|
|
10017
|
+
}
|
|
10018
|
+
attributed.push(...splitAttributedTelegramText(chunk.replace(/<[^>]*>/g, ""), sourceLabel).map((text) => ({ text, isHtml: false })));
|
|
10019
|
+
}
|
|
10020
|
+
return attributed;
|
|
10021
|
+
}
|
|
10022
|
+
__name(splitAttributedTelegramHtml, "splitAttributedTelegramHtml");
|
|
10023
|
+
function splitTelegramHtmlAtLimit(html, limit) {
|
|
10024
|
+
const tokens = html.match(/<[^>]+>|&(?:#\d+|#x[\da-f]+|[a-z][\da-z]+);|[\s\S]/giu);
|
|
10025
|
+
if (!tokens)
|
|
10026
|
+
return [];
|
|
10027
|
+
const chunks = [];
|
|
10028
|
+
const openTags = [];
|
|
10029
|
+
let current = "";
|
|
10030
|
+
let hasContent = false;
|
|
10031
|
+
const closingTags = /* @__PURE__ */ __name(() => [...openTags].reverse().map(({ name }) => `</${name}>`).join(""), "closingTags");
|
|
10032
|
+
const reopenedTags = /* @__PURE__ */ __name(() => openTags.map(({ html: html2 }) => html2).join(""), "reopenedTags");
|
|
10033
|
+
const flush = /* @__PURE__ */ __name(() => {
|
|
10034
|
+
if (!hasContent)
|
|
10035
|
+
return false;
|
|
10036
|
+
chunks.push(`${current}${closingTags()}`);
|
|
10037
|
+
current = reopenedTags();
|
|
10038
|
+
hasContent = false;
|
|
10039
|
+
return true;
|
|
10040
|
+
}, "flush");
|
|
10041
|
+
for (const token of tokens) {
|
|
10042
|
+
const closingMatch = token.match(/^<\/([a-z\d]+)/iu);
|
|
10043
|
+
if (closingMatch) {
|
|
10044
|
+
current += token;
|
|
10045
|
+
const index = openTags.findLastIndex(({ name }) => name === closingMatch[1]?.toLowerCase());
|
|
10046
|
+
if (index !== -1)
|
|
10047
|
+
openTags.splice(index, 1);
|
|
10048
|
+
continue;
|
|
10049
|
+
}
|
|
10050
|
+
const openingMatch = token.match(/^<([a-z\d]+)/iu);
|
|
10051
|
+
const isSelfClosing = /^<br\b|\/>$/iu.test(token);
|
|
10052
|
+
if (openingMatch && !isSelfClosing) {
|
|
10053
|
+
const tag = { name: openingMatch[1].toLowerCase(), html: token };
|
|
10054
|
+
const required = `${current}${token}</${tag.name}>${closingTags()}`;
|
|
10055
|
+
if (required.length > limit && !flush())
|
|
10056
|
+
return void 0;
|
|
10057
|
+
if (`${current}${token}</${tag.name}>${closingTags()}`.length > limit) {
|
|
10058
|
+
return void 0;
|
|
10059
|
+
}
|
|
10060
|
+
current += token;
|
|
10061
|
+
openTags.push(tag);
|
|
10062
|
+
continue;
|
|
10063
|
+
}
|
|
10064
|
+
if (`${current}${token}${closingTags()}`.length > limit && !flush()) {
|
|
10065
|
+
return void 0;
|
|
10066
|
+
}
|
|
10067
|
+
if (`${current}${token}${closingTags()}`.length > limit)
|
|
10068
|
+
return void 0;
|
|
10069
|
+
current += token;
|
|
10070
|
+
hasContent = true;
|
|
10071
|
+
}
|
|
10072
|
+
if (hasContent)
|
|
10073
|
+
chunks.push(`${current}${closingTags()}`);
|
|
10074
|
+
return chunks;
|
|
10075
|
+
}
|
|
10076
|
+
__name(splitTelegramHtmlAtLimit, "splitTelegramHtmlAtLimit");
|
|
10077
|
+
function splitAttributedTelegramText(text, sourceLabel) {
|
|
10078
|
+
if (text.length === 0)
|
|
10079
|
+
return [];
|
|
10080
|
+
const prefix = sourceLabel ? `${sourceLabel} ` : "";
|
|
10081
|
+
const contentLimit = TELEGRAM_MESSAGE_LIMIT - prefix.length;
|
|
10082
|
+
if (contentLimit <= 0) {
|
|
10083
|
+
throw new Error("Telegram source label exceeds the message limit.");
|
|
10084
|
+
}
|
|
10085
|
+
const chunks = [];
|
|
10086
|
+
for (let offset = 0; offset < text.length; ) {
|
|
10087
|
+
let end = Math.min(offset + contentLimit, text.length);
|
|
10088
|
+
if (end < text.length && /[\uD800-\uDBFF]/u.test(text[end - 1] ?? "") && /[\uDC00-\uDFFF]/u.test(text[end] ?? "")) {
|
|
10089
|
+
end--;
|
|
10090
|
+
}
|
|
10091
|
+
chunks.push(`${prefix}${text.slice(offset, end)}`);
|
|
10092
|
+
offset = end;
|
|
10093
|
+
}
|
|
10094
|
+
return chunks;
|
|
10095
|
+
}
|
|
10096
|
+
__name(splitAttributedTelegramText, "splitAttributedTelegramText");
|
|
10097
|
+
function escapeTelegramHtml(value) {
|
|
10098
|
+
return value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
|
|
10099
|
+
}
|
|
10100
|
+
__name(escapeTelegramHtml, "escapeTelegramHtml");
|
|
9985
10101
|
|
|
9986
10102
|
// packages/channels/telegram/dist/index.js
|
|
9987
10103
|
var plugin = {
|
|
@@ -10,7 +10,7 @@ import "./chunk-7E7UCJHS.js";
|
|
|
10
10
|
import {
|
|
11
11
|
ChannelBase,
|
|
12
12
|
sanitizeLogText
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-IXEZHTDR.js";
|
|
14
14
|
import "./chunk-IW6RQPQB.js";
|
|
15
15
|
import "./chunk-CQ35AJ4Z.js";
|
|
16
16
|
import "./chunk-DMTGGOSA.js";
|
|
@@ -1756,12 +1756,23 @@ var WeComChannel = class extends ChannelBase {
|
|
|
1756
1756
|
return true;
|
|
1757
1757
|
}
|
|
1758
1758
|
async sendMessage(chatId, text) {
|
|
1759
|
+
await this.sendAttributedMessage(chatId, text);
|
|
1760
|
+
}
|
|
1761
|
+
async sendThreadMessage(chatId, _threadId, text, sourceLabel) {
|
|
1762
|
+
await this.sendAttributedMessage(chatId, text, sourceLabel);
|
|
1763
|
+
}
|
|
1764
|
+
async sendAttributedMessage(chatId, text, sourceLabel) {
|
|
1759
1765
|
const client = this.client;
|
|
1760
1766
|
if (!client) {
|
|
1761
1767
|
throw new Error(`[WeCom:${this.name}] No active SDK client, cannot send.`);
|
|
1762
1768
|
}
|
|
1763
1769
|
const { cleanedText, media } = parseOutboundMediaMarkers(text);
|
|
1764
|
-
const
|
|
1770
|
+
const prefix = sourceLabel && (cleanedText.trim().length > 0 || media.length > 0) ? `${escapeWeComMarkdown(sourceLabel)}
|
|
1771
|
+
` : void 0;
|
|
1772
|
+
const chunks = splitMarkdownChunks(cleanedText, prefix);
|
|
1773
|
+
if (chunks.length === 0 && media.length > 0 && prefix) {
|
|
1774
|
+
chunks.push(prefix.trimEnd());
|
|
1775
|
+
}
|
|
1765
1776
|
if (chunks.length === 0 && media.length === 0) {
|
|
1766
1777
|
process.stderr.write(`[WeCom:${this.name}] sendMessage produced empty payload for chatId=${sanitizeLogText(chatId, 100)}.
|
|
1767
1778
|
`);
|
|
@@ -1867,22 +1878,24 @@ var WeComChannel = class extends ChannelBase {
|
|
|
1867
1878
|
`);
|
|
1868
1879
|
return;
|
|
1869
1880
|
}
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1881
|
+
await this.processPreflightedInbound(envelope, async () => {
|
|
1882
|
+
attachments = await this.downloadAttachments(body, attachments, messageId, attachmentRouteKey, connectionGeneration);
|
|
1883
|
+
if (this.disconnectGeneration !== connectionGeneration) {
|
|
1884
|
+
process.stderr.write(`[WeCom:${this.name}] dropping message ${logMessageId}: connection changed during attachment download.
|
|
1873
1885
|
`);
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
+
return;
|
|
1887
|
+
}
|
|
1888
|
+
if (attachments.length) {
|
|
1889
|
+
envelope.attachments = attachments;
|
|
1890
|
+
}
|
|
1891
|
+
if (!envelope.text && attachments.length) {
|
|
1892
|
+
envelope.text = attachments.some((a) => a.type === "image") ? "(image)" : `(file: ${attachments[0]?.fileName ?? "file"})`;
|
|
1893
|
+
}
|
|
1894
|
+
if (rawMessageId)
|
|
1895
|
+
this.seenMessages.set(rawMessageId, Date.now());
|
|
1896
|
+
processStarted = true;
|
|
1897
|
+
await this.processInbound(envelope);
|
|
1898
|
+
});
|
|
1886
1899
|
} catch (err) {
|
|
1887
1900
|
if (rawMessageId && !processStarted) {
|
|
1888
1901
|
this.seenMessages.delete(rawMessageId);
|
|
@@ -2649,14 +2662,18 @@ function isWeComMediaType(value) {
|
|
|
2649
2662
|
return value === "image" || value === "file" || value === "voice" || value === "video";
|
|
2650
2663
|
}
|
|
2651
2664
|
__name(isWeComMediaType, "isWeComMediaType");
|
|
2652
|
-
function splitMarkdownChunks(text) {
|
|
2665
|
+
function splitMarkdownChunks(text, prefix) {
|
|
2653
2666
|
if (!text)
|
|
2654
2667
|
return [];
|
|
2668
|
+
const contentLimit = MARKDOWN_CHUNK_BYTES - Buffer2.byteLength(prefix ?? "");
|
|
2669
|
+
if (contentLimit <= 0) {
|
|
2670
|
+
throw new Error("WeCom source label exceeds the markdown message limit.");
|
|
2671
|
+
}
|
|
2655
2672
|
const chunks = [];
|
|
2656
2673
|
let current = "";
|
|
2657
2674
|
let codeFence;
|
|
2658
2675
|
const fits = /* @__PURE__ */ __name((value, nextCodeFence = codeFence) => Buffer2.byteLength(nextCodeFence ? `${value}
|
|
2659
|
-
${nextCodeFence}` : value, "utf8") <=
|
|
2676
|
+
${nextCodeFence}` : value, "utf8") <= contentLimit, "fits");
|
|
2660
2677
|
const flush = /* @__PURE__ */ __name((closeCode = true) => {
|
|
2661
2678
|
if (!current)
|
|
2662
2679
|
return;
|
|
@@ -2705,9 +2722,13 @@ ${token}` : token;
|
|
|
2705
2722
|
}
|
|
2706
2723
|
}
|
|
2707
2724
|
flush();
|
|
2708
|
-
return chunks;
|
|
2725
|
+
return prefix ? chunks.map((chunk) => `${prefix}${chunk}`) : chunks;
|
|
2709
2726
|
}
|
|
2710
2727
|
__name(splitMarkdownChunks, "splitMarkdownChunks");
|
|
2728
|
+
function escapeWeComMarkdown(value) {
|
|
2729
|
+
return value.replace(/([\\`*_{}[\]()#+\-.!|>])/gu, "\\$1");
|
|
2730
|
+
}
|
|
2731
|
+
__name(escapeWeComMarkdown, "escapeWeComMarkdown");
|
|
2711
2732
|
function toggleCodeFenceState(line, codeFence) {
|
|
2712
2733
|
let nextCodeFence = codeFence;
|
|
2713
2734
|
for (const match of line.matchAll(/```|~~~/g)) {
|