From 94911835cff8a794b1d04de70138c76cf803848b Mon Sep 17 00:00:00 2001 From: Yaniv Israel Date: Thu, 11 Jun 2026 22:07:49 +0300 Subject: [PATCH] fix(ui): sync proxy/_experimental/out/ exactly to upstream 245 stale JS chunk files from earlier merges were left in the out/ directory but had been deleted in upstream. The Docker image in CI is built by copying this directory verbatim, so the stale artifacts caused the SERVER_ROOT_PATH redirect E2E to fail. Synced by: git checkout upstream/litellm_internal_staging -- out/ (adds new files) + git rm on every file present in HEAD but absent from upstream. --- .../out/_next/static/chunks/0-2-9tcizw.kv.js | 1 - .../out/_next/static/chunks/0-4-0.z8w6y27.js | 1 - .../out/_next/static/chunks/0-ne4el5qxs1z.js | 40 -- .../out/_next/static/chunks/0-wj413-8yde5.js | 84 --- .../out/_next/static/chunks/0.d2a_5_6-5pn.js | 2 - .../out/_next/static/chunks/0.je~3iy~k4ss.js | 1 - .../out/_next/static/chunks/0.kfwj93~uvc5.js | 8 - .../out/_next/static/chunks/0.u~fsd.paivu.js | 1 - .../out/_next/static/chunks/008w4tqm~9~ds.js | 420 ------------ .../out/_next/static/chunks/00bicsqsx~erf.js | 1 - .../out/_next/static/chunks/00dq_sa6qt2eg.js | 1 - .../out/_next/static/chunks/00mx~d442jr~o.js | 8 - .../out/_next/static/chunks/00n_262-goqx6.js | 3 - .../out/_next/static/chunks/00p.gft-l.6p..js | 3 - .../out/_next/static/chunks/00q4mtjboprhm.js | 4 - .../out/_next/static/chunks/00rvson..zjub.js | 10 - .../out/_next/static/chunks/00ym60oj49oo5.js | 1 - .../out/_next/static/chunks/015yfy38oh-h8.js | 1 - .../out/_next/static/chunks/01bk9s-ky6_e..js | 8 - .../out/_next/static/chunks/01eoe.0n-q6.q.js | 1 - .../out/_next/static/chunks/01g5ls2__cy9q.js | 1 - .../out/_next/static/chunks/01n1bg17oxp8l.js | 12 - .../out/_next/static/chunks/01ne7gi3z97di.js | 1 - .../out/_next/static/chunks/01pjikobltzvp.js | 1 - .../out/_next/static/chunks/01pr-g28x~.uu.js | 14 - .../out/_next/static/chunks/01u0i~l49qpdz.js | 1 - .../out/_next/static/chunks/01xm1xt.gmrff.js | 3 - .../out/_next/static/chunks/01y._o853f7le.js | 4 - .../out/_next/static/chunks/022.sz94ycw4x.js | 4 - .../out/_next/static/chunks/0229ic_5ff586.js | 7 - .../out/_next/static/chunks/02ihc5xweq16v.js | 1 - .../out/_next/static/chunks/02v412-qgvyfr.js | 1 - .../out/_next/static/chunks/036wlkuzplhfz.js | 1 - .../out/_next/static/chunks/03kdcij4tsege.js | 1 - .../out/_next/static/chunks/04.aj3k78v7ut.js | 8 - .../out/_next/static/chunks/047wghe2gva_o.js | 1 - .../out/_next/static/chunks/04o4lz~y91s1r.css | 1 - .../out/_next/static/chunks/05iha4cgkkxu1.js | 7 - .../out/_next/static/chunks/05nip7kd~pjv1.js | 1 - .../out/_next/static/chunks/05qmwjqau64bz.css | 1 - .../out/_next/static/chunks/06es90~yrkd00.js | 1 - .../out/_next/static/chunks/06gao0u0xy9th.js | 1 - .../out/_next/static/chunks/06kpwf4i0qv9q.js | 1 - .../out/_next/static/chunks/06l162pg8h_k5.js | 2 - .../out/_next/static/chunks/06oag4x9~8vif.js | 98 --- .../out/_next/static/chunks/06~kt_oo6pz6v.js | 68 -- .../out/_next/static/chunks/07.fwfv-sinb5.js | 4 - .../out/_next/static/chunks/07m0uxheepw8a.js | 55 -- .../out/_next/static/chunks/07ok39ppl.vl1.js | 1 - .../out/_next/static/chunks/08401f_hwndsf.js | 598 ------------------ .../out/_next/static/chunks/08cbskerpmujn.js | 10 - .../out/_next/static/chunks/09.lm5dax~l7e.js | 2 - .../out/_next/static/chunks/098j5eweuy__x.js | 8 - .../out/_next/static/chunks/09h04rv0~.g9j.js | 10 - .../out/_next/static/chunks/09n64dqzn.le~.js | 13 - .../out/_next/static/chunks/09o_h3e0fwffd.js | 1 - .../out/_next/static/chunks/09op-t36a-zxm.js | 8 - .../out/_next/static/chunks/09w3xhc94wa5b.js | 1 - .../out/_next/static/chunks/09xs1oedhby8v.js | 1 - .../out/_next/static/chunks/0_7p_0twqq2dv.js | 8 - .../out/_next/static/chunks/0_ex-stk7ibf_.js | 31 - .../out/_next/static/chunks/0_p625as00xbq.js | 21 - .../out/_next/static/chunks/0_wp7tq3f6six.js | 8 - .../out/_next/static/chunks/0aa08wo9_4k-o.js | 31 - .../out/_next/static/chunks/0aivi0og~sj6k.js | 1 - .../out/_next/static/chunks/0ar6956xz0njn.js | 1 - .../out/_next/static/chunks/0ayg3m_5s_z2w.js | 4 - .../out/_next/static/chunks/0bkk~1l186k4g.js | 1 - .../out/_next/static/chunks/0bzika30gg9sv.js | 1 - .../out/_next/static/chunks/0c.vtc8uofg.h.js | 1 - .../out/_next/static/chunks/0c20.u.cu4ruj.js | 8 - .../out/_next/static/chunks/0c4pfjjue0uc-.js | 86 --- .../out/_next/static/chunks/0cbiddnyyt-22.js | 231 ------- .../out/_next/static/chunks/0cv239bgotud_.js | 1 - .../out/_next/static/chunks/0cyei0b5dnet_.js | 1 - .../out/_next/static/chunks/0da~.l_uihpug.js | 1 - .../out/_next/static/chunks/0df.h5m-b50lz.js | 1 - .../out/_next/static/chunks/0dit6d5rb4h85.js | 420 ------------ .../out/_next/static/chunks/0dmfhvqon~mn~.js | 1 - .../out/_next/static/chunks/0dt4fjjwbrov2.js | 1 - .../out/_next/static/chunks/0e6cra27t9c6b.js | 420 ------------ .../out/_next/static/chunks/0e7nuqlfah86n.js | 11 - .../out/_next/static/chunks/0eeoyv3fh--5v.js | 14 - .../out/_next/static/chunks/0ek7vfd1hrb4_.js | 7 - .../out/_next/static/chunks/0em0654rb513m.js | 4 - .../out/_next/static/chunks/0exy~ua1-3m4l.js | 420 ------------ .../out/_next/static/chunks/0eym_z87ts-j8.js | 1 - .../out/_next/static/chunks/0f6t.sli9v9zt.js | 8 - .../out/_next/static/chunks/0fnkbcxr~4hwq.js | 1 - .../out/_next/static/chunks/0fns6vsccj10h.js | 1 - .../out/_next/static/chunks/0fpcaw3chkoi1.js | 1 - .../out/_next/static/chunks/0g7ys.5g150n1.js | 84 --- .../out/_next/static/chunks/0gb9pui.r~-sy.js | 1 - .../out/_next/static/chunks/0goq2snzui.n8.js | 1 - .../out/_next/static/chunks/0gqqvjn11_pp3.js | 3 - .../out/_next/static/chunks/0gs8.sc1ds7.w.js | 14 - .../out/_next/static/chunks/0gszmhudlm6lw.js | 46 -- .../out/_next/static/chunks/0h8dqeg931c1f.js | 8 - .../out/_next/static/chunks/0hjh1x7qo041f.js | 1 - .../out/_next/static/chunks/0hpcwzoygs-ke.js | 8 - .../out/_next/static/chunks/0i6g.~vhywo3h.js | 98 --- .../out/_next/static/chunks/0i7ndeqr5w1sc.js | 7 - .../out/_next/static/chunks/0igutkl9r09kl.js | 35 - .../out/_next/static/chunks/0ivj_wax-joap.js | 31 - .../out/_next/static/chunks/0j.~bvp831kae.js | 1 - .../out/_next/static/chunks/0j2g7af6k4x7m.js | 72 --- .../out/_next/static/chunks/0je63_yy.8i72.js | 1 - .../out/_next/static/chunks/0jhg37m0hy.uz.js | 1 - .../out/_next/static/chunks/0k8x5c4q7p09w.js | 1 - .../out/_next/static/chunks/0kcdscyjx5upf.js | 2 - .../out/_next/static/chunks/0kle3tqsakb-1.js | 8 - .../out/_next/static/chunks/0ks4zvc_6qump.js | 1 - .../out/_next/static/chunks/0lkwlvo53lk5c.js | 8 - .../out/_next/static/chunks/0lp0qkj93s9n6.js | 1 - .../out/_next/static/chunks/0m._ijxus~ryi.js | 4 - .../out/_next/static/chunks/0m6zdocif1gl4.js | 1 - .../out/_next/static/chunks/0mb3erwqomzal.js | 1 - .../out/_next/static/chunks/0mh1wnrvmv_y7.js | 4 - .../out/_next/static/chunks/0mzw3maijoev6.js | 1 - .../out/_next/static/chunks/0n279xd8co40q.js | 98 --- .../out/_next/static/chunks/0n4p7okzp8x9o.js | 8 - .../out/_next/static/chunks/0nfpc775w0b8-.js | 2 - .../out/_next/static/chunks/0niabq1py.bpc.js | 41 -- .../out/_next/static/chunks/0nnx~7-7e5t~1.js | 5 - .../out/_next/static/chunks/0noiuetq16.dz.js | 91 --- .../out/_next/static/chunks/0o4pnwq6k8q4w.js | 98 --- .../out/_next/static/chunks/0o7mue3uybfhi.js | 1 - .../out/_next/static/chunks/0oefy62cva53s.js | 8 - .../out/_next/static/chunks/0ok39lxn~8tqa.js | 1 - .../out/_next/static/chunks/0pelwlztq2kwy.js | 7 - .../out/_next/static/chunks/0pfc18cphnnhd.js | 167 ----- .../out/_next/static/chunks/0pg.kj49bd73_.js | 1 - .../out/_next/static/chunks/0pidya1qvuvx8.js | 1 - .../out/_next/static/chunks/0pqu561k2bu1d.js | 1 - .../out/_next/static/chunks/0puul31_.zeq6.js | 10 - .../out/_next/static/chunks/0q250n2j99yss.js | 11 - .../out/_next/static/chunks/0q2o6z5qtf12d.js | 14 - .../out/_next/static/chunks/0q6~n4y84cejn.js | 1 - .../out/_next/static/chunks/0qikgxv.u0j9d.js | 1 - .../out/_next/static/chunks/0qmmlumh.k21x.js | 420 ------------ .../out/_next/static/chunks/0rt08m.gc2n0m.js | 1 - .../out/_next/static/chunks/0s-tn5h6qpp6i.js | 15 - .../out/_next/static/chunks/0sbwfmr31.cvw.js | 8 - .../out/_next/static/chunks/0sleuh3e9q.ww.js | 17 - .../out/_next/static/chunks/0ssorln~eooo0.js | 1 - .../out/_next/static/chunks/0t0d45r_tvt4i.js | 1 - .../out/_next/static/chunks/0t_2obde5n17h.js | 7 - .../out/_next/static/chunks/0ta1ffddte5~e.js | 9 - .../out/_next/static/chunks/0ttl0__m~5i8a.js | 1 - .../out/_next/static/chunks/0txi1wfn0-01d.js | 1 - .../out/_next/static/chunks/0tz7rml6rolh7.js | 14 - .../out/_next/static/chunks/0t~fchw5zb-4r.js | 19 - .../out/_next/static/chunks/0ugell4._eyay.js | 13 - .../out/_next/static/chunks/0ugpxsagaloo4.js | 1 - .../out/_next/static/chunks/0uha0pnzl-vec.js | 1 - .../out/_next/static/chunks/0un2--nwsw-uk.js | 1 - .../out/_next/static/chunks/0upl0pr28-8_j.js | 1 - .../out/_next/static/chunks/0ur~j0twg0t4g.js | 98 --- .../out/_next/static/chunks/0usxgadggtc52.js | 1 - .../out/_next/static/chunks/0v1c3mu~xn105.js | 1 - .../out/_next/static/chunks/0v1rxqc1hqmrl.js | 4 - .../out/_next/static/chunks/0v3d9_8xkvq3w.js | 39 -- .../out/_next/static/chunks/0vawigy~j_gsx.js | 3 - .../out/_next/static/chunks/0vkkv~m8z3lv~.js | 1 - .../out/_next/static/chunks/0vr-amz4w3~n_.js | 1 - .../out/_next/static/chunks/0v~f8eqfpch2v.js | 1 - .../out/_next/static/chunks/0w9a1yg0dlbiw.js | 179 ------ .../out/_next/static/chunks/0whkizop7gd0~.js | 41 -- .../out/_next/static/chunks/0w~oa2pli-t56.js | 1 - .../out/_next/static/chunks/0x.73w57rn4ou.js | 1 - .../out/_next/static/chunks/0xe~9_o.t36wd.js | 1 - .../out/_next/static/chunks/0xqg~rk67rumc.js | 2 - .../out/_next/static/chunks/0x~b7xip-yufi.js | 8 - .../out/_next/static/chunks/0y_apzr7e9vua.js | 1 - .../out/_next/static/chunks/0yblb2-hdk~lt.js | 19 - .../out/_next/static/chunks/0ybvtcd~xp-mx.js | 167 ----- .../out/_next/static/chunks/0yjifm.h74~ec.js | 98 --- .../out/_next/static/chunks/0ylz5md8p6x7z.js | 55 -- .../out/_next/static/chunks/0ys10755n8os_.js | 1 - .../out/_next/static/chunks/0z9bnun-zovqc.js | 1 - .../out/_next/static/chunks/0zmz_tmhm2hsa.js | 7 - .../out/_next/static/chunks/0zrbitbm~0koh.js | 14 - .../out/_next/static/chunks/0zxb95ki25y8w.js | 7 - .../out/_next/static/chunks/0~2_b290gsxjj.js | 1 - .../out/_next/static/chunks/0~ozahatcu75y.js | 1 - .../out/_next/static/chunks/100mcnex8yqiz.js | 1 - .../out/_next/static/chunks/102xsbbp.u4ar.js | 8 - .../out/_next/static/chunks/10aj2k~llf~ks.js | 20 - .../out/_next/static/chunks/10h65_h8yau27.js | 1 - .../out/_next/static/chunks/10n3-~19sc08i.js | 1 - .../out/_next/static/chunks/10q34c2t7--5-.js | 1 - .../out/_next/static/chunks/11ibt3khr2hk3.js | 1 - .../out/_next/static/chunks/11rjr.rrayxlq.js | 1 - .../out/_next/static/chunks/121g1kmcll0g6.js | 17 - .../out/_next/static/chunks/121itubfoz3jp.js | 1 - .../out/_next/static/chunks/129bujhdmi9ce.js | 4 - .../out/_next/static/chunks/12w.m0_zg8wpq.js | 8 - .../_next/static/chunks/1300460219810c10.js | 4 + .../out/_next/static/chunks/130gamvns4f_q.js | 29 - .../out/_next/static/chunks/137i07xf5e.xc.js | 1 - .../out/_next/static/chunks/13br-6l.k_pmg.js | 1 - .../out/_next/static/chunks/13jg16smls48s.js | 7 - .../out/_next/static/chunks/13lfiw5-3ktce.js | 1 - .../out/_next/static/chunks/13ysooad2u4zz.js | 1 - .../out/_next/static/chunks/15.9ylrtxojbj.js | 4 - .../out/_next/static/chunks/15b5n8fnfc228.js | 179 ------ .../out/_next/static/chunks/15fosz6-y91je.js | 1 - .../out/_next/static/chunks/15g0xeupk30ip.js | 8 - .../out/_next/static/chunks/15hm8gokjq2uu.js | 13 - .../out/_next/static/chunks/15wppjgop06qi.js | 3 - .../out/_next/static/chunks/166fc~7u39du3.js | 1 - .../out/_next/static/chunks/16bbwf4tez3tz.js | 8 - .../out/_next/static/chunks/16hjjjlzvisl9.js | 1 - .../out/_next/static/chunks/17-i5j54jkv5l.js | 1 - .../out/_next/static/chunks/17.q2iay6h4dm.js | 2 - .../out/_next/static/chunks/175t1ejd~fi99.js | 40 -- .../out/_next/static/chunks/181y.ii57q7gs.js | 1 - .../out/_next/static/chunks/186viidwrwv_o.js | 1 - .../out/_next/static/chunks/18b1-~305a__9.js | 1 - ...0jib1e4hgitwz.css => 3f3fa56b5786d58c.css} | 0 .../_next/static/chunks/4e20891f2fd03463.css | 1 + .../_next/static/chunks/5282ed7355826608.js | 1 + .../{02_ols0zt.cn1.js => 542a1a209eb732c6.js} | 2 +- .../_next/static/chunks/570b2e10aa856e54.js | 1 + .../_next/static/chunks/726579f2940c2a2f.js | 1 + .../_next/static/chunks/738c339383c3b4b6.js | 1 + .../_next/static/chunks/7e417dd24c8becd0.js | 1 + .../_next/static/chunks/88c74f8b4b20d25a.js | 1 + .../{0.75_v4.brf7u.js => a1ef280b7ad5ae6a.js} | 0 .../{03~yq9q893hmn.js => a6dad97d9634a72d.js} | 0 .../static/chunks/a6dad97d9634a72d.js.map | 1 + .../_next/static/chunks/d96012bcfc98706a.js | 1 + .../_next/static/chunks/dbca964212122d58.js | 1 + .../static/chunks/turbopack-0f1c9lug~n6kv.js | 1 - ...off2 => 1bffadaabf893a1e-s.7cd81963.woff2} | Bin ...off2 => 2bbe8d2671613f1f-s.76dcb0b2.woff2} | Bin ...off2 => 2c55a0e60120577a-s.2a48534a.woff2} | Bin ...off2 => 5476f68d60460930-s.c995e352.woff2} | Bin ...f2 => 83afe278b6a6bb3c-s.p.3a6ba036.woff2} | Bin ...off2 => 9c72aa0f40e4eef8-s.18a48cbc.woff2} | Bin ...off2 => ad66f9afd8947f86-s.7a40eb73.woff2} | Bin ...0~dgapwhi~75y.ico => favicon.1d32c690.ico} | Bin .../s_hWyEFymvwtKpcaZsNX4/_buildManifest.js | 16 - .../_clientMiddlewareManifest.js | 1 - .../s_hWyEFymvwtKpcaZsNX4/_ssgManifest.js | 1 - .../_experimental/out/assets/logos/aws.svg | 68 +- .../out/assets/logos/cerebras.svg | 178 +++--- .../out/assets/logos/deepkeep.svg | 4 - .../out/assets/logos/deepseek.svg | 50 +- .../out/assets/logos/perplexity-ai.svg | 30 +- .../experimental/api-playground/index.html | 1 - .../out/experimental/budgets/index.html | 1 - .../out/experimental/caching/index.html | 1 - .../claude-code-plugins/index.html | 1 - .../out/experimental/old-usage/index.html | 1 - .../out/experimental/prompts/index.html | 1 - .../experimental/tag-management/index.html | 1 - .../_experimental/out/guardrails/index.html | 1 - .../proxy/_experimental/out/logs/index.html | 1 - .../_experimental/out/model-hub/index.html | 1 - .../_experimental/out/policies/index.html | 1 - .../out/settings/admin-settings/index.html | 1 - .../settings/logging-and-alerts/index.html | 1 - .../out/settings/router-settings/index.html | 1 - .../out/settings/ui-theme/index.html | 1 - .../proxy/_experimental/out/skills/index.html | 1 - .../proxy/_experimental/out/teams/index.html | 1 - .../_experimental/out/test-key/index.html | 1 - .../out/tools/mcp-servers/index.html | 1 - .../out/tools/vector-stores/index.html | 1 - .../proxy/_experimental/out/usage/index.html | 1 - .../proxy/_experimental/out/users/index.html | 1 - 272 files changed, 178 insertions(+), 6173 deletions(-) delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0-2-9tcizw.kv.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0-4-0.z8w6y27.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0-ne4el5qxs1z.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0-wj413-8yde5.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0.d2a_5_6-5pn.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0.je~3iy~k4ss.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0.kfwj93~uvc5.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0.u~fsd.paivu.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/008w4tqm~9~ds.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/00bicsqsx~erf.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/00dq_sa6qt2eg.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/00mx~d442jr~o.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/00n_262-goqx6.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/00p.gft-l.6p..js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/00q4mtjboprhm.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/00rvson..zjub.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/00ym60oj49oo5.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/015yfy38oh-h8.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/01bk9s-ky6_e..js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/01eoe.0n-q6.q.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/01g5ls2__cy9q.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/01n1bg17oxp8l.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/01ne7gi3z97di.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/01pjikobltzvp.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/01pr-g28x~.uu.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/01u0i~l49qpdz.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/01xm1xt.gmrff.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/01y._o853f7le.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/022.sz94ycw4x.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0229ic_5ff586.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/02ihc5xweq16v.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/02v412-qgvyfr.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/036wlkuzplhfz.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/03kdcij4tsege.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/04.aj3k78v7ut.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/047wghe2gva_o.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/04o4lz~y91s1r.css delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/05iha4cgkkxu1.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/05nip7kd~pjv1.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/05qmwjqau64bz.css delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/06es90~yrkd00.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/06gao0u0xy9th.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/06kpwf4i0qv9q.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/06l162pg8h_k5.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/06oag4x9~8vif.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/06~kt_oo6pz6v.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/07.fwfv-sinb5.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/07m0uxheepw8a.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/07ok39ppl.vl1.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/08401f_hwndsf.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/08cbskerpmujn.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/09.lm5dax~l7e.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/098j5eweuy__x.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/09h04rv0~.g9j.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/09n64dqzn.le~.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/09o_h3e0fwffd.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/09op-t36a-zxm.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/09w3xhc94wa5b.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/09xs1oedhby8v.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0_7p_0twqq2dv.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0_ex-stk7ibf_.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0_p625as00xbq.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0_wp7tq3f6six.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0aa08wo9_4k-o.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0aivi0og~sj6k.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0ar6956xz0njn.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0ayg3m_5s_z2w.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0bkk~1l186k4g.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0bzika30gg9sv.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0c.vtc8uofg.h.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0c20.u.cu4ruj.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0c4pfjjue0uc-.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0cbiddnyyt-22.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0cv239bgotud_.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0cyei0b5dnet_.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0da~.l_uihpug.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0df.h5m-b50lz.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0dit6d5rb4h85.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0dmfhvqon~mn~.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0dt4fjjwbrov2.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0e6cra27t9c6b.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0e7nuqlfah86n.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0eeoyv3fh--5v.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0ek7vfd1hrb4_.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0em0654rb513m.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0exy~ua1-3m4l.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0eym_z87ts-j8.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0f6t.sli9v9zt.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0fnkbcxr~4hwq.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0fns6vsccj10h.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0fpcaw3chkoi1.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0g7ys.5g150n1.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0gb9pui.r~-sy.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0goq2snzui.n8.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0gqqvjn11_pp3.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0gs8.sc1ds7.w.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0gszmhudlm6lw.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0h8dqeg931c1f.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0hjh1x7qo041f.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0hpcwzoygs-ke.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0i6g.~vhywo3h.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0i7ndeqr5w1sc.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0igutkl9r09kl.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0ivj_wax-joap.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0j.~bvp831kae.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0j2g7af6k4x7m.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0je63_yy.8i72.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0jhg37m0hy.uz.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0k8x5c4q7p09w.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0kcdscyjx5upf.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0kle3tqsakb-1.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0ks4zvc_6qump.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0lkwlvo53lk5c.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0lp0qkj93s9n6.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0m._ijxus~ryi.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0m6zdocif1gl4.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0mb3erwqomzal.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0mh1wnrvmv_y7.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0mzw3maijoev6.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0n279xd8co40q.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0n4p7okzp8x9o.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0nfpc775w0b8-.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0niabq1py.bpc.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0nnx~7-7e5t~1.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0noiuetq16.dz.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0o4pnwq6k8q4w.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0o7mue3uybfhi.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0oefy62cva53s.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0ok39lxn~8tqa.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0pelwlztq2kwy.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0pfc18cphnnhd.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0pg.kj49bd73_.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0pidya1qvuvx8.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0pqu561k2bu1d.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0puul31_.zeq6.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0q250n2j99yss.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0q2o6z5qtf12d.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0q6~n4y84cejn.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0qikgxv.u0j9d.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0qmmlumh.k21x.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0rt08m.gc2n0m.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0s-tn5h6qpp6i.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0sbwfmr31.cvw.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0sleuh3e9q.ww.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0ssorln~eooo0.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0t0d45r_tvt4i.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0t_2obde5n17h.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0ta1ffddte5~e.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0ttl0__m~5i8a.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0txi1wfn0-01d.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0tz7rml6rolh7.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0t~fchw5zb-4r.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0ugell4._eyay.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0ugpxsagaloo4.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0uha0pnzl-vec.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0un2--nwsw-uk.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0upl0pr28-8_j.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0ur~j0twg0t4g.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0usxgadggtc52.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0v1c3mu~xn105.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0v1rxqc1hqmrl.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0v3d9_8xkvq3w.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0vawigy~j_gsx.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0vkkv~m8z3lv~.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0vr-amz4w3~n_.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0v~f8eqfpch2v.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0w9a1yg0dlbiw.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0whkizop7gd0~.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0w~oa2pli-t56.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0x.73w57rn4ou.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0xe~9_o.t36wd.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0xqg~rk67rumc.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0x~b7xip-yufi.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0y_apzr7e9vua.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0yblb2-hdk~lt.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0ybvtcd~xp-mx.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0yjifm.h74~ec.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0ylz5md8p6x7z.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0ys10755n8os_.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0z9bnun-zovqc.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0zmz_tmhm2hsa.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0zrbitbm~0koh.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0zxb95ki25y8w.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0~2_b290gsxjj.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/0~ozahatcu75y.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/100mcnex8yqiz.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/102xsbbp.u4ar.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/10aj2k~llf~ks.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/10h65_h8yau27.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/10n3-~19sc08i.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/10q34c2t7--5-.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/11ibt3khr2hk3.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/11rjr.rrayxlq.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/121g1kmcll0g6.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/121itubfoz3jp.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/129bujhdmi9ce.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/12w.m0_zg8wpq.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/1300460219810c10.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/130gamvns4f_q.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/137i07xf5e.xc.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/13br-6l.k_pmg.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/13jg16smls48s.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/13lfiw5-3ktce.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/13ysooad2u4zz.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/15.9ylrtxojbj.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/15b5n8fnfc228.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/15fosz6-y91je.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/15g0xeupk30ip.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/15hm8gokjq2uu.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/15wppjgop06qi.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/166fc~7u39du3.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/16bbwf4tez3tz.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/16hjjjlzvisl9.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/17-i5j54jkv5l.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/17.q2iay6h4dm.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/175t1ejd~fi99.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/181y.ii57q7gs.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/186viidwrwv_o.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/18b1-~305a__9.js rename litellm/proxy/_experimental/out/_next/static/chunks/{0jib1e4hgitwz.css => 3f3fa56b5786d58c.css} (100%) create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/4e20891f2fd03463.css create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/5282ed7355826608.js rename litellm/proxy/_experimental/out/_next/static/chunks/{02_ols0zt.cn1.js => 542a1a209eb732c6.js} (94%) create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/570b2e10aa856e54.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/726579f2940c2a2f.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/738c339383c3b4b6.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/7e417dd24c8becd0.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/88c74f8b4b20d25a.js rename litellm/proxy/_experimental/out/_next/static/chunks/{0.75_v4.brf7u.js => a1ef280b7ad5ae6a.js} (100%) rename litellm/proxy/_experimental/out/_next/static/chunks/{03~yq9q893hmn.js => a6dad97d9634a72d.js} (100%) create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/a6dad97d9634a72d.js.map create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/d96012bcfc98706a.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/dbca964212122d58.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/turbopack-0f1c9lug~n6kv.js rename litellm/proxy/_experimental/out/_next/static/media/{1bffadaabf893a1e-s.16ipb6fqu393i.woff2 => 1bffadaabf893a1e-s.7cd81963.woff2} (100%) rename litellm/proxy/_experimental/out/_next/static/media/{2bbe8d2671613f1f-s.067x_6k0k23tk.woff2 => 2bbe8d2671613f1f-s.76dcb0b2.woff2} (100%) rename litellm/proxy/_experimental/out/_next/static/media/{2c55a0e60120577a-s.0bjc5tiuqdqro.woff2 => 2c55a0e60120577a-s.2a48534a.woff2} (100%) rename litellm/proxy/_experimental/out/_next/static/media/{5476f68d60460930-s.0wxq9webf.ew4.woff2 => 5476f68d60460930-s.c995e352.woff2} (100%) rename litellm/proxy/_experimental/out/_next/static/media/{83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2 => 83afe278b6a6bb3c-s.p.3a6ba036.woff2} (100%) rename litellm/proxy/_experimental/out/_next/static/media/{9c72aa0f40e4eef8-s.0m6w47a4e5dy9.woff2 => 9c72aa0f40e4eef8-s.18a48cbc.woff2} (100%) rename litellm/proxy/_experimental/out/_next/static/media/{ad66f9afd8947f86-s.11u06r12fd6v_.woff2 => ad66f9afd8947f86-s.7a40eb73.woff2} (100%) rename litellm/proxy/_experimental/out/_next/static/media/{favicon.0~dgapwhi~75y.ico => favicon.1d32c690.ico} (100%) delete mode 100644 litellm/proxy/_experimental/out/_next/static/s_hWyEFymvwtKpcaZsNX4/_buildManifest.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/s_hWyEFymvwtKpcaZsNX4/_clientMiddlewareManifest.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/s_hWyEFymvwtKpcaZsNX4/_ssgManifest.js delete mode 100644 litellm/proxy/_experimental/out/assets/logos/deepkeep.svg delete mode 100644 litellm/proxy/_experimental/out/experimental/api-playground/index.html delete mode 100644 litellm/proxy/_experimental/out/experimental/budgets/index.html delete mode 100644 litellm/proxy/_experimental/out/experimental/caching/index.html delete mode 100644 litellm/proxy/_experimental/out/experimental/claude-code-plugins/index.html delete mode 100644 litellm/proxy/_experimental/out/experimental/old-usage/index.html delete mode 100644 litellm/proxy/_experimental/out/experimental/prompts/index.html delete mode 100644 litellm/proxy/_experimental/out/experimental/tag-management/index.html delete mode 100644 litellm/proxy/_experimental/out/guardrails/index.html delete mode 100644 litellm/proxy/_experimental/out/logs/index.html delete mode 100644 litellm/proxy/_experimental/out/model-hub/index.html delete mode 100644 litellm/proxy/_experimental/out/policies/index.html delete mode 100644 litellm/proxy/_experimental/out/settings/admin-settings/index.html delete mode 100644 litellm/proxy/_experimental/out/settings/logging-and-alerts/index.html delete mode 100644 litellm/proxy/_experimental/out/settings/router-settings/index.html delete mode 100644 litellm/proxy/_experimental/out/settings/ui-theme/index.html delete mode 100644 litellm/proxy/_experimental/out/skills/index.html delete mode 100644 litellm/proxy/_experimental/out/teams/index.html delete mode 100644 litellm/proxy/_experimental/out/test-key/index.html delete mode 100644 litellm/proxy/_experimental/out/tools/mcp-servers/index.html delete mode 100644 litellm/proxy/_experimental/out/tools/vector-stores/index.html delete mode 100644 litellm/proxy/_experimental/out/usage/index.html delete mode 100644 litellm/proxy/_experimental/out/users/index.html diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/0-2-9tcizw.kv.js b/litellm/proxy/_experimental/out/_next/static/chunks/0-2-9tcizw.kv.js deleted file mode 100644 index 5e8e78991b9..00000000000 --- a/litellm/proxy/_experimental/out/_next/static/chunks/0-2-9tcizw.kv.js +++ /dev/null @@ -1 +0,0 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,888288,e=>{"use strict";var t=e.i(271645);e.s(["default",0,(e,r)=>{let n=void 0!==r,[a,s]=(0,t.useState)(e);return[n?r:a,e=>{n||s(e)}]}])},757440,e=>{"use strict";var t=e.i(290571),r=e.i(271645);e.s(["default",0,e=>{var n=(0,t.__rest)(e,[]);return r.default.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},n),r.default.createElement("path",{d:"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z"}))}])},446428,854056,e=>{"use strict";let t;var r=e.i(290571),n=e.i(271645);e.s(["default",0,e=>{var t=(0,r.__rest)(e,[]);return n.default.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},t),n.default.createElement("path",{d:"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 10.5858L9.17157 7.75736L7.75736 9.17157L10.5858 12L7.75736 14.8284L9.17157 16.2426L12 13.4142L14.8284 16.2426L16.2426 14.8284L13.4142 12L16.2426 9.17157L14.8284 7.75736L12 10.5858Z"}))}],446428);var a=e.i(746725),s=e.i(914189),i=e.i(553521),l=e.i(835696),o=e.i(941444),u=e.i(178677),c=e.i(294316),d=e.i(83733),m=e.i(233137),f=e.i(732607),h=e.i(397701),v=e.i(700020);function g(e){var t;return!!(e.enter||e.enterFrom||e.enterTo||e.leave||e.leaveFrom||e.leaveTo)||(null!=(t=e.as)?t:j)!==n.Fragment||1===n.default.Children.count(e.children)}let p=(0,n.createContext)(null);p.displayName="TransitionContext";var b=((t=b||{}).Visible="visible",t.Hidden="hidden",t);let x=(0,n.createContext)(null);function y(e){return"children"in e?y(e.children):e.current.filter(({el:e})=>null!==e.current).filter(({state:e})=>"visible"===e).length>0}function w(e,t){let r=(0,o.useLatestValue)(e),l=(0,n.useRef)([]),u=(0,i.useIsMounted)(),c=(0,a.useDisposables)(),d=(0,s.useEvent)((e,t=v.RenderStrategy.Hidden)=>{let n=l.current.findIndex(({el:t})=>t===e);-1!==n&&((0,h.match)(t,{[v.RenderStrategy.Unmount](){l.current.splice(n,1)},[v.RenderStrategy.Hidden](){l.current[n].state="hidden"}}),c.microTask(()=>{var e;!y(l)&&u.current&&(null==(e=r.current)||e.call(r))}))}),m=(0,s.useEvent)(e=>{let t=l.current.find(({el:t})=>t===e);return t?"visible"!==t.state&&(t.state="visible"):l.current.push({el:e,state:"visible"}),()=>d(e,v.RenderStrategy.Unmount)}),f=(0,n.useRef)([]),g=(0,n.useRef)(Promise.resolve()),p=(0,n.useRef)({enter:[],leave:[]}),b=(0,s.useEvent)((e,r,n)=>{f.current.splice(0),t&&(t.chains.current[r]=t.chains.current[r].filter(([t])=>t!==e)),null==t||t.chains.current[r].push([e,new Promise(e=>{f.current.push(e)})]),null==t||t.chains.current[r].push([e,new Promise(e=>{Promise.all(p.current[r].map(([e,t])=>t)).then(()=>e())})]),"enter"===r?g.current=g.current.then(()=>null==t?void 0:t.wait.current).then(()=>n(r)):n(r)}),x=(0,s.useEvent)((e,t,r)=>{Promise.all(p.current[t].splice(0).map(([e,t])=>t)).then(()=>{var e;null==(e=f.current.shift())||e()}).then(()=>r(t))});return(0,n.useMemo)(()=>({children:l,register:m,unregister:d,onStart:b,onStop:x,wait:g,chains:p}),[m,d,l,b,x,p,g])}x.displayName="NestingContext";let j=n.Fragment,M=v.RenderFeatures.RenderStrategy,C=(0,v.forwardRefWithAs)(function(e,t){let{show:r,appear:a=!1,unmount:i=!0,...o}=e,d=(0,n.useRef)(null),f=g(e),h=(0,c.useSyncRefs)(...f?[d,t]:null===t?[]:[t]);(0,u.useServerHandoffComplete)();let b=(0,m.useOpenClosed)();if(void 0===r&&null!==b&&(r=(b&m.State.Open)===m.State.Open),void 0===r)throw Error("A is used but it is missing a `show={true | false}` prop.");let[j,C]=(0,n.useState)(r?"visible":"hidden"),T=w(()=>{r||C("hidden")}),[$,k]=(0,n.useState)(!0),N=(0,n.useRef)([r]);(0,l.useIsoMorphicEffect)(()=>{!1!==$&&N.current[N.current.length-1]!==r&&(N.current.push(r),k(!1))},[N,r]);let E=(0,n.useMemo)(()=>({show:r,appear:a,initial:$}),[r,a,$]);(0,l.useIsoMorphicEffect)(()=>{r?C("visible"):y(T)||null===d.current||C("hidden")},[r,T]);let _={unmount:i},D=(0,s.useEvent)(()=>{var t;$&&k(!1),null==(t=e.beforeEnter)||t.call(e)}),O=(0,s.useEvent)(()=>{var t;$&&k(!1),null==(t=e.beforeLeave)||t.call(e)}),L=(0,v.useRender)();return n.default.createElement(x.Provider,{value:T},n.default.createElement(p.Provider,{value:E},L({ourProps:{..._,as:n.Fragment,children:n.default.createElement(S,{ref:h,..._,...o,beforeEnter:D,beforeLeave:O})},theirProps:{},defaultTag:n.Fragment,features:M,visible:"visible"===j,name:"Transition"})))}),S=(0,v.forwardRefWithAs)(function(e,t){var r,a;let{transition:i=!0,beforeEnter:o,afterEnter:b,beforeLeave:C,afterLeave:S,enter:T,enterFrom:$,enterTo:k,entered:N,leave:E,leaveFrom:_,leaveTo:D,...O}=e,[L,R]=(0,n.useState)(null),z=(0,n.useRef)(null),H=g(e),A=(0,c.useSyncRefs)(...H?[z,t,R]:null===t?[]:[t]),V=null==(r=O.unmount)||r?v.RenderStrategy.Unmount:v.RenderStrategy.Hidden,{show:B,appear:F,initial:P}=function(){let e=(0,n.useContext)(p);if(null===e)throw Error("A is used but it is missing a parent or .");return e}(),[I,W]=(0,n.useState)(B?"visible":"hidden"),Y=function(){let e=(0,n.useContext)(x);if(null===e)throw Error("A is used but it is missing a parent or .");return e}(),{register:U,unregister:Z}=Y;(0,l.useIsoMorphicEffect)(()=>U(z),[U,z]),(0,l.useIsoMorphicEffect)(()=>{if(V===v.RenderStrategy.Hidden&&z.current)return B&&"visible"!==I?void W("visible"):(0,h.match)(I,{hidden:()=>Z(z),visible:()=>U(z)})},[I,z,U,Z,B,V]);let q=(0,u.useServerHandoffComplete)();(0,l.useIsoMorphicEffect)(()=>{if(H&&q&&"visible"===I&&null===z.current)throw Error("Did you forget to passthrough the `ref` to the actual DOM node?")},[z,I,q,H]);let J=P&&!F,K=F&&B&&P,G=(0,n.useRef)(!1),Q=w(()=>{G.current||(W("hidden"),Z(z))},Y),X=(0,s.useEvent)(e=>{G.current=!0,Q.onStart(z,e?"enter":"leave",e=>{"enter"===e?null==o||o():"leave"===e&&(null==C||C())})}),ee=(0,s.useEvent)(e=>{let t=e?"enter":"leave";G.current=!1,Q.onStop(z,t,e=>{"enter"===e?null==b||b():"leave"===e&&(null==S||S())}),"leave"!==t||y(Q)||(W("hidden"),Z(z))});(0,n.useEffect)(()=>{H&&i||(X(B),ee(B))},[B,H,i]);let et=!(!i||!H||!q||J),[,er]=(0,d.useTransition)(et,L,B,{start:X,end:ee}),en=(0,v.compact)({ref:A,className:(null==(a=(0,f.classNames)(O.className,K&&T,K&&$,er.enter&&T,er.enter&&er.closed&&$,er.enter&&!er.closed&&k,er.leave&&E,er.leave&&!er.closed&&_,er.leave&&er.closed&&D,!er.transition&&B&&N))?void 0:a.trim())||void 0,...(0,d.transitionDataAttributes)(er)}),ea=0;"visible"===I&&(ea|=m.State.Open),"hidden"===I&&(ea|=m.State.Closed),er.enter&&(ea|=m.State.Opening),er.leave&&(ea|=m.State.Closing);let es=(0,v.useRender)();return n.default.createElement(x.Provider,{value:Q},n.default.createElement(m.OpenClosedProvider,{value:ea},es({ourProps:en,theirProps:O,defaultTag:j,features:M,visible:"visible"===I,name:"Transition.Child"})))}),T=(0,v.forwardRefWithAs)(function(e,t){let r=null!==(0,n.useContext)(p),a=null!==(0,m.useOpenClosed)();return n.default.createElement(n.default.Fragment,null,!r&&a?n.default.createElement(C,{ref:t,...e}):n.default.createElement(S,{ref:t,...e}))}),$=Object.assign(C,{Child:T,Root:C});e.s(["Transition",0,$],854056)},206929,e=>{"use strict";var t=e.i(290571),r=e.i(757440),n=e.i(271645),a=e.i(446428),s=e.i(444755),i=e.i(673706),l=e.i(103471),o=e.i(495470),u=e.i(854056),c=e.i(888288);let d=(0,i.makeClassName)("Select"),m=n.default.forwardRef((e,i)=>{let{defaultValue:m="",value:f,onValueChange:h,placeholder:v="Select...",disabled:g=!1,icon:p,enableClear:b=!1,required:x,children:y,name:w,error:j=!1,errorMessage:M,className:C,id:S}=e,T=(0,t.__rest)(e,["defaultValue","value","onValueChange","placeholder","disabled","icon","enableClear","required","children","name","error","errorMessage","className","id"]),$=(0,n.useRef)(null),k=n.Children.toArray(y),[N,E]=(0,c.default)(m,f),_=(0,n.useMemo)(()=>{let e=n.default.Children.toArray(y).filter(n.isValidElement);return(0,l.constructValueToNameMapping)(e)},[y]);return n.default.createElement("div",{className:(0,s.tremorTwMerge)("w-full min-w-[10rem] text-tremor-default",C)},n.default.createElement("div",{className:"relative"},n.default.createElement("select",{title:"select-hidden",required:x,className:(0,s.tremorTwMerge)("h-full w-full absolute left-0 top-0 -z-10 opacity-0"),value:N,onChange:e=>{e.preventDefault()},name:w,disabled:g,id:S,onFocus:()=>{let e=$.current;e&&e.focus()}},n.default.createElement("option",{className:"hidden",value:"",disabled:!0,hidden:!0},v),k.map(e=>{let t=e.props.value,r=e.props.children;return n.default.createElement("option",{className:"hidden",key:t,value:t},r)})),n.default.createElement(o.Listbox,Object.assign({as:"div",ref:i,defaultValue:N,value:N,onChange:e=>{null==h||h(e),E(e)},disabled:g,id:S},T),({value:e})=>{var t;return n.default.createElement(n.default.Fragment,null,n.default.createElement(o.ListboxButton,{ref:$,className:(0,s.tremorTwMerge)("w-full outline-none text-left whitespace-nowrap truncate rounded-tremor-default focus:ring-2 transition duration-100 border pr-8 py-2","border-tremor-border shadow-tremor-input focus:border-tremor-brand-subtle focus:ring-tremor-brand-muted","dark:border-dark-tremor-border dark:shadow-dark-tremor-input dark:focus:border-dark-tremor-brand-subtle dark:focus:ring-dark-tremor-brand-muted",p?"pl-10":"pl-3",(0,l.getSelectButtonColors)((0,l.hasValue)(e),g,j))},p&&n.default.createElement("span",{className:(0,s.tremorTwMerge)("absolute inset-y-0 left-0 flex items-center ml-px pl-2.5")},n.default.createElement(p,{className:(0,s.tremorTwMerge)(d("Icon"),"flex-none h-5 w-5","text-tremor-content-subtle","dark:text-dark-tremor-content-subtle")})),n.default.createElement("span",{className:"w-[90%] block truncate"},e&&null!=(t=_.get(e))?t:v),n.default.createElement("span",{className:(0,s.tremorTwMerge)("absolute inset-y-0 right-0 flex items-center mr-3")},n.default.createElement(r.default,{className:(0,s.tremorTwMerge)(d("arrowDownIcon"),"flex-none h-5 w-5","text-tremor-content-subtle","dark:text-dark-tremor-content-subtle")}))),b&&N?n.default.createElement("button",{type:"button",className:(0,s.tremorTwMerge)("absolute inset-y-0 right-0 flex items-center mr-8"),onClick:e=>{e.preventDefault(),E(""),null==h||h("")}},n.default.createElement(a.default,{className:(0,s.tremorTwMerge)(d("clearIcon"),"flex-none h-4 w-4","text-tremor-content-subtle","dark:text-dark-tremor-content-subtle")})):null,n.default.createElement(u.Transition,{enter:"transition ease duration-100 transform",enterFrom:"opacity-0 -translate-y-4",enterTo:"opacity-100 translate-y-0",leave:"transition ease duration-100 transform",leaveFrom:"opacity-100 translate-y-0",leaveTo:"opacity-0 -translate-y-4"},n.default.createElement(o.ListboxOptions,{anchor:"bottom start",className:(0,s.tremorTwMerge)("z-10 w-[var(--button-width)] divide-y overflow-y-auto outline-none rounded-tremor-default max-h-[228px] border [--anchor-gap:4px]","bg-tremor-background border-tremor-border divide-tremor-border shadow-tremor-dropdown","dark:bg-dark-tremor-background dark:border-dark-tremor-border dark:divide-dark-tremor-border dark:shadow-dark-tremor-dropdown")},y)))})),j&&M?n.default.createElement("p",{className:(0,s.tremorTwMerge)("errorMessage","text-sm text-rose-500 mt-1")},M):null)});m.displayName="Select",e.s(["Select",0,m],206929)},160818,e=>{"use strict";e.i(247167);var t=e.i(931067),r=e.i(271645);let n={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M854.4 800.9c.2-.3.5-.6.7-.9C920.6 722.1 960 621.7 960 512s-39.4-210.1-104.8-288c-.2-.3-.5-.5-.7-.8-1.1-1.3-2.1-2.5-3.2-3.7-.4-.5-.8-.9-1.2-1.4l-4.1-4.7-.1-.1c-1.5-1.7-3.1-3.4-4.6-5.1l-.1-.1c-3.2-3.4-6.4-6.8-9.7-10.1l-.1-.1-4.8-4.8-.3-.3c-1.5-1.5-3-2.9-4.5-4.3-.5-.5-1-1-1.6-1.5-1-1-2-1.9-3-2.8-.3-.3-.7-.6-1-1C736.4 109.2 629.5 64 512 64s-224.4 45.2-304.3 119.2c-.3.3-.7.6-1 1-1 .9-2 1.9-3 2.9-.5.5-1 1-1.6 1.5-1.5 1.4-3 2.9-4.5 4.3l-.3.3-4.8 4.8-.1.1c-3.3 3.3-6.5 6.7-9.7 10.1l-.1.1c-1.6 1.7-3.1 3.4-4.6 5.1l-.1.1c-1.4 1.5-2.8 3.1-4.1 4.7-.4.5-.8.9-1.2 1.4-1.1 1.2-2.1 2.5-3.2 3.7-.2.3-.5.5-.7.8C103.4 301.9 64 402.3 64 512s39.4 210.1 104.8 288c.2.3.5.6.7.9l3.1 3.7c.4.5.8.9 1.2 1.4l4.1 4.7c0 .1.1.1.1.2 1.5 1.7 3 3.4 4.6 5l.1.1c3.2 3.4 6.4 6.8 9.6 10.1l.1.1c1.6 1.6 3.1 3.2 4.7 4.7l.3.3c3.3 3.3 6.7 6.5 10.1 9.6 80.1 74 187 119.2 304.5 119.2s224.4-45.2 304.3-119.2a300 300 0 0010-9.6l.3-.3c1.6-1.6 3.2-3.1 4.7-4.7l.1-.1c3.3-3.3 6.5-6.7 9.6-10.1l.1-.1c1.5-1.7 3.1-3.3 4.6-5 0-.1.1-.1.1-.2 1.4-1.5 2.8-3.1 4.1-4.7.4-.5.8-.9 1.2-1.4a99 99 0 003.3-3.7zm4.1-142.6c-13.8 32.6-32 62.8-54.2 90.2a444.07 444.07 0 00-81.5-55.9c11.6-46.9 18.8-98.4 20.7-152.6H887c-3 40.9-12.6 80.6-28.5 118.3zM887 484H743.5c-1.9-54.2-9.1-105.7-20.7-152.6 29.3-15.6 56.6-34.4 81.5-55.9A373.86 373.86 0 01887 484zM658.3 165.5c39.7 16.8 75.8 40 107.6 69.2a394.72 394.72 0 01-59.4 41.8c-15.7-45-35.8-84.1-59.2-115.4 3.7 1.4 7.4 2.9 11 4.4zm-90.6 700.6c-9.2 7.2-18.4 12.7-27.7 16.4V697a389.1 389.1 0 01115.7 26.2c-8.3 24.6-17.9 47.3-29 67.8-17.4 32.4-37.8 58.3-59 75.1zm59-633.1c11 20.6 20.7 43.3 29 67.8A389.1 389.1 0 01540 327V141.6c9.2 3.7 18.5 9.1 27.7 16.4 21.2 16.7 41.6 42.6 59 75zM540 640.9V540h147.5c-1.6 44.2-7.1 87.1-16.3 127.8l-.3 1.2A445.02 445.02 0 00540 640.9zm0-156.9V383.1c45.8-2.8 89.8-12.5 130.9-28.1l.3 1.2c9.2 40.7 14.7 83.5 16.3 127.8H540zm-56 56v100.9c-45.8 2.8-89.8 12.5-130.9 28.1l-.3-1.2c-9.2-40.7-14.7-83.5-16.3-127.8H484zm-147.5-56c1.6-44.2 7.1-87.1 16.3-127.8l.3-1.2c41.1 15.6 85 25.3 130.9 28.1V484H336.5zM484 697v185.4c-9.2-3.7-18.5-9.1-27.7-16.4-21.2-16.7-41.7-42.7-59.1-75.1-11-20.6-20.7-43.3-29-67.8 37.2-14.6 75.9-23.3 115.8-26.1zm0-370a389.1 389.1 0 01-115.7-26.2c8.3-24.6 17.9-47.3 29-67.8 17.4-32.4 37.8-58.4 59.1-75.1 9.2-7.2 18.4-12.7 27.7-16.4V327zM365.7 165.5c3.7-1.5 7.3-3 11-4.4-23.4 31.3-43.5 70.4-59.2 115.4-21-12-40.9-26-59.4-41.8 31.8-29.2 67.9-52.4 107.6-69.2zM165.5 365.7c13.8-32.6 32-62.8 54.2-90.2 24.9 21.5 52.2 40.3 81.5 55.9-11.6 46.9-18.8 98.4-20.7 152.6H137c3-40.9 12.6-80.6 28.5-118.3zM137 540h143.5c1.9 54.2 9.1 105.7 20.7 152.6a444.07 444.07 0 00-81.5 55.9A373.86 373.86 0 01137 540zm228.7 318.5c-39.7-16.8-75.8-40-107.6-69.2 18.5-15.8 38.4-29.7 59.4-41.8 15.7 45 35.8 84.1 59.2 115.4-3.7-1.4-7.4-2.9-11-4.4zm292.6 0c-3.7 1.5-7.3 3-11 4.4 23.4-31.3 43.5-70.4 59.2-115.4 21 12 40.9 26 59.4 41.8a373.81 373.81 0 01-107.6 69.2z"}}]},name:"global",theme:"outlined"};var a=e.i(9583),s=r.forwardRef(function(e,s){return r.createElement(a.default,(0,t.default)({},e,{ref:s,icon:n}))});e.s(["GlobalOutlined",0,s],160818)},822315,(e,t,r)=>{e.e,t.exports=function(){"use strict";var e="millisecond",t="second",r="minute",n="hour",a="week",s="month",i="quarter",l="year",o="date",u="Invalid Date",c=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,d=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m=function(e,t,r){var n=String(e);return!n||n.length>=t?e:""+Array(t+1-n.length).join(r)+e},f="en",h={};h[f]={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],r=e%100;return"["+e+(t[(r-20)%10]||t[r]||t[0])+"]"}};var v="$isDayjsObject",g=function(e){return e instanceof y||!(!e||!e[v])},p=function e(t,r,n){var a;if(!t)return f;if("string"==typeof t){var s=t.toLowerCase();h[s]&&(a=s),r&&(h[s]=r,a=s);var i=t.split("-");if(!a&&i.length>1)return e(i[0])}else{var l=t.name;h[l]=t,a=l}return!n&&a&&(f=a),a||!n&&f},b=function(e,t){if(g(e))return e.clone();var r="object"==typeof t?t:{};return r.date=e,r.args=arguments,new y(r)},x={s:m,z:function(e){var t=-e.utcOffset(),r=Math.abs(t);return(t<=0?"+":"-")+m(Math.floor(r/60),2,"0")+":"+m(r%60,2,"0")},m:function e(t,r){if(t.date(){"use strict";var t=e.i(401361);e.s(["EditOutlined",()=>t.default])},564897,e=>{"use strict";e.i(247167);var t=e.i(931067),r=e.i(271645);let n={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"minus-circle",theme:"outlined"};var a=e.i(9583),s=r.forwardRef(function(e,s){return r.createElement(a.default,(0,t.default)({},e,{ref:s,icon:n}))});e.s(["MinusCircleOutlined",0,s],564897)},987432,e=>{"use strict";e.i(247167);var t=e.i(931067),r=e.i(271645);let n={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840zM512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z"}}]},name:"save",theme:"outlined"};var a=e.i(9583),s=r.forwardRef(function(e,s){return r.createElement(a.default,(0,t.default)({},e,{ref:s,icon:n}))});e.s(["SaveOutlined",0,s],987432)},995926,e=>{"use strict";var t=e.i(841947);e.s(["XIcon",()=>t.default])},584578,e=>{"use strict";var t=e.i(764205);let r=async(e,r,n,a,s)=>{let i;i="Admin"!=n&&"Admin Viewer"!=n?await (0,t.teamListCall)(e,a?.organization_id||null,r):await (0,t.teamListCall)(e,a?.organization_id||null),console.log(`givenTeams: ${i}`),s(i)};e.s(["fetchTeams",0,r])},468133,e=>{"use strict";var t=e.i(843476),r=e.i(271645),n=e.i(175712),a=e.i(464571),s=e.i(28651),i=e.i(898586),l=e.i(482725),o=e.i(199133),u=e.i(262218),c=e.i(621192),d=e.i(178654),m=e.i(751904),f=e.i(987432),h=e.i(764205),v=e.i(860585),g=e.i(355619),p=e.i(727749),b=e.i(162386);let{Title:x,Text:y}=i.Typography,w=["/key/generate","/key/update","/key/delete","/key/regenerate","/key/service-account/generate","/key/{key_id}/regenerate","/key/block","/key/unblock","/key/bulk_update","/key/{key_id}/reset_spend","/key/info","/key/list","/key/aliases","/team/daily/activity"],j=({label:e,description:r,isEditing:n,viewContent:a,editContent:s})=>(0,t.jsxs)(c.Row,{className:"py-5 border-b border-gray-100 last:border-0",children:[(0,t.jsxs)(d.Col,{span:8,className:"pr-6",children:[(0,t.jsx)("div",{className:"text-sm font-semibold text-gray-900",children:e}),(0,t.jsx)("div",{className:"text-xs text-gray-500 mt-1 leading-relaxed",children:r})]}),(0,t.jsx)(d.Col,{span:16,className:"flex items-center",children:(0,t.jsx)("div",{className:"w-full",children:n?s:a})})]}),M=()=>(0,t.jsx)(y,{className:"text-gray-400 italic",children:"Not set"}),C=(e,r)=>e&&0!==e.length?(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:e.map(e=>(0,t.jsx)(u.Tag,{color:"blue",children:r?r(e):e},e))}):(0,t.jsx)(M,{}),S={max_budget:null,budget_duration:null,tpm_limit:null,rpm_limit:null,models:[],team_member_permissions:[]};e.s(["default",0,({accessToken:e})=>{let[i,c]=(0,r.useState)(!0),[d,T]=(0,r.useState)(S),[$,k]=(0,r.useState)(!1),[N,E]=(0,r.useState)(S),[_,D]=(0,r.useState)(!1),[O,L]=(0,r.useState)(!1);(0,r.useEffect)(()=>{(async()=>{if(!e)return c(!1);try{let t=await (0,h.getDefaultTeamSettings)(e),r={...S,...t.values||{}};T(r),E(r)}catch(e){console.error("Error fetching team SSO settings:",e),L(!0),p.default.fromBackend("Failed to fetch team settings")}finally{c(!1)}})()},[e]);let R=async()=>{if(e){D(!0);try{let t=await (0,h.updateDefaultTeamSettings)(e,N),r={...S,...t.settings||{}};T(r),E(r),k(!1),p.default.success("Default team settings updated successfully")}catch(e){console.error("Error updating team settings:",e),p.default.fromBackend("Failed to update team settings")}finally{D(!1)}}},z=(e,t)=>{E(r=>({...r,[e]:t}))};return i?(0,t.jsx)("div",{className:"flex justify-center items-center h-64",children:(0,t.jsx)(l.Spin,{size:"large"})}):O?(0,t.jsx)(n.Card,{children:(0,t.jsx)(y,{children:"No team settings available or you do not have permission to view them."})}):(0,t.jsxs)(n.Card,{styles:{body:{padding:32}},children:[(0,t.jsxs)("div",{className:"flex justify-between items-start mb-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(x,{level:3,className:"m-0 text-gray-900",children:"Default Team Settings"}),(0,t.jsx)(y,{className:"text-gray-500 mt-1 block",children:"These settings will be applied by default when creating new teams."})]}),(0,t.jsx)("div",{children:$?(0,t.jsxs)("div",{className:"flex gap-3",children:[(0,t.jsx)(a.Button,{onClick:()=>{k(!1),E(d)},disabled:_,children:"Cancel"}),(0,t.jsx)(a.Button,{type:"primary",onClick:R,loading:_,icon:(0,t.jsx)(f.SaveOutlined,{}),children:"Save Changes"})]}):(0,t.jsx)(a.Button,{onClick:()=>k(!0),icon:(0,t.jsx)(m.EditOutlined,{}),children:"Edit Settings"})})]}),(0,t.jsxs)("div",{className:"mt-8",children:[(0,t.jsxs)("div",{className:"mb-8",children:[(0,t.jsx)("div",{className:"text-xs font-bold text-gray-500 uppercase tracking-wider mb-2",children:"Budget & Rate Limits"}),(0,t.jsxs)("div",{className:"border-t border-gray-100",children:[(0,t.jsx)(j,{label:"Max Budget",description:"Maximum budget (in USD) for new automatically created teams.",isEditing:$,viewContent:null!=d.max_budget?(0,t.jsxs)(y,{children:["$",Number(d.max_budget).toLocaleString()]}):(0,t.jsx)(M,{}),editContent:(0,t.jsx)(s.InputNumber,{className:"w-full",style:{maxWidth:320},value:N.max_budget,onChange:e=>z("max_budget",e),placeholder:"Not set",prefix:"$",min:0})}),(0,t.jsx)(j,{label:"Budget Duration",description:"How frequently the team's budget resets.",isEditing:$,viewContent:d.budget_duration?(0,t.jsx)(y,{children:(0,v.getBudgetDurationLabel)(d.budget_duration)}):(0,t.jsx)(M,{}),editContent:(0,t.jsx)(v.default,{value:N.budget_duration||null,onChange:e=>z("budget_duration",e),style:{maxWidth:320}})}),(0,t.jsx)(j,{label:"TPM Limit",description:"Maximum tokens per minute allowed across all models.",isEditing:$,viewContent:null!=d.tpm_limit?(0,t.jsx)(y,{children:d.tpm_limit.toLocaleString()}):(0,t.jsx)(M,{}),editContent:(0,t.jsx)(s.InputNumber,{className:"w-full",style:{maxWidth:320},value:N.tpm_limit,onChange:e=>z("tpm_limit",e),placeholder:"Not set",min:0})}),(0,t.jsx)(j,{label:"RPM Limit",description:"Maximum requests per minute allowed across all models.",isEditing:$,viewContent:null!=d.rpm_limit?(0,t.jsx)(y,{children:d.rpm_limit.toLocaleString()}):(0,t.jsx)(M,{}),editContent:(0,t.jsx)(s.InputNumber,{className:"w-full",style:{maxWidth:320},value:N.rpm_limit,onChange:e=>z("rpm_limit",e),placeholder:"Not set",min:0})})]})]}),(0,t.jsxs)("div",{className:"mb-8",children:[(0,t.jsx)("div",{className:"text-xs font-bold text-gray-500 uppercase tracking-wider mb-2",children:"Access & Permissions"}),(0,t.jsxs)("div",{className:"border-t border-gray-100",children:[(0,t.jsx)(j,{label:"Models",description:"Default list of models that new teams can access.",isEditing:$,viewContent:C(d.models,g.getModelDisplayName),editContent:(0,t.jsx)(b.ModelSelect,{value:N.models||[],onChange:e=>z("models",e),context:"global",style:{width:"100%"},options:{includeSpecialOptions:!0}})}),(0,t.jsx)(j,{label:"Team Member Permissions",description:"Default permissions granted to members of newly created teams. /key/info and /key/health are always included.",isEditing:$,viewContent:C(d.team_member_permissions),editContent:(0,t.jsx)(o.Select,{mode:"multiple",style:{width:"100%"},value:N.team_member_permissions||[],onChange:e=>z("team_member_permissions",e),placeholder:"Select permissions",tagRender:({label:e,closable:r,onClose:n})=>(0,t.jsx)(u.Tag,{color:"blue",closable:r,onClose:n,className:"mr-1 mt-1 mb-1",children:e}),children:w.map(e=>(0,t.jsx)(o.Select.Option,{value:e,children:e},e))})})]})]})]})]})}])},747871,e=>{"use strict";var t=e.i(843476),r=e.i(271645),n=e.i(269200),a=e.i(942232),s=e.i(977572),i=e.i(427612),l=e.i(64848),o=e.i(496020),u=e.i(304967),c=e.i(994388),d=e.i(599724),m=e.i(389083),f=e.i(764205),h=e.i(727749);e.s(["default",0,({accessToken:e,userID:v})=>{let[g,p]=(0,r.useState)([]);(0,r.useEffect)(()=>{(async()=>{if(e&&v)try{let t=await (0,f.availableTeamListCall)(e);p(t)}catch(e){console.error("Error fetching available teams:",e)}})()},[e,v]);let b=async t=>{if(e&&v)try{await (0,f.teamMemberAddCall)(e,t,{user_id:v,role:"user"}),h.default.success("Successfully joined team"),p(e=>e.filter(e=>e.team_id!==t))}catch(e){console.error("Error joining team:",e),h.default.fromBackend("Failed to join team")}};return(0,t.jsx)(u.Card,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,t.jsxs)(n.Table,{children:[(0,t.jsx)(i.TableHead,{children:(0,t.jsxs)(o.TableRow,{children:[(0,t.jsx)(l.TableHeaderCell,{children:"Team Name"}),(0,t.jsx)(l.TableHeaderCell,{children:"Description"}),(0,t.jsx)(l.TableHeaderCell,{children:"Members"}),(0,t.jsx)(l.TableHeaderCell,{children:"Models"}),(0,t.jsx)(l.TableHeaderCell,{children:"Actions"})]})}),(0,t.jsxs)(a.TableBody,{children:[g.map(e=>(0,t.jsxs)(o.TableRow,{children:[(0,t.jsx)(s.TableCell,{children:(0,t.jsx)(d.Text,{children:e.team_alias})}),(0,t.jsx)(s.TableCell,{children:(0,t.jsx)(d.Text,{children:e.description||"No description available"})}),(0,t.jsx)(s.TableCell,{children:(0,t.jsxs)(d.Text,{children:[e.members_with_roles.length," members"]})}),(0,t.jsx)(s.TableCell,{children:(0,t.jsx)("div",{className:"flex flex-col",children:e.models&&0!==e.models.length?e.models.map((e,r)=>(0,t.jsx)(m.Badge,{size:"xs",className:"mb-1",color:"blue",children:(0,t.jsx)(d.Text,{children:e.length>30?`${e.slice(0,30)}...`:e})},r)):(0,t.jsx)(m.Badge,{size:"xs",color:"red",children:(0,t.jsx)(d.Text,{children:"All Proxy Models"})})})}),(0,t.jsx)(s.TableCell,{children:(0,t.jsx)(c.Button,{size:"xs",variant:"secondary",onClick:()=>b(e.team_id),children:"Join Team"})})]},e.team_id)),0===g.length&&(0,t.jsx)(o.TableRow,{children:(0,t.jsx)(s.TableCell,{colSpan:5,className:"text-center",children:(0,t.jsxs)(d.Text,{children:["No available teams to join. See how to set available teams"," ",(0,t.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/self_serve#all-settings-for-self-serve--sso-flow",target:"_blank",rel:"noopener noreferrer",className:"text-blue-500 hover:text-blue-700 underline",children:"here"}),"."]})})})]})]})})}])}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/0-4-0.z8w6y27.js b/litellm/proxy/_experimental/out/_next/static/chunks/0-4-0.z8w6y27.js deleted file mode 100644 index 1254d125f9a..00000000000 --- a/litellm/proxy/_experimental/out/_next/static/chunks/0-4-0.z8w6y27.js +++ /dev/null @@ -1 +0,0 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,596239,e=>{"use strict";e.i(247167);var t=e.i(931067),r=e.i(271645);let a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M574 665.4a8.03 8.03 0 00-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 00-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 000 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 000 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 00-11.3 0L372.3 598.7a8.03 8.03 0 000 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z"}}]},name:"link",theme:"outlined"};var l=e.i(9583),o=r.forwardRef(function(e,o){return r.createElement(l.default,(0,t.default)({},e,{ref:o,icon:a}))});e.s(["LinkOutlined",0,o],596239)},362024,e=>{"use strict";var t=e.i(988122);e.s(["Collapse",()=>t.default])},21548,e=>{"use strict";var t=e.i(616303);e.s(["Empty",()=>t.default])},700514,e=>{"use strict";var t=e.i(271645);e.s(["defaultPageSize",0,25,"useBaseUrl",0,()=>{let[e,r]=(0,t.useState)("http://localhost:4000");return(0,t.useEffect)(()=>{{let{protocol:e,host:t}=window.location;r(`${e}//${t}`)}},[]),e}])},918549,e=>{"use strict";let t=(0,e.i(475254).default)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);e.s(["default",0,t])},98919,e=>{"use strict";var t=e.i(918549);e.s(["Shield",()=>t.default])},727612,e=>{"use strict";let t=(0,e.i(475254).default)("trash-2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);e.s(["Trash2",0,t],727612)},688511,823429,e=>{"use strict";let t=(0,e.i(475254).default)("square-pen",[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]]);e.s(["default",0,t],823429),e.s(["Edit",0,t],688511)},114600,e=>{"use strict";var t=e.i(290571),r=e.i(444755),a=e.i(673706),l=e.i(271645);let o=(0,a.makeClassName)("Divider"),s=l.default.forwardRef((e,a)=>{let{className:s,children:i}=e,d=(0,t.__rest)(e,["className","children"]);return l.default.createElement("div",Object.assign({ref:a,className:(0,r.tremorTwMerge)(o("root"),"w-full mx-auto my-6 flex justify-between gap-3 items-center text-tremor-default","text-tremor-content","dark:text-dark-tremor-content",s)},d),i?l.default.createElement(l.default.Fragment,null,l.default.createElement("div",{className:(0,r.tremorTwMerge)("w-full h-[1px] bg-tremor-border dark:bg-dark-tremor-border")}),l.default.createElement("div",{className:(0,r.tremorTwMerge)("text-inherit whitespace-nowrap")},i),l.default.createElement("div",{className:(0,r.tremorTwMerge)("w-full h-[1px] bg-tremor-border dark:bg-dark-tremor-border")})):l.default.createElement("div",{className:(0,r.tremorTwMerge)("w-full h-[1px] bg-tremor-border dark:bg-dark-tremor-border")}))});s.displayName="Divider",e.s(["Divider",0,s],114600)},366283,e=>{"use strict";var t=e.i(290571),r=e.i(271645),a=e.i(95779),l=e.i(444755),o=e.i(673706);let s=(0,o.makeClassName)("Callout"),i=r.default.forwardRef((e,i)=>{let{title:d,icon:c,color:n,className:u,children:f}=e,m=(0,t.__rest)(e,["title","icon","color","className","children"]);return r.default.createElement("div",Object.assign({ref:i,className:(0,l.tremorTwMerge)(s("root"),"flex flex-col overflow-hidden rounded-tremor-default text-tremor-default border-l-4 py-3 pr-3 pl-4",n?(0,l.tremorTwMerge)((0,o.getColorClassNames)(n,a.colorPalette.background).bgColor,(0,o.getColorClassNames)(n,a.colorPalette.darkBorder).borderColor,(0,o.getColorClassNames)(n,a.colorPalette.darkText).textColor,"dark:bg-opacity-10 bg-opacity-10"):(0,l.tremorTwMerge)("bg-tremor-brand-faint border-tremor-brand-emphasis text-tremor-brand-emphasis","dark:bg-dark-tremor-brand-muted/70 dark:border-dark-tremor-brand-emphasis dark:text-dark-tremor-brand-emphasis"),u)},m),r.default.createElement("div",{className:(0,l.tremorTwMerge)(s("header"),"flex items-start")},c?r.default.createElement(c,{className:(0,l.tremorTwMerge)(s("icon"),"flex-none h-5 w-5 mr-1.5")}):null,r.default.createElement("h4",{className:(0,l.tremorTwMerge)(s("title"),"font-semibold")},d)),r.default.createElement("p",{className:(0,l.tremorTwMerge)(s("body"),"overflow-y-auto",f?"mt-2":"")},f))});i.displayName="Callout",e.s(["Callout",0,i],366283)},475647,e=>{"use strict";e.i(247167);var t=e.i(931067),r=e.i(271645);let a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"plus-circle",theme:"outlined"};var l=e.i(9583),o=r.forwardRef(function(e,o){return r.createElement(l.default,(0,t.default)({},e,{ref:o,icon:a}))});e.s(["PlusCircleOutlined",0,o],475647)},153472,e=>{"use strict";var t,r,a=e.i(266027),l=e.i(954616),o=e.i(912598),s=e.i(243652),i=e.i(135214),d=e.i(764205),c=((t={}).GENERAL_SETTINGS="general_settings",t),n=((r={}).MAXIMUM_SPEND_LOGS_RETENTION_PERIOD="maximum_spend_logs_retention_period",r);let u=async(e,t)=>{try{let r=d.proxyBaseUrl?`${d.proxyBaseUrl}/config/list?config_type=${t}`:`/config/list?config_type=${t}`,a=await fetch(r,{method:"GET",headers:{[(0,d.getGlobalLitellmHeaderName)()]:`Bearer ${e}`,"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=(0,d.deriveErrorMessage)(e);throw(0,d.handleError)(t),Error(t)}return await a.json()}catch(e){throw console.error(`Failed to get proxy config for ${t}:`,e),e}},f=(0,s.createQueryKeys)("proxyConfig"),m=async(e,t)=>{try{let r=d.proxyBaseUrl?`${d.proxyBaseUrl}/config/field/delete`:"/config/field/delete",a=await fetch(r,{method:"POST",headers:{[(0,d.getGlobalLitellmHeaderName)()]:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=(0,d.deriveErrorMessage)(e);throw(0,d.handleError)(t),Error(t)}return await a.json()}catch(e){throw console.error(`Failed to delete proxy config field ${t.field_name}:`,e),e}};e.s(["ConfigType",()=>c,"GeneralSettingsFieldName",()=>n,"proxyConfigKeys",0,f,"useDeleteProxyConfigField",0,()=>{let{accessToken:e}=(0,i.default)(),t=(0,o.useQueryClient)();return(0,l.useMutation)({mutationFn:async t=>{if(!e)throw Error("Access token is required");return await m(e,t)},onSuccess:()=>{t.invalidateQueries({queryKey:f.all})}})},"useProxyConfig",0,e=>{let{accessToken:t}=(0,i.default)();return(0,a.useQuery)({queryKey:f.list({filters:{configType:e}}),queryFn:async()=>await u(t,e),enabled:!!t})}])},286536,77705,e=>{"use strict";var t=e.i(475254);let r=(0,t.default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["Eye",0,r],286536);let a=(0,t.default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);e.s(["EyeOff",0,a],77705)},514236,e=>{"use strict";var t=e.i(843476),r=e.i(105278);e.s(["default",0,()=>(0,t.jsx)(r.default,{})])}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/0-ne4el5qxs1z.js b/litellm/proxy/_experimental/out/_next/static/chunks/0-ne4el5qxs1z.js deleted file mode 100644 index a7a6f306c77..00000000000 --- a/litellm/proxy/_experimental/out/_next/static/chunks/0-ne4el5qxs1z.js +++ /dev/null @@ -1,40 +0,0 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,921687,e=>{"use strict";var t=e.i(764205);let s=async(e,s)=>{try{let r=s||(0,t.getProxyBaseUrl)(),a=r?`${r}/v1/agents`:"/v1/agents",n=await fetch(a,{method:"GET",headers:{[(0,t.getGlobalLitellmHeaderName)()]:`Bearer ${e}`,"Content-Type":"application/json"}});if(!n.ok){let e=await n.json();throw Error(e.detail||"Failed to fetch agents")}let i=await n.json();return console.log("Fetched agents:",i),i.sort((e,t)=>{let s=e.agent_name||e.agent_id,r=t.agent_name||t.agent_id;return s.localeCompare(r)}),i}catch(e){throw console.error("Error fetching agents:",e),e}},r=async(e,s,r,a)=>{try{let a=await (0,t.modelInfoCall)(e,s,r,1,200),n=a?.data??[],i=(Array.isArray(n)?n:[]).filter(e=>"string"==typeof e?.litellm_params?.model&&e.litellm_params.model.startsWith("litellm_agent/")).map(e=>({model_name:e.model_name??e.model_group??"",litellm_params:{...e.litellm_params,model:e.litellm_params.model,litellm_system_prompt:e.litellm_params?.litellm_system_prompt,tools:Array.isArray(e.litellm_params?.tools)?e.litellm_params.tools:void 0},model_info:e.model_info??null}));return i.sort((e,t)=>e.model_name.localeCompare(t.model_name)),i}catch(e){throw console.error("Error fetching agent models:",e),e}};e.s(["fetchAvailableAgentModels",0,r,"fetchAvailableAgents",0,s])},124608,614677,235267,318059,953860,434788,512882,584976,720762,e=>{"use strict";let t,s,r;e.i(247167);var a,n,i,o,l,c,d,u,h,p,m,g,f,y,x,b,v,w,_,S,j,k,N,E,T,C,A,P,O,I,R,M,$,L,U,D,q,B,W,H,z,F,J,G,V,K,X,Y,Q,Z,ee,et,es,er,ea,en,ei,eo,el,ec,ed,eu,eh,ep,em,eg,ef,ey,ex=e.i(931067),eb=e.i(271645);let ev={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2zM304 456a88 88 0 100-176 88 88 0 000 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z"}}]},name:"picture",theme:"outlined"};var ew=e.i(9583),e_=eb.forwardRef(function(e,t){return eb.createElement(ew.default,(0,ex.default)({},e,{ref:t,icon:ev}))});e.s(["PictureOutlined",0,e_],124608);let eS=new Uint8Array(16),ej=[];for(let e=0;e<256;++e)ej.push((e+256).toString(16).slice(1));let ek=function(e,t,s){return t||e||!crypto.randomUUID?function(e,t,s){let r=(e=e||{}).random??e.rng?.()??crypto.getRandomValues(eS);if(r.length<16)throw Error("Random bytes length must be >= 16");if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){if((s=s||0)<0||s+16>t.length)throw RangeError(`UUID byte range ${s}:${s+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[s+e]=r[e];return t}return function(e,t=0){return(ej[e[t+0]]+ej[e[t+1]]+ej[e[t+2]]+ej[e[t+3]]+"-"+ej[e[t+4]]+ej[e[t+5]]+"-"+ej[e[t+6]]+ej[e[t+7]]+"-"+ej[e[t+8]]+ej[e[t+9]]+"-"+ej[e[t+10]]+ej[e[t+11]]+ej[e[t+12]]+ej[e[t+13]]+ej[e[t+14]]+ej[e[t+15]]).toLowerCase()}(r)}(e,t,s):crypto.randomUUID()};e.s(["v4",0,ek],614677);var eN=e.i(843476),eE=e.i(808613),eT=e.i(311451),eC=e.i(28651),eA=e.i(199133),eP=e.i(592968),eO=e.i(827252);function eI(e){if(!e)return[];if(Array.isArray(e))return e.map(e=>eR(e)).filter(e=>void 0!==e);let t=eR(e);return void 0!==t?[t]:[]}function eR(e,t){if(!e)return;let s=void 0!==t?t:e.default;if("object"===e.type){let t="object"!=typeof s||null===s||Array.isArray(s)?{}:{...s};return e.properties&&Object.entries(e.properties).forEach(([e,s])=>{t[e]=eR(s,t[e])}),t}if("array"===e.type){if(Array.isArray(s)){let t=e.items;if(!t)return s;if(0===s.length){let e=eI(t);return e.length?e:s}return Array.isArray(t)?s.map((e,s)=>eR(t[s]??t[t.length-1],e)):s.map(e=>eR(t,e))}return void 0!==s?s:eI(e.items)}if(void 0!==s)return s;switch(e.type){case"integer":case"number":return 0;case"boolean":return!1;default:return""}}let eM=e=>{let t=eR(e);if("object"===e.type||"array"===e.type){let s="array"===e.type?[]:{};return JSON.stringify(t??s,null,2)}return t},e$=(0,eb.forwardRef)(({tool:e,className:t},s)=>{let[r]=eE.Form.useForm(),a=(0,eb.useMemo)(()=>"string"==typeof e.inputSchema?{type:"object",properties:{input:{type:"string",description:"Input for this tool"}},required:["input"]}:e.inputSchema,[e.inputSchema]),n=(0,eb.useMemo)(()=>a.properties?.params?.type==="object"&&a.properties.params.properties?{type:"object",properties:a.properties.params.properties,required:a.properties.params.required||[]}:a,[a]);return((0,eb.useImperativeHandle)(s,()=>({getSubmitValues:async()=>{var e;let t;return e=await r.validateFields(),t={},Object.entries(e).forEach(([e,s])=>{let r=n.properties?.[e];if(r&&null!=s&&""!==s)switch(r.type){case"boolean":t[e]="true"===s||!0===s;break;case"number":case"integer":{let a=Number(s);t[e]=Number.isNaN(a)?s:"integer"===r.type?Math.trunc(a):a;break}case"object":case"array":try{let a="string"==typeof s?JSON.parse(s):s,n="object"===r.type&&null!==a&&"object"==typeof a&&!Array.isArray(a),i="array"===r.type&&Array.isArray(a);"object"===r.type&&n||"array"===r.type&&i?t[e]=a:t[e]=s}catch{t[e]=s}break;case"string":t[e]=String(s);break;default:t[e]=s}else null!=s&&""!==s&&(t[e]=s)}),a.properties?.params?.type==="object"&&a.properties.params.properties?{params:t}:t}})),eb.default.useEffect(()=>{if(r.resetFields(),!n.properties)return;let e={};Object.entries(n.properties).forEach(([t,s])=>{e[t]=eM(s)}),r.setFieldsValue(e)},[r,n,e]),"string"==typeof e.inputSchema)?(0,eN.jsx)(eE.Form,{form:r,layout:"vertical",className:t,children:(0,eN.jsx)(eE.Form.Item,{label:(0,eN.jsxs)("span",{className:"text-sm font-medium text-gray-700",children:["Input ",(0,eN.jsx)("span",{className:"text-red-500",children:"*"})]}),name:"input",rules:[{required:!0,message:"Please enter input for this tool"}],children:(0,eN.jsx)(eT.Input,{placeholder:"Enter input for this tool"})})}):n.properties?(0,eN.jsx)(eE.Form,{form:r,layout:"vertical",className:t,children:Object.entries(n.properties).map(([t,s])=>{let r=eM(s),a=`${e.name}-${t}`;return(0,eN.jsx)(eE.Form.Item,{label:(0,eN.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:[t," ",n.required?.includes(t)&&(0,eN.jsx)("span",{className:"text-red-500",children:"*"}),s.description&&(0,eN.jsx)(eP.Tooltip,{title:s.description,children:(0,eN.jsx)(eO.InfoCircleOutlined,{className:"ml-2 text-gray-400 hover:text-gray-600"})})]}),name:t,initialValue:r,rules:[{required:n.required?.includes(t),message:`Please enter ${t}`},..."object"===s.type||"array"===s.type?[{validator:(e,r)=>{if((null==r||""===r)&&!n.required?.includes(t))return Promise.resolve();try{let e="string"==typeof r?JSON.parse(r):r,t="object"===s.type&&null!==e&&"object"==typeof e&&!Array.isArray(e),a="array"===s.type&&Array.isArray(e);if("object"===s.type&&t||"array"===s.type&&a)return Promise.resolve();return Promise.reject(Error("object"===s.type?"Please enter a JSON object":"Please enter a JSON array"))}catch{return Promise.reject(Error("Invalid JSON"))}}}]:[]],children:"string"===s.type&&s.enum?(0,eN.jsx)(eA.Select,{placeholder:`Select ${t}`,allowClear:!n.required?.includes(t),options:s.enum.map(e=>({value:e,label:e}))}):"string"!==s.type||s.enum?"number"===s.type||"integer"===s.type?(0,eN.jsx)(eC.InputNumber,{step:"integer"===s.type?1:void 0,placeholder:s.description||`Enter ${t}`,className:"w-full",style:{width:"100%"}}):"boolean"===s.type?(0,eN.jsx)(eA.Select,{placeholder:`Select ${t}`,allowClear:!n.required?.includes(t),options:[{value:!0,label:"True"},{value:!1,label:"False"}]}):"object"===s.type||"array"===s.type?(0,eN.jsx)(eT.Input.TextArea,{rows:"object"===s.type?4:3,placeholder:s.description||("object"===s.type?`Enter JSON object for ${t}`:`Enter JSON array for ${t}`),spellCheck:!1,className:"font-mono"}):(0,eN.jsx)(eT.Input,{placeholder:s.description||`Enter ${t}`,allowClear:!0}):(0,eN.jsx)(eT.Input,{placeholder:s.description||`Enter ${t}`,allowClear:!0})},a)})}):(0,eN.jsx)(eE.Form,{form:r,layout:"vertical",className:t,children:(0,eN.jsx)("div",{className:"py-4 text-center text-sm text-gray-500",children:"No parameters required for this tool."})})});e$.displayName="MCPToolArgumentsForm",e.s(["default",0,e$],235267);var eL=e.i(764205);e.s(["default",0,({onChange:e,value:t,className:s,accessToken:r})=>{let[a,n]=(0,eb.useState)([]),[i,o]=(0,eb.useState)(!1);return(0,eb.useEffect)(()=>{(async()=>{if(r)try{let e=await (0,eL.tagListCall)(r);console.log("List tags response:",e),n(Object.values(e))}catch(e){console.error("Error fetching tags:",e)}finally{o(!1)}})()},[r]),(0,eN.jsx)(eA.Select,{mode:"tags",showSearch:!0,placeholder:"Select or create tags",onChange:e,value:t,loading:i,className:s,options:a.map(e=>({label:e.name,value:e.name,title:e.description||e.name})),optionFilterProp:"label",tokenSeparators:[","],maxTagCount:"responsive",allowClear:!0,style:{width:"100%"}})}],318059);let eU=e=>{if(!e)return;let t={};if(e.id&&(t.taskId=e.id),e.contextId&&(t.contextId=e.contextId),e.status&&(t.status={state:e.status.state,timestamp:e.status.timestamp},e.status.message?.parts)){let s=e.status.message.parts.filter(e=>"text"===e.kind&&e.text).map(e=>e.text).join(" ");s&&(t.status.message=s)}return e.metadata&&"object"==typeof e.metadata&&(t.metadata=e.metadata),Object.keys(t).length>0?t:void 0},eD=async(e,t,s,r,a,n,i,o,l,c)=>{let d=l||(0,eL.getProxyBaseUrl)(),u=d?`${d}/a2a/${e}/message/send`:`/a2a/${e}/message/send`,h={jsonrpc:"2.0",id:ek(),method:"message/send",params:{message:{kind:"message",messageId:ek().replace(/-/g,""),role:"user",parts:[{kind:"text",text:t}]}}};c&&c.length>0&&(h.params.metadata={guardrails:c});let p=performance.now();try{let t=await fetch(u,{method:"POST",headers:{[(0,eL.getGlobalLitellmHeaderName)()]:`Bearer ${r}`,"Content-Type":"application/json"},body:JSON.stringify(h),signal:a}),l=performance.now()-p;if(n&&n(l),!t.ok){let e=await t.json();throw Error(e.error?.message||e.detail||`HTTP ${t.status}`)}let c=await t.json(),d=performance.now()-p;if(i&&i(d),c.error)throw Error(c.error.message);let m=c.result;if(m){let t="",r=eU(m);if(r&&o&&o(r),m.artifacts&&Array.isArray(m.artifacts)){for(let e of m.artifacts)if(e.parts&&Array.isArray(e.parts))for(let s of e.parts)"text"===s.kind&&s.text&&(t+=s.text)}else if(m.parts&&Array.isArray(m.parts))for(let e of m.parts)"text"===e.kind&&e.text&&(t+=e.text);else if(m.status?.message?.parts)for(let e of m.status.message.parts)"text"===e.kind&&e.text&&(t+=e.text);t?s(t,`a2a_agent/${e}`):(console.warn("Could not extract text from A2A response, showing raw JSON:",m),s(JSON.stringify(m,null,2),`a2a_agent/${e}`))}}catch(e){if(a?.aborted)return void console.log("A2A request was cancelled");throw console.error("A2A send message error:",e),e}},eq=async(e,t,s,r,a,n,i,o,l)=>{let c,d=l||(0,eL.getProxyBaseUrl)(),u=d?`${d}/a2a/${e}`:`/a2a/${e}`,h=ek(),p=ek().replace(/-/g,""),m=performance.now(),g=!1,f="";try{let l=await fetch(u,{method:"POST",headers:{[(0,eL.getGlobalLitellmHeaderName)()]:`Bearer ${r}`,"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:h,method:"message/stream",params:{message:{kind:"message",messageId:p,role:"user",parts:[{kind:"text",text:t}]}}}),signal:a});if(!l.ok){let e=await l.json();throw Error(e.error?.message||e.detail||`HTTP ${l.status}`)}let d=l.body?.getReader();if(!d)throw Error("No response body");let y=new TextDecoder,x="",b=!1;for(;!b;){let t=await d.read();b=t.done;let r=t.value;if(b)break;let a=(x+=y.decode(r,{stream:!0})).split("\n");for(let t of(x=a.pop()||"",a))if(t.trim())try{let r=JSON.parse(t);if(!g){g=!0;let e=performance.now()-m;n&&n(e)}let a=r.result;if(a){let t=eU(a);t&&(c={...c,...t});let r=a.kind;if("artifact-update"===r&&a.artifact){let t=a.artifact;if(t.parts&&Array.isArray(t.parts))for(let r of t.parts)"text"===r.kind&&r.text&&(f+=r.text,s(f,`a2a_agent/${e}`))}else if(a.artifacts&&Array.isArray(a.artifacts)){for(let t of a.artifacts)if(t.parts&&Array.isArray(t.parts))for(let r of t.parts)"text"===r.kind&&r.text&&(f+=r.text,s(f,`a2a_agent/${e}`))}else if("status-update"===r);else if(a.parts&&Array.isArray(a.parts))for(let t of a.parts)"text"===t.kind&&t.text&&(f+=t.text,s(f,`a2a_agent/${e}`))}if(r.error){let e=r.error.message||"Unknown A2A error";throw Error(e)}}catch(e){if(e instanceof Error&&e.message&&!e.message.includes("JSON"))throw e;t.trim().length>0&&console.warn("Failed to parse A2A streaming chunk:",t,e)}}let v=performance.now()-m;i&&i(v),c&&o&&o(c)}catch(e){if(a?.aborted)return void console.log("A2A streaming request was cancelled");throw console.error("A2A stream message error:",e),e}};function eB(e,t,s,r,a){if("m"===r)throw TypeError("Private method is not writable");if("a"===r&&!a)throw TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(e,s):a?a.value=s:t.set(e,s),s}function eW(e,t,s,r){if("a"===s&&!r)throw TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===s?r:"a"===s?r.call(e):r?r.value:t.get(e)}e.s(["makeA2ASendMessageRequest",0,eD,"makeA2AStreamMessageRequest",0,eq],953860);let eH=function(){let{crypto:e}=globalThis;if(e?.randomUUID)return eH=e.randomUUID.bind(e),e.randomUUID();let t=new Uint8Array(1),s=e?()=>e.getRandomValues(t)[0]:()=>255*Math.random()&255;return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,e=>(e^s()&15>>e/4).toString(16))};function ez(e){return"object"==typeof e&&null!==e&&("name"in e&&"AbortError"===e.name||"message"in e&&String(e.message).includes("FetchRequestCanceledException"))}let eF=e=>{if(e instanceof Error)return e;if("object"==typeof e&&null!==e){try{if("[object Error]"===Object.prototype.toString.call(e)){let t=Error(e.message,e.cause?{cause:e.cause}:{});return e.stack&&(t.stack=e.stack),e.cause&&!t.cause&&(t.cause=e.cause),e.name&&(t.name=e.name),t}}catch{}try{return Error(JSON.stringify(e))}catch{}}return Error(e)};class eJ extends Error{}class eG extends eJ{constructor(e,t,s,r,a){super(`${eG.makeMessage(e,t,s)}`),this.status=e,this.headers=r,this.requestID=r?.get("request-id"),this.error=t,this.type=a??null}static makeMessage(e,t,s){let r=t?.message?"string"==typeof t.message?t.message:JSON.stringify(t.message):t?JSON.stringify(t):s;return e&&r?`${e} ${r}`:e?`${e} status code (no body)`:r||"(no status code or body)"}static generate(e,t,s,r){if(!e||!r)return new eK({message:s,cause:eF(t)});let a=t?.error?.type;return 400===e?new eY(e,t,s,r,a):401===e?new eQ(e,t,s,r,a):403===e?new eZ(e,t,s,r,a):404===e?new e0(e,t,s,r,a):409===e?new e1(e,t,s,r,a):422===e?new e2(e,t,s,r,a):429===e?new e4(e,t,s,r,a):e>=500?new e6(e,t,s,r,a):new eG(e,t,s,r,a)}}class eV extends eG{constructor({message:e}={}){super(void 0,void 0,e||"Request was aborted.",void 0)}}class eK extends eG{constructor({message:e,cause:t}){super(void 0,void 0,e||"Connection error.",void 0),t&&(this.cause=t)}}class eX extends eK{constructor({message:e}={}){super({message:e??"Request timed out."})}}class eY extends eG{}class eQ extends eG{}class eZ extends eG{}class e0 extends eG{}class e1 extends eG{}class e2 extends eG{}class e4 extends eG{}class e6 extends eG{}let e3=/^[a-z][a-z0-9+.-]*:/i,e5=e=>(e5=Array.isArray)(e),e8=e5;function e7(e){return"object"!=typeof e?{}:e??{}}function e9(e){if(!e)return!0;for(let t in e)return!1;return!0}let te=e=>{try{return JSON.parse(e)}catch(e){return}},tt="0.92.0",ts=e=>"x32"===e?"x32":"x86_64"===e||"x64"===e?"x64":"arm"===e?"arm":"aarch64"===e||"arm64"===e?"arm64":e?`other:${e}`:"unknown",tr=e=>(e=e.toLowerCase()).includes("ios")?"iOS":"android"===e?"Android":"darwin"===e?"MacOS":"win32"===e?"Windows":"freebsd"===e?"FreeBSD":"openbsd"===e?"OpenBSD":"linux"===e?"Linux":e?`Other:${e}`:"Unknown";function ta(...e){let t=globalThis.ReadableStream;if(void 0===t)throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new t(...e)}function tn(e){let t=Symbol.asyncIterator in e?e[Symbol.asyncIterator]():e[Symbol.iterator]();return ta({start(){},async pull(e){let{done:s,value:r}=await t.next();s?e.close():e.enqueue(r)},async cancel(){await t.return?.()}})}function ti(e){if(e[Symbol.asyncIterator])return e;let t=e.getReader();return{async next(){try{let e=await t.read();return e?.done&&t.releaseLock(),e}catch(e){throw t.releaseLock(),e}},async return(){let e=t.cancel();return t.releaseLock(),await e,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function to(e){if(null===e||"object"!=typeof e)return;if(e[Symbol.asyncIterator])return void await e[Symbol.asyncIterator]().return?.();let t=e.getReader(),s=t.cancel();t.releaseLock(),await s}let tl=({headers:e,body:t})=>({bodyHeaders:{"content-type":"application/json"},body:JSON.stringify(t)});function tc(e){let t;return(s??(s=(t=new globalThis.TextEncoder).encode.bind(t)))(e)}function td(e){let t;return(r??(r=(t=new globalThis.TextDecoder).decode.bind(t)))(e)}class tu{constructor(){a.set(this,void 0),n.set(this,void 0),eB(this,a,new Uint8Array,"f"),eB(this,n,null,"f")}decode(e){let t;if(null==e)return[];let s=e instanceof ArrayBuffer?new Uint8Array(e):"string"==typeof e?tc(e):e;eB(this,a,function(e){let t=0;for(let s of e)t+=s.length;let s=new Uint8Array(t),r=0;for(let t of e)s.set(t,r),r+=t.length;return s}([eW(this,a,"f"),s]),"f");let r=[];for(;null!=(t=function(e,t){for(let s=t??0;s{if(e){if(Object.prototype.hasOwnProperty.call(th,e))return e;tx(s).warn(`${t} was set to ${JSON.stringify(e)}, expected one of ${JSON.stringify(Object.keys(th))}`)}};function tm(){}function tg(e,t,s){return!t||th[e]>th[s]?tm:t[e].bind(t)}let tf={error:tm,warn:tm,info:tm,debug:tm},ty=new WeakMap;function tx(e){let t=e.logger,s=e.logLevel??"off";if(!t)return tf;let r=ty.get(t);if(r&&r[0]===s)return r[1];let a={error:tg("error",t,s),warn:tg("warn",t,s),info:tg("info",t,s),debug:tg("debug",t,s)};return ty.set(t,[s,a]),a}let tb=e=>(e.options&&(e.options={...e.options},delete e.options.headers),e.headers&&(e.headers=Object.fromEntries((e.headers instanceof Headers?[...e.headers]:Object.entries(e.headers)).map(([e,t])=>[e,"x-api-key"===e.toLowerCase()||"authorization"===e.toLowerCase()||"cookie"===e.toLowerCase()||"set-cookie"===e.toLowerCase()?"***":t]))),"retryOfRequestLogID"in e&&(e.retryOfRequestLogID&&(e.retryOf=e.retryOfRequestLogID),delete e.retryOfRequestLogID),e);class tv{constructor(e,t,s){this.iterator=e,i.set(this,void 0),this.controller=t,eB(this,i,s,"f")}static fromSSEResponse(e,t,s){let r=!1,a=s?tx(s):console;async function*n(){if(r)throw new eJ("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");r=!0;let s=!1;try{for await(let s of tw(e,t)){if("completion"===s.event)try{yield JSON.parse(s.data)}catch(e){throw a.error("Could not parse message into JSON:",s.data),a.error("From chunk:",s.raw),e}if("message_start"===s.event||"message_delta"===s.event||"message_stop"===s.event||"content_block_start"===s.event||"content_block_delta"===s.event||"content_block_stop"===s.event||"message"===s.event||"user.message"===s.event||"user.interrupt"===s.event||"user.tool_confirmation"===s.event||"user.custom_tool_result"===s.event||"agent.message"===s.event||"agent.thinking"===s.event||"agent.tool_use"===s.event||"agent.tool_result"===s.event||"agent.mcp_tool_use"===s.event||"agent.mcp_tool_result"===s.event||"agent.custom_tool_use"===s.event||"agent.thread_context_compacted"===s.event||"session.status_running"===s.event||"session.status_idle"===s.event||"session.status_rescheduled"===s.event||"session.status_terminated"===s.event||"session.error"===s.event||"session.deleted"===s.event||"span.model_request_start"===s.event||"span.model_request_end"===s.event)try{yield JSON.parse(s.data)}catch(e){throw a.error("Could not parse message into JSON:",s.data),a.error("From chunk:",s.raw),e}if("ping"!==s.event&&"error"===s.event){let t=te(s.data)??s.data,r=t?.error?.type;throw new eG(void 0,t,void 0,e.headers,r)}}s=!0}catch(e){if(ez(e))return;throw e}finally{s||t.abort()}}return new tv(n,t,s)}static fromReadableStream(e,t,s){let r=!1;async function*a(){let t=new tu;for await(let s of ti(e))for(let e of t.decode(s))yield e;for(let e of t.flush())yield e}return new tv(async function*(){if(r)throw new eJ("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");r=!0;let e=!1;try{for await(let t of a())!e&&t&&(yield JSON.parse(t));e=!0}catch(e){if(ez(e))return;throw e}finally{e||t.abort()}},t,s)}[(i=new WeakMap,Symbol.asyncIterator)](){return this.iterator()}tee(){let e=[],t=[],s=this.iterator(),r=r=>({next:()=>{if(0===r.length){let r=s.next();e.push(r),t.push(r)}return r.shift()}});return[new tv(()=>r(e),this.controller,eW(this,i,"f")),new tv(()=>r(t),this.controller,eW(this,i,"f"))]}toReadableStream(){let e,t=this;return ta({async start(){e=t[Symbol.asyncIterator]()},async pull(t){try{let{value:s,done:r}=await e.next();if(r)return t.close();let a=tc(JSON.stringify(s)+"\n");t.enqueue(a)}catch(e){t.error(e)}},async cancel(){await e.return?.()}})}}async function*tw(e,t){if(!e.body){if(t.abort(),void 0!==globalThis.navigator&&"ReactNative"===globalThis.navigator.product)throw new eJ("The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api");throw new eJ("Attempted to iterate over a response with no body")}let s=new tS,r=new tu;for await(let t of t_(ti(e.body)))for(let e of r.decode(t)){let t=s.decode(e);t&&(yield t)}for(let e of r.flush()){let t=s.decode(e);t&&(yield t)}}async function*t_(e){let t=new Uint8Array;for await(let s of e){let e;if(null==s)continue;let r=s instanceof ArrayBuffer?new Uint8Array(s):"string"==typeof s?tc(s):s,a=new Uint8Array(t.length+r.length);for(a.set(t),a.set(r,t.length),t=a;-1!==(e=function(e){for(let t=0;t0&&(yield t)}class tS{constructor(){this.event=null,this.data=[],this.chunks=[]}decode(e){var t;let s;if(e.endsWith("\r")&&(e=e.substring(0,e.length-1)),!e){if(!this.event&&!this.data.length)return null;let e={event:this.event,data:this.data.join("\n"),raw:this.chunks};return this.event=null,this.data=[],this.chunks=[],e}if(this.chunks.push(e),e.startsWith(":"))return null;let[r,a,n]=-1!==(s=(t=e).indexOf(":"))?[t.substring(0,s),":",t.substring(s+1)]:[t,"",""];return n.startsWith(" ")&&(n=n.substring(1)),"event"===r?this.event=n:"data"===r&&this.data.push(n),null}}async function tj(e,t){let{response:s,requestLogID:r,retryOfRequestLogID:a,startTime:n}=t,i=await (async()=>{if(t.options.stream)return(tx(e).debug("response",s.status,s.url,s.headers,s.body),t.options.__streamClass)?t.options.__streamClass.fromSSEResponse(s,t.controller):tv.fromSSEResponse(s,t.controller);if(204===s.status)return null;if(t.options.__binaryResponse)return s;let r=s.headers.get("content-type"),a=r?.split(";")[0]?.trim();if(a?.includes("application/json")||a?.endsWith("+json")){if("0"===s.headers.get("content-length"))return;return tk(await s.json(),s)}return await s.text()})();return tx(e).debug(`[${r}] response parsed`,tb({retryOfRequestLogID:a,url:s.url,status:s.status,body:i,durationMs:Date.now()-n})),i}function tk(e,t){return!e||"object"!=typeof e||Array.isArray(e)?e:Object.defineProperty(e,"_request_id",{value:t.headers.get("request-id"),enumerable:!1})}class tN extends Promise{constructor(e,t,s=tj){super(e=>{e(null)}),this.responsePromise=t,this.parseResponse=s,o.set(this,void 0),eB(this,o,e,"f")}_thenUnwrap(e){return new tN(eW(this,o,"f"),this.responsePromise,async(t,s)=>tk(e(await this.parseResponse(t,s),s),s.response))}asResponse(){return this.responsePromise.then(e=>e.response)}async withResponse(){let[e,t]=await Promise.all([this.parse(),this.asResponse()]);return{data:e,response:t,request_id:t.headers.get("request-id")}}parse(){return this.parsedPromise||(this.parsedPromise=this.responsePromise.then(e=>this.parseResponse(eW(this,o,"f"),e))),this.parsedPromise}then(e,t){return this.parse().then(e,t)}catch(e){return this.parse().catch(e)}finally(e){return this.parse().finally(e)}}o=new WeakMap;class tE{constructor(e,t,s,r){l.set(this,void 0),eB(this,l,e,"f"),this.options=r,this.response=t,this.body=s}hasNextPage(){return!!this.getPaginatedItems().length&&null!=this.nextPageRequestOptions()}async getNextPage(){let e=this.nextPageRequestOptions();if(!e)throw new eJ("No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.");return await eW(this,l,"f").requestAPIList(this.constructor,e)}async *iterPages(){let e=this;for(yield e;e.hasNextPage();)e=await e.getNextPage(),yield e}async *[(l=new WeakMap,Symbol.asyncIterator)](){for await(let e of this.iterPages())for(let t of e.getPaginatedItems())yield t}}class tT extends tN{constructor(e,t,s){super(e,t,async(e,t)=>new s(e,t.response,await tj(e,t),t.options))}async *[Symbol.asyncIterator](){for await(let e of(await this))yield e}}class tC extends tE{constructor(e,t,s,r){super(e,t,s,r),this.data=s.data||[],this.has_more=s.has_more||!1,this.first_id=s.first_id||null,this.last_id=s.last_id||null}getPaginatedItems(){return this.data??[]}hasNextPage(){return!1!==this.has_more&&super.hasNextPage()}nextPageRequestOptions(){if(this.options.query?.before_id){let e=this.first_id;return e?{...this.options,query:{...e7(this.options.query),before_id:e}}:null}let e=this.last_id;return e?{...this.options,query:{...e7(this.options.query),after_id:e}}:null}}class tA extends tE{constructor(e,t,s,r){super(e,t,s,r),this.data=s.data||[],this.next_page=s.next_page||null}getPaginatedItems(){return this.data??[]}nextPageRequestOptions(){let e=this.next_page;return e?{...this.options,query:{...e7(this.options.query),page:e}}:null}}let tP=()=>{if("u"parseInt(e.versions.node.split("."))?" Update to Node 20 LTS or newer, or set `globalThis.File` to `import('node:buffer').File`.":""))}};function tO(e,t,s){return tP(),new File(e,t??"unknown_file",s)}function tI(e,t){let s="object"==typeof e&&null!==e&&("name"in e&&e.name&&String(e.name)||"url"in e&&e.url&&String(e.url)||"filename"in e&&e.filename&&String(e.filename)||"path"in e&&e.path&&String(e.path))||"";return t?s.split(/[\\/]/).pop()||void 0:s}let tR=e=>null!=e&&"object"==typeof e&&"function"==typeof e[Symbol.asyncIterator],tM=async(e,t,s=!0)=>({...e,body:await tL(e.body,t,s)}),t$=new WeakMap,tL=async(e,t,s=!0)=>{if(!await function(e){let t="function"==typeof e?e:e.fetch,s=t$.get(t);if(s)return s;let r=(async()=>{try{let e="Response"in t?t.Response:(await t("data:,")).constructor,s=new FormData;if(s.toString()===await new e(s).text())return!1;return!0}catch{return!0}})();return t$.set(t,r),r}(t))throw TypeError("The provided fetch function does not support file uploads with the current global FormData class.");let r=new FormData;return await Promise.all(Object.entries(e||{}).map(([e,t])=>tU(r,e,t,s))),r},tU=async(e,t,s,r)=>{if(void 0!==s){if(null==s)throw TypeError(`Received null for "${t}"; to pass null in FormData, you must use the string 'null'`);if("string"==typeof s||"number"==typeof s||"boolean"==typeof s)e.append(t,String(s));else if(s instanceof Response){let a={},n=s.headers.get("Content-Type");n&&(a={type:n}),e.append(t,tO([await s.blob()],tI(s,r),a))}else if(tR(s))e.append(t,tO([await new Response(tn(s)).blob()],tI(s,r)));else{let a;if((a=s)instanceof Blob&&"name"in a)e.append(t,tO([s],tI(s,r),{type:s.type}));else if(Array.isArray(s))await Promise.all(s.map(s=>tU(e,t+"[]",s,r)));else if("object"==typeof s)await Promise.all(Object.entries(s).map(([s,a])=>tU(e,`${t}[${s}]`,a,r)));else throw TypeError(`Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${s} instead`)}}},tD=e=>null!=e&&"object"==typeof e&&"number"==typeof e.size&&"string"==typeof e.type&&"function"==typeof e.text&&"function"==typeof e.slice&&"function"==typeof e.arrayBuffer;async function tq(e,t,s){let r,a;if(tP(),e=await e,t||(t=tI(e,!0)),null!=(r=e)&&"object"==typeof r&&"string"==typeof r.name&&"number"==typeof r.lastModified&&tD(r))return e instanceof File&&null==t&&null==s?e:tO([await e.arrayBuffer()],t??e.name,{type:e.type,lastModified:e.lastModified,...s});if(null!=(a=e)&&"object"==typeof a&&"string"==typeof a.url&&"function"==typeof a.blob){let r=await e.blob();return t||(t=new URL(e.url).pathname.split(/[\\/]/).pop()),tO(await tB(r),t,s)}let n=await tB(e);if(!s?.type){let e=n.find(e=>"object"==typeof e&&"type"in e&&e.type);"string"==typeof e&&(s={...s,type:e})}return tO(n,t,s)}async function tB(e){let t=[];if("string"==typeof e||ArrayBuffer.isView(e)||e instanceof ArrayBuffer)t.push(e);else if(tD(e))t.push(e instanceof Blob?e:await e.arrayBuffer());else if(tR(e))for await(let s of e)t.push(...await tB(s));else{let t=e?.constructor?.name;throw Error(`Unexpected data type: ${typeof e}${t?`; constructor: ${t}`:""}${function(e){if("object"!=typeof e||null===e)return"";let t=Object.getOwnPropertyNames(e);return`; props: [${t.map(e=>`"${e}"`).join(", ")}]`}(e)}`)}return t}class tW{constructor(e){this._client=e}}let tH=Symbol.for("brand.privateNullableHeaders"),tz=e=>{let t=new Headers,s=new Set;for(let r of e){let e=new Set;for(let[a,n]of function*(e){let t;if(!e)return;if(tH in e){let{values:t,nulls:s}=e;for(let e of(yield*t.entries(),s))yield[e,null];return}let s=!1;for(let r of(e instanceof Headers?t=e.entries():e8(e)?t=e:(s=!0,t=Object.entries(e??{})),t)){let e=r[0];if("string"!=typeof e)throw TypeError("expected header name to be a string");let t=e8(r[1])?r[1]:[r[1]],a=!1;for(let r of t)void 0!==r&&(s&&!a&&(a=!0,yield[e,null]),yield[e,r])}}(r)){let r=a.toLowerCase();e.has(r)||(t.delete(a),e.add(r)),null===n?(t.delete(a),s.add(r)):(t.append(a,n),s.delete(r))}}return{[tH]:!0,values:t,nulls:s}};function tF(e){return e.replace(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/g,encodeURIComponent)}let tJ=Object.freeze(Object.create(null)),tG=((e=tF)=>function(t,...s){let r;if(1===t.length)return t[0];let a=!1,n=[],i=t.reduce((t,r,i)=>{/[?#]/.test(r)&&(a=!0);let o=s[i],l=(a?encodeURIComponent:e)(""+o);return i!==s.length&&(null==o||"object"==typeof o&&o.toString===Object.getPrototypeOf(Object.getPrototypeOf(o.hasOwnProperty??tJ)??tJ)?.toString)&&(l=o+"",n.push({start:t.length+r.length,length:l.length,error:`Value of type ${Object.prototype.toString.call(o).slice(8,-1)} is not a valid path parameter`})),t+r+(i===s.length?"":l)},""),o=i.split(/[?#]/,1)[0],l=/(?<=^|\/)(?:\.|%2e){1,2}(?=\/|$)/gi;for(;null!==(r=l.exec(o));)n.push({start:r.index,length:r[0].length,error:`Value "${r[0]}" can't be safely passed as a path parameter`});if(n.sort((e,t)=>e.start-t.start),n.length>0){let e=0,t=n.reduce((t,s)=>{let r=" ".repeat(s.start-e),a="^".repeat(s.length);return e=s.start+s.length,t+r+a},"");throw new eJ(`Path parameters result in path with invalid segments: -${n.map(e=>e.error).join("\n")} -${i} -${t}`)}return i})(tF);class tV extends tW{create(e,t){let{betas:s,...r}=e;return this._client.post("/v1/environments?beta=true",{body:r,...t,headers:tz([{"anthropic-beta":[...s??[],"managed-agents-2026-04-01"].toString()},t?.headers])})}retrieve(e,t={},s){let{betas:r}=t??{};return this._client.get(tG`/v1/environments/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}update(e,t,s){let{betas:r,...a}=t;return this._client.post(tG`/v1/environments/${e}?beta=true`,{body:a,...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}list(e={},t){let{betas:s,...r}=e??{};return this._client.getAPIList("/v1/environments?beta=true",tA,{query:r,...t,headers:tz([{"anthropic-beta":[...s??[],"managed-agents-2026-04-01"].toString()},t?.headers])})}delete(e,t={},s){let{betas:r}=t??{};return this._client.delete(tG`/v1/environments/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}archive(e,t={},s){let{betas:r}=t??{};return this._client.post(tG`/v1/environments/${e}/archive?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}}let tK=Symbol("anthropic.sdk.stainlessHelper");function tX(e){return"object"==typeof e&&null!==e&&tK in e}function tY(e,t){let s=new Set;if(e)for(let t of e)tX(t)&&s.add(t[tK]);if(t){for(let e of t)if(tX(e)&&s.add(e[tK]),Array.isArray(e.content))for(let t of e.content)tX(t)&&s.add(t[tK])}return Array.from(s)}function tQ(e,t){let s=tY(e,t);return 0===s.length?{}:{"x-stainless-helper":s.join(", ")}}class tZ extends tW{list(e={},t){let{betas:s,...r}=e??{};return this._client.getAPIList("/v1/files?beta=true",tC,{query:r,...t,headers:tz([{"anthropic-beta":[...s??[],"files-api-2025-04-14"].toString()},t?.headers])})}delete(e,t={},s){let{betas:r}=t??{};return this._client.delete(tG`/v1/files/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"files-api-2025-04-14"].toString()},s?.headers])})}download(e,t={},s){let{betas:r}=t??{};return this._client.get(tG`/v1/files/${e}/content?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"files-api-2025-04-14"].toString(),Accept:"application/binary"},s?.headers]),__binaryResponse:!0})}retrieveMetadata(e,t={},s){let{betas:r}=t??{};return this._client.get(tG`/v1/files/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"files-api-2025-04-14"].toString()},s?.headers])})}upload(e,t){var s;let{betas:r,...a}=e;return this._client.post("/v1/files?beta=true",tM({body:a,...t,headers:tz([{"anthropic-beta":[...r??[],"files-api-2025-04-14"].toString()},tX(s=a.file)?{"x-stainless-helper":s[tK]}:{},t?.headers])},this._client))}}class t0 extends tW{retrieve(e,t={},s){let{betas:r}=t??{};return this._client.get(tG`/v1/models/${e}?beta=true`,{...s,headers:tz([{...r?.toString()!=null?{"anthropic-beta":r?.toString()}:void 0},s?.headers])})}list(e={},t){let{betas:s,...r}=e??{};return this._client.getAPIList("/v1/models?beta=true",tC,{query:r,...t,headers:tz([{...s?.toString()!=null?{"anthropic-beta":s?.toString()}:void 0},t?.headers])})}}class t1 extends tW{create(e,t){let{betas:s,...r}=e;return this._client.post("/v1/user_profiles?beta=true",{body:r,...t,headers:tz([{"anthropic-beta":[...s??[],"user-profiles-2026-03-24"].toString()},t?.headers])})}retrieve(e,t={},s){let{betas:r}=t??{};return this._client.get(tG`/v1/user_profiles/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"user-profiles-2026-03-24"].toString()},s?.headers])})}update(e,t,s){let{betas:r,...a}=t;return this._client.post(tG`/v1/user_profiles/${e}?beta=true`,{body:a,...s,headers:tz([{"anthropic-beta":[...r??[],"user-profiles-2026-03-24"].toString()},s?.headers])})}list(e={},t){let{betas:s,...r}=e??{};return this._client.getAPIList("/v1/user_profiles?beta=true",tA,{query:r,...t,headers:tz([{"anthropic-beta":[...s??[],"user-profiles-2026-03-24"].toString()},t?.headers])})}createEnrollmentURL(e,t={},s){let{betas:r}=t??{};return this._client.post(tG`/v1/user_profiles/${e}/enrollment_url?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"user-profiles-2026-03-24"].toString()},s?.headers])})}}class t2 extends tW{list(e,t={},s){let{betas:r,...a}=t??{};return this._client.getAPIList(tG`/v1/agents/${e}/versions?beta=true`,tA,{query:a,...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}}class t4 extends tW{constructor(){super(...arguments),this.versions=new t2(this._client)}create(e,t){let{betas:s,...r}=e;return this._client.post("/v1/agents?beta=true",{body:r,...t,headers:tz([{"anthropic-beta":[...s??[],"managed-agents-2026-04-01"].toString()},t?.headers])})}retrieve(e,t={},s){let{betas:r,...a}=t??{};return this._client.get(tG`/v1/agents/${e}?beta=true`,{query:a,...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}update(e,t,s){let{betas:r,...a}=t;return this._client.post(tG`/v1/agents/${e}?beta=true`,{body:a,...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}list(e={},t){let{betas:s,...r}=e??{};return this._client.getAPIList("/v1/agents?beta=true",tA,{query:r,...t,headers:tz([{"anthropic-beta":[...s??[],"managed-agents-2026-04-01"].toString()},t?.headers])})}archive(e,t={},s){let{betas:r}=t??{};return this._client.post(tG`/v1/agents/${e}/archive?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}}t4.Versions=t2;class t6 extends tW{create(e,t,s){let{view:r,betas:a,...n}=t;return this._client.post(tG`/v1/memory_stores/${e}/memories?beta=true`,{query:{view:r},body:n,...s,headers:tz([{"anthropic-beta":[...a??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}retrieve(e,t,s){let{memory_store_id:r,betas:a,...n}=t;return this._client.get(tG`/v1/memory_stores/${r}/memories/${e}?beta=true`,{query:n,...s,headers:tz([{"anthropic-beta":[...a??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}update(e,t,s){let{memory_store_id:r,view:a,betas:n,...i}=t;return this._client.post(tG`/v1/memory_stores/${r}/memories/${e}?beta=true`,{query:{view:a},body:i,...s,headers:tz([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}list(e,t={},s){let{betas:r,...a}=t??{};return this._client.getAPIList(tG`/v1/memory_stores/${e}/memories?beta=true`,tA,{query:a,...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}delete(e,t,s){let{memory_store_id:r,expected_content_sha256:a,betas:n}=t;return this._client.delete(tG`/v1/memory_stores/${r}/memories/${e}?beta=true`,{query:{expected_content_sha256:a},...s,headers:tz([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}}class t3 extends tW{retrieve(e,t,s){let{memory_store_id:r,betas:a,...n}=t;return this._client.get(tG`/v1/memory_stores/${r}/memory_versions/${e}?beta=true`,{query:n,...s,headers:tz([{"anthropic-beta":[...a??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}list(e,t={},s){let{betas:r,...a}=t??{};return this._client.getAPIList(tG`/v1/memory_stores/${e}/memory_versions?beta=true`,tA,{query:a,...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}redact(e,t,s){let{memory_store_id:r,betas:a}=t;return this._client.post(tG`/v1/memory_stores/${r}/memory_versions/${e}/redact?beta=true`,{...s,headers:tz([{"anthropic-beta":[...a??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}}class t5 extends tW{constructor(){super(...arguments),this.memories=new t6(this._client),this.memoryVersions=new t3(this._client)}create(e,t){let{betas:s,...r}=e;return this._client.post("/v1/memory_stores?beta=true",{body:r,...t,headers:tz([{"anthropic-beta":[...s??[],"managed-agents-2026-04-01"].toString()},t?.headers])})}retrieve(e,t={},s){let{betas:r}=t??{};return this._client.get(tG`/v1/memory_stores/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}update(e,t,s){let{betas:r,...a}=t;return this._client.post(tG`/v1/memory_stores/${e}?beta=true`,{body:a,...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}list(e={},t){let{betas:s,...r}=e??{};return this._client.getAPIList("/v1/memory_stores?beta=true",tA,{query:r,...t,headers:tz([{"anthropic-beta":[...s??[],"managed-agents-2026-04-01"].toString()},t?.headers])})}delete(e,t={},s){let{betas:r}=t??{};return this._client.delete(tG`/v1/memory_stores/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}archive(e,t={},s){let{betas:r}=t??{};return this._client.post(tG`/v1/memory_stores/${e}/archive?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}}t5.Memories=t6,t5.MemoryVersions=t3;class t8{constructor(e,t){this.iterator=e,this.controller=t}async *decoder(){let e=new tu;for await(let t of this.iterator)for(let s of e.decode(t))yield JSON.parse(s);for(let t of e.flush())yield JSON.parse(t)}[Symbol.asyncIterator](){return this.decoder()}static fromResponse(e,t){if(!e.body){if(t.abort(),void 0!==globalThis.navigator&&"ReactNative"===globalThis.navigator.product)throw new eJ("The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api");throw new eJ("Attempted to iterate over a response with no body")}return new t8(ti(e.body),t)}}class t7 extends tW{create(e,t){let{betas:s,...r}=e;return this._client.post("/v1/messages/batches?beta=true",{body:r,...t,headers:tz([{"anthropic-beta":[...s??[],"message-batches-2024-09-24"].toString()},t?.headers])})}retrieve(e,t={},s){let{betas:r}=t??{};return this._client.get(tG`/v1/messages/batches/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"message-batches-2024-09-24"].toString()},s?.headers])})}list(e={},t){let{betas:s,...r}=e??{};return this._client.getAPIList("/v1/messages/batches?beta=true",tC,{query:r,...t,headers:tz([{"anthropic-beta":[...s??[],"message-batches-2024-09-24"].toString()},t?.headers])})}delete(e,t={},s){let{betas:r}=t??{};return this._client.delete(tG`/v1/messages/batches/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"message-batches-2024-09-24"].toString()},s?.headers])})}cancel(e,t={},s){let{betas:r}=t??{};return this._client.post(tG`/v1/messages/batches/${e}/cancel?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"message-batches-2024-09-24"].toString()},s?.headers])})}async results(e,t={},s){let r=await this.retrieve(e);if(!r.results_url)throw new eJ(`No batch \`results_url\`; Has it finished processing? ${r.processing_status} - ${r.id}`);let{betas:a}=t??{};return this._client.get(r.results_url,{...s,headers:tz([{"anthropic-beta":[...a??[],"message-batches-2024-09-24"].toString(),Accept:"application/binary"},s?.headers]),stream:!0,__binaryResponse:!0})._thenUnwrap((e,t)=>t8.fromResponse(t.response,t.controller))}}let t9={"claude-opus-4-20250514":8192,"claude-opus-4-0":8192,"claude-4-opus-20250514":8192,"anthropic.claude-opus-4-20250514-v1:0":8192,"claude-opus-4@20250514":8192,"claude-opus-4-1-20250805":8192,"anthropic.claude-opus-4-1-20250805-v1:0":8192,"claude-opus-4-1@20250805":8192};function se(e){return e?.output_format??e?.output_config?.format}function st(e,t,s){let r=se(t);return t&&"parse"in(r??{})?ss(e,t,s):{...e,content:e.content.map(e=>"text"===e.type?Object.defineProperty(Object.defineProperty({...e},"parsed_output",{value:null,enumerable:!1}),"parsed",{get:()=>(s.logger.warn("The `parsed` property on `text` blocks is deprecated, please use `parsed_output` instead."),null),enumerable:!1}):e),parsed_output:null}}function ss(e,t,s){let r=null,a=e.content.map(e=>{if("text"===e.type){let a=function(e,t){let s=se(e);if(s?.type!=="json_schema")return null;try{if("parse"in s)return s.parse(t);return JSON.parse(t)}catch(e){throw new eJ(`Failed to parse structured output: ${e}`)}}(t,e.text);return null===r&&(r=a),Object.defineProperty(Object.defineProperty({...e},"parsed_output",{value:a,enumerable:!1}),"parsed",{get:()=>(s.logger.warn("The `parsed` property on `text` blocks is deprecated, please use `parsed_output` instead."),a),enumerable:!1})}return e});return{...e,content:a,parsed_output:r}}let sr=e=>{if(0===e.length)return e;let t=e[e.length-1];switch(t.type){case"separator":return sr(e=e.slice(0,e.length-1));case"number":let s=t.value[t.value.length-1];if("."===s||"-"===s)return sr(e=e.slice(0,e.length-1));case"string":let r=e[e.length-2];if(r?.type==="delimiter"||r?.type==="brace"&&"{"===r.value)return sr(e=e.slice(0,e.length-1));break;case"delimiter":return sr(e=e.slice(0,e.length-1))}return e},sa=e=>{var t;let s,r;return JSON.parse((t=sr((e=>{let t=0,s=[];for(;t{"brace"===e.type&&("{"===e.value?s.push("}"):s.splice(s.lastIndexOf("}"),1)),"paren"===e.type&&("["===e.value?s.push("]"):s.splice(s.lastIndexOf("]"),1))}),s.length>0&&s.reverse().map(e=>{"}"===e?t.push({type:"brace",value:"}"}):"]"===e&&t.push({type:"paren",value:"]"})}),r="",t.map(e=>{"string"===e.type?r+='"'+e.value+'"':r+=e.value}),r))},sn="__json_buf";function si(e){return"tool_use"===e.type||"server_tool_use"===e.type||"mcp_tool_use"===e.type}class so{constructor(e,t){c.add(this),this.messages=[],this.receivedMessages=[],d.set(this,void 0),u.set(this,null),this.controller=new AbortController,h.set(this,void 0),p.set(this,()=>{}),m.set(this,()=>{}),g.set(this,void 0),f.set(this,()=>{}),y.set(this,()=>{}),x.set(this,{}),b.set(this,!1),v.set(this,!1),w.set(this,!1),_.set(this,!1),S.set(this,void 0),j.set(this,void 0),k.set(this,void 0),T.set(this,e=>{if(eB(this,v,!0,"f"),ez(e)&&(e=new eV),e instanceof eV)return eB(this,w,!0,"f"),this._emit("abort",e);if(e instanceof eJ)return this._emit("error",e);if(e instanceof Error){let t=new eJ(e.message);return t.cause=e,this._emit("error",t)}return this._emit("error",new eJ(String(e)))}),eB(this,h,new Promise((e,t)=>{eB(this,p,e,"f"),eB(this,m,t,"f")}),"f"),eB(this,g,new Promise((e,t)=>{eB(this,f,e,"f"),eB(this,y,t,"f")}),"f"),eW(this,h,"f").catch(()=>{}),eW(this,g,"f").catch(()=>{}),eB(this,u,e,"f"),eB(this,k,t?.logger??console,"f")}get response(){return eW(this,S,"f")}get request_id(){return eW(this,j,"f")}async withResponse(){eB(this,_,!0,"f");let e=await eW(this,h,"f");if(!e)throw Error("Could not resolve a `Response` object");return{data:this,response:e,request_id:e.headers.get("request-id")}}static fromReadableStream(e){let t=new so(null);return t._run(()=>t._fromReadableStream(e)),t}static createMessage(e,t,s,{logger:r}={}){let a=new so(t,{logger:r});for(let e of t.messages)a._addMessageParam(e);return eB(a,u,{...t,stream:!0},"f"),a._run(()=>a._createMessage(e,{...t,stream:!0},{...s,headers:{...s?.headers,"X-Stainless-Helper-Method":"stream"}})),a}_run(e){e().then(()=>{this._emitFinal(),this._emit("end")},eW(this,T,"f"))}_addMessageParam(e){this.messages.push(e)}_addMessage(e,t=!0){this.receivedMessages.push(e),t&&this._emit("message",e)}async _createMessage(e,t,s){let r,a=s?.signal;a&&(a.aborted&&this.controller.abort(),r=this.controller.abort.bind(this.controller),a.addEventListener("abort",r));try{eW(this,c,"m",C).call(this);let{response:r,data:a}=await e.create({...t,stream:!0},{...s,signal:this.controller.signal}).withResponse();for await(let e of(this._connected(r),a))eW(this,c,"m",A).call(this,e);if(a.controller.signal?.aborted)throw new eV;eW(this,c,"m",P).call(this)}finally{a&&r&&a.removeEventListener("abort",r)}}_connected(e){this.ended||(eB(this,S,e,"f"),eB(this,j,e?.headers.get("request-id"),"f"),eW(this,p,"f").call(this,e),this._emit("connect"))}get ended(){return eW(this,b,"f")}get errored(){return eW(this,v,"f")}get aborted(){return eW(this,w,"f")}abort(){this.controller.abort()}on(e,t){return(eW(this,x,"f")[e]||(eW(this,x,"f")[e]=[])).push({listener:t}),this}off(e,t){let s=eW(this,x,"f")[e];if(!s)return this;let r=s.findIndex(e=>e.listener===t);return r>=0&&s.splice(r,1),this}once(e,t){return(eW(this,x,"f")[e]||(eW(this,x,"f")[e]=[])).push({listener:t,once:!0}),this}emitted(e){return new Promise((t,s)=>{eB(this,_,!0,"f"),"error"!==e&&this.once("error",s),this.once(e,t)})}async done(){eB(this,_,!0,"f"),await eW(this,g,"f")}get currentMessage(){return eW(this,d,"f")}async finalMessage(){return await this.done(),eW(this,c,"m",N).call(this)}async finalText(){return await this.done(),eW(this,c,"m",E).call(this)}_emit(e,...t){if(eW(this,b,"f"))return;"end"===e&&(eB(this,b,!0,"f"),eW(this,f,"f").call(this));let s=eW(this,x,"f")[e];if(s&&(eW(this,x,"f")[e]=s.filter(e=>!e.once),s.forEach(({listener:e})=>e(...t))),"abort"===e){let e=t[0];eW(this,_,"f")||s?.length||Promise.reject(e),eW(this,m,"f").call(this,e),eW(this,y,"f").call(this,e),this._emit("end");return}if("error"===e){let e=t[0];eW(this,_,"f")||s?.length||Promise.reject(e),eW(this,m,"f").call(this,e),eW(this,y,"f").call(this,e),this._emit("end")}}_emitFinal(){this.receivedMessages.at(-1)&&this._emit("finalMessage",eW(this,c,"m",N).call(this))}async _fromReadableStream(e,t){let s,r=t?.signal;r&&(r.aborted&&this.controller.abort(),s=this.controller.abort.bind(this.controller),r.addEventListener("abort",s));try{eW(this,c,"m",C).call(this),this._connected(null);let t=tv.fromReadableStream(e,this.controller);for await(let e of t)eW(this,c,"m",A).call(this,e);if(t.controller.signal?.aborted)throw new eV;eW(this,c,"m",P).call(this)}finally{r&&s&&r.removeEventListener("abort",s)}}[(d=new WeakMap,u=new WeakMap,h=new WeakMap,p=new WeakMap,m=new WeakMap,g=new WeakMap,f=new WeakMap,y=new WeakMap,x=new WeakMap,b=new WeakMap,v=new WeakMap,w=new WeakMap,_=new WeakMap,S=new WeakMap,j=new WeakMap,k=new WeakMap,T=new WeakMap,c=new WeakSet,N=function(){if(0===this.receivedMessages.length)throw new eJ("stream ended without producing a Message with role=assistant");return this.receivedMessages.at(-1)},E=function(){if(0===this.receivedMessages.length)throw new eJ("stream ended without producing a Message with role=assistant");let e=this.receivedMessages.at(-1).content.filter(e=>"text"===e.type).map(e=>e.text);if(0===e.length)throw new eJ("stream ended without producing a content block with type=text");return e.join(" ")},C=function(){this.ended||eB(this,d,void 0,"f")},A=function(e){if(this.ended)return;let t=eW(this,c,"m",O).call(this,e);switch(this._emit("streamEvent",e,t),e.type){case"content_block_delta":{let s=t.content.at(-1);switch(e.delta.type){case"text_delta":"text"===s.type&&this._emit("text",e.delta.text,s.text||"");break;case"citations_delta":"text"===s.type&&this._emit("citation",e.delta.citation,s.citations??[]);break;case"input_json_delta":si(s)&&s.input&&this._emit("inputJson",e.delta.partial_json,s.input);break;case"thinking_delta":"thinking"===s.type&&this._emit("thinking",e.delta.thinking,s.thinking);break;case"signature_delta":"thinking"===s.type&&this._emit("signature",s.signature);break;case"compaction_delta":"compaction"===s.type&&s.content&&this._emit("compaction",s.content);break;default:sl(e.delta)}break}case"message_stop":this._addMessageParam(t),this._addMessage(st(t,eW(this,u,"f"),{logger:eW(this,k,"f")}),!0);break;case"content_block_stop":this._emit("contentBlock",t.content.at(-1));break;case"message_start":eB(this,d,t,"f")}},P=function(){if(this.ended)throw new eJ("stream has ended, this shouldn't happen");let e=eW(this,d,"f");if(!e)throw new eJ("request ended without sending any chunks");return eB(this,d,void 0,"f"),st(e,eW(this,u,"f"),{logger:eW(this,k,"f")})},O=function(e){let t=eW(this,d,"f");if("message_start"===e.type){if(t)throw new eJ(`Unexpected event order, got ${e.type} before receiving "message_stop"`);return e.message}if(!t)throw new eJ(`Unexpected event order, got ${e.type} before "message_start"`);switch(e.type){case"message_stop":case"content_block_stop":return t;case"message_delta":return t.container=e.delta.container,t.stop_reason=e.delta.stop_reason,t.stop_sequence=e.delta.stop_sequence,t.usage.output_tokens=e.usage.output_tokens,t.context_management=e.context_management,null!=e.usage.input_tokens&&(t.usage.input_tokens=e.usage.input_tokens),null!=e.usage.cache_creation_input_tokens&&(t.usage.cache_creation_input_tokens=e.usage.cache_creation_input_tokens),null!=e.usage.cache_read_input_tokens&&(t.usage.cache_read_input_tokens=e.usage.cache_read_input_tokens),null!=e.usage.server_tool_use&&(t.usage.server_tool_use=e.usage.server_tool_use),null!=e.usage.iterations&&(t.usage.iterations=e.usage.iterations),t;case"content_block_start":return t.content.push(e.content_block),t;case"content_block_delta":{let s=t.content.at(e.index);switch(e.delta.type){case"text_delta":s?.type==="text"&&(t.content[e.index]={...s,text:(s.text||"")+e.delta.text});break;case"citations_delta":s?.type==="text"&&(t.content[e.index]={...s,citations:[...s.citations??[],e.delta.citation]});break;case"input_json_delta":if(s&&si(s)){let r=s[sn]||"";r+=e.delta.partial_json;let a={...s};if(Object.defineProperty(a,sn,{value:r,enumerable:!1,writable:!0}),r)try{a.input=sa(r)}catch(t){let e=new eJ(`Unable to parse tool parameter JSON from model. Please retry your request or adjust your prompt. Error: ${t}. JSON: ${r}`);eW(this,T,"f").call(this,e)}t.content[e.index]=a}break;case"thinking_delta":s?.type==="thinking"&&(t.content[e.index]={...s,thinking:s.thinking+e.delta.thinking});break;case"signature_delta":s?.type==="thinking"&&(t.content[e.index]={...s,signature:e.delta.signature});break;case"compaction_delta":s?.type==="compaction"&&(t.content[e.index]={...s,content:(s.content||"")+e.delta.content});break;default:sl(e.delta)}return t}}},Symbol.asyncIterator)](){let e=[],t=[],s=!1;return this.on("streamEvent",s=>{let r=t.shift();r?r.resolve(s):e.push(s)}),this.on("end",()=>{for(let e of(s=!0,t))e.resolve(void 0);t.length=0}),this.on("abort",e=>{for(let r of(s=!0,t))r.reject(e);t.length=0}),this.on("error",e=>{for(let r of(s=!0,t))r.reject(e);t.length=0}),{next:async()=>e.length?{value:e.shift(),done:!1}:s?{value:void 0,done:!0}:new Promise((e,s)=>t.push({resolve:e,reject:s})).then(e=>e?{value:e,done:!1}:{value:void 0,done:!0}),return:async()=>(this.abort(),{value:void 0,done:!0})}}toReadableStream(){return new tv(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}}function sl(e){}class sc extends Error{constructor(e){super("string"==typeof e?e:e.map(e=>"text"===e.type?e.text:`[${e.type}]`).join(" ")),this.name="ToolError",this.content=e}}let sd=`You have been working on the task described above but have not yet completed it. Write a continuation summary that will allow you (or another instance of yourself) to resume work efficiently in a future context window where the conversation history will be replaced with this summary. Your summary should be structured, concise, and actionable. Include: -1. Task Overview -The user's core request and success criteria -Any clarifications or constraints they specified -2. Current State -What has been completed so far -Files created, modified, or analyzed (with paths if relevant) -Key outputs or artifacts produced -3. Important Discoveries -Technical constraints or requirements uncovered -Decisions made and their rationale -Errors encountered and how they were resolved -What approaches were tried that didn't work (and why) -4. Next Steps -Specific actions needed to complete the task -Any blockers or open questions to resolve -Priority order if multiple steps remain -5. Context to Preserve -User preferences or style requirements -Domain-specific details that aren't obvious -Any promises made to the user -Be concise but complete—err on the side of including information that would prevent duplicate work or repeated mistakes. Write in a way that enables immediate resumption of the task. -Wrap your summary in tags.`;function su(){let e,t;return{promise:new Promise((s,r)=>{e=s,t=r}),resolve:e,reject:t}}class sh{constructor(e,t,s){I.add(this),this.client=e,R.set(this,!1),M.set(this,!1),$.set(this,void 0),L.set(this,void 0),U.set(this,void 0),D.set(this,void 0),q.set(this,void 0),B.set(this,0),eB(this,$,{params:{...t,messages:structuredClone(t.messages)}},"f");const r=["BetaToolRunner",...tY(t.tools,t.messages)].join(", ");eB(this,L,{...s,headers:tz([{"x-stainless-helper":r},s?.headers])},"f"),eB(this,q,su(),"f"),t.compactionControl?.enabled&&console.warn('Anthropic: The `compactionControl` parameter is deprecated and will be removed in a future version. Use server-side compaction instead by passing `edits: [{ type: "compact_20260112" }]` in the params passed to `toolRunner()`. See https://platform.claude.com/docs/en/build-with-claude/compaction')}async *[(R=new WeakMap,M=new WeakMap,$=new WeakMap,L=new WeakMap,U=new WeakMap,D=new WeakMap,q=new WeakMap,B=new WeakMap,I=new WeakSet,W=async function(){let e=eW(this,$,"f").params.compactionControl;if(!e||!e.enabled)return!1;let t=0;if(void 0!==eW(this,U,"f"))try{let e=await eW(this,U,"f");t=e.usage.input_tokens+(e.usage.cache_creation_input_tokens??0)+(e.usage.cache_read_input_tokens??0)+e.usage.output_tokens}catch{return!1}if(t<(e.contextTokenThreshold??1e5))return!1;let s=e.model??eW(this,$,"f").params.model,r=e.summaryPrompt??sd,a=eW(this,$,"f").params.messages;if("assistant"===a[a.length-1].role){let e=a[a.length-1];if(Array.isArray(e.content)){let t=e.content.filter(e=>"tool_use"!==e.type);0===t.length?a.pop():e.content=t}}let n=await this.client.beta.messages.create({model:s,messages:[...a,{role:"user",content:[{type:"text",text:r}]}],max_tokens:eW(this,$,"f").params.max_tokens},{signal:eW(this,L,"f").signal,headers:tz([eW(this,L,"f").headers,{"x-stainless-helper":"compaction"}])});if(n.content[0]?.type!=="text")throw new eJ("Expected text response for compaction");return eW(this,$,"f").params.messages=[{role:"user",content:n.content}],!0},Symbol.asyncIterator)](){var e;if(eW(this,R,"f"))throw new eJ("Cannot iterate over a consumed stream");eB(this,R,!0,"f"),eB(this,M,!0,"f"),eB(this,D,void 0,"f");try{for(;;){let t;try{if(eW(this,$,"f").params.max_iterations&&eW(this,B,"f")>=eW(this,$,"f").params.max_iterations)break;eB(this,M,!1,"f"),eB(this,D,void 0,"f"),eB(this,B,(e=eW(this,B,"f"),++e),"f"),eB(this,U,void 0,"f");let{max_iterations:s,compactionControl:r,...a}=eW(this,$,"f").params;if(a.stream?(t=this.client.beta.messages.stream({...a},eW(this,L,"f")),eB(this,U,t.finalMessage(),"f"),eW(this,U,"f").catch(()=>{}),yield t):(eB(this,U,this.client.beta.messages.create({...a,stream:!1},eW(this,L,"f")),"f"),yield eW(this,U,"f")),!await eW(this,I,"m",W).call(this)){if(!eW(this,M,"f")){let{role:e,content:t}=await eW(this,U,"f");eW(this,$,"f").params.messages.push({role:e,content:t})}let e=await eW(this,I,"m",H).call(this,eW(this,$,"f").params.messages.at(-1));if(e)eW(this,$,"f").params.messages.push(e);else if(!eW(this,M,"f"))break}}finally{t&&t.abort()}}if(!eW(this,U,"f"))throw new eJ("ToolRunner concluded without a message from the server");eW(this,q,"f").resolve(await eW(this,U,"f"))}catch(e){throw eB(this,R,!1,"f"),eW(this,q,"f").promise.catch(()=>{}),eW(this,q,"f").reject(e),eB(this,q,su(),"f"),e}}setMessagesParams(e){"function"==typeof e?eW(this,$,"f").params=e(eW(this,$,"f").params):eW(this,$,"f").params=e,eB(this,M,!0,"f"),eB(this,D,void 0,"f")}setRequestOptions(e){"function"==typeof e?eB(this,L,e(eW(this,L,"f")),"f"):eB(this,L,{...eW(this,L,"f"),...e},"f")}async generateToolResponse(e=eW(this,L,"f").signal){let t=await eW(this,U,"f")??this.params.messages.at(-1);return t?eW(this,I,"m",H).call(this,t,e):null}done(){return eW(this,q,"f").promise}async runUntilDone(){if(!eW(this,R,"f"))for await(let e of this);return this.done()}get params(){return eW(this,$,"f").params}pushMessages(...e){this.setMessagesParams(t=>({...t,messages:[...t.messages,...e]}))}then(e,t){return this.runUntilDone().then(e,t)}}async function sp(e,t=e.messages.at(-1),s){if(!t||"assistant"!==t.role||!t.content||"string"==typeof t.content)return null;let r=t.content.filter(e=>"tool_use"===e.type);return 0===r.length?null:{role:"user",content:await Promise.all(r.map(async t=>{let r=e.tools.find(e=>("name"in e?e.name:e.mcp_server_name)===t.name);if(!r||!("run"in r))return{type:"tool_result",tool_use_id:t.id,content:`Error: Tool '${t.name}' not found`,is_error:!0};try{let e=t.input;"parse"in r&&r.parse&&(e=r.parse(e));let a=await r.run(e,{toolUseBlock:t,signal:s?.signal});return{type:"tool_result",tool_use_id:t.id,content:a}}catch(e){return{type:"tool_result",tool_use_id:t.id,content:e instanceof sc?e.content:`Error: ${e instanceof Error?e.message:String(e)}`,is_error:!0}}}))}}H=async function(e,t=eW(this,L,"f").signal){return void 0!==eW(this,D,"f")||eB(this,D,sp(eW(this,$,"f").params,e,{...eW(this,L,"f"),signal:t}),"f"),eW(this,D,"f")};let sm={"claude-1.3":"November 6th, 2024","claude-1.3-100k":"November 6th, 2024","claude-instant-1.1":"November 6th, 2024","claude-instant-1.1-100k":"November 6th, 2024","claude-instant-1.2":"November 6th, 2024","claude-3-sonnet-20240229":"July 21st, 2025","claude-3-opus-20240229":"January 5th, 2026","claude-2.1":"July 21st, 2025","claude-2.0":"July 21st, 2025","claude-3-7-sonnet-latest":"February 19th, 2026","claude-3-7-sonnet-20250219":"February 19th, 2026"},sg=["claude-mythos-preview","claude-opus-4-6"];class sf extends tW{constructor(){super(...arguments),this.batches=new t7(this._client)}create(e,t){let s=sy(e),{betas:r,...a}=s;a.model in sm&&console.warn(`The model '${a.model}' is deprecated and will reach end-of-life on ${sm[a.model]} -Please migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`),sg.includes(a.model)&&a.thinking&&"enabled"===a.thinking.type&&console.warn(`Using Claude with ${a.model} and 'thinking.type=enabled' is deprecated. Use 'thinking.type=adaptive' instead which results in better model performance in our testing: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking`);let n=this._client._options.timeout;if(!a.stream&&null==n){let e=t9[a.model]??void 0;n=this._client.calculateNonstreamingTimeout(a.max_tokens,e)}let i=tQ(a.tools,a.messages);return this._client.post("/v1/messages?beta=true",{body:a,timeout:n??6e5,...t,headers:tz([{...r?.toString()!=null?{"anthropic-beta":r?.toString()}:void 0},i,t?.headers]),stream:s.stream??!1})}parse(e,t){return t={...t,headers:tz([{"anthropic-beta":[...e.betas??[],"structured-outputs-2025-12-15"].toString()},t?.headers])},this.create(e,t).then(t=>ss(t,e,{logger:this._client.logger??console}))}stream(e,t){return so.createMessage(this,e,t)}countTokens(e,t){let{betas:s,...r}=sy(e);return this._client.post("/v1/messages/count_tokens?beta=true",{body:r,...t,headers:tz([{"anthropic-beta":[...s??[],"token-counting-2024-11-01"].toString()},t?.headers])})}toolRunner(e,t){return new sh(this._client,e,t)}}function sy(e){if(!e.output_format)return e;if(e.output_config?.format)throw new eJ("Both output_format and output_config.format were provided. Please use only output_config.format (output_format is deprecated).");let{output_format:t,...s}=e;return{...s,output_config:{...e.output_config,format:t}}}sf.Batches=t7,sf.BetaToolRunner=sh,sf.ToolError=sc;class sx extends tW{list(e,t={},s){let{betas:r,...a}=t??{};return this._client.getAPIList(tG`/v1/sessions/${e}/events?beta=true`,tA,{query:a,...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}send(e,t,s){let{betas:r,...a}=t;return this._client.post(tG`/v1/sessions/${e}/events?beta=true`,{body:a,...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}stream(e,t={},s){let{betas:r}=t??{};return this._client.get(tG`/v1/sessions/${e}/events/stream?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers]),stream:!0})}}class sb extends tW{retrieve(e,t,s){let{session_id:r,betas:a}=t;return this._client.get(tG`/v1/sessions/${r}/resources/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...a??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}update(e,t,s){let{session_id:r,betas:a,...n}=t;return this._client.post(tG`/v1/sessions/${r}/resources/${e}?beta=true`,{body:n,...s,headers:tz([{"anthropic-beta":[...a??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}list(e,t={},s){let{betas:r,...a}=t??{};return this._client.getAPIList(tG`/v1/sessions/${e}/resources?beta=true`,tA,{query:a,...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}delete(e,t,s){let{session_id:r,betas:a}=t;return this._client.delete(tG`/v1/sessions/${r}/resources/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...a??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}add(e,t,s){let{betas:r,...a}=t;return this._client.post(tG`/v1/sessions/${e}/resources?beta=true`,{body:a,...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}}class sv extends tW{constructor(){super(...arguments),this.events=new sx(this._client),this.resources=new sb(this._client)}create(e,t){let{betas:s,...r}=e;return this._client.post("/v1/sessions?beta=true",{body:r,...t,headers:tz([{"anthropic-beta":[...s??[],"managed-agents-2026-04-01"].toString()},t?.headers])})}retrieve(e,t={},s){let{betas:r}=t??{};return this._client.get(tG`/v1/sessions/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}update(e,t,s){let{betas:r,...a}=t;return this._client.post(tG`/v1/sessions/${e}?beta=true`,{body:a,...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}list(e={},t){let{betas:s,...r}=e??{};return this._client.getAPIList("/v1/sessions?beta=true",tA,{query:r,...t,headers:tz([{"anthropic-beta":[...s??[],"managed-agents-2026-04-01"].toString()},t?.headers])})}delete(e,t={},s){let{betas:r}=t??{};return this._client.delete(tG`/v1/sessions/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}archive(e,t={},s){let{betas:r}=t??{};return this._client.post(tG`/v1/sessions/${e}/archive?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}}sv.Events=sx,sv.Resources=sb;class sw extends tW{create(e,t={},s){let{betas:r,...a}=t??{};return this._client.post(tG`/v1/skills/${e}/versions?beta=true`,tM({body:a,...s,headers:tz([{"anthropic-beta":[...r??[],"skills-2025-10-02"].toString()},s?.headers])},this._client))}retrieve(e,t,s){let{skill_id:r,betas:a}=t;return this._client.get(tG`/v1/skills/${r}/versions/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...a??[],"skills-2025-10-02"].toString()},s?.headers])})}list(e,t={},s){let{betas:r,...a}=t??{};return this._client.getAPIList(tG`/v1/skills/${e}/versions?beta=true`,tA,{query:a,...s,headers:tz([{"anthropic-beta":[...r??[],"skills-2025-10-02"].toString()},s?.headers])})}delete(e,t,s){let{skill_id:r,betas:a}=t;return this._client.delete(tG`/v1/skills/${r}/versions/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...a??[],"skills-2025-10-02"].toString()},s?.headers])})}}class s_ extends tW{constructor(){super(...arguments),this.versions=new sw(this._client)}create(e={},t){let{betas:s,...r}=e??{};return this._client.post("/v1/skills?beta=true",tM({body:r,...t,headers:tz([{"anthropic-beta":[...s??[],"skills-2025-10-02"].toString()},t?.headers])},this._client,!1))}retrieve(e,t={},s){let{betas:r}=t??{};return this._client.get(tG`/v1/skills/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"skills-2025-10-02"].toString()},s?.headers])})}list(e={},t){let{betas:s,...r}=e??{};return this._client.getAPIList("/v1/skills?beta=true",tA,{query:r,...t,headers:tz([{"anthropic-beta":[...s??[],"skills-2025-10-02"].toString()},t?.headers])})}delete(e,t={},s){let{betas:r}=t??{};return this._client.delete(tG`/v1/skills/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"skills-2025-10-02"].toString()},s?.headers])})}}s_.Versions=sw;class sS extends tW{create(e,t,s){let{betas:r,...a}=t;return this._client.post(tG`/v1/vaults/${e}/credentials?beta=true`,{body:a,...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}retrieve(e,t,s){let{vault_id:r,betas:a}=t;return this._client.get(tG`/v1/vaults/${r}/credentials/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...a??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}update(e,t,s){let{vault_id:r,betas:a,...n}=t;return this._client.post(tG`/v1/vaults/${r}/credentials/${e}?beta=true`,{body:n,...s,headers:tz([{"anthropic-beta":[...a??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}list(e,t={},s){let{betas:r,...a}=t??{};return this._client.getAPIList(tG`/v1/vaults/${e}/credentials?beta=true`,tA,{query:a,...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}delete(e,t,s){let{vault_id:r,betas:a}=t;return this._client.delete(tG`/v1/vaults/${r}/credentials/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...a??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}archive(e,t,s){let{vault_id:r,betas:a}=t;return this._client.post(tG`/v1/vaults/${r}/credentials/${e}/archive?beta=true`,{...s,headers:tz([{"anthropic-beta":[...a??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}}class sj extends tW{constructor(){super(...arguments),this.credentials=new sS(this._client)}create(e,t){let{betas:s,...r}=e;return this._client.post("/v1/vaults?beta=true",{body:r,...t,headers:tz([{"anthropic-beta":[...s??[],"managed-agents-2026-04-01"].toString()},t?.headers])})}retrieve(e,t={},s){let{betas:r}=t??{};return this._client.get(tG`/v1/vaults/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}update(e,t,s){let{betas:r,...a}=t;return this._client.post(tG`/v1/vaults/${e}?beta=true`,{body:a,...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}list(e={},t){let{betas:s,...r}=e??{};return this._client.getAPIList("/v1/vaults?beta=true",tA,{query:r,...t,headers:tz([{"anthropic-beta":[...s??[],"managed-agents-2026-04-01"].toString()},t?.headers])})}delete(e,t={},s){let{betas:r}=t??{};return this._client.delete(tG`/v1/vaults/${e}?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}archive(e,t={},s){let{betas:r}=t??{};return this._client.post(tG`/v1/vaults/${e}/archive?beta=true`,{...s,headers:tz([{"anthropic-beta":[...r??[],"managed-agents-2026-04-01"].toString()},s?.headers])})}}sj.Credentials=sS;class sk extends tW{constructor(){super(...arguments),this.models=new t0(this._client),this.messages=new sf(this._client),this.agents=new t4(this._client),this.environments=new tV(this._client),this.sessions=new sv(this._client),this.vaults=new sj(this._client),this.memoryStores=new t5(this._client),this.files=new tZ(this._client),this.skills=new s_(this._client),this.userProfiles=new t1(this._client)}}function sN(e){return e?.output_config?.format}function sE(e,t,s){let r=sN(t);return t&&"parse"in(r??{})?sT(e,t,s):{...e,content:e.content.map(e=>"text"===e.type?Object.defineProperty({...e},"parsed_output",{value:null,enumerable:!1}):e),parsed_output:null}}function sT(e,t,s){let r=null,a=e.content.map(e=>{if("text"===e.type){let s=function(e,t){let s=sN(e);if(s?.type!=="json_schema")return null;try{if("parse"in s)return s.parse(t);return JSON.parse(t)}catch(e){throw new eJ(`Failed to parse structured output: ${e}`)}}(t,e.text);return null===r&&(r=s),Object.defineProperty({...e},"parsed_output",{value:s,enumerable:!1})}return e});return{...e,content:a,parsed_output:r}}sk.Models=t0,sk.Messages=sf,sk.Agents=t4,sk.Environments=tV,sk.Sessions=sv,sk.Vaults=sj,sk.MemoryStores=t5,sk.Files=tZ,sk.Skills=s_,sk.UserProfiles=t1;let sC="__json_buf";function sA(e){return"tool_use"===e.type||"server_tool_use"===e.type}class sP{constructor(e,t){z.add(this),this.messages=[],this.receivedMessages=[],F.set(this,void 0),J.set(this,null),this.controller=new AbortController,G.set(this,void 0),V.set(this,()=>{}),K.set(this,()=>{}),X.set(this,void 0),Y.set(this,()=>{}),Q.set(this,()=>{}),Z.set(this,{}),ee.set(this,!1),et.set(this,!1),es.set(this,!1),er.set(this,!1),ea.set(this,void 0),en.set(this,void 0),ei.set(this,void 0),ec.set(this,e=>{if(eB(this,et,!0,"f"),ez(e)&&(e=new eV),e instanceof eV)return eB(this,es,!0,"f"),this._emit("abort",e);if(e instanceof eJ)return this._emit("error",e);if(e instanceof Error){let t=new eJ(e.message);return t.cause=e,this._emit("error",t)}return this._emit("error",new eJ(String(e)))}),eB(this,G,new Promise((e,t)=>{eB(this,V,e,"f"),eB(this,K,t,"f")}),"f"),eB(this,X,new Promise((e,t)=>{eB(this,Y,e,"f"),eB(this,Q,t,"f")}),"f"),eW(this,G,"f").catch(()=>{}),eW(this,X,"f").catch(()=>{}),eB(this,J,e,"f"),eB(this,ei,t?.logger??console,"f")}get response(){return eW(this,ea,"f")}get request_id(){return eW(this,en,"f")}async withResponse(){eB(this,er,!0,"f");let e=await eW(this,G,"f");if(!e)throw Error("Could not resolve a `Response` object");return{data:this,response:e,request_id:e.headers.get("request-id")}}static fromReadableStream(e){let t=new sP(null);return t._run(()=>t._fromReadableStream(e)),t}static createMessage(e,t,s,{logger:r}={}){let a=new sP(t,{logger:r});for(let e of t.messages)a._addMessageParam(e);return eB(a,J,{...t,stream:!0},"f"),a._run(()=>a._createMessage(e,{...t,stream:!0},{...s,headers:{...s?.headers,"X-Stainless-Helper-Method":"stream"}})),a}_run(e){e().then(()=>{this._emitFinal(),this._emit("end")},eW(this,ec,"f"))}_addMessageParam(e){this.messages.push(e)}_addMessage(e,t=!0){this.receivedMessages.push(e),t&&this._emit("message",e)}async _createMessage(e,t,s){let r,a=s?.signal;a&&(a.aborted&&this.controller.abort(),r=this.controller.abort.bind(this.controller),a.addEventListener("abort",r));try{eW(this,z,"m",ed).call(this);let{response:r,data:a}=await e.create({...t,stream:!0},{...s,signal:this.controller.signal}).withResponse();for await(let e of(this._connected(r),a))eW(this,z,"m",eu).call(this,e);if(a.controller.signal?.aborted)throw new eV;eW(this,z,"m",eh).call(this)}finally{a&&r&&a.removeEventListener("abort",r)}}_connected(e){this.ended||(eB(this,ea,e,"f"),eB(this,en,e?.headers.get("request-id"),"f"),eW(this,V,"f").call(this,e),this._emit("connect"))}get ended(){return eW(this,ee,"f")}get errored(){return eW(this,et,"f")}get aborted(){return eW(this,es,"f")}abort(){this.controller.abort()}on(e,t){return(eW(this,Z,"f")[e]||(eW(this,Z,"f")[e]=[])).push({listener:t}),this}off(e,t){let s=eW(this,Z,"f")[e];if(!s)return this;let r=s.findIndex(e=>e.listener===t);return r>=0&&s.splice(r,1),this}once(e,t){return(eW(this,Z,"f")[e]||(eW(this,Z,"f")[e]=[])).push({listener:t,once:!0}),this}emitted(e){return new Promise((t,s)=>{eB(this,er,!0,"f"),"error"!==e&&this.once("error",s),this.once(e,t)})}async done(){eB(this,er,!0,"f"),await eW(this,X,"f")}get currentMessage(){return eW(this,F,"f")}async finalMessage(){return await this.done(),eW(this,z,"m",eo).call(this)}async finalText(){return await this.done(),eW(this,z,"m",el).call(this)}_emit(e,...t){if(eW(this,ee,"f"))return;"end"===e&&(eB(this,ee,!0,"f"),eW(this,Y,"f").call(this));let s=eW(this,Z,"f")[e];if(s&&(eW(this,Z,"f")[e]=s.filter(e=>!e.once),s.forEach(({listener:e})=>e(...t))),"abort"===e){let e=t[0];eW(this,er,"f")||s?.length||Promise.reject(e),eW(this,K,"f").call(this,e),eW(this,Q,"f").call(this,e),this._emit("end");return}if("error"===e){let e=t[0];eW(this,er,"f")||s?.length||Promise.reject(e),eW(this,K,"f").call(this,e),eW(this,Q,"f").call(this,e),this._emit("end")}}_emitFinal(){this.receivedMessages.at(-1)&&this._emit("finalMessage",eW(this,z,"m",eo).call(this))}async _fromReadableStream(e,t){let s,r=t?.signal;r&&(r.aborted&&this.controller.abort(),s=this.controller.abort.bind(this.controller),r.addEventListener("abort",s));try{eW(this,z,"m",ed).call(this),this._connected(null);let t=tv.fromReadableStream(e,this.controller);for await(let e of t)eW(this,z,"m",eu).call(this,e);if(t.controller.signal?.aborted)throw new eV;eW(this,z,"m",eh).call(this)}finally{r&&s&&r.removeEventListener("abort",s)}}[(F=new WeakMap,J=new WeakMap,G=new WeakMap,V=new WeakMap,K=new WeakMap,X=new WeakMap,Y=new WeakMap,Q=new WeakMap,Z=new WeakMap,ee=new WeakMap,et=new WeakMap,es=new WeakMap,er=new WeakMap,ea=new WeakMap,en=new WeakMap,ei=new WeakMap,ec=new WeakMap,z=new WeakSet,eo=function(){if(0===this.receivedMessages.length)throw new eJ("stream ended without producing a Message with role=assistant");return this.receivedMessages.at(-1)},el=function(){if(0===this.receivedMessages.length)throw new eJ("stream ended without producing a Message with role=assistant");let e=this.receivedMessages.at(-1).content.filter(e=>"text"===e.type).map(e=>e.text);if(0===e.length)throw new eJ("stream ended without producing a content block with type=text");return e.join(" ")},ed=function(){this.ended||eB(this,F,void 0,"f")},eu=function(e){if(this.ended)return;let t=eW(this,z,"m",ep).call(this,e);switch(this._emit("streamEvent",e,t),e.type){case"content_block_delta":{let s=t.content.at(-1);switch(e.delta.type){case"text_delta":"text"===s.type&&this._emit("text",e.delta.text,s.text||"");break;case"citations_delta":"text"===s.type&&this._emit("citation",e.delta.citation,s.citations??[]);break;case"input_json_delta":sA(s)&&s.input&&this._emit("inputJson",e.delta.partial_json,s.input);break;case"thinking_delta":"thinking"===s.type&&this._emit("thinking",e.delta.thinking,s.thinking);break;case"signature_delta":"thinking"===s.type&&this._emit("signature",s.signature);break;default:sO(e.delta)}break}case"message_stop":this._addMessageParam(t),this._addMessage(sE(t,eW(this,J,"f"),{logger:eW(this,ei,"f")}),!0);break;case"content_block_stop":this._emit("contentBlock",t.content.at(-1));break;case"message_start":eB(this,F,t,"f")}},eh=function(){if(this.ended)throw new eJ("stream has ended, this shouldn't happen");let e=eW(this,F,"f");if(!e)throw new eJ("request ended without sending any chunks");return eB(this,F,void 0,"f"),sE(e,eW(this,J,"f"),{logger:eW(this,ei,"f")})},ep=function(e){let t=eW(this,F,"f");if("message_start"===e.type){if(t)throw new eJ(`Unexpected event order, got ${e.type} before receiving "message_stop"`);return e.message}if(!t)throw new eJ(`Unexpected event order, got ${e.type} before "message_start"`);switch(e.type){case"message_stop":case"content_block_stop":return t;case"message_delta":return t.stop_reason=e.delta.stop_reason,t.stop_sequence=e.delta.stop_sequence,t.usage.output_tokens=e.usage.output_tokens,null!=e.usage.input_tokens&&(t.usage.input_tokens=e.usage.input_tokens),null!=e.usage.cache_creation_input_tokens&&(t.usage.cache_creation_input_tokens=e.usage.cache_creation_input_tokens),null!=e.usage.cache_read_input_tokens&&(t.usage.cache_read_input_tokens=e.usage.cache_read_input_tokens),null!=e.usage.server_tool_use&&(t.usage.server_tool_use=e.usage.server_tool_use),t;case"content_block_start":return t.content.push({...e.content_block}),t;case"content_block_delta":{let s=t.content.at(e.index);switch(e.delta.type){case"text_delta":s?.type==="text"&&(t.content[e.index]={...s,text:(s.text||"")+e.delta.text});break;case"citations_delta":s?.type==="text"&&(t.content[e.index]={...s,citations:[...s.citations??[],e.delta.citation]});break;case"input_json_delta":if(s&&sA(s)){let r=s[sC]||"";r+=e.delta.partial_json;let a={...s};Object.defineProperty(a,sC,{value:r,enumerable:!1,writable:!0}),r&&(a.input=sa(r)),t.content[e.index]=a}break;case"thinking_delta":s?.type==="thinking"&&(t.content[e.index]={...s,thinking:s.thinking+e.delta.thinking});break;case"signature_delta":s?.type==="thinking"&&(t.content[e.index]={...s,signature:e.delta.signature});break;default:sO(e.delta)}return t}}},Symbol.asyncIterator)](){let e=[],t=[],s=!1;return this.on("streamEvent",s=>{let r=t.shift();r?r.resolve(s):e.push(s)}),this.on("end",()=>{for(let e of(s=!0,t))e.resolve(void 0);t.length=0}),this.on("abort",e=>{for(let r of(s=!0,t))r.reject(e);t.length=0}),this.on("error",e=>{for(let r of(s=!0,t))r.reject(e);t.length=0}),{next:async()=>e.length?{value:e.shift(),done:!1}:s?{value:void 0,done:!0}:new Promise((e,s)=>t.push({resolve:e,reject:s})).then(e=>e?{value:e,done:!1}:{value:void 0,done:!0}),return:async()=>(this.abort(),{value:void 0,done:!0})}}toReadableStream(){return new tv(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}}function sO(e){}class sI extends tW{create(e,t){return this._client.post("/v1/messages/batches",{body:e,...t})}retrieve(e,t){return this._client.get(tG`/v1/messages/batches/${e}`,t)}list(e={},t){return this._client.getAPIList("/v1/messages/batches",tC,{query:e,...t})}delete(e,t){return this._client.delete(tG`/v1/messages/batches/${e}`,t)}cancel(e,t){return this._client.post(tG`/v1/messages/batches/${e}/cancel`,t)}async results(e,t){let s=await this.retrieve(e);if(!s.results_url)throw new eJ(`No batch \`results_url\`; Has it finished processing? ${s.processing_status} - ${s.id}`);return this._client.get(s.results_url,{...t,headers:tz([{Accept:"application/binary"},t?.headers]),stream:!0,__binaryResponse:!0})._thenUnwrap((e,t)=>t8.fromResponse(t.response,t.controller))}}class sR extends tW{constructor(){super(...arguments),this.batches=new sI(this._client)}create(e,t){e.model in sM&&console.warn(`The model '${e.model}' is deprecated and will reach end-of-life on ${sM[e.model]} -Please migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`),s$.includes(e.model)&&e.thinking&&"enabled"===e.thinking.type&&console.warn(`Using Claude with ${e.model} and 'thinking.type=enabled' is deprecated. Use 'thinking.type=adaptive' instead which results in better model performance in our testing: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking`);let s=this._client._options.timeout;if(!e.stream&&null==s){let t=t9[e.model]??void 0;s=this._client.calculateNonstreamingTimeout(e.max_tokens,t)}let r=tQ(e.tools,e.messages);return this._client.post("/v1/messages",{body:e,timeout:s??6e5,...t,headers:tz([r,t?.headers]),stream:e.stream??!1})}parse(e,t){return this.create(e,t).then(t=>sT(t,e,{logger:this._client.logger??console}))}stream(e,t){return sP.createMessage(this,e,t,{logger:this._client.logger??console})}countTokens(e,t){return this._client.post("/v1/messages/count_tokens",{body:e,...t})}}let sM={"claude-1.3":"November 6th, 2024","claude-1.3-100k":"November 6th, 2024","claude-instant-1.1":"November 6th, 2024","claude-instant-1.1-100k":"November 6th, 2024","claude-instant-1.2":"November 6th, 2024","claude-3-sonnet-20240229":"July 21st, 2025","claude-3-opus-20240229":"January 5th, 2026","claude-2.1":"July 21st, 2025","claude-2.0":"July 21st, 2025","claude-3-7-sonnet-latest":"February 19th, 2026","claude-3-7-sonnet-20250219":"February 19th, 2026","claude-3-5-haiku-latest":"February 19th, 2026","claude-3-5-haiku-20241022":"February 19th, 2026","claude-opus-4-0":"June 15th, 2026","claude-opus-4-20250514":"June 15th, 2026","claude-sonnet-4-0":"June 15th, 2026","claude-sonnet-4-20250514":"June 15th, 2026"},s$=["claude-mythos-preview","claude-opus-4-6"];sR.Batches=sI;class sL extends tW{retrieve(e,t={},s){let{betas:r}=t??{};return this._client.get(tG`/v1/models/${e}`,{...s,headers:tz([{...r?.toString()!=null?{"anthropic-beta":r?.toString()}:void 0},s?.headers])})}list(e={},t){let{betas:s,...r}=e??{};return this._client.getAPIList("/v1/models",tC,{query:r,...t,headers:tz([{...s?.toString()!=null?{"anthropic-beta":s?.toString()}:void 0},t?.headers])})}}class sU extends tW{create(e,t){let{betas:s,...r}=e;return this._client.post("/v1/complete",{body:r,timeout:this._client._options.timeout??6e5,...t,headers:tz([{...s?.toString()!=null?{"anthropic-beta":s?.toString()}:void 0},t?.headers]),stream:e.stream??!1})}}let sD=e=>void 0!==globalThis.process?globalThis.process.env?.[e]?.trim()||void 0:void 0!==globalThis.Deno&&globalThis.Deno.env?.get?.(e)?.trim()||void 0;class sq{constructor({baseURL:e=sD("ANTHROPIC_BASE_URL"),apiKey:t=sD("ANTHROPIC_API_KEY")??null,authToken:s=sD("ANTHROPIC_AUTH_TOKEN")??null,...r}={}){em.add(this),ef.set(this,void 0);const a={apiKey:t,authToken:s,...r,baseURL:e||"https://api.anthropic.com"};if(!a.dangerouslyAllowBrowser&&"u">typeof window&&void 0!==window.document&&"u">typeof navigator)throw new eJ("It looks like you're running in a browser-like environment.\n\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\nIf you understand the risks and have appropriate mitigations in place,\nyou can set the `dangerouslyAllowBrowser` option to `true`, e.g.,\n\nnew Anthropic({ apiKey, dangerouslyAllowBrowser: true });\n");this.baseURL=a.baseURL,this.timeout=a.timeout??eg.DEFAULT_TIMEOUT,this.logger=a.logger??console;const n="warn";this.logLevel=n,this.logLevel=tp(a.logLevel,"ClientOptions.logLevel",this)??tp(sD("ANTHROPIC_LOG"),"process.env['ANTHROPIC_LOG']",this)??n,this.fetchOptions=a.fetchOptions,this.maxRetries=a.maxRetries??2,this.fetch=a.fetch??function(){if("u">typeof fetch)return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}(),eB(this,ef,tl,"f");const i=sD("ANTHROPIC_CUSTOM_HEADERS");if(i){const e={};for(const t of i.split("\n")){const s=t.indexOf(":");s>=0&&(e[t.substring(0,s).trim()]=t.substring(s+1).trim())}a.defaultHeaders={...e,...a.defaultHeaders}}this._options=a,this.apiKey="string"==typeof t?t:null,this.authToken=s}withOptions(e){return new this.constructor({...this._options,baseURL:this.baseURL,maxRetries:this.maxRetries,timeout:this.timeout,logger:this.logger,logLevel:this.logLevel,fetch:this.fetch,fetchOptions:this.fetchOptions,apiKey:this.apiKey,authToken:this.authToken,...e})}defaultQuery(){return this._options.defaultQuery}validateHeaders({values:e,nulls:t}){if(!(e.get("x-api-key")||e.get("authorization")||this.apiKey&&e.get("x-api-key")||t.has("x-api-key")||this.authToken&&e.get("authorization"))&&!t.has("authorization"))throw Error('Could not resolve authentication method. Expected either apiKey or authToken to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted')}async authHeaders(e){return tz([await this.apiKeyAuth(e),await this.bearerAuth(e)])}async apiKeyAuth(e){if(null!=this.apiKey)return tz([{"X-Api-Key":this.apiKey}])}async bearerAuth(e){if(null!=this.authToken)return tz([{Authorization:`Bearer ${this.authToken}`}])}stringifyQuery(e){return Object.entries(e).filter(([e,t])=>void 0!==t).map(([e,t])=>{if("string"==typeof t||"number"==typeof t||"boolean"==typeof t)return`${encodeURIComponent(e)}=${encodeURIComponent(t)}`;if(null===t)return`${encodeURIComponent(e)}=`;throw new eJ(`Cannot stringify type ${typeof t}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`)}).join("&")}getUserAgent(){return`${this.constructor.name}/JS ${tt}`}defaultIdempotencyKey(){return`stainless-node-retry-${eH()}`}makeStatusError(e,t,s,r){return eG.generate(e,t,s,r)}buildURL(e,t,s){let r=!eW(this,em,"m",ey).call(this)&&s||this.baseURL,a=new URL(e3.test(e)?e:r+(r.endsWith("/")&&e.startsWith("/")?e.slice(1):e)),n=this.defaultQuery(),i=Object.fromEntries(a.searchParams);return e9(n)&&e9(i)||(t={...i,...n,...t}),"object"==typeof t&&t&&!Array.isArray(t)&&(a.search=this.stringifyQuery(t)),a.toString()}_calculateNonstreamingTimeout(e){if(3600*e/128e3>600)throw new eJ("Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#streaming-responses for more details");return 6e5}async prepareOptions(e){}async prepareRequest(e,{url:t,options:s}){}get(e,t){return this.methodRequest("get",e,t)}post(e,t){return this.methodRequest("post",e,t)}patch(e,t){return this.methodRequest("patch",e,t)}put(e,t){return this.methodRequest("put",e,t)}delete(e,t){return this.methodRequest("delete",e,t)}methodRequest(e,t,s){return this.request(Promise.resolve(s).then(s=>({method:e,path:t,...s})))}request(e,t=null){return new tN(this,this.makeRequest(e,t,void 0))}async makeRequest(e,t,s){let r=await e,a=r.maxRetries??this.maxRetries;null==t&&(t=a),await this.prepareOptions(r);let{req:n,url:i,timeout:o}=await this.buildRequest(r,{retryCount:a-t});await this.prepareRequest(n,{url:i,options:r});let l="log_"+(0x1000000*Math.random()|0).toString(16).padStart(6,"0"),c=void 0===s?"":`, retryOf: ${s}`,d=Date.now();if(tx(this).debug(`[${l}] sending request`,tb({retryOfRequestLogID:s,method:r.method,url:i,options:r,headers:n.headers})),r.signal?.aborted)throw new eV;let u=new AbortController,h=await this.fetchWithTimeout(i,n,o,u).catch(eF),p=Date.now();if(h instanceof globalThis.Error){let e=`retrying, ${t} attempts remaining`;if(r.signal?.aborted)throw new eV;let a=ez(h)||/timed? ?out/i.test(String(h)+("cause"in h?String(h.cause):""));if(t)return tx(this).info(`[${l}] connection ${a?"timed out":"failed"} - ${e}`),tx(this).debug(`[${l}] connection ${a?"timed out":"failed"} (${e})`,tb({retryOfRequestLogID:s,url:i,durationMs:p-d,message:h.message})),this.retryRequest(r,t,s??l);if(tx(this).info(`[${l}] connection ${a?"timed out":"failed"} - error; no more retries left`),tx(this).debug(`[${l}] connection ${a?"timed out":"failed"} (error; no more retries left)`,tb({retryOfRequestLogID:s,url:i,durationMs:p-d,message:h.message})),a)throw new eX;throw new eK({cause:h})}let m=[...h.headers.entries()].filter(([e])=>"request-id"===e).map(([e,t])=>", "+e+": "+JSON.stringify(t)).join(""),g=`[${l}${c}${m}] ${n.method} ${i} ${h.ok?"succeeded":"failed"} with status ${h.status} in ${p-d}ms`;if(!h.ok){let e=await this.shouldRetry(h);if(t&&e){let e=`retrying, ${t} attempts remaining`;return await to(h.body),tx(this).info(`${g} - ${e}`),tx(this).debug(`[${l}] response error (${e})`,tb({retryOfRequestLogID:s,url:h.url,status:h.status,headers:h.headers,durationMs:p-d})),this.retryRequest(r,t,s??l,h.headers)}let a=e?"error; no more retries left":"error; not retryable";tx(this).info(`${g} - ${a}`);let n=await h.text().catch(e=>eF(e).message),i=te(n),o=i?void 0:n;throw tx(this).debug(`[${l}] response error (${a})`,tb({retryOfRequestLogID:s,url:h.url,status:h.status,headers:h.headers,message:o,durationMs:Date.now()-d})),this.makeStatusError(h.status,i,o,h.headers)}return tx(this).info(g),tx(this).debug(`[${l}] response start`,tb({retryOfRequestLogID:s,url:h.url,status:h.status,headers:h.headers,durationMs:p-d})),{response:h,options:r,controller:u,requestLogID:l,retryOfRequestLogID:s,startTime:d}}getAPIList(e,t,s){return this.requestAPIList(t,s&&"then"in s?s.then(t=>({method:"get",path:e,...t})):{method:"get",path:e,...s})}requestAPIList(e,t){return new tT(this,this.makeRequest(t,null,void 0),e)}async fetchWithTimeout(e,t,s,r){let{signal:a,method:n,...i}=t||{},o=this._makeAbort(r);a&&a.addEventListener("abort",o,{once:!0});let l=setTimeout(o,s),c=globalThis.ReadableStream&&i.body instanceof globalThis.ReadableStream||"object"==typeof i.body&&null!==i.body&&Symbol.asyncIterator in i.body,d={signal:r.signal,...c?{duplex:"half"}:{},method:"GET",...i};n&&(d.method=n.toUpperCase());try{return await this.fetch.call(void 0,e,d)}finally{clearTimeout(l)}}async shouldRetry(e){let t=e.headers.get("x-should-retry");return"true"===t||"false"!==t&&(408===e.status||409===e.status||429===e.status||!!(e.status>=500))}async retryRequest(e,t,s,r){let a,n,i=r?.get("retry-after-ms");if(i){let e=parseFloat(i);Number.isNaN(e)||(a=e)}let o=r?.get("retry-after");if(o&&!a){let e=parseFloat(o);a=Number.isNaN(e)?Date.parse(o)-Date.now():1e3*e}if(void 0===a){let s=e.maxRetries??this.maxRetries;a=this.calculateDefaultRetryTimeoutMillis(t,s)}return await (n=a,new Promise(e=>setTimeout(e,n))),this.makeRequest(e,t-1,s)}calculateDefaultRetryTimeoutMillis(e,t){return Math.min(.5*Math.pow(2,t-e),8)*(1-.25*Math.random())*1e3}calculateNonstreamingTimeout(e,t){if(36e5*e/128e3>6e5||null!=t&&e>t)throw new eJ("Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#long-requests for more details");return 6e5}async buildRequest(e,{retryCount:t=0}={}){let s={...e},{method:r,path:a,query:n,defaultBaseURL:i}=s,o=this.buildURL(a,n,i);"timeout"in s&&((e,t)=>{if("number"!=typeof t||!Number.isInteger(t))throw new eJ(`${e} must be an integer`);if(t<0)throw new eJ(`${e} must be a positive integer`)})("timeout",s.timeout),s.timeout=s.timeout??this.timeout;let{bodyHeaders:l,body:c}=this.buildBody({options:s}),d=await this.buildHeaders({options:e,method:r,bodyHeaders:l,retryCount:t});return{req:{method:r,headers:d,...s.signal&&{signal:s.signal},...globalThis.ReadableStream&&c instanceof globalThis.ReadableStream&&{duplex:"half"},...c&&{body:c},...this.fetchOptions??{},...s.fetchOptions??{}},url:o,timeout:s.timeout}}async buildHeaders({options:e,method:s,bodyHeaders:r,retryCount:a}){let n={};this.idempotencyHeader&&"get"!==s&&(e.idempotencyKey||(e.idempotencyKey=this.defaultIdempotencyKey()),n[this.idempotencyHeader]=e.idempotencyKey);let i=tz([n,{Accept:"application/json","User-Agent":this.getUserAgent(),"X-Stainless-Retry-Count":String(a),...e.timeout?{"X-Stainless-Timeout":String(Math.trunc(e.timeout/1e3))}:{},...t??(t=(()=>{let e="u">typeof Deno&&null!=Deno.build?"deno":"u">typeof EdgeRuntime?"edge":"[object process]"===Object.prototype.toString.call(void 0!==globalThis.process?globalThis.process:0)?"node":"unknown";if("deno"===e)return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":tt,"X-Stainless-OS":tr(Deno.build.os),"X-Stainless-Arch":ts(Deno.build.arch),"X-Stainless-Runtime":"deno","X-Stainless-Runtime-Version":"string"==typeof Deno.version?Deno.version:Deno.version?.deno??"unknown"};if("u">typeof EdgeRuntime)return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":tt,"X-Stainless-OS":"Unknown","X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":"edge","X-Stainless-Runtime-Version":globalThis.process.version};if("node"===e)return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":tt,"X-Stainless-OS":tr(globalThis.process.platform??"unknown"),"X-Stainless-Arch":ts(globalThis.process.arch??"unknown"),"X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":globalThis.process.version??"unknown"};let t=function(){if("u"e.abort()}buildBody({options:{body:e,headers:t}}){if(!e)return{bodyHeaders:void 0,body:void 0};let s=tz([t]);return ArrayBuffer.isView(e)||e instanceof ArrayBuffer||e instanceof DataView||"string"==typeof e&&s.values.has("content-type")||globalThis.Blob&&e instanceof globalThis.Blob||e instanceof FormData||e instanceof URLSearchParams||globalThis.ReadableStream&&e instanceof globalThis.ReadableStream?{bodyHeaders:void 0,body:e}:"object"==typeof e&&(Symbol.asyncIterator in e||Symbol.iterator in e&&"next"in e&&"function"==typeof e.next)?{bodyHeaders:void 0,body:tn(e)}:"object"==typeof e&&"application/x-www-form-urlencoded"===s.values.get("content-type")?{bodyHeaders:{"content-type":"application/x-www-form-urlencoded"},body:this.stringifyQuery(e)}:eW(this,ef,"f").call(this,{body:e,headers:s})}}eg=sq,ef=new WeakMap,em=new WeakSet,ey=function(){return"https://api.anthropic.com"!==this.baseURL},sq.Anthropic=eg,sq.HUMAN_PROMPT="\\n\\nHuman:",sq.AI_PROMPT="\\n\\nAssistant:",sq.DEFAULT_TIMEOUT=6e5,sq.AnthropicError=eJ,sq.APIError=eG,sq.APIConnectionError=eK,sq.APIConnectionTimeoutError=eX,sq.APIUserAbortError=eV,sq.NotFoundError=e0,sq.ConflictError=e1,sq.RateLimitError=e4,sq.BadRequestError=eY,sq.AuthenticationError=eQ,sq.InternalServerError=e6,sq.PermissionDeniedError=eZ,sq.UnprocessableEntityError=e2,sq.toFile=tq;class sB extends sq{constructor(){super(...arguments),this.completions=new sU(this),this.messages=new sR(this),this.models=new sL(this),this.beta=new sk(this)}}sB.Completions=sU,sB.Messages=sR,sB.Models=sL,sB.Beta=sk;var sW=e.i(727749);async function sH(e,t,s,r,a=[],n,i,o,l,c,d,u,h,p,m){if(!r)throw Error("Virtual Key is required");console.log=function(){};let g=m||(0,eL.getProxyBaseUrl)(),f={};a&&a.length>0&&(f["x-litellm-tags"]=a.join(","));let y=new sB({apiKey:r,baseURL:g,dangerouslyAllowBrowser:!0,defaultHeaders:f});try{let r=Date.now(),a=!1,p={model:s,messages:e.map(e=>({role:e.role,content:e.content})),stream:!0,max_tokens:1024,litellm_trace_id:c};for await(let e of(d&&(p.vector_store_ids=d),u&&(p.guardrails=u),h&&(p.policies=h),y.messages.stream(p,{signal:n}))){if(console.log("Stream event:",e),"content_block_delta"===e.type){let n=e.delta;if(!a){a=!0;let e=Date.now()-r;console.log("First token received! Time:",e,"ms"),o&&o(e)}"text_delta"===n.type?t("assistant",n.text,s):"reasoning_delta"===n.type&&i&&i(n.text)}if("message_delta"===e.type&&e.usage&&l){let t=e.usage;console.log("Usage data found:",t);let s={completionTokens:t.output_tokens,promptTokens:t.input_tokens,totalTokens:t.input_tokens+t.output_tokens};l(s)}}}catch(e){throw n?.aborted?console.log("Anthropic messages request was cancelled"):sW.default.fromBackend(`Error occurred while generating model response. Please try again. Error: ${e}`),e}}e.s(["makeAnthropicMessagesRequest",0,sH],434788);var sz=e.i(356449);async function sF(e,t,s,r,a,n,i,o,l,c){console.log=function(){},console.log("isLocal:",!1);let d=c||(0,eL.getProxyBaseUrl)(),u=new sz.default.OpenAI({apiKey:a,baseURL:d,dangerouslyAllowBrowser:!0,defaultHeaders:n&&n.length>0?{"x-litellm-tags":n.join(",")}:void 0});try{let a=await u.audio.speech.create({model:r,input:e,voice:t,...o?{response_format:o}:{},...l?{speed:l}:{}},{signal:i}),n=await a.blob(),c=URL.createObjectURL(n);s(c,r)}catch(e){throw i?.aborted?console.log("Audio speech request was cancelled"):sW.default.fromBackend(`Error occurred while generating speech. Please try again. Error: ${e}`),e}}async function sJ(e,t,s,r,a,n,i,o,l,c,d){console.log=function(){},console.log("isLocal:",!1);let u=d||(0,eL.getProxyBaseUrl)(),h=new sz.default.OpenAI({apiKey:r,baseURL:u,dangerouslyAllowBrowser:!0,defaultHeaders:a&&a.length>0?{"x-litellm-tags":a.join(",")}:void 0});try{console.log("Processing audio file for transcription:",e.name);let r=await h.audio.transcriptions.create({model:s,file:e,...i?{language:i}:{},...o?{prompt:o}:{},...l?{response_format:l}:{},...void 0!==c?{temperature:c}:{}},{signal:n});if(console.log("Transcription response:",r),r&&r.text)t(r.text,s),sW.default.success("Audio transcribed successfully");else throw Error("No transcription text in response")}catch(e){if(console.error("Error making audio transcription request:",e),n?.aborted)console.log("Audio transcription request was cancelled");else{let t="Failed to transcribe audio";e?.error?.message?t=e.error.message:e?.message&&(t=e.message),sW.default.fromBackend(`Audio transcription failed: ${t}`)}throw e}}async function sG(e,t,s,r,a,n){if(!r)throw Error("Virtual Key is required");console.log=function(){};let i=n||(0,eL.getProxyBaseUrl)(),o={};a&&a.length>0&&(o["x-litellm-tags"]=a.join(","));try{let a=i.endsWith("/")?i.slice(0,-1):i,n=`${a}/embeddings`,l=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",[(0,eL.getGlobalLitellmHeaderName)()]:`Bearer ${r}`,...o},body:JSON.stringify({model:s,input:e})});if(!l.ok){let e=await l.text();throw Error(e||`Request failed with status ${l.status}`)}let c=await l.json(),d=c?.data?.[0]?.embedding;if(!d)throw Error("No embedding returned from server");t(JSON.stringify(d),c?.model??s)}catch(e){throw sW.default.fromBackend(`Error occurred while making embeddings request. Please try again. Error: ${e}`),e}}e.s(["makeOpenAIAudioSpeechRequest",0,sF],512882),e.s(["makeOpenAIAudioTranscriptionRequest",0,sJ],584976),e.s(["makeOpenAIEmbeddingsRequest",0,sG],720762)},488143,(e,t,s)=>{"use strict";function r({widthInt:e,heightInt:t,blurWidth:s,blurHeight:a,blurDataURL:n,objectFit:i}){let o=s?40*s:e,l=a?40*a:t,c=o&&l?`viewBox='0 0 ${o} ${l}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${c}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${c?"none":"contain"===i?"xMidYMid":"cover"===i?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${n}'/%3E%3C/svg%3E`}Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"getImageBlurSvg",{enumerable:!0,get:function(){return r}})},987690,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0});var r={VALID_LOADERS:function(){return n},imageConfigDefault:function(){return i}};for(var a in r)Object.defineProperty(s,a,{enumerable:!0,get:r[a]});let n=["default","imgix","cloudinary","akamai","custom"],i={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},908927,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"getImgProps",{enumerable:!0,get:function(){return c}}),e.r(233525);let r=e.r(543369),a=e.r(488143),n=e.r(987690),i=["-moz-initial","fill","none","scale-down",void 0];function o(e){return void 0!==e.default}function l(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function c({src:e,sizes:t,unoptimized:s=!1,priority:d=!1,preload:u=!1,loading:h,className:p,quality:m,width:g,height:f,fill:y=!1,style:x,overrideSrc:b,onLoad:v,onLoadingComplete:w,placeholder:_="empty",blurDataURL:S,fetchPriority:j,decoding:k="async",layout:N,objectFit:E,objectPosition:T,lazyBoundary:C,lazyRoot:A,...P},O){var I;let R,M,$,{imgConf:L,showAltText:U,blurComplete:D,defaultLoader:q}=O,B=L||n.imageConfigDefault;if("allSizes"in B)R=B;else{let e=[...B.deviceSizes,...B.imageSizes].sort((e,t)=>e-t),t=B.deviceSizes.sort((e,t)=>e-t),s=B.qualities?.sort((e,t)=>e-t);R={...B,allSizes:e,deviceSizes:t,qualities:s}}if(void 0===q)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let W=P.loader||q;delete P.loader,delete P.srcSet;let H="__next_img_default"in W;if(H){if("custom"===R.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop. -Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=W;W=t=>{let{config:s,...r}=t;return e(r)}}if(N){"fill"===N&&(y=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[N];e&&(x={...x,...e});let s={responsive:"100vw",fill:"100vw"}[N];s&&!t&&(t=s)}let z="",F=l(g),J=l(f);if((I=e)&&"object"==typeof I&&(o(I)||void 0!==I.src)){let t=o(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(M=t.blurWidth,$=t.blurHeight,S=S||t.blurDataURL,z=t.src,!y)if(F||J){if(F&&!J){let e=F/t.width;J=Math.round(t.height*e)}else if(!F&&J){let e=J/t.height;F=Math.round(t.width*e)}}else F=t.width,J=t.height}let G=!d&&!u&&("lazy"===h||void 0===h);(!(e="string"==typeof e?e:z)||e.startsWith("data:")||e.startsWith("blob:"))&&(s=!0,G=!1),R.unoptimized&&(s=!0),H&&!R.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(s=!0);let V=l(m),K=Object.assign(y?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:E,objectPosition:T}:{},U?{}:{color:"transparent"},x),X=D||"empty"===_?null:"blur"===_?`url("data:image/svg+xml;charset=utf-8,${(0,a.getImageBlurSvg)({widthInt:F,heightInt:J,blurWidth:M,blurHeight:$,blurDataURL:S||"",objectFit:K.objectFit})}")`:`url("${_}")`,Y=i.includes(K.objectFit)?"fill"===K.objectFit?"100% 100%":"cover":K.objectFit,Q=X?{backgroundSize:Y,backgroundPosition:K.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:X}:{},Z=function({config:e,src:t,unoptimized:s,width:a,quality:n,sizes:i,loader:o}){if(s){if(t.startsWith("/")&&!t.startsWith("//")){let e=(0,r.getDeploymentId)();if(e){let s=t.indexOf("?");if(-1!==s){let r=new URLSearchParams(t.slice(s+1));r.get("dpl")||(r.append("dpl",e),t=t.slice(0,s)+"?"+r.toString())}else t+=`?dpl=${e}`}}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:l,kind:c}=function({deviceSizes:e,allSizes:t},s,r){if(r){let s=/(^|\s)(1?\d?\d)vw/g,a=[];for(let e;e=s.exec(r);)a.push(parseInt(e[2]));if(a.length){let s=.01*Math.min(...a);return{widths:t.filter(t=>t>=e[0]*s),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof s?{widths:e,kind:"w"}:{widths:[...new Set([s,2*s].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,a,i),d=l.length-1;return{sizes:i||"w"!==c?i:"100vw",srcSet:l.map((s,r)=>`${o({config:e,src:t,quality:n,width:s})} ${"w"===c?s:r+1}${c}`).join(", "),src:o({config:e,src:t,quality:n,width:l[d]})}}({config:R,src:e,unoptimized:s,width:F,quality:V,sizes:t,loader:W}),ee=G?"lazy":h;return{props:{...P,loading:ee,fetchPriority:j,width:F,height:J,decoding:k,className:p,style:{...K,...Q},sizes:Z.sizes,srcSet:Z.srcSet,src:b||Z.src},meta:{unoptimized:s,preload:u||d,placeholder:_,fill:y}}}},898879,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"default",{enumerable:!0,get:function(){return o}});let r=e.r(271645),a="u"{}:r.useLayoutEffect,i=a?()=>{}:r.useEffect;function o(e){let{headManager:t,reduceComponentsToState:s}=e;function o(){if(t&&t.mountedInstances){let e=r.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(s(e))}}return a&&(t?.mountedInstances?.add(e.children),o()),n(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),n(()=>(t&&(t._pendingUpdate=o),()=>{t&&(t._pendingUpdate=o)})),i(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},325633,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0});var r={default:function(){return g},defaultHead:function(){return u}};for(var a in r)Object.defineProperty(s,a,{enumerable:!0,get:r[a]});let n=e.r(563141),i=e.r(151836),o=e.r(843476),l=i._(e.r(271645)),c=n._(e.r(898879)),d=e.r(742732);function u(){return[(0,o.jsx)("meta",{charSet:"utf-8"},"charset"),(0,o.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function h(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===l.default.Fragment?e.concat(l.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(233525);let p=["name","httpEquiv","charSet","itemProp"];function m(e){let t,s,r,a;return e.reduce(h,[]).reverse().concat(u().reverse()).filter((t=new Set,s=new Set,r=new Set,a={},e=>{let n=!0,i=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){i=!0;let s=e.key.slice(e.key.indexOf("$")+1);t.has(s)?n=!1:t.add(s)}switch(e.type){case"title":case"base":s.has(e.type)?n=!1:s.add(e.type);break;case"meta":for(let t=0,s=p.length;t{let s=e.key||t;return l.default.cloneElement(e,{key:s})})}let g=function({children:e}){let t=(0,l.useContext)(d.HeadManagerContext);return(0,o.jsx)(c.default,{reduceComponentsToState:m,headManager:t,children:e})};("function"==typeof s.default||"object"==typeof s.default&&null!==s.default)&&void 0===s.default.__esModule&&(Object.defineProperty(s.default,"__esModule",{value:!0}),Object.assign(s.default,s),t.exports=s.default)},918556,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"ImageConfigContext",{enumerable:!0,get:function(){return n}});let r=e.r(563141)._(e.r(271645)),a=e.r(987690),n=r.default.createContext(a.imageConfigDefault)},65856,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"RouterContext",{enumerable:!0,get:function(){return r}});let r=e.r(563141)._(e.r(271645)).default.createContext(null)},670965,(e,t,s)=>{"use strict";function r(e,t){let s=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-s){"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"default",{enumerable:!0,get:function(){return i}});let r=e.r(670965),a=e.r(543369);function n({config:e,src:t,width:s,quality:i}){let o=(0,a.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//")){let e=t.indexOf("?");if(-1!==e){let s=new URLSearchParams(t.slice(e+1)),r=s.get("dpl");if(r){o=r,s.delete("dpl");let a=s.toString();t=t.slice(0,e)+(a?"?"+a:"")}}}if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns. -Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let l=(0,r.findClosestQuality)(i,e);return`${e.path}?url=${encodeURIComponent(t)}&w=${s}&q=${l}${t.startsWith("/")&&o?`&dpl=${o}`:""}`}n.__next_img_default=!0;let i=n},605500,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"Image",{enumerable:!0,get:function(){return v}});let r=e.r(563141),a=e.r(151836),n=e.r(843476),i=a._(e.r(271645)),o=r._(e.r(174080)),l=r._(e.r(325633)),c=e.r(908927),d=e.r(987690),u=e.r(918556);e.r(233525);let h=e.r(65856),p=r._(e.r(1948)),m=e.r(818581),g={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0};function f(e,t,s,r,a,n,i){let o=e?.src;e&&e["data-loaded-src"]!==o&&(e["data-loaded-src"]=o,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&a(!0),s?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let r=!1,a=!1;s.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>r,isPropagationStopped:()=>a,persist:()=>{},preventDefault:()=>{r=!0,t.preventDefault()},stopPropagation:()=>{a=!0,t.stopPropagation()}})}r?.current&&r.current(e)}}))}function y(e){return i.use?{fetchPriority:e}:{fetchpriority:e}}"u"{let E=(0,i.useCallback)(e=>{e&&(j&&(e.src=e.src),e.complete&&f(e,u,x,b,v,p,_))},[e,u,x,b,v,j,p,_]),T=(0,m.useMergedRef)(N,E);return(0,n.jsx)("img",{...k,...y(d),loading:h,width:a,height:r,decoding:o,"data-nimg":g?"fill":"1",className:l,style:c,sizes:s,srcSet:t,src:e,ref:T,onLoad:e=>{f(e.currentTarget,u,x,b,v,p,_)},onError:e=>{w(!0),"empty"!==u&&v(!0),j&&j(e)}})});function b({isAppRouter:e,imgAttributes:t}){let s={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...y(t.fetchPriority)};return e&&o.default.preload?(o.default.preload(t.src,s),null):(0,n.jsx)(l.default,{children:(0,n.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...s},"__nimg-"+t.src+t.srcSet+t.sizes)})}let v=(0,i.forwardRef)((e,t)=>{let s=(0,i.useContext)(h.RouterContext),r=(0,i.useContext)(u.ImageConfigContext),a=(0,i.useMemo)(()=>{let e=g||r||d.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),s=e.deviceSizes.sort((e,t)=>e-t),a=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:s,qualities:a,localPatterns:"u"{m.current=o},[o]);let f=(0,i.useRef)(l);(0,i.useEffect)(()=>{f.current=l},[l]);let[y,v]=(0,i.useState)(!1),[w,_]=(0,i.useState)(!1),{props:S,meta:j}=(0,c.getImgProps)(e,{defaultLoader:p.default,imgConf:a,blurComplete:y,showAltText:w});return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(x,{...S,unoptimized:j.unoptimized,placeholder:j.placeholder,fill:j.fill,onLoadRef:m,onLoadingCompleteRef:f,setBlurComplete:v,setShowAltText:_,sizesInput:e.sizes,ref:t}),j.preload?(0,n.jsx)(b,{isAppRouter:!s,imgAttributes:S}):null]})});("function"==typeof s.default||"object"==typeof s.default&&null!==s.default)&&void 0===s.default.__esModule&&(Object.defineProperty(s.default,"__esModule",{value:!0}),Object.assign(s.default,s),t.exports=s.default)},794909,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0});var r={default:function(){return d},getImageProps:function(){return c}};for(var a in r)Object.defineProperty(s,a,{enumerable:!0,get:r[a]});let n=e.r(563141),i=e.r(908927),o=e.r(605500),l=n._(e.r(1948));function c(e){let{props:t}=(0,i.getImgProps)(e,{defaultLoader:l.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[e,s]of Object.entries(t))void 0===s&&delete t[e];return{props:t}}let d=o.Image},657688,(e,t,s)=>{t.exports=e.r(794909)},220486,761793,964421,91500,843153,152401,e=>{"use strict";var t=e.i(843476),s=e.i(218129),r=e.i(132104),a=e.i(447593),n=e.i(245094),i=e.i(210612),o=e.i(955135),l=e.i(827252),c=e.i(438957),d=e.i(596239),u=e.i(56456),h=e.i(124608),p=e.i(983561),m=e.i(602073),g=e.i(313603),f=e.i(782273),y=e.i(232164),x=e.i(366308),b=e.i(304967),v=e.i(599724),w=e.i(779241),_=e.i(629569),S=e.i(994388),j=e.i(464571),k=e.i(311451),N=e.i(212931),E=e.i(282786),T=e.i(199133),C=e.i(482725),A=e.i(592968),P=e.i(898586),O=e.i(515831),I=e.i(271645),R=e.i(650056),M=e.i(219470),$=e.i(614677),L=e.i(891547),U=e.i(921511),D=e.i(235267),q=e.i(611052),B=e.i(727749),W=e.i(764205),H=e.i(318059),z=e.i(916940),F=e.i(953860),J=e.i(434788),G=e.i(512882),V=e.i(584976),K=e.i(254530),X=e.i(720762),Y=e.i(921687),Q=e.i(689020);e.i(247167);var Z=e.i(356449);async function ee(e,t,s,r,a,n,i,o){console.log=function(){},console.log("isLocal:",!1);let l=o||(0,W.getProxyBaseUrl)(),c=new Z.default.OpenAI({apiKey:a,baseURL:l,dangerouslyAllowBrowser:!0,defaultHeaders:n&&n.length>0?{"x-litellm-tags":n.join(",")}:void 0});try{let a=Array.isArray(e)?e:[e],n=[];for(let e=0;e1&&B.default.success(`Successfully processed ${n.length} images`)}catch(e){if(console.error("Error making image edit request:",e),i?.aborted)console.log("Image edits request was cancelled");else{let t="Failed to edit image(s)";e?.error?.message?t=e.error.message:e?.message&&(t=e.message),B.default.fromBackend(`Image edit failed: ${t}`)}throw e}}async function et(e,t,s,r,a,n,i){console.log=function(){},console.log("isLocal:",!1);let o=i||(0,W.getProxyBaseUrl)(),l=new Z.default.OpenAI({apiKey:r,baseURL:o,dangerouslyAllowBrowser:!0,defaultHeaders:a&&a.length>0?{"x-litellm-tags":a.join(",")}:void 0});try{let r=await l.images.generate({model:s,prompt:e},{signal:n});if(console.log(r.data),r.data&&r.data[0])if(r.data[0].url)t(r.data[0].url,s);else if(r.data[0].b64_json){let e=r.data[0].b64_json;t(`data:image/png;base64,${e}`,s)}else throw Error("No image data found in response");else throw Error("Invalid response format")}catch(e){throw n?.aborted?console.log("Image generation request was cancelled"):B.default.fromBackend(`Error occurred while generating image. Please try again. Error: ${e}`),e}}var es=e.i(452598),er=e.i(536916),ea=e.i(28651),en=e.i(850627);let ei=({temperature:e=1,maxTokens:s=2048,useAdvancedParams:r,onTemperatureChange:a,onMaxTokensChange:n,onUseAdvancedParamsChange:i,mockTestFallbacks:o,onMockTestFallbacksChange:c})=>{let[d,u]=(0,I.useState)(!1),h=void 0!==r?r:d,[p,m]=(0,I.useState)(e),[g,f]=(0,I.useState)(s);(0,I.useEffect)(()=>{m(e)},[e]),(0,I.useEffect)(()=>{f(s)},[s]);let y=e=>{let t=e??1;m(t),a?.(t)},x=e=>{let t=e??1e3;f(t),n?.(t)},b=h?"text-gray-700":"text-gray-400";return(0,t.jsxs)("div",{className:"space-y-4 p-4 w-80",children:[(0,t.jsx)(er.Checkbox,{checked:h,onChange:e=>{var t;return t=e.target.checked,void(i?i(t):u(t))},children:(0,t.jsx)("span",{className:"font-medium",children:"Use Advanced Parameters"})}),c&&(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)(er.Checkbox,{checked:o??!1,onChange:e=>c(e.target.checked),children:(0,t.jsx)("span",{className:"font-medium",children:"Simulate failure to test fallbacks"})}),(0,t.jsx)(E.Popover,{trigger:"hover",placement:"right",content:(0,t.jsxs)("div",{style:{maxWidth:340},children:[(0,t.jsx)(P.Typography.Paragraph,{className:"text-sm",style:{marginBottom:8},children:"Causes the first request to fail so the router tries fallbacks (if configured). Use this to verify your fallback setup."}),(0,t.jsxs)(P.Typography.Paragraph,{className:"text-sm",style:{marginBottom:0},children:["Behavior can differ when keys, teams, or router settings are configured."," ",(0,t.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/keys_teams_router_settings",target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:text-blue-800",children:"Learn more"})]})]}),children:(0,t.jsx)(l.InfoCircleOutlined,{className:"text-xs text-gray-400 cursor-pointer shrink-0 hover:text-gray-600","aria-label":"Help: Simulate failure to test fallbacks"})})]}),(0,t.jsxs)("div",{className:"space-y-4 transition-opacity duration-200",style:{opacity:h?1:.4},children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)(v.Text,{className:`text-sm ${b}`,children:"Temperature"}),(0,t.jsx)(A.Tooltip,{title:"Controls randomness. Lower values make output more deterministic, higher values more creative.",children:(0,t.jsx)(l.InfoCircleOutlined,{className:`text-xs ${b} cursor-help`})})]}),(0,t.jsx)(ea.InputNumber,{min:0,max:2,step:.1,value:p,onChange:y,disabled:!h,precision:1,className:"w-20"})]}),(0,t.jsx)(en.Slider,{min:0,max:2,step:.1,value:p,onChange:y,disabled:!h,marks:{0:"0",1:"1.0",2:"2.0"}})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)(v.Text,{className:`text-sm ${b}`,children:"Max Tokens"}),(0,t.jsx)(A.Tooltip,{title:"Maximum number of tokens to generate in the response.",children:(0,t.jsx)(l.InfoCircleOutlined,{className:`text-xs ${b} cursor-help`})})]}),(0,t.jsx)(ea.InputNumber,{min:1,max:32768,step:1,value:g,onChange:x,disabled:!h})]}),(0,t.jsx)(en.Slider,{min:1,max:32768,step:1,value:g,onChange:x,disabled:!h,marks:{1:"1",32768:"32768"}})]})]})]})};var eo=e.i(785913);let el={ALLOY:"Alloy - Professional and confident",ASH:"Ash - Casual and relaxed",BALAD:"Ballad - Smooth and melodic",CORAL:"Coral - Warm and engaging",ECHO:"Echo - Friendly and conversational",FABLE:"Fable - Wise and measured",NOVA:"Nova - Friendly and conversational",ONYX:"Onyx - Deep and authoritative",SAGE:"Sage - Wise and measured",SHIMMER:"Shimmer - Bright and cheerful"},ec=Object.entries({ALLOY:"alloy",ASH:"ash",BALAD:"ballad",CORAL:"coral",ECHO:"echo",FABLE:"fable",NOVA:"nova",ONYX:"onyx",SAGE:"sage",SHIMMER:"shimmer"}).map(([e,t])=>({value:t,label:el[e]})),ed=[{value:eo.EndpointType.CHAT,label:"/v1/chat/completions"},{value:eo.EndpointType.RESPONSES,label:"/v1/responses"},{value:eo.EndpointType.ANTHROPIC_MESSAGES,label:"/v1/messages"},{value:eo.EndpointType.IMAGE,label:"/v1/images/generations"},{value:eo.EndpointType.IMAGE_EDITS,label:"/v1/images/edits"},{value:eo.EndpointType.EMBEDDINGS,label:"/v1/embeddings"},{value:eo.EndpointType.SPEECH,label:"/v1/audio/speech"},{value:eo.EndpointType.TRANSCRIPTION,label:"/v1/audio/transcriptions"},{value:eo.EndpointType.A2A_AGENTS,label:"/v1/a2a/message/send"},{value:eo.EndpointType.MCP,label:"/mcp-rest/tools/call"},{value:eo.EndpointType.REALTIME,label:"/v1/realtime"}];var eu=e.i(955719),eu=eu;let{Dragger:eh}=O.Upload,ep=({chatUploadedImage:e,chatImagePreviewUrl:s,onImageUpload:r,onRemoveImage:a})=>(0,t.jsx)(t.Fragment,{children:!e&&(0,t.jsx)(eh,{beforeUpload:r,accept:"image/*,.pdf",showUploadList:!1,className:"inline-block",style:{padding:0,border:"none",background:"none"},children:(0,t.jsx)(A.Tooltip,{title:"Attach image or PDF",children:(0,t.jsx)("button",{type:"button",className:"flex items-center justify-center w-8 h-8 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-md transition-colors",children:(0,t.jsx)(eu.default,{style:{fontSize:"16px"}})})})})});e.s(["default",0,ep],761793);let em=async(e,t)=>({role:"user",content:[{type:"text",text:e},{type:"image_url",image_url:{url:await new Promise((e,s)=>{let r=new FileReader;r.onload=()=>{e(r.result)},r.onerror=s,r.readAsDataURL(t)})}}]}),eg=(e,t,s,r)=>{let a="";t&&r&&(a=r.toLowerCase().endsWith(".pdf")?"[PDF attached]":"[Image attached]");let n={role:"user",content:t?`${e} ${a}`:e};return t&&s&&(n.imagePreviewUrl=s),n},ef=e=>"user"===e.role&&"string"==typeof e.content&&(e.content.includes("[Image attached]")||e.content.includes("[PDF attached]"))&&!!e.imagePreviewUrl;e.s(["createChatDisplayMessage",0,eg,"createChatMultimodalMessage",0,em,"shouldShowChatAttachedImage",0,ef],964421);var ey=e.i(790848),ex=e.i(888259),eb=e.i(270377);let ev=({enabled:e,onEnabledChange:s,selectedModel:r,disabled:a=!1})=>{let i=(e=>{if(!e)return!1;let t=e.toLowerCase();return t.startsWith("openai/")||t.startsWith("gpt-")||t.startsWith("o1")||t.startsWith("o3")||t.includes("openai")})(r);return(0,t.jsxs)("div",{className:"border border-gray-200 rounded-lg p-3 bg-gradient-to-r from-blue-50 to-purple-50",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(n.CodeOutlined,{className:"text-blue-500"}),(0,t.jsx)(v.Text,{className:"font-medium text-gray-700",children:"Code Interpreter"}),(0,t.jsx)(A.Tooltip,{title:"Run Python code to generate files, charts, and analyze data. Container is created automatically.",children:(0,t.jsx)(l.InfoCircleOutlined,{className:"text-gray-400 text-xs"})})]}),(0,t.jsx)(ey.Switch,{checked:e&&i,onChange:e=>{e&&!i?ex.default.warning("Code Interpreter is only available for OpenAI models"):s(e)},disabled:a||!i,size:"small",className:e&&i?"bg-blue-500":""})]}),!i&&(0,t.jsx)("div",{className:"mt-2 pt-2 border-t border-gray-200",children:(0,t.jsxs)("div",{className:"flex items-start gap-2",children:[(0,t.jsx)(eb.ExclamationCircleOutlined,{className:"text-amber-500 mt-0.5"}),(0,t.jsxs)("div",{className:"text-xs text-gray-600",children:[(0,t.jsx)("span",{children:"Code Interpreter is currently only supported for OpenAI models. "}),(0,t.jsx)("a",{href:"https://github.com/BerriAI/litellm/issues/new?template=feature_request.yml",target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:text-blue-800 underline",children:"Request support for other providers"})]})]})})]})};var ew=e.i(190272);let e_=({endpointType:e,onEndpointChange:s,className:r})=>(0,t.jsx)("div",{className:r,children:(0,t.jsx)(T.Select,{showSearch:!0,value:e,style:{width:"100%"},onChange:s,options:ed,className:"rounded-md",filterOption:(e,t)=>(t?.label??"").toLowerCase().includes(e.toLowerCase())||(t?.value??"").toLowerCase().includes(e.toLowerCase())})});var eS=e.i(931067);let ej={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M531.3 574.4l.3-1.4c5.8-23.9 13.1-53.7 7.4-80.7-3.8-21.3-19.5-29.6-32.9-30.2-15.8-.7-29.9 8.3-33.4 21.4-6.6 24-.7 56.8 10.1 98.6-13.6 32.4-35.3 79.5-51.2 107.5-29.6 15.3-69.3 38.9-75.2 68.7-1.2 5.5.2 12.5 3.5 18.8 3.7 7 9.6 12.4 16.5 15 3 1.1 6.6 2 10.8 2 17.6 0 46.1-14.2 84.1-79.4 5.8-1.9 11.8-3.9 17.6-5.9 27.2-9.2 55.4-18.8 80.9-23.1 28.2 15.1 60.3 24.8 82.1 24.8 21.6 0 30.1-12.8 33.3-20.5 5.6-13.5 2.9-30.5-6.2-39.6-13.2-13-45.3-16.4-95.3-10.2-24.6-15-40.7-35.4-52.4-65.8zM421.6 726.3c-13.9 20.2-24.4 30.3-30.1 34.7 6.7-12.3 19.8-25.3 30.1-34.7zm87.6-235.5c5.2 8.9 4.5 35.8.5 49.4-4.9-19.9-5.6-48.1-2.7-51.4.8.1 1.5.7 2.2 2zm-1.6 120.5c10.7 18.5 24.2 34.4 39.1 46.2-21.6 4.9-41.3 13-58.9 20.2-4.2 1.7-8.3 3.4-12.3 5 13.3-24.1 24.4-51.4 32.1-71.4zm155.6 65.5c.1.2.2.5-.4.9h-.2l-.2.3c-.8.5-9 5.3-44.3-8.6 40.6-1.9 45 7.3 45.1 7.4zm191.4-388.2L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z"}}]},name:"file-pdf",theme:"outlined"};var ek=e.i(9583),eN=I.forwardRef(function(e,t){return I.createElement(ek.default,(0,eS.default)({},e,{ref:t,icon:ej}))});e.s(["FilePdfOutlined",0,eN],91500);let eE=function({file:e,previewUrl:s,onRemove:r}){let a=e.name.toLowerCase().endsWith(".pdf");return(0,t.jsx)("div",{className:"mb-2",children:(0,t.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[(0,t.jsx)("div",{className:"relative inline-block",children:a?(0,t.jsx)("div",{className:"w-10 h-10 rounded-md bg-red-500 flex items-center justify-center",children:(0,t.jsx)(eN,{style:{fontSize:"16px",color:"white"}})}):(0,t.jsx)("img",{src:s||"",alt:"Upload preview",className:"w-10 h-10 rounded-md border border-gray-200 object-cover"})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("div",{className:"text-sm font-medium text-gray-900 truncate",children:e.name}),(0,t.jsx)("div",{className:"text-xs text-gray-500",children:a?"PDF":"Image"})]}),(0,t.jsx)("button",{className:"flex items-center justify-center w-6 h-6 text-gray-400 hover:text-gray-600 hover:bg-gray-200 rounded-full transition-colors",onClick:r,children:(0,t.jsx)(o.DeleteOutlined,{style:{fontSize:"12px"}})})]})})};var eT=e.i(771674),eC=e.i(918789),eA=e.i(245704),eP=e.i(637235),eO=e.i(166406),eI=e.i(755151),eR=e.i(240647),eM=e.i(993914);let e$=(e,t=8)=>e?e.length>t?`${e.substring(0,t)}…`:e:null,eL=e=>{navigator.clipboard.writeText(e)},eU=({a2aMetadata:e,timeToFirstToken:s,totalLatency:r})=>{let[a,n]=(0,I.useState)(!1);if(!e&&!s&&!r)return null;let{taskId:i,contextId:o,status:l,metadata:c}=e||{},h=(e=>{if(!e)return null;try{return new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return e}})(l?.timestamp);return(0,t.jsxs)("div",{className:"a2a-metrics mt-3 pt-2 border-t border-gray-200 text-xs",children:[(0,t.jsxs)("div",{className:"flex items-center mb-2 text-gray-600",children:[(0,t.jsx)(p.RobotOutlined,{className:"mr-1.5 text-blue-500"}),(0,t.jsx)("span",{className:"font-medium text-gray-700",children:"A2A Metadata"})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-gray-500 ml-4",children:[l?.state&&(0,t.jsxs)("span",{className:`inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium ${(e=>{switch(e){case"completed":return"bg-green-100 text-green-700";case"working":case"submitted":return"bg-blue-100 text-blue-700";case"failed":case"canceled":return"bg-red-100 text-red-700";default:return"bg-gray-100 text-gray-700"}})(l.state)}`,children:[(e=>{switch(e){case"completed":return(0,t.jsx)(eA.CheckCircleOutlined,{className:"text-green-500"});case"working":case"submitted":return(0,t.jsx)(u.LoadingOutlined,{className:"text-blue-500"});case"failed":case"canceled":return(0,t.jsx)(eb.ExclamationCircleOutlined,{className:"text-red-500"});default:return(0,t.jsx)(eP.ClockCircleOutlined,{className:"text-gray-500"})}})(l.state),(0,t.jsx)("span",{className:"ml-1 capitalize",children:l.state})]}),h&&(0,t.jsx)(A.Tooltip,{title:l?.timestamp,children:(0,t.jsxs)("span",{className:"flex items-center",children:[(0,t.jsx)(eP.ClockCircleOutlined,{className:"mr-1"}),h]})}),void 0!==r&&(0,t.jsx)(A.Tooltip,{title:"Total latency",children:(0,t.jsxs)("span",{className:"flex items-center text-blue-600",children:[(0,t.jsx)(eP.ClockCircleOutlined,{className:"mr-1"}),(r/1e3).toFixed(2),"s"]})}),void 0!==s&&(0,t.jsx)(A.Tooltip,{title:"Time to first token",children:(0,t.jsxs)("span",{className:"flex items-center text-green-600",children:["TTFT: ",(s/1e3).toFixed(2),"s"]})})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-3 text-gray-500 ml-4 mt-1.5",children:[i&&(0,t.jsx)(A.Tooltip,{title:`Click to copy: ${i}`,children:(0,t.jsxs)("span",{className:"flex items-center cursor-pointer hover:text-gray-700",onClick:()=>eL(i),children:[(0,t.jsx)(eM.FileTextOutlined,{className:"mr-1"}),"Task: ",e$(i),(0,t.jsx)(eO.CopyOutlined,{className:"ml-1 text-gray-400 hover:text-gray-600"})]})}),o&&(0,t.jsx)(A.Tooltip,{title:`Click to copy: ${o}`,children:(0,t.jsxs)("span",{className:"flex items-center cursor-pointer hover:text-gray-700",onClick:()=>eL(o),children:[(0,t.jsx)(d.LinkOutlined,{className:"mr-1"}),"Session: ",e$(o),(0,t.jsx)(eO.CopyOutlined,{className:"ml-1 text-gray-400 hover:text-gray-600"})]})}),(c||l?.message)&&(0,t.jsxs)(j.Button,{type:"text",size:"small",className:"text-xs text-blue-500 hover:text-blue-700 p-0 h-auto",onClick:()=>n(!a),children:[a?(0,t.jsx)(eI.DownOutlined,{}):(0,t.jsx)(eR.RightOutlined,{}),(0,t.jsx)("span",{className:"ml-1",children:"Details"})]})]}),a&&(0,t.jsxs)("div",{className:"mt-2 ml-4 p-3 bg-gray-50 rounded-md text-gray-600 border border-gray-200",children:[l?.message&&(0,t.jsxs)("div",{className:"mb-2",children:[(0,t.jsx)("span",{className:"font-medium text-gray-700",children:"Status Message:"}),(0,t.jsx)("span",{className:"ml-2",children:l.message})]}),i&&(0,t.jsxs)("div",{className:"mb-1.5 flex items-center",children:[(0,t.jsx)("span",{className:"font-medium text-gray-700 w-24",children:"Task ID:"}),(0,t.jsx)("code",{className:"ml-2 px-2 py-1 bg-white border border-gray-200 rounded text-xs font-mono",children:i}),(0,t.jsx)(eO.CopyOutlined,{className:"ml-2 cursor-pointer text-gray-400 hover:text-blue-500",onClick:()=>eL(i)})]}),o&&(0,t.jsxs)("div",{className:"mb-1.5 flex items-center",children:[(0,t.jsx)("span",{className:"font-medium text-gray-700 w-24",children:"Session ID:"}),(0,t.jsx)("code",{className:"ml-2 px-2 py-1 bg-white border border-gray-200 rounded text-xs font-mono",children:o}),(0,t.jsx)(eO.CopyOutlined,{className:"ml-2 cursor-pointer text-gray-400 hover:text-blue-500",onClick:()=>eL(o)})]}),c&&Object.keys(c).length>0&&(0,t.jsxs)("div",{className:"mt-3",children:[(0,t.jsx)("span",{className:"font-medium text-gray-700",children:"Custom Metadata:"}),(0,t.jsx)("pre",{className:"mt-1.5 p-2 bg-white border border-gray-200 rounded text-xs font-mono overflow-x-auto whitespace-pre-wrap",children:JSON.stringify(c,null,2)})]})]})]})},eD=({message:e})=>e.isAudio&&"string"==typeof e.content?(0,t.jsx)("div",{className:"mb-2",children:(0,t.jsx)("audio",{controls:!0,src:e.content,className:"max-w-full",style:{maxWidth:"500px"},children:"Your browser does not support the audio element."})}):null;var eq=e.i(657688);let eB=({message:e})=>{if(!ef(e))return null;let s="string"==typeof e.content&&e.content.includes("[PDF attached]");return(0,t.jsx)("div",{className:"mb-2",children:s?(0,t.jsx)("div",{className:"w-64 h-32 rounded-md border border-gray-200 bg-red-50 flex items-center justify-center",children:(0,t.jsx)(eN,{style:{fontSize:"48px",color:"#dc2626"}})}):(0,t.jsx)(eq.default,{src:e.imagePreviewUrl||"",alt:"User uploaded image",width:256,height:200,className:"max-w-64 rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"200px",width:"auto",height:"auto"}})})};e.s(["default",0,eB],843153);var eW=e.i(362024),eH=e.i(737434);let ez={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M553.1 509.1l-77.8 99.2-41.1-52.4a8 8 0 00-12.6 0l-99.8 127.2a7.98 7.98 0 006.3 12.9H696c6.7 0 10.4-7.7 6.3-12.9l-136.5-174a8.1 8.1 0 00-12.7 0zM360 442a40 40 0 1080 0 40 40 0 10-80 0zm494.6-153.4L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z"}}]},name:"file-image",theme:"outlined"};var eF=I.forwardRef(function(e,t){return I.createElement(ek.default,(0,eS.default)({},e,{ref:t,icon:ez}))});let eJ=({code:e,containerId:s,annotations:r=[],accessToken:a})=>{let[i,o]=(0,I.useState)({}),[l,c]=(0,I.useState)({}),d=(0,W.getProxyBaseUrl)();(0,I.useEffect)(()=>{let e=async()=>{for(let e of r)if((e.filename?.toLowerCase().endsWith(".png")||e.filename?.toLowerCase().endsWith(".jpg")||e.filename?.toLowerCase().endsWith(".jpeg")||e.filename?.toLowerCase().endsWith(".gif"))&&e.container_id&&e.file_id){c(t=>({...t,[e.file_id]:!0}));try{let t=await fetch(`${d}/v1/containers/${e.container_id}/files/${e.file_id}/content`,{headers:{[(0,W.getGlobalLitellmHeaderName)()]:`Bearer ${a}`}});if(t.ok){let s=await t.blob(),r=URL.createObjectURL(s);o(t=>({...t,[e.file_id]:r}))}}catch(e){console.error("Error fetching image:",e)}finally{c(t=>({...t,[e.file_id]:!1}))}}};return r.length>0&&a&&e(),()=>{Object.values(i).forEach(e=>URL.revokeObjectURL(e))}},[r,a,d]);let h=async e=>{try{let t=await fetch(`${d}/v1/containers/${e.container_id}/files/${e.file_id}/content`,{headers:{[(0,W.getGlobalLitellmHeaderName)()]:`Bearer ${a}`}});if(t.ok){let s=await t.blob(),r=URL.createObjectURL(s),a=document.createElement("a");a.href=r,a.download=e.filename||`file_${e.file_id}`,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(r)}}catch(e){console.error("Error downloading file:",e)}},p=r.filter(e=>e.filename?.toLowerCase().endsWith(".png")||e.filename?.toLowerCase().endsWith(".jpg")||e.filename?.toLowerCase().endsWith(".jpeg")||e.filename?.toLowerCase().endsWith(".gif")),m=r.filter(e=>!e.filename?.toLowerCase().endsWith(".png")&&!e.filename?.toLowerCase().endsWith(".jpg")&&!e.filename?.toLowerCase().endsWith(".jpeg")&&!e.filename?.toLowerCase().endsWith(".gif"));return e||0!==r.length?(0,t.jsxs)("div",{className:"mt-3 space-y-3",children:[e&&(0,t.jsx)(eW.Collapse,{size:"small",items:[{key:"code",label:(0,t.jsxs)("span",{className:"flex items-center gap-2 text-sm text-gray-600",children:[(0,t.jsx)(n.CodeOutlined,{})," Python Code Executed"]}),children:(0,t.jsx)(R.Prism,{language:"python",style:M.coy,customStyle:{margin:0,borderRadius:"6px",fontSize:"12px",maxHeight:"300px",overflow:"auto"},children:e})}]}),p.map(e=>(0,t.jsx)("div",{className:"rounded-lg border border-gray-200 overflow-hidden",children:l[e.file_id]?(0,t.jsxs)("div",{className:"flex items-center justify-center p-8 bg-gray-50",children:[(0,t.jsx)(C.Spin,{indicator:(0,t.jsx)(u.LoadingOutlined,{spin:!0})}),(0,t.jsx)("span",{className:"ml-2 text-sm text-gray-500",children:"Loading image..."})]}):i[e.file_id]?(0,t.jsxs)("div",{children:[(0,t.jsx)("img",{src:i[e.file_id],alt:e.filename||"Generated chart",className:"max-w-full",style:{maxHeight:"400px"}}),(0,t.jsxs)("div",{className:"flex items-center justify-between px-3 py-2 bg-gray-50 border-t border-gray-200",children:[(0,t.jsxs)("span",{className:"text-xs text-gray-500 flex items-center gap-1",children:[(0,t.jsx)(eF,{})," ",e.filename]}),(0,t.jsxs)("button",{onClick:()=>h(e),className:"text-xs text-blue-500 hover:text-blue-700 flex items-center gap-1",children:[(0,t.jsx)(eH.DownloadOutlined,{})," Download"]})]})]}):(0,t.jsx)("div",{className:"flex items-center justify-center p-4 bg-gray-50",children:(0,t.jsx)("span",{className:"text-sm text-gray-400",children:"Image not available"})})},e.file_id)),m.length>0&&(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:m.map(e=>(0,t.jsxs)("button",{onClick:()=>h(e),className:"flex items-center gap-2 px-3 py-2 bg-gray-50 border border-gray-200 rounded-lg hover:bg-gray-100 transition-colors",children:[(0,t.jsx)(eM.FileTextOutlined,{className:"text-blue-500"}),(0,t.jsx)("span",{className:"text-sm",children:e.filename}),(0,t.jsx)(eH.DownloadOutlined,{className:"text-gray-400"})]},e.file_id))})]}):null};var eG=e.i(355343),eV=e.i(966988),eK=e.i(989022);let eX=async(e,t)=>{let s=await new Promise((e,s)=>{let r=new FileReader;r.onload=()=>{e(r.result.split(",")[1])},r.onerror=s,r.readAsDataURL(t)}),r=t.type||(t.name.toLowerCase().endsWith(".pdf")?"application/pdf":"image/jpeg");return{role:"user",content:[{type:"input_text",text:e},{type:"input_image",image_url:`data:${r};base64,${s}`}]}},eY=(e,t,s,r)=>{let a="";t&&r&&(a=r.toLowerCase().endsWith(".pdf")?"[PDF attached]":"[Image attached]");let n={role:"user",content:t?`${e} ${a}`:e};return t&&s&&(n.imagePreviewUrl=s),n},eQ=({message:e})=>{if(!("user"===e.role&&"string"==typeof e.content&&(e.content.includes("[Image attached]")||e.content.includes("[PDF attached]"))&&e.imagePreviewUrl))return null;let s="string"==typeof e.content&&e.content.includes("[PDF attached]");return(0,t.jsx)("div",{className:"mb-2",children:s?(0,t.jsx)("div",{className:"w-64 h-32 rounded-md border border-gray-200 bg-red-50 flex items-center justify-center",children:(0,t.jsx)(eN,{style:{fontSize:"48px",color:"#dc2626"}})}):(0,t.jsx)("img",{src:e.imagePreviewUrl,alt:"User uploaded image",className:"max-w-64 rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"200px"}})})};function eZ({searchResults:e}){let[s,r]=(0,I.useState)(!0),[a,n]=(0,I.useState)({});if(!e||0===e.length)return null;let o=e.reduce((e,t)=>e+t.data.length,0);return(0,t.jsxs)("div",{className:"search-results-content mt-1 mb-2",children:[(0,t.jsxs)(j.Button,{type:"text",className:"flex items-center text-xs text-gray-500 hover:text-gray-700",onClick:()=>r(!s),icon:(0,t.jsx)(i.DatabaseOutlined,{}),children:[s?"Hide sources":`Show sources (${o})`,s?(0,t.jsx)(eI.DownOutlined,{className:"ml-1"}):(0,t.jsx)(eR.RightOutlined,{className:"ml-1"})]}),s&&(0,t.jsx)("div",{className:"mt-2 p-3 bg-gray-50 border border-gray-200 rounded-md text-sm",children:(0,t.jsx)("div",{className:"space-y-3",children:e.map((e,s)=>(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"text-xs text-gray-600 mb-2 flex items-center gap-2",children:[(0,t.jsx)("span",{className:"font-medium",children:"Query:"}),(0,t.jsxs)("span",{className:"italic",children:['"',e.search_query,'"']}),(0,t.jsx)("span",{className:"text-gray-400",children:"•"}),(0,t.jsxs)("span",{className:"text-gray-500",children:[e.data.length," result",1!==e.data.length?"s":""]})]}),(0,t.jsx)("div",{className:"space-y-2",children:e.data.map((e,r)=>{let i=a[`${s}-${r}`]||!1;return(0,t.jsxs)("div",{className:"border border-gray-200 rounded-md overflow-hidden bg-white",children:[(0,t.jsx)("div",{className:"flex items-center justify-between p-2 cursor-pointer hover:bg-gray-50 transition-colors",onClick:()=>{let e;return e=`${s}-${r}`,void n(t=>({...t,[e]:!t[e]}))},children:(0,t.jsxs)("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[(0,t.jsx)("svg",{className:`w-4 h-4 text-gray-400 transition-transform flex-shrink-0 ${i?"transform rotate-90":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,t.jsx)(eM.FileTextOutlined,{className:"text-gray-400 flex-shrink-0",style:{fontSize:"12px"}}),(0,t.jsx)("span",{className:"text-xs font-medium text-gray-700 truncate",children:e.filename||e.file_id||`Result ${r+1}`}),(0,t.jsx)("span",{className:"text-xs px-2 py-0.5 rounded bg-blue-100 text-blue-700 font-mono flex-shrink-0",children:e.score.toFixed(3)})]})}),i&&(0,t.jsx)("div",{className:"border-t border-gray-200 bg-white",children:(0,t.jsxs)("div",{className:"p-3 space-y-2",children:[e.content.map((e,s)=>(0,t.jsx)("div",{children:(0,t.jsx)("div",{className:"text-xs font-mono bg-gray-50 p-2 rounded text-gray-800 whitespace-pre-wrap break-words",children:e.text})},s)),e.attributes&&Object.keys(e.attributes).length>0&&(0,t.jsxs)("div",{className:"mt-2 pt-2 border-t border-gray-100",children:[(0,t.jsx)("div",{className:"text-xs text-gray-500 mb-1 font-medium",children:"Metadata:"}),(0,t.jsx)("div",{className:"space-y-1",children:Object.entries(e.attributes).map(([e,s])=>(0,t.jsxs)("div",{className:"text-xs flex gap-2",children:[(0,t.jsxs)("span",{className:"text-gray-500 font-medium",children:[e,":"]}),(0,t.jsx)("span",{className:"text-gray-700 font-mono break-all",children:String(s)})]},e))})]})]})})]},r)})})]},s))})})]})}e.s(["SearchResultsDisplay",0,eZ],152401);let e0=function({message:e,isLastMessage:s,endpointType:r,mcpEvents:a,codeInterpreterResult:n,accessToken:i}){let o="user"===e.role;return(0,t.jsx)("div",{className:`mb-4 ${o?"text-right":"text-left"}`,children:(0,t.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3.5 px-4",style:{backgroundColor:o?"#f0f8ff":"#ffffff",border:o?"1px solid #e6f0fa":"1px solid #f0f0f0",textAlign:"left"},children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,t.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full mr-1",style:{backgroundColor:o?"#e6f0fa":"#f5f5f5"},children:o?(0,t.jsx)(eT.UserOutlined,{style:{fontSize:"12px",color:"#2563eb"}}):(0,t.jsx)(p.RobotOutlined,{style:{fontSize:"12px",color:"#4b5563"}})}),(0,t.jsx)("strong",{className:"text-sm capitalize",children:e.role}),"assistant"===e.role&&e.model&&(0,t.jsx)("span",{className:"text-xs px-2 py-0.5 rounded bg-gray-100 text-gray-600 font-normal",children:e.model})]}),e.reasoningContent&&(0,t.jsx)(eV.default,{reasoningContent:e.reasoningContent}),"assistant"===e.role&&s&&a.length>0&&(r===eo.EndpointType.RESPONSES||r===eo.EndpointType.CHAT)&&(0,t.jsx)("div",{className:"mb-3",children:(0,t.jsx)(eG.default,{events:a})}),"assistant"===e.role&&e.searchResults&&(0,t.jsx)(eZ,{searchResults:e.searchResults}),"assistant"===e.role&&s&&n&&r===eo.EndpointType.RESPONSES&&(0,t.jsx)(eJ,{code:n.code,containerId:n.containerId,annotations:n.annotations,accessToken:i}),(0,t.jsxs)("div",{className:"whitespace-pre-wrap break-words max-w-full message-content",style:{wordWrap:"break-word",overflowWrap:"break-word",wordBreak:"break-word",hyphens:"auto"},children:[e.isImage?(0,t.jsx)("img",{src:"string"==typeof e.content?e.content:"",alt:"Generated image",className:"max-w-full rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"500px"}}):e.isAudio?(0,t.jsx)(eD,{message:e}):(0,t.jsxs)(t.Fragment,{children:[r===eo.EndpointType.RESPONSES&&(0,t.jsx)(eQ,{message:e}),r===eo.EndpointType.CHAT&&(0,t.jsx)(eB,{message:e}),(0,t.jsx)(eC.default,{components:{code({node:e,inline:s,className:r,children:a,...n}){let i=/language-(\w+)/.exec(r||"");return!s&&i?(0,t.jsx)(R.Prism,{style:M.coy,language:i[1],PreTag:"div",className:"rounded-md my-2",wrapLines:!0,wrapLongLines:!0,...n,children:String(a).replace(/\n$/,"")}):(0,t.jsx)("code",{className:`${r} px-1.5 py-0.5 rounded bg-gray-100 text-sm font-mono`,style:{wordBreak:"break-word"},...n,children:a})},pre:({node:e,...s})=>(0,t.jsx)("pre",{style:{overflowX:"auto",maxWidth:"100%"},...s})},children:"string"==typeof e.content?e.content:""}),e.image&&(0,t.jsx)("div",{className:"mt-3",children:(0,t.jsx)("img",{src:e.image.url,alt:"Generated image",className:"max-w-full rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"500px"}})})]}),"assistant"===e.role&&(e.timeToFirstToken||e.totalLatency||e.usage)&&!e.a2aMetadata&&(0,t.jsx)(eK.default,{timeToFirstToken:e.timeToFirstToken,totalLatency:e.totalLatency,usage:e.usage,toolName:e.toolName}),"assistant"===e.role&&e.a2aMetadata&&(0,t.jsx)(eU,{a2aMetadata:e.a2aMetadata,timeToFirstToken:e.timeToFirstToken,totalLatency:e.totalLatency})]})]})})};var eu=eu;let{Dragger:e1}=O.Upload,e2=({responsesUploadedImage:e,responsesImagePreviewUrl:s,onImageUpload:r,onRemoveImage:a})=>(0,t.jsx)(t.Fragment,{children:!e&&(0,t.jsx)(e1,{beforeUpload:r,accept:"image/*,.pdf",showUploadList:!1,className:"inline-block",style:{padding:0,border:"none",background:"none"},children:(0,t.jsx)(A.Tooltip,{title:"Attach image or PDF",children:(0,t.jsx)("button",{type:"button",className:"flex items-center justify-center w-8 h-8 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-md transition-colors",children:(0,t.jsx)(eu.default,{style:{fontSize:"16px"}})})})})}),e4=({endpointType:e,responsesSessionId:s,useApiSessionManagement:r,onToggleSessionManagement:a})=>e!==eo.EndpointType.RESPONSES?null:(0,t.jsxs)("div",{className:"mb-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Session Management"}),(0,t.jsx)(A.Tooltip,{title:"Choose between LiteLLM API session management (using previous_response_id) or UI-based session management (using chat history)",children:(0,t.jsx)(l.InfoCircleOutlined,{className:"text-gray-400",style:{fontSize:"12px"}})})]}),(0,t.jsx)(ey.Switch,{checked:r,onChange:a,checkedChildren:"API",unCheckedChildren:"UI",size:"small"})]}),(0,t.jsxs)("div",{className:`text-xs p-2 rounded-md ${s?"bg-green-50 text-green-700 border border-green-200":"bg-blue-50 text-blue-700 border border-blue-200"}`,children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)(l.InfoCircleOutlined,{style:{fontSize:"12px"}}),(()=>{if(!s)return r?"API Session: Ready":"UI Session: Ready";let e=r?"Response ID":"UI Session",t=s.slice(0,10);return`${e}: ${t}...`})()]}),s&&(0,t.jsx)(A.Tooltip,{title:(0,t.jsxs)("div",{className:"text-xs",children:[(0,t.jsx)("div",{className:"mb-1",children:"Copy response ID to continue session:"}),(0,t.jsx)("div",{className:"bg-gray-800 text-gray-100 p-2 rounded font-mono text-xs whitespace-pre-wrap",children:`curl -X POST "your-proxy-url/v1/responses" \\ - -H "Authorization: Bearer your-api-key" \\ - -H "Content-Type: application/json" \\ - -d '{ - "model": "your-model", - "input": [{"role": "user", "content": "your message", "type": "message"}], - "previous_response_id": "${s}", - "stream": true - }'`})]}),overlayStyle:{maxWidth:"500px"},children:(0,t.jsx)("button",{onClick:()=>{s&&(navigator.clipboard.writeText(s),B.default.success("Response ID copied to clipboard!"))},className:"ml-2 p-1 hover:bg-green-100 rounded transition-colors",children:(0,t.jsx)(eO.CopyOutlined,{style:{fontSize:"12px"}})})})]}),(0,t.jsx)("div",{className:"text-xs opacity-75 mt-1",children:s?r?"LiteLLM API session active - context maintained server-side":"UI session active - context maintained client-side":r?"LiteLLM will manage session using previous_response_id":"UI will manage session using chat history"})]})]});var e6={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M682 455V311l-76 76v68c-.1 50.7-42 92.1-94 92a95.8 95.8 0 01-52-15l-54 55c29.1 22.4 65.9 36 106 36 93.8 0 170-75.1 170-168z"}},{tag:"path",attrs:{d:"M833 446h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254-63 0-120.7-23-165-61l-54 54a334.01 334.01 0 00179 81v102H326c-13.9 0-24.9 14.3-25 32v36c.1 4.4 2.9 8 6 8h408c3.2 0 6-3.6 6-8v-36c0-17.7-11-32-25-32H547V782c165.3-17.9 294-157.9 294-328 0-4.4-3.6-8-8-8zm13.1-377.7l-43.5-41.9a8 8 0 00-11.2.1l-129 129C634.3 101.2 577 64 511 64c-93.9 0-170 75.3-170 168v224c0 6.7.4 13.3 1.2 19.8l-68 68A252.33 252.33 0 01258 454c-.2-4.4-3.8-8-8-8h-60c-4.4 0-8 3.6-8 8 0 53 12.5 103 34.6 147.4l-137 137a8.03 8.03 0 000 11.3l42.7 42.7c3.1 3.1 8.2 3.1 11.3 0L846.2 79.8l.1-.1c3.1-3.2 3-8.3-.2-11.4zM417 401V232c0-50.6 41.9-92 94-92 46 0 84.1 32.3 92.3 74.7L417 401z"}}]},name:"audio-muted",theme:"outlined"},e3=I.forwardRef(function(e,t){return I.createElement(ek.default,(0,eS.default)({},e,{ref:t,icon:e6}))}),e5=e.i(793916),e8=e.i(518617),e7=e.i(84899);let{Text:e9}=P.Typography,te=({accessToken:e,selectedModel:s,customProxyBaseUrl:r,selectedGuardrails:a})=>{let[n,i]=(0,I.useState)([]),[o,l]=(0,I.useState)(""),[c,d]=(0,I.useState)(!1),[u,h]=(0,I.useState)(!1),[p,m]=(0,I.useState)(!1),[g,y]=(0,I.useState)("alloy"),x=(0,I.useRef)(null),b=(0,I.useRef)(null),v=(0,I.useRef)(null),w=(0,I.useRef)(null);(0,I.useRef)([]),(0,I.useRef)(!1);let _=(0,I.useRef)(null),S=(0,I.useRef)(0),N=(0,I.useCallback)(()=>{_.current?.scrollIntoView({behavior:"smooth"})},[]);(0,I.useEffect)(()=>{N()},[n,N]);let E=(0,I.useCallback)((e,t)=>{i(s=>[...s,{role:e,content:t,timestamp:new Date}])},[]),C=(0,I.useCallback)(e=>{i(t=>{let s=t[t.length-1];return s&&"assistant"===s.role?[...t.slice(0,-1),{...s,content:s.content+e}]:[...t,{role:"assistant",content:e,timestamp:new Date}]})},[]),A=(0,I.useCallback)(e=>{let t=atob(e),s=new Uint8Array(t.length);for(let e=0;e{if(!x.current){if(!s)return void E("status","Please select a model first");h(!0);try{b.current=new AudioContext({sampleRate:24e3});let t=(r||(0,W.getProxyBaseUrl)()).replace(/^http/,"ws"),n=`${t}/v1/realtime?model=${encodeURIComponent(s)}`;a&&a.length>0&&(n+=`&guardrails=${encodeURIComponent(a.join(","))}`);let o=new WebSocket(n,["realtime",`openai-insecure-api-key.${e}`]);o.onopen=()=>{d(!0),h(!1),E("status","Connected to realtime API")},o.onmessage=async e=>{try{let t=e.data;t instanceof Blob?t=await t.text():t instanceof ArrayBuffer&&(t=new TextDecoder().decode(t));let s=JSON.parse(t),r=s.type;"session.created"===r?o.send(JSON.stringify({type:"session.update",session:{type:"realtime",modalities:["text","audio"],voice:g,input_audio_format:"pcm16",output_audio_format:"pcm16",input_audio_transcription:{model:"gpt-4o-mini-transcribe"},turn_detection:null}})):"session.updated"===r||("response.output_audio.delta"===r||"response.audio.delta"===r?s.delta&&A(s.delta):"response.output_text.delta"===r||"response.output_audio_transcript.delta"===r||"response.audio_transcript.delta"===r||"response.text.delta"===r?s.delta&&C(s.delta):"conversation.item.input_audio_transcription.completed"===r?s.transcript&&E("user",s.transcript):"response.done"===r?i(e=>{let t=e[e.length-1];if(t&&"assistant"===t.role&&t.content)return e;let r=s.response?.output||[],a=[];for(let e of r)for(let t of e.content||[]){let e=t.text||t.transcript;e&&a.push(e)}return a.length>0?[...e,{role:"assistant",content:a.join(""),timestamp:new Date}]:e}):"error"===r&&E("status",`Error: ${s.error?.message||JSON.stringify(s.error)}`))}catch{}},o.onerror=()=>{E("status","WebSocket error"),d(!1),h(!1)},o.onclose=()=>{E("status","Disconnected"),d(!1),h(!1),x.current=null},x.current=o}catch(e){E("status",`Connection failed: ${e.message}`),h(!1)}}},[e,s,g,r,a,E,C,A]),O=(0,I.useCallback)(()=>{M(),x.current?.close(),x.current=null,b.current?.close(),b.current=null,S.current=0,$.current=!1,d(!1)},[]),R=(0,I.useCallback)(async()=>{if(x.current&&x.current.readyState===WebSocket.OPEN){x.current.send(JSON.stringify({type:"session.update",session:{type:"realtime",modalities:["text","audio"],voice:g,input_audio_format:"pcm16",output_audio_format:"pcm16",input_audio_transcription:{model:"gpt-4o-mini-transcribe"},turn_detection:{type:"server_vad"}}}));try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});v.current=e;let t=b.current||new AudioContext({sampleRate:24e3});b.current=t;let s=t.createMediaStreamSource(e),r=t.createScriptProcessor(4096,1,1);w.current=r,r.onaudioprocess=e=>{let s;if(!x.current||x.current.readyState!==WebSocket.OPEN)return;let r=e.inputBuffer.getChannelData(0),a=t.sampleRate;if(24e3!==a){let e=a/24e3,t=Math.round(r.length/e);s=new Float32Array(t);for(let a=0;a{w.current?.disconnect(),w.current=null,v.current?.getTracks().forEach(e=>e.stop()),v.current=null,m(!1)},[]),$=(0,I.useRef)(!1),L=(0,I.useCallback)(()=>{!x.current||x.current.readyState!==WebSocket.OPEN||$.current||($.current=!0,x.current.send(JSON.stringify({type:"session.update",session:{type:"realtime",modalities:["text","audio"],voice:g,input_audio_format:"pcm16",output_audio_format:"pcm16",input_audio_transcription:{model:"gpt-4o-mini-transcribe"},turn_detection:null}})))},[g]),U=(0,I.useCallback)(()=>{if(!o.trim()||!x.current||x.current.readyState!==WebSocket.OPEN)return;let e=o.trim();E("user",e),l(""),x.current.send(JSON.stringify({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:e}]}})),x.current.send(JSON.stringify({type:"response.create"}))},[o,E,L]);return(0,I.useEffect)(()=>()=>{x.current?.close(),b.current?.close(),v.current?.getTracks().forEach(e=>e.stop())},[]),(0,t.jsxs)("div",{className:"flex flex-col h-full",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-gray-200 bg-gray-50",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)(f.SoundOutlined,{className:"text-lg text-blue-500"}),(0,t.jsx)(e9,{className:"font-semibold text-gray-800",children:"Realtime Voice Chat"}),(0,t.jsx)("span",{className:`inline-block w-2 h-2 rounded-full ${c?"bg-green-500":"bg-gray-300"}`}),(0,t.jsx)(e9,{className:"text-xs text-gray-500",children:c?"Connected":u?"Connecting...":"Disconnected"})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(T.Select,{size:"small",value:g,onChange:y,options:ec,style:{width:220},disabled:c}),c?(0,t.jsx)(j.Button,{danger:!0,onClick:O,size:"small",icon:(0,t.jsx)(e8.CloseCircleOutlined,{}),children:"Disconnect"}):(0,t.jsx)(j.Button,{type:"primary",onClick:P,loading:u,size:"small",children:"Connect"})]})]}),(0,t.jsxs)("div",{className:"flex-1 overflow-y-auto p-4 space-y-3",children:[0===n.length&&!c&&(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center h-full text-gray-400 gap-3",children:[(0,t.jsx)(f.SoundOutlined,{style:{fontSize:48}}),(0,t.jsx)(e9,{className:"text-lg text-gray-500",children:"Realtime Voice Playground"}),(0,t.jsxs)(e9,{className:"text-sm text-gray-400 text-center max-w-md",children:["Click ",(0,t.jsx)("b",{children:"Connect"})," to start a realtime session. You can speak using your microphone or type messages. The AI will respond with voice and text."]})]}),n.map((e,s)=>(0,t.jsx)("div",{className:`flex ${"user"===e.role?"justify-end":"status"===e.role?"justify-center":"justify-start"}`,children:"status"===e.role?(0,t.jsx)("div",{className:"text-xs text-gray-400 italic px-3 py-1",children:e.content}):(0,t.jsxs)("div",{className:`max-w-[75%] rounded-2xl px-4 py-2.5 ${"user"===e.role?"bg-blue-500 text-white rounded-br-md":"bg-gray-100 text-gray-800 rounded-bl-md"}`,children:[(0,t.jsx)("div",{className:"text-xs font-medium mb-0.5 opacity-70",children:"user"===e.role?"You":"AI"}),(0,t.jsx)("div",{className:"text-sm whitespace-pre-wrap",children:e.content})]})},s)),(0,t.jsx)("div",{ref:_})]}),c&&(0,t.jsxs)("div",{className:"border-t border-gray-200 p-3 bg-white",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(j.Button,{shape:"circle",size:"large",type:p?"primary":"default",danger:p,icon:p?(0,t.jsx)(e3,{}):(0,t.jsx)(e5.AudioOutlined,{}),onClick:p?M:R,title:p?"Stop recording":"Start recording",className:p?"animate-pulse":""}),(0,t.jsx)(k.Input,{placeholder:"Type a message or use the mic...",value:o,onChange:e=>l(e.target.value),onPressEnter:U,className:"flex-1",size:"large"}),(0,t.jsx)(j.Button,{type:"primary",icon:(0,t.jsx)(e7.SendOutlined,{}),onClick:U,disabled:!o.trim(),size:"large"})]}),p&&(0,t.jsxs)("div",{className:"mt-2 flex items-center gap-2 text-red-500 text-xs",children:[(0,t.jsx)("span",{className:"inline-block w-2 h-2 rounded-full bg-red-500 animate-pulse"}),"Listening — speak into your microphone. Server VAD will detect when you stop."]})]})]})};var tt=e.i(122550),ts=e.i(434166);let{TextArea:tr}=k.Input,{Dragger:ta}=O.Upload,tn=new Set([eo.EndpointType.CHAT,eo.EndpointType.RESPONSES,eo.EndpointType.MCP]);e.s(["default",0,({accessToken:e,token:k,userRole:O,userID:Z,disabledPersonalKeyCreation:er,proxySettings:ea,simplified:en=!1,fixedModel:el})=>{let[ed,eu]=(0,I.useState)([]),[eh,ef]=(0,I.useState)([]),[ey,ex]=(0,I.useState)(!1),[eb,eS]=(0,I.useState)(null),[ej,ek]=(0,I.useState)(()=>{let e=sessionStorage.getItem("selectedMCPServers");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedMCPServers from sessionStorage",e),[]}}),[eN,eT]=(0,I.useState)(!1),[eC,eA]=(0,I.useState)({}),[eP,eO]=(0,I.useState)(void 0),eI=(0,I.useRef)(null),[eR,eM]=(0,I.useState)(()=>{let e=sessionStorage.getItem("mcpServerToolRestrictions");try{return e?JSON.parse(e):{}}catch(e){return console.error("Error parsing mcpServerToolRestrictions from sessionStorage",e),{}}}),{chatHistory:e$,setChatHistory:eL,mcpEvents:eU,setMCPEvents:eD,messageTraceId:eq,setMessageTraceId:eB,responsesSessionId:eW,setResponsesSessionId:eH,useApiSessionManagement:ez,setUseApiSessionManagement:eF,updateTextUI:eJ,updateReasoningContent:eV,updateTimingData:eK,updateUsageData:eQ,updateA2AMetadata:eZ,updateTotalLatency:e1,updateSearchResults:e6,handleResponseId:e3,handleToggleSessionManagement:e5,handleMCPEvent:e8,updateImageUI:e7,updateEmbeddingsUI:e9,updateAudioUI:ti,updateChatImageUI:to,clearChatHistory:tl,clearMCPEvents:tc}=function({simplified:e}){let[t,s]=(0,I.useState)(()=>{if(e)return[];try{let e=sessionStorage.getItem("chatHistory");return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing chatHistory from sessionStorage",e),[]}}),[r,a]=(0,I.useState)([]),[n,i]=(0,I.useState)(()=>e?null:sessionStorage.getItem("messageTraceId")||null),[o,l]=(0,I.useState)(()=>e?null:sessionStorage.getItem("responsesSessionId")||null),[c,d]=(0,I.useState)(()=>{if(e)return!0;let t=sessionStorage.getItem("useApiSessionManagement");return!t||JSON.parse(t)});return(0,I.useEffect)(()=>{if(e||0===t.length)return;let s=setTimeout(()=>{sessionStorage.setItem("chatHistory",JSON.stringify(t))},500);return()=>{clearTimeout(s)}},[t,e]),(0,I.useEffect)(()=>{e||(n?sessionStorage.setItem("messageTraceId",n):sessionStorage.removeItem("messageTraceId"),o?sessionStorage.setItem("responsesSessionId",o):sessionStorage.removeItem("responsesSessionId"),sessionStorage.setItem("useApiSessionManagement",JSON.stringify(c)))},[n,o,c,e]),{chatHistory:t,setChatHistory:s,mcpEvents:r,setMCPEvents:a,messageTraceId:n,setMessageTraceId:i,responsesSessionId:o,setResponsesSessionId:l,useApiSessionManagement:c,setUseApiSessionManagement:d,updateTextUI:(e,t,r)=>{s(s=>{let a=s[s.length-1];if(!a||a.role!==e||a.isImage||a.isAudio)return[...s,{role:e,content:t,model:r}];{let e={...a,content:a.content+t,model:a.model??r};return[...s.slice(0,-1),e]}})},updateReasoningContent:e=>{s(t=>{let s=t[t.length-1];return!s||"assistant"!==s.role||s.isImage||s.isAudio?t.length>0&&"user"===t[t.length-1].role?[...t,{role:"assistant",content:"",reasoningContent:e}]:t:[...t.slice(0,t.length-1),{...s,reasoningContent:(s.reasoningContent||"")+e}]})},updateTimingData:e=>{s(t=>{let s=t[t.length-1];return s&&"assistant"===s.role?[...t.slice(0,t.length-1),{...s,timeToFirstToken:e}]:s&&"user"===s.role?[...t,{role:"assistant",content:"",timeToFirstToken:e}]:t})},updateUsageData:(e,t)=>{s(s=>{let r=s[s.length-1];if(r&&"assistant"===r.role){let a={...r,usage:e,toolName:t};return[...s.slice(0,s.length-1),a]}return s})},updateA2AMetadata:e=>{s(t=>{let s=t[t.length-1];if(s&&"assistant"===s.role){let r={...s,a2aMetadata:e};return[...t.slice(0,t.length-1),r]}return t})},updateTotalLatency:e=>{s(t=>{let s=t[t.length-1];return s&&"assistant"===s.role?[...t.slice(0,t.length-1),{...s,totalLatency:e}]:t})},updateSearchResults:e=>{s(t=>{let s=t[t.length-1];if(s&&"assistant"===s.role){let r={...s,searchResults:e};return[...t.slice(0,t.length-1),r]}return t})},handleResponseId:e=>{c&&l(e)},handleToggleSessionManagement:e=>{d(e),e||l(null)},handleMCPEvent:e=>{a(t=>e.item_id&&t.some(t=>t.item_id===e.item_id&&t.type===e.type&&(t.sequence_number===e.sequence_number||void 0===t.sequence_number&&void 0===e.sequence_number))?t:[...t,e])},updateImageUI:(e,t)=>{s(s=>[...s,{role:"assistant",content:e,model:t,isImage:!0}])},updateEmbeddingsUI:(e,t)=>{s(s=>[...s,{role:"assistant",content:(0,tt.truncateString)(e,100),model:t,isEmbeddings:!0}])},updateAudioUI:(e,t)=>{s(s=>[...s,{role:"assistant",content:e,model:t,isAudio:!0}])},updateChatImageUI:(e,t)=>{s(s=>{let r=s[s.length-1];if(!r||"assistant"!==r.role||r.isImage||r.isAudio)return[...s,{role:"assistant",content:"",model:t,image:{url:e,detail:"auto"}}];{let a={...r,image:{url:e,detail:"auto"},model:r.model??t};return[...s.slice(0,-1),a]}})},clearChatHistory:()=>{s(e=>(e.forEach(e=>{e.isAudio&&"string"==typeof e.content&&URL.revokeObjectURL(e.content)}),[])),i(null),l(null),a([]),e||(sessionStorage.removeItem("chatHistory"),sessionStorage.removeItem("messageTraceId"),sessionStorage.removeItem("responsesSessionId"))},clearMCPEvents:()=>{a([])}}}({simplified:en}),[td,tu]=(0,I.useState)(()=>{let e=(0,ts.getSecureItem)("apiKeySource");if(e)try{return JSON.parse(e)}catch(e){console.error("Error parsing apiKeySource from sessionStorage",e)}return er?"custom":"session"}),[th,tp]=(0,I.useState)(()=>(0,ts.getSecureItem)("apiKey")||""),[tm,tg]=(0,I.useState)(()=>sessionStorage.getItem("customProxyBaseUrl")||""),[tf,ty]=(0,I.useState)(""),[tx,tb]=(0,I.useState)(en?el:void 0),[tv,tw]=(0,I.useState)(!1),[t_,tS]=(0,I.useState)([]),[tj,tk]=(0,I.useState)([]),[tN,tE]=(0,I.useState)(void 0),tT=(0,I.useRef)(null),[tC,tA]=(0,I.useState)(()=>sessionStorage.getItem("endpointType")||eo.EndpointType.CHAT),[tP,tO]=(0,I.useState)(!1),tI=(0,I.useRef)(null),[tR,tM]=(0,I.useState)(()=>{let e=sessionStorage.getItem("selectedTags");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedTags from sessionStorage",e),[]}}),[t$,tL]=(0,I.useState)(()=>{let e=sessionStorage.getItem("selectedVoice");if(!e)return"alloy";try{return JSON.parse(e)}catch{return e}}),[tU,tD]=(0,I.useState)(()=>{let e=sessionStorage.getItem("selectedVectorStores");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedVectorStores from sessionStorage",e),[]}}),[tq,tB]=(0,I.useState)(()=>{let e=sessionStorage.getItem("selectedGuardrails");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedGuardrails from sessionStorage",e),[]}}),[tW,tH]=(0,I.useState)(()=>{let e=sessionStorage.getItem("selectedPolicies");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedPolicies from sessionStorage",e),[]}}),[tz,tF]=(0,I.useState)([]),[tJ,tG]=(0,I.useState)([]),[tV,tK]=(0,I.useState)(null),[tX,tY]=(0,I.useState)(null),[tQ,tZ]=(0,I.useState)(null),[t0,t1]=(0,I.useState)(null),[t2,t4]=(0,I.useState)(null),[t6,t3]=(0,I.useState)(!1),[t5,t8]=(0,I.useState)(""),[t7,t9]=(0,I.useState)("openai"),[se,st]=(0,I.useState)(1),[ss,sr]=(0,I.useState)(2048),[sa,sn]=(0,I.useState)(!1),[si,so]=(0,I.useState)(!1),sl=function(){let[e,t]=(0,I.useState)(()=>{let e=sessionStorage.getItem("codeInterpreterEnabled");return!!e&&JSON.parse(e)}),[s,r]=(0,I.useState)(null),a=(0,I.useCallback)(e=>{t(e),sessionStorage.setItem("codeInterpreterEnabled",JSON.stringify(e))},[]),n=(0,I.useCallback)(()=>{r(null)},[]),i=(0,I.useCallback)(()=>{a(!e)},[e,a]);return{enabled:e,result:s,setEnabled:a,setResult:r,clearResult:n,toggle:i}}(),sc=(0,I.useRef)(null),sd=async()=>{let t="session"===td?e:th;if(t){eT(!0);try{let[e,s]=await Promise.all([(0,W.fetchMCPServers)(t),(0,W.fetchMCPToolsets)(t).catch(()=>[])]);eu(Array.isArray(e)?e:e.data||[]),ef(Array.isArray(s)?s:[])}catch(e){console.error("Error fetching MCP servers:",e)}finally{eT(!1)}}};(0,I.useEffect)(()=>{en&&el&&(tb(el),tA(eo.EndpointType.CHAT))},[en,el]);let su=async t=>{let s="session"===td?e:th;if(s&&!eC[t])try{let e=await (0,W.listMCPTools)(s,t);eA(s=>({...s,[t]:e.tools||[]}))}catch(e){console.error(`Error fetching tools for server ${t}:`,e)}};(0,I.useEffect)(()=>{if(t6){let t=(0,ew.generateCodeSnippet)({apiKeySource:td,accessToken:e,apiKey:th,inputMessage:tf,chatHistory:e$,selectedTags:tR,selectedVectorStores:tU,selectedGuardrails:tq,selectedPolicies:tW,selectedMCPServers:ej,mcpServers:ed,mcpServerToolRestrictions:eR,endpointType:tC,selectedModel:tx,selectedSdk:t7,selectedVoice:t$,proxySettings:ea});t8(t)}},[t6,t7,td,e,th,tf,e$,tR,tU,tq,tW,ej,ed,eR,tC,tx,ea]),(0,I.useEffect)(()=>{try{(0,ts.setSecureItem)("apiKeySource",JSON.stringify(td)),(0,ts.setSecureItem)("apiKey",th)}catch{}sessionStorage.setItem("endpointType",tC),sessionStorage.setItem("selectedTags",JSON.stringify(tR)),sessionStorage.setItem("selectedVectorStores",JSON.stringify(tU)),sessionStorage.setItem("selectedGuardrails",JSON.stringify(tq)),sessionStorage.setItem("selectedPolicies",JSON.stringify(tW)),sessionStorage.setItem("selectedMCPServers",JSON.stringify(ej)),sessionStorage.setItem("mcpServerToolRestrictions",JSON.stringify(eR)),sessionStorage.setItem("selectedVoice",t$),sessionStorage.removeItem("selectedMCPTools"),en||(tx?sessionStorage.setItem("selectedModel",tx):sessionStorage.removeItem("selectedModel"))},[en,td,th,tx,tC,tR,tU,tq,tW,ej,eR,t$]),(0,I.useEffect)(()=>{let t="session"===td?e:th;if(!t||!k||!O||!Z)return void console.log("userApiKey or token or userRole or userID is missing = ",t,k,O,Z);let s=async()=>{try{if(!t)return void console.log("userApiKey is missing");let e=await (0,Q.fetchAvailableModels)(t);console.log("Fetched models:",e),tS(e);let s=e.some(e=>e.model_group===tx);e.length&&s||tb(void 0)}catch(e){console.error("Error fetching model info:",e)}};en||s(),sd()},[e,Z,O,td,th,k,en]),(0,I.useEffect)(()=>{if(tC===eo.EndpointType.MCP&&1===ej.length&&"__all__"!==ej[0]){let e=ej[0];if(e.startsWith("toolset:")){let t=e.slice(8),s=eh.find(e=>e.toolset_id===t);s&&[...new Set(s.tools.map(e=>e.server_id))].forEach(e=>{eC[e]||su(e)})}else eC[e]||su(e)}},[tC,ej,eC,eh]),(0,I.useEffect)(()=>{let t="session"===td?e:th;t&&tC===eo.EndpointType.A2A_AGENTS&&(async()=>{try{let e=await (0,Y.fetchAvailableAgents)(t,tm||void 0);tk(e),tN&&!e.some(e=>e.agent_name===tN)&&tE(void 0)}catch(e){console.error("Error fetching agents:",e)}})()},[e,td,th,tC,tm,tN]),(0,I.useEffect)(()=>{sc.current&&setTimeout(()=>{sc.current?.scrollIntoView({behavior:"smooth",block:"end"})},100)},[e$]);let sh=e=>{tF(t=>[...t,e]);let t=URL.createObjectURL(e),s=t.startsWith("blob:")?t:"";return tG(e=>[...e,s]),!1},sp=()=>{tJ.forEach(e=>{URL.revokeObjectURL(e)}),tF([]),tG([])},sm=()=>{tX&&URL.revokeObjectURL(tX),tK(null),tY(null)},sg=()=>{t0&&URL.revokeObjectURL(t0),tZ(null),t1(null)},sf=()=>{t4(null)},sy=async()=>{let t;if(""===tf.trim()&&tC!==eo.EndpointType.TRANSCRIPTION&&tC!==eo.EndpointType.MCP)return;if(tC===eo.EndpointType.IMAGE_EDITS&&0===tz.length)return void B.default.fromBackend("Please upload at least one image for editing");if(tC===eo.EndpointType.TRANSCRIPTION&&!t2)return void B.default.fromBackend("Please upload an audio file for transcription");if(tC===eo.EndpointType.A2A_AGENTS&&!tN)return void B.default.fromBackend("Please select an agent to send a message");let s={};if(tC===eo.EndpointType.MCP){let e=1===ej.length&&"__all__"!==ej[0]?ej[0]:null;if(!e)return void B.default.fromBackend("Please select an MCP server to test");if(e.startsWith("toolset:"),!eP)return void B.default.fromBackend("Please select an MCP tool to call");let t=e.startsWith("toolset:")?eh.find(t=>t.toolset_id===e.slice(8)):null,r=[];if(t?[...new Set(t.tools.map(e=>e.server_id))].forEach(e=>{r=r.concat(eC[e]||[])}):r=eC[e]||[],!r.find(e=>e.name===eP))return void B.default.fromBackend("Please wait for tool schema to load");try{s=await eI.current?.getSubmitValues()??{}}catch(e){B.default.fromBackend(e instanceof Error?e.message:"Please fill in all required parameters");return}}if([eo.EndpointType.CHAT,eo.EndpointType.IMAGE,eo.EndpointType.SPEECH,eo.EndpointType.IMAGE_EDITS,eo.EndpointType.RESPONSES,eo.EndpointType.ANTHROPIC_MESSAGES,eo.EndpointType.EMBEDDINGS,eo.EndpointType.TRANSCRIPTION].includes(tC)&&!tx)return void B.default.fromBackend("Please select a model before sending a request");if(!k||!O||!Z)return;let r=en||"session"===td?e:th;if(!r)return void B.default.fromBackend("Please provide a Virtual Key or select Current UI Session");tI.current=new AbortController;let a=tI.current.signal;if(tC===eo.EndpointType.RESPONSES&&tV)try{t=await eX(tf,tV)}catch(e){B.default.fromBackend("Failed to process image. Please try again.");return}else if(tC===eo.EndpointType.CHAT&&tQ)try{t=await em(tf,tQ)}catch(e){B.default.fromBackend("Failed to process image. Please try again.");return}else t={role:"user",content:tf};let n=eq||(0,$.v4)();eq||eB(n),eL([...e$,tC===eo.EndpointType.RESPONSES&&tV?eY(tf,!0,tX||void 0,tV.name):tC===eo.EndpointType.CHAT&&tQ?eg(tf,!0,t0||void 0,tQ.name):tC===eo.EndpointType.TRANSCRIPTION&&t2?eY(tf?`🎵 Audio file: ${t2.name} -Prompt: ${tf}`:`🎵 Audio file: ${t2.name}`,!1):tC===eo.EndpointType.MCP&&eP?eY(`🔧 MCP Tool: ${eP} -Arguments: ${JSON.stringify(s,null,2)}`,!1):eY(tf,!1)]),tc(),sl.clearResult(),tO(!0);try{if(tx)if(tC===eo.EndpointType.CHAT){let e=[...e$.filter(e=>!e.isImage&&!e.isAudio).map(({role:e,content:t})=>({role:e,content:"string"==typeof t?t:""})),t],s=en&&ea?ea.LITELLM_UI_API_DOC_BASE_URL??ea.PROXY_BASE_URL??void 0:tm||void 0;await (0,K.makeOpenAIChatCompletionRequest)(e,(e,t)=>eJ("assistant",e,t),tx,r,tR,a,eV,eK,eQ,n,tU.length>0?tU:void 0,tq.length>0?tq:void 0,tW.length>0?tW:void 0,ej,to,e6,sa?se:void 0,sa?ss:void 0,e1,s,ed,eR,e8,si,eh)}else if(tC===eo.EndpointType.IMAGE)await et(tf,(e,t)=>e7(e,t),tx,r,tR,a,tm||void 0);else if(tC===eo.EndpointType.SPEECH)await (0,G.makeOpenAIAudioSpeechRequest)(tf,t$,(e,t)=>ti(e,t),tx||"",r,tR,a,void 0,void 0,tm||void 0);else if(tC===eo.EndpointType.IMAGE_EDITS)tz.length>0&&await ee(1===tz.length?tz[0]:tz,tf,(e,t)=>e7(e,t),tx,r,tR,a,tm||void 0);else if(tC===eo.EndpointType.RESPONSES){let e;e=ez&&eW?[t]:[...e$.filter(e=>!e.isImage&&!e.isAudio).map(({role:e,content:t})=>({role:e,content:t})),t],await (0,es.makeOpenAIResponsesRequest)(e,(e,t,s)=>eJ(e,t,s),tx,r,tR,a,eV,eK,eQ,n,tU.length>0?tU:void 0,tq.length>0?tq:void 0,tW.length>0?tW:void 0,ej,ez?eW:null,e3,e8,sl.enabled,sl.setResult,tm||void 0,ed,eR,eh)}else if(tC===eo.EndpointType.ANTHROPIC_MESSAGES){let e=[...e$.filter(e=>!e.isImage&&!e.isAudio).map(({role:e,content:t})=>({role:e,content:t})),t];await (0,J.makeAnthropicMessagesRequest)(e,(e,t,s)=>eJ(e,t,s),tx,r,tR,a,eV,eK,eQ,n,tU.length>0?tU:void 0,tq.length>0?tq:void 0,tW.length>0?tW:void 0,ej,tm||void 0)}else tC===eo.EndpointType.EMBEDDINGS?await (0,X.makeOpenAIEmbeddingsRequest)(tf,(e,t)=>e9(e,t),tx,r,tR,tm||void 0):tC===eo.EndpointType.TRANSCRIPTION&&t2&&await (0,V.makeOpenAIAudioTranscriptionRequest)(t2,(e,t)=>eJ("assistant",e,t),tx,r,tR,a,void 0,void 0,void 0,void 0,tm||void 0);if(tC===eo.EndpointType.MCP){let e=1===ej.length&&"__all__"!==ej[0]?ej[0]:null,t=e;if(e?.startsWith("toolset:")){let s=e.slice(8),r=eh.find(e=>e.toolset_id===s),a=r?.tools.find(e=>e.tool_name===eP);t=a?.server_id??e}if(t&&!t.startsWith("toolset:")&&eP){let e=await (0,W.callMCPTool)(r,t,eP,s,tq.length>0?{guardrails:tq}:void 0),a=e?.content?.length>0?JSON.stringify(e.content.map(e=>"text"===e.type?e.text:e).filter(Boolean),null,2):JSON.stringify(e,null,2);eJ("assistant",a||"Tool executed successfully.")}}tC===eo.EndpointType.A2A_AGENTS&&tN&&await (0,F.makeA2ASendMessageRequest)(tN,tf,(e,t)=>eJ("assistant",e,t),r,a,eK,e1,eZ,tm||void 0,tq.length>0?tq:void 0)}catch(e){a.aborted?console.log("Request was cancelled"):(console.error("Error fetching response",e),eJ("assistant","Error fetching response:"+e))}finally{tO(!1),tI.current=null,tC===eo.EndpointType.IMAGE_EDITS&&sp(),tC===eo.EndpointType.RESPONSES&&tV&&sm(),tC===eo.EndpointType.CHAT&&tQ&&sg(),tC===eo.EndpointType.TRANSCRIPTION&&t2&&sf()}ty("")};if(O&&"Admin Viewer"===O){let{Title:e,Paragraph:s}=P.Typography;return(0,t.jsxs)("div",{children:[(0,t.jsx)(e,{level:1,children:"Access Denied"}),(0,t.jsx)(s,{children:"Ask your proxy admin for access to test models"})]})}let sx=(0,t.jsx)(u.LoadingOutlined,{style:{fontSize:24},spin:!0});return(0,t.jsxs)("div",{className:`w-full bg-white ${en?"h-full flex flex-col":"p-4 pb-0"}`,children:[(0,t.jsx)(b.Card,{className:`w-full rounded-xl shadow-md overflow-hidden ${en?"h-full flex flex-col":""}`,children:(0,t.jsxs)("div",{className:`flex w-full gap-4 ${en?"h-full":"h-[80vh]"}`,children:[!en&&(0,t.jsxs)("div",{className:"w-1/4 p-4 bg-gray-50 overflow-y-auto",children:[(0,t.jsx)(_.Title,{className:"text-xl font-semibold mb-6 mt-2",children:"Configurations"}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)(v.Text,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,t.jsx)(c.KeyOutlined,{className:"mr-2"})," Virtual Key Source"]}),(0,t.jsx)(T.Select,{disabled:er,value:td,style:{width:"100%"},onChange:e=>{tu(e)},options:[{value:"session",label:"Current UI Session"},{value:"custom",label:"Virtual Key"}],className:"rounded-md"}),"custom"===td&&(0,t.jsx)(w.TextInput,{className:"mt-2",placeholder:"Enter custom Virtual Key",type:"password",onValueChange:tp,value:th,icon:c.KeyOutlined})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,t.jsxs)(v.Text,{className:"font-medium block text-gray-700 flex items-center",children:[(0,t.jsx)(g.SettingOutlined,{className:"mr-2"})," Custom Proxy Base URL"]}),ea?.LITELLM_UI_API_DOC_BASE_URL&&!tm&&(0,t.jsx)(j.Button,{type:"link",size:"small",icon:(0,t.jsx)(d.LinkOutlined,{}),onClick:()=>{tg(ea.LITELLM_UI_API_DOC_BASE_URL||""),sessionStorage.setItem("customProxyBaseUrl",ea.LITELLM_UI_API_DOC_BASE_URL||"")},className:"text-gray-500 hover:text-gray-700",children:"Fill"}),tm&&(0,t.jsx)(j.Button,{type:"link",size:"small",icon:(0,t.jsx)(a.ClearOutlined,{}),onClick:()=>{tg(""),sessionStorage.removeItem("customProxyBaseUrl")},className:"text-gray-500 hover:text-gray-700",children:"Clear"})]}),(0,t.jsx)(w.TextInput,{placeholder:"Optional: Enter custom proxy URL (e.g., http://localhost:5000)",onValueChange:e=>{tg(e),sessionStorage.setItem("customProxyBaseUrl",e)},value:tm,icon:s.ApiOutlined}),tm&&(0,t.jsxs)(v.Text,{className:"text-xs text-gray-500 mt-1",children:["API calls will be sent to: ",tm]})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)(v.Text,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,t.jsx)(s.ApiOutlined,{className:"mr-2"})," Endpoint Type"]}),(0,t.jsx)(e_,{endpointType:tC,onEndpointChange:e=>{tA(e),tb(void 0),tE(void 0),tw(!1),eO(void 0),e===eo.EndpointType.MCP&&ek(e=>1===e.length&&"__all__"!==e[0]?e:[]);try{sessionStorage.removeItem("selectedModel"),sessionStorage.removeItem("selectedAgent")}catch{}},className:"mb-4"}),tC===eo.EndpointType.SPEECH&&(0,t.jsxs)("div",{className:"mb-4",children:[(0,t.jsxs)(v.Text,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,t.jsx)(f.SoundOutlined,{className:"mr-2"}),"Voice"]}),(0,t.jsx)(T.Select,{value:t$,onChange:e=>{tL(e),sessionStorage.setItem("selectedVoice",e)},style:{width:"100%"},className:"rounded-md",options:ec})]}),(0,t.jsx)(e4,{endpointType:tC,responsesSessionId:eW,useApiSessionManagement:ez,onToggleSessionManagement:e5})]}),tC!==eo.EndpointType.A2A_AGENTS&&tC!==eo.EndpointType.MCP&&(0,t.jsxs)("div",{children:[(0,t.jsxs)(v.Text,{className:"font-medium block mb-2 text-gray-700 flex items-center justify-between",children:[(0,t.jsxs)("span",{className:"flex items-center",children:[(0,t.jsx)(p.RobotOutlined,{className:"mr-2"})," Select Model"]}),(()=>{if(!tx||"custom"===tx)return!1;let e=t_.find(e=>e.model_group===tx);return!!e&&(!e.mode||"chat"===e.mode)})()?(0,t.jsx)(E.Popover,{content:(0,t.jsx)(ei,{temperature:se,maxTokens:ss,useAdvancedParams:sa,onTemperatureChange:st,onMaxTokensChange:sr,onUseAdvancedParamsChange:sn,mockTestFallbacks:si,onMockTestFallbacksChange:so}),title:"Model Settings",trigger:"click",placement:"right",children:(0,t.jsx)(j.Button,{type:"text",size:"small",icon:(0,t.jsx)(g.SettingOutlined,{}),className:"text-gray-500 hover:text-gray-700","aria-label":"Model Settings","data-testid":"model-settings-button"})}):(0,t.jsx)(A.Tooltip,{title:"Advanced parameters are only supported for chat models currently",children:(0,t.jsx)(j.Button,{type:"text",size:"small",icon:(0,t.jsx)(g.SettingOutlined,{}),className:"text-gray-300 cursor-not-allowed",disabled:!0})})]}),(0,t.jsx)(T.Select,{value:tx,placeholder:"Select a Model",onChange:e=>{console.log(`selected ${e}`),tb(e),tw("custom"===e)},options:[{value:"custom",label:"Enter custom model",key:"custom"},...Array.from(new Set(t_.filter(e=>{if(!e.mode)return!0;let t=(0,eo.getEndpointType)(e.mode);return tC===eo.EndpointType.RESPONSES||tC===eo.EndpointType.ANTHROPIC_MESSAGES?t===tC||t===eo.EndpointType.CHAT:tC===eo.EndpointType.IMAGE_EDITS?t===tC||t===eo.EndpointType.IMAGE:t===tC}).map(e=>e.model_group))).map((e,t)=>({value:e,label:e,key:t}))],style:{width:"100%"},showSearch:!0,className:"rounded-md"}),tv&&(0,t.jsx)(w.TextInput,{className:"mt-2",placeholder:"Enter custom model name",onValueChange:e=>{tT.current&&clearTimeout(tT.current),tT.current=setTimeout(()=>{tb(e)},500)}})]}),tC===eo.EndpointType.A2A_AGENTS&&(0,t.jsxs)("div",{children:[(0,t.jsxs)(v.Text,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,t.jsx)(p.RobotOutlined,{className:"mr-2"})," Select Agent"]}),(0,t.jsx)(T.Select,{value:tN,placeholder:"Select an Agent",onChange:e=>tE(e),options:tj.map(e=>({value:e.agent_name,label:e.agent_name||e.agent_id,key:e.agent_id})),style:{width:"100%"},showSearch:!0,className:"rounded-md",optionLabelProp:"label",children:tj.map(e=>(0,t.jsx)(T.Select.Option,{value:e.agent_name,label:e.agent_name||e.agent_id,children:(0,t.jsxs)("div",{className:"flex flex-col py-1",children:[(0,t.jsx)("span",{className:"font-medium",children:e.agent_name||e.agent_id}),e.agent_card_params?.description&&(0,t.jsx)("span",{className:"text-xs text-gray-500 mt-1",children:e.agent_card_params.description})]})},e.agent_id))}),0===tj.length&&(0,t.jsx)(v.Text,{className:"text-xs text-gray-500 mt-2 block",children:"No agents found. Create agents via /v1/agents endpoint."})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)(v.Text,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,t.jsx)(y.TagsOutlined,{className:"mr-2"})," Tags"]}),(0,t.jsx)(H.default,{value:tR,onChange:tM,className:"mb-4",accessToken:e||""})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)(v.Text,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,t.jsx)(x.ToolOutlined,{className:"mr-2"}),tC===eo.EndpointType.MCP?"MCP Server":"MCP Servers",(0,t.jsx)(A.Tooltip,{className:"ml-1",title:tC===eo.EndpointType.MCP?"Select an MCP server or toolset to test tools directly.":"Select MCP servers or toolsets to use in your conversation.",children:(0,t.jsx)(l.InfoCircleOutlined,{className:"cursor-pointer",onClick:()=>ex(!0)})})]}),(0,t.jsxs)(T.Select,{mode:tC===eo.EndpointType.MCP?void 0:"multiple",style:{width:"100%"},placeholder:tC===eo.EndpointType.MCP?"Select MCP server":"Select MCP servers",value:tC===eo.EndpointType.MCP?"__all__"!==ej[0]&&1===ej.length?ej[0]:void 0:ej,onChange:e=>{tC===eo.EndpointType.MCP?(ek(e?[e]:[]),eO(void 0),e&&!eC[e]&&su(e)):e.includes("__all__")?(ek(["__all__"]),eM({})):(ek(e),eM(t=>{let s={...t};return Object.keys(s).forEach(t=>{e.includes(t)||delete s[t]}),s}),e.forEach(e=>{eC[e]||su(e)}))},loading:eN,className:"mb-2",allowClear:!0,showSearch:!0,optionLabelProp:"label",disabled:!tn.has(tC),maxTagCount:tC===eo.EndpointType.MCP?1:"responsive",filterOption:(e,t)=>{if(t?.value==="__all__")return"all mcp servers".includes(e.toLowerCase());let s=t?.value;if(s?.startsWith("toolset:")){let t=s.slice(8),r=eh.find(e=>e.toolset_id===t);return!!r&&[r.toolset_name,r.description].filter(Boolean).join(" ").toLowerCase().includes(e.toLowerCase())}let r=ed.find(e=>e.server_id===s);return!!r&&[r.server_name,r.alias,r.server_id,r.description].filter(Boolean).join(" ").toLowerCase().includes(e.toLowerCase())},children:[tC!==eo.EndpointType.MCP&&(0,t.jsx)(T.Select.Option,{value:"__all__",label:"All MCP Servers",children:(0,t.jsxs)("div",{className:"flex flex-col py-1",children:[(0,t.jsx)("span",{className:"font-medium",children:"All MCP Servers"}),(0,t.jsx)("span",{className:"text-xs text-gray-500 mt-1",children:"Use all available MCP servers"})]})},"__all__"),eh.length>0&&(0,t.jsx)(T.Select.OptGroup,{label:"Toolsets",children:eh.map(e=>(0,t.jsx)(T.Select.Option,{value:`toolset:${e.toolset_id}`,label:e.toolset_name,disabled:tC!==eo.EndpointType.MCP&&ej.includes("__all__"),children:(0,t.jsxs)("div",{className:"flex flex-col py-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)("span",{className:"font-medium",children:e.toolset_name}),(0,t.jsx)("span",{className:"text-xs px-1 rounded",style:{background:"#ede9fe",color:"#7c3aed"},children:"Toolset"}),(0,t.jsxs)("span",{className:"text-xs text-gray-500",children:["(",e.tools.length," tools)"]})]}),e.description&&(0,t.jsx)("span",{className:"text-xs text-gray-500 mt-1",children:e.description})]})},`toolset:${e.toolset_id}`))}),ed.length>0&&(0,t.jsx)(T.Select.OptGroup,{label:"Servers",children:ed.map(e=>(0,t.jsx)(T.Select.Option,{value:e.server_id,label:e.alias||e.server_name||e.server_id,disabled:tC!==eo.EndpointType.MCP&&ej.includes("__all__"),children:(0,t.jsxs)("div",{className:"flex flex-col py-1",children:[(0,t.jsx)("span",{className:"font-medium",children:e.alias||e.server_name||e.server_id}),e.description&&(0,t.jsx)("span",{className:"text-xs text-gray-500 mt-1",children:e.description})]})},e.server_id))})]}),tC===eo.EndpointType.MCP&&1===ej.length&&"__all__"!==ej[0]&&(()=>{let e=ej[0],s=e.startsWith("toolset:"),r=[];if(s){let t=e.slice(8),s=eh.find(e=>e.toolset_id===t);s&&(r=s.tools.map(e=>({value:e.tool_name,label:e.tool_name})))}else r=(eC[e]||[]).map(e=>({value:e.name,label:e.name}));return(0,t.jsxs)("div",{className:"mt-3",children:[(0,t.jsx)(v.Text,{className:"text-xs text-gray-600 mb-1 block",children:"Select Tool"}),(0,t.jsx)(T.Select,{style:{width:"100%"},placeholder:"Select a tool to call",value:eP,onChange:e=>eO(e),options:r,allowClear:!0,className:"rounded-md"})]})})(),ej.length>0&&!ej.includes("__all__")&&tC!==eo.EndpointType.MCP&&tn.has(tC)&&(0,t.jsx)("div",{className:"mt-3 space-y-2",children:ej.map(e=>{let s=ed.find(t=>t.server_id===e),r=eC[e]||[];return 0===r.length?null:(0,t.jsxs)("div",{className:"border rounded p-2",children:[(0,t.jsxs)(v.Text,{className:"text-xs text-gray-600 mb-1",children:["Limit tools for ",s?.alias||s?.server_name||e,":"]}),(0,t.jsx)(T.Select,{mode:"multiple",size:"small",style:{width:"100%"},placeholder:"All tools (default)",value:eR[e]||[],onChange:t=>{eM(s=>({...s,[e]:t}))},options:r.map(e=>({value:e.name,label:e.name})),maxTagCount:2})]},e)})}),ej.length>0&&!ej.includes("__all__")&&ej.some(e=>{let t=ed.find(t=>t.server_id===e);return t?.is_byok})&&(0,t.jsx)("div",{className:"mt-3 space-y-2",children:ej.map(e=>{let s=ed.find(t=>t.server_id===e);if(!s?.is_byok)return null;let r=s.alias||s.server_name||e;return(0,t.jsxs)("div",{className:"border border-blue-100 rounded p-2 bg-blue-50 flex items-center justify-between",children:[(0,t.jsxs)(v.Text,{className:"text-xs text-blue-700",children:[r," requires your API key"]}),s.has_user_credential?(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("span",{className:"text-green-600 text-xs font-medium flex items-center gap-1",children:[(0,t.jsx)(c.KeyOutlined,{})," Connected"]}),(0,t.jsx)("button",{className:"text-xs text-gray-400 hover:text-blue-500 underline",onClick:()=>eS(s),children:"Reconnect"})]}):(0,t.jsx)("button",{className:"text-xs bg-blue-500 hover:bg-blue-600 text-white px-3 py-1 rounded-lg font-medium",onClick:()=>eS(s),children:"Connect"})]},e)})})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)(v.Text,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,t.jsx)(i.DatabaseOutlined,{className:"mr-2"})," Vector Store",(0,t.jsx)(A.Tooltip,{className:"ml-1",title:(0,t.jsxs)("span",{children:["Select vector store(s) to use for this LLM API call. You can set up your vector store"," ",(0,t.jsx)("a",{href:"?page=vector-stores",style:{color:"#1890ff"},children:"here"}),"."]}),children:(0,t.jsx)(l.InfoCircleOutlined,{})})]}),(0,t.jsx)(z.default,{value:tU,onChange:tD,className:"mb-4",accessToken:e||""})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)(v.Text,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,t.jsx)(m.SafetyOutlined,{className:"mr-2"})," Guardrails",(0,t.jsx)(A.Tooltip,{className:"ml-1",title:(0,t.jsxs)("span",{children:["Select guardrail(s) to use for this LLM API call. You can set up your guardrails"," ",(0,t.jsx)("a",{href:"?page=guardrails",style:{color:"#1890ff"},children:"here"}),"."]}),children:(0,t.jsx)(l.InfoCircleOutlined,{})})]}),(0,t.jsx)(L.default,{value:tq,onChange:tB,className:"mb-4",accessToken:e||""})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)(v.Text,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,t.jsx)(m.SafetyOutlined,{className:"mr-2"})," Policies",(0,t.jsx)(A.Tooltip,{className:"ml-1",title:(0,t.jsxs)("span",{children:["Select policy/policies to apply to this LLM API call. Policies define which guardrails are applied based on conditions. You can set up your policies"," ",(0,t.jsx)("a",{href:"?page=policies",style:{color:"#1890ff"},children:"here"}),"."]}),children:(0,t.jsx)(l.InfoCircleOutlined,{})})]}),(0,t.jsx)(U.default,{value:tW,onChange:tH,className:"mb-4",accessToken:e||""})]}),tC===eo.EndpointType.RESPONSES&&(0,t.jsx)("div",{children:(0,t.jsx)(ev,{accessToken:"session"===td?e||"":th,enabled:sl.enabled,onEnabledChange:sl.setEnabled,selectedContainerId:null,onContainerChange:()=>{},selectedModel:tx||""})})]})]}),(0,t.jsx)("div",{className:`flex flex-col bg-white ${en?"flex-1 w-full":"w-3/4"}`,children:tC===eo.EndpointType.REALTIME?(0,t.jsx)(te,{accessToken:"session"===td?e||"":th,selectedModel:tx||"",customProxyBaseUrl:tm||void 0,selectedGuardrails:tq.length>0?tq:void 0}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:[(0,t.jsx)(_.Title,{className:"text-xl font-semibold mb-0",children:en?"Chat":"Test Key"}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(S.Button,{onClick:()=>{tl(),sp(),sm(),sg(),sf(),B.default.success("Chat history cleared.")},className:"bg-gray-100 hover:bg-gray-200 text-gray-700 border-gray-300",icon:a.ClearOutlined,children:"Clear Chat"}),!en&&(0,t.jsx)(S.Button,{onClick:()=>t3(!0),className:"bg-gray-100 hover:bg-gray-200 text-gray-700 border-gray-300",icon:n.CodeOutlined,children:"Get Code"})]})]}),(0,t.jsxs)("div",{className:"flex-1 overflow-auto p-4 pb-0",children:[0===e$.length&&(0,t.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,t.jsx)(p.RobotOutlined,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,t.jsx)(v.Text,{children:"Start a conversation, generate an image, or handle audio"})]}),e$.map((s,r)=>(0,t.jsx)("div",{children:(0,t.jsx)(e0,{message:s,isLastMessage:r===e$.length-1,endpointType:tC,mcpEvents:eU,codeInterpreterResult:sl.result,accessToken:"session"===td?e||"":th})},r)),tP&&eU.length>0&&(tC===eo.EndpointType.RESPONSES||tC===eo.EndpointType.CHAT)&&e$.length>0&&"user"===e$[e$.length-1].role&&(0,t.jsx)("div",{className:"text-left mb-4",children:(0,t.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3.5 px-4",style:{backgroundColor:"#ffffff",border:"1px solid #f0f0f0",textAlign:"left"},children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,t.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full mr-1",style:{backgroundColor:"#f5f5f5"},children:(0,t.jsx)(p.RobotOutlined,{style:{fontSize:"12px",color:"#4b5563"}})}),(0,t.jsx)("strong",{className:"text-sm capitalize",children:"Assistant"})]}),(0,t.jsx)(eG.default,{events:eU})]})}),tP&&(0,t.jsx)("div",{className:"flex justify-center items-center my-4",children:(0,t.jsx)(C.Spin,{indicator:sx})}),(0,t.jsx)("div",{ref:sc,style:{height:"1px"}})]}),(0,t.jsxs)("div",{className:"p-4 border-t border-gray-200 bg-white",children:[tC===eo.EndpointType.IMAGE_EDITS&&(0,t.jsx)("div",{className:"mb-4",children:0===tz.length?(0,t.jsxs)(ta,{beforeUpload:sh,accept:"image/*",showUploadList:!1,children:[(0,t.jsx)("p",{className:"ant-upload-drag-icon",children:(0,t.jsx)(h.PictureOutlined,{style:{fontSize:"24px",color:"#666"}})}),(0,t.jsx)("p",{className:"ant-upload-text text-sm",children:"Click or drag images to upload"}),(0,t.jsx)("p",{className:"ant-upload-hint text-xs text-gray-500",children:"Support for PNG, JPG, JPEG formats. Multiple images supported."})]}):(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[tz.map((e,s)=>(0,t.jsxs)("div",{className:"relative inline-block",children:[(0,t.jsx)("img",{src:(()=>{let e=tJ[s];if(!e)return"";try{let t=new URL(e);return"blob:"===t.protocol?t.href:""}catch{return""}})(),alt:`Upload preview ${s+1}`,className:"max-w-32 max-h-32 rounded-md border border-gray-200 object-cover"}),(0,t.jsx)("button",{className:"absolute top-1 right-1 bg-white shadow-sm border border-gray-200 rounded px-1 py-1 text-red-500 hover:bg-red-50 text-xs",onClick:()=>{tJ[s]&&URL.revokeObjectURL(tJ[s]),tF(e=>e.filter((e,t)=>t!==s)),tG(e=>e.filter((e,t)=>t!==s))},children:(0,t.jsx)(o.DeleteOutlined,{})})]},s)),(0,t.jsxs)("div",{className:"flex items-center justify-center w-32 h-32 border-2 border-dashed border-gray-300 rounded-md hover:border-gray-400 cursor-pointer",onClick:()=>document.getElementById("additional-image-upload")?.click(),children:[(0,t.jsxs)("div",{className:"text-center",children:[(0,t.jsx)(h.PictureOutlined,{style:{fontSize:"24px",color:"#666"}}),(0,t.jsx)("p",{className:"text-xs text-gray-500 mt-1",children:"Add more"})]}),(0,t.jsx)("input",{id:"additional-image-upload",type:"file",accept:"image/*",multiple:!0,style:{display:"none"},onChange:e=>{Array.from(e.target.files||[]).forEach(e=>sh(e))}})]})]})}),tC===eo.EndpointType.TRANSCRIPTION&&(0,t.jsx)("div",{className:"mb-4",children:t2?(0,t.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 flex-1",children:[(0,t.jsx)(f.SoundOutlined,{style:{fontSize:"20px",color:"#666"}}),(0,t.jsx)("span",{className:"text-sm font-medium",children:t2.name}),(0,t.jsxs)("span",{className:"text-xs text-gray-500",children:["(",(t2.size/1024/1024).toFixed(2)," MB)"]})]}),(0,t.jsxs)("button",{className:"bg-white shadow-sm border border-gray-200 rounded px-2 py-1 text-red-500 hover:bg-red-50 text-xs",onClick:sf,children:[(0,t.jsx)(o.DeleteOutlined,{})," Remove"]})]}):(0,t.jsxs)(ta,{beforeUpload:e=>(t4(e),!1),accept:"audio/*,.mp3,.mp4,.mpeg,.mpga,.m4a,.wav,.webm",showUploadList:!1,children:[(0,t.jsx)("p",{className:"ant-upload-drag-icon",children:(0,t.jsx)(f.SoundOutlined,{style:{fontSize:"24px",color:"#666"}})}),(0,t.jsx)("p",{className:"ant-upload-text text-sm",children:"Click or drag audio file to upload"}),(0,t.jsx)("p",{className:"ant-upload-hint text-xs text-gray-500",children:"Support for MP3, MP4, MPEG, MPGA, M4A, WAV, WEBM formats. Max file size: 25 MB."})]})}),tC===eo.EndpointType.RESPONSES&&tV&&(0,t.jsx)(eE,{file:tV,previewUrl:tX,onRemove:sm}),tC===eo.EndpointType.CHAT&&tQ&&(0,t.jsx)(eE,{file:tQ,previewUrl:t0,onRemove:sg}),tC===eo.EndpointType.RESPONSES&&sl.enabled&&(0,t.jsxs)("div",{className:"mb-2 space-y-2",children:[(0,t.jsxs)("div",{className:"px-3 py-2 bg-gradient-to-r from-blue-50 to-purple-50 rounded-lg border border-blue-200 flex items-center justify-between",children:[(0,t.jsx)("div",{className:"flex items-center gap-2",children:tP?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.LoadingOutlined,{className:"text-blue-500",spin:!0}),(0,t.jsx)("span",{className:"text-sm text-blue-700 font-medium",children:"Running Python code..."})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.CodeOutlined,{className:"text-blue-500"}),(0,t.jsx)("span",{className:"text-sm text-blue-700 font-medium",children:"Code Interpreter Active"})]})}),(0,t.jsx)("button",{className:"text-xs text-blue-500 hover:text-blue-700",onClick:()=>sl.setEnabled(!1),children:"Disable"})]}),!tP&&(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:["Generate sample sales data CSV and create a chart","Create a PNG bar chart comparing AI gateway providers including LiteLLM","Generate a CSV of LLM pricing data and visualize it as a line chart"].map((e,s)=>(0,t.jsx)("button",{className:"text-xs px-3 py-1.5 bg-white border border-gray-200 rounded-full hover:bg-blue-50 hover:border-blue-300 hover:text-blue-600 transition-colors",onClick:()=>ty(e),children:e},s))})]}),0===e$.length&&!tP&&tC!==eo.EndpointType.MCP&&(0,t.jsx)("div",{className:"flex items-center gap-2 mb-3 overflow-x-auto",children:(tC===eo.EndpointType.A2A_AGENTS?["What can you help me with?","Tell me about yourself","What tasks can you perform?"]:["Write me a poem","Explain quantum computing","Draft a polite email requesting a meeting"]).map(e=>(0,t.jsx)("button",{type:"button",className:"shrink-0 rounded-full border border-gray-200 px-3 py-1 text-xs font-medium text-gray-600 transition-colors hover:bg-blue-50 hover:border-blue-300 hover:text-blue-600 cursor-pointer",onClick:()=>ty(e),children:e},e))}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("div",{className:"flex items-center flex-1 bg-white border border-gray-300 rounded-xl px-3 py-1 min-h-[44px]",children:[(0,t.jsxs)("div",{className:"flex-shrink-0 mr-2 flex items-center gap-1",children:[tC===eo.EndpointType.RESPONSES&&!tV&&(0,t.jsx)(e2,{responsesUploadedImage:tV,responsesImagePreviewUrl:tX,onImageUpload:e=>(tK(e),tY(URL.createObjectURL(e)),!1),onRemoveImage:sm}),tC===eo.EndpointType.CHAT&&!tQ&&(0,t.jsx)(ep,{chatUploadedImage:tQ,chatImagePreviewUrl:t0,onImageUpload:e=>(tZ(e),t1(URL.createObjectURL(e)),!1),onRemoveImage:sg}),tC===eo.EndpointType.RESPONSES&&(0,t.jsx)(A.Tooltip,{title:sl.enabled?"Code Interpreter enabled (click to disable)":"Enable Code Interpreter",children:(0,t.jsx)("button",{className:`p-1.5 rounded-md transition-colors ${sl.enabled?"bg-blue-100 text-blue-600":"text-gray-400 hover:text-gray-600 hover:bg-gray-100"}`,onClick:()=>{sl.toggle(),sl.enabled||B.default.success("Code Interpreter enabled!")},children:(0,t.jsx)(n.CodeOutlined,{style:{fontSize:"16px"}})})})]}),tC===eo.EndpointType.MCP&&1===ej.length&&"__all__"!==ej[0]&&eP?(0,t.jsx)("div",{className:"flex-1 overflow-y-auto max-h-48 min-h-[44px] p-2 border border-gray-200 rounded-lg bg-gray-50/50",children:(()=>{let e=ej[0],s=[];if(e.startsWith("toolset:")){let t=e.slice(8),r=eh.find(e=>e.toolset_id===t);r&&[...new Set(r.tools.map(e=>e.server_id))].forEach(e=>{s=s.concat(eC[e]||[])})}else s=eC[e]||[];let r=s.find(e=>e.name===eP);return r?(0,t.jsx)(D.default,{ref:eI,tool:r,className:"space-y-2"}):(0,t.jsx)("div",{className:"flex items-center justify-center h-10 text-sm text-gray-500",children:"Loading tool schema..."})})()}):(0,t.jsx)(tr,{value:tf,onChange:e=>ty(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),sy())},placeholder:tC===eo.EndpointType.CHAT||tC===eo.EndpointType.EMBEDDINGS||tC===eo.EndpointType.RESPONSES||tC===eo.EndpointType.ANTHROPIC_MESSAGES?"Type your message... (Shift+Enter for new line)":tC===eo.EndpointType.A2A_AGENTS?"Send a message to the A2A agent...":tC===eo.EndpointType.IMAGE_EDITS?"Describe how you want to edit the image...":tC===eo.EndpointType.SPEECH?"Enter text to convert to speech...":tC===eo.EndpointType.TRANSCRIPTION?"Optional: Add context or prompt for transcription...":"Describe the image you want to generate...",disabled:tP,className:"flex-1",autoSize:{minRows:1,maxRows:4},style:{resize:"none",border:"none",boxShadow:"none",background:"transparent",padding:"4px 0",fontSize:"14px",lineHeight:"20px"}}),(0,t.jsx)(S.Button,{onClick:sy,disabled:tP||(tC===eo.EndpointType.MCP?!(1===ej.length&&"__all__"!==ej[0]&&eP):tC===eo.EndpointType.TRANSCRIPTION?!t2:!tf.trim()),className:"flex-shrink-0 ml-2 !w-8 !h-8 !min-w-8 !p-0 !rounded-full !bg-blue-600 hover:!bg-blue-700 disabled:!bg-gray-300 !border-none !text-white disabled:!text-gray-500 !flex !items-center !justify-center",children:(0,t.jsx)(r.ArrowUpOutlined,{style:{fontSize:"14px"}})})]}),tP&&(0,t.jsx)(S.Button,{onClick:()=>{tI.current&&(tI.current.abort(),tI.current=null,tO(!1),B.default.info("Request cancelled"))},className:"bg-red-50 hover:bg-red-100 text-red-600 border-red-200",icon:o.DeleteOutlined,children:"Cancel"})]})]})]})})]})}),(0,t.jsxs)(N.Modal,{title:"Generated Code",open:t6,onCancel:()=>t3(!1),footer:null,width:800,children:[(0,t.jsxs)("div",{className:"flex justify-between items-end my-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(v.Text,{className:"font-medium block mb-1 text-gray-700",children:"SDK Type"}),(0,t.jsx)(T.Select,{value:t7,onChange:e=>t9(e),style:{width:150},options:[{value:"openai",label:"OpenAI SDK"},{value:"azure",label:"Azure SDK"}]})]}),(0,t.jsx)(j.Button,{onClick:()=>{navigator.clipboard.writeText(t5),B.default.success("Copied to clipboard!")},children:"Copy to Clipboard"})]}),(0,t.jsx)(R.Prism,{language:"python",style:M.coy,wrapLines:!0,wrapLongLines:!0,className:"rounded-md",customStyle:{maxHeight:"60vh",overflowY:"auto"},children:t5})]}),eb&&(0,t.jsx)(q.ByokCredentialModal,{server:eb,open:!!eb,onClose:()=>eS(null),onSuccess:e=>{sd(),eS(null)},accessToken:e||""}),(0,t.jsx)(N.Modal,{title:"How Toolsets Work",open:ey,onCancel:()=>ex(!1),footer:[(0,t.jsx)(j.Button,{onClick:()=>ex(!1),children:"Close"},"close")],width:600,children:(0,t.jsxs)("div",{className:"space-y-4 py-2",children:[(0,t.jsxs)("p",{className:"text-gray-700",children:[(0,t.jsx)("strong",{children:"Toolsets"})," are named collections of specific tools from one or more MCP servers. Instead of exposing all tools from a server, a toolset gives an agent exactly the tools it needs."]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{className:"font-semibold text-gray-800 mb-2",children:"How to use a toolset:"}),(0,t.jsxs)("ol",{className:"list-decimal list-inside space-y-2 text-gray-700",children:[(0,t.jsxs)("li",{children:["Select a ",(0,t.jsx)("span",{style:{color:"#7c3aed",fontWeight:600},children:"Toolset"})," (purple badge) from the MCP Servers dropdown."]}),(0,t.jsx)("li",{children:"The tool picker will show only the tools included in that toolset."}),(0,t.jsx)("li",{children:"Select a tool and fill in its parameters, then send."}),(0,t.jsx)("li",{children:"The tool call is routed to the correct underlying MCP server automatically."})]})]}),(0,t.jsx)("div",{className:"bg-purple-50 border border-purple-200 rounded p-3",children:(0,t.jsxs)("p",{className:"text-sm text-purple-800",children:[(0,t.jsx)("strong",{children:"Example:"}),' A "GitHub Read-only" toolset might include only ',(0,t.jsx)("code",{children:"list_repos"})," and ",(0,t.jsx)("code",{children:"get_file"})," from a GitHub MCP server — preventing agents from making writes."]})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{className:"font-semibold text-gray-800 mb-1",children:"Creating toolsets:"}),(0,t.jsxs)("p",{className:"text-sm text-gray-600",children:["Admins can create and manage toolsets from the ",(0,t.jsx)("strong",{children:"MCP"})," page → ",(0,t.jsx)("strong",{children:"Toolsets"})," tab. Toolsets can then be assigned to keys and teams to scope their tool access."]})]})]})})]})}],220486)}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/0-wj413-8yde5.js b/litellm/proxy/_experimental/out/_next/static/chunks/0-wj413-8yde5.js deleted file mode 100644 index 050f40e3e2e..00000000000 --- a/litellm/proxy/_experimental/out/_next/static/chunks/0-wj413-8yde5.js +++ /dev/null @@ -1,84 +0,0 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,185357,180766,782719,969641,476993,824296,64352,230312,e=>{"use strict";var t,a,l=e.i(843476),r=e.i(808613),i=e.i(311451),s=e.i(212931),n=e.i(199133),o=e.i(262218),d=e.i(898586),c=e.i(464571),m=e.i(271645),u=e.i(727749),p=e.i(764205),g=e.i(770914),x=e.i(515831),h=e.i(175712),f=e.i(646563),y=e.i(519756);let{Text:j}=d.Typography,{Option:_}=n.Select,b=({visible:e,prebuiltPatterns:t,categories:a,selectedPatternName:r,patternAction:i,onPatternNameChange:o,onActionChange:d,onAdd:m,onCancel:u})=>(0,l.jsxs)(s.Modal,{title:"Add prebuilt pattern",open:e,onCancel:u,footer:null,width:800,children:[(0,l.jsxs)(g.Space,{direction:"vertical",style:{width:"100%"},size:"large",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)(j,{strong:!0,children:"Pattern type"}),(0,l.jsx)(n.Select,{placeholder:"Choose pattern type",value:r,onChange:o,style:{width:"100%",marginTop:8},showSearch:!0,filterOption:(e,a)=>{let l=t.find(e=>e.name===a?.value);return!!l&&(l.display_name.toLowerCase().includes(e.toLowerCase())||l.name.toLowerCase().includes(e.toLowerCase()))},children:a.map(e=>{let a=t.filter(t=>t.category===e);return 0===a.length?null:(0,l.jsx)(n.Select.OptGroup,{label:e,children:a.map(e=>(0,l.jsx)(_,{value:e.name,children:e.display_name},e.name))},e)})})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(j,{strong:!0,children:"Action"}),(0,l.jsx)(j,{type:"secondary",style:{display:"block",marginTop:4,marginBottom:8},children:"Choose what action the guardrail should take when this pattern is detected"}),(0,l.jsxs)(n.Select,{value:i,onChange:d,style:{width:"100%"},children:[(0,l.jsx)(_,{value:"BLOCK",children:"Block"}),(0,l.jsx)(_,{value:"MASK",children:"Mask"})]})]})]}),(0,l.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"8px",marginTop:"24px"},children:[(0,l.jsx)(c.Button,{onClick:u,children:"Cancel"}),(0,l.jsx)(c.Button,{type:"primary",onClick:m,children:"Add"})]})]}),{Text:v}=d.Typography,{Option:w}=n.Select,N=({visible:e,patternName:t,patternRegex:a,patternAction:r,onNameChange:o,onRegexChange:d,onActionChange:m,onAdd:u,onCancel:p})=>(0,l.jsxs)(s.Modal,{title:"Add custom regex pattern",open:e,onCancel:p,footer:null,width:800,children:[(0,l.jsxs)(g.Space,{direction:"vertical",style:{width:"100%"},size:"large",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)(v,{strong:!0,children:"Pattern name"}),(0,l.jsx)(i.Input,{placeholder:"e.g., internal_id, employee_code",value:t,onChange:e=>o(e.target.value),style:{marginTop:8}})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(v,{strong:!0,children:"Regex pattern"}),(0,l.jsx)(i.Input,{placeholder:"e.g., ID-[0-9]{6}",value:a,onChange:e=>d(e.target.value),style:{marginTop:8}}),(0,l.jsx)(v,{type:"secondary",style:{fontSize:12},children:"Enter a valid regular expression to match sensitive data"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(v,{strong:!0,children:"Action"}),(0,l.jsx)(v,{type:"secondary",style:{display:"block",marginTop:4,marginBottom:8},children:"Choose what action the guardrail should take when this pattern is detected"}),(0,l.jsxs)(n.Select,{value:r,onChange:m,style:{width:"100%"},children:[(0,l.jsx)(w,{value:"BLOCK",children:"Block"}),(0,l.jsx)(w,{value:"MASK",children:"Mask"})]})]})]}),(0,l.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"8px",marginTop:"24px"},children:[(0,l.jsx)(c.Button,{onClick:p,children:"Cancel"}),(0,l.jsx)(c.Button,{type:"primary",onClick:u,children:"Add"})]})]}),{Text:C}=d.Typography,{Option:S}=n.Select,k=({visible:e,keyword:t,action:a,description:r,onKeywordChange:o,onActionChange:d,onDescriptionChange:m,onAdd:u,onCancel:p})=>(0,l.jsxs)(s.Modal,{title:"Add blocked keyword",open:e,onCancel:p,footer:null,width:800,children:[(0,l.jsxs)(g.Space,{direction:"vertical",style:{width:"100%"},size:"large",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)(C,{strong:!0,children:"Keyword"}),(0,l.jsx)(i.Input,{placeholder:"Enter sensitive keyword or phrase",value:t,onChange:e=>o(e.target.value),style:{marginTop:8}})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(C,{strong:!0,children:"Action"}),(0,l.jsx)(C,{type:"secondary",style:{display:"block",marginTop:4,marginBottom:8},children:"Choose what action the guardrail should take when this keyword is detected"}),(0,l.jsxs)(n.Select,{value:a,onChange:d,style:{width:"100%"},children:[(0,l.jsx)(S,{value:"BLOCK",children:"Block"}),(0,l.jsx)(S,{value:"MASK",children:"Mask"})]})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(C,{strong:!0,children:"Description (optional)"}),(0,l.jsx)(i.Input.TextArea,{placeholder:"Explain why this keyword is sensitive",value:r,onChange:e=>m(e.target.value),rows:3,style:{marginTop:8}})]})]}),(0,l.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"8px",marginTop:"24px"},children:[(0,l.jsx)(c.Button,{onClick:p,children:"Cancel"}),(0,l.jsx)(c.Button,{type:"primary",onClick:u,children:"Add"})]})]});var I=e.i(291542),A=e.i(955135);let{Text:O}=d.Typography,{Option:T}=n.Select,P=({patterns:e,onActionChange:t,onRemove:a})=>{let r=[{title:"Type",dataIndex:"type",key:"type",width:100,render:e=>(0,l.jsx)(o.Tag,{color:"prebuilt"===e?"blue":"green",children:"prebuilt"===e?"Prebuilt":"Custom"})},{title:"Pattern name",dataIndex:"name",key:"name",render:(e,t)=>t.display_name||t.name},{title:"Regex pattern",dataIndex:"pattern",key:"pattern",render:e=>e?(0,l.jsxs)(O,{code:!0,style:{fontSize:12},children:[e.substring(0,40),"..."]}):"-"},{title:"Action",dataIndex:"action",key:"action",width:150,render:(e,a)=>(0,l.jsxs)(n.Select,{value:e,onChange:e=>t(a.id,e),style:{width:120},size:"small",children:[(0,l.jsx)(T,{value:"BLOCK",children:"Block"}),(0,l.jsx)(T,{value:"MASK",children:"Mask"})]})},{title:"",key:"actions",width:100,render:(e,t)=>(0,l.jsx)(c.Button,{type:"text",danger:!0,size:"small",icon:(0,l.jsx)(A.DeleteOutlined,{}),onClick:()=>a(t.id),children:"Delete"})}];return 0===e.length?(0,l.jsx)("div",{style:{textAlign:"center",padding:"40px 0",color:"#999"},children:"No patterns added."}):(0,l.jsx)(I.Table,{dataSource:e,columns:r,rowKey:"id",pagination:!1,size:"small"})},{Text:L}=d.Typography,{Option:B}=n.Select,F=({keywords:e,onActionChange:t,onRemove:a})=>{let r=[{title:"Keyword",dataIndex:"keyword",key:"keyword"},{title:"Action",dataIndex:"action",key:"action",width:150,render:(e,a)=>(0,l.jsxs)(n.Select,{value:e,onChange:e=>t(a.id,"action",e),style:{width:120},size:"small",children:[(0,l.jsx)(B,{value:"BLOCK",children:"Block"}),(0,l.jsx)(B,{value:"MASK",children:"Mask"})]})},{title:"Description",dataIndex:"description",key:"description",render:e=>e||"-"},{title:"",key:"actions",width:100,render:(e,t)=>(0,l.jsx)(c.Button,{type:"text",danger:!0,size:"small",icon:(0,l.jsx)(A.DeleteOutlined,{}),onClick:()=>a(t.id),children:"Delete"})}];return 0===e.length?(0,l.jsx)("div",{style:{textAlign:"center",padding:"40px 0",color:"#999"},children:"No keywords added."}):(0,l.jsx)(I.Table,{dataSource:e,columns:r,rowKey:"id",pagination:!1,size:"small"})};var $=e.i(362024),E=e.i(993914);let{Title:M,Text:R}=d.Typography,{Option:G}=n.Select,z=({availableCategories:e,selectedCategories:t,onCategoryAdd:a,onCategoryRemove:r,onCategoryUpdate:i,accessToken:s,pendingSelection:d,onPendingSelectionChange:u})=>{let[g,x]=m.default.useState(""),y=void 0!==d?d:g,j=u||x,[_,b]=m.default.useState({}),[v,w]=m.default.useState({}),[N,C]=m.default.useState({}),[S,k]=m.default.useState([]),[O,T]=m.default.useState(""),[P,L]=m.default.useState(!1),B=async e=>{if(s&&!_[e]){C(t=>({...t,[e]:!0}));try{let t=await (0,p.getCategoryYaml)(s,e),a=t.yaml_content;if("json"===t.file_type)try{let e=JSON.parse(a);a=JSON.stringify(e,null,2)}catch(t){console.warn(`Failed to format JSON for ${e}:`,t)}b(t=>({...t,[e]:a})),w(a=>({...a,[e]:t.file_type||"yaml"}))}catch(t){console.error(`Failed to fetch content for category ${e}:`,t)}finally{C(t=>({...t,[e]:!1}))}}};m.default.useEffect(()=>{if(y&&s){let e=_[y];if(e)return void T(e);L(!0),console.log(`Fetching content for category: ${y}`,{accessToken:s?"present":"missing"}),(0,p.getCategoryYaml)(s,y).then(e=>{console.log(`Successfully fetched content for ${y}:`,e);let t=e.yaml_content;if("json"===e.file_type)try{let e=JSON.parse(t);t=JSON.stringify(e,null,2)}catch(e){console.warn(`Failed to format JSON for ${y}:`,e)}T(t),b(e=>({...e,[y]:t})),w(t=>({...t,[y]:e.file_type||"yaml"}))}).catch(e=>{console.error(`Failed to fetch preview content for category ${y}:`,e),T("")}).finally(()=>{L(!1)})}else T(""),L(!1)},[y,s]);let F=[{title:"Category",dataIndex:"display_name",key:"display_name",render:(t,a)=>{let r=e.find(e=>e.name===a.category);return(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{style:{fontWeight:500},children:t}),r?.description&&(0,l.jsx)("div",{style:{fontSize:"12px",color:"#888",marginTop:"4px"},children:r.description})]})}},{title:"Action",dataIndex:"action",key:"action",width:150,render:(e,t)=>(0,l.jsxs)(n.Select,{value:e,onChange:e=>i(t.id,"action",e),style:{width:"100%"},children:[(0,l.jsx)(G,{value:"BLOCK",children:(0,l.jsx)(o.Tag,{color:"red",children:"BLOCK"})}),(0,l.jsx)(G,{value:"MASK",children:(0,l.jsx)(o.Tag,{color:"orange",children:"MASK"})})]})},{title:"Severity Threshold",dataIndex:"severity_threshold",key:"severity_threshold",width:180,render:(e,t)=>(0,l.jsxs)(n.Select,{value:e,onChange:e=>i(t.id,"severity_threshold",e),style:{width:"100%"},children:[(0,l.jsx)(G,{value:"low",children:"Low"}),(0,l.jsx)(G,{value:"medium",children:"Medium"}),(0,l.jsx)(G,{value:"high",children:"High"})]})},{title:"",key:"actions",width:80,render:(e,t)=>(0,l.jsx)(c.Button,{icon:(0,l.jsx)(A.DeleteOutlined,{}),onClick:()=>r(t.id),size:"small",children:"Remove"})}],z=e.filter(e=>!t.some(t=>t.category===e.name));return(0,l.jsxs)(h.Card,{title:(0,l.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",flexWrap:"wrap",gap:8},children:[(0,l.jsx)(M,{level:5,style:{margin:0},children:"Blocked topics"}),(0,l.jsx)(R,{type:"secondary",style:{fontSize:12,fontWeight:400},children:"Select topics to block using keyword and semantic analysis"})]}),size:"small",children:[(0,l.jsxs)("div",{style:{marginBottom:16,display:"flex",gap:8},children:[(0,l.jsx)(n.Select,{placeholder:"Select a content category",value:y||void 0,onChange:j,style:{flex:1},showSearch:!0,optionLabelProp:"label",filterOption:(e,t)=>(t?.label?.toString().toLowerCase()??"").includes(e.toLowerCase()),children:z.map(e=>(0,l.jsx)(G,{value:e.name,label:e.display_name,children:(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{style:{fontWeight:500},children:e.display_name}),(0,l.jsx)("div",{style:{fontSize:"12px",color:"#666",marginTop:"2px"},children:e.description})]})},e.name))}),(0,l.jsx)(c.Button,{type:"primary",onClick:()=>{if(!y)return;let l=e.find(e=>e.name===y);!l||t.some(e=>e.category===y)||(a({id:`category-${Date.now()}`,category:l.name,display_name:l.display_name,action:l.default_action,severity_threshold:"medium"}),j(""),T(""))},disabled:!y,icon:(0,l.jsx)(f.PlusOutlined,{}),children:"Add"})]}),y&&(0,l.jsxs)("div",{style:{marginBottom:16,padding:"12px",background:"#f9f9f9",border:"1px solid #e0e0e0",borderRadius:"4px"},children:[(0,l.jsxs)("div",{style:{marginBottom:8,fontWeight:500,fontSize:"14px"},children:["Preview: ",e.find(e=>e.name===y)?.display_name,v[y]&&(0,l.jsxs)("span",{style:{marginLeft:8,fontSize:"12px",color:"#888",fontWeight:400},children:["(",v[y]?.toUpperCase(),")"]})]}),P?(0,l.jsx)("div",{style:{padding:"16px",textAlign:"center",color:"#888"},children:"Loading content..."}):O?(0,l.jsx)("pre",{style:{background:"#fff",padding:"12px",borderRadius:"4px",overflow:"auto",maxHeight:"300px",maxWidth:"100%",fontSize:"12px",lineHeight:"1.5",margin:0,border:"1px solid #e0e0e0",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:(0,l.jsx)("code",{children:O})}):(0,l.jsx)("div",{style:{padding:"8px",textAlign:"center",color:"#888",fontSize:"12px"},children:"Unable to load category content"})]}),t.length>0?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(I.Table,{dataSource:t,columns:F,pagination:!1,size:"small",rowKey:"id"}),(0,l.jsx)("div",{style:{marginTop:16},children:(0,l.jsx)($.Collapse,{activeKey:S,onChange:e=>{let t=Array.isArray(e)?e:e?[e]:[],a=new Set(S);t.forEach(e=>{a.has(e)||_[e]||B(e)}),k(t)},ghost:!0,items:t.map(e=>{let t=(v[e.category]||"yaml").toUpperCase();return{key:e.category,label:(0,l.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,l.jsx)(E.FileTextOutlined,{}),(0,l.jsxs)("span",{children:["View ",t," for ",e.display_name]})]}),children:N[e.category]?(0,l.jsx)("div",{style:{padding:"16px",textAlign:"center",color:"#888"},children:"Loading content..."}):_[e.category]?(0,l.jsx)("pre",{style:{background:"#f5f5f5",padding:"16px",borderRadius:"4px",overflow:"auto",maxHeight:"400px",fontSize:"12px",lineHeight:"1.5",margin:0},children:(0,l.jsx)("code",{children:_[e.category]})}):(0,l.jsx)("div",{style:{padding:"16px",textAlign:"center",color:"#888"},children:"Content will load when expanded"})}})})})]}):(0,l.jsx)("div",{style:{textAlign:"center",padding:"24px",color:"#888",border:"1px dashed #d9d9d9",borderRadius:"4px"},children:"No blocked topics selected. Add topics to detect and block harmful content."})]})};var D=e.i(790848),K=e.i(28651);let{Title:q,Text:H}=d.Typography,{Option:J}=n.Select,U={competitor_intent_type:"airline",brand_self:[],locations:[],policy:{competitor_comparison:"refuse",possible_competitor_comparison:"reframe"},threshold_high:.7,threshold_medium:.45,threshold_low:.3},W=({enabled:e,config:t,onChange:a,accessToken:i})=>{let s=t??U,[o,d]=(0,m.useState)([]),[c,u]=(0,m.useState)(!1);(0,m.useEffect)(()=>{"airline"===s.competitor_intent_type&&i&&0===o.length&&(u(!0),(0,p.getMajorAirlines)(i).then(e=>d(e.airlines??[])).catch(()=>d([])).finally(()=>u(!1)))},[s.competitor_intent_type,i,o.length]);let x=e=>{a(e,e?{...U}:null)},f=(t,l)=>{a(e,{...s,[t]:l})},y=(t,l)=>{a(e,{...s,policy:{...s.policy,[t]:l}})},j=(t,l)=>{a(e,{...s,[t]:l.filter(Boolean)})};return e?(0,l.jsxs)(h.Card,{title:(0,l.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,l.jsx)(q,{level:5,style:{margin:0},children:"Competitor Intent Filter"}),(0,l.jsx)(D.Switch,{checked:e,onChange:x})]}),size:"small",children:[(0,l.jsx)(H,{type:"secondary",style:{display:"block",marginBottom:16},children:"Block or reframe competitor comparison questions. Airline type uses major airlines (excluding your brand); generic requires manual competitor list."}),(0,l.jsxs)(r.Form,{layout:"vertical",size:"small",children:[(0,l.jsx)(r.Form.Item,{label:"Type",children:(0,l.jsxs)(n.Select,{value:s.competitor_intent_type,onChange:e=>f("competitor_intent_type",e),style:{width:"100%"},children:[(0,l.jsx)(J,{value:"airline",children:"Airline (auto-load competitors from IATA)"}),(0,l.jsx)(J,{value:"generic",children:"Generic (specify competitors manually)"})]})}),(0,l.jsx)(r.Form.Item,{label:"Your Brand (brand_self)",required:!0,help:"airline"===s.competitor_intent_type?"Select your airline from the list (excluded from competitors) or type to add a custom term":"Names/codes users use for your brand",children:(0,l.jsx)(n.Select,{mode:"tags",style:{width:"100%"},placeholder:c?"Loading airlines...":"airline"===s.competitor_intent_type?"Search or select airline, or type to add custom":"Type and press Enter to add",value:s.brand_self,onChange:t=>"airline"===s.competitor_intent_type&&o.length>0?(t=>{let l=t.filter(Boolean),r=[],i=new Set;for(let e of l){let t=o.find(t=>t.match.split("|")[0]?.trim().toLowerCase()===e.toLowerCase());if(t)for(let e of t.match.split("|").map(e=>e.trim().toLowerCase()).filter(Boolean))i.has(e)||(i.add(e),r.push(e));else i.has(e.toLowerCase())||(i.add(e.toLowerCase()),r.push(e))}a(e,{...s,brand_self:r})})(t??[]):j("brand_self",t??[]),tokenSeparators:[","],loading:c,showSearch:!0,filterOption:(e,t)=>(t?.label?.toString().toLowerCase()??"").includes(e.toLowerCase()),optionFilterProp:"label",options:"airline"===s.competitor_intent_type&&o.length>0?o.map(e=>{let t=e.match.split("|")[0]?.trim()??e.id,a=e.match.split("|").map(e=>e.trim().toLowerCase()).filter(Boolean);return{value:t.toLowerCase(),label:`${t}${a.length>1?` (${a.slice(1).join(", ")})`:""}`}}):void 0})}),"airline"===s.competitor_intent_type&&(0,l.jsx)(r.Form.Item,{label:"Locations (optional)",help:"Countries, cities, airports for disambiguation (e.g. qatar, doha)",children:(0,l.jsx)(n.Select,{mode:"tags",style:{width:"100%"},placeholder:"Type and press Enter to add",value:s.locations??[],onChange:e=>j("locations",e??[]),tokenSeparators:[","]})}),"generic"===s.competitor_intent_type&&(0,l.jsx)(r.Form.Item,{label:"Competitors",required:!0,help:"Competitor names to detect (required for generic type)",children:(0,l.jsx)(n.Select,{mode:"tags",style:{width:"100%"},placeholder:"Type and press Enter to add",value:s.competitors??[],onChange:e=>j("competitors",e??[]),tokenSeparators:[","]})}),(0,l.jsx)(r.Form.Item,{label:"Policy: Competitor comparison",children:(0,l.jsxs)(n.Select,{value:s.policy?.competitor_comparison??"refuse",onChange:e=>y("competitor_comparison",e),style:{width:"100%"},children:[(0,l.jsx)(J,{value:"refuse",children:"Refuse (block request)"}),(0,l.jsx)(J,{value:"reframe",children:"Reframe (suggest alternative)"})]})}),(0,l.jsx)(r.Form.Item,{label:"Policy: Possible competitor comparison",children:(0,l.jsxs)(n.Select,{value:s.policy?.possible_competitor_comparison??"reframe",onChange:e=>y("possible_competitor_comparison",e),style:{width:"100%"},children:[(0,l.jsx)(J,{value:"refuse",children:"Refuse (block request)"}),(0,l.jsx)(J,{value:"reframe",children:"Reframe (suggest alternative to backend LLM)"})]})}),(0,l.jsx)(r.Form.Item,{label:"Confidence thresholds",help:(0,l.jsxs)(l.Fragment,{children:["Classify competitor intent by confidence (0–1). Higher confidence → stronger intent.",(0,l.jsxs)("ul",{style:{marginBottom:0,marginTop:4,paddingLeft:20},children:[(0,l.jsxs)("li",{children:[(0,l.jsx)("strong",{children:"High (≥)"}),': Treat as full competitor comparison → uses "Competitor comparison" policy']}),(0,l.jsxs)("li",{children:[(0,l.jsx)("strong",{children:"Medium (≥)"}),': Treat as possible comparison → uses "Possible competitor comparison" policy']}),(0,l.jsxs)("li",{children:[(0,l.jsx)("strong",{children:"Low (≥)"}),": Log only; allow request. Below Low → allow with no action"]})]}),"Raise thresholds to be more permissive; lower them to be stricter."]}),children:(0,l.jsxs)(g.Space,{wrap:!0,children:[(0,l.jsx)(r.Form.Item,{label:"High",style:{marginBottom:0},help:"e.g. 0.7",children:(0,l.jsx)(K.InputNumber,{min:0,max:1,step:.05,value:s.threshold_high??.7,onChange:e=>f("threshold_high",e??.7),style:{width:80}})}),(0,l.jsx)(r.Form.Item,{label:"Medium",style:{marginBottom:0},help:"e.g. 0.45",children:(0,l.jsx)(K.InputNumber,{min:0,max:1,step:.05,value:s.threshold_medium??.45,onChange:e=>f("threshold_medium",e??.45),style:{width:80}})}),(0,l.jsx)(r.Form.Item,{label:"Low",style:{marginBottom:0},help:"e.g. 0.3",children:(0,l.jsx)(K.InputNumber,{min:0,max:1,step:.05,value:s.threshold_low??.3,onChange:e=>f("threshold_low",e??.3),style:{width:80}})})]})})]})]}):(0,l.jsx)(h.Card,{title:(0,l.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,l.jsx)(q,{level:5,style:{margin:0},children:"Competitor Intent Filter"}),(0,l.jsx)(D.Switch,{checked:!1,onChange:x})]}),size:"small",children:(0,l.jsx)(H,{type:"secondary",children:"Block or reframe competitor comparison questions. When enabled, airline type auto-loads competitors from IATA; generic type requires manual competitor list."})})},{Title:V,Text:Y}=d.Typography,Q=({prebuiltPatterns:e,categories:t,selectedPatterns:a,blockedWords:r,onPatternAdd:i,onPatternRemove:s,onPatternActionChange:n,onBlockedWordAdd:o,onBlockedWordRemove:d,onBlockedWordUpdate:j,onFileUpload:_,accessToken:v,showStep:w,contentCategories:C=[],selectedContentCategories:S=[],onContentCategoryAdd:I,onContentCategoryRemove:A,onContentCategoryUpdate:O,pendingCategorySelection:T,onPendingCategorySelectionChange:L,competitorIntentEnabled:B=!1,competitorIntentConfig:$=null,onCompetitorIntentChange:E})=>{let[M,R]=(0,m.useState)(!1),[G,D]=(0,m.useState)(!1),[K,q]=(0,m.useState)(!1),[H,J]=(0,m.useState)(""),[U,Q]=(0,m.useState)("BLOCK"),[X,Z]=(0,m.useState)(""),[ee,et]=(0,m.useState)(""),[ea,el]=(0,m.useState)("BLOCK"),[er,ei]=(0,m.useState)(""),[es,en]=(0,m.useState)("BLOCK"),[eo,ed]=(0,m.useState)(""),[ec,em]=(0,m.useState)(!1),eu=async e=>{em(!0);try{let t=await e.text();if(v){let e=await (0,p.validateBlockedWordsFile)(v,t);if(e.valid)_&&_(t),u.default.success(e.message||"File uploaded successfully");else{let t=e.error||e.errors&&e.errors.join(", ")||"Invalid file";u.default.error(`Validation failed: ${t}`)}}}catch(e){u.default.error(`Failed to upload file: ${e}`)}finally{em(!1)}return!1};return(0,l.jsxs)("div",{className:"space-y-6",children:[!w&&(0,l.jsx)("div",{children:(0,l.jsx)(Y,{type:"secondary",children:"Configure patterns, keywords, and content categories to detect and filter sensitive information in requests and responses."})}),(!w||"patterns"===w)&&(0,l.jsxs)(h.Card,{title:(0,l.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,l.jsx)(V,{level:5,style:{margin:0},children:"Pattern Detection"}),(0,l.jsx)(Y,{type:"secondary",style:{fontSize:14,fontWeight:400},children:"Detect sensitive information using regex patterns (SSN, credit cards, API keys, etc.)"})]}),size:"small",children:[(0,l.jsx)("div",{style:{marginBottom:16},children:(0,l.jsxs)(g.Space,{children:[(0,l.jsx)(c.Button,{type:"primary",onClick:()=>R(!0),icon:(0,l.jsx)(f.PlusOutlined,{}),children:"Add prebuilt pattern"}),(0,l.jsx)(c.Button,{onClick:()=>q(!0),icon:(0,l.jsx)(f.PlusOutlined,{}),children:"Add custom regex"})]})}),(0,l.jsx)(P,{patterns:a,onActionChange:n,onRemove:s})]}),(!w||"keywords"===w)&&(0,l.jsxs)(h.Card,{title:(0,l.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,l.jsx)(V,{level:5,style:{margin:0},children:"Blocked Keywords"}),(0,l.jsx)(Y,{type:"secondary",style:{fontSize:14,fontWeight:400},children:"Block or mask specific sensitive terms and phrases"})]}),size:"small",children:[(0,l.jsx)("div",{style:{marginBottom:16},children:(0,l.jsxs)(g.Space,{children:[(0,l.jsx)(c.Button,{type:"primary",onClick:()=>D(!0),icon:(0,l.jsx)(f.PlusOutlined,{}),children:"Add keyword"}),(0,l.jsx)(x.Upload,{beforeUpload:eu,accept:".yaml,.yml",showUploadList:!1,children:(0,l.jsx)(c.Button,{icon:(0,l.jsx)(y.UploadOutlined,{}),loading:ec,children:"Upload YAML file"})})]})}),(0,l.jsx)(F,{keywords:r,onActionChange:j,onRemove:d})]}),(!w||"competitor_intent"===w||"categories"===w)&&E&&(0,l.jsx)(W,{enabled:B,config:$,onChange:E,accessToken:v}),(!w||"categories"===w)&&C.length>0&&I&&A&&O&&(0,l.jsx)(z,{availableCategories:C,selectedCategories:S,onCategoryAdd:I,onCategoryRemove:A,onCategoryUpdate:O,accessToken:v,pendingSelection:T,onPendingSelectionChange:L}),(0,l.jsx)(b,{visible:M,prebuiltPatterns:e,categories:t,selectedPatternName:H,patternAction:U,onPatternNameChange:J,onActionChange:e=>Q(e),onAdd:()=>{if(!H)return void u.default.error("Please select a pattern");let t=e.find(e=>e.name===H);i({id:`pattern-${Date.now()}`,type:"prebuilt",name:H,display_name:t?.display_name,action:U}),R(!1),J(""),Q("BLOCK")},onCancel:()=>{R(!1),J(""),Q("BLOCK")}}),(0,l.jsx)(N,{visible:K,patternName:X,patternRegex:ee,patternAction:ea,onNameChange:Z,onRegexChange:et,onActionChange:e=>el(e),onAdd:()=>{X&&ee?(i({id:`custom-${Date.now()}`,type:"custom",name:X,pattern:ee,action:ea}),q(!1),Z(""),et(""),el("BLOCK")):u.default.error("Please provide pattern name and regex")},onCancel:()=>{q(!1),Z(""),et(""),el("BLOCK")}}),(0,l.jsx)(k,{visible:G,keyword:er,action:es,description:eo,onKeywordChange:ei,onActionChange:e=>en(e),onDescriptionChange:ed,onAdd:()=>{er?(o({id:`word-${Date.now()}`,keyword:er,action:es,description:eo||void 0}),D(!1),ei(""),ed(""),en("BLOCK")):u.default.error("Please enter a keyword")},onCancel:()=>{D(!1),ei(""),ed(""),en("BLOCK")}})]})};var X=((t={}).PresidioPII="Presidio PII",t.Bedrock="Bedrock Guardrail",t.Lakera="Lakera",t);let Z={},ee=e=>{let t={};return t.PresidioPII="Presidio PII",t.Bedrock="Bedrock Guardrail",t.Lakera="Lakera",t.LlmAsAJudge="LiteLLM LLM as a Judge",Object.entries(e).forEach(([e,a])=>{a&&"object"==typeof a&&"ui_friendly_name"in a&&(t[e.split("_").map((e,t)=>e.charAt(0).toUpperCase()+e.slice(1)).join("")]=a.ui_friendly_name)}),Z=t,t},et=()=>Object.keys(Z).length>0?Z:X,ea={PresidioPII:"presidio",Bedrock:"bedrock",Lakera:"lakera_v2",LitellmContentFilter:"litellm_content_filter",ToolPermission:"tool_permission",BlockCodeExecution:"block_code_execution",Promptguard:"promptguard",LlmAsAJudge:"llm_as_a_judge",Xecguard:"xecguard",Deepkeep:"deepkeep",QostodianNexus:"qostodian_nexus"},el=e=>{Object.entries(e).forEach(([e,t])=>{t&&"object"==typeof t&&"ui_friendly_name"in t&&(ea[e.split("_").map((e,t)=>e.charAt(0).toUpperCase()+e.slice(1)).join("")]=e)})},er=e=>!!e&&"Presidio PII"===et()[e],ei=e=>!!e&&"LiteLLM Content Filter"===et()[e],es=e=>!!e&&"llm_as_a_judge"===ea[e],en="../ui/assets/logos/",eo={"Zscaler AI Guard":`${en}zscaler.svg`,"Presidio PII":`${en}microsoft_azure.svg`,"Bedrock Guardrail":`${en}bedrock.svg`,Lakera:`${en}lakeraai.jpeg`,"Azure Content Safety Prompt Shield":`${en}microsoft_azure.svg`,"Azure Content Safety Text Moderation":`${en}microsoft_azure.svg`,"Aporia AI":`${en}aporia.png`,"PANW Prisma AIRS":`${en}palo_alto_networks.jpeg`,"Noma Security":`${en}noma_security.png`,"Javelin Guardrails":`${en}javelin.png`,"Pillar Guardrail":`${en}pillar.jpeg`,"Google Cloud Model Armor":`${en}google.svg`,"Guardrails AI":`${en}guardrails_ai.jpeg`,"Lasso Guardrail":`${en}lasso.png`,"Pangea Guardrail":`${en}pangea.png`,"AIM Guardrail":`${en}aim_security.jpeg`,"OpenAI Moderation":`${en}openai_small.svg`,EnkryptAI:`${en}enkrypt_ai.avif`,"Prompt Security":`${en}prompt_security.png`,PromptGuard:`${en}promptguard.svg`,XecGuard:`${en}xecguard.svg`,"LiteLLM Content Filter":`${en}litellm_logo.jpg`,"LiteLLM LLM as a Judge":`${en}litellm_logo.jpg`,Akto:`${en}akto.svg`,"DeepKeep AI Firewall":`${en}deepkeep.svg`,"Qostodian Nexus":`${en}qohash.jpg`},ed=e=>{if(!e)return{logo:"",displayName:"-"};let t=Object.keys(ea).find(t=>ea[t].toLowerCase()===e.toLowerCase());if(!t)return{logo:"",displayName:e};let a=et()[t];return{logo:eo[a]||"",displayName:a||e}};function ec(e){return!0===e?"yes":!1===e?"no":"inherit"}function em(e){return"yes"===e||"no"!==e&&void 0}function eu(e){return!0===e?"yes":!1===e?"no":"inherit"}function ep(e){return"yes"===e||"no"!==e&&void 0}e.s(["choiceToSkipSystemForCreate",0,em,"choiceToSkipToolForCreate",0,ep,"getGuardrailLogoAndName",0,ed,"getGuardrailProviders",0,et,"guardrailLogoMap",0,eo,"guardrail_provider_map",0,ea,"populateGuardrailProviderMap",0,el,"populateGuardrailProviders",0,ee,"shouldRenderContentFilterConfigSettings",0,ei,"shouldRenderLLMJudgeFields",0,es,"shouldRenderPIIConfigSettings",0,er,"skipSystemMessageToChoice",0,ec,"skipToolMessageToChoice",0,eu],180766);var eg=e.i(435451);let{Title:ex}=d.Typography,eh=({field:e,fieldKey:t,fullFieldKey:a,value:s})=>{let[o,d]=m.default.useState([]),[u,p]=m.default.useState(e.dict_key_options||[]);return m.default.useEffect(()=>{if(s&&"object"==typeof s){let t=Object.keys(s);d(t.map(e=>({key:e,id:`${e}_${Date.now()}_${Math.random()}`}))),p((e.dict_key_options||[]).filter(e=>!t.includes(e)))}},[s,e.dict_key_options]),(0,l.jsxs)("div",{className:"space-y-3",children:[o.map(t=>(0,l.jsxs)("div",{className:"flex items-center space-x-3 p-3 border rounded-lg",children:[(0,l.jsx)("div",{className:"w-24 font-medium text-sm",children:t.key}),(0,l.jsx)("div",{className:"flex-1",children:(0,l.jsx)(r.Form.Item,{name:Array.isArray(a)?[...a,t.key]:[a,t.key],style:{marginBottom:0},initialValue:s&&"object"==typeof s?s[t.key]:void 0,normalize:"number"===e.dict_value_type?e=>{if(null==e||""===e)return;let t=Number(e);return isNaN(t)?e:t}:void 0,children:"number"===e.dict_value_type?(0,l.jsx)(eg.default,{step:1,width:200,placeholder:`Enter ${t.key} value`}):"boolean"===e.dict_value_type?(0,l.jsxs)(n.Select,{placeholder:`Select ${t.key} value`,children:[(0,l.jsx)(n.Select.Option,{value:!0,children:"True"}),(0,l.jsx)(n.Select.Option,{value:!1,children:"False"})]}):(0,l.jsx)(i.Input,{placeholder:`Enter ${t.key} value`})})}),(0,l.jsx)(c.Button,{type:"text",danger:!0,size:"small",onClick:()=>{var e,a;return e=t.id,a=t.key,void(d(o.filter(t=>t.id!==e)),p([...u,a].sort()))},children:"Remove"})]},t.id)),u.length>0&&(0,l.jsxs)("div",{className:"flex items-center space-x-3 mt-2",children:[(0,l.jsx)(n.Select,{placeholder:"Select category to configure",style:{width:200},onSelect:e=>e&&void(!e||(d([...o,{key:e,id:`${e}_${Date.now()}`}]),p(u.filter(t=>t!==e)))),value:void 0,children:u.map(e=>(0,l.jsx)(n.Select.Option,{value:e,children:e},e))}),(0,l.jsx)("span",{className:"text-sm text-gray-500",children:"Select a category to add threshold configuration"})]})]})},ef=({optionalParams:e,parentFieldKey:t,values:a})=>e.fields&&0!==Object.keys(e.fields).length?(0,l.jsxs)("div",{className:"guardrail-optional-params",children:[(0,l.jsxs)("div",{className:"mb-8 pb-4 border-b border-gray-100",children:[(0,l.jsx)(ex,{level:3,className:"mb-2 font-semibold text-gray-900",children:"Optional Parameters"}),(0,l.jsx)("p",{className:"text-gray-600 text-sm",children:e.description||"Configure additional settings for this guardrail provider"})]}),(0,l.jsx)("div",{className:"space-y-8",children:Object.entries(e.fields).map(([e,s])=>{let o,d;return o=`${t}.${e}`,(console.log("value",d=a?.[e]),"dict"===s.type&&s.dict_key_options)?(0,l.jsxs)("div",{className:"mb-8 p-6 bg-gray-50 rounded-lg border border-gray-200",children:[(0,l.jsx)("div",{className:"mb-4 font-medium text-gray-900 text-base",children:e}),(0,l.jsx)("p",{className:"text-sm text-gray-600 mb-4",children:s.description}),(0,l.jsx)(eh,{field:s,fieldKey:e,fullFieldKey:[t,e],value:d})]},o):(0,l.jsx)("div",{className:"mb-8 p-6 bg-white rounded-lg border border-gray-200 shadow-sm",children:(0,l.jsx)(r.Form.Item,{name:[t,e],label:(0,l.jsxs)("div",{className:"mb-2",children:[(0,l.jsx)("div",{className:"font-medium text-gray-900 text-base",children:e}),(0,l.jsx)("p",{className:"text-sm text-gray-600 mt-1",children:s.description})]}),rules:s.required?[{required:!0,message:`${e} is required`}]:void 0,className:"mb-0",initialValue:void 0!==d?d:s.default_value,normalize:"number"===s.type?e=>{if(null==e||""===e)return;let t=Number(e);return isNaN(t)?e:t}:void 0,children:"select"===s.type&&s.options?(0,l.jsx)(n.Select,{placeholder:s.description,children:s.options.map(e=>(0,l.jsx)(n.Select.Option,{value:e,children:e},e))}):"multiselect"===s.type&&s.options?(0,l.jsx)(n.Select,{mode:"multiple",placeholder:s.description,children:s.options.map(e=>(0,l.jsx)(n.Select.Option,{value:e,children:e},e))}):"bool"===s.type||"boolean"===s.type?(0,l.jsxs)(n.Select,{placeholder:s.description,children:[(0,l.jsx)(n.Select.Option,{value:!0,children:"True"}),(0,l.jsx)(n.Select.Option,{value:!1,children:"False"})]}):"number"===s.type?(0,l.jsx)(eg.default,{step:1,width:400,placeholder:s.description}):e.includes("password")||e.includes("secret")||e.includes("key")?(0,l.jsx)(i.Input.Password,{placeholder:s.description}):(0,l.jsx)(i.Input,{placeholder:s.description})})},o)})})]}):null;var ey=e.i(482725),ej=e.i(850627);let e_=({selectedProvider:e,accessToken:t,providerParams:a=null,value:s=null})=>{let[o,d]=(0,m.useState)(!1),[c,u]=(0,m.useState)(a),[g,x]=(0,m.useState)(null);if((0,m.useEffect)(()=>{if(a)return void u(a);let e=async()=>{if(t){d(!0),x(null);try{let e=await (0,p.getGuardrailProviderSpecificParams)(t);console.log("Provider params API response:",e),u(e),ee(e),el(e)}catch(e){console.error("Error fetching provider params:",e),x("Failed to load provider parameters")}finally{d(!1)}}};a||e()},[t,a]),!e)return null;if(o)return(0,l.jsx)(ey.Spin,{tip:"Loading provider parameters..."});if(g)return(0,l.jsx)("div",{className:"text-red-500",children:g});let h=ea[e]?.toLowerCase(),f=c&&c[h];if(console.log("Provider key:",h),console.log("Provider fields:",f),!f||0===Object.keys(f).length)return(0,l.jsx)("div",{children:"No configuration fields available for this provider."});console.log("Value:",s);let y=new Set(["patterns","blocked_words","blocked_words_file","categories","severity_threshold","pattern_redaction_format","keyword_redaction_tag"]),j=ei(e),_=(e,t="",a)=>Object.entries(e).map(([e,o])=>{let d=t?`${t}.${e}`:e,c=a?a[e]:s?.[e];if(console.log("Field value:",c),"ui_friendly_name"===e||"optional_params"===e&&"nested"===o.type&&o.fields||j&&y.has(e))return null;if("nested"===o.type&&o.fields)return(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{className:"mb-2 font-medium",children:e}),(0,l.jsx)("div",{className:"ml-4 border-l-2 border-gray-200 pl-4",children:_(o.fields,d,c)})]},d);let m=void 0!==c?c:o.default_value??("percentage"===o.type?.5:void 0);return(0,l.jsx)(r.Form.Item,{name:d,label:e,tooltip:o.description,rules:o.required?[{required:!0,message:`${e} is required`}]:void 0,initialValue:m,children:"select"===o.type&&o.options?(0,l.jsx)(n.Select,{placeholder:o.description,defaultValue:c||o.default_value,children:o.options.map(e=>(0,l.jsx)(n.Select.Option,{value:e,children:e},e))}):"multiselect"===o.type&&o.options?(0,l.jsx)(n.Select,{mode:"multiple",placeholder:o.description,defaultValue:c||o.default_value,children:o.options.map(e=>(0,l.jsx)(n.Select.Option,{value:e,children:e},e))}):"bool"===o.type||"boolean"===o.type?(0,l.jsxs)(n.Select,{placeholder:o.description,children:[(0,l.jsx)(n.Select.Option,{value:!0,children:"True"}),(0,l.jsx)(n.Select.Option,{value:!1,children:"False"})]}):"percentage"===o.type&&null!=o.min&&null!=o.max?(0,l.jsx)(ej.Slider,{min:o.min,max:o.max,step:o.step??.1,marks:{[o.min]:"0%",[(o.min+o.max)/2]:"50%",[o.max]:"100%"}}):"number"===o.type?(0,l.jsx)(eg.default,{step:1,width:400,placeholder:o.description,defaultValue:void 0!==c?Number(c):void 0}):e.includes("password")||e.includes("secret")||e.includes("key")?(0,l.jsx)(i.Input.Password,{placeholder:o.description,defaultValue:c||""}):(0,l.jsx)(i.Input,{placeholder:o.description,defaultValue:c||""})},d)});return(0,l.jsx)(l.Fragment,{children:_(f)})};var eb=e.i(592968),ev=e.i(750113);let ew=({availableModels:e,form:t})=>(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{style:{background:"#f6ffed",border:"1px solid #b7eb8f",borderRadius:6,padding:"10px 14px",marginBottom:16,fontSize:13,color:"#389e0d"},children:["After each LLM response, the ",(0,l.jsx)("strong",{children:"Judge Model"})," scores it 0–100 against your criteria. If the weighted average falls below the threshold, the response is blocked (or logged)."]}),(0,l.jsx)(r.Form.Item,{name:"judge_model",label:(0,l.jsxs)("span",{children:["Judge Model ",(0,l.jsx)(eb.Tooltip,{title:"The LLM that reads each response and grades it. Pick a capable model — it never sees end-user data beyond what the LLM returned.",children:(0,l.jsx)(ev.QuestionCircleOutlined,{style:{color:"#8c8c8c"}})})]}),rules:[{required:!0,message:"Select a judge model"}],children:(0,l.jsx)(n.Select,{showSearch:!0,placeholder:"Select a model",options:e.map(e=>({label:e,value:e}))})}),(0,l.jsx)(r.Form.Item,{name:"overall_threshold",label:(0,l.jsxs)("span",{children:["Minimum Score to Pass ",(0,l.jsx)(eb.Tooltip,{title:"0–100. If the weighted average of criterion scores falls below this, the guardrail triggers. 80 is a good default.",children:(0,l.jsx)(ev.QuestionCircleOutlined,{style:{color:"#8c8c8c"}})})]}),initialValue:80,children:(0,l.jsx)(K.InputNumber,{min:0,max:100,addonAfter:"/ 100",style:{width:"100%"}})}),(0,l.jsx)(r.Form.Item,{name:"on_failure",label:(0,l.jsxs)("span",{children:["On Failure ",(0,l.jsx)(eb.Tooltip,{title:"Block: return HTTP 422 when the score is too low. Log: record the result but let the response through.",children:(0,l.jsx)(ev.QuestionCircleOutlined,{style:{color:"#8c8c8c"}})})]}),initialValue:"block",children:(0,l.jsxs)(n.Select,{children:[(0,l.jsx)(n.Select.Option,{value:"block",children:"Block (return 422)"}),(0,l.jsx)(n.Select.Option,{value:"log",children:"Log only"})]})}),(0,l.jsx)(r.Form.Item,{label:(0,l.jsxs)("span",{children:["Evaluation Criteria ",(0,l.jsx)(eb.Tooltip,{title:"Each criterion is something the judge checks. Weights must add up to 100%.",children:(0,l.jsx)(ev.QuestionCircleOutlined,{style:{color:"#8c8c8c"}})})]}),children:(0,l.jsx)(r.Form.List,{name:"criteria",initialValue:[{name:"",weight:100,description:""}],children:(e,{add:a,remove:s})=>(0,l.jsxs)(l.Fragment,{children:[e.map(({key:e,name:t,...a})=>(0,l.jsxs)("div",{style:{border:"1px solid #f0f0f0",borderRadius:6,padding:"12px 12px 0",marginBottom:8},children:[(0,l.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"flex-end"},children:[(0,l.jsx)(r.Form.Item,{...a,name:[t,"name"],rules:[{required:!0,message:"Enter criterion name"}],style:{flex:2,marginBottom:8},children:(0,l.jsx)(i.Input,{placeholder:"Criterion name (e.g. Policy accuracy)"})}),(0,l.jsx)(r.Form.Item,{...a,name:[t,"weight"],label:(0,l.jsx)(eb.Tooltip,{title:"How much this criterion counts toward the final score. All weights must add up to 100%.",children:(0,l.jsxs)("span",{style:{fontSize:12,color:"#595959"},children:["Weight ",(0,l.jsx)(ev.QuestionCircleOutlined,{style:{color:"#bfbfbf"}})]})}),rules:[{required:!0,message:"Enter weight"}],style:{flex:1,marginBottom:8},children:(0,l.jsx)(K.InputNumber,{min:0,max:100,addonAfter:"%",style:{width:"100%"},placeholder:"e.g. 50"})}),(0,l.jsx)("div",{style:{marginBottom:8},children:(0,l.jsx)(c.Button,{type:"text",danger:!0,size:"small",onClick:()=>s(t),children:"×"})})]}),(0,l.jsx)(r.Form.Item,{...a,name:[t,"description"],rules:[{required:!0,message:"Describe what to check"}],style:{marginBottom:8},children:(0,l.jsx)(i.Input,{placeholder:"What should the judge check for this criterion?"})})]},e)),(0,l.jsx)(c.Button,{type:"dashed",block:!0,style:{marginTop:4},onClick:()=>a({name:"",weight:0,description:""}),icon:(0,l.jsx)(f.PlusOutlined,{}),children:"Add Criterion"}),e.length>0&&(0,l.jsx)(r.Form.Item,{shouldUpdate:!0,noStyle:!0,children:()=>{let e=(t.getFieldValue("criteria")||[]).reduce((e,t)=>e+(Number(t?.weight)||0),0),a=100===e;return(0,l.jsxs)("div",{style:{marginTop:6,fontSize:12,color:a?"#52c41a":"#faad14"},children:["Weights total: ",e,"%",a?" ✓":" — must add up to 100%"]})}})]})})})]});var eN=e.i(536916),eC=e.i(149192),eS=e.i(741585),eS=eS,ek=e.i(724154);e.i(247167);var eI=e.i(931067);let eA={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V642h182.9v156zm9.6-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z"}}]},name:"filter",theme:"outlined"};var eO=e.i(9583),eT=m.forwardRef(function(e,t){return m.createElement(eO.default,(0,eI.default)({},e,{ref:t,icon:eA}))});let{Text:eP}=d.Typography,{Option:eL}=n.Select,eB=({categories:e,selectedCategories:t,onChange:a})=>(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"flex items-center mb-2",children:[(0,l.jsx)(eT,{className:"text-gray-500 mr-1"}),(0,l.jsx)(eP,{className:"text-gray-500 font-medium",children:"Filter by category"})]}),(0,l.jsx)(n.Select,{mode:"multiple",placeholder:"Select categories to filter by",style:{width:"100%"},onChange:a,value:t,allowClear:!0,showSearch:!0,optionFilterProp:"children",className:"mb-4",tagRender:e=>(0,l.jsx)(o.Tag,{color:"blue",closable:e.closable,onClose:e.onClose,className:"mr-2 mb-2",children:e.label}),children:e.map(e=>(0,l.jsx)(eL,{value:e.category,children:e.category},e.category))})]}),eF=({onSelectAll:e,onUnselectAll:t,hasSelectedEntities:a})=>(0,l.jsxs)("div",{className:"bg-gray-50 p-5 rounded-lg mb-6 border border-gray-200 shadow-sm",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,l.jsxs)("div",{className:"flex items-center",children:[(0,l.jsx)(eP,{strong:!0,className:"text-gray-700 text-base",children:"Quick Actions"}),(0,l.jsx)(eb.Tooltip,{title:"Apply action to all PII types at once",children:(0,l.jsx)("div",{className:"ml-2 text-gray-400 cursor-help text-xs",children:"ⓘ"})})]}),(0,l.jsx)(c.Button,{color:"danger",variant:"outlined",onClick:t,disabled:!a,icon:(0,l.jsx)(eC.CloseOutlined,{}),children:"Unselect All"})]}),(0,l.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,l.jsx)(c.Button,{color:"primary",variant:"outlined",onClick:()=>e("MASK"),className:"h-10",block:!0,icon:(0,l.jsx)(eS.default,{}),children:"Select All & Mask"}),(0,l.jsx)(c.Button,{color:"danger",variant:"outlined",onClick:()=>e("BLOCK"),className:"h-10 hover:bg-red-100",block:!0,icon:(0,l.jsx)(ek.StopOutlined,{}),children:"Select All & Block"})]})]}),e$=({entities:e,selectedEntities:t,selectedActions:a,actions:r,onEntitySelect:i,onActionSelect:s,entityToCategoryMap:d})=>(0,l.jsxs)("div",{className:"border rounded-lg overflow-hidden shadow-sm",children:[(0,l.jsxs)("div",{className:"bg-gray-50 px-5 py-3 border-b flex",children:[(0,l.jsx)(eP,{strong:!0,className:"flex-1 text-gray-700",children:"PII Type"}),(0,l.jsx)(eP,{strong:!0,className:"w-32 text-right text-gray-700",children:"Action"})]}),(0,l.jsx)("div",{className:"max-h-[400px] overflow-y-auto",children:0===e.length?(0,l.jsx)("div",{className:"py-10 text-center text-gray-500",children:"No PII types match your filter criteria"}):e.map(e=>(0,l.jsxs)("div",{className:`px-5 py-3 flex items-center justify-between hover:bg-gray-50 border-b ${t.includes(e)?"bg-blue-50":""}`,children:[(0,l.jsxs)("div",{className:"flex items-center flex-1",children:[(0,l.jsx)(eN.Checkbox,{checked:t.includes(e),onChange:()=>i(e),className:"mr-3"}),(0,l.jsx)(eP,{className:t.includes(e)?"font-medium text-gray-900":"text-gray-700",children:e.replace(/_/g," ")}),d.get(e)&&(0,l.jsx)(o.Tag,{className:"ml-2 text-xs",color:"blue",children:d.get(e)})]}),(0,l.jsx)("div",{className:"w-32",children:(0,l.jsx)(n.Select,{value:t.includes(e)&&a[e]||"MASK",onChange:t=>s(e,t),style:{width:120},disabled:!t.includes(e),className:`${!t.includes(e)?"opacity-50":""}`,dropdownMatchSelectWidth:!1,children:r.map(e=>(0,l.jsx)(eL,{value:e,children:(0,l.jsxs)("div",{className:"flex items-center",children:[(e=>{switch(e){case"MASK":return(0,l.jsx)(eS.default,{style:{marginRight:4}});case"BLOCK":return(0,l.jsx)(ek.StopOutlined,{style:{marginRight:4}});default:return null}})(e),e]})},e))})})]},e))})]}),{Title:eE,Text:eM}=d.Typography,eR=({entities:e,actions:t,selectedEntities:a,selectedActions:r,onEntitySelect:i,onActionSelect:s,entityCategories:n=[]})=>{let[o,d]=(0,m.useState)([]),c=new Map;n.forEach(e=>{e.entities.forEach(t=>{c.set(t,e.category)})});let u=e.filter(e=>0===o.length||o.includes(c.get(e)||""));return(0,l.jsxs)("div",{className:"pii-configuration",children:[(0,l.jsxs)("div",{className:"flex justify-between items-center mb-5",children:[(0,l.jsx)("div",{className:"flex items-center",children:(0,l.jsx)(eE,{level:4,className:"!m-0 font-semibold text-gray-800",children:"Configure PII Protection"})}),(0,l.jsxs)(eM,{className:"text-gray-500",children:[a.length," items selected"]})]}),(0,l.jsxs)("div",{className:"mb-6",children:[(0,l.jsx)(eB,{categories:n,selectedCategories:o,onChange:d}),(0,l.jsx)(eF,{onSelectAll:t=>{e.forEach(e=>{a.includes(e)||i(e),s(e,t)})},onUnselectAll:()=>{a.forEach(e=>{i(e)})},hasSelectedEntities:a.length>0})]}),(0,l.jsx)(e$,{entities:u,selectedEntities:a,selectedActions:r,actions:t,onEntitySelect:i,onActionSelect:s,entityToCategoryMap:c})]})};var eG=e.i(304967),ez=e.i(599724),eD=e.i(312361),eK=e.i(21548),eq=e.i(827252);let eH={rules:[],default_action:"deny",on_disallowed_action:"block",violation_message_template:""},eJ=({value:e,onChange:t,disabled:a=!1})=>{let r={...eH,...e||{},rules:e?.rules?[...e.rules]:[]},s=e=>{let a={...r,...e};t?.(a)},o=(e,t)=>{s({rules:r.rules.map((a,l)=>l===e?{...a,...t}:a)})},d=(e,t)=>{let a=r.rules[e];if(!a)return;let l=Object.entries(a.allowed_param_patterns||{});t(l);let i={};l.forEach(([e,t])=>{i[e]=t}),o(e,{allowed_param_patterns:Object.keys(i).length>0?i:void 0})};return(0,l.jsxs)(eG.Card,{children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)(ez.Text,{className:"text-lg font-semibold",children:"LiteLLM Tool Permission Guardrail"}),(0,l.jsx)(ez.Text,{className:"text-sm text-gray-500",children:"Provide regex patterns (e.g., ^mcp__github_.*$) for tool names or types and optionally constrain payload fields."})]}),!a&&(0,l.jsx)(c.Button,{icon:(0,l.jsx)(f.PlusOutlined,{}),type:"primary",onClick:()=>{s({rules:[...r.rules,{id:`rule_${Math.random().toString(36).slice(2,8)}`,decision:"allow",allowed_param_patterns:void 0}]})},className:"!bg-blue-600 !text-white hover:!bg-blue-500",children:"Add Rule"})]}),(0,l.jsx)(eD.Divider,{}),0===r.rules.length?(0,l.jsx)(eK.Empty,{description:"No tool rules added yet"}):(0,l.jsx)("div",{className:"space-y-4",children:r.rules.map((e,t)=>{let m;return(0,l.jsxs)(eG.Card,{className:"bg-gray-50",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,l.jsxs)(ez.Text,{className:"font-semibold",children:["Rule ",t+1]}),(0,l.jsx)(c.Button,{icon:(0,l.jsx)(A.DeleteOutlined,{}),danger:!0,type:"text",disabled:a,onClick:()=>{s({rules:r.rules.filter((e,a)=>a!==t)})},children:"Remove"})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)(ez.Text,{className:"text-sm font-medium",children:"Rule ID"}),(0,l.jsx)(i.Input,{disabled:a,placeholder:"unique_rule_id",value:e.id,onChange:e=>o(t,{id:e.target.value})})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(ez.Text,{className:"text-sm font-medium",children:"Tool Name (optional)"}),(0,l.jsx)(i.Input,{disabled:a,placeholder:"^mcp__github_.*$",value:e.tool_name??"",onChange:e=>o(t,{tool_name:""===e.target.value.trim()?void 0:e.target.value})})]})]}),(0,l.jsx)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 mt-4",children:(0,l.jsxs)("div",{children:[(0,l.jsx)(ez.Text,{className:"text-sm font-medium",children:"Tool Type (optional)"}),(0,l.jsx)(i.Input,{disabled:a,placeholder:"^function$",value:e.tool_type??"",onChange:e=>o(t,{tool_type:""===e.target.value.trim()?void 0:e.target.value})})]})}),(0,l.jsxs)("div",{className:"mt-4 flex flex-col gap-2",children:[(0,l.jsx)(ez.Text,{className:"text-sm font-medium",children:"Decision"}),(0,l.jsxs)(n.Select,{disabled:a,value:e.decision,style:{width:200},onChange:e=>o(t,{decision:e}),children:[(0,l.jsx)(n.Select.Option,{value:"allow",children:"Allow"}),(0,l.jsx)(n.Select.Option,{value:"deny",children:"Deny"})]})]}),(0,l.jsx)("div",{className:"mt-4",children:0===(m=Object.entries(e.allowed_param_patterns||{})).length?(0,l.jsx)(c.Button,{disabled:a,size:"small",onClick:()=>o(t,{allowed_param_patterns:{"":""}}),children:"+ Restrict tool arguments (optional)"}):(0,l.jsxs)("div",{className:"space-y-2",children:[(0,l.jsx)(ez.Text,{className:"text-sm text-gray-600",children:"Argument constraints (dot or array paths)"}),m.map(([r,s],n)=>(0,l.jsxs)(g.Space,{align:"start",children:[(0,l.jsx)(i.Input,{disabled:a,placeholder:"messages[0].content",value:r,onChange:e=>{var a;return a=e.target.value,void d(t,e=>{if(!e[n])return;let[,t]=e[n];e[n]=[a,t]})}}),(0,l.jsx)(i.Input,{disabled:a,placeholder:"^email@.*$",value:s,onChange:e=>{var a;return a=e.target.value,void d(t,e=>{if(!e[n])return;let[t]=e[n];e[n]=[t,a]})}}),(0,l.jsx)(c.Button,{disabled:a,icon:(0,l.jsx)(A.DeleteOutlined,{}),danger:!0,onClick:()=>d(t,e=>{e.splice(n,1)})})]},`${e.id||t}-${n}`)),(0,l.jsx)(c.Button,{disabled:a,size:"small",onClick:()=>o(t,{allowed_param_patterns:{...e.allowed_param_patterns||{},"":""}}),children:"+ Add another constraint"})]})})]},e.id||t)})}),(0,l.jsx)(eD.Divider,{}),(0,l.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)(ez.Text,{className:"text-sm font-medium",children:"Default action"}),(0,l.jsxs)(n.Select,{disabled:a,value:r.default_action,onChange:e=>s({default_action:e}),children:[(0,l.jsx)(n.Select.Option,{value:"allow",children:"Allow"}),(0,l.jsx)(n.Select.Option,{value:"deny",children:"Deny"})]})]}),(0,l.jsxs)("div",{children:[(0,l.jsxs)(ez.Text,{className:"text-sm font-medium flex items-center gap-1",children:["On disallowed action",(0,l.jsx)(eb.Tooltip,{title:"Block returns an error when a forbidden tool is invoked. Rewrite strips the tool call but lets the rest of the response continue.",children:(0,l.jsx)(eq.InfoCircleOutlined,{})})]}),(0,l.jsxs)(n.Select,{disabled:a,value:r.on_disallowed_action,onChange:e=>s({on_disallowed_action:e}),children:[(0,l.jsx)(n.Select.Option,{value:"block",children:"Block"}),(0,l.jsx)(n.Select.Option,{value:"rewrite",children:"Rewrite"})]})]})]}),(0,l.jsxs)("div",{className:"mt-4",children:[(0,l.jsx)(ez.Text,{className:"text-sm font-medium",children:"Violation message (optional)"}),(0,l.jsx)(i.Input.TextArea,{disabled:a,rows:3,placeholder:"This violates our org policy...",value:r.violation_message_template,onChange:e=>s({violation_message_template:e.target.value})})]})]})},{Title:eU,Text:eW,Link:eV}=d.Typography,{Option:eY}=n.Select,eQ={pre_call:"Before LLM Call - Runs before the LLM call and checks the input (Recommended)",during_call:"During LLM Call - Runs in parallel with the LLM call, with response held until check completes",post_call:"After LLM Call - Runs after the LLM call and checks only the output",logging_only:"Logging Only - Only runs on logging callbacks without affecting the LLM call",pre_mcp_call:"Before MCP Tool Call - Runs before MCP tool execution and validates tool calls",during_mcp_call:"During MCP Tool Call - Runs in parallel with MCP tool execution for monitoring"};e.s(["default",0,({visible:e,onClose:t,accessToken:a,onSuccess:d,preset:g})=>{let[x]=r.Form.useForm(),[h,f]=(0,m.useState)(!1),[y,j]=(0,m.useState)(null),[_,b]=(0,m.useState)(null),[v,w]=(0,m.useState)([]),[N,C]=(0,m.useState)({}),[S,k]=(0,m.useState)(0),[I,A]=(0,m.useState)(null),[O,T]=(0,m.useState)([]),[P,L]=(0,m.useState)(2),[B,F]=(0,m.useState)({}),[$,E]=(0,m.useState)([]),[M,R]=(0,m.useState)([]),[G,z]=(0,m.useState)([]),[D,K]=(0,m.useState)(""),[q,H]=(0,m.useState)(!1),[J,U]=(0,m.useState)(null),[W,V]=(0,m.useState)(""),[Y,X]=(0,m.useState)(void 0),[Z,en]=(0,m.useState)("warn"),[ed,ec]=(0,m.useState)(""),[eu,eg]=(0,m.useState)(!1),[ex,eh]=(0,m.useState)([]),[ey,ej]=(0,m.useState)({rules:[],default_action:"deny",on_disallowed_action:"block",violation_message_template:""}),eb=(0,m.useMemo)(()=>!!y&&"tool_permission"===(ea[y]||"").toLowerCase(),[y]);(0,m.useEffect)(()=>{a&&(async()=>{try{let[e,t,l]=await Promise.all([(0,p.getGuardrailUISettings)(a),(0,p.getGuardrailProviderSpecificParams)(a),(0,p.modelAvailableCall)(a,"","").catch(()=>null)]);b(e),A(t),l?.data&&eh(l.data.map(e=>e.id)),ee(t),el(t)}catch(e){console.error("Error fetching guardrail data:",e),u.default.fromBackend("Failed to load guardrail configuration")}})()},[a]),(0,m.useEffect)(()=>{if(!g||!e||!_)return;j(g.provider);let t={provider:g.provider,guardrail_name:g.guardrailNameSuggestion,mode:g.mode,default_on:g.defaultOn,skip_system_message_choice:"inherit",skip_tool_message_choice:"inherit"};if("BlockCodeExecution"===g.provider&&(t.confidence_threshold=.5),x.setFieldsValue(t),g.categoryName&&_.content_filter_settings?.content_categories){let e=_.content_filter_settings.content_categories.find(e=>e.name===g.categoryName);e&&z([{id:`category-${Date.now()}`,category:e.name,display_name:e.display_name,action:e.default_action,severity_threshold:"medium"}])}},[g,e,_]);let ev=e=>{j(e);let t={config:void 0,presidio_analyzer_api_base:void 0,presidio_anonymizer_api_base:void 0};"BlockCodeExecution"===e&&(t.confidence_threshold=.5),x.setFieldsValue(t),w([]),C({}),T([]),L(2),F({}),E([]),R([]),z([]),K(""),H(!1),U(null),ej({rules:[],default_action:"deny",on_disallowed_action:"block",violation_message_template:""}),"LlmAsAJudge"===e&&x.setFieldsValue({mode:"post_call"})},eN=e=>{w(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},eC=(e,t)=>{C(a=>({...a,[e]:t}))},eS=async()=>{try{if(0===S&&(await x.validateFields(["guardrail_name","provider","mode","default_on"]),y)){let e=["guardrail_name","provider","mode","default_on"];"PresidioPII"===y&&e.push("presidio_analyzer_api_base","presidio_anonymizer_api_base"),await x.validateFields(e)}if(1===S&&er(y)&&0===v.length)return void u.default.fromBackend("Please select at least one PII entity to continue");k(S+1)}catch(e){console.error("Form validation failed:",e)}},ek=()=>{x.resetFields(),j(null),w([]),C({}),T([]),L(2),F({}),E([]),R([]),z([]),K(""),ej({rules:[],default_action:"deny",on_disallowed_action:"block",violation_message_template:""}),V(""),X(void 0),en("warn"),ec(""),eg(!1),k(0)},eI=()=>{ek(),t()},eA=async()=>{try{f(!0),await x.validateFields();let e=x.getFieldsValue(!0),l=ea[e.provider],r={guardrail_name:e.guardrail_name,litellm_params:{guardrail:l,mode:e.mode,default_on:e.default_on},guardrail_info:{}},i=em(e.skip_system_message_choice);void 0!==i&&(r.litellm_params.skip_system_message_in_guardrail=i);let s=ep(e.skip_tool_message_choice);if(void 0!==s&&(r.litellm_params.skip_tool_message_in_guardrail=s),"PresidioPII"===e.provider&&v.length>0){let t={};v.forEach(e=>{t[e]=N[e]||"MASK"}),r.litellm_params.pii_entities_config=t,e.presidio_analyzer_api_base&&(r.litellm_params.presidio_analyzer_api_base=e.presidio_analyzer_api_base),e.presidio_anonymizer_api_base&&(r.litellm_params.presidio_anonymizer_api_base=e.presidio_anonymizer_api_base)}if(ei(e.provider)){let e=q&&J?.brand_self?.length>0;if(0===$.length&&0===M.length&&0===G.length&&!e){u.default.fromBackend("Please configure at least one content filter setting (category, pattern, keyword, or competitor intent)"),f(!1);return}$.length>0&&(r.litellm_params.patterns=$.map(e=>({pattern_type:"prebuilt"===e.type?"prebuilt":"regex",pattern_name:"prebuilt"===e.type?e.name:void 0,pattern:"custom"===e.type?e.pattern:void 0,name:e.name,action:e.action}))),M.length>0&&(r.litellm_params.blocked_words=M.map(e=>({keyword:e.keyword,action:e.action,description:e.description}))),G.length>0&&(r.litellm_params.categories=G.map(e=>({category:e.category,enabled:!0,action:e.action,severity_threshold:e.severity_threshold||"medium"}))),q&&J?.brand_self?.length>0&&(r.litellm_params.competitor_intent_config={competitor_intent_type:J.competitor_intent_type??"airline",brand_self:J.brand_self,locations:J.locations?.length>0?J.locations:void 0,competitors:"generic"===J.competitor_intent_type&&J.competitors?.length>0?J.competitors:void 0,policy:J.policy,threshold_high:J.threshold_high,threshold_medium:J.threshold_medium,threshold_low:J.threshold_low})}else if(e.config)try{r.guardrail_info=JSON.parse(e.config)}catch(e){u.default.fromBackend("Invalid JSON in configuration"),f(!1);return}if("llm_as_a_judge"===l){let t=e.criteria||[];if(0===t.length){u.default.fromBackend("Add at least one evaluation criterion"),f(!1);return}let a=t.reduce((e,t)=>e+(Number(t?.weight)||0),0);if(100!==a){u.default.fromBackend(`Criterion weights must sum to 100% (currently ${a}%)`),f(!1);return}r.litellm_params.judge_model=e.judge_model,r.litellm_params.overall_threshold=e.overall_threshold??80,r.litellm_params.on_failure=e.on_failure??"block",r.litellm_params.criteria=t.map(e=>({name:e.name,weight:Number(e.weight),description:e.description||""}))}if("tool_permission"===l){if(0===ey.rules.length){u.default.fromBackend("Add at least one tool permission rule"),f(!1);return}r.litellm_params.rules=ey.rules,r.litellm_params.default_action=ey.default_action,r.litellm_params.on_disallowed_action=ey.on_disallowed_action,ey.violation_message_template&&(r.litellm_params.violation_message_template=ey.violation_message_template)}if(ei(e.provider)&&(void 0!==Y&&Y>0&&(r.litellm_params.end_session_after_n_fails=Y),Z&&"realtime"===W&&(r.litellm_params.on_violation=Z),ed.trim()&&(r.litellm_params.realtime_violation_message=ed.trim())),console.log("values: ",JSON.stringify(e)),I&&y&&"llm_as_a_judge"!==l){let t=ea[y]?.toLowerCase();console.log("providerKey: ",t);let a=I[t]||{},l=new Set;console.log("providerSpecificParams: ",JSON.stringify(a)),Object.keys(a).forEach(e=>{"optional_params"!==e&&l.add(e)}),a.optional_params&&a.optional_params.fields&&Object.keys(a.optional_params.fields).forEach(e=>{l.add(e)}),console.log("allowedParams: ",l),l.forEach(t=>{let a=e[t];(null==a||""===a)&&(a=e.optional_params?.[t]),null!=a&&""!==a&&(r.litellm_params[t]=a)})}if(!a)throw Error("No access token available");console.log("Sending guardrail data:",JSON.stringify(r)),await (0,p.createGuardrailCall)(a,r),u.default.success("Guardrail created successfully"),ek(),d(),t()}catch(e){console.error("Failed to create guardrail:",e),u.default.fromBackend("Failed to create guardrail: "+(e instanceof Error?e.message:String(e)))}finally{f(!1)}},eO=e=>{if(!_||!ei(y))return null;let t=_.content_filter_settings;return t?(0,l.jsx)(Q,{prebuiltPatterns:t.prebuilt_patterns||[],categories:t.pattern_categories||[],selectedPatterns:$,blockedWords:M,onPatternAdd:e=>E([...$,e]),onPatternRemove:e=>E($.filter(t=>t.id!==e)),onPatternActionChange:(e,t)=>{E($.map(a=>a.id===e?{...a,action:t}:a))},onBlockedWordAdd:e=>R([...M,e]),onBlockedWordRemove:e=>R(M.filter(t=>t.id!==e)),onBlockedWordUpdate:(e,t,a)=>{R(M.map(l=>l.id===e?{...l,[t]:a}:l))},contentCategories:t.content_categories||[],selectedContentCategories:G,onContentCategoryAdd:e=>z([...G,e]),onContentCategoryRemove:e=>z(G.filter(t=>t.id!==e)),onContentCategoryUpdate:(e,t,a)=>{z(G.map(l=>l.id===e?{...l,[t]:a}:l))},pendingCategorySelection:D,onPendingCategorySelectionChange:K,accessToken:a,showStep:e,competitorIntentEnabled:q,competitorIntentConfig:J,onCompetitorIntentChange:(e,t)=>{H(e),U(t)}}):null},eT=ei(y)?[{title:"Basic Info",optional:!1},{title:"Topics",optional:!1},{title:"Patterns",optional:!1},{title:"Keywords",optional:!1},{title:"Endpoint Settings (Optional)",optional:!0}]:er(y)?[{title:"Basic Info",optional:!1},{title:"PII Configuration",optional:!1}]:[{title:"Basic Info",optional:!1},{title:"Provider Configuration",optional:!1}];return(0,l.jsx)(s.Modal,{title:null,open:e,onCancel:eI,footer:null,width:1e3,closable:!1,className:"top-8",styles:{body:{padding:0}},children:(0,l.jsxs)("div",{className:"flex flex-col",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-200",children:[(0,l.jsx)("h3",{className:"text-base font-semibold text-gray-900 m-0",children:"Create guardrail"}),(0,l.jsx)("button",{onClick:eI,className:"text-gray-400 hover:text-gray-600 bg-transparent border-none cursor-pointer text-base leading-none p-1",children:"✕"})]}),(0,l.jsx)("div",{className:"overflow-auto px-6 py-4",style:{maxHeight:"calc(80vh - 120px)"},children:(0,l.jsx)(r.Form,{form:x,layout:"vertical",preserve:!0,initialValues:{mode:"pre_call",default_on:!1,skip_system_message_choice:"inherit",skip_tool_message_choice:"inherit"},children:eT.map((e,t)=>{let s=t{s&&k(t)},style:{minHeight:24},children:[(0,l.jsx)("span",{className:"text-sm",style:{fontWeight:d?600:500,color:d?"#1e293b":s?"#4f46e5":"#94a3b8"},children:e.title}),e.optional&&!d&&(0,l.jsx)("span",{className:"text-[11px] text-slate-400",children:"optional"}),s&&(0,l.jsx)("span",{className:"text-[11px] text-indigo-500 hover:underline",children:"Edit"})]}),d&&(0,l.jsx)("div",{className:"mt-3",children:(()=>{switch(S){case 0:return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(r.Form.Item,{name:"guardrail_name",label:"Guardrail Name",rules:[{required:!0,message:"Please enter a guardrail name"}],children:(0,l.jsx)(i.Input,{placeholder:"Enter a name for this guardrail"})}),(0,l.jsx)(r.Form.Item,{name:"provider",label:"Guardrail Provider",rules:[{required:!0,message:"Please select a provider"}],children:(0,l.jsx)(n.Select,{placeholder:"Select a guardrail provider",onChange:ev,labelInValue:!1,optionLabelProp:"label",dropdownRender:e=>e,showSearch:!0,children:Object.entries(et()).map(([e,t])=>(0,l.jsx)(eY,{value:e,label:(0,l.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[eo[t]&&(0,l.jsx)("img",{src:eo[t],alt:"",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"},onError:e=>{e.currentTarget.style.display="none"}}),(0,l.jsx)("span",{children:t})]}),children:(0,l.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[eo[t]&&(0,l.jsx)("img",{src:eo[t],alt:"",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"},onError:e=>{e.currentTarget.style.display="none"}}),(0,l.jsx)("span",{children:t})]})},e))})}),(0,l.jsx)(r.Form.Item,{name:"mode",label:"Mode",tooltip:"How the guardrail should be applied",rules:[{required:!0,message:"Please select a mode"}],children:(0,l.jsx)(n.Select,{optionLabelProp:"label",mode:"multiple",children:_?.supported_modes?.map(e=>(0,l.jsx)(eY,{value:e,label:e,children:(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("strong",{children:e}),"pre_call"===e&&(0,l.jsx)(o.Tag,{color:"green",style:{marginLeft:"8px"},children:"Recommended"})]}),(0,l.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:eQ[e]})]})},e))||(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(eY,{value:"pre_call",label:"pre_call",children:(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("strong",{children:"pre_call"})," ",(0,l.jsx)(o.Tag,{color:"green",children:"Recommended"})]}),(0,l.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:eQ.pre_call})]})}),(0,l.jsx)(eY,{value:"during_call",label:"during_call",children:(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{children:(0,l.jsx)("strong",{children:"during_call"})}),(0,l.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:eQ.during_call})]})}),(0,l.jsx)(eY,{value:"post_call",label:"post_call",children:(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{children:(0,l.jsx)("strong",{children:"post_call"})}),(0,l.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:eQ.post_call})]})}),(0,l.jsx)(eY,{value:"logging_only",label:"logging_only",children:(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{children:(0,l.jsx)("strong",{children:"logging_only"})}),(0,l.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:eQ.logging_only})]})})]})})}),(0,l.jsx)(r.Form.Item,{name:"default_on",label:"Always On",tooltip:"If enabled, this guardrail will be applied to all requests by default.",children:(0,l.jsxs)(n.Select,{children:[(0,l.jsx)(n.Select.Option,{value:!0,children:"Yes"}),(0,l.jsx)(n.Select.Option,{value:!1,children:"No"})]})}),(0,l.jsx)(r.Form.Item,{name:"skip_system_message_choice",label:"Skip system messages in guardrail",tooltip:"Unified guardrails only: omit role: system from guardrail evaluation input (OpenAI chat + Anthropic messages). The model still receives full messages. Use global default follows litellm_settings.skip_system_message_in_guardrail.",children:(0,l.jsxs)(n.Select,{children:[(0,l.jsx)(n.Select.Option,{value:"inherit",children:"Use global default"}),(0,l.jsx)(n.Select.Option,{value:"yes",children:"Yes — exclude from guardrail scan"}),(0,l.jsx)(n.Select.Option,{value:"no",children:"No — always include in scan"})]})}),(0,l.jsx)(r.Form.Item,{name:"skip_tool_message_choice",label:"Skip tool messages in guardrail",tooltip:"Unified guardrails only: omit role: tool from guardrail evaluation input (OpenAI chat + Anthropic messages). The model still receives full messages. Use global default follows litellm_settings.skip_tool_message_in_guardrail.",children:(0,l.jsxs)(n.Select,{children:[(0,l.jsx)(n.Select.Option,{value:"inherit",children:"Use global default"}),(0,l.jsx)(n.Select.Option,{value:"yes",children:"Yes — exclude from guardrail scan"}),(0,l.jsx)(n.Select.Option,{value:"no",children:"No — always include in scan"})]})}),!eb&&!ei(y)&&!es(y)&&(0,l.jsx)(e_,{selectedProvider:y,accessToken:a,providerParams:I})]});case 1:if(er(y))return _&&"PresidioPII"===y?(0,l.jsx)(eR,{entities:_.supported_entities,actions:_.supported_actions,selectedEntities:v,selectedActions:N,onEntitySelect:eN,onActionSelect:eC,entityCategories:_.pii_entity_categories}):null;if(ei(y))return eO("categories");if(es(y))return(0,l.jsx)(ew,{availableModels:ex,form:x});if(!y)return null;if(eb)return(0,l.jsx)(eJ,{value:ey,onChange:ej});if(!I)return null;console.log("guardrail_provider_map: ",ea),console.log("selectedProvider: ",y);let e=ea[y]?.toLowerCase(),t=I&&I[e];return t&&t.optional_params?(0,l.jsx)(ef,{optionalParams:t.optional_params,parentFieldKey:"optional_params"}):null;case 2:if(ei(y))return eO("patterns");return null;case 3:if(ei(y))return eO("keywords");return null;case 4:return(0,l.jsxs)("div",{className:"space-y-6",children:[(0,l.jsx)("div",{children:(0,l.jsxs)("p",{className:"text-sm text-gray-500",children:["Configure settings for a specific call type. Most guardrails don't need this — skip it unless you're using a specific endpoint like ",(0,l.jsx)("code",{children:"/v1/realtime"}),"."]})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:"Call type"}),(0,l.jsx)(n.Select,{placeholder:"Select a call type",value:W||void 0,onChange:e=>{V(e),eg(!1)},style:{width:260},allowClear:!0,options:[{value:"realtime",label:"/v1/realtime"}]}),(0,l.jsx)("p",{className:"text-xs text-gray-400 mt-1",children:"More call types coming soon."})]}),"realtime"===W&&(0,l.jsxs)("div",{className:"border border-gray-200 rounded-lg overflow-hidden",children:[(0,l.jsxs)("button",{type:"button",onClick:()=>eg(e=>!e),className:"w-full flex items-center justify-between px-4 py-3 bg-gray-50 hover:bg-gray-100 text-sm font-medium text-gray-700",children:[(0,l.jsx)("span",{children:"/v1/realtime settings"}),(0,l.jsx)("svg",{className:`w-4 h-4 text-gray-500 transition-transform ${eu?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,l.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]}),eu&&(0,l.jsxs)("div",{className:"space-y-5 px-4 py-4 border-t border-gray-200",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:"End session after X violations"}),(0,l.jsx)("p",{className:"text-xs text-gray-400 mb-2",children:"Automatically close the session after this many guardrail violations. Leave empty to never auto-close."}),(0,l.jsx)("input",{type:"number",min:1,placeholder:"e.g. 3",value:Y??"",onChange:e=>X(e.target.value?parseInt(e.target.value,10):void 0),className:"border border-gray-300 rounded px-3 py-1.5 text-sm w-32"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"On violation"}),(0,l.jsx)("div",{className:"space-y-2",children:["warn","end_session"].map(e=>(0,l.jsxs)("label",{className:"flex items-start gap-2 cursor-pointer",children:[(0,l.jsx)("input",{type:"radio",name:"on_violation",value:e,checked:Z===e,onChange:()=>en(e),className:"mt-0.5"}),(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"text-sm font-medium text-gray-800",children:"warn"===e?"Warn":"End session"}),(0,l.jsx)("p",{className:"text-xs text-gray-400 m-0",children:"warn"===e?"Bot speaks the message, session continues":"Bot speaks the message, connection closes immediately"})]})]},e))})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:"Message the user hears"}),(0,l.jsx)("p",{className:"text-xs text-gray-400 mb-2",children:"What the bot says aloud when this guardrail fires. Falls back to the default violation message if empty."}),(0,l.jsx)("textarea",{rows:3,placeholder:"e.g. I'm not able to continue this conversation. Please contact us at 1-800-774-2678.",value:ed,onChange:e=>ec(e.target.value),className:"border border-gray-300 rounded px-3 py-2 text-sm w-full resize-none"})]})]})]})]});default:return null}})()})]})]},t)})})}),(0,l.jsxs)("div",{className:"flex items-center justify-end space-x-3 px-6 py-3 border-t border-gray-200",children:[(0,l.jsx)(c.Button,{onClick:eI,children:"Cancel"}),S>0&&(0,l.jsx)(c.Button,{onClick:()=>{k(S-1)},children:"Previous"}),S{let[x]=r.Form.useForm(),[h,f]=(0,m.useState)(!1),[y,j]=(0,m.useState)(g?.provider||null),[_,b]=(0,m.useState)(null),[v,w]=(0,m.useState)([]),[N,C]=(0,m.useState)({});(0,m.useEffect)(()=>{(async()=>{try{if(!a)return;let e=await (0,p.getGuardrailUISettings)(a);b(e)}catch(e){console.error("Error fetching guardrail settings:",e),u.default.fromBackend("Failed to load guardrail settings")}})()},[a]),(0,m.useEffect)(()=>{g?.pii_entities_config&&Object.keys(g.pii_entities_config).length>0&&(w(Object.keys(g.pii_entities_config)),C(g.pii_entities_config))},[g]);let S=e=>{w(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},k=(e,t)=>{C(a=>({...a,[e]:t}))},I=async()=>{try{f(!0);let e=await x.validateFields(),l=ea[e.provider],r=c&&"object"==typeof c?{...c}:{};r.guardrail=l,r.mode=e.mode,r.default_on=e.default_on;let i=e.skip_system_message_choice;"yes"===i?r.skip_system_message_in_guardrail=!0:"no"===i?r.skip_system_message_in_guardrail=!1:delete r.skip_system_message_in_guardrail;let s=e.skip_tool_message_choice;"yes"===s?r.skip_tool_message_in_guardrail=!0:"no"===s?r.skip_tool_message_in_guardrail=!1:delete r.skip_tool_message_in_guardrail;let n={};if("PresidioPII"===e.provider&&v.length>0){let e={};v.forEach(t=>{e[t]=N[t]||"MASK"}),r.pii_entities_config=e}else if(e.config)try{let t=JSON.parse(e.config);"Bedrock"===e.provider&&t?(t.guardrail_id&&(r.guardrailIdentifier=t.guardrail_id),t.guardrail_version&&(r.guardrailVersion=t.guardrail_version)):n=t}catch(e){u.default.fromBackend("Invalid JSON in configuration"),f(!1);return}let m={guardrail_id:d,guardrail:{guardrail_name:e.guardrail_name,litellm_params:r,guardrail_info:n}};if(!a)throw Error("No access token available");console.log("Sending guardrail update data:",JSON.stringify(m));let g=`/guardrails/${d}`,h=await fetch(g,{method:"PUT",headers:{[(0,p.getGlobalLitellmHeaderName)()]:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify(m)});if(!h.ok){let e=await h.text();throw Error(e||"Failed to update guardrail")}u.default.success("Guardrail updated successfully"),o(),t()}catch(e){console.error("Failed to update guardrail:",e),u.default.fromBackend("Failed to update guardrail: "+(e instanceof Error?e.message:String(e)))}finally{f(!1)}};return(0,l.jsx)(s.Modal,{title:"Edit Guardrail",open:e,onCancel:t,footer:null,width:700,children:(0,l.jsxs)(r.Form,{form:x,layout:"vertical",initialValues:g,children:[(0,l.jsx)(r.Form.Item,{name:"guardrail_name",label:"Guardrail Name",rules:[{required:!0,message:"Please enter a guardrail name"}],children:(0,l.jsx)(tl.TextInput,{placeholder:"Enter a name for this guardrail"})}),(0,l.jsx)(r.Form.Item,{name:"provider",label:"Guardrail Provider",rules:[{required:!0,message:"Please select a provider"}],children:(0,l.jsx)(n.Select,{placeholder:"Select a guardrail provider",onChange:e=>{j(e),x.setFieldsValue({config:void 0}),w([]),C({})},disabled:!0,optionLabelProp:"label",children:Object.entries(et()).map(([e,t])=>(0,l.jsx)(ts,{value:e,label:t,children:(0,l.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[eo[t]&&(0,l.jsx)("img",{src:eo[t],alt:"",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"},onError:e=>{e.currentTarget.style.display="none"}}),(0,l.jsx)("span",{children:t})]})},e))})}),(0,l.jsx)(r.Form.Item,{name:"mode",label:"Mode",tooltip:"How the guardrail should be applied",rules:[{required:!0,message:"Please select a mode"}],children:(0,l.jsx)(n.Select,{children:_?.supported_modes?.map(e=>(0,l.jsx)(ts,{value:e,children:e},e))||(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(ts,{value:"pre_call",children:"pre_call"}),(0,l.jsx)(ts,{value:"post_call",children:"post_call"})]})})}),(0,l.jsx)(r.Form.Item,{name:"default_on",label:"Always On",tooltip:"If enabled, this guardrail will be applied to all requests by default",valuePropName:"checked",children:(0,l.jsx)(D.Switch,{})}),(0,l.jsx)(r.Form.Item,{name:"skip_system_message_choice",label:"Skip system messages in guardrail",tooltip:"Unified guardrails only: whether role: system content is omitted from guardrail input (LLM still receives full messages). Use global default follows litellm_settings.skip_system_message_in_guardrail.",children:(0,l.jsxs)(n.Select,{children:[(0,l.jsx)(ts,{value:"inherit",children:"Use global default"}),(0,l.jsx)(ts,{value:"yes",children:"Yes — exclude from guardrail scan"}),(0,l.jsx)(ts,{value:"no",children:"No — always include in scan"})]})}),(0,l.jsx)(r.Form.Item,{name:"skip_tool_message_choice",label:"Skip tool messages in guardrail",tooltip:"Unified guardrails only: whether role: tool content is omitted from guardrail input (LLM still receives full messages). Use global default follows litellm_settings.skip_tool_message_in_guardrail.",children:(0,l.jsxs)(n.Select,{children:[(0,l.jsx)(ts,{value:"inherit",children:"Use global default"}),(0,l.jsx)(ts,{value:"yes",children:"Yes — exclude from guardrail scan"}),(0,l.jsx)(ts,{value:"no",children:"No — always include in scan"})]})}),(()=>{if(!y)return null;if("PresidioPII"===y)return _&&y&&"PresidioPII"===y?(0,l.jsx)(eR,{entities:_.supported_entities,actions:_.supported_actions,selectedEntities:v,selectedActions:N,onEntitySelect:S,onActionSelect:k,entityCategories:_.pii_entity_categories}):null;switch(y){case"Aporia":return(0,l.jsx)(r.Form.Item,{label:"Aporia Configuration",name:"config",tooltip:"JSON configuration for Aporia",children:(0,l.jsx)(i.Input.TextArea,{rows:4,placeholder:`{ - "api_key": "your_aporia_api_key", - "project_name": "your_project_name" -}`})});case"AimSecurity":return(0,l.jsx)(r.Form.Item,{label:"Aim Security Configuration",name:"config",tooltip:"JSON configuration for Aim Security",children:(0,l.jsx)(i.Input.TextArea,{rows:4,placeholder:`{ - "api_key": "your_aim_api_key" -}`})});case"Bedrock":return(0,l.jsx)(r.Form.Item,{label:"Amazon Bedrock Configuration",name:"config",tooltip:"JSON configuration for Amazon Bedrock guardrails",children:(0,l.jsx)(i.Input.TextArea,{rows:4,placeholder:`{ - "guardrail_id": "your_guardrail_id", - "guardrail_version": "your_guardrail_version" -}`})});case"GuardrailsAI":return(0,l.jsx)(r.Form.Item,{label:"Guardrails.ai Configuration",name:"config",tooltip:"JSON configuration for Guardrails.ai",children:(0,l.jsx)(i.Input.TextArea,{rows:4,placeholder:`{ - "api_key": "your_guardrails_api_key", - "guardrail_id": "your_guardrail_id" -}`})});case"LakeraAI":return(0,l.jsx)(r.Form.Item,{label:"Lakera AI Configuration",name:"config",tooltip:"JSON configuration for Lakera AI",children:(0,l.jsx)(i.Input.TextArea,{rows:4,placeholder:`{ - "api_key": "your_lakera_api_key" -}`})});case"PromptInjection":return(0,l.jsx)(r.Form.Item,{label:"Prompt Injection Configuration",name:"config",tooltip:"JSON configuration for prompt injection detection",children:(0,l.jsx)(i.Input.TextArea,{rows:4,placeholder:`{ - "threshold": 0.8 -}`})});default:return(0,l.jsx)(r.Form.Item,{label:"Custom Configuration",name:"config",tooltip:"JSON configuration for your custom guardrail",children:(0,l.jsx)(i.Input.TextArea,{rows:4,placeholder:`{ - "key1": "value1", - "key2": "value2" -}`})})}})(),(0,l.jsxs)("div",{className:"flex justify-end space-x-2 mt-4",children:[(0,l.jsx)(e6.Button,{variant:"secondary",onClick:t,children:"Cancel"}),(0,l.jsx)(e6.Button,{onClick:I,loading:h,children:"Update Guardrail"})]})]})})};var to=((a={}).DB="db",a.CONFIG="config",a);e.s(["default",0,({guardrailsList:e,isLoading:t,onDeleteClick:a,accessToken:r,onGuardrailUpdated:i,isAdmin:s=!1,onGuardrailClick:n})=>{let[o,d]=(0,m.useState)([{id:"created_at",desc:!0}]),[c,u]=(0,m.useState)(!1),[p,g]=(0,m.useState)(null),x=e=>e?new Date(e).toLocaleString():"-",h=[{header:"Guardrail ID",accessorKey:"guardrail_id",cell:e=>(0,l.jsx)(eb.Tooltip,{title:String(e.getValue()||""),children:(0,l.jsx)(e6.Button,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>e.getValue()&&n(e.getValue()),children:e.getValue()?`${String(e.getValue()).slice(0,7)}...`:""})})},{header:"Name",accessorKey:"guardrail_name",cell:({row:e})=>{let t=e.original;return(0,l.jsx)(eb.Tooltip,{title:t.guardrail_name,children:(0,l.jsx)("span",{className:"text-xs font-medium",children:t.guardrail_name||"-"})})}},{header:"Provider",accessorKey:"litellm_params.guardrail",cell:({row:e})=>{let{logo:t,displayName:a}=ed(e.original.litellm_params.guardrail);return(0,l.jsxs)("div",{className:"flex items-center space-x-2",children:[t&&(0,l.jsx)("img",{src:t,alt:`${a} logo`,className:"w-4 h-4",onError:e=>{e.target.style.display="none"}}),(0,l.jsx)("span",{className:"text-xs",children:a})]})}},{header:"Mode",accessorKey:"litellm_params.mode",cell:({row:e})=>{let t=e.original;return(0,l.jsx)("span",{className:"text-xs",children:t.litellm_params.mode})}},{header:"Default On",accessorKey:"litellm_params.default_on",cell:({row:e})=>{let t=e.original;return(0,l.jsx)(te.Badge,{color:t.litellm_params?.default_on?"green":"gray",className:"text-xs font-normal",size:"xs",children:t.litellm_params?.default_on?"Default On":"Default Off"})}},{header:"Created At",accessorKey:"created_at",cell:({row:e})=>{let t=e.original;return(0,l.jsx)(eb.Tooltip,{title:t.created_at,children:(0,l.jsx)("span",{className:"text-xs",children:x(t.created_at)})})}},{header:"Updated At",accessorKey:"updated_at",cell:({row:e})=>{let t=e.original;return(0,l.jsx)(eb.Tooltip,{title:t.updated_at,children:(0,l.jsx)("span",{className:"text-xs",children:x(t.updated_at)})})}},{id:"actions",header:"Actions",cell:({row:e})=>{let t=e.original,r=t.guardrail_definition_location===to.CONFIG;return(0,l.jsx)("div",{className:"flex space-x-2",children:r?(0,l.jsx)(eb.Tooltip,{title:"Config guardrail cannot be deleted on the dashboard. Please delete it from the config file.",children:(0,l.jsx)(e5.Icon,{"data-testid":"config-delete-icon",icon:e8.TrashIcon,size:"sm",className:"cursor-not-allowed text-gray-400",title:"Config guardrail cannot be deleted on the dashboard. Please delete it from the config file.","aria-label":"Delete guardrail (config)"})}):(0,l.jsx)(eb.Tooltip,{title:"Delete guardrail",children:(0,l.jsx)(e5.Icon,{icon:e8.TrashIcon,size:"sm",onClick:()=>t.guardrail_id&&a(t.guardrail_id,t.guardrail_name||"Unnamed Guardrail"),className:"cursor-pointer hover:text-red-500"})})})}}],f=(0,tt.useReactTable)({data:e,columns:h,state:{sorting:o},onSortingChange:d,getCoreRowModel:(0,ta.getCoreRowModel)(),getSortedRowModel:(0,ta.getSortedRowModel)(),enableSorting:!0});return(0,l.jsxs)("div",{className:"rounded-lg custom-border relative",children:[(0,l.jsx)("div",{className:"overflow-x-auto",children:(0,l.jsxs)(eX.Table,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,l.jsx)(e1.TableHead,{children:f.getHeaderGroups().map(e=>(0,l.jsx)(e4.TableRow,{children:e.headers.map(e=>(0,l.jsx)(e2.TableHeaderCell,{className:`py-1 h-8 ${"actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""}`,onClick:e.column.getToggleSortingHandler(),children:(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,l.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,tt.flexRender)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,l.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,l.jsx)(e7.ChevronUpIcon,{className:"h-4 w-4 text-blue-500"}),desc:(0,l.jsx)(e9.ChevronDownIcon,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,l.jsx)(e3.SwitchVerticalIcon,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,l.jsx)(eZ.TableBody,{children:t?(0,l.jsx)(e4.TableRow,{children:(0,l.jsx)(e0.TableCell,{colSpan:h.length,className:"h-8 text-center",children:(0,l.jsx)("div",{className:"text-center text-gray-500",children:(0,l.jsx)("p",{children:"Loading..."})})})}):e.length>0?f.getRowModel().rows.map(e=>(0,l.jsx)(e4.TableRow,{className:"h-8",children:e.getVisibleCells().map(e=>(0,l.jsx)(e0.TableCell,{className:`py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ${"actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""}`,children:(0,tt.flexRender)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,l.jsx)(e4.TableRow,{children:(0,l.jsx)(e0.TableCell,{colSpan:h.length,className:"h-8 text-center",children:(0,l.jsx)("div",{className:"text-center text-gray-500",children:(0,l.jsx)("p",{children:"No guardrails found"})})})})})]})}),p&&(0,l.jsx)(tn,{visible:c,onClose:()=>u(!1),accessToken:r,onSuccess:()=>{u(!1),g(null),i()},guardrailId:p.guardrail_id||"",fullLitellmParams:p.litellm_params,initialValues:{guardrail_name:p.guardrail_name||"",provider:Object.keys(ea).find(e=>ea[e]===p?.litellm_params.guardrail)||"",mode:p.litellm_params.mode,default_on:p.litellm_params.default_on,pii_entities_config:p.litellm_params.pii_entities_config,skip_system_message_choice:ec(p.litellm_params?.skip_system_message_in_guardrail),skip_tool_message_choice:eu(p.litellm_params?.skip_tool_message_in_guardrail),...p.guardrail_info}})]})}],782719);var td=e.i(500330),tc=e.i(245094),eS=eS,tm=e.i(530212),tu=e.i(350967),tp=e.i(197647),tg=e.i(653824),tx=e.i(881073),th=e.i(404206),tf=e.i(723731),ty=e.i(629569),tj=e.i(678784),t_=e.i(118366),tb=e.i(560445);let{Text:tv}=d.Typography,{Option:tw}=n.Select,tN=({categories:e,onActionChange:t,onSeverityChange:a,onRemove:r,readOnly:i=!1})=>{let s=[{title:"Category",dataIndex:"display_name",key:"display_name",render:(e,t)=>(0,l.jsxs)("div",{children:[(0,l.jsx)(tv,{strong:!0,children:e}),e!==t.category&&(0,l.jsx)("div",{children:(0,l.jsx)(tv,{type:"secondary",style:{fontSize:12},children:t.category})})]})},{title:"Severity Threshold",dataIndex:"severity_threshold",key:"severity_threshold",width:180,render:(e,t)=>i?(0,l.jsx)(o.Tag,{color:{high:"red",medium:"orange",low:"yellow"}[e],children:e.toUpperCase()}):(0,l.jsxs)(n.Select,{value:e,onChange:e=>a?.(t.id,e),style:{width:150},size:"small",children:[(0,l.jsx)(tw,{value:"high",children:"High"}),(0,l.jsx)(tw,{value:"medium",children:"Medium"}),(0,l.jsx)(tw,{value:"low",children:"Low"})]})},{title:"Action",dataIndex:"action",key:"action",width:150,render:(e,a)=>i?(0,l.jsx)(o.Tag,{color:"BLOCK"===e?"red":"blue",children:e}):(0,l.jsxs)(n.Select,{value:e,onChange:e=>t?.(a.id,e),style:{width:120},size:"small",children:[(0,l.jsx)(tw,{value:"BLOCK",children:"Block"}),(0,l.jsx)(tw,{value:"MASK",children:"Mask"})]})}];return(i||s.push({title:"",key:"actions",width:100,render:(e,t)=>(0,l.jsx)(c.Button,{type:"text",danger:!0,size:"small",icon:(0,l.jsx)(A.DeleteOutlined,{}),onClick:()=>r?.(t.id),children:"Delete"})}),0===e.length)?(0,l.jsx)("div",{style:{textAlign:"center",padding:"40px 0",color:"#999"},children:"No categories configured."}):(0,l.jsx)(I.Table,{dataSource:e,columns:s,rowKey:"id",pagination:!1,size:"small"})},tC=({patterns:e,blockedWords:t,categories:a=[],readOnly:r=!0,onPatternActionChange:i,onPatternRemove:s,onBlockedWordUpdate:n,onBlockedWordRemove:o,onCategoryActionChange:d,onCategorySeverityChange:c,onCategoryRemove:m})=>{if(0===e.length&&0===t.length&&0===a.length)return null;let u=()=>{};return(0,l.jsxs)(l.Fragment,{children:[a.length>0&&(0,l.jsxs)(eG.Card,{className:"mt-6",children:[(0,l.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,l.jsx)(ez.Text,{className:"text-lg font-semibold",children:"Content Categories"}),(0,l.jsxs)(te.Badge,{color:"blue",children:[a.length," categories configured"]})]}),(0,l.jsx)(tN,{categories:a,onActionChange:r?void 0:d,onSeverityChange:r?void 0:c,onRemove:r?void 0:m,readOnly:r})]}),e.length>0&&(0,l.jsxs)(eG.Card,{className:"mt-6",children:[(0,l.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,l.jsx)(ez.Text,{className:"text-lg font-semibold",children:"Pattern Detection"}),(0,l.jsxs)(te.Badge,{color:"blue",children:[e.length," patterns configured"]})]}),(0,l.jsx)(P,{patterns:e,onActionChange:r?u:i||u,onRemove:r?u:s||u})]}),t.length>0&&(0,l.jsxs)(eG.Card,{className:"mt-6",children:[(0,l.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,l.jsx)(ez.Text,{className:"text-lg font-semibold",children:"Blocked Keywords"}),(0,l.jsxs)(te.Badge,{color:"blue",children:[t.length," keywords configured"]})]}),(0,l.jsx)(F,{keywords:t,onActionChange:r?u:n||u,onRemove:r?u:o||u})]})]})},{Text:tS}=d.Typography,tk=({guardrailData:e,guardrailSettings:t,isEditing:a,accessToken:r,onDataChange:i,onUnsavedChanges:s})=>{let[n,o]=(0,m.useState)([]),[d,c]=(0,m.useState)([]),[u,p]=(0,m.useState)([]),[g,x]=(0,m.useState)([]),[h,f]=(0,m.useState)([]),[y,j]=(0,m.useState)([]),[_,b]=(0,m.useState)(!1),[v,w]=(0,m.useState)(null),[N,C]=(0,m.useState)(!1),[S,k]=(0,m.useState)(null);(0,m.useEffect)(()=>{if(e?.litellm_params?.patterns){let t=e.litellm_params.patterns.map((e,t)=>({id:`pattern-${t}`,type:"prebuilt"===e.pattern_type?"prebuilt":"custom",name:e.pattern_name||e.name,display_name:e.display_name,pattern:e.pattern,action:e.action||"BLOCK"}));o(t),x(t)}else o([]),x([]);if(e?.litellm_params?.blocked_words){let t=e.litellm_params.blocked_words.map((e,t)=>({id:`word-${t}`,keyword:e.keyword,action:e.action||"BLOCK",description:e.description}));c(t),f(t)}else c([]),f([]);if(e?.litellm_params?.categories?.length>0){let a=t?.content_filter_settings?.content_categories?Object.fromEntries(t.content_filter_settings.content_categories.map(e=>[e.name,e])):{},l=e.litellm_params.categories.map((e,t)=>{let l=a[e.category];return{id:`category-${t}`,category:e.category,display_name:l?.display_name??e.category,action:e.action||"BLOCK",severity_threshold:e.severity_threshold||"medium"}});p(l),j(l)}else p([]),j([]);let a=e?.litellm_params?.competitor_intent_config;if(a&&"object"==typeof a){let e=!!(a.brand_self&&Array.isArray(a.brand_self)&&a.brand_self.length>0),t={competitor_intent_type:a.competitor_intent_type??"airline",brand_self:Array.isArray(a.brand_self)?a.brand_self:[],locations:Array.isArray(a.locations)?a.locations:[],competitors:Array.isArray(a.competitors)?a.competitors:[],policy:a.policy??{competitor_comparison:"refuse",possible_competitor_comparison:"reframe"},threshold_high:"number"==typeof a.threshold_high?a.threshold_high:.7,threshold_medium:"number"==typeof a.threshold_medium?a.threshold_medium:.45,threshold_low:"number"==typeof a.threshold_low?a.threshold_low:.3};b(e),w(t),C(e),k(t)}else b(!1),w(null),C(!1),k(null)},[e,t?.content_filter_settings?.content_categories]),(0,m.useEffect)(()=>{i&&i(n,d,u,_,v)},[n,d,u,_,v,i]);let I=m.default.useMemo(()=>{let e=JSON.stringify(n)!==JSON.stringify(g),t=JSON.stringify(d)!==JSON.stringify(h),a=JSON.stringify(u)!==JSON.stringify(y),l=_!==N||JSON.stringify(v)!==JSON.stringify(S);return e||t||a||l},[n,d,u,_,v,g,h,y,N,S]);return((0,m.useEffect)(()=>{a&&s&&s(I)},[I,a,s]),e?.litellm_params?.guardrail!=="litellm_content_filter")?null:a?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(eD.Divider,{orientation:"left",children:"Content Filter Configuration"}),I&&(0,l.jsx)(tb.Alert,{type:"warning",showIcon:!0,className:"mb-4",message:(0,l.jsx)(tS,{children:'You have unsaved changes to patterns or keywords. Remember to click "Save Changes" at the bottom.'})}),(0,l.jsx)("div",{className:"mb-6",children:t&&t.content_filter_settings&&(0,l.jsx)(Q,{prebuiltPatterns:t.content_filter_settings.prebuilt_patterns||[],categories:t.content_filter_settings.pattern_categories||[],selectedPatterns:n,blockedWords:d,onPatternAdd:e=>o([...n,e]),onPatternRemove:e=>o(n.filter(t=>t.id!==e)),onPatternActionChange:(e,t)=>o(n.map(a=>a.id===e?{...a,action:t}:a)),onBlockedWordAdd:e=>c([...d,e]),onBlockedWordRemove:e=>c(d.filter(t=>t.id!==e)),onBlockedWordUpdate:(e,t,a)=>c(d.map(l=>l.id===e?{...l,[t]:a}:l)),onFileUpload:e=>{console.log("File uploaded:",e)},accessToken:r,contentCategories:t.content_filter_settings.content_categories||[],selectedContentCategories:u,onContentCategoryAdd:e=>p([...u,e]),onContentCategoryRemove:e=>p(u.filter(t=>t.id!==e)),onContentCategoryUpdate:(e,t,a)=>p(u.map(l=>l.id===e?{...l,[t]:a}:l)),competitorIntentEnabled:_,competitorIntentConfig:v,onCompetitorIntentChange:(e,t)=>{b(e),w(t)}})})]}):(0,l.jsx)(tC,{patterns:n,blockedWords:d,categories:u,readOnly:!0})};var tI=e.i(788191),tA=e.i(245704),tO=e.i(518617);let tT={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z"}}]},name:"caret-right",theme:"outlined"};var tP=m.forwardRef(function(e,t){return m.createElement(eO.default,(0,eI.default)({},e,{ref:t,icon:tT}))}),tL=e.i(987432);let tB={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M892 772h-80v-80c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v80h-80c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h80v80c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-80h80c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM373.5 498.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 01-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.8-1.7-203.2 89.2-203.2 200 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 008 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.8-1.1 6.4-4.8 5.9-8.8zM824 472c0-109.4-87.9-198.3-196.9-200C516.3 270.3 424 361.2 424 472c0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 00-86.4 60.4C357 742.6 326 814.8 324 891.8a8 8 0 008 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5C505.8 695.7 563 672 624 672c110.4 0 200-89.5 200-200zm-109.5 90.5C690.3 586.7 658.2 600 624 600s-66.3-13.3-90.5-37.5a127.26 127.26 0 01-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4-.1 34.2-13.4 66.3-37.6 90.5z"}}]},name:"usergroup-add",theme:"outlined"};var tF=m.forwardRef(function(e,t){return m.createElement(eO.default,(0,eI.default)({},e,{ref:t,icon:tB}))}),t$=e.i(872934);let{Panel:tE}=$.Collapse,{TextArea:tM}=i.Input,tR={empty:{name:"Empty Template",code:`async def apply_guardrail(inputs, request_data, input_type): - # inputs: {texts, images, tools, tool_calls, structured_messages, model} - # request_data: {model, user_id, team_id, end_user_id, metadata} - # input_type: "request" or "response" - return allow()`},blockSSN:{name:"Block SSN",code:`def apply_guardrail(inputs, request_data, input_type): - for text in inputs["texts"]: - if regex_match(text, r"\\d{3}-\\d{2}-\\d{4}"): - return block("SSN detected") - return allow()`},redactEmail:{name:"Redact Emails",code:`def apply_guardrail(inputs, request_data, input_type): - pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}" - modified = [] - for text in inputs["texts"]: - modified.append(regex_replace(text, pattern, "[EMAIL REDACTED]")) - return modify(texts=modified)`},blockSQL:{name:"Block SQL Injection",code:`def apply_guardrail(inputs, request_data, input_type): - if input_type != "request": - return allow() - for text in inputs["texts"]: - if contains_code_language(text, ["sql"]): - return block("SQL code not allowed") - return allow()`},validateJSON:{name:"Validate JSON",code:`def apply_guardrail(inputs, request_data, input_type): - if input_type != "response": - return allow() - - schema = {"type": "object", "required": ["name", "value"]} - - for text in inputs["texts"]: - obj = json_parse(text) - if obj is None: - return block("Invalid JSON response") - if not json_schema_valid(obj, schema): - return block("Response missing required fields") - return allow()`},externalAPI:{name:"External API Check (async)",code:`async def apply_guardrail(inputs, request_data, input_type): - # Call an external moderation API (async for non-blocking) - for text in inputs["texts"]: - response = await http_post( - "https://api.example.com/moderate", - body={"text": text, "user_id": request_data["user_id"]}, - headers={"Authorization": "Bearer YOUR_API_KEY"}, - timeout=10 - ) - - if not response["success"]: - # API call failed, allow by default or block - return allow() - - if response["body"].get("flagged"): - return block(response["body"].get("reason", "Content flagged")) - - return allow()`}},tG={"Return Values":[{name:"allow()",desc:"Let request/response through"},{name:"block(reason)",desc:"Reject with message"},{name:"modify(texts=[], images=[], tool_calls=[])",desc:"Transform content"}],"HTTP Requests (async)":[{name:"await http_request(url, method, headers, body)",desc:"Make async HTTP request"},{name:"await http_get(url, headers)",desc:"Async GET request"},{name:"await http_post(url, body, headers)",desc:"Async POST request"}],"Regex Functions":[{name:"regex_match(text, pattern)",desc:"Returns True if pattern found"},{name:"regex_replace(text, pattern, replacement)",desc:"Replace all matches"},{name:"regex_find_all(text, pattern)",desc:"Return list of matches"}],"JSON Functions":[{name:"json_parse(text)",desc:"Parse JSON string, returns None on error"},{name:"json_stringify(obj)",desc:"Convert to JSON string"},{name:"json_schema_valid(obj, schema)",desc:"Validate against JSON schema"}],"URL Functions":[{name:"extract_urls(text)",desc:"Extract all URLs from text"},{name:"is_valid_url(url)",desc:"Check if URL is valid"},{name:"all_urls_valid(text)",desc:"Check all URLs in text are valid"}],"Code Detection":[{name:"detect_code(text)",desc:"Returns True if code detected"},{name:"detect_code_languages(text)",desc:"Returns list of detected languages"},{name:'contains_code_language(text, ["sql"])',desc:"Check for specific languages"}],"Text Utilities":[{name:"contains(text, substring)",desc:"Check if substring exists"},{name:"contains_any(text, [substr1, substr2])",desc:"Check if any substring exists"},{name:"word_count(text)",desc:"Count words"},{name:"char_count(text)",desc:"Count characters"},{name:"lower(text) / upper(text) / trim(text)",desc:"String transforms"}]},tz=[{value:"pre_call",label:"pre_call (Request)"},{value:"post_call",label:"post_call (Response)"},{value:"during_call",label:"during_call (Parallel)"},{value:"logging_only",label:"logging_only"},{value:"pre_mcp_call",label:"pre_mcp_call (Before MCP Tool Call)"},{value:"post_mcp_call",label:"post_mcp_call (After MCP Tool Call)"},{value:"during_mcp_call",label:"during_mcp_call (During MCP Tool Call)"}],tD=({visible:e,onClose:t,onSuccess:a,accessToken:r,editData:i})=>{let o=!!i,[d,c]=(0,m.useState)(""),[g,x]=(0,m.useState)(["pre_call"]),[h,f]=(0,m.useState)(!1),[y,j]=(0,m.useState)("empty"),[_,b]=(0,m.useState)(tR.empty.code),[v,w]=(0,m.useState)(!1),[N,C]=(0,m.useState)(!1),[S,k]=(0,m.useState)(!1),I={texts:["Hello, my SSN is 123-45-6789"],images:[],tools:[{type:"function",function:{name:"get_weather",description:"Get the current weather in a location",parameters:{type:"object",properties:{location:{type:"string",description:"City name"}},required:["location"]}}}],tool_calls:[],structured_messages:[{role:"system",content:"You are a helpful assistant."},{role:"user",content:"Hello, my SSN is 123-45-6789"}],model:"gpt-4"},A={texts:["The weather in San Francisco is 72°F and sunny."],images:[],tools:[],tool_calls:[{id:"call_abc123",type:"function",function:{name:"get_weather",arguments:'{"location": "San Francisco"}'}}],structured_messages:[],model:"gpt-4"},O={texts:['Tool: read_wiki_structure\nArguments: {"repoName": "BerriAI/litellm"}'],images:[],tools:[{type:"function",function:{name:"read_wiki_structure",description:"Read the structure of a GitHub repository (MCP tool passed as OpenAI tool)",parameters:{type:"object",properties:{repoName:{type:"string",description:"Repository name, e.g. BerriAI/litellm"}},required:["repoName"]}}}],tool_calls:[{id:"call_mcp_001",type:"function",function:{name:"read_wiki_structure",arguments:'{"repoName": "BerriAI/litellm"}'}}],structured_messages:[{role:"user",content:'Tool: read_wiki_structure\nArguments: {"repoName": "BerriAI/litellm"}'}],model:"mcp-tool-call"},[T,P]=(0,m.useState)(JSON.stringify(I,null,2)),[L,B]=(0,m.useState)(null),[F,E]=(0,m.useState)(null),M=(0,m.useRef)(null),R=e=>null==e?["pre_call"]:Array.isArray(e)?e.length?e:["pre_call"]:[e];(0,m.useEffect)(()=>{e&&(i?(c(i.guardrail_name||""),x(R(i.litellm_params?.mode)),f(i.litellm_params?.default_on||!1),b(i.litellm_params?.custom_code||tR.empty.code),j("")):(c(""),x(["pre_call"]),f(!1),j("empty"),b(tR.empty.code)),B(null),k(!1))},[e,i]);let G=async e=>{try{await navigator.clipboard.writeText(e),E(e),setTimeout(()=>E(null),2e3)}catch(e){console.error("Failed to copy:",e)}},z=async()=>{if(!d.trim())return void u.default.fromBackend("Please enter a guardrail name");if(!_.trim())return void u.default.fromBackend("Please enter custom code");if(!r)return void u.default.fromBackend("No access token available");w(!0);try{if(o&&i){let e={litellm_params:{custom_code:_}};d!==i.guardrail_name&&(e.guardrail_name=d);let t=R(i.litellm_params?.mode);(g.length!==t.length||g.some((e,a)=>e!==t[a]))&&(e.litellm_params.mode=g),h!==i.litellm_params?.default_on&&(e.litellm_params.default_on=h),await (0,p.updateGuardrailCall)(r,i.guardrail_id,e),u.default.success("Custom code guardrail updated successfully")}else await (0,p.createGuardrailCall)(r,{guardrail_name:d,litellm_params:{guardrail:"custom_code",mode:g,default_on:h,custom_code:_},guardrail_info:{}}),u.default.success("Custom code guardrail created successfully");a(),t()}catch(e){console.error("Failed to save guardrail:",e),u.default.fromBackend(`Failed to ${o?"update":"create"} guardrail: `+(e instanceof Error?e.message:String(e)))}finally{w(!1)}},K=async()=>{if(!r)return void B({error:"No access token available"});C(!0),B(null);try{let e;try{e=JSON.parse(T)}catch(e){B({error:"Invalid test input JSON"}),C(!1);return}e.texts||(e.texts=[]);let t=["pre_call","pre_mcp_call"],a=["post_call","post_mcp_call"],l=g.some(e=>t.includes(e))?"request":g.some(e=>a.includes(e))?"response":"request",i=await (0,p.testCustomCodeGuardrail)(r,{custom_code:_,test_input:e,input_type:l,request_data:{model:"test-model",metadata:{}}});i.success&&i.result?B(i.result):i.error?B({error:i.error,error_type:i.error_type}):B({error:"Unknown error occurred"})}catch(e){console.error("Failed to test custom code:",e),B({error:e instanceof Error?e.message:"Failed to test custom code"})}finally{C(!1)}},q=_.split("\n").length;return(0,l.jsxs)(s.Modal,{open:e,onCancel:t,footer:null,width:1400,className:"custom-code-modal",closable:!0,destroyOnClose:!0,children:[(0,l.jsxs)("div",{className:"flex flex-col h-[80vh]",children:[(0,l.jsxs)("div",{className:"pb-4 border-b border-gray-200",children:[(0,l.jsx)("h2",{className:"text-xl font-semibold text-gray-900",children:o?"Edit Custom Guardrail":"Create Custom Guardrail"}),(0,l.jsx)("p",{className:"text-sm text-gray-500 mt-1",children:"Define custom logic using Python-like syntax"})]}),(0,l.jsxs)("div",{className:"flex items-center gap-4 py-4 border-b border-gray-100",children:[(0,l.jsxs)("div",{className:"flex-1 max-w-[200px]",children:[(0,l.jsx)("label",{className:"block text-xs font-medium text-gray-600 mb-1",children:"Guardrail Name"}),(0,l.jsx)(tl.TextInput,{value:d,onValueChange:c,placeholder:"e.g., block-pii-custom"})]}),(0,l.jsxs)("div",{className:"w-[280px]",children:[(0,l.jsx)("label",{className:"block text-xs font-medium text-gray-600 mb-1",children:"Mode (can select multiple)"}),(0,l.jsx)(n.Select,{mode:"multiple",value:g,onChange:x,options:tz,className:"w-full",size:"middle",placeholder:"Select modes"})]}),(0,l.jsxs)("div",{className:"w-[180px]",children:[(0,l.jsx)("label",{className:"block text-xs font-medium text-gray-600 mb-1",children:"Template"}),(0,l.jsx)(n.Select,{value:y,onChange:e=>{j(e),b(tR[e].code)},className:"w-full",size:"middle",dropdownRender:e=>(0,l.jsxs)(l.Fragment,{children:[e,(0,l.jsx)(eD.Divider,{style:{margin:"8px 0"}}),(0,l.jsxs)("div",{style:{padding:"8px 12px",cursor:"pointer",color:"#1890ff",fontSize:"12px",display:"flex",alignItems:"center",gap:"4px"},onClick:e=>{e.preventDefault(),window.open("https://models.litellm.ai/guardrails","_blank")},onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#f0f0f0"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor="transparent"},children:[(0,l.jsx)(tF,{}),(0,l.jsx)("span",{children:"Browse Community templates"}),(0,l.jsx)(t$.ExportOutlined,{style:{fontSize:"10px"}})]})]}),children:(0,l.jsx)(n.Select.OptGroup,{label:"STANDARD",children:Object.entries(tR).map(([e,t])=>(0,l.jsx)(n.Select.Option,{value:e,children:t.name},e))})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2 pt-5",children:[(0,l.jsx)("span",{className:"text-sm text-gray-600",children:"Default On"}),(0,l.jsx)(D.Switch,{checked:h,onChange:f})]})]}),(0,l.jsxs)("div",{className:"flex flex-1 overflow-hidden mt-4 gap-6",children:[(0,l.jsxs)("div",{className:"flex-[2] flex flex-col min-w-0 overflow-y-auto",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between mb-2 flex-shrink-0",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide",children:"Python Logic"}),(0,l.jsx)("span",{className:"text-xs text-gray-400",children:"Restricted environment (no imports)"})]}),(0,l.jsxs)("div",{className:"relative rounded-lg overflow-hidden border border-gray-700 bg-[#1e1e1e] flex-shrink-0",style:{minHeight:"300px",maxHeight:"400px"},children:[(0,l.jsx)("div",{className:"absolute left-0 top-0 bottom-0 w-12 bg-[#1e1e1e] border-r border-gray-700 text-right pr-3 pt-3 select-none overflow-hidden",style:{fontFamily:"'Fira Code', 'Monaco', 'Consolas', monospace",fontSize:"14px",lineHeight:"1.6"},children:Array.from({length:Math.max(q,20)},(e,t)=>(0,l.jsx)("div",{className:"text-gray-500 h-[22.4px]",children:t+1},t+1))}),(0,l.jsx)("textarea",{ref:M,value:_,onChange:e=>b(e.target.value),onKeyDown:e=>{if("Tab"===e.key){e.preventDefault();let t=e.currentTarget,a=t.selectionStart,l=t.selectionEnd;b(_.substring(0,a)+" "+_.substring(l)),setTimeout(()=>{t.selectionStart=t.selectionEnd=a+4},0)}},spellCheck:!1,className:"w-full h-full pl-14 pr-4 pt-3 pb-3 resize-none focus:outline-none bg-transparent text-gray-200",style:{fontFamily:"'Fira Code', 'Monaco', 'Consolas', monospace",fontSize:"14px",lineHeight:"1.6",tabSize:4}})]}),(0,l.jsx)($.Collapse,{activeKey:S?["test"]:[],onChange:e=>k(e.includes("test")),className:"mt-3 bg-white border border-gray-200 rounded-lg flex-shrink-0",expandIcon:({isActive:e})=>(0,l.jsx)(tP,{rotate:90*!!e}),children:(0,l.jsx)(tE,{header:(0,l.jsxs)("span",{className:"flex items-center gap-2 text-sm font-medium",children:[(0,l.jsx)(tI.PlayCircleOutlined,{className:"text-blue-500"}),"Test Your Guardrail"]}),children:(0,l.jsxs)("div",{className:"space-y-3",children:[(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,l.jsx)("label",{className:"block text-xs font-medium text-gray-600",children:"Test Input (JSON)"}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"text-xs text-gray-500",children:"Load example:"}),(0,l.jsx)("button",{type:"button",onClick:()=>P(JSON.stringify(I,null,2)),className:"px-2 py-1 text-xs rounded border border-orange-200 bg-orange-50 text-orange-700 hover:bg-orange-100 transition-colors",children:"Pre-call"}),(0,l.jsx)("button",{type:"button",onClick:()=>P(JSON.stringify(O,null,2)),className:"px-2 py-1 text-xs rounded border border-purple-200 bg-purple-50 text-purple-700 hover:bg-purple-100 transition-colors",children:"Pre MCP"}),(0,l.jsx)("button",{type:"button",onClick:()=>P(JSON.stringify(A,null,2)),className:"px-2 py-1 text-xs rounded border border-green-200 bg-green-50 text-green-700 hover:bg-green-100 transition-colors",children:"Post-call"})]})]}),(0,l.jsx)("div",{className:"mb-2 p-2 bg-gray-50 rounded text-xs text-gray-600 border border-gray-200",children:(0,l.jsxs)("div",{className:"grid grid-cols-2 gap-x-4 gap-y-1",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("strong",{children:"texts"}),": Message content (always)"]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("strong",{children:"images"}),": Base64 images (vision)"]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("strong",{children:"tools"}),": Tool definitions ",(0,l.jsx)("span",{className:"text-orange-600",children:"(pre_call)"}),", MCP as OpenAI tool ",(0,l.jsx)("span",{className:"text-purple-600",children:"(pre_mcp_call)"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("strong",{children:"tool_calls"}),": LLM tool calls ",(0,l.jsx)("span",{className:"text-green-600",children:"(post_call)"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("strong",{children:"structured_messages"}),": Full messages ",(0,l.jsx)("span",{className:"text-orange-600",children:"(pre_call)"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("strong",{children:"model"}),": Model name (always)"]})]})}),(0,l.jsx)(tM,{value:T,onChange:e=>P(e.target.value),rows:8,className:"font-mono text-xs",placeholder:'{"texts": ["test message"], ...}'})]}),(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)(e6.Button,{size:"xs",onClick:K,disabled:N,icon:tI.PlayCircleOutlined,children:N?"Running...":"Run Test"}),L&&(0,l.jsx)("div",{className:`flex items-center gap-2 text-sm ${L.error?"text-red-600":"allow"===L.action?"text-green-600":"block"===L.action?"text-orange-600":"text-blue-600"}`,children:L.error?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(tO.CloseCircleOutlined,{}),(0,l.jsxs)("span",{children:[L.error_type&&(0,l.jsxs)("span",{className:"font-medium",children:["[",L.error_type,"] "]}),L.error]})]}):"allow"===L.action?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(tA.CheckCircleOutlined,{})," Allowed"]}):"block"===L.action?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(tO.CloseCircleOutlined,{})," Blocked: ",L.reason]}):"modify"===L.action?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(tA.CheckCircleOutlined,{})," Modified",L.texts&&L.texts.length>0&&(0,l.jsxs)("span",{className:"text-xs text-gray-500 ml-1",children:["→ ",L.texts[0].substring(0,50),L.texts[0].length>50?"...":""]})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(tA.CheckCircleOutlined,{})," ",L.action||"Unknown"]})})]})]})},"test")}),(0,l.jsxs)("div",{className:"mt-3 p-4 bg-gradient-to-r from-blue-50 to-indigo-50 border border-blue-200 rounded-lg flex items-center justify-between flex-shrink-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"bg-blue-100 rounded-full p-2",children:(0,l.jsx)(tF,{className:"text-blue-600 text-lg"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{className:"text-sm font-medium text-gray-900",children:"Built a useful guardrail?"}),(0,l.jsx)("div",{className:"text-xs text-gray-600",children:"Share it with the community and help others build faster"})]})]}),(0,l.jsx)(e6.Button,{size:"xs",onClick:()=>window.open("https://github.com/BerriAI/litellm-guardrails","_blank"),icon:t$.ExportOutlined,className:"bg-blue-600 hover:bg-blue-700 text-white border-0",children:"Contribute Template"})]})]}),(0,l.jsxs)("div",{className:"w-[300px] flex-shrink-0 overflow-auto border-l border-gray-200 pl-6",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,l.jsx)(tc.CodeOutlined,{className:"text-blue-500"}),(0,l.jsx)("span",{className:"font-semibold text-gray-700",children:"Available Primitives"})]}),(0,l.jsx)("p",{className:"text-xs text-gray-500 mb-3",children:"Click to copy functions to clipboard"}),(0,l.jsx)($.Collapse,{defaultActiveKey:["Return Values"],className:"primitives-collapse bg-transparent border-0",expandIconPosition:"end",children:Object.entries(tG).map(([e,t])=>(0,l.jsx)(tE,{header:(0,l.jsx)("span",{className:"text-sm font-medium text-gray-700",children:e}),className:"bg-white mb-2 rounded-lg border border-gray-200",children:(0,l.jsx)("div",{className:"space-y-2",children:t.map(e=>(0,l.jsx)("button",{onClick:()=>G(e.name),className:`w-full text-left px-2 py-2 rounded transition-colors ${F===e.name?"bg-green-100":"bg-gray-50 hover:bg-blue-50"}`,children:F===e.name?(0,l.jsxs)("span",{className:"flex items-center gap-1 text-xs font-mono text-green-700",children:[(0,l.jsx)(tA.CheckCircleOutlined,{})," Copied!"]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{className:"text-xs font-mono text-gray-800",children:e.name}),(0,l.jsx)("div",{className:"text-[10px] text-gray-500 mt-0.5",children:e.desc})]})},e.name))})},e))})]})]}),(0,l.jsxs)("div",{className:"flex items-center justify-between pt-4 mt-4 border-t border-gray-200",children:[(0,l.jsx)("span",{className:"text-xs text-gray-400",children:"Changes are auto-saved to local draft"}),(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)(e6.Button,{variant:"secondary",onClick:t,children:"Cancel"}),(0,l.jsx)(e6.Button,{onClick:z,loading:v,disabled:v||!d.trim(),icon:tL.SaveOutlined,children:o?"Update Guardrail":"Save Guardrail"})]})]})]}),(0,l.jsx)("style",{children:` - .custom-code-modal .ant-modal-content { - padding: 24px; - } - .custom-code-modal .ant-modal-close { - top: 20px; - right: 20px; - } - .primitives-collapse .ant-collapse-item { - border: none !important; - } - .primitives-collapse .ant-collapse-header { - padding: 8px 12px !important; - } - .primitives-collapse .ant-collapse-content-box { - padding: 8px 12px !important; - } - `})]})};e.s(["default",0,({guardrailId:e,onClose:t,accessToken:a,isAdmin:s})=>{let o,[d,g]=(0,m.useState)(null),[x,h]=(0,m.useState)(null),[f,y]=(0,m.useState)(!0),[j,_]=(0,m.useState)(!1),[b]=r.Form.useForm(),[v,w]=(0,m.useState)([]),[N,C]=(0,m.useState)({}),[S,k]=(0,m.useState)(null),[I,A]=(0,m.useState)({}),[O,T]=(0,m.useState)(!1),P={rules:[],default_action:"deny",on_disallowed_action:"block",violation_message_template:""},[L,B]=(0,m.useState)(P),[F,$]=(0,m.useState)(!1),[E,M]=(0,m.useState)(!1),R=m.default.useRef({patterns:[],blockedWords:[],categories:[]}),G=(0,m.useCallback)((e,t,a,l,r)=>{R.current={patterns:e,blockedWords:t,categories:a||[],competitorIntentEnabled:l,competitorIntentConfig:r}},[]),z=async()=>{try{if(y(!0),!a)return;let t=await (0,p.getGuardrailInfo)(a,e);if(g(t),t.litellm_params?.pii_entities_config){let e=t.litellm_params.pii_entities_config;if(w([]),C({}),Object.keys(e).length>0){let t=[],a={};Object.entries(e).forEach(([e,l])=>{t.push(e),a[e]="string"==typeof l?l:"MASK"}),w(t),C(a)}}else w([]),C({})}catch(e){u.default.fromBackend("Failed to load guardrail information"),console.error("Error fetching guardrail info:",e)}finally{y(!1)}},D=async()=>{try{if(!a)return;let e=await (0,p.getGuardrailProviderSpecificParams)(a);h(e)}catch(e){console.error("Error fetching guardrail provider specific params:",e)}},K=async()=>{try{if(!a)return;let e=await (0,p.getGuardrailUISettings)(a);k(e)}catch(e){console.error("Error fetching guardrail UI settings:",e)}};(0,m.useEffect)(()=>{D()},[a]),(0,m.useEffect)(()=>{z(),K()},[e,a]),(0,m.useEffect)(()=>{if(d&&b){let e={...d.litellm_params||{}};delete e.skip_system_message_in_guardrail,delete e.skip_tool_message_in_guardrail,b.setFieldsValue({guardrail_name:d.guardrail_name,...e,skip_system_message_choice:ec(d.litellm_params?.skip_system_message_in_guardrail),skip_tool_message_choice:eu(d.litellm_params?.skip_tool_message_in_guardrail),guardrail_info:d.guardrail_info?JSON.stringify(d.guardrail_info,null,2):"",...d.litellm_params?.optional_params&&{optional_params:d.litellm_params.optional_params}})}},[d,x,b]);let q=(0,m.useCallback)(()=>{d?.litellm_params?.guardrail==="tool_permission"?B({rules:d.litellm_params?.rules||[],default_action:(d.litellm_params?.default_action||"deny").toLowerCase(),on_disallowed_action:(d.litellm_params?.on_disallowed_action||"block").toLowerCase(),violation_message_template:d.litellm_params?.violation_message_template||""}):B(P),$(!1)},[d]);(0,m.useEffect)(()=>{q()},[q]);let H=async t=>{try{if(!a)return;let o={litellm_params:{}};t.guardrail_name!==d.guardrail_name&&(o.guardrail_name=t.guardrail_name),t.default_on!==d.litellm_params?.default_on&&(o.litellm_params.default_on=t.default_on);let c=ec(d.litellm_params?.skip_system_message_in_guardrail),m=t.skip_system_message_choice;void 0!==m&&m!==c&&("inherit"===m?o.litellm_params.skip_system_message_in_guardrail=null:"yes"===m?o.litellm_params.skip_system_message_in_guardrail=!0:o.litellm_params.skip_system_message_in_guardrail=!1);let g=eu(d.litellm_params?.skip_tool_message_in_guardrail),h=t.skip_tool_message_choice;void 0!==h&&h!==g&&("inherit"===h?o.litellm_params.skip_tool_message_in_guardrail=null:"yes"===h?o.litellm_params.skip_tool_message_in_guardrail=!0:o.litellm_params.skip_tool_message_in_guardrail=!1);let f=d.guardrail_info,y=t.guardrail_info?JSON.parse(t.guardrail_info):void 0;JSON.stringify(f)!==JSON.stringify(y)&&(o.guardrail_info=y);let j=d.litellm_params?.pii_entities_config||{},b={};if(v.forEach(e=>{b[e]=N[e]||"MASK"}),JSON.stringify(j)!==JSON.stringify(b)&&(o.litellm_params.pii_entities_config=b),d.litellm_params?.guardrail==="litellm_content_filter"&&O){var l,r,i,s,n;let e,t=(l=R.current.patterns||[],r=R.current.blockedWords||[],i=R.current.categories||[],s=R.current.competitorIntentEnabled,n=R.current.competitorIntentConfig,e={patterns:l.map(e=>({pattern_type:"prebuilt"===e.type?"prebuilt":"regex",pattern_name:"prebuilt"===e.type?e.name:void 0,pattern:"custom"===e.type?e.pattern:void 0,name:e.name,action:e.action})),blocked_words:r.map(e=>({keyword:e.keyword,action:e.action,description:e.description}))},void 0!==i&&(e.categories=i.map(e=>({category:e.category,enabled:!0,action:e.action,severity_threshold:e.severity_threshold||"medium"}))),s&&n&&n.brand_self.length>0&&(e.competitor_intent_config={competitor_intent_type:n.competitor_intent_type,brand_self:n.brand_self,locations:n.locations?.length?n.locations:void 0,competitors:"generic"===n.competitor_intent_type&&n.competitors?.length?n.competitors:void 0,policy:n.policy,threshold_high:n.threshold_high,threshold_medium:n.threshold_medium,threshold_low:n.threshold_low}),e);o.litellm_params.patterns=t.patterns,o.litellm_params.blocked_words=t.blocked_words,o.litellm_params.categories=t.categories,o.litellm_params.competitor_intent_config=t.competitor_intent_config??null}if(d.litellm_params?.guardrail==="tool_permission"){let e=d.litellm_params?.rules||[],t=L.rules||[],a=JSON.stringify(e)!==JSON.stringify(t),l=(d.litellm_params?.default_action||"deny").toLowerCase(),r=(L.default_action||"deny").toLowerCase(),i=l!==r,s=(d.litellm_params?.on_disallowed_action||"block").toLowerCase(),n=(L.on_disallowed_action||"block").toLowerCase(),c=s!==n,m=d.litellm_params?.violation_message_template||"",u=L.violation_message_template||"",p=m!==u;(F||a||i||c||p)&&(o.litellm_params.rules=t,o.litellm_params.default_action=r,o.litellm_params.on_disallowed_action=n,o.litellm_params.violation_message_template=u||null)}let w=Object.keys(ea).find(e=>ea[e]===d.litellm_params?.guardrail);console.log("values: ",JSON.stringify(t)),console.log("currentProvider: ",w);let C=d.litellm_params?.guardrail==="tool_permission";if(x&&w&&!C){let e=x[ea[w]?.toLowerCase()]||{},a=new Set;console.log("providerSpecificParams: ",JSON.stringify(e)),Object.keys(e).forEach(e=>{"optional_params"!==e&&a.add(e)}),e.optional_params&&e.optional_params.fields&&Object.keys(e.optional_params.fields).forEach(e=>{a.add(e)}),console.log("allowedParams: ",a),a.forEach(e=>{if("patterns"===e||"blocked_words"===e||"categories"===e)return;let a=t[e];(null==a||""===a)&&(a=t.optional_params?.[e]);let l=d.litellm_params?.[e];JSON.stringify(a)!==JSON.stringify(l)&&(null!=a&&""!==a?o.litellm_params[e]=a:null!=l&&""!==l&&(o.litellm_params[e]=null))})}if(0===Object.keys(o.litellm_params).length&&delete o.litellm_params,0===Object.keys(o).length){u.default.info("No changes detected"),_(!1);return}await (0,p.updateGuardrailCall)(a,e,o),u.default.success("Guardrail updated successfully"),T(!1),z(),_(!1)}catch(e){console.error("Error updating guardrail:",e),u.default.fromBackend("Failed to update guardrail")}};if(f)return(0,l.jsx)("div",{className:"p-4",children:"Loading..."});if(!d)return(0,l.jsx)("div",{className:"p-4",children:"Guardrail not found"});let J=e=>e?new Date(e).toLocaleString():"-",{logo:U,displayName:W}=ed(d.litellm_params?.guardrail||""),V=async(e,t)=>{await (0,td.copyToClipboard)(e)&&(A(e=>({...e,[t]:!0})),setTimeout(()=>{A(e=>({...e,[t]:!1}))},2e3))},Y="config"===d.guardrail_definition_location;return(0,l.jsxs)("div",{className:"p-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)(c.Button,{type:"text",icon:(0,l.jsx)(tm.ArrowLeftIcon,{className:"w-4 h-4"}),onClick:t,className:"mb-4",children:"Back to Guardrails"}),(0,l.jsx)(ty.Title,{children:d.guardrail_name||"Unnamed Guardrail"}),(0,l.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,l.jsx)(ez.Text,{className:"text-gray-500 font-mono",children:d.guardrail_id}),(0,l.jsx)(c.Button,{type:"text",size:"small",icon:I["guardrail-id"]?(0,l.jsx)(tj.CheckIcon,{size:12}):(0,l.jsx)(t_.CopyIcon,{size:12}),onClick:()=>V(d.guardrail_id,"guardrail-id"),className:`left-2 z-10 transition-all duration-200 ${I["guardrail-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100"}`})]})]}),(0,l.jsxs)(tg.TabGroup,{children:[(0,l.jsxs)(tx.TabList,{className:"mb-4",children:[(0,l.jsx)(tp.Tab,{children:"Overview"},"overview"),s?(0,l.jsx)(tp.Tab,{children:"Settings"},"settings"):(0,l.jsx)(l.Fragment,{})]}),(0,l.jsxs)(tf.TabPanels,{children:[(0,l.jsxs)(th.TabPanel,{children:[(0,l.jsxs)(tu.Grid,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,l.jsxs)(eG.Card,{children:[(0,l.jsx)(ez.Text,{children:"Provider"}),(0,l.jsxs)("div",{className:"mt-2 flex items-center space-x-2",children:[U&&(0,l.jsx)("img",{src:U,alt:`${W} logo`,className:"w-6 h-6",onError:e=>{e.target.style.display="none"}}),(0,l.jsx)(ty.Title,{children:W})]})]}),(0,l.jsxs)(eG.Card,{children:[(0,l.jsx)(ez.Text,{children:"Mode"}),(0,l.jsxs)("div",{className:"mt-2",children:[(0,l.jsx)(ty.Title,{children:d.litellm_params?.mode||"-"}),(0,l.jsx)(te.Badge,{color:d.litellm_params?.default_on?"green":"gray",children:d.litellm_params?.default_on?"Default On":"Default Off"})]})]}),(0,l.jsxs)(eG.Card,{children:[(0,l.jsx)(ez.Text,{children:"Created At"}),(0,l.jsxs)("div",{className:"mt-2",children:[(0,l.jsx)(ty.Title,{children:J(d.created_at)}),(0,l.jsxs)(ez.Text,{children:["Last Updated: ",J(d.updated_at)]})]})]})]}),d.litellm_params?.pii_entities_config&&Object.keys(d.litellm_params.pii_entities_config).length>0&&(0,l.jsx)(eG.Card,{className:"mt-6",children:(0,l.jsxs)("div",{className:"flex justify-between items-center",children:[(0,l.jsx)(ez.Text,{className:"font-medium",children:"PII Protection"}),(0,l.jsxs)(te.Badge,{color:"blue",children:[Object.keys(d.litellm_params.pii_entities_config).length," PII entities configured"]})]})}),d.litellm_params?.pii_entities_config&&Object.keys(d.litellm_params.pii_entities_config).length>0&&(0,l.jsxs)(eG.Card,{className:"mt-6",children:[(0,l.jsx)(ez.Text,{className:"mb-4 text-lg font-semibold",children:"PII Entity Configuration"}),(0,l.jsxs)("div",{className:"border rounded-lg overflow-hidden shadow-sm",children:[(0,l.jsxs)("div",{className:"bg-gray-50 px-5 py-3 border-b flex",children:[(0,l.jsx)(ez.Text,{className:"flex-1 font-semibold text-gray-700",children:"Entity Type"}),(0,l.jsx)(ez.Text,{className:"flex-1 font-semibold text-gray-700",children:"Configuration"})]}),(0,l.jsx)("div",{className:"max-h-[400px] overflow-y-auto",children:Object.entries(d.litellm_params?.pii_entities_config).map(([e,t])=>(0,l.jsxs)("div",{className:"px-5 py-3 flex border-b hover:bg-gray-50 transition-colors",children:[(0,l.jsx)(ez.Text,{className:"flex-1 font-medium text-gray-900",children:e}),(0,l.jsx)(ez.Text,{className:"flex-1",children:(0,l.jsxs)("span",{className:`inline-flex items-center gap-1.5 ${"MASK"===t?"text-blue-600":"text-red-600"}`,children:["MASK"===t?(0,l.jsx)(eS.default,{}):(0,l.jsx)(ek.StopOutlined,{}),String(t)]})})]},e))})]})]}),d.litellm_params?.guardrail==="tool_permission"&&(0,l.jsx)(eG.Card,{className:"mt-6",children:(0,l.jsx)(eJ,{value:L,disabled:!0})}),d.litellm_params?.guardrail==="custom_code"&&d.litellm_params?.custom_code&&(0,l.jsxs)(eG.Card,{className:"mt-6",children:[(0,l.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(tc.CodeOutlined,{className:"text-blue-500"}),(0,l.jsx)(ez.Text,{className:"font-medium text-lg",children:"Custom Code"})]}),s&&!Y&&(0,l.jsx)(c.Button,{size:"small",icon:(0,l.jsx)(tc.CodeOutlined,{}),onClick:()=>M(!0),children:"Edit Code"})]}),(0,l.jsx)("div",{className:"relative rounded-lg overflow-hidden border border-gray-700 bg-[#1e1e1e]",children:(0,l.jsx)("pre",{className:"p-4 text-sm text-gray-200 overflow-x-auto",style:{fontFamily:"'Fira Code', 'Monaco', 'Consolas', monospace"},children:(0,l.jsx)("code",{children:d.litellm_params.custom_code})})})]}),(0,l.jsx)(tk,{guardrailData:d,guardrailSettings:S,isEditing:!1,accessToken:a})]}),s&&(0,l.jsx)(th.TabPanel,{children:(0,l.jsxs)(eG.Card,{children:[(0,l.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,l.jsx)(ty.Title,{children:"Guardrail Settings"}),Y&&(0,l.jsx)(eb.Tooltip,{title:"Guardrail is defined in the config file and cannot be edited.",children:(0,l.jsx)(eq.InfoCircleOutlined,{})}),!j&&!Y&&(d.litellm_params?.guardrail==="custom_code"?(0,l.jsx)(c.Button,{icon:(0,l.jsx)(tc.CodeOutlined,{}),onClick:()=>M(!0),children:"Edit Code"}):(0,l.jsx)(c.Button,{onClick:()=>_(!0),children:"Edit Settings"}))]}),j?(0,l.jsxs)(r.Form,{form:b,onFinish:H,initialValues:{guardrail_name:d.guardrail_name,...(o={...d.litellm_params||{}},delete o.skip_system_message_in_guardrail,delete o.skip_tool_message_in_guardrail,o),skip_system_message_choice:ec(d.litellm_params?.skip_system_message_in_guardrail),skip_tool_message_choice:eu(d.litellm_params?.skip_tool_message_in_guardrail),guardrail_info:d.guardrail_info?JSON.stringify(d.guardrail_info,null,2):"",...d.litellm_params?.optional_params&&{optional_params:d.litellm_params.optional_params}},layout:"vertical",children:[(0,l.jsx)(r.Form.Item,{label:"Guardrail Name",name:"guardrail_name",rules:[{required:!0,message:"Please input a guardrail name"}],children:(0,l.jsx)(i.Input,{placeholder:"Enter guardrail name"})}),(0,l.jsx)(r.Form.Item,{label:"Default On",name:"default_on",children:(0,l.jsxs)(n.Select,{children:[(0,l.jsx)(n.Select.Option,{value:!0,children:"Yes"}),(0,l.jsx)(n.Select.Option,{value:!1,children:"No"})]})}),(0,l.jsx)(r.Form.Item,{label:"Skip system messages in guardrail",name:"skip_system_message_choice",tooltip:"Unified guardrails: omit role: system from guardrail input (LLM still gets full messages). Use global default follows litellm_settings.skip_system_message_in_guardrail.",children:(0,l.jsxs)(n.Select,{children:[(0,l.jsx)(n.Select.Option,{value:"inherit",children:"Use global default"}),(0,l.jsx)(n.Select.Option,{value:"yes",children:"Yes — exclude from guardrail scan"}),(0,l.jsx)(n.Select.Option,{value:"no",children:"No — always include in scan"})]})}),(0,l.jsx)(r.Form.Item,{label:"Skip tool messages in guardrail",name:"skip_tool_message_choice",tooltip:"Unified guardrails: omit role: tool from guardrail input (LLM still gets full messages). Use global default follows litellm_settings.skip_tool_message_in_guardrail.",children:(0,l.jsxs)(n.Select,{children:[(0,l.jsx)(n.Select.Option,{value:"inherit",children:"Use global default"}),(0,l.jsx)(n.Select.Option,{value:"yes",children:"Yes — exclude from guardrail scan"}),(0,l.jsx)(n.Select.Option,{value:"no",children:"No — always include in scan"})]})}),d.litellm_params?.guardrail==="presidio"&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(eD.Divider,{orientation:"left",children:"PII Protection"}),(0,l.jsx)("div",{className:"mb-6",children:S&&(0,l.jsx)(eR,{entities:S.supported_entities,actions:S.supported_actions,selectedEntities:v,selectedActions:N,onEntitySelect:e=>{w(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},onActionSelect:(e,t)=>{C(a=>({...a,[e]:t}))},entityCategories:S.pii_entity_categories})})]}),(0,l.jsx)(tk,{guardrailData:d,guardrailSettings:S,isEditing:!0,accessToken:a,onDataChange:G,onUnsavedChanges:T}),(d.litellm_params?.guardrail==="tool_permission"||x)&&(0,l.jsx)(eD.Divider,{orientation:"left",children:"Provider Settings"}),d.litellm_params?.guardrail==="tool_permission"?(0,l.jsx)(eJ,{value:L,onChange:B}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(e_,{selectedProvider:Object.keys(ea).find(e=>ea[e]===d.litellm_params?.guardrail)||null,accessToken:a,providerParams:x,value:d.litellm_params}),x&&(()=>{let e=Object.keys(ea).find(e=>ea[e]===d.litellm_params?.guardrail);if(!e)return null;let t=x[ea[e]?.toLowerCase()];return t&&t.optional_params?(0,l.jsx)(ef,{optionalParams:t.optional_params,parentFieldKey:"optional_params",values:d.litellm_params}):null})()]}),(0,l.jsx)(eD.Divider,{orientation:"left",children:"Advanced Settings"}),(0,l.jsx)(r.Form.Item,{label:"Guardrail Information",name:"guardrail_info",children:(0,l.jsx)(i.Input.TextArea,{rows:5})}),(0,l.jsxs)("div",{className:"flex justify-end gap-2 mt-6",children:[(0,l.jsx)(c.Button,{onClick:()=>{_(!1),T(!1),q()},children:"Cancel"}),(0,l.jsx)(c.Button,{type:"primary",htmlType:"submit",children:"Save Changes"})]})]}):(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)(ez.Text,{className:"font-medium",children:"Guardrail ID"}),(0,l.jsx)("div",{className:"font-mono",children:d.guardrail_id})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(ez.Text,{className:"font-medium",children:"Guardrail Name"}),(0,l.jsx)("div",{children:d.guardrail_name||"Unnamed Guardrail"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(ez.Text,{className:"font-medium",children:"Provider"}),(0,l.jsx)("div",{children:W})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(ez.Text,{className:"font-medium",children:"Mode"}),(0,l.jsx)("div",{children:d.litellm_params?.mode||"-"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(ez.Text,{className:"font-medium",children:"Default On"}),(0,l.jsx)(te.Badge,{color:d.litellm_params?.default_on?"green":"gray",children:d.litellm_params?.default_on?"Yes":"No"})]}),d.litellm_params?.pii_entities_config&&Object.keys(d.litellm_params.pii_entities_config).length>0&&(0,l.jsxs)("div",{children:[(0,l.jsx)(ez.Text,{className:"font-medium",children:"PII Protection"}),(0,l.jsx)("div",{className:"mt-2",children:(0,l.jsxs)(te.Badge,{color:"blue",children:[Object.keys(d.litellm_params.pii_entities_config).length," PII entities configured"]})})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(ez.Text,{className:"font-medium",children:"Created At"}),(0,l.jsx)("div",{children:J(d.created_at)})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(ez.Text,{className:"font-medium",children:"Last Updated"}),(0,l.jsx)("div",{children:J(d.updated_at)})]}),d.litellm_params?.guardrail==="tool_permission"&&(0,l.jsx)(eJ,{value:L,disabled:!0})]})]})})]})]}),(0,l.jsx)(tD,{visible:E,onClose:()=>M(!1),onSuccess:()=>{M(!1),z()},accessToken:a,editData:d?{guardrail_id:d.guardrail_id,guardrail_name:d.guardrail_name,litellm_params:d.litellm_params}:null})]})}],969641);var tK=e.i(573421),tq=e.i(19732),tH=e.i(928685),tJ=e.i(166406),tU=e.i(637235),tW=e.i(755151),tV=e.i(240647);let{Text:tY}=d.Typography,tQ=function({results:e,errors:t}){let[a,r]=(0,m.useState)(new Set),i=e=>{let t=new Set(a);t.has(e)?t.delete(e):t.add(e),r(t)},s=async e=>{try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0;{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.focus(),t.select();let a=document.execCommand("copy");if(document.body.removeChild(t),!a)throw Error("execCommand failed");return!0}}catch(e){return console.error("Copy failed:",e),!1}};return e||t?(0,l.jsxs)("div",{className:"space-y-3 pt-4 border-t border-gray-200",children:[(0,l.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:"Results"}),e&&e.map(e=>{let t=a.has(e.guardrailName);return(0,l.jsx)(eG.Card,{className:"bg-green-50 border-green-200",children:(0,l.jsxs)("div",{className:"space-y-3",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsxs)("div",{className:"flex items-center space-x-2 cursor-pointer flex-1",onClick:()=>i(e.guardrailName),children:[t?(0,l.jsx)(tV.RightOutlined,{className:"text-gray-500 text-xs"}):(0,l.jsx)(tW.DownOutlined,{className:"text-gray-500 text-xs"}),(0,l.jsx)(tA.CheckCircleOutlined,{className:"text-green-600 text-lg"}),(0,l.jsx)("span",{className:"text-sm font-medium text-green-800",children:e.guardrailName})]}),(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsxs)("div",{className:"flex items-center space-x-1 text-xs text-gray-600",children:[(0,l.jsx)(tU.ClockCircleOutlined,{}),(0,l.jsxs)("span",{className:"font-medium",children:[e.latency,"ms"]})]}),!t&&(0,l.jsx)(e6.Button,{size:"xs",variant:"secondary",icon:tJ.CopyOutlined,onClick:async()=>{await s(e.response_text)?u.default.success("Result copied to clipboard"):u.default.fromBackend("Failed to copy result")},children:"Copy"})]})]}),!t&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"bg-white border border-green-200 rounded p-3",children:[(0,l.jsx)("label",{className:"text-xs font-medium text-gray-600 mb-2 block",children:"Output Text"}),(0,l.jsx)("div",{className:"font-mono text-sm text-gray-900 whitespace-pre-wrap break-words",children:e.response_text})]}),(0,l.jsxs)("div",{className:"text-xs text-gray-600",children:[(0,l.jsx)("span",{className:"font-medium",children:"Characters:"})," ",e.response_text.length]})]})]})},e.guardrailName)}),t&&t.map(e=>{let t=a.has(e.guardrailName);return(0,l.jsx)(eG.Card,{className:"bg-red-50 border-red-200",children:(0,l.jsxs)("div",{className:"flex items-start space-x-2",children:[(0,l.jsx)("div",{className:"cursor-pointer mt-0.5",onClick:()=>i(e.guardrailName),children:t?(0,l.jsx)(tV.RightOutlined,{className:"text-gray-500 text-xs"}):(0,l.jsx)(tW.DownOutlined,{className:"text-gray-500 text-xs"})}),(0,l.jsx)("div",{className:"text-red-600 mt-0.5",children:(0,l.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20",children:(0,l.jsx)("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"})})}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between mb-1",children:[(0,l.jsxs)("p",{className:"text-sm font-medium text-red-800 cursor-pointer",onClick:()=>i(e.guardrailName),children:[e.guardrailName," - Error"]}),(0,l.jsxs)("div",{className:"flex items-center space-x-1 text-xs text-gray-600",children:[(0,l.jsx)(tU.ClockCircleOutlined,{}),(0,l.jsxs)("span",{className:"font-medium",children:[e.latency,"ms"]})]})]}),!t&&(0,l.jsx)("p",{className:"text-sm text-red-700 mt-1",children:e.error.message})]})]})},e.guardrailName)})]}):null},{TextArea:tX}=i.Input,{Text:tZ}=d.Typography,t0=function({guardrailNames:e,onSubmit:t,isLoading:a,results:r,errors:i,onClose:s}){let[n,o]=(0,m.useState)(""),d=()=>{n.trim()?t(n):u.default.fromBackend("Please enter text to test")},c=async e=>{try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0;{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.focus(),t.select();let a=document.execCommand("copy");if(document.body.removeChild(t),!a)throw Error("execCommand failed");return!0}}catch(e){return console.error("Copy failed:",e),!1}},p=async()=>{await c(n)?u.default.success("Input copied to clipboard"):u.default.fromBackend("Failed to copy input")};return(0,l.jsxs)("div",{className:"space-y-4 h-full flex flex-col",children:[(0,l.jsx)("div",{className:"flex items-center justify-between pb-3 border-b border-gray-200",children:(0,l.jsx)("div",{className:"flex items-center space-x-3",children:(0,l.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center space-x-2 mb-1",children:[(0,l.jsx)("h2",{className:"text-lg font-semibold text-gray-900",children:"Test Guardrails:"}),(0,l.jsx)("div",{className:"flex flex-wrap gap-2",children:e.map(e=>(0,l.jsx)("div",{className:"inline-flex items-center space-x-1 bg-blue-50 px-3 py-1 rounded-md border border-blue-200",children:(0,l.jsx)("span",{className:"font-mono text-blue-700 font-medium text-sm",children:e})},e))})]}),(0,l.jsxs)("p",{className:"text-sm text-gray-500",children:["Test ",e.length>1?"guardrails":"guardrail"," and compare results"]})]})})}),(0,l.jsxs)("div",{className:"flex-1 overflow-auto space-y-4",children:[(0,l.jsxs)("div",{className:"space-y-3",children:[(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Input Text"}),(0,l.jsx)(eb.Tooltip,{title:"Press Enter to submit. Use Shift+Enter for new line.",children:(0,l.jsx)(eq.InfoCircleOutlined,{className:"text-gray-400 cursor-help"})})]}),n&&(0,l.jsx)(e6.Button,{size:"xs",variant:"secondary",icon:tJ.CopyOutlined,onClick:p,children:"Copy Input"})]}),(0,l.jsx)(tX,{value:n,onChange:e=>o(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||e.ctrlKey||e.metaKey||(e.preventDefault(),d())},placeholder:"Enter text to test with guardrails...",rows:8,className:"font-mono text-sm"}),(0,l.jsxs)("div",{className:"flex justify-between items-center mt-1",children:[(0,l.jsxs)(tZ,{className:"text-xs text-gray-500",children:["Press ",(0,l.jsx)("kbd",{className:"px-1 py-0.5 bg-gray-100 border border-gray-300 rounded text-xs",children:"Enter"})," to submit • ",(0,l.jsx)("kbd",{className:"px-1 py-0.5 bg-gray-100 border border-gray-300 rounded text-xs",children:"Shift+Enter"})," for new line"]}),(0,l.jsxs)(tZ,{className:"text-xs text-gray-500",children:["Characters: ",n.length]})]})]}),(0,l.jsx)("div",{className:"pt-2",children:(0,l.jsx)(e6.Button,{onClick:d,loading:a,disabled:!n.trim(),className:"w-full",children:a?`Testing ${e.length} guardrail${e.length>1?"s":""}...`:`Test ${e.length} guardrail${e.length>1?"s":""}`})})]}),(0,l.jsx)(tQ,{results:r,errors:i})]})]})};e.s(["default",0,({guardrailsList:e,isLoading:t,accessToken:a,onClose:r})=>{let[s,n]=(0,m.useState)(new Set),[o,c]=(0,m.useState)(""),[g,x]=(0,m.useState)([]),[f,y]=(0,m.useState)([]),[j,_]=(0,m.useState)(!1),b=e.filter(e=>e.guardrail_name?.toLowerCase().includes(o.toLowerCase())),v=async e=>{if(0===s.size||!a)return;_(!0),x([]),y([]);let t=[],l=[];await Promise.all(Array.from(s).map(async r=>{let i=Date.now();try{let l=await (0,p.applyGuardrail)(a,r,e,null,null),s=Date.now()-i;t.push({guardrailName:r,response_text:l.response_text,latency:s})}catch(t){let e=Date.now()-i;console.error(`Error testing guardrail ${r}:`,t),l.push({guardrailName:r,error:t,latency:e})}})),x(t),y(l),_(!1),t.length>0&&u.default.success(`${t.length} guardrail${t.length>1?"s":""} applied successfully`),l.length>0&&u.default.fromBackend(`${l.length} guardrail${l.length>1?"s":""} failed`)};return(0,l.jsx)("div",{className:"w-full h-[calc(100vh-200px)]",children:(0,l.jsx)(h.Card,{className:"h-full",styles:{body:{padding:0,height:"100%"}},children:(0,l.jsxs)("div",{className:"flex h-full",children:[(0,l.jsxs)("div",{className:"w-1/4 border-r border-gray-200 flex flex-col overflow-hidden",children:[(0,l.jsx)("div",{className:"p-4 border-b border-gray-200",children:(0,l.jsxs)("div",{className:"mb-3",children:[(0,l.jsx)("h3",{className:"text-lg font-semibold mb-3",children:"Guardrails"}),(0,l.jsx)(i.Input,{prefix:(0,l.jsx)(tH.SearchOutlined,{}),placeholder:"Search guardrails...",value:o,onChange:e=>c(e.target.value)})]})}),(0,l.jsx)("div",{className:"flex-1 overflow-auto",children:t?(0,l.jsx)("div",{className:"flex items-center justify-center h-32",children:(0,l.jsx)(ey.Spin,{})}):0===b.length?(0,l.jsx)("div",{className:"p-4",children:(0,l.jsx)(eK.Empty,{description:o?"No guardrails match your search":"No guardrails available"})}):(0,l.jsx)(tK.List,{dataSource:b,renderItem:e=>(0,l.jsx)(tK.List.Item,{onClick:()=>{var t;let a;e.guardrail_name&&(t=e.guardrail_name,(a=new Set(s)).has(t)?a.delete(t):a.add(t),n(a))},style:{paddingLeft:24,paddingRight:16},className:`cursor-pointer hover:bg-gray-50 transition-colors ${s.has(e.guardrail_name||"")?"bg-blue-50 border-l-4 border-l-blue-500":"border-l-4 border-l-transparent"}`,children:(0,l.jsx)(tK.List.Item.Meta,{title:(0,l.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,l.jsx)(tq.ExperimentOutlined,{className:"text-gray-400"}),(0,l.jsx)("span",{className:"font-medium text-gray-900",children:e.guardrail_name})]}),description:(0,l.jsxs)("div",{className:"text-xs space-y-1 mt-1",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"font-medium",children:"Type: "}),(0,l.jsx)("span",{className:"text-gray-600",children:e.litellm_params.guardrail})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"font-medium",children:"Mode: "}),(0,l.jsx)("span",{className:"text-gray-600",children:e.litellm_params.mode})]})]})})})})}),(0,l.jsx)("div",{className:"p-3 border-t border-gray-200 bg-gray-50",children:(0,l.jsxs)(d.Typography.Text,{className:"text-xs text-gray-600",children:[s.size," of ",b.length," selected"]})})]}),(0,l.jsxs)("div",{className:"w-3/4 flex flex-col bg-white",children:[(0,l.jsx)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:(0,l.jsx)(d.Typography.Title,{level:2,className:"text-xl font-semibold mb-0",children:"Guardrail Testing Playground"})}),(0,l.jsx)("div",{className:"flex-1 overflow-auto p-4",children:0===s.size?(0,l.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,l.jsx)(tq.ExperimentOutlined,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,l.jsx)(d.Typography.Paragraph,{className:"text-lg font-medium text-gray-600 mb-2",children:"Select Guardrails to Test"}),(0,l.jsx)(d.Typography.Paragraph,{className:"text-center text-gray-500 max-w-md",children:"Choose one or more guardrails from the left sidebar to start testing and comparing results."})]}):(0,l.jsx)("div",{className:"h-full",children:(0,l.jsx)(t0,{guardrailNames:Array.from(s),onSubmit:v,results:g.length>0?g:null,errors:f.length>0?f:null,isLoading:j,onClose:()=>n(new Set)})})})]})]})})})}],476993),e.s([],824296),e.s(["CustomCodeModal",0,tD],64352);let t1="../ui/assets/logos/",t2=[{id:"cf_denied_financial",name:"Denied Financial Advice",description:"Detects requests for personalized financial advice, investment recommendations, or financial planning.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Topic Blocker"],eval:{f1:100,precision:100,recall:100,testCases:207,latency:"<0.1ms"}},{id:"cf_denied_insults",name:"Insults & Personal Attacks",description:"Detects insults, name-calling, and personal attacks directed at the chatbot, staff, or other people.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Topic Blocker"],eval:{f1:100,precision:100,recall:100,testCases:299,latency:"<0.1ms"}},{id:"cf_denied_legal",name:"Denied Legal Advice",description:"Detects requests for unauthorized legal advice, case analysis, or legal recommendations.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Topic Blocker"]},{id:"cf_denied_medical",name:"Denied Medical Advice",description:"Detects requests for medical diagnosis, treatment recommendations, or health advice.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Topic Blocker"]},{id:"cf_harmful_violence",name:"Harmful Violence",description:"Detects content related to violence, criminal planning, attacks, and violent threats.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Safety"]},{id:"cf_harmful_self_harm",name:"Harmful Self-Harm",description:"Detects content related to self-harm, suicide, and dangerous self-destructive behavior.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Safety"]},{id:"cf_harmful_child_safety",name:"Harmful Child Safety",description:"Detects content that could endanger child safety or exploit minors.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Safety"]},{id:"cf_harmful_illegal_weapons",name:"Harmful Illegal Weapons",description:"Detects content related to illegal weapons manufacturing, distribution, or acquisition.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Safety"]},{id:"cf_bias_gender",name:"Bias: Gender",description:"Detects gender-based discrimination, stereotypes, and biased language.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Bias"]},{id:"cf_bias_racial",name:"Bias: Racial",description:"Detects racial discrimination, stereotypes, and racially biased content.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Bias"]},{id:"cf_bias_religious",name:"Bias: Religious",description:"Detects religious discrimination, intolerance, and religiously biased content.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Bias"]},{id:"cf_bias_sexual_orientation",name:"Bias: Sexual Orientation",description:"Detects discrimination based on sexual orientation and related biased content.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Bias"]},{id:"cf_prompt_injection_jailbreak",name:"Prompt Injection: Jailbreak",description:"Detects jailbreak attempts designed to bypass AI safety guidelines and restrictions.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Prompt Injection"]},{id:"cf_prompt_injection_data_exfil",name:"Prompt Injection: Data Exfiltration",description:"Detects attempts to extract sensitive data through prompt manipulation.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Prompt Injection"]},{id:"cf_prompt_injection_sql",name:"Prompt Injection: SQL",description:"Detects SQL injection attempts embedded in prompts.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Prompt Injection"]},{id:"cf_prompt_injection_malicious_code",name:"Prompt Injection: Malicious Code",description:"Detects attempts to inject malicious code through prompts.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Prompt Injection"]},{id:"cf_prompt_injection_system_prompt",name:"Prompt Injection: System Prompt",description:"Detects attempts to extract or override system prompts.",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Prompt Injection"]},{id:"cf_toxic_abuse",name:"Toxic & Abusive Language",description:"Detects toxic, abusive, and hateful language across multiple languages (EN, AU, DE, ES, FR).",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Toxicity"]},{id:"cf_patterns",name:"Pattern Matching",description:"Detect and block sensitive data patterns like SSNs, credit card numbers, API keys, and custom regex patterns.",category:"litellm",subcategory:"Patterns",logo:`${t1}litellm_logo.jpg`,tags:["PII","Regex","Data Protection"]},{id:"cf_keywords",name:"Keyword Blocking",description:"Block or mask content containing specific keywords or phrases. Upload custom word lists or add individual terms.",category:"litellm",subcategory:"Keywords",logo:`${t1}litellm_logo.jpg`,tags:["Keywords","Blocklist"]},{id:"block_code_execution",name:"Block Code Execution",description:"Detects markdown fenced code blocks in requests and responses. Block or mask executable code (e.g. Python, JavaScript, Bash) by language with configurable confidence.",category:"litellm",subcategory:"Code Safety",logo:`${t1}litellm_logo.jpg`,tags:["Code","Safety","Prompt Injection"]},{id:"cf_competitor_intent",name:"Competitor Name Blocking",description:"Block or reframe competitor comparison and ranking intent. Detect when users ask to compare or recommend competitors (airline or generic competitor lists).",category:"litellm",subcategory:"Content Category",logo:`${t1}litellm_logo.jpg`,tags:["Content Category","Competitor","Topic Blocker"]},{id:"presidio",name:"Presidio PII",description:"Microsoft Presidio for PII detection and anonymization. Supports 30+ entity types with configurable actions.",category:"partner",logo:`${t1}microsoft_azure.svg`,tags:["PII","Microsoft"],providerKey:"PresidioPII"},{id:"bedrock",name:"Bedrock Guardrail",description:"AWS Bedrock Guardrails for content filtering, topic avoidance, and sensitive information detection.",category:"partner",logo:`${t1}bedrock.svg`,tags:["AWS","Content Safety"],providerKey:"Bedrock"},{id:"lakera",name:"Lakera",description:"AI security platform protecting against prompt injections, data leakage, and harmful content.",category:"partner",logo:`${t1}lakeraai.jpeg`,tags:["Security","Prompt Injection"],providerKey:"Lakera"},{id:"openai_moderation",name:"OpenAI Moderation",description:"OpenAI's content moderation API for detecting harmful content across multiple categories.",category:"partner",logo:`${t1}openai_small.svg`,tags:["Content Moderation","OpenAI"]},{id:"google_model_armor",name:"Google Cloud Model Armor",description:"Google Cloud's model protection service for safe and responsible AI deployments.",category:"partner",logo:`${t1}google.svg`,tags:["Google Cloud","Safety"]},{id:"guardrails_ai",name:"Guardrails AI",description:"Open-source framework for adding structural, type, and quality guarantees to LLM outputs.",category:"partner",logo:`${t1}guardrails_ai.jpeg`,tags:["Open Source","Validation"]},{id:"zscaler",name:"Zscaler AI Guard",description:"Enterprise AI security from Zscaler for monitoring and protecting AI/ML workloads.",category:"partner",logo:`${t1}zscaler.svg`,tags:["Enterprise","Security"]},{id:"panw",name:"PANW Prisma AIRS",description:"Palo Alto Networks Prisma AI Runtime Security for securing AI applications in production.",category:"partner",logo:`${t1}palo_alto_networks.jpeg`,tags:["Enterprise","Security"]},{id:"noma",name:"Noma Security",description:"AI security platform for detecting and preventing AI-specific threats and vulnerabilities.",category:"partner",logo:`${t1}noma_security.png`,tags:["Security","Threat Detection"]},{id:"aporia",name:"Aporia AI",description:"Real-time AI guardrails for hallucination detection, topic control, and policy enforcement.",category:"partner",logo:`${t1}aporia.png`,tags:["Hallucination","Policy"]},{id:"aim",name:"AIM Guardrail",description:"AIM Security guardrails for comprehensive AI threat detection and mitigation.",category:"partner",logo:`${t1}aim_security.jpeg`,tags:["Security","Threat Detection"]},{id:"prompt_security",name:"Prompt Security",description:"Protect against prompt injection attacks, data leakage, and other LLM security threats.",category:"partner",logo:`${t1}prompt_security.png`,tags:["Prompt Injection","Security"]},{id:"lasso",name:"Lasso Guardrail",description:"Content moderation and safety guardrails for responsible AI deployments.",category:"partner",logo:`${t1}lasso.png`,tags:["Content Moderation"]},{id:"pangea",name:"Pangea Guardrail",description:"Pangea's AI guardrails for secure, compliant, and trustworthy AI applications.",category:"partner",logo:`${t1}pangea.png`,tags:["Compliance","Security"]},{id:"enkryptai",name:"EnkryptAI",description:"AI security and governance platform for enterprise AI safety and compliance.",category:"partner",logo:`${t1}enkrypt_ai.avif`,tags:["Enterprise","Governance"]},{id:"javelin",name:"Javelin Guardrails",description:"AI gateway with built-in guardrails for secure and compliant AI operations.",category:"partner",logo:`${t1}javelin.png`,tags:["Gateway","Security"]},{id:"pillar",name:"Pillar Guardrail",description:"AI safety platform for monitoring, testing, and securing AI systems.",category:"partner",logo:`${t1}pillar.jpeg`,tags:["Monitoring","Safety"]},{id:"akto",name:"Akto Guardrail",description:"AI security platform from Akto.io with automatic monitoring and guardrails for AI/ML applications.",category:"partner",logo:`${t1}akto.svg`,tags:["Security","Safety","Monitoring"]},{id:"promptguard",name:"PromptGuard",description:"AI security gateway with prompt injection detection, PII redaction, topic filtering, entity blocklists, and hallucination detection. Self-hostable with drop-in proxy integration.",category:"partner",logo:`${t1}promptguard.svg`,tags:["Security","Prompt Injection","PII"],providerKey:"Promptguard",eval:{f1:94.9,precision:100,recall:90.4,testCases:5384,latency:"~150ms"}},{id:"xecguard",name:"XecGuard",description:"CyCraft XecGuard AI security gateway. Multi-policy scanning (prompt injection, harmful content, PII, system-prompt enforcement) plus RAG context grounding.",category:"partner",logo:`${t1}xecguard.svg`,tags:["Security","Policy","Grounding","RAG"],providerKey:"Xecguard"},{id:"deepkeep",name:"DeepKeep AI Firewall",description:"DeepKeep AI Firewall for comprehensive LLM security — prompt injection detection, PII protection, content moderation, and policy enforcement with configurable guardrail pipelines.",category:"partner",logo:`${t1}deepkeep.svg`,tags:["Security","Prompt Injection","PII","Firewall"],providerKey:"Deepkeep"}];e.s(["ALL_CARDS",0,t2],230312)},826910,e=>{"use strict";var t=e.i(201072);e.s(["CheckCircleFilled",()=>t.default])},487304,168118,e=>{"use strict";var t=e.i(843476),a=e.i(271645),l=e.i(464571),r=e.i(326373),i=e.i(653496),s=e.i(755151),n=e.i(646563),o=e.i(245094),d=e.i(764205),c=e.i(185357),m=e.i(782719),u=e.i(708347),p=e.i(969641),g=e.i(476993),x=e.i(727749),h=e.i(127952),f=e.i(180766);e.i(824296);var y=e.i(64352),j=e.i(311451),_=e.i(928685),b=e.i(266537),v=e.i(230312),w=e.i(826910);let N=({src:e,name:l})=>{let[r,i]=(0,a.useState)(!1);return r||!e?(0,t.jsx)("div",{style:{width:28,height:28,borderRadius:6,backgroundColor:"#e5e7eb",display:"flex",alignItems:"center",justifyContent:"center",fontSize:13,fontWeight:600,color:"#6b7280",flexShrink:0},children:l?.charAt(0)||"?"}):(0,t.jsx)("img",{src:e,alt:"",style:{width:28,height:28,borderRadius:6,objectFit:"contain",flexShrink:0},onError:()=>i(!0)})},C=({card:e,onClick:l})=>{let[r,i]=(0,a.useState)(!1);return(0,t.jsxs)("div",{onClick:l,onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),style:{borderRadius:12,border:r?"1px solid #93c5fd":"1px solid #e5e7eb",backgroundColor:"#ffffff",padding:"20px 20px 16px 20px",cursor:"pointer",transition:"border-color 0.15s, box-shadow 0.15s",display:"flex",flexDirection:"column",minHeight:170,boxShadow:r?"0 1px 6px rgba(59,130,246,0.08)":"none"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:10},children:[(0,t.jsx)(N,{src:e.logo,name:e.name}),(0,t.jsx)("span",{style:{fontSize:14,fontWeight:600,color:"#111827",lineHeight:1.3},children:e.name})]}),(0,t.jsx)("p",{className:"line-clamp-3",style:{fontSize:12,color:"#6b7280",lineHeight:1.6,margin:0,flex:1},children:e.description}),e.eval&&(0,t.jsxs)("div",{style:{marginTop:10,display:"flex",alignItems:"center",gap:4},children:[(0,t.jsx)(w.CheckCircleFilled,{style:{color:"#16a34a",fontSize:12}}),(0,t.jsxs)("span",{style:{fontSize:11,color:"#16a34a",fontWeight:500},children:["F1: ",e.eval.f1,"% · ",e.eval.testCases," test cases"]})]})]})};var S=e.i(447566);let k={cf_denied_financial:{provider:"LitellmContentFilter",categoryName:"denied_financial_advice",guardrailNameSuggestion:"Denied Financial Advice",mode:"pre_call",defaultOn:!1},cf_denied_legal:{provider:"LitellmContentFilter",categoryName:"denied_legal_advice",guardrailNameSuggestion:"Denied Legal Advice",mode:"pre_call",defaultOn:!1},cf_denied_medical:{provider:"LitellmContentFilter",categoryName:"denied_medical_advice",guardrailNameSuggestion:"Denied Medical Advice",mode:"pre_call",defaultOn:!1},cf_denied_insults:{provider:"LitellmContentFilter",categoryName:"denied_insults",guardrailNameSuggestion:"Insults & Personal Attacks",mode:"pre_call",defaultOn:!1},cf_harmful_violence:{provider:"LitellmContentFilter",categoryName:"harmful_violence",guardrailNameSuggestion:"Harmful Violence",mode:"pre_call",defaultOn:!1},cf_harmful_self_harm:{provider:"LitellmContentFilter",categoryName:"harmful_self_harm",guardrailNameSuggestion:"Harmful Self-Harm",mode:"pre_call",defaultOn:!1},cf_harmful_child_safety:{provider:"LitellmContentFilter",categoryName:"harmful_child_safety",guardrailNameSuggestion:"Harmful Child Safety",mode:"pre_call",defaultOn:!1},cf_harmful_illegal_weapons:{provider:"LitellmContentFilter",categoryName:"harmful_illegal_weapons",guardrailNameSuggestion:"Harmful Illegal Weapons",mode:"pre_call",defaultOn:!1},cf_bias_gender:{provider:"LitellmContentFilter",categoryName:"bias_gender",guardrailNameSuggestion:"Bias: Gender",mode:"pre_call",defaultOn:!1},cf_bias_racial:{provider:"LitellmContentFilter",categoryName:"bias_racial",guardrailNameSuggestion:"Bias: Racial",mode:"pre_call",defaultOn:!1},cf_bias_religious:{provider:"LitellmContentFilter",categoryName:"bias_religious",guardrailNameSuggestion:"Bias: Religious",mode:"pre_call",defaultOn:!1},cf_bias_sexual_orientation:{provider:"LitellmContentFilter",categoryName:"bias_sexual_orientation",guardrailNameSuggestion:"Bias: Sexual Orientation",mode:"pre_call",defaultOn:!1},cf_prompt_injection_jailbreak:{provider:"LitellmContentFilter",categoryName:"prompt_injection_jailbreak",guardrailNameSuggestion:"Prompt Injection: Jailbreak",mode:"pre_call",defaultOn:!1},cf_prompt_injection_data_exfil:{provider:"LitellmContentFilter",categoryName:"prompt_injection_data_exfiltration",guardrailNameSuggestion:"Prompt Injection: Data Exfiltration",mode:"pre_call",defaultOn:!1},cf_prompt_injection_sql:{provider:"LitellmContentFilter",categoryName:"prompt_injection_sql",guardrailNameSuggestion:"Prompt Injection: SQL",mode:"pre_call",defaultOn:!1},cf_prompt_injection_malicious_code:{provider:"LitellmContentFilter",categoryName:"prompt_injection_malicious_code",guardrailNameSuggestion:"Prompt Injection: Malicious Code",mode:"pre_call",defaultOn:!1},cf_prompt_injection_system_prompt:{provider:"LitellmContentFilter",categoryName:"prompt_injection_system_prompt",guardrailNameSuggestion:"Prompt Injection: System Prompt",mode:"pre_call",defaultOn:!1},cf_toxic_abuse:{provider:"LitellmContentFilter",categoryName:"harm_toxic_abuse",guardrailNameSuggestion:"Toxic & Abusive Language",mode:"pre_call",defaultOn:!1},cf_patterns:{provider:"LitellmContentFilter",guardrailNameSuggestion:"Pattern Matching",mode:"pre_call",defaultOn:!1},cf_keywords:{provider:"LitellmContentFilter",guardrailNameSuggestion:"Keyword Blocking",mode:"pre_call",defaultOn:!1},block_code_execution:{provider:"BlockCodeExecution",guardrailNameSuggestion:"Block Code Execution",mode:"pre_call",defaultOn:!1},cf_competitor_intent:{provider:"LitellmContentFilter",guardrailNameSuggestion:"Competitor Name Blocking",mode:"pre_call",defaultOn:!1},presidio:{provider:"PresidioPII",guardrailNameSuggestion:"Presidio PII",mode:"pre_call",defaultOn:!1},bedrock:{provider:"Bedrock",guardrailNameSuggestion:"Bedrock Guardrail",mode:"pre_call",defaultOn:!1},lakera:{provider:"Lakera",guardrailNameSuggestion:"Lakera",mode:"pre_call",defaultOn:!1},openai_moderation:{provider:"OpenaiModeration",guardrailNameSuggestion:"OpenAI Moderation",mode:"pre_call",defaultOn:!1},google_model_armor:{provider:"ModelArmor",guardrailNameSuggestion:"Google Cloud Model Armor",mode:"pre_call",defaultOn:!1},guardrails_ai:{provider:"GuardrailsAi",guardrailNameSuggestion:"Guardrails AI",mode:"pre_call",defaultOn:!1},zscaler:{provider:"ZscalerAiGuard",guardrailNameSuggestion:"Zscaler AI Guard",mode:"pre_call",defaultOn:!1},panw:{provider:"PanwPrismaAirs",guardrailNameSuggestion:"PANW Prisma AIRS",mode:"pre_call",defaultOn:!1},noma:{provider:"Noma",guardrailNameSuggestion:"Noma Security",mode:"pre_call",defaultOn:!1},aporia:{provider:"AporiaAi",guardrailNameSuggestion:"Aporia AI",mode:"pre_call",defaultOn:!1},aim:{provider:"Aim",guardrailNameSuggestion:"AIM Guardrail",mode:"pre_call",defaultOn:!1},prompt_security:{provider:"PromptSecurity",guardrailNameSuggestion:"Prompt Security",mode:"pre_call",defaultOn:!1},lasso:{provider:"Lasso",guardrailNameSuggestion:"Lasso Guardrail",mode:"pre_call",defaultOn:!1},pangea:{provider:"Pangea",guardrailNameSuggestion:"Pangea Guardrail",mode:"pre_call",defaultOn:!1},enkryptai:{provider:"Enkryptai",guardrailNameSuggestion:"EnkryptAI",mode:"pre_call",defaultOn:!1},javelin:{provider:"Javelin",guardrailNameSuggestion:"Javelin Guardrails",mode:"pre_call",defaultOn:!1},pillar:{provider:"Pillar",guardrailNameSuggestion:"Pillar Guardrail",mode:"pre_call",defaultOn:!1},akto:{provider:"Akto",guardrailNameSuggestion:"Akto Guardrail",mode:"pre_call",defaultOn:!1},promptguard:{provider:"Promptguard",guardrailNameSuggestion:"PromptGuard",mode:"pre_call",defaultOn:!1},xecguard:{provider:"Xecguard",guardrailNameSuggestion:"XecGuard",mode:"pre_call",defaultOn:!1},deepkeep:{provider:"Deepkeep",guardrailNameSuggestion:"DeepKeep AI Firewall",mode:"pre_call",defaultOn:!1}},I=({card:e,onBack:r,accessToken:i,onGuardrailCreated:s})=>{let[n,o]=(0,a.useState)(!1),[d,m]=(0,a.useState)("overview"),u=[{property:"Provider",value:"litellm"===e.category?"LiteLLM Content Filter":"Partner Guardrail"},...e.subcategory?[{property:"Subcategory",value:e.subcategory}]:[],..."litellm"===e.category?[{property:"Cost",value:"$0 / request"}]:[],..."litellm"===e.category?[{property:"External Dependencies",value:"None"}]:[],..."litellm"===e.category?[{property:"Latency",value:e.eval?.latency||"<1ms"}]:[]],p=e.eval?[{metric:"Precision",value:`${e.eval.precision}%`},{metric:"Recall",value:`${e.eval.recall}%`},{metric:"F1 Score",value:`${e.eval.f1}%`},{metric:"Test Cases",value:String(e.eval.testCases)},{metric:"False Positives",value:"0"},{metric:"False Negatives",value:"0"},{metric:"Latency (p50)",value:e.eval.latency}]:[],g=[{key:"overview",label:"Overview"},...e.eval?[{key:"eval",label:"Eval Results"}]:[]];return(0,t.jsxs)("div",{style:{maxWidth:960,margin:"0 auto"},children:[(0,t.jsxs)("div",{onClick:r,style:{display:"inline-flex",alignItems:"center",gap:6,color:"#5f6368",cursor:"pointer",fontSize:14,marginBottom:24},children:[(0,t.jsx)(S.ArrowLeftOutlined,{style:{fontSize:11}}),(0,t.jsx)("span",{children:e.name})]}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:16,marginBottom:8},children:[(0,t.jsx)("img",{src:e.logo,alt:"",style:{width:40,height:40,borderRadius:8,objectFit:"contain"},onError:e=>{e.target.style.display="none"}}),(0,t.jsx)("h1",{style:{fontSize:28,fontWeight:400,color:"#202124",margin:0,lineHeight:1.2},children:e.name})]}),(0,t.jsx)("p",{style:{fontSize:14,color:"#5f6368",margin:"0 0 20px 0",lineHeight:1.6},children:e.description}),(0,t.jsx)("div",{style:{display:"flex",gap:10,marginBottom:32},children:(0,t.jsx)(l.Button,{onClick:()=>o(!0),style:{borderRadius:20,padding:"4px 20px",height:36,borderColor:"#dadce0",color:"#1a73e8",fontWeight:500,fontSize:14},children:"Create Guardrail"})}),(0,t.jsx)("div",{style:{borderBottom:"1px solid #dadce0",marginBottom:28},children:(0,t.jsx)("div",{style:{display:"flex",gap:0},children:g.map(e=>(0,t.jsx)("div",{onClick:()=>m(e.key),style:{padding:"12px 20px",fontSize:14,color:d===e.key?"#1a73e8":"#5f6368",borderBottom:d===e.key?"3px solid #1a73e8":"3px solid transparent",cursor:"pointer",fontWeight:d===e.key?500:400,marginBottom:-1},children:e.label},e.key))})}),"overview"===d&&(0,t.jsxs)("div",{style:{display:"flex",gap:64},children:[(0,t.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,t.jsx)("h2",{style:{fontSize:18,fontWeight:400,color:"#202124",margin:"0 0 12px 0"},children:"Overview"}),(0,t.jsx)("p",{style:{fontSize:14,color:"#3c4043",lineHeight:1.7,margin:"0 0 32px 0"},children:e.description}),(0,t.jsx)("h2",{style:{fontSize:18,fontWeight:400,color:"#202124",margin:"0 0 4px 0"},children:"Guardrail Details"}),(0,t.jsx)("p",{style:{fontSize:13,color:"#5f6368",margin:"0 0 16px 0"},children:"Details are as follows"}),(0,t.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:14},children:[(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{style:{borderBottom:"1px solid #dadce0"},children:[(0,t.jsx)("th",{style:{textAlign:"left",padding:"12px 0",color:"#5f6368",fontWeight:500,width:200},children:"Property"}),(0,t.jsx)("th",{style:{textAlign:"left",padding:"12px 0",color:"#5f6368",fontWeight:500},children:e.name})]})}),(0,t.jsx)("tbody",{children:u.map((e,a)=>(0,t.jsxs)("tr",{style:{borderBottom:"1px solid #f1f3f4"},children:[(0,t.jsx)("td",{style:{padding:"12px 0",color:"#3c4043"},children:e.property}),(0,t.jsx)("td",{style:{padding:"12px 0",color:"#202124"},children:e.value})]},a))})]})]}),(0,t.jsxs)("div",{style:{width:240,flexShrink:0},children:[(0,t.jsxs)("div",{style:{marginBottom:28},children:[(0,t.jsx)("div",{style:{fontSize:12,color:"#5f6368",marginBottom:4},children:"Guardrail ID"}),(0,t.jsxs)("div",{style:{fontSize:13,color:"#202124",wordBreak:"break-all"},children:["litellm/",e.id]})]}),(0,t.jsxs)("div",{style:{marginBottom:28},children:[(0,t.jsx)("div",{style:{fontSize:12,color:"#5f6368",marginBottom:4},children:"Type"}),(0,t.jsx)("div",{style:{fontSize:13,color:"#202124"},children:"litellm"===e.category?"Content Filter":"Partner"})]}),e.tags.length>0&&(0,t.jsxs)("div",{style:{marginBottom:28},children:[(0,t.jsx)("div",{style:{fontSize:12,color:"#5f6368",marginBottom:8},children:"Tags"}),(0,t.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:e.tags.map(e=>(0,t.jsx)("span",{style:{fontSize:12,padding:"4px 12px",borderRadius:16,border:"1px solid #dadce0",color:"#3c4043",backgroundColor:"#fff"},children:e},e))})]})]})]}),"eval"===d&&(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{style:{fontSize:18,fontWeight:400,color:"#202124",margin:"0 0 16px 0"},children:"Eval Results"}),(0,t.jsxs)("table",{style:{width:"100%",maxWidth:560,borderCollapse:"collapse",fontSize:14},children:[(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{style:{backgroundColor:"#f8f9fa",borderBottom:"1px solid #dadce0"},children:[(0,t.jsx)("th",{style:{textAlign:"left",padding:"12px 16px",color:"#5f6368",fontWeight:500},children:"Metric"}),(0,t.jsx)("th",{style:{textAlign:"left",padding:"12px 16px",color:"#5f6368",fontWeight:500},children:"Value"})]})}),(0,t.jsx)("tbody",{children:p.map((e,a)=>(0,t.jsxs)("tr",{style:{borderBottom:"1px solid #f1f3f4"},children:[(0,t.jsx)("td",{style:{padding:"12px 16px",color:"#3c4043"},children:e.metric}),(0,t.jsx)("td",{style:{padding:"12px 16px",color:"#202124",fontWeight:500},children:e.value})]},a))})]})]}),(0,t.jsx)(c.default,{visible:n,onClose:()=>o(!1),accessToken:i,onSuccess:()=>{o(!1),s()},preset:k[e.id]})]})},A=({accessToken:e,onGuardrailCreated:l})=>{let[r,i]=(0,a.useState)(""),[s,n]=(0,a.useState)(null),[o,d]=(0,a.useState)(!1),c=v.ALL_CARDS.filter(e=>{if(!r)return!0;let t=r.toLowerCase();return e.name.toLowerCase().includes(t)||e.description.toLowerCase().includes(t)||e.tags.some(e=>e.toLowerCase().includes(t))}),m=c.filter(e=>"litellm"===e.category),u=c.filter(e=>"partner"===e.category);return s?(0,t.jsx)(I,{card:s,onBack:()=>n(null),accessToken:e,onGuardrailCreated:l}):(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{style:{marginBottom:24},children:(0,t.jsx)(j.Input,{size:"large",placeholder:"Search guardrails",prefix:(0,t.jsx)(_.SearchOutlined,{style:{color:"#9ca3af"}}),value:r,onChange:e=>i(e.target.value),style:{borderRadius:8}})}),(0,t.jsxs)("div",{style:{marginBottom:40},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:4},children:[(0,t.jsx)("h2",{style:{fontSize:20,fontWeight:600,color:"#111827",margin:0},children:"LiteLLM Content Filter"}),(0,t.jsx)("span",{style:{display:"inline-flex",alignItems:"center",gap:6,fontSize:14,color:"#1a73e8",cursor:"pointer"},onClick:()=>d(!o),children:o?(0,t.jsx)(t.Fragment,{children:"Show less"}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(b.ArrowRightOutlined,{style:{fontSize:12}}),`Show all (${m.length})`]})})]}),(0,t.jsx)("p",{style:{fontSize:13,color:"#6b7280",margin:"4px 0 20px 0"},children:"Built-in guardrails powered by LiteLLM. Zero latency, no external dependencies, no additional cost."}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))",gap:16},children:(o?m:m.slice(0,10)).map(e=>(0,t.jsx)(C,{card:e,onClick:()=>n(e)},e.id))})]}),(0,t.jsxs)("div",{style:{marginBottom:40},children:[(0,t.jsx)("h2",{style:{fontSize:20,fontWeight:600,color:"#111827",margin:"0 0 4px 0"},children:"Partner Guardrails"}),(0,t.jsx)("p",{style:{fontSize:13,color:"#6b7280",margin:"4px 0 20px 0"},children:"Third-party guardrail integrations from leading AI security providers."}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))",gap:16},children:u.map(e=>(0,t.jsx)(C,{card:e,onClick:()=>n(e)},e.id))})]})]})};var O=e.i(988846),T=e.i(837007),P=e.i(409797),L=e.i(54131),B=e.i(995926),F=e.i(678784),$=e.i(634831),E=e.i(438100),M=e.i(302202),R=e.i(328196),G=e.i(879664);e.s(["InfoIcon",()=>G.default],168118);var G=G,z=e.i(212931),D=e.i(808613),K=e.i(199133),q=e.i(663435),H=e.i(954616),J=e.i(912598),U=e.i(135214),W=e.i(243652);let V=async(e,t)=>{let a=(0,d.getProxyBaseUrl)(),l=`${a}/guardrails/register`,r=await fetch(l,{method:"POST",headers:{[(0,d.getGlobalLitellmHeaderName)()]:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=await r.json().catch(()=>({})),t=(0,d.deriveErrorMessage)(e);throw(0,d.handleError)(t),Error(t)}return r.json()},Y=(0,W.createQueryKeys)("guardrails");function Q(e){var t;let a=e.litellm_params??{},l=e.guardrail_info??{},r=a.headers,i=Array.isArray(r)?r.map(e=>({key:(e.key??e.name??"").toString(),value:String(e.value??"")})):"object"==typeof r&&null!==r?Object.entries(r).map(([e,t])=>({key:e,value:String(t??"")})):[],s=a.api_base??a.url??"",n=l.model??a.model??"—",o=a.forward_api_key??!0,d=Array.isArray(a.extra_headers)?a.extra_headers.filter(e=>"string"==typeof e):[];return{id:e.guardrail_id,team:e.team_id??"—",name:e.guardrail_name,endpoint:s,status:"pending_review"===(t=e.status)?"pending":"active"===t||"rejected"===t?t:"active",model:n,forwardKey:o,description:l.description??"",method:a.method??"POST",customHeaders:i,extraHeaders:d,submittedAt:function(e){if(!e)return"—";try{let t=new Date(e);return isNaN(t.getTime())?e:t.toISOString().slice(0,10)}catch{return e}}(e.submitted_at),submittedBy:e.submitted_by_email??e.submitted_by_user_id??"—",mode:a.mode,unreachable_fallback:a.unreachable_fallback,additionalProviderParams:a.additional_provider_specific_params,guardrailType:a.guardrail}}let X={active:{label:"Active",bg:"bg-green-50",text:"text-green-700",dot:"bg-green-500"},pending:{label:"Pending Review",bg:"bg-yellow-50",text:"text-yellow-700",dot:"bg-yellow-500"},rejected:{label:"Rejected",bg:"bg-red-50",text:"text-red-700",dot:"bg-red-500"}},Z={"ML Platform":"bg-purple-100 text-purple-700","Data Science":"bg-blue-100 text-blue-700",Security:"bg-red-100 text-red-700","Customer Success":"bg-orange-100 text-orange-700",Legal:"bg-gray-100 text-gray-700",Finance:"bg-green-100 text-green-700"};function ee({label:e,value:a,color:l}){return(0,t.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg px-4 py-3",children:[(0,t.jsx)("div",{className:`text-2xl font-bold ${l}`,children:a}),(0,t.jsx)("div",{className:"text-xs text-gray-500 mt-0.5",children:e})]})}function et({enabled:e,onToggle:a}){return(0,t.jsx)("button",{type:"button",onClick:a,role:"switch","aria-checked":e,className:`relative inline-flex h-5 w-9 items-center rounded-full transition-colors focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-1 ${e?"bg-blue-500":"bg-gray-200"}`,children:(0,t.jsx)("span",{className:`inline-block h-3.5 w-3.5 transform rounded-full bg-white shadow transition-transform ${e?"translate-x-4":"translate-x-0.5"}`})})}function ea({guardrail:e,isSelected:a,isHeadersExpanded:l,onSelect:r,onToggleForwardKey:i,onToggleHeaders:s,onApprove:n,onReject:o}){let d=X[e.status],c=Z[e.team]??"bg-gray-100 text-gray-700";return(0,t.jsxs)("div",{className:`bg-white border rounded-lg p-4 transition-all ${a?"border-blue-400 ring-1 ring-blue-200":"border-gray-200"}`,children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-1.5 flex-wrap",children:[(0,t.jsxs)("span",{className:`text-xs font-medium px-2 py-0.5 rounded-full ${c}`,children:["Team: ",e.team]}),(0,t.jsxs)("span",{className:`inline-flex items-center gap-1.5 text-xs font-medium px-2 py-0.5 rounded-full ${d.bg} ${d.text}`,children:[(0,t.jsx)("span",{className:`w-1.5 h-1.5 rounded-full ${d.dot}`}),d.label]})]}),(0,t.jsx)("h3",{className:"text-sm font-semibold text-gray-900 mb-1",children:e.name}),(0,t.jsx)("p",{className:"text-xs text-gray-500 mb-2 line-clamp-1",children:e.description}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 mb-2",children:[(0,t.jsx)(M.ServerIcon,{className:"h-3.5 w-3.5 text-gray-400 flex-shrink-0"}),(0,t.jsx)("code",{className:"text-xs text-gray-500 font-mono truncate",children:e.endpoint})]}),(0,t.jsxs)("div",{className:"flex items-center gap-4 text-xs text-gray-500",children:[(0,t.jsxs)("span",{children:["Model: ",(0,t.jsx)("span",{className:"font-medium text-gray-700",children:e.model})]}),(0,t.jsxs)("span",{children:["Submitted:"," ",(0,t.jsx)("span",{className:"font-medium text-gray-700",children:e.submittedAt})]})]})]}),(0,t.jsxs)("div",{className:"flex flex-col items-end gap-2 flex-shrink-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-xs text-gray-500 whitespace-nowrap",children:"Forward API Key"}),(0,t.jsx)(et,{enabled:e.forwardKey,onToggle:i})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,t.jsx)("button",{type:"button",onClick:r,className:"text-xs border border-gray-300 text-gray-600 hover:bg-gray-50 px-3 py-1.5 rounded-md transition-colors font-medium",children:a?"Close":"Review"}),"pending"===e.status&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{type:"button",onClick:n,className:"text-xs bg-green-500 hover:bg-green-600 text-white px-3 py-1.5 rounded-md transition-colors font-medium",children:"Approve"}),(0,t.jsx)("button",{type:"button",onClick:o,className:"text-xs border border-red-300 text-red-600 hover:bg-red-50 px-3 py-1.5 rounded-md transition-colors font-medium",children:"Reject"})]})]})]})]}),(0,t.jsxs)("div",{className:"mt-3 pt-3 border-t border-gray-100",children:[(0,t.jsxs)("button",{type:"button",onClick:s,className:"flex items-center gap-1.5 text-xs text-gray-500 hover:text-gray-700 transition-colors",children:[l?(0,t.jsx)(L.ChevronUpIcon,{className:"h-3.5 w-3.5"}):(0,t.jsx)(P.ChevronDownIcon,{className:"h-3.5 w-3.5"}),"Static headers",e.customHeaders.length>0&&(0,t.jsx)("span",{className:"ml-1 bg-gray-100 text-gray-600 rounded-full px-1.5 py-0.5 text-xs",children:e.customHeaders.length})]}),l&&(0,t.jsx)("div",{className:"mt-2",children:0===e.customHeaders.length?(0,t.jsx)("p",{className:"text-xs text-gray-400 italic",children:"No static headers configured."}):(0,t.jsx)("div",{className:"space-y-1",children:e.customHeaders.map((e,a)=>(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs font-mono",children:[(0,t.jsx)("span",{className:"text-gray-500 bg-gray-50 border border-gray-200 rounded px-2 py-0.5",children:e.key}),(0,t.jsx)("span",{className:"text-gray-400",children:":"}),(0,t.jsx)("span",{className:"text-gray-700 bg-gray-50 border border-gray-200 rounded px-2 py-0.5",children:e.value})]},`${e.key}-${a}`))})})]})]})}function el({label:e,children:a}){return(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-xs font-semibold text-gray-500 mb-1",children:e}),(0,t.jsx)("div",{children:a})]})}function er({guardrail:e,onClose:l,onApprove:r,onReject:i,onToggleForwardKey:s,onUpdateCustomHeaders:n,onUpdateExtraHeaders:o}){let[d,c]=(0,a.useState)(!1),[m,u]=(0,a.useState)(""),[p,g]=(0,a.useState)(""),[x,h]=(0,a.useState)(""),f=X[e.status],y=Z[e.team]??"bg-gray-100 text-gray-700";return(0,t.jsx)("div",{className:"w-96 flex-shrink-0 bg-white overflow-auto",children:(0,t.jsxs)("div",{className:"p-5",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between mb-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,t.jsxs)("span",{className:`text-xs font-medium px-2 py-0.5 rounded-full ${y}`,children:["Team: ",e.team]}),(0,t.jsxs)("span",{className:`inline-flex items-center gap-1.5 text-xs font-medium px-2 py-0.5 rounded-full ${f.bg} ${f.text}`,children:[(0,t.jsx)("span",{className:`w-1.5 h-1.5 rounded-full ${f.dot}`}),f.label]})]}),(0,t.jsx)("h2",{className:"text-base font-semibold text-gray-900",children:e.name}),(0,t.jsxs)("p",{className:"text-xs text-gray-500 mt-0.5",children:["Submitted by ",e.submittedBy," on ",e.submittedAt]})]}),(0,t.jsx)("button",{type:"button",onClick:l,className:"text-gray-400 hover:text-gray-600 transition-colors","aria-label":"Close detail panel",children:(0,t.jsx)(B.XIcon,{className:"h-4 w-4"})})]}),(0,t.jsx)("p",{className:"text-sm text-gray-600 mb-5",children:e.description}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(el,{label:"Endpoint",children:(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsx)("code",{className:"text-xs font-mono text-gray-700 break-all",children:e.endpoint}),(0,t.jsx)("a",{href:e.endpoint,target:"_blank",rel:"noopener noreferrer",className:"text-gray-400 hover:text-blue-500 flex-shrink-0",children:(0,t.jsx)($.ExternalLinkIcon,{className:"h-3.5 w-3.5"})})]})}),(0,t.jsx)(el,{label:"Method",children:(0,t.jsx)("span",{className:"text-xs font-mono font-medium text-gray-700 bg-gray-100 px-2 py-0.5 rounded",children:e.method})}),(0,t.jsxs)("div",{className:"border border-blue-100 bg-blue-50 rounded-lg p-3",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsx)(E.KeyIcon,{className:"h-3.5 w-3.5 text-blue-500"}),(0,t.jsx)("span",{className:"text-xs font-semibold text-blue-800",children:"Forward LiteLLM API Key"})]}),(0,t.jsx)(et,{enabled:e.forwardKey,onToggle:s})]}),(0,t.jsxs)("p",{className:"text-xs text-blue-700 leading-relaxed",children:["When enabled, the caller's LiteLLM API key is forwarded as an"," ",(0,t.jsx)("code",{className:"font-mono bg-blue-100 px-1 rounded",children:"Authorization"})," ","header to your guardrail endpoint. This allows your guardrail to authenticate model calls using the original caller's credentials."]})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5 mb-2",children:[(0,t.jsx)("span",{className:"text-xs font-semibold text-gray-700",children:"Static headers"}),e.customHeaders.length>0&&(0,t.jsx)("span",{className:"bg-gray-100 text-gray-600 rounded-full px-1.5 py-0.5 text-xs",children:e.customHeaders.length})]}),(0,t.jsx)("p",{className:"text-xs text-gray-400 mb-2",children:"Sent with every request to the guardrail."}),0===e.customHeaders.length?(0,t.jsx)("p",{className:"text-xs text-gray-400 italic mb-2",children:"No static headers configured."}):(0,t.jsx)("ul",{className:"list-none space-y-1 mb-2",children:e.customHeaders.map((a,l)=>(0,t.jsxs)("li",{className:"flex items-center justify-between gap-2 text-xs font-mono bg-gray-50 border border-gray-200 rounded px-2 py-1.5",children:[(0,t.jsxs)("span",{className:"text-gray-700 truncate",children:[a.key,": ",a.value]}),(0,t.jsx)("button",{type:"button",onClick:()=>n(e.customHeaders.filter((e,t)=>t!==l)),className:"text-gray-400 hover:text-red-600 flex-shrink-0","aria-label":`Remove ${a.key}`,children:(0,t.jsx)(B.XIcon,{className:"h-3.5 w-3.5"})})]},`${a.key}-${l}`))}),(0,t.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-end",children:[(0,t.jsx)("input",{type:"text",value:p,onChange:e=>g(e.target.value),placeholder:"Header name (e.g. X-API-Key)",className:"flex-1 min-w-0 text-xs font-mono border border-gray-200 rounded px-2 py-1.5 text-gray-700 placeholder-gray-400 focus:outline-none focus:ring-1 focus:ring-blue-500",onKeyDown:t=>{if("Enter"===t.key){t.preventDefault();let a=p.trim(),l=x.trim();a&&!e.customHeaders.some(e=>e.key.toLowerCase()===a.toLowerCase())&&(n([...e.customHeaders,{key:a,value:l}]),g(""),h(""))}}}),(0,t.jsx)("input",{type:"text",value:x,onChange:e=>h(e.target.value),placeholder:"Value",className:"flex-1 min-w-0 text-xs font-mono border border-gray-200 rounded px-2 py-1.5 text-gray-700 placeholder-gray-400 focus:outline-none focus:ring-1 focus:ring-blue-500",onKeyDown:t=>{if("Enter"===t.key){t.preventDefault();let a=p.trim(),l=x.trim();a&&!e.customHeaders.some(e=>e.key.toLowerCase()===a.toLowerCase())&&(n([...e.customHeaders,{key:a,value:l}]),g(""),h(""))}}}),(0,t.jsx)("button",{type:"button",onClick:()=>{let t=p.trim(),a=x.trim();t&&!e.customHeaders.some(e=>e.key.toLowerCase()===t.toLowerCase())&&(n([...e.customHeaders,{key:t,value:a}]),g(""),h(""))},className:"text-xs font-medium text-blue-600 hover:text-blue-700 border border-blue-200 bg-blue-50 hover:bg-blue-100 px-2 py-1.5 rounded transition-colors flex-shrink-0",children:"Add"})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5 mb-2",children:[(0,t.jsx)("span",{className:"text-xs font-semibold text-gray-700",children:"Forward client headers"}),e.extraHeaders.length>0&&(0,t.jsx)("span",{className:"bg-gray-100 text-gray-600 rounded-full px-1.5 py-0.5 text-xs",children:e.extraHeaders.length})]}),(0,t.jsx)("p",{className:"text-xs text-gray-400 mb-2",children:"Allowed header names to forward from the client request to the guardrail (e.g. x-request-id)."}),0===e.extraHeaders.length?(0,t.jsx)("p",{className:"text-xs text-gray-400 italic mb-2",children:"No forward client headers configured."}):(0,t.jsx)("ul",{className:"list-none space-y-1 mb-2",children:e.extraHeaders.map((a,l)=>(0,t.jsxs)("li",{className:"flex items-center justify-between gap-2 text-xs font-mono bg-gray-50 border border-gray-200 rounded px-2 py-1.5",children:[(0,t.jsx)("span",{className:"text-gray-700 truncate",children:a}),(0,t.jsx)("button",{type:"button",onClick:()=>o(e.extraHeaders.filter((e,t)=>t!==l)),className:"text-gray-400 hover:text-red-600 flex-shrink-0","aria-label":`Remove ${a}`,children:(0,t.jsx)(B.XIcon,{className:"h-3.5 w-3.5"})})]},`${a}-${l}`))}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("input",{type:"text",value:m,onChange:e=>u(e.target.value),placeholder:"e.g. x-request-id",className:"flex-1 min-w-0 text-xs font-mono border border-gray-200 rounded px-2 py-1.5 text-gray-700 placeholder-gray-400 focus:outline-none focus:ring-1 focus:ring-blue-500",onKeyDown:t=>{if("Enter"===t.key){t.preventDefault();let a=m.trim().toLowerCase();a&&!e.extraHeaders.map(e=>e.toLowerCase()).includes(a)&&(o([...e.extraHeaders,a]),u(""))}}}),(0,t.jsx)("button",{type:"button",onClick:()=>{let t=m.trim().toLowerCase();t&&!e.extraHeaders.map(e=>e.toLowerCase()).includes(t)&&(o([...e.extraHeaders,t]),u(""))},className:"text-xs font-medium text-blue-600 hover:text-blue-700 border border-blue-200 bg-blue-50 hover:bg-blue-100 px-2 py-1.5 rounded transition-colors",children:"Add"})]})]}),(0,t.jsxs)("div",{className:"border border-gray-200 rounded-lg overflow-hidden",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>c(!d),className:"w-full flex items-center justify-between px-3 py-2 text-left text-xs font-semibold text-gray-700 bg-gray-50 hover:bg-gray-100 transition-colors",children:[(0,t.jsx)("span",{children:"Equivalent config"}),d?(0,t.jsx)(L.ChevronUpIcon,{className:"h-3.5 w-3.5 text-gray-500"}):(0,t.jsx)(P.ChevronDownIcon,{className:"h-3.5 w-3.5 text-gray-500"})]}),d&&(0,t.jsx)("pre",{className:"p-3 text-xs font-mono text-gray-700 bg-white border-t border-gray-200 overflow-x-auto whitespace-pre-wrap break-all",children:function(e){let t=["litellm_settings:"," guardrails:",` - guardrail_name: "${e.name.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`," litellm_params:",` guardrail: ${e.guardrailType??"generic_guardrail_api"}`,` mode: ${e.mode??"pre_call"} # or post_call, during_call`,` api_base: ${e.endpoint||"https://your-guardrail-api.com"}`," api_key: os.environ/YOUR_GUARDRAIL_API_KEY # optional",` unreachable_fallback: ${e.unreachable_fallback??"fail_closed"} # default: fail_closed. Set to fail_open to proceed if the guardrail endpoint is unreachable.`,` forward_api_key: ${e.forwardKey}`];if(e.model&&"—"!==e.model&&t.push(` model: "${e.model}" # LLM model name sent to the guardrail for context`),e.customHeaders.length>0)for(let a of(t.push(" headers: # static headers (sent with every request)"),e.customHeaders))t.push(` ${a.key}: "${String(a.value).replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`);if(e.extraHeaders.length>0)for(let a of(t.push(" extra_headers: # forward these client request headers to the guardrail"),e.extraHeaders))t.push(` - ${a}`);if(e.additionalProviderParams&&Object.keys(e.additionalProviderParams).length>0)for(let[a,l]of(t.push(" additional_provider_specific_params:"),Object.entries(e.additionalProviderParams))){let e="string"==typeof l?`"${l}"`:String(l);t.push(` ${a}: ${e}`)}return t.join("\n")}(e)})]}),(0,t.jsxs)("div",{className:"flex items-start gap-2 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,t.jsx)(G.default,{className:"h-3.5 w-3.5 text-gray-400 flex-shrink-0 mt-0.5"}),(0,t.jsxs)("p",{className:"text-xs text-gray-500 leading-relaxed",children:["This guardrail runs on a separate instance. It receives the user request and forwards the result to the next step in the pipeline. See"," ",(0,t.jsx)("a",{href:"https://docs.litellm.ai/docs/adding_provider/generic_guardrail_api",target:"_blank",rel:"noopener noreferrer",className:"text-blue-500 hover:underline",children:"LiteLLM Generic Guardrail API docs"})," ","for configuration details."]})]})]}),(0,t.jsxs)("div",{className:"mt-5 pt-4 border-t border-gray-100 space-y-2",children:[(0,t.jsxs)("button",{type:"button",className:"w-full flex items-center justify-center gap-2 border border-gray-300 text-gray-700 hover:bg-gray-50 text-sm font-medium py-2 rounded-md transition-colors",children:[(0,t.jsx)($.ExternalLinkIcon,{className:"h-4 w-4"}),"Test Endpoint"]}),"pending"===e.status&&(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsxs)("button",{type:"button",onClick:r,className:"flex-1 flex items-center justify-center gap-1.5 bg-green-500 hover:bg-green-600 text-white text-sm font-medium py-2 rounded-md transition-colors",children:[(0,t.jsx)(F.CheckIcon,{className:"h-4 w-4"}),"Approve"]}),(0,t.jsxs)("button",{type:"button",onClick:i,className:"flex-1 flex items-center justify-center gap-1.5 border border-red-300 text-red-600 hover:bg-red-50 text-sm font-medium py-2 rounded-md transition-colors",children:[(0,t.jsx)(B.XIcon,{className:"h-4 w-4"}),"Reject"]})]})]})]})})}function ei({action:e,guardrailName:a,onConfirm:l,onCancel:r}){let i="approve"===e;return(0,t.jsx)("div",{className:"fixed inset-0 bg-black/30 flex items-center justify-center z-50",children:(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-xl p-6 max-w-sm w-full mx-4",children:[(0,t.jsx)("div",{className:`w-10 h-10 rounded-full flex items-center justify-center mb-4 ${i?"bg-green-100":"bg-red-100"}`,children:i?(0,t.jsx)(F.CheckIcon,{className:"h-5 w-5 text-green-600"}):(0,t.jsx)(R.AlertCircleIcon,{className:"h-5 w-5 text-red-600"})}),(0,t.jsx)("h3",{className:"text-base font-semibold text-gray-900 mb-1",children:i?"Approve Guardrail":"Reject Guardrail"}),(0,t.jsxs)("p",{className:"text-sm text-gray-500 mb-5",children:["Are you sure you want to ",e," ",(0,t.jsxs)("span",{className:"font-medium text-gray-700",children:['"',a,'"']}),"?"," ",i?"This will make it active and available for use.":"This will mark it as rejected and notify the team."]}),(0,t.jsxs)("div",{className:"flex gap-3",children:[(0,t.jsx)("button",{type:"button",onClick:r,className:"flex-1 border border-gray-300 text-gray-700 hover:bg-gray-50 text-sm font-medium py-2 rounded-md transition-colors",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:l,className:`flex-1 text-white text-sm font-medium py-2 rounded-md transition-colors ${i?"bg-green-500 hover:bg-green-600":"bg-red-500 hover:bg-red-600"}`,children:i?"Approve":"Reject"})]})]})})}function es({accessToken:e}){let[l,r]=(0,a.useState)([]),[i,s]=(0,a.useState)({total:0,pending_review:0,active:0,rejected:0}),[n,o]=(0,a.useState)(""),[c,m]=(0,a.useState)("all"),[u,p]=(0,a.useState)(null),[g,h]=(0,a.useState)(new Set),[f,y]=(0,a.useState)(null),[_,b]=(0,a.useState)(!0),[v,w]=(0,a.useState)(null),[N,C]=(0,a.useState)(""),[S,k]=(0,a.useState)(!1),[I]=D.Form.useForm(),A=(()=>{let{accessToken:e}=(0,U.default)(),t=(0,J.useQueryClient)();return(0,H.useMutation)({mutationFn:async t=>{if(!e)throw Error("Access token is required");return V(e,t)},onSuccess:()=>{t.invalidateQueries({queryKey:Y.all})}})})();(0,a.useEffect)(()=>{let e=setTimeout(()=>C(n),300);return()=>clearTimeout(e)},[n]);let P=(0,a.useCallback)(async()=>{if(!e)return void b(!1);b(!0),w(null);try{let t="all"===c?void 0:"pending"===c?"pending_review":c,a=await (0,d.listGuardrailSubmissions)(e,{status:t,search:N.trim()||void 0});r(a.submissions.map(Q)),s(a.summary)}catch(e){w(e instanceof Error?e.message:"Failed to load submissions"),r([])}finally{b(!1)}},[e,c,N]);(0,a.useEffect)(()=>{P()},[P]);let L=l.find(e=>e.id===u)??null,B=i.total,F=i.pending_review,$=i.active,E=i.rejected;async function M(t){if(!e)return;let a=l.find(e=>e.id===t);if(!a)return;let i=!a.forwardKey;try{await (0,d.updateGuardrailCall)(e,t,{litellm_params:{forward_api_key:i}}),r(e=>e.map(e=>e.id===t?{...e,forwardKey:i}:e)),x.default.success(i?"Forward API key enabled":"Forward API key disabled")}catch{x.default.fromBackend("Failed to update forward API key")}}async function R(t,a){if(!e)return;let l={};for(let{key:e,value:t}of a)e.trim()&&(l[e.trim()]=t);try{await (0,d.updateGuardrailCall)(e,t,{litellm_params:{headers:l}}),r(e=>e.map(e=>e.id===t?{...e,customHeaders:a.filter(e=>e.key.trim())}:e)),x.default.success("Static headers updated")}catch{x.default.fromBackend("Failed to update static headers")}}async function G(t,a){if(e)try{await (0,d.updateGuardrailCall)(e,t,{litellm_params:{extra_headers:a}}),r(e=>e.map(e=>e.id===t?{...e,extraHeaders:a}:e)),x.default.success("Forward client headers updated")}catch{x.default.fromBackend("Failed to update forward client headers")}}async function W(t){if(e)try{await (0,d.approveGuardrailSubmission)(e,t),y(null),u===t&&p(null),await P(),x.default.success("Guardrail approved")}catch{x.default.fromBackend("Failed to approve guardrail")}}async function X(t){if(e)try{await (0,d.rejectGuardrailSubmission)(e,t),y(null),u===t&&p(null),await P(),x.default.success("Guardrail rejected")}catch{x.default.fromBackend("Failed to reject guardrail")}}return(0,t.jsxs)("div",{className:"flex h-full",children:[(0,t.jsxs)("div",{className:`flex-1 min-w-0 p-6 overflow-auto ${L?"border-r border-gray-200":""}`,children:[(0,t.jsxs)("div",{className:"grid grid-cols-4 gap-4 mb-6",children:[(0,t.jsx)(ee,{label:"Total Submitted",value:B,color:"text-gray-900"}),(0,t.jsx)(ee,{label:"Pending Review",value:F,color:"text-yellow-600"}),(0,t.jsx)(ee,{label:"Active",value:$,color:"text-green-600"}),(0,t.jsx)(ee,{label:"Rejected",value:E,color:"text-red-600"})]}),(0,t.jsxs)("div",{className:"flex items-center gap-3 mb-5",children:[(0,t.jsxs)("div",{className:"relative flex-1 max-w-xs",children:[(0,t.jsx)(O.SearchIcon,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400"}),(0,t.jsx)("input",{type:"text",placeholder:"Search guardrails...",value:n,onChange:e=>o(e.target.value),className:"w-full pl-9 pr-4 py-2 border border-gray-200 rounded-md text-sm text-gray-700 placeholder-gray-400 focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-blue-500"})]}),(0,t.jsxs)("select",{value:c,onChange:e=>m(e.target.value),className:"border border-gray-200 rounded-md px-3 py-2 text-sm text-gray-700 focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-blue-500 bg-white",children:[(0,t.jsx)("option",{value:"all",children:"All Status"}),(0,t.jsx)("option",{value:"pending",children:"Pending Review"}),(0,t.jsx)("option",{value:"active",children:"Active"}),(0,t.jsx)("option",{value:"rejected",children:"Rejected"})]}),(0,t.jsxs)("button",{type:"button",onClick:()=>k(!0),className:"ml-auto flex items-center gap-2 bg-blue-500 hover:bg-blue-600 text-white text-sm font-medium px-4 py-2 rounded-md transition-colors",children:[(0,t.jsx)(T.PlusIcon,{className:"h-4 w-4"}),"Add Guardrail"]})]}),(0,t.jsxs)("div",{className:"space-y-3",children:[_&&(0,t.jsx)("div",{className:"text-center py-12 text-gray-500 text-sm",children:"Loading submissions…"}),v&&(0,t.jsx)("div",{className:"text-center py-12 text-red-600 text-sm",children:v}),!_&&!v&&0===l.length&&(0,t.jsx)("div",{className:"text-center py-12 text-gray-400 text-sm",children:"No guardrails match your filters."}),!_&&!v&&l.map(e=>(0,t.jsx)(ea,{guardrail:e,isSelected:u===e.id,isHeadersExpanded:g.has(e.id),onSelect:()=>p(u===e.id?null:e.id),onToggleForwardKey:()=>M(e.id),onToggleHeaders:()=>{var t;return t=e.id,void h(e=>{let a=new Set(e);return a.has(t)?a.delete(t):a.add(t),a})},onApprove:()=>y({id:e.id,action:"approve"}),onReject:()=>y({id:e.id,action:"reject"})},e.id))]})]}),L&&(0,t.jsx)(er,{guardrail:L,onClose:()=>p(null),onApprove:()=>y({id:L.id,action:"approve"}),onReject:()=>y({id:L.id,action:"reject"}),onToggleForwardKey:()=>M(L.id),onUpdateCustomHeaders:e=>R(L.id,e),onUpdateExtraHeaders:e=>G(L.id,e)}),f&&(0,t.jsx)(ei,{action:f.action,guardrailName:l.find(e=>e.id===f.id)?.name??"",onConfirm:()=>"approve"===f.action?W(f.id):X(f.id),onCancel:()=>y(null)}),(0,t.jsxs)(z.Modal,{title:"Submit Guardrail for Review",open:S,onCancel:()=>{k(!1),I.resetFields()},onOk:()=>I.submit(),okText:"Submit for Review",children:[(0,t.jsx)("div",{className:"rounded-md bg-blue-50 border border-blue-200 px-4 py-3 text-sm text-blue-800 mb-4",children:"Your guardrail will be sent for admin review before it becomes active."}),(0,t.jsxs)(D.Form,{form:I,layout:"vertical",initialValues:{mode:"pre_call"},onFinish:async e=>{let t={...e.extra_litellm_params?JSON.parse(e.extra_litellm_params):{},guardrail:"generic_guardrail_api",mode:e.mode,api_base:e.api_base};try{await A.mutateAsync({team_id:e.team_id,guardrail_name:e.guardrail_name,litellm_params:t,guardrail_info:e.guardrail_info?JSON.parse(e.guardrail_info):void 0}),x.default.success("Guardrail submitted for review"),k(!1),I.resetFields(),P()}catch{}},children:[(0,t.jsx)(D.Form.Item,{label:"Team",name:"team_id",rules:[{required:!0,message:"Select a team"}],children:(0,t.jsx)(q.default,{})}),(0,t.jsx)(D.Form.Item,{label:"Guardrail Name",name:"guardrail_name",rules:[{required:!0,message:"Enter a guardrail name"}],children:(0,t.jsx)(j.Input,{placeholder:"e.g. pii-detection"})}),(0,t.jsx)(D.Form.Item,{label:"Mode",name:"mode",rules:[{required:!0,message:"Select a mode"}],children:(0,t.jsxs)(K.Select,{children:[(0,t.jsx)(K.Select.Option,{value:"pre_call",children:"Pre Call"}),(0,t.jsx)(K.Select.Option,{value:"post_call",children:"Post Call"}),(0,t.jsx)(K.Select.Option,{value:"during_call",children:"During Call"})]})}),(0,t.jsx)(D.Form.Item,{label:"API Base URL",name:"api_base",rules:[{required:!0,message:"Enter the API base URL"},{type:"url",message:"Must be a valid URL"}],children:(0,t.jsx)(j.Input,{placeholder:"https://your-guardrail-api.com/v1/check",className:"font-mono"})}),(0,t.jsx)(D.Form.Item,{label:"Additional litellm_params (optional)",name:"extra_litellm_params",tooltip:"JSON object merged into litellm_params. e.g. forward_api_key, headers, model, unreachable_fallback",rules:[{validator:(e,t)=>{if(!t)return Promise.resolve();try{let e=JSON.parse(t);if("object"!=typeof e||Array.isArray(e))return Promise.reject("Must be a JSON object");return Promise.resolve()}catch{return Promise.reject("Invalid JSON")}}}],children:(0,t.jsx)(j.Input.TextArea,{rows:3,className:"font-mono text-xs",placeholder:'{"forward_api_key": true, "headers": {"X-Custom": "value"}}'})}),(0,t.jsx)(D.Form.Item,{label:"Guardrail Info (optional)",name:"guardrail_info",rules:[{validator:(e,t)=>{if(!t)return Promise.resolve();try{return JSON.parse(t),Promise.resolve()}catch{return Promise.reject("Invalid JSON")}}}],children:(0,t.jsx)(j.Input.TextArea,{rows:3,className:"font-mono text-xs",placeholder:'{"description": "Detects PII in requests"}'})})]})]})]})}e.s(["default",0,({accessToken:e,userRole:j})=>{let[_,b]=(0,a.useState)([]),[v,w]=(0,a.useState)(!1),[N,C]=(0,a.useState)(!1),[S,k]=(0,a.useState)(!1),[I,O]=(0,a.useState)(!1),[T,P]=(0,a.useState)(null),[L,B]=(0,a.useState)(!1),[F,$]=(0,a.useState)(null),E=!!j&&(0,u.isAdminRole)(j),M=async()=>{if(e){k(!0);try{let t=await (0,d.getGuardrailsList)(e);console.log(`guardrails: ${JSON.stringify(t)}`),b(t.guardrails)}catch(e){console.error("Error fetching guardrails:",e)}finally{k(!1)}}};(0,a.useEffect)(()=>{M()},[e]);let R=()=>{M()},G=async()=>{if(T&&e){O(!0);try{await (0,d.deleteGuardrailCall)(e,T.guardrail_id),x.default.success(`Guardrail "${T.guardrail_name}" deleted successfully`),await M()}catch(e){console.error("Error deleting guardrail:",e),x.default.fromBackend("Failed to delete guardrail")}finally{O(!1),B(!1),P(null)}}},z=T&&T.litellm_params?(0,f.getGuardrailLogoAndName)(T.litellm_params.guardrail).displayName:void 0;return(0,t.jsx)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:(0,t.jsx)(i.Tabs,{defaultActiveKey:"submitted",items:[...E?[{key:"garden",label:"Guardrail Garden",children:(0,t.jsx)(A,{accessToken:e,onGuardrailCreated:R})},{key:"guardrails",label:"Guardrails",children:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,t.jsx)(r.Dropdown,{menu:{items:[{key:"provider",icon:(0,t.jsx)(n.PlusOutlined,{}),label:"Add Provider Guardrail",onClick:()=>{F&&$(null),w(!0)}},{key:"custom_code",icon:(0,t.jsx)(o.CodeOutlined,{}),label:"Create Custom Code Guardrail",onClick:()=>{F&&$(null),C(!0)}}]},trigger:["click"],disabled:!e,children:(0,t.jsxs)(l.Button,{disabled:!e,children:["+ Add New Guardrail ",(0,t.jsx)(s.DownOutlined,{className:"ml-2"})]})})}),F?(0,t.jsx)(p.default,{guardrailId:F,onClose:()=>$(null),accessToken:e,isAdmin:E}):(0,t.jsx)(m.default,{guardrailsList:_,isLoading:S,onDeleteClick:(e,t)=>{P(_.find(t=>t.guardrail_id===e)||null),B(!0)},accessToken:e,onGuardrailUpdated:M,isAdmin:E,onGuardrailClick:e=>$(e)}),(0,t.jsx)(c.default,{visible:v,onClose:()=>{w(!1)},accessToken:e,onSuccess:R}),(0,t.jsx)(y.CustomCodeModal,{visible:N,onClose:()=>{C(!1)},accessToken:e,onSuccess:R}),(0,t.jsx)(h.default,{isOpen:L,title:"Delete Guardrail",message:`Are you sure you want to delete guardrail: ${T?.guardrail_name}? This action cannot be undone.`,resourceInformationTitle:"Guardrail Information",resourceInformation:[{label:"Name",value:T?.guardrail_name},{label:"ID",value:T?.guardrail_id,code:!0},{label:"Provider",value:z},{label:"Mode",value:T?.litellm_params.mode},{label:"Default On",value:T?.litellm_params.default_on?"Yes":"No"}],onCancel:()=>{B(!1),P(null)},onOk:G,confirmLoading:I})]})},{key:"playground",label:"Test Playground",disabled:!e,children:(0,t.jsx)(g.default,{guardrailsList:_,isLoading:S,accessToken:e,onClose:()=>{}})}]:[],{key:"submitted",label:"Submitted Guardrails",children:(0,t.jsx)(es,{accessToken:e})}]})})}],487304)}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/0.d2a_5_6-5pn.js b/litellm/proxy/_experimental/out/_next/static/chunks/0.d2a_5_6-5pn.js deleted file mode 100644 index 9086fa0c010..00000000000 --- a/litellm/proxy/_experimental/out/_next/static/chunks/0.d2a_5_6-5pn.js +++ /dev/null @@ -1,2 +0,0 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,220508,e=>{"use strict";var t=e.i(271645);let r=t.forwardRef(function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"}))});e.s(["CheckCircleIcon",0,r],220508)},503269,214520,601893,694421,140721,942803,35889,722678,e=>{"use strict";var t=e.i(271645),r=e.i(914189);e.s(["useControllable",0,function(e,n,i){let[o,s]=(0,t.useState)(i),a=void 0!==e,l=(0,t.useRef)(a),u=(0,t.useRef)(!1),c=(0,t.useRef)(!1);return!a||l.current||u.current?a||!l.current||c.current||(c.current=!0,l.current=a,console.error("A component is changing from controlled to uncontrolled. This may be caused by the value changing from a defined value to undefined, which should not happen.")):(u.current=!0,l.current=a,console.error("A component is changing from uncontrolled to controlled. This may be caused by the value changing from undefined to a defined value, which should not happen.")),[a?e:o,(0,r.useEvent)(e=>(a||s(e),null==n?void 0:n(e)))]}],503269),e.s(["useDefaultValue",0,function(e){let[r]=(0,t.useState)(e);return r}],214520);let n=(0,t.createContext)(void 0);function i(){return(0,t.useContext)(n)}e.s(["useDisabled",0,i],601893);var o=e.i(174080),s=e.i(746725);function a(e={},t=null,r=[]){for(let[n,i]of Object.entries(e))!function e(t,r,n){if(Array.isArray(n))for(let[i,o]of n.entries())e(t,l(r,i.toString()),o);else n instanceof Date?t.push([r,n.toISOString()]):"boolean"==typeof n?t.push([r,n?"1":"0"]):"string"==typeof n?t.push([r,n]):"number"==typeof n?t.push([r,`${n}`]):null==n?t.push([r,""]):a(n,r,t)}(r,l(t,n),i);return r}function l(e,t){return e?e+"["+t+"]":t}e.s(["attemptSubmit",0,function(e){var t,r;let n=null!=(t=null==e?void 0:e.form)?t:e.closest("form");if(n){for(let t of n.elements)if(t!==e&&("INPUT"===t.tagName&&"submit"===t.type||"BUTTON"===t.tagName&&"submit"===t.type||"INPUT"===t.nodeName&&"image"===t.type))return void t.click();null==(r=n.requestSubmit)||r.call(n)}},"objectToFormEntries",0,a],694421);var u=e.i(700020),c=e.i(2788);let d=(0,t.createContext)(null);function f({children:e}){let r=(0,t.useContext)(d);if(!r)return t.default.createElement(t.default.Fragment,null,e);let{target:n}=r;return n?(0,o.createPortal)(t.default.createElement(t.default.Fragment,null,e),n):null}function p({setForm:e,formId:r}){return(0,t.useEffect)(()=>{if(r){let t=document.getElementById(r);t&&e(t)}},[e,r]),r?null:t.default.createElement(c.Hidden,{features:c.HiddenFeatures.Hidden,as:"input",type:"hidden",hidden:!0,readOnly:!0,ref:t=>{if(!t)return;let r=t.closest("form");r&&e(r)}})}e.s(["FormFields",0,function({data:e,form:r,disabled:n,onReset:i,overrides:o}){let[l,d]=(0,t.useState)(null),h=(0,s.useDisposables)();return(0,t.useEffect)(()=>{if(i&&l)return h.addEventListener(l,"reset",i)},[l,r,i]),t.default.createElement(f,null,t.default.createElement(p,{setForm:d,formId:r}),a(e).map(([e,i])=>t.default.createElement(c.Hidden,{features:c.HiddenFeatures.Hidden,...(0,u.compact)({key:e,as:"input",type:"hidden",hidden:!0,readOnly:!0,form:r,disabled:n,name:e,value:i,...o})})))}],140721);let h=(0,t.createContext)(void 0);function m(){return(0,t.useContext)(h)}e.s(["useProvidedId",0,m],942803);var g=e.i(835696),v=e.i(294316);let b=(0,t.createContext)(null);b.displayName="DescriptionContext";let y=Object.assign((0,u.forwardRefWithAs)(function(e,r){let n=(0,t.useId)(),o=i(),{id:s=`headlessui-description-${n}`,...a}=e,l=function e(){let r=(0,t.useContext)(b);if(null===r){let t=Error("You used a component, but it is not inside a relevant parent.");throw Error.captureStackTrace&&Error.captureStackTrace(t,e),t}return r}(),c=(0,v.useSyncRefs)(r);(0,g.useIsoMorphicEffect)(()=>l.register(s),[s,l.register]);let d=o||!1,f=(0,t.useMemo)(()=>({...l.slot,disabled:d}),[l.slot,d]),p={ref:c,...l.props,id:s};return(0,u.useRender)()({ourProps:p,theirProps:a,slot:f,defaultTag:"p",name:l.name||"Description"})}),{});e.s(["Description",0,y,"useDescribedBy",0,function(){var e,r;return null!=(r=null==(e=(0,t.useContext)(b))?void 0:e.value)?r:void 0},"useDescriptions",0,function(){let[e,n]=(0,t.useState)([]);return[e.length>0?e.join(" "):void 0,(0,t.useMemo)(()=>function(e){let i=(0,r.useEvent)(e=>(n(t=>[...t,e]),()=>n(t=>{let r=t.slice(),n=r.indexOf(e);return -1!==n&&r.splice(n,1),r}))),o=(0,t.useMemo)(()=>({register:i,slot:e.slot,name:e.name,props:e.props,value:e.value}),[i,e.slot,e.name,e.props,e.value]);return t.default.createElement(b.Provider,{value:o},e.children)},[n])]}],35889);let _=(0,t.createContext)(null);function E(e){var r,n,i;let o=null!=(n=null==(r=(0,t.useContext)(_))?void 0:r.value)?n:void 0;return(null!=(i=null==e?void 0:e.length)?i:0)>0?[o,...e].filter(Boolean).join(" "):o}_.displayName="LabelContext";let C=Object.assign((0,u.forwardRefWithAs)(function(e,n){var o;let s=(0,t.useId)(),a=function e(){let r=(0,t.useContext)(_);if(null===r){let t=Error("You used a