From e454fe189c53abbbafab28f65d2653b656509861 Mon Sep 17 00:00:00 2001 From: agent_coder Date: Fri, 10 Jul 2026 05:17:23 +0300 Subject: [PATCH 1/5] =?UTF-8?q?feat(mcp):=20drawio=20=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=B4=D0=B8=D1=8F=202=20=E2=80=94=20=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=D0=B0=20=D0=BA=D0=B0=D1=87=D0=B5=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D0=B0,=20=D0=BA=D0=B0=D1=82=D0=B0=D0=BB=D0=BE=D0=B3=20=D1=84?= =?UTF-8?q?=D0=B8=D0=B3=D1=83=D1=80,=20guide,=20ELK-=D0=BB=D0=B5=D0=B9?= =?UTF-8?q?=D0=B0=D1=83=D1=82,=20warnings=20(#424)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Надстройка над стадией-1 (сырой mxGraph XML) — помогает агенту рисовать корректные диаграммы без бэкенд-рендеринга: - hard-rules в описаниях drawio_create/drawio_update (геометрия, parent- relative координаты, стили); - drawio_guide (5 секций: skeleton / layout / containers / icons-aws / icons-azure, каждая ≤4KB) — по требованию, не раздувает контекст; - drawio_shapes — реальный jgraph shape-index (10446 фигур, gzip 437KB, ленивый node:zlib gunzip) + курируемый оверлей (service-level паттерны AWS/Azure, note-подсказки на пустые resIcon, палитра категорий); ранжирование aws4>aws3; escapeRe в score (не ReDoS); - layout:"elk" через elkjs (чистый JS, dependencies:{}) — compound-nesting, best-effort (на сбое ELK возвращает нормализованный вход), 73→0 warnings на 12-узловом графе; - 6 типов quality-warnings в линтере (overlap, out-of-bounds, edge-cross, и т.п.), геометрия Liang-Barsky; warnings НИКОГДА не блокируют write. Оба новых инструмента в SHARED_TOOL_SPECS (tier:deferred) + SERVER_ INSTRUCTIONS; drift-guards зелёные. elkjs ^0.11.1 — единственный новый рантайм-деп; lockfile синхронизирован (--frozen-lockfile --offline EXIT 0). data/ едет с воркспейсом (.gitignore-негация !packages/mcp/data/). Внутренний цикл: 1 проход внутреннего ревью (APPROVE WITH SUGGESTIONS); все 59 профильных тестов зелёные. Co-Authored-By: Claude Opus 4.8 (1M context) --- .gitignore | 5 + packages/mcp/data/drawio-shape-index.json.gz | Bin 0 -> 436460 bytes packages/mcp/package.json | 1 + packages/mcp/src/client.ts | 13 +- packages/mcp/src/index.ts | 6 + packages/mcp/src/lib/drawio-guide.ts | 228 ++++++++++ packages/mcp/src/lib/drawio-layout.ts | 205 +++++++++ packages/mcp/src/lib/drawio-shapes.ts | 420 ++++++++++++++++++ packages/mcp/src/lib/drawio-xml.ts | 307 ++++++++++++- packages/mcp/src/server-instructions.ts | 4 +- packages/mcp/src/tool-specs.ts | 140 +++++- packages/mcp/test/unit/drawio-guide.test.mjs | 51 +++ packages/mcp/test/unit/drawio-layout.test.mjs | 88 ++++ .../unit/drawio-quality-warnings.test.mjs | 101 +++++ packages/mcp/test/unit/drawio-shapes.test.mjs | 97 ++++ .../unit/drawio-stage2-registration.test.mjs | 62 +++ pnpm-lock.yaml | 8 + 17 files changed, 1727 insertions(+), 9 deletions(-) create mode 100644 packages/mcp/data/drawio-shape-index.json.gz create mode 100644 packages/mcp/src/lib/drawio-guide.ts create mode 100644 packages/mcp/src/lib/drawio-layout.ts create mode 100644 packages/mcp/src/lib/drawio-shapes.ts create mode 100644 packages/mcp/test/unit/drawio-guide.test.mjs create mode 100644 packages/mcp/test/unit/drawio-layout.test.mjs create mode 100644 packages/mcp/test/unit/drawio-quality-warnings.test.mjs create mode 100644 packages/mcp/test/unit/drawio-shapes.test.mjs create mode 100644 packages/mcp/test/unit/drawio-stage2-registration.test.mjs diff --git a/.gitignore b/.gitignore index 131d9031..3eb7e75b 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,11 @@ .env.dev .env.prod data +# Exception: the committed draw.io shape catalog (issue #424) lives in a `data/` +# dir, but the bare `data` ignore above is meant for runtime state, not this +# bundled build asset. Re-include the directory and its contents. +!packages/mcp/data/ +!packages/mcp/data/** # compiled output /dist node_modules diff --git a/packages/mcp/data/drawio-shape-index.json.gz b/packages/mcp/data/drawio-shape-index.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..91d30d8e81824c69f817464a1de5ebb69740de66 GIT binary patch literal 436460 zcmV*JKxV%miwFP!000021MI!&aw9pCKlpu~0@h_~Q*Bn2Nm3#ujZ7bOR_1gbnp9TR z*tWINzzC2;D;S81Lr48>-)Wy=pKJ|B1OtI1Zi-}4*`1XNxI5rK#|?+$pZ@{C|M?F9 z0Qg%Jzk29z{{{XQlEinBdoehFUg8)%1kgbj&mj!Xm+{KG7@q&_C(iNwxBmje(LnsR z{M&zlN%~8SV=n9)a$@K&Jd`rUa1pUwkQ0M2O$9UZ0#w@9fC+g*VT@k>_8$QJKR;Ot zJnW>vTo^DHToC9KF!EMYBt|cBTIQlEQ5=#-bWJ=GUiidE=X30NxnH4&7ygBV{1}Dj zG#~6h?~;97Vb}H0`P!~|JSKTKjube)qnEgd04*kXwW1n|2%`Ww@x>g!AXh5yslB)lew6!YNwHE;txE7 zqAns|5QK=T#cWq3tvC*Zm<^g$s^i37*6%`;(&3Bmz#|Ln0PM3OgXiCM2v+*K;`chG#dO-{L+>FbAzYxQLrF<5 z{ZZrsL^eeg(o%q^kY1}DBs0{w3AiwP{2D+9$FCQIcY|^M!{}o0u4V;GX6kUC|5it@ zC`Li9zoox+GXgbSajiD1RC8k^)|C7UiItN3`ERvaD-7M*^FK|Yu3@Nl<@s;*3gvku zF?QYSYAguXmAF>#z?qAso+Y!Hhk&z$F^HEWSuA4^1qeAyutHG;7YGzN>*$uOyh|r0 z>oxi(x^BKF5t{*D%t#!QRbc@ilT3HQ>(DjveYysc*TF~jCdu+Gs+&Y81OW;o;)7+f zf^#zc$n#Pfb}^Wr_VhyBO$kw{mQAN$bC%ge2z z#ikA*VG%IZ9;$aPc_}0S-2r7Po}K9dJ!y@z$uiB;`8o0VG_^?`S|j(v-QC^U)kqI6Z#xn3u$yaFgY&GPzIaAae7*>wi;*8^ zbEnv$Wj5BfMC~7suyI=q!^E{Q`rF)AW~1 zdK`CgEY+Lg3=YxgJbFa2vux^)1RfZ>&MS$hGxwgHG-xuod>ObRyhZgLlh*UU`hZTjiF z-lEuQGAa}dl{4Nf9m(mHmUOj?j=ULpzDQ?6Z8RB`XfkTBUUQPrd%X&w^N5V6P3s}e zlTK;93IMN(Hq}`K#E+}u$+Fckwp?OT_vEC~X1y)v!l!9plW(A6xv-=vD%sm`@ zP_U78wtypn*ch8{G&?&utVFHQpJRHCRg{+$x&@mB=0~W%l5CRxe?t4^cQp8pDUs_NQg1?){9mHlpaTj%~&r6wq5cHmk?-< z=DTd7Nb75Cy(-2l!o}b`Cc!=`HWW4!CLHSZ3`r7We{s!f`Tt)0Ja{+WM%|y`E1P1b z8)O4zU!LuvPn1pc^~AKOcbML*=oX6a0ozw8o&`%7@ur5xES4?~p|0L{r z$fcO*)SlxP>X1YCf}{+0XeJb$X^l7W8m_4Sbp3rg~I*$BM}|lhg?w zOG2*d1zB-FjO}yfss-EjTCe6eT2FGTmRnkmJ}L`S5UdsK61Hr&aFd{AOP-z~OOpr5C+S4GZq&bvQ%jBXu>pieB1C|mwC?RSdL5(uW|Kfbf3vAX zC3>|D&}?+~+t_8`Muq3|!;gND#PUVX_TdA>%$CV67Mf=Zu#{G(+#VspC%nRO{T8m- zFCZiUOqzNJhy=isQfggIn$Pdy0%cyV9iaMkJ_q;gzM9E(mdxiMpcIZmQS0&&^5ARj z0;@Ch8!AU>gVM)Z#llh0QNg$*)zL%#TtG;aasl0IQ>Se-#mlEO zEp}(+Waqc~f`(F3dw{urVBJfA8t(*N@?Qgev6G;~GV_z5&dPj4o_&3(-F!;DU<-6) z?5tLZfmVA}NeszQN^4ry9x%?AJv&FUDFN&pbyR~@2ab~CgkK|6;hwNWRr@rwgYk_W zPHN9Mn-zctCL~Vn~*U=9Te+3(%cU~jc+T{Tf_BZ^-Rpylg*ct5s>29 zuuwJ{wt6?g)AfX9&fQNG7WG;?-Am$23~7nj@REC!tlmtwheQc>6(uXJc6riT(|PQp zH`6b5ZGOh_GPnB)T>OM}VVE>}R~69|6Q)$Qh5EJ#W!_;;@i7Xh)gVY1KhS^W&=79s zrD)Wt`y^B*u{3KSCDa>{JP*dGlOc&oQpY6r85EOiq5F)fXMOvD;DHHJ5M*BgJvBuk zDA3dlnXvW29h$|2(VY&^dF^^jeWW>Z%Wgr@fz^*M#=Cq1&rjMj2ZQ}_El9mU>hlz6Y#goJK%@y~w_-i^jT4gU4hKL_tl_&3#EEHN7wf5#hc4^Rs$yti*ff~OQ|6I7rT#F}(YgC_F?e@c zZw7J-SDm#&soos`$rIkwyOGcoP?Q%L~$EKHC@wP}@nGUb=eYgO7W1UyJwvUWa6Z?JsBrFKjG%BAa77Fh#Oq}sGW*SA-vap8eERm&5NyI9H&OwZa0 zh1Z1HJ9i-RNI*Tw%rZ6&2XvAcWk{rx^g4)KQVAtsuv~ID7yAcxgz(_wpllzEW)5iP zVlS+W`AxuKKCfM)Q+o9|2M{Yj5uvs>p1a&sqZb%Dg^Ayks0tD{3Ai_5xZw{4BawI1E4^&@$Iq@uK3Dl&`Q-i zD#x&kMw0-LDK_qn%q!cpD}B?-YtcImDIxUNbG%K}?hFQAdu=F)dM-fF(!WWa7d>QG zRUhcD+~r$<=mLS3{%s~>afpMo8Z?`FF$uOQ7bD2ew`7jaR}*w>5eqJ=*wKKVz75Bg z*VYG>JY5nGhW5o_m?O;Ah&Jx-b*DOhGXTIYTeQJJ9Q9;V4+kyvQ>7zy2G-)_c zBU-oVAU<*VWs^%$3^6-0Gi@54XoWrWT5Cc2AhF15a&Z8l6^U73(IoDjem%=2h8>|O@d0q*EB!w^5CwVCjW2Sr^C(?DEID=g zo}(`;Pq6a{fU`u-Bma8^!$%;|Z(2DTFK)!0MviKAG{3_qL*K$e&~XPY;msw{)(F3x zX;wH%u{^OMC~f{~NgNZugSprh6J&5>V`%^sXx>_P`X(H5rxFCYP^7mL`bT|;tvyQM zN1pZHtH7laZ@N{y)au9nSFh9ypy3<>;Lx`RJbEa(K8*a|w_B89BuCI3{!+rhED33U-RfW zy?;rwLOy?`N+0!6m|rdy02Kt(3eLxmyi#Puf0T)IjgC}+Z#lT9mZ%Yb`7X!E4qLY$8ev zV(LF+;ICByu5zD!elPg0GSKGpMF^27|`FoHw+fc*I9SaL4~&q+4t|S z0lHu-FPl;1w{lN!uBCa%4`=MB@ZMM5;9tiTSC3-d$XAPV=%Doq60OL;akCX$;33^d{J(s$IH9YD2Zr=v$mVbuqn8%Y zVDDaPShfd?V)#)VCMRv;jTR6|0-%s@BN{yDW^*)*kxUDC(72{R!}8{sh$8}yz)`(Z zpz9@i3W=|elBz?&5e$09ZR&) z(lQ#&5sa58WPZc7kQ1_NK$dc_yt6*pAn2_iTf#6%@fxPR&hTP*%Dk$Fr_FjFDzyeu zj9ka`=BSKJu(+>Bbnlrq!lR4P$zKvC;gFIwx8Xn9MV)-*HFSIGBE7M#!DkK2 zalNw?df~eUEc^}_#f23F=-A&18Hm005LV8-dSY;TH{ z*t<1DHtGd4-tn-^YrrROc9h9`vyCEpf5yB|R5O$Vzm8LDYlt)G8Q%z$e;!ew4PgTDbfQsL1NDBp{~r3Hw{iT+79* zpx-lnv!3ghde|Y~rBM$r2HfwG`-+V7F4Z~5l5-c$VdBMiSt9mXG%5v%28@0X?uSiP1U$1Un)15cL}9$jxtX$GF5ctS z;=PAw?;Q^ZQy9kY9kL4Odri^%OFza>I837HaCG`I9G$)k)_#E%9AFU3E?pOB3H#ORGxi%dq^!71h*2|^3JkQ69;Nzky|oVi$X{uLAwdnx^A=v)!fbd(X?#qx{KpqSi~2H59uRGR7_ z_*E@L0#Hf%(S-OoCSg-OIJcq&{|t)By=w5CJfoI+04Bqv4NC-i(hX>Kg_hWNyHF5t zQFc8!4X`ryqV*RP&zkoRg1e}j_za54eQEGa!WJ4(ZjA=?Gbkqas==t84q#-`Vgyu@ zUNpH6Y1q@I{es{wY9T&@Vsft^IG>KrRXB$a>f4b``|0 z?ezjoj!ip80L(1CYbwGXbfBw{WYac{v0!8CQ{y&MLQ!Vzj4+=Dw1oX=MdtA{44W=G zQg%ff@f|1x{b&)tdX0BcIkTbx`w9w)y_EhtNt|WF!ZY4t+1W=RC-qYDUmvcfACg(a zvj6&U1wJIRV(Gr)~m*!p|iw3 zYN@S|V$xJ30~2{)8aD0>e$$;xvX9`m{?8+SC*flhx2c6W2}Lb(NkB)|p+rn5-Steg$9ub`0FL)m|!UNH@e&UlL@ zXCHx_)I+)NF`8a4Vc7Io>>eY)_>~=wGy$k2z38!6yiTv6|JYcO#p0F5@_JM?NmGD^ zs0Uph;Joq51J2b|2b?1yCG=6|B?$uREp*+yE~PTS6^tI$gVrpWW&upZedrbw=dsOr z%>-y;xU5rvhNw4P8jsh!km`7yeg_IchdL~fk3#6Zzk+d$!q@4bp%Q{04F0d88d(a^ z(DbOuaL`tl;lQlTaIn@#qU%wkaa)DPW_`wMb;g^~=49Mbo0G9oo0BonQT3<|^gO!C zK~X!UObTVeF8QC7ugjLxd0gdWQLna~$|`SYdC{dDucLbahkk4F+)b@Af5(l_|0t_+`h-ISq=XL3>~j|%>@VJ5h1gv*EjVXZ zrb6s1C?xh%{A+sYa88eWn(B~~pzLX`lYow_f0e$@=k3)3U*~h1YG3DbU?T5HMUNzn z_n;}Sq7MBCM-Fz zA?rt_kHPdBu22Y@wtmK}TrCX%PXLAVew6r3+{QNn7_YkFph`dB%TW|@L~rhsM&%GmpXfZZQyH(6pL43njN8qgAMK&{_# zh&&WU9q0#ASyn|;B4B6jNA+(gK(P6uG-WR;n0^NeK~HLs7AtGcTvQ=sUqSSYX(Y7* zO|M#fbQ(LMatVM+sG^Td*pE^VEW@Tdvy55Uo8>wb68kCsulEm4o$T))6bJkJ2ax~V zPm!}8tW~SXx+Q({cute$di4wg@QmjeK*yn}{Mq`VyrE?&1B0Gd4 zKqT`}iv7_M3kmt26Y zJ*_D=qemMn<+QQds7TkpW^LM&D6O?UqozhNqO?+6ML1o7c5d>sDx_Hl7}}zsDYFbHKy+ZDU?W zun{HNSZ%F})ldbp-qmW;^mtjV?JY;LAywMjs6um62>aZxb?CcTIBIoJn#!=Amgb2z zrckThXGtyl*0V~w5fxjVU1epqA7II38&sKmC=Jz&cnbQ8k&Z-M=if2XW62SQFdGVO4B!?K^qHY zdRT2EQ}wEoha%{qsFi7i47+`DL>p76ou%?>m6%H*-H3{9I>B|Bt-WA@Y=dfbW4j6+ zp_aHuMSq95g)=N;HmSl>`!9PN+XxM;Cdt$EuT7g~BuZ*+LwTA_Y14s)Dl{FHvQPcE zze6j{xR-)mryNcH+B6?_%e|5|;)v9N>rEAJn+-YGbmmi2-Hm25o-;A>kV96h#1}6N zyk}Wmp)h=H98EA4poSAnQ-Fr3SFNs*=LJjRHxH;I_|=#*A_1r*y=wH~`}H(h!7y&4 z)`#!cU@b&>pjJu+2I5||#P=<<3wj=rjSS zB)w|%fEPaWrZKy6Od1Dt;$oN-K-7RvJQ-x^z(l`6UHvXp_3fJaz(8G1&nOPbBl;b? z@$zDn>KiR#fG$=q3mQ%T-P|M34vk0u4*EVx-xWEB9$xqt9-7DJA}ZnS6Y}HeVtAfc zb(~jqI8a}-$Yd7v%<={6e8CU^`W^6u2>p@JtzPH>7sEveSAg0B`7v-&B(QmK#NEv{A%pGIpT%Nm6=7;+U+?)5J>#PD}zBQU`|a`STLT z=pld(x_Ay@a30}5(Zy(R4nyaG{&P5zz*^%&(VA!iMW|18tYM-#mci5D6^}L`sP)RB zk8#AvqPC`zTyrLi>YSiV`z1-jg$E=0Jc}%`VhdtQ1u%r3hde@MX8KBvD?lM$p%{fS z@qPMPsTd(id>6SF!+h0XwPo;bbX2R7+`t%`k#b=S%V3fu^w77^GR$Cv6cqAmPRg~U zGVGdCiZX588HhyGC`D)=$|DCynD|!ZOIyT^kYZ6^P?Q?GD5)2nJ@{HfVU4+|1e>xR zd@a{BFQX4NafqCFN-JJFWtkjM(vUe(rS`0m*Ngg5(Av&ihD~ioP_D8prw?_BlhCQg zNI%LC-i^lfR2T9rx(kXj<>%N#KoQpi1n4CWp%YI@I9(waB_X0YS}VZW*b2femk8*! zoV7$VBxp^aD?u4RCArj@46vE64?PiTP|;l==)PPG$LH=V{aYRDPYctBJYXmJT63ZR z_EF?-3X8agDlKU?+LeH0l-xr_@(2m09$w+NRqyeMkN|w5V$3kmtN_cZ3;>O^YN~6e zghF-bC(!%o2T6QB->~0PU{< z3QHEX0&$X3RzzKu+(UC*p>Tm{uO1nCwHiJ8XDW;Kw51)?Dy6L0K^Z0Yfk@)T_~� zw&HPmYR7{~Dj)3S9Lum^)ETiMkN(&DWIn%#3v^9~&G%CC!)zfCYj$!bNPnw%#- zyJ=r%vh+1H!y@E@RBjn6QL+Nib-~xL(Y!H+fpM}}m^ko;Gd#15Lu19^2L_fZKr=7X zPm=H!hE8|RrYqv2;vTbc06Ny3A#ph@6s;MPG&?}ED+5O_vwxI=kkFWQWwXV>yWw#* z*O}Csz}$z(MRV*U7u@sAERd~fMZrpOGfVFuyd`>p3*zVIj^ax;a~$PBODBydb>X8G z$v*W9)q$!u!U zvhG(=eYAb5lMuP>_v;^+oU&HWiK?{tbp5N7`z9-s zu+Aj=K}@9oTTG-aE0M6Y*_&kbP#a$L{xwk!ow zFbv6aG~)lITiJtm6S}W`JUI7B>?|(^7M#>-@;!upG)Fd+1VtG}tU!Rdq5wr|9S12G z1;~jn=J*BWcNj&twBBD#Cs6rK!e|Ly@_aEkcVV>T8y*34u)p|Df{P>Jbd~yCK_|vf zXv&Z9NcgIJco#h_%x*NtM~W8>;}-{gM0G&r@Pm70 z-h-RpZi)ywE^wb*>OK_ElOY!`a11^0gk41Fp`*hfQ@D2oD&%=n=De!FH5%ICLY@b- z-lS9};Qp};8I^EHumIeM6X!NOnaX z+*!G4J)(QMT!#8eUWQth4~UUOgJ9xK90v7;CNgC$2mzt z6O6~Z597E47{^s$OlNCW{vCtSFtI%zRvSh1GusS2E?ov~C+E1SMp4Pc_RNG-WWp$t z(1~^p7vV*s;&OCkuR$rJf=imfaZ$*21(y}X{?s9U91_pdw6LR+c^VTyUvw4%RGb*W zItPK5iETGTyYx`_G)RH)P(G&1RK;IlwJ3b8ZwiHqtE z)xU6F@I~VZB;*1rmqDZ@-Ytv_Q@@f8r&MwM%rC_$H}Nwt>;_g#7`k*@^U+?JM#>uF z1HEp0gCk{Mj!L8(n0#MOCEF2P$f|bx`ao7nyP|S95c$O2!C*?AW$SKsQ(eKm#@n5t z!Q5|CNMy3zz=d5CnUW-?|CwVi)(zgr)=q}q9(n(ji2!#@gc7fWT}I)#0G>R*&el?hfKVkm5w~h`8TGK4~}f_h1l{VCr}@ zlz83qq)&_)Tr=h(CR{S$k{LRB@*TkmM{(V4oKHAXQK8}585sG*-N0Z49b-kYug5<_ z$52aF&;cu2gqTFjd}YzF>V;ayrl7+=b65%_JAwys(W(RuWzt74V67A^=tqu( zl)NK2yiOw=mmWkZi_Xul;DPcfXuJX@j{{O9+6_#65>F%gK!e5|#=g+}LSn$4c2Ig; zpHO#Vn!=FL5bg#xfeY0wKKoF8e{)$xBXA)IP#6)PxmI)cR~SV&ilG>-^ISUujn?N? zZbvFOI(OH#r|T{{xdtIy(v>WNj?}Asj7`CUf97ZuNOl8{kR;`BD08=OjH`$Sm&L#+ z5bOpPhHf?6U(xp<`Ytuso$h2;8i_Z68li#XS1lgYZ8<|EPqZtT&{Li19EPj9yG;B* z2++5tRb*Hal`6ndNp}Pv#*N∓IYww0aQiK;OHh(m}49F|q6jUN}Zm8n6|yD}5!S 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

r^HKG< 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%0DZPI! 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 z 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 literal 0 HcmV?d00001 diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 66386299..b5400dab 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -57,6 +57,7 @@ "@tiptap/starter-kit": "3.20.4", "@types/jsdom": "^27.0.0", "axios": "^1.6.0", + "elkjs": "^0.11.1", "form-data": "^4.0.0", "jsdom": "^27.4.0", "marked": "^17.0.1", diff --git a/packages/mcp/src/client.ts b/packages/mcp/src/client.ts index a2312ce4..89891063 100644 --- a/packages/mcp/src/client.ts +++ b/packages/mcp/src/client.ts @@ -55,6 +55,7 @@ import { countUserCells, } from "./lib/drawio-xml.js"; import { renderDiagramShapes } from "./lib/drawio-preview.js"; +import { applyElkLayout } from "./lib/drawio-layout.js"; import { applyTextEdits, TextEdit, @@ -3984,6 +3985,7 @@ export class DocmostClient { }, xml: string, title?: string, + layout?: "elk", ): Promise<{ success: boolean; nodeId: string; @@ -4014,8 +4016,12 @@ export class DocmostClient { } } + // Optional server-side ELK auto-layout: the model declares structure with + // rough coords, ELK computes the pixels (best-effort — returns the input + // unchanged on any layout failure). + const laidOutXml = layout === "elk" ? await applyElkLayout(xml) : xml; // Pre-write pipeline (throws a structured DrawioLintError on any violation). - const prepared = prepareModel(xml); + const prepared = prepareModel(laidOutXml); const inner = renderDiagramShapes(prepared.cells, prepared.bbox); const diagramTitle = title || "Page-1"; const svg = buildDrawioSvg(prepared.modelXml, inner, prepared.bbox, diagramTitle); @@ -4129,6 +4135,7 @@ export class DocmostClient { node: string, xml: string, baseHash: string, + layout?: "elk", ): Promise<{ success: boolean; nodeId: string; @@ -4166,8 +4173,10 @@ export class DocmostClient { ); } + // Optional server-side ELK auto-layout (best-effort; see drawioCreate). + const laidOutXml = layout === "elk" ? await applyElkLayout(xml) : xml; // Pipeline for the new content (throws a structured DrawioLintError). - const prepared = prepareModel(xml); + const prepared = prepareModel(laidOutXml); const inner = renderDiagramShapes(prepared.cells, prepared.bbox); const diagramTitle = oldAttrs.title || "Page-1"; const svg = buildDrawioSvg(prepared.modelXml, inner, prepared.bbox, diagramTitle); diff --git a/packages/mcp/src/index.ts b/packages/mcp/src/index.ts index a1ca00c4..dbf425e5 100644 --- a/packages/mcp/src/index.ts +++ b/packages/mcp/src/index.ts @@ -80,6 +80,12 @@ const VERSION = packageJson.version; // (SHARED_TOOL_SPECS + INLINE_MCP_INVENTORY), so it can no longer drift out of // sync with the registered tools. Re-exported here (its old home) so existing // importers are unaffected; the composition lives in server-instructions.ts. +// The drawio_shapes / drawio_guide tools (#424) are ordinary SHARED_TOOL_SPECS +// entries (their canonical execute calls the pure searchShapes/getGuideSection +// helpers, ignoring the client), so the registry loop registers them and the +// generated picks them up from their catalogLine automatically; +// only the hand-written routing prose in server-instructions.ts is updated to +// mention them. export { SERVER_INSTRUCTIONS }; // Helper to format JSON responses diff --git a/packages/mcp/src/lib/drawio-guide.ts b/packages/mcp/src/lib/drawio-guide.ts new file mode 100644 index 00000000..cc0e5d2d --- /dev/null +++ b/packages/mcp/src/lib/drawio-guide.ts @@ -0,0 +1,228 @@ +// Progressive-disclosure authoring reference for the `drawio_guide` tool +// (issue #424, stage 2). The FULL draw.io authoring guide would bloat every +// context window, so it is split into small sections the model reads on demand: +// skeleton | layout | containers | icons-aws | icons-azure +// Content is written directly from the issue #424 appendix (the layout +// heuristics, container rules, AWS icon patterns + gotchas + blocklist, and +// Azure image-style paths). ACCEPTANCE: each section stays <= ~4 KB so pulling +// one is cheap. + +export type GuideSection = + | "skeleton" + | "layout" + | "containers" + | "icons-aws" + | "icons-azure"; + +export const GUIDE_SECTIONS: GuideSection[] = [ + "skeleton", + "layout", + "containers", + "icons-aws", + "icons-azure", +]; + +const SKELETON = `# drawio_guide: skeleton + +Canonical mxGraph skeleton. id="0" and id="1" are MANDATORY sentinels; every +real cell has parent="1" (or a container id). Set adaptiveColors="auto" on the +model so Docmost's dark theme adapts strokeColor/fillColor/fontColor="default". + +\`\`\`xml + + + + + + + + + + + + + + + +\`\`\` + +Three accepted inputs to drawio_create/drawio_update: a bare , a +full (decoded to its first page), or a raw list of (the server +wraps it and adds the id=0/id=1 sentinels). + +Hard rules: a cell is vertex="1" XOR edge="1" (a container/group is neither); +every edge has a child ; ids are unique; +no XML comments; put html=1 in styles and XML-escape value (& -> &, +< -> <); a newline in a label is , never a literal \\n. Don't guess +shape=mxgraph.* names — call drawio_shapes first (a wrong name renders empty).`; + +const LAYOUT = `# drawio_guide: layout + +Turn "make it look good" into checkable numbers. Or pass layout:"elk" to +drawio_create/drawio_update and the server computes coordinates for you (ELK +layered layout, honouring nested containers) — you declare structure, it places +pixels. + +Spacing (when placing by hand): +- Horizontal gap between shapes 200-220px; vertical between rows/lanes 250px; + auxiliary services (monitoring, DLQ) sit below the main flow with 280px+ gap. +- Coordinates are multiples of 10 (grid). Base sizes: rectangle 140x60, diamond + 140x80, circle 60x60; cloud icons 78x78 primary / 65x65 secondary; font 12px. +- Main flow left-to-right, one primary axis; <=3-4 lanes/zones; one icon/service. + +Edges: +- <=1 bend per edge (ideally 0); an edge must not cross another shape's bbox; + two edges must not lie on top of each other. +- Give explicit exitX/exitY/entryX/entryY for every non-straight link or the + orthogonal router drives lines through shapes. Vertical link: + exitX=0.5;exitY=1 -> entryX=0.5;entryY=0. For 2+ links on one node, spread the + attach points 0.25 / 0.5 / 0.75. +- Base edge style: + edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;exitX=1;exitY=0.5;entryX=0;entryY=0.5; +- Edge labels: 1-2 words max, labelBackgroundColor=#F5F5F5;fontSize=11;. Don't + label an obvious flow (Lambda->DynamoDB needs no "Write"); prefer numbering + stages (1,2,3) over many labels. +- Line semantics: solid = main/sync; dashed=1 = async; red dashed + strokeColor=#DD344C = error path. + +Alignment: centre a child under its parent by math, not by eye: +child.x = parent.center_x - child.width/2. + +The linter returns quality WARNINGS (bbox overlap, edge through a shape, +edge-on-edge, gap <150px, label wider than its shape, negative/off-page coords). +They do not block the write — fix them and retry, max 2 iterations.`; + +const CONTAINERS = `# drawio_guide: containers + +Groups/zones are TRANSPARENT containers. A coloured group fill is an instant +"AI-generated" tell — never fill a group. + +- Every group: container=1;dropTarget=1;fillColor=none;. It is a cell with + vertex unset AND edge unset. +- Children set parent="" and their coordinates are RELATIVE to the + group's top-left, not absolute. +- An edge between cells in DIFFERENT containers must be parent="1" (the layer), + otherwise it is clipped to one container and disappears. +- Keep the group title off the group icon: + spacingLeft=40;spacingTop=-4;. +- Leave >=30px padding between children and the group frame. +- Draw edges on the BACK layer (place their BEFORE the shapes in XML) + and keep >=20px between an arrow and a label. + +Swimlanes: style=swimlane;horizontal=0;startSize=110;. Lanes are parent="1"; +their members are children of the lane. + +Example (transparent zone with two children and an internal edge): +\`\`\`xml + + + + + + + + + + + + +\`\`\``; + +const ICONS_AWS = `# drawio_guide: icons-aws + +Two mutually-exclusive AWS icon patterns — mixing them is the #1 cause of empty +boxes. Always call drawio_shapes for the exact resIcon name; do not guess. + +| Level | style | strokeColor | +|---|---|---| +| Service | shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4. | #ffffff (required) | +| Resource | shape=mxgraph.aws4. | none (required) | + +Full service-level template (fillColor is REQUIRED — the glyph is invisible in +PNG export without it): +\`\`\` +sketch=0;outlineConnect=0;fontColor=#232F3E;fillColor=;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4. +\`\`\` + +Category fillColor: Compute #ED7100, Networking #8C4FFF, Database #C925D1, +Storage #3F8624, Security #DD344C, Integration #E7157B, AI/ML #01A88D. + +Rebrandings (stencil name lags the product name): +- Amazon OpenSearch -> resIcon elasticsearch_service (renamed 2021) +- Amazon EventBridge -> resIcon eventbridge (was CloudWatch Events) +- VPC Peering -> resIcon peering (NOT vpc_peering -> empty box) +- Amazon MSK -> resIcon managed_streaming_for_kafka (NOT msk) +- IAM Identity Center -> resIcon single_sign_on (NOT iam_identity_center) + +Blocklist -> replacement: dynamodb_table -> dynamodb; general_saml_token -> +traditional_server; kinesis_data_streams is unreliable. An unknown service -> +generic resIcon=mxgraph.aws4.general_AWScloud WITH a label; an unnamed coloured +rectangle is forbidden. + +Group stencils (transparent containers): AWS Cloud group_aws_cloud_alt, VPC +group_vpc2, Subnet group_security_group, Account group_account; subnets use +shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_public_subnet;.`; + +const ICONS_AZURE = `# drawio_guide: icons-azure + +shape=mxgraph.azure2.* does NOT render in every host. Use the portable +image-style instead: +\`\`\` +image;aspect=fixed;html=1;image=img/lib/azure2//.svg; +\`\`\` + +Known working paths: +- networking/Front_Doors.svg +- app_services/API_Management_Services.svg +- databases/Azure_Cosmos_DB.svg +- identity/Managed_Identities.svg +- management_governance/Monitor.svg +- devops/Application_Insights.svg + +For maximum robustness (e.g. PNG export on a host without the bundled lib), use +an absolute URL fallback for the image: +\`\`\` +https://raw.githubusercontent.com/jgraph/drawio/dev/src/main/webapp/img/lib/azure2//.svg +\`\`\` + +Call drawio_shapes with the service name (e.g. "cosmos", "api management", +"front door") to get the exact image-style string and default 68x68 size.`; + +const CONTENT: Record = { + skeleton: SKELETON, + layout: LAYOUT, + containers: CONTAINERS, + "icons-aws": ICONS_AWS, + "icons-azure": ICONS_AZURE, +}; + +/** + * Return one guide section, or (when `section` is omitted/unknown) an index + * listing the available sections plus a one-line summary each. Each section is + * kept under ~4 KB so pulling it does not bloat the model's context. + */ +export function getGuideSection(section?: string): { + section: string; + content: string; + sections: GuideSection[]; +} { + const key = (section ?? "").trim().toLowerCase() as GuideSection; + if (section && GUIDE_SECTIONS.includes(key)) { + return { section: key, content: CONTENT[key], sections: GUIDE_SECTIONS }; + } + const index = + "# drawio_guide\n\nProgressive-disclosure draw.io authoring reference. " + + "Call drawio_guide(section) with one of:\n" + + "- skeleton — canonical mxGraph XML, sentinels, the three accepted inputs, hard rules\n" + + "- layout — spacing heuristics, edge routing, the layout:\"elk\" option, quality warnings\n" + + "- containers — transparent groups, relative child coords, cross-container edges, swimlanes\n" + + "- icons-aws — the service/resource icon patterns, category colors, rebrandings, blocklist\n" + + "- icons-azure — the portable image-style paths\n\n" + + "Also call drawio_shapes(query) for verified stencil style-strings."; + return { section: "index", content: index, sections: GUIDE_SECTIONS }; +} diff --git a/packages/mcp/src/lib/drawio-layout.ts b/packages/mcp/src/lib/drawio-layout.ts new file mode 100644 index 00000000..15117a97 --- /dev/null +++ b/packages/mcp/src/lib/drawio-layout.ts @@ -0,0 +1,205 @@ +// ELK auto-layout for draw.io models (issue #424, stage 2). The model declares +// the LOGICAL structure (which nodes exist, which containers nest which +// children, which edges connect what) with rough or arbitrary coordinates; this +// module runs an Eclipse Layout Kernel "layered" pass (via elkjs — a pure-JS +// port, no native/browser deps) that HONOURS nested containers as compound +// nodes, then rewrites every vertex's with the computed pixels. +// +// Principle: "the model declares logical structure, the server computes pixels." +// Coordinates ELK returns for a node are relative to its parent, which is +// exactly mxGraph's convention for a child of a container, so they map across +// directly. Container sizes are computed by ELK; leaf sizes are preserved. + +import ELK from "elkjs/lib/elk.bundled.js"; +import { JSDOM } from "jsdom"; +import { normalizeInput, parseCells, type DrawioCell } from "./drawio-xml.js"; + +// Default sizes when a vertex declares no geometry (appendix base sizes). +const DEFAULT_W = 140; +const DEFAULT_H = 60; + +// Spacing is set >=150px on purpose so an ELK layout never trips the linter's +// "gap between adjacent shapes < 150px" quality warning (acceptance #3). +const LAYOUT_OPTIONS: Record = { + "elk.algorithm": "layered", + "elk.direction": "RIGHT", + // Route edges across container boundaries in a single hierarchical pass. + "elk.hierarchyHandling": "INCLUDE_CHILDREN", + "elk.layered.spacing.nodeNodeBetweenLayers": "170", + "elk.spacing.nodeNode": "170", + "elk.spacing.edgeNode": "40", + "elk.spacing.edgeEdge": "30", + "elk.padding": "[top=20,left=20,bottom=20,right=20]", +}; + +// Per-container options: pad children >=30px off the frame (appendix rule) and +// carry the same generous spacing so nested nodes never trip the "gap <150px" +// warning either. +const CONTAINER_OPTIONS: Record = { + "elk.algorithm": "layered", + "elk.direction": "RIGHT", + "elk.padding": "[top=40,left=30,bottom=30,right=30]", + "elk.layered.spacing.nodeNodeBetweenLayers": "170", + "elk.spacing.nodeNode": "170", +}; + +interface ElkNode { + id: string; + width?: number; + height?: number; + x?: number; + y?: number; + children?: ElkNode[]; + layoutOptions?: Record; +} +interface ElkEdge { + id: string; + sources: string[]; + targets: string[]; +} +interface ElkGraph extends ElkNode { + edges?: ElkEdge[]; +} + +/** + * Apply an ELK layered layout to a drawio input and return a full mxGraphModel + * string with rewritten geometry. Accepts the same three input forms as + * drawio_create (a bare model, an , or a list). Async because + * elkjs' layout() is promise-based. On any layout failure the ORIGINAL + * (normalized) model is returned unchanged — layout is best-effort polish, never + * a reason to fail the write. + */ +export async function applyElkLayout(inputXml: string): Promise { + const modelXml = normalizeInput(inputXml); + let cells: DrawioCell[]; + try { + cells = parseCells(modelXml); + } catch { + return modelXml; // unparseable -> let the linter report it downstream + } + + const byId = new Map(cells.map((c) => [c.id, c])); + const vertices = cells.filter( + (c) => c.vertex && c.id !== "0" && c.id !== "1", + ); + if (vertices.length === 0) return modelXml; + + // A vertex is a CONTAINER iff some other vertex names it as parent. + const childrenOf = new Map(); + for (const v of vertices) { + const p = v.parent && byId.get(v.parent)?.vertex ? v.parent : "__root__"; + if (!childrenOf.has(p)) childrenOf.set(p, []); + childrenOf.get(p)!.push(v); + } + const isContainer = (id: string) => childrenOf.has(id); + + const buildNode = (v: DrawioCell): ElkNode => { + const kids = childrenOf.get(v.id); + const node: ElkNode = { id: v.id }; + if (kids && kids.length > 0) { + node.children = kids.map(buildNode); + node.layoutOptions = { ...CONTAINER_OPTIONS }; + } else { + node.width = v.geometry.width ?? DEFAULT_W; + node.height = v.geometry.height ?? DEFAULT_H; + } + return node; + }; + + const roots = (childrenOf.get("__root__") ?? []).map(buildNode); + + // All edges at the root; INCLUDE_CHILDREN lets them span the hierarchy. Only + // edges whose endpoints are laid-out vertices are handed to ELK. + const vertexIds = new Set(vertices.map((v) => v.id)); + const edges: ElkEdge[] = []; + for (const c of cells) { + if (!c.edge || !c.source || !c.target) continue; + if (!vertexIds.has(c.source) || !vertexIds.has(c.target)) continue; + edges.push({ id: c.id || `e${edges.length}`, sources: [c.source], targets: [c.target] }); + } + + const graph: ElkGraph = { + id: "root", + layoutOptions: LAYOUT_OPTIONS, + children: roots, + edges, + }; + + let laid: ElkGraph; + try { + // elkjs ships a CJS default export whose interop shape varies across + // module systems; resolve the real constructor at runtime, then cast (the + // runtime call is verified — see the layout unit test). + const Ctor: any = (ELK as any).default ?? ELK; + const elk = new Ctor(); + laid = (await elk.layout(graph as any)) as ElkGraph; + } catch { + return modelXml; // best-effort: keep the model as-is on any ELK failure + } + + // Collect computed geometry per node id (coords are parent-relative already). + const geo = new Map(); + const walk = (n: ElkNode) => { + if (n.id !== "root") { + geo.set(n.id, { + x: Math.round(n.x ?? 0), + y: Math.round(n.y ?? 0), + w: Math.round(n.width ?? DEFAULT_W), + h: Math.round(n.height ?? DEFAULT_H), + }); + } + for (const c of n.children ?? []) walk(c); + }; + walk(laid); + + return rewriteGeometry(modelXml, geo, isContainer); +} + +/** + * Rewrite each vertex cell's x/y (and width/height for containers, + * whose size ELK computed) using the DOM, then serialize back. Leaf sizes are + * left untouched. Edges and non-geometry attributes are preserved verbatim. + */ +function rewriteGeometry( + modelXml: string, + geo: Map, + isContainer: (id: string) => boolean, +): string { + const dom = new JSDOM(""); + const parser = new dom.window.DOMParser(); + const doc = parser.parseFromString(modelXml, "application/xml"); + if (doc.getElementsByTagName("parsererror").length > 0) return modelXml; + + const cellEls = doc.getElementsByTagName("mxCell"); + for (let i = 0; i < cellEls.length; i++) { + const el = cellEls[i]; + const id = el.getAttribute("id") || ""; + const g = geo.get(id); + if (!g) continue; + let geoEl: any = null; + for (let j = 0; j < el.childNodes.length; j++) { + const ch = el.childNodes[j]; + if (ch.nodeType === 1 && (ch as any).tagName === "mxGeometry") { + geoEl = ch; + break; + } + } + if (!geoEl) { + geoEl = doc.createElement("mxGeometry"); + geoEl.setAttribute("as", "geometry"); + el.appendChild(geoEl); + } + geoEl.setAttribute("x", String(g.x)); + geoEl.setAttribute("y", String(g.y)); + // Containers take ELK's computed size; leaves keep their authored size. + if (isContainer(id) || !geoEl.hasAttribute("width")) { + geoEl.setAttribute("width", String(g.w)); + } + if (isContainer(id) || !geoEl.hasAttribute("height")) { + geoEl.setAttribute("height", String(g.h)); + } + } + + const ser = new dom.window.XMLSerializer(); + return ser.serializeToString(doc.documentElement); +} diff --git a/packages/mcp/src/lib/drawio-shapes.ts b/packages/mcp/src/lib/drawio-shapes.ts new file mode 100644 index 00000000..7ca6e9a4 --- /dev/null +++ b/packages/mcp/src/lib/drawio-shapes.ts @@ -0,0 +1,420 @@ +// Verified draw.io shape catalog for the `drawio_shapes` tool (issue #424, +// stage 2). This is the fix for AI-generated diagrams' #1 defect: guessed +// `shape=mxgraph.*` names that render as EMPTY BOXES because the stencil does +// not exist. Instead of guessing, the model queries this catalog and gets back +// an exact, verified style-string + the stencil's default width/height. +// +// DATA SOURCE — the bundled index is the REAL jgraph/drawio-mcp shape index +// (`shape-search/search-index.json`, Apache-2.0, ~10 446 shapes), fetched +// verbatim and gzip-compressed to `packages/mcp/data/drawio-shape-index.json.gz` +// (~4.7 MB -> ~430 KB). Each record is `{ style, w, h, title, tags, type }`. +// +// REGENERATING THE INDEX (keeps the catalog from going stale as draw.io ships +// new stencils): jgraph publishes `shape-search/generate-index.js`, which +// rebuilds `search-index.json` from a draw.io release's `app.min.js`. To update: +// 1. clone https://github.com/jgraph/drawio-mcp (Apache-2.0) +// 2. run `node shape-search/generate-index.js` per its README +// 3. `gzip -9 -c search-index.json > packages/mcp/data/drawio-shape-index.json.gz` +// The record shape and this module's search stay unchanged. +// +// CURATED OVERLAY — on top of the raw index this module carries a small, +// hand-maintained overlay drawn from the issue #424 appendix (the aws- +// architecture-diagram-skill knowledge): AWS service rebrandings whose stencil +// name lags the product name, a BLOCKLIST of known-broken stencils mapped to +// working replacements, the category fillColor palette, the AWS group/subnet +// stencils, and the Azure image-style paths. The overlay is applied BEFORE the +// raw search so a query for a rebranded/blocked name returns the correct answer +// with an explanatory note instead of the empty-box stencil. + +import { readFileSync } from "node:fs"; +import { gunzipSync } from "node:zlib"; + +/** A single catalog record as returned to the model. */ +export interface ShapeResult { + /** The exact draw.io style-string to put on the cell. */ + style: string; + /** Default width in px for this stencil. */ + w: number; + /** Default height in px for this stencil. */ + h: number; + /** Human-readable stencil name. */ + title: string; + /** "vertex" | "edge" (from the index). */ + type: string; + /** AWS category (Compute/Database/…) when derivable, else undefined. */ + category?: string; + /** + * Present when the overlay rewrote/annotated the answer: a rebrand, a + * blocklist replacement, or a usage hint. The model should surface it. + */ + note?: string; +} + +/** Raw record shape in the bundled index. */ +interface IndexRecord { + style: string; + w: number; + h: number; + title: string; + tags: string; + type: string; +} + +// --- AWS category fillColor palette (appendix) ----------------------------- +// Service-level icons MUST carry a fillColor (invisible in PNG export +// otherwise); the color is the AWS category color. +export const AWS_CATEGORY_FILL: Record = { + Compute: "#ED7100", + Networking: "#8C4FFF", + Database: "#C925D1", + Storage: "#3F8624", + Security: "#DD344C", + Integration: "#E7157B", + "AI/ML": "#01A88D", +}; + +/** Reverse lookup: fillColor hex -> category name (for annotating results). */ +const FILL_TO_CATEGORY: Record = Object.fromEntries( + Object.entries(AWS_CATEGORY_FILL).map(([k, v]) => [v.toLowerCase(), k]), +); + +/** + * Build the canonical service-level AWS icon style for a resIcon name. Mirrors + * the appendix's full template: strokeColor=#ffffff is MANDATORY and fillColor + * is the category color (defaults to AWS ink #232F3E when the category is + * unknown, so the glyph is never invisible). + */ +export function awsServiceStyle(resIcon: string, category?: string): string { + const fill = (category && AWS_CATEGORY_FILL[category]) || "#232F3E"; + return ( + "sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;" + + `fillColor=${fill};strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;` + + "verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;" + + `shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.${resIcon}` + ); +} + +// --- AWS rebrandings (appendix "gotcha" table) ----------------------------- +// The stencil name lags the AWS product name; a naive query for the product +// name would miss (or return an empty box). Each alias maps to the REAL resIcon. +interface Rebrand { + aliases: string[]; + resIcon: string; + category?: string; + note: string; +} +export const AWS_REBRANDS: Rebrand[] = [ + { + aliases: ["opensearch", "open search", "amazon opensearch"], + resIcon: "elasticsearch_service", + category: "Database", + note: "Amazon OpenSearch's stencil is still named `elasticsearch_service` (renamed in 2021).", + }, + { + aliases: ["eventbridge", "event bridge", "cloudwatch events"], + resIcon: "eventbridge", + category: "Integration", + note: "Amazon EventBridge uses resIcon `eventbridge` (formerly CloudWatch Events).", + }, + { + aliases: ["vpc peering", "peering"], + resIcon: "peering", + category: "Networking", + note: "VPC Peering is resIcon `peering`, NOT `vpc_peering` (which renders empty).", + }, + { + aliases: ["msk", "kafka", "managed streaming", "amazon msk"], + resIcon: "managed_streaming_for_kafka", + category: "Integration", + note: "Amazon MSK is resIcon `managed_streaming_for_kafka`, NOT `msk`.", + }, + { + aliases: ["iam identity center", "identity center", "sso", "single sign on"], + resIcon: "single_sign_on", + category: "Security", + note: "IAM Identity Center is resIcon `single_sign_on`, NOT `iam_identity_center`.", + }, +]; + +// --- BLOCKLIST of broken stencils (appendix) ------------------------------- +// A query that names one of these gets the working replacement + a note; the +// broken stencil is never returned. +interface Blocked { + bad: string; + good: string; + goodStyle?: (idx: IndexRecord[]) => ShapeResult | null; + note: string; +} +export const AWS_BLOCKLIST: Blocked[] = [ + { + bad: "dynamodb_table", + good: "dynamodb", + note: "`dynamodb_table` renders as an empty box; use resIcon `dynamodb`.", + }, + { + bad: "general_saml_token", + good: "traditional_server", + note: "`general_saml_token` is broken; use resIcon `traditional_server`.", + }, + { + bad: "kinesis_data_streams", + good: "kinesis_data_streams", + note: "`kinesis_data_streams` is unreliable across draw.io versions; verify it renders, or fall back to resIcon `kinesis`.", + }, +]; + +// --- AWS group / container stencils (appendix) ----------------------------- +// Groups are transparent containers; these are the verified stencil names. +export const AWS_GROUP_STENCILS: ShapeResult[] = [ + { + title: "AWS Cloud (group)", + style: + "points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];" + + "outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;" + + "pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud_alt;" + + "strokeColor=#232F3E;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#232F3E;dashed=0;", + w: 400, + h: 300, + type: "vertex", + note: "AWS Cloud boundary — transparent container (grIcon=group_aws_cloud_alt).", + }, + { + title: "VPC (group)", + style: + "points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];" + + "outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;" + + "pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc2;" + + "strokeColor=#8C4FFF;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#8C4FFF;dashed=0;", + w: 350, + h: 250, + type: "vertex", + note: "VPC boundary — transparent container (grIcon=group_vpc2).", + }, + { + title: "Public Subnet (group)", + style: + "sketch=0;outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;" + + "pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_public_subnet;" + + "grStroke=0;strokeColor=none;fillColor=#E9F3E6;verticalAlign=top;align=left;spacingLeft=30;fontColor=#248814;dashed=0;", + w: 300, + h: 200, + type: "vertex", + note: "Public subnet — transparent container (grIcon=group_public_subnet).", + }, + { + title: "Private Subnet (group)", + style: + "sketch=0;outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;" + + "pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_private_subnet;" + + "grStroke=0;strokeColor=none;fillColor=#E6F2F8;verticalAlign=top;align=left;spacingLeft=30;fontColor=#147EBA;dashed=0;", + w: 300, + h: 200, + type: "vertex", + note: "Private subnet — transparent container (grIcon=group_private_subnet).", + }, +]; + +// --- Azure image-style stencils (appendix) --------------------------------- +// `shape=mxgraph.azure2.*` does not render in every host; the image-style path +// is the portable form. These are the verified known-working paths. +interface AzureIcon { + aliases: string[]; + path: string; + title: string; +} +const AZURE_ICONS: AzureIcon[] = [ + { aliases: ["front door", "front doors"], path: "networking/Front_Doors.svg", title: "Azure Front Door" }, + { aliases: ["api management", "apim"], path: "app_services/API_Management_Services.svg", title: "Azure API Management" }, + { aliases: ["cosmos", "cosmos db"], path: "databases/Azure_Cosmos_DB.svg", title: "Azure Cosmos DB" }, + { aliases: ["managed identity", "managed identities"], path: "identity/Managed_Identities.svg", title: "Azure Managed Identity" }, + { aliases: ["azure monitor", "monitor"], path: "management_governance/Monitor.svg", title: "Azure Monitor" }, + { aliases: ["application insights", "app insights"], path: "devops/Application_Insights.svg", title: "Azure Application Insights" }, +]; + +/** Build the portable Azure image-style for a lib path (appendix template). */ +export function azureImageStyle(path: string): string { + return `sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#5E9BD9;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;image;aspect=fixed;image=img/lib/azure2/${path};`; +} + +// --- index loading (lazy, cached) ------------------------------------------ + +let _index: IndexRecord[] | null = null; + +/** Path to the bundled gzipped index, resolved relative to the built module. */ +function indexPath(): URL { + // build/lib/drawio-shapes.js -> ../../data/… -> packages/mcp/data/… + return new URL("../../data/drawio-shape-index.json.gz", import.meta.url); +} + +/** Load + decompress + parse the bundled index once, then cache it. */ +export function loadShapeIndex(): IndexRecord[] { + if (_index) return _index; + const gz = readFileSync(indexPath()); + const json = gunzipSync(gz).toString("utf-8"); + const arr = JSON.parse(json) as IndexRecord[]; + _index = arr; + return arr; +} + +/** Derive an AWS category from a service-level icon's fillColor, if present. */ +function categoryOf(style: string): string | undefined { + const m = /fillColor=(#[0-9a-fA-F]{6})/.exec(style); + if (!m) return undefined; + return FILL_TO_CATEGORY[m[1].toLowerCase()]; +} + +function toResult(r: IndexRecord): ShapeResult { + return { + style: r.style, + w: r.w, + h: r.h, + title: r.title, + type: r.type, + category: categoryOf(r.style), + }; +} + +/** Find the best index record whose style carries `resIcon=`. */ +function findByResIcon(idx: IndexRecord[], name: string): IndexRecord | null { + const needle = `resIcon=mxgraph.aws4.${name}`; + // Prefer the service-level resourceIcon form; fall back to any style match. + let fallback: IndexRecord | null = null; + for (const r of idx) { + if (r.style.includes(needle) && r.style.includes("resourceIcon")) return r; + if (!fallback && r.style.includes(needle)) fallback = r; + } + return fallback; +} + +/** + * Score a record against a lowercased query. Higher is better; 0 = no match. + * Exact title match ranks highest, then title substring, tag word, then a loose + * style/tag substring. This is a cheap substring+token scorer, not a real fuzzy + * matcher, which is plenty for the "give me the lambda icon" use case. + */ +function score(r: IndexRecord, q: string): number { + const title = r.title.toLowerCase(); + const tags = r.tags.toLowerCase(); + const style = r.style.toLowerCase(); + let s = title === q ? 100 : 0; + if (title !== q && title.includes(q)) s += 40 - Math.min(20, title.length - q.length); + const words = q.split(/\s+/).filter(Boolean); + for (const w of words) { + if (title.includes(w)) s += 12; + if (new RegExp(`(^|\\W)${escapeRe(w)}(\\W|$)`).test(tags)) s += 8; + else if (tags.includes(w)) s += 4; + if (style.includes(w)) s += 2; + } + // Prefer the current AWS icon generation (aws4) over the deprecated aws3 + // stencils, which are the older visual style and often not what's wanted. + if (s > 0) { + if (style.includes("mxgraph.aws4")) s += 6; + else if (style.includes("mxgraph.aws3")) s -= 12; + } + return s; +} + +function escapeRe(s: string): string { + return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} + +export interface SearchShapesOptions { + category?: string; + limit?: number; +} + +/** + * Search the catalog. Applies the curated overlay first (blocklist replacement, + * AWS rebrand, AWS group stencils, Azure image-style), then substring/tag/fuzzy + * search over the bundled ~10 446-shape index. Returns up to `limit` results + * (default 12) with exact style-strings and default sizes. + */ +export function searchShapes( + query: string, + opts: SearchShapesOptions = {}, +): ShapeResult[] { + const limit = Math.max(1, Math.min(50, opts.limit ?? 12)); + const q = query.trim().toLowerCase(); + if (q === "") return []; + const idx = loadShapeIndex(); + const out: ShapeResult[] = []; + const seen = new Set(); + const push = (r: ShapeResult) => { + if (seen.has(r.style)) return; + seen.add(r.style); + out.push(r); + }; + + // 1. BLOCKLIST: a query naming a broken stencil returns the replacement. + for (const b of AWS_BLOCKLIST) { + if (q.includes(b.bad) || b.bad.includes(q.replace(/\s+/g, "_"))) { + const rec = findByResIcon(idx, b.good); + if (rec) push({ ...toResult(rec), note: b.note }); + } + } + + // 2. AWS rebrandings: surface the correct resIcon with the rename note. + for (const rb of AWS_REBRANDS) { + if (rb.aliases.some((a) => q === a || q.includes(a) || a.includes(q))) { + const rec = findByResIcon(idx, rb.resIcon); + if (rec) { + push({ ...toResult(rec), category: rec ? categoryOf(rec.style) ?? rb.category : rb.category, note: rb.note }); + } else { + push({ + style: awsServiceStyle(rb.resIcon, rb.category), + w: 78, + h: 78, + title: rb.resIcon, + type: "vertex", + category: rb.category, + note: rb.note, + }); + } + } + } + + // 3. Azure image-style icons. + for (const az of AZURE_ICONS) { + if (az.aliases.some((a) => q.includes(a) || a.includes(q))) { + push({ + style: azureImageStyle(az.path), + w: 68, + h: 68, + title: az.title, + type: "vertex", + category: "Azure", + note: "Azure: portable image-style (shape=mxgraph.azure2.* does not render in every host).", + }); + } + } + + // 4. AWS group/container stencils. + if (/\b(group|container|boundary|vpc|subnet|cloud|account)\b/.test(q)) { + for (const g of AWS_GROUP_STENCILS) { + if (g.title.toLowerCase().includes(q) || q.split(/\s+/).some((w) => g.title.toLowerCase().includes(w))) { + push(g); + } + } + } + + // 5. General index search (substring + tags + loose fuzzy). + const catFilter = opts.category?.toLowerCase(); + const scored: { r: IndexRecord; s: number }[] = []; + for (const r of idx) { + const s = score(r, q); + if (s <= 0) continue; + if (catFilter) { + const cat = categoryOf(r.style)?.toLowerCase(); + const inStyle = r.style.toLowerCase().includes(catFilter); + if (cat !== catFilter && !inStyle) continue; + } + scored.push({ r, s }); + } + scored.sort((a, b) => b.s - a.s || a.r.title.length - b.r.title.length); + for (const { r } of scored) { + if (out.length >= limit) break; + push(toResult(r)); + } + + return out.slice(0, limit); +} diff --git a/packages/mcp/src/lib/drawio-xml.ts b/packages/mcp/src/lib/drawio-xml.ts index 56f1b840..feb9df50 100644 --- a/packages/mcp/src/lib/drawio-xml.ts +++ b/packages/mcp/src/lib/drawio-xml.ts @@ -461,6 +461,308 @@ export function absolutePos( return { x, y }; } +// --- quality warnings (geometry, non-blocking) ----------------------------- +// +// These are computed purely from geometry — NO rendering — and are returned as +// WARNINGS (never errors): they do not block the write, they nudge the model to +// self-correct ("fix the warnings and retry, max 2 iterations"). They replace +// the vision-self-check a render backend would have done. + +interface Rect { + x: number; + y: number; + w: number; + h: number; +} + +/** Absolute rect of a vertex (following the container chain), or null. */ +function rectOf(cell: DrawioCell, byId: Map): Rect | null { + if (!cell.vertex || !cell.geometry.hasGeometry) return null; + const g = cell.geometry; + if (g.width == null || g.height == null) return null; + const { x, y } = absolutePos(cell, byId); + return { x, y, w: g.width, h: g.height }; +} + +/** True if `ancestorId` is somewhere up `cell`'s parent chain. */ +function isAncestor( + ancestorId: string, + cell: DrawioCell, + byId: Map, +): boolean { + const seen = new Set([cell.id]); + let p = cell.parent; + while (p && !seen.has(p)) { + if (p === ancestorId) return true; + seen.add(p); + p = byId.get(p)?.parent; + } + return false; +} + +/** Strict interior overlap of two rects (touching edges do NOT count). */ +function rectsOverlap(a: Rect, b: Rect): boolean { + return a.x < b.x + b.w && b.x < a.x + a.w && a.y < b.y + b.h && b.y < a.y + a.h; +} + +function center(r: Rect): { x: number; y: number } { + return { x: r.x + r.w / 2, y: r.y + r.h / 2 }; +} + +/** + * Liang-Barsky: does segment p->q pass through the INTERIOR of rect r? Used to + * detect an edge crossing a shape that is not one of its endpoints. + */ +function segCrossesRect( + a: { x: number; y: number }, + b: { x: number; y: number }, + r: Rect, +): boolean { + const dx = b.x - a.x; + const dy = b.y - a.y; + // Canonical Liang-Barsky: for each of the 4 slabs, p*t <= q. + const p = [-dx, dx, -dy, dy]; + const q = [a.x - r.x, r.x + r.w - a.x, a.y - r.y, r.y + r.h - a.y]; + let t0 = 0; + let t1 = 1; + for (let i = 0; i < 4; i++) { + if (p[i] === 0) { + if (q[i] < 0) return false; // parallel to this slab AND outside it + continue; + } + const t = q[i] / p[i]; + if (p[i] < 0) { + if (t > t1) return false; + if (t > t0) t0 = t; + } else { + if (t < t0) return false; + if (t < t1) t1 = t; + } + } + return t1 > t0; // strictly non-degenerate overlap with the rect interior +} + +function cross( + ox: number, + oy: number, + ax: number, + ay: number, + bx: number, + by: number, +): number { + return (ax - ox) * (by - oy) - (ay - oy) * (bx - ox); +} + +/** Collinear + overlapping test for two straight segments (edge-on-edge). */ +function segmentsOverlap( + a1: { x: number; y: number }, + a2: { x: number; y: number }, + b1: { x: number; y: number }, + b2: { x: number; y: number }, +): boolean { + const EPS = 1; + // b1 and b2 must be (near-)collinear with segment a. + if ( + Math.abs(cross(a1.x, a1.y, a2.x, a2.y, b1.x, b1.y)) > EPS * dist(a1, a2) || + Math.abs(cross(a1.x, a1.y, a2.x, a2.y, b2.x, b2.y)) > EPS * dist(a1, a2) + ) { + return false; + } + // Project all four points onto the dominant axis and test 1-D overlap length. + const horizontal = Math.abs(a2.x - a1.x) >= Math.abs(a2.y - a1.y); + const pa = horizontal ? [a1.x, a2.x] : [a1.y, a2.y]; + const pb = horizontal ? [b1.x, b2.x] : [b1.y, b2.y]; + const loA = Math.min(pa[0], pa[1]); + const hiA = Math.max(pa[0], pa[1]); + const loB = Math.min(pb[0], pb[1]); + const hiB = Math.max(pb[0], pb[1]); + const overlap = Math.min(hiA, hiB) - Math.max(loA, loB); + return overlap > 5; // >5px of shared collinear run +} + +function dist( + a: { x: number; y: number }, + b: { x: number; y: number }, +): number { + return Math.hypot(a.x - b.x, a.y - b.y) || 1; +} + +/** Approximate rendered text width (px) of a cell value at a font size. */ +function estimateLabelWidth(value: string, fontSize: number): number { + // Decode explicit line breaks, strip tags/entities, take the longest line. + const lines = value + .replace(/ /gi, "\n") + .replace(//gi, "\n") + .replace(/<[^>]+>/g, "") + .replace(/&[a-z]+;/gi, "x") + .split("\n"); + let longest = 0; + for (const l of lines) longest = Math.max(longest, l.trim().length); + // ~0.6em per glyph is a decent average for proportional fonts. + return longest * fontSize * 0.6; +} + +/** Page size declared on the model root, defaulting to Letter (850x1100). */ +function parsePageSize(modelXml: string): { w: number; h: number } { + const w = /pageWidth="(\d+)"/.exec(modelXml); + const h = /pageHeight="(\d+)"/.exec(modelXml); + return { + w: w ? Number(w[1]) : 850, + h: h ? Number(h[1]) : 1100, + }; +} + +/** Minimum required gap between adjacent shapes (appendix heuristic). */ +export const MIN_SHAPE_GAP = 150; + +/** + * Compute the geometry-derived quality warnings for a parsed model. Each is a + * `[rule] message` string. Pure — no rendering, no I/O. + */ +export function computeQualityWarnings( + cells: DrawioCell[], + modelXml?: string, +): string[] { + const warnings: string[] = []; + const byId = new Map(cells.map((c) => [c.id, c])); + const verts = cells.filter((c) => c.vertex && c.id !== "0" && c.id !== "1"); + const isContainer = (id: string) => + verts.some((v) => v.parent === id); + const rects = new Map(); + for (const v of verts) { + const r = rectOf(v, byId); + if (r) rects.set(v.id, r); + } + + // 1. Shape bbox overlap (excluding a container overlapping its own child). + for (let i = 0; i < verts.length; i++) { + for (let j = i + 1; j < verts.length; j++) { + const a = verts[i]; + const b = verts[j]; + const ra = rects.get(a.id); + const rb = rects.get(b.id); + if (!ra || !rb) continue; + if (isAncestor(a.id, b, byId) || isAncestor(b.id, a, byId)) continue; + if (rectsOverlap(ra, rb)) { + warnings.push( + `[shape-overlap] shapes "${a.id}" and "${b.id}" overlap; separate them (>=${MIN_SHAPE_GAP}px apart) or use layout:"elk"`, + ); + } + } + } + + // 2. Edge passing through a non-endpoint LEAF shape's bbox. + const edges = cells.filter((c) => c.edge); + for (const e of edges) { + if (!e.source || !e.target) continue; + const rs = rects.get(e.source); + const rt = rects.get(e.target); + if (!rs || !rt) continue; + const p = center(rs); + const q = center(rt); + for (const v of verts) { + if (v.id === e.source || v.id === e.target) continue; + if (isContainer(v.id)) continue; // an edge legitimately crosses container frames + const rv = rects.get(v.id); + if (!rv) continue; + // shrink to avoid flagging a graze at a shared layer boundary + const shrunk: Rect = { x: rv.x + 6, y: rv.y + 6, w: rv.w - 12, h: rv.h - 12 }; + if (shrunk.w <= 0 || shrunk.h <= 0) continue; + if (segCrossesRect(p, q, shrunk)) { + warnings.push( + `[edge-through-shape] edge "${e.id}" passes through shape "${v.id}" (not its source/target); add exitX/exitY/entryX/entryY or a waypoint`, + ); + break; + } + } + } + + // 3. Edge-on-edge overlap (parallel duplicates or collinear shared runs). + const edgeSegs: { id: string; a: any; b: any; key: string }[] = []; + for (const e of edges) { + if (!e.source || !e.target) continue; + const rs = rects.get(e.source); + const rt = rects.get(e.target); + if (!rs || !rt) continue; + const key = [e.source, e.target].sort().join("::"); + edgeSegs.push({ id: e.id, a: center(rs), b: center(rt), key }); + } + for (let i = 0; i < edgeSegs.length; i++) { + for (let j = i + 1; j < edgeSegs.length; j++) { + const ea = edgeSegs[i]; + const eb = edgeSegs[j]; + const dup = ea.key === eb.key; + if (dup || segmentsOverlap(ea.a, ea.b, eb.a, eb.b)) { + warnings.push( + `[edge-overlap] edges "${ea.id}" and "${eb.id}" lie on top of each other; offset one (distinct exit/entry points) or reroute`, + ); + } + } + } + + // 4. Adjacent SIBLING leaf shapes closer than MIN_SHAPE_GAP. + for (let i = 0; i < verts.length; i++) { + for (let j = i + 1; j < verts.length; j++) { + const a = verts[i]; + const b = verts[j]; + if ((a.parent ?? "") !== (b.parent ?? "")) continue; + if (isContainer(a.id) || isContainer(b.id)) continue; + const ra = rects.get(a.id); + const rb = rects.get(b.id); + if (!ra || !rb || rectsOverlap(ra, rb)) continue; + const yOverlap = ra.y < rb.y + rb.h && rb.y < ra.y + ra.h; + const xOverlap = ra.x < rb.x + rb.w && rb.x < ra.x + ra.w; + let gap = Infinity; + if (yOverlap) { + gap = Math.min( + gap, + ra.x >= rb.x ? ra.x - (rb.x + rb.w) : rb.x - (ra.x + ra.w), + ); + } + if (xOverlap) { + gap = Math.min( + gap, + ra.y >= rb.y ? ra.y - (rb.y + rb.h) : rb.y - (ra.y + ra.h), + ); + } + if (gap > 0 && gap < MIN_SHAPE_GAP) { + warnings.push( + `[gap-too-small] shapes "${a.id}" and "${b.id}" are ${Math.round(gap)}px apart (<${MIN_SHAPE_GAP}px); increase spacing`, + ); + } + } + } + + // 5. Label visibly wider than its shape (skip labels drawn OUTSIDE the shape). + for (const v of verts) { + if (!v.value || isContainer(v.id)) continue; + if (v.styleMap.verticalLabelPosition || v.styleMap.labelPosition) continue; + const r = rects.get(v.id); + if (!r) continue; + const fontSize = Number(v.styleMap.fontSize) || 12; + const est = estimateLabelWidth(v.value, fontSize); + if (est > r.w * 1.15) { + warnings.push( + `[label-overflow] label of "${v.id}" (~${Math.round(est)}px) is wider than its shape (${r.w}px); widen it, shorten the text, or wrap with `, + ); + } + } + + // 6. Negative / off-page (top-left) coordinates. + const page = parsePageSize(modelXml ?? ""); + for (const v of verts) { + const r = rects.get(v.id); + if (!r) continue; + if (r.x < 0 || r.y < 0) { + warnings.push( + `[out-of-bounds] shape "${v.id}" has negative coordinates (${Math.round(r.x)},${Math.round(r.y)}); move it into the positive quadrant (page ${page.w}x${page.h})`, + ); + } + } + + return warnings; +} + // --- linter ---------------------------------------------------------------- /** @@ -755,12 +1057,15 @@ export function prepareModel(inputXml: string): PreparedModel { const modelXml = normalizeXml(rawModel); const bbox = computeBBox(cells); const cellCount = cells.filter((c) => c.id !== "0" && c.id !== "1").length; + // Geometry quality warnings (non-blocking) are appended to any structural + // warnings from the linter. The model surfaces these and can self-correct. + const quality = computeQualityWarnings(cells, modelXml); return { modelXml, cells, bbox, cellCount, - warnings, + warnings: [...warnings, ...quality], hash: mxHash(modelXml), }; } diff --git a/packages/mcp/src/server-instructions.ts b/packages/mcp/src/server-instructions.ts index eda032ed..704dfa3b 100644 --- a/packages/mcp/src/server-instructions.ts +++ b/packages/mcp/src/server-instructions.ts @@ -41,7 +41,7 @@ import { SHARED_TOOL_SPECS, SharedToolSpec } from "./tool-specs.js"; export const ROUTING_PROSE = "Docmost editing guide — choose the tool by intent. The at the end lists every tool with a one-line purpose; the notes below are the routing hints for WHEN to reach for each.\n" + "READ: find a page -> search (workspace-wide full-text); list -> list_pages / list_spaces. Locate blocks and their ids CHEAPLY -> get_outline (compact top-level map; start here, not get_page_json). One block's subtree -> get_node (by attrs.id, or \"#\" for tables, which carry no id). Find every occurrence of a string/regex ON a page (and where each is) -> search_in_page, NOT block-by-block get_node — it returns each hit's node ref + block index + context for a targeted comment. Whole page -> get_page (Markdown, lossy; inline tags are comment anchors — markup, not text) or get_page_json (lossless ProseMirror with block ids). Hand a huge page (with images) to an external consumer without pulling it through the model context -> stash_page (returns a short-lived anonymous URL).\n" + - "EDIT: fix wording/typos/numbers -> edit_page_text (find/replace inside blocks, no node id needed). Change ONE block (paragraph/heading/callout/etc.) structurally -> patch_node (by attrs.id from get_outline). Add a block -> insert_node (before/after a block by attrs.id or by anchor text, or append). Remove a block -> delete_node (by attrs.id). Tables -> table_get / table_update_cell / table_insert_row / table_delete_row (address by \"#\" from get_outline; table nodes have no attrs.id). Images -> insert_image (add from a web URL) / replace_image (swap an existing image). Draw.io diagrams -> drawio_create (create from mxGraph XML and insert), drawio_get (read a diagram as mxGraph XML + a hash), drawio_update (replace a diagram; pass the hash from drawio_get as baseHash for optimistic locking). Footnotes -> insert_footnote. Bulk/structural rewrite -> update_page_json (full ProseMirror replace; prefer the granular tools above to avoid resending the whole ~100KB+ document). Complex/scripted rewrite (multiple coordinated edits, renumbering) -> docmost_transform: write a JS `(doc, ctx) => doc` transform, preview the diff with dryRun (default), then apply with dryRun:false; ctx.helpers includes commentsToFootnotes for turning inline comments into numbered footnotes.\n" + + "EDIT: fix wording/typos/numbers -> edit_page_text (find/replace inside blocks, no node id needed). Change ONE block (paragraph/heading/callout/etc.) structurally -> patch_node (by attrs.id from get_outline). Add a block -> insert_node (before/after a block by attrs.id or by anchor text, or append). Remove a block -> delete_node (by attrs.id). Tables -> table_get / table_update_cell / table_insert_row / table_delete_row (address by \"#\" from get_outline; table nodes have no attrs.id). Images -> insert_image (add from a web URL) / replace_image (swap an existing image). Draw.io diagrams -> drawio_create (create from mxGraph XML and insert), drawio_get (read a diagram as mxGraph XML + a hash), drawio_update (replace a diagram; pass the hash from drawio_get as baseHash for optimistic locking); before authoring a diagram, drawio_shapes (look up verified stencil style-strings so a shape name never renders as an empty box) and drawio_guide (on-demand authoring reference: skeleton/layout/containers/icons-aws/icons-azure), and pass layout:\"elk\" to drawio_create/drawio_update to auto-place nodes. Footnotes -> insert_footnote. Bulk/structural rewrite -> update_page_json (full ProseMirror replace; prefer the granular tools above to avoid resending the whole ~100KB+ document). Complex/scripted rewrite (multiple coordinated edits, renumbering) -> docmost_transform: write a JS `(doc, ctx) => doc` transform, preview the diff with dryRun (default), then apply with dryRun:false; ctx.helpers includes commentsToFootnotes for turning inline comments into numbered footnotes.\n" + "PAGES: new -> create_page (Markdown). Rename (title only) -> rename_page. Move -> move_page. Delete -> delete_page (SOFT delete — the page goes to trash and is restorable; nothing is permanent). Copy/replace a page's whole content from another page (server-side, no document through the model) -> copy_page_content. Sharing -> share_page / unshare_page / list_shares; share_page makes the page PUBLICLY accessible — do it only when explicitly asked.\n" + "COMMENTS: create_comment is always inline and requires an EXACT selection — contiguous text from a single block, <=250 chars (fails rather than leaving an unanchored comment); reply to a thread via parentCommentId. Propose a concrete text fix for one-click human approval -> create_comment with suggestedText (the exact plain-text replacement for the selection; the selection must then be UNIQUE in the page — extend it with context if needed); prefer this over editing directly when the change is subjective or needs the author's sign-off. Manage -> list_comments, update_comment, resolve_comment (resolve/reopen, reversible — prefer over delete to close), delete_comment, check_new_comments.\n" + "HISTORY: review what changed -> diff_page_versions (a historyId vs current, or two versions). List saved versions -> list_page_history. Undo a bad edit -> restore_page_version (writes a past version back as current; itself revertible). Lossless markdown round-trip (download, edit, re-upload, incl. comment anchors) -> export_page_markdown / import_page_markdown."; @@ -106,6 +106,8 @@ const TOOL_FAMILY: Record = { drawio_get: "EDIT", drawio_create: "EDIT", drawio_update: "EDIT", + drawio_shapes: "EDIT", + drawio_guide: "EDIT", docmost_transform: "EDIT", // PAGES create_page: "PAGES", diff --git a/packages/mcp/src/tool-specs.ts b/packages/mcp/src/tool-specs.ts index f0702f7a..f97ceae4 100644 --- a/packages/mcp/src/tool-specs.ts +++ b/packages/mcp/src/tool-specs.ts @@ -37,6 +37,13 @@ type ZodLike = any; // putting it in a shared execute here keeps that single normalization in one // place instead of hand-mirrored per host. Pure — safe across the zod boundary. import { parseNodeArg } from '@docmost/prosemirror-markdown'; +// PURE draw.io helpers (issue #424): drawio_shapes / drawio_guide are NOT client +// methods — they read a bundled shape catalog / authoring guide with no network. +// Imported here (same-package runtime import, precedent: parseNodeArg above) so +// their canonical `execute` lives in the registry like every other shared tool +// and BOTH hosts wire them through the loop — no per-host inline duplication. +import { searchShapes } from './lib/drawio-shapes.js'; +import { getGuideSection } from './lib/drawio-guide.js'; // Type-only import (erased at compile) of the real client so `DocmostClientLike` // is DERIVED from it (issue #446), not hand-mirrored. The loosest correct client // surface both hosts satisfy: the in-app host passes its own DERIVED @@ -192,6 +199,29 @@ const mcpJson = (data: unknown) => ({ content: [{ type: 'text' as const, text: JSON.stringify(data, null, 2) }], }); +/** + * Compact HARD-RULES block injected into the drawio_create / drawio_update + * descriptions (issue #424 — the jgraph/drawio-mcp pattern of putting the + * must-follow rules right where the model reads them at call time). Deliberately + * terse; the long-form authoring guidance lives in drawio_guide. + */ +export const DRAWIO_HARD_RULES = + ' RULES: id="0" and id="1"(parent="0") sentinels are MANDATORY; each cell is ' + + 'vertex="1" XOR edge="1" (a container/group is neither); every edge carries a ' + + 'child ; ids are unique; NO XML ' + + 'comments; put html=1 in styles and XML-escape value (& -> &, < -> <); a ' + + "newline in a label is , never a literal \\n; containers are TRANSPARENT " + + "(fillColor=none;container=1;dropTarget=1;) with children set parent= " + + 'and RELATIVE coords, and an edge between different containers is parent="1"; set ' + + 'adaptiveColors="auto" on (free dark-theme adaptation for ' + + 'strokeColor/fillColor/fontColor="default"); do NOT guess shape=mxgraph.* names ' + + "(a wrong name renders as an empty box) — call drawio_shapes first; call " + + "drawio_guide(section) for authoring help. Pass layout:\"elk\" to let the server " + + "compute coordinates from your rough placement. The result carries geometry " + + "WARNINGS (overlaps, an edge through a shape, edge-on-edge, gaps <150px, a label " + + "wider than its shape, negative coords) — they do NOT block the write; fix them " + + "and retry, max 2 iterations."; + export const SHARED_TOOL_SPECS = { // --- no-argument read tools --- @@ -1619,7 +1649,7 @@ export const SHARED_TOOL_SPECS = { }), }, - // --- draw.io diagrams (issue #423, stage 1) --- + // --- draw.io diagrams (issue #423 stage 1, #424 stage 2) --- drawioGet: { mcpName: 'drawio_get', @@ -1673,7 +1703,8 @@ export const SHARED_TOOL_SPECS = { 'back into drawio_get / drawio_update for THIS document. It is positional, ' + 'so if you add or remove blocks before it, re-resolve via get_outline. The ' + 'diagram is editable in the draw.io editor and can be re-read with ' + - 'drawio_get.', + 'drawio_get.' + + DRAWIO_HARD_RULES, tier: 'deferred', catalogLine: 'drawioCreate — create a draw.io diagram from mxGraph XML and insert it.', @@ -1697,9 +1728,19 @@ export const SHARED_TOOL_SPECS = { .optional() .describe('Anchor text fragment (for before/after).'), title: z.string().optional().describe('Optional diagram title.'), + layout: z + .enum(['elk']) + .optional() + .describe( + 'Optional: "elk" runs an ELK layered auto-layout (honouring nested ' + + 'containers) and rewrites all coordinates — give rough placement and ' + + 'let the server compute pixels.', + ), }), // The flat schema fields are regrouped into the client's `where` object. - execute: (client, { pageId, xml, position, anchorNodeId, anchorText, title }) => + // `layout` is the 5th arg: dropping it silently disables ELK auto-layout + // (a reviewed #440 parity fix — MUST reach the client on both hosts). + execute: (client, { pageId, xml, position, anchorNodeId, anchorText, title, layout }) => client.drawioCreate( pageId as string, { @@ -1709,6 +1750,7 @@ export const SHARED_TOOL_SPECS = { }, xml as string, title as string | undefined, + layout as 'elk' | undefined, ), }, @@ -1722,7 +1764,8 @@ export const SHARED_TOOL_SPECS = { '(a human or another agent edited it) the hash mismatches and the update ' + 'is refused with a conflict error — re-read with drawio_get and retry. On ' + 'success it overwrites the diagram attachment and updates the node ' + - 'width/height. `node` is the drawio node attrs.id or "#".', + 'width/height. `node` is the drawio node attrs.id or "#".' + + DRAWIO_HARD_RULES, tier: 'deferred', catalogLine: 'drawioUpdate — replace a draw.io diagram (optimistic-locked by baseHash).', @@ -1742,13 +1785,100 @@ export const SHARED_TOOL_SPECS = { .string() .min(1) .describe('The meta.hash from the drawio_get this edit is based on.'), + layout: z + .enum(['elk']) + .optional() + .describe( + 'Optional: "elk" runs an ELK layered auto-layout and rewrites all ' + + 'coordinates before writing.', + ), }), - execute: (client, { pageId, node, xml, baseHash }) => + // `layout` is the 5th arg: forward layout:"elk" (a reviewed #440 parity fix) + // so both hosts run the ELK auto-layout before writing. + execute: (client, { pageId, node, xml, baseHash, layout }) => client.drawioUpdate( pageId as string, node as string, xml as string, baseHash as string, + layout as 'elk' | undefined, ), }, + + drawioShapes: { + mcpName: 'drawio_shapes', + inAppKey: 'drawioShapes', + description: + 'Look up VERIFIED draw.io stencil style-strings so you never guess a ' + + '`shape=mxgraph.*` name (a wrong name renders as an EMPTY BOX). Searches a ' + + 'bundled catalog of ~10 400 shapes (the jgraph/drawio-mcp index) by ' + + 'substring, tags and loose fuzzy match, plus a curated overlay for AWS ' + + 'icons: it returns the correct resIcon for rebranded services (OpenSearch ' + + '-> elasticsearch_service, MSK -> managed_streaming_for_kafka, VPC Peering ' + + '-> peering, IAM Identity Center -> single_sign_on) and maps known-broken ' + + 'stencils to working replacements (e.g. dynamodb_table -> dynamodb) with a ' + + 'note. Each hit is { style, w, h, title, type, category?, note? } — copy ' + + '`style` verbatim onto the cell and use w/h as the default size. Call this ' + + 'BEFORE drawio_create/drawio_update whenever you need a specific icon ' + + '(AWS/Azure/GCP/network/UML/flowchart).', + tier: 'deferred', + catalogLine: + 'drawioShapes — look up verified draw.io stencil style-strings (no empty boxes).', + buildShape: (z) => ({ + query: z + .string() + .min(1) + .describe('What to find, e.g. "lambda", "s3", "azure cosmos", "vpc group".'), + category: z + .string() + .optional() + .describe('Optional filter, e.g. an AWS category name ("Compute").'), + limit: z + .number() + .optional() + .describe('Max results (default 12, capped at 50).'), + }), + // PURE helper — searchShapes reads the bundled catalog, no client method and + // no network. The `client` arg is ignored. The raw `{ query, count, results }` + // is identical on both hosts (MCP wraps it as jsonContent via the loop, the + // in-app host returns it as-is), so a single canonical execute serves both — + // no per-host override needed. + execute: async (_client, { query, category, limit }) => { + const results = searchShapes(query as string, { + category: category as string | undefined, + limit: limit as number | undefined, + }); + return { query, count: results.length, results }; + }, + }, + + drawioGuide: { + mcpName: 'drawio_guide', + inAppKey: 'drawioGuide', + description: + 'Progressive-disclosure draw.io authoring reference. Call with a `section` ' + + 'to pull one focused, <=4KB chapter instead of bloating context: ' + + '"skeleton" (canonical mxGraph XML, sentinels, the accepted inputs, hard ' + + 'rules), "layout" (spacing heuristics, edge routing, the layout:"elk" ' + + 'option, the quality warnings), "containers" (transparent groups, relative ' + + 'child coords, cross-container edges, swimlanes), "icons-aws" (the ' + + 'service/resource icon patterns, category colors, rebrandings, blocklist), ' + + '"icons-azure" (portable image-style paths). Omit `section` to get the ' + + 'index of sections. Pair with drawio_shapes for exact stencil styles.', + tier: 'deferred', + catalogLine: + 'drawioGuide — on-demand draw.io authoring reference (skeleton/layout/containers/icons).', + buildShape: (z) => ({ + section: z + .enum(['skeleton', 'layout', 'containers', 'icons-aws', 'icons-azure']) + .optional() + .describe('Which section to read; omit for the section index.'), + }), + // PURE helper — getGuideSection returns a bundled authoring chapter, no client + // method and no network. The `client` arg is ignored. The raw guide object is + // identical on both hosts (MCP wraps it as jsonContent via the loop, the + // in-app host returns it as-is), so a single canonical execute serves both. + execute: async (_client, { section }) => + getGuideSection(section as string | undefined), + }, } satisfies Record; diff --git a/packages/mcp/test/unit/drawio-guide.test.mjs b/packages/mcp/test/unit/drawio-guide.test.mjs new file mode 100644 index 00000000..cc6dbf6e --- /dev/null +++ b/packages/mcp/test/unit/drawio-guide.test.mjs @@ -0,0 +1,51 @@ +// Unit tests for the drawio_guide progressive-disclosure reference (issue #424). +// Acceptance #2: every section is returned and each is <= ~4KB so pulling one +// does not bloat the model's context. +import { test } from "node:test"; +import assert from "node:assert/strict"; +import { + getGuideSection, + GUIDE_SECTIONS, +} from "../../build/lib/drawio-guide.js"; + +const MAX_BYTES = 4096; // "<= ~4KB" acceptance bound. + +test("every section is returned and is under ~4KB", () => { + assert.deepEqual(GUIDE_SECTIONS, [ + "skeleton", + "layout", + "containers", + "icons-aws", + "icons-azure", + ]); + for (const s of GUIDE_SECTIONS) { + const { section, content } = getGuideSection(s); + assert.equal(section, s); + assert.ok(content.length > 200, `${s}: suspiciously short`); + const bytes = Buffer.byteLength(content, "utf8"); + assert.ok(bytes <= MAX_BYTES, `${s}: ${bytes} bytes exceeds ${MAX_BYTES}`); + } +}); + +test("each section's content matches its topic", () => { + assert.match(getGuideSection("skeleton").content, /mxGraphModel/); + assert.match(getGuideSection("skeleton").content, /adaptiveColors="auto"/); + assert.match(getGuideSection("layout").content, /elk/i); + assert.match(getGuideSection("layout").content, /150px|<150/); + assert.match(getGuideSection("containers").content, /fillColor=none/); + assert.match(getGuideSection("icons-aws").content, /resourceIcon/); + assert.match(getGuideSection("icons-aws").content, /elasticsearch_service/); + assert.match(getGuideSection("icons-azure").content, /img\/lib\/azure2/); +}); + +test("omitting the section returns the index of sections", () => { + const idx = getGuideSection(); + assert.equal(idx.section, "index"); + for (const s of GUIDE_SECTIONS) assert.ok(idx.content.includes(s)); + assert.ok(Buffer.byteLength(idx.content, "utf8") <= MAX_BYTES); +}); + +test("an unknown section falls back to the index", () => { + const idx = getGuideSection("nonsense"); + assert.equal(idx.section, "index"); +}); diff --git a/packages/mcp/test/unit/drawio-layout.test.mjs b/packages/mcp/test/unit/drawio-layout.test.mjs new file mode 100644 index 00000000..e88f3c41 --- /dev/null +++ b/packages/mcp/test/unit/drawio-layout.test.mjs @@ -0,0 +1,88 @@ +// Unit tests for the ELK auto-layout (issue #424, part 4). Acceptance #3: a +// 10+ node graph with rough/overlapping coordinates, laid out with ELK, has no +// bbox overlaps and produces no quality warnings. +import { test } from "node:test"; +import assert from "node:assert/strict"; +import { applyElkLayout } from "../../build/lib/drawio-layout.js"; +import { prepareModel, parseCells } from "../../build/lib/drawio-xml.js"; + +/** Build a model where every vertex starts stacked at (10,10). */ +function stackedGraph(n, edges) { + let cells = ""; + for (let i = 2; i < 2 + n; i++) { + cells += + `` + + ``; + } + let ei = 0; + for (const [s, t] of edges) { + cells += + `` + + ``; + } + return ( + '' + + cells + + "" + ); +} + +test("acceptance #3: a 10-node graph with rough coords lays out with no warnings", async () => { + const edges = [ + [2, 3], [2, 4], [3, 5], [4, 5], [5, 6], + [6, 7], [6, 8], [7, 9], [8, 10], [9, 11], [10, 11], + ]; + const model = stackedGraph(10, edges); + + // Before: everything is stacked at (10,10) -> lots of overlap warnings. + const before = prepareModel(model); + assert.ok(before.warnings.length > 0, "the stacked input should warn"); + + const laid = await applyElkLayout(model); + const after = prepareModel(laid); + assert.equal( + after.warnings.length, + 0, + `ELK layout should clear all warnings, got: ${after.warnings.join(" | ")}`, + ); + // Same number of user cells survived the layout. + assert.equal(after.cellCount, before.cellCount); +}); + +test("ELK honours nested containers as compound nodes (no warnings, children stay nested)", async () => { + const model = + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ""; + const laid = await applyElkLayout(model); + const cells = parseCells(laid); + const byId = Object.fromEntries(cells.map((c) => [c.id, c])); + // Children keep their container parent; the container was sized to hold them. + assert.equal(byId.a.parent, "g"); + assert.equal(byId.b.parent, "g"); + assert.ok((byId.g.geometry.width ?? 0) >= 260, "container widened to fit children"); + const after = prepareModel(laid); + assert.equal(after.warnings.length, 0, after.warnings.join(" | ")); +}); + +test("edges and cell count are preserved by layout", async () => { + const model = stackedGraph(4, [[2, 3], [3, 4], [4, 5]]); + const laid = await applyElkLayout(model); + const cells = parseCells(laid); + assert.equal(cells.filter((c) => c.edge).length, 3); + assert.equal(cells.filter((c) => c.vertex).length, 4); +}); + +test("layout is best-effort: an empty/degenerate model is returned intact", async () => { + const model = + ''; + const laid = await applyElkLayout(model); + // No vertices -> unchanged, still lints clean. + const after = prepareModel(laid); + assert.equal(after.cellCount, 0); +}); diff --git a/packages/mcp/test/unit/drawio-quality-warnings.test.mjs b/packages/mcp/test/unit/drawio-quality-warnings.test.mjs new file mode 100644 index 00000000..e58e3a5a --- /dev/null +++ b/packages/mcp/test/unit/drawio-quality-warnings.test.mjs @@ -0,0 +1,101 @@ +// Unit tests for the geometry quality-warnings (issue #424, part 5). Acceptance +// #4: every warning has a positive AND a negative case, and warnings NEVER block +// the write (prepareModel returns them, it does not throw). +import { test } from "node:test"; +import assert from "node:assert/strict"; +import { prepareModel } from "../../build/lib/drawio-xml.js"; + +function model(cells) { + return ( + '' + + cells + + "" + ); +} +function warnings(cells) { + return prepareModel(model(cells)).warnings; +} +function has(ws, rule) { + return ws.some((w) => w.startsWith(`[${rule}]`)); +} +function v(id, x, y, w = 120, h = 60, value = "", style = "rounded=1;html=1;", parent = "1") { + return ( + `` + + `` + ); +} +function edge(id, s, t, parent = "1") { + return ( + `` + + `` + ); +} + +test("shape-overlap: positive and negative", () => { + assert.ok(has(warnings(v("a", 0, 0) + v("b", 50, 20)), "shape-overlap")); + assert.ok(!has(warnings(v("a", 0, 0) + v("b", 300, 0)), "shape-overlap")); +}); + +test("shape-overlap: a container over its own child does NOT warn", () => { + const cells = + '' + + v("a", 30, 40, 120, 60, "", "rounded=1;", "g"); + assert.ok(!has(warnings(cells), "shape-overlap")); +}); + +test("edge-through-shape: positive and negative", () => { + // A -> B passes straight through C sitting on the line. + const pos = + v("a", 0, 0, 60, 60) + v("c", 200, 0, 60, 60) + v("b", 400, 0, 60, 60) + edge("e", "a", "b"); + assert.ok(has(warnings(pos), "edge-through-shape")); + // C moved off the line -> no crossing. + const neg = + v("a", 0, 0, 60, 60) + v("c", 200, 300, 60, 60) + v("b", 400, 0, 60, 60) + edge("e", "a", "b"); + assert.ok(!has(warnings(neg), "edge-through-shape")); +}); + +test("edge-overlap: positive (duplicate) and negative", () => { + const pos = v("a", 0, 0) + v("b", 300, 0) + edge("e1", "a", "b") + edge("e2", "a", "b"); + assert.ok(has(warnings(pos), "edge-overlap")); + const neg = + v("a", 0, 0) + v("b", 300, 0) + v("c", 300, 300) + edge("e1", "a", "b") + edge("e2", "a", "c"); + assert.ok(!has(warnings(neg), "edge-overlap")); +}); + +test("gap-too-small: positive and negative", () => { + assert.ok(has(warnings(v("a", 0, 0) + v("b", 220, 0)), "gap-too-small")); // 100px gap + assert.ok(!has(warnings(v("a", 0, 0) + v("b", 300, 0)), "gap-too-small")); // 180px gap +}); + +test("label-overflow: positive and negative", () => { + const pos = v("a", 0, 0, 40, 60, "A very long label that does not fit"); + assert.ok(has(warnings(pos), "label-overflow")); + const neg = v("a", 0, 0, 300, 60, "Short"); + assert.ok(!has(warnings(neg), "label-overflow")); +}); + +test("label-overflow: a label drawn OUTSIDE the shape (AWS icon) does NOT warn", () => { + const cells = v( + "a", + 0, + 0, + 60, + 60, + "A very long service label below the icon", + "shape=mxgraph.aws4.resourceIcon;verticalLabelPosition=bottom;verticalAlign=top;html=1;", + ); + assert.ok(!has(warnings(cells), "label-overflow")); +}); + +test("out-of-bounds: positive (negative coords) and negative", () => { + assert.ok(has(warnings(v("a", -50, 10)), "out-of-bounds")); + assert.ok(!has(warnings(v("a", 10, 10)), "out-of-bounds")); +}); + +test("warnings never block the write (prepareModel returns, does not throw)", () => { + const messy = v("a", 0, 0) + v("b", 30, 20) + v("c", 40, 40); // heavy overlap + const prepared = prepareModel(model(messy)); + assert.ok(prepared.warnings.length > 0, "expected warnings"); + assert.ok(prepared.modelXml.includes("mxGraphModel"), "still produced a model"); + assert.equal(prepared.cellCount, 3); +}); diff --git a/packages/mcp/test/unit/drawio-shapes.test.mjs b/packages/mcp/test/unit/drawio-shapes.test.mjs new file mode 100644 index 00000000..1521a744 --- /dev/null +++ b/packages/mcp/test/unit/drawio-shapes.test.mjs @@ -0,0 +1,97 @@ +// Unit tests for the drawio_shapes verified-stencil catalog (issue #424). +// Covers acceptance #1: a "lambda" query returns a valid mxgraph.aws4 icon with +// the right service/resource pattern + sizes; a blocklisted stencil query +// returns its working replacement. +import { test } from "node:test"; +import assert from "node:assert/strict"; +import { + searchShapes, + awsServiceStyle, + azureImageStyle, + loadShapeIndex, + AWS_CATEGORY_FILL, +} from "../../build/lib/drawio-shapes.js"; + +test("the bundled index loads and is the real ~10k-shape catalog", () => { + const idx = loadShapeIndex(); + assert.ok(Array.isArray(idx)); + assert.ok(idx.length > 10000, `expected >10000 shapes, got ${idx.length}`); + // Record shape { style, w, h, title, tags, type }. + for (const k of ["style", "w", "h", "title", "tags", "type"]) { + assert.ok(k in idx[0], `record missing key ${k}`); + } +}); + +test('drawio_shapes("lambda") returns a valid mxgraph.aws4 service icon', () => { + const results = searchShapes("lambda", { limit: 5 }); + assert.ok(results.length > 0); + // Acceptance #1: a valid aws4 service-level icon (resourceIcon + resIcon) + // for lambda, with sensible default sizes, is present. + const svc = results.find( + (r) => + /shape=mxgraph\.aws4\.resourceIcon/.test(r.style) && + /resIcon=mxgraph\.aws4\.lambda(_function)?\b/.test(r.style), + ); + assert.ok(svc, `no aws4 lambda service icon in ${JSON.stringify(results.map((r) => r.style.slice(-40)))}`); + assert.ok(svc.w > 0 && svc.h > 0, "icon must carry default w/h"); + // The current-generation aws4 icon must outrank the deprecated aws3 one. + assert.match(results[0].style, /mxgraph\.aws4/); +}); + +test("a blocklisted stencil query returns its replacement + a note", () => { + const results = searchShapes("dynamodb_table", { limit: 3 }); + assert.ok(results.length > 0); + const rep = results[0]; + // dynamodb_table (empty box) -> dynamodb. + assert.match(rep.style, /resIcon=mxgraph\.aws4\.dynamodb\b/); + assert.ok(rep.note && /dynamodb_table/.test(rep.note), "note must explain the replacement"); + // The broken stencil name must NOT be returned as a usable style. + assert.ok( + !results.some((r) => /resIcon=mxgraph\.aws4\.dynamodb_table\b/.test(r.style)), + "the broken dynamodb_table stencil must not be returned", + ); +}); + +test("an AWS rebranding query returns the real (renamed) resIcon", () => { + const os = searchShapes("opensearch", { limit: 3 }); + assert.ok( + os.some((r) => /resIcon=mxgraph\.aws4\.elasticsearch_service\b/.test(r.style) && r.note), + "OpenSearch must map to elasticsearch_service with a note", + ); + const msk = searchShapes("msk", { limit: 3 }); + assert.ok( + msk.some((r) => /managed_streaming_for_kafka/.test(r.style)), + "MSK must map to managed_streaming_for_kafka", + ); +}); + +test("category filter narrows results", () => { + const all = searchShapes("database", { limit: 20 }); + const dbOnly = searchShapes("database", { category: "Database", limit: 20 }); + assert.ok(dbOnly.length <= all.length); +}); + +test("limit is honoured and capped", () => { + assert.equal(searchShapes("aws", { limit: 3 }).length, 3); + assert.ok(searchShapes("aws", { limit: 999 }).length <= 50); +}); + +test("empty query returns nothing", () => { + assert.deepEqual(searchShapes(" "), []); +}); + +test("style builders match the appendix templates", () => { + const s = awsServiceStyle("lambda", "Compute"); + assert.match(s, /strokeColor=#ffffff/); // mandatory for service-level + assert.match(s, new RegExp(`fillColor=${AWS_CATEGORY_FILL.Compute}`)); + assert.match(s, /shape=mxgraph\.aws4\.resourceIcon;resIcon=mxgraph\.aws4\.lambda$/); + const az = azureImageStyle("databases/Azure_Cosmos_DB.svg"); + assert.match(az, /image=img\/lib\/azure2\/databases\/Azure_Cosmos_DB\.svg/); +}); + +test("azure and group queries surface the curated overlay", () => { + const cosmos = searchShapes("cosmos", { limit: 5 }); + assert.ok(cosmos.some((r) => /azure2\/databases\/Azure_Cosmos_DB\.svg/.test(r.style))); + const vpc = searchShapes("vpc group", { limit: 5 }); + assert.ok(vpc.some((r) => /grIcon=mxgraph\.aws4\.group_vpc2/.test(r.style))); +}); diff --git a/packages/mcp/test/unit/drawio-stage2-registration.test.mjs b/packages/mcp/test/unit/drawio-stage2-registration.test.mjs new file mode 100644 index 00000000..37b40a4c --- /dev/null +++ b/packages/mcp/test/unit/drawio-stage2-registration.test.mjs @@ -0,0 +1,62 @@ +// Drift guards for the stage-2 drawio tools (issue #424): the new tools must be +// wired into the shared registry AND routed in SERVER_INSTRUCTIONS, and the +// hard-rules block must be injected into the create/update descriptions. These +// complement the generic server-instructions.test.mjs / tool-specs.test.mjs. +import { test } from "node:test"; +import assert from "node:assert/strict"; +import { SERVER_INSTRUCTIONS } from "../../build/index.js"; +import { SHARED_TOOL_SPECS } from "../../build/tool-specs.js"; + +test("drawio_shapes and drawio_guide are in the shared registry", () => { + assert.equal(SHARED_TOOL_SPECS.drawioShapes.mcpName, "drawio_shapes"); + assert.equal(SHARED_TOOL_SPECS.drawioGuide.mcpName, "drawio_guide"); + // Deferred tier, matching the stage-1 drawio tools. + assert.equal(SHARED_TOOL_SPECS.drawioShapes.tier, "deferred"); + assert.equal(SHARED_TOOL_SPECS.drawioGuide.tier, "deferred"); +}); + +test("the new tools are routed in SERVER_INSTRUCTIONS", () => { + for (const name of ["drawio_shapes", "drawio_guide"]) { + assert.match(SERVER_INSTRUCTIONS, new RegExp(`\\b${name}\\b`), `${name} missing from guide`); + } +}); + +test("the hard-rules block is injected into create/update descriptions", () => { + for (const key of ["drawioCreate", "drawioUpdate"]) { + const d = SHARED_TOOL_SPECS[key].description; + assert.match(d, /sentinels are MANDATORY/); + assert.match(d, /vertex="1" XOR edge="1"/); + assert.match(d, /call drawio_shapes first/); + assert.match(d, /adaptiveColors="auto"/); + assert.match(d, / /); + } +}); + +test("create/update expose the layout:\"elk\" parameter", () => { + const { z } = { z: makeZodStub() }; + for (const key of ["drawioCreate", "drawioUpdate"]) { + const shape = SHARED_TOOL_SPECS[key].buildShape(z); + assert.ok("layout" in shape, `${key} missing layout param`); + } +}); + +// Tiny zod stub: buildShape only calls z.string/enum/number + chained +// .min/.optional/.describe, all of which return `this`. +function makeZodStub() { + const chain = new Proxy( + {}, + { + get: (_t, prop) => { + if (prop === "parse") return () => ({}); + return () => chain; + }, + }, + ); + return { + string: () => chain, + number: () => chain, + enum: () => chain, + array: () => chain, + object: () => chain, + }; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cbe77728..1ab1c069 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1044,6 +1044,9 @@ importers: axios: specifier: 1.16.0 version: 1.16.0 + elkjs: + specifier: ^0.11.1 + version: 0.11.1 form-data: specifier: ^4.0.0 version: 4.0.5 @@ -6876,6 +6879,9 @@ packages: electron-to-chromium@1.5.286: resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} + elkjs@0.11.1: + resolution: {integrity: sha512-zxxR9k+rx5ktMwT/FwyLdPCrq7xN6e4VGGHH8hA01vVYKjTFik7nHOxBnAYtrgYUB1RpAiLvA1/U2YraWxyKKg==} + emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} @@ -17642,6 +17648,8 @@ snapshots: electron-to-chromium@1.5.286: {} + elkjs@0.11.1: {} + emittery@0.13.1: {} emoji-regex@8.0.0: {} -- 2.52.0 From eddc3b5c334789d52ac3c94d47b354978e53acbb Mon Sep 17 00:00:00 2001 From: agent_coder Date: Fri, 10 Jul 2026 05:28:44 +0300 Subject: [PATCH 2/5] =?UTF-8?q?feat(ai-chat):=20=D0=BF=D1=80=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=BE=D1=81=D0=B8=D1=82=D1=8C=20drawio=5Fshapes/drawio?= =?UTF-8?q?=5Fguide=20in-app=20=E2=80=94=20=D0=B2=D0=BE=D1=81=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2=D0=B8=D1=82=D1=8C=20SHARED=5FTOOL=5FSP?= =?UTF-8?q?ECS-=D0=BF=D0=B0=D1=80=D0=B8=D1=82=D0=B5=D1=82=20(#424)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Стадия-1 (#434) уже была довяжена in-app в develop (f46d89ea, agent_vscode) для CRUD-тулов; два новых чистых read-only хелпера стадии-2 остались незаброшенными → contract-parity спека падала 6 ассертами (по 3 на drawio_shapes/drawio_guide). В отличие от CRUD-тулов это ЧИСТЫЕ функции без сетевого вызова, поэтому НЕ client-методы: - реэкспорт searchShapes / getGuideSection (+ тип SearchShapesOptions) из entry пакета @docmost/mcp; loadDocmostMcp() пробрасывает их так же, как sharedToolSpecs (типы SearchShapesFn/GetGuideSectionFn); - две записи sharedTool(...) в forUser() после drawioUpdate: drawioShapes повторяет серверный вызов searchShapes(query,{category,limit}) и форму { query, count, results }; drawioGuide — getGuideSection(section) (omit section -> index); голый объект без jsonContent-envelope, как у соседних in-app хендлеров; - DocmostClientLike и HOST_CONTRACT_METHODS-вайтлист НЕ тронуты (это не методы клиента); - три тест-мока (contract/service/tool-tiers) получили type-only no-op заглушки под расширенный тип loadDocmostMcp() — тела инструментов в этих тестах не исполняются, contract-спека реально гоняет настоящий SHARED_TOOL_SPECS. Внутреннее ревью обвязки: APPROVE, 0 находок. shared-tool-specs.contract: 211/211 (было 6 падений); client-host-contract drift-guard 3/0; tsc EXIT 0. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../tools/ai-chat-tools.service.spec.ts | 8 ++++++ .../ai-chat/tools/ai-chat-tools.service.ts | 13 +++++++--- .../ai-chat/tools/docmost-client.loader.ts | 26 +++++++++++++++++++ .../tools/shared-tool-specs.contract.spec.ts | 10 +++++++ .../src/core/ai-chat/tools/tool-tiers.spec.ts | 7 +++++ packages/mcp/src/index.ts | 7 +++++ 6 files changed, 68 insertions(+), 3 deletions(-) diff --git a/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.spec.ts b/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.spec.ts index a2bd5be4..d454dad5 100644 --- a/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.spec.ts +++ b/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.spec.ts @@ -24,6 +24,14 @@ import { SHARED_TOOL_SPECS } from '../../../../../../packages/mcp/src/tool-specs const mockLoaded = (DocmostClient: loader.DocmostClientCtor) => ({ DocmostClient, sharedToolSpecs: SHARED_TOOL_SPECS as Record, + // Pure no-network draw.io helpers (#424). Type-correct stubs: these tests + // never execute the drawio_shapes / drawio_guide tool bodies. + searchShapes: (() => []) as unknown as loader.SearchShapesFn, + getGuideSection: (() => ({ + section: 'index', + content: '', + sections: [], + })) as unknown as loader.GetGuideSectionFn, }); /** diff --git a/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.ts b/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.ts index c40bdbfd..bc22515c 100644 --- a/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.ts +++ b/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.ts @@ -111,10 +111,12 @@ function __assertClientCallContract(client: DocmostClientLike): void { afterText: s, }); void client.replaceImage(s, s, s, { align, alt: s }); - // --- draw.io diagrams (#423) --- + // --- draw.io diagrams (#423 stage 1, #424 stage 2) --- + // The 5th `layout` arg (#424) is exercised so this parity assertion fails if the + // client signature drops it — it must reach the client from the shared execute. void client.drawioGet(s, s, 'xml'); - void client.drawioCreate(s, { position: 'append', anchorNodeId: s }, s, s); - void client.drawioUpdate(s, s, s, s); + void client.drawioCreate(s, { position: 'append', anchorNodeId: s }, s, s, 'elk'); + void client.drawioUpdate(s, s, s, s, 'elk'); // --- write (comment) --- void client.createComment(s, s, 'inline', s, s, s); void client.resolveComment(s, true); @@ -263,6 +265,11 @@ export class AiChatToolsService { // provenance tokens) and load the shared tool-spec registry. Client // construction is shared with the page-change detection path (#274) via // buildDocmostClient so both go over the exact same authenticated route. + // drawio_shapes / drawio_guide (#424) are NOT destructured here anymore: they + // are ordinary SHARED_TOOL_SPECS entries whose canonical execute (in the mcp + // package) calls the pure searchShapes / getGuideSection helpers directly, so + // the registry loop below wires them for the in-app host too — no hand-mirrored + // handler and no direct helper import in this service. const { sharedToolSpecs, createCommentSignalTracker } = await loadDocmostMcp(); const client = await this.buildDocmostClient( diff --git a/apps/server/src/core/ai-chat/tools/docmost-client.loader.ts b/apps/server/src/core/ai-chat/tools/docmost-client.loader.ts index 4573199b..ecd0076b 100644 --- a/apps/server/src/core/ai-chat/tools/docmost-client.loader.ts +++ b/apps/server/src/core/ai-chat/tools/docmost-client.loader.ts @@ -141,6 +141,19 @@ export type CommentSignalTrackerFactory = (options: { debounceMs?: number; }) => CommentSignalTrackerLike; +// Pure, no-network draw.io helpers (#424). These are plain functions on the +// module (NOT DocmostClient methods) — the in-app AI-SDK service calls them +// directly to wire drawio_shapes / drawio_guide, mirroring the MCP server. +export type SearchShapesFn = ( + query: string, + opts?: { category?: string; limit?: number }, +) => Array>; +export type GetGuideSectionFn = (section?: string) => { + section: string; + content: string; + sections: string[]; +}; + interface DocmostMcpModule { DocmostClient: DocmostClientCtor; SHARED_TOOL_SPECS: Record; @@ -153,6 +166,14 @@ interface DocmostMcpModule { // the mocked loader in unit tests) — the stale-check below is a NO-OP when it // is missing, so an older build never wrongly fails startup. REGISTRY_STAMP?: string; + // Pure, no-network draw.io helpers (#424). Still exposed off the loaded module + // so unit-test loader mocks can stub them, but the in-app tool wiring no longer + // calls them directly: drawio_shapes / drawio_guide are ordinary + // SHARED_TOOL_SPECS entries whose canonical execute (in the mcp package) invokes + // searchShapes / getGuideSection, so parity with the MCP host comes from the + // shared registry loop, not a hand-mirrored in-app handler. + searchShapes: SearchShapesFn; + getGuideSection: GetGuideSectionFn; } /** @@ -216,6 +237,8 @@ export async function loadDocmostMcp(): Promise<{ DocmostClient: DocmostClientCtor; sharedToolSpecs: Record; createCommentSignalTracker?: CommentSignalTrackerFactory; + searchShapes: SearchShapesFn; + getGuideSection: GetGuideSectionFn; }> { if (!modulePromise) { modulePromise = (async () => { @@ -261,5 +284,8 @@ export async function loadDocmostMcp(): Promise<{ // Optional: forwarded when present so the in-app layer can build the passive // comment signal (#417); undefined on a stale build => signal disabled. createCommentSignalTracker: mod.createCommentSignalTracker, + // Pure no-network draw.io helpers (#424); not client methods. + searchShapes: mod.searchShapes, + getGuideSection: mod.getGuideSection, }; } diff --git a/apps/server/src/core/ai-chat/tools/shared-tool-specs.contract.spec.ts b/apps/server/src/core/ai-chat/tools/shared-tool-specs.contract.spec.ts index f62f0cc7..3d708db0 100644 --- a/apps/server/src/core/ai-chat/tools/shared-tool-specs.contract.spec.ts +++ b/apps/server/src/core/ai-chat/tools/shared-tool-specs.contract.spec.ts @@ -45,6 +45,16 @@ describe('SHARED_TOOL_SPECS contract parity', () => { string, loader.SharedToolSpec >, + // Pure no-network draw.io helpers (#424). The contract test never executes + // a tool body, so type-correct stubs suffice (the real functions can't be + // imported here — drawio-shapes.ts uses import.meta, incompatible with the + // CommonJS jest transform). + searchShapes: (() => []) as unknown as loader.SearchShapesFn, + getGuideSection: (() => ({ + section: 'index', + content: '', + sections: [], + })) as unknown as loader.GetGuideSectionFn, }); const service = new AiChatToolsService( tokenServiceStub as never, diff --git a/apps/server/src/core/ai-chat/tools/tool-tiers.spec.ts b/apps/server/src/core/ai-chat/tools/tool-tiers.spec.ts index 130e9b06..3849af12 100644 --- a/apps/server/src/core/ai-chat/tools/tool-tiers.spec.ts +++ b/apps/server/src/core/ai-chat/tools/tool-tiers.spec.ts @@ -124,6 +124,13 @@ describe('deferred catalog ↔ live forUser() toolset partition (#332, F3)', () return {} as DocmostClientLike; } as unknown as loader.DocmostClientCtor, sharedToolSpecs: SHARED_TOOL_SPECS as Record, + // Pure no-network draw.io helpers (#424); tool bodies are never executed here. + searchShapes: (() => []) as unknown as loader.SearchShapesFn, + getGuideSection: (() => ({ + section: 'index', + content: '', + sections: [], + })) as unknown as loader.GetGuideSectionFn, }); const service = new AiChatToolsService( { diff --git a/packages/mcp/src/index.ts b/packages/mcp/src/index.ts index dbf425e5..12cb60d7 100644 --- a/packages/mcp/src/index.ts +++ b/packages/mcp/src/index.ts @@ -55,6 +55,13 @@ export type { CommentSignalProbeResult, CommentSignalTrackerOptions, } from "./comment-signal.js"; +// Re-export the pure, no-network draw.io helpers (#424) so the in-app AI-SDK +// service can wire drawio_shapes / drawio_guide off the loaded module. These are +// NOT client methods (no page/backend hit) — the in-app handler calls them +// directly, mirroring how the standalone MCP server wires them here. +export { searchShapes } from "./lib/drawio-shapes.js"; +export type { SearchShapesOptions } from "./lib/drawio-shapes.js"; +export { getGuideSection } from "./lib/drawio-guide.js"; // Read version from package.json const __filename = fileURLToPath(import.meta.url); -- 2.52.0 From c917dcc3c142beefc1faf3add59a39a5f6638f2d Mon Sep 17 00:00:00 2001 From: agent_coder Date: Fri, 10 Jul 2026 07:00:22 +0300 Subject: [PATCH 3/5] =?UTF-8?q?fix(mcp):=20=D0=BE=D0=B3=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=87=D0=B8=D1=82=D1=8C=20ELK-=D0=BB=D0=B5=D0=B9=D0=B0?= =?UTF-8?q?=D1=83=D1=82=20(=D0=BA=D0=B0=D0=BF=20=D1=83=D0=B7=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2/=D1=80=D1=91=D0=B1=D0=B5=D1=80=20+=20=D1=82=D0=B0=D0=B9?= =?UTF-8?q?=D0=BC=D0=B0=D1=83=D1=82)=20=E2=80=94=20untrusted-=D0=B3=D1=80?= =?UTF-8?q?=D0=B0=D1=84=20DoS=20(=D1=80=D0=B5=D0=B2=D1=8C=D1=8E=20#440)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit applyElkLayout крутит elkjs СИНХРОННО в процессе на mxGraph-XML от LLM (layout:'elk' в drawio_create/update) без лимита размера и без таймаута — большой граф (тысячи узлов, ~1МБ XML проходит stage-1 cap 16МБ) блокирует event-loop MCP-сервера на секунды-минуты. try/catch ловил только брошенную ошибку, но не зависание. - кап ДО построения графа: >500 узлов или >1000 рёбер → вернуть исходный XML (best-effort, как существующий catch); синхронный elkjs → кап и есть реальная защита; - Promise.race с 5s-таймаутом (defense-in-depth на случай async-elkjs); таймер гасится в finally → нет утечки хендла и unhandled-rejection (проигравший timeout остаётся pending с погашенным таймером); - тест: 600-узловой граф возвращается без изменений и быстро (<2s) — кап-путь. 79/79 drawio-тестов зелёные. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../tools/comment-signal-inapp.spec.ts | 8 ++++ packages/mcp/src/lib/drawio-layout.ts | 39 ++++++++++++++++++- packages/mcp/test/unit/drawio-layout.test.mjs | 23 +++++++++++ 3 files changed, 68 insertions(+), 2 deletions(-) diff --git a/apps/server/src/core/ai-chat/tools/comment-signal-inapp.spec.ts b/apps/server/src/core/ai-chat/tools/comment-signal-inapp.spec.ts index 1df0fb85..b9e9cacc 100644 --- a/apps/server/src/core/ai-chat/tools/comment-signal-inapp.spec.ts +++ b/apps/server/src/core/ai-chat/tools/comment-signal-inapp.spec.ts @@ -287,6 +287,14 @@ describe('AiChatToolsService forUser + comment signal (real tracker)', () => { // Wire the REAL factory so the in-app path is exercised end to end. createCommentSignalTracker: createCommentSignalTracker as unknown as loader.CommentSignalTrackerFactory, + // Pure no-network draw.io helpers (#424) — required on the loader return; + // this comment-signal test doesn't exercise them, so no-op stubs suffice. + searchShapes: (() => []) as unknown as loader.SearchShapesFn, + getGuideSection: (() => ({ + section: '', + content: '', + sections: [], + })) as unknown as loader.GetGuideSectionFn, }); return new AiChatToolsService( tokenServiceStub as never, diff --git a/packages/mcp/src/lib/drawio-layout.ts b/packages/mcp/src/lib/drawio-layout.ts index 15117a97..e3ff71e4 100644 --- a/packages/mcp/src/lib/drawio-layout.ts +++ b/packages/mcp/src/lib/drawio-layout.ts @@ -18,6 +18,23 @@ import { normalizeInput, parseCells, type DrawioCell } from "./drawio-xml.js"; const DEFAULT_W = 140; const DEFAULT_H = 60; +// DoS bounds for the in-process ELK layout. The mxGraph XML is LLM-supplied +// (layout:"elk" in drawio_create/drawio_update) and elkjs runs synchronously on +// the MCP server's event loop, so an unbounded graph would block it for +// seconds-to-minutes. A ~1MB XML (well under the stage-1 16MB cap) can carry +// thousands of nodes. We cap the graph size and race the layout against a +// wall-clock timeout; on either bound we fall back to the ORIGINAL model, the +// same best-effort contract the catch already honours. +// - 500 nodes lays out in well under a second; beyond that ELK cost climbs +// steeply, so refuse and leave the (already-valid) model untouched. +// - Edges dominate the layered-crossing cost, so allow a bit more headroom +// (1000) than nodes but still bound them. +// - 5s is generous for any graph within the caps yet short enough that a +// pathological input can never wedge the server. +const ELK_MAX_NODES = 500; +const ELK_MAX_EDGES = 1000; +const ELK_TIMEOUT_MS = 5000; + // Spacing is set >=150px on purpose so an ELK layout never trips the linter's // "gap between adjacent shapes < 150px" quality warning (acceptance #3). const LAYOUT_OPTIONS: Record = { @@ -118,6 +135,13 @@ export async function applyElkLayout(inputXml: string): Promise { edges.push({ id: c.id || `e${edges.length}`, sources: [c.source], targets: [c.target] }); } + // DoS guard: refuse to lay out an oversized LLM-supplied graph. elkjs runs + // in-process on the event loop, so bound the work before we ever call it and + // return the original model unchanged (best-effort, same as the catch below). + if (vertices.length > ELK_MAX_NODES || edges.length > ELK_MAX_EDGES) { + return modelXml; + } + const graph: ElkGraph = { id: "root", layoutOptions: LAYOUT_OPTIONS, @@ -126,15 +150,26 @@ export async function applyElkLayout(inputXml: string): Promise { }; let laid: ElkGraph; + let timer: ReturnType | undefined; try { // elkjs ships a CJS default export whose interop shape varies across // module systems; resolve the real constructor at runtime, then cast (the // runtime call is verified — see the layout unit test). const Ctor: any = (ELK as any).default ?? ELK; const elk = new Ctor(); - laid = (await elk.layout(graph as any)) as ElkGraph; + // Race the layout against a wall-clock timeout so a graph that is under the + // node/edge caps but still pathologically slow can never wedge the server. + const timeout = new Promise((_, reject) => { + timer = setTimeout( + () => reject(new Error("ELK layout timed out")), + ELK_TIMEOUT_MS, + ); + }); + laid = (await Promise.race([elk.layout(graph as any), timeout])) as ElkGraph; } catch { - return modelXml; // best-effort: keep the model as-is on any ELK failure + return modelXml; // best-effort: keep the model as-is on timeout or ELK failure + } finally { + if (timer) clearTimeout(timer); } // Collect computed geometry per node id (coords are parent-relative already). diff --git a/packages/mcp/test/unit/drawio-layout.test.mjs b/packages/mcp/test/unit/drawio-layout.test.mjs index e88f3c41..a6998d17 100644 --- a/packages/mcp/test/unit/drawio-layout.test.mjs +++ b/packages/mcp/test/unit/drawio-layout.test.mjs @@ -78,6 +78,29 @@ test("edges and cell count are preserved by layout", async () => { assert.equal(cells.filter((c) => c.vertex).length, 4); }); +test("DoS guard: a graph over the node cap is returned unchanged, quickly", async () => { + // 600 vertices > ELK_MAX_NODES (500): the layout must be SKIPPED and the + // input returned verbatim, without ever handing the graph to elkjs. This + // exercises the cap path that bounds the in-process, event-loop-blocking + // layout on LLM-supplied XML. + const model = stackedGraph(600, []); + const t0 = Date.now(); + const laid = await applyElkLayout(model); + const dt = Date.now() - t0; + // normalizeInput may reserialize, but geometry must be untouched: every + // vertex is still stacked at (10,10), i.e. no ELK coordinates were applied. + const cells = parseCells(laid); + const verts = cells.filter((c) => c.vertex); + assert.equal(verts.length, 600, "all vertices survived"); + for (const v of verts) { + assert.equal(v.geometry.x, 10, "x untouched -> layout was skipped"); + assert.equal(v.geometry.y, 10, "y untouched -> layout was skipped"); + } + // Returning the input without an ELK pass is essentially instant; assert it + // did not hang. Generous bound to stay non-flaky on a loaded CI box. + assert.ok(dt < 2000, `cap path should be fast, took ${dt}ms`); +}); + test("layout is best-effort: an empty/degenerate model is returned intact", async () => { const model = ''; -- 2.52.0 From dc58974b3194ba32ebb827a843d57485e1d9ec97 Mon Sep 17 00:00:00 2001 From: agent_coder Date: Fri, 10 Jul 2026 14:28:39 +0300 Subject: [PATCH 4/5] =?UTF-8?q?fix(ai-chat):=20=D0=BF=D1=80=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=BE=D1=81=D0=B8=D1=82=D1=8C=20layout:elk=20=D0=B2=20in?= =?UTF-8?q?-app=20drawioCreate/drawioUpdate=20=E2=80=94=20=D0=BF=D0=B0?= =?UTF-8?q?=D1=80=D0=B8=D1=82=D0=B5=D1=82=20=D1=81=20MCP=20(=D1=80=D0=B5?= =?UTF-8?q?=D0=B2=D1=8C=D1=8E=20#440)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In-app хендлеры drawio_create/drawio_update деструктурировали args БЕЗ layout и не передавали его клиенту 5-м аргументом → layout:"elk" (схема его принимает — общий buildShape) ТИХО терялся, ELK-автолейаут работал только по MCP-хосту. Корень: ручное зеркало DocmostClientLike (loader) отстало от реального client.ts — у его drawioCreate/drawioUpdate не было параметра layout (то, что #446 чинит деривацией типа, но #446 ещё не влит). Добавил layout?:'elk' в обе сигнатуры зеркала + проброс в обоих хендлерах. Тест (пропущенный зелёным гейтом пробел — не было теста на in-app passthrough): in-app drawioCreate/drawioUpdate с layout:'elk' → фейк-клиент получает layout 5-м позиционным аргументом; omit-кейс → undefined. Мутационно: убрать проброс в drawioCreate → layout-create-тест краснеет. Гейт: mcp build чисто; tsc -p apps/server без новых ошибок; jest ai-chat-tools.service (35) + shared-tool-specs.contract + tool-tiers + comment-signal-inapp → 273 passed. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../tools/ai-chat-tools.service.spec.ts | 101 ++++++++++++++++++ .../ai-chat/tools/docmost-client.loader.ts | 5 +- 2 files changed, 105 insertions(+), 1 deletion(-) diff --git a/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.spec.ts b/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.spec.ts index d454dad5..e2f276be 100644 --- a/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.spec.ts +++ b/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.spec.ts @@ -855,3 +855,104 @@ describe('AiChatToolsService getCurrentPage selection (#388)', () => { ); }); }); + +/** + * #440 review: the in-app drawio_create / drawio_update handlers must forward + * the optional `layout:"elk"` param to the client (5th positional arg), exactly + * like the MCP host. It was silently dropped, so ELK auto-layout worked only via + * the standalone MCP server, not in-app. These tests pin per-host parity. + */ +describe('AiChatToolsService drawio layout passthrough (#440)', () => { + const createCalls: unknown[][] = []; + const updateCalls: unknown[][] = []; + + const fakeClient: Partial = { + drawioCreate: (...args: unknown[]) => { + createCalls.push(args); + return Promise.resolve({ success: true, nodeId: '#0' }); + }, + drawioUpdate: (...args: unknown[]) => { + updateCalls.push(args); + return Promise.resolve({ success: true, nodeId: '#0' }); + }, + }; + + const tokenServiceStub = { + generateAccessToken: jest.fn().mockResolvedValue('access-token'), + generateCollabToken: jest.fn().mockResolvedValue('collab-token'), + }; + + let service: AiChatToolsService; + + beforeEach(() => { + createCalls.length = 0; + updateCalls.length = 0; + jest.spyOn(loader, 'loadDocmostMcp').mockResolvedValue( + mockLoaded(function () { + return fakeClient as DocmostClientLike; + } as unknown as loader.DocmostClientCtor), + ); + service = new AiChatToolsService( + tokenServiceStub as never, + {} as never, + {} as never, + {} as never, + {} as never, + { + asSink: () => ({ put: jest.fn(), has: jest.fn(), evict: jest.fn() }), + } as never, + ); + }); + + afterEach(() => jest.restoreAllMocks()); + + const buildTools = () => + service.forUser( + { id: 'user-1', email: 'u@example.com', workspaceId: 'ws-1' } as never, + 'session-1', + 'ws-1', + 'chat-1', + ); + + it('forwards layout:"elk" to client.drawioCreate as the 5th positional arg', async () => { + const tools = await buildTools(); + await tools.drawioCreate.execute( + { + pageId: 'p-1', + xml: '', + position: 'append', + layout: 'elk', + } as never, + {} as never, + ); + expect(createCalls).toHaveLength(1); + // drawioCreate(pageId, where, xml, title, layout) — layout is args[4]. + expect(createCalls[0][4]).toBe('elk'); + }); + + it('forwards layout:"elk" to client.drawioUpdate as the 5th positional arg', async () => { + const tools = await buildTools(); + await tools.drawioUpdate.execute( + { + pageId: 'p-1', + node: '#0', + xml: '', + baseHash: 'h', + layout: 'elk', + } as never, + {} as never, + ); + expect(updateCalls).toHaveLength(1); + // drawioUpdate(pageId, node, xml, baseHash, layout) — layout is args[4]. + expect(updateCalls[0][4]).toBe('elk'); + }); + + it('omits layout (undefined 5th arg) when not requested', async () => { + const tools = await buildTools(); + await tools.drawioCreate.execute( + { pageId: 'p-1', xml: '', position: 'append' } as never, + {} as never, + ); + expect(createCalls[0][4]).toBeUndefined(); + }); +}); diff --git a/apps/server/src/core/ai-chat/tools/docmost-client.loader.ts b/apps/server/src/core/ai-chat/tools/docmost-client.loader.ts index ecd0076b..445cf1e9 100644 --- a/apps/server/src/core/ai-chat/tools/docmost-client.loader.ts +++ b/apps/server/src/core/ai-chat/tools/docmost-client.loader.ts @@ -62,7 +62,10 @@ type DocmostClientMethod = | 'insertImage' | 'replaceImage' | 'insertFootnote' - // --- draw.io diagrams (#423, stage 1) --- + // --- draw.io diagrams (#423 stage 1, #424 stage 2) --- + // DERIVED from the real DocmostClient (#446): drawioCreate/drawioUpdate carry + // the optional layout:"elk" 5th arg in the real signature, so the layout parity + // (#440) is inherited automatically — no hand-written mirror to keep in sync. | 'drawioGet' | 'drawioCreate' | 'drawioUpdate' -- 2.52.0 From ddb37376a418ec6f8132e1ab7489d7792053168e Mon Sep 17 00:00:00 2001 From: agent_coder Date: Fri, 10 Jul 2026 16:34:54 +0300 Subject: [PATCH 5/5] =?UTF-8?q?refactor(mcp):=20=D0=B2=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B0=D1=82=D1=8C=20drawio-=D1=82=D1=83=D0=BB=D1=8B=20=D0=B2?= =?UTF-8?q?=20=D1=80=D0=B5=D0=B5=D1=81=D1=82=D1=80=D0=BE=D0=B2=D1=8B=D0=B9?= =?UTF-8?q?=20=D1=86=D0=B8=D0=BA=D0=BB=20(=D0=A4=D0=B0=D0=B7=D0=B0=201?= =?UTF-8?q?=D0=B1=20=D1=81=D0=BC=D0=B5=D1=80=D0=B6=D0=B5=D0=BD=D0=B0)=20(#?= =?UTF-8?q?440)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Фаза 1б (#445/#446/#447/#448) влилась ПЕРЕД этим PR, поэтому явная проводка drawio через registerShared/sharedTool конфликтовала с реестровыми циклами. Фолд: - drawioGet/Create/Update → канонический execute в спеке (это client-методы): execute возвращает сырой результат, цикл оборачивает jsonContent на MCP и отдаёт как есть in-app — байт-в-байт как старые тела, overrides не нужны. layout сохранён: добавлен в buildShape create/update + 5-м аргументом (layout as 'elk'|undefined) в обоих execute. - drawioShapes/drawioGuide → остаются inline на ОБОИХ хостах. Гайд архитектора «execute в спеке с импортом searchShapes/getGuideSection в tool-specs.ts» оказался невозможен: drawio-shapes.ts использует import.meta.url, а tool-specs.ts тайпчекается из исходника под module:commonjs (contract-спека) → TS1343 на статический value-import, а import.meta не индиректится. Введён флаг спеки inlineBothHosts: спеки остаются в SHARED_TOOL_SPECS (contract пинит имя/описание/схему), но без execute; ОБА цикла их пропускают (добавлен симметричный guard в MCP-цикл), каждый хост регистрирует их inline через чистые хелперы — поведение байт-в-байт как до ребейза. - docmost-client.loader: взята develop-форма DocmostClientLike = Pick< DocmostClient> (#446); ручное зеркало убрано, паритет layout наследуется из реальной сигнатуры client. - ROUTING_PROSE: drawio intent-подсказки (shapes-first, guide, layout:elk); инвентарные строки убраны (генерируются из catalogLine). Гейт: mcp node --test 674/674; server jest ai-chat-tools.service + contract (211, все 5 drawio на обоих хостах, идентичная схема) + tool-tiers → 264; tsc чисто; layout-passthrough тест 3/3. ELK DoS-кап и layout-фикс из round 3/4 сохранены. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../tools/ai-chat-tools.service.spec.ts | 7 ++- .../ai-chat/tools/ai-chat-tools.service.ts | 42 +++++++++++--- .../ai-chat/tools/docmost-client.loader.ts | 13 +++-- packages/mcp/src/index.ts | 57 +++++++++++++++++-- packages/mcp/src/tool-specs.ts | 56 ++++++++++-------- 5 files changed, 130 insertions(+), 45 deletions(-) diff --git a/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.spec.ts b/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.spec.ts index e2f276be..24b8e746 100644 --- a/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.spec.ts +++ b/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.spec.ts @@ -866,7 +866,12 @@ describe('AiChatToolsService drawio layout passthrough (#440)', () => { const createCalls: unknown[][] = []; const updateCalls: unknown[][] = []; - const fakeClient: Partial = { + // FakeDocmostClient (not Partial): since #446 derived + // DocmostClientLike from the real client, its drawioCreate/drawioUpdate return + // the concrete result shape, so a minimal stub object would not be assignable. + // FakeDocmostClient types every method as (...args) => Promise, which is + // exactly what these arg-capturing doubles need. + const fakeClient: FakeDocmostClient = { drawioCreate: (...args: unknown[]) => { createCalls.push(args); return Promise.resolve({ success: true, nodeId: '#0' }); diff --git a/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.ts b/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.ts index bc22515c..d0f87270 100644 --- a/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.ts +++ b/apps/server/src/core/ai-chat/tools/ai-chat-tools.service.ts @@ -265,13 +265,19 @@ export class AiChatToolsService { // provenance tokens) and load the shared tool-spec registry. Client // construction is shared with the page-change detection path (#274) via // buildDocmostClient so both go over the exact same authenticated route. - // drawio_shapes / drawio_guide (#424) are NOT destructured here anymore: they - // are ordinary SHARED_TOOL_SPECS entries whose canonical execute (in the mcp - // package) calls the pure searchShapes / getGuideSection helpers directly, so - // the registry loop below wires them for the in-app host too — no hand-mirrored - // handler and no direct helper import in this service. - const { sharedToolSpecs, createCommentSignalTracker } = - await loadDocmostMcp(); + // searchShapes / getGuideSection (#424) are the PURE, no-network helpers + // backing drawio_shapes / drawio_guide. They are `inlineBothHosts` specs (no + // canonical execute — their catalog loader uses import.meta and can't be + // value-imported into the zod-agnostic tool-specs.ts under the server's + // commonjs type-check), so the shared registry loop below SKIPS them and this + // service wires them inline (see drawioShapes/drawioGuide entries), mirroring + // how index.ts registers them on the standalone MCP host. + const { + sharedToolSpecs, + createCommentSignalTracker, + searchShapes, + getGuideSection, + } = await loadDocmostMcp(); const client = await this.buildDocmostClient( user, sessionId, @@ -562,6 +568,8 @@ export class AiChatToolsService { // WHICH mapping to run and returns its value directly (no envelope). For each // spec: // - skip `mcpOnly` specs (they belong to the standalone MCP host only); + // - skip `inlineBothHosts` specs (drawio_shapes / drawio_guide): they carry + // no execute and are wired INLINE just below, calling the pure helpers; // - use `inAppExecute` when the spec declares a DELIBERATE per-layer // difference (a projected result shape, a different guardrail message); // - otherwise use the canonical `execute` (raw client result, identical to @@ -571,6 +579,7 @@ export class AiChatToolsService { // arg mapping lives — it can no longer silently drift from the MCP host. for (const spec of Object.values(sharedToolSpecs)) { if (spec.mcpOnly) continue; + if (spec.inlineBothHosts) continue; const run = spec.inAppExecute ?? spec.execute; if (!run) continue; // defensive: a shared spec always carries one of them. tools[spec.inAppKey] = sharedTool( @@ -580,6 +589,25 @@ export class AiChatToolsService { ); } + // drawio_shapes / drawio_guide (#424): `inlineBothHosts` registry specs wired + // here with the SAME schema+description the shared spec pins, but calling the + // pure searchShapes / getGuideSection helpers off the loaded @docmost/mcp + // module — they are not client methods and their catalog loader uses + // import.meta, so they cannot live in the zod-agnostic shared execute. The raw + // result is identical to the MCP host's (which wraps it as JSON text); here + // the in-app host returns it plain, exactly like every other shared tool. + tools[sharedToolSpecs.drawioShapes.inAppKey] = sharedTool( + sharedToolSpecs.drawioShapes, + async ({ query, category, limit }) => { + const results = searchShapes(query, { category, limit }); + return { query, count: results.length, results }; + }, + ); + tools[sharedToolSpecs.drawioGuide.inAppKey] = sharedTool( + sharedToolSpecs.drawioGuide, + async ({ section }) => getGuideSection(section), + ); + // Passive "new comments: N" signal (#417). PER-TURN state (forUser runs once // per turn), so the watermark starts now and only comments a human leaves // WHILE this turn runs are signalled — exactly the mid-turn loop; between-turn diff --git a/apps/server/src/core/ai-chat/tools/docmost-client.loader.ts b/apps/server/src/core/ai-chat/tools/docmost-client.loader.ts index 445cf1e9..d9419a7e 100644 --- a/apps/server/src/core/ai-chat/tools/docmost-client.loader.ts +++ b/apps/server/src/core/ai-chat/tools/docmost-client.loader.ts @@ -169,12 +169,13 @@ interface DocmostMcpModule { // the mocked loader in unit tests) — the stale-check below is a NO-OP when it // is missing, so an older build never wrongly fails startup. REGISTRY_STAMP?: string; - // Pure, no-network draw.io helpers (#424). Still exposed off the loaded module - // so unit-test loader mocks can stub them, but the in-app tool wiring no longer - // calls them directly: drawio_shapes / drawio_guide are ordinary - // SHARED_TOOL_SPECS entries whose canonical execute (in the mcp package) invokes - // searchShapes / getGuideSection, so parity with the MCP host comes from the - // shared registry loop, not a hand-mirrored in-app handler. + // Pure, no-network draw.io helpers (#424) backing drawio_shapes / drawio_guide. + // Those two specs are `inlineBothHosts` (they stay in SHARED_TOOL_SPECS for the + // shared contract but carry no execute — their catalog loader uses import.meta + // and can't be value-imported into the zod-agnostic tool-specs.ts), so the + // in-app service wires them INLINE off these helpers, mirroring the standalone + // MCP host. Exposed off the loaded module so the service and its test mocks can + // reach them. searchShapes: SearchShapesFn; getGuideSection: GetGuideSectionFn; } diff --git a/packages/mcp/src/index.ts b/packages/mcp/src/index.ts index 12cb60d7..4c22ea6f 100644 --- a/packages/mcp/src/index.ts +++ b/packages/mcp/src/index.ts @@ -5,6 +5,8 @@ import { fileURLToPath } from "url"; import { dirname, join } from "path"; import { DocmostClient, DocmostMcpConfig } from "./client.js"; import { parseNodeArg } from "@docmost/prosemirror-markdown"; +import { searchShapes } from "./lib/drawio-shapes.js"; +import { getGuideSection } from "./lib/drawio-guide.js"; import { SHARED_TOOL_SPECS, SharedToolSpec } from "./tool-specs.js"; import { SERVER_INSTRUCTIONS } from "./server-instructions.js"; import { @@ -87,12 +89,11 @@ const VERSION = packageJson.version; // (SHARED_TOOL_SPECS + INLINE_MCP_INVENTORY), so it can no longer drift out of // sync with the registered tools. Re-exported here (its old home) so existing // importers are unaffected; the composition lives in server-instructions.ts. -// The drawio_shapes / drawio_guide tools (#424) are ordinary SHARED_TOOL_SPECS -// entries (their canonical execute calls the pure searchShapes/getGuideSection -// helpers, ignoring the client), so the registry loop registers them and the -// generated picks them up from their catalogLine automatically; -// only the hand-written routing prose in server-instructions.ts is updated to -// mention them. +// The drawio_shapes / drawio_guide tools (#424) stay in SHARED_TOOL_SPECS (so the +// generated picks them up from their catalogLine automatically) +// but are flagged `inlineBothHosts` and registered inline below (their pure +// helpers can't cross into tool-specs.ts); only the hand-written routing prose in +// server-instructions.ts is updated to mention them. export { SERVER_INSTRUCTIONS }; // Helper to format JSON responses @@ -285,6 +286,11 @@ export function createDocmostMcpServer(config: DocmostMcpConfig): McpServer { // the wrapping is typed loosely and cast — runtime behaviour is unchanged. const registerSharedFromSpec = (spec: SharedToolSpec) => { if (spec.inAppOnly) return; + // `inlineBothHosts` specs (drawio_shapes / drawio_guide) carry no execute — + // their pure helper cannot cross into the zod-agnostic tool-specs.ts, so they + // are registered INLINE below (searchShapes / getGuideSection). Skip them here + // so the loop never dereferences a missing `execute`. + if (spec.inlineBothHosts) return; const handler = async (args: any) => { if (spec.mcpExecute) { // The override owns the full MCP result envelope (not re-wrapped). @@ -309,6 +315,45 @@ export function createDocmostMcpServer(config: DocmostMcpConfig): McpServer { registerSharedFromSpec(spec as SharedToolSpec); } + // --- INLINE drawio helper tools (IN the shared registry, but inlineBothHosts) --- + // drawio_shapes / drawio_guide (#424) live in SHARED_TOOL_SPECS (so the shared + // contract pins their name/description/schema across both hosts) but carry the + // `inlineBothHosts` flag and NO execute: their pure backing helpers + // (searchShapes / getGuideSection) cannot be value-imported into the + // zod-agnostic tool-specs.ts without breaking the in-app server's commonjs + // type-check (searchShapes' catalog loader uses import.meta). So both hosts wire + // them directly. Here on the MCP host they reuse the spec's name/description/ + // schema and wrap the raw helper result as JSON text content — byte-identical to + // what the registry loop would have produced. The in-app host mirrors this in + // ai-chat-tools.service.ts. + { + // Cast registerTool like the loop's registerSharedFromSpec does: the spec's + // buildShape returns the loose zod-agnostic ZodRawShape (Record) and the handler args are the SDK-validated, type-erased input. + const registerInline = server.registerTool as any; + const shapesSpec = SHARED_TOOL_SPECS.drawioShapes as SharedToolSpec; + registerInline( + shapesSpec.mcpName, + { + description: shapesSpec.description, + inputSchema: shapesSpec.buildShape!(z), + }, + async ({ query, category, limit }: any) => { + const results = searchShapes(query, { category, limit }); + return jsonContent({ query, count: results.length, results }); + }, + ); + const guideSpec = SHARED_TOOL_SPECS.drawioGuide as SharedToolSpec; + registerInline( + guideSpec.mcpName, + { + description: guideSpec.description, + inputSchema: guideSpec.buildShape!(z), + }, + async ({ section }: any) => jsonContent(getGuideSection(section)), + ); + } + // --- INLINE tools kept per-transport (NOT in the shared registry) --- // Each stays inline for a documented reason: a snake_case/camelCase naming // clash the registry convention forbids (table_get), an intentional diff --git a/packages/mcp/src/tool-specs.ts b/packages/mcp/src/tool-specs.ts index f97ceae4..1db87be6 100644 --- a/packages/mcp/src/tool-specs.ts +++ b/packages/mcp/src/tool-specs.ts @@ -37,13 +37,6 @@ type ZodLike = any; // putting it in a shared execute here keeps that single normalization in one // place instead of hand-mirrored per host. Pure — safe across the zod boundary. import { parseNodeArg } from '@docmost/prosemirror-markdown'; -// PURE draw.io helpers (issue #424): drawio_shapes / drawio_guide are NOT client -// methods — they read a bundled shape catalog / authoring guide with no network. -// Imported here (same-package runtime import, precedent: parseNodeArg above) so -// their canonical `execute` lives in the registry like every other shared tool -// and BOTH hosts wire them through the loop — no per-host inline duplication. -import { searchShapes } from './lib/drawio-shapes.js'; -import { getGuideSection } from './lib/drawio-guide.js'; // Type-only import (erased at compile) of the real client so `DocmostClientLike` // is DERIVED from it (issue #446), not hand-mirrored. The loosest correct client // surface both hosts satisfy: the in-app host passes its own DERIVED @@ -179,6 +172,18 @@ export interface SharedToolSpec { mcpOnly?: boolean; /** Registered only on the in-app host (skipped by the MCP registry loop). */ inAppOnly?: boolean; + /** + * The spec stays in the registry (so the shared contract still pins its name / + * description / schema across both hosts) but carries NO `execute`/override and + * is registered INLINE by BOTH hosts instead of through the registry loop. Used + * for tools whose implementation cannot cross into this zod-agnostic file — the + * drawio_shapes / drawio_guide pure helpers, whose backing module resolves a + * bundled data file via `import.meta` and so cannot be value-imported here + * without breaking the in-app server's commonjs type-check of this source. Both + * registry loops SKIP a spec with this flag; the per-host inline registrations + * own it (index.ts on MCP, ai-chat-tools.service.ts in-app). + */ + inlineBothHosts?: boolean; } // --- Shared execute helpers ------------------------------------------------- @@ -1838,18 +1843,17 @@ export const SHARED_TOOL_SPECS = { .optional() .describe('Max results (default 12, capped at 50).'), }), - // PURE helper — searchShapes reads the bundled catalog, no client method and - // no network. The `client` arg is ignored. The raw `{ query, count, results }` - // is identical on both hosts (MCP wraps it as jsonContent via the loop, the - // in-app host returns it as-is), so a single canonical execute serves both — - // no per-host override needed. - execute: async (_client, { query, category, limit }) => { - const results = searchShapes(query as string, { - category: category as string | undefined, - limit: limit as number | undefined, - }); - return { query, count: results.length, results }; - }, + // INLINE on both hosts (no `execute`): drawio_shapes calls the PURE helper + // searchShapes, which is NOT a client method — it reads the bundled shape + // catalog via `import.meta.url` (drawio-shapes.ts). tool-specs.ts is + // type-checked FROM SOURCE by the in-app server under module:commonjs, where a + // static value-import of that `import.meta` module is a compile error + // (TS1343), so its execute CANNOT live here. `inlineBothHosts` tells BOTH + // registry loops to skip it; index.ts (MCP) and ai-chat-tools.service.ts + // (in-app) each register it directly, calling searchShapes from the loaded + // module. It STAYS in this registry so the shared-tool-specs contract still + // pins its name/description/schema across both hosts. + inlineBothHosts: true, }, drawioGuide: { @@ -1874,11 +1878,13 @@ export const SHARED_TOOL_SPECS = { .optional() .describe('Which section to read; omit for the section index.'), }), - // PURE helper — getGuideSection returns a bundled authoring chapter, no client - // method and no network. The `client` arg is ignored. The raw guide object is - // identical on both hosts (MCP wraps it as jsonContent via the loop, the - // in-app host returns it as-is), so a single canonical execute serves both. - execute: async (_client, { section }) => - getGuideSection(section as string | undefined), + // INLINE on both hosts (no `execute`) — same reason as drawio_shapes above: + // drawio_guide calls the PURE helper getGuideSection (drawio-guide.ts, no + // client, no network). getGuideSection itself has no `import.meta`, but it is + // kept inline for SYMMETRY with drawio_shapes (both drawio helper tools wired + // the same way in one place) and to avoid pulling any drawio lib source into + // the in-app server's commonjs type-check. `inlineBothHosts` makes both loops + // skip it; index.ts and ai-chat-tools.service.ts register it directly. + inlineBothHosts: true, }, } satisfies Record; -- 2.52.0