@qwen-code/qwen-code 0.22.2-preview.1 → 0.22.3
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/goal-draft/SKILL.md +109 -0
- package/bundled/qc-helper/docs/configuration/settings.md +37 -36
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/channels/dws.md +2 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +34 -3
- package/bundled/qc-helper/docs/features/code-review.md +3 -3
- package/bundled/qc-helper/docs/features/commands.md +2 -1
- package/bundled/qc-helper/docs/features/computer-use.md +2 -2
- 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/status-line.md +3 -3
- package/bundled/qc-helper/docs/features/tool-use-summaries.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve.md +1 -1
- package/bundled/review/SKILL.md +81 -31
- package/bundled/review/references/persistence.md +7 -3
- package/bundled/review/references/posting.md +10 -4
- package/chunks/MaxSizedBox-X42SXBJH.js +110 -0
- package/chunks/{StandaloneSessionPicker-5D2L22SF.js → StandaloneSessionPicker-2FJAOLGG.js} +81 -83
- package/chunks/{acpAgent-4DCKLA32.js → acpAgent-2ZMIJAFV.js} +1153 -357
- package/chunks/{agent-B4AFZL6H.js → agent-X5WX3L2I.js} +44 -46
- package/chunks/agent-headless-IZM25LJA.js +85 -0
- package/chunks/{anthropicContentGenerator-U76GTVB6.js → anthropicContentGenerator-YVTB6QX7.js} +46 -50
- package/chunks/{artifact-tool-XDJCZZCF.js → artifact-tool-XSMPHZBT.js} +11 -3
- package/chunks/{askUserQuestion-ZXXERLEV.js → askUserQuestion-4SWJY65V.js} +2 -2
- package/chunks/bridge-ME6QXZNA.js +119 -0
- package/chunks/{channel-management-service-HXXS3HOZ.js → channel-management-service-HQ6KDS7C.js} +6 -6
- package/chunks/channel-settings-store-PEOI7XCG.js +120 -0
- package/chunks/{channel-worker-group-EVDC2P4K.js → channel-worker-group-6NA6BBZV.js} +8 -7
- package/chunks/{channel-worker-manager-IJJZHGEI.js → channel-worker-manager-NEZ2J6RK.js} +10 -8
- package/chunks/{channel-worker-supervisor-YSKB5GVB.js → channel-worker-supervisor-FKU7DIHJ.js} +6 -5
- package/chunks/{chunk-7QGEJI7M.js → chunk-23RFD54N.js} +1 -1
- package/chunks/{chunk-JLU3FPQR.js → chunk-2HYKTO7V.js} +5 -5
- package/chunks/chunk-2LNNVAUV.js +1584 -0
- package/chunks/{chunk-FJAITR4L.js → chunk-2OBKDPZZ.js} +2 -2
- package/chunks/{chunk-JSY43GMI.js → chunk-2OUD5T67.js} +185 -174
- package/chunks/{chunk-LJP2BBMK.js → chunk-2SXSLSQE.js} +4 -4
- package/chunks/chunk-2TNL5KPM.js +49 -0
- package/chunks/{chunk-XMSMTU6H.js → chunk-2YOHKHYR.js} +4 -4
- package/chunks/{chunk-MCKJTBZN.js → chunk-36GSQ3MM.js} +2 -2
- package/chunks/chunk-36LGBEM6.js +130 -0
- package/chunks/{chunk-ZWKGZB2K.js → chunk-3JXM2CVW.js} +3 -3
- package/chunks/{chunk-X3XGCJ32.js → chunk-3SZC4VP4.js} +28 -111
- package/chunks/{chunk-ILPXSKGQ.js → chunk-3WK3QDNV.js} +2 -2
- package/chunks/{chunk-IKN3IUJP.js → chunk-3XKLXHGK.js} +17 -9
- package/chunks/{chunk-ZLTEQYNC.js → chunk-42IDLQWS.js} +26 -20
- package/chunks/chunk-4CMJKUND.js +95 -0
- package/chunks/{chunk-77TOMRBG.js → chunk-4K7KNVWH.js} +3 -3
- package/chunks/{chunk-SQPOJ4ZI.js → chunk-4NDLQAY2.js} +27 -270
- package/chunks/{chunk-V3GINY6K.js → chunk-4QHPPXK2.js} +16 -8
- package/chunks/{chunk-VBF4KZRQ.js → chunk-4TT3IVGA.js} +1 -1
- package/chunks/{chunk-IOGKXPL3.js → chunk-4VPCTGH6.js} +6 -6
- package/chunks/chunk-4VQBQLIZ.js +293 -0
- package/chunks/{chunk-UCSV2IZW.js → chunk-62GQFYID.js} +3 -3
- package/chunks/{chunk-SLEWBQWM.js → chunk-6DIGWMGT.js} +2 -2
- package/chunks/{chunk-BRVWYMKV.js → chunk-6MBXY6WM.js} +1 -1
- package/chunks/{chunk-PVBT5QPD.js → chunk-6PJOTWAN.js} +1 -1
- package/chunks/{chunk-WZ3QKPMQ.js → chunk-6X7EU5TI.js} +19 -31
- package/chunks/{chunk-KQYW2GB5.js → chunk-6ZPDLGHN.js} +6 -6
- package/chunks/{chunk-AKQA3WCH.js → chunk-734C6JGI.js} +723 -3399
- package/chunks/{chunk-F7M6ZFGU.js → chunk-73RM4POK.js} +8 -8
- package/chunks/{chunk-ELY4QVIB.js → chunk-7EQQR46F.js} +1 -1
- package/chunks/{chunk-KGJGEEVR.js → chunk-7FA2II6K.js} +10 -1
- package/chunks/chunk-7J6OTNGO.js +424 -0
- package/chunks/{chunk-LWLEPXKK.js → chunk-7LOELM2I.js} +19 -2
- package/chunks/{chunk-DIMEPKCW.js → chunk-7S226YTK.js} +1 -1
- package/chunks/{chunk-AWFZDYSD.js → chunk-7T52W4SW.js} +1 -1
- package/chunks/{chunk-3JKUX4PB.js → chunk-7VMIMAVB.js} +9 -9
- package/chunks/{chunk-2MHGD7EE.js → chunk-A3LWD5MK.js} +1 -1
- package/chunks/{chunk-E4I5MVBR.js → chunk-ABS25QER.js} +1 -1
- package/chunks/{chunk-TDQBVEPK.js → chunk-AIAOIFY4.js} +10 -8
- package/chunks/{chunk-NEZZHGEI.js → chunk-AYFA7MZV.js} +6 -6
- package/chunks/{chunk-FVDQ5E67.js → chunk-B466ZSHZ.js} +3 -3
- package/chunks/{chunk-6US7BF3G.js → chunk-B5PHIJGI.js} +183 -5
- package/chunks/{chunk-4TPAG3O7.js → chunk-BFPESSTR.js} +1 -1
- package/chunks/{chunk-WBT3STGU.js → chunk-BKWNKLZB.js} +20 -20
- package/chunks/{chunk-T45CL2NT.js → chunk-BOWFGCEU.js} +3 -3
- package/chunks/{chunk-IPQA4SR5.js → chunk-BWORX6FA.js} +1 -1
- package/chunks/{chunk-BKDAF7ES.js → chunk-BXDAPVQU.js} +2 -2
- package/chunks/{chunk-ZEADBZLO.js → chunk-C2X7KY45.js} +3 -3
- package/chunks/{chunk-PTQF7WRA.js → chunk-C3PEFRKD.js} +6 -6
- package/chunks/{chunk-7OBH4AM2.js → chunk-CAJTKR6W.js} +5 -5
- package/chunks/{chunk-2FN2HNTI.js → chunk-CFJY4DGX.js} +2 -2
- package/chunks/{chunk-SUE2ZMUH.js → chunk-CIZCL2MW.js} +49 -31
- package/chunks/{chunk-W2WRNJKX.js → chunk-CLWO3B77.js} +6 -6
- package/chunks/{chunk-U45D46O5.js → chunk-CMHFCLBU.js} +1 -1
- package/chunks/{chunk-LRKMQPMD.js → chunk-CQH5KTKC.js} +1 -1
- package/chunks/{chunk-JECO75XD.js → chunk-D5LUXLUH.js} +2 -2
- package/chunks/chunk-DJBQCO2E.js +842 -0
- package/chunks/{chunk-BQBUZDDH.js → chunk-DJECZIJX.js} +42 -42
- package/chunks/{chunk-GTUZ3R6I.js → chunk-DJEZ55D4.js} +351 -113
- package/chunks/{chunk-HPECDZ6X.js → chunk-DJPASAUV.js} +3866 -1077
- package/chunks/{chunk-VYWCFWI5.js → chunk-DMLVSW7L.js} +542 -654
- package/chunks/{chunk-EB4VDXNI.js → chunk-DYXFD5RO.js} +182 -3
- package/chunks/{chunk-ZKAZP2ZG.js → chunk-EB6QRGHM.js} +3 -3
- package/chunks/{chunk-UWICO5KN.js → chunk-EFWRMA2I.js} +3 -3
- package/chunks/{chunk-3UZCLCXR.js → chunk-EKSCLBBF.js} +3 -3
- package/chunks/{chunk-ALTQLFEG.js → chunk-EQSBPBZ3.js} +5 -194
- package/chunks/{chunk-624NHDGB.js → chunk-ERFDKH32.js} +11 -0
- package/chunks/{chunk-4K44OMLI.js → chunk-FROAFEFB.js} +3 -3
- package/chunks/{chunk-MZS7GEC7.js → chunk-FTF2YIZ5.js} +1 -1
- package/chunks/{chunk-Z7VOMGDC.js → chunk-FTJMWDND.js} +0 -24
- package/chunks/{chunk-ZJG323IA.js → chunk-G6FECKTJ.js} +7 -5
- package/chunks/{chunk-TMGAS5TO.js → chunk-GBJBJ4HX.js} +26 -4
- package/chunks/{chunk-UCQOSV6A.js → chunk-GPGU4S2N.js} +3 -3
- package/chunks/{chunk-BHTJAO36.js → chunk-GVIVASYK.js} +7 -7
- package/chunks/chunk-H72BQNM3.js +645 -0
- package/chunks/{chunk-Z4X5MTRT.js → chunk-HCOBAG2L.js} +2 -4
- package/chunks/{chunk-FCSWZAS3.js → chunk-HP5LR5HL.js} +5 -5
- package/chunks/{chunk-7JPW6IYH.js → chunk-HVC3PNVC.js} +1 -1
- package/chunks/{chunk-OI2DR6QB.js → chunk-I6LYRJPB.js} +3 -3
- package/chunks/{chunk-E55H6BZ7.js → chunk-ICURCKIU.js} +1335 -119
- package/chunks/{chunk-PAJGKZAA.js → chunk-ISKH4QX3.js} +14 -12
- package/chunks/{chunk-AYVIGUUK.js → chunk-JB4JIVTJ.js} +1 -1
- package/chunks/{chunk-FN5C6C7G.js → chunk-JHYH6PYQ.js} +192 -478
- package/chunks/{chunk-T6OODF2U.js → chunk-JWALNCLT.js} +1 -1
- package/chunks/{chunk-SKNVVYIJ.js → chunk-K5KXUXWC.js} +3 -3
- package/chunks/{chunk-XUX6O2ZT.js → chunk-KID24ZFN.js} +4 -1
- package/chunks/{chunk-I6DY753S.js → chunk-KJO2LBUK.js} +944 -18
- package/chunks/{chunk-5T4LWWNX.js → chunk-KYWTPLBJ.js} +18 -21
- package/chunks/{chunk-CZFQ62RM.js → chunk-LHBUKJG2.js} +4 -4
- package/chunks/{chunk-TOF4UZHH.js → chunk-LUEHOUHM.js} +3 -3
- package/chunks/{chunk-2YDYDDE2.js → chunk-M3QRM3DE.js} +3 -3
- package/chunks/{chunk-GNMJNDZE.js → chunk-M6FOJXW3.js} +1 -1
- package/chunks/{chunk-ZGWDHSUM.js → chunk-MF7HCQWZ.js} +4 -4
- package/chunks/{chunk-66GIFJ63.js → chunk-MK2GIB46.js} +1 -1
- package/chunks/{chunk-TFV4RXPU.js → chunk-MO3FC2WT.js} +1 -1
- package/chunks/{chunk-TR7G7XFQ.js → chunk-MPNBVAEU.js} +5 -5
- package/chunks/{chunk-K3LPAED5.js → chunk-MQM5PJML.js} +24 -4
- package/chunks/{chunk-3WBMPR3S.js → chunk-MSBO7X2W.js} +1 -1
- package/chunks/{chunk-5PA6UEYA.js → chunk-MZCJWS5Y.js} +1 -1
- package/chunks/{chunk-BGXZBI5B.js → chunk-N4X7G4J2.js} +2 -1
- package/chunks/{chunk-27ONXAFY.js → chunk-NIFYWDYN.js} +1 -1
- package/chunks/{chunk-AP7WZONS.js → chunk-NMOD2FXQ.js} +19 -9
- package/chunks/{chunk-IJVDHPKD.js → chunk-NU7RKEZR.js} +2 -2
- package/chunks/{chunk-5URK47RN.js → chunk-NV55WWD6.js} +11595 -10375
- package/chunks/{chunk-HABT2Z7R.js → chunk-OU5APVWO.js} +4 -4
- package/chunks/{chunk-QR4AHMGQ.js → chunk-P2G476QN.js} +13 -13
- package/chunks/{chunk-5SM2AK65.js → chunk-PADPMMYM.js} +5 -5
- package/chunks/{chunk-RRKNX553.js → chunk-PDQGMSZK.js} +1 -1
- package/chunks/{chunk-GTUKW3I6.js → chunk-PPKZ7JOE.js} +1 -1
- package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
- package/chunks/{chunk-XIRDDFRS.js → chunk-PZ66FRIC.js} +2644 -2296
- package/chunks/{chunk-H3HZ4AWW.js → chunk-Q2MSPKIJ.js} +1 -1
- package/chunks/{chunk-WEGXPP5E.js → chunk-QFCDF5PL.js} +1 -1
- package/chunks/{chunk-OF2DPXUS.js → chunk-QYMAKPY5.js} +119 -24
- package/chunks/{chunk-JVPFTDBK.js → chunk-RFIDDFAL.js} +1 -1
- package/chunks/chunk-RKFGE7JH.js +93 -0
- package/chunks/{chunk-CPPYZHBN.js → chunk-RU7BK6B3.js} +1 -1
- package/chunks/chunk-SEONHUS3.js +275 -0
- package/chunks/{chunk-DEYPMJPD.js → chunk-SMPR7SPO.js} +1 -1
- package/chunks/chunk-SS4MRMKE.js +3525 -0
- package/chunks/{chunk-BPMVPWBT.js → chunk-SS5SDCD3.js} +6 -6
- package/chunks/{chunk-J3CBIEDS.js → chunk-ST5MDGH3.js} +32 -15
- package/chunks/{chunk-J5352S3S.js → chunk-ST5V3ZOC.js} +3 -3
- package/chunks/{chunk-7CWEZQ6T.js → chunk-STUJ7IMZ.js} +0 -77
- package/chunks/{chunk-4K7NQDCG.js → chunk-T4EFG2P5.js} +18 -9
- package/chunks/{chunk-TWSKM647.js → chunk-T7KMERIX.js} +1 -1
- package/chunks/{chunk-5CMWFBML.js → chunk-TEBDFQBZ.js} +1 -1
- package/chunks/{chunk-EC5BONC3.js → chunk-TPI7O7HR.js} +1 -1
- package/chunks/{chunk-T2CRBIDJ.js → chunk-TTX2JUE6.js} +1 -1
- package/chunks/{chunk-VOEMVOM4.js → chunk-TVC6HQ2U.js} +2 -2
- package/chunks/{chunk-WXDZZFH3.js → chunk-TZBSGJ6C.js} +6 -6
- package/chunks/chunk-U54AYGEC.js +337 -0
- package/chunks/{chunk-2NNTE2ED.js → chunk-UHQFIS7N.js} +15 -0
- package/chunks/{chunk-76WGY6LW.js → chunk-URE3QBBB.js} +3 -3
- package/chunks/{chunk-KOJ6MHD5.js → chunk-UTLCH2FK.js} +1 -1
- package/chunks/{chunk-7DPKPBOQ.js → chunk-V2NDP3I4.js} +2 -2
- package/chunks/{chunk-FJWICLG7.js → chunk-V4264FEG.js} +9 -9
- package/chunks/{chunk-XR7OIAQF.js → chunk-V5J4J5TP.js} +2 -2
- package/chunks/{chunk-7UJTY5V3.js → chunk-V7EESTJV.js} +1 -1
- package/chunks/{chunk-Z6L3C4VF.js → chunk-VBCPNIQD.js} +39 -39
- package/chunks/{chunk-ATLGYSYH.js → chunk-VGIFXISB.js} +4 -4
- package/chunks/{chunk-X2UOOG5V.js → chunk-VQUGEVGR.js} +1 -1
- package/chunks/{chunk-XJS54K4A.js → chunk-VTHREBQM.js} +2 -2
- package/chunks/{chunk-AA7VBRBG.js → chunk-W3JH33JE.js} +8 -8
- package/chunks/{chunk-FPH6TXD3.js → chunk-WAOIHTJS.js} +1 -1
- package/chunks/{chunk-CDUN63IN.js → chunk-WGY3AVGM.js} +3 -3
- package/chunks/{chunk-JLGFGPZJ.js → chunk-WNPDGUJO.js} +22 -3
- package/chunks/{chunk-O3BUXIPM.js → chunk-WXEA74YB.js} +3 -3
- package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
- package/chunks/{chunk-VL4YX3FH.js → chunk-XF63PKEN.js} +1 -1
- package/chunks/{chunk-R7G7GKOX.js → chunk-XHF7WQ6B.js} +3 -3
- package/chunks/{chunk-3FSBMAYD.js → chunk-XQFT3QUF.js} +1 -1
- package/chunks/{chunk-3D6PDLNJ.js → chunk-XSG6G3G6.js} +49 -32
- package/chunks/{chunk-5JCZ3UKB.js → chunk-Y5S7LBOZ.js} +44 -7
- package/chunks/{chunk-OLS3MAXQ.js → chunk-YLSQLSH7.js} +15 -9
- package/chunks/{chunk-2SERYG4T.js → chunk-YTDVNSUQ.js} +1 -1
- package/chunks/{chunk-KPF2K55D.js → chunk-ZEYFMJQA.js} +39 -8
- package/chunks/{chunk-OT4YKUUV.js → chunk-ZU4UDIWX.js} +2 -2
- package/chunks/chunk-ZWJDJ6RU.js +2597 -0
- package/chunks/{chunk-R3T33BG5.js → chunk-ZYMLPEZQ.js} +3 -3
- package/chunks/{chunk-DID6IRGC.js → chunk-ZZMSC3RG.js} +56 -39
- package/chunks/{chunk-L436XFLJ.js → chunk-ZZUKP7HV.js} +1 -1
- package/chunks/config-utils-R6M3TA34.js +113 -0
- package/chunks/contextCommand-ZCAP23J6.js +106 -0
- package/chunks/{core-runtime-CEJRHCRF.js → core-runtime-AXB6SK5D.js} +59 -61
- package/chunks/{create-sub-session-RVHSWVAP.js → create-sub-session-23ITIELI.js} +3 -3
- package/chunks/{create-sub-session-DFZVIG56.js → create-sub-session-4QNE64MR.js} +164 -85
- package/chunks/{cron-create-IJGVR5R2.js → cron-create-KJ4IY6PP.js} +57 -10
- package/chunks/{cron-delete-4N5BI6GL.js → cron-delete-MBLQCAYY.js} +4 -4
- package/chunks/{cron-list-2CATIPUX.js → cron-list-DWH2PQ47.js} +4 -4
- package/chunks/{daemon-NAYK4XXU.js → daemon-3GNHB3M2.js} +523 -8
- package/chunks/{daemon-git-worktree-guard-L6ZUFKF7.js → daemon-git-worktree-guard-IVAJJWYK.js} +56 -58
- package/chunks/daemon-status-provider-K3SJ5C2U.js +117 -0
- package/chunks/daemon-trust-policy-DOR3YG62.js +112 -0
- package/chunks/{daemon-trust-policy-monitor-2G3EKQEU.js → daemon-trust-policy-monitor-KGGROSIV.js} +64 -66
- package/chunks/deferred-core-runtime-WOYLUQQ7.js +114 -0
- package/chunks/{display-image-6KHQNEAE.js → display-image-BE7I6ZB6.js} +5 -5
- package/chunks/{dist-DJBNNPLN.js → dist-4WXLCBDR.js} +1 -1
- package/chunks/{dist-TJUDJTCB.js → dist-5VXFRTWU.js} +280 -48
- package/chunks/{dist-6H6RZ5H6.js → dist-6BPYWHVD.js} +89 -65
- package/chunks/{dist-ZBVOXSKF.js → dist-GFN5DCBX.js} +74 -65
- package/chunks/{dist-SATKXKUR.js → dist-HZNT6GQS.js} +1 -1
- package/chunks/{dist-FVJZSIO4.js → dist-LVZCXVPF.js} +72 -20
- package/chunks/{dist-7CKN54NL.js → dist-N6W6E753.js} +71 -64
- package/chunks/{dist-4Q7NTUNB.js → dist-NSV4NBPK.js} +31 -14
- package/chunks/{dist-UQUFZDIY.js → dist-SWQMYP2Q.js} +18 -16
- package/chunks/earlyInputCapture-OHBEVO4K.js +107 -0
- package/chunks/{edit-ZERGX3RV.js → edit-LEQLAGPZ.js} +45 -47
- package/chunks/{en-6MDBWMTG.js → en-YLXBXM4Z.js} +2 -1
- package/chunks/{enter-worktree-UOZ6ZTP7.js → enter-worktree-35QCAAFP.js} +7 -7
- package/chunks/{enterPlanMode-W2RP3P5B.js → enterPlanMode-ONQN3WHE.js} +47 -49
- package/chunks/{environment-ZBJ23YVR.js → environment-UANTR7A4.js} +60 -62
- package/chunks/errors-WAK6KFBC.js +113 -0
- package/chunks/{exit-worktree-G2QATUCV.js → exit-worktree-XQD6D543.js} +7 -7
- package/chunks/exitPlanMode-UEYBG6P5.js +83 -0
- package/chunks/{fast-path-4MWBCEUF.js → fast-path-WUL7UZ6H.js} +7 -7
- package/chunks/{fast-path-settings-XMFBYFUH.js → fast-path-settings-XH426LUU.js} +3 -3
- package/chunks/{glob-DKTNG32L.js → glob-Y54QUWDY.js} +44 -46
- package/chunks/{goal-tools-CNVXMSZD.js → goal-tools-PTD3MBA7.js} +10 -8
- package/chunks/{grep-3NLSS32D.js → grep-5GPICQBU.js} +6 -6
- package/chunks/handleAutoUpdate-FP3NWNSG.js +109 -0
- package/chunks/i18n-INIU5X7A.js +124 -0
- package/chunks/{image-gen-63NN2H5N.js → image-gen-J6FDGUZP.js} +8 -10
- package/chunks/initializer-TYODV6GE.js +113 -0
- package/chunks/installationInfo-AAPKYDSZ.js +107 -0
- package/chunks/{keychain-token-storage-3MGFRYGM.js → keychain-token-storage-37XPR34V.js} +2 -2
- package/chunks/list-TUODDN6J.js +116 -0
- package/chunks/{list-agents-EXRSHIDJ.js → list-agents-DI3YFTDT.js} +2 -2
- package/chunks/{gemini-X5GQHQYF.js → llm-NSAVK5V3.js} +117 -114
- package/chunks/{geminiContentGenerator-UDSWXZXL.js → llm-content-generator-AY2QKXHE.js} +29 -29
- package/chunks/loadedSettingsAdapter-KJCLZ3C4.js +110 -0
- package/chunks/{loggingContentGenerator-73C7TKDK.js → loggingContentGenerator-DSFQHXIF.js} +328 -37
- package/chunks/{loop-wakeup-XBPB2BRO.js → loop-wakeup-XJFONSQ7.js} +5 -5
- package/chunks/{ls-WFONAND2.js → ls-3VAT2J7A.js} +4 -4
- package/chunks/{lsp-DUKPDUXN.js → lsp-5W7IRUBH.js} +2 -2
- package/chunks/{managed-npm-update-H2KOLQZU.js → managed-npm-update-TSWENTK5.js} +57 -59
- package/chunks/mcp-MWSAPFOL.js +110 -0
- package/chunks/{monitor-TGCMNJJH.js → monitor-RW4GWJHB.js} +44 -46
- package/chunks/nonInteractiveCli-JXKL343Q.js +185 -0
- package/chunks/{notebook-edit-YEUNZYDX.js → notebook-edit-CQNYS5OR.js} +45 -47
- package/chunks/{open-with-auth-4UI3KHUR.js → open-with-auth-YN3QZHVM.js} +1 -1
- package/chunks/{openaiContentGenerator-J7LD4VSL.js → openaiContentGenerator-J6QIF7EX.js} +26 -28
- package/chunks/pidfile-QOIQZFT2.js +111 -0
- package/chunks/process-registry-OAEG6WGC.js +662 -0
- package/chunks/{processUtils-ZHFC7CSL.js → processUtils-GPHNANKZ.js} +2 -2
- package/chunks/prompt-terminal-ledger-FOMFTYOM.js +105 -0
- package/chunks/{qwenContentGenerator-YEWWK3JQ.js → qwenContentGenerator-WWDXPYQI.js} +49 -51
- package/chunks/{qwenOAuth2-JIYAWXTW.js → qwenOAuth2-OF5WRBQT.js} +7 -9
- package/chunks/{read-file-ZQI3WPVK.js → read-file-FQUQHC6N.js} +13 -13
- package/chunks/{read-mcp-resource-7A7NFSFL.js → read-mcp-resource-XD257PGJ.js} +2 -2
- package/chunks/{record-artifact-CPJ4IJSD.js → record-artifact-VW23GS4F.js} +4 -4
- package/chunks/{report-findings-VFM5DENC.js → report-findings-AO5VYFLR.js} +9 -5
- package/chunks/{request-shutdown-6IW46GD7.js → request-shutdown-BCLA3JV2.js} +7 -7
- package/chunks/resumeHistoryUtils-NSGF3UCB.js +118 -0
- package/chunks/ripGrep-4CAT6SKV.js +39 -0
- package/chunks/{run-qwen-serve-WHWU7NZ6.js → run-qwen-serve-5X6IDZER.js} +371 -357
- package/chunks/{runtime-E7BSPWQP.js → runtime-HK27GMPF.js} +69 -71
- package/chunks/scheduled-tasks-MN2ZZ5P6.js +127 -0
- package/chunks/{scheduler-TJPATFOM.js → scheduler-WD4MHMO5.js} +58 -60
- package/chunks/{sdk-exporters-http-XXSKBD2C.js → sdk-exporters-http-TTU2CHBU.js} +2 -2
- package/chunks/{sdk-impl-VPNBLV7I.js → sdk-impl-UUMVYMAL.js} +11 -5
- package/chunks/{send-message-OXZK6USO.js → send-message-AJ4OCUBV.js} +25 -9
- package/chunks/serve-2XCHPPGG.js +118 -0
- package/chunks/{server-AXCN7QBJ.js → server-GO2N5DH7.js} +6080 -4964
- package/chunks/{session-HO4US3AG.js → session-IFNHTUBT.js} +112 -112
- package/chunks/session-pr-refresh-I3UBWMVP.js +364 -0
- package/chunks/{settings-B2PFJJN4.js → settings-L6N54CU6.js} +63 -65
- package/chunks/{shell-7XMSANI3.js → shell-4Y5LLW6N.js} +44 -46
- package/chunks/{skill-NL3VH562.js → skill-YOWTRAKQ.js} +68 -24
- package/chunks/skill-settings-ZL4JY5UE.js +118 -0
- package/chunks/spawnChannel-ZST6XJVJ.js +112 -0
- package/chunks/standalone-update-THVU3OKY.js +118 -0
- package/chunks/{startInteractiveUI-G2XKSCQ7.js → startInteractiveUI-XDFSHBZD.js} +3076 -2475
- package/chunks/{stdioHelpers-7A2EE64Z.js → stdioHelpers-AY6XCDY2.js} +3 -1
- package/chunks/{syntheticOutput-5AJ444QT.js → syntheticOutput-ML43GEFN.js} +3 -3
- package/chunks/{task-create-TY7P6UHG.js → task-create-QN4LYRSE.js} +11 -11
- package/chunks/{task-list-BELMPA75.js → task-list-JPLGK45U.js} +5 -5
- package/chunks/{task-stop-U3S3KZG2.js → task-stop-CXEH5L2D.js} +2 -2
- package/chunks/{task-update-O4IGDPCK.js → task-update-IWEOJFV2.js} +11 -11
- package/chunks/{team-create-IYBUOORE.js → team-create-OOPXCDBA.js} +44 -46
- package/chunks/{team-delete-YWFXX77L.js → team-delete-RZVVSGCY.js} +5 -5
- package/chunks/{team-plan-approval-YKU57LBM.js → team-plan-approval-DSX5EWAT.js} +44 -46
- package/chunks/terminal-image-renderer-KS25G33E.js +114 -0
- package/chunks/theme-manager-YMZNG45F.js +102 -0
- package/chunks/{todoWrite-435EO2CS.js → todoWrite-WDJNQEMW.js} +43 -25
- package/chunks/{tool-search-4Q3KASIQ.js → tool-search-J5Q6U7DN.js} +22 -22
- package/chunks/total-session-admission-PVN64JVV.js +114 -0
- package/chunks/trustedFolders-FATSC4YI.js +122 -0
- package/chunks/{types-WYCFCEHR.js → types-HKLPXZB3.js} +1 -3
- package/chunks/{update-relaunch-4DC2KKFS.js → update-relaunch-SIKHLHVR.js} +6 -6
- package/chunks/updateCheck-D3YG2WCD.js +118 -0
- package/chunks/useAutoAcceptIndicator-ILINOSAS.js +120 -0
- package/chunks/{validateNonInterActiveAuth-YAE4YPO3.js → validateNonInterActiveAuth-JUDQP6V4.js} +105 -105
- package/chunks/{version-QFP7OGWX.js → version-C63GDDWN.js} +1 -1
- package/chunks/{web-fetch-6T23IK6Q.js → web-fetch-FOQZMNSC.js} +16 -18
- package/chunks/{web-search-WBWTCZK2.js → web-search-PUJTBFUC.js} +9 -11
- package/chunks/{web-shell-static-A6QMUNNV.js → web-shell-static-HNB4FDOE.js} +2 -2
- package/chunks/{workflow-FMAA3D4R.js → workflow-Y5IPINVH.js} +128 -94
- package/chunks/workspace-providers-status-IJ4VHFMB.js +114 -0
- package/chunks/{workspace-registration-store-CMMX7EPX.js → workspace-registration-store-SMJWI2AI.js} +1 -1
- package/chunks/workspace-registry-BTGZIMPK.js +123 -0
- package/chunks/workspace-service-SIN67ITC.js +126 -0
- package/chunks/workspace-skills-status-F3RKCUIX.js +113 -0
- package/chunks/{workspace-trust-reconciler-PJDQUTJL.js → workspace-trust-reconciler-PLIDLJZX.js} +72 -72
- package/chunks/write-file-PAIGB33C.js +88 -0
- package/chunks/{zh-TW-MV4FWFB6.js → zh-TW-RPTMRTHG.js} +2 -1
- package/chunks/{zh-X3WGU6SI.js → zh-UNY63FR3.js} +2 -1
- package/chunks/{zoom-image-WVYVFRXF.js → zoom-image-LYQD7BQA.js} +13 -13
- package/cli.js +16 -16
- package/locales/en.js +2 -0
- package/locales/zh-TW.js +2 -0
- package/locales/zh.js +2 -0
- package/package.json +3 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-d-8xa8uz.js → abnfDiagram-VCTEODGH-TRCMSA_6.js} +1 -1
- package/web-shell/assets/{arc-BhB7CrGK.js → arc-D9Uls5b3.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-BDCd_IcJ.js → architectureDiagram-5GKGNRK7-Bwb8jPXg.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-C-AHu6mi.js → blockDiagram-NRAW4CY4-DHj71TSX.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-CFjQt0vl.js → c4Diagram-UCG6FXSJ-uKBBdbyr.js} +1 -1
- package/web-shell/assets/channel-CXjVLaBa.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-DRjwqaDq.js → chunk-2Q5K7J3B-BZd0Phrl.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-eHM9noJE.js → chunk-5VM5RSS4-7KNeNBqN.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-CcSWUYn1.js → chunk-F27PBJKO-BeboS7Fi.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-DNr-RF5S.js → chunk-G27WJ6UU-RV3JONoj.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-rVJHoNF8.js → chunk-JWPE2WC7-Yw9FCFsP.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-B2aX0Gzy.js → chunk-LCL6LL3I-GIMnydDe.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-DVp07n32.js → chunk-POPQ4Y6H-Cfrux7bL.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-C6QB_KUr.js → chunk-SVP7TREG-BlvIN0CO.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-CLVxDNCy.js → chunk-XXDRQBXY-DMs7Rr4t.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DANEijO3.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DANEijO3.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-B_aKX3A3.js → cose-bilkent-JH36ORCC-DNGqTNwI.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-BBw2pPUa.js → cynefin-OW5HDTMX-CojMpaoH.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-WWPiBTwk.js → cynefinDiagram-5FMLGOSQ-DF07YXGo.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-CPtIdka-.js → dagre-3AP2YEHR-17-4WtCH.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-Dj5og1Xi.js → diagram-S7CK7UJ4-G3Wuyz9m.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-CC_x70YC.js → diagram-UQ7AKVKN-nyWIKZ8P.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-rXMfsO4n.js → diagram-VSXAHHWV-tKHhmYSC.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-DEmLYQbh.js → diagram-VX7I27RA-CpDf1hYk.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-B0ys6Vxx.js → diagram-Z3DM3KII-Cah2IFXG.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-Bq6y6lKH.js → ebnfDiagram-PWID7BFC-DNaCkgxy.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-l69JeBZ4.js → erDiagram-SSCWMZ5O-CAdRgcf1.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-Cm-EzGY4.js → flowDiagram-A5DVABFB-CMUJAShL.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BRS9ZOp7.js → ganttDiagram-EL5Y4UJY-o-_MUNey.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-DAMRKgLk.js → gitGraphDiagram-WWUBYQGX-_aG-2Z7O.js} +1 -1
- package/web-shell/assets/{index-Bncx8E8M.js → index-BK_NKxiJ.js} +1 -1
- package/web-shell/assets/index-Ci-z4zWY.js +1913 -0
- package/web-shell/assets/index-LDlXZRHA.css +36 -0
- package/web-shell/assets/{infoDiagram-RXCK75RN-DasffaZp.js → infoDiagram-RXCK75RN-qJPeZbGP.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-CmRUt3C-.js → ishikawaDiagram-5VMMS53U-7Om4vNo1.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-DzhE_c1Z.js → journeyDiagram-EYS64GPL-BNtXqmBW.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-BH5b6nn3.js → kanban-definition-3QL26DDD-COgFec8P.js} +1 -1
- package/web-shell/assets/{layout-BxoLK-LY.js → layout-B9n81PC9.js} +1 -1
- package/web-shell/assets/{linear-CqDPvVI7.js → linear-Bb6nXZQq.js} +1 -1
- package/web-shell/assets/{mermaid.core-DBoN4plo.js → mermaid.core-Cgrm3JVT.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-DJJtXPEM.js → mindmap-definition-FBJOCRG2-TKwLTjnG.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-DmgPXP5l.js → pegDiagram-XKGWAZYB-BJPuvlpi.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-1ezjzcI5.js → pieDiagram-E7YTZNPT-D01VkNsW.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-ChKARz3k.js → quadrantDiagram-AXDQQJYC-C4hHsiv-.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-k7mNB_QT.js → railroadDiagram-O6MQD6OU-CuEO4xK2.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-B0XFsii0.js → requirementDiagram-EFPCY7ZU-D5J_vIo5.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-repJ2Ukk.js → sankeyDiagram-P5KCCOFB-DQKY223V.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-D0gUSKGu.js → sequenceDiagram-WJ2MYXX4-D27YV_cm.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-CE463F74.js → sizeCapture-X5ZJPWSS-TJg8UcwV.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-003zYtJa.js → stateDiagram-HBIQ2CUA-CmnPzUIx.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DNKPyrDc.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-DBj8MFpu.js → swimlanes-XN3QIQJK-ByeP3_Nu.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-ZL1HPC6w.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-D2aCh4a9.js → timeline-definition-24CTP7MA-BsFA5juR.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-BHMfWBpl.js → vennDiagram-4TSXK5OY-DREP2ECo.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-RdHAj66j.js → wardleyDiagram-VM6X3IG4-iyd9lKi2.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-BgJWOvq0.js → xychartDiagram-S5SC5T6Z-CVr1_j9q.js} +1 -1
- package/web-shell/index.html +3 -3
- package/chunks/MaxSizedBox-BFVLZP2E.js +0 -112
- package/chunks/agent-headless-UCBCS4V4.js +0 -87
- package/chunks/bridge-FRNYLYY7.js +0 -119
- package/chunks/channel-settings-store-IV4KDL7N.js +0 -117
- package/chunks/chunk-I6VVOZDK.js +0 -202
- package/chunks/chunk-JS73NNWF.js +0 -30
- package/chunks/chunk-K2OJUPOE.js +0 -78
- package/chunks/chunk-P3QQPMQA.js +0 -19
- package/chunks/chunk-SDVF6A42.js +0 -945
- package/chunks/chunk-VGHZT6JR.js +0 -51
- package/chunks/config-utils-PMX4QZ5Y.js +0 -113
- package/chunks/contextCommand-NZRLVAFC.js +0 -108
- package/chunks/daemon-status-provider-FTTYZEKN.js +0 -118
- package/chunks/daemon-trust-policy-WMGFPA3Z.js +0 -114
- package/chunks/deferred-core-runtime-BUFEFYNA.js +0 -116
- package/chunks/earlyInputCapture-ROPLMXA7.js +0 -109
- package/chunks/errors-U5KNAADB.js +0 -115
- package/chunks/exitPlanMode-VFJ5R5DD.js +0 -85
- package/chunks/handleAutoUpdate-W4BUYFT7.js +0 -111
- package/chunks/i18n-KX7FEKJJ.js +0 -126
- package/chunks/initializer-SNVVLS7Y.js +0 -115
- package/chunks/installationInfo-D4XGQNHJ.js +0 -109
- package/chunks/list-WYECMLXZ.js +0 -118
- package/chunks/loadedSettingsAdapter-5WZBXBCR.js +0 -112
- package/chunks/mcp-CBWAROY3.js +0 -112
- package/chunks/nonInteractiveCli-O232UUV7.js +0 -185
- package/chunks/pidfile-MSPQ255Y.js +0 -113
- package/chunks/process-registry-PMJOA5CO.js +0 -172
- package/chunks/prompt-terminal-ledger-YPGMNDXT.js +0 -107
- package/chunks/resumeHistoryUtils-35D4KAVT.js +0 -120
- package/chunks/ripGrep-46N4FLOS.js +0 -39
- package/chunks/serve-WQ54UIYG.js +0 -120
- package/chunks/skill-settings-SKMN5YXC.js +0 -120
- package/chunks/spawnChannel-NE43EEO3.js +0 -113
- package/chunks/standalone-update-XOCWGXAH.js +0 -120
- package/chunks/terminal-image-renderer-NREKYTAD.js +0 -116
- package/chunks/theme-manager-IJS6OICX.js +0 -104
- package/chunks/total-session-admission-L5RPEFZ2.js +0 -114
- package/chunks/trustedFolders-OILZCHRD.js +0 -124
- package/chunks/updateCheck-AK4COHNK.js +0 -120
- package/chunks/useAutoAcceptIndicator-O2N2Q6KG.js +0 -122
- package/chunks/workspace-providers-status-OCFEWIPQ.js +0 -116
- package/chunks/workspace-registry-WJLZPRTG.js +0 -123
- package/chunks/workspace-service-5ZOBMMIB.js +0 -131
- package/chunks/workspace-skills-status-B6NJZD4B.js +0 -115
- package/chunks/write-file-B2RNX6SU.js +0 -90
- package/web-shell/assets/channel-CU-Zyv0r.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-C0J2_LKs.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-C0J2_LKs.js +0 -1
- package/web-shell/assets/index-C-XlQn24.css +0 -5
- package/web-shell/assets/index-gdvMN4J1.js +0 -1860
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-2uACDdJN.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-C4JJkavU.js +0 -8
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
isInForkExecution
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-CAJTKR6W.js";
|
|
6
|
+
import "./chunk-ZU4UDIWX.js";
|
|
7
7
|
import "./chunk-AQ37AY7B.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-PDQGMSZK.js";
|
|
9
9
|
import {
|
|
10
10
|
BaseDeclarativeTool,
|
|
11
11
|
BaseToolInvocation,
|
|
12
12
|
MAX_TERMINAL_IMAGE_BYTES,
|
|
13
13
|
ToolDisplayNames,
|
|
14
14
|
ToolNames
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-UTLCH2FK.js";
|
|
16
16
|
import {
|
|
17
17
|
makeRelative,
|
|
18
18
|
shortenPath,
|
|
19
19
|
unescapePath
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-UHQFIS7N.js";
|
|
21
21
|
import "./chunk-TBWQLLFO.js";
|
|
22
22
|
import {
|
|
23
23
|
init_esbuild_shims
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
sanitizePromptText,
|
|
15
15
|
sanitizeSenderName,
|
|
16
16
|
truncateUtf16Units
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-ICURCKIU.js";
|
|
18
18
|
import "./chunk-IW6RQPQB.js";
|
|
19
19
|
import "./chunk-CQ35AJ4Z.js";
|
|
20
20
|
import "./chunk-DMTGGOSA.js";
|
|
@@ -6154,6 +6154,109 @@ async function uploadDingTalkImage(image, accessToken) {
|
|
|
6154
6154
|
}
|
|
6155
6155
|
__name(uploadDingTalkImage, "uploadDingTalkImage");
|
|
6156
6156
|
|
|
6157
|
+
// packages/channels/dingtalk/dist/outbound-file.js
|
|
6158
|
+
init_esbuild_shims();
|
|
6159
|
+
var FILE_OPENING = "[FILE:";
|
|
6160
|
+
var MAX_FILE_PATH_CHARS = 4096;
|
|
6161
|
+
var MAX_FILES_PER_RESPONSE = 5;
|
|
6162
|
+
var FILE_UNAVAILABLE_NOTICE = "[File delivery unavailable]";
|
|
6163
|
+
var OutboundFileProjector = class {
|
|
6164
|
+
static {
|
|
6165
|
+
__name(this, "OutboundFileProjector");
|
|
6166
|
+
}
|
|
6167
|
+
candidate = "";
|
|
6168
|
+
reserved = "";
|
|
6169
|
+
reservedAtLineStart = false;
|
|
6170
|
+
reservedTooLong = false;
|
|
6171
|
+
atLineStart = true;
|
|
6172
|
+
paths = [];
|
|
6173
|
+
invalidMarkers = 0;
|
|
6174
|
+
excessMarkers = 0;
|
|
6175
|
+
markerCount = 0;
|
|
6176
|
+
append(chunk) {
|
|
6177
|
+
let safe = "";
|
|
6178
|
+
for (const char of chunk) {
|
|
6179
|
+
if (this.reserved) {
|
|
6180
|
+
if (char === "\n") {
|
|
6181
|
+
this.finishReservedLine();
|
|
6182
|
+
safe += "\n";
|
|
6183
|
+
this.atLineStart = true;
|
|
6184
|
+
} else if (this.reserved.length <= MAX_FILE_PATH_CHARS + 9) {
|
|
6185
|
+
this.reserved += char;
|
|
6186
|
+
} else {
|
|
6187
|
+
this.reservedTooLong = true;
|
|
6188
|
+
}
|
|
6189
|
+
continue;
|
|
6190
|
+
}
|
|
6191
|
+
if (char === "\n") {
|
|
6192
|
+
safe += `${this.candidate}
|
|
6193
|
+
`;
|
|
6194
|
+
this.candidate = "";
|
|
6195
|
+
this.atLineStart = true;
|
|
6196
|
+
continue;
|
|
6197
|
+
}
|
|
6198
|
+
this.candidate += char;
|
|
6199
|
+
while (this.candidate && !FILE_OPENING.startsWith(this.candidate)) {
|
|
6200
|
+
safe += this.candidate[0];
|
|
6201
|
+
this.candidate = this.candidate.slice(1);
|
|
6202
|
+
this.atLineStart = false;
|
|
6203
|
+
}
|
|
6204
|
+
if (this.candidate === FILE_OPENING) {
|
|
6205
|
+
this.reserved = this.candidate;
|
|
6206
|
+
this.reservedAtLineStart = this.atLineStart;
|
|
6207
|
+
this.candidate = "";
|
|
6208
|
+
this.markerCount++;
|
|
6209
|
+
}
|
|
6210
|
+
}
|
|
6211
|
+
return safe;
|
|
6212
|
+
}
|
|
6213
|
+
complete() {
|
|
6214
|
+
if (!this.reserved) {
|
|
6215
|
+
const safe = this.candidate;
|
|
6216
|
+
this.candidate = "";
|
|
6217
|
+
return safe;
|
|
6218
|
+
}
|
|
6219
|
+
this.finishReservedLine();
|
|
6220
|
+
return "";
|
|
6221
|
+
}
|
|
6222
|
+
result(text) {
|
|
6223
|
+
return {
|
|
6224
|
+
text,
|
|
6225
|
+
paths: [...this.paths],
|
|
6226
|
+
invalidMarkers: this.invalidMarkers,
|
|
6227
|
+
excessMarkers: this.excessMarkers,
|
|
6228
|
+
markerCount: this.markerCount
|
|
6229
|
+
};
|
|
6230
|
+
}
|
|
6231
|
+
finishReservedLine() {
|
|
6232
|
+
const match = /^\[FILE: ([^\]\r\n]+)\]\r?$/u.exec(this.reserved);
|
|
6233
|
+
const path = match?.[1];
|
|
6234
|
+
if (!this.reservedTooLong && this.reservedAtLineStart && path && path.length <= MAX_FILE_PATH_CHARS && path === path.trim()) {
|
|
6235
|
+
if (this.paths.length < MAX_FILES_PER_RESPONSE) {
|
|
6236
|
+
this.paths.push(path);
|
|
6237
|
+
} else {
|
|
6238
|
+
this.excessMarkers++;
|
|
6239
|
+
}
|
|
6240
|
+
} else {
|
|
6241
|
+
this.invalidMarkers++;
|
|
6242
|
+
}
|
|
6243
|
+
this.reserved = "";
|
|
6244
|
+
this.reservedAtLineStart = false;
|
|
6245
|
+
this.reservedTooLong = false;
|
|
6246
|
+
}
|
|
6247
|
+
};
|
|
6248
|
+
function projectFileText(text) {
|
|
6249
|
+
const projector = new OutboundFileProjector();
|
|
6250
|
+
const safe = projector.append(text) + projector.complete();
|
|
6251
|
+
return projector.result(safe);
|
|
6252
|
+
}
|
|
6253
|
+
__name(projectFileText, "projectFileText");
|
|
6254
|
+
function withFileUnavailableNotice(text) {
|
|
6255
|
+
const safe = text.trimEnd();
|
|
6256
|
+
return `${safe}${safe ? "\n" : ""}${FILE_UNAVAILABLE_NOTICE}`;
|
|
6257
|
+
}
|
|
6258
|
+
__name(withFileUnavailableNotice, "withFileUnavailableNotice");
|
|
6259
|
+
|
|
6157
6260
|
// packages/channels/dingtalk/dist/DingtalkConnectionManager.js
|
|
6158
6261
|
init_esbuild_shims();
|
|
6159
6262
|
var SOCKET_OPEN = 1;
|
|
@@ -7879,6 +7982,7 @@ var DIRECT_MSG_API = "https://api.dingtalk.com/v1.0/robot/oToMessages/batchSend"
|
|
|
7879
7982
|
var PROACTIVE_MSG_KEY = "sampleMarkdown";
|
|
7880
7983
|
var TOKEN_API = "https://oapi.dingtalk.com/gettoken";
|
|
7881
7984
|
var PROACTIVE_FETCH_TIMEOUT_MS = 15e3;
|
|
7985
|
+
var REPLY_FETCH_TIMEOUT_MS = 15e3;
|
|
7882
7986
|
var GENERATED_MEDIA_EXT = {
|
|
7883
7987
|
"image/jpeg": "jpg",
|
|
7884
7988
|
"image/png": "png",
|
|
@@ -7954,6 +8058,18 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
|
|
|
7954
8058
|
inboundCardOwners = /* @__PURE__ */ new Map();
|
|
7955
8059
|
cardRunBySession = /* @__PURE__ */ new Map();
|
|
7956
8060
|
cardRuns = /* @__PURE__ */ new Map();
|
|
8061
|
+
// Keyed by runId, not segmentId: a mid-turn segment reset (response
|
|
8062
|
+
// boundary, input requested) mints a fresh segment UUID but the projection
|
|
8063
|
+
// state must survive it, or a marker split across the reset leaks.
|
|
8064
|
+
fileProjectors = /* @__PURE__ */ new Map();
|
|
8065
|
+
blockFileProjectors = /* @__PURE__ */ new Map();
|
|
8066
|
+
// Sessions armed for block projection by onPromptStart and disarmed when
|
|
8067
|
+
// the turn settles (or the session dies). A block send that finds NO
|
|
8068
|
+
// projector state is only legitimate as a turn's FIRST block, which always
|
|
8069
|
+
// lands while armed: late sends from an evicted (/clear) or dead session
|
|
8070
|
+
// must be dropped, because recreating state would post the tail of a
|
|
8071
|
+
// force-split [FILE: ...] marker verbatim.
|
|
8072
|
+
blockProjectionArmed = /* @__PURE__ */ new Set();
|
|
7957
8073
|
constructor(name, config, bridge, options) {
|
|
7958
8074
|
super(name, config, bridge, options);
|
|
7959
8075
|
this.atSender = config["atSender"] === true;
|
|
@@ -8199,10 +8315,21 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
|
|
|
8199
8315
|
static isUnroutableGroupMessage(isGroup, conversationId) {
|
|
8200
8316
|
return isGroup && !conversationId;
|
|
8201
8317
|
}
|
|
8202
|
-
|
|
8203
|
-
const
|
|
8318
|
+
projectOutgoingFileText(text, streamed) {
|
|
8319
|
+
const projection = projectFileText(text);
|
|
8320
|
+
const streamedMarkers = streamed ? streamed.result("").markerCount : 0;
|
|
8321
|
+
if (projection.markerCount === 0 && streamedMarkers === 0) {
|
|
8322
|
+
return projection.text;
|
|
8323
|
+
}
|
|
8324
|
+
process.stderr.write(`[DingTalk:${this.name}] file markers redacted (final=${projection.markerCount}, streamed=${streamedMarkers})
|
|
8325
|
+
`);
|
|
8326
|
+
return withFileUnavailableNotice(projection.text);
|
|
8327
|
+
}
|
|
8328
|
+
async prepareOutgoingText(text, streamed) {
|
|
8329
|
+
const fileSafeText = this.projectOutgoingFileText(text, streamed);
|
|
8330
|
+
const markers = findImageMarkers(fileSafeText);
|
|
8204
8331
|
if (markers.length === 0)
|
|
8205
|
-
return
|
|
8332
|
+
return fileSafeText;
|
|
8206
8333
|
const replacements = [];
|
|
8207
8334
|
for (const marker of markers) {
|
|
8208
8335
|
const fileName = basename2(marker.path).replace(/[\r\n[\]]+/g, "_").slice(0, 100) || "image";
|
|
@@ -8234,7 +8361,7 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
|
|
|
8234
8361
|
replacements.push(`[Image delivery failed: ${fileName}]`);
|
|
8235
8362
|
}
|
|
8236
8363
|
}
|
|
8237
|
-
return replaceImageMarkers(
|
|
8364
|
+
return replaceImageMarkers(fileSafeText, markers, replacements);
|
|
8238
8365
|
}
|
|
8239
8366
|
async sendReply(chatId, text, atUserId) {
|
|
8240
8367
|
const webhook = this.webhooks.get(chatId);
|
|
@@ -8260,11 +8387,19 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
|
|
|
8260
8387
|
},
|
|
8261
8388
|
...isMention ? { at: { atUserIds: [atUserId] } } : {}
|
|
8262
8389
|
};
|
|
8263
|
-
|
|
8264
|
-
|
|
8265
|
-
|
|
8266
|
-
|
|
8267
|
-
|
|
8390
|
+
let resp;
|
|
8391
|
+
try {
|
|
8392
|
+
resp = await fetch(webhook, {
|
|
8393
|
+
method: "POST",
|
|
8394
|
+
headers: { "Content-Type": "application/json" },
|
|
8395
|
+
body: JSON.stringify(body),
|
|
8396
|
+
signal: AbortSignal.timeout(REPLY_FETCH_TIMEOUT_MS)
|
|
8397
|
+
});
|
|
8398
|
+
} catch (err) {
|
|
8399
|
+
process.stderr.write(`[DingTalk:${this.name}] sendMessage failed: ${sanitizeLogText(err instanceof Error ? err.message : String(err), 300)}
|
|
8400
|
+
`);
|
|
8401
|
+
throw err;
|
|
8402
|
+
}
|
|
8268
8403
|
if (isMention && process.env["QWEN_CHANNEL_DEBUG_MENTIONS"] === "1") {
|
|
8269
8404
|
const payload = await resp.clone().json().catch(() => void 0);
|
|
8270
8405
|
const response = payload && typeof payload === "object" ? payload : {};
|
|
@@ -8555,6 +8690,12 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
|
|
|
8555
8690
|
}
|
|
8556
8691
|
/** Recall reactions left behind when a session dies without terminal lifecycle events. */
|
|
8557
8692
|
onSessionDied(sessionId) {
|
|
8693
|
+
this.blockProjectionArmed.delete(sessionId);
|
|
8694
|
+
this.blockFileProjectors.delete(sessionId);
|
|
8695
|
+
for (const [runId, state] of this.fileProjectors) {
|
|
8696
|
+
if (state.sessionId === sessionId)
|
|
8697
|
+
this.fileProjectors.delete(runId);
|
|
8698
|
+
}
|
|
8558
8699
|
const bufferedTargets = this.bufferedMentionTargetsBySession.get(sessionId);
|
|
8559
8700
|
if (bufferedTargets) {
|
|
8560
8701
|
this.bufferedMentionTargetsBySession.delete(sessionId);
|
|
@@ -8602,6 +8743,7 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
|
|
|
8602
8743
|
this.mentionTargets.delete(event.messageId);
|
|
8603
8744
|
this.stopReaction(event.chatId, event.messageId, event.sessionId);
|
|
8604
8745
|
if (event.runId) {
|
|
8746
|
+
this.deleteFileProjectorsForRun(event.runId);
|
|
8605
8747
|
if (event.type === "failed") {
|
|
8606
8748
|
this.interactionPresenter?.terminalizeRun(event.runId, "failed", event.error);
|
|
8607
8749
|
} else if (event.type === "cancelled") {
|
|
@@ -8644,6 +8786,7 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
|
|
|
8644
8786
|
}
|
|
8645
8787
|
}
|
|
8646
8788
|
onPromptStart(chatId, sessionId, messageId) {
|
|
8789
|
+
this.blockProjectionArmed.add(sessionId);
|
|
8647
8790
|
if (messageId) {
|
|
8648
8791
|
this.bufferedMentionTargets.delete(messageId);
|
|
8649
8792
|
this.untrackBufferedMentionTarget(sessionId, messageId);
|
|
@@ -8658,32 +8801,34 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
|
|
|
8658
8801
|
async handleInbound(envelope) {
|
|
8659
8802
|
if (!await this.preflightInbound(envelope))
|
|
8660
8803
|
return;
|
|
8661
|
-
|
|
8662
|
-
|
|
8663
|
-
|
|
8664
|
-
|
|
8665
|
-
|
|
8666
|
-
|
|
8667
|
-
|
|
8668
|
-
|
|
8669
|
-
|
|
8670
|
-
|
|
8671
|
-
|
|
8672
|
-
|
|
8673
|
-
|
|
8674
|
-
|
|
8675
|
-
|
|
8676
|
-
|
|
8677
|
-
|
|
8678
|
-
|
|
8679
|
-
|
|
8804
|
+
await this.processPreflightedInbound(envelope, async () => {
|
|
8805
|
+
const messageId = envelope.messageId;
|
|
8806
|
+
if (messageId && envelope.senderId) {
|
|
8807
|
+
this.inboundCardOwners.delete(messageId);
|
|
8808
|
+
this.inboundCardOwners.set(messageId, {
|
|
8809
|
+
ownerId: envelope.senderId,
|
|
8810
|
+
target: {
|
|
8811
|
+
chatId: envelope.chatId,
|
|
8812
|
+
isGroup: envelope.isGroup
|
|
8813
|
+
},
|
|
8814
|
+
...this.atSender && envelope.isGroup ? {
|
|
8815
|
+
sender: {
|
|
8816
|
+
senderName: envelope.senderName
|
|
8817
|
+
}
|
|
8818
|
+
} : {}
|
|
8819
|
+
});
|
|
8820
|
+
if (this.inboundCardOwners.size > 1e3) {
|
|
8821
|
+
const oldest = this.inboundCardOwners.keys().next().value;
|
|
8822
|
+
if (oldest !== void 0)
|
|
8823
|
+
this.inboundCardOwners.delete(oldest);
|
|
8824
|
+
}
|
|
8680
8825
|
}
|
|
8681
|
-
|
|
8682
|
-
|
|
8683
|
-
|
|
8684
|
-
|
|
8685
|
-
|
|
8686
|
-
|
|
8826
|
+
const atUserId = envelope[mentionTarget];
|
|
8827
|
+
if (this.atSender && messageId && atUserId) {
|
|
8828
|
+
this.mentionTargets.set(messageId, atUserId);
|
|
8829
|
+
}
|
|
8830
|
+
await this.processInbound(envelope);
|
|
8831
|
+
});
|
|
8687
8832
|
}
|
|
8688
8833
|
async processInbound(envelope) {
|
|
8689
8834
|
const messageId = envelope.messageId;
|
|
@@ -8704,36 +8849,123 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
|
|
|
8704
8849
|
this.bufferedMentionTargetsBySession.delete(sessionId);
|
|
8705
8850
|
}
|
|
8706
8851
|
onPromptEnd(chatId, sessionId, messageId) {
|
|
8852
|
+
this.settleBlockFileProjector(chatId, sessionId);
|
|
8707
8853
|
this.sessionMentionTargets.delete(sessionId);
|
|
8708
8854
|
this.stopReaction(chatId, messageId, sessionId);
|
|
8709
8855
|
}
|
|
8856
|
+
/**
|
|
8857
|
+
* Turn end is the only point where the block projector's held state can be
|
|
8858
|
+
* settled: ChannelBase drains the turn's queued block sends before calling
|
|
8859
|
+
* onPromptEnd, so everything already appended belongs to this turn. Flush
|
|
8860
|
+
* the held candidate bytes (a trailing `[FILE:` prefix the stream never
|
|
8861
|
+
* completed) before deleting the entry — a later delete-without-settle
|
|
8862
|
+
* would silently drop them from the delivered answer. Also disarm the
|
|
8863
|
+
* session: /clear eviction and session death settle WITHOUT draining the
|
|
8864
|
+
* turn's send chain, and any block that lands afterwards must be dropped
|
|
8865
|
+
* rather than recreating projector state.
|
|
8866
|
+
*/
|
|
8867
|
+
settleBlockFileProjector(chatId, sessionId) {
|
|
8868
|
+
this.blockProjectionArmed.delete(sessionId);
|
|
8869
|
+
const state = this.blockFileProjectors.get(sessionId);
|
|
8870
|
+
if (!state)
|
|
8871
|
+
return;
|
|
8872
|
+
this.blockFileProjectors.delete(sessionId);
|
|
8873
|
+
const tail = state.projector.complete();
|
|
8874
|
+
if (!tail.trim())
|
|
8875
|
+
return;
|
|
8876
|
+
void this.sendReply(chatId, tail).catch((err) => {
|
|
8877
|
+
process.stderr.write(`[DingTalk:${this.name}] projector tail delivery failed for session ${sessionId}: ${err instanceof Error ? err.message : String(err)}
|
|
8878
|
+
`);
|
|
8879
|
+
});
|
|
8880
|
+
}
|
|
8881
|
+
/**
|
|
8882
|
+
* Out-of-turn one-shot sends (background responses) must not flow through
|
|
8883
|
+
* the session's block-streaming projector: a second sender interleaving with
|
|
8884
|
+
* mid-projection state can swallow the send or split a held marker.
|
|
8885
|
+
*/
|
|
8886
|
+
async deliverBackgroundReply(chatId, text, sessionId) {
|
|
8887
|
+
if (this.config.blockStreaming !== "on") {
|
|
8888
|
+
return super.deliverBackgroundReply(chatId, text, sessionId);
|
|
8889
|
+
}
|
|
8890
|
+
await this.sendReply(chatId, text);
|
|
8891
|
+
}
|
|
8710
8892
|
async sendResponseMessage(chatId, text, sessionId) {
|
|
8711
|
-
|
|
8893
|
+
let outgoingText = text;
|
|
8894
|
+
let consumesMention = true;
|
|
8895
|
+
if (this.config.blockStreaming === "on") {
|
|
8896
|
+
const projected = this.projectBlockStreamChunk(text, sessionId);
|
|
8897
|
+
if (!projected.text.trim())
|
|
8898
|
+
return;
|
|
8899
|
+
outgoingText = projected.text;
|
|
8900
|
+
consumesMention = projected.hasContent;
|
|
8901
|
+
}
|
|
8902
|
+
const atUserId = consumesMention && this.atSender ? this.sessionMentionTargets.get(sessionId) : void 0;
|
|
8712
8903
|
if (atUserId)
|
|
8713
8904
|
this.sessionMentionTargets.delete(sessionId);
|
|
8714
|
-
await this.sendReply(chatId,
|
|
8905
|
+
await this.sendReply(chatId, outgoingText, atUserId);
|
|
8906
|
+
}
|
|
8907
|
+
projectBlockStreamChunk(text, sessionId) {
|
|
8908
|
+
let state = this.blockFileProjectors.get(sessionId);
|
|
8909
|
+
if (!state) {
|
|
8910
|
+
if (!this.blockProjectionArmed.has(sessionId)) {
|
|
8911
|
+
return { text: "", hasContent: false };
|
|
8912
|
+
}
|
|
8913
|
+
state = { projector: new OutboundFileProjector(), reportedMarkers: 0 };
|
|
8914
|
+
this.blockFileProjectors.set(sessionId, state);
|
|
8915
|
+
}
|
|
8916
|
+
const safe = state.projector.append(text);
|
|
8917
|
+
const hasContent = safe.trim().length > 0;
|
|
8918
|
+
const result = state.projector.result(safe);
|
|
8919
|
+
let outgoingText = safe;
|
|
8920
|
+
if (result.markerCount > state.reportedMarkers) {
|
|
8921
|
+
outgoingText = withFileUnavailableNotice(safe);
|
|
8922
|
+
state.reportedMarkers = result.markerCount;
|
|
8923
|
+
process.stderr.write(`[DingTalk:${this.name}] file markers redacted in block stream (session ${sessionId}, markers=${result.markerCount})
|
|
8924
|
+
`);
|
|
8925
|
+
}
|
|
8926
|
+
return { text: outgoingText, hasContent };
|
|
8715
8927
|
}
|
|
8716
8928
|
async sendFallbackReply(chatId, text, sessionId) {
|
|
8717
8929
|
const atUserId = this.atSender ? this.sessionMentionTargets.get(sessionId) : void 0;
|
|
8718
8930
|
await this.sendReply(chatId, text, atUserId);
|
|
8719
8931
|
}
|
|
8720
8932
|
async onResponseComplete(chatId, text, sessionId, segment) {
|
|
8933
|
+
const streamed = segment ? this.fileProjectors.get(segment.runId)?.projector : void 0;
|
|
8934
|
+
if (segment)
|
|
8935
|
+
this.fileProjectors.delete(segment.runId);
|
|
8936
|
+
const outgoingText = await this.prepareOutgoingText(text, streamed);
|
|
8721
8937
|
if (segment && this.interactionPresenter) {
|
|
8722
|
-
const outgoingText = await this.prepareOutgoingText(text);
|
|
8723
8938
|
if (await this.interactionPresenter.closeOutput(segment.segmentId, outgoingText, "completed", segment)) {
|
|
8724
8939
|
return;
|
|
8725
8940
|
}
|
|
8726
8941
|
}
|
|
8727
|
-
await this.sendResponseMessage(chatId,
|
|
8942
|
+
await this.sendResponseMessage(chatId, outgoingText, sessionId);
|
|
8728
8943
|
}
|
|
8729
8944
|
onOutputSegmentEnd(_chatId, _sessionId, segment, reason) {
|
|
8945
|
+
if (reason === "completed" || reason === "failed" || reason === "cancelled") {
|
|
8946
|
+
this.fileProjectors.delete(segment.runId);
|
|
8947
|
+
}
|
|
8730
8948
|
if (!this.interactionPresenter)
|
|
8731
8949
|
return;
|
|
8732
8950
|
return this.interactionPresenter.closeOutput(segment.segmentId, "", reason, segment).then(() => void 0);
|
|
8733
8951
|
}
|
|
8734
8952
|
onResponseChunk(_chatId, chunk, _sessionId, segment) {
|
|
8735
|
-
if (segment)
|
|
8736
|
-
|
|
8953
|
+
if (!segment)
|
|
8954
|
+
return;
|
|
8955
|
+
let state = this.fileProjectors.get(segment.runId);
|
|
8956
|
+
if (!state) {
|
|
8957
|
+
state = {
|
|
8958
|
+
sessionId: segment.sessionId,
|
|
8959
|
+
projector: new OutboundFileProjector()
|
|
8960
|
+
};
|
|
8961
|
+
this.fileProjectors.set(segment.runId, state);
|
|
8962
|
+
}
|
|
8963
|
+
const safe = state.projector.append(chunk);
|
|
8964
|
+
if (safe)
|
|
8965
|
+
this.interactionPresenter?.appendOutput(segment, safe);
|
|
8966
|
+
}
|
|
8967
|
+
deleteFileProjectorsForRun(runId) {
|
|
8968
|
+
this.fileProjectors.delete(runId);
|
|
8737
8969
|
}
|
|
8738
8970
|
async presentUserInputRequest(context) {
|
|
8739
8971
|
const run = this.cardRuns.get(context.runId);
|
|
@@ -8958,8 +9190,7 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
|
|
|
8958
9190
|
const media = await downloadMedia(downloadCode, robotCode, token);
|
|
8959
9191
|
if (!media)
|
|
8960
9192
|
return;
|
|
8961
|
-
|
|
8962
|
-
if (mediaType === "image" && inlineImageSlotFree) {
|
|
9193
|
+
if (mediaType === "image") {
|
|
8963
9194
|
const mimeType = media.mimeType.startsWith("image/") ? media.mimeType : "image/jpeg";
|
|
8964
9195
|
envelope.attachments = [
|
|
8965
9196
|
...envelope.attachments || [],
|
|
@@ -9069,16 +9300,17 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
|
|
|
9069
9300
|
if (this.atSender && isGroup && senderStaffId) {
|
|
9070
9301
|
envelope[mentionTarget] = senderStaffId;
|
|
9071
9302
|
}
|
|
9072
|
-
const processMessage =
|
|
9303
|
+
const processMessage = content.downloadCodes.length > 0 || quoted.media ? this.prepareThenHandleInbound(envelope, async () => {
|
|
9073
9304
|
if (content.downloadCodes.length > 0 && content.mediaType) {
|
|
9074
|
-
|
|
9305
|
+
for (const downloadCode of content.downloadCodes) {
|
|
9306
|
+
await this.attachMedia(envelope, downloadCode, content.mediaType, content.fileName, content.placeholder);
|
|
9307
|
+
}
|
|
9075
9308
|
}
|
|
9076
9309
|
if (quoted.media) {
|
|
9077
9310
|
await this.attachMedia(envelope, quoted.media.downloadCode, quoted.media.mediaType, quoted.media.fileName);
|
|
9078
9311
|
}
|
|
9079
|
-
|
|
9080
|
-
|
|
9081
|
-
processMessage().catch((err) => {
|
|
9312
|
+
}) : this.handleInbound(envelope);
|
|
9313
|
+
processMessage.catch((err) => {
|
|
9082
9314
|
process.stderr.write(`[DingTalk:${this.name}] Error handling message: ${err}
|
|
9083
9315
|
`);
|
|
9084
9316
|
this.sendMessage(chatId, "Sorry, something went wrong processing your message.").catch(() => {
|