PageSourceSearch

https://nasenfloeten.com/assets/RiskControlView-DdznelS5.js

js nasenfloeten.com collected 2026-10-10 00:46:32 UTC 88,075 bytes, 2 lines download raw bytes

1import{d as Oa,r as f,q as Pe,c as _,o as La,a as qa,D as we,K as ce,B as e,z as c,k,E as y,G as o,u as l,H as T,A as g,F as z,W as j,U as Ke,L as C,M as w,Y as Wa,V as St,t as Ue,C as d}from"./vendor-vue-BVJWaRIf.js";import{_ as Ga}from"./AppLayout.vue_vue_type_script_setup_true_lang-Cgn2rYNh.js";import{a as Ya,_ as x,g as Tt,j as H,h as Ja}from"./index-DGTjV__i.js";import{S as me}from"./Select-TY0w-yGx.js";import{_ as te}from"./Toggle.vue_vue_type_script_setup_true_lang-DRUF2Z-I.js";import{P as Qa}from"./Pagination-DA2hJep1.js";import{_ as Xa}from"./ModelWhitelistSelector.vue_vue_type_script_setup_true_lang-C2ZRVgi0.js";import{P as Za}from"./ProxySelector-Cflk8hii.js";import{a as $}from"./apiError-zX02PgX9.js";import{u as es}from"./vendor-i18n-pgwztqC8.js";import"./AppHeader.vue_vue_type_style_index_0_scoped_59fb3e77_lang-BAGlNg6f.js";import"./vendor-misc-WKm5Kdig.js";import"./useClipboard-DW3Oc4kG.js";import"./LocaleSwitcher-DjROr_ZE.js";/* empty css                                                                       */import"./usePersistedPageSize-x0WpaIWh.js";const ts={class:"space-y-6"},as={key:0,class:"flex items-center justify-center py-16"},ss={class:"flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between"},rs={class:"text-2xl font-semibold text-gray-900 dark:text-white"},os={class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},ls={class:"flex flex-wrap items-center gap-2"},ns=["disabled"],is={class:"text-sm text-gray-600 dark:text-gray-300","data-test":"active-audit-engine"},ds={key:0,class:"text-sm text-amber-700 dark:text-amber-300",role:"status"},us={class:"grid grid-cols-1 gap-3 md:grid-cols-2 xl:grid-cols-4"},cs={class:"flex min-w-0 items-center gap-3"},ms={class:"min-w-0 flex-1"},ps={class:"flex min-w-0 items-center justify-between gap-2"},_s={class:"truncate text-xs font-medium text-gray-500 dark:text-gray-400"},ks={class:"mt-1 flex min-w-0 items-baseline gap-2"},ys={class:"truncate text-xl font-semibold leading-7 text-gray-900 dark:text-white"},gs={key:0,class:"truncate text-xs text-gray-500 dark:text-gray-400"},xs={key:1,"data-test":"pre-block-runtime-cards",class:"grid grid-cols-1 gap-6 xl:grid-cols-[minmax(0,520px)_minmax(0,1fr)]"},bs={"data-test":"pre-block-sync-card",class:"card"},hs={class:"flex flex-col gap-4 border-b border-gray-100 px-6 py-4 dark:border-dark-700 lg:flex-row lg:items-center lg:justify-between"},vs={class:"text-lg font-semibold text-gray-900 dark:text-white"},fs={class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},Cs={class:"inline-flex w-fit items-center rounded-full bg-gray-100 px-2.5 py-1 text-xs font-medium text-gray-600 dark:bg-dark-700 dark:text-gray-300"},ws={class:"p-6"},Ks={"data-test":"pre-block-metric-grid",class:"grid grid-cols-2 gap-3 md:grid-cols-3"},As={class:"text-xs text-gray-500 dark:text-gray-400"},Ss={key:0,class:"mt-1 truncate text-xs text-gray-500 dark:text-gray-400"},Ts={"data-test":"pre-block-api-key-load-card",class:"card"},Ms={class:"flex flex-col gap-4 border-b border-gray-100 px-6 py-4 dark:border-dark-700 lg:flex-row lg:items-center lg:justify-between"},zs={class:"text-lg font-semibold text-gray-900 dark:text-white"},Fs={class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},Vs={class:"inline-flex w-fit items-center rounded-full bg-gray-100 px-2.5 py-1 text-xs font-medium text-gray-600 dark:bg-dark-700 dark:text-gray-300"},js={class:"p-6"},Hs={key:0,"data-test":"pre-block-api-key-load-list",class:"max-h-[280px] space-y-3 overflow-y-auto pr-1"},Ds={class:"flex min-w-0 flex-col gap-2 sm:flex-row sm:items-center sm:justify-between"},Bs={class:"min-w-0"},Ps={class:"flex min-w-0 items-center gap-2"},Us={class:"font-mono text-sm font-semibold text-gray-900 dark:text-white"},Is={class:"truncate font-mono text-sm text-gray-700 dark:text-gray-200"},Rs={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},$s={class:"grid grid-cols-4 gap-2 text-right text-xs text-gray-500 dark:text-gray-400 sm:min-w-[280px]"},Es={class:"mt-1 text-sm font-semibold text-sky-700 dark:text-sky-300"},Ns={class:"mt-1 text-sm font-semibold text-gray-900 dark:text-white"},Os={class:"mt-1 text-sm font-semibold text-gray-900 dark:text-white"},Ls={class:"mt-1 text-sm font-semibold text-gray-900 dark:text-white"},qs={class:"mt-3 h-1.5 overflow-hidden rounded-full bg-white dark:bg-dark-900"},Ws={key:1,class:"rounded-lg bg-gray-50 p-4 text-sm text-gray-500 dark:bg-dark-700/50 dark:text-gray-400"},Gs={key:2,class:"card"},Ys={class:"flex flex-col gap-4 border-b border-gray-100 px-6 py-4 dark:border-dark-700 lg:flex-row lg:items-center lg:justify-between"},Js={class:"text-lg font-semibold text-gray-900 dark:text-white"},Qs={class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},Xs={class:"flex flex-wrap items-center gap-2 text-sm text-gray-500 dark:text-gray-400"}
vendor: 8,634 bytes, line 1
1,Zs={key:0},er={class:"grid grid-cols-1 gap-6 p-6 xl:grid-cols-[minmax(0,360px)_1fr]"},tr={class:"space-y-4"},ar={class:"rounded-lg border border-gray-100 p-4 dark:border-dark-700"},sr={class:"flex items-center justify-between gap-3"},rr={class:"text-sm font-medium text-gray-900 dark:text-white"},or={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},lr={class:"text-sm font-semibold text-gray-900 dark:text-white"},nr={class:"mt-4 h-2 overflow-hidden rounded-full bg-gray-100 dark:bg-dark-700"},ir={class:"grid grid-cols-2 gap-3"},dr={class:"rounded-lg bg-gray-50 p-4 dark:bg-dark-700/50"},ur={class:"text-xs text-gray-500 dark:text-gray-400"},cr={class:"mt-2 text-2xl font-semibold text-gray-900 dark:text-white"},mr={class:"rounded-lg bg-emerald-50 p-4 dark:bg-emerald-900/10"},pr={class:"text-xs text-gray-500 dark:text-gray-400"},_r={class:"mt-2 text-2xl font-semibold text-emerald-700 dark:text-emerald-300"},kr={class:"rounded-lg bg-gray-50 p-4 dark:bg-dark-700/50"},yr={class:"text-xs text-gray-500 dark:text-gray-400"},gr={class:"mt-2 text-2xl font-semibold text-gray-900 dark:text-white"},xr={class:"rounded-lg bg-gray-50 p-4 dark:bg-dark-700/50"},br={class:"text-xs text-gray-500 dark:text-gray-400"},hr={class:"mt-2 text-2xl font-semibold text-gray-900 dark:text-white"},vr={class:"mb-3 flex items-center justify-between gap-3"},fr={class:"text-sm font-medium text-gray-900 dark:text-white"},Cr={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},wr={class:"inline-flex items-center rounded-full bg-gray-100 px-2.5 py-1 text-xs font-medium text-gray-600 dark:bg-dark-700 dark:text-gray-300"},Kr={class:"grid grid-cols-2 gap-2 sm:grid-cols-4 md:grid-cols-6 xl:grid-cols-8 2xl:grid-cols-10"},Ar=["title"],Sr={class:"text-sm font-semibold"},Tr={class:"card"},Mr={class:"flex flex-col gap-4 border-b border-gray-100 px-6 py-4 dark:border-dark-700"},zr={class:"flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between"},Fr={class:"text-lg font-semibold text-gray-900 dark:text-white"},Vr={class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},jr=["disabled"],Hr={class:"flex flex-col gap-2 rounded-lg border border-gray-100 bg-gray-50 px-3 py-2 dark:border-dark-700 dark:bg-dark-900/30 sm:flex-row sm:items-center sm:justify-between"},Dr={class:"flex min-w-0 items-center gap-2 text-sm text-gray-700 dark:text-gray-200"},Br={class:"font-medium"},Pr={class:"truncate text-gray-500 dark:text-gray-400"},Ur={key:0,class:"flex flex-wrap gap-1.5"},Ir={key:0,class:"inline-flex rounded-md bg-white px-2 py-1 text-xs text-gray-500 shadow-sm dark:bg-dark-800 dark:text-gray-400"},Rr={class:"grid grid-cols-1 gap-3 md:grid-cols-2 xl:grid-cols-6"},$r=["placeholder"],Er=["title"],Nr=["title"],Or={class:"overflow-x-auto"},Lr={class:"min-w-full divide-y divide-gray-200 dark:divide-dark-700"},qr={class:"bg-gray-50 dark:bg-dark-800"},Wr={class:"px-5 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-500 dark:text-gray-400"},Gr={class:"px-5 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-500 dark:text-gray-400"},Yr={class:"px-5 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-500 dark:text-gray-400"},Jr={class:"px-5 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-500 dark:text-gray-400"},Qr={class:"px-5 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-500 dark:text-gray-400"},Xr={class:"px-5 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-500 dark:text-gray-400"},Zr={class:"px-5 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-500 dark:text-gray-400"},eo={class:"px-5 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-500 dark:text-gray-400"},to={class:"px-5 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-500 dark:text-gray-400"},ao={class:"px-5 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-500 dark:text-gray-400"},so={class:"divide-y divide-gray-100 bg-white dark:divide-dark-800 dark:bg-dark-800"},ro={key:0},oo={colspan:"10",class:"px-5 py-12 text-center text-sm text-gray-500 dark:text-gray-400"},lo={key:1},no={colspan:"10",class:"px-5 py-12 text-center text-sm text-gray-500 dark:text-gray-400"},io={class:"whitespace-nowrap px-5 py-4 text-sm text-gray-700 dark:text-gray-300"},uo={class:"whitespace-nowrap px-5 py-4 text-sm text-gray-700 dark:text-gray-300"},co={class:"whitespace-nowrap px-5 py-4 text-sm text-gray-700 dark:text-gray-300"},mo={key:0,class:"text-xs text-gray-400"},po={class:"whitespace-nowrap px-5 py-4 text-sm text-gray-700 dark:text-gray-300"},_o={class:"whitespace-nowrap px-5 py-4 text-sm text-gray-700 dark:text-gray-300"},ko={class:"text-xs text-gray-400"},yo={class:"whitespace-nowrap px-5 py-4"},go={class:"whitespace-nowrap px-5 py-4 text-sm text-gray-700 dark:text-gray-300"},xo={class:"text-xs text-gray-400"},bo=["title"],ho={class:"whitespace-nowrap px-5 py-4 text-sm text-gray-700 dark:text-gray-300"},vo={class:"text-xs text-gray-400"},fo={key:0},Co=["disabled","onClick"],wo={class:"whitespace-nowrap px-5 py-4 text-sm text-gray-700 dark:text-gray-300"},Ko={key:0,class:"text-xs text-gray-400"},Ao={class:"w-[320px] max-w-sm px-5 py-4 text-sm text-gray-700 dark:text-gray-300"},So=["title","onClick"],To={class:"min-w-0 flex-1 truncate"},Mo={class:"space-y-6"},zo={class:"flex gap-2 overflow-x-auto border-b border-gray-100 pb-3 dark:border-dark-700"},Fo=["onClick"],Vo={key:0,class:"space-y-5"},jo={class:"grid grid-cols-1 gap-5 lg:grid-cols-2"},Ho={class:"flex items-center justify-between rounded-lg border border-gray-100 p-4 dark:border-dark-700"},Do={class:"text-sm font-medium text-gray-900 dark:text-white"},Bo={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Po={class:"input-label"},Uo={class:"mt-2 text-xs leading-5 text-gray-500 dark:text-gray-400"},Io={class:"input-label"},Ro={key:0,class:"lg:col-span-2 text-sm text-amber-700 dark:text-amber-300",role:"status"},$o={class:"input-label"},Eo=["placeholder"],No={class:"input-label"},Oo=["placeholder"],Lo={class:"input-label"},qo={class:"input-label"},Wo={class:"input-label"},Go={class:"relative"},Yo={class:"input-label"},Jo={class:"mt-2 text-xs leading-5 text-gray-500 dark:text-gray-400"},Qo={class:"overflow-hidden rounded-xl border border-gray-100 bg-white shadow-sm dark:border-dark-700 dark:bg-dark-800"},Xo={class:"flex flex-col gap-4 border-b border-gray-100 bg-gray-50 px-4 py-4 dark:border-dark-700 dark:bg-dark-800/60 lg:flex-row lg:items-center lg:justify-between"},Zo={class:"flex items-start gap-3"},el={class:"mt-0.5 flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-primary-50 text-primary-600 dark:bg-primary-900/30 dark:text-primary-300"},tl={class:"text-sm font-semibold text-gray-900 dark:text-white"},al={class:"mt-1 max-w-3xl text-xs leading-5 text-gray-500 dark:text-gray-400"},sl={class:"flex flex-wrap items-center gap-2"},rl=["disabled"],ol=["disabled"],ll={class:"grid grid-cols-1 gap-4 p-4 xl:grid-cols-[minmax(0,1fr)_minmax(360px,440px)]"},nl={class:"space-y-3"},il={class:"flex flex-col gap-2 rounded-lg border border-gray-100 bg-gray-50 p-2 dark:border-dark-700 dark:bg-dark-900/30 sm:flex-row sm:items-center sm:justify-between"},dl={class:"text-xs leading-5 text-gray-500 dark:text-gray-400"},ul={class:"font-medium text-gray-700 dark:text-gray-200"},cl={class:"ml-2"},ml={class:"inline-flex rounded-lg bg-white p-1 shadow-sm dark:bg-dark-800"},pl=["disabled"],_l=["disabled"],kl=["placeholder","disabled"],yl={class:"flex flex-wrap items-center gap-2 text-xs text-gray-500 dark:text-gray-400"},gl={class:"inline-flex rounded-md bg-gray-100 px-2 py-1 dark:bg-dark-700"},xl={key:0,class:"inline-flex rounded-md bg-gray-100 px-2 py-1 dark:bg-dark-700"},bl={key:1,class:"inline-flex rounded-md bg-red-50 px-2 py-1 text-red-700 dark:bg-red-900/20 dark:text-red-300"},hl={key:2,class:"inline-flex rounded-md bg-amber-50 px-2 py-1 text-amber-700 dark:bg-amber-900/20 dark:text-amber-300"},vl={key:3,class:"inline-flex rounded-md bg-amber-50 px-2 py-1 text-amber-700 dark:bg-amber-900/20 dark:text-amber-300"},fl={class:"mb-3 flex items-center justify-between gap-3"},Cl={class:"text-sm font-semibold text-gray-900 dark:text-white"},wl={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Kl=["placeholder"],Al={class:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},Sl={class:"flex items-start gap-2"},Tl={class:"text-sm font-medium text-gray-800 dark:text-gray-100"},Ml={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},zl={class:"btn btn-secondary inline-flex cursor-pointer items-center gap-2"}
vendor: 9,708 bytes, line 1
1,Fl={key:0,class:"mt-3 grid grid-cols-2 gap-2 sm:grid-cols-4"},Vl=["src"],jl=["onClick"],Hl={"data-test":"audit-key-statuses",class:"rounded-lg border border-gray-100 bg-gray-50 p-3 dark:border-dark-700 dark:bg-dark-900/30"},Dl={class:"mb-3 flex items-start justify-between gap-3"},Bl={class:"min-w-0"},Pl={class:"text-sm font-semibold text-gray-900 dark:text-white"},Ul={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Il={class:"inline-flex shrink-0 items-center whitespace-nowrap rounded-full bg-white px-2 py-0.5 text-[11px] font-medium leading-5 text-gray-600 shadow-sm dark:bg-dark-800 dark:text-gray-300"},Rl={key:0,class:"flex min-h-32 flex-col items-center justify-center rounded-lg border border-dashed border-gray-200 bg-white px-4 py-6 text-center dark:border-dark-700 dark:bg-dark-800"},$l={class:"mt-2 text-sm font-medium text-gray-700 dark:text-gray-200"},El={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Nl={key:1,class:"space-y-2"},Ol={class:"flex items-start justify-between gap-2"},Ll={class:"min-w-0"},ql={class:"flex min-w-0 flex-wrap items-center gap-2"},Wl={class:"truncate font-mono text-sm font-semibold text-gray-900 dark:text-white"},Gl={class:"mt-1 text-xs leading-5 text-gray-500 dark:text-gray-400"},Yl={class:"flex flex-shrink-0 items-center gap-1.5"},Jl=["title","onClick"],Ql={key:0,class:"mt-1.5 rounded-md bg-amber-50 px-2 py-1.5 text-xs leading-5 text-amber-700 dark:bg-amber-900/20 dark:text-amber-300"},Xl={key:0,class:"flex items-center justify-between gap-3 rounded-lg border border-dashed border-gray-200 bg-white px-3 py-2 text-xs text-gray-500 dark:border-dark-700 dark:bg-dark-800 dark:text-gray-400"},Zl={class:"min-w-0 truncate"},en={key:2,class:"mt-4 rounded-lg border border-gray-100 bg-white p-3 dark:border-dark-700 dark:bg-dark-800"},tn={key:0,class:"mb-2 break-words text-xs text-gray-500"},an={key:0},sn={class:"flex items-start justify-between gap-3"},rn={class:"text-sm font-semibold text-gray-900 dark:text-white"},on={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},ln={class:"mt-3"},nn={class:"mb-2 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},dn={class:"font-semibold text-gray-900 dark:text-white"},un={class:"h-2 overflow-hidden rounded-full bg-gray-100 dark:bg-dark-700"},cn={class:"mt-3 max-h-52 space-y-2 overflow-y-auto pr-1"},mn={class:"mb-1 flex items-center justify-between gap-3 text-xs"},pn={class:"truncate text-gray-600 dark:text-gray-300"},_n={class:"font-mono text-gray-500 dark:text-gray-400"},kn={class:"h-1.5 overflow-hidden rounded-full bg-gray-100 dark:bg-dark-700"},yn={key:1,class:"space-y-5"},gn={class:"flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between"},xn={class:"text-base font-semibold text-gray-900 dark:text-white"},bn={class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},hn={class:"inline-flex rounded-lg bg-gray-100 p-1 dark:bg-dark-700"},vn={key:0,class:"space-y-4"},fn={class:"relative"},Cn=["placeholder"],wn={class:"grid max-h-[420px] grid-cols-1 gap-3 overflow-y-auto pr-1 md:grid-cols-2 xl:grid-cols-3"},Kn=["onClick"],An={class:"min-w-0"},Sn={class:"block truncate text-sm font-semibold text-gray-900 dark:text-white"},Tn={class:"mt-1 inline-flex rounded-md bg-gray-100 px-2 py-0.5 text-xs text-gray-500 dark:bg-dark-700 dark:text-gray-400"},Mn={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},zn={class:"space-y-4 rounded-lg border border-gray-100 p-4 dark:border-dark-700"},Fn={class:"flex flex-col gap-2 lg:flex-row lg:items-center lg:justify-between"},Vn={class:"text-base font-semibold text-gray-900 dark:text-white"},jn={class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},Hn={class:"inline-flex w-fit rounded-md bg-gray-100 px-2.5 py-1 text-xs font-medium text-gray-600 dark:bg-dark-700 dark:text-gray-300"},Dn={class:"grid grid-cols-1 gap-2 md:grid-cols-3"},Bn=["onClick"],Pn={class:"flex items-center justify-between gap-2"},Un={class:"text-sm font-semibold"},In={class:"mt-1 text-xs leading-5 text-gray-500 dark:text-gray-400"},Rn={key:0,class:"space-y-2"},$n={class:"input-label"},En={class:"text-xs text-gray-500 dark:text-gray-400"},Nn={key:2,class:"grid grid-cols-1 gap-5 lg:grid-cols-2"},On={class:"input-label"},Ln={class:"input-label"},qn={class:"flex items-center justify-between rounded-lg border border-gray-100 p-4 dark:border-dark-700 lg:col-span-2"},Wn={class:"text-sm font-medium text-gray-900 dark:text-white"},Gn={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Yn={class:"space-y-4 rounded-lg border border-gray-100 p-4 dark:border-dark-700 lg:col-span-2"},Jn={class:"flex items-center justify-between gap-4"},Qn={class:"text-sm font-medium text-gray-900 dark:text-white"},Xn={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Zn={class:"rounded-lg bg-gray-50 p-3 dark:bg-dark-900/30"},ei={class:"flex flex-col gap-3 xl:flex-row xl:items-center xl:justify-between"},ti={class:"text-sm font-medium text-gray-900 dark:text-white"},ai={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},si=["disabled"],ri={class:"mt-3 flex flex-col gap-2 sm:flex-row"},oi=["placeholder"],li=["disabled"],ni={key:3,class:"space-y-5"},ii={class:"grid grid-cols-1 gap-5 lg:grid-cols-2"},di={class:"input-label"},ui={class:"input-label"},ci={class:"flex items-center justify-between rounded-lg border border-gray-100 p-4 dark:border-dark-700"},mi={class:"text-sm font-medium text-gray-900 dark:text-white"},pi={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},_i={class:"flex items-center justify-between rounded-lg border border-gray-100 p-4 dark:border-dark-700"},ki={class:"text-sm font-medium text-gray-900 dark:text-white"},yi={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},gi={class:"flex items-center justify-between rounded-lg border border-gray-100 p-4 dark:border-dark-700 lg:col-span-2"},xi={class:"text-sm font-medium text-gray-900 dark:text-white"},bi={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},hi={class:"input-label"},vi={class:"input-label"},fi={key:4,class:"space-y-5"},Ci={class:"text-sm font-medium"},wi={key:0,class:"text-sm text-amber-700 dark:text-amber-300"},Ki={class:"flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between"},Ai={class:"text-base font-semibold text-gray-900 dark:text-white"},Si={class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},Ti={class:"grid grid-cols-1 gap-3 md:grid-cols-2 xl:grid-cols-3"},Mi={class:"flex items-start justify-between gap-3"},zi={class:"min-w-0"},Fi=["for"],Vi={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},ji={class:"inline-flex shrink-0 rounded-md bg-white px-2 py-1 font-mono text-xs font-medium text-gray-600 shadow-sm dark:bg-dark-800 dark:text-gray-300"},Hi={class:"mt-3"},Di=["for"],Bi={class:"relative"},Pi=["id","onUpdate:modelValue","data-test"],Ui={key:5,class:"space-y-5"},Ii={class:"text-sm leading-6"},Ri={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},$i={class:"space-y-2"},Ei={class:"input-label"},Ni={class:"grid grid-cols-1 gap-2 sm:grid-cols-3"},Oi=["onClick"],Li={class:"flex items-center justify-between gap-2"},qi={class:"text-sm font-semibold"},Wi={class:"mt-1 text-xs leading-5 text-gray-500 dark:text-gray-400"},Gi={class:"mb-2 flex items-center justify-between"},Yi={class:"input-label mb-0"},Ji={class:"inline-flex rounded-md bg-gray-100 px-2 py-1 text-xs text-gray-500 dark:bg-dark-700 dark:text-gray-300"},Qi=["placeholder","disabled"],Xi={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Zi={key:6,class:"grid grid-cols-1 gap-5 lg:grid-cols-2"},ed={class:"input-label"},td={class:"input-label"},ad={class:"rounded-lg border border-gray-100 p-4 text-sm text-gray-500 dark:border-dark-700 dark:text-gray-400 lg:col-span-2"},sd={class:"flex flex-wrap items-center gap-3"},rd={class:"flex justify-end gap-2"},od=["disabled"],ld={key:0,class:"space-y-5"},nd={class:"text-sm break-words","data-test":"audit-engine-meta"},id={class:"font-medium"},dd={key:0},ud={class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-4"},cd={class:"rounded-lg border border-gray-100 bg-gray-50 p-4 dark:border-dark-700 dark:bg-dark-800/70"},md={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},pd={class:"mt-1 truncate text-sm font-semibold text-gray-900 dark:text-white"},_d={class:"rounded-lg border border-gray-100 bg-gray-50 p-4 dark:border-dark-700 dark:bg-dark-800/70"},kd={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},yd={class:"mt-1 truncate text-sm font-semibold text-gray-900 dark:text-white"},gd={class:"rounded-lg border border-gray-100 bg-gray-50 p-4 dark:border-dark-700 dark:bg-dark-800/70"},xd={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},bd={class:"rounded-lg border border-gray-100 bg-gray-50 p-4 dark:border-dark-700 dark:bg-dark-800/70"},hd={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},vd={class:"mt-1 truncate text-sm font-semibold text-gray-900 dark:text-white"},fd={key:0,class:"rounded-lg border border-red-100 bg-red-50 p-4 dark:border-red-900/60 dark:bg-red-900/20"},Cd={class:"text-xs font-medium text-red-500 dark:text-red-300"},wd=["title"],Kd={class:"rounded-xl border border-gray-100 bg-white p-4 shadow-sm dark:border-dark-700 dark:bg-dark-800"},Ad={class:"flex flex-wrap items-center justify-between gap-3"},Sd={class:"text-sm font-semibold text-gray-900 dark:text-white"},Td={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Md={key:0,class:"inline-flex rounded-md bg-sky-50 px-2.5 py-1 text-xs font-medium text-sky-700 dark:bg-sky-900/20 dark:text-sky-300"},zd={class:"mt-4 max-h-[420px] overflow-auto whitespace-pre-wrap break-words rounded-lg bg-gray-950 p-4 text-sm leading-6 text-gray-100 shadow-inner dark:bg-black/50"},Fd={class:"flex justify-end"}
1,Mt=1,Vd=8*1024*1024,zt=3,jd=1e4,Qd=Oa({__name:"RiskControlView",setup(Hd){const O={harassment:98,"harassment/threatening":90,hate:65,"hate/threatening":65,illicit:95,"illicit/violent":95,"self-harm":65,"self-harm/intent":85,"self-harm/instructions":65,sexual:65,"sexual/minors":65,violence:95,"violence/graphic":95},pe=Object.keys(O),{t:a}=es(),K=Ya(),Ae=()=>a("admin.riskControl.defaultBlockMessage"),Se=f(!0),E=f(!1),ae=f(!1),_e=f(!1),B=f(!1),P=f(!1),L=f(null),se=f(!1),U=f("basic"),Te=f(""),re=f(""),ke=f([]),Ie=f([]),oe=f([]),m=f(null),q=f([]),F=f([]),R=f(!1),W=f(""),I=f([]),A=f(null),b=f(null),le=f("openai"),Ft=[{value:"openai",label:"OpenAI"},{value:"typesafe",label:"TypeSafe AI"}],ye=t=>t==="typesafe"?"TypeSafe AI":"OpenAI";let ge=null;const r=Pe({engine:"openai",enabled:!1,mode:"pre_block",base_url:"https://api.openai.com",model:"omni-moderation-latest",proxy_id:null,api_keys_text:"",api_key_configured:!1,api_key_masked:"",api_key_count:0,api_key_masks:[],api_key_statuses:[],api_keys_mode:"append",clear_api_key:!1,timeout_ms:3e3,retry_count:2,sample_rate:100,all_groups:!0,group_ids:[],record_non_hits:!1,worker_count:4,queue_size:32768,block_status:403,block_message:Ae(),email_on_hit:!0,auto_ban_enabled:!0,cyber_policy_exclude_from_ban_count:!1,ban_threshold:10,violation_window_hours:720,hit_retention_days:180,non_hit_retention_days:3,pre_hash_check_enabled:!1,thresholds:{...O},blocked_keywords_text:"",keyword_blocking_mode:"keyword_and_api",model_filter_type:"all",model_filter_models:[]}),Vt=["base_url","model","proxy_id","api_keys_text","api_key_configured","api_key_masked","api_key_count","api_key_masks","api_key_statuses","api_keys_mode","clear_api_key","timeout_ms","retry_count","thresholds"],G=f({});function Re(){return structuredClone({...Object.fromEntries(Vt.map(t=>[t,Ue(r)[t]])),pendingDeletes:[...F.value]})}function jt(t){if(t!=="openai"&&t!=="typesafe"||B.value||E.value)return;G.value[r.engine]=Re(),r.engine=t;const s=G.value[t];if(s){const{pendingDeletes:u,...p}=structuredClone(Ue(s));Object.assign(r,p),F.value=u}q.value=[],A.value=null}function $e(t,s){return{base_url:(t==null?void 0:t.base_url)||(s==="typesafe"?"https://api.typesafe.ai":"https://api.openai.com"),model:(t==null?void 0:t.model)||(s==="typesafe"?"jev-latest":"omni-moderation-latest"),proxy_id:(t==null?void 0:t.proxy_id)??null,api_keys_text:"",api_key_configured:(t==null?void 0:t.api_key_configured)??!1,api_key_masked:(t==null?void 0:t.api_key_masked)??"",api_key_count:(t==null?void 0:t.api_key_count)??0,api_key_masks:[...(t==null?void 0:t.api_key_masks)??[]],api_key_statuses:[...(t==null?void 0:t.api_key_statuses)??[]],api_keys_mode:"append",clear_api_key:!1,pendingDeletes:[],timeout_ms:(t==null?void 0:t.timeout_ms)??3e3,retry_count:(t==null?void 0:t.retry_count)??2,thresholds:_t(t==null?void 0:t.thresholds)}}function Ht(t){const s=ve(t.api_keys_text);if(!t.clear_api_key&&t.api_keys_mode==="replace"&&s.length===0)throw new Error("empty replacement keys");return{base_url:t.base_url,model:t.model,proxy_id:t.proxy_id??0,timeout_ms:t.timeout_ms,retry_count:t.retry_count,thresholds:Object.fromEntries(pe.map(u=>[u,fe(t.thresholds[u])/100])),clear_api_key:t.clear_api_key,api_keys:s.length?s:void 0,api_keys_mode:t.api_keys_mode,delete_api_key_hashes:t.pendingDeletes}}const V=Pe({page:1,page_size:20,total:0,pages:1}),M=Pe({result:"",group_id:0,endpoint:"",search:"",from:"",to:""}),Dt=_(()=>[{id:"basic",label:a("admin.riskControl.tabs.basic")},{id:"scope",label:a("admin.riskControl.tabs.scope")},{id:"runtime",label:a("admin.riskControl.tabs.runtime")},{id:"response",label:a("admin.riskControl.tabs.response")},{id:"riskThresholds",label:a("admin.riskControl.tabs.riskThresholds")},{id:"keywords",label:a("admin.riskControl.tabs.keywords")},{id:"retention",label:a("admin.riskControl.tabs.retention")}]),Ee=_(()=>[{value:"pre_block",label:a("admin.riskControl.modePreBlock")},{value:"observe",label:a("admin.riskControl.modeObserve")},{value:"off",label:a("admin.riskControl.modeOff")}]),Bt=_(()=>[{value:"keyword_and_api",label:a("admin.riskControl.keywordModeKeywordAndApi"),description:a("admin.r
1iskControl.keywordModeKeywordAndApiDesc")},{value:"keyword_only",label:a("admin.riskControl.keywordModeKeywordOnly"),description:a("admin.riskControl.keywordModeKeywordOnlyDesc")},{value:"api_only",label:a("admin.riskControl.keywordModeApiOnly"),description:a("admin.riskControl.keywordModeApiOnlyDesc")}]),Pt=_(()=>[{value:"all",label:a("admin.riskControl.modelFilterAll"),description:a("admin.riskControl.modelFilterAllDesc")},{value:"include",label:a("admin.riskControl.modelFilterInclude"),description:a("admin.riskControl.modelFilterIncludeDesc")},{value:"exclude",label:a("admin.riskControl.modelFilterExclude"),description:a("admin.riskControl.modelFilterExcludeDesc")}]),xe={info:{icon:"infoCircle",toneClass:"border-primary-100 bg-primary-50/60 dark:border-primary-900/40 dark:bg-primary-900/10",iconClass:"mt-0.5 flex-shrink-0 text-primary-500 dark:text-primary-300",titleClass:"text-primary-700 dark:text-primary-200"},warning:{icon:"exclamationTriangle",toneClass:"border-amber-200 bg-amber-50 dark:border-amber-900/40 dark:bg-amber-900/20",iconClass:"mt-0.5 flex-shrink-0 text-amber-500 dark:text-amber-300",titleClass:"text-amber-700 dark:text-amber-200"}},Y=_(()=>{const t=r.keyword_blocking_mode;return t==="api_only"?{...xe.info,title:a("admin.riskControl.keywordModeApiOnlyNotice"),description:a("admin.riskControl.keywordModeApiOnlyDesc")}:r.mode!=="pre_block"?{...xe.warning,title:a("admin.riskControl.blockedKeywordsModeWarning",{mode:he(r.mode)}),description:a("admin.riskControl.blockedKeywordsDescription")}:t==="keyword_only"?{...xe.info,title:a("admin.riskControl.keywordModeKeywordOnlyNotice"),description:a("admin.riskControl.keywordModeKeywordOnlyDesc")}:{...xe.info,title:a("admin.riskControl.blockedKeywordsPreBlockHint"),description:a("admin.riskControl.blockedKeywordsDescription")}}),Ut=_(()=>[{value:"",label:a("admin.riskControl.result.all")},{value:"hit",label:a("admin.riskControl.result.hit")},{value:"blocked",label:a("admin.riskControl.result.blocked")},{value:"pass",label:a("admin.riskControl.result.pass")},{value:"error",label:a("admin.riskControl.result.error")}]),It=_(()=>[{value:"",label:a("admin.riskControl.filters.allEndpoints")},{value:"/v1/messages",label:"/v1/messages"},{value:"/v1/responses",label:"/v1/responses"},{value:"/v1/chat/completions",label:"/v1/chat/completions"},{value:"/v1beta/models",label:"/v1beta/models"},{value:"/v1/images/generations",label:"/v1/images/generations"},{value:"/v1/images/edits",label:"/v1/images/edits"}]),Rt=_(()=>[{value:0,label:a("admin.riskControl.filters.allGroups")},...ke.value.map(t=>({value:t.id,label:`${t.name} (${t.platform})`}))]),$t=_(()=>String(r.group_ids.length)),Me=_(()=>r.model_filter_models.length),ze=_(()=>r.model_filter_type==="include"?a("admin.riskControl.modelFilterIncludeSummary",{count:Me.value}):r.model_filter_type==="exclude"?a("admin.riskControl.modelFilterExcludeSummary",{count:Me.value}):a("admin.riskControl.modelFilterAllSummary")),Fe=_(()=>r.model_filter_models.slice(0,6)),Ne=_(()=>Math.max(0,r.model_filter_models.length-Fe.value.length)),Oe=_(()=>{const t=Te.value.trim().toLowerCase();return t?ke.value.filter(s=>s.name.toLowerCase().includes(t)||String(s.platform).toLowerCase().includes(t)):ke.value}),Le=_(()=>ve(r.api_keys_text).length),qe=_(()=>$a(r.blocked_keywords_text)),Et=_(()=>qe.value.length),be=_(()=>F.value.length),Ve=_(()=>Math.max(0,r.api_key_count-be.value)),Nt=_(()=>r.api_keys_mode==="replace"?a("admin.riskControl.apiKeysPlaceholderReplace"):a("admin.riskControl.apiKeysPlaceholder")),Ot=_(()=>r.api_keys_mode==="replace"?a("admin.riskControl.apiKeysModeReplaceHint"):a("admin.riskControl.apiKeysModeAppendHint")),We=_(()=>W.value.trim()!==""||I.value.length>0),Ge=_(()=>/^[a-fA-F0-9]{64}$/.test(re.value.trim())),Lt=_(()=>B.value?a("admin.riskControl.testingApiKeys"):We.value?a("admin.riskControl.testContentWithStoredApiKey"):a("admin.riskControl.testStoredApiKeys")),je=_(()=>{var s,u,p;const t=(((s=m.value)==null?void 0:s.engine)??"openai")===r.engine&&((p=(u=m.value)==null?void 0:u.api_key_statuses)!=null&&p.length)?m.value.api_key_statuses:r.api_key_statuses;return Array.isArray(t)?t:[]}),N=_(()=>[...je.value,...q.value]),Ye=_(()=>R.value?N.value:N.value.slice(0,zt)),qt=_(()=>Math.max(0,N.value.length-Ye.value.length)),Wt=_(()=>N.value.length>zt),Je=_(()=>je.value.filter(t=>!ne(t))),Qe=_(()=>{const t={ok:0,error:0,frozen:0,unknown:0};for(const s of Je.value)t[s.status]=(t[s.status]??0)+1;return Je.value.length===0&&Ve.value>0&&(t.unknown=Ve.value),["ok","frozen","error","unknown"].map(s=>({status:s,count:t[s]})).filter(s=>s.count>0)}),Gt=_(()=>
1r.api_key_configured?Qe.value.length===0?a("admin.riskControl.apiKeyStatusUnknown"):Qe.value.map(t=>`${ut(t.status)} ${t.count}`).join(" · "):""),Yt=_(()=>[{key:"status",label:a("admin.riskControl.overview.status"),value:r.enabled?a("admin.riskControl.overview.enabled"):a("admin.riskControl.overview.disabled"),meta:he(r.mode),icon:"shield",iconClass:r.enabled?"bg-emerald-50 text-emerald-600 dark:bg-emerald-900/20 dark:text-emerald-300":"bg-gray-100 text-gray-500 dark:bg-dark-700 dark:text-gray-400",badge:na.value,badgeClass:ia.value},{key:"api-key",label:a("admin.riskControl.overview.apiKey"),value:r.api_key_configured?a("admin.riskControl.apiKeyCount",{count:r.api_key_count}):a("admin.riskControl.notConfigured"),meta:r.api_key_configured?Gt.value||r.model||"-":r.model||"-",icon:"key",iconClass:"bg-sky-50 text-sky-600 dark:bg-sky-900/20 dark:text-sky-300"},{key:"scope",label:a("admin.riskControl.overview.groupScope"),value:r.all_groups?a("admin.riskControl.allGroups"):$t.value,meta:ze.value,icon:"users",iconClass:"bg-violet-50 text-violet-600 dark:bg-violet-900/20 dark:text-violet-300"},{key:"logs",label:a("admin.riskControl.overview.logs"),value:v(V.total),meta:a("admin.riskControl.overview.currentFilter"),icon:"document",iconClass:"bg-amber-50 text-amber-600 dark:bg-amber-900/20 dark:text-amber-300"}]),Jt=_(()=>{const t=A.value;return t?Object.entries(t.category_scores||{}).map(([s,u])=>{var h;const p=((h=t.thresholds)==null?void 0:h[s])??1;return{category:s,score:u,threshold:p,hit:u>=p}}).sort((s,u)=>u.score-s.score):[]}),Qt=_(()=>pe.map(t=>({category:t,value:r.thresholds[t]??O[t],defaultValue:O[t]}))),Xt=_(()=>b.value&&(b.value.input_excerpt||b.value.error)||"-"),Xe=_(()=>{var t;return`${Math.min(100,Math.max(0,((t=m.value)==null?void 0:t.queue_usage_percent)??0)).toFixed(1)}%`}),Zt=_(()=>({width:Xe.value})),Ze=_(()=>{var t;return((t=m.value)==null?void 0:t.mode)??r.mode}),ea=_(()=>Ze.value==="pre_block"),ta=_(()=>Ze.value==="observe"),aa=_(()=>{var t,s,u,p,h,S;return[{key:"active",label:a("admin.riskControl.preBlockActive"),value:v(((t=m.value)==null?void 0:t.pre_block_active)??0),meta:a("admin.riskControl.preBlockActiveHint"),class:"bg-sky-50 dark:bg-sky-900/10",valueClass:"text-sky-700 dark:text-sky-300"},{key:"checked",label:a("admin.riskControl.preBlockChecked"),value:v(((s=m.value)==null?void 0:s.pre_block_checked)??0),meta:a("admin.riskControl.preBlockCheckedHint"),class:"bg-gray-50 dark:bg-dark-700/50",valueClass:"text-gray-900 dark:text-white"},{key:"allowed",label:a("admin.riskControl.preBlockAllowed"),value:v(((u=m.value)==null?void 0:u.pre_block_allowed)??0),meta:a("admin.riskControl.preBlockAllowedHint"),class:"bg-emerald-50 dark:bg-emerald-900/10",valueClass:"text-emerald-700 dark:text-emerald-300"},{key:"blocked",label:a("admin.riskControl.preBlockBlocked"),value:v(((p=m.value)==null?void 0:p.pre_block_blocked)??0),meta:a("admin.riskControl.preBlockBlockedHint"),class:"bg-rose-50 dark:bg-rose-900/10",valueClass:"text-rose-700 dark:text-rose-300"},{key:"errors",label:a("admin.riskControl.preBlockErrors"),value:v(((h=m.value)==null?void 0:h.pre_block_errors)??0),meta:a("admin.riskControl.preBlockErrorsHint"),class:"bg-amber-50 dark:bg-amber-900/10",valueClass:"text-amber-700 dark:text-amber-300"},{key:"latency",label:a("admin.riskControl.preBlockAvgLatency"),value:`${v(((S=m.value)==null?void 0:S.pre_block_avg_latency_ms)??0)} ms`,meta:a("admin.riskControl.preBlockAvgLatencyHint"),class:"bg-violet-50 dark:bg-violet-900/10",valueClass:"text-violet-700 dark:text-violet-300"}]}),He=_(()=>{var t;return[...((t=m.value)==null?void 0:t.pre_block_api_key_loads)??[]].sort((s,u)=>s.index-u.index)}),sa=_(()=>Math.max(1,...He.value.map(t=>t.total||0))),ra=_(()=>{var t,s,u,p,h;return a("admin.riskControl.preBlockAPIKeyLoadSummary",{active:v(((t=m.value)==null?void 0:t.pre_block_api_key_active)??0),available:v(((s=m.value)==null?void 0:s.pre_block_api_key_available_count)??0),total:v(((u=m.value)==null?void 0:u.pre_block_api_key_total_calls)??0),workerActive:v(((p=m.value)==null?void 0:p.active_workers)??0),workerTotal:v(((h=m.value)==null?void 0:h.worker_count)??r.worker_count)})});function oa(t){return`${Math.min(100,Math.max(0,t/sa.value*100)).toFixed(1)}%`}const la=_(()=>{var p,h,S,de,ue;const t=Math.max(0,((p=m.value)==null?void 0:p.worker_count)??r.worker_count),s=Math.max(0,((h=m.value)==null?void 0:h.active_workers)??0),u=!!((S=m.value)!=null&&S.risk_control_enabled&&((de=m.value)!=null&&de.enabled)&&((ue=m.value)==null?void 0:ue.mode)!=="off");return Array.from({length:t},(Be,ee)=>({id:ee+1,state:u?ee<s?"active":"idle":"disabled",label:u?ee<s?a("admin.r
1iskControl.workerActive"):a("admin.riskControl.workerIdle"):a("admin.riskControl.workerDisabled")}))}),na=_(()=>{var t;return(t=m.value)!=null&&t.risk_control_enabled?!r.enabled||r.mode==="off"?a("admin.riskControl.overview.disabled"):a("admin.riskControl.overview.enabled"):a("admin.riskControl.riskSwitchOff")}),ia=_(()=>{var t;return!((t=m.value)!=null&&t.risk_control_enabled)||!r.enabled||r.mode==="off"?"bg-gray-100 text-gray-600 dark:bg-dark-700 dark:text-gray-300":"bg-emerald-50 text-emerald-700 dark:bg-emerald-900/20 dark:text-emerald-300"});function et(t){var h,S;le.value=t.engine??"openai",r.engine=le.value,r.enabled=t.enabled,r.mode=t.mode,r.base_url=t.base_url||"https://api.openai.com",r.model=t.model||"omni-moderation-latest",r.proxy_id=t.proxy_id||null,r.api_keys_text="",r.api_key_configured=t.api_key_configured,r.api_key_masked=t.api_key_masked||"",r.api_key_count=t.api_key_count||0,r.api_key_masks=Array.isArray(t.api_key_masks)?[...t.api_key_masks]:[],r.api_key_statuses=Array.isArray(t.api_key_statuses)?[...t.api_key_statuses]:[],r.api_keys_mode="append",r.clear_api_key=!1,F.value=[],q.value=[],R.value=!1,r.timeout_ms=t.timeout_ms||3e3,r.retry_count=t.retry_count??2,r.sample_rate=t.sample_rate??100,r.all_groups=t.all_groups,r.group_ids=Array.isArray(t.group_ids)?[...t.group_ids]:[],r.record_non_hits=t.record_non_hits,r.worker_count=t.worker_count||4,r.queue_size=t.queue_size||32768,r.block_status=t.block_status||403,r.block_message=t.block_message||Ae(),r.email_on_hit=t.email_on_hit??!0,r.auto_ban_enabled=t.auto_ban_enabled??!0,r.cyber_policy_exclude_from_ban_count=t.cyber_policy_exclude_from_ban_count??!1,r.ban_threshold=t.ban_threshold||10,r.violation_window_hours=t.violation_window_hours||720,r.hit_retention_days=t.hit_retention_days||180,r.non_hit_retention_days=Math.min(Math.max(t.non_hit_retention_days||3,1),3),r.pre_hash_check_enabled=t.pre_hash_check_enabled??!1,r.thresholds=_t(t.thresholds),r.blocked_keywords_text=Array.isArray(t.blocked_keywords)?t.blocked_keywords.join(`
2`):"",r.keyword_blocking_mode=Pa(t.keyword_blocking_mode);const s=Ua(t.model_filter);r.model_filter_type=s.type,r.model_filter_models=s.models,G.value={openai:$e(((h=t.engine_configs)==null?void 0:h.openai)??(le.value==="openai"?t:void 0),"openai"),typesafe:$e(((S=t.engine_configs)==null?void 0:S.typesafe)??(le.value==="typesafe"?t:void 0),"typesafe")};const{pendingDeletes:u,...p}=structuredClone(Ue(G.value[r.engine]));Object.assign(r,p),F.value=[...u]}async function da(){Se.value=!0;try{const[t,s,u,p]=await Promise.all([H.riskControl.getConfig(),H.groups.getAll(),H.riskControl.getStatus(),H.proxies.getAll().catch(()=>[])]);et(t),ke.value=s,m.value=u,Ie.value=p,(u.engine??"openai")===r.engine&&Array.isArray(u.api_key_statuses)&&(r.api_key_statuses=[...u.api_key_statuses],ot()),await Q()}catch(t){K.showError($(t,a("admin.riskControl.loadFailed")))}finally{Se.value=!1}}async function J(t=!0){_e.value=!0;try{const s=await H.riskControl.getStatus();m.value=s,(s.engine??"openai")===r.engine&&Array.isArray(s.api_key_statuses)&&(r.api_key_statuses=[...s.api_key_statuses],ot())}catch(s){t||K.showError($(s,a("admin.riskControl.statusFailed")))}finally{_e.value=!1}}async function ua(){E.value=!0;try{const t=Ia();if(t.type!=="all"&&t.models.length===0){K.showError(a("admin.riskControl.modelFilterModelsRequired"));return}const s={engine:r.engine,enabled:r.enabled,mode:r.mode,base_url:r.base_url,model:r.model,proxy_id:r.proxy_id??0,timeout_ms:Number(r.timeout_ms)||3e3,retry_count:Number(r.retry_count)||0,sample_rate:Number(r.sample_rate)||0,all_groups:r.all_groups,group_ids:r.all_groups?[]:[...r.group_ids],record_non_hits:r.record_non_hits,clear_api_key:r.clear_api_key,worker_count:Number(r.worker_count)||4,queue_size:Number(r.queue_size)||32768,block_status:Number(r.block_status)||403,block_message:r.block_message||Ae(),email_on_hit:r.email_on_hit,auto_ban_enabled:r.auto_ban_enabled,cyber_policy_exclude_from_ban_count:r.cyber_policy_exclude_from_ban_count,ban_threshold:Number(r.ban_threshold)||10,violation_window_hours:Number(r.violation_window_hours)||720,hit_retention_days:Number(r.hit_retention_days)||180,non_hit_retention_days:Math.min(Math.max(Number(r.non_hit_retention_days)||3,1),3),pre_hash_check_enabled:r.pre_hash_check_enabled,thresholds:kt(),blocked_keywords:qe.value,keyword_blocking_mode:r.keyword_blocking_mode,model_filter:t},u=ve(r.api_keys_text);if(!s.clear_api_key&&r.api_keys_mode==="replace"&&u.length===0){K.showError(a("admin.r
2iskControl.apiKeysReplaceNoInput"));return}u.length>0&&(s.api_keys=u,s.api_keys_mode=r.api_keys_mode,s.clear_api_key=!1),!s.clear_api_key&&r.api_keys_mode!=="replace"&&F.value.length>0&&(s.delete_api_key_hashes=[...F.value]),G.value[r.engine]=Re(),s.engine_configs=Object.fromEntries(Object.entries(G.value).map(([h,S])=>[h,Ht(S)]));const p=await H.riskControl.updateConfig(s);et(p),se.value=!1,K.showSuccess(a("admin.riskControl.saved")),await Promise.all([J(!0),Q()])}catch(t){K.showError($(t,a("admin.riskControl.saveFailed")))}finally{E.value=!1}}async function Q(){ae.value=!0;try{const t={page:V.page,page_size:V.page_size,result:M.result||void 0,group_id:M.group_id||void 0,endpoint:M.endpoint||void 0,search:M.search||void 0,from:gt(M.from),to:gt(M.to)},s=await H.riskControl.listLogs(t);oe.value=s.items,V.total=s.total,V.page=s.page,V.page_size=s.page_size,V.pages=s.pages}catch(t){K.showError($(t,a("admin.riskControl.logsFailed")))}finally{ae.value=!1}}function ca(t){return!!(t.auto_banned&&t.user_id&&t.user_status==="disabled")}function tt(t){return t.input_excerpt||t.error||"-"}function ma(t){b.value=t}function at(){b.value=null}async function pa(t){if(!(!t.user_id||L.value!==null)){L.value=t.user_id;try{const s=await H.riskControl.unbanUser(t.user_id);oe.value=oe.value.map(u=>u.user_id!==t.user_id?u:{...u,user_status:s.status}),K.showSuccess(a("admin.riskControl.unbanSuccess"))}catch(s){K.showError($(s,a("admin.riskControl.unbanFailed")))}finally{L.value=null}}}async function _a(){if(!(!Ge.value||P.value)){P.value=!0;try{const t=await H.riskControl.deleteFlaggedHash(re.value);re.value="",await J(!0),K.showSuccess(t.deleted?a("admin.riskControl.flaggedHashDeleted"):a("admin.riskControl.flaggedHashNotFound"))}catch(t){K.showError($(t,a("admin.riskControl.flaggedHashDeleteFailed")))}finally{P.value=!1}}}async function ka(){if(!(P.value||!window.confirm(a("admin.riskControl.clearFlaggedHashesConfirm")))){P.value=!0;try{const s=await H.riskControl.clearFlaggedHashes();await J(!0),K.showSuccess(a("admin.riskControl.flaggedHashesCleared",{count:s.deleted}))}catch(s){K.showError($(s,a("admin.riskControl.flaggedHashesClearFailed")))}finally{P.value=!1}}}function ya(){U.value="basic",se.value=!0}function X(){V.page=1,Q()}function ga(t){V.page=t,Q()}function xa(t){V.page=1,V.page_size=t,Q()}function ba(){r.clear_api_key=!r.clear_api_key,r.clear_api_key&&(r.api_keys_text="",r.api_keys_mode="append",q.value=[],F.value=[])}function st(t){r.api_keys_mode=t,t==="replace"&&(F.value=[])}function ha(t){r.model_filter_type=t,t==="all"&&(r.model_filter_models=[])}async function rt(t){const s=t?ve(r.api_keys_text):[];if(t&&s.length===0){K.showError(a("admin.riskControl.apiKeyTestNoInput"));return}B.value=!0;try{const u=await H.riskControl.testAPIKeys({engine:r.engine,thresholds:kt(),api_keys:s,base_url:r.base_url,model:r.model,timeout_ms:Number(r.timeout_ms)||3e3,proxy_id:r.proxy_id??0,prompt:W.value,images:I.value});A.value=u.audit_result??null,t?q.value=u.items.map(p=>({...p,configured:!1})):(va(u.items),q.value=[],await J(!0)),u.items.length===0||u.items.some(p=>p.status==="error"||p.status==="frozen")?K.showError(a("admin.riskControl.apiKeyTestFailed")):K.showSuccess(a("admin.riskControl.apiKeyTestDone",{count:u.items.length}))}catch(u){K.showError($(u,a("admin.riskControl.apiKeyTestFailed")))}finally{B.value=!1}}function va(t){if(!We.value||r.api_key_statuses.length===0){r.api_key_statuses=t;return}const s=new Map(t.map(u=>[u.key_hash,u]));r.api_key_statuses=r.api_key_statuses.map(u=>s.get(u.key_hash)??u)}function fa(t){if(!t.configured||!t.key_hash)return;const s=F.value.indexOf(t.key_hash);if(s>=0){F.value.splice(s,1);return}F.value.push(t.key_hash)}function ne(t){return t.configured&&t.key_hash!==""&&F.value.includes(t.key_hash)}function ot(){const t=new Set(je.value.map(s=>s.key_hash).filter(Boolean));F.value=F.value.filter(s=>t.has(s))}function Ca(){W.value="",I.value=[],A.value=null}function wa(t){I.value.splice(t,1)}async function Ka(t){const s=t.target;await De(s.files),s.value=""}async function Aa(t){var s;await De(((s=t.dataTransfer)==null?void 0:s.files)??null)}async function Sa(t){var u;const s=Array.from(((u=t.clipboardData)==null?void 0:u.files)??[]).filter(p=>p.type.startsWith("image/"));s.length!==0&&(t.preventDefault(),await De(s))}async function De(t){if(!t)return;const s=Array.from(t).filter(u=>u.type.startsWith("image/"));for(const u of s){if(I.value.length>
2=Mt){K.showError(a("admin.riskControl.auditTestImageLimit",{count:Mt}));return}if(u.size>Vd){K.showError(a("admin.riskControl.auditTestImageTooLarge"));continue}try{I.value.push(await Ta(u))}catch{K.showError(a("admin.riskControl.auditTestImageReadFailed"))}}}function Ta(t){return new Promise((s,u)=>{const p=new FileReader;p.onload=()=>s(String(p.result||"")),p.onerror=()=>u(p.error),p.readAsDataURL(t)})}function Ma(t){const s=r.group_ids.indexOf(t);s>=0?r.group_ids.splice(s,1):r.group_ids.push(t)}function lt(t){return r.group_ids.includes(t)}function he(t){const s=Ee.value.find(u=>u.value===t);return(s==null?void 0:s.label)??t}function za(t){return{pre_block:a("admin.riskControl.modePreBlockDesc"),observe:a("admin.riskControl.modeObserveDesc"),off:a("admin.riskControl.modeOffDesc")}[t]??""}function nt(t){return t.action==="cyber_policy"?a("admin.riskControl.action.cyberPolicy"):t.action==="keyword_block"?a("admin.riskControl.action.keywordBlock"):t.action==="block"?a("admin.riskControl.action.block"):t.action==="error"||t.error?a("admin.riskControl.action.error"):t.flagged?a("admin.riskControl.result.hit"):a("admin.riskControl.result.pass")}function it(t){return t.action==="block"||t.action==="keyword_block"||t.action==="cyber_policy"?"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300":t.action==="error"||t.error?"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300":t.flagged?"bg-pink-100 text-pink-700 dark:bg-pink-900/30 dark:text-pink-300":"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-300"}function Fa(t){return t==="active"?"border-sky-200 bg-sky-50 text-sky-700 dark:border-sky-900/60 dark:bg-sky-900/20 dark:text-sky-300":t==="idle"?"border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-900/60 dark:bg-emerald-900/20 dark:text-emerald-300":"border-gray-100 bg-white text-gray-400 dark:border-dark-700 dark:bg-dark-800 dark:text-gray-500"}function Va(t){return t==="active"?"bg-sky-500":t==="idle"?"bg-emerald-500":"bg-gray-300 dark:bg-dark-500"}function Z(t){return Number.isFinite(t)?`${(t*100).toFixed(1)}%`:"-"}function dt(t){return Number.isFinite(t)?`${Math.min(100,Math.max(0,t*100)).toFixed(1)}%`:"0%"}function ja(t){return t==null?"-":`${t} ms`}function Ha(t,s){return`${t.configured?"saved":"test"}-${t.key_hash||s}`}function ut(t){const s={ok:a("admin.riskControl.apiKeyStatusOk"),error:a("admin.riskControl.apiKeyStatusError"),frozen:a("admin.riskControl.apiKeyStatusFrozen"),unknown:a("admin.riskControl.apiKeyStatusUnknown")};return s[t]??s.unknown}function Da(t){const s={ok:"bg-emerald-50 text-emerald-700 dark:bg-emerald-900/20 dark:text-emerald-300",error:"bg-amber-50 text-amber-700 dark:bg-amber-900/20 dark:text-amber-300",frozen:"bg-red-50 text-red-700 dark:bg-red-900/20 dark:text-red-300",unknown:"bg-gray-100 text-gray-600 dark:bg-dark-700 dark:text-gray-300"};return s[t]??s.unknown}function ct(t){const s={ok:"bg-emerald-500",error:"bg-amber-500",frozen:"bg-red-500",unknown:"bg-gray-400"};return s[t]??s.unknown}function Ba(t){const s=[];return s.push(a("admin.riskControl.apiKeyFailureCount",{count:t.failure_count||0})),t.last_latency_ms>0&&s.push(a("admin.riskControl.apiKeyLatency",{ms:t.last_latency_ms})),t.last_http_status>0&&s.push(a("admin.riskControl.apiKeyHTTPStatus",{status:t.last_http_status})),t.frozen_until?s.push(a("admin.riskControl.apiKeyFrozenUntil",{time:ie(t.frozen_until)})):t.last_checked_at?s.push(a("admin.riskControl.apiKeyLastChecked",{time:ie(t.last_checked_at)})):s.push(a("admin.riskControl.apiKeyNotTested")),s.join(" / ")}function ve(t){return t.split(/\r?\n/).map(s=>s.trim()).filter((s,u,p)=>s&&p.indexOf(s)===u)}function Pa(t){return t==="keyword_only"||t==="api_only"||t==="keyword_and_api"?t:"keyword_and_api"}function Ua(t){if(!t||typeof t!="object")return{type:"all",models:[]};const s=t,u=mt(s.type),p=u==="all"?[]:pt(s.models);return{type:u,models:p}}function mt(t){return t==="include"||t==="exclude"||t==="all"?t:"all"}function pt(t){if(!Array.isArray(t))return[];const s=new Set,u=[];for(const p of t){const h=String(p??"").trim();if(!h)continue;const S=h.toLowerCase();s.has(S)||(s.add(S),u.push(h))}return u}function Ia(){const t=mt(r.model_filter_type);return t==="all"?{type:"all",models:[]}:{type:t,models:pt(r.model_filter_models)}}function _t(t){const s={...O};for(const u of pe){const p=t==null?void 0:t[u];Number.isFinite(p)&&(s[u]=fe(Number(p)*100))}return s}function kt(){const t={};for(const s of pe)t[s]=Number((fe(r.thresholds[s])/100).toFixed(4));return t}function Ra(){r.thresholds={...O}}function fe(t){const s=Number(t);return Number.isFinite(s)?Math.min(100,Math.max(0,s)):0}function yt(t){return`${fe(t).toFixed(1)}%`}function $a(t){const s=new Set,u=[];for(const p of t.split(/\r?\n/)){const h=p.trim();if(!h)continue;const S=h.toLowerCase();s.has(S)||(s.add(S),u.push(h))}return u}function Ea(t){return t.flagged?t.violation_count===0?a("admin.r
2iskControl.violationNotCounted"):a("admin.riskControl.violationCount",{count:t.violation_count||1}):"-"}function gt(t){if(!t)return;const s=new Date(t);if(!Number.isNaN(s.getTime()))return s.toISOString()}function ie(t){return Ja(t)||"-"}function v(t){return new Intl.NumberFormat().format(t)}return La(()=>{da(),ge=window.setInterval(()=>{J(!0)},15e3)}),qa(()=>{ge!==null&&(window.clearInterval(ge),ge=null)}),(t,s)=>(d(),we(Ga,null,{default:ce(()=>{var u,p,h,S,de,ue,Be,ee,xt,bt,ht,vt,ft,Ct,wt;return[e("div",ts,[Se.value?(d(),c("div",as,[...s[44]||(s[44]=[e("div",{class:"h-8 w-8 animate-spin rounded-full border-b-2 border-primary-600"},null,-1)])])):(d(),c(z,{key:1},[e("div",ss,[e("div",null,[e("h1",rs,o(l(a)("admin.riskControl.title")),1),e("p",os,o(l(a)("admin.riskControl.description")),1)]),e("div",ls,[e("button",{type:"button",class:"btn btn-secondary inline-flex items-center gap-2",disabled:_e.value,onClick:s[0]||(s[0]=i=>J(!1))},[k(x,{name:"refresh",size:"sm",class:g(_e.value?"animate-spin":"")},null,8,["class"]),T(" "+o(l(a)("admin.riskControl.refreshStatus")),1)],8,ns),e("button",{type:"button",class:"btn btn-primary inline-flex items-center gap-2",onClick:ya},[k(x,{name:"cog",size:"sm"}),T(" "+o(l(a)("admin.riskControl.openSettings")),1)])])]),e("p",is,o(l(a)("admin.riskControl.activeEngine",{engine:ye(((u=m.value)==null?void 0:u.engine)??le.value)})),1),(p=m.value)!=null&&p.enabled&&m.value.risk_control_enabled&&m.value.mode!=="off"&&m.value.pre_block_api_key_available_count===0?(d(),c("p",ds,o(l(a)("admin.riskControl.engineUnavailable")),1)):y("",!0),e("div",us,[(d(!0),c(z,null,j(Yt.value,i=>(d(),c("div",{key:i.key,class:"rounded-lg border border-gray-100 bg-white px-4 py-3 shadow-sm dark:border-dark-700 dark:bg-dark-800"},[e("div",cs,[e("div",{class:g(["flex h-9 w-9 flex-shrink-0 items-center justify-center rounded-lg",i.iconClass])},[k(x,{name:i.icon,size:"sm"},null,8,["name"])],2),e("div",ms,[e("div",ps,[e("p",_s,o(i.label),1),i.badge?(d(),c("span",{key:0,class:g(["inline-flex flex-shrink-0 items-center rounded-full px-2 py-0.5 text-xs font-medium",i.badgeClass])},o(i.badge),3)):y("",!0)]),e("div",ks,[e("p",ys,o(i.value),1),i.meta?(d(),c("p",gs,o(i.meta),1)):y("",!0)])])])]))),128))]),ea.value?(d(),c("div",xs,[e("div",bs,[e("div",hs,[e("div",null,[e("h2",vs,o(l(a)("admin.riskControl.preBlockSyncStatus")),1),e("p",fs,o(l(a)("admin.riskControl.preBlockSyncHint")),1)]),e("span",Cs,o(he(((h=m.value)==null?void 0:h.mode)??r.mode)),1)]),e("div",ws,[e("div",Ks,[(d(!0),c(z,null,j(aa.value,i=>(d(),c("div",{key:i.key,class:g(["rounded-lg p-4",i.class])},[e("p",As,o(i.label),1),e("p",{class:g(["mt-2 truncate text-2xl font-semibold leading-8",i.valueClass])},o(i.value),3),i.meta?(d(),c("p",Ss,o(i.meta),1)):y("",!0)],2))),128))])])]),e("div",Ts,[e("div",Ms,[e("div",null,[e("h2",zs,o(l(a)("admin.riskControl.preBlockAPIKeyLoad")),1),e("p",Fs,o(l(a)("admin.riskControl.preBlockAPIKeyLoadHint")),1)]),e("span",Vs,o(ra.value),1)]),e("div",js,[He.value.length>0?(d(),c("div",Hs,[(d(!0),c(z,null,j(He.value,i=>(d(),c("div",{key:i.key_hash||i.index,class:"rounded-lg bg-gray-50 p-3 dark:bg-dark-700/50"},[e("div",Ds,[e("div",Bs,[e("div",Ps,[e("span",Us,"#"+o(i.index+1),1),e("span",Is,o(i.masked||"-"),1),e("span",{class:g(["h-2 w-2 flex-shrink-0 rounded-full",ct(i.status)])},null,2)]),e("p",Rs,o(l(a)("admin.riskControl.preBlockAPIKeyTotals",{total:v(i.total),success:v(i.success),errors:v(i.errors)})),1)]),e("div",$s,[e("div",null,[e("p",null,o(l(a)("admin.riskControl.preBlockKeyActiveShort")),1),e("p",Es,o(v(i.active)),1)]),e("div",null,[e("p",null,o(l(a)("admin.riskControl.preBlockKeyTotalShort")),1),e("p",Ns,o(v(i.total)),1)]),e("div",null,[e("p",null,o(l(a)("admin.riskControl.preBlockKeyAvgShort")),1),e("p",Os,o(v(i.avg_latency_ms))+" ms",1)]),e("div",null,[e("p",null,o(l(a)("admin.riskControl.preBlockKeyLastShort")),1),e("p",Ls,o(v(i.last_latency_ms))+" ms",1)])])]),e("div",qs,[e("div",{class:"h-full rounded-full bg-sky-500",style:Ke({width:oa(i.total)})},null,4)])]))),128))])):(d(),c("p",Ws,o(l(a)("admin.riskControl.preBlockAPIKeyLoadEmpty")),1))])])])):y("",!0),ta.value?(d(),c("div",Gs,[e("div",Ys,[e("div",null,[e("h2",Js,o(l(a)("admin.r
2iskControl.workerStatus")),1),e("p",Qs,o(l(a)("admin.riskControl.workerStatusHint")),1)]),e("div",Xs,[e("span",null,o(l(a)("admin.riskControl.autoRefresh")),1),(S=m.value)!=null&&S.last_cleanup_at?(d(),c("span",Zs,o(l(a)("admin.riskControl.lastCleanup",{time:ie(m.value.last_cleanup_at)})),1)):y("",!0)])]),e("div",er,[e("div",tr,[e("div",ar,[e("div",sr,[e("div",null,[e("p",rr,o(l(a)("admin.riskControl.queueUsage")),1),e("p",or,o(v(((de=m.value)==null?void 0:de.queue_length)??0))+" / "+o(v(((ue=m.value)==null?void 0:ue.queue_size)??r.queue_size)),1)]),e("span",lr,o(Xe.value),1)]),e("div",nr,[e("div",{class:"h-full rounded-full bg-primary-500 transition-all duration-300",style:Ke(Zt.value)},null,4)])]),e("div",ir,[e("div",dr,[e("p",ur,o(l(a)("admin.riskControl.activeWorkers")),1),e("p",cr,o(((Be=m.value)==null?void 0:Be.active_workers)??0),1)]),e("div",mr,[e("p",pr,o(l(a)("admin.riskControl.idleWorkers")),1),e("p",_r,o(((ee=m.value)==null?void 0:ee.idle_workers)??r.worker_count),1)]),e("div",kr,[e("p",yr,o(l(a)("admin.r
2iskControl.processed")),1),e("p",gr,o(v(((xt=m.value)==null?void 0:xt.processed)??0)),1)]),e("div",xr,[e("p",br,o(l(a)("admin.riskControl.droppedErrors")),1),e("p",hr,o(v((((bt=m.value)==null?void 0:bt.dropped)??0)+(((ht=m.value)==null?void 0:ht.errors)??0))),1)])])]),e("div",null,[e("div",vr,[e("div",null,[e("p",fr,o(l(a)("admin.riskControl.workerPool")),1),e("p",Cr,o(l(a)("admin.riskControl.workerPoolMeta",{active:((vt=m.value)==null?void 0:vt.active_workers)??0,idle:((ft=m.value)==null?void 0:ft.idle_workers)??r.worker_count,total:((Ct=m.value)==null?void 0:Ct.worker_count)??r.worker_count})),1)]),e("span",wr,o(he(((wt=m.value)==null?void 0:wt.mode)??r.mode)),1)]),e("div",Kr,[(d(!0),c(z,null,j(la.value,i=>(d(),c("div",{key:i.id,class:g(["flex h-12 items-center justify-between rounded-lg border px-3 transition-colors",Fa(i.state)]),title:i.label},[e("span",Sr,"#"+o(i.id),1),e("span",{class:g(["h-2.5 w-2.5 rounded-full",Va(i.state)])},null,2)],10,Ar))),128))])])])])):y("",!0),e("div",Tr,[e("div",Mr,[e("div",zr,[e("div",null,[e("h2",Fr,o(l(a)("admin.riskControl.records")),1),e("p",Vr,o(l(a)("admin.riskControl.recordsHint")),1)]),e("button",{type:"button",class:"btn btn-secondary inline-flex items-center gap-2",disabled:ae.value,onClick:Q},[k(x,{name:"refresh",size:"sm",class:g(ae.value?"animate-spin":"")},null,8,["class"]),T(" "+o(l(a)("admin.riskControl.refresh")),1)],8,jr)]),e("div",Hr,[e("div",Dr,[k(x,{name:"filter",size:"sm",class:"flex-shrink-0 text-gray-400"}),e("span",Br,o(l(a)("admin.riskControl.modelFilter")),1),e("span",Pr,o(ze.value),1)]),Fe.value.length>0?(d(),c("div",Ur,[(d(!0),c(z,null,j(Fe.value,i=>(d(),c("span",{key:i,class:"inline-flex max-w-[180px] items-center truncate rounded-md bg-white px-2 py-1 font-mono text-xs text-gray-600 shadow-sm dark:bg-dark-800 dark:text-gray-300"},o(i),1))),128)),Ne.value>0?(d(),c("span",Ir," +"+o(Ne.value),1)):y("",!0)])):y("",!0)]),e("div",Rr,[k(me,{modelValue:M.result,"onUpdate:modelValue":s[1]||(s[1]=i=>M.result=i),options:Ut.value,onChange:X},null,8,["modelValue","options"]),k(me,{modelValue:M.group_id,"onUpdate:modelValue":s[2]||(s[2]=i=>M.group_id=i),options:Rt.value,onChange:X},null,8,["modelValue","options"]),k(me,{modelValue:M.endpoint,"onUpdate:modelValue":s[3]||(s[3]=i=>M.endpoint=i),options:It.value,onChange:X},null,8,["modelValue","options"]),C(e("input",{"onUpdate:modelValue":s[4]||(s[4]=i=>M.search=i),type:"search",class:"input",placeholder:l(a)("admin.riskControl.filters.search"),onKeyup:Wa(X,["enter"])},null,40,$r),[[w,M.search,void 0,{trim:!0}]]),C(e("input",{"onUpdate:modelValue":s[5]||(s[5]=i=>M.from=i),type:"datetime-local",class:"input",title:l(a)("admin.riskControl.filters.from"),onChange:X},null,40,Er),[[w,M.from]]),C(e("input",{"onUpdate:modelValue":s[6]||(s[6]=i=>M.to=i),type:"datetime-local",class:"input",title:l(a)("admin.riskControl.filters.to"),onChange:X},null,40,Nr),[[w,M.to]])])]),e("div",Or,[e("table",Lr,[e("thead",qr,[e("tr",null,[e("th",Wr,o(l(a)("admin.riskControl.table.time")),1),e("th",Gr,o(l(a)("admin.riskControl.table.group")),1),e("th",Yr,o(l(a)("admin.riskControl.table.user")),1),e("th",Jr,o(l(a)("admin.riskControl.table.apiKey")),1),e("th",Qr,o(l(a)("admin.riskControl.table.endpoint")),1),e("th",Xr,o(l(a)("admin.riskControl.table.result")),1),e("th",Zr,o(l(a)("admin.riskControl.table.highest")),1),e("th",eo,o(l(a)("admin.riskControl.table.actionMeta")),1),e("th",to,o(l(a)("admin.riskControl.table.latency")),1),e("th",ao,o(l(a)("admin.riskControl.table.input")),1)])]),e("tbody",so,[ae.value?(d(),c("tr",ro,[e("td",oo,o(l(a)("common.loading")),1)])):oe.value.length===0?(d(),c("tr",lo,[e("td",no,o(l(a)("admin.riskControl.emptyLogs")),1)])):(d(!0),c(z,{key:2},j(oe.value,i=>(d(),c("tr",{key:i.id,class:"hover:bg-gray-50 dark:hover:bg-dark-700/60"},[e("td",io,o(ie(i.created_at)),1),e("td",uo,o(i.group_name||"-"),1),e("td",co,[e("div",null,o(i.user_email||"-"),1),i.user_id?(d(),c("div",mo,"UID "+o(i.user_id),1)):y("",!0)]),e("td",po,o(i.api_key_name||"-"),1),e("td",_o,[e("div",null,o(i.endpoint||"-"),1),e("div",ko,o(i.provider||"-")+" / "+o(i.model||"-"),1)]),e("td",yo,[e("span",{class:g(["inline-flex rounded-md px-2 py-1 text-xs font-medium",it(i)])},o(nt(i)),3)]),e("td",go,[e("div",null,o(i.highest_category||"-"),1),e("div",xo,o(Z(i.highest_score)),1
2),i.matched_keyword?(d(),c("div",{key:0,class:"mt-0.5 text-xs font-medium text-red-600 dark:text-red-300",title:l(a)("admin.riskControl.matchedKeyword")+": "+i.matched_keyword},o(l(a)("admin.riskControl.matchedKeyword"))+": "+o(i.matched_keyword),9,bo)):y("",!0)]),e("td",ho,[e("div",null,o(Ea(i)),1),e("div",vo,[T(o(i.email_sent?l(a)("admin.riskControl.emailSent"):l(a)("admin.riskControl.emailNotSent"))+" ",1),i.auto_banned?(d(),c("span",fo," / "+o(l(a)("admin.riskControl.autoBanned")),1)):y("",!0)]),ca(i)?(d(),c("button",{key:0,type:"button",class:"mt-2 inline-flex items-center gap-1 rounded-md border border-emerald-200 bg-emerald-50 px-2 py-1 text-xs font-medium text-emerald-700 transition-colors hover:bg-emerald-100 disabled:cursor-not-allowed disabled:opacity-60 dark:border-emerald-900/60 dark:bg-emerald-900/20 dark:text-emerald-300 dark:hover:bg-emerald-900/30",disabled:L.value===i.user_id,onClick:Ce=>pa(i)},[k(x,{name:"checkCircle",size:"xs",class:g(L.value===i.user_id?"animate-spin":"")},null,8,["class"]),T(" "+o(L.value===i.user_id?l(a)("common.processing"):l(a)("admin.riskControl.unbanUser")),1)],8,Co)):y("",!0)]),e("td",wo,[e("div",null,o(ja(i.upstream_latency_ms)),1),i.queue_delay_ms!==null&&i.queue_delay_ms!==void 0?(d(),c("div",Ko,o(l(a)("admin.riskControl.queueDelay",{ms:i.queue_delay_ms})),1)):y("",!0)]),e("td",Ao,[e("button",{type:"button",class:"group flex w-full min-w-0 items-center gap-2 rounded-lg px-2 py-1.5 text-left transition-colors hover:bg-gray-100 dark:hover:bg-dark-700",title:tt(i),onClick:Ce=>ma(i)},[e("span",To,o(tt(i)),1),k(x,{name:"eye",size:"xs",class:"flex-shrink-0 text-gray-300 transition-colors group-hover:text-primary-500 dark:text-gray-500"})],8,So)])]))),128))])])]),V.total>0?(d(),we(Qa,{key:0,page:V.page,total:V.total,"page-size":V.page_size,"onUpdate:page":ga,"onUpdate:pageSize":xa},null,8,["page","total","page-size"])):y("",!0)])],64)),k(Tt,{show:se.value,title:l(a)("admin.riskControl.settingsTitle"),width:"extra-wide",onClose:s[43]||(s[43]=i=>se.value=!1)},{footer:ce(()=>[e("div",rd,[e("button",{type:"button",class:"btn btn-secondary",onClick:s[42]||(s[42]=i=>se.value=!1)},o(l(a)("common.cancel")),1),e("button",{type:"button",class:"btn btn-primary inline-flex items-center gap-2",disabled:E.value,onClick:ua},[E.value?(d(),we(x,{key:0,name:"refresh",size:"sm",class:"animate-spin"})):(d(),we(x,{key:1,name:"check",size:"sm"})),T(" "+o(E.value?l(a)("common.saving"):l(a)("admin.riskControl.saveConfig")),1)],8,od)])]),default:ce(()=>{var i,Ce,Kt,At;return[e("div",Mo,[e("div",zo,[(d(!0),c(z,null,j(Dt.value,n=>(d(),c("button",{key:n.id,type:"button",class:g(["inline-flex whitespace-nowrap rounded-lg px-3 py-2 text-sm font-medium transition-colors",U.value===n.id?"bg-primary-50 text-primary-700 dark:bg-primary-900/30 dark:text-primary-300":"text-gray-500 hover:bg-gray-50 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-dark-700 dark:hover:text-white"]),onClick:D=>U.value=n.id},o(n.label),11,Fo))),128))]),U.value==="basic"?(d(),c("div",Vo,[e("div",jo,[e("div",Ho,[e("div",null,[e("p",Do,o(l(a)("admin.riskControl.enabled")),1),e("p",Bo,o(l(a)("admin.riskControl.enabledHint")),1)]),k(te,{modelValue:r.enabled,"onUpdate:modelValue":s[7]||(s[7]=n=>r.enabled=n)},null,8,["modelValue"])]),e("div",null,[e("label",Po,o(l(a)("admin.riskControl.mode")),1),k(me,{modelValue:r.mode,"onUpdate:modelValue":s[8]||(s[8]=n=>r.mode=n),options:Ee.value},null,8,["modelValue","options"]),e("p",Uo,o(za(r.mode)),1)]),e("div",null,[e("label",Io,o(l(a)("admin.riskControl.engine")),1),k(me,{"data-test":"audit-engine-select","model-value":r.engine,options:Ft,disabled:B.value||E.value,"onUpdate:modelValue":jt},null,8,["model-value","disabled"])]),r.engine==="typesafe"?(d(),c("div",Ro,o(l(a)("admin.riskControl.typeSafeNotice")),1)):y("",!0),e("div",null,[e("label",$o,o(l(a)("admin.riskControl.baseUrl")),1),C(e("input",{"onUpdate:modelValue":s[9]||(s[9]=n=>r.base_url=n),"data-test":"audit-base-url",type:"url",class:"input",placeholder:r.engine==="typesafe"?"https://api.typesafe.ai":"https://api.openai.com"},null,8,Eo),[[w,r.base_url,void 0,{trim:!0}
2]])]),e("div",null,[e("label",No,o(l(a)("admin.riskControl.model")),1),C(e("input",{"onUpdate:modelValue":s[10]||(s[10]=n=>r.model=n),"data-test":"audit-model",type:"text",class:"input",placeholder:r.engine==="typesafe"?"jev-latest":"omni-moderation-latest"},null,8,Oo),[[w,r.model,void 0,{trim:!0}]])]),e("div",null,[e("label",Lo,o(l(a)("admin.riskControl.timeoutMs")),1),C(e("input",{"onUpdate:modelValue":s[11]||(s[11]=n=>r.timeout_ms=n),type:"number",min:"500",max:"30000",class:"input"},null,512),[[w,r.timeout_ms,void 0,{number:!0}]])]),e("div",null,[e("label",qo,o(l(a)("admin.riskControl.retryCount")),1),C(e("input",{"onUpdate:modelValue":s[12]||(s[12]=n=>r.retry_count=n),type:"number",min:"0",max:"5",class:"input"},null,512),[[w,r.retry_count,void 0,{number:!0}]])]),e("div",null,[e("label",Wo,o(l(a)("admin.riskControl.sampleRate")),1),e("div",Go,[C(e("input",{"onUpdate:modelValue":s[13]||(s[13]=n=>r.sample_rate=n),type:"number",min:"0",max:"100",step:"1",class:"input pr-8"},null,512),[[w,r.sample_rate,void 0,{number:!0}]]),s[45]||(s[45]=e("span",{class:"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-gray-400"},"%",-1))])]),e("div",null,[e("label",Yo,o(l(a)("admin.riskControl.proxy")),1),k(Za,{modelValue:r.proxy_id,"onUpdate:modelValue":s[14]||(s[14]=n=>r.proxy_id=n),proxies:Ie.value},null,8,["modelValue","proxies"]),e("p",Jo,o(l(a)("admin.riskControl.proxyHint")),1)])]),e("div",Qo,[e("div",Xo,[e("div",Zo,[e("span",el,[k(x,{name:"key",size:"md"})]),e("div",null,[e("label",tl,o(l(a)("admin.riskControl.apiKeys")),1),e("p",al,o(l(a)("admin.riskControl.apiKeysHint",{count:r.api_key_count})),1)])]),e("div",sl,[e("button",{type:"button",class:"btn btn-secondary inline-flex items-center gap-2",disabled:B.value||Le.value===0||r.clear_api_key,onClick:s[15]||(s[15]=n=>rt(!0))},[k(x,{name:"beaker",size:"sm",class:g(B.value?"animate-pulse":"")},null,8,["class"]),T(" "+o(B.value?l(a)("admin.riskControl.testingApiKeys"):l(a)("admin.riskControl.testInputApiKeys")),1)],8,rl),e("button",{type:"button",class:"btn btn-secondary inline-flex items-center gap-2",disabled:B.value||Ve.value===0||be.value>0||r.clear_api_key||r.api_keys_mode==="replace",onClick:s[16]||(s[16]=n=>rt(!1))},[k(x,{name:"shield",size:"sm"}),T(" "+o(Lt.value),1)],8,ol),r.api_key_configured?(d(),c("button",{key:0,type:"button",class:"btn btn-secondary inline-flex items-center gap-2",onClick:ba},[k(x,{name:r.clear_api_key?"x":"trash",size:"sm"},null,8,["name"]),T(" "+o(r.clear_api_key?l(a)("admin.riskControl.keepApiKey"):l(a)("admin.riskControl.clearApiKey")),1)])):y("",!0)])]),e("div",ll,[e("div",nl,[e("div",il,[e("div",dl,[e("span",ul,o(l(a)("admin.riskControl.apiKeysWriteMode")),1),e("span",cl,o(Ot.value),1)]),e("div",ml,[e("button",{type:"button",class:g(["rounded-md px-3 py-1.5 text-xs font-medium transition-colors",r.api_keys_mode==="append"?"bg-primary-500 text-white shadow-sm":"text-gray-600 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-dark-700"]),disabled:r.clear_api_key,onClick:s[17]||(s[17]=n=>st("append"))},o(l(a)("admin.riskControl.apiKeysModeAppend")),11,pl),e("button",{type:"button",class:g(["rounded-md px-3 py-1.5 text-xs font-medium transition-colors",r.api_keys_mode==="replace"?"bg-amber-500 text-white shadow-sm":"text-gray-600 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-dark-700"]),disabled:r.clear_api_key,onClick:s[18]||(s[18]=n=>st("replace"))},o(l(a)("admin.riskControl.apiKeysModeReplace")),11,_l)])]),C(e("textarea",{"onUpdate:modelValue":s[19]||(s[19]=n=>r.api_keys_text=n),class:"input min-h-44 resize-y font-mono text-sm",placeholder:Nt.value,autocomplete:"new-password",disabled:r.clear_api_key},null,8,kl),[[w,r.api_keys_text]]),e("div",yl,[e("span",gl,o(l(a)("admin.riskControl.inputApiKeyCount",{count:Le.value})),1),r.api_key_configured?(d(),c("span",xl,o(l(a)("admin.riskControl.storedApiKeyCount",{count:r.api_key_count})),1)):y("",!0),r.clear_api_key?(d(),c("span",bl,o(l(a)("admin.riskControl.apiKeyWillClear")),1)):be.value>0?(d(),c("span",hl,o(l(a)("admin.riskControl.apiKeyPendingDeleteCount",{count:be.value})),1)):y("",!0),r.api_keys_mode==="replace"?(d(),c("span",vl,o(l(a)("admin.r
2iskControl.apiKeysReplaceWarning")),1)):y("",!0)]),e("div",{class:"rounded-lg border border-gray-100 bg-gray-50 p-3 dark:border-dark-700 dark:bg-dark-900/30",onPaste:Sa},[e("div",fl,[e("div",null,[e("p",Cl,o(l(a)("admin.riskControl.auditTestInput")),1),e("p",wl,o(l(a)("admin.riskControl.auditTestInputHint")),1)]),W.value||I.value.length>0||A.value?(d(),c("button",{key:0,type:"button",class:"inline-flex items-center gap-1 rounded-md px-2 py-1 text-xs font-medium text-gray-500 hover:bg-white hover:text-gray-900 dark:text-gray-400 dark:hover:bg-dark-800 dark:hover:text-white",onClick:Ca},[k(x,{name:"x",size:"xs"}),T(" "+o(l(a)("admin.riskControl.clearAuditTest")),1)])):y("",!0)]),C(e("textarea",{"onUpdate:modelValue":s[20]||(s[20]=n=>W.value=n),class:"input min-h-24 resize-y text-sm",placeholder:l(a)("admin.riskControl.auditTestPromptPlaceholder")},null,8,Kl),[[w,W.value]]),e("div",{class:"mt-3 rounded-lg border border-dashed border-gray-200 bg-white p-3 dark:border-dark-700 dark:bg-dark-800",onDragover:s[21]||(s[21]=St(()=>{},["prevent"])),onDrop:St(Aa,["prevent"])},[e("div",Al,[e("div",Sl,[k(x,{name:"upload",size:"md",class:"mt-0.5 text-gray-400"}),e("div",null,[e("p",Tl,o(l(a)("admin.riskControl.auditTestImages")),1),e("p",Ml,o(l(a)("admin.riskControl.auditTestImagesHint")),1)])]),e("label",zl,[k(x,{name:"plus",size:"sm"}),T(" "+o(l(a)("admin.riskControl.addAuditTestImage"))+" ",1),e("input",{type:"file",accept:"image/*",multiple:"",class:"sr-only",onChange:Ka},null,32)])]),I.value.length>0?(d(),c("div",Fl,[(d(!0),c(z,null,j(I.value,(n,D)=>(d(),c("div",{key:n.slice(0,64)+D,class:"group relative aspect-square overflow-hidden rounded-lg border border-gray-100 bg-gray-100 dark:border-dark-700 dark:bg-dark-700"},[e("img",{src:n,alt:"",class:"h-full w-full object-cover"},null,8,Vl),e("button",{type:"button",class:"absolute right-1.5 top-1.5 flex h-7 w-7 items-center justify-center rounded-full bg-black/60 text-white opacity-0 transition-opacity group-hover:opacity-100",onClick:Na=>wa(D)},[k(x,{name:"x",size:"xs","stroke-width":2})],8,jl)]))),128))])):y("",!0)],32)],32)]),e("div",Hl,[e("div",Dl,[e("div",Bl,[e("p",Pl,o(l(a)("admin.riskControl.apiKeyHealth")),1),e("p",Ul,o(l(a)("admin.riskControl.apiKeyFreezeRule")),1)]),e("span",Il,o(l(a)("admin.riskControl.apiKeyRows",{count:N.value.length})),1)]),N.value.length===0?(d(),c("div",Rl,[k(x,{name:"infoCircle",size:"lg",class:"text-gray-300 dark:text-dark-500"}),e("p",$l,o(l(a)("admin.riskControl.apiKeyHealthEmpty")),1),e("p",El,o(l(a)("admin.riskControl.apiKeyHealthEmptyHint")),1)])):(d(),c("div",Nl,[e("div",{class:g(["space-y-2",R.value?"max-h-72 overflow-y-auto pr-1":""])},[(d(!0),c(z,null,j(Ye.value,(n,D)=>(d(),c("div",{key:Ha(n,D),class:g(["rounded-lg border bg-white p-2.5 shadow-sm dark:bg-dark-800",ne(n)?"border-amber-200 opacity-70 dark:border-amber-800/60":"border-gray-100 dark:border-dark-700"])},[e("div",Ol,[e("div",Ll,[e("div",ql,[e("span",Wl,o(n.masked||"-"),1),e("span",{class:g(["inline-flex rounded-md px-1.5 py-0.5 text-[11px] font-medium",n.configured?"bg-primary-50 text-primary-700 dark:bg-primary-900/30 dark:text-primary-300":"bg-purple-50 text-purple-700 dark:bg-purple-900/30 dark:text-purple-300"])},o(ne(n)?l(a)("admin.riskControl.apiKeyPendingDelete"):n.configured?l(a)("admin.riskControl.apiKeyConfigured"):l(a)("admin.riskControl.apiKeyTemporary")),3)]),e("p",Gl,o(Ba(n)),1)]),e("div",Yl,[e("span",{class:g(["inline-flex items-center gap-1.5 whitespace-nowrap rounded-full px-2 py-0.5 text-xs font-medium",Da(n.status)])},[e("span",{class:g(["h-1.5 w-1.5 rounded-full",ct(n.status)])},null,2),T(" "+o(ut(n.status)),1)],2),n.configured&&!r.clear_api_key?(d(),c("button",{key:0,type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded-md text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:hover:bg-dark-700 dark:hover:text-gray-200",title:ne(n)?l(a)("admin.riskControl.undoDeleteApiKey"):l(a)("admin.riskControl.deleteApiKey"),onClick:Na=>fa(n)},[k(x,{name:ne(n)?"refresh":"trash",size:"xs"},null,8,["name"])],8,Jl)):y("",!0)])]),n.last_error?(d(),c("p",Ql,o(n.last_error),1)):y("",!0)],2))),128))],2),Wt.value?(d(),c("div",Xl,[e("span",Zl,o(R.value?l(a)("admin.r
2iskControl.apiKeyRowsExpanded",{count:N.value.length}):l(a)("admin.riskControl.apiKeyRowsCollapsed",{count:qt.value})),1),e("button",{type:"button",class:"inline-flex shrink-0 items-center gap-1 rounded-md px-2 py-1 font-medium text-primary-600 transition-colors hover:bg-primary-50 hover:text-primary-700 dark:text-primary-300 dark:hover:bg-primary-900/20",onClick:s[22]||(s[22]=n=>R.value=!R.value)},[k(x,{name:R.value?"chevronUp":"chevronDown",size:"xs"},null,8,["name"]),T(" "+o(R.value?l(a)("admin.riskControl.collapseApiKeyRows"):l(a)("admin.riskControl.expandApiKeyRows")),1)])])):y("",!0)])),A.value?(d(),c("div",en,[A.value.engine_meta?(d(),c("p",tn,[T(o(ye(A.value.engine_meta.engine))+" · "+o(A.value.engine_meta.model)+" · "+o(A.value.engine_meta.rules_version)+" ",1),A.value.engine_meta.skipped_images?(d(),c("span",an," · "+o(l(a)("admin.riskControl.skippedImages",{count:A.value.engine_meta.skipped_images})),1)):y("",!0)])):y("",!0),e("div",sn,[e("div",null,[e("p",rn,o(l(a)("admin.riskControl.auditTestResult")),1),e("p",on,o(l(a)("admin.riskControl.auditTestHighest",{category:A.value.highest_category||"-",score:Z(A.value.highest_score)})),1)]),e("span",{class:g(["inline-flex rounded-full px-2 py-1 text-xs font-medium",A.value.flagged?"bg-red-50 text-red-700 dark:bg-red-900/20 dark:text-red-300":"bg-emerald-50 text-emerald-700 dark:bg-emerald-900/20 dark:text-emerald-300"])},o(A.value.flagged?l(a)("admin.riskControl.auditTestFlagged"):l(a)("admin.riskControl.auditTestPassed")),3)]),e("div",ln,[e("div",nn,[e("span",null,o(l(a)("admin.riskControl.auditTestComposite")),1),e("span",dn,o(Z(A.value.composite_score)),1)]),e("div",un,[e("div",{class:g(["h-full rounded-full",A.value.flagged?"bg-red-500":"bg-emerald-500"]),style:Ke({width:dt(A.value.composite_score)})},null,6)])]),e("div",cn,[(d(!0),c(z,null,j(Jt.value,n=>(d(),c("div",{key:n.category},[e("div",mn,[e("span",pn,o(n.category),1),e("span",_n,o(Z(n.score))+" / "+o(Z(n.threshold)),1)]),e("div",kn,[e("div",{class:g(["h-full rounded-full",n.hit?"bg-red-500":"bg-primary-500"]),style:Ke({width:dt(n.score)})},null,6)])]))),128))])])):y("",!0)])])])])):U.value==="scope"?(d(),c("div",yn,[e("div",gn,[e("div",null,[e("h3",xn,o(l(a)("admin.riskControl.groupScope")),1),e("p",bn,o(l(a)("admin.riskControl.groupScopeHint")),1)]),e("div",hn,[e("button",{type:"button",class:g(["rounded-md px-3 py-1.5 text-sm font-medium transition-colors",r.all_groups?"bg-white text-gray-900 shadow-sm dark:bg-dark-800 dark:text-white":"text-gray-500 dark:text-gray-400"]),onClick:s[23]||(s[23]=n=>r.all_groups=!0)},o(l(a)("admin.riskControl.allGroups")),3),e("button",{type:"button",class:g(["rounded-md px-3 py-1.5 text-sm font-medium transition-colors",r.all_groups?"text-gray-500 dark:text-gray-400":"bg-white text-gray-900 shadow-sm dark:bg-dark-800 dark:text-white"]),onClick:s[24]||(s[24]=n=>r.all_groups=!1)},o(l(a)("admin.riskControl.selectedGroups")),3)])]),r.all_groups?y("",!0):(d(),c("div",vn,[e("div",fn,[k(x,{name:"search",size:"sm",class:"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-gray-400"}),C(e("input",{"onUpdate:modelValue":s[25]||(s[25]=n=>Te.value=n),type:"search",class:"input pl-9",placeholder:l(a)("admin.riskControl.searchGroups")},null,8,Cn),[[w,Te.value,void 0,{trim:!0}]])]),e("div",wn,[(d(!0),c(z,null,j(Oe.value,n=>(d(),c("button",{key:n.id,type:"button",class:g(["flex min-h-20 items-center justify-between rounded-lg border p-4 text-left transition-colors",lt(n.id)?"border-primary-300 bg-primary-50 dark:border-primary-700 dark:bg-primary-900/20":"border-gray-100 hover:bg-gray-50 dark:border-dark-700 dark:hover:bg-dark-700/60"]),onClick:D=>Ma(n.id)},[e("span",An,[e("span",Sn,o(n.name),1),e("span",Tn,o(n.platform),1)]),e("span",{class:g(["flex h-5 w-5 flex-shrink-0 items-center justify-center rounded-full border",lt(n.id)?"border-primary-500 bg-primary-500 text-white":"border-gray-300 text-transparent dark:border-dark-500"])},[k(x,{name:"check",size:"xs","stroke-width":2})],2)],10,Kn))),128)),Oe.value.length===0?(d(),c("p",Mn,o(l(a)("admin.riskControl.noGroups")),1)):y("",!0)])])),e("div",zn,[e("div",Fn,[e("div",null,[e("h3",Vn,o(l(a)("admin.r
2iskControl.modelFilter")),1),e("p",jn,o(l(a)("admin.riskControl.modelFilterHint")),1)]),e("span",Hn,o(ze.value),1)]),e("div",Dn,[(d(!0),c(z,null,j(Pt.value,n=>(d(),c("button",{key:n.value,type:"button",class:g(["rounded-lg border p-3 text-left transition-colors",r.model_filter_type===n.value?"border-primary-300 bg-primary-50 text-primary-900 shadow-sm dark:border-primary-700 dark:bg-primary-900/20 dark:text-primary-100":"border-gray-100 hover:bg-gray-50 dark:border-dark-700 dark:hover:bg-dark-700/60"]),onClick:D=>ha(n.value)},[e("div",Pn,[e("span",Un,o(n.label),1),e("span",{class:g(["flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-full border",r.model_filter_type===n.value?"border-primary-500 bg-primary-500 text-white":"border-gray-300 text-transparent dark:border-dark-500"])},[k(x,{name:"check",size:"xs","stroke-width":2})],2)]),e("p",In,o(n.description),1)],10,Bn))),128))]),r.model_filter_type!=="all"?(d(),c("div",Rn,[e("label",$n,o(l(a)("admin.riskControl.modelFilterModels")),1),k(Xa,{modelValue:r.model_filter_models,"onUpdate:modelValue":s[26]||(s[26]=n=>r.model_filter_models=n)},null,8,["modelValue"]),e("p",En,o(l(a)("admin.riskControl.modelFilterModelCount",{count:Me.value})),1)])):y("",!0)])])):U.value==="runtime"?(d(),c("div",Nn,[e("div",null,[e("label",On,o(l(a)("admin.riskControl.workerCount")),1),C(e("input",{"onUpdate:modelValue":s[27]||(s[27]=n=>r.worker_count=n),type:"number",min:"1",max:"32",class:"input"},null,512),[[w,r.worker_count,void 0,{number:!0}]])]),e("div",null,[e("label",Ln,o(l(a)("admin.riskControl.queueSize")),1),C(e("input",{"onUpdate:modelValue":s[28]||(s[28]=n=>r.queue_size=n),type:"number",min:"100",max:"100000",class:"input"},null,512),[[w,r.queue_size,void 0,{number:!0}]])]),e("div",qn,[e("div",null,[e("p",Wn,o(l(a)("admin.riskControl.recordNonHits")),1),e("p",Gn,o(l(a)("admin.riskControl.recordNonHitsHint")),1)]),k(te,{modelValue:r.record_non_hits,"onUpdate:modelValue":s[29]||(s[29]=n=>r.record_non_hits=n)},null,8,["modelValue"])]),e("div",Yn,[e("div",Jn,[e("div",null,[e("p",Qn,o(l(a)("admin.riskControl.preHashCheck")),1),e("p",Xn,o(l(a)("admin.riskControl.preHashCheckHint")),1)]),k(te,{modelValue:r.pre_hash_check_enabled,"onUpdate:modelValue":s[30]||(s[30]=n=>r.pre_hash_check_enabled=n)},null,8,["modelValue"])]),e("div",Zn,[e("div",ei,[e("div",null,[e("p",ti,o(l(a)("admin.riskControl.flaggedHashCount",{count:v(((i=m.value)==null?void 0:i.flagged_hash_count)??0)})),1),e("p",ai,o(l(a)("admin.riskControl.flaggedHashHint")),1)]),e("button",{type:"button",class:"btn btn-secondary inline-flex items-center justify-center gap-2 text-red-600 hover:text-red-700 dark:text-red-300",disabled:P.value||(((Ce=m.value)==null?void 0:Ce.flagged_hash_count)??0)===0,onClick:ka},[k(x,{name:"trash",size:"sm",class:g(P.value?"animate-pulse":"")},null,8,["class"]),T(" "+o(l(a)("admin.riskControl.clearFlaggedHashes")),1)],8,si)]),e("div",ri,[C(e("input",{"onUpdate:modelValue":s[31]||(s[31]=n=>re.value=n),type:"text",class:"input font-mono text-sm",placeholder:l(a)("admin.riskControl.flaggedHashPlaceholder")},null,8,oi),[[w,re.value,void 0,{trim:!0}]]),e("button",{type:"button",class:"btn btn-secondary inline-flex items-center justify-center gap-2",disabled:P.value||!Ge.value,onClick:_a},[k(x,{name:"trash",size:"sm"}),T(" "+o(l(a)("admin.riskControl.deleteFlaggedHash")),1)],8,li)])])])])):U.value==="response"?(d(),c("div",ni,[e("div",ii,[e("div",null,[e("label",di,o(l(a)("admin.riskControl.blockStatus")),1),C(e("input",{"onUpdate:modelValue":s[32]||(s[32]=n=>r.block_status=n),type:"number",min:"400",max:"599",class:"input"},null,512),[[w,r.block_status,void 0,{number:!0}]])]),e("div",null,[e("label",ui,o(l(a)("admin.riskControl.blockMessage")),1),C(e("input",{"onUpdate:modelValue":s[33]||(s[33]=n=>r.block_message=n),type:"text",class:"input"},null,512),[[w,r.block_message,void 0,{trim:!0}]])]),e("div",ci,[e("div",null,[e("p",mi,o(l(a)("admin.riskControl.emailOnHit")),1),e("p",pi,o(l(a)("admin.riskControl.emailOnHitHint")),1)]),k(te,{modelValue:r.email_on_hit,"onUpdate:modelValue":s[34]||(s[34]=n=>r.email_on_hit=n)},null,8,["modelValue"])]),e("div",_i,[e("div",null,[e("p",ki,o(l(a)("admin.r
2iskControl.autoBan")),1),e("p",yi,o(l(a)("admin.riskControl.autoBanHint")),1)]),k(te,{modelValue:r.auto_ban_enabled,"onUpdate:modelValue":s[35]||(s[35]=n=>r.auto_ban_enabled=n)},null,8,["modelValue"])]),e("div",gi,[e("div",null,[e("p",xi,o(l(a)("admin.riskControl.cyberPolicyExcludeBan")),1),e("p",bi,o(l(a)("admin.riskControl.cyberPolicyExcludeBanHint")),1)]),k(te,{modelValue:r.cyber_policy_exclude_from_ban_count,"onUpdate:modelValue":s[36]||(s[36]=n=>r.cyber_policy_exclude_from_ban_count=n)},null,8,["modelValue"])]),e("div",null,[e("label",hi,o(l(a)("admin.riskControl.banThreshold")),1),C(e("input",{"onUpdate:modelValue":s[37]||(s[37]=n=>r.ban_threshold=n),type:"number",min:"1",max:"1000",class:"input"},null,512),[[w,r.ban_threshold,void 0,{number:!0}]])]),e("div",null,[e("label",vi,o(l(a)("admin.riskControl.violationWindowHours")),1),C(e("input",{"onUpdate:modelValue":s[38]||(s[38]=n=>r.violation_window_hours=n),type:"number",min:"1",max:"8760",class:"input"},null,512),[[w,r.violation_window_hours,void 0,{number:!0}]])])])])):U.value==="riskThresholds"?(d(),c("div",fi,[e("p",Ci,o(ye(r.engine)),1),r.engine==="typesafe"?(d(),c("p",wi,o(l(a)("admin.riskControl.typeSafeThresholds")),1)):y("",!0),e("div",Ki,[e("div",null,[e("h3",Ai,o(l(a)("admin.riskControl.riskThresholds")),1),e("p",Si,o(l(a)("admin.riskControl.riskThresholdsHint")),1)]),e("button",{type:"button",class:"btn btn-secondary inline-flex items-center justify-center gap-2",onClick:Ra},[k(x,{name:"refresh",size:"sm"}),T(" "+o(l(a)("admin.riskControl.riskThresholdReset")),1)])]),e("div",Ti,[(d(!0),c(z,null,j(Qt.value,n=>(d(),c("div",{key:n.category,class:"rounded-lg border border-gray-100 bg-gray-50 p-4 dark:border-dark-700 dark:bg-dark-900/30"},[e("div",Mi,[e("div",zi,[e("label",{class:"block truncate text-sm font-semibold text-gray-900 dark:text-white",for:`risk-threshold-${n.category}`},o(n.category),9,Fi),e("p",Vi,o(l(a)("admin.riskControl.riskThresholdDefault",{value:yt(n.defaultValue)})),1)]),e("span",ji,o(yt(n.value)),1)]),e("div",Hi,[e("label",{class:"sr-only",for:`risk-threshold-${n.category}`},o(l(a)("admin.riskControl.riskThresholdPercent")),9,Di),e("div",Bi,[C(e("input",{id:`risk-threshold-${n.category}`,"onUpdate:modelValue":D=>r.thresholds[n.category]=D,"data-test":`risk-threshold-${n.category}`,type:"number",min:"0",max:"100",step:"0.1",class:"input pr-8 font-mono"},null,8,Pi),[[w,r.thresholds[n.category],void 0,{number:!0}]]),s[46]||(s[46]=e("span",{class:"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-gray-400"},"%",-1))])])]))),128))])])):U.value==="keywords"?(d(),c("div",Ui,[e("div",{class:g(["flex items-start gap-3 rounded-lg border p-4",Y.value.toneClass])},[k(x,{name:Y.value.icon,size:"md",class:g(Y.value.iconClass)},null,8,["name","class"]),e("div",Ii,[e("p",{class:g(["font-medium",Y.value.titleClass])},o(Y.value.title),3),e("p",Ri,o(Y.value.description),1)])],2),e("div",$i,[e("label",Ei,o(l(a)("admin.riskControl.keywordBlockingMode")),1),e("div",Ni,[(d(!0),c(z,null,j(Bt.value,n=>(d(),c("button",{key:n.value,type:"button",class:g(["rounded-lg border p-3 text-left transition-colors",r.keyword_blocking_mode===n.value?"border-primary-300 bg-primary-50 text-primary-900 shadow-sm dark:border-primary-700 dark:bg-primary-900/20 dark:text-primary-100":"border-gray-100 hover:bg-gray-50 dark:border-dark-700 dark:hover:bg-dark-700/60"]),onClick:D=>r.keyword_blocking_mode=n.value},[e("div",Li,[e("span",qi,o(n.label),1),e("span",{class:g(["flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-full border",r.keyword_blocking_mode===n.value?"border-primary-500 bg-primary-500 text-white":"border-gray-300 text-transparent dark:border-dark-500"])},[k(x,{name:"check",size:"xs","stroke-width":2})],2)]),e("p",Wi,o(n.description),1)],10,Oi))),128))])]),e("div",null,[e("div",Gi,[e("label",Yi,o(l(a)("admin.riskControl.blockedKeywords")),1),e("span",Ji,o(l(a)("admin.riskControl.blockedKeywordCount",{count:Et.value})),1)]),C(e("textarea",{"onUpdate:modelValue":s[39]||(s[39]=n=>r.blocked_keywords_text=n),class:"input min-h-52 resize-y font-mono text-sm",placeholder:l(a)("admin.r
2iskControl.blockedKeywordsPlaceholder"),disabled:r.keyword_blocking_mode==="api_only"},null,8,Qi),[[w,r.blocked_keywords_text]]),e("p",Xi,o(l(a)("admin.riskControl.blockedKeywordsLimit",{max:jd})),1)])])):(d(),c("div",Zi,[e("div",null,[e("label",ed,o(l(a)("admin.riskControl.hitRetentionDays")),1),C(e("input",{"onUpdate:modelValue":s[40]||(s[40]=n=>r.hit_retention_days=n),type:"number",min:"1",max:"3650",class:"input"},null,512),[[w,r.hit_retention_days,void 0,{number:!0}]])]),e("div",null,[e("label",td,o(l(a)("admin.riskControl.nonHitRetentionDays")),1),C(e("input",{"onUpdate:modelValue":s[41]||(s[41]=n=>r.non_hit_retention_days=n),type:"number",min:"1",max:"3",class:"input"},null,512),[[w,r.non_hit_retention_days,void 0,{number:!0}]])]),e("div",ad,[e("div",sd,[k(x,{name:"database",size:"md",class:"text-gray-400"}),e("span",null,o(l(a)("admin.riskControl.cleanupStats",{hit:((Kt=m.value)==null?void 0:Kt.last_cleanup_deleted_hit)??0,nonHit:((At=m.value)==null?void 0:At.last_cleanup_deleted_non_hit)??0})),1)])])]))])]}),_:1},8,["show","title"]),k(Tt,{show:b.value!==null,title:l(a)("admin.riskControl.inputDetailTitle"),width:"wide",onClose:at},{footer:ce(()=>[e("div",Fd,[e("button",{type:"button",class:"btn btn-secondary",onClick:at},o(l(a)("common.close")),1)])]),default:ce(()=>[b.value?(d(),c("div",ld,[e("div",nd,[e("span",id,o(l(a)("admin.riskControl.auditSource"))+": ",1),b.value.engine_meta?(d(),c(z,{key:0},[T(o(ye(b.value.engine_meta.engine))+" · "+o(b.value.engine_meta.model||"-")+" · "+o(b.value.engine_meta.rules_version||"-")+" ",1),b.value.engine_meta.skipped_images?(d(),c("span",dd," · "+o(l(a)("admin.riskControl.skippedImages",{count:b.value.engine_meta.skipped_images})),1)):y("",!0)],64)):(d(),c(z,{key:1},[T(o(["cyber_policy","keyword_block","hash_block"].includes(b.value.action)?"-":l(a)("admin.riskControl.legacyAuditSource")),1)],64))]),e("div",ud,[e("div",cd,[e("p",md,o(l(a)("admin.riskControl.table.time")),1),e("p",pd,o(ie(b.value.created_at)),1)]),e("div",_d,[e("p",kd,o(l(a)("admin.riskControl.table.user")),1),e("p",yd,o(b.value.user_email||"-"),1)]),e("div",gd,[e("p",xd,o(l(a)("admin.riskControl.table.result")),1),e("span",{class:g(["mt-1 inline-flex rounded-md px-2 py-1 text-xs font-medium",it(b.value)])},o(nt(b.value)),3)]),e("div",bd,[e("p",hd,o(l(a)("admin.riskControl.table.highest")),1),e("p",vd,o(b.value.highest_category||"-")+" / "+o(Z(b.value.highest_score)),1)]),b.value.matched_keyword?(d(),c("div",fd,[e("p",Cd,o(l(a)("admin.riskControl.matchedKeyword")),1),e("p",{class:"mt-1 truncate text-sm font-semibold text-red-700 dark:text-red-200",title:b.value.matched_keyword},o(b.value.matched_keyword),9,wd)])):y("",!0)]),e("div",Kd,[e("div",Ad,[e("div",null,[e("p",Sd,o(l(a)("admin.riskControl.inputDetailContent")),1),e("p",Td,o(b.value.endpoint||"-")+" · "+o(b.value.provider||"-")+" / "+o(b.value.model||"-"),1)]),b.value.group_name?(d(),c("span",Md,o(b.value.group_name),1)):y("",!0)]),e("pre",zd,o(Xt.value),1)])])):y("",!0)]),_:1},8,["show","title"])])]}),_:1}))}});export{Qd as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.