From ff3c30d651d424e844aa91c9840078dedd0fd67d Mon Sep 17 00:00:00 2001 From: ezynda3 Date: Wed, 15 Apr 2026 15:06:42 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20mark3lab?= =?UTF-8?q?s/kit@7e6455732cca02413edeecaa7f5cbf3e18477a17=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _pagefind/fragment/en_44458e8.pf_fragment | Bin 1412 -> 0 bytes _pagefind/fragment/en_805b294.pf_fragment | Bin 0 -> 1427 bytes _pagefind/fragment/en_c3f32ce.pf_fragment | Bin 1297 -> 0 bytes _pagefind/fragment/en_db7e348.pf_fragment | Bin 0 -> 1489 bytes _pagefind/index/en_3b151aa.pf_index | Bin 0 -> 12211 bytes _pagefind/index/en_41e7a1d.pf_index | Bin 0 -> 34815 bytes _pagefind/index/en_548c935.pf_index | Bin 11863 -> 0 bytes _pagefind/index/en_c150d42.pf_index | Bin 34893 -> 0 bytes _pagefind/pagefind-entry.json | 2 +- _pagefind/pagefind.en_578751942f.pf_meta | Bin 283 -> 0 bytes _pagefind/pagefind.en_fc2c9eb3d3.pf_meta | Bin 0 -> 281 bytes advanced/json-output/index.html | 2 +- advanced/subagents/index.html | 2 +- advanced/testing/index.html | 2 +- ...acks-CvF2SOxQ.js => callbacks-BXozAQ8p.js} | 58 +++++++++++++++++- ...nt-BTUHn6x2.js => development-E-EC7CAm.js} | 4 +- .../{index-8qR0kq1Z.js => index-DTEMNIPk.js} | 6 +- .../{index-CgfPk7tz.js => index-DjkHYQxg.js} | 4 +- cli/commands/index.html | 2 +- cli/flags/index.html | 2 +- configuration/index.html | 2 +- development/index.html | 4 +- extensions/capabilities/index.html | 2 +- extensions/examples/index.html | 2 +- extensions/loading/index.html | 2 +- extensions/overview/index.html | 2 +- extensions/testing/index.html | 2 +- index.html | 2 +- installation/index.html | 2 +- llms-full.txt | 17 ++++- mcp.json | 7 ++- providers/index.html | 2 +- quick-start/index.html | 2 +- sdk/callbacks/index.html | 15 ++++- sdk/options/index.html | 2 +- sdk/overview/index.html | 2 +- sdk/sessions/index.html | 2 +- search.json | 7 ++- sessions/index.html | 2 +- themes/index.html | 2 +- 40 files changed, 124 insertions(+), 40 deletions(-) delete mode 100644 _pagefind/fragment/en_44458e8.pf_fragment create mode 100644 _pagefind/fragment/en_805b294.pf_fragment delete mode 100644 _pagefind/fragment/en_c3f32ce.pf_fragment create mode 100644 _pagefind/fragment/en_db7e348.pf_fragment create mode 100644 _pagefind/index/en_3b151aa.pf_index create mode 100644 _pagefind/index/en_41e7a1d.pf_index delete mode 100644 _pagefind/index/en_548c935.pf_index delete mode 100644 _pagefind/index/en_c150d42.pf_index delete mode 100644 _pagefind/pagefind.en_578751942f.pf_meta create mode 100644 _pagefind/pagefind.en_fc2c9eb3d3.pf_meta rename assets/{callbacks-CvF2SOxQ.js => callbacks-BXozAQ8p.js} (94%) rename assets/{development-BTUHn6x2.js => development-E-EC7CAm.js} (97%) rename assets/{index-8qR0kq1Z.js => index-DTEMNIPk.js} (97%) rename assets/{index-CgfPk7tz.js => index-DjkHYQxg.js} (93%) diff --git a/_pagefind/fragment/en_44458e8.pf_fragment b/_pagefind/fragment/en_44458e8.pf_fragment deleted file mode 100644 index dc0ec6666feddcdcff378604ea570c806905ad0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1412 zcmV-~1$+7*iwFP!00002|BY5%Z`(E${VR9Qiw)Q^)?zPt%aW|inzUKn4k&`6qNr<` z3ni)~WydS}-*-q#vKn;2o=lUM_v@TuJ5PC@7sBmmIH(L2aj`OFI^TAF{ir-;Ygw0Z zbw=;HhJ@Dfz6%$kqm>nsVV7muU_-8DskTZci|3Z`h&2q~V|OF1YW?*S%g!s)z{Ra< z;+;MF(d}=>)*|k1>tPoagu3pn`J1ID=WQo_XE`49S+8kDm$x^B9@rzbCb*v0LN!@s z7SX6TkfyFfZ&clC4lNTQ8%J|%j9-%I{BB9LDOtNEv6tC`+Q(`L@ygKV>NRbRC9VrD zOVw2L8cjnywvEth(YC?xqHVR3(Ki_@cW8hW9@pkT8o6m>TEt=J@E;`^%S-ywamR~^ zuV5Oz#XCIqE`n=}rc$|9c)6S0K>^{)+Y2mWIk-Ax67EUMW!Mrrh7I9Qmu2hN?%Bqm zm-jSJkuS9hKS016Y4n1U)#;+tsx6GLsm<0nw`#TU=u=JO8JU)C-|o{*Q@28f&3M%` z@as~xr=ys->wuh9|D?l-gJ!F${xViw3PC^_wM9`(Y%K@Npaj2CO>82t4+2?|Wl=8a zV3h|JTq@9^vJ9AlGMA*?1R8#V7F{SM`1>fhQZ(+7J37zx$r|i&?7PT}n?|MPhYdQQ z9&~23>=_XZ?|O3dx+i~Z*`-bl3Mj|JLL2!wX=`F|a0Afxssvc!X59W^YaF8WAZ*f- zfRU#hq2C-le zF0witRrVRqol3|Rg=P#CLGM4@B!>+Oap=AXl6KFaxlY>?aJC9o)UBXjD))gypR&lHB?MbO9ZM8)^0!@N}>Ekks$uO!XwJ=}@(xElwW!h>h_MFo#w{ zHSQel&gibwUai^zpWE9zaJ+4e_4Iy+>85p^4d~^m5!*0WMG=OHM9rnzZrKJL!{xz~ z%jjBQCXAlPS?9)yvyF4s1Eyu_xx~Pa|9XP4r~`(f7a;Fx&|lo&WGQ=~CF5LJ_0u4c z>-s4H)@w^x9`OWs_DT>&65U1H%fQ~J(_o=Fye_iX(^#Mggr9_32EsRJXUNT)c#@(! zlD+&n$cgd{qRWo8&QrSA&&4@zq#QBXo#`yvoA?pi-C7Pw<3YkJ=2gv99Fy3y1ksP? zK|T^H>C6p+SR!;?ph|uUAg5MqwPksfVCXQ*GYF7llO9em}1s7Br=@M<( z3#DBuIS52dIU7=r8HcI5M+~+A8BoD+r0_xE-FTSjZ2#iZeCK`Z&e!V-hh33Dc5As4 zwl2a;ui3AQXzy7pmejeZezYM_bA<%-FnJC;4(~Qz$4G#DY*8|r$a$XMH25~T9Cq?0 z<(o*$=~jH8Q?*wtP1gnv4>F@Xy!+u@$45XOMg2IN=|3W>@XOJ?V&a8ev@dbTuc%Kvr2Dpgw$;n8ZQdvNzkD;!D#|)IP`CR3jhE)r^jXh diff --git a/_pagefind/fragment/en_805b294.pf_fragment b/_pagefind/fragment/en_805b294.pf_fragment new file mode 100644 index 0000000000000000000000000000000000000000..944510c95b2532bca86aa03c62784d003ee07485 GIT binary patch literal 1427 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 H#S8!dAR1&qs?NpwErU=?tZ zF)&veG-u+{<^^vE58#$185G=RDn$ufYH5H;D5a^@%uAWrT*(nkr_+V2!1ntxYi3pPm_t9M1AkFJN%9n zy!lRoJ=pgk<#VpRA92tBKkhj6k(*N3Q!e?P(@yz4at30qwbJ;w?)}iQH|CZEyM8?m zjy-8OHntdq0&(y9^_ClhdGUFbGRu!$^OA#`tdz^Hp(nx6(}p4Zj+K&zckP7rV-rH+ z=fBD&6PN~G2pW$Rh6^}J*2R;H&c z;qs5{aG9R6@*J&TdQ)A!R%!`mYb-C^vw;LF;^LxEX+GZqmJ+@vTwGj$T5-*&Hn2KB zOOY>msJIv-on9&_w!J<&O^l_0hfACVcAtQ z1m_RAw0l9IjKJy=9r(zZA#R#PDU%DXRf+LZMZqLSc@O)bPUeEX1huFQ#oh<|46f%G zh667+)T>B4*i~s)rEO#0IrB51caAhr@9g|4?DXu<&{M@mr(!{=hq1t-$OT%&rh(;z ze=M+jeY5!Vm*w$2xn4+uj=lK1*0m679Noxx`uLQBF zmG8;swJ-|Un&pDc1RufJaZF|L!dFNi-Z(ry@$dE8ak>U5)y#0cb_@i>HK)?_C$X!A zJ#-aFp`7E(b}iaCYO${F`UA)J=pCE58nHU4F6wp8l6@yEcbAK>3`wBdc&P*Yebsj z3M~Llg0Mmuu||=`fX$GE+%)G}0EhZ)W0t8;ANoWc81&g@!T< ze!Xx(XiO0Y$uJFct7{ofSADSvpBD30f9lL)wQ?-Ck3NFlVZ*{FSB1mO;nEW0 zxMUKXt5QmM5>K*RU=27d4JI<)SNNL9+7HDs=^!%+UW6VPrbn$&I?U1affgL2_Klzp zBNZh^uXRzWAwzN_dfNw%n;u~`{lDAQ0Pb>Z2a;<)DKcsniQr5k6y*w7X;pztPkwBn zP6ku^S7kJE)0lJk5)7NK@sOo!npo3eolZS>B`mOQAz$J^Cd>eDos`($5>?X0^XcQ~ r{mA!r6ODHJeuTF~hEI{rt>Dd@X@r}oKT{<64-^l#(o literal 0 HcmV?d00001 diff --git a/_pagefind/index/en_3b151aa.pf_index b/_pagefind/index/en_3b151aa.pf_index new file mode 100644 index 0000000000000000000000000000000000000000..171f99bb58ac20c11446db11e425fcc99dcdcf26 GIT binary patch literal 12211 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 literal 0 HcmV?d00001 diff --git a/_pagefind/index/en_548c935.pf_index b/_pagefind/index/en_548c935.pf_index deleted file mode 100644 index bc1bcbe28f27b369d1217610abe4b468ab45b353..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11863 zcmV-dE~wETiwFP!00002|D}9+e4JIef8J&GnM~3q>GO7PlTN2)pte9;5U97M?3C5A z2-L~sO)|}F%#x&tnq<;+fwq7YiW`c8fQlgQ+jT?11=OpEzpFpR<>G?4U#|*!zt3~d znY4QEKUY5=Y3A(9vwWZByp`;bKbS8K>=?)mOx|VvpjoW?wML2qaqrrCxP8k%T2GTG{h zrZt0t57Kcxw1`ecc@sY;X})POjuu>WeFTFHR{eT5Uz(Cp=1w$i9_&@97(zug?~hJO zk!QV1%~-FNCz}E8em7mM`!}kk-A!xnMrx;8h?csvfL^OtvA>hH(}}c1PkFm%ynEGxsa|yx1Jy>~8)A;$TSU{aPPKQP&^c6lZp-$lx6ztweNjeKRwP8ZKbcDmYnX_Cs zd%NlPd0lV@{@u5cdb&G3cfQ>ol^z+oSYPhlU9zJ_sh%(HY1-4=^`>sRNK;_Ov&Rex zhSZ3j{fP-7rZ|06mjqT}P+qvxpqDUSwzfx&?zNlFOL6Yp!ajwmTUPe!iKaWlbrqYo z(V3q0+X=M*`@^(5q(-FGG|DGe%MSX6s4rIqMSoh&Zl&}xc+ZYZGU8b{uY|0{oJ zmBLgr!t<8Q5!KZ|qyFxuE8W)6I=!~DCsdL1MLJzyioKX-CWN#->%-_dT+8{TY&8$o zN(x0C;ghW8hW%o8QZ4>VIDMWxSFT_VwZ`LwJm_y`&6p{MKf3jz>~WSx(qk}R0O`5B zoWH4|tG*B7oC`9bR}j(5=r~=TuhgfdrDuIqGsUZTf;24yuV5+dp4HCORvQ@E*KET8 z4kX;h``f0Lwl(d2Y0rMO1vYi5vGIOuYN-V|(C67_p_y(Y46$WGt){GL=MQ0XO8*`* zl>3sSNx@nll;a&3sTq-anyl8(R&&G6raiOVvz|_Q*0(dB^<6E){tC*P?(?ku+7!f#5>=3Nj+ zQ`q|)=6zJu^X1Z{KE^-E#re5LbxH{p`z=~{eK9Nt>H9Z{`1Pz_bCs8xLpWuYChe{I zKE}Z@u%oY-K#TFjR!EaaG7Fb-3;)RwDFwLBX% zDw5avp;>2K?$$31GEd zXkZI(h-bZmPbW>!vsOxZ&NtJZ^Bu_5r%=2nL+8;r^C@khP3rne10((}a0lNJDp9zT z3yXfOmL1YOiq5ivQY~*be2bnQrz>h}y;GI0Qci1m zXGl>_C0kW2Nrpb0U$E}MAstX+1hQIsU*AA)oYf4fBA&fo=)kj2WNC;Z5y>~JbyxG* zf))w4sdZPO>l0Yj9MAf=ZZqmvXPWkr`OrE~(h6|Xz3sH5&7KQhdsot?6QB^^&12pb z=!rOVW_t(Lcc_ovlA^;y=;HJkgwajUF7^!1x{Rs*K+?1C#q|4AbR^v!+(`3+^m_0BGeZXZS;T~p zp>&*%r_EsmsF-=c{{M;@k zG-5d)#-i?{3vH+ZYdt18i&jS>o^==klE=8$v+j@4;s}!g!%&t*`|)on0=aN@g5Hnr zdpx^uLTJreiKX>v2=qP0y!9;f;;66qQiNz=o)YrLE)pT{+@Qo>y-}GI`7JjNty~|= z4~PxKed#>aYLwx#NYK|XO0Eqva?j8=rFJ-51=Ls2uuj{YE=OZ_Hba8V6rD_$%L=$* zwjZ!gK#27^y23PkuNuf_lYrs&r&*qTP8H?{p_p9AVfzx6@X#pFtI<$V&-PDgop*`R zdC!ZW9nM#j`QaK2_!f0e0X1s5iY>-q67>L@T}ngvZ&3}4np^`@w$Jp@1H2AJ-g|M} zx3-CFcaoh#q`GOXRMNV{dY_2&;c}xeFopAiFj{Y5?XX%_d2F}F5NBfZY?5uI2a|vX zFY7We_cQ!QntqB&`Hmmpvb0|HSZPYPnq$}7FsMF(&ewAz77(nP(zJlv zi)B;G5BP>W7RcCn0Pd!`L0}`dTBBPvn5>vjuJG*5s;o3rP{@OJqX$Ip zgZOh{J8NBq#8-OG8A4s$lyUN8vxA#ID8w|<6e_vaWd;X*=WLb-_+vR+qL!L?Bwr{P zJjIskEqzo-Qz=75+p|{1G1yKER!gWo#$YQ$Z$-)5uxqRavYei9f_l(1cm$7?ynAHT za?kw~M8A8et*b2wN$S3?E#^t%wmD4WnqoB+f3sCqXL!`v zGGWvJW5d3oLiaAY;gNi0y6Is5S9(^G4Gf`~Ajse+`1K2e44-0AlBTUFJ6~iw`U%b) z((B>was`EKZCG1gR@Yo*AJQ{02ox&rGC*vhHU(c#uTcGbA2Mbxdn!(a2EGdR@LIWe z(6UI}1)c@7r&CDf+MraGr!+UeVA$G~O_hhs+S>o3j9o5dtGeLbszI?u*B!!)SugMsQ?!k_AqD-nz_agR4oMN4;|Ef73*C^W`yxTxvNLo)fke5$ur_8PV%ft z_G~bssEW6UwE@hXX~>Z%{{9bDH9DoOV_@sAk;m8o%JFU?4UO5 zFfxd>lND!RajYX07Z$H)*(@HIR@41j(LWtDre{Q-qB|bZgH-D`v;9w7Q*@R(dEwiq z=*bD?7Z5~>k~CjGG@?r%(|DO-R|kNjXC35z>R30cgP$j-prNORA$LPn9;W#L9+WXB zx*W#eZ%qMME(7zXySr%R+Uc}2f)`fZT>YW6p!Y4*ordwVZE|?z6MvN@?D;9 z@WpCPd4~m^qEW40u4fDN@<>ZETkFk`joMxXP(Px*6mZCD78VviZ;ML#vfat z{%Nc77kr1!8tAE0pr`El4glm-6v!xp@;D2hm<(`4*q;rjh@eqXce(T7Zi+5lv9J1 zp{I{=CUl51K?%)YD*3Iv3OC`%FzX7sRJ++nxc3gA>Kc2(#6&}-T6ej^t_sLSp{j^L zQFSoW>R`&%?9j9lSo;?E~-w%D-T z=fE%Dp_jvfz_1%s$!_;s0X1o@XT1rP44rPFmBCOuotmI}f~J_uz=7XmtJ$;Xd6v&A z!aanBXVEpZFqwcOV*w3QADYjh|B5K_oTM8xAZ7l2*t6iOvyUw90~B!I3=H~*Hd+Rs zpcM*wRv!+65$=m@uD{)(g%-_+7Zjr|#@Nf_#NntzDSAnvwNoRBKp+(C36SI(YP2eN~Mdm{u15wFn(Yo7LrqJsTd^q`-lj z+#X6RQs>qUZ{Rbq&NO(E-35Z8tQ-9-)j$gU z(viW?UU+OkCQEQJfU-;`TX-qKa4%*>LCgd zdv}hU1|Zi)=g@*EtxohH+5ivXO9=>s4VY~@iqoRgtqi>gdub!tF}g08q{Z!V7l_4~ zlb922r}c>tEsM~m?nr=^L_>3FlX7gaLgVejahe-$ltwsUIY)N)PN5rJ2k-4{%~wz} zYHDiPfzfO!=MQK|sbt$_6Gsg!3V*iyLDo~$DW77YkRLED8TXH0YFgHD!$al& zU7ht8%KiVVIy+_zqteP4zhtV6bA+d+7kTFG$5#EbbDL4j?1MbV{9|it{xPQ@(z6dB zs#oM+qaU`UgaZJI)gX7WD}g=R?P4VjqD_&3aa2d)m{}YBm1;Q$Pg+yskjDXyXO$51 zTqGD|ybO+O^s{x_--Hj1*+KCEODfX?k@60Pp65Wgtzdqr>Qj_{ikYT#TdOyF6km*WW zIX2v_+C{-LMs(G!S*XJ@O!Yc zX^u1h1`YzXrI=?em@qj5YJ{&Eh5vJUO~Qcgo0O(<5%)}q1eZD5R2Ns#T!j-gYE$Z< z|Dt94ht%y=jn(fyA(w;jLvDDVCa{+os@!WZ_T@bqfUNTDQMy3S=QPaHLU7v~I0VgIV_lGTW|VKSSVf>tIj>?FMZb*o$t<2(iuU5I1LQgSUdp;j!$f z#)W@W9dISZn^8Jgx&aIeIm`&prCrBE*V7-RwD=fwZ58 zq9%-~YuJ>?z(BGuqJEU!=h>&yC}ot^u{VjwMMj4sh^P7p#|KzexW+$bDJ!4#*A3^AVYNKt+nAW|pwZa3FK4i8-Trf?cIi0b;!{Wx{hhl(_y~9F&6T*$h!JRc;FQs2a0DmHwA1Wz8ZU%4AFM)&1NEU2~;uBn@%yE)T#0UWEPju;J}lzi=#CY0)5i z*7mT20*hW{gEZ%IXa|Bqz)w}y3XP>3{d=S5)?+3zNavGQwMiL8R zl~T|x_v~{7zNzEk9kk%6lo|HD(f8FE)$04SQ|>b5l3t-4^48uoErYg<+ab_E;2;)N zZtDg*#CrG35mkG_3QJlG52i-Ki5r^tgx`Vz#mjDRDq4m=Yy%TP?RRN*^{u>X_M$Yu=4Ri;9Akg4p z7opEU#HGb(LSDj+1mnQ~tqmqBx+MyVT0(y5-6r3FqT z5^^H0(-F42lF5*Z@mF@6S>4Zvma>Eh2#G#uE-t_tW)*6}q9X4LLBwIst zxh~Y~59k;bYZ%6gv-R47sro~C(Q~sc+48N=HXMWl*RKLjwHo|^QR{4jVYs|Gl?9FJ z8gp2uIL8h$3IM?)9ODo)BB+>!OL{)OsWBAW44Ak_t-5gjXHFPa|12Wl0%M-+H~4IU(i+l~`yb$}7CIM>p+$5;C!G#Kl14-Ua!M(Y znmUu#R9|M;z{SN~Y9@2^yUZb*irGV^H=0RH{ur0B=Y~b(3I8xD3rD5zaIcN}Q8U}C z%mgax=a2h2PSFyGy3F*^L~r^e&9U)K2;JyybEhAf9g2IlwZn_d4mI7kDh`?jaN>5p+S_-( zX|m8<+_zO=jbZT-Ppc?6Rvw_bXPpC|NPtsh*Gi6GZiQF)=a zqT7Xuo(QI?(fM$%(+0Xd2VE!A8j+uLwv#!!zz|bKuxMpw=No{z5uNb zL7i_6B$I)N*>Z<7CoEygn>Ipo*XZIPosx*tX*9&?2@G}g5hW+NH1fD@hu#P>*}QAg7h{l z4z_IANPMuYS!czl;T5nAI&iWU!l1|1LQZbPw2kaoo4v_2+oc^?;= zN5F$^5%v%}T63vL)1MTP`NgKHunicxn$}EcSN3=HC`Erp=Q?j-SK*PXz+5*XFywLk z=ON1uwEmX>H($u{wRdouQZH@j0?OSEQ`WPtgu5@~hPwlfZM$KMsM7{jET&U}_-Bce zXh-y^n;xD!7tk))?gT<1+8UwzqA}NXLxDsf-f7Z`T}1nwN7__!l(pQmZxevph3LXq zyxk7FZij1Z=w!eZ--l;yYs=7el0(JmiAN~qIXAYJ9>HLb0>OWXM{-JmFr6HAMVRsK zbLB$0YSIyuY4M^!G_I@_cjZ{c7UkEjVnHVj*oTc__J~MPY0LlBL1O0v+Rk)7q>q{1 z2g==D(3uTFJ83-J zG><8%Hey;wn6EzJ**9Y#V^!U+mXxpEBrY3zj9#Ekvw8j^n$9%R?a!XoZRY(An@f)N z@M`;J(g^UN4%OSIK^)vI%*~AQdAb;UeHrN->khSV#1)NQd#9fH1+n#p0i1@0r?q$T zvn>fcZc;(6R?S1QhkTJ!^_!WfxQoQCagBOYqR>U)Y?i?p`WP@bq|h6bE8}@^?-wcK zh6Iyg448E6a#S0F+oYp~Nr$+)JX?7cDs{$!pxTnI-!Yrwj;-7way?(s9>k~BTG>n4 zDUQeoX{tRY)LAGG4IX2k|4!B<#pSAromii0l@1>jQL$U4M9J`(J5!)*=E0w` z@qT-1sm)%A^6kyGnO^!0OYr;5%N59>6(*BoE^Q99bM`ADYbjchrV^aXHq^)`sS;p4 zbBm@oJnbezOyhLQE3HLmM59j9vz~xUIxX2QqLV*l6bk)Ov;b#3zg9ws zFF*ra7pLEXN+ewN28lkNh5t`OKdr$3y`E&x99k1W^aMKOZEBn-oA*kd72*9#Gev{x zByYi?ueqAS`zaMdSEIJPq&#-A;5NLNGrDL&815ZbthaH-87G`|!2`Snex=Li@HM_4 z>wQfR-4l`Zv(IpxE%^%AW`-`)lYBQE?TDz=MCg7xUf8HS#L0Ieooa>+!3POp*2A<& zF0IUQ0?Dt!e5%`sU)sxAPze3WOBzYqM{HL|w7#o3@(%DEL$X(9fQNfM`^}W%AS3k4 z>*CNvi9~F6+AYFb;>&@%lX~az+bxc&o%BB3!u=YfWKN1H} z^7Zd8tKa3qEzqW`ms6QieckP}&Fbj3I;j*+^|aGfFgli{iCil|o8mM-PWNPJ)Uv79 za_I&RZ$gl8a^sPuob}TNZ_HJF^dq`CLRZ^3ERfhX#L?1_Fe~W_IzE!2XK4xgeb%Az zF1n6;uIBeTIQ9+~}*uLb} z%7izX^FI+dlh)ss*t7_-SI}6ep5|QG3as6@W20t*fxlN=qR5rnuJNEn`)S8Xr=wmx6vD>s+B4*13LKeOIr$I+|4P@FvMU?`cyj`s;h;FKg~?Y=mnVpv15kY~RW27$@ZEXG0% zIx~{E1&LZ2VOYTyt!F>l^4^ats;>wX)!|dqp`tqsdG?1|9g0dl!CYr>$ZA7gz_6}> zqbWmc$+6B$8ECo3PY^DaOeL8+V!WFBvyQ1sJ9}i+Wu^|_Rr)lDtu=K z|GPicO-JGOm((Iv{Bv1WHJfX_YR#FFk*10PH!O`$?SIpT-tT4nYStgjk8lQIU%T)M zBDb}{GC!A2B2?tWm;~muYAWJ(RcQW)a#8@wGtD+QY(ATzdxIGFll%}j6XpyfxFZ5= zPGsoK2CZ*nvuhvBuD69kIJ1<*+aUGb{eT>ubW+-LSM!uVj|J!~wL;(T&mvYX4{h!Z zwvv;@N_n%KD(4b(=r;lC!Q&y-HP38d*jRzys`>4_q}Jc?_o=Z*+cm6c>h~+(RIwt& zaZm^Z5Vq$gl3_^ZDxd>no)h8wdl&t}))@2`I=AN~&l)p?XfdArw&9#h)Uq0-T-H3s zJs_bnNH_^ne_Gbq$nQ~J&7#JO@8iE@j%W32%{3jKd!Hf8FY1NATs4o#-SVUSe(+Mf znW67Fve!nnvP89>!Ynv+LfZSqO{YZrD-}RN(VFah&(ey$1B;*V(Sd$ z8EhMh+&)<}^N&sD!}~aW0e9Jx0r0q5C=?SJhpnvoEwY}mJQJvr>7;%*Tva^v06pqxgnF81y}TnHq+28@)kIxg zlLd~wdCvPI@&v=Pzd_6R0kg#I5s^k$grVQcO%HHh5Ng4GubtkW{|Zn~2PTPCle)T2+&ey^sM#R;YgyH(kT2%z8sa~v=lZCo)gPdK5}>I+oz^M}m?g5^O?s@Jl0 zX`B^t?Tp~TD+BDqwVEkfr;_YA*LuR_3^R+v32*_6P*C zFw=CVQ*<~j?%WxEl*+XeFd(qUz%3bmYO{gX#Hruz49TmJ2k9gihH+gVMot|RXqWx? zo3yFABPg;&ly0Mz9hwob3G1TCK?9+f5NC~`>Dhu183zl8O?r;@T{7CV_ZcP3X)`n^ z*$ovQ(LYuhw?abj&H1-0!T%@m!nR(Dh}_;Bk7^@k8>8!c*|oKY9jUiraeef?R+5eL z6SYCNl^(oU+{IHyfU)GbfJ5Z0XSz2C0Q$e#&b@j zN|ZTmJT`NLzRYND+ z{MD>=L6o1NING(OKOs?}yR?q}h-W<-=BEeGs2A|!e{+A!6fnw<>V<;(wL8w@u+mK0 z3-r3&>UR-+Gk;-Wr$HB|!*8T6c=RLlXuHZs@~rlDYUvkS5x4tuiK|BDwmO%LK9oFS z__1=n@d|TFT8K%1*ik$6Ik6+aj1P^skM|@G0>t^%R0!?`O(om(uH6{(m>L-Zcei>2 zcXEJFC#^hX@>Ih;!n!UEQ*jY}ndWz~fuEtJv3PWDl>ZlxMk3KzXCxBojMCY3bBD^D zgR^H9T_u}=ev+?SD2d*$=R|Z1ifDJ5uH+o7pl-RV*l2y9fw!U>Ln)Z2aetM&@J&E+ zh5XEC_bEhlk@>F6lXPX5JdB=}50ETT??$ik(nU7?HR< zQd5Z@zvie)LATSN5E0?@45u}X=!)6zImiQ+!7-n0_$e(tE>@@Dxj%-Zl6NSP6H(c_ z^JWr3BIqS_)pqkqD&$?pB|*@a%Kw zwRAg^jBQl2bQ#d%$-Y5}Aoni*F{5GMGaP+>r6$#3*%g-HkD82OjBxld5~irNpS=|jwbUw>+&}K z-~i(1o^`03KF?nq=thLpv(BXXPQbI-JH7+^>&OD}mN{*-Hq=H7!|=VmMEthlI!a~uF`j2FMa0&nC9Y(?>DOoc45X~K zl^qyRnG`0Q|2j!(QkCrA;D~^sCEqVYN}bKS_XG>-buBQH+t?gc@sm4KG&bdXS4$<;(X+3WuQSklU{%sNG_84ZgtiJMgi|8G4*(yh z?|HUQUjp_U>d~xvubMPKg)l8QAG+eff6=WDiUXZm{K(TxE&)01Rf6aJky%gp*V#x_ z;`#}_!pAt-UW=Szy?yfuz15v2(tD+v=?1yL@RWW(kwQGs4*4pBl0r>2BTD;C)ZKc?l+_K$mk*9`j{96b zYy?OE*io>{yt#PLJdAw}VD7ZM23Ae{U0Ht!*hyX~kIP#^WpD6@CxW~C+S^2>t1Wo? zU(QDxUm`t^Wn=AMlN$9*SHkVPvPIy?z}`$!<>zdn&(YRS_JU<-0h>?9A(8}D@&kIP z%bd=PAqTd7hk1mZHG{$Uq;k9bno$BLLpgCtk?l5!-xV3U2L6RNDpQk9aCz>0BYYt# zIv08!xVX~kS!Yp7Jp>kP^P+lp=sc40oF{2xhP+Ue*EJy@{qwBHWsY*=ph9X7sRbI$ zyu>Kah=$b+<`Cu%(K((qq8kX#?|0ZrXl<_&(eJU#2a6I!&tZsz=k RnG?9>zX4V6ZrZ|B003>kY#{&u diff --git a/_pagefind/index/en_c150d42.pf_index b/_pagefind/index/en_c150d42.pf_index deleted file mode 100644 index 8a35d67b535501d7fe6a4d99a912d185d7654052..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34893 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 literal 0 HcmV?d00001 diff --git a/advanced/json-output/index.html b/advanced/json-output/index.html index e448e690..ac83a4cf 100644 --- a/advanced/json-output/index.html +++ b/advanced/json-output/index.html @@ -7,7 +7,7 @@ - + diff --git a/advanced/subagents/index.html b/advanced/subagents/index.html index 61edac12..756ab97e 100644 --- a/advanced/subagents/index.html +++ b/advanced/subagents/index.html @@ -7,7 +7,7 @@ - + diff --git a/advanced/testing/index.html b/advanced/testing/index.html index 38f75ede..b884791b 100644 --- a/advanced/testing/index.html +++ b/advanced/testing/index.html @@ -7,7 +7,7 @@ - + diff --git a/assets/callbacks-CvF2SOxQ.js b/assets/callbacks-BXozAQ8p.js similarity index 94% rename from assets/callbacks-CvF2SOxQ.js rename to assets/callbacks-BXozAQ8p.js index 7e0d005c..304af51f 100644 --- a/assets/callbacks-CvF2SOxQ.js +++ b/assets/callbacks-BXozAQ8p.js @@ -66,6 +66,49 @@ const s={frontmatter:{title:"Callbacks",description:"Monitor tool calls and stre kit.HookPriorityNormal = 50 // default kit.HookPriorityLow = 100 // runs last

Lower values run first. First non-nil result wins.

+

All event types

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventDescription
ToolCallEventTool call parsed and about to execute
ToolResultEventTool execution completed with result
ToolOutputEventStreaming output chunk from tool (e.g., bash stdout/stderr)
MessageUpdateEventStreaming text chunk from LLM
ResponseEventFinal response received
TurnStartEventAgent turn started
TurnEndEventAgent turn completed
PasswordPromptEventSudo command needs password (respond via ResponseCh)

Subagent event monitoring

Monitor real-time events from LLM-initiated subagents (when the model uses the subagent tool):

host.OnToolCall(func(e kit.ToolCallEvent) {
@@ -81,7 +124,7 @@ const s={frontmatter:{title:"Callbacks",description:"Monitor tool calls and stre
         })
     }
 })
-

SubscribeSubagent returns an unsubscribe function. Listeners are also cleaned up automatically when the subagent completes. See Subagents for more details.

`,headings:[{depth:2,text:"Event-based monitoring",id:"event-based-monitoring"},{depth:2,text:"Hook system",id:"hook-system"},{depth:3,text:"BeforeToolCall — block tool execution",id:"beforetoolcall--block-tool-execution"},{depth:3,text:"AfterToolResult — modify tool output",id:"aftertoolresult--modify-tool-output"},{depth:3,text:"BeforeTurn — modify prompt, inject messages",id:"beforeturn--modify-prompt-inject-messages"},{depth:3,text:"AfterTurn — observation only",id:"afterturn--observation-only"},{depth:3,text:"Hook priorities",id:"hook-priorities"},{depth:2,text:"Subagent event monitoring",id:"subagent-event-monitoring"}],raw:` +

SubscribeSubagent returns an unsubscribe function. Listeners are also cleaned up automatically when the subagent completes. See Subagents for more details.

`,headings:[{depth:2,text:"Event-based monitoring",id:"event-based-monitoring"},{depth:2,text:"Hook system",id:"hook-system"},{depth:3,text:"BeforeToolCall — block tool execution",id:"beforetoolcall--block-tool-execution"},{depth:3,text:"AfterToolResult — modify tool output",id:"aftertoolresult--modify-tool-output"},{depth:3,text:"BeforeTurn — modify prompt, inject messages",id:"beforeturn--modify-prompt-inject-messages"},{depth:3,text:"AfterTurn — observation only",id:"afterturn--observation-only"},{depth:3,text:"Hook priorities",id:"hook-priorities"},{depth:2,text:"All event types",id:"all-event-types"},{depth:2,text:"Subagent event monitoring",id:"subagent-event-monitoring"}],raw:` # Callbacks ## Event-based monitoring @@ -179,6 +222,19 @@ kit.HookPriorityLow = 100 // runs last Lower values run first. First non-nil result wins. +## All event types + +| Event | Description | +|-------|-------------| +| \`ToolCallEvent\` | Tool call parsed and about to execute | +| \`ToolResultEvent\` | Tool execution completed with result | +| \`ToolOutputEvent\` | Streaming output chunk from tool (e.g., bash stdout/stderr) | +| \`MessageUpdateEvent\` | Streaming text chunk from LLM | +| \`ResponseEvent\` | Final response received | +| \`TurnStartEvent\` | Agent turn started | +| \`TurnEndEvent\` | Agent turn completed | +| \`PasswordPromptEvent\` | Sudo command needs password (respond via \`ResponseCh\`) | + ## Subagent event monitoring Monitor real-time events from LLM-initiated subagents (when the model uses the \`subagent\` tool): diff --git a/assets/development-BTUHn6x2.js b/assets/development-E-EC7CAm.js similarity index 97% rename from assets/development-BTUHn6x2.js rename to assets/development-E-EC7CAm.js index 7cb30624..296fcd31 100644 --- a/assets/development-BTUHn6x2.js +++ b/assets/development-E-EC7CAm.js @@ -25,7 +25,7 @@ internal/acpserver/ - ACP (Agent Client Protocol) server internal/clipboard/ - Cross-platform clipboard operations internal/compaction/ - Conversation compaction and summarization internal/config/ - Configuration management -internal/core/ - Built-in tools (bash, read, write, edit, grep, find, ls) +internal/core/ - Built-in tools (bash with sudo password prompt, read, write, edit, grep, find, ls) internal/extensions/ - Yaegi extension system internal/kitsetup/ - Initial setup wizard internal/message/ - Message content types and structured content blocks @@ -90,7 +90,7 @@ internal/acpserver/ - ACP (Agent Client Protocol) server internal/clipboard/ - Cross-platform clipboard operations internal/compaction/ - Conversation compaction and summarization internal/config/ - Configuration management -internal/core/ - Built-in tools (bash, read, write, edit, grep, find, ls) +internal/core/ - Built-in tools (bash with sudo password prompt, read, write, edit, grep, find, ls) internal/extensions/ - Yaegi extension system internal/kitsetup/ - Initial setup wizard internal/message/ - Message content types and structured content blocks diff --git a/assets/index-8qR0kq1Z.js b/assets/index-DTEMNIPk.js similarity index 97% rename from assets/index-8qR0kq1Z.js rename to assets/index-DTEMNIPk.js index c595ecdb..9c5810ca 100644 --- a/assets/index-8qR0kq1Z.js +++ b/assets/index-DTEMNIPk.js @@ -55,7 +55,7 @@ ${d}`}return h}async function Gh(u,h,d,c){var M,O,C;const v=await fetch("https:/ ${b.content}`).join(` `))??ct.map(b=>`- ${b.title}${b.description?": "+b.description:""}`).join(` -`)}),Ut&&s.jsx("div",{onClick:()=>Ze(null),style:{position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.7)",backdropFilter:"blur(8px)",cursor:"zoom-out"},children:s.jsx("img",{src:Ut,alt:"",style:{maxWidth:"90vw",maxHeight:"90vh",objectFit:"contain",borderRadius:4,boxShadow:"0 16px 64px rgba(0,0,0,0.4)"}})})]})}function cg({allPages:u,onNavigate:h,onClose:d,mobile:c}){const[v,E]=B.useState(""),[M,O]=B.useState([]),[C,y]=B.useState(0),[G,R]=B.useState(null),K=B.useRef(null),nt=B.useRef(void 0);B.useEffect(()=>{Ih().then(W=>R(!!W)),setTimeout(()=>{var W;return(W=K.current)==null?void 0:W.focus()},50)},[]);const xt=B.useCallback(W=>{if(!W.trim())return[];const I=W.toLowerCase();return u.filter(ct=>ct.title.toLowerCase().includes(I)||(ct.description||"").toLowerCase().includes(I)).slice(0,8).map(ct=>({id:ct.id,title:ct.title,excerpt:ct.description}))},[u]),Dt=B.useCallback(async W=>{var ct;if(!W.trim()){O([]),y(0);return}const I=ul;if(I)try{const Q=await I.search(W),Y=[];for(const H of Q.results.slice(0,8)){const U=await H.data(),lt=(U.url||"").replace(/^\//,"").replace(/\/index\.html$/,"").replace(/\.html$/,"")||"index";Y.push({id:lt,title:((ct=U.meta)==null?void 0:ct.title)||lt,excerpt:U.excerpt||void 0})}O(Y),y(0);return}catch{}O(xt(W)),y(0)},[xt]);B.useEffect(()=>(nt.current&&clearTimeout(nt.current),nt.current=setTimeout(()=>Dt(v),120),()=>{nt.current&&clearTimeout(nt.current)}),[v,Dt]);const At=B.useCallback(W=>{W.key==="ArrowDown"?(W.preventDefault(),y(I=>Math.min(I+1,M.length-1))):W.key==="ArrowUp"?(W.preventDefault(),y(I=>Math.max(I-1,0))):W.key==="Enter"&&M.length>0&&(W.preventDefault(),h(M[C].id))},[M,C,h]);return s.jsx("div",{onClick:d,style:{position:"fixed",inset:0,zIndex:1e3,background:"rgba(0,0,0,0.55)",backdropFilter:"blur(6px)",display:"flex",alignItems:c?"stretch":"flex-start",justifyContent:"center",paddingTop:c?0:"12vh"},children:s.jsxs("div",{onClick:W=>W.stopPropagation(),style:{background:"var(--sf)",border:c?"none":"1px solid var(--bd)",borderRadius:c?0:2,width:"100%",maxWidth:c?"100%":520,boxShadow:c?"none":"0 24px 80px rgba(0,0,0,0.4)",overflow:"hidden",display:"flex",flexDirection:"column",...c?{height:"100%"}:{}},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"14px 18px",borderBottom:"1px solid var(--bd)"},children:[s.jsx(rm,{}),s.jsx("input",{ref:K,value:v,onChange:W=>E(W.target.value),onKeyDown:At,placeholder:"Search documentation...",style:{flex:1,background:"none",border:"none",outline:"none",color:"var(--tx)",fontSize:15,fontFamily:"var(--font-body)"}}),s.jsx("kbd",{style:{fontFamily:"var(--font-code)",fontSize:10,color:"var(--txM)",background:"var(--cdBg)",padding:"2px 6px",borderRadius:2,border:"1px solid var(--bd)"},children:"ESC"})]}),M.length>0&&s.jsx("div",{style:{padding:6,maxHeight:c?"none":360,overflow:"auto",flex:c?1:void 0},children:M.map((W,I)=>s.jsxs("button",{onClick:()=>h(W.id),style:{display:"block",width:"100%",textAlign:"left",background:I===C?"var(--acD)":"none",border:"none",borderRadius:2,padding:"10px 14px",cursor:"pointer",color:"var(--tx)",fontFamily:"var(--font-body)"},onMouseEnter:()=>y(I),children:[s.jsx("div",{style:{fontWeight:500,fontSize:14,marginBottom:2},children:W.title}),W.excerpt&&s.jsx("div",{style:{fontSize:12,color:"var(--txM)",lineHeight:1.3},dangerouslySetInnerHTML:{__html:W.excerpt}})]},W.id+I))}),v&&!M.length&&s.jsx("div",{style:{padding:"32px 18px",textAlign:"center",color:"var(--txM)",fontSize:14},children:"No results found"}),G===!1&&v&&M.length>0&&s.jsx("div",{style:{padding:"6px 18px 10px",fontSize:11,color:"var(--txM)",textAlign:"center"},children:"Showing title matches. Build your site for full-text search."})]})})}function cm(u,h,d){let c=u;h&&c.startsWith(h)&&(c=c.slice(h.length));const v=c.replace(/^\//,"").replace(/\/index\.html$/,"").replace(/\.html$/,"").replace(/\/$/,"")||"index";return d.find(M=>M.id===v)?v:null}function fg(u,h,d){const c=d.find(v=>v.id===u);return c?h+c.urlPath:h+"/"+u}class dg extends Error{constructor(h){super(`Page not found: ${h}`),this.code="PAGE_NOT_FOUND",this.name="PageNotFoundError"}}class mg extends Error{constructor(h,d){super(`Failed to load page: ${h}`),this.code="PAGE_LOAD_ERROR",this.name="PageLoadError",d&&(this.cause=d)}}function pg(u,h){if(!u||!h)return;const{repo:d,branch:c="main",dir:v=""}=u,E=v?`${v.replace(/\/$/,"")}/`:"";return`https://github.com/${d}/edit/${c}/${E}${h}`}function hg(u,h,d,c,v){var O;const E=v(u,c,d);if(E)return E;const M=h.startsWith("#")?h.slice(1):h;return M&&d.some(C=>C.id===M)?M:((O=d[0])==null?void 0:O.id)||"index"}async function fm(u,h,d){const c=h.find(E=>E.id===u);let v;try{v=await d(u)}catch(E){throw new mg(u,E)}if(c!=null&&c.isMdx&&v.meta)return{isMdx:!0,component:v.default,frontmatter:v.meta.frontmatter,headings:v.meta.headings};if(!v.default)throw new dg(u);return v.isApiReference&&v.apiManifest?{isMdx:!1,isApiReference:!0,...v.default,apiManifest:v.apiManifest}:v.isChangelog&&v.changelogEntries?{isMdx:!1,...v.default,changelogEntries:v.changelogEntries}:{isMdx:!1,...v.default}}function gg(u,h){return(u==null?void 0:u.version)||void 0}const Jn={name:"Kit",logo:"/logo.jpg",favicon:"/logo.jpg",baseUrl:"https://go-kit.dev",theme:{preset:"cipher",accent:"#e03030",mode:"dark",fonts:{heading:"Space Grotesk",body:"Space Grotesk",code:"Source Code Pro"}},navigation:[{group:"Getting Started",pages:["index","installation","quick-start"]},{group:"Configuration",pages:["configuration","providers","themes"]},{group:"CLI Reference",pages:["cli/flags","cli/commands"]},{group:"Extensions",pages:["extensions/overview","extensions/capabilities","extensions/examples","extensions/loading","extensions/testing"]},{group:"Sessions",pages:["sessions"]},{group:"Go SDK",pages:["sdk/overview","sdk/options","sdk/callbacks","sdk/sessions"]},{group:"Advanced",pages:["advanced/subagents","advanced/json-output","advanced/testing"]},{group:"Development",pages:["development"]}],search:{provider:"local"},toc:{enabled:!0,depth:3},math:!1,strictLinks:!1,lastUpdated:!0,redirects:[],socialLinks:[{platform:"github",url:"https://github.com/mark3labs/kit"},{platform:"discord",url:"https://discord.gg/RqSS2NQVsY"}]},Wn=[{id:"advanced/json-output",filePath:"advanced/json-output.md",urlPath:"/advanced/json-output",frontmatter:{title:"JSON Output",description:"Machine-readable JSON output for scripting and automation.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"advanced/subagents",filePath:"advanced/subagents.md",urlPath:"/advanced/subagents",frontmatter:{title:"Subagents",description:"Multi-agent orchestration with Kit subagents.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"advanced/testing",filePath:"advanced/testing.md",urlPath:"/advanced/testing",frontmatter:{title:"Testing with tmux",description:"Test Kit's TUI non-interactively using tmux.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"cli/commands",filePath:"cli/commands.md",urlPath:"/cli/commands",frontmatter:{title:"Commands",description:"Complete reference for all Kit CLI subcommands.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"cli/flags",filePath:"cli/flags.md",urlPath:"/cli/flags",frontmatter:{title:"Global Flags",description:"Complete reference for all Kit CLI flags.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"configuration",filePath:"configuration.md",urlPath:"/configuration",frontmatter:{title:"Configuration",description:"Configure Kit using config files, environment variables, and CLI flags.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"development",filePath:"development.md",urlPath:"/development",frontmatter:{title:"Development",description:"Build, test, and contribute to Kit.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"extensions/capabilities",filePath:"extensions/capabilities.md",urlPath:"/extensions/capabilities",frontmatter:{title:"Capabilities",description:"All extension capabilities — lifecycle events, tools, commands, widgets, and more.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"extensions/examples",filePath:"extensions/examples.md",urlPath:"/extensions/examples",frontmatter:{title:"Examples",description:"Catalog of example extensions included with Kit.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"extensions/loading",filePath:"extensions/loading.md",urlPath:"/extensions/loading",frontmatter:{title:"Loading Extensions",description:"How Kit discovers and loads extensions.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"extensions/overview",filePath:"extensions/overview.md",urlPath:"/extensions/overview",frontmatter:{title:"Extension System",description:"Overview of Kit's Go-based extension system.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"extensions/testing",filePath:"extensions/testing.md",urlPath:"/extensions/testing",frontmatter:{title:"Testing Extensions",description:"Write unit tests for your Kit extensions using the test package.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"index",filePath:"index.md",urlPath:"/",frontmatter:{title:"Kit",description:"Kit is a powerful, extensible AI coding agent CLI with multi-provider support, built-in tools, and a rich extension system.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"installation",filePath:"installation.md",urlPath:"/installation",frontmatter:{title:"Installation",description:"Install Kit using npm, bun, pnpm, Go, or build from source.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"providers",filePath:"providers.md",urlPath:"/providers",frontmatter:{title:"Providers",description:"Supported LLM providers and model configuration.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"quick-start",filePath:"quick-start.md",urlPath:"/quick-start",frontmatter:{title:"Quick Start",description:"Get up and running with Kit in minutes.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"sdk/callbacks",filePath:"sdk/callbacks.md",urlPath:"/sdk/callbacks",frontmatter:{title:"Callbacks",description:"Monitor tool calls and streaming output with the Kit Go SDK.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"sdk/options",filePath:"sdk/options.md",urlPath:"/sdk/options",frontmatter:{title:"SDK Options",description:"Configuration options for the Kit Go SDK.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"sdk/overview",filePath:"sdk/overview.md",urlPath:"/sdk/overview",frontmatter:{title:"Go SDK",description:"Embed Kit in your Go applications.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"sdk/sessions",filePath:"sdk/sessions.md",urlPath:"/sdk/sessions",frontmatter:{title:"SDK Sessions",description:"Session management in the Kit Go SDK.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"sessions",filePath:"sessions.md",urlPath:"/sessions",frontmatter:{title:"Session Management",description:"How Kit persists and manages conversation sessions.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"},{id:"themes",filePath:"themes.md",urlPath:"/themes",frontmatter:{title:"Themes",description:"Customize Kit's appearance with built-in themes, custom theme files, and the extension theme API.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T17:33:03+03:00"}],vg=[{section:"Getting Started",pages:[{title:"Kit",id:"index",urlPath:"/"},{title:"Installation",id:"installation",urlPath:"/installation"},{title:"Quick Start",id:"quick-start",urlPath:"/quick-start"}]},{section:"Configuration",pages:[{title:"Configuration",id:"configuration",urlPath:"/configuration"},{title:"Providers",id:"providers",urlPath:"/providers"},{title:"Themes",id:"themes",urlPath:"/themes"}]},{section:"CLI Reference",pages:[{title:"Global Flags",id:"cli/flags",urlPath:"/cli/flags"},{title:"Commands",id:"cli/commands",urlPath:"/cli/commands"}]},{section:"Extensions",pages:[{title:"Extension System",id:"extensions/overview",urlPath:"/extensions/overview"},{title:"Capabilities",id:"extensions/capabilities",urlPath:"/extensions/capabilities"},{title:"Examples",id:"extensions/examples",urlPath:"/extensions/examples"},{title:"Loading Extensions",id:"extensions/loading",urlPath:"/extensions/loading"},{title:"Testing Extensions",id:"extensions/testing",urlPath:"/extensions/testing"}]},{section:"Sessions",pages:[{title:"Session Management",id:"sessions",urlPath:"/sessions"}]},{section:"Go SDK",pages:[{title:"Go SDK",id:"sdk/overview",urlPath:"/sdk/overview"},{title:"SDK Options",id:"sdk/options",urlPath:"/sdk/options"},{title:"Callbacks",id:"sdk/callbacks",urlPath:"/sdk/callbacks"},{title:"SDK Sessions",id:"sdk/sessions",urlPath:"/sdk/sessions"}]},{section:"Advanced",pages:[{title:"Subagents",id:"advanced/subagents",urlPath:"/advanced/subagents"},{title:"JSON Output",id:"advanced/json-output",urlPath:"/advanced/json-output"},{title:"Testing with tmux",id:"advanced/testing",urlPath:"/advanced/testing"}]},{section:"Development",pages:[{title:"Development",id:"development",urlPath:"/development"}]}],Zu=null,yg={"advanced/json-output":()=>Lt(()=>import("./json-output-BiSiIPM0.js"),[]),"advanced/subagents":()=>Lt(()=>import("./subagents-lghAXYlk.js"),[]),"advanced/testing":()=>Lt(()=>import("./testing-COLNxuKj.js"),[]),"cli/commands":()=>Lt(()=>import("./commands-DFoCG962.js"),[]),"cli/flags":()=>Lt(()=>import("./flags-CehgVsbn.js"),[]),configuration:()=>Lt(()=>import("./configuration-D22SGfQH.js"),[]),development:()=>Lt(()=>import("./development-BTUHn6x2.js"),[]),"extensions/capabilities":()=>Lt(()=>import("./capabilities-CbOsHlR1.js"),[]),"extensions/examples":()=>Lt(()=>import("./examples-Dd5WMq-L.js"),[]),"extensions/loading":()=>Lt(()=>import("./loading-CfdMbwrl.js"),[]),"extensions/overview":()=>Lt(()=>import("./overview-BRtZenVZ.js"),[]),"extensions/testing":()=>Lt(()=>import("./testing-BjX63Hnw.js"),[]),index:()=>Lt(()=>import("./index-CgfPk7tz.js"),[]),installation:()=>Lt(()=>import("./installation-CkjlJXwY.js"),[]),providers:()=>Lt(()=>import("./providers-C6IbA7eV.js"),[]),"quick-start":()=>Lt(()=>import("./quick-start-YzNijQyU.js"),[]),"sdk/callbacks":()=>Lt(()=>import("./callbacks-CvF2SOxQ.js"),[]),"sdk/options":()=>Lt(()=>import("./options-DbjuVbc8.js"),[]),"sdk/overview":()=>Lt(()=>import("./overview-DKMZGK4V.js"),[]),"sdk/sessions":()=>Lt(()=>import("./sessions-CeADaXnR.js"),[]),sessions:()=>Lt(()=>import("./sessions-BR7Y7dXm.js"),[]),themes:()=>Lt(()=>import("./themes-Chyvu6J4.js"),[])};function dm(u){const h=yg[u];if(!h)throw new Error("Unknown page: "+u);return h()}const bg=[{id:"advanced/json-output",title:"JSON Output",content:` +`)}),Ut&&s.jsx("div",{onClick:()=>Ze(null),style:{position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.7)",backdropFilter:"blur(8px)",cursor:"zoom-out"},children:s.jsx("img",{src:Ut,alt:"",style:{maxWidth:"90vw",maxHeight:"90vh",objectFit:"contain",borderRadius:4,boxShadow:"0 16px 64px rgba(0,0,0,0.4)"}})})]})}function cg({allPages:u,onNavigate:h,onClose:d,mobile:c}){const[v,E]=B.useState(""),[M,O]=B.useState([]),[C,y]=B.useState(0),[G,R]=B.useState(null),K=B.useRef(null),nt=B.useRef(void 0);B.useEffect(()=>{Ih().then(W=>R(!!W)),setTimeout(()=>{var W;return(W=K.current)==null?void 0:W.focus()},50)},[]);const xt=B.useCallback(W=>{if(!W.trim())return[];const I=W.toLowerCase();return u.filter(ct=>ct.title.toLowerCase().includes(I)||(ct.description||"").toLowerCase().includes(I)).slice(0,8).map(ct=>({id:ct.id,title:ct.title,excerpt:ct.description}))},[u]),Dt=B.useCallback(async W=>{var ct;if(!W.trim()){O([]),y(0);return}const I=ul;if(I)try{const Q=await I.search(W),Y=[];for(const H of Q.results.slice(0,8)){const U=await H.data(),lt=(U.url||"").replace(/^\//,"").replace(/\/index\.html$/,"").replace(/\.html$/,"")||"index";Y.push({id:lt,title:((ct=U.meta)==null?void 0:ct.title)||lt,excerpt:U.excerpt||void 0})}O(Y),y(0);return}catch{}O(xt(W)),y(0)},[xt]);B.useEffect(()=>(nt.current&&clearTimeout(nt.current),nt.current=setTimeout(()=>Dt(v),120),()=>{nt.current&&clearTimeout(nt.current)}),[v,Dt]);const At=B.useCallback(W=>{W.key==="ArrowDown"?(W.preventDefault(),y(I=>Math.min(I+1,M.length-1))):W.key==="ArrowUp"?(W.preventDefault(),y(I=>Math.max(I-1,0))):W.key==="Enter"&&M.length>0&&(W.preventDefault(),h(M[C].id))},[M,C,h]);return s.jsx("div",{onClick:d,style:{position:"fixed",inset:0,zIndex:1e3,background:"rgba(0,0,0,0.55)",backdropFilter:"blur(6px)",display:"flex",alignItems:c?"stretch":"flex-start",justifyContent:"center",paddingTop:c?0:"12vh"},children:s.jsxs("div",{onClick:W=>W.stopPropagation(),style:{background:"var(--sf)",border:c?"none":"1px solid var(--bd)",borderRadius:c?0:2,width:"100%",maxWidth:c?"100%":520,boxShadow:c?"none":"0 24px 80px rgba(0,0,0,0.4)",overflow:"hidden",display:"flex",flexDirection:"column",...c?{height:"100%"}:{}},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"14px 18px",borderBottom:"1px solid var(--bd)"},children:[s.jsx(rm,{}),s.jsx("input",{ref:K,value:v,onChange:W=>E(W.target.value),onKeyDown:At,placeholder:"Search documentation...",style:{flex:1,background:"none",border:"none",outline:"none",color:"var(--tx)",fontSize:15,fontFamily:"var(--font-body)"}}),s.jsx("kbd",{style:{fontFamily:"var(--font-code)",fontSize:10,color:"var(--txM)",background:"var(--cdBg)",padding:"2px 6px",borderRadius:2,border:"1px solid var(--bd)"},children:"ESC"})]}),M.length>0&&s.jsx("div",{style:{padding:6,maxHeight:c?"none":360,overflow:"auto",flex:c?1:void 0},children:M.map((W,I)=>s.jsxs("button",{onClick:()=>h(W.id),style:{display:"block",width:"100%",textAlign:"left",background:I===C?"var(--acD)":"none",border:"none",borderRadius:2,padding:"10px 14px",cursor:"pointer",color:"var(--tx)",fontFamily:"var(--font-body)"},onMouseEnter:()=>y(I),children:[s.jsx("div",{style:{fontWeight:500,fontSize:14,marginBottom:2},children:W.title}),W.excerpt&&s.jsx("div",{style:{fontSize:12,color:"var(--txM)",lineHeight:1.3},dangerouslySetInnerHTML:{__html:W.excerpt}})]},W.id+I))}),v&&!M.length&&s.jsx("div",{style:{padding:"32px 18px",textAlign:"center",color:"var(--txM)",fontSize:14},children:"No results found"}),G===!1&&v&&M.length>0&&s.jsx("div",{style:{padding:"6px 18px 10px",fontSize:11,color:"var(--txM)",textAlign:"center"},children:"Showing title matches. Build your site for full-text search."})]})})}function cm(u,h,d){let c=u;h&&c.startsWith(h)&&(c=c.slice(h.length));const v=c.replace(/^\//,"").replace(/\/index\.html$/,"").replace(/\.html$/,"").replace(/\/$/,"")||"index";return d.find(M=>M.id===v)?v:null}function fg(u,h,d){const c=d.find(v=>v.id===u);return c?h+c.urlPath:h+"/"+u}class dg extends Error{constructor(h){super(`Page not found: ${h}`),this.code="PAGE_NOT_FOUND",this.name="PageNotFoundError"}}class mg extends Error{constructor(h,d){super(`Failed to load page: ${h}`),this.code="PAGE_LOAD_ERROR",this.name="PageLoadError",d&&(this.cause=d)}}function pg(u,h){if(!u||!h)return;const{repo:d,branch:c="main",dir:v=""}=u,E=v?`${v.replace(/\/$/,"")}/`:"";return`https://github.com/${d}/edit/${c}/${E}${h}`}function hg(u,h,d,c,v){var O;const E=v(u,c,d);if(E)return E;const M=h.startsWith("#")?h.slice(1):h;return M&&d.some(C=>C.id===M)?M:((O=d[0])==null?void 0:O.id)||"index"}async function fm(u,h,d){const c=h.find(E=>E.id===u);let v;try{v=await d(u)}catch(E){throw new mg(u,E)}if(c!=null&&c.isMdx&&v.meta)return{isMdx:!0,component:v.default,frontmatter:v.meta.frontmatter,headings:v.meta.headings};if(!v.default)throw new dg(u);return v.isApiReference&&v.apiManifest?{isMdx:!1,isApiReference:!0,...v.default,apiManifest:v.apiManifest}:v.isChangelog&&v.changelogEntries?{isMdx:!1,...v.default,changelogEntries:v.changelogEntries}:{isMdx:!1,...v.default}}function gg(u,h){return(u==null?void 0:u.version)||void 0}const Jn={name:"Kit",logo:"/logo.jpg",favicon:"/logo.jpg",baseUrl:"https://go-kit.dev",theme:{preset:"cipher",accent:"#e03030",mode:"dark",fonts:{heading:"Space Grotesk",body:"Space Grotesk",code:"Source Code Pro"}},navigation:[{group:"Getting Started",pages:["index","installation","quick-start"]},{group:"Configuration",pages:["configuration","providers","themes"]},{group:"CLI Reference",pages:["cli/flags","cli/commands"]},{group:"Extensions",pages:["extensions/overview","extensions/capabilities","extensions/examples","extensions/loading","extensions/testing"]},{group:"Sessions",pages:["sessions"]},{group:"Go SDK",pages:["sdk/overview","sdk/options","sdk/callbacks","sdk/sessions"]},{group:"Advanced",pages:["advanced/subagents","advanced/json-output","advanced/testing"]},{group:"Development",pages:["development"]}],search:{provider:"local"},toc:{enabled:!0,depth:3},math:!1,strictLinks:!1,lastUpdated:!0,redirects:[],socialLinks:[{platform:"github",url:"https://github.com/mark3labs/kit"},{platform:"discord",url:"https://discord.gg/RqSS2NQVsY"}]},Wn=[{id:"advanced/json-output",filePath:"advanced/json-output.md",urlPath:"/advanced/json-output",frontmatter:{title:"JSON Output",description:"Machine-readable JSON output for scripting and automation.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"advanced/subagents",filePath:"advanced/subagents.md",urlPath:"/advanced/subagents",frontmatter:{title:"Subagents",description:"Multi-agent orchestration with Kit subagents.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"advanced/testing",filePath:"advanced/testing.md",urlPath:"/advanced/testing",frontmatter:{title:"Testing with tmux",description:"Test Kit's TUI non-interactively using tmux.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"cli/commands",filePath:"cli/commands.md",urlPath:"/cli/commands",frontmatter:{title:"Commands",description:"Complete reference for all Kit CLI subcommands.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"cli/flags",filePath:"cli/flags.md",urlPath:"/cli/flags",frontmatter:{title:"Global Flags",description:"Complete reference for all Kit CLI flags.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"configuration",filePath:"configuration.md",urlPath:"/configuration",frontmatter:{title:"Configuration",description:"Configure Kit using config files, environment variables, and CLI flags.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"development",filePath:"development.md",urlPath:"/development",frontmatter:{title:"Development",description:"Build, test, and contribute to Kit.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"extensions/capabilities",filePath:"extensions/capabilities.md",urlPath:"/extensions/capabilities",frontmatter:{title:"Capabilities",description:"All extension capabilities — lifecycle events, tools, commands, widgets, and more.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"extensions/examples",filePath:"extensions/examples.md",urlPath:"/extensions/examples",frontmatter:{title:"Examples",description:"Catalog of example extensions included with Kit.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"extensions/loading",filePath:"extensions/loading.md",urlPath:"/extensions/loading",frontmatter:{title:"Loading Extensions",description:"How Kit discovers and loads extensions.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"extensions/overview",filePath:"extensions/overview.md",urlPath:"/extensions/overview",frontmatter:{title:"Extension System",description:"Overview of Kit's Go-based extension system.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"extensions/testing",filePath:"extensions/testing.md",urlPath:"/extensions/testing",frontmatter:{title:"Testing Extensions",description:"Write unit tests for your Kit extensions using the test package.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"index",filePath:"index.md",urlPath:"/",frontmatter:{title:"Kit",description:"Kit is a powerful, extensible AI coding agent CLI with multi-provider support, built-in tools, and a rich extension system.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"installation",filePath:"installation.md",urlPath:"/installation",frontmatter:{title:"Installation",description:"Install Kit using npm, bun, pnpm, Go, or build from source.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"providers",filePath:"providers.md",urlPath:"/providers",frontmatter:{title:"Providers",description:"Supported LLM providers and model configuration.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"quick-start",filePath:"quick-start.md",urlPath:"/quick-start",frontmatter:{title:"Quick Start",description:"Get up and running with Kit in minutes.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"sdk/callbacks",filePath:"sdk/callbacks.md",urlPath:"/sdk/callbacks",frontmatter:{title:"Callbacks",description:"Monitor tool calls and streaming output with the Kit Go SDK.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"sdk/options",filePath:"sdk/options.md",urlPath:"/sdk/options",frontmatter:{title:"SDK Options",description:"Configuration options for the Kit Go SDK.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"sdk/overview",filePath:"sdk/overview.md",urlPath:"/sdk/overview",frontmatter:{title:"Go SDK",description:"Embed Kit in your Go applications.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"sdk/sessions",filePath:"sdk/sessions.md",urlPath:"/sdk/sessions",frontmatter:{title:"SDK Sessions",description:"Session management in the Kit Go SDK.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"sessions",filePath:"sessions.md",urlPath:"/sessions",frontmatter:{title:"Session Management",description:"How Kit persists and manages conversation sessions.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"},{id:"themes",filePath:"themes.md",urlPath:"/themes",frontmatter:{title:"Themes",description:"Customize Kit's appearance with built-in themes, custom theme files, and the extension theme API.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-15T18:06:11+03:00"}],vg=[{section:"Getting Started",pages:[{title:"Kit",id:"index",urlPath:"/"},{title:"Installation",id:"installation",urlPath:"/installation"},{title:"Quick Start",id:"quick-start",urlPath:"/quick-start"}]},{section:"Configuration",pages:[{title:"Configuration",id:"configuration",urlPath:"/configuration"},{title:"Providers",id:"providers",urlPath:"/providers"},{title:"Themes",id:"themes",urlPath:"/themes"}]},{section:"CLI Reference",pages:[{title:"Global Flags",id:"cli/flags",urlPath:"/cli/flags"},{title:"Commands",id:"cli/commands",urlPath:"/cli/commands"}]},{section:"Extensions",pages:[{title:"Extension System",id:"extensions/overview",urlPath:"/extensions/overview"},{title:"Capabilities",id:"extensions/capabilities",urlPath:"/extensions/capabilities"},{title:"Examples",id:"extensions/examples",urlPath:"/extensions/examples"},{title:"Loading Extensions",id:"extensions/loading",urlPath:"/extensions/loading"},{title:"Testing Extensions",id:"extensions/testing",urlPath:"/extensions/testing"}]},{section:"Sessions",pages:[{title:"Session Management",id:"sessions",urlPath:"/sessions"}]},{section:"Go SDK",pages:[{title:"Go SDK",id:"sdk/overview",urlPath:"/sdk/overview"},{title:"SDK Options",id:"sdk/options",urlPath:"/sdk/options"},{title:"Callbacks",id:"sdk/callbacks",urlPath:"/sdk/callbacks"},{title:"SDK Sessions",id:"sdk/sessions",urlPath:"/sdk/sessions"}]},{section:"Advanced",pages:[{title:"Subagents",id:"advanced/subagents",urlPath:"/advanced/subagents"},{title:"JSON Output",id:"advanced/json-output",urlPath:"/advanced/json-output"},{title:"Testing with tmux",id:"advanced/testing",urlPath:"/advanced/testing"}]},{section:"Development",pages:[{title:"Development",id:"development",urlPath:"/development"}]}],Zu=null,yg={"advanced/json-output":()=>Lt(()=>import("./json-output-BiSiIPM0.js"),[]),"advanced/subagents":()=>Lt(()=>import("./subagents-lghAXYlk.js"),[]),"advanced/testing":()=>Lt(()=>import("./testing-COLNxuKj.js"),[]),"cli/commands":()=>Lt(()=>import("./commands-DFoCG962.js"),[]),"cli/flags":()=>Lt(()=>import("./flags-CehgVsbn.js"),[]),configuration:()=>Lt(()=>import("./configuration-D22SGfQH.js"),[]),development:()=>Lt(()=>import("./development-E-EC7CAm.js"),[]),"extensions/capabilities":()=>Lt(()=>import("./capabilities-CbOsHlR1.js"),[]),"extensions/examples":()=>Lt(()=>import("./examples-Dd5WMq-L.js"),[]),"extensions/loading":()=>Lt(()=>import("./loading-CfdMbwrl.js"),[]),"extensions/overview":()=>Lt(()=>import("./overview-BRtZenVZ.js"),[]),"extensions/testing":()=>Lt(()=>import("./testing-BjX63Hnw.js"),[]),index:()=>Lt(()=>import("./index-DjkHYQxg.js"),[]),installation:()=>Lt(()=>import("./installation-CkjlJXwY.js"),[]),providers:()=>Lt(()=>import("./providers-C6IbA7eV.js"),[]),"quick-start":()=>Lt(()=>import("./quick-start-YzNijQyU.js"),[]),"sdk/callbacks":()=>Lt(()=>import("./callbacks-BXozAQ8p.js"),[]),"sdk/options":()=>Lt(()=>import("./options-DbjuVbc8.js"),[]),"sdk/overview":()=>Lt(()=>import("./overview-DKMZGK4V.js"),[]),"sdk/sessions":()=>Lt(()=>import("./sessions-CeADaXnR.js"),[]),sessions:()=>Lt(()=>import("./sessions-BR7Y7dXm.js"),[]),themes:()=>Lt(()=>import("./themes-Chyvu6J4.js"),[])};function dm(u){const h=yg[u];if(!h)throw new Error("Unknown page: "+u);return h()}const bg=[{id:"advanced/json-output",title:"JSON Output",content:` # JSON Output Use the \`--json\` flag to get structured output for scripting and automation: @@ -579,7 +579,7 @@ internal/acpserver/ - ACP (Agent Client Protocol) server internal/clipboard/ - Cross-platform clipboard operations internal/compaction/ - Conversation compaction and summarization internal/config/ - Configuration management -internal/core/ - Built-in tools (bash, read, write, edit, grep, find, ls) +internal/core/ - Built-in tools (bash with sudo password prompt, read, write, edit, grep, find, ls) internal/extensions/ - Yaegi extension system internal/kitsetup/ - Initial setup wizard internal/message/ - Message content types and structured content blocks @@ -1182,7 +1182,7 @@ import "kit/ext" var callCount int func Init(api ext.API) { - api.OnToolCall(func(_ ext.ToolCallEvent,`}],xg={};function Sg(u){return u>=200&&u<300?"#22c55e":u>=400&&u<500?"#f59e0b":u>=500?"#ef4444":"#6b7280"}function Tg(u,h,d,c){let v=h;for(const[M,O]of Object.entries(d))v=v.replace(`{${M}}`,encodeURIComponent(O));const E=new URL(v,u);for(const[M,O]of Object.entries(c))O&&E.searchParams.set(M,O);return E.toString()}function Eg(u){return u==="bearer"?"Authorization":"X-API-Key"}const Fu={width:"100%",padding:"6px 10px",border:"1px solid var(--bd)",borderRadius:4,background:"var(--bg)",color:"var(--tx)",fontSize:13,fontFamily:"var(--font-code, monospace)",boxSizing:"border-box"};function Ju({param:u,value:h,onChange:d}){return s.jsxs("div",{style:{marginBottom:10},children:[s.jsxs("label",{style:{display:"block",fontSize:12,fontWeight:600,marginBottom:3,color:"var(--tx)"},children:[u.name,u.required&&s.jsx("span",{style:{color:"#ef4444",marginLeft:2},children:"*"}),s.jsxs("span",{style:{fontWeight:400,color:"var(--txM)",marginLeft:6,fontSize:11},children:[u.in," · ",u.type]})]}),s.jsx("input",{"data-testid":`param-input-${u.name}`,style:Fu,placeholder:u.description||u.name,value:h,onChange:c=>d(c.target.value)})]})}function zg({endpoint:u,baseUrl:h,auth:d}){var lt;const[c,v]=B.useState(!1),[E,M]=B.useState({}),[O,C]=B.useState((lt=u.requestBody)!=null&<.schema?JSON.stringify(u.requestBody.schema,null,2):""),[y,G]=B.useState(""),[R,K]=B.useState(!1),[nt,xt]=B.useState(null),[Dt,At]=B.useState(null),[W,I]=B.useState(!1),ct=(P,mt)=>M(tt=>({...tt,[P]:mt})),Q=u.parameters.filter(P=>P.in==="path"),Y=u.parameters.filter(P=>P.in==="query"),H=u.parameters.filter(P=>P.in==="header"),U=u.requestBody!=null,at=async()=>{K(!0),xt(null),At(null);const P={};for(const Mt of Q)P[Mt.name]=E[Mt.name]||"";const mt={};for(const Mt of Y)E[Mt.name]&&(mt[Mt.name]=E[Mt.name]);const tt={};for(const Mt of H)E[Mt.name]&&(tt[Mt.name]=E[Mt.name]);if(U&&(tt["Content-Type"]="application/json"),d&&y){const Mt=d.header||Eg(d.type);tt[Mt]=d.type==="bearer"?`Bearer ${y}`:y}try{const Mt=Tg(h,u.path,P,mt),$t=Date.now(),ft=await fetch(Mt,{method:u.method.toUpperCase(),headers:tt,body:U&&O?O:void 0}),j=Date.now()-$t,w={};ft.headers.forEach((Tt,m)=>{w[m]=Tt});let Z;if((ft.headers.get("content-type")||"").includes("json")){const Tt=await ft.json();Z=JSON.stringify(Tt,null,2)}else Z=await ft.text();xt({status:ft.status,statusText:ft.statusText,headers:w,body:Z,time:j})}catch(Mt){At(Mt instanceof Error?Mt.message:"Network error")}finally{K(!1)}};return s.jsxs("div",{"data-testid":"api-playground",style:{border:"1px solid var(--bd)",borderRadius:6,overflow:"hidden",marginTop:8},children:[s.jsxs("button",{"data-testid":"playground-toggle",onClick:()=>v(!c),style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"10px 14px",background:"var(--sf)",border:"none",cursor:"pointer",fontFamily:"inherit",fontSize:13,fontWeight:600,color:"var(--ac)"},children:[s.jsx("span",{style:{fontSize:14},children:c?"▼":"▶"}),"Try it out"]}),c&&s.jsxs("div",{style:{padding:"14px 16px",borderTop:"1px solid var(--bd)"},children:[d&&s.jsxs("div",{style:{marginBottom:12},children:[s.jsx("label",{style:{display:"block",fontSize:12,fontWeight:600,marginBottom:3,color:"var(--tx)"},children:d.type==="bearer"?"Bearer Token":"API Key"}),s.jsx("input",{"data-testid":"auth-input",type:"password",style:Fu,placeholder:d.type==="bearer"?"Enter bearer token":"Enter API key",value:y,onChange:P=>G(P.target.value)})]}),Q.length>0&&s.jsxs("div",{style:{marginBottom:4},children:[s.jsx("div",{style:{fontSize:11,fontWeight:700,textTransform:"uppercase",color:"var(--txM)",marginBottom:6,letterSpacing:"0.05em"},children:"Path Parameters"}),Q.map(P=>s.jsx(Ju,{param:P,value:E[P.name]||"",onChange:mt=>ct(P.name,mt)},P.name))]}),Y.length>0&&s.jsxs("div",{style:{marginBottom:4},children:[s.jsx("div",{style:{fontSize:11,fontWeight:700,textTransform:"uppercase",color:"var(--txM)",marginBottom:6,letterSpacing:"0.05em"},children:"Query Parameters"}),Y.map(P=>s.jsx(Ju,{param:P,value:E[P.name]||"",onChange:mt=>ct(P.name,mt)},P.name))]}),H.length>0&&s.jsxs("div",{style:{marginBottom:4},children:[s.jsx("div",{style:{fontSize:11,fontWeight:700,textTransform:"uppercase",color:"var(--txM)",marginBottom:6,letterSpacing:"0.05em"},children:"Header Parameters"}),H.map(P=>s.jsx(Ju,{param:P,value:E[P.name]||"",onChange:mt=>ct(P.name,mt)},P.name))]}),U&&s.jsxs("div",{style:{marginBottom:12},children:[s.jsx("label",{style:{display:"block",fontSize:12,fontWeight:600,marginBottom:3,color:"var(--tx)"},children:"Request Body"}),s.jsx("textarea",{"data-testid":"request-body",style:{...Fu,minHeight:100,resize:"vertical",lineHeight:1.5},value:O,onChange:P=>C(P.target.value)})]}),s.jsx("button",{"data-testid":"send-request",onClick:at,disabled:R,style:{padding:"8px 20px",borderRadius:4,border:"none",background:"var(--ac)",color:"#fff",fontWeight:600,fontSize:13,cursor:R?"wait":"pointer",opacity:R?.7:1,fontFamily:"inherit"},children:R?"Sending...":"Send Request"}),Dt&&s.jsx("div",{"data-testid":"playground-error",style:{marginTop:12,padding:"10px 14px",borderRadius:4,background:"#ef444418",border:"1px solid #ef444444",color:"#ef4444",fontSize:13},children:Dt}),nt&&s.jsxs("div",{"data-testid":"playground-response",style:{marginTop:12},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:8},children:[s.jsxs("span",{"data-testid":"response-status",style:{padding:"2px 10px",borderRadius:4,fontSize:13,fontWeight:700,fontFamily:"var(--font-code, monospace)",color:"#fff",background:Sg(nt.status)},children:[nt.status," ",nt.statusText]}),s.jsxs("span",{style:{fontSize:12,color:"var(--txM)"},children:[nt.time,"ms"]})]}),s.jsxs("button",{"data-testid":"toggle-headers",onClick:()=>I(!W),style:{display:"flex",alignItems:"center",gap:4,background:"none",border:"none",cursor:"pointer",fontSize:12,color:"var(--txM)",padding:"4px 0",fontFamily:"inherit",marginBottom:4},children:[s.jsx("span",{style:{transform:W?"rotate(90deg)":"rotate(0)",transition:"transform 0.15s"},children:"▶"}),"Response Headers"]}),W&&s.jsx("pre",{style:{background:"var(--sf)",padding:10,borderRadius:4,fontSize:11,fontFamily:"var(--font-code, monospace)",overflow:"auto",lineHeight:1.5,marginBottom:8,color:"var(--tx2)",margin:"0 0 8px 0"},children:Object.entries(nt.headers).map(([P,mt])=>`${P}: ${mt}`).join(` + api.OnToolCall`}],xg={};function Sg(u){return u>=200&&u<300?"#22c55e":u>=400&&u<500?"#f59e0b":u>=500?"#ef4444":"#6b7280"}function Tg(u,h,d,c){let v=h;for(const[M,O]of Object.entries(d))v=v.replace(`{${M}}`,encodeURIComponent(O));const E=new URL(v,u);for(const[M,O]of Object.entries(c))O&&E.searchParams.set(M,O);return E.toString()}function Eg(u){return u==="bearer"?"Authorization":"X-API-Key"}const Fu={width:"100%",padding:"6px 10px",border:"1px solid var(--bd)",borderRadius:4,background:"var(--bg)",color:"var(--tx)",fontSize:13,fontFamily:"var(--font-code, monospace)",boxSizing:"border-box"};function Ju({param:u,value:h,onChange:d}){return s.jsxs("div",{style:{marginBottom:10},children:[s.jsxs("label",{style:{display:"block",fontSize:12,fontWeight:600,marginBottom:3,color:"var(--tx)"},children:[u.name,u.required&&s.jsx("span",{style:{color:"#ef4444",marginLeft:2},children:"*"}),s.jsxs("span",{style:{fontWeight:400,color:"var(--txM)",marginLeft:6,fontSize:11},children:[u.in," · ",u.type]})]}),s.jsx("input",{"data-testid":`param-input-${u.name}`,style:Fu,placeholder:u.description||u.name,value:h,onChange:c=>d(c.target.value)})]})}function zg({endpoint:u,baseUrl:h,auth:d}){var lt;const[c,v]=B.useState(!1),[E,M]=B.useState({}),[O,C]=B.useState((lt=u.requestBody)!=null&<.schema?JSON.stringify(u.requestBody.schema,null,2):""),[y,G]=B.useState(""),[R,K]=B.useState(!1),[nt,xt]=B.useState(null),[Dt,At]=B.useState(null),[W,I]=B.useState(!1),ct=(P,mt)=>M(tt=>({...tt,[P]:mt})),Q=u.parameters.filter(P=>P.in==="path"),Y=u.parameters.filter(P=>P.in==="query"),H=u.parameters.filter(P=>P.in==="header"),U=u.requestBody!=null,at=async()=>{K(!0),xt(null),At(null);const P={};for(const Mt of Q)P[Mt.name]=E[Mt.name]||"";const mt={};for(const Mt of Y)E[Mt.name]&&(mt[Mt.name]=E[Mt.name]);const tt={};for(const Mt of H)E[Mt.name]&&(tt[Mt.name]=E[Mt.name]);if(U&&(tt["Content-Type"]="application/json"),d&&y){const Mt=d.header||Eg(d.type);tt[Mt]=d.type==="bearer"?`Bearer ${y}`:y}try{const Mt=Tg(h,u.path,P,mt),$t=Date.now(),ft=await fetch(Mt,{method:u.method.toUpperCase(),headers:tt,body:U&&O?O:void 0}),j=Date.now()-$t,w={};ft.headers.forEach((Tt,m)=>{w[m]=Tt});let Z;if((ft.headers.get("content-type")||"").includes("json")){const Tt=await ft.json();Z=JSON.stringify(Tt,null,2)}else Z=await ft.text();xt({status:ft.status,statusText:ft.statusText,headers:w,body:Z,time:j})}catch(Mt){At(Mt instanceof Error?Mt.message:"Network error")}finally{K(!1)}};return s.jsxs("div",{"data-testid":"api-playground",style:{border:"1px solid var(--bd)",borderRadius:6,overflow:"hidden",marginTop:8},children:[s.jsxs("button",{"data-testid":"playground-toggle",onClick:()=>v(!c),style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"10px 14px",background:"var(--sf)",border:"none",cursor:"pointer",fontFamily:"inherit",fontSize:13,fontWeight:600,color:"var(--ac)"},children:[s.jsx("span",{style:{fontSize:14},children:c?"▼":"▶"}),"Try it out"]}),c&&s.jsxs("div",{style:{padding:"14px 16px",borderTop:"1px solid var(--bd)"},children:[d&&s.jsxs("div",{style:{marginBottom:12},children:[s.jsx("label",{style:{display:"block",fontSize:12,fontWeight:600,marginBottom:3,color:"var(--tx)"},children:d.type==="bearer"?"Bearer Token":"API Key"}),s.jsx("input",{"data-testid":"auth-input",type:"password",style:Fu,placeholder:d.type==="bearer"?"Enter bearer token":"Enter API key",value:y,onChange:P=>G(P.target.value)})]}),Q.length>0&&s.jsxs("div",{style:{marginBottom:4},children:[s.jsx("div",{style:{fontSize:11,fontWeight:700,textTransform:"uppercase",color:"var(--txM)",marginBottom:6,letterSpacing:"0.05em"},children:"Path Parameters"}),Q.map(P=>s.jsx(Ju,{param:P,value:E[P.name]||"",onChange:mt=>ct(P.name,mt)},P.name))]}),Y.length>0&&s.jsxs("div",{style:{marginBottom:4},children:[s.jsx("div",{style:{fontSize:11,fontWeight:700,textTransform:"uppercase",color:"var(--txM)",marginBottom:6,letterSpacing:"0.05em"},children:"Query Parameters"}),Y.map(P=>s.jsx(Ju,{param:P,value:E[P.name]||"",onChange:mt=>ct(P.name,mt)},P.name))]}),H.length>0&&s.jsxs("div",{style:{marginBottom:4},children:[s.jsx("div",{style:{fontSize:11,fontWeight:700,textTransform:"uppercase",color:"var(--txM)",marginBottom:6,letterSpacing:"0.05em"},children:"Header Parameters"}),H.map(P=>s.jsx(Ju,{param:P,value:E[P.name]||"",onChange:mt=>ct(P.name,mt)},P.name))]}),U&&s.jsxs("div",{style:{marginBottom:12},children:[s.jsx("label",{style:{display:"block",fontSize:12,fontWeight:600,marginBottom:3,color:"var(--tx)"},children:"Request Body"}),s.jsx("textarea",{"data-testid":"request-body",style:{...Fu,minHeight:100,resize:"vertical",lineHeight:1.5},value:O,onChange:P=>C(P.target.value)})]}),s.jsx("button",{"data-testid":"send-request",onClick:at,disabled:R,style:{padding:"8px 20px",borderRadius:4,border:"none",background:"var(--ac)",color:"#fff",fontWeight:600,fontSize:13,cursor:R?"wait":"pointer",opacity:R?.7:1,fontFamily:"inherit"},children:R?"Sending...":"Send Request"}),Dt&&s.jsx("div",{"data-testid":"playground-error",style:{marginTop:12,padding:"10px 14px",borderRadius:4,background:"#ef444418",border:"1px solid #ef444444",color:"#ef4444",fontSize:13},children:Dt}),nt&&s.jsxs("div",{"data-testid":"playground-response",style:{marginTop:12},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:8},children:[s.jsxs("span",{"data-testid":"response-status",style:{padding:"2px 10px",borderRadius:4,fontSize:13,fontWeight:700,fontFamily:"var(--font-code, monospace)",color:"#fff",background:Sg(nt.status)},children:[nt.status," ",nt.statusText]}),s.jsxs("span",{style:{fontSize:12,color:"var(--txM)"},children:[nt.time,"ms"]})]}),s.jsxs("button",{"data-testid":"toggle-headers",onClick:()=>I(!W),style:{display:"flex",alignItems:"center",gap:4,background:"none",border:"none",cursor:"pointer",fontSize:12,color:"var(--txM)",padding:"4px 0",fontFamily:"inherit",marginBottom:4},children:[s.jsx("span",{style:{transform:W?"rotate(90deg)":"rotate(0)",transition:"transform 0.15s"},children:"▶"}),"Response Headers"]}),W&&s.jsx("pre",{style:{background:"var(--sf)",padding:10,borderRadius:4,fontSize:11,fontFamily:"var(--font-code, monospace)",overflow:"auto",lineHeight:1.5,marginBottom:8,color:"var(--tx2)",margin:"0 0 8px 0"},children:Object.entries(nt.headers).map(([P,mt])=>`${P}: ${mt}`).join(` `)}),s.jsx("pre",{"data-testid":"response-body",style:{background:"var(--cdBg)",color:"var(--cdTx)",padding:14,borderRadius:6,fontSize:12,fontFamily:"var(--font-code, monospace)",overflow:"auto",lineHeight:1.6,margin:0,maxHeight:400},children:nt.body})]})]})]})}function mm({samples:u}){var c;const[h,d]=B.useState(0);return u.length===0?null:s.jsxs("div",{"data-testid":"code-samples",style:{border:"1px solid var(--bd)",borderRadius:8,overflow:"hidden"},children:[s.jsx("div",{style:{display:"flex",borderBottom:"1px solid var(--bd)",background:"var(--sf)",overflowX:"auto",WebkitOverflowScrolling:"touch"},children:u.map((v,E)=>s.jsx("button",{onClick:()=>d(E),style:{padding:"8px 16px",fontSize:13,fontWeight:500,background:E===h?"var(--cdBg)":"transparent",color:E===h?"var(--tx)":"var(--tx2)",border:"none",borderBottom:E===h?"2px solid var(--ac)":"2px solid transparent",cursor:"pointer",fontFamily:"var(--font-body)",whiteSpace:"nowrap"},children:v.label},v.language))}),s.jsx("pre",{style:{margin:0,padding:16,background:"var(--cdBg)",overflow:"auto"},children:s.jsx("code",{style:{fontSize:13,fontFamily:"var(--font-code)"},children:(c=u[h])==null?void 0:c.code})})]})}const pm={get:"#22c55e",post:"#3b82f6",put:"#f59e0b",delete:"#ef4444",patch:"#a78bfa",head:"#6b7280",options:"#6b7280"};function Cg({method:u}){const h=pm[u.toLowerCase()]||"#6b7280";return s.jsx("span",{"data-testid":"method-badge",style:{display:"inline-block",padding:"2px 8px",borderRadius:4,fontSize:11,fontWeight:700,fontFamily:"var(--font-code, monospace)",textTransform:"uppercase",color:"#fff",background:h,letterSpacing:"0.05em"},children:u.toUpperCase()})}function jg({parameters:u}){return u.length===0?null:s.jsx("div",{style:{overflowX:"auto",marginBottom:16},children:s.jsxs("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:13,lineHeight:1.5},children:[s.jsx("thead",{children:s.jsxs("tr",{style:{borderBottom:"2px solid var(--bd)",textAlign:"left"},children:[s.jsx("th",{style:{padding:"8px 12px",fontWeight:600,color:"var(--tx)"},children:"Name"}),s.jsx("th",{style:{padding:"8px 12px",fontWeight:600,color:"var(--tx)"},children:"Type"}),s.jsx("th",{style:{padding:"8px 12px",fontWeight:600,color:"var(--tx)"},children:"In"}),s.jsx("th",{style:{padding:"8px 12px",fontWeight:600,color:"var(--tx)"},children:"Required"}),s.jsx("th",{style:{padding:"8px 12px",fontWeight:600,color:"var(--tx)"},children:"Description"})]})}),s.jsx("tbody",{children:u.map((h,d)=>s.jsxs("tr",{style:{borderBottom:"1px solid var(--bd)"},children:[s.jsx("td",{style:{padding:"8px 12px",fontFamily:"var(--font-code, monospace)",fontWeight:500,color:h.in==="path"?"var(--ac)":"var(--tx)"},children:h.name}),s.jsx("td",{style:{padding:"8px 12px",fontFamily:"var(--font-code, monospace)",color:"var(--tx2)"},children:h.type}),s.jsx("td",{style:{padding:"8px 12px",color:"var(--txM)"},children:s.jsx("span",{style:{padding:"1px 6px",borderRadius:3,fontSize:11,background:h.in==="path"?"var(--ac)22":"var(--sf)",color:h.in==="path"?"var(--ac)":"var(--txM)"},children:h.in})}),s.jsx("td",{style:{padding:"8px 12px"},children:h.required?s.jsx("span",{"data-testid":"required-badge",style:{padding:"1px 6px",borderRadius:3,fontSize:11,fontWeight:600,background:"#ef444422",color:"#ef4444"},children:"required"}):s.jsx("span",{style:{color:"var(--txM)",fontSize:12},children:"optional"})}),s.jsx("td",{style:{padding:"8px 12px",color:"var(--tx2)"},children:h.description||"—"})]},`${h.name}-${d}`))})]})})}function Ag({requestBody:u}){return s.jsxs("div",{style:{marginBottom:16},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[s.jsx("span",{style:{padding:"2px 8px",borderRadius:4,fontSize:11,fontFamily:"var(--font-code, monospace)",background:"var(--sf)",color:"var(--tx2)"},children:u.contentType}),u.required&&s.jsx("span",{style:{padding:"1px 6px",borderRadius:3,fontSize:11,fontWeight:600,background:"#ef444422",color:"#ef4444"},children:"required"})]}),u.description&&s.jsx("p",{style:{fontSize:13,color:"var(--tx2)",marginBottom:8,marginTop:0},children:u.description}),u.schema&&s.jsx("pre",{style:{background:"var(--cdBg)",color:"var(--cdTx)",padding:16,borderRadius:6,fontSize:12,fontFamily:"var(--font-code, monospace)",overflow:"auto",lineHeight:1.6,margin:0},children:JSON.stringify(u.schema,null,2)})]})}function Mg(u){return u.startsWith("2")?"#22c55e":u.startsWith("4")?"#f59e0b":u.startsWith("5")?"#ef4444":"#6b7280"}function kg({responses:u}){return u.length===0?null:s.jsx("div",{style:{marginBottom:16},children:u.map((h,d)=>{const c=Mg(h.statusCode);return s.jsxs("div",{style:{border:"1px solid var(--bd)",borderRadius:6,marginBottom:8,overflow:"hidden"},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"10px 14px",background:"var(--sf)"},children:[s.jsx("span",{"data-testid":"status-badge",style:{padding:"2px 8px",borderRadius:4,fontSize:12,fontWeight:700,fontFamily:"var(--font-code, monospace)",color:"#fff",background:c},children:h.statusCode}),s.jsx("span",{style:{fontSize:13,color:"var(--tx2)"},children:h.description})]}),h.schema&&s.jsx("pre",{style:{background:"var(--cdBg)",color:"var(--cdTx)",padding:14,fontSize:12,fontFamily:"var(--font-code, monospace)",overflow:"auto",lineHeight:1.6,margin:0,borderTop:"1px solid var(--bd)"},children:JSON.stringify(h.schema,null,2)})]},`${h.statusCode}-${d}`)})})}function _g(u,h){const d=h+u.path,c=[`curl -X ${u.method.toUpperCase()} "${d}"`],v=u.parameters.filter(E=>E.in==="header");for(const E of v)c.push(` -H "${E.name}: "`);return u.requestBody&&(c.push(` -H "Content-Type: ${u.requestBody.contentType}"`),u.requestBody.schema&&c.push(` -d '${JSON.stringify(u.requestBody.schema,null,2)}'`)),c.join(` \\ `)}function Dg(u,h){var M;const d=h+u.path,c=[];c.push(` method: "${u.method.toUpperCase()}",`);const v={},E=u.parameters.filter(O=>O.in==="header");for(const O of E)v[O.name]="";return u.requestBody&&(v["Content-Type"]=u.requestBody.contentType),Object.keys(v).length>0&&c.push(` headers: ${JSON.stringify(v,null,4).replace(/\n/g,` `)},`),(M=u.requestBody)!=null&&M.schema&&c.push(` body: JSON.stringify(${JSON.stringify(u.requestBody.schema,null,4).replace(/\n/g,` diff --git a/assets/index-CgfPk7tz.js b/assets/index-DjkHYQxg.js similarity index 93% rename from assets/index-CgfPk7tz.js rename to assets/index-DjkHYQxg.js index 0c05559c..3a0e2cda 100644 --- a/assets/index-CgfPk7tz.js +++ b/assets/index-DjkHYQxg.js @@ -5,7 +5,7 @@ const t={frontmatter:{title:"Kit",description:"Kit is a powerful, extensible AI

Features

  • Multi-Provider LLM Support — Anthropic, OpenAI, Google Gemini, Ollama, Azure OpenAI, AWS Bedrock, OpenRouter, and more
  • -
  • Built-in Core Tools — bash, read, write, edit, grep, find, ls, subagent with no MCP overhead
  • +
  • Built-in Core Tools — bash (with interactive sudo password prompt), read, write, edit, grep, find, ls, subagent with no MCP overhead
  • Smart @ Attachments — Binary files auto-detected via MIME type, MCP resources via @mcp:server:uri
  • MCP Integration — Connect external MCP servers for expanded capabilities (tools, prompts, and resources)
  • Extension System — Write custom tools, commands, widgets, and UI modifications in Go
  • @@ -55,7 +55,7 @@ A powerful, extensible AI coding agent CLI with multi-provider support, built-in ## Features - **Multi-Provider LLM Support** — Anthropic, OpenAI, Google Gemini, Ollama, Azure OpenAI, AWS Bedrock, OpenRouter, and more -- **Built-in Core Tools** — bash, read, write, edit, grep, find, ls, subagent with no MCP overhead +- **Built-in Core Tools** — bash (with interactive sudo password prompt), read, write, edit, grep, find, ls, subagent with no MCP overhead - **Smart @ Attachments** — Binary files auto-detected via MIME type, MCP resources via \`@mcp:server:uri\` - **MCP Integration** — Connect external MCP servers for expanded capabilities (tools, prompts, and resources) - **Extension System** — Write custom tools, commands, widgets, and UI modifications in Go diff --git a/cli/commands/index.html b/cli/commands/index.html index 4a06d131..16fcfdcc 100644 --- a/cli/commands/index.html +++ b/cli/commands/index.html @@ -7,7 +7,7 @@ - + diff --git a/cli/flags/index.html b/cli/flags/index.html index 5ecb9fff..eae806a9 100644 --- a/cli/flags/index.html +++ b/cli/flags/index.html @@ -7,7 +7,7 @@ - + diff --git a/configuration/index.html b/configuration/index.html index 1988afd1..88f82b19 100644 --- a/configuration/index.html +++ b/configuration/index.html @@ -7,7 +7,7 @@ - + diff --git a/development/index.html b/development/index.html index 84e5f59f..b725c658 100644 --- a/development/index.html +++ b/development/index.html @@ -7,7 +7,7 @@ - + @@ -47,7 +47,7 @@ internal/acpserver/ - ACP (Agent Client Protocol) server internal/clipboard/ - Cross-platform clipboard operations internal/compaction/ - Conversation compaction and summarization internal/config/ - Configuration management -internal/core/ - Built-in tools (bash, read, write, edit, grep, find, ls) +internal/core/ - Built-in tools (bash with sudo password prompt, read, write, edit, grep, find, ls) internal/extensions/ - Yaegi extension system internal/kitsetup/ - Initial setup wizard internal/message/ - Message content types and structured content blocks diff --git a/extensions/capabilities/index.html b/extensions/capabilities/index.html index 3323d1c1..69404dde 100644 --- a/extensions/capabilities/index.html +++ b/extensions/capabilities/index.html @@ -7,7 +7,7 @@ - + diff --git a/extensions/examples/index.html b/extensions/examples/index.html index 7c581dfd..8cdd82c8 100644 --- a/extensions/examples/index.html +++ b/extensions/examples/index.html @@ -7,7 +7,7 @@ - + diff --git a/extensions/loading/index.html b/extensions/loading/index.html index f08dc48e..ad815735 100644 --- a/extensions/loading/index.html +++ b/extensions/loading/index.html @@ -7,7 +7,7 @@ - + diff --git a/extensions/overview/index.html b/extensions/overview/index.html index 95dd9518..4cb8d5b6 100644 --- a/extensions/overview/index.html +++ b/extensions/overview/index.html @@ -7,7 +7,7 @@ - + diff --git a/extensions/testing/index.html b/extensions/testing/index.html index 93ab2119..76240798 100644 --- a/extensions/testing/index.html +++ b/extensions/testing/index.html @@ -7,7 +7,7 @@ - + diff --git a/index.html b/index.html index 91389683..fbfd8cfe 100644 --- a/index.html +++ b/index.html @@ -15,7 +15,7 @@ ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: #333; border-radius: 3px; } - + diff --git a/installation/index.html b/installation/index.html index 05dee080..edb760c3 100644 --- a/installation/index.html +++ b/installation/index.html @@ -7,7 +7,7 @@ - + diff --git a/llms-full.txt b/llms-full.txt index 1783b3c1..a930a042 100644 --- a/llms-full.txt +++ b/llms-full.txt @@ -826,7 +826,7 @@ internal/acpserver/ - ACP (Agent Client Protocol) server internal/clipboard/ - Cross-platform clipboard operations internal/compaction/ - Conversation compaction and summarization internal/config/ - Configuration management -internal/core/ - Built-in tools (bash, read, write, edit, grep, find, ls) +internal/core/ - Built-in tools (bash with sudo password prompt, read, write, edit, grep, find, ls) internal/extensions/ - Yaegi extension system internal/kitsetup/ - Initial setup wizard internal/message/ - Message content types and structured content blocks @@ -2078,7 +2078,7 @@ A powerful, extensible AI coding agent CLI with multi-provider support, built-in ## Features - **Multi-Provider LLM Support** — Anthropic, OpenAI, Google Gemini, Ollama, Azure OpenAI, AWS Bedrock, OpenRouter, and more -- **Built-in Core Tools** — bash, read, write, edit, grep, find, ls, subagent with no MCP overhead +- **Built-in Core Tools** — bash (with interactive sudo password prompt), read, write, edit, grep, find, ls, subagent with no MCP overhead - **Smart @ Attachments** — Binary files auto-detected via MIME type, MCP resources via `@mcp:server:uri` - **MCP Integration** — Connect external MCP servers for expanded capabilities (tools, prompts, and resources) - **Extension System** — Write custom tools, commands, widgets, and UI modifications in Go @@ -2512,6 +2512,19 @@ kit.HookPriorityLow = 100 // runs last Lower values run first. First non-nil result wins. +## All event types + +| Event | Description | +|-------|-------------| +| `ToolCallEvent` | Tool call parsed and about to execute | +| `ToolResultEvent` | Tool execution completed with result | +| `ToolOutputEvent` | Streaming output chunk from tool (e.g., bash stdout/stderr) | +| `MessageUpdateEvent` | Streaming text chunk from LLM | +| `ResponseEvent` | Final response received | +| `TurnStartEvent` | Agent turn started | +| `TurnEndEvent` | Agent turn completed | +| `PasswordPromptEvent` | Sudo command needs password (respond via `ResponseCh`) | + ## Subagent event monitoring Monitor real-time events from LLM-initiated subagents (when the model uses the `subagent` tool): diff --git a/mcp.json b/mcp.json index 97e7757a..7be2f206 100644 --- a/mcp.json +++ b/mcp.json @@ -123,7 +123,7 @@ "Community" ], "tags": [], - "content": "\n# Development\n\n## Build and test\n\n```bash\n# Build\ngo build -o output/kit ./cmd/kit\n\n# Run all tests\ngo test -race ./...\n\n# Run a specific test\ngo test -race ./cmd -run TestScriptExecution\n\n# Lint\ngo vet ./...\n\n# Format\ngo fmt ./...\n```\n\n## Project structure\n\n```\ncmd/kit/ - CLI entry point (main.go)\ncmd/ - CLI command implementations (root, auth, models, etc.)\npkg/kit/ - Go SDK for embedding Kit\ninternal/app/ - Application orchestrator (agent loop, message store, queue)\ninternal/agent/ - Agent execution and tool dispatch\ninternal/auth/ - OAuth authentication and credential storage\ninternal/acpserver/ - ACP (Agent Client Protocol) server\ninternal/clipboard/ - Cross-platform clipboard operations\ninternal/compaction/ - Conversation compaction and summarization\ninternal/config/ - Configuration management\ninternal/core/ - Built-in tools (bash, read, write, edit, grep, find, ls)\ninternal/extensions/ - Yaegi extension system\ninternal/kitsetup/ - Initial setup wizard\ninternal/message/ - Message content types and structured content blocks\ninternal/models/ - Provider and model management\ninternal/session/ - Session persistence (tree-based JSONL)\ninternal/skills/ - Skill loading and system prompt composition\ninternal/tools/ - MCP tool integration\ninternal/ui/ - Bubble Tea TUI components\nexamples/extensions/ - Example extension files\nnpm/ - NPM package wrapper for distribution\n```\n\n## Architecture overview\n\nKit is built around a few key architectural patterns:\n\n### Multi-provider LLM support\n\nThe `llm.Provider` interface abstracts different LLM providers. Each provider implements message formatting, tool calling, and streaming for its specific API.\n\n### MCP client-server model\n\nExternal tools are integrated via the Model Context Protocol (MCP). Kit acts as an MCP client, connecting to MCP servers configured in `.kit.yml`.\n\n### Extension system\n\nExtensions are Go source files interpreted at runtime by Yaegi. The `internal/extensions/` package manages loading, symbol export, and lifecycle dispatch. See the [Extension System](/extensions/overview) docs for details.\n\n### TUI architecture\n\nThe interactive terminal UI is built with [Bubble Tea v2](https://github.com/charmbracelet/bubbletea), using a parent-child model where `AppModel` manages child components (`InputComponent`, `StreamComponent`, etc.).\n\n### Decoupling pattern\n\n`cmd/root.go` contains converter functions (e.g., `widgetProviderForUI()`) that bridge `internal/extensions/` types to `internal/ui/` types. The UI never imports the extensions package directly.\n\n## Contributing\n\nContributions are welcome! Please see the [contribution guide](https://github.com/mark3labs/kit/blob/master/contribute/contribute.md) for guidelines.\n\n## Community\n\n- [Discord](https://discord.gg/RqSS2NQVsY)\n- [GitHub Issues](https://github.com/mark3labs/kit/issues)\n" + "content": "\n# Development\n\n## Build and test\n\n```bash\n# Build\ngo build -o output/kit ./cmd/kit\n\n# Run all tests\ngo test -race ./...\n\n# Run a specific test\ngo test -race ./cmd -run TestScriptExecution\n\n# Lint\ngo vet ./...\n\n# Format\ngo fmt ./...\n```\n\n## Project structure\n\n```\ncmd/kit/ - CLI entry point (main.go)\ncmd/ - CLI command implementations (root, auth, models, etc.)\npkg/kit/ - Go SDK for embedding Kit\ninternal/app/ - Application orchestrator (agent loop, message store, queue)\ninternal/agent/ - Agent execution and tool dispatch\ninternal/auth/ - OAuth authentication and credential storage\ninternal/acpserver/ - ACP (Agent Client Protocol) server\ninternal/clipboard/ - Cross-platform clipboard operations\ninternal/compaction/ - Conversation compaction and summarization\ninternal/config/ - Configuration management\ninternal/core/ - Built-in tools (bash with sudo password prompt, read, write, edit, grep, find, ls)\ninternal/extensions/ - Yaegi extension system\ninternal/kitsetup/ - Initial setup wizard\ninternal/message/ - Message content types and structured content blocks\ninternal/models/ - Provider and model management\ninternal/session/ - Session persistence (tree-based JSONL)\ninternal/skills/ - Skill loading and system prompt composition\ninternal/tools/ - MCP tool integration\ninternal/ui/ - Bubble Tea TUI components\nexamples/extensions/ - Example extension files\nnpm/ - NPM package wrapper for distribution\n```\n\n## Architecture overview\n\nKit is built around a few key architectural patterns:\n\n### Multi-provider LLM support\n\nThe `llm.Provider` interface abstracts different LLM providers. Each provider implements message formatting, tool calling, and streaming for its specific API.\n\n### MCP client-server model\n\nExternal tools are integrated via the Model Context Protocol (MCP). Kit acts as an MCP client, connecting to MCP servers configured in `.kit.yml`.\n\n### Extension system\n\nExtensions are Go source files interpreted at runtime by Yaegi. The `internal/extensions/` package manages loading, symbol export, and lifecycle dispatch. See the [Extension System](/extensions/overview) docs for details.\n\n### TUI architecture\n\nThe interactive terminal UI is built with [Bubble Tea v2](https://github.com/charmbracelet/bubbletea), using a parent-child model where `AppModel` manages child components (`InputComponent`, `StreamComponent`, etc.).\n\n### Decoupling pattern\n\n`cmd/root.go` contains converter functions (e.g., `widgetProviderForUI()`) that bridge `internal/extensions/` types to `internal/ui/` types. The UI never imports the extensions package directly.\n\n## Contributing\n\nContributions are welcome! Please see the [contribution guide](https://github.com/mark3labs/kit/blob/master/contribute/contribute.md) for guidelines.\n\n## Community\n\n- [Discord](https://discord.gg/RqSS2NQVsY)\n- [GitHub Issues](https://github.com/mark3labs/kit/issues)\n" }, { "url": "/extensions/capabilities", @@ -255,7 +255,7 @@ "Quick links" ], "tags": [], - "content": "\n
    \n \"KIT\"\n
    \n\nA powerful, extensible AI coding agent CLI with multi-provider support, built-in tools, and a rich extension system.\n\n## Features\n\n- **Multi-Provider LLM Support** — Anthropic, OpenAI, Google Gemini, Ollama, Azure OpenAI, AWS Bedrock, OpenRouter, and more\n- **Built-in Core Tools** — bash, read, write, edit, grep, find, ls, subagent with no MCP overhead\n- **Smart @ Attachments** — Binary files auto-detected via MIME type, MCP resources via `@mcp:server:uri`\n- **MCP Integration** — Connect external MCP servers for expanded capabilities (tools, prompts, and resources)\n- **Extension System** — Write custom tools, commands, widgets, and UI modifications in Go\n- **Interactive TUI** — Rich terminal interface powered by Bubble Tea with streaming, syntax highlighting, and custom rendering\n- **Session Management** — Tree-based conversation history with branching support\n- **Non-Interactive Mode** — Script-friendly positional args with JSON output\n- **ACP Server** — Run Kit as an [Agent Client Protocol](https://agentclientprotocol.com) agent over stdio\n- **Go SDK** — Embed Kit in your own applications\n\n## Quick links\n\n| Resource | Description |\n|----------|-------------|\n| [Installation](/installation) | Get Kit up and running |\n| [Quick Start](/quick-start) | Your first Kit session |\n| [Configuration](/configuration) | Customize Kit for your workflow |\n| [Extensions](/extensions/overview) | Build custom tools and UI components |\n| [Go SDK](/sdk/overview) | Embed Kit in your applications |\n" + "content": "\n
    \n \"KIT\"\n
    \n\nA powerful, extensible AI coding agent CLI with multi-provider support, built-in tools, and a rich extension system.\n\n## Features\n\n- **Multi-Provider LLM Support** — Anthropic, OpenAI, Google Gemini, Ollama, Azure OpenAI, AWS Bedrock, OpenRouter, and more\n- **Built-in Core Tools** — bash (with interactive sudo password prompt), read, write, edit, grep, find, ls, subagent with no MCP overhead\n- **Smart @ Attachments** — Binary files auto-detected via MIME type, MCP resources via `@mcp:server:uri`\n- **MCP Integration** — Connect external MCP servers for expanded capabilities (tools, prompts, and resources)\n- **Extension System** — Write custom tools, commands, widgets, and UI modifications in Go\n- **Interactive TUI** — Rich terminal interface powered by Bubble Tea with streaming, syntax highlighting, and custom rendering\n- **Session Management** — Tree-based conversation history with branching support\n- **Non-Interactive Mode** — Script-friendly positional args with JSON output\n- **ACP Server** — Run Kit as an [Agent Client Protocol](https://agentclientprotocol.com) agent over stdio\n- **Go SDK** — Embed Kit in your own applications\n\n## Quick links\n\n| Resource | Description |\n|----------|-------------|\n| [Installation](/installation) | Get Kit up and running |\n| [Quick Start](/quick-start) | Your first Kit session |\n| [Configuration](/configuration) | Customize Kit for your workflow |\n| [Extensions](/extensions/overview) | Build custom tools and UI components |\n| [Go SDK](/sdk/overview) | Embed Kit in your applications |\n" }, { "url": "/installation", @@ -317,10 +317,11 @@ "BeforeTurn — modify prompt, inject messages", "AfterTurn — observation only", "Hook priorities", + "All event types", "Subagent event monitoring" ], "tags": [], - "content": "\n# Callbacks\n\n## Event-based monitoring\n\nSubscribe to events for real-time monitoring. Each method returns an unsubscribe function:\n\n```go\nunsub := host.OnToolCall(func(event kit.ToolCallEvent) {\n fmt.Printf(\"Tool: %s, Args: %s\\n\", event.ToolName, event.ToolArgs)\n})\ndefer unsub()\n\nunsub2 := host.OnToolResult(func(event kit.ToolResultEvent) {\n fmt.Printf(\"Result: %s (error: %v)\\n\", event.ToolName, event.IsError)\n})\ndefer unsub2()\n\nunsub3 := host.OnStreaming(func(event kit.MessageUpdateEvent) {\n fmt.Print(event.Chunk)\n})\ndefer unsub3()\n\nunsub4 := host.OnResponse(func(event kit.ResponseEvent) {\n fmt.Println(\"Final response received\")\n})\ndefer unsub4()\n\nunsub5 := host.OnTurnStart(func(event kit.TurnStartEvent) {\n fmt.Println(\"Turn started\")\n})\ndefer unsub5()\n\nunsub6 := host.OnTurnEnd(func(event kit.TurnEndEvent) {\n fmt.Println(\"Turn ended\")\n})\ndefer unsub6()\n```\n\n## Hook system\n\nHooks can **modify or cancel** operations. Unlike events (read-only), hooks are read-write interceptors.\n\n### BeforeToolCall — block tool execution\n\n```go\nhost.OnBeforeToolCall(kit.HookPriorityNormal, func(h kit.BeforeToolCallHook) *kit.BeforeToolCallResult {\n // h.ToolCallID, h.ToolName, h.ToolArgs\n if h.ToolName == \"bash\" && strings.Contains(h.ToolArgs, \"rm -rf\") {\n return &kit.BeforeToolCallResult{Block: true, Reason: \"dangerous command\"}\n }\n return nil // allow\n})\n```\n\n### AfterToolResult — modify tool output\n\n```go\nhost.OnAfterToolResult(kit.HookPriorityNormal, func(h kit.AfterToolResultHook) *kit.AfterToolResultResult {\n // h.ToolCallID, h.ToolName, h.ToolArgs, h.Result, h.IsError\n if h.ToolName == \"read\" {\n filtered := redactSecrets(h.Result)\n return &kit.AfterToolResultResult{Result: &filtered}\n }\n return nil\n})\n```\n\n### BeforeTurn — modify prompt, inject messages\n\n```go\nhost.OnBeforeTurn(kit.HookPriorityNormal, func(h kit.BeforeTurnHook) *kit.BeforeTurnResult {\n // h.Prompt\n newPrompt := h.Prompt + \"\\nAlways respond in JSON.\"\n return &kit.BeforeTurnResult{Prompt: &newPrompt}\n // Also available: SystemPrompt *string, InjectText *string\n})\n```\n\n### AfterTurn — observation only\n\n```go\nhost.OnAfterTurn(kit.HookPriorityNormal, func(h kit.AfterTurnHook) {\n // h.Response, h.Error\n log.Printf(\"Turn completed: %d chars\", len(h.Response))\n})\n```\n\n### Hook priorities\n\n```go\nkit.HookPriorityHigh = 0 // runs first\nkit.HookPriorityNormal = 50 // default\nkit.HookPriorityLow = 100 // runs last\n```\n\nLower values run first. First non-nil result wins.\n\n## Subagent event monitoring\n\nMonitor real-time events from LLM-initiated subagents (when the model uses the `subagent` tool):\n\n```go\nhost.OnToolCall(func(e kit.ToolCallEvent) {\n if e.ToolName == \"subagent\" {\n host.SubscribeSubagent(e.ToolCallID, func(event kit.Event) {\n // Receives the same event types as Subscribe(), scoped to the child agent\n switch ev := event.(type) {\n case kit.MessageUpdateEvent:\n fmt.Print(ev.Chunk)\n case kit.ToolCallEvent:\n fmt.Printf(\"Subagent calling: %s\\n\", ev.ToolName)\n }\n })\n }\n})\n```\n\n`SubscribeSubagent` returns an unsubscribe function. Listeners are also cleaned up automatically when the subagent completes. See [Subagents](/advanced/subagents) for more details.\n" + "content": "\n# Callbacks\n\n## Event-based monitoring\n\nSubscribe to events for real-time monitoring. Each method returns an unsubscribe function:\n\n```go\nunsub := host.OnToolCall(func(event kit.ToolCallEvent) {\n fmt.Printf(\"Tool: %s, Args: %s\\n\", event.ToolName, event.ToolArgs)\n})\ndefer unsub()\n\nunsub2 := host.OnToolResult(func(event kit.ToolResultEvent) {\n fmt.Printf(\"Result: %s (error: %v)\\n\", event.ToolName, event.IsError)\n})\ndefer unsub2()\n\nunsub3 := host.OnStreaming(func(event kit.MessageUpdateEvent) {\n fmt.Print(event.Chunk)\n})\ndefer unsub3()\n\nunsub4 := host.OnResponse(func(event kit.ResponseEvent) {\n fmt.Println(\"Final response received\")\n})\ndefer unsub4()\n\nunsub5 := host.OnTurnStart(func(event kit.TurnStartEvent) {\n fmt.Println(\"Turn started\")\n})\ndefer unsub5()\n\nunsub6 := host.OnTurnEnd(func(event kit.TurnEndEvent) {\n fmt.Println(\"Turn ended\")\n})\ndefer unsub6()\n```\n\n## Hook system\n\nHooks can **modify or cancel** operations. Unlike events (read-only), hooks are read-write interceptors.\n\n### BeforeToolCall — block tool execution\n\n```go\nhost.OnBeforeToolCall(kit.HookPriorityNormal, func(h kit.BeforeToolCallHook) *kit.BeforeToolCallResult {\n // h.ToolCallID, h.ToolName, h.ToolArgs\n if h.ToolName == \"bash\" && strings.Contains(h.ToolArgs, \"rm -rf\") {\n return &kit.BeforeToolCallResult{Block: true, Reason: \"dangerous command\"}\n }\n return nil // allow\n})\n```\n\n### AfterToolResult — modify tool output\n\n```go\nhost.OnAfterToolResult(kit.HookPriorityNormal, func(h kit.AfterToolResultHook) *kit.AfterToolResultResult {\n // h.ToolCallID, h.ToolName, h.ToolArgs, h.Result, h.IsError\n if h.ToolName == \"read\" {\n filtered := redactSecrets(h.Result)\n return &kit.AfterToolResultResult{Result: &filtered}\n }\n return nil\n})\n```\n\n### BeforeTurn — modify prompt, inject messages\n\n```go\nhost.OnBeforeTurn(kit.HookPriorityNormal, func(h kit.BeforeTurnHook) *kit.BeforeTurnResult {\n // h.Prompt\n newPrompt := h.Prompt + \"\\nAlways respond in JSON.\"\n return &kit.BeforeTurnResult{Prompt: &newPrompt}\n // Also available: SystemPrompt *string, InjectText *string\n})\n```\n\n### AfterTurn — observation only\n\n```go\nhost.OnAfterTurn(kit.HookPriorityNormal, func(h kit.AfterTurnHook) {\n // h.Response, h.Error\n log.Printf(\"Turn completed: %d chars\", len(h.Response))\n})\n```\n\n### Hook priorities\n\n```go\nkit.HookPriorityHigh = 0 // runs first\nkit.HookPriorityNormal = 50 // default\nkit.HookPriorityLow = 100 // runs last\n```\n\nLower values run first. First non-nil result wins.\n\n## All event types\n\n| Event | Description |\n|-------|-------------|\n| `ToolCallEvent` | Tool call parsed and about to execute |\n| `ToolResultEvent` | Tool execution completed with result |\n| `ToolOutputEvent` | Streaming output chunk from tool (e.g., bash stdout/stderr) |\n| `MessageUpdateEvent` | Streaming text chunk from LLM |\n| `ResponseEvent` | Final response received |\n| `TurnStartEvent` | Agent turn started |\n| `TurnEndEvent` | Agent turn completed |\n| `PasswordPromptEvent` | Sudo command needs password (respond via `ResponseCh`) |\n\n## Subagent event monitoring\n\nMonitor real-time events from LLM-initiated subagents (when the model uses the `subagent` tool):\n\n```go\nhost.OnToolCall(func(e kit.ToolCallEvent) {\n if e.ToolName == \"subagent\" {\n host.SubscribeSubagent(e.ToolCallID, func(event kit.Event) {\n // Receives the same event types as Subscribe(), scoped to the child agent\n switch ev := event.(type) {\n case kit.MessageUpdateEvent:\n fmt.Print(ev.Chunk)\n case kit.ToolCallEvent:\n fmt.Printf(\"Subagent calling: %s\\n\", ev.ToolName)\n }\n })\n }\n})\n```\n\n`SubscribeSubagent` returns an unsubscribe function. Listeners are also cleaned up automatically when the subagent completes. See [Subagents](/advanced/subagents) for more details.\n" }, { "url": "/sdk/options", diff --git a/providers/index.html b/providers/index.html index 19634767..56c78e4a 100644 --- a/providers/index.html +++ b/providers/index.html @@ -7,7 +7,7 @@ - + diff --git a/quick-start/index.html b/quick-start/index.html index 08815e2b..1ed6c157 100644 --- a/quick-start/index.html +++ b/quick-start/index.html @@ -7,7 +7,7 @@ - + diff --git a/sdk/callbacks/index.html b/sdk/callbacks/index.html index 099edbb2..87bcdea9 100644 --- a/sdk/callbacks/index.html +++ b/sdk/callbacks/index.html @@ -7,7 +7,7 @@ - + @@ -110,6 +110,19 @@ kit.HookPriorityLow = 100 // runs last Lower values run first. First non-nil result wins. +## All event types + +| Event | Description | +|-------|-------------| +| `ToolCallEvent` | Tool call parsed and about to execute | +| `ToolResultEvent` | Tool execution completed with result | +| `ToolOutputEvent` | Streaming output chunk from tool (e.g., bash stdout/stderr) | +| `MessageUpdateEvent` | Streaming text chunk from LLM | +| `ResponseEvent` | Final response received | +| `TurnStartEvent` | Agent turn started | +| `TurnEndEvent` | Agent turn completed | +| `PasswordPromptEvent` | Sudo command needs password (respond via `ResponseCh`) | + ## Subagent event monitoring Monitor real-time events from LLM-initiated subagents (when the model uses the `subagent` tool): diff --git a/sdk/options/index.html b/sdk/options/index.html index d2da605f..2acd6e7a 100644 --- a/sdk/options/index.html +++ b/sdk/options/index.html @@ -7,7 +7,7 @@ - + diff --git a/sdk/overview/index.html b/sdk/overview/index.html index e20db9fd..baf42d42 100644 --- a/sdk/overview/index.html +++ b/sdk/overview/index.html @@ -7,7 +7,7 @@ - + diff --git a/sdk/sessions/index.html b/sdk/sessions/index.html index fb40dba7..2f8c9d8f 100644 --- a/sdk/sessions/index.html +++ b/sdk/sessions/index.html @@ -7,7 +7,7 @@ - + diff --git a/search.json b/search.json index 620df60b..b39bc6ab 100644 --- a/search.json +++ b/search.json @@ -133,7 +133,7 @@ "Community" ], "tags": [], - "wordCount": 350 + "wordCount": 354 }, { "id": "extensions/capabilities", @@ -271,7 +271,7 @@ "Quick links" ], "tags": [], - "wordCount": 235 + "wordCount": 240 }, { "id": "installation", @@ -337,10 +337,11 @@ "BeforeTurn — modify prompt, inject messages", "AfterTurn — observation only", "Hook priorities", + "All event types", "Subagent event monitoring" ], "tags": [], - "wordCount": 342 + "wordCount": 425 }, { "id": "sdk/options", diff --git a/sessions/index.html b/sessions/index.html index 54665f46..aa655ce4 100644 --- a/sessions/index.html +++ b/sessions/index.html @@ -7,7 +7,7 @@ - + diff --git a/themes/index.html b/themes/index.html index f857b85f..10fdac24 100644 --- a/themes/index.html +++ b/themes/index.html @@ -7,7 +7,7 @@ - +