From 4f9900a64c530c59e78f67cf63ae38cce72e91bf Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Mon, 28 Apr 2025 02:39:21 +0800 Subject: [PATCH] =?UTF-8?q?openmcp=20=E5=AE=8C=E6=88=90=E9=97=AD=E7=8E=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- renderer/public/iconfont.css | 18 ++- renderer/public/iconfont.woff2 | Bin 5752 -> 6112 bytes renderer/src/App.vue | 4 +- renderer/src/api/message-bridge.ts | 1 + .../chat/message/toolcall-result-item.vue | 103 +++++++++++++++--- .../main-panel/chat/message/toolcall.vue | 30 ++++- .../components/main-panel/chat/task-loop.ts | 7 +- .../src/components/main-panel/tool/tools.ts | 5 +- renderer/src/hook/util.ts | 69 ++++++++++++ service/src/common/router.ts | 4 +- service/src/mcp/client.controller.ts | 4 +- service/src/mcp/ocr.controller.ts | 18 +++ service/src/mcp/ocr.service.ts | 2 + 13 files changed, 232 insertions(+), 33 deletions(-) create mode 100644 service/src/mcp/ocr.controller.ts diff --git a/renderer/public/iconfont.css b/renderer/public/iconfont.css index 27c1d78..5a5273e 100644 --- a/renderer/public/iconfont.css +++ b/renderer/public/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 4870215 */ - src: url('iconfont.woff2?t=1745735110196') format('woff2'), - url('iconfont.woff?t=1745735110196') format('woff'), - url('iconfont.ttf?t=1745735110196') format('truetype'); + src: url('iconfont.woff2?t=1745774700883') format('woff2'), + url('iconfont.woff?t=1745774700883') format('woff'), + url('iconfont.ttf?t=1745774700883') format('truetype'); } .iconfont { @@ -13,6 +13,18 @@ -moz-osx-font-smoothing: grayscale; } +.icon-video:before { + content: "\e865"; +} + +.icon-image:before { + content: "\ebc7"; +} + +.icon-audio:before { + content: "\e768"; +} + .icon-error:before { content: "\e6c6"; } diff --git a/renderer/public/iconfont.woff2 b/renderer/public/iconfont.woff2 index d9738d64192073104ed60cee5fa927c14084d2e0..4afc4a40679b53da9bccca27cdeb664cd46b8571 100644 GIT binary patch literal 6112 zcmV<67a!<%Pew8T0RR9102kl@3jhEB04u}*02hz|0RR9100000000000000000000 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 m&S_}mt>-y5?3|B~Do zLs~%lxm29N4sp?i;Bs9JZ&buXZ=i#>ukb-t+-jG{BD!MvO=UA{c2i$`r-GQqU3C6; zyh9dC9XA_F$pf_Z|2s3gd!L!duOgu+k|2vkLZs0kQN0EBBh#vHQ$^{OQZ zAM&-}@ccG=@DZ4TfI3GjAMKMNV1YWsuR}dC3$O!oV52MJLf39>TrA2}%i3D2i*|XD zP{-7q_>;l!F^%SKhInMu;i%uZmE((IOUSK8!guaqqy$U1VBRhweAm`y2HBn7exzcc^&uTRP^ zl>GkdHgrUs14J$zU5fjk%$1M2cV~f#+?RnU0YXtiX-l@$rx8$T-fD5<`_6-EZ`y~q zb;^0C2BMY2&Ed*9Qmg14{hsaT( zQM2_1TuT3?|EGLLr+69zFGy{zu$J_Vb*ghO=6^A7@5*{_*Ngo3KNv|Mnbp-=@b3`p zw%=j@&CsV;t8r}_4Xe_kS+zk8YPG8rbxyzAkPh`G49N5-x&M=w>o=l8w=tvYH0d&_ zObwyLoT3_Hxw=UbV1Pan3eZbJ16oODfN>H5&_*Hx8cAfpFv$W?MOsP`;{ni2k^rhn z{(wOe0%#!R0BT7UfOb+Nppw)Kh@|y^PSOCNoOB5gNY4R7q~8D?JjZkOU=H9Wz>2{Q zfHeY;@d9u?U?gxQFgdsatPord)&i~{Ob>1ZYz$ll*eP(`VCTS%fxQAZ3idAmb-eTd zH1W!t>jLWnV3OC7LK!U=#u{qC6mD`D&s2O*_2!w^GaQ|XDD#b=(6wQ%S1uY+q4jX4 z7WFbI2Z?);%b*1zz6qDcj#I#hGse+LtihV2*lw-ZMn!4V3F0af1BN$I`4Q)cLMTdS zFn3%1Nvg#3WPvG$75q#5 ze~j=y8vRd1SN#sBAWQnLRL|~Qi5Eql6;6mWVB`l7Sf*elchPRZ-lH1vF_!s+F*HeS z8p#B4Uc`wwJjtclipYBJBSG)axv2=3q)`(9{lygXFzQb!utnQUBy2#Di^S4{kh|4< zpvqsJcbqs(>97%q`&ZGAcu+*75lpU8*XovS2LswdJJ@RC%J5w@aBqw4O3C^i2QuHA zTa6e~E~Z+j%k}TQ;dlV&r!}i5PhGoi8X<;3scD|$V~0stAHyD=yIFZ}6Rdbz|8(%a zUFq`0+LvL-qeXh}x>qt-0J{U`e{XrqBLq};B>w1YPNORE@+RbsyV~J~L{WphgpXAj zb|R7Knl+b7X?qc9IH^`tShSee>;lQU`?F9lEa%CiRj`_{Zl@p@>v_Nc*ebb)F|be? zO&Cfc)h+P^KKbYxzxuHGb|32}h<%WsVEnU-`ooCkqFo}_x)9!0?f)w~LM6s>~kyR99fbD2m6L9T0{3y}ASEO%IU9@Pk&hk^r9QKk*%>An-mm@U3H@RcOkKB9OR$m2lifkJab{z zGD zrD|kY&{0w3B@R#5k00hGSpb+9MHt)HpOPgwbl}%5R>0N}1o4n>A9`&U{^nofORUL= zOnlv^sFQzz|76=kiv6AFRpoCpNJoy}Wrp&Bw?B*+I`V+nMz%0%d;F;>>5kgLqcsDWj#WUebhkA0*TUjU@w~n3 zOQZmmAMtpG=dIO)hOj{t@>MMZ%ejjXuiaSq+N}fanCo&mmrnBGY|N*usxibXCQ!jj z-h*;TL#1k8aTH@URUWM5b4TWMtT(1RnX$DXZ`VWITr54=tn|2huq3`z zXOUB7r|ow(qJ>A;l?SU4J^O6Cd{o8)Li+Mnuv}~h7&K^j_iYH5{O17rudSZYpKsVq zUEt`Z_vp@p?kkrrw;T3-@o=oGxk8z5tB%?oM2pPcD7<)OPv5`$u;*&$wQ;hSmk-7` zsw4G9p5|)R&@NrOTC`}9$F+T=S6gzWg*Ym3wS(EKu$=!`#x6JSw-uT7*;_9HW=RsDGG=|OmYP6#wI5Cph>=$Eq{d}68_>o z;F22~46`Mpj#NtT>?=x_8Fr{~!m-RLzH}h(%~wD7SrA~^=Cu*}Zql`bD;rx09D1}m z>E{s*H@+3?UmHGY@|*r>ir4qr=NjjYYh)9yEJ!!!RcFPWRnOWoE1t}Hrh8+vt-X`3 z!TN$)&^UZ)m)yoaqYds|WR&1un^9oyh)Sw%@dZ&vKz z)cV99?On?ik*`zYtX@qNTGUKS;YNL;NwF`fMqcpc+|%{aD=b?wV^rr(o1SZX)Ydyr zT0`>haf7Sca;3&`DVS`q9A&qiPiNnZJeKXc5XSaXH<>EwXL1j$8j%Od3bh9F;s1fnG)TXvRX`Odb`DLVjp~T6vexr9MH8qB9y_(K6y^SG< zEV+QZOvoYE$mN`%ZLmXAS%(?59lj{PpP5Ls(qiilSxDp+B#OzB{`%Go;1tlY#L<$k zJ%V50jZi?obW12zF}9jsQhVzKu!VGa>5eH5Yu7rYIHuns6s+^7IHWt?64)xXj>8&w zVym~tINS-3Z`-=<23`DHq4I$(6m|}SMq?s+t|M#|Ih|%$)2y*9K9kRqon}opQySb1 zJmwWdel;Tz6!i{q4)qGcM>9OZxWl!IcnptS6#E&!PGu8(3D}~*i@TTk^{)2_uTqPZ zUS3ME`W2xXlwNA_tD84l73kO)+xbA(%kDy>cg-V6Opn7{yklJjTi6-~-3UkwZ@Q{o)RPm7}An@P; z1w*+uK?Z&m=7hx?SNSXqo^aawFz7ILob_n}2FGXJy!x21^f$JX7TUx8Q3vgkegg*K z?%mh-?D5Sf4L*K6XtS@ZEKpdr!De_iUz(O2hhqz7zboZ9WC|`Nm@`DWM4sYtjxJlJ zEd%a-gE>9ELvmIyD~_X)^loK`RbPKfh*GM)GR)hRQh@jVxI>2!+uv-)ZHAfK zALip&SNaV7&V)&v$(rA)u*4I{#NXC%bofTv=Ch8{^CkS*GO2n0ehLm4W82zum*;jU zZ9fHlf~VrRlwb;XSxyd*X6z4K%E~xguMPMtm_Bq*Mde=mDSMYDbX1K_;C1JWWnGIa z^70fVC3(e62oF7QPfK+u+LfC;qK4vm8*FY-ve?Pnc|T)wxJQ!cA_afaqJr?Q!lXoz z2RQv?js=Th)|`$i<2v_ob!W6T+jQJMXYL%ZY0Yjfkrw*<7fMSYLcxOP?x8eDT5l2VF`HC}6M;x8Ma!ziPVorF_By832 zjD_IIpm5IYWg1Mo!eU=(jk8?KL5D%ho*>;nVrxz~*v~O`HPC_(0U?qAh*&CO-XCFQ z@DUJDR1`rVu^^yJtNU0_utzETScyVmL87GUMY$yyrNuL z!1s!x#&2hlh0(^z3`IXTpns%sS)9!8(!&F~X$DD^>bL39${FoSiW;9=)!rd7T>3e0H@tZAchxQ(ML;e8e zp7sFS_IWAk*9n}SIDnh*=&_~?MS*nd9w69XI=<*_dd>oGNCy@d1+%R>%%Fuj;2k%k zb~AUzwjR-BOEP_YG9}rIgn|Xn-7o%Gqox;-;@EMd;9%kXm}lUFKCXFw>3}L)9IZNV z>A6O#!BJ``b_T(KCiG(=R&uMX?C(J}OGde{{|pZ9i&jzws9 z@A(42OV(?)m9xlcF(jqSBW5SFi>Wy@jVv)NQSM?b#%sx5ViId&?qa4l!(?Oja!gI- zQWb6hTjRqtBOxq=wB*l~`ByiJl$)B8glv)9Or;M_kIRzGUCmAZ^vV}w2eGZVE~4K4 zY}w|=uzF$__L!_sB$CY4e2pHf#s%q3>J+NZSrORunK63J^V+EA*j3M~W9qC6?Gxhm zrq?AQ+lw5w(wpA2i7)NjB+U%WEReoWxB(-MJlC+WZ&C^MPXV4IjNAa;7IzU9T}2fp zC6O^?18k9;Wc>brr7%cKz_DY-ZL=Q?6rwQT5lmS)T?PFbfuDd zZV2}8a?g}NGY$O-@~;Z~=Y6#pSS#`HZoD5zVOdNZp1!<-V61r5WNK&VsZWI-jG6{*n_1V-!*aSmPxvj_;6E7JBw63D5QAoA;@LD{uziAF59>i;|w>t-E> zIsP~)o&Ya{2^1MMV8AT=7R@Np)F>eAWnASZ-bQ6mLm1)tW20jQbOlw8Ns&D^G8bybt3JZ&@@54iv zyxdivzi4fpvk#Dh1J@a+-ZHM|Ff-rl?I~u?b>`cj&Stq*87ICj6`Hx%89)Dh&=^_R z6mL#3^THAJ`W0saTS%!+w2$MqwQ=L@6E6@7*7@VOiS`!+7KbUzaZ4(T(a0jMqQZQR zpM`<({I-c^If<&@kr(;3uBs~;lZvWg5F@R&*J+8Wd3G#5S%6V&3l zS`(;~|9Y7cA@G(>`uX47Eupk`=zsV=BLi8uxEeQO`9(dHo1@RmL!aAy(_R2P0;RfL z`Yu8_5sn56d`snH2!Z%4=4;HvX_H%4{J`IIf#?m1&{=2^yDR%8bFkj;BfZg=kH3%-w4sb!NIAFF)#dpHREn=0A zw@R!L$555G7>Ln7|MaCVhhDM2lV=@78JU8s%Sp2K$T@OZ1o@3o7)S z11<+b6*32@y?ubAOo0+-q10+ULtjuZK-Z(CsCcnL<``gaFLjV9lh)#r1N~`~%CgY3%e%OdO?TR*Cw*DXk6#7f-mB6FF9|mTS ze1F56{b0NJnQ&DwA@%**Yy{;Z&j|d=nmL*C0f);&bEa}+gsIgqTwg1yGo<*iDPL5I zNQm8yepj8}=-=+enxwP1$t&DoyUnguDWy zp6t}1-VbV2>qj+H?`J6w{H7LKJy%QWy;Cb44pUl{(XfI430Q?-+++sN6d6~#&@bpl zw34*+52OrOZ1$Vob;Ab`NEI&S(j8QziNeXe+YbhaY_jkPyl#5ceB5rM$n(Z?n!N~E zg<#wiOg?y~xO?UQdSB3uXhl-`6H-iUT)5e9b`sKuMpBzq#9l7lK@AZNBVyDi^X>}3 zeU42Qnj{WThBz3TUN^%DEa&pcytJBWE<-AT$FPo>{#~=0(IIiui);rGQ4c^ zMuFNRmvnV#>AbWdGyxD4D*cElTbgR+GtkW_xW<8CiI{F(xAu%Ir5g6nr@6xLKhWay qvku_KuE`jeAE>sDM{NtJHevu!sLQM}+Ntur)hZ4Ml``WD00000YZER2 diff --git a/renderer/src/App.vue b/renderer/src/App.vue index d6af53d..f8d236d 100644 --- a/renderer/src/App.vue +++ b/renderer/src/App.vue @@ -29,8 +29,8 @@ bridge.addCommandListener('hello', data => { function initDebug() { - connectionArgs.commandString = 'node /Users/bytedance/projects/mcp/servers/src/puppeteer/dist/index.js'; - // connectionArgs.commandString = 'node C:/Users/K/code/servers/src/puppeteer/dist/index.js'; + // connectionArgs.commandString = 'node /Users/bytedance/projects/mcp/servers/src/puppeteer/dist/index.js'; + connectionArgs.commandString = 'node C:/Users/K/code/servers/src/puppeteer/dist/index.js'; // connectionArgs.commandString = 'uv run mcp run bing-picture.py'; connectionArgs.cwd = '../servers'; connectionMethods.current = 'STDIO'; diff --git a/renderer/src/api/message-bridge.ts b/renderer/src/api/message-bridge.ts index 68d1c70..3efd991 100644 --- a/renderer/src/api/message-bridge.ts +++ b/renderer/src/api/message-bridge.ts @@ -123,6 +123,7 @@ class MessageBridge { if (!this.handlers.has(command)) { this.handlers.set(command, new Set()); } + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const commandHandlers = this.handlers.get(command)!; const wrapperCommandHandler = option.once ? (data: any) => { diff --git a/renderer/src/components/main-panel/chat/message/toolcall-result-item.vue b/renderer/src/components/main-panel/chat/message/toolcall-result-item.vue index 0711c1c..82f3043 100644 --- a/renderer/src/components/main-panel/chat/message/toolcall-result-item.vue +++ b/renderer/src/components/main-panel/chat/message/toolcall-result-item.vue @@ -5,12 +5,18 @@
- #{{ props.item.data }} +
+ screenshot + + + +
+ -