1import{d as Q,c as J,z as b,B as e,E as q,G as a,u as t,F as N,V as H,H as X,C as g,A as G,r as B,k as I,K as ie,U as we,Q as V,W as L,$ as Xe,q as te,w as pe,a3 as de,h as K,D as ge,R as oe,a5 as Ze,o as et}from"./vendor-vue-Dzwqm9Y9.js";import{_ as tt}from"./AppLayout.vue_vue_type_script_setup_true_lang-DU-NXSvm.js";import{_ as ke}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-G7SCzKKv.js";import{g as be,f as W,a as at}from"./index-BB-1BiLf.js";import{e as ye,b as st}from"./apiError-BcAuv_LF.js";import{u as ae}from"./vendor-i18n-BuoWFzps.js";import{P as nt}from"./Pagination-BuZWDbKf.js";import"./AppHeader.vue_vue_type_style_index_0_scoped_80f3916c_lang-CWJeTQGo.js";import"./vendor-misc-B-nM3tYW.js";import"./useClipboard-00CrFCqB.js";import"./featureFlags-DuhANbyz.js";import"./LocaleSwitcher-DwqRgoPh.js";/* empty css */import"./Select-unWSiPwC.js";import"./usePersistedPageSize-x0WpaIWh.js";const it={"aria-labelledby":"prompt-runtime-title",class:"border-b border-gray-200 py-6 dark:border-dark-700/60"},rt={class:"flex flex-wrap items-start justify-between gap-3"},ot={id:"prompt-runtime-title",class:"text-base font-semibold text-gray-950 dark:text-white"},lt={class:"mt-1 text-sm text-gray-500 dark:text-dark-300"},dt=["disabled"],ut={key:0,role:"alert",class:"mt-5 rounded-lg bg-red-50 px-4 py-3 text-sm text-red-700 dark:bg-red-950/30 dark:text-red-300"},mt={key:1,class:"mt-5 grid grid-cols-2 gap-3 md:grid-cols-3 xl:grid-cols-6","aria-busy":"true"},ct={class:"mt-5 grid grid-cols-2 gap-3 md:grid-cols-3 xl:grid-cols-6"},pt={class:"text-xs text-gray-500 dark:text-dark-400"},gt={class:"mt-1.5 flex items-center gap-2 text-sm font-semibold text-gray-900 dark:text-white"},bt={class:"min-w-0 truncate"},vt={class:"mt-4 grid gap-3 lg:grid-cols-[minmax(0,1.4fr)_minmax(220px,0.6fr)]"},xt={class:"rounded-xl border border-gray-100 px-4 py-3 dark:border-dark-700/60 dark:bg-dark-900/20"},_t={class:"text-sm font-medium text-gray-900 dark:text-white"},kt={class:"mt-3 grid grid-cols-2 gap-2 sm:grid-cols-4"},yt={class:"text-[11px] text-gray-500 dark:text-dark-400"},ht={class:"mt-0.5 text-sm font-semibold tabular-nums text-gray-900 dark:text-white"},ft={class:"mt-3 text-xs leading-5 text-gray-500 dark:text-dark-400"},$t={class:"rounded-xl border border-gray-100 px-4 py-3 dark:border-dark-700/60 dark:bg-dark-900/20"},wt={class:"text-sm font-medium text-gray-900 dark:text-white"},At={class:"mt-2 text-sm text-gray-600 dark:text-dark-300"},Ct={key:0,class:"mt-1 break-words text-sm text-red-600 dark:text-red-300"},Dt={key:0},St={key:1,class:"mt-3 flex flex-wrap gap-2"},Vt=Q({__name:"RuntimeOverview",props:{runtime:{},loading:{type:Boolean},error:{}},emits:["refresh"],setup(n){const r=n,{t:i,locale:f}=ae(),s=J(()=>{const _=r.runtime;return _?[{label:i("admin.promptAudit.runtime.process"),value:i(`admin.promptAudit.status.${_.process_status}`),dot:u(_.process_status)},{label:i("admin.promptAudit.runtime.mode"),value:i(`admin.promptAudit.mode.${_.effective_mode}`)},{label:i("admin.promptAudit.runtime.version"),value:`${_.active_config_version} / ${_.expected_config_version}`},{label:i("admin.promptAudit.runtime.workers"),value:`${_.worker_active} / ${_.worker_total}`},{label:i("admin.promptAudit.runtime.queue"),value:`${_.queue.active} / ${_.queue_capacity}`},{label:i("admin.promptAudit.runtime.dependencies"),value:`DB ${_.database_status} · Redis ${_.redis_status}`}]:[]}),y=J(()=>{var D;const _=(D=r.runtime)==null?void 0:D.guard_metrics;return _?[{label:i("admin.promptAudit.metrics.total"),value:_.total},{label:i("admin.promptAudit.metrics.allowed"),value:_.allowed},{label:i("admin.promptAudit.metrics.flagged"),value:_.flagged},{label:i("admin.promptAudit.metrics.blocked"),value:_.blocked},{label:i("admin.promptAudit.metrics.unavailable"),value:_.unavailable},{label:i("admin.promptAudit.metrics.timeouts"),value:_.timeouts},{label:i("admin.promptAudit.metrics.failovers"),value:_.failovers},{label:"P95",value:_.latency_p95_ms!=null?`${_.latency_p95_ms} ms`:"â"}]:[]});function v(_){return new Intl.DateTimeFormat(f.value,{dateStyle:"medium",timeStyle:"medium"}).format(new Date(_))}function u(_){return _==="running"?"bg-emerald-500":_==="disabled"?"bg-gray-400":_==="degraded"?"bg-amber-500":"bg-red-500"}return(_,D)=>
1(g(),b("section",it,[e("div",rt,[e("div",null,[e("h2",ot,a(t(i)("admin.promptAudit.runtime.title")),1),e("p",lt,a(t(i)("admin.promptAudit.runtime.description")),1)]),e("button",{type:"button",class:"btn btn-secondary btn-sm",disabled:n.loading,onClick:D[0]||(D[0]=k=>_.$emit("refresh"))},a(t(i)("admin.promptAudit.actions.refresh")),9,dt)]),n.error?(g(),b("div",ut,a(n.error),1)):n.loading&&!n.runtime?(g(),b("div",mt,[(g(),b(N,null,H(6,k=>e("div",{key:k,class:"h-16 animate-pulse rounded-xl bg-gray-100 dark:bg-dark-800"})),64))])):n.runtime?(g(),b(N,{key:2},[e("dl",ct,[(g(!0),b(N,null,H(s.value,k=>(g(),b("div",{key:k.label,class:"rounded-xl border border-gray-100 bg-gray-50/80 px-3 py-3 dark:border-dark-700/60 dark:bg-dark-900/40"},[e("dt",pt,a(k.label),1),e("dd",gt,[k.dot?(g(),b("span",{key:0,class:G(["h-2 w-2 shrink-0 rounded-full",k.dot])},null,2)):q("",!0),e("span",bt,a(k.value),1)])]))),128))]),e("div",vt,[e("div",xt,[e("h3",_t,a(t(i)("admin.promptAudit.runtime.guardMetrics")),1),e("div",kt,[(g(!0),b(N,null,H(y.value,k=>(g(),b("div",{key:k.label,class:"rounded-lg bg-gray-50 px-2.5 py-2 dark:bg-dark-900/60"},[e("p",yt,a(k.label),1),e("p",ht,a(k.value),1)]))),128))]),e("p",ft,[X(a(t(i)("admin.promptAudit.runtime.queueBreakdown",{queued:n.runtime.queue.queued,processing:n.runtime.queue.processing,retry:n.runtime.queue.retry,done:n.runtime.queue.done,failed:n.runtime.queue.failed}))+" ",1),D[1]||(D[1]=e("span",{class:"mx-1.5 text-gray-300 dark:text-dark-600"},"·",-1)),X(" "+a(t(i)("admin.promptAudit.runtime.deliveryTotals",{enqueued:n.runtime.enqueued_total,dropped:n.runtime.dropped_total,processed:n.runtime.processed_total,failed:n.runtime.failed_total})),1)])]),e("div",$t,[e("h3",wt,a(t(i)("admin.promptAudit.runtime.latest")),1),e("p",At,a(n.runtime.last_processed_at?v(n.runtime.last_processed_at):t(i)("admin.promptAudit.common.never")),1),n.runtime.last_error_code?(g(),b("p",Ct,[X(a(n.runtime.last_error_code),1),n.runtime.last_error_message?(g(),b("span",Dt," · "+a(n.runtime.last_error_message),1)):q("",!0)])):q("",!0),Object.keys(n.runtime.endpoints).length?(g(),b("div",St,[(g(!0),b(N,null,H(n.runtime.endpoints,(k,E)=>(g(),b("span",{key:E,class:G(["rounded-md px-2 py-1 text-xs",k.ok?"bg-emerald-50 text-emerald-700 dark:bg-emerald-950/40 dark:text-emerald-300":"bg-red-50 text-red-700 dark:bg-red-950/40 dark:text-red-300"])},a(E)+" · "+a(k.status)+" · "+a(k.latency_ms)+" ms ",3))),128))])):q("",!0)])])],64)):q("",!0)]))}}),Ae="sileader/qwen3guard:0.6b",ne=[{id:"violent",label:"Violent"},{id:"non_violent_illegal_acts",label:"Non-violent Illegal Acts"},{id:"sexual_content_or_sexual_acts",label:"Sexual Content or Sexual Acts"},{id:"pii",label:"PII"},{id:"suicide_and_self_harm",label:"Suicide & Self-Harm"},{id:"unethical_acts",label:"Unethical Acts"},{id:"politically_sensitive_topics",label:"Politically Sensitive Topics"},{id:"copyright_violation",label:"Copyright Violation"},{id:"jailbreak",label:"Jailbreak"}];function F(n){return JSON.parse(JSON.stringify(n))}function le(n){return{...F(n),group_ids:[...n.group_ids??[]],scanners:[...n.scanners??[]],endpoints:(n.endpoints??[]).map(r=>({...r,token:"",clear_token:!1}))}}function Et(n=1){return{id:`guard-${Date.now()}-${n}`,name:`Guard ${n}`,protocol:"openai_compatible",base_url:"http://127.0.0.1:8000",model:Ae,timeout_ms:3e3,input_limit:4e3,enabled:!0,has_token:!1,token_status:"missing",token:"",clear_token:!1}}function Ce(n){return{expected_config_version:n.config_version,enabled:n.enabled,blocking_enabled:n.enabled&&n.blocking_enabled,blocking_latest_turn_only:n.blocking_latest_turn_only,store_pass_events:n.store_pass_events,strategy:"priority",worker_count:Number(n.worker_count),queue_capacity:Number(n.queue_capacity),scanners:[...n.scanners],all_groups:n.all_groups,group_ids:n.all_groups?[]:[...n.group_ids].sort((r,i)=>r-i),endpoints:n.endpoints.map(r=>({id:r.id.trim(),name:r.name.trim(),protocol:"openai_compatible",base_url:r.base_url.trim(),model:r.model.trim()||Ae,token:r.token.trim()||void 0,clear_token:r.clear_token,timeout_ms:Number(r.timeout_ms),input_limit:Number(r.input_limit),enabled:r.enabled}))}}function he(n){return n?JSON.stringify(Ce(n)):""}function ue(){return{decision:"",risk_level:"",endpoint:"",group_id:"",user_id:"",api_key_id:"",request_id:"",prompt_hash:"",keyword:"",start_at:"",end_at:""}}function me(n){if(!n.trim())return;const r=new Date(n);return Number.isNaN(r.getTime())?void 0:r.toISOString()}function De(n){const r={};for(const s of["decision","risk_level","endpoint","request_id","prompt_hash","keyword"]){const y=n[s].trim();
1y&&(r[s]=y)}for(const s of["group_id","user_id","api_key_id"]){const y=Number(n[s]);Number.isInteger(y)&&y>0&&(r[s]=y)}const i=me(n.start_at),f=me(n.end_at);return i&&(r.start_at=i),f&&(r.end_at=f),r}function Se(n){return De(n)}function fe(n){const r=me(n.start_at),i=me(n.end_at);return!!(r&&i&&new Date(r).getTime()<new Date(i).getTime())}const Ve=[{id:"1d",days:1},{id:"7d",days:7},{id:"30d",days:30},{id:"90d",days:90},{id:"all",days:null},{id:"custom",days:null}],It=24*60*60*1e3;function $e(n,r,i=Date.now()){var y;const f=F(n);if(r==="custom")return f;const s=((y=Ve.find(v=>v.id===r))==null?void 0:y.days)??null;return f.start_at=new Date(0).toISOString(),f.end_at=new Date(s===null?i:i-s*It).toISOString(),f}const qt={"aria-labelledby":"prompt-pool-title",class:"border-b border-gray-200 py-6 dark:border-dark-700/60"},Ut={class:"flex flex-wrap items-start justify-between gap-3"},Rt={id:"prompt-pool-title",class:"text-base font-semibold text-gray-950 dark:text-white"},Ft={class:"mt-1 text-sm text-gray-500 dark:text-dark-300"},Bt={key:0,class:"mt-5 rounded-xl border border-dashed border-gray-300 px-5 py-10 text-center text-sm text-gray-500 dark:border-dark-600 dark:bg-dark-900/20 dark:text-dark-300"},Pt={key:1,class:"mt-5 overflow-hidden rounded-xl border border-gray-200 bg-white dark:border-dark-700/60 dark:bg-dark-900/20"},Tt={class:"hidden grid-cols-[minmax(260px,1.45fr)_minmax(210px,1fr)_minmax(190px,.8fr)_minmax(230px,1.15fr)_auto] gap-5 border-b border-l-[3px] border-b-gray-200 border-l-transparent bg-gray-50/80 px-5 py-2.5 text-[11px] font-semibold uppercase tracking-[0.08em] text-gray-500 dark:border-b-dark-700/60 dark:bg-dark-900/70 dark:text-dark-400 xl:gr
1id"},Lt={class:"text-right"},Nt={class:"divide-y divide-gray-100 dark:divide-dark-800"},Ot=["data-test"],jt={class:"flex min-w-0 items-center gap-3"},Gt=["aria-checked","aria-label","onClick"],zt={class:"min-w-0"},Mt={class:"flex min-w-0 items-center gap-2"},Ht={class:"truncate font-semibold text-gray-950 dark:text-white"},Kt=["title"],Jt={class:"min-w-0 xl:block"},Wt={class:"mb-1 text-[10px] font-semibold uppercase tracking-wider text-gray-400 xl:hidden"},Qt=["title"],Yt={class:"mb-1 text-[10px] font-semibold uppercase tracking-wider text-gray-400 xl:hidden"},Xt={class:"flex flex-wrap gap-1.5 text-xs text-gray-600 dark:text-dark-300"},Zt={class:"rounded-md bg-gray-100 px-2 py-1 tabular-nums dark:bg-dark-800"},ea={class:"rounded-md bg-gray-100 px-2 py-1 tabular-nums dark:bg-dark-800"},ta={class:"min-w-0"},aa={class:"mb-1 text-[10px] font-semibold uppercase tracking-wider text-gray-400 xl:hidden"},sa={key:0,class:"mt-1.5 text-xs text-primary-600 dark:text-primary-300"},na={class:"flex flex-wrap items-center justify-end gap-1 border-t border-gray-100 pt-3 dark:border-dark-800 xl:flex-nowrap xl:border-0 xl:pt-0"},ia=["disabled","onClick"],ra=["onClick"],oa=["onClick"],la={class:"space-y-1 text-sm text-gray-700 dark:text-dark-200"},da=["aria-label"],ua={class:"space-y-1 text-sm text-gray-700 dark:text-dark-200"},ma=["disabled","aria-label"],ca={class:"space-y-1 text-sm text-gray-700 dark:text-dark-200 sm:col-span-2"},pa=["aria-label"],ga={class:"space-y-1 text-sm text-gray-700 dark:text-dark-200 sm:col-span-2"},ba=["placeholder","aria-label"],va={class:"block text-xs text-gray-500 dark:text-dark-400"},xa={key:0,class:"flex items-center gap-2 text-sm text-red-600 dark:text-red-300 sm:col-span-2"},_a=["aria-label"],ka={class:"space-y-1 text-sm text-gray-700 dark:text-dark-200 sm:col-span-2"},ya=["aria-label"],ha={class:"space-y-1 text-sm text-gray-700 dark:text-dark-200"},fa=["aria-label"],$a={class:"space-y-1 text-sm text-gray-700 dark:text-dark-200"},wa=["aria-label"],Aa={class:"flex justify-end gap-3"},Ca=Q({__name:"EndpointPool",props:{endpoints:{},probeResults:{},probingIds:{}},emits:["update:endpoints","probe"],setup(n,{emit:r}){const i=n,f=r,{t:s}=ae(),y=B(null),v=B(-1);function u(){v.value=-1,y.value=Et(i.endpoints.length+1)}function _(p){v.value=i.endpoints.findIndex(m=>m.id===p.id),y.value=F(p)}function D(){y.value=null,v.value=-1}function k(){var o;if(!((o=y.value)!=null&&o.id.trim())||!y.value.name.trim()||!y.value.base_url.trim())return;const p=i.endpoints.map(d=>F(d)),m=F(y.value);m.token.trim()&&(m.clear_token=!1),v.value<0?p.push(m):p.splice(v.value,1,m),f("update:endpoints",p),D()}function E(p){f("update:endpoints",i.endpoints.map(m=>m.id===p?{...m,enabled:!m.enabled}:F(m)))}function O(p){window.confirm(s("admin.promptAudit.pool.deleteConfirm",{name:p.name}))&&f("update:endpoints",i.endpoints.filter(m=>m.id!==p.id).map(m=>F(m)))}function A(p){return!!(p.token.trim()||p.has_token&&!p.clear_token)}function w(p){return p.token_status==="invalid"&&!p.token.trim()&&!p.clear_token}return(p,m)=>(g(),b("section",qt,[e("div",Ut,[e("div",null,[e("h2",Rt,a(t(s)("admin.promptAudit.pool.title")),1),e("p",Ft,a(t(s)("admin.promptAudit.pool.description")),1)]),e("button",{type:"button",class:"btn btn-primary btn-sm","data-test":"add-endpoint",onClick:u},a(t(s)("admin.promptAudit.pool.add")),1)]),n.endpoints.length===0?(g(),b("div",Bt,a(t(s)("admin.promptAudit.pool.empty")),1)):(g(),b("div",Pt,[e("div",Tt,[e("span",null,a(t(s)("admin.promptAudit.pool.node")),1),e("span",null,a(t(s)("admin.promptAudit.pool.model")),1),e("span",null,a(t(s)("admin.promptAudit.pool.limits")),1),e("span",null,a(t(s)("admin.promptAudit.pool.credential")),1),e("span",Lt,a(t(s)("admin.promptAudit.common.actions")),1)]),e("div",Nt,[(g(!0),b(N,null,H(n.endpoints,o=>(g(),b("article",{key:o.id,"data-test":`endpoint-${o.id}`,class:"group grid gap-4 border-l-[3px] border-l-transparent px-4 py-4 transition-[background-color,border-color] duration-200 hover:border-l-primary-500 hover:bg-gray-50/80 dark:hover:bg-dark-800/55 sm:px-5 xl:grid-cols-[minmax(260px,1.45fr)_minmax(210px,1fr)_minmax(190px,.8fr)_minmax(230px,1.15fr)_auto] xl:items-center xl:gap-5"},[e("div",jt,[e("button",{type:"button",role:"switch","aria-checked":o.enabled,"aria-label":t(s)("admin.promptAudit.pool.toggleNode",{name:o.name}),class:G(["relative inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2",o.enabled?"bg-primary-600":"bg-gray-200 dark:bg-dark-600"]),onClick:d=>E(o.id)},[e("span",{class:G(["pointer-events-none inline-block h-5 w-5 rounded-full bg-white shadow transition-transform duration-200 ease-in-out",o.enabled?"translate-x-5":"translate-x-0"])},null,2)],10,Gt),e("div",zt,[e("div",Mt,[e("p",Ht,a(o.name),1),e("span",{class:G(["h-1.5 w-1.5 shrink-0 rounded-full",o.enabled?"bg-emerald-500":"bg-gray-300 dark:bg-dark-500"]),"aria-hidden":"true"},null,2)]),e("p",{class:"mt-0.5 truncate font-mono text-[11px] text-gray-500 dark:text-dark-400",title:o.base_url},a(o.base_url),9,Kt)])]),e("div",Jt,[e("p",Wt,a(t(s)("admin.promptAudit.pool.model")),1),e("p",{class:"truncate text-sm font-medium text-gray-700 dark:text-dark-200",title:o.model},a(o.model),9,Qt)]),e("div",null,[e("p",Yt,a(t(s)("admin.promptAudit.pool.limits")),1),e("div",Xt,[e("span",Zt,a(o.timeout_ms)+" ms",1),e("span",ea,a(o.input_limit)+" chars",1)])]),e("div",ta,[e("p",aa,a(t(s)("admin.promptAudit.pool.credential")),1),e("div",{class:G(["flex items-center gap-1.5 text-xs font-medium",w(o)?"text-red-600 dark:text-red-300":A(o)?"text-emerald-700 dark:text-emerald-300":"text-gray-500 dark:text-dark-400"])},[e("span",{class:G(["h-1.5 w-1.5 rounded-full",w(o)?"bg-red-500":A(o)?"bg-emerald-500":"bg-gray-300 dark:bg-dark-500"]),"aria-hidden":"true"},null,2),X(" "+a(w(o)?t(s)("admin.promptAudit.pool.invalid"):A(o)?t(s)("admin.promptAudit.pool.configured"):t(s)("admin.promptAudit.pool.missing")),1)],2),n.probingIds.includes(o.id)?(g(),b("p",sa,a(t(s)("admin.promptAudit.pool.probeProgress")),1)):q("",!0),n.probeResults[o.id]?(g(),b("p",{key:1,class:G(["mt-1.5 line-clamp-2 text-xs leading-5",n.probeResults[o.id].ok?"text-emerald-600 dark:text-emerald-300":"text-red-600 dark:text-red-300"])},a(t(s)("admin.promptAudit.pool.probeResult",{status:n.probeResults[o.id].status,http:n.probeResults[o.id].http_status||"â",latency:n.probeResults[o.id].latency_ms}))+" · "+a(n.probeResults[o.id].message),3)):q("",!0)]),e("div",na,[e("button",{type:"button",class:"btn btn-secondary btn-sm",disabled:n.probingIds.includes(o.id),onClick:d=>p.$emit("probe",o)},a(n.probingIds.includes(o.id)?t(s)("admin.promptAudit.pool.probing"):t(s)("admin.promptAudit.pool.probe")),9,
1ia),e("button",{type:"button",class:"btn btn-ghost btn-sm",onClick:d=>_(o)},a(t(s)("common.edit")),9,ra),e("button",{type:"button",class:"btn btn-ghost btn-sm text-red-600 hover:bg-red-50 dark:text-red-300 dark:hover:bg-red-950/30",onClick:d=>O(o)},a(t(s)("common.delete")),9,oa)])],8,Ot))),128))])])),I(be,{show:!!y.value,title:v.value<0?t(s)("admin.promptAudit.pool.add"):t(s)("admin.promptAudit.pool.edit"),width:"wide",onClose:D},{footer:ie(()=>[e("div",Aa,[e("button",{type:"button",class:"btn btn-secondary",onClick:D},a(t(s)("common.cancel")),1),e("button",{type:"button",class:"btn btn-primary","data-test":"save-endpoint",onClick:k},a(t(s)("common.save")),1)])]),default:ie(()=>[y.value?(g(),b("form",{key:0,class:"grid gap-4 sm:grid-cols-2",onSubmit:we(k,["prevent"])},[e("label",la,[e("span",null,a(t(s)("admin.promptAudit.pool.name")),1),V(e("input",{"onUpdate:modelValue":m[0]||(m[0]=o=>y.value.name=o),class:"input w-full",required:"","aria-label":t(s)("admin.promptAudit.pool.name")},null,8,da),[[L,y.value.name]])]),e("label",ua,[e("span",null,a(t(s)("admin.promptAudit.pool.id")),1),V(e("input",{"onUpdate:modelValue":m[1]||(m[1]=o=>y.value.id=o),class:"input w-full",required:"",disabled:v.value>=0,"aria-label":t(s)("admin.promptAudit.pool.id")},null,8,ma),[[L,y.value.id]])]),e("label",ca,[e("span",null,a(t(s)("admin.promptAudit.pool.baseUrl")),1),V(e("input",{"onUpdate:modelValue":m[2]||(m[2]=o=>y.value.base_url=o),class:"input w-full",required:"",inputmode:"url","aria-label":t(s)("admin.promptAudit.pool.baseUrl")},null,8,pa),[[L,y.value.base_url]])]),e("label",ga,[e("span",null,a(t(s)("admin.promptAudit.pool.apiKey")),1),V(e("input",{"onUpdate:modelValue":m[3]||(m[3]=o=>y.value.token=o),class:"input w-full",type:"password",autocomplete:"new-password",placeholder:y.value.has_token?y.value.token_status==="invalid"?t(s)("admin.promptAudit.pool.reenterSecret"):t(s)("admin.promptAudit.pool.keepSecret"):"","aria-label":t(s)("admin.promptAudit.pool.apiKey")},null,8,ba),[[L,y.value.token]]),e("span",va,a(t(s)("admin.promptAudit.pool.secretHint")),1)]),y.value.has_token?(g(),b("label",xa,[V(e("input",{"onUpdate:modelValue":m[4]||(m[4]=o=>y.value.clear_token=o),type:"checkbox","aria-label":t(s)("admin.promptAudit.pool.clearSecret")},null,8,_a),[[Xe,y.value.clear_token]]),X(" "+a(t(s)("admin.promptAudit.pool.clearSecret")),1)])):q("",!0),e("label",ka,[e("span",null,a(t(s)("admin.promptAudit.pool.model")),1),V(e("input",{"onUpdate:modelValue":m[5]||(m[5]=o=>y.value.model=o),class:"input w-full","aria-label":t(s)("admin.promptAudit.pool.model")}
1,null,8,ya),[[L,y.value.model]])]),e("label",ha,[e("span",null,a(t(s)("admin.promptAudit.pool.timeout")),1),V(e("input",{"onUpdate:modelValue":m[6]||(m[6]=o=>y.value.timeout_ms=o),class:"input w-full",type:"number",min:"100",max:"30000",required:"","aria-label":t(s)("admin.promptAudit.pool.timeout")},null,8,fa),[[L,y.value.timeout_ms,void 0,{number:!0}]])]),e("label",$a,[e("span",null,a(t(s)("admin.promptAudit.pool.inputLimit")),1),V(e("input",{"onUpdate:modelValue":m[7]||(m[7]=o=>y.value.input_limit=o),class:"input w-full",type:"number",min:"128",max:"100000",required:"","aria-label":t(s)("admin.promptAudit.pool.inputLimit")},null,8,wa),[[L,y.value.input_limit,void 0,{number:!0}]])])],32)):q("",!0)]),_:1},8,["show","title"])]))}}),Da={"aria-labelledby":"prompt-policy-title",class:"py-6"},Sa={id:"prompt-policy-title",class:"text-base font-semibold text-gray-950 dark:text-white"},Va={class:"mt-1 text-sm text-gray-500 dark:text-dark-300"},Ea={class:"mt-5 grid gap-4 lg:grid-cols-[minmax(0,1fr)_minmax(260px,0.45fr)]"},Ia={class:"rounded-xl border border-gray-200 p-4 dark:border-dark-700/60 dark:bg-dark-900/20 sm:p-5"},qa={class:"text-sm font-medium text-gray-900 dark:text-white"},Ua={class:"mt-3 flex flex-wrap gap-5 text-sm text-gray-700 dark:text-dark-200"},Ra={class:"flex items-center gap-2"},Fa=["checked"],Ba={class:"flex items-center gap-2"},Pa=["checked"],Ta={key:0,class:"mt-4"},La={class:"block text-sm text-gray-700 dark:text-dark-200"},Na=["aria-label"],Oa={class:"mt-3 max-h-52 overflow-y-auto rounded-lg border border-gray-200 p-2 dark:border-dark-700"},ja={class:"flex items-center gap-2 text-gray-800 dark:text-dark-100"},Ga=["checked","onChange"],za={class:"text-xs text-gray-500 dark:text-dark-400"},Ma={key:0,class:"px-2 py-4 text-center text-sm text-gray-500"},Ha={key:0,class:"mt-3 rounded-lg bg-amber-50 px-3 py-2 text-sm text-amber-800 dark:bg-amber-950/30 dark:text-amber-200"},Ka={class:"mt-2 text-xs text-gray-500 dark:text-dark-400"},Ja={class:"mt-5 border-t border-gray-100 pt-5 dark:border-dark-800"},Wa={class:"text-sm font-medium text-gray-900 dark:text-white"},Qa={class:"mt-3 grid gap-2 sm:grid-cols-2"},Ya=["checked","aria-label","onChange"],Xa={class:"space-y-4 rounded-xl border border-gray-200 p-4 dark:border-dark-700/60 dark:bg-dark-900/20 sm:p-5"},Za={class:"block text-sm text-gray-700 dark:text-dark-200"},es=["value","aria-label"],ts={class:"block text-sm text-gray-700 dark:text-dark-200"},as=["value","aria-label"],ss={class:"rounded-lg bg-gray-50 px-4 py-3 text-sm text-gray-600 dark:bg-dark-900/50 dark:text-dark-300"},ns={class:"font-medium text-gray-800 dark:text-dark-100"},is={class:"mt-1"},rs=Q({__name:"PolicyPanel",props:{draft:{},groups:{}},emits:["update:draft"],setup(n,{emit:r}){const i=n,f=r,{t:s}=ae(),y=B(""),v=J(()=>{const A=y.value.trim().toLowerCase();return A?i.groups.filter(w=>`${w.name} ${w.id} ${w.platform}`.toLowerCase().includes(A)):i.groups}),u=J(()=>new Set(i.groups.map(A=>A.id))),_=J(()=>i.draft.group_ids.filter(A=>!u.value.has(A)));function D(A){f("update:draft",{...F(i.draft),...A})}function k(A){const w=new Set(i.draft.group_ids);w.has(A)?w.delete(A):w.add(A),D({group_ids:[...w].sort((p,m)=>p-m)})}function E(A){const w=new Set(i.draft.scanners);w.has(A)?w.delete(A):w.add(A),D({scanners:ne.map(p=>p.id).filter(p=>w.has(p))})}function O(A){return s(`admin.promptAudit.scanners.${A}`)}return(A,w)=>(g(),b("section",Da,[e("div",null,[e("h2",Sa,a(t(s)("admin.promptAudit.policy.title")),1),e("p",Va,a(t(s)("admin.promptAudit.policy.description")),1)]),e("div",Ea,[e("div",Ia,[e("fieldset",null,[e("legend",qa,a(t(s)("admin.promptAudit.policy.scope")),1),e("div",Ua,[e("label",Ra,[e("input",{type:"radio",name:"prompt-audit-scope",checked:n.draft.all_groups,onChange:w[0]||(w[0]=p=>D({all_groups:!0,group_ids:[]}))},null,40,Fa),X(" "+a(t(s)("admin.promptAudit.policy.allGroups")),1)]),e("label",Ba,[e("input",{type:"radio",name:"prompt-audit-scope",checked:!n.draft.all_groups,onChange:w[1]||(w[1]=p=>D({all_groups:!1}))},null,40,Pa),X(" "+a(t(s)("admin.promptAudit.policy.selectedGroups")),1)])])]),n.draft.all_groups?q("",!0):(g(),b("div",Ta,[e("label",La,[e("span",null,a(t(s)("admin.promptAudit.policy.searchGroups")),1),V(e("input",{"onUpdate:modelValue":w[2]||(w[2]=p=>y.value=p),type:"search",class:"input mt-1.5 w-full","aria-label":t(s)("admin.promptAudit.policy.searchGroups")}
1,null,8,Na),[[L,y.value]])]),e("div",Oa,[(g(!0),b(N,null,H(v.value,p=>(g(),b("label",{key:p.id,class:"flex cursor-pointer items-center justify-between gap-3 rounded-md px-2 py-2 text-sm hover:bg-gray-50 dark:hover:bg-dark-800"},[e("span",ja,[e("input",{type:"checkbox",checked:n.draft.group_ids.includes(p.id),onChange:m=>k(p.id)},null,40,Ga),X(" "+a(p.name),1)]),e("span",za,a(p.platform)+" · "+a(p.status),1)]))),128)),v.value.length===0?(g(),b("p",Ma,a(t(s)("admin.promptAudit.policy.noGroups")),1)):q("",!0)]),_.value.length?(g(),b("div",Ha,a(t(s)("admin.promptAudit.policy.missingGroups"))+": "+a(_.value.join(", ")),1)):q("",!0),e("p",Ka,a(t(s)("admin.promptAudit.policy.selectedCount",{count:n.draft.group_ids.length})),1)])),e("fieldset",Ja,[e("legend",Wa,a(t(s)("admin.promptAudit.policy.scanners")),1),e("div",Qa,[(g(!0),b(N,null,H(t(ne),p=>(g(),b("label",{key:p.id,class:"flex items-center gap-2 rounded-md px-2 py-1.5 text-sm text-gray-700 hover:bg-gray-50 dark:text-dark-200 dark:hover:bg-dark-800"},[e("input",{type:"checkbox",checked:n.draft.scanners.includes(p.id),"aria-label":O(p.id),onChange:m=>E(p.id)},null,40,Ya),e("span",null,a(O(p.id)),1)]))),128))])])]),e("div",Xa,[e("label",Za,[e("span",null,a(t(s)("admin.promptAudit.policy.workerCount")),1),e("input",{value:n.draft.worker_count,type:"number",min:"1",max:"32",class:"input mt-1.5 w-full","aria-label":t(s)("admin.promptAudit.policy.workerCount"),onInput:w[3]||(w[3]=p=>D({worker_count:Number(p.target.value)}))},null,40,es)]),e("label",ts,[e("span",null,a(t(s)("admin.promptAudit.policy.queueCapacity")),1),e("input",{value:n.draft.queue_capacity,type:"number",min:"1",max:"100000",class:"input mt-1.5 w-full","aria-label":t(s)("admin.promptAudit.policy.queueCapacity"),onInput:w[4]||(w[4]=p=>D({queue_capacity:Number(p.target.value)}))},null,40,as)]),e("div",ss,[e("p",ns,a(t(s)("admin.promptAudit.policy.strategy")),1),e("p",is,"priority · "+a(t(s)("admin.promptAudit.policy.strategyHint")),1)])])])]))}}),os={"aria-labelledby":"prompt-events-title",class:"py-6"},ls={class:"flex flex-wrap items-start justify-between gap-3"},ds={id:"prompt-events-title",class:"text-base font-semibold text-gray-950 dark:text-white"},us={class:"mt-1 text-sm text-gray-500 dark:text-dark-300"},ms={class:"flex flex-wrap gap-2"},cs=["disabled"],ps={class:"text-xs text-gray-600 dark:text-dark-200"},gs=["aria-label"],bs={value:""},vs={value:"pass"},xs={value:"flag"},_s={value:"critical"},ks={class:"text-xs text-gray-600 dark:text-dark-200"},ys=["aria-label"],hs={value:""},fs={value:"low"},$s={value:"medium"},ws={value:"high"},As={value:"critical"},Cs={class:"text-xs text-gray-600 dark:text-dark-200"},Ds=["aria-label"],Ss={class:"text-xs text-gray-600 dark:text-dark-200"},Vs=["aria-label"],Es={class:"flex items-end gap-2 sm:col-span-2"},Is={type:"submit",class:"btn btn-primary btn-sm"},qs={key:0,role:"alert",class:"mt-4 rounded-lg bg-red-50 px-4 py-3 text-sm text-red-700 dark:bg-red-950/30 dark:text-red-300"},Us={class:"mt-5 overflow-x-auto rounded-xl border border-gray-200 dark:border-dark-700/60"},Rs={class:"min-w-[1120px] w-full text-left text-sm"},Fs={class:"bg-gray-50 text-xs uppercase tracking-wide text-gray-500 dark:bg-dark-900/70 dark:text-dark-400"},Bs={class:"w-10 px-3 py-3"},Ps=["checked","aria-label"],Ts={class:"px-3 py-3 font-medium"},Ls={class:"px-3 py-3 font-medium"},Ns={class:"px-3 py-3 font-medium"},Os={class:"px-3 py-3 font-medium"},js={class:"px-3 py-3 font-medium"},Gs={class:"px-3 py-3 font-medium"},zs={class:"px-3 py-3 text-right font-medium"},Ms={class:"divide-y divide-gray-100 bg-white dark:divide-dark-700 dark:bg-transparent"},Hs={key:0},Ks={colspan:"8",class:"px-4 py-12 text-center text-gray-500","aria-busy":"true"},Js={key:1},Ws={colspan:"8",class:"px-4 py-12 text-center text-gray-500"},Qs=["data-test"],Ys={class:"px-3 py-3"},Xs=["checked","aria-label","onChange"],Zs={class:"whitespace-nowrap px-3 py-3 text-xs text-gray-600 dark:text-dark-300"},en={class:"px-3 py-3"},tn={class:"px-3 py-3 text-gray-700 dark:text-dark-200"},an={class:"px-3 py-3"},sn={class:"font-medium text-gray-900 dark:text-white"},nn={class:"mt-1 text-xs text-gray-500"},rn={class:"px-3 py-3"},on=["title"],ln={class:"max-w-xs px-3 py-3"},dn={class:"line-clamp-2 break-words text-gray-600 dark:text-dark-300"},un={class:"whitespace-nowrap px-3 py-3 text-right"},mn=["onClick"],cn=["onClick"],pn=Q({__name:"EventWorkspace",props:{events:{},total:{},page:{},pageSize:{},filters:{},selectedIds:{},loading:{type:Boolean},error:{}},emits:["filters-change","search","selection","page","page-size","view","delete","batch-delete","preview-delete"],setup(n,{emit:r}){const i=n,f=r,{t:s,locale:y}=ae(),v=te(F(i.filters));pe(()=>i.filters,c=>Object.assign(v,F(c)),{deep:!0});const u=J(()=>i.events.length>0&&i.events.every(c=>i.selectedIds.includes(c.id))),_=Q({props:{modelValue:{type:String,required:!0},label:{type:String,required:!0},type:{type:String,default:"text"}},emits:["update:modelValue","change"],setup(c,{emit:h}){return()=>K("label",{class:"text-xs text-gray-600 dark:text-dark-200"},[K("span",c.label),K("input",{value:c.modelValue,type:c.type,class:"input mt-1 w-full","aria-label":c.label,onInput:x=>h("update:modelValue",x.target.value),onChange:()=>h("change")})])}}),D=Q({props:{label:{type:String,required:!0},value:{type:String,default:""}},setup(c){return()=>K("div",{class:"flex max-w-56 items-center gap-1 text-xs"},[K("span",{class:"w-16 flex-none text-gray-500 dark:text-dark-400"},c.label),K("span",{class:"min-w-0 flex-1 truncate text-gray-800 dark:text-dark-100"},c.value||"â"),c.value?K("button",{type:"button",class:"text-primary-600 hover:underline","aria-label":`${s("common.copy")} ${c.label}`,onClick:()=>{var h;
1return(h=navigator.clipboard)==null?void 0:h.writeText(c.value)}},s("common.copy")):null])}});function k(){f("filters-change",F(v))}function E(){const c=F(v);f("filters-change",c),f("search",c)}function O(){Object.assign(v,ue()),E()}function A(c){const h=new Set(i.selectedIds);h.has(c)?h.delete(c):h.add(c),f("selection",[...h])}function w(){f("selection",u.value?[]:i.events.map(c=>c.id))}function p(c){return new Intl.DateTimeFormat(y.value,{dateStyle:"short",timeStyle:"medium"}).format(new Date(c))}function m(c){return c==="critical"?"bg-red-100 text-red-700 dark:bg-red-950/50 dark:text-red-300":c==="flag"?"bg-amber-100 text-amber-700 dark:bg-amber-950/50 dark:text-amber-300":"bg-emerald-100 text-emerald-700 dark:bg-emerald-950/50 dark:text-emerald-300"}const o=new Set(["pass","flag","critical"]),d=new Set(["low","medium","high","critical"]);function U(c){return o.has(c)?s(`admin.promptAudit.decisions.${c}`):c}function C(c){return d.has(c)?s(`admin.promptAudit.riskLevels.${c}`):c}function P(c){return ne.some(h=>h.id===c)?s(`admin.promptAudit.scanners.${c}`):c}function z(c,h){return`${U(c)} · ${C(h)}`}function S(c){return c.length?c.map(P).join(", "):"â"}return(c,h)=>(g(),b("section",os,[e("div",ls,[e("div",null,[e("h2",ds,a(t(s)("admin.promptAudit.events.title")),1),e("p",us,a(t(s)("admin.promptAudit.events.description")),1)]),e("div",ms,[e("button",{type:"button",class:"btn btn-secondary btn-sm",disabled:n.selectedIds.length===0,onClick:h[0]||(h[0]=x=>c.$emit("batch-delete"))},a(t(s)("admin.promptAudit.events.deleteSelected",{count:n.selectedIds.length})),9,cs),e("button",{type:"button",class:"btn btn-danger btn-sm","data-test":"filter-delete",onClick:h[1]||(h[1]=x=>c.$emit("preview-delete"))},a(t(s)("admin.promptAudit.events.deleteByFilter")),1)])]),e("form",{class:"mt-5 grid gap-3 sm:grid-cols-2 lg:grid-cols-4 xl:grid-cols-5",onSubmit:we(E,["prevent"])},[e("label",ps,[e("span",null,a(t(s)("admin.promptAudit.events.decision")),1),V(e("select",{"onUpdate:modelValue":h[2]||(h[2]=x=>v.decision=x),class:"input mt-1 w-full","aria-label":t(s)("admin.promptAudit.events.decision"),onChange:k},[e("option",bs,a(t(s)("common.all")),1),e("option",vs,a(t(s)("admin.promptAudit.decisions.pass")),1),e("option",xs,a(t(s)("admin.promptAudit.decisions.flag")),1),e("option",_s,a(t(s)("admin.promptAudit.decisions.critical")),1)],40,gs),[[de,v.decision]])]),e("label",ks,[e("span",null,a(t(s)("admin.promptAudit.events.risk")),1),V(e("select",{"onUpdate:modelValue":h[3]||(h[3]=x=>v.risk_level=x),class:"input mt-1 w-full","aria-label":t(s)("admin.promptAudit.events.risk"),onChange:k},[e("option",hs,a(t(s)("common.all")),1),e("option",fs,a(t(s)("admin.promptAudit.riskLevels.low")),1),e("option",$s,a(t(s)("admin.promptAudit.riskLevels.medium")),1),e("option",ws,a(t(s)("admin.promptAudit.riskLevels.high")),1),e("option",As,a(t(s)("admin.promptAudit.riskLevels.critical")),1)],40,ys),[[de,v.risk_level]])]),I(t(_),{modelValue:v.endpoint,"onUpdate:modelValue":h[4]||(h[4]=x=>v.endpoint=x),label:t(s)("admin.promptAudit.events.endpoint"),onChange:k},null,8,["modelValue","label"]),I(t(_),{modelValue:v.group_id,"onUpdate:modelValue":h[5]||(h[5]=x=>v.group_id=x),label:t(s)("admin.promptAudit.events.groupId"),type:"number",onChange:k},null,8,["modelValue","label"]),I(t(_),{modelValue:v.user_id,"onUpdate:modelValue":h[6]||(h[6]=x=>v.user_id=x),label:t(s)("admin.promptAudit.events.userId"),type:"number",onChange:k},null,8,["modelValue","label"]),I(t(_),{modelValue:v.api_key_id,"onUpdate:modelValue":h[7]||(h[7]=x=>v.api_key_id=x),label:t(s)("admin.promptAudit.events.apiKeyId"),type:"number",onChange:k},null,8,["modelValue","label"]),I(t(_),{modelValue:v.request_id,"onUpdate:modelValue":h[8]||(h[8]=x=>v.request_id=x),label:t(s)("admin.promptAudit.events.requestId"),onChange:k},null,8,["modelValue","label"]),I(t(_),{modelValue:v.prompt_hash,"onUpdate:modelValue":h[9]||(h[9]=x=>v.prompt_hash=x),label:t(s)("admin.promptAudit.events.promptHash"),onChange:k},null,8,["modelValue","label"]),I(t(_),{modelValue:v.keyword,"onUpdate:modelValue":h[10]||(h[10]=x=>v.keyword=x),label:t(s)("admin.promptAudit.events.keyword"),onChange:k},null,8,["modelValue","label"]),e("label",Cs,[e("span",null,a(t(s)("admin.promptAudit.events.startAt")),1),V(e("input",{"onUpdate:modelValue":h[11]||(h[11]=x=>v.start_at=x),type:"datetime-local",class:"input mt-1 w-full","aria-label":t(s)("admin.promptAudit.events.startAt"),onChange:k},null,40,Ds),[[L,v.start_at]])]),e("label",Ss,[e("span",null,a(t(s)("admin.promptAudit.events.endAt")),1),V(e("input",{"onUpdate:modelValue":h[12]||(h[12]=x=>v.end_at=x),type:"datetime-local",class:"input mt-1 w-full","aria-label":t(s)("admin.promptAudit.events.endAt"),onChange:k},null,40,Vs),[[L,v.end_at]])]),e("div",Es,[e("button",Is,a(t(s)("common.search")),1),e("button",{type:"button",class:"btn btn-ghost btn-sm",onClick:O},a(t(s)("common.reset")),1)])],32),n.error?(g(),b("div",qs,a(n.error),1)):q("",!0),e("div",Us,[e("table",Rs,[e("thead",Fs,[e("tr",null,[e("th",Bs,[e("input",{type:"checkbox",checked:u.value,"aria-label":t(s)("admin.promptAudit.events.selectAll"),onChange:w},null,40,Ps)]),e("th",Ts,a(t(s)("admin.promptAudit.events.time")),1),e("th",Ls,a(t(s)("admin.promptAudit.events.identity")),1),e("th",Ns,a(t(s)("admin.promptAudit.events.group")),1),e("th",Os,a(t(s)("admin.promptAudit.events.route")),1),e("th",js,a(t(s)("admin.promptAudit.events.result")),1),e("th",Gs,a(t(s)("admin.promptAudit.events.preview")),1),e("th",zs,a(t(s)("admin.promptAudit.common.actions")),1)])]),e("tbody",Ms,[n.loading?(g(),b("tr",Hs,[e("td",Ks,a(t(s)("common.loading")),1)])):n.events.length===0?(g(),b("tr",Js,[e("td",Ws,a(t(s)("admin.promptAudit.events.empty")),1)])):(g(!0),b(N,{key:2},H(n.events,x=>(g(),b("tr",{key:x.id,"data-test":`event-${x.id}`,class:"align-top hover:bg-gray-50/70 dark:hover:bg-dark-800/70"},[e("td",Ys,[e("input",{type:"checkbox",checked:n.selectedIds.includes(x.id),"aria-label":t(s)("admin.promptAudit.events.selectEvent",{id:x.id}),onChange:j=>A(x.id)},null,40,Xs)]),e("td",Zs,a(p(x.created_at)),1),e("td",en,[I(t(D),{label:t(s)("admin.promptAudit.events.user"),value:x.snapshot.username},null,8,["label","value"]),I(t(D),{label:t(s)("admin.promptAudit.events.email"),value:x.snapshot.user_email},null,8,["label","value"]),I(t(D),{label:t(s)("admin.promptAudit.events.apiKey"),value:x.snapshot.api_key_name},null,8,["label","value"])]),e("td",tn,a(x.snapshot.group_name||"â"),1),e("td",an,[e("p",sn,a(x.snapshot.endpoint),1),e("p",nn,a(x.snapshot.model)+" · "+a(x.snapshot.protocol)+" · "+a(x.snapshot.stage||"http"),1)]),e("td",rn,[e("span",{class:G(["rounded-full px-2 py-0.5 text-xs font-medium",m(x.decision)])},a(z(x.decision,x.risk_level)),3),e("p",{class:"mt-2 max-w-48 truncate text-xs text-gray-500",title:S(x.categories)},a(S(x.categories)),9,on)]),e("td",ln,[e("p",dn,a(x.snapshot.redacted_preview||"â"),1)]),e("td",un,[e("button",{type:"button",class:"btn btn-ghost btn-sm",onClick:j=>c.$emit("view",x.id)},a(t(s)("common.view")),9,mn),e("button",{type:"button",class:"btn btn-ghost btn-sm text-red-600",onClick:j=>
1c.$emit("delete",x.id)},a(t(s)("common.delete")),9,cn)])],8,Qs))),128))])]),I(nt,{total:n.total,page:n.page,"page-size":n.pageSize,"onUpdate:page":h[13]||(h[13]=x=>c.$emit("page",x)),"onUpdate:pageSize":h[14]||(h[14]=x=>c.$emit("page-size",x))},null,8,["total","page","page-size"])])]))}}),gn={key:0,class:"py-12 text-center text-sm text-gray-500","aria-busy":"true"},bn={key:1,class:"flex flex-col"},vn={class:"flex flex-wrap gap-2 border-b border-gray-200 pb-3 dark:border-dark-700",role:"tablist"},xn=["aria-selected","onClick"],_n={class:"mt-5 h-[min(62vh,36rem)] overflow-y-auto","data-test":"event-detail-tab-panel"},kn={class:"grid gap-5 lg:grid-cols-2",role:"tabpanel"},yn={class:"text-sm font-medium text-gray-900 dark:text-white"},hn={class:"mt-2 max-h-[min(46vh,26rem)] overflow-auto whitespace-pre-wrap break-words rounded-lg bg-gray-50 p-4 text-sm text-gray-700 dark:bg-dark-900 dark:text-dark-200","data-test":"summary-prompt-full"},fn={class:"grid grid-cols-[auto_1fr] gap-x-4 gap-y-2 text-sm"},$n={class:"text-gray-500"},wn={class:"font-medium text-gray-900 dark:text-white"},An={class:"text-gray-500"},Cn={class:"text-gray-500"},Dn={class:"text-gray-500"},Sn={class:"text-gray-500"},Vn={class:"text-gray-500"},En={class:"text-gray-500"},In={class:"space-y-5",role:"tabpanel"},qn={class:"grid gap-4 lg:grid-cols-2"},Un={"data-test":"risk-prompt-preview"},Rn={class:"text-sm font-medium text-gray-900 dark:text-white"},Fn={class:"mt-1 text-xs text-gray-500 dark:text-dark-400"},Bn={class:"mt-2 h-[min(46vh,26rem)] overflow-auto whitespace-pre-wrap break-words rounded-lg bg-gray-50 p-4 text-sm text-gray-700 dark:bg-dark-900 dark:text-dark-200","data-test":"risk-prompt-full"},Pn={"data-test":"risk-guard-return"},Tn={class:"text-sm font-medium text-gray-900 dark:text-white"},Ln={class:"mt-1 text-xs text-gray-500 dark:text-dark-400"},Nn={class:"mt-2 h-[min(46vh,26rem)] overflow-auto whitespace-pre-wrap break-words rounded-lg bg-gray-50 p-4 font-mono text-xs text-gray-700 dark:bg-dark-900 dark:text-dark-200"},On={class:"space-y-3"},jn={class:"text-sm font-medium text-gray-900 dark:text-white"},Gn={class:"flex flex-wrap items-center gap-2"},zn={class:"font-medium text-gray-900 dark:text-white"},Mn={class:"text-xs text-red-600 dark:text-red-300"},Hn={class:"mt-1 text-sm text-gray-600 dark:text-dark-300"},Kn={class:"mt-2 grid gap-1 text-xs text-gray-500 dark:text-dark-400 sm:grid-cols-2"},Jn={class:"inline text-gray-400"},Wn={class:"inline"},Qn={class:"inline text-gray-400"},Yn={class:"inline"},Xn={class:"sm:col-span-2"},Zn={class:"inline text-gray-400"},ei={class:"inline break-words"},ti={key:0,class:"py-6 text-center text-sm text-gray-500"},ai={class:"grid grid-cols-[auto_minmax(0,1fr)] gap-x-4 gap-y-2 text-sm",role:"tabpanel"},si={class:"text-gray-500"},ni={class:"break-all font-mono"},ii={class:"text-gray-500"},ri={class:"break-all font-mono"},oi={class:"text-gray-500"},li={class:"text-gray-500"},di={class:"text-gray-500"},ui={class:"text-gray-500"},mi={class:"text-gray-500"},ci={class:"text-gray-500"},pi={class:"text-gray-500"},gi={class:"text-gray-500"},bi=Q({__name:"EventDetailDialog",props:{show:{type:Boolean},event:{},loading:{type:Boolean}},emits:["close"],setup(n){const r=n,{t:i}=ae(),f=["summary","risks","technical"],s=B("summary");pe(()=>{var d;return(d=r.event)==null?void 0:d.id},()=>{s.value="summary"});const y=new Set(["pass","flag","critical"]),v=new Set(["Allow","Warn","Block"]),u=new Set(["low","medium","high","critical"]);function _(d){return d.snapshot.full_prompt||d.snapshot.redacted_preview||"â"}function D(d,U){const C=y.has(d)?i(`admin.promptAudit.decisions.${d}`):d,P=v.has(U)?i(`admin.promptAudit.actions.${U}`):U;return`${C} · ${P}`}function k(d){return ne.some(U=>U.id===d)?i(`admin.promptAudit.scanners.${d}`):d}function E(d){return d.length?d.map(k).join(", "):"â"}function O(d){const U=ne.find(P=>P.id===d);if(U)return i(`admin.promptAudit.scanners.${U.id}`);const C=ne.find(P=>P.label===d);return C?i(`admin.promptAudit.scanners.${C.id}`):d}function A(d){const U={};for(const[C,P]of Object.entries(d.scanner_evidence||{}))U[C]=O(P);return JSON.stringify({decision:y.has(d.decision)?i(`admin.promptAudit.decisions.${d.decision}`):d.decision,risk_level:u.has(d.risk_level)?i(`admin.promptAudit.riskLevels.${d.risk_level}`):d.risk_level,action:v.has(d.action)?i(`admin.promptAudit.actions.${d.action}`):d.action,categories:d.categories.map(k),matched_scanners:d.matched_scanners.map(k),scanner_scores:d.scanner_scores,scanner_evidence:U,scanner_backend:d.scanner_backend,scanner_version:d.scanner_version,guard_endpoint_id:d.guard_endpoint_id,chunk_total:d.chunk_total,latency_ms:d.latency_ms},null,2)}function w(d){return k(d.category||d.scanner_id)||d.title}function p(d){const C=`admin.promptAudit.scannerDescriptions.${d.category||d.scanner_id}`,P=i(C);return P===C?d.description:P}function m(d){return u.has(d.severity)?i(`admin.promptAudit.riskLevels.${d.severity}`):d.severity_label||d.severity}function o(d){return v.has(d.action)?i(`admin.promptAudit.actions.${d.action}`):d.action_label||d.action}return(d,U)=>(g(),ge(be,{show:n.show,title:t(i)("admin.promptAudit.events.detailTitle"),width:"extra-wide",onClose:U[0]||(U[0]=C=>d.$emit("close"))},{default:ie(()=>[n.loading?(g(),b("div",gn,a(t(i)("common.loading")),1)):n.event?(g(),b("div",bn,[e("div",vn,[(g(),b(N,null,H(f,C=>e("button",{key:C,type:"button",role:"tab","aria-selected":s.value===C,class:G(["rounded-md px-3 py-1.5 text-sm",s.value===C?"bg-primary-50 text-primary-700 dark:bg-primary-950/40 dark:text-primary-300":"text-gray-600 dark:text-dark-300"]),onClick:P=>s.value=C},a(t(i)(`admin.promptAudit.events.tabs.${C}`)),11,xn)),64))]),e("div",_n,[V(e("div",kn,[e("div",null,[e("h4",yn,a(t(i)("admin.promptAudit.events.promptFull")),1),e("pre",hn,a(_(n.event)),1)]),e("dl",fn,[e("dt",$n,a(t(i)("admin.promptAudit.events.decision")),1),e("dd",wn,a(D(n.event.decision,n.event.action)),1),e("dt",An,a(t(i)("admin.promptAudit.events.user")),1),e("dd",null,a(n.event.snapshot.username||"â"),1),e("dt",Cn,a(t(i)("admin.promptAudit.events.email")),1),e("dd",null,a(n.event.snapshot.user_email||"â"),1),e("dt",Dn,a(t(i)("admin.promptAudit.events.apiKey")),1),e("dd",null,a(n.event.snapshot.api_key_name||"â"),1),e("dt",Sn,a(t(i)("admin.promptAudit.events.group")),1),e("dd",null,a(n.event.snapshot.group_name||"â"),1),e("dt",Vn,a(t(i)("admin.promptAudit.events.model")),1),e("dd",null,a(n.event.snapshot.model||"â"),1),e("dt",En,a(t(i)("admin.promptAudit.events.categories")),1),e("dd",null,a(E(n.event.categories)),1)])],512),[[oe,s.value==="summary"]]),V(e("div",In,[e("div",qn,[e("section",Un,[e("h4",Rn,a(t(i)("admin.promptAudit.events.promptFull")),1),e("p",Fn,a(t(i)("admin.promptAudit.events.promptFullHint")),1),e("pre",Bn,a(_(n.event)),1)]),e("section",Pn,[e("h4",Tn,a(t(i)("admin.promptAudit.events.guardReturn")),1),e("p",Ln,a(t(i)("admin.promptAudit.events.guardReturnHint")),1),e("pre",Nn,a(A(n.event)),1)])]),e("div",On,[e("h4",jn,a(t(i)("admin.promptAudit.events.riskSummaries")),1),(g(!0),b(N,null,H(n.event.issue_summaries,C=>(g(),b("article",{key:`${C.scanner_id}-${C.code}`,class:"border-l-2 border-red-400 pl-4","data-test":"risk-issue"},[e("div",Gn,[e("h5",zn,a(w(C)),1),e("span",Mn,a(m(C))+" · "+a(o(C)),1)]),e("p",Hn,a(p(C)),1),e("dl",Kn,[e("div",null,[e("dt",Jn,a(t(i)("admin.promptAudit.events.categories"))+" · ",1),e("dd",Wn,a(k(C.category||C.scanner_id)),1)]),e("div",null,[e("dt",Qn,a(t(i)("admin.promptAudit.events.score"))+" · ",1),e("dd",Yn,a(C.score),1)]),e("div",Xn,[e("dt",Zn,a(t(i)("admin.promptAudit.events.evidence"))+" · ",1),e("dd",ei,a(C.evidence?O(C.evidence):"â"),1)])])]))),128)),n.event.issue_summaries.length===0?(g(),b("p",ti,a(t(i)("admin.promptAudit.events.noRisks")),1)):q("",!0)])],512),[[oe,s.value==="risks"]]),V(e("dl",ai,[e("dt",si,a(t(i)("admin.promptAudit.events.requestId")),1),e("dd",ni,a(n.event.snapshot.request_id||"â"),1),e("dt",ii,a(t(i)("admin.promptAudit.events.promptHash")),1),e("dd",ri,a(n.event.snapshot.prompt_hash),1),e("dt",oi,a(t(i)("admin.promptAudit.events.te
1chnical.scanner")),1),e("dd",null,a(n.event.scanner_backend)+" · "+a(n.event.scanner_version),1),e("dt",li,a(t(i)("admin.promptAudit.events.technical.policy")),1),e("dd",null,a(n.event.policy_id)+" · v"+a(n.event.policy_version),1),e("dt",di,a(t(i)("admin.promptAudit.events.technical.guardEndpoint")),1),e("dd",null,a(n.event.guard_endpoint_id),1),e("dt",ui,a(t(i)("admin.promptAudit.events.technical.config")),1),e("dd",null,"v"+a(n.event.config_version),1),e("dt",mi,a(t(i)("admin.promptAudit.events.technical.chunks")),1),e("dd",null,a(n.event.chunk_total),1),e("dt",ci,a(t(i)("admin.promptAudit.events.technical.latency")),1),e("dd",null,a(n.event.latency_ms)+" ms",1),e("dt",pi,a(t(i)("admin.promptAudit.events.stage")),1),e("dd",null,a(n.event.snapshot.stage||"http"),1),e("dt",gi,a(t(i)("admin.promptAudit.events.technical.protocol")),1),e("dd",null,a(n.event.snapshot.protocol)+" · "+a(n.event.snapshot.endpoint),1)],512),[[oe,s.value==="technical"]])])])):q("",!0)]),_:1},8,["show","title"]))}}),vi={class:"space-y-5 text-sm"},xi={class:"text-gray-500 dark:text-dark-300"},_i={class:"text-xs font-medium text-gray-600 dark:text-dark-200"},ki=["aria-label"],yi=["value","data-test"],hi={class:"inline-flex items-center rounded-full border border-gray-200 px-3 py-1.5 text-xs font-medium text-gray-600 transition-colors peer-checked:border-red-500 peer-checked:bg-red-50 peer-checked:text-red-700 peer-focus-visible:ring-2 peer-focus-visible:ring-red-500/30 dark:border-dark-600 dark:text-dark-300 dark:peer-checked:border-red-500 dark:peer-checked:bg-red-950/40 dark:peer-checked:text-red-300"},fi={class:"mt-2 text-xs text-gray-500 dark:text-dark-400"},$i={key:0,class:"mt-3 grid gap-3 sm:grid-cols-2","data-test":"custom-range"},wi={class:"text-xs text-gray-600 dark:text-dark-200"},Ai=["aria-label"],Ci={class:"text-xs text-gray-600 dark:text-dark-200"},Di=["aria-label"],Si={key:0,class:"text-xs text-red-600 dark:text-red-400 sm:col-span-2"},Vi={class:"grid gap-3 sm:grid-cols-2"},Ei={class:"text-xs text-gray-600 dark:text-dark-200"},Ii=["aria-label"],qi={value:""},Ui={value:"pass"},Ri={value:"flag"},Fi={value:"critical"},Bi={class:"text-xs text-gray-600 dark:text-dark-200"},Pi=["aria-label"],Ti={value:""},Li={value:"low"},Ni={value:"medium"},Oi={value:"high"},ji={value:"critical"},Gi={class:"rounded-xl border border-gray-200 px-4 py-3 dark:border-dark-700/60","data-test":"more-conditions"},zi={class:"cursor-pointer select-none text-xs font-medium text-gray-600 dark:text-dark-200"},Mi={class:"mt-3 grid gap-3 sm:grid-cols-2"},Hi={class:"text-xs text-gray-600 dark:text-dark-200"},Ki=["aria-label"],Ji={class:"text-xs text-gray-600 dark:text-dark-200"},Wi=["aria-label"],Qi={class:"text-xs text-gray-600 dark:text-dark-200"},Yi=["aria-label"],Xi={class:"text-xs text-gray-600 dark:text-dark-200"},Zi=["aria-label"],er={key:0,class:"rounded-xl border border-red-200 bg-red-50/60 px-4 py-3 dark:border-red-900/60 dark:bg-red-950/20","data-test":"delete-preview-result"},tr={class:"text-sm font-semibold text-red-700 dark:text-red-300"},ar={class:"mt-2 grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs text-gray-600 dark:text-dark-300"},sr={class:"break-all font-mono"},nr={class:"mt-2 rounded-lg bg-amber-50 px-3 py-2 text-xs text-amber-800 dark:bg-amber-950/30 dark:text-amber-200"},ir={key:1,class:"rounded-xl border border-dashed border-gray-300 px-4 py-3 text-xs text-gray-500 dark:border-dark-600 dark:text-dark-400","data-test":"delete-preview-empty"},rr={class:"flex flex-wrap items-center justify-end gap-3"},or={key:0,class:"mr-auto text-xs text-gray-500 dark:text-dark-400","data-test":"confirm-disabled-reason"},lr=["disabled"],dr=["disabled","title"],ur=Q({__name:"FilterDeleteDialog",props:{show:{type:Boolean},initialFilters:{},preview:{},previewing:{type:Boolean},deleting:{type:Boolean}},emits:["close","preview","confirm","criteria-change"],setup(n,{emit:r}){const i=n,f=r,{t:s,locale:y}=ae(),v=B("7d"),u=te(ue());pe(()=>i.show,p=>{if(!p)return;const m=F(i.initialFilters);v.value=fe(m)?"custom":"7d",Object.assign(u,m)},{immediate:!0});const _=J(()=>v.value!=="custom"||fe(u)),D=J(()=>!_.value||i.previewing||i.deleting||i.preview!==null&&i.preview.matched_count===0),k=J(()=>i.previewing||i.deleting?"":_.value?i.preview&&i.preview.matched_count===0?"admin.promptAudit.events.filterDeleteConfirmNoMatches":"":"admin.promptAudit.events.filterDeleteConfirmInvalidRange");function E(){f("criteria-change")}function O(){_.value&&f("preview",$e(u,v.value))}function A(){D.value||f("confirm",$e(u,v.value))}function w(p){return new Intl.DateTimeFormat(y.value,{dateStyle:"medium",timeStyle:"medium"}).format(new Date(p))}return(p,m)=>(g(),ge(be,{show:n.show,title:t(s)("admin.promptAudit.events.filterDeleteDialogTitle"),width:"wide",onClose:m[10]||(m[10]=o=>p.$emit("close"))},{footer:ie(()=>[e("div",rr,[k.value?(g(),b("p",or,a(t(s)(k.value)),1)):q("",!0),e("button",{type:"button",class:"btn btn-secondary",onClick:m[9]||(m[9]=o=>p.$emit("close"))},a(t(s)("common.cancel")),1),e("button",{type:"button",class:"btn btn-secondary",disabled:!_.value||n.previewing||n.deleting,"data-test":"run-delete-preview",onClick:O},a(n.previewing?t(s)("admin.promptAudit.events.filterDeletePreviewing"):t(s)("admin.promptAudit.events.filterDeletePreviewAction")),9,lr),e("button",{type:"button",class:"btn btn-danger",disabled:D.value,title:k.value?t(s)(k.value):void 0,"data-test":"confirm-filter-delete",onClick:A},a(n.deleting?t(s)("common.submitting"):t(s)("admin.promptAudit.events.confirmFilterDelete")),9,dr)])]),default:ie(()=>[e("div",vi,[e("p",xi,a(t(s)("admin.promptAudit.events.filterDeleteDialogDesc")),1
1),e("fieldset",null,[e("legend",_i,a(t(s)("admin.promptAudit.events.filterTimeRange")),1),e("div",{class:"mt-2 flex flex-wrap gap-2",role:"radiogroup","aria-label":t(s)("admin.promptAudit.events.filterTimeRange")},[(g(!0),b(N,null,H(t(Ve),o=>(g(),b("label",{key:o.id,class:"cursor-pointer"},[V(e("input",{"onUpdate:modelValue":m[0]||(m[0]=d=>v.value=d),type:"radio",name:"prompt-delete-range",value:o.id,class:"peer sr-only","data-test":`range-preset-${o.id}`,onChange:E},null,40,yi),[[Ze,v.value]]),e("span",hi,a(t(s)(`admin.promptAudit.events.timePresets.${o.id}`)),1)]))),128))],8,ki),e("p",fi,a(t(s)("admin.promptAudit.events.filterTimeRangeHint")),1),v.value==="custom"?(g(),b("div",$i,[e("label",wi,[e("span",null,a(t(s)("admin.promptAudit.events.startAt")),1),V(e("input",{"onUpdate:modelValue":m[1]||(m[1]=o=>u.start_at=o),type:"datetime-local",class:"input mt-1 w-full","aria-label":t(s)("admin.promptAudit.events.startAt"),onChange:E},null,40,Ai),[[L,u.start_at]])]),e("label",Ci,[e("span",null,a(t(s)("admin.promptAudit.events.endAt")),1),V(e("input",{"onUpdate:modelValue":m[2]||(m[2]=o=>u.end_at=o),type:"datetime-local",class:"input mt-1 w-full","aria-label":t(s)("admin.promptAudit.events.endAt"),onChange:E},null,40,Di),[[L,u.end_at]])]),_.value?q("",!0):(g(),b("p",Si,a(t(s)("admin.promptAudit.events.customRangeInvalid")),1))])):q("",!0)]),e("div",Vi,[e("label",Ei,[e("span",null,a(t(s)("admin.promptAudit.events.decision")),1),V(e("select",{"onUpdate:modelValue":m[3]||(m[3]=o=>u.decision=o),class:"input mt-1 w-full","aria-label":t(s)("admin.promptAudit.events.decision"),"data-test":"delete-decision",onChange:E},[e("option",qi,a(t(s)("common.all")),1),e("option",Ui,a(t(s)("admin.promptAudit.decisions.pass")),1),e("option",Ri,a(t(s)("admin.promptAudit.decisions.flag")),1),e("option",Fi,a(t(s)("admin.promptAudit.decisions.critical")),1)],40,Ii),[[de,u.decision]])]),e("label",Bi,[e("span",null,a(t(s)("admin.promptAudit.events.risk")),1),V(e("select",{"onUpdate:modelValue":m[4]||(m[4]=o=>u.risk_level=o),class:"input mt-1 w-full","aria-label":t(s)("admin.promptAudit.events.risk"),"data-test":"delete-risk",onChange:E},[e("option",Ti,a(t(s)("common.all")),1),e("option",Li,a(t(s)("admin.promptAudit.riskLevels.low")),1),e("option",Ni,a(t(s)("admin.promptAudit.riskLevels.medium")),1),e("option",Oi,a(t(s)("admin.promptAudit.riskLevels.high")),1),e("option",ji,a(t(s)("admin.promptAudit.riskLevels.critical")),1)],40,Pi),[[de,u.risk_level]])])]),e("details",Gi,[e("summary",zi,a(t(s)("admin.promptAudit.events.moreConditions")),1),e("div",Mi,[e("label",Hi,[e("span",null,a(t(s)("admin.promptAudit.events.endpoint")),1),V(e("input",{"onUpdate:modelValue":m[5]||(m[5]=o=>u.endpoint=o),type:"text",class:"input mt-1 w-full","aria-label":t(s)("admin.promptAudit.events.endpoint"),onInput:E},null,40,Ki),[[L,u.endpoint]])]),e("label",Ji,[e("span",null,a(t(s)("admin.promptAudit.events.keyword")),1),V(e("input",{"onUpdate:modelValue":m[6]||(m[6]=o=>u.keyword=o),type:"text",class:"input mt-1 w-full","aria-label":t(s)("admin.promptAudit.events.keyword"),onInput:E},null,40,Wi),[[L,u.keyword]])]),e("label",Qi,[e("span",null,a(t(s)("admin.promptAudit.events.groupId")),1),V(e("input",{"onUpdate:modelValue":m[7]||(m[7]=o=>u.group_id=o),type:"number",class:"input mt-1 w-full","aria-label":t(s)("admin.promptAudit.events.groupId"),onInput:E},null,40,Yi),[[L,u.group_id]])]),e("label",Xi,[e("span",null,a(t(s)("admin.promptAudit.events.userId")),1),V(e("input",{"onUpdate:modelValue":m[8]||(m[8]=o=>u.user_id=o),type:"number",class:"input mt-1 w-full","aria-label":t(s)("admin.promptAudit.events.userId"),onInput:E},null,40,Zi),[[L,u.user_id]])])])]),n.preview?(g(),b("div",er,[e("p",tr,a(t(s)("admin.promptAudit.events.filterDeleteCount",{count:n.preview.matched_count})),1),e("dl",ar,[e("dt",null,a(t(s)("admin.promptAudit.events.snapshotMax")),1),e("dd",null,a(n.preview.snapshot_max_id),1),m[11]||(m[11]=e("dt",null,"Filter SHA-256",-1)),e("dd",sr,a(n.preview.filter_hash),1),e("dt",null,a(t(s)("admin.promptAudit.events.expiresAt")),1),e("dd",null,a(w(n.preview.expires_at)),1)]),e("p",nr,a(t(s)("admin.promptAudit.events.filterDeleteWarning")),1)])):(g(),b("p",ir,a(t(s)("admin.promptAudit.events.filterDeleteNeedPreview")),1))])]),_:1},8,["show","title"]))}}),Y="/admin/prompt-audit";async function mr(){const{data:n}=await W.get(`${Y}/config`);return n}async function cr(n){const{data:r}=await W.put(`${Y}/config`,n);return r}async function pr(n){const{data:r}=await W.post(`${Y}/endpoints/probe`,{endpoint:{id:n.id,name:n.name,protocol:"openai_compatible",base_url:n.base_url,model:n.model,token:n.token||void 0,timeout_ms:n.timeout_ms,input_limit:n.input_limit,enabled:n.enabled}});return r}async function gr(){const{data:n}=await W.get(`${Y}/runtime`);return n}async function br(n,r,i){const{data:f}=await W.get(`${Y}/events`,{params:{page:r,page_size:i,...De(n)}});return f}async function vr(n){const{data:r}=await W.get(`${Y}/events/${n}`);return r}async function xr(n){const{data:r}=await W.delete(`${Y}/events/${n}`);return r}async function _r(n){const{data:r}=await W.post(`${Y}/events/batch-delete`,{ids:n});return r}async function kr(n){const{data:r}=await W.post(`${Y}/events/delete-preview`,Se(n));return r}async function yr(n,r){const{data:i}=await W.post(`${Y}/events/delete-by-filter`,{filter:Se(n),snapshot_max_id:r.snapshot_max_id,filter_hash:r.filter_hash,confirmation_token:r.confirmation_token,confirm:!0});return i}async function hr(){const{data:n}=await W.get("/admin/groups/all",{params:{include_inactive:!0}});return n}const M={getConfig:mr,updateConfig:cr,probeEndpoint:pr,getRuntime:gr,listEvents:br,getEvent:vr,deleteEvent:xr,batchDeleteEvents:_r,previewDelete:kr,deleteEventsByFilter:yr,listGroups:hr},fr={class:"mb-6 flex flex-wrap items-end justify-between gap-4"},$r={class:"text-xs font-semibold uppercase tracking-[0.16em] text-primary-600 dark:text-primary-400"},wr={class:"mt-1 text-2xl font-semibold tracking-tight text-gray-950 dark:text-white"},Ar={class:"mt-2 max-w-3xl text-sm text-gray-500 dark:text-dark-300"},Cr={key:0,class:"text-right text-xs text-gray-500 dark:text-dark-400"},Dr={key:0,class:"mt-1"},Sr={key:0,role:"alert",class:"rounded-xl border border-red-200 bg-red-50 p-5 dark:border-red-900 dark:bg-red-950/30"},Vr={class:"text-sm text-red-700 dark:text-red-300"},Er=["aria-label"],Ir={class:"tabs inline-flex"},qr=["aria-selected","data-test","onClick"],Ur={class:"card px-4 sm:px-6 lg:px-8"},Rr={"data-test":"tab-panel-config"},Fr={key:0,role:"alert",class:"mt-5 rounded-lg bg-amber-50 px-4 py-3 text-sm text-amber-800 dark:bg-amber-950/30 dark:text-amber-200"},Br={"data-test":"tab-panel-events"},Pr={key:0,"data-test":"pass-events-disabled-notice",role:"status",class:"mt-6 flex flex-wrap items-center justify-between gap-3 rounded-xl border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-900 dark:border-amber-900/70 dark:bg-amber-950/30 dark:text-amber-200"},Tr={key:0,class:"fixed inset-x-0 bottom-0 z-30 border-t border-gray-200 bg-white/95 px-4 py-3 shadow-[0_-12px_35px_rgba(15,23,42,0.08)] backdrop-blur dark:border-dark-700/80 dark:bg-dark-900/95 dark:shadow-[0_-12px_35px_rgba(0,0,0,0.35)] lg:left-64"},Lr={class:"mx-auto flex max-w-[1600px] flex-wrap items-center justify-between gap-3"},Nr={class:"flex flex-wrap items-center gap-x-5 gap-y-2"},Or={class:"flex items-center gap-3"},jr=["disabled"],Gr=["disabled"],io=Q({__name:"PromptAuditView",setup(n){const{t:r,locale:i}=ae(),f=at(),s=B("events"),y=J(()=>[{id:"events",label:r("admin.promptAudit.tabs.events")},{id:"config",label:r("admin.promptAudit.tabs.config")}]),v=B(null),u=B(null),_=B(null),D=B([]),k=te({items:[],total:0,page:1,page_size:20,pages:0}),E=B(ue()),O=B(ue()),A=B([]),w=B(null),p=B(!1),m=te({}),o=B([]),d=B(!1),U=B(null),C=B(null),P=B(!1),z=te({mode:"",ids:[]}),S=te({config:!1,runtime:!1,groups:!1,events:!1,saving:!1,detail:!1,deleting:!1,previewing:!1}),c=te({config:"",runtime:"",groups:"",events:""}),h=J(()=>he(u.value)!==he(v.value)),x=Q({inheritAttrs:!1,props:{label:{type:String,required:!0},modelValue:{type:Boolean,required:!0},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(l,{emit:$,attrs:T}){return()=>K("label",{class:["flex items-center gap-2.5 text-sm",l.disabled?"cursor-not-allowed opacity-50":"cursor-pointer"]},[K("button",{...T,type:"button",role:"switch","aria-checked":l.modelValue,"aria-label":l.label,disabled:l.disabled,class:["relative inline-flex h-6 w-11 shrink-0 items-center rounded-full border-2 border-transparent transition-colors duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2",l.modelValue?"bg-primary-600":"bg-gray-300 dark:bg-dark-600",l.disabled?"cursor-not-allowed":"cursor-pointer"],onClick:R=>{R.preventDefault(),l.disabled||$("update:modelValue",!l.modelValue)}},[K("span",{class:["pointer-events-none inline-block h-5 w-5 rounded-full bg-white shadow transition-transform duration-200 ease-in-out",l.modelValue?"translate-x-5":"translate-x-0"]})]),K("span",{class:"select-none text-gray-700 dark:text-dark-200"}
1,l.label)])}});function j(l,$){const T=ye(l);if(T){const R=`admin.promptAudit.errors.${T}`,ce=r(R);if(ce!==R)return ce}return st(l,r($))}async function ve(){S.config=!0,c.config="";try{const l=await M.getConfig();v.value=le(l),u.value=le(l)}catch(l){c.config=j(l,"admin.promptAudit.errors.loadConfig")}finally{S.config=!1}}async function re(){S.runtime=!0,c.runtime="";try{_.value=await M.getRuntime()}catch(l){c.runtime=j(l,"admin.promptAudit.errors.loadRuntime")}finally{S.runtime=!1}}async function Ee(){S.groups=!0,c.groups="";try{D.value=await M.listGroups()}catch(l){c.groups=j(l,"admin.promptAudit.errors.loadGroups")}finally{S.groups=!1}}async function se(){S.events=!0,c.events="";try{const l=await M.listEvents(O.value,k.page,k.page_size);Object.assign(k,l),A.value=[]}catch(l){c.events=j(l,"admin.promptAudit.errors.loadEvents")}finally{S.events=!1}}async function Ie(){await Promise.allSettled([ve(),re(),Ee(),se()])}function Z(l){u.value=F(l)}function qe(l){u.value&&Z({...u.value,endpoints:l})}function Ue(l){u.value&&Z({...u.value,enabled:l,blocking_enabled:l?u.value.blocking_enabled:!1})}function Re(l){if(!(!u.value||!u.value.enabled)){if(l&&!u.value.blocking_enabled){P.value=!0;return}Z({...u.value,blocking_enabled:l})}}function Fe(){P.value=!1,u.value&&Z({...u.value,blocking_enabled:!0})}function Be(){v.value&&(u.value=F(v.value))}async function Pe(){if(!(!u.value||!h.value)){S.saving=!0;try{const l=await M.updateConfig(Ce(u.value));v.value=le(l),u.value=le(l),f.showSuccess(r("admin.promptAudit.messages.saved")),await re()}catch(l){const $=ye(l);f.showError(j(l,$==="prompt_audit_config_conflict"?"admin.promptAudit.errors.prompt_audit_config_conflict":"admin.promptAudit.errors.saveConfig"))}finally{S.saving=!1}}}async function Te(l){if(!o.value.includes(l.id)){o.value=[...o.value,l.id];try{const $=await M.probeEndpoint(l);m[l.id]=$,$.ok?f.showSuccess(r("admin.promptAudit.messages.probeSucceeded")):f.showError(`${$.error_code||$.status}: ${$.message}`)}catch($){f.showError(j($,"admin.promptAudit.errors.probe"))}finally{o.value=o.value.filter($=>$!==l.id)}}}function Le(l){E.value=F(l),ee()}function Ne(l){E.value=F(l),O.value=F(l),k.page=1,ee(),se()}function Oe(l){k.page=l,se()}function je(l){k.page_size=l,k.page=1,se()}async function Ge(l){p.value=!0,S.detail=!0,w.value=null;try{w.value=await M.getEvent(l)}catch($){f.showError(j($,"admin.promptAudit.errors.loadDetail")),p.value=!1}finally{S.detail=!1}}function ze(){p.value=!1,w.value=null}function Me(l){z.mode="single",z.ids=[l]}function He(){A.value.length&&(z.mode="batch",z.ids=[...A.value])}function xe(){z.mode="",z.ids=[]}async function Ke(){const l=z.mode,$=[...z.ids];if(xe(),!(!l||$.length===0)){S.deleting=!0;try{const T=l==="single"?await M.deleteEvent($[0]):await M.batchDeleteEvents($);f.showSuccess(r("admin.promptAudit.messages.deleted",{count:T.deleted_events})),await Promise.allSettled([se(),re()])}catch(T){f.showError(j(T,"admin.promptAudit.errors.delete"))}finally{S.deleting=!1}}}function ee(){U.value=null,C.value=null}function Je(){ee(),d.value=!0}function _e(){d.value=!1,ee()}async function We(l){S.previewing=!0;try{U.value=await M.previewDelete(l),C.value=F(l)}catch($){ee(),f.showError(j($,"admin.promptAudit.errors.previewDelete"))}finally{S.previewing=!1}}async function Qe(l){if(!S.deleting){S.deleting=!0;try{let $=U.value,T=C.value?F(C.value):null;if((!$||!T)&&l&&($=await M.previewDelete(l),T=F(l)),!$||!T)return;const R=await M.deleteEventsByFilter(T,$);_e(),f.showSuccess(r("admin.promptAudit.messages.deleted",{count:R.deleted_events})),await Promise.allSettled([se(),re()])}catch($){ee(),f.showError(j($,"admin.promptAudit.errors.deleteConfirmation"))}finally{S.deleting=!1}}}function Ye(l){return new Intl.DateTimeFormat(i.value,{dateStyle:"medium",timeStyle:"medium"}).format(new Date(l))}return et(Ie),(l,$)=>(g(),ge(tt,null,{default:ie(()=>{var T;return[e("div",{class:G(["mx-auto max-w-[1600px]",s.value==="config"&&u.value?"pb-28":"pb-8"])},[e("header",fr,[e("div",null,[e("p",$r,a(t(r)("nav.securityAudit")),1),e("h1",wr,a(t(r)("admin.promptAudit.title")),1),e("p",Ar,a(t(r)("admin.promptAudit.description")),1)]),u.value?(g(),b("div",Cr,[e("p",null,a(t(r)("admin.promptAudit.configVersion",{version:u.value.config_version})),1),u.value.updated_at?(g(),b("p",Dr,a(Ye(u.value.updated_at)),1)):q("",!0)])):q("",!0)]),c.config&&!u.value?(g(),b("div",Sr,[e("p",Vr,a(c.config),1),e("button",{type:"button",class:"btn btn-secondary btn-sm mt-3",onClick:ve},a(t(r)("admin.promptAudit.actions.retry")),1)])):(g(),b(N,{key:1},[e("div",{class:"mb-4",role:"tablist","aria-label":t(r)("admin.promptAudit.title")},[e("div",Ir,[(g(!0),b(N,null,H(y.value,R=>(g(),b("button",{key:R.id,type:"button",role:"tab",class:G(["tab",{"tab-active":s.value===R.id}]),"aria-selected":s.value===R.id,"data-test":`tab-${R.id}`,onClick:ce=>s.value=R.id},a(R.label),11,qr))),128))])],8,Er),e("main",Ur,[V(e("div",Rr,[I(Vt,{runtime:_.value,loading:S.runtime,error:c.runtime,onRefresh:re},null,8,["runtime","loading","error"]),u.value?(g(),b(N,{key:0},[I(Ca,{endpoints:u.value.endpoints,"probe-results":m,"probing-ids":o.value,"onUpdate:endpoints":qe,onProbe:Te},null,8,["endpoints","probe-results","probing-ids"]),c.groups?(g(),b("div",Fr,a(c.groups),1)):q("",!0),I(rs,{draft:u.value,groups:D.value,"onUpdate:draft":Z},null,8,["draft","groups"])],64)):q("",!0)],512),[[oe,s.value==="config"]]),V(e("div",Br,[(T=u.value)!=null&&T.enabled&&!u.value.store_pass_events?(g(),b("div",Pr,[e("span",null,a(t(r)("admin.promptAudit.events.passEventsDisabled")),1),e("button",{type:"button",class:"btn btn-secondary btn-sm",onClick:$[0]||($[0]=R=>s.value="config")},a(t(r)("admin.promptAudit.events.openConfiguration")),1)])):q("",!0),I(pn,{events:k.items,total:k.total,page:k.page,"page-size":k.page_size,filters:E.value,"selected-ids":A.value,loading:S.events,error:c.events,onFiltersChange:Le,onSearch:Ne,onSelection:$[1]||($[1]=R=>A.value=R),onPage:Oe,onPageSize:je,onView:Ge,onDelete:Me,onBatchDelete:He,onPreviewDelete:Je},null,8,["events","total","page","page-size","filters","selected-ids","loading","error"])],512),[[oe,s.value==="events"]])])],64))],2),u.value&&s.value==="config"?(g(),b("div",Tr,[e("div",Lr,[e("div",Nr,[I(t(x),{label:t(r)("admin.promptAudit.saveBar.enabled"),"model-value":u.value.enabled,"data-test":"enabled-toggle","onUpdate:modelValue":Ue},null,8,["label","model-value"]),I(t(x),{label:t(r)("admin.promptAudit.saveBar.blocking"),"model-value":u.value.blocking_enabled,disabled:!u.value.enabled,"data-test":"blocking-toggle","onUpdate:modelValue":Re},null,8,["label","model-value","disabled"]),I(t(x),{label:t(r)("admin.promptAudit.saveBar.blockingLatestTurnOnly"),"model-value":u.value.blocking_latest_turn_only,disabled:!u.value.enabled||!u.value.blocking_enabled,"data-test":"blocking-latest-turn-only-toggle","onUpdate:modelValue":$[2]||($[2]=R=>Z({...u.value,blocking_latest_turn_only:R}))},null,8,["label","model-value","disabled"]),I(t(x),{label:t(r)("admin.promptAudit.saveBar.storePass"),"model-value":u.value.store_pass_events,"data-test":"store-pass-toggle","onUpdate:modelValue":$[3]||($[3]=R=>Z({...u.value,store_pass_events:R}))},null,8,["label","model-value"])]),e("div",Or,[e("span",{class:G(["text-sm",h.value?"text-amber-700 dark:text-amber-300":"text-gray-500 dark:text-dark-400"])},a(h.value?t(r)("admin.promptAudit.saveBar.dirty"):t(r)("admin.promptAudit.saveBar.synced")),3),e("button",{type:"button",class:"btn btn-secondary",disabled:!h.value||S.saving,onClick:Be},a(t(r)("common.reset")),9,jr),e("button",{type:"button",class:"btn btn-primary",disabled:!h.value||S.saving,"data-test":"save-config",onClick:Pe},a(S.saving?t(r)("common.saving"):t(r)("common.save")),9,Gr)])])])):q("",!0),I(ke,{show:P.value,title:t(r)("admin.promptAudit.blockingConfirm.title"),message:t(r)("admin.promptAudit.blockingConfirm.message"),"confirm-text":t(r)("admin.promptAudit.blockingConfirm.confirm"),danger:"",onConfirm:Fe,onCancel:$[4]||($[4]=R=>P.value=!1)},null,8,["show","title","message","confirm-text"]),I(ke,{show:z.mode!=="",title:t(r)("admin.promptAudit.events.deleteConfirmTitle"),message:t(r)("admin.promptAudit.events.deleteConfirmMessage",{count:z.ids.length}),"confirm-text":t(r)("common.delete"),danger:"",onConfirm:Ke,onCancel:xe},null,8,["show","title","message","confirm-text"]),I(ur,{show:d.value,"initial-filters":E.value,preview:U.value,previewing:S.previewing,deleting:S.deleting,onClose:_e,onPreview:We,onConfirm:Qe,onCriteriaChange:ee},null,8,["show","initial-filters","preview","previewing","deleting"]),I(bi,{show:p.value,event:w.value,loading:S.detail,onClose:ze},null,8,["show","event","loading"])]}),_:1}))}});
1export{io 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.