From bde9403402ca1a41f06f648fd8fc83f2d9fd0fb2 Mon Sep 17 00:00:00 2001 From: Nikolai Emil Damm Date: Wed, 4 Nov 2026 23:49:31 +0100 Subject: [PATCH 1/3] fix(agentic-engineering): pass the Claude plugin directory's checks The plugin directory refused the submission on two blocking findings and warned on two more: - flux-operator-mcp and kubescape started from an inline `sh -c` program the validator cannot follow. They now start from bundled launchers, scripts/flux-operator-mcp.sh and scripts/kubescape-mcp.sh, run by bash at ${CLAUDE_PLUGIN_ROOT}, with the same KUBECONFIG fallback and hermetic tests. - The github-mcp-headers self-test shipped stub values shaped like GitHub tokens, which the secret scan reported. They are neutral stubs now. - Add PRIVACY.md, linked from the README, and a 512 px .claude-plugin/icon.png from the Devantler Tech orb. - Add the README's Claude Code install line. Bump agentic-engineering to 7.1.2. Co-Authored-By: Claude Opus 5.5 --- .claude-plugin/marketplace.json | 2 +- .github/plugin/marketplace.json | 2 +- docs/resources.md | 7 +- .../.claude-plugin/icon.png | Bin 0 -> 201423 bytes .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- plugins/agentic-engineering/.mcp.json | 10 +-- plugins/agentic-engineering/CHANGELOG.md | 24 ++++++ plugins/agentic-engineering/PRIVACY.md | 64 +++++++++++++++ plugins/agentic-engineering/README.md | 29 +++++-- plugins/agentic-engineering/plugin.json | 2 +- .../scripts/flux-operator-mcp.sh | 33 ++++++++ .../scripts/flux-operator-mcp.test.sh | 73 ++++++++++++++++++ .../scripts/github-mcp-headers.test.sh | 33 ++++---- .../scripts/kubescape-mcp.sh | 32 ++++++++ .../scripts/kubescape-mcp.test.sh | 73 ++++++++++++++++++ 16 files changed, 354 insertions(+), 34 deletions(-) create mode 100644 plugins/agentic-engineering/.claude-plugin/icon.png create mode 100644 plugins/agentic-engineering/PRIVACY.md create mode 100755 plugins/agentic-engineering/scripts/flux-operator-mcp.sh create mode 100755 plugins/agentic-engineering/scripts/flux-operator-mcp.test.sh create mode 100755 plugins/agentic-engineering/scripts/kubescape-mcp.sh create mode 100755 plugins/agentic-engineering/scripts/kubescape-mcp.test.sh diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index ea519f2..54a905a 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -20,7 +20,7 @@ { "name": "agentic-engineering", "description": "The autonomous engineering system for repository portfolios and everything its agents need — engineer, read-only surveyor, meta-engineer and Flux troubleshooter agents; portfolio, product, spend and improvement workflows; GitHub, CodeRabbit review, security, library documentation, Go, Kubernetes, Flux, Talos, SvelteKit frontend, Stripe payments, engineering-practice, design, product-management, marketing, finance and productivity skills; and the MCP servers they use; configured by the consumer AGENTS.md", - "version": "7.1.1", + "version": "7.1.2", "source": "./plugins/agentic-engineering" }, { diff --git a/.github/plugin/marketplace.json b/.github/plugin/marketplace.json index ea519f2..54a905a 100644 --- a/.github/plugin/marketplace.json +++ b/.github/plugin/marketplace.json @@ -20,7 +20,7 @@ { "name": "agentic-engineering", "description": "The autonomous engineering system for repository portfolios and everything its agents need — engineer, read-only surveyor, meta-engineer and Flux troubleshooter agents; portfolio, product, spend and improvement workflows; GitHub, CodeRabbit review, security, library documentation, Go, Kubernetes, Flux, Talos, SvelteKit frontend, Stripe payments, engineering-practice, design, product-management, marketing, finance and productivity skills; and the MCP servers they use; configured by the consumer AGENTS.md", - "version": "7.1.1", + "version": "7.1.2", "source": "./plugins/agentic-engineering" }, { diff --git a/docs/resources.md b/docs/resources.md index 8479ab3..58345e9 100644 --- a/docs/resources.md +++ b/docs/resources.md @@ -42,10 +42,10 @@ A plugin may bundle [MCP](https://modelcontextprotocol.io) servers as well as sk | `aws-knowledge` | AWS's hosted knowledge server: AWS documentation and regional availability, read-only | Nothing; it works without an AWS account | | `cloudflare-docs` | Cloudflare's hosted documentation search, read-only | Nothing; it is public | | `context7` | Upstash's Context7: current documentation and code examples for libraries and frameworks, read-only | Nothing; it works without an account | -| `flux-operator-mcp` | A live cluster's Flux resources, read-only (`serve --read-only`), for the `gitops-cluster-debug` skill and the `flux-troubleshooter` agent | The `flux-operator-mcp` binary, a POSIX `sh`, and cluster access through `KUBECONFIG` (default `~/.kube/config`) | +| `flux-operator-mcp` | A live cluster's Flux resources, read-only (`serve --read-only`), for the `gitops-cluster-debug` skill and the `flux-troubleshooter` agent | The `flux-operator-mcp` binary, `bash`, and cluster access through `KUBECONFIG` (default `~/.kube/config`) | | `github` | GitHub's everyday tools: repositories, issues, pull requests, Actions, labels and projects, read, and issue, label, comment, branch, new pull request and project writes; merging, pull request edits, reviews, repository creation and deletion, file writes and workflow runs are excluded | A GitHub sign-in; see below | | `github-ghas-tools` | GitHub's security tools, read-only (`X-MCP-Readonly`): alerts, advisories and dependency vulnerability lookups | A GitHub sign-in; see below | -| `kubescape` | A live cluster's Kubescape results, read-only (`kubescape mcpserver`): vulnerabilities, configuration scans, SBOMs and exposure checks | The `kubescape` CLI (v4 or later), a POSIX `sh`, and cluster access through `KUBECONFIG` (default `~/.kube/config`) | +| `kubescape` | A live cluster's Kubescape results, read-only (`kubescape mcpserver`): vulnerabilities, configuration scans, SBOMs and exposure checks | The `kubescape` CLI (v4 or later), `bash`, and cluster access through `KUBECONFIG` (default `~/.kube/config`) | | `siderolabs-docs` | Sidero Labs' search of the Talos Linux and Omni documentation | Nothing; it is public | | `stripe` | Stripe's hosted server at `https://mcp.stripe.com`: Stripe documentation, reads and writes on your Stripe account, analytics and money movement | A Stripe sign-in through OAuth | | `svelte` | The Svelte team's hosted server at `https://mcp.svelte.dev/mcp`: Svelte 5 and SvelteKit documentation, the `svelte-autofixer` and playground links, all read-only | Nothing; it is public | @@ -90,7 +90,8 @@ Every path invokes the same `flux-operator-mcp` binary, so install it first — `brew install controlplaneio-fluxcd/tap/flux-operator-mcp` or `go install github.com/controlplaneio-fluxcd/flux-operator/cmd/mcp@latest`. It refuses to start unless the `KUBECONFIG` environment variable is set, which is why the hand-written entry sets it; the bundled -plugin's `sh` wrapper sets it to `$HOME/.kube/config` when it is unset or empty. It can read every +plugin starts it through its `scripts/flux-operator-mcp.sh` launcher, which sets it to +`$HOME/.kube/config` when it is unset or empty. It can read every context in that kubeconfig, starting at the current one, because its read-only `set_kubeconfig_context` tool switches between them. See the [Flux MCP docs](https://fluxcd.control-plane.io/operator/mcp/) for read-only mode and remote diff --git a/plugins/agentic-engineering/.claude-plugin/icon.png b/plugins/agentic-engineering/.claude-plugin/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3d88df52768e7755f61c44b85cd1100247ccdb55 GIT binary patch literal 201423 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 z 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%0DW+rZ_w)Flq>9g4s!=RE|-;Rl);^r1ap&_hH60 zJl+G#@Q%YI0B=5q#edQh2ETO@IP!Q~@;-)d>NRdo;0 z_?N>GuJ?r)h0c-s#BP5`A7;Fd5WI{2h3`MK{EI!`#k7)~DaefwQy#Sjhx@X_-!q{=$pZlK5`X+pDx4PXsbC*uv z%RYAJ-CRyNlz(AJU>AiZm`~rKnu_Z)8F9O#bkF#{D?H0dh2=pGF(i>PjD$|IhP0>?E zgcGf^@#Men9NQW{$u;6PS&)MPG2>9PVF!JS%`X0}p(iaXIqYs1=ljv{cULeZXceRO znfwim{I`lL`#)P?%71v~-Zk9qKR}HgVepH_9b;nHcnvn?m;a~G_gApy|8e9Zz7ESAYcNh3Ox8|CFD?gs9m0xqHsvMQNYu!cvk zn7}&Yl^XL^U0=fGIHOLtSibNNFZAzz@aACoqfU1^@#ClOo!Z3|gzA!tM>P|GvTP|} zg+*n=r-FH9@X<2?U_w&e_B<#D&Me^D0TpxrdiKwh+nfm~{wU*Zow)29Gb1G?7b^A{ zVAw)1R9BH)gW&Sd(BWY*BLc=NKQ|v95z|Sv;mJrkWe&rU*ushIDFMd>NX{|Ir^sgU z$8fr%gzC#URK1RGL=^TA(?q%6rbqH%T+WyZse_Za+Q3pRNU;|qlEB8SSH z^#YVQAAjMH(Q?X;Q)sM2kex>L#rfQO0ukx>3+MZV=dgn~Xe{e2fS=a@<12pF0cf`| z{^;a=HvV}JH|wqpHma4ucGcat#vc=RHf28+*F5qk-i`coEE6)wM?dmc9OGHkcosnT z)V}*lmj4^SlP$J;gOx$meH#0{u=5}4nBAo~?-NG65_}WL@A@zDTiq5;kKJ=?rXVHf z*Q|MR6Q>^3gJ->^@uQ#4T6eSM)qJq}AD|h#f;Q-{LNvYt6^;B+5;Ozgf<+%P&+nq4 zTE{f_-@!Mx-`L&0@$&T-v%OiT0yqnR^|1T{+117+fTLyt_AvvXQ9nodv%VSdux0|F zXRyzovkUl&AY1B#Ry*4(I)gXr3&WeOwR@j${{?*O^Gvm!e-IskZpqJtGv73X^QQ!? z+A!zYL7*+Xy$!+)>2S>KMukXz@{&M?fXE0Zu)-0E@RLG>jcf^sKy=Ok2dX3RV>Dd! z_++R2fzCJ3P`pMGM&Nwil^vPI>BQ*;uAO=p7Q(w z9vo4`8LUh8B=9ib6nz5l-UK?97y@(=3L|(?B#h<_WfyNr{GyW|ty2tnn2#e(jlBRQ<%pm7HfI9JGXUsLSeEVE-!+oP++sR;JjU zGO4l=&M7zf@lq}P@l1gGRyXk0t0z5a*t@5j2Dpjyzrgb=f^~bY9CcQ3Q`qJDcI)YC zv$d417Yo@2E+W~*jzZp(O^xM3q_p^_MuP#+9dM$DP3=bG)zX*-F!2XI(nUWwjYf3x z$21Sqt#FSU#&P0D8gD3;#>C^nVma|c_)R$DAv zz6l{uu!qIcH_}$Vt>FfcHjQjL4d86L?Z*cyk>La+odM{82}m~XJ~%ocn?YL;^x|g# z0C~}mecBh({{cSe>HNNTx$rJTDt>@GM5O2kU zBYx@#PXBY}kc~Zc2#siHqw5jgIOvVnQMspJ)Lmn@Mg}ouvpd$6vAdbtL!pzgEW3c+ z3r``6moRk0#c$Nz$mOXRf`@r;yZ&+AFZWg##aA)wa(!+W)Bb2H4h`#T2pJd0Co5UA zdQuM(%a^j^LtkE9>347)WT*GnQ7$f{#D5bC$eg|vU`jKD!LcwrxKa?mYj9uhj_Oa& zwX?7O{?f)Dv!LAXOn_zp6hwMYfW97h)J%ZB8GsuuaBD|xzjv}H013ltqq{MXHfoFQ z3D8Ucj?CH(f?eEn>QOyk^4KskwBpu6W|>Ns z?hR1=C*0*JY}QQkIE#$pqZ=m3@$j(6!28F=#MSahFFOI@>F~ju1T=xQD0zsv$6UcR z!4RNhhgXpzOVy;{Q_4w*$$~hRi+B^obh-xKK%?{tFV*h-W4VbO zdO>6FhqU6?8o&HvOZ*-jx1$0z+l(iT;RG98NYeT; ztMCFnaH4fKX-V#FG}so7?^M`m9w4^umI>HxN115)&5JK~7{6}z<8HhHvjQDI^6xEo zd8B8*b3Xg+e7@eO-?Q_7SIfgYqm_Hx*up$Q?;URvjeGlK*8Csk$lo#w4>tZs?fSR# z{y&vQUzFTz@MBWq1>;PB+$iIgn(<7)^qv6lVjCC)u=5WCKek1((7HVV z@>lH!0)`-QxG;H|8u6@!IZ;xP&IXv9( zbfJsp9BcK_&y)#&XxsksEYtvsKI>f;S zU;Cy+=J!>}J8i#+9@E=dXS9@^FY@{#b~K&^5$^nVeXD5(KoE1N9_9zn{A1UD{x(v* zvojdn^NoKa+t(t{%H9*5F!i8LDw61lJ&)<4>cZE(ud4dbl!NkbB8aC@KhC2tw75Oi zl@J#ontyX(oXm!D9}E1Shy7;J?f;FXZgK0(2X^kh@IqGoyl+4qmwmF=@)nh-*u(Z%-WPyxV%tcc0}sv|;DO{e9M)@7dAd9kBXp#Hk<~kh&dcI%_=HnIk6(89WD1P}TvsKXJ+X+9Ew(%+$ z-%Y6Qg40Rok%k{ZQZ6H- z|4rEZ%Ae^orgg%&4poU^&n@K5+npl&>#eNy)>jU;zm&bmlV5>PMQnooNRJc-gd45= zM>0Mhf`7ec0DK<5im&{A!_D^Ael_f&e%!)!7?=sj&!FJAS%Btu!K#dTxB47v(I6YN z&+iYa5zd?*c|X9DG!wuI&C>x~=R@LoPe2Qu0F-(+696X)J|`l1Oo;6Q^JF|Tz}bZw z8;iP6m3K=loV32&z6H9f?BSaW>{XBW!6on%n4n}8Vv9lBRR?OGu^Udq1*9huJ#8}{ zKxLfri{vO<;U7ge3m@X*3E&q}S+~h~TK<-ES z>@ZlTfgNQaZM`2be!2@CfD(gbe$;2DUaD@D3&V|kxxbSw^!NESK8nRC+&TbSiDA7a z98%de@jqSw#3RC4wg~*Ya^#P=zx4+=9XZO^FsL|-^8FOjcOLr6sWaebn%cU(n|Kem zs!_g<&d*kM#Ft-Z%6gY0kZ11_qaM{sMfX!#>r{4X>Fmnf_taT+1-0adkr`*Wvz<{>I&{b1xV=`--pAoI;DE`c7v8W_>*{JsohI zJpqglF2Qc`2=T0M2c$Cr=)6F;ncl!&0NW$L`v!2wK&#-_1o!V|3)OaKZuDB`eWRWH z48A7#G3*Ig9qsb=MSL852x?@U?G3ODbaG263b7<(f)=%Cp&fxHTe`g7|@wbbz zv)a1BhQGKx_)I=O+#Fom{KI;FbkJ(m_?$03VTKVu8+$bTc!f+vKBTRYKR$|Q8{2rN zKj8@7js@zge*T6(4xFv;fTcvUXPxucbpJ{0_E$C@XU$*d{j-;|?2DgYI^8LY{~XE$ z`n&jkbgq_>0JlLq6dW%dc}#;>z<$qWS=T>-w{q=Zxbs<@RM^cvd1M#a_@^Ek;iv7B z;8P4w79ey$pR8y-g4n#6jZS5^5AvdO1B+_c(c#`k8R2CRoa#68|FicdK$d0cUEf{a z%ROt!+Lx}L>FGhDB|!2Fn?RzaurU&rF^U-3CJTHT{J&Q8!JdhW+lisnne=S;k`wK&6zRbSEscHh; zy46p++5tQ!LThV^*5s@D>!3b46<^&QpfE^c*SiCP#Ng7xPFLxapGl9{LB?-$NO1cM zYmaC0yYW(SJDq2jz)W-xq_qhG>wrk%8p_$H2I#T3C|&o9(3E`~_zi`Xul&Pr>h97F zen13M<{McTACy%schql0(DROg%;Y+#002M$Nkl1wZ+P1Zqo zjQD}^_uAoBiL&7IjPxI2&u@v9ACH$iNja6Q&z`q3?lcBVq8tc4Va3_lEYol_-pn!I zVD$MY4B%kR614OHEKKSd@tU9d6vdpex-zkoCZ}*OO?}(~GYfh))lrl5$Io3gO%#x-?SwyB`;&Ko6O^t; zI7GN3ghJT;?mC_cYyJT@?RU*zWeFD!@!`mH@Tx}KJ8wpba4z>59pj9ai!_q`{uCpN zBt1SSs=4$bIPH(5HQ?{JlK4hDjc-BxwU&e)0O`H*3szAseh~3N=|^beiMB*opAn`>;c#(n8^ZaZtR&SGv=|%`MZ7(Wt_ge&em=_x$d9 zx$X*P+%xQk(NvH3{2q3wde}c?L;Bv}0m9#BNWN7d-)>L<4dQv=IUg$oEmey}(Y2J&clU~NG=H$-~#US`P!Pox&2+6-k3l%35 zq=T;m?WwsN^qmdkH0pwg_6c zt(3+-^%MRma`03SNUP(-0Z{32$^UbxGEV+rv^d>A@!epjOUM`B$%k5E-iZO=&FVP` ztE+7wa6oF5{UnPdSK@a6AEl=^SE6^}hsr5l<^WIF4XEZ#_JOd|&&X9R}b@ zbmMDL@eW7bEd9vL`mrLu&T&v$iGya^f!UmPCj!S~L!lg9;9k70g(0RZOC z+~UPgZ}vHjs^4@{pfc)lZr5E6{zuszpt5wsmUaiY<-g+m(PZ^_ar5q1df@u2cL#_O z5u&htzBc(;4$zAt+y*$gJoY0bqX1n|U{08~TU;45on`$OlaZ(|CO=iEkC z^y4`ypI3i^0mD=&87yK#No8qPr2MJ?HzeyensfG88jLczup{b-vl6A0r_map|gNj2HDzkefcN7(GL zw|}O%8z0-eo6mPv8HRx|5NufUAD-s(=Uoj1O|v9-Fs@<-u*!e`o9*#{)XhU_!>t_StuG&nvHr62i@ zGbf6z?wPFD`m+p}i*b^D6EkWC%XXVq90_dG$yCn5Dq+rWiC%OMcnk@PA4actHEuur z#cMwhZM}*)z4~?BodJr!6umsq1XMZU`tAVV6_A-to-_fP=L~z|Q+Zz)9d*ZR$5ul0L(pg!te23PLu1e*97nBjrmIe&tHSD1!=#>gbbr0 zC3{R+VJ#S985`;hOXEkbeSgK58A`{4s@J0U32yM%IFYv`{JzE?PV6xvY8gU0fSMRq z7UWg=e61f%faTR%KMCz=$fzX$(#n78NPC?{#`W|>_VdY1ez)`C`~M=J?QO*Ky@#^$ z=ksYAGI_)Pe#Co?U`g~n5%M0Ae<1uA4H9o^JK_-lOcO8_b#?uxR;+Y)30rnjidHG*}x8D%zByV`el~5_H^af^vo-0R8Q+Q|2_hrlnTLa*q z-DDEo#;l9pv@Aa9EiC54vA~?#KTP8=m^Q0hZkT1`VUu;bU$T4rgC?{ zac-6C^~o>}t|?9&xR?NOsWy$^aJ+M(9!k@BQ*#h0b zZ&=~hjzPDoLdA#XnJX_9+2hd)_#8B*OaM?vk5g)ZwFJv+h3NBD3M=Wqeb#|LK-+J% zzDjiPdc$@Fs^uCPKBU$2*2A^z1NbVO{FT?VEPK^cFZWpu>%B!`#Tm)n@sx3cqygz4 z41aH>wdH6+rElHFIk2OiIFh%LgFEzhh83CF*9d~t^4~BjZ zSPsClKU>b``u9?f^)0aS=elqs=;QbI4_e7wAIv1064+a5^~A_)89>8AucBQ8)mIXZ z(BJz}^0zMkR5UHzdUU2Z$IJ%T#!JK>;qz2q!$9qazShH>)^^Aag2gR9z>QX%-fy4e zupe-KfcRklmfiFWcES+TA57!b6Q7EvK62^!N3$%xz^M6iOxSZ#W=Bi5?DD&T_%*B& z>MIl>dU_Sl&7>9m`KeZV{q5DTue9l;KrdmxngBl^fVF!2c6(_8obWf@9YDiv0!i{` zk3VJ3iZTy00hDjI3~G5ml0Uy~W)5;xn?KtXV44CD4@ys^r-UPxG}!3GE`fD+2^6cG zQvU1HAL>6$j(6W`eMixWk98mBA7xUuxn#_wVBaN>i>=Uqm5wW006D?rK%Vlk$WWtY z@ObML0`Au1Jse8i31|}H0BEG>O6(4=HAk`K81Z5T@!p_eL@1*%91_M1xzHxPpFqm| zgJSk#I|qQF`W?UZe%k@y5hb9**UPOXdoJ$=Z}*UBhXS022TdEF(aZM&YGDsrZUWZt z$`m|($s@n5^@{<3>=I;;j1}ls{yW$DVXtN7 zKacF*ihHeN$yZRXJ&4Y3{A@JayPut3eY=?Lb==Ay#@vkjV9`a;wB~5m{Gh=ytfM$h z6QJDyX5dE);KkjlKS=(1#SZDd)~_@D6{kGyofqp8D?!wqBJ*FKZp-q$UBdW|chTTy@NrS#rr(r?Gz^cHiY#jH5V z&_Kl$2<49E1V#kIIaE>XgNJ~f=X}ZRfTaH@ktRUq54;nq{?Xe6 z(K<*CsdEHIB!A|Q;X>C0h_R3+pv5kMXe#M-*AvbvZ}rlf>1|T_>=8I!WbsVV&p6E( zoXPn@Mm(M3sS?_uQk|IA`(9nI`8Jjp9GT7vSZVbl_70Dfvp4u2Xk=J`m+P*lRKxN& zHQUfO=~Z|yG}b}m zQ>B&?zh{#uZcP=eq<@7;tgQ9tFaUOzKWW>^bbgoP$yTCc`Es$?e^|_JVC9c3O*CUo z)4ZY-5q^6@czCj(=4EJAIN6VM+uzUJ5LaH2{8ewiUDUDh6*9(Fs~v_OL;X`{97nxQCE&hs0a)OmaI((tE=3gc}CW zxMH5~I2*gqP84MeF--GPcd3fF=iGRHY|mYuLF)#B&!o; z#lHsPI{4tvbA|A&rC)z=(P1bFW1IRQE&;G@yYc2uyZyL(VJ0Zp0!uZOL~ zHn)eG09gdf%29`s%O)T*8vxe?fG{lHPY#4}(5zxS`7Qy-yoD3nHGrhgg{4Vr6QySK zAX(^tarSrQo6(8ha`7!uFP`sjV;hho_e)>N3^&^Vm04;8bYG`<1F1|9HY(vEe~F+Oy5!O zBS(14$^tytR8N`iU^}Yy1kdkbFTM;vlB7==mfgz~ku4+2(LuOOtiX61EsD__lK9ns zkx50A)X|8x>JjmltMc?;@1y!$;@6r!@kyDUa*nnL2oZO=naA^cN| z?e(P1Az~-`zZlQt_u>~;|5-NQUC&wTkJ7x~W4)hZ;Gwbj#}z{^my#_k6B-eGKiN+V zfQY%KkK$$JuXeYh4hMgQktNCB*Zd{<3tog@Znxa>N0SW0X{j*e4-5g@<%~HH6Yx|d ze`!^JG-`c#?b!KVH$O{5{|rsIzyjje^E%UTLgklID=SZk6{cRNzwUrX{t{Z5E8X7e zKUs+|svPe3_e?%QJv^D~lD^X+4^Ni+eFJr<0jPh9%Ta&jQ&DH}d~%D!eo*ii_ZUc0 zd(YzT)?W-g%{xvCw8>bU;}D$u+L7q)x4*iR?o_LVs2W;vO@JH5RE-0x@J)VAP9*P% zZ2~m$RhAdFC)5a73Hm7?<*YrF7n*3L z))FTOTK)z&rR}#^L${Uk>gCtN70~C-D`INHYRq@5zw7`cc=W43{{(e#O9a56?WcsO zlM_!f!cM?AFGwqJO4`-BUwKOTRA=~$RB79v7y#DyVS}~SpFd#R%_=&u<#;x`*E`W! z$>%zooKvGiw3!lBD}RNfbdxf*96RQ~iFIL_1w^Jp-IY89taF~wVu&CfGsucdSO4^AD6ZXfNfKlpC$m~Of=K&3p2 zCg5>w0#qjwKXWBW0diUYxA$Z1UzmYq$()-;quB2d!1~{CL3v&P>B16*pOA@^f65q& z`YwU$T>?qJNY)?3bI}Gxe|6?kzM34{{%Y%6qi%e>{~&*bErU~e7nxtuzT_B?Z>B3w z;?Y^2fodaRa{+%WPiY5ZI(9Jg(yID0Q#$DtXOYFTlffxH7y)a(I8iHnpQxfYEM&JG@6U)mP77!VR)3tTI#} zt`}z%(2^Poa6pm`LV3%w<#CB$1l=B&^xai{gCkXW2NHj111I!by4LmuXA-~iK)0nW zNT*EFk6N+j}Mz3%i>j}!f3r1hZc_qBeI ziA^pDwORRd207IkJ1p7`vXN%M*6u~%P4d?g-W)17N&Y3_m(*?(=t)WbYKtB;2lnZl z_$y9C--VjJ*8D%uD}6h}|JtR6A4CuTuk{6t{ywE0&LfWxv609<11{-1-SP0A8Q-4(KK$RGt$Qz9^(Ugvk#4jB zz30}z_&QC|**j~@KD2So4I>G=-a-p^XW(Ja^*hD6?n-oO`FPa&+~;=ZK1)r2O&I5t z-EFRMXNq&~TDzycV}Pc&MHBg^z_-r4cZdD*kFO z3V|EWb~us+QvFj%;nCPCM9pv1CFHQ(m+Fy&{uP7+3jh zAjnhZFMZV*PZ@C)V2sGAWVN_*P$*^i7ouu%B=Z z24hu>fw`RF&(*$N4E-3>(Zkkkw9LUiY?AHX%}@01MGKp2377e3PH1jOv!*|9(3p8- zgq~UrR&d(tM^gqT`)RIf&gxNo@QwO4=Y=0Ut?D|?kn1o~`&VIh^E>eu?sEL)?r!;% z_Pt!${?3b0OE^=wQ#e$()Ntx<8rbmB)o<*)23Lc#g}a5rBXGIOK74lefX$1Y(a&Iv zb7TkC^q8$8@tJp{nY1&z6vyp9&U}zf!1pkx1}6pXsIKf$2ov)%-r&CJU%3yewuFGORx<{=dxd)ekI?C zm-4Ie@517DvA4mtAMO+=Fo%-#&$YvJzcd2@NBXV-!*f)uSYfIiwgN7amT1g02?5f| zGh$Gt>Afmm1&2>V!XSF5XPEaYI;J<26I|Butt{>H7c zU*u?mPmE0G`p_FK$U_W0_l~$uXPVMSfZzXt@#>WKf4iSf3mG`eakQ~?c`IF*p1p=5 zI)MhQGSFc2?dZv!!(cdU7_gW)#nD-iSjOcOXL_70aBVB(&O0%jDrS_-~}hY0Qjq0 z_b1cwHp+l5Yhw3ceIF)^*>XPDzaJgnT#4uU+Zfdvf#12-AFTGN!HoV;H;Q%9+%#3c zS}$={VYzC#(nY1!l)d)%ySC5P4}kYactL+UI$Uvn)UT&c;yUrKO8Zs+Ze@TIV{l{I z>trXgB0s~+=zRaPyc(yPL;QW1)eBK;HH{0-Rg0q4Bu=iyae8gNv-)u5&mjH#l5IWT zVc2@WKK66f7tWy_-sdQoIQ zgF5-@%wqqqEgavv_jO#q^$jo>2W1oBuj?lVx+Xy91^8J3kD>{fDG`E8{7t(AWE-Ga zD1k^)27kgwJT21*h<#Ul-8Mj|lkOXw8?dn%&p`HD`Hj|6ww}!QzcT%Cb_*QO?!>Hm4Mp7lQS0w~RPDz&< z-{5>-e_i62bwAQ)YYvjk5m#9Guc8e=ht>b3Xga^2zOeO6to3hfAKADk>;Bmk>lVa) zEb>dM{;;oq(zSlQDlJ0t_Y?d^t^8f$hnSn>?vlUqiNWub68-y0^8XT=)-Q8C>H7WI z6WeR8{}iVF1&H|X<25-o)QJC3ZqSSPqwiE{_@SEF9%uf$pR&W%@C2Ka<2 z1c9>0N3iF9G%=EFZ_egloZY&^5<{Os+W6Ep0S+j&nz(J>BIxl=uGa53Nz7Dw z`ry(4OsWY0p_nFsJXX9k0poTF2!ZjUw5dqJksztCOF$9|LH+_mK!=SzK~M|^B1q9X z(%WL$AlYio#L0tnJHFFjj?=Wq3hEsizRj6}3ByO2GVdDVm8Q!Dt$h#6yr|q{NMw(t0 zXb4*g!wTHz?nt(Jz=7oQXW!D}1ncEj;}l=QhfGH5iDKGnP0I3VVA!}-NHg0WV;IC_ zDA^@`;L8bjDUkeOu|>Z*7|3eSLK2>6DphopjWP1`3sivOrz%~`)M94zW%)D zl0U@%i?=W_+L}F{#qmia{@U&rW5*~Zc;2u(a<>PhkdE%?<}3o^ZwbSRs6Ti{|gMd-%K^rdujrbc$tf+#fy-uJTwKi=08I{lKheXM@|rQ+W@&DE#OciF`N_( z{}ApJ&~AZ^bq)&JW)s!5=`-0zx|qGy`mOo4b_>w&{b;t|$>)UzbYzO1s}GixYo$>z z*M+J%ykKyLngQa7+EX)NnFFkQ%{9anv<(H@ zb#TvKO&jMA@a4;z!;gJIK?edWH;j-FGg3|{KnbIdh-&pwu?mX_d%WUQup-Jxm+b3d zE3N`xN{moQAqd*1{raT)K7QMNO4v{GgHtv_KUm{0_w%Q7%LBGPD zmizI!jbCC^uJso;Z)WXYZ<@<{w1=Nzsi_0!o!LHq>ed@DH=Gd|UF+9Un$kt|1q%T; zJR!+m27bF)`Fl5sL2yQ3uao_hColtngWhY+-_`wIm)!lV`M*Se-1!_7`(l(n_}RIo znU&TjY3>Us_r9C=M$3o!fj-f=0SQ2<(E&9U|B~r`J@3bVAxT=dZuD1fMwh`1L)HJd z5~|G}^?Qv@Kbpd$xt`h3p$1?-pYA5N*`7-8r>hvy_VeoynH0qEGJ}vIi6%h5_2Cx6 z45NZ`1R#cNX;GE4+sTRSbMyHZzq0Y*qBgg@s@U<*L1_Y1x^w(xoA-U2U?AouDUE0X zuz9xg0^Bx0y9A^Wpi1?M>K%K6ARS{2gOIU0kAU$Qx>G=RowsND>k&Jrxnn3z9^_m3 zt=4T2Za3a6?vZmoLFAW40Q8Bp04i^xSyioOu~GE`P(3RMz0dJDgYSVNrGY)em^W?R;Uh z8HkDWVR%^928rKBCmBX0esQgBllU{v&%V#8*c+VMhs2-Xk4|Q{i`ni*G_$#uwz59+ zKrJaaT(n%A60!)y-{K+Ya;t0op~c$5XK=RT#$JO2!D$XlKu{O(=Sc&<2*14(KVksf z@2A*PNtXWvh~Uchh3u~%{oNb)C(#7x1tz^aK(KoD(gX+@Nb2`p0-eF`0Ap&< z!Oa`0-R-;p)e~$3gp|Uqg02Z@whaio0{q+n;7wxyLV{G=9Rr4&*!GKyZ9yMqD=X5@ zgZ3}04&+>QX;4??gtqk&WmE$MId~s z|E?J*UH@*bInX=lQ5pQFmr7}0f$AfG>Qf62lFE3~QiKvo@<_aziS@kIxT=3p=wo`k zOu6;P;zX*{C-3@OQsOtOaRwV}{#K6?)s}(84;&-E-41K~=`1q^iN8I^HN9!E z#f141qwqm=YWwpL{iptcQS0G9oimwuLgNghXTCMoTyB}WvD$A+xTQ*t*T@JV% zVWsVSg4m#3)WXvg-kI~6jyco-?Dz9&V4z}}Iv3sLn%jgm{Tqy$6!LW5kXSAQdJ6U7 z=jAJ`!Ic(sOl--$++|%9Gpq4QGy%mVngB1#xomg$YZIVygb4HpnH;eVaE8F^a#!)y zG+uJYE`cERhg$`iL8cLCwha(vF=S*@nzG$CU?eOcn~i7$WIQ!}rqh>3V7ox!ibf#4 z)4Ek`$J_aKagG<68)yXBIY8;E0C`O(6@pr>WuPd^b-MJm4zClf6GI zVi1_jV`Wgb2fWh`ZV-QG`3sA~FeoNzAE5efayD$eV zF+)3B@n$mHzs17egJ`LLyU-E7i`&F!n5J5>Oz$A^Q=*2N5p%gz3oB~lUagXZUM?mD zt$^aB_MazSYyET!d8%vuqqq1`p3O_;(bHt*uQVtAa*eyL#3_B!=O85i?E3t%na%hl zro%7rk{9TkBQ$HSQGN%&o`n03vG|9vU#6#TaAwFYM1s4~o2dOYNQaYa(%1Pw!+Ezp z|DABq1LJ!^A;+WXOTXdhZ|rCJ1$OQJHw-|w{6!b(RNYcF{!x!JP(d!6cvj;q`}-h- zfhOP&zieD=wA=0g6}*=wz$-^Gw{P5}3Gf{Pg0E@<#26?}l7C1G=LJlcHUx^(a=>1@ z1nRZ{^>YKz5Ev5*!t`APLVDV{V7mh(kcnK=Wrnkanw5@4g=qx3>+RVBjX<{3G}mAqeh|RpS?PZd8p6a$6fQ+K7W<>x8I7|` zu3!1}hrh-mOegxggNbGBRb3N3VjA=~eP{|#RM@izbf^J%)Nl3%1Nw5*ZO7bh$KG_7 zpQQ<4uE*R3z?cGuSkd+2sIUfG%Kmm?j8YRY&EcT^e=r}t(cM^i<&{Q0c%-$i0dV(G zGyy75h@q|t@VJo*2?%-U&lv-$7R5M_-#~?os=Ea0wgFA&29O!_JG@hXatwjdS=Nu# zX&M5Ms>SCsebMu5YJR)V8Ah#coV2jb*eq7k<$RO#);EefG-Tcsq&W;(mjhTSgabxe zf#|@#@VR7KrSHXl0zCNmg5gEV4_CIr;*_Rnhr!>dA+QW3y!+o{S4}r=u56aS#(_4g zEOby$88$~h)&5h(4p_ns`gTW{2+xnlC4CWoi>4g8;e%9)Ek#{hIuI-w^v8&>41=@! zCGm?XXv4}&;-5y-j-?NJq?(k(XQwRRop8vr(s@^3K;B)Mx3@szQNU{&N z3(7V?>EyRHf6{~{LCrxU;3o-cOQGWH8UbRBF-VZ@EMKV+*jjIM!a~wc?x88C$jjDXOsK*TNRzuO83R!=?b z@dm7XzzpInhyAE7MGtHWhDoD7&+9$w;Zdl4guDPRu$Fa9ba(}bqCkTnS<9pkHYTIM zEe}8H2n9;80eD@)7d(#<>fp6Jqigy^dBFooUj$vCfdg*=pkJtMDF-?2{J;Zm>Jx9>SX}h1x-QJ9WE6JZ!&_uKh7{tH$OR!7V zZfxKGWm2}I*Gis=IxN#`gRDN_2N5G4uhHp3Q+OoP^A`wG>ht$rPw$Pe2Z%n&s`Sh8 za)u@VYIc*M2!4-`GQhPnU?NQb*yDnF7=r|I$))2TR$0^y=QP;u-*V4^k7r z@q3)e8wh>9B|9-cOz55QfRAVdsM{v~ zP$SUk#T+f1&0?0Zo@1BYLL*RYCtDzpUc6BB(0*d4f#k1Si#St&CL?a)H4_eFXUcj_ zlT+JGFu*E7Gg>NgYdxbD2{53fVIpyRY7B6i4~+7ZA+$wkjCWGZ4SLX3r?0#|@hpBMxpAS7}Jm-lc|H3Xjl8~3=# zCub3<3%lN9KR@?T6zkc1b~~QUAErk;x3jt4R&jI-ySXfrlul^_iC=#Gxp>Z;Fd;s` z82e)I#2ZL8UN$q@^Qtl#8m7t@H=!;=ix$@2@arM2)VzhTul0w}&R>`OALnF0FZFRG zf1U0B#U=DDcX~^3-KTnkHUC2R5jnzZskwBN9{NS-rwfL;P1H>cGH#?vYZ>#u4wAoa z_bVX-{NeBZdfN)e`EBroxfdgxE~tiHUXaAWE z41B3kD0dBPb80(R3~zO_X|5$o(|heBMJJuTjB=M zo}tOD16pr|GMciC#5;T$>A_*KA;ttFd0mqCLOg@#_wc|Cp1_^~RC)$s>eN?`$^@~APSWLG5VdfvE9DKje{FmuUO;-XRuYksGwjam~W-?1PaIkg~1#c ziqKJxL7o#EKs%^CEDz|-093;Sj}xBKr}*kqwz?Xn7F$N^sgacN0To@=X8@jGfoi-Z zj`?x;N$c}+t3}oGdbrUgL1}7x>6K?!2_H~fDR6k@FZ)yKdn->Ih5j=NMhHIyU-3x% zlJsE&SldU(gCz)(K0`wn^rX>tJj=~|ZBFi6$d;p-{#tfs>rOG%XP?PNhfjs}%Z3-# zj#~BmXVkc(RjSGeG_Ly%gddC7k=&ZdP1gOo)>p5_-*5<7I1qlHM@?(}fYQ>yAjl2K zW*DdR{XUL69G@sZy)n|h#xldwXsdfPJDDZLX{N{}CK6iCc#$G>^2zu|9T*;=8Fkrh zI`l@`k8e!H$?|m(e{d}fz!1`N9J>4Nfe&6MI_J0Vu9`5z>rwmoOf)-J9Q_#c@FM8o zPa+kb22Y)2>P%u2AWb>f5Oa$l2VAsg^Z%)RG`joNmG%2t?|Ryr03>!9_}MtojC4&v zHBLQKwG9YiPUi+*Qj1*I2$0WEIGPA-146md2<)|60IXweXwnGKHp6*3qeU770>Xx1 z=U^kC`jN$wtxhs!#|f|I9Hthx^E%4+>Dtqy?2UgHvn5e|3+Q6_D>jOlAH6N5G8C1!({II+EO#uO!@M zJ0#KTk=4Gz8W0gq@bQ|2KNa$&vf>9e#ndDa{%}NZGMnna*^TsQ_sg8tu@)Wge+7wu zvsl_(*8cq>>1^j|2E#bjr6!owOkWc2GOY1KuNbUDtN!{Lf0M*-ZMSlKKYw6cQ9kID zKl@1B3jo&{(luX{M^^qmcjWGOt$)Z2gtaO$-YR!LxA_TPj~IY`N&XQ3moF_G?>&r8 z_O_G%jH)m2UB8v0<{9TqMZVn`L4G)%JVOSGOlf=4?ll@8{+?3 z*d=99$}oHyN-P1IYOK?PCb(fe&y_E*x6jopy~i(eIqKfO97QJ<(pz05c<9AV5QhkY zINwQZ0;DMyx;u|~90%GI=dnE&(cCg^z-vuYXZYUEr90;?n*itLhftIIgiKue*MO0K zH`@S}ENy`PTwCB80rFbKLTcl73kcB)KxsMwk-G(Sj{!RMYyCt74^uQA^CIOT*Mxb{C3=JnHwnAS|_^8`D}kHU);RU@w}Ya*D->R zEr`7n*L^Z%tVu@reH`ys;`g)rp)=NT8YLS08aAq_euh7BHg6>Q>Uo-L{jT z{K2hz22_cK5+`CPM#Xg-x^_t=_LqfEVDl0d<=IPnQZ){{7kp)Xxp@^6I++}BkZcpC4HChRe}EVm5kui07>{p=%J3wT@5$~W_4n>XTCznjfUaq5ykY&y6SYw&p>A+ralhyXjK^Zc9=34zM zG}tu(GwDrTSH+36t_j$CcYtu8Zo(20iqQao|FVpe1Gj9M@P70u+d3R5%`Sbx$F=F^ z9R1^J0#uc>0pm0RLOw1fRhy)E{ps8QM{FX{<97?_=+ivW8i=1CupfK48hheglk%kfOHo*(Tm=hOYo`0UobKG*SbiD#FR_>_kF=r-L^Wkri6(^#-aq}eyjlcIwq`hN_!0-D3Gfn^!s0e;zKO2P*2!!GoGEC!Q^0KlK%_PnwM#&C1{(oW zlNyDc)J6bWV736^904@KlqH6Pc33>rS)z|HI)A}dK=rw104;>2cQ!Bxn=MFfz zcH$tF=PYRGQJlGA2!hvK+Gg>CAK(;YOoV0dA9b6= zMd+s^PUed{t=Z@n7W$i<^Y}Fm71d)L^vza1UlTE^I;mrZA|%X!wqir+4kn$GPO zzHQ!s;v3iYov@1m5J8qIUhr9I)vta0>JGQ+mtPEp$HN?#3_@7r*SM}q{7&R~8D}ua zAGB6-VN5LEt@~+*eMxu4e5+3OB$|dm{=k$6iN0yAUvPSMll*;|Q0|rJEvqNw+G*vl z^-QIGPCBs5(bU%;IsSE>UVgTl6@P;MI>&0+Z{X|dmQ+o_654ztKLg31eg4dw+i=2v z1^3$KgNI+ZKRdGK@A)X+o{{!>;=mP?xZC4+e=oS*%6Jaaj17Jc-sAoI3ep68HY!f| z?tqk=tH9-q&Z9{8vI#I%^^V~>9KI+!g(f*%2&@YUx!A*G>B3ZWBmQ)>x%P#qzxc5o zxkvhgk8Gv6CcqOP^}GPjKTZ?ysI~zj(q67yAwwZqEeq^NBLJc_1T3;bF}%0Q#zK}Z z`CB!J8#eZ-2huBfJ>&~y8Ibv)8JLPXQs7Y5)E4&{2Gh0ebf(`&iP4GYkw<4CEputc z>U74Pa6*V;$~Z#~H{rZDv=BD@XuU zzr`tDK@ol)t>G&SBcMGPvbdn9CF^KNhp z-*Pd<)w?IQ?wN`|>UOD81l)>4WnelNA0MiMmJGC38XwjU#(~nTQT#YO#n{kLS{R$b zM1B7fzb%G9=+*OsF9{L|+y4|l?g>Ob*y6}<+$@0dkAvSW&ei^Pe4sqz;+o0=_rw=J z&3@kPXl}ckq3*ZK(JnB)Pti}ZWh(7u#*_enJuDsY;kD+^AwLK>S$useX3by3|4{ND z({TqI<)7hTOMMngbB^#ywLKWe%)F2+{uX4y3vmmZfQYSrliVGkHi7&=LM&|;*O(|A zKb(9viPIbL?7d&S_5;z@C(tGc>}^3-9@hkT6w(NyR21)ZUVy_l*#@{Kz~P!~1Ekjz zjFtf8`ndr*Nzmg({DlnVHfaRdik(W=4nl9#2&g=;G#F9kgz_lU>eZTmNNZbq;JQrj zXpDes22@612tq$<7lGmint{@0Aj`NeCgaw4E`rVTByDx37r2yYs(Uv+!>+@b=wWh> zLxyJJ_4FcCW`;9kPvK5+8X-#uD7yQj`=E2(T4<=87RzJZL!2lALAM2Pje*)^Psqfu z@CbK(YS$7xSSHi&A;W-McDf z_v@ENe6UR1u*c#`+)mda_)_KHK^ok~boMI3@^(C*-%47=c7AMo*$(Y#Z?1CycgBu# zv)(5w>{*PFXE=Hn%X%Z&bt`_o70uvNgme*pg<&>{7uy0ovPaWIuNAEE*`BJm(sGuS z>n;S?!gZ^DkM}ix-rmZU2Exa>+`X*(oxr=qFO3>?H?H-Ew(mU4-{YP5dswcBetoUq z)9Y*gFWD4}qBpSAH{#zr@hy3loo9E>_w$C>IK>xvRUNKn^D4Zxmo{`w^0(>7+5QlJ zRAzsbfpPt6ckNdQ>x4gjl1G1CafB#m#<_nejq=OOt}- z;_FNlVapS^*se9G${Zbun>I}Vgap9^;pmdIlv|t8($eKJo#La zZ)Mu*#PI`Y2Xvl57SE&zxFALCFy9t(M3=K*)e4SLz}wO;T-`l~42+4QPLmWDVj2TJ zJ;{3gYOml|m_OiZX(QdI)bM!zGMTKRxiUV<|mbN1)Q-D0lLk-Xax5WIqPQC( z{_PgH@g307k1~y4)8{yRo^%f!c5=Okg{Ge5!-;{&^3yM@AN_h{mh&JvX#&n7@x6@O z7A6^@oiPnz9TcPsK8x;xN>(`V_J0QjU5k$2`-zu+W3=|UR|8_>ya2};BZas|;Bhqp zUg+c62DnB*y9HFH5VZ(%K&s6e0ho%hy9R`aRZjh`0oMqCwJp8LR>0Gp5vXeh=v2$^ zngPNh&@4N*SiLUdP6yio6E86$L_-j7aE<`fueCKb10&GN9;7F@t#Aqh!{bn;>0+y; zE}Uk+$7x966sHp|(FtuRn~q7Pj2t0Mq%oORJv`P=W?V>PiL>!C&3m_>%Z!}|S7(aO8Y(zdp$_p`LSP4=9f07*na zREa3K0nXO)J1tZuR6sL~kf&$>)Bt{r;LA^QMKZ(niUr7llY$IeSU`Zrn#_SYBW2_jnO|mDwcmD^1UnTI&y`?_Bf$f^}^a zz52N*dHdI*#q9pE??!&P2&4LkXz>#HPSS7`bs8BBkH$|()h^$+fV#yv{i`hd+_<{% z@Lz)&JCzguybyBPWBuZhd%ATA-|>1qe$RrQZ-7G$z|;P|I>qWTYV5^ynZrWC?}cju z&Vf%@QZ!A#Zo^dEwU%a?blQ{Nzl5Zi7v8 zjId)2N|~^{hl zZJ~nbBBqdzrNn5nD!L%M0qhE9K$0nlbC$Mh1wCjCpfuL%65(nLsGU+R@oTnvq=TF7 z{Vb{cafE8YLBKtTb9!YXLvqzOj7B5&>LgQT$YYYbBz;@6Cxaw?wL%hj&cewSqm&Jn zER4XuuqK0*J`BJV1Yd@&i){C5<(+gYyT>-YPINTWetb5Nbyl>7&(?h%xipaQ{X{;x z#)M0K2fcv1YNrUg7)Zr8N&2ph(l{vL%nbuTF98!5@|(m@qCT*7HFfP+yFVz2Uv)U~ zKPZV`W$MxVb}e6s**WJuzR`v7N59G~Jki3Dtk*jZhk1$axJY-MCeIN%Nz<$O(N_^x zi^VtD_U4=9z0pb}`E#q^9XP7X@MoU{;_!KDJ#g6BO9PH0=^lnuy~^qnB+dK;d!Eq<0B;Ubhk0%QnCf_RtM?3p|QOKvqXW;Ib9)y9N|i zo1`%aZrCM2_d?^w+X@Jd`+`IR2fGO55An_@1ebD510ab^hWPNNMZ|wZce48RCEu3 z<*eo+;L-xwpGdFJE;vXj&f9HHt4v^BbX6{fkHvImDtyZ6KyUiI&3e*?Ue0&c$d<+P zoS>lY;ch9|)jZ=8o;=O@7#x=+H48U3s68!KQ)nC#xSpYe&l*2nsqbQKvA(8F5Paji z28@6+1Vc&RJ{%t_tnI_4SUnC0HBxsNk*5o!rnh=r;@8@~;)yi-6EOi>@|ggzKu^Dg_;wcy zxo#d`4XeKKhiMW=hNBG-ZrXi#YhjpeXUI}<^a6QOPPsq7+Jzh6r2Nk?u|6fO=^q_9bL3wS$}&lvsHrHgVm!$=#E5M#m7WMOp?#uX& zBl>YONUEN6u!bL+=KUxb{aNP&=kaw{FvJb)PW0VWuEX&zR!$jb+@Y8Nx90b?dBLe1 zeK&n;<(DgUzkmBs#-N=gycNj=3|9SuX?irSm8Ll&rm*@bt{UEt--&-+v!^n~#qC-) zTl~OA?bVg+G#}{{c;*s)e4f@x?LW6?BLNOr45?p7oEK<3+2+UX%QvQ`qPr0Pj_}~& zn*Xj};fW>c^Bg|A^?-AbyTMGB=6yXnXTBHQayDvx==`yBS(KmR5bW=#xC<=xejB(9 zi?Xut(Ojc7f|*g#YJ%}s{C`Zin^Q&l*EvYz_Lq;{eOs4jysE8fJiBQElrC)m1T=os zT>>gYPu(^k#5SKK=&D&K^h0-l8UdI1b&i1Q)HcF#y9b2WmF~6zrSu+)f$%bvE`lsq zLaJPyFCdrC0S+vH57M5)QLd%4He=;0>`a1O(b^6mq>D)iv&+frF7| z{x19@MPR*ej3l=qz-DAc&bi7|SfsOgp9GFr%nI$dr$cPSV&xxPF%Rl4UP7*{;8m~1 z;riOWhpjANyw7+ED@R<3@_9HAWHEh#0dwnpy2Rjl)j|Er*Cgq4 zqxOd%oP4RDWvBBv`(u2?b94*mnXnvHl)G4}6;=IwP(4BNkJ0|*KTq&_n#Vtiee0cf zZ$G@jNe=z!?}qPX!29{xOEhx4y%*em>U<7ijVL^a@Ad4w(i!qJm6v2ILvhadsh<=-bOW5i{J|H8_pPV9#LxE} zdcPImBz`(`5T|&BHEvZ_6@C(lU->23>rZ1|F5}7`UkWIL zkK{P#l#3tywpE?fXBs{3oN$%jJao ziPAQp-puMQ0j0TZfRKt9fI7U}26%k^+yIZSYXo$Xpwfg0h4h6~4k0Nrc#Ry6}EQ}H6A_1y%t%gRUiE$d;UI}e!6;9WzY za409hd00ZT!@KL!uUzNQ9Uf77q#WhZiZ4hy-eltd@k90cvy})v?}3;a(pdc1_`Q1jF(*H7ra~Vi%=`x83LE| zJ-%sepCu+MPh}~;!@K4p#63NUU-juZsI~r3+D7wTt7wCuf%u zvdAAH&nZ~U7hp2AO9_P<&&XG{nDAq>059qx*e-~F{(lp=hQ{D;XYFETd1HMAb-(p- zCD;DFO_IIi>8AAk*YsTHaQyOIzvMIVa$&&smp{9HfAL-gX|7hcLg9=F>cj7^w)r33x;y79*0pm`bO%jkna8K z1UZD^hRb}T@cJJ5zGBqmx@1nJ<@@Y!ZJ+XNe2KA8yVNE#jB(Rr@PJc5;n2>t~I;&~vCV?QFkx!KsyzLu4#KGGP!kKl5jZOT_! z&b)d*TDh}!gcbk)n(2L+R43GU51;q02Zo>Ry=%j>RrA3OT<`kc^f$=mE(&5^D$nTQ9!)uGD;GMzp zc$V}*_AZR@tD3KFbxZFyj+hTLLBLn^7_IO4GEil#91qM;x3W=&1)`8=$g;G$s8z z5)E+&s}b-H0~3MYgxUPvb)RXtjSwP3FN%Yb)W@DRT>b>kZ!j8jMnICKh_{%ds_g*p zVEM{ww0>jA&+8@L5UR>83GP6`RDGV`31^*X6L0OehFZ(QkHdMq6HbK#;S6pi%ZS(O z^GMG>3a+@>)Uaw%}-|K`yhj&{6C(MrctD1pPn*rO3MjhJOzqf|K39`zU ze=kjex1(LYhZAzw7ZY|&h)zf{=UW|?6stkg| zsNDJ*zQcKWPUtzNOC=+!v;5g2JpJ;Aj=j<^^3&bz=#O$d^%+EjZ=h#pS$&+x-CdsMql=B@1IRe& zI$z=rjPYM*-^YzSS^H<4A+foB}1dX%DwSE!Az;pyW=4;!y7UAt7NRx&Sc?N-!NDedz zgM=sO;T?>SdlmjpmGDTqzn2qqUTz?1dtUXk`a`b6`FC)_zf-~=U7J_C)KT^Q`ongG zj?-As-$AYId-+dW;@5ohx+iflD2ngA$r9sbto+%>-|1v8z%rj@@LZ(RPoe%lMi1?N zs-G&-=nO=c^C4`<E4RITG;!_$Ng%F>wV+9d!DE$)JY z?{gmA|H-8+H=@?|PaQq6xcV=@Z+TM_`_&204N#>Z?6}D`pllT|qdN$Ew}7WlVk02f zCXIlXqjdR)ng9=v?jES72SPqn`zn8vW*`u2YljhJ*$qe+fQH0u2Sl&}(H^fM@cfe6 zRZoB=Q!T7C#nm+iiq~TtNbrvQ*2{4M>h-v0!82)1ecV$gz;zf;_jq1r?8vLH*?W6D z|ITob=sn(<1NE@t^d40S-_v0fNwTGdk#=}FO_IKt0OhN%?JG`?r@JeLRPmDZ{ZX36 zliZooM!?hdTH|*(m-s!rm*hX`TECZPC;Bn*fAiluGxzY`8prw0{Qf-0%0JJ(hb}$N z!q7>ky)=ruTlo+1h>DiU#23LAH@On~$GBJV_Kn$xU*X_^E@zwcS@Tz4jeHMp&z|mH z620Tyz2Nq&=z|S#r~!BuzP~1t1kq1K{r0!CZ)P1%k;}6yG@bKKk`ICOS*v5KATzn~ zb%xV$3Uz?C^PFVTb6jlpB6q5_Tlv)4)q9=k=!ZF#`$r_~Quc&TlSaU^AC!%N${VK< z@OqwxX29!m!UKV^HEFq%X$bri1w!Js1kx1f;ai%vK~ivOQ?Ns_7ZU-oDK!U{t@0Df zaf#a#JdEoNuq47`A1Bab6N#jd!H7~{I1^QeS7l-Xe9hj=b;9hDz320CRpz*Ii5rpd zy&TV94~r=4uSwEZn&;ikt&ThS>-~0+Yy3|9ca!eRIk#JrN7J;{|HDyhwbeP*>$R7# zwz-55ah}tt&(i0MXa#5aqLY$S+uu*V4Tj=1@?FQ;|9aX^??#_zyx8tP z?u6Xq>+p5L?&%`xo+r4YlD%tFq{3Ia!$Wjw^6>F^FSjb;JCtCYF>yjasif~^h}g?t zU)%Ti`dR&+ugR+4(+^7G_wwksk$xTQ>z6I-If2 z4pP0q{1=W1cxI#&FP%i^cna}zw!fcUMbWjmoBti`8&|F!*}BWoWf|-J{+$|18kV`M zuZb0LJlmAMYoUjU^&U9X0MvWr{T{v?r1P1d+Pb^`R@7~;9>2;?p`626Z!;mepguYd zdk((abC-aoy-dk0wIel!A}&k2RX@{1vGVk2TQv>EUm0ngP5s^<|@kmlzvmT^*BFxP^zR@geXr+9Nc_I9f9dklOd56Odj0GoU;GT$LS15tp5lZF zo#j6j7NYPq4To}Ak*rG_IH^3k&+_5@G)k{<)X(+avHQ0cUS_@jyG+qjzyRp;9X`)U z59|+XJR>jlo;K4t)Prxt=(iFF{0WSCzF}!TiMAKo)2(mksF?Fi(mw)WKLMAnYdTXz zpytV~HkPGAZ$T)(tn&Tw@*HLu z9@P+d`d$*gmn#NM{`&2Ep6(2uyB_Znebd^$r#~%;-{(x-y5HOD^UcGo{}~DY97i!C z@h2Z+U;l$U+ef-x{1Q@TJKJtw zSovCiZfS{|i9Q|mI48V6>74>zo3CZM>+wQz$D)~BZWANmu={m|u=OViPRPDG&=oi7 zE&{K&N-*TFY6cue#CB2*f#-3;Hw-t~6gY&tJ9sIuaM+a~2q*l$OTlwJimNt;vPX&Y zZe@|j2(e&9L+V!fPT1>Z)Z^9H`rAvwua`4vxH?YccS+y#zgH4}eXe+Wc5`)x|HV&7 zvzx7`&73`3wA#nHt3evQbD)58kmh}_^`j#c{{}xE-2_!g%Xo#Wr*7WV{X~~B0(8Q> z8;;qn(T8d8X%FngBJXK)o}b#8!c1Gc%J{>!L??-WV$MjWTh-4EaW zr8}R9wg9q{zFnGfp0x%9uwRXUH>b`JG-(7J-tQXla1UbWez~$0@UV!t6LGf{@H8<8 z^1CL$<9CLeH3Xi=iKY`{kC)q|DR7u^d6eeybpFWudAu_e9`^Dc*Y$Fn%7J)}9a;5! zbpk(5viCZaSMMQL-^=6W`dYrn`N@34aDcDp6Ok9pq>{du=hpllKIk?6{Yw1aj?df5 z5`%%$Lr=XK%}&jp{HIj9K1FY z@fwHxaJ6Q4@oVi{Ab?&TmT#&2u#Bqc;LKg z5sLgpkjQj$cjn!*f1|Z_;mZ2P+)|WX{FKy#`+Hovao2M@5|rz42jx2AS9$UulxD!& zS0^-zcP67w1Vz-EGzDIsHcDr^)K;yXPL8{mToHnJbGp5$@T?HH5Xl2QD>{{;_|{ar`0->aT6z0RtM5cV8uc!h+kQCsdjz+-2Ef-W zJ*+D9>}4Ympd|5)G6i*wfW!HD0v?`3Gf>qCc)ljhfT!=&2#jhR{3Jq$pRQ;i6j#mf zQf?Em_cG+V=D;Oq4_9I2=kxkFu_PzN_4s-|hpWf$754V*23M8n>u}B(xa({94!2(k z-}5y|`kvmjZ{O4RE9rYaC;A?)x+3<@>`uDI@A*fp`#%}AU;2h4AIiJYQnwd>4@-Dw zxjpP#nb?b{xU?-8^WgGOpYhlt6w62{*ZMgc0K(7xA&i4JAow>rQ(J#OnQlF}{nd>J zSQg33f8PwhxBZdaCVcrwg&k(9_rReBpxz_Tdib*K66oLl?8eH`t*AR4&tKt$u6~^4 z*C7e0?qduEIixde7i^whLxd4d1q<+Vs01ZhOmPswB@~2nr(cX#dw((7{@XttZSQBd zK((7)`f<0KCcluS5Ne$XsKY%<*pO|rtvJe-O{|AaqdriAxa&|qxbDiMFAwJ0^=H?ls z^)ptyGk}Ah7+2aLPU1%w#-3e7#Vul2@;td>*NEqx+Ye_u>zwKrZiIdf$iwHk>4C$K z`LsTzOZZN5>tSz)$9uTh^>0_7;=}mYqnN9I=h|D*OtN+C8@W;FOx(`@5VYY8^y8Z- zdU{XWfNK4;ooz(hRM=xL@on-xh|}a}SQ}i9rZ<0PdbYj#)t_CzC*#CNIX}RwdX#en zJa1hyP}c}J+$5R-hZS)afvOVy$JG!F%MP{#9(K2WE`i5a+u(6^w@IVm61d>2{(62- z+lwKo=4&G09>14F?`1iBQ`qCHL|$=ClD@;a^}grd@0z~ngW(#PZ%*tzeVi*|-z4$7 zW^7zO#l2+89K>;*-T#Rw{m6GLoan6ejz-zszs(x|8LsX9eQ=IPK^te7_#E(s(eETU z1QB0Pxz;Zm&0it7T=bLwEnzerlq}hl3qz$>D{+~J$k66y@{BK`pX`MpP3#Q4u@x^$~|u?pYQjhKZq1?6e;2e zu!(5|RKoaDT(PKPWhkVTf88C>;mW=%#H~cFoc@~U5|Wq7{*O8Q=A znpu~PT}dL1twV3CJKHTOVOkZFcGOnLTu;QMV2uRr@!TX(kJ=33x~^H)(7V_Ao7 z0L$#)5KaKbV5pez+<;PJz-sFv2xtzR+ykM^C0YI=WzB4Mq6@v{-a`oC?dczidPp+e z{hlA-o$k_;yB=S6rDlCn=L*#862Z}5T{GZt<0jTPO@YII&|D|j)%W)Ptfti^dxw7- zYx!Q6yH5P~8i#@}Ps8-A6T8|@yZt8m{2z+uI~!5^&T{W`uRz70=j`V%&ajMk(HQoe zLwzvq7*OYdXVbsVDnE1^0 zfcV10=e_KKz`YM!(8K}P;f6UT^@VR8%9l!Uemje1P9%#T&C}>q)-V2j0I&^6e+S56 z7HPrY5w&)I$`OQIo8iqtPMhGOZPb%*k#U7X#D6l5liRIy`=3r1vm0OjQ+IW~K;asJ zJ3%(tagIP;6X1>5uSUT0J*sBF^Vc;5e$IfeC41Q6$DKQ%G?(aIigoxVje)1T=D>-g zhdtfP^>CBxQuBV{o64)ld;99~_3-0L_FkU%zlYu3%X;789!JvmGQ?p%rEZoDRm02V<5wv7lk>;h;)2W32jU#LcZ zNBNU&flhv%M`igUhDo#Cw0O6lcUOfJla(WiK*pbey+rb;KW@;LnDM4d$l# z2#`I)5pUagiCZITjdlL3WW70^Bv)JQc;(%Pob4ZW4wV@P41k9Z-RHOmhQs7Je#vL* z)tm!&&e+3`{u2I;$D@qz2dRK{&z@U2QpEkmRzCA>EDfAXqvCr&1xpzC=_t{bW!8_8 zp}iXebu+|67TE}F#aZ!Xa;?Nk`yW6f?xrWU{%L!DX5+2WM&NS8IRai&lSV+d4+_Q+ z@T3}ox< z?s~e%SIc-*zqifXyjwZWB-GdJ>v`%DeqFNP2|v_|SJV7^R^#M%VqcFR7v4?MufsP< z{v#6q%%o17ckVK#r(whh-ydGcY$Z%@9a!y0z!f!zd; zU9ue}JvTidOJAN_m)Gx|nTJ?+=dWTHz@=>YRjiA3SL*_5NAQ_R^;#GRD8@K~U3^ZbVo5>%CPh5ARO>VAOl#b#@KtwDM2xTINKFt{HH*o=F-3 zA$~CdP5_!1f_mO36?TGHEnjgi@w;TK@NNXQX+pciT~GJ;YQ2x+_jW!`8BZ&(fBU9! zGOiuYXpT#pB<{^OqqOsGuJ|+PTk^to&yK13hs)hk(yj4-ALRbM;!! z@XORC{w7Yj4!8F!`?s!>?qNLV2Ix+K&DE$q6D^+aC(-eCEB-FF7@f`Xh>`17>M2`|NXd?{6o_SENuN^d%m^))=zW680QF(W{k$GU@a9d z<0!fQxJJMwEf0ITYX%gayZOJ#$Ue>}e~B{0Xzx$r*R0@A5@8v}Y6_4In6E)YDunh$Gw|MdXp2H2ef zm!r;yqV!gjcQ)f__6iorUE3`n$wcNyl1z$$p=XcMi5A?JRME7)flU)Mi%_Pmsk<9(-E62_|XJ zeqfw%dmbm?zSK}pceuLi`Reh{V%UlQ)0FfF{q)n!m35um$LX1QG_`fNxWI9{N0OA2 zGz%nt&g_SLbC6GTia9YkJ`S@^#9uQHaX6N^do=!aD>zv~B4IsX=ETh6 z%K)B0n*IX-Vx64)Zt%_=W`9#cDt5PkvUq8Gw5y^K*k%VoC&?l$IjkmW`j6Q`a4&8b zztEnUemK2y`|7`Xjgtq<@;*^&1nTDrcy+D`a0$)Bo?g`qDDI=t%SQ13|Mt!$Mv~)9 z%$bpyRbBm>p6+>2!=X4Fk-L1YthX$A*QQT~44({WZ}!0l>*Ry)1~@$J(ZDWzSRd?z zZ(hKFVFQAJ1(w)dh?ZoMD=j5*mqX5Q_?kyQX8Ki+%#8H+XXf8sozvA-)m_zH-4i*} zl^KzdfBf-hWc-i#;}2mDgE$MSWk8vVrWL+g22>-}wBFZqFH3>m*K;pRfojaX?(6f% zeO9~%t@k)J`zlWQ&gI-ICci$T{Ylf+GwOTp9g|1w<0hK8|0+&>?Zr#a#I5$ZH1_`h zPyQtWXZ=1V`FVENdj?S&*)-Ss2cP3FKLp}-6wE(GQ1<-oEU)o zlfA%OtKx$rxV_GAaSZr{YVjkUb-X$v829*iC@{FhIiC6*)JdhljeJ0}3?S>?4R8Bm z7<}Hb-gc1MPZ-=0crq2V8L1(%L%%CQNSJEowK4IFC2b8^V}k{_#P0X*rGfdhX1q1F@>}J*MP4tD*Ndq% zO}ewAfKZ^jTRDnMG6huQ?)8ZyuUO*-TL*v zx+kj(WFX9a1YYamE5Nh)p_TyEkNDVO4N+X23{jHA13Ck4wgQaV z#AEdUac)i1uCLkF*8CgZT8M_T`X(mOCeV-QE3hAOsvYWizcSrP@nRl)9{GDF>yxqZTAE#B~I$s1m{w%9uFx9v=lqUmSeqHnTi<&1>-H0K8W zTViAA*Fe|qQ`>Gyc}hyNVUM5kZLM=n{C@uq-^l&YNAvgmm0L;kf%hMpOb3*Q^X^wl zxbp!N=A}y{KC%B$^(V~zC&UkE&CYs$G81I=?-20k zk{@J0qAJ!iv)iC-5>$!+!&(G@A@$1cgDB_X-JCI(>9=q;xXF!&#+bJ#u^Kk~x5J>e zQGe?Gr$7F&m)sCApqFJpV96mC0Xd5%DaWwB1NlP-{HVo1i>L-% z&DZ*Y~XHUT4+xUn}SKwO>gD%Xfc@ zE$Y2XR}-RJCrS2g`uU=@_6Ky31v>2WbXzQ8e&Nk;#RruV#oxe;zf0rK&HV@ze*=u= zEcJiNC-oqmY5&p-!mYdSZEhiIr`{hI%XulY|M$v`V>xtOI+n^@B}b(|b+A7wJoo&# zDWHs9KeTFE>(_iu4}PxpiTwu@t^Wolc$N-cYb|{}%j|{NPk#h}OUzGx7t`l7gVii! zlI)>cSOgT0{h{hz9WL3SpvWo(2%G`4+e{a%qxJk>gp1YGWdG0DV7*>zf8^Pqy|%U4 zie|iYuI?rErx=NUeDHuctN@_SVk!{qB0T(6x5c2>(`Q8h5XL`BjlN1ReJ|DgYI;}! z;K84HrhS)5_O=(sTV8N(VFqp9);sI<>o!Q|1K7nasrLTB2-7-xE!L*PFl6Z?(S1&Qgv)`e%OdT}Y^g7DC3~lD~{4?f;No7LDJ=!FII0 zwLZP*r8ig6_+QVzph0VTtm=_u==d`dU=GM}Q$RbKGh034};BCU_7gqfr~#bG^c8SAq76D zWkAcT6QN8E$e|2t6qW+5W7zY47KUyCK$-t2=GceDZP@Zk&wkGhs^Kdf6#%+5{nUCU zOlPO!skAm9M^9U0XFHksJ%r5#`q}sCISW|0UI4}vn*N@-{l1%LX~p{W6yHrg)kR;H zIezJqTYMj^De#t~Ks0`T<#u!RJsxf0e^Yq&>vxlj4>`~QzaT|mL}&f(M+DA+IbI5A zH$2{2U2Wr|!0y0M)Y0n$t(F@cqiUadeBi+%aE&e1o15t3muF}EB$*DqDMI{YON?<6 z`D`gm#XB13D1$2%xa2_OC!fLR-0#@MLY|V<1F{~Pp*zdBJN2!EKV@e^KYO3^BR`1V zq2Qx>z4N|_qHX`V)%)N4k(cPYZNWjR)HnmOtV`0p1O&Oa-=TuTe)qcbx>p%UzRqEH z=L-Yxe&)1ZA4Ze!)z)Ddyu!I&_N+hC9#(!AI;WrATD)ZAc)H!Ly#&$EWpRwa>Yao6 zzQlQ&Nvw1~hxU1m7<_q@ z;#*>)bFO8!Wnf(cT+281Lt*@05WGXZ4?`QjPu*Mb`Q)=&Vmc2WY_-CMmo7IksV;ii zw|`iOAR236oC1J0LC&h-o}|T~8=rAqYda4M|F8mp_jXa^+drc}vPt!Yh8HEU-Gz%Y zQ=QP(qP6g9=Htb0qL=883tpUl3xACU*6_t=bO9iPG91W~xP zZR2~>wWxFR->q)Q^E=HieFv}*pY_Iv&~^0fU&t*e)YpTnhZKmR9-bK9M`Hf^HIX`Ia9)AtIVsq;3CU*(m~BYJ*~ z{=mXMgj0!Sk+Dw{?-(I9k90{-*y)oc%!5%b`{Uz+Da%@6_Uh-QR-dx$~)~Ky}zW^$l_jC@G)}T|eAvx=JX$U(FvrUF}l^ z6IDC}-k*BWa}VdP$7!hi*eH%tg26MixXU*WNY_&Ussp%#9!Z{?wSDAO8v(|r(u2QEjutDW6vqxww z4%PU3B2eDg+uvjrOCf;L=K$5At}lSOVFL5BTmVQre;Ebg!&?g*AA3L9S;~h@Pzahp zRfvj7KMclmzx(?gPYn+02~a>g*9lbZsyr47=s=<$aIf^SAk$R|anebd1#e-BsA;u1 z6Fie;>Aa~2-xq^oj zQ|jA7^ZSTm8#W5xXED}hJ&bSpb<^y0{Ny2{2{!Muv)>5E? zKtIN)<+OS&U(MJ1<2q}-nh-FJ`D<=2+jjbM-w)O|Z2D>Fg`J1qLtYuZ`E}`!`LWxl%8U~|b@%ZTMZ{G; z4hm?09S3X&a}p>}GA0I}Vqoc&K5kqUAE}pZQm=jY;>9Fw&srONk5PAtfIoi#!uSXH zzk~UHiiK7UI;$ZfP`-Kq)?HZ-Fkl199w3l zSs8dg#;WBMn3k{R>-}+^wcc^TpL?_Dw+|i^>+x^SLC-ZJ@Udkzy~1y_<|4Mh3+v~D zIlp7;>?8dY{ik8F+I6J7*(`~1;`8TBW}ai(XPSlePlId7YLc)U=flqFD-48{Y4nmH*f!v7Rk2PdhAXyH~~Ou;?85IfD-`5 zPT~oxKm`CrtD6yPUiZ0LzWd(6*VVpt@W4jE74NsXb5?_GQ^T3*^KZ^7E+hg7}D zr0O>)I?EvY6a#()_6>N7EXz8Y3HPyqeQ!gv6emK@kFgNk6#>8o_H*jq4g!OTH`~H* z;1grHLm?zk^KK6Wxuy<1uc;#Pa$*7f}(s<^JE8bLXHp1Ft8uQ^a)|e>VWGB5e zt0(nfiPiF0gDkTH{!E%$nIf8o;a=rEG?*E>O#g`dAa~*u=zES42#QP_(F1m-kh~^+ zFGdKwOaH(_#7fBCRhIL;6{P;djqiBBS$tu!ee;EzGQG6>4IKWv+S8tqC-#1aBM0vQ zP8J2KgY;x!=dd|G3RDNA>OfGve|XHQeNG3(z4=A`J~7TCSf#nTKHq42Xn^(bX?z7( zEr1}9iP1g#KIa8S<>%4!>P*EFdYB^;iHEKAr7jh}Sp(#?7! zOwM0l+rIv7&+f!0kh=FfdcTjHjyLvuhCH=2=xx=+HQnocqnmkk7pnG??t5L=vflpV zw>`7=@%ia?GYM-O!E9n#=}xF<=E*s-PXGm~17>w#sNO$3%GExn1LEF%jd9*x555A=e&fO=YvbuO@RnL;J~A=;yU(VZfyJ=BViJtk z*>=aIvIUYq^$5Fzmr2Y5sX6)zHF11V<9rzg^9$G%7KJhpp(m>q=T!kk|0qvA0iG!#*2AkYE4+52Hy$K~zq-Vab9)CDbLp1nd*TKa&-{1r{rT)GGh*EkH;R zivix^-a6%D@*eTHSQUsvkaYsjtm66@dw#Hr7!b4h!KURLddUV1GpU(u(*(5EB0d1o z){~BG8XI6$@Zm~HN{We+HWCJ24Ow)lop`Kwz_Vdb3;Y^(6!x#HtxW|s%>0xcmcSUd z2AFn2BZPUQcl%pG9fvpHgorR{7IYFE?2t=PyyrxdH<>>R8Z{XCd5@QodUlcbAX>UC zuZw8oIocS}J~qx_bw`#lt%LA@M?MINUw*F1Bfv>n{!tr!i}Hoj9`77D5IFzc{Zabw z<_vbVzou_-78DVx4N|vxeYkeA#{?R`3FBXb?#5P-+>Y3MDlRvly0?YZr-NmzwhI!&($;06xiblJJFary>p1XDwm@o=dKZ^-N&!KbT6sT(URSlwg z|L6!;`=k!_n!kVgComJt(HCFyYRLxSg@W07Y_JTp!><-0UW1nz=vl01zlp9p?*--> zW&oJ4e+ecODDa#uQUmO;I1XzeP&(`Y){OG3@OLc+xoMxfQX_Z4vOoj=Do$r$B>zyY za|p#*HbauandtX<33PjbL0$*OB~}Iu1w3B_qya+y06!dpTX9uf%dfC_sayguQ5#GT zja*i@f>HYBf&tCZ4#=;ewCes}ozG#U2hNAZm;7#+)u)kmpMsMR^hAW76 zD-2J}(D^1WFo9yZST6>pSnSt=Ve+~e)G*Ig%A(ijf!VOU@d zYws3n%KG!X{5tn?5OJem+yxzc*tDcYTq!I8LCL@?cnq2ZesOf;GU&tmmDAp#_Z0rF zfR#_dkc~$It;n4=2@`Fzd-RKKraeBS(d!s9enr1{R5Qs3CJ480%{~00kEX9RY0Z;$ zu6`Gjg`LCZgeg${Y)%**SN+6NpckX>H^B6IZhQ^ZK3xpVrDfpq_q<4a25QZ@dM8Sw zpk^>p+lFa{&&#}Z7TFhJO7rX@_#zBq2Gj3XL>M4o%mQhdhb|6*&h-uh(|kQ2wOxvR zKRDI;cAwKb#ktHUu{Xar{QL=iiYN6cP3w6#zkpQM(;IAgr}|vq2YM9H`pR=v!_TqD z`hj31PMIBJyf2}^7H***Pe_te86SamFiz9dW2+ zw>^IaREgD?eNO&nV9W=k*I9w^fnnL+*16X0x*xPZU*1^5m*jDK#PRpv!%}MRbNluC zy(L`AQJ|Fa9U&YAj!J>*Kv^Ats`rmt-|q8O7NM+3^EJKugk1e0T0JZDy?==*n>YjK z?|C&m@=R@Urk(~inr}u=<2%sk_~t6}>od5my#Pa*#hCsz_{%hBnL4P$V3u<8xGAR$ zq}F|E+_4xu&SLiB^`xf`niA=ztxR#SqJpqN%e)JiK6CjV`#Bh5@B4W0$L1!>4!3wg zpE8%ld8pSO1kUP|?QI|V2^6i=Q4 zg$MM>P6$yDeY{NwG6X9GOhS*4#P zd^7$uE8#kD3Zl`&d}LW0tKKm!V?6d*5=XB16^O-P_pfkzE1lr_ir%M_4G9JJKU5ss z|8BR?q#{!3vyd}pF}ARi9@nz|00xeCB60TfWs~>uL~PlV2#tQW9c1Arct&nw5cq_5 zw}qGA=TjzZt^K3*d+gvSYabMT6%+M_sOG!0qrjP^K)=uO%r@LLY{V2$4PP~pYI@M> z^tnOH4_;3DdN0AL2EOq8Yd`RU4m$ueKZeN@M5h+b)NvRKg2XHuV~H;iKE>j@ zhB4+cp6}DdB6tpsbec8zS7Ag`_!KMwIAZaC5uk`Ik6}W)fo!DKUKq)(>OD>CdGPj+ zx1>@}&t+}-+So@y|gJ*N5Tgp@qd5j=w7 zOJJlGn$|%gSV0VGnKZ}+fGqNEL6Rnt)t7{WZmnmX<$4%&K3iXZxbGak(m?5@>C<*r z`f58gecIaL@SP|Mob>Q9QN(b_jF194P$|e>1D2Mn-q(D6est$S`@FKYqUJXW_KYT3 zgB2UqJnq#uM_Qe8$ke}!P~+zAYpK4VVV+bX9i0G5%Xkk1F;rl z(=bS}9!T1-W?gtbas#J=G3OS8G9|28SV$o{3@TK~6T-^(G9Ss2L(KG`l+R8`pyNCb zoY=8Ip287NVh&_k3v^)oKJCi=EX1@QH zHVuf0Be-T7wdCHvzDM9mPQNU4PCW8~G;J*ta?xX}-D9SG_dX z=)VMpY-aSH2oW5AS~zENHQM)(1E1iZ!+sAF+$4wE$HW^zKzO<~HytN743cPyodAM*6ilH(8!t&4cncVI?U9X+f_B2n z1mg2!OQ>@n7R}bWa9j}pAPG|uK5_b)c`wr3Dh}C@;R zQSk7+FNFgN2cqS3AWc}Vy-)6PPxkebLp1l*ow9`n|4x~Hr92;&4uhEgb0kjb&&l`m zQ%X38_9!TzTFxk7IT(%tN2h=?ihcv5mOFZllL?_;`zI6Y$FVx=@9FUt50`UR-t%y+ zcBLnT0!{#!kQd?5=tBWzBu5=E6;7Y(+-*mJky7BO{dT0tIAD$f1qF0|&C$bAz)`?a zz)`?az)|1{qJZ-Oc!FN`nQW?R^n+?xT27xklSFZiIxz}p|2i=QT*Zz8gHym+00yU( zE9ofUDBvjIDBvh?W+>o%0M5*-d_o(dntWCB>Xkn%nH0{j&$;qvn*!DTcD7sVT6ab% z;4A=V^u@YnISM!mI0`rlI0_s@0cQa?h&t}x>7{^b?&H$b6#nU@ki&cs3XH4&3{tl% z<0vp@3OEbEmB*&lvn(9XyLX!X@zB}TGSL)p z7J!LnlSpddER|nNmV6+sdS_Y~bZ1w(VYd^ivs&qQNEpeDT z3XGfr&H^xUk~)Bn0*(TX0*(TX0+UYxX91Y}cjPd16c`@`PK)KhY4YRi0}k>NO95vA zcw%3@Yq+C;qkyA;qrj6)0cQbtlHa~-`}ir)OT$);w%7gfV>X#JC|xEKJBO8{z?q_e tvjCi_*XbJLDBvjIDBvjIC@>fW{y&XH9k;QxQ^WuO002ovPDHLkV1ggVwtD~o literal 0 HcmV?d00001 diff --git a/plugins/agentic-engineering/.claude-plugin/plugin.json b/plugins/agentic-engineering/.claude-plugin/plugin.json index 2ea50f1..34083ce 100644 --- a/plugins/agentic-engineering/.claude-plugin/plugin.json +++ b/plugins/agentic-engineering/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "agentic-engineering", "description": "The autonomous engineering system for repository portfolios and everything its agents need — engineer, read-only surveyor, meta-engineer and Flux troubleshooter agents; portfolio, product, spend and improvement workflows; GitHub, CodeRabbit review, security, library documentation, Go, Kubernetes, Flux, Talos, SvelteKit frontend, Stripe payments, engineering-practice, design, product-management, marketing, finance and productivity skills; and the MCP servers they use; configured by the consumer AGENTS.md", - "version": "7.1.1", + "version": "7.1.2", "author": { "name": "devantler-tech", "url": "https://github.com/devantler-tech" diff --git a/plugins/agentic-engineering/.codex-plugin/plugin.json b/plugins/agentic-engineering/.codex-plugin/plugin.json index 53bbbb0..13e1b3d 100644 --- a/plugins/agentic-engineering/.codex-plugin/plugin.json +++ b/plugins/agentic-engineering/.codex-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "agentic-engineering", "description": "The autonomous engineering system for repository portfolios and everything its agents need — engineer, read-only surveyor, meta-engineer and Flux troubleshooter agents; portfolio, product, spend and improvement workflows; GitHub, CodeRabbit review, security, library documentation, Go, Kubernetes, Flux, Talos, SvelteKit frontend, Stripe payments, engineering-practice, design, product-management, marketing, finance and productivity skills; and the MCP servers they use; configured by the consumer AGENTS.md", - "version": "7.1.1", + "version": "7.1.2", "author": { "name": "devantler-tech", "url": "https://github.com/devantler-tech" diff --git a/plugins/agentic-engineering/.mcp.json b/plugins/agentic-engineering/.mcp.json index 73498ae..1d1dc57 100644 --- a/plugins/agentic-engineering/.mcp.json +++ b/plugins/agentic-engineering/.mcp.json @@ -13,10 +13,9 @@ "url": "https://mcp.context7.com/mcp" }, "flux-operator-mcp": { - "command": "sh", + "command": "bash", "args": [ - "-c", - "[ -n \"$KUBECONFIG\" ] || { [ -n \"$HOME\" ] || { echo 'flux-operator-mcp: set KUBECONFIG or HOME' >&2; exit 1; }; KUBECONFIG=\"$HOME/.kube/config\"; }; export KUBECONFIG; exec flux-operator-mcp serve --read-only" + "${CLAUDE_PLUGIN_ROOT}/scripts/flux-operator-mcp.sh" ] }, "github": { @@ -38,10 +37,9 @@ "headersHelper": "bash \"${CLAUDE_PLUGIN_ROOT}/scripts/github-mcp-headers.sh\" \"${CLAUDE_PLUGIN_DATA}\"" }, "kubescape": { - "command": "sh", + "command": "bash", "args": [ - "-c", - "[ -n \"$KUBECONFIG\" ] || { [ -n \"$HOME\" ] || { echo 'kubescape: set KUBECONFIG or HOME' >&2; exit 1; }; KUBECONFIG=\"$HOME/.kube/config\"; }; export KUBECONFIG; exec kubescape mcpserver" + "${CLAUDE_PLUGIN_ROOT}/scripts/kubescape-mcp.sh" ] }, "siderolabs-docs": { diff --git a/plugins/agentic-engineering/CHANGELOG.md b/plugins/agentic-engineering/CHANGELOG.md index 090b708..f0ce816 100644 --- a/plugins/agentic-engineering/CHANGELOG.md +++ b/plugins/agentic-engineering/CHANGELOG.md @@ -1,5 +1,29 @@ # Changelog — `agentic-engineering` +## 7.1.2 — 2026-11-04 + +The plugin now passes the Claude plugin directory's blocking checks and carries the listing +details it asks for. Nothing a consumer configures changes. + +**Fixed** + +- `flux-operator-mcp` and `kubescape` start from scripts the plugin ships, + [`scripts/flux-operator-mcp.sh`](scripts/flux-operator-mcp.sh) and + [`scripts/kubescape-mcp.sh`](scripts/kubescape-mcp.sh), run by `bash` at + `${CLAUDE_PLUGIN_ROOT}`, instead of an inline `sh -c` program the directory's validator cannot + follow. They resolve `KUBECONFIG` exactly as before: `$HOME/.kube/config` when it is unset or + empty, any other value unchanged. A tool that does not substitute `${CLAUDE_PLUGIN_ROOT}` in a + server's arguments now reports these two servers as failed connections. +- The `github-mcp-headers.sh` self-test no longer ships stub values shaped like GitHub tokens, which + the directory's secret scan reported as a secret in a shipped file. + +**Added** + +- [`PRIVACY.md`](PRIVACY.md): the plugin collects no data itself; the policy lists what each bundled + server sends and to whom. The README links it. +- `.claude-plugin/icon.png`, the Devantler Tech orb at 512 × 512, for the directory listing. +- The README's Claude Code install line. + ## 7.1.1 — 2026-11-04 **Fixed** — the README now says why `github` excludes `delete_repository` although a plain probe diff --git a/plugins/agentic-engineering/PRIVACY.md b/plugins/agentic-engineering/PRIVACY.md new file mode 100644 index 0000000..1fc9198 --- /dev/null +++ b/plugins/agentic-engineering/PRIVACY.md @@ -0,0 +1,64 @@ +# Privacy + +The `agentic-engineering` plugin is a set of files that runs inside your own AI coding tool: +skills, agents, helper scripts and MCP server definitions. Devantler Tech runs no service for it. +The plugin has no backend and sends no telemetry, and Devantler Tech collects, stores, shares and +sells no personal data through it. + +What the plugin's servers send, and to whom, is set out below. Your conversation, including what +those servers return, also goes to the model provider your AI tool uses, under that provider's +terms rather than this policy. + +## On your machine + +- **Skills and agents** are instructions your tool loads. Anything they do, such as running `gh` + or `git`, runs through your tool's own tools and permissions. +- **GitHub sign-in (Claude Code only).** + [`scripts/github-mcp-headers.sh`](scripts/github-mcp-headers.sh) reads a GitHub token from a + `github-token` file you create in the plugin's data directory, or else from your GitHub CLI + login. It hands the token to Claude Code, which sends it only to GitHub's MCP server as the + `Authorization` header of the bundled `github` and `github-ghas-tools` servers. The script stores + the token nowhere and never writes it to an error message or a log. +- **Cluster servers.** [`scripts/flux-operator-mcp.sh`](scripts/flux-operator-mcp.sh) and + [`scripts/kubescape-mcp.sh`](scripts/kubescape-mcp.sh) start the Flux and Kubescape servers against + the clusters in your kubeconfig. They talk to your clusters, and Kubescape also downloads its + released policy bundle from GitHub each time it starts. +- **Terraform Registry server.** `terraform-registry` runs locally and looks providers and modules + up in HashiCorp's public Terraform Registry. + +## Hosted servers + +Every other bundled server is hosted by a third party. When an agent calls one of its tools, the +request goes to that service, together with what the agent passes it: a search, a repository or +package name, a version, or code. Each service handles it under its own privacy policy. + +| Server | Operated by | +|---|---| +| `aws-knowledge` | Amazon Web Services | +| `cloudflare-docs` | Cloudflare | +| `context7` | Upstash | +| `github`, `github-ghas-tools` | GitHub | +| `siderolabs-docs` | Sidero Labs | +| `stripe` | Stripe, once you sign in to it | +| `svelte` | The Svelte maintainers | + +In Codex, the plugin also offers optional app connectors for iCloud Mail, iCloud Calendar, +LinkedIn and Codex Security. None connects unless you choose it. Each then works under its +operator's terms. + +## Your choices + +- Disable any server in your tool's MCP settings to stop it contacting its service. Denying single + tools does not stop the connection. +- The only file the plugin reads that you create is the optional `github-token` in its data + directory. Delete it at any time. Claude Code removes that directory when you uninstall the + plugin from the last place it is installed, unless you pass `--keep-data`. +- Uninstalling the plugin stops all of the above. + +## Changes and contact + +Changes to this policy ship with the plugin and are listed in [`CHANGELOG.md`](CHANGELOG.md). +Ask questions in the repository's +[issues](https://github.com/devantler-tech/agent-plugins/issues). Report a privacy or security +problem privately through the repository's +[security advisories](https://github.com/devantler-tech/agent-plugins/security/advisories/new). diff --git a/plugins/agentic-engineering/README.md b/plugins/agentic-engineering/README.md index ff6a46d..dcdae1a 100644 --- a/plugins/agentic-engineering/README.md +++ b/plugins/agentic-engineering/README.md @@ -7,11 +7,22 @@ the [engineering toolbox](#the-engineering-toolbox) and [MCP servers](#bundled-m agents work with. The generic role lives here; each consumer supplies its organization-specific configuration through its canonical `AGENTS.md`. +Install it in Claude Code (2.1.275 or later) with: + +```text +/plugin install agentic-engineering --marketplace devantler-tech/agent-plugins +``` + +The [installation guide](../../docs/installation.md) covers Copilot CLI, VS Code and Codex. + Released versions and the upgrade steps each breaking release needs are in the [changelog](CHANGELOG.md). A plugin's version is its cache key, so an install that never moves off an old version keeps serving that version's definitions — check what a deployment actually loaded before assuming it has a change the changelog lists. +[Privacy](https://github.com/devantler-tech/agent-plugins/blob/main/plugins/agentic-engineering/PRIVACY.md): +the plugin collects no data itself; that policy lists what each bundled server sends and to whom. + ## What it includes Four agents: @@ -180,10 +191,10 @@ recorded in [`resources/THIRD-PARTY-NOTICES.md`](resources/THIRD-PARTY-NOTICES.m | `aws-knowledge` | AWS's hosted knowledge server: AWS documentation, regional availability and AWS's own guidance, read-only | Nothing; it works without an AWS account | | `cloudflare-docs` | Cloudflare's hosted documentation search: DNS, certificates, R2 and the rest of Cloudflare, read-only | Nothing; it is public | | `context7` | Upstash's Context7: current documentation and code examples for libraries and frameworks, read-only | Nothing; it works without an account | -| `flux-operator-mcp` | A live cluster's Flux resources, read-only, for `gitops-cluster-debug` and `flux-troubleshooter` | The [`flux-operator-mcp`](https://fluxcd.control-plane.io/operator/mcp/) binary, a POSIX `sh`, and cluster access through `KUBECONFIG` or `~/.kube/config` | +| `flux-operator-mcp` | A live cluster's Flux resources, read-only, for `gitops-cluster-debug` and `flux-troubleshooter` | The [`flux-operator-mcp`](https://fluxcd.control-plane.io/operator/mcp/) binary, `bash`, and cluster access through `KUBECONFIG` or `~/.kube/config` | | `github` | GitHub's everyday tools: repositories, issues, pull requests, Actions, labels and projects, read, and issue, label, comment, branch, new pull request and project writes; merging, pull request edits, reviews, repository creation and deletion, file writes and workflow runs are excluded | A GitHub sign-in, below | | `github-ghas-tools` | GitHub's read-only security tools | A GitHub sign-in, below | -| `kubescape` | A live cluster's Kubescape results, read-only: vulnerabilities, configuration scans, SBOMs, network and RBAC exposure | The [`kubescape`](https://kubescape.io/docs/install-cli/) CLI (v4 or later), a POSIX `sh`, and cluster access through `KUBECONFIG` or `~/.kube/config` | +| `kubescape` | A live cluster's Kubescape results, read-only: vulnerabilities, configuration scans, SBOMs, network and RBAC exposure | The [`kubescape`](https://kubescape.io/docs/install-cli/) CLI (v4 or later), `bash`, and cluster access through `KUBECONFIG` or `~/.kube/config` | | `siderolabs-docs` | Sidero Labs' search of the Talos Linux and Omni documentation | Nothing; it is public | | `stripe` | Stripe's hosted server: Stripe documentation, reads and writes on your Stripe account, analytics, and money movement | A Stripe sign-in, below | | `svelte` | The Svelte team's hosted server: Svelte 5 and SvelteKit documentation, the `svelte-autofixer` and playground links, all read-only | Nothing; it is public | @@ -197,8 +208,9 @@ hosted by a third party, so every call to one, including a documentation search, service. If your agents must not contact a third party, disable its server in your tool's MCP settings; denying single tools does not stop the connection. -`kubescape` runs `kubescape mcpserver` from the Kubescape CLI, through the same `sh` wrapper as -the Flux server, so it reads every cluster in your kubeconfig the same way. Its tools read the +`kubescape` runs `kubescape mcpserver` from the Kubescape CLI, through +[`scripts/kubescape-mcp.sh`](scripts/kubescape-mcp.sh), which resolves the kubeconfig the same way +as the Flux server's launcher, so it reads every cluster in your kubeconfig the same way. Its tools read the cluster and the results the in-cluster Kubescape operator stores. Its only write-shaped calls are server-side dry-run patches, which change nothing; its remediation tool never applies a fix, and its admission-policy tool only drafts YAML. Its stored results exist only on a cluster that runs @@ -239,8 +251,13 @@ A local server whose binary is missing reports a failed connection and leaves th The Flux server starts with `--read-only`, so it can read, trace and diff but never apply, delete, reconcile, suspend or resume; hand fixes to your GitOps delivery instead. `flux-operator-mcp` refuses to start unless the `KUBECONFIG` environment variable is set, so the plugin starts it -through `sh`, which sets `KUBECONFIG` to `$HOME/.kube/config` when your environment leaves it -unset or empty and passes any non-empty value unchanged. It can read every cluster in that +through [`scripts/flux-operator-mcp.sh`](scripts/flux-operator-mcp.sh), which sets `KUBECONFIG` to +`$HOME/.kube/config` when your environment leaves it unset or empty and passes any non-empty value +unchanged. Both cluster servers start from a script the plugin ships, named by +`${CLAUDE_PLUGIN_ROOT}`, rather than from an inline shell program, so a plugin directory's +validator can read what they run. A tool that does not substitute `${CLAUDE_PLUGIN_ROOT}` in a +server's arguments reports both as failed connections and leaves the rest working; Claude Code +and VS Code substitute it. It can read every cluster in that kubeconfig, not only the current context: its read-only `set_kubeconfig_context` tool switches between them, and it can read workload logs (Secret values are masked by default). Every session that loads this plugin gets that read access, including unattended runs. To narrow it, point diff --git a/plugins/agentic-engineering/plugin.json b/plugins/agentic-engineering/plugin.json index 2ea50f1..34083ce 100644 --- a/plugins/agentic-engineering/plugin.json +++ b/plugins/agentic-engineering/plugin.json @@ -1,7 +1,7 @@ { "name": "agentic-engineering", "description": "The autonomous engineering system for repository portfolios and everything its agents need — engineer, read-only surveyor, meta-engineer and Flux troubleshooter agents; portfolio, product, spend and improvement workflows; GitHub, CodeRabbit review, security, library documentation, Go, Kubernetes, Flux, Talos, SvelteKit frontend, Stripe payments, engineering-practice, design, product-management, marketing, finance and productivity skills; and the MCP servers they use; configured by the consumer AGENTS.md", - "version": "7.1.1", + "version": "7.1.2", "author": { "name": "devantler-tech", "url": "https://github.com/devantler-tech" diff --git a/plugins/agentic-engineering/scripts/flux-operator-mcp.sh b/plugins/agentic-engineering/scripts/flux-operator-mcp.sh new file mode 100755 index 0000000..18f9075 --- /dev/null +++ b/plugins/agentic-engineering/scripts/flux-operator-mcp.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# Start the bundled `flux-operator-mcp` server read-only. ../.mcp.json runs this file as the +# server's command, so a plugin directory's validator can read exactly what the plugin starts +# instead of an inline `sh -c` program it cannot follow. +# +# flux-operator-mcp refuses to start unless the KUBECONFIG environment variable is set. This sets +# it to $HOME/.kube/config when the environment leaves it unset or empty, and passes any +# non-empty value through unchanged. `--read-only` keeps the server from applying, deleting, +# reconciling, suspending or resuming anything. +# +# The server speaks MCP over stdin and stdout, so this script writes nothing to stdout itself and +# replaces itself with the server. +# +# Usage: flux-operator-mcp.sh (no arguments) +# Exit codes: the server's own; 1 neither KUBECONFIG nor HOME is set; 2 usage error; 127 the +# flux-operator-mcp binary is not on PATH. +set -euo pipefail + +if [ $# -gt 0 ]; then + echo 'usage: flux-operator-mcp.sh' >&2 + exit 2 +fi + +if [ -z "${KUBECONFIG:-}" ]; then + if [ -z "${HOME:-}" ]; then + echo 'flux-operator-mcp: set KUBECONFIG or HOME' >&2 + exit 1 + fi + KUBECONFIG="$HOME/.kube/config" +fi +export KUBECONFIG + +exec flux-operator-mcp serve --read-only diff --git a/plugins/agentic-engineering/scripts/flux-operator-mcp.test.sh b/plugins/agentic-engineering/scripts/flux-operator-mcp.test.sh new file mode 100755 index 0000000..9dbb735 --- /dev/null +++ b/plugins/agentic-engineering/scripts/flux-operator-mcp.test.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash +# Hermetic contract for flux-operator-mcp.sh: a stub `flux-operator-mcp` stands in for the server, +# so no cluster and no real kubeconfig is used. +set -euo pipefail +here=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +launcher="$here/flux-operator-mcp.sh" +bash_bin=$(command -v bash) +work=$(mktemp -d) +trap 'rm -rf "$work"' EXIT +mkdir -p "$work/bin" "$work/empty" "$work/home" + +fail() { echo "FAIL: $*" >&2; exit 1; } + +# The stub records its arguments and the KUBECONFIG it received, then echoes stdin to stdout the +# way a stdio MCP server answers, so a test can prove the launcher passes the protocol streams +# through untouched. It uses bash builtins only: the hermetic PATH holds nothing but the stub. +cat > "$work/bin/flux-operator-mcp" < "$work/args" +printf '%s' "\${KUBECONFIG-}" > "$work/kubeconfig" +while IFS= read -r line || [ -n "\$line" ]; do printf '%s\n' "\$line"; done +STUB +chmod +x "$work/bin/flux-operator-mcp" + +run() { # expected-exit launcher-args... -- env-assignments... + local expected=$1 status=0 args=() + shift + while [ $# -gt 0 ] && [ "$1" != -- ]; do args+=("$1"); shift; done + [ $# -gt 0 ] && shift + rm -f "$work/args" "$work/kubeconfig" + printf '{"jsonrpc":"2.0","id":1,"method":"ping"}\n' | + env -i "$@" "$bash_bin" "$launcher" ${args[@]+"${args[@]}"} > "$work/out" 2> "$work/err" || + status=$? + [ "$status" -eq "$expected" ] || fail "exit $status, expected $expected: $(cat "$work/err")" +} + +expect_server() { # kubeconfig description + [ "$(cat "$work/args")" = "serve --read-only" ] || + fail "$2: the server did not start with exactly 'serve --read-only': $(cat "$work/args")" + [ "$(cat "$work/kubeconfig")" = "$1" ] || fail "$2: KUBECONFIG was $(cat "$work/kubeconfig"), expected $1" + [ "$(cat "$work/out")" = '{"jsonrpc":"2.0","id":1,"method":"ping"}' ] || + fail "$2: stdout carried more than the server's own output: $(cat "$work/out")" + [ ! -s "$work/err" ] || fail "$2: wrote to stderr: $(cat "$work/err")" +} + +# 1. With KUBECONFIG unset, the server reads $HOME/.kube/config. +run 0 -- PATH="$work/bin" HOME="$work/home" +expect_server "$work/home/.kube/config" "unset KUBECONFIG" + +# 2. An empty KUBECONFIG counts as unset, as the server itself would refuse it. +run 0 -- PATH="$work/bin" HOME="$work/home" KUBECONFIG= +expect_server "$work/home/.kube/config" "empty KUBECONFIG" + +# 3. A non-empty KUBECONFIG, including a list of files, passes through unchanged. +run 0 -- PATH="$work/bin" HOME="$work/home" KUBECONFIG="$work/a.yaml:$work/b yaml" +expect_server "$work/a.yaml:$work/b yaml" "explicit KUBECONFIG" + +# 4. Neither KUBECONFIG nor HOME: refuse, name the fix, and never start the server. +run 1 -- PATH="$work/bin" +[ ! -e "$work/args" ] || fail "started the server without KUBECONFIG or HOME" +[ ! -s "$work/out" ] || fail "wrote to stdout without KUBECONFIG or HOME" +grep -q 'set KUBECONFIG or HOME' "$work/err" || fail "the refusal does not name the fix: $(cat "$work/err")" + +# 5. Arguments are a usage error, so nothing can drop or override --read-only. +run 2 --read-write -- PATH="$work/bin" HOME="$work/home" +[ ! -e "$work/args" ] || fail "started the server despite a usage error" +[ ! -s "$work/out" ] || fail "wrote to stdout for a usage error" + +# 6. A missing server binary fails with the shell's not-found status and no stdout. +run 127 -- PATH="$work/empty" HOME="$work/home" +[ ! -s "$work/out" ] || fail "wrote to stdout without a server binary" + +printf 'flux-operator-mcp: PASS\n' diff --git a/plugins/agentic-engineering/scripts/github-mcp-headers.test.sh b/plugins/agentic-engineering/scripts/github-mcp-headers.test.sh index 3ed0122..d79aeec 100755 --- a/plugins/agentic-engineering/scripts/github-mcp-headers.test.sh +++ b/plugins/agentic-engineering/scripts/github-mcp-headers.test.sh @@ -1,6 +1,11 @@ #!/usr/bin/env bash # Hermetic contract for github-mcp-headers.sh: a stub `gh` stands in for the GitHub CLI, so no # network and no real credential is used. +# +# The stub tokens are deliberately not shaped like GitHub tokens (no `gho_`, `ghp_` or +# `github_pat_` prefix). The helper accepts any token of letters, digits and underscores, so the +# shape proves nothing here, while a realistic one makes secret scanners, the Claude plugin +# directory's among them, report this shipped file as holding a secret. set -euo pipefail here=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) helper="$here/github-mcp-headers.sh" @@ -43,25 +48,25 @@ expect_header() { # token description } # 1. The GitHub CLI's github.com login supplies the token when no data directory is given. -run 0 -- PATH="$work/bin" STUB_TOKEN=gho_cliToken123 -expect_header gho_cliToken123 "gh token header" +run 0 -- PATH="$work/bin" STUB_TOKEN=stubCliLoginToken +expect_header stubCliLoginToken "gh token header" [ "$(cat "$work/gh-calls")" = "auth token --hostname github.com" ] || fail "gh was not asked for exactly the github.com token: $(cat "$work/gh-calls")" # 2. A github-token file in the data directory wins, and gh is never consulted. -printf 'github_pat_Narrow_42\n' > "$work/data/github-token" -run 0 "$work/data" -- PATH="$work/bin" STUB_TOKEN=gho_cliToken123 -expect_header github_pat_Narrow_42 "token file header" +printf 'stubNarrowFileToken\n' > "$work/data/github-token" +run 0 "$work/data" -- PATH="$work/bin" STUB_TOKEN=stubCliLoginToken +expect_header stubNarrowFileToken "token file header" [ ! -e "$work/gh-calls" ] || fail "gh was called although the token file exists" # 3. A data directory without the file falls back to the github.com login. -run 0 "$work/nodata" -- PATH="$work/bin" STUB_TOKEN=gho_cliToken123 -expect_header gho_cliToken123 "fallback header" +run 0 "$work/nodata" -- PATH="$work/bin" STUB_TOKEN=stubCliLoginToken +expect_header stubCliLoginToken "fallback header" # 4. A credential-named variable is never read: Claude Code strips those from a plugin helper, so # relying on one would silently send the broader login instead. -run 0 -- PATH="$work/bin" STUB_TOKEN=gho_cliToken123 GITHUB_SECURITY_MCP_TOKEN=github_pat_Ignored_1 -expect_header gho_cliToken123 "credential variable ignored" +run 0 -- PATH="$work/bin" STUB_TOKEN=stubCliLoginToken GITHUB_SECURITY_MCP_TOKEN=stubIgnoredEnvToken +expect_header stubCliLoginToken "credential variable ignored" # 5. A failing GitHub CLI login yields no output and exit 1, never an empty bearer. run 1 -- PATH="$work/bin" STUB_FAIL=1 @@ -75,7 +80,7 @@ run 1 "$work/nodata" -- PATH="$work/empty" # A configured token file that cannot be used must fail without consulting gh, so a working gh is # on PATH for these cases: a helper that fell back to it would exit 0 and be caught. refused_without_fallback() { # description helper-arg - run 1 "$2" -- PATH="$work/bin" STUB_TOKEN=gho_cliToken123 + run 1 "$2" -- PATH="$work/bin" STUB_TOKEN=stubCliLoginToken [ ! -s "$work/out" ] || fail "printed output for $1" [ ! -e "$work/gh-calls" ] || fail "fell back to gh for $1" } @@ -105,22 +110,22 @@ refused_without_fallback "a data path that is not a directory" "$work/notadir" # 9. An unreadable token file is a failure, not a silent fallback to the broader login. if [ "$(id -u)" -ne 0 ]; then - printf 'github_pat_Narrow_42\n' > "$work/data/github-token" + printf 'stubNarrowFileToken\n' > "$work/data/github-token" chmod 000 "$work/data/github-token" - run 1 "$work/data" -- PATH="$work/bin" STUB_TOKEN=gho_cliToken123 + run 1 "$work/data" -- PATH="$work/bin" STUB_TOKEN=stubCliLoginToken [ ! -s "$work/out" ] || fail "printed output for an unreadable token file" [ ! -e "$work/gh-calls" ] || fail "fell back to gh for an unreadable token file" chmod 600 "$work/data/github-token" # 9a. A data directory that cannot be searched hides the token file, so it fails closed. mkdir -p "$work/locked" - printf 'github_pat_Narrow_42\n' > "$work/locked/github-token" + printf 'stubNarrowFileToken\n' > "$work/locked/github-token" chmod 600 "$work/locked" refused_without_fallback "an unsearchable data directory" "$work/locked" chmod 700 "$work/locked" fi # 10. More than one argument is a usage error. -run 2 "$work/data" extra -- PATH="$work/bin" STUB_TOKEN=gho_cliToken123 +run 2 "$work/data" extra -- PATH="$work/bin" STUB_TOKEN=stubCliLoginToken [ ! -s "$work/out" ] || fail "printed output for a usage error" # 11. The two servers this helper signs in keep their limits. github's exclusions remove the diff --git a/plugins/agentic-engineering/scripts/kubescape-mcp.sh b/plugins/agentic-engineering/scripts/kubescape-mcp.sh new file mode 100755 index 0000000..b8072ed --- /dev/null +++ b/plugins/agentic-engineering/scripts/kubescape-mcp.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# Start the bundled `kubescape` MCP server (`kubescape mcpserver`). ../.mcp.json runs this file as +# the server's command, so a plugin directory's validator can read exactly what the plugin starts +# instead of an inline `sh -c` program it cannot follow. +# +# It resolves the kubeconfig the same way as ./flux-operator-mcp.sh, so both servers read the same +# clusters: KUBECONFIG is set to $HOME/.kube/config when the environment leaves it unset or empty, +# and any non-empty value passes through unchanged. +# +# The server speaks MCP over stdin and stdout, so this script writes nothing to stdout itself and +# replaces itself with the server. +# +# Usage: kubescape-mcp.sh (no arguments) +# Exit codes: the server's own; 1 neither KUBECONFIG nor HOME is set; 2 usage error; 127 the +# kubescape binary is not on PATH. +set -euo pipefail + +if [ $# -gt 0 ]; then + echo 'usage: kubescape-mcp.sh' >&2 + exit 2 +fi + +if [ -z "${KUBECONFIG:-}" ]; then + if [ -z "${HOME:-}" ]; then + echo 'kubescape: set KUBECONFIG or HOME' >&2 + exit 1 + fi + KUBECONFIG="$HOME/.kube/config" +fi +export KUBECONFIG + +exec kubescape mcpserver diff --git a/plugins/agentic-engineering/scripts/kubescape-mcp.test.sh b/plugins/agentic-engineering/scripts/kubescape-mcp.test.sh new file mode 100755 index 0000000..8372118 --- /dev/null +++ b/plugins/agentic-engineering/scripts/kubescape-mcp.test.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash +# Hermetic contract for kubescape-mcp.sh: a stub `kubescape` stands in for the server, +# so no cluster and no real kubeconfig is used. +set -euo pipefail +here=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +launcher="$here/kubescape-mcp.sh" +bash_bin=$(command -v bash) +work=$(mktemp -d) +trap 'rm -rf "$work"' EXIT +mkdir -p "$work/bin" "$work/empty" "$work/home" + +fail() { echo "FAIL: $*" >&2; exit 1; } + +# The stub records its arguments and the KUBECONFIG it received, then echoes stdin to stdout the +# way a stdio MCP server answers, so a test can prove the launcher passes the protocol streams +# through untouched. It uses bash builtins only: the hermetic PATH holds nothing but the stub. +cat > "$work/bin/kubescape" < "$work/args" +printf '%s' "\${KUBECONFIG-}" > "$work/kubeconfig" +while IFS= read -r line || [ -n "\$line" ]; do printf '%s\n' "\$line"; done +STUB +chmod +x "$work/bin/kubescape" + +run() { # expected-exit launcher-args... -- env-assignments... + local expected=$1 status=0 args=() + shift + while [ $# -gt 0 ] && [ "$1" != -- ]; do args+=("$1"); shift; done + [ $# -gt 0 ] && shift + rm -f "$work/args" "$work/kubeconfig" + printf '{"jsonrpc":"2.0","id":1,"method":"ping"}\n' | + env -i "$@" "$bash_bin" "$launcher" ${args[@]+"${args[@]}"} > "$work/out" 2> "$work/err" || + status=$? + [ "$status" -eq "$expected" ] || fail "exit $status, expected $expected: $(cat "$work/err")" +} + +expect_server() { # kubeconfig description + [ "$(cat "$work/args")" = "mcpserver" ] || + fail "$2: the server did not start with exactly 'mcpserver': $(cat "$work/args")" + [ "$(cat "$work/kubeconfig")" = "$1" ] || fail "$2: KUBECONFIG was $(cat "$work/kubeconfig"), expected $1" + [ "$(cat "$work/out")" = '{"jsonrpc":"2.0","id":1,"method":"ping"}' ] || + fail "$2: stdout carried more than the server's own output: $(cat "$work/out")" + [ ! -s "$work/err" ] || fail "$2: wrote to stderr: $(cat "$work/err")" +} + +# 1. With KUBECONFIG unset, the server reads $HOME/.kube/config. +run 0 -- PATH="$work/bin" HOME="$work/home" +expect_server "$work/home/.kube/config" "unset KUBECONFIG" + +# 2. An empty KUBECONFIG counts as unset, as the server itself would refuse it. +run 0 -- PATH="$work/bin" HOME="$work/home" KUBECONFIG= +expect_server "$work/home/.kube/config" "empty KUBECONFIG" + +# 3. A non-empty KUBECONFIG, including a list of files, passes through unchanged. +run 0 -- PATH="$work/bin" HOME="$work/home" KUBECONFIG="$work/a.yaml:$work/b yaml" +expect_server "$work/a.yaml:$work/b yaml" "explicit KUBECONFIG" + +# 4. Neither KUBECONFIG nor HOME: refuse, name the fix, and never start the server. +run 1 -- PATH="$work/bin" +[ ! -e "$work/args" ] || fail "started the server without KUBECONFIG or HOME" +[ ! -s "$work/out" ] || fail "wrote to stdout without KUBECONFIG or HOME" +grep -q 'set KUBECONFIG or HOME' "$work/err" || fail "the refusal does not name the fix: $(cat "$work/err")" + +# 5. Arguments are a usage error, so nothing can change what the server is started with. +run 2 --verbose -- PATH="$work/bin" HOME="$work/home" +[ ! -e "$work/args" ] || fail "started the server despite a usage error" +[ ! -s "$work/out" ] || fail "wrote to stdout for a usage error" + +# 6. A missing server binary fails with the shell's not-found status and no stdout. +run 127 -- PATH="$work/empty" HOME="$work/home" +[ ! -s "$work/out" ] || fail "wrote to stdout without a server binary" + +printf 'kubescape-mcp: PASS\n' From 67a62cf13511902992b4d1b1383e3128c5e718ec Mon Sep 17 00:00:00 2001 From: Nikolai Emil Damm Date: Sat, 7 Nov 2026 12:04:58 +0100 Subject: [PATCH 2/3] fix(ci): let the gh JSON-field guard pass a plugin's PNG listing icon The guard refuses every file type it does not scan, so the new .claude-plugin/icon.png made it report UNKNOWN and failed the packaged resources job. The icon is listing metadata for Anthropic's plugin directory; no agent runtime loads it as a definition. Pass it over only at exactly plugins//.claude-plugin/icon.png, only as a regular file, and only when it starts with the PNG signature. Any other image, a deeper path, a symlink or text renamed to icon.png stays UNKNOWN. Five self-test cases pin each boundary. Co-Authored-By: Claude Opus 5.5 --- scripts/guard-gh-json-fields.sh | 23 ++++++++++++++++++++-- scripts/guard-gh-json-fields.test.sh | 29 ++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/scripts/guard-gh-json-fields.sh b/scripts/guard-gh-json-fields.sh index a41b2fc..6d6048c 100755 --- a/scripts/guard-gh-json-fields.sh +++ b/scripts/guard-gh-json-fields.sh @@ -12,7 +12,8 @@ # the definitions are authored (and where synced skills arrive), stops it before it ships. # # Usage: guard-gh-json-fields.sh [ROOT] (ROOT defaults to this repository) -# Scans every *.md, *.txt, *.json, *.jq, *.go, *.yaml and *.yml under ROOT/plugins; any other non-script file is UNKNOWN. Shell +# Scans every *.md, *.txt, *.json, *.jq, *.go, *.yaml and *.yml under ROOT/plugins; any other non-script file is UNKNOWN, +# except a plugin's PNG listing icon at plugins//.claude-plugin/icon.png, which no agent reads. Shell # scripts are not scanned: a script with a bad field fails loudly the first time it runs, whereas prose # silently misleads every agent that reads it. # Go 1.22+ is required: only the installed observer is built. Literal adjacent shell quotes are @@ -193,12 +194,30 @@ trap 'rm -f "${discovered}" "${snapshot}" "${go_decoder}"; rmdir "${observation_ find "${root}/plugins" ! -type d -print0 2>/dev/null | LC_ALL=C sort -z > "${discovered}" || unknown "could not list the files under ${root}/plugins, so the scan would cover an unknown subset" +# A plugin's directory listing icon, plugins//.claude-plugin/icon.png, is the one non-text +# file that is not a surface: Anthropic's plugin directory shows it on the listing, and no agent +# runtime loads it as a definition. It is passed over only at exactly that path, only as a regular +# file (not a link), and only when its first eight bytes are the PNG signature. Any other image, an +# icon at a deeper path, or a text file renamed to icon.png stays UNKNOWN. +is_listing_icon() { + local rel="${1#"${root}/plugins/"}" plugin signature + plugin="${rel%%/*}" + [[ -n $plugin && $rel == "${plugin}/.claude-plugin/icon.png" ]] || return 1 + [ -f "$1" ] && [ ! -L "$1" ] || + unknown "${1#"${root}/"} is a listing icon that is not a regular file, so it cannot be confirmed as an image" + signature=$(head -c 8 "$1" | od -An -tx1 | tr -d ' \n') || + unknown "${1#"${root}/"} could not be read, so it cannot be confirmed as an image" + [ "$signature" = 89504e470d0a1a0a ] || + unknown "${1#"${root}/"} is named as a listing icon but is not a PNG image, so any field it prescribes would go unseen" +} + surfaces=() while IFS= read -r -d '' f; do case "$f" in *.md|*.txt|*.json|*.jq|*.go|*.yaml|*.yml) surfaces+=("$f") ;; *.sh) ;; - *) unknown "${f#"${root}/"} is a file type this guard does not scan, so any field it prescribes would go unseen" ;; + *) is_listing_icon "$f" || + unknown "${f#"${root}/"} is a file type this guard does not scan, so any field it prescribes would go unseen" ;; esac done < "${discovered}" [ "${#surfaces[@]}" -gt 0 ] || unknown "found no supported text surfaces under ${root}/plugins" diff --git a/scripts/guard-gh-json-fields.test.sh b/scripts/guard-gh-json-fields.test.sh index 2d2ff64..8e19246 100755 --- a/scripts/guard-gh-json-fields.test.sh +++ b/scripts/guard-gh-json-fields.test.sh @@ -367,6 +367,35 @@ dir="$(fixture unknown-unscanned-type)" printf '%s\n' 'cmd: gh pr view 42 --json state,merged' > "${dir}/plugins/p/agents/case.ini" expect 2 "an unscanned file type is UNKNOWN" "${dir}" +# A plugin's PNG listing icon is the one non-text file passed over, and only at exactly +# plugins//.claude-plugin/icon.png, as a regular file that starts with the PNG signature. +png_bytes() { printf '\211PNG\r\n\032\n\000\000\000\rIHDR'; } +dir="$(fixture good-listing-icon)" +mkdir -p "${dir}/plugins/p/.claude-plugin" +png_bytes > "${dir}/plugins/p/.claude-plugin/icon.png" +expect 0 "a PNG listing icon is not a surface" "${dir}" + +dir="$(fixture unknown-text-listing-icon)" +mkdir -p "${dir}/plugins/p/.claude-plugin" +printf '%s\n' 'gh pr view 42 --json state,merged' > "${dir}/plugins/p/.claude-plugin/icon.png" +expect 2 "text named as a listing icon is UNKNOWN" "${dir}" + +dir="$(fixture unknown-png-elsewhere)" +mkdir -p "${dir}/plugins/p/skills/s" +png_bytes > "${dir}/plugins/p/skills/s/diagram.png" +expect 2 "a PNG anywhere but the listing icon path is UNKNOWN" "${dir}" + +dir="$(fixture unknown-nested-listing-icon)" +mkdir -p "${dir}/plugins/p/skills/s/.claude-plugin" +png_bytes > "${dir}/plugins/p/skills/s/.claude-plugin/icon.png" +expect 2 "a listing icon below the plugin root is UNKNOWN" "${dir}" + +dir="$(fixture unknown-symlinked-listing-icon)" +mkdir -p "${dir}/plugins/p/.claude-plugin" +png_bytes > "${dir}/real.png" +ln -s "${dir}/real.png" "${dir}/plugins/p/.claude-plugin/icon.png" +expect 2 "a symlinked listing icon is UNKNOWN" "${dir}" + # Native skill runtime metadata is YAML. Decode supported mappings rather than treating # their quotes as shell syntax or permitting escaped prescriptions to go unseen. for extension in yaml yml; do From 009394b82fffff4f06a811be8e4d2c99ec9446f1 Mon Sep 17 00:00:00 2001 From: Nikolai Emil Damm Date: Sat, 7 Nov 2026 12:37:46 +0100 Subject: [PATCH 3/3] fix(agentic-engineering): give Codex its own launch paths and harden the cluster launchers Codex substitutes no ${CLAUDE_PLUGIN_ROOT} in a server's arguments, so it would have run bash on a literal '${CLAUDE_PLUGIN_ROOT}/scripts/...' path and lost both cluster servers. Codex now loads .codex-plugin/mcp.json, which mirrors .mcp.json with those two launch paths plugin-relative under cwd "."; validate-manifests.sh enforces the mirror and refuses a Codex manifest that would load a ${CLAUDE_PLUGIN_ROOT} launch path. The launchers are POSIX sh again, run by sh like the inline programs they replace, so a BASH_ENV file cannot print onto the MCP stream. The Kubescape launcher sets KS_SKIP_UPDATE_CHECK=true unless the user set it, so scans send no version check carrying a cluster ID and node count. Both launcher tests now pin each MCP file's wiring and start the Codex spelling from the plugin root. Co-Authored-By: Claude Opus 5.5 --- .../.codex-plugin/mcp.json | 68 ++++++++++++++++++ .../.codex-plugin/plugin.json | 2 +- plugins/agentic-engineering/.mcp.json | 4 +- .../scripts/flux-operator-mcp.sh | 14 ++-- .../scripts/flux-operator-mcp.test.sh | 30 ++++++-- .../scripts/kubescape-mcp.sh | 24 +++++-- .../scripts/kubescape-mcp.test.sh | 72 +++++++++++++------ scripts/validate-manifests.sh | 55 +++++++++++++- scripts/validate-manifests.test.sh | 59 +++++++++++++++ 9 files changed, 286 insertions(+), 42 deletions(-) create mode 100644 plugins/agentic-engineering/.codex-plugin/mcp.json diff --git a/plugins/agentic-engineering/.codex-plugin/mcp.json b/plugins/agentic-engineering/.codex-plugin/mcp.json new file mode 100644 index 0000000..20646a1 --- /dev/null +++ b/plugins/agentic-engineering/.codex-plugin/mcp.json @@ -0,0 +1,68 @@ +{ + "mcpServers": { + "aws-knowledge": { + "type": "http", + "url": "https://knowledge-mcp.global.api.aws" + }, + "cloudflare-docs": { + "type": "http", + "url": "https://docs.mcp.cloudflare.com/mcp" + }, + "context7": { + "type": "http", + "url": "https://mcp.context7.com/mcp" + }, + "flux-operator-mcp": { + "command": "sh", + "args": [ + "scripts/flux-operator-mcp.sh" + ], + "cwd": "." + }, + "github": { + "type": "http", + "url": "https://api.githubcopilot.com/mcp/", + "headers": { + "X-MCP-Toolsets": "context,repos,issues,pull_requests,users,actions,labels,projects", + "X-MCP-Exclude-Tools": "merge_pull_request,create_repository,fork_repository,push_files,create_or_update_file,delete_file,update_pull_request_branch,update_pull_request,pull_request_review_write,add_comment_to_pending_review,actions_run_trigger,delete_repository" + }, + "headersHelper": "bash \"${CLAUDE_PLUGIN_ROOT}/scripts/github-mcp-headers.sh\" \"${CLAUDE_PLUGIN_DATA}\"" + }, + "github-ghas-tools": { + "type": "http", + "url": "https://api.githubcopilot.com/mcp/readonly", + "headers": { + "X-MCP-Toolsets": "code_security,secret_protection,security_advisories,dependabot", + "X-MCP-Readonly": "true" + }, + "headersHelper": "bash \"${CLAUDE_PLUGIN_ROOT}/scripts/github-mcp-headers.sh\" \"${CLAUDE_PLUGIN_DATA}\"" + }, + "kubescape": { + "command": "sh", + "args": [ + "scripts/kubescape-mcp.sh" + ], + "cwd": "." + }, + "siderolabs-docs": { + "type": "http", + "url": "https://docs.siderolabs.com/mcp" + }, + "stripe": { + "type": "http", + "url": "https://mcp.stripe.com" + }, + "svelte": { + "type": "http", + "url": "https://mcp.svelte.dev/mcp" + }, + "terraform-registry": { + "command": "terraform-mcp-server", + "args": [ + "stdio", + "--toolsets", + "registry" + ] + } + } +} diff --git a/plugins/agentic-engineering/.codex-plugin/plugin.json b/plugins/agentic-engineering/.codex-plugin/plugin.json index 13e1b3d..a9f3cc3 100644 --- a/plugins/agentic-engineering/.codex-plugin/plugin.json +++ b/plugins/agentic-engineering/.codex-plugin/plugin.json @@ -45,7 +45,7 @@ "connectors" ], "skills": "./skills/", - "mcpServers": "./.mcp.json", + "mcpServers": "./.codex-plugin/mcp.json", "apps": "./.app.json", "interface": { "displayName": "Agentic Engineering", diff --git a/plugins/agentic-engineering/.mcp.json b/plugins/agentic-engineering/.mcp.json index 1d1dc57..b60e982 100644 --- a/plugins/agentic-engineering/.mcp.json +++ b/plugins/agentic-engineering/.mcp.json @@ -13,7 +13,7 @@ "url": "https://mcp.context7.com/mcp" }, "flux-operator-mcp": { - "command": "bash", + "command": "sh", "args": [ "${CLAUDE_PLUGIN_ROOT}/scripts/flux-operator-mcp.sh" ] @@ -37,7 +37,7 @@ "headersHelper": "bash \"${CLAUDE_PLUGIN_ROOT}/scripts/github-mcp-headers.sh\" \"${CLAUDE_PLUGIN_DATA}\"" }, "kubescape": { - "command": "bash", + "command": "sh", "args": [ "${CLAUDE_PLUGIN_ROOT}/scripts/kubescape-mcp.sh" ] diff --git a/plugins/agentic-engineering/scripts/flux-operator-mcp.sh b/plugins/agentic-engineering/scripts/flux-operator-mcp.sh index 18f9075..fbe7658 100755 --- a/plugins/agentic-engineering/scripts/flux-operator-mcp.sh +++ b/plugins/agentic-engineering/scripts/flux-operator-mcp.sh @@ -1,7 +1,8 @@ -#!/usr/bin/env bash -# Start the bundled `flux-operator-mcp` server read-only. ../.mcp.json runs this file as the -# server's command, so a plugin directory's validator can read exactly what the plugin starts -# instead of an inline `sh -c` program it cannot follow. +#!/bin/sh +# Start the bundled `flux-operator-mcp` server read-only. ../.mcp.json runs this file with `sh` as +# the server's command, and ../.codex-plugin/mcp.json runs it by its plugin-relative path, so a +# plugin directory's validator can read exactly what the plugin starts instead of an inline `sh -c` +# program it cannot follow. # # flux-operator-mcp refuses to start unless the KUBECONFIG environment variable is set. This sets # it to $HOME/.kube/config when the environment leaves it unset or empty, and passes any @@ -9,12 +10,13 @@ # reconciling, suspending or resuming anything. # # The server speaks MCP over stdin and stdout, so this script writes nothing to stdout itself and -# replaces itself with the server. +# replaces itself with the server. It is POSIX sh, run by `sh`, which reads no BASH_ENV file that +# could print onto that stream first. # # Usage: flux-operator-mcp.sh (no arguments) # Exit codes: the server's own; 1 neither KUBECONFIG nor HOME is set; 2 usage error; 127 the # flux-operator-mcp binary is not on PATH. -set -euo pipefail +set -eu if [ $# -gt 0 ]; then echo 'usage: flux-operator-mcp.sh' >&2 diff --git a/plugins/agentic-engineering/scripts/flux-operator-mcp.test.sh b/plugins/agentic-engineering/scripts/flux-operator-mcp.test.sh index 9dbb735..954babe 100755 --- a/plugins/agentic-engineering/scripts/flux-operator-mcp.test.sh +++ b/plugins/agentic-engineering/scripts/flux-operator-mcp.test.sh @@ -1,10 +1,13 @@ #!/usr/bin/env bash # Hermetic contract for flux-operator-mcp.sh: a stub `flux-operator-mcp` stands in for the server, -# so no cluster and no real kubeconfig is used. +# so no cluster and no real kubeconfig is used. The launcher runs under `sh`, as both MCP files +# start it. set -euo pipefail here=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +plugin_root=$(cd "$here/.." && pwd) launcher="$here/flux-operator-mcp.sh" bash_bin=$(command -v bash) +sh_bin=$(command -v sh) work=$(mktemp -d) trap 'rm -rf "$work"' EXIT mkdir -p "$work/bin" "$work/empty" "$work/home" @@ -13,9 +16,10 @@ fail() { echo "FAIL: $*" >&2; exit 1; } # The stub records its arguments and the KUBECONFIG it received, then echoes stdin to stdout the # way a stdio MCP server answers, so a test can prove the launcher passes the protocol streams -# through untouched. It uses bash builtins only: the hermetic PATH holds nothing but the stub. +# through untouched. It uses bash builtins only: the hermetic PATH holds nothing but the stub. It runs +# as `bash -p`, which reads no BASH_ENV file, so anything that file prints came from the launcher. cat > "$work/bin/flux-operator-mcp" < "$work/args" printf '%s' "\${KUBECONFIG-}" > "$work/kubeconfig" while IFS= read -r line || [ -n "\$line" ]; do printf '%s\n' "\$line"; done @@ -29,7 +33,7 @@ run() { # expected-exit launcher-args... -- env-assignments... [ $# -gt 0 ] && shift rm -f "$work/args" "$work/kubeconfig" printf '{"jsonrpc":"2.0","id":1,"method":"ping"}\n' | - env -i "$@" "$bash_bin" "$launcher" ${args[@]+"${args[@]}"} > "$work/out" 2> "$work/err" || + env -i "$@" "$sh_bin" "$launcher" ${args[@]+"${args[@]}"} > "$work/out" 2> "$work/err" || status=$? [ "$status" -eq "$expected" ] || fail "exit $status, expected $expected: $(cat "$work/err")" } @@ -70,4 +74,22 @@ run 2 --read-write -- PATH="$work/bin" HOME="$work/home" run 127 -- PATH="$work/empty" HOME="$work/home" [ ! -s "$work/out" ] || fail "wrote to stdout without a server binary" +# 7. A BASH_ENV file that prints must not reach the protocol stream: `sh` never reads it. +printf '%s\n' 'echo from-bash-env' > "$work/bash-env" +run 0 -- PATH="$work/bin" HOME="$work/home" BASH_ENV="$work/bash-env" +expect_server "$work/home/.kube/config" "BASH_ENV set" + +# 8. Both MCP files start this launcher with `sh`: Claude Code and VS Code by its +# ${CLAUDE_PLUGIN_ROOT} path, Codex by its plugin-relative path from cwd ".", which Codex joins +# onto the plugin root. Each spelling must name this file. +jq -e '.mcpServers["flux-operator-mcp"] == {command: "sh", args: ["${CLAUDE_PLUGIN_ROOT}/scripts/flux-operator-mcp.sh"]}' \ + "$plugin_root/.mcp.json" > /dev/null || fail ".mcp.json does not start flux-operator-mcp through this launcher" +jq -e '.mcpServers["flux-operator-mcp"] == {command: "sh", args: ["scripts/flux-operator-mcp.sh"], cwd: "."}' \ + "$plugin_root/.codex-plugin/mcp.json" > /dev/null || fail ".codex-plugin/mcp.json does not start flux-operator-mcp through this launcher" +[ "$plugin_root/scripts/flux-operator-mcp.sh" -ef "$launcher" ] || fail "the configured path is not this launcher" +rm -f "$work/args" +(cd "$plugin_root" && printf '\n' | env -i PATH="$work/bin" HOME="$work/home" "$sh_bin" scripts/flux-operator-mcp.sh) \ + > /dev/null 2>&1 || fail "the Codex spelling does not start the server from the plugin root" +[ "$(cat "$work/args")" = "serve --read-only" ] || fail "the Codex spelling started something else" + printf 'flux-operator-mcp: PASS\n' diff --git a/plugins/agentic-engineering/scripts/kubescape-mcp.sh b/plugins/agentic-engineering/scripts/kubescape-mcp.sh index b8072ed..9fe9af1 100755 --- a/plugins/agentic-engineering/scripts/kubescape-mcp.sh +++ b/plugins/agentic-engineering/scripts/kubescape-mcp.sh @@ -1,19 +1,26 @@ -#!/usr/bin/env bash -# Start the bundled `kubescape` MCP server (`kubescape mcpserver`). ../.mcp.json runs this file as -# the server's command, so a plugin directory's validator can read exactly what the plugin starts -# instead of an inline `sh -c` program it cannot follow. +#!/bin/sh +# Start the bundled `kubescape` MCP server (`kubescape mcpserver`). ../.mcp.json runs this file with +# `sh` as the server's command, and ../.codex-plugin/mcp.json runs it by its plugin-relative path, +# so a plugin directory's validator can read exactly what the plugin starts instead of an inline +# `sh -c` program it cannot follow. # # It resolves the kubeconfig the same way as ./flux-operator-mcp.sh, so both servers read the same # clusters: KUBECONFIG is set to $HOME/.kube/config when the environment leaves it unset or empty, # and any non-empty value passes through unchanged. # +# Kubescape's scans otherwise send a version check to Kubescape's update service carrying a cluster +# ID, the node count, the frameworks scanned and the client version. This sets +# KS_SKIP_UPDATE_CHECK=true when the environment leaves it unset or empty, so the agents' scans send +# none; set it yourself to choose otherwise. +# # The server speaks MCP over stdin and stdout, so this script writes nothing to stdout itself and -# replaces itself with the server. +# replaces itself with the server. It is POSIX sh, run by `sh`, which reads no BASH_ENV file that +# could print onto that stream first. # # Usage: kubescape-mcp.sh (no arguments) # Exit codes: the server's own; 1 neither KUBECONFIG nor HOME is set; 2 usage error; 127 the # kubescape binary is not on PATH. -set -euo pipefail +set -eu if [ $# -gt 0 ]; then echo 'usage: kubescape-mcp.sh' >&2 @@ -29,4 +36,9 @@ if [ -z "${KUBECONFIG:-}" ]; then fi export KUBECONFIG +if [ -z "${KS_SKIP_UPDATE_CHECK:-}" ]; then + KS_SKIP_UPDATE_CHECK=true +fi +export KS_SKIP_UPDATE_CHECK + exec kubescape mcpserver diff --git a/plugins/agentic-engineering/scripts/kubescape-mcp.test.sh b/plugins/agentic-engineering/scripts/kubescape-mcp.test.sh index 8372118..6d1e43f 100755 --- a/plugins/agentic-engineering/scripts/kubescape-mcp.test.sh +++ b/plugins/agentic-engineering/scripts/kubescape-mcp.test.sh @@ -1,23 +1,28 @@ #!/usr/bin/env bash -# Hermetic contract for kubescape-mcp.sh: a stub `kubescape` stands in for the server, -# so no cluster and no real kubeconfig is used. +# Hermetic contract for kubescape-mcp.sh: a stub `kubescape` stands in for the server, so no cluster +# and no real kubeconfig is used. The launcher runs under `sh`, as both MCP files start it. set -euo pipefail here=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +plugin_root=$(cd "$here/.." && pwd) launcher="$here/kubescape-mcp.sh" bash_bin=$(command -v bash) +sh_bin=$(command -v sh) work=$(mktemp -d) trap 'rm -rf "$work"' EXIT mkdir -p "$work/bin" "$work/empty" "$work/home" fail() { echo "FAIL: $*" >&2; exit 1; } -# The stub records its arguments and the KUBECONFIG it received, then echoes stdin to stdout the -# way a stdio MCP server answers, so a test can prove the launcher passes the protocol streams -# through untouched. It uses bash builtins only: the hermetic PATH holds nothing but the stub. +# The stub records its arguments, the KUBECONFIG and the KS_SKIP_UPDATE_CHECK it received, then +# echoes stdin to stdout the way a stdio MCP server answers, so a test can prove the launcher passes +# the protocol streams through untouched. It uses bash builtins only: the hermetic PATH holds +# nothing but the stub. It runs as `bash -p`, which reads no BASH_ENV file, so anything that file +# prints came from the launcher. cat > "$work/bin/kubescape" < "$work/args" printf '%s' "\${KUBECONFIG-}" > "$work/kubeconfig" +printf '%s' "\${KS_SKIP_UPDATE_CHECK-}" > "$work/skip" while IFS= read -r line || [ -n "\$line" ]; do printf '%s\n' "\$line"; done STUB chmod +x "$work/bin/kubescape" @@ -27,47 +32,72 @@ run() { # expected-exit launcher-args... -- env-assignments... shift while [ $# -gt 0 ] && [ "$1" != -- ]; do args+=("$1"); shift; done [ $# -gt 0 ] && shift - rm -f "$work/args" "$work/kubeconfig" + rm -f "$work/args" "$work/kubeconfig" "$work/skip" printf '{"jsonrpc":"2.0","id":1,"method":"ping"}\n' | - env -i "$@" "$bash_bin" "$launcher" ${args[@]+"${args[@]}"} > "$work/out" 2> "$work/err" || + env -i "$@" "$sh_bin" "$launcher" ${args[@]+"${args[@]}"} > "$work/out" 2> "$work/err" || status=$? [ "$status" -eq "$expected" ] || fail "exit $status, expected $expected: $(cat "$work/err")" } -expect_server() { # kubeconfig description +expect_server() { # kubeconfig skip-update-check description [ "$(cat "$work/args")" = "mcpserver" ] || - fail "$2: the server did not start with exactly 'mcpserver': $(cat "$work/args")" - [ "$(cat "$work/kubeconfig")" = "$1" ] || fail "$2: KUBECONFIG was $(cat "$work/kubeconfig"), expected $1" + fail "$3: the server did not start with exactly 'mcpserver': $(cat "$work/args")" + [ "$(cat "$work/kubeconfig")" = "$1" ] || fail "$3: KUBECONFIG was $(cat "$work/kubeconfig"), expected $1" + [ "$(cat "$work/skip")" = "$2" ] || fail "$3: KS_SKIP_UPDATE_CHECK was $(cat "$work/skip"), expected $2" [ "$(cat "$work/out")" = '{"jsonrpc":"2.0","id":1,"method":"ping"}' ] || - fail "$2: stdout carried more than the server's own output: $(cat "$work/out")" - [ ! -s "$work/err" ] || fail "$2: wrote to stderr: $(cat "$work/err")" + fail "$3: stdout carried more than the server's own output: $(cat "$work/out")" + [ ! -s "$work/err" ] || fail "$3: wrote to stderr: $(cat "$work/err")" } -# 1. With KUBECONFIG unset, the server reads $HOME/.kube/config. +# 1. With KUBECONFIG unset, the server reads $HOME/.kube/config, and sends no version check. run 0 -- PATH="$work/bin" HOME="$work/home" -expect_server "$work/home/.kube/config" "unset KUBECONFIG" +expect_server "$work/home/.kube/config" true "unset KUBECONFIG" -# 2. An empty KUBECONFIG counts as unset, as the server itself would refuse it. +# 2. An empty KUBECONFIG counts as unset, as the Flux server's launcher treats it. run 0 -- PATH="$work/bin" HOME="$work/home" KUBECONFIG= -expect_server "$work/home/.kube/config" "empty KUBECONFIG" +expect_server "$work/home/.kube/config" true "empty KUBECONFIG" # 3. A non-empty KUBECONFIG, including a list of files, passes through unchanged. run 0 -- PATH="$work/bin" HOME="$work/home" KUBECONFIG="$work/a.yaml:$work/b yaml" -expect_server "$work/a.yaml:$work/b yaml" "explicit KUBECONFIG" +expect_server "$work/a.yaml:$work/b yaml" true "explicit KUBECONFIG" -# 4. Neither KUBECONFIG nor HOME: refuse, name the fix, and never start the server. +# 4. A user's own KS_SKIP_UPDATE_CHECK wins; an empty one counts as unset. +run 0 -- PATH="$work/bin" HOME="$work/home" KS_SKIP_UPDATE_CHECK=false +expect_server "$work/home/.kube/config" false "explicit KS_SKIP_UPDATE_CHECK" +run 0 -- PATH="$work/bin" HOME="$work/home" KS_SKIP_UPDATE_CHECK= +expect_server "$work/home/.kube/config" true "empty KS_SKIP_UPDATE_CHECK" + +# 5. Neither KUBECONFIG nor HOME: refuse, name the fix, and never start the server. run 1 -- PATH="$work/bin" [ ! -e "$work/args" ] || fail "started the server without KUBECONFIG or HOME" [ ! -s "$work/out" ] || fail "wrote to stdout without KUBECONFIG or HOME" grep -q 'set KUBECONFIG or HOME' "$work/err" || fail "the refusal does not name the fix: $(cat "$work/err")" -# 5. Arguments are a usage error, so nothing can change what the server is started with. +# 6. Arguments are a usage error, so nothing can change what the server is started with. run 2 --verbose -- PATH="$work/bin" HOME="$work/home" [ ! -e "$work/args" ] || fail "started the server despite a usage error" [ ! -s "$work/out" ] || fail "wrote to stdout for a usage error" -# 6. A missing server binary fails with the shell's not-found status and no stdout. +# 7. A missing server binary fails with the shell's not-found status and no stdout. run 127 -- PATH="$work/empty" HOME="$work/home" [ ! -s "$work/out" ] || fail "wrote to stdout without a server binary" +# 8. A BASH_ENV file that prints must not reach the protocol stream: `sh` never reads it. +printf '%s\n' 'echo from-bash-env' > "$work/bash-env" +run 0 -- PATH="$work/bin" HOME="$work/home" BASH_ENV="$work/bash-env" +expect_server "$work/home/.kube/config" true "BASH_ENV set" + +# 9. Both MCP files start this launcher with `sh`: Claude Code and VS Code by its +# ${CLAUDE_PLUGIN_ROOT} path, Codex by its plugin-relative path from cwd ".", which Codex joins +# onto the plugin root. Each spelling must name this file. +jq -e '.mcpServers.kubescape == {command: "sh", args: ["${CLAUDE_PLUGIN_ROOT}/scripts/kubescape-mcp.sh"]}' \ + "$plugin_root/.mcp.json" > /dev/null || fail ".mcp.json does not start kubescape through this launcher" +jq -e '.mcpServers.kubescape == {command: "sh", args: ["scripts/kubescape-mcp.sh"], cwd: "."}' \ + "$plugin_root/.codex-plugin/mcp.json" > /dev/null || fail ".codex-plugin/mcp.json does not start kubescape through this launcher" +[ "$plugin_root/scripts/kubescape-mcp.sh" -ef "$launcher" ] || fail "the configured path is not this launcher" +rm -f "$work/args" +(cd "$plugin_root" && printf '\n' | env -i PATH="$work/bin" HOME="$work/home" "$sh_bin" scripts/kubescape-mcp.sh) \ + > /dev/null 2>&1 || fail "the Codex spelling does not start the server from the plugin root" +[ "$(cat "$work/args")" = "mcpserver" ] || fail "the Codex spelling started something else" + printf 'kubescape-mcp: PASS\n' diff --git a/scripts/validate-manifests.sh b/scripts/validate-manifests.sh index b396cd7..795918d 100755 --- a/scripts/validate-manifests.sh +++ b/scripts/validate-manifests.sh @@ -422,6 +422,36 @@ validate_component_paths() { done } +# Codex's own MCP file mirrors .mcp.json server for server. A stdio server whose command or arguments +# use ${CLAUDE_PLUGIN_ROOT} is the only difference allowed: Codex runs it from cwd "." (which it joins +# onto the plugin root) with every argument's leading "${CLAUDE_PLUGIN_ROOT}/" removed. Nothing in the +# Codex file may still name the variable, since Codex would pass it through literally. +validate_codex_mcp_mirror() { + local claude_mcp="$1" codex_mcp="$2" mirrors + if ! regular_packaged_file "$codex_mcp"; then + echo "::error::$codex_mcp: the Codex MCP file must be a regular packaged file"; return 1 + fi + if ! json_object_unique "$codex_mcp"; then echo "::error::Invalid $codex_mcp"; return 1; fi + validate_mcp_json "$codex_mcp" || return 1 + if ! mirrors=$(jq -r --slurpfile claude "$claude_mcp" ' + def names_root: type == "string" and contains("${CLAUDE_PLUGIN_ROOT}"); + def starts_from_root: ((.command // "") | names_root) or any((.args // [])[]; names_root); + def codex_form: + if starts_from_root then + . + {cwd: ".", args: [(.args // [])[] | if type == "string" then sub("^\\$\\{CLAUDE_PLUGIN_ROOT\\}/"; "") else . end]} + else . end; + (($claude[0] | del(.mcpServers)) == del(.mcpServers)) and + (($claude[0].mcpServers | map_values(codex_form)) == .mcpServers) and + all(.mcpServers[]; starts_from_root | not)' "$codex_mcp" 2>/dev/null) || + { [ "$mirrors" != true ] && [ "$mirrors" != false ]; }; then + echo "::error::$codex_mcp: cannot compare the Codex MCP file with $claude_mcp"; return 1 + fi + if [ "$mirrors" != true ]; then + echo "::error::$codex_mcp must mirror $claude_mcp, with each \${CLAUDE_PLUGIN_ROOT} launch path made plugin-relative under cwd \".\"" + return 1 + fi +} + # An optional Codex manifest (ADR 0019). Codex reads .codex-plugin/plugin.json before # .claude-plugin/plugin.json and resolves only the component paths it declares, so it must repeat # the portable manifest exactly, name the plugin's own skills/ and .mcp.json, and add nothing else @@ -454,11 +484,32 @@ validate_codex_manifest() { elif ! jq -e 'has("skills") | not' "$codex_pj" > /dev/null; then echo "::error::$codex_pj: 'skills' must be omitted when the plugin has no skills/"; ok=0 fi + # Codex substitutes no ${CLAUDE_PLUGIN_ROOT} in a server's command or arguments; it only joins a + # relative cwd onto the plugin root. A plugin whose .mcp.json starts a server from that variable + # therefore gives Codex its own .codex-plugin/mcp.json, which must mirror .mcp.json exactly except + # that those launch paths are plugin-relative and run from cwd ".". + local codex_mcp="$plugin_dir/.codex-plugin/mcp.json" uses_root if [ -e "$plugin_dir/.mcp.json" ] || [ -L "$plugin_dir/.mcp.json" ]; then - jq -e '.mcpServers == "./.mcp.json"' "$codex_pj" > /dev/null || - { echo "::error::$codex_pj: 'mcpServers' must be \"./.mcp.json\" so Codex loads the bundled servers"; ok=0; } + if [ -e "$codex_mcp" ] || [ -L "$codex_mcp" ]; then + jq -e '.mcpServers == "./.codex-plugin/mcp.json"' "$codex_pj" > /dev/null || + { echo "::error::$codex_pj: 'mcpServers' must be \"./.codex-plugin/mcp.json\" so Codex loads its own launch paths"; ok=0; } + validate_codex_mcp_mirror "$plugin_dir/.mcp.json" "$codex_mcp" || ok=0 + else + jq -e '.mcpServers == "./.mcp.json"' "$codex_pj" > /dev/null || + { echo "::error::$codex_pj: 'mcpServers' must be \"./.mcp.json\" so Codex loads the bundled servers"; ok=0; } + if ! uses_root=$(jq -r '[.mcpServers[]? | ((.command // ""), (.args // [])[]) | strings + | select(contains("${CLAUDE_PLUGIN_ROOT}"))] | length > 0' "$plugin_dir/.mcp.json" 2>/dev/null) || + { [ "$uses_root" != true ] && [ "$uses_root" != false ]; }; then + echo "::error::$plugin_dir/.mcp.json: cannot tell whether a server starts from \${CLAUDE_PLUGIN_ROOT}"; ok=0 + elif [ "$uses_root" = true ]; then + echo "::error::$plugin_dir/.mcp.json starts a server from \${CLAUDE_PLUGIN_ROOT}, which Codex does not substitute; add .codex-plugin/mcp.json with plugin-relative launch paths" + ok=0 + fi + fi elif ! jq -e 'has("mcpServers") | not' "$codex_pj" > /dev/null; then echo "::error::$codex_pj: 'mcpServers' must be omitted when the plugin has no .mcp.json"; ok=0 + elif [ -e "$codex_mcp" ] || [ -L "$codex_mcp" ]; then + echo "::error::$codex_mcp: a Codex MCP file needs the .mcp.json it mirrors"; ok=0 fi if ! jq -e '(has("interface") | not) or (.interface | type == "object")' "$codex_pj" > /dev/null; then echo "::error::$codex_pj: 'interface' must be an object"; ok=0 diff --git a/scripts/validate-manifests.test.sh b/scripts/validate-manifests.test.sh index 36422d6..0642bba 100755 --- a/scripts/validate-manifests.test.sh +++ b/scripts/validate-manifests.test.sh @@ -2362,6 +2362,65 @@ check_fail "a symlinked Codex manifest fails" \ d=$(codex_fixture); printf '%s\n' '{"name":"alpha","name":"other"}' > "$d/plugins/alpha/.codex-plugin/plugin.json" check_fail "an ambiguous Codex manifest fails" "Invalid plugins/alpha/.codex-plugin/plugin.json" "$d" +# Codex substitutes no ${CLAUDE_PLUGIN_ROOT} in a server's command or arguments; it only joins a +# relative cwd onto the plugin root. A plugin that starts a server from that variable gives Codex its +# own .codex-plugin/mcp.json, mirroring .mcp.json with those launch paths made plugin-relative. +# shellcheck disable=SC2016 +root_launch='{"mcpServers":{"local":{"command":"sh","args":["${CLAUDE_PLUGIN_ROOT}/scripts/run.sh"]},"remote":{"type":"http","url":"https://example.com/mcp","headersHelper":"sh \"${CLAUDE_PLUGIN_ROOT}/h.sh\""}}}' +codex_mcp_fixture() { # Codex fixture whose .mcp.json starts a server from ${CLAUDE_PLUGIN_ROOT}, with a correct mirror + local d p + d=$(codex_fixture); p=$d/plugins/alpha + printf '%s\n' "$root_launch" > "$p/.mcp.json" + # shellcheck disable=SC2016 + sed 's/`example-skill` | Alpha plugin/`example-skill`, `local`, `remote` | Alpha plugin/' "$d/docs/plugins.md" > "$d/tmp" && mv "$d/tmp" "$d/docs/plugins.md" + # shellcheck disable=SC2016 + printf '%s\n' '{"mcpServers":{"local":{"command":"sh","args":["scripts/run.sh"],"cwd":"."},"remote":{"type":"http","url":"https://example.com/mcp","headersHelper":"sh \"${CLAUDE_PLUGIN_ROOT}/h.sh\""}}}' \ + > "$p/.codex-plugin/mcp.json" + codex_edit "$d" '.mcpServers = "./.codex-plugin/mcp.json"' .codex-plugin/plugin.json + printf '%s' "$d" +} +check_pass "a Codex MCP mirror with plugin-relative launch paths passes" "$(codex_mcp_fixture)" + +d=$(codex_mcp_fixture); rm "$d/plugins/alpha/.codex-plugin/mcp.json" +codex_edit "$d" '.mcpServers = "./.mcp.json"' .codex-plugin/plugin.json +check_fail "Codex loading a \${CLAUDE_PLUGIN_ROOT} launch path fails" \ + "which Codex does not substitute" "$d" + +d=$(codex_mcp_fixture); codex_edit "$d" '.mcpServers = "./.mcp.json"' .codex-plugin/plugin.json +check_fail "a Codex manifest that ignores its MCP mirror fails" \ + "'mcpServers' must be \"./.codex-plugin/mcp.json\"" "$d" + +# shellcheck disable=SC2016 +for edit in 'del(.mcpServers.remote)' '.mcpServers.local.args = ["${CLAUDE_PLUGIN_ROOT}/scripts/run.sh"]' \ + 'del(.mcpServers.local.cwd)' '.mcpServers.local.cwd = "scripts"' '.mcpServers.local.args = ["scripts/other.sh"]' \ + '.mcpServers.local.command = "bash"' '.mcpServers.local.env = {"X": "1"}' '.mcpServers.remote.url = "https://example.com/other"' \ + '.extra = true'; do + d=$(codex_mcp_fixture); codex_edit "$d" "$edit" .codex-plugin/mcp.json + check_fail "a Codex MCP mirror that drifts ($edit) fails" \ + "plugins/alpha/.codex-plugin/mcp.json must mirror plugins/alpha/.mcp.json" "$d" +done + +# A command that names the variable cannot be made plugin-relative, so no mirror can carry it. +d=$(codex_mcp_fixture) +# shellcheck disable=SC2016 +codex_edit "$d" '.mcpServers.local = {"command": "${CLAUDE_PLUGIN_ROOT}/bin/run"}' .mcp.json +# shellcheck disable=SC2016 +codex_edit "$d" '.mcpServers.local = {"command": "${CLAUDE_PLUGIN_ROOT}/bin/run", "cwd": ".", "args": []}' .codex-plugin/mcp.json +check_fail "a mirror still naming \${CLAUDE_PLUGIN_ROOT} fails" \ + "plugins/alpha/.codex-plugin/mcp.json must mirror plugins/alpha/.mcp.json" "$d" + +d=$(codex_mcp_fixture); printf '%s\n' 'not json' > "$d/plugins/alpha/.codex-plugin/mcp.json" +check_fail "an unreadable Codex MCP mirror fails" "plugins/alpha/.codex-plugin/mcp.json" "$d" + +d=$(codex_mcp_fixture); mv "$d/plugins/alpha/.codex-plugin/mcp.json" "$d/mirror.json" +ln -s ../../../mirror.json "$d/plugins/alpha/.codex-plugin/mcp.json" +check_fail "a symlinked Codex MCP mirror fails" \ + "plugins/alpha/.codex-plugin/mcp.json: the Codex MCP file must be a regular packaged file" "$d" + +d=$(codex_fixture); printf '%s\n' '{"mcpServers":{"local":{"command":"sh","args":["scripts/run.sh"],"cwd":"."}}}' \ + > "$d/plugins/alpha/.codex-plugin/mcp.json" +check_fail "a Codex MCP mirror without .mcp.json fails" "a Codex MCP file needs the .mcp.json it mirrors" "$d" + echo "-----------------------------------------" echo "validate-manifests.sh self-test: $pass passed, $fail failed" [ "$fail" -eq 0 ]