@chenpu17/cc-gw 0.8.7 → 0.8.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/package.json +5 -5
  2. package/src/web/dist/assets/{About-CQlf3ZPj.js → About-DL-kRONi.js} +1 -1
  3. package/src/web/dist/assets/{ApiKeys-DOKqJCMB.js → ApiKeys-B8z3u4IT.js} +1 -1
  4. package/src/web/dist/assets/{ConfirmDialog-C68Yivng.js → ConfirmDialog-BOlSnrzw.js} +1 -1
  5. package/src/web/dist/assets/{Dashboard-Dl6lEQC0.js → Dashboard-oP_O6VHo.js} +1 -1
  6. package/src/web/dist/assets/{DialogShell-BYqoLSIE.js → DialogShell-CIfpW2Dh.js} +1 -1
  7. package/src/web/dist/assets/{Events-iNPooxgH.js → Events-CV2keu3U.js} +1 -1
  8. package/src/web/dist/assets/{Help-CWv7e8bp.js → Help-CsDD4R4j.js} +1 -1
  9. package/src/web/dist/assets/{Login-BwGD9nii.js → Login-CBDYephM.js} +1 -1
  10. package/src/web/dist/assets/Logs-DGKWZwT6.js +1 -0
  11. package/src/web/dist/assets/{ModelManagement-Cnb6daD7.js → ModelManagement-DwXLeUHU.js} +1 -1
  12. package/src/web/dist/assets/{PageHeader-JpvzJlDR.js → PageHeader-CXZYQQD4.js} +1 -1
  13. package/src/web/dist/assets/{PageSection-D_3fkKC5.js → PageSection-DVUeDf43.js} +1 -1
  14. package/src/web/dist/assets/{PageState-rxsd1pfX.js → PageState-BQHM_52P.js} +1 -1
  15. package/src/web/dist/assets/{Profiler-D2Zh-Nwi.js → Profiler-DMGK-XFA.js} +1 -1
  16. package/src/web/dist/assets/{RoutingManagement-DYrbEWZ_.js → RoutingManagement-u1VryAxe.js} +1 -1
  17. package/src/web/dist/assets/{Settings-C2Zf8aEk.js → Settings-EhwD6Y4g.js} +1 -1
  18. package/src/web/dist/assets/{Skeleton-pk8SE4WU.js → Skeleton-Go6kbxGz.js} +1 -1
  19. package/src/web/dist/assets/{badge-Ci0LPkhW.js → badge-CJGSNmZk.js} +1 -1
  20. package/src/web/dist/assets/{card-hwtf3yu-.js → card-1Yb5z5wa.js} +1 -1
  21. package/src/web/dist/assets/{gateway-CgHqiqY9.js → gateway-BngR7DkG.js} +1 -1
  22. package/src/web/dist/assets/{index-DTypJ2Bg.js → index-GHIvOfHn.js} +2 -2
  23. package/src/web/dist/assets/{input-nzbrZT8r.js → input-C-ScmIz9.js} +1 -1
  24. package/src/web/dist/assets/{label-jdLnQwgX.js → label-Dg9f6DDv.js} +1 -1
  25. package/src/web/dist/assets/{popover-j12PlF5c.js → popover-DmaWzvZZ.js} +1 -1
  26. package/src/web/dist/assets/{select-CCOTVWXq.js → select-C8ErmS7h.js} +1 -1
  27. package/src/web/dist/assets/{switch-CmcsdQWq.js → switch-B2WWdhr1.js} +1 -1
  28. package/src/web/dist/assets/{useApiQuery-CDL54hs8.js → useApiQuery-qs2heY2G.js} +1 -1
  29. package/src/web/dist/assets/{useAppMutation-Br__hMJO.js → useAppMutation-DHIZ_u7B.js} +1 -1
  30. package/src/web/dist/assets/{useModelManagementState-CABs4ftK.js → useModelManagementState-BXSC17d4.js} +1 -1
  31. package/src/web/dist/assets/utils-COMB3wUn.js +1 -0
  32. package/src/web/dist/index.html +1 -1
  33. package/src/web/dist/assets/Logs-CjLydDgS.js +0 -1
  34. package/src/web/dist/assets/utils-BHook6QN.js +0 -1
@@ -1 +0,0 @@
1
- import{r as f,j as e,an as We,ao as Ge,a9 as Je,ap as Xe,am as Ze,W as Ye,T as et}from"./vendor-DfnQOGOQ.js";import{P as tt}from"./PageHeader-JpvzJlDR.js";import{c as v,B as E,b as st,u as ge,s as C,t as lt,a as T}from"./index-DTypJ2Bg.js";import{B as M}from"./badge-Ci0LPkhW.js";import{C as Ee,a as _e}from"./card-hwtf3yu-.js";import{I as ue}from"./input-nzbrZT8r.js";import{L as I}from"./label-jdLnQwgX.js";import{S as ee,a as te,b as se,c as le,d as L}from"./select-CCOTVWXq.js";import{u as K}from"./i18n-dgCQR_PB.js";import{D as at,A as rt,a as ot,b as it,c as nt,d as dt}from"./DialogShell-BYqoLSIE.js";import{P as ct,a as xe}from"./PageState-rxsd1pfX.js";import{c as mt}from"./clipboard-CALi6bTW.js";import{u as $}from"./useApiQuery-CDL54hs8.js";import{q as U}from"./queryKeys-BMvyDTQS.js";import{g as De,f as O,a as Fe,b as pt,c as z,d as ut,e as xt}from"./utils-BHook6QN.js";import{P as gt,a as ht,b as ft}from"./popover-j12PlF5c.js";import{T as bt}from"./Skeleton-pk8SE4WU.js";import{g as Se}from"./gateway-CgHqiqY9.js";import"./query-Db16w3tH.js";import"./router-BURlSZbt.js";import"./radix-D08JKSgz.js";function yt({apiKeys:l,selected:t,onChange:i,disabled:n,className:c}){const{t:s}=K(),[r,h]=f.useState(!1),p=f.useRef(null);f.useEffect(()=>{if(!r)return;const o=a=>{var d;(d=p.current)!=null&&d.contains(a.target)||h(!1)};return window.addEventListener("mousedown",o),()=>window.removeEventListener("mousedown",o)},[r]);const j=f.useMemo(()=>{if(t.length===0)return[];const o=new Map;for(const a of l)o.set(a.id,a);return t.map(a=>{const d=o.get(a);return d?d.isWildcard?s("apiKeys.wildcard"):d.name:null}).filter(a=>!!a)},[l,t,s]),u=t.length===0?s("logs.filters.apiKeyAll"):s("logs.filters.apiKeySelected",{count:t.length}),y=o=>{t.includes(o)?i(t.filter(a=>a!==o)):i([...t,o])};return e.jsxs("div",{className:v("relative space-y-2",c),ref:p,children:[e.jsx(I,{children:s("logs.filters.apiKey")}),e.jsxs("button",{type:"button",onClick:()=>h(o=>!o),disabled:n||l.length===0,title:s("logs.filters.apiKeyHint"),className:v("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 text-sm ring-offset-background transition-all focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",t.length>0&&"border-primary",r&&"ring-2 ring-ring ring-offset-2"),children:[e.jsxs("span",{className:"truncate",children:[u,j.length>0&&e.jsx("span",{className:"ml-1 text-xs text-muted-foreground",children:j.join(", ")})]}),e.jsx("svg",{className:v("h-4 w-4 opacity-50 transition-transform",r&&"rotate-180"),viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M5.23 7.21a.75.75 0 011.06.02L10 10.94l3.71-3.71a.75.75 0 111.06 1.06l-4.24 4.25a.75.75 0 01-1.06 0L5.21 8.29a.75.75 0 01.02-1.08z",clipRule:"evenodd"})})]}),r&&e.jsxs("div",{className:"absolute left-0 top-full z-30 mt-2 w-64 rounded-md border bg-popover p-2 shadow-md",children:[e.jsxs("div",{className:"flex items-center justify-between rounded-md bg-secondary px-3 py-2 text-xs",children:[e.jsx("span",{children:u}),e.jsx("button",{type:"button",onClick:()=>i([]),disabled:t.length===0,className:"text-primary hover:underline disabled:opacity-40",children:s("common.actions.reset")})]}),e.jsxs("div",{className:"max-h-56 overflow-y-auto py-2",children:[l.map(o=>{const a=o.isWildcard?s("apiKeys.wildcard"):o.name,d=t.includes(o.id);return e.jsxs("label",{className:v("flex cursor-pointer items-center gap-2 rounded-xl px-3 py-2 text-sm transition hover:bg-primary/5",d&&"bg-primary/10 text-primary"),children:[e.jsx("input",{type:"checkbox",className:"h-4 w-4 rounded border-border",checked:d,onChange:()=>y(o.id)}),e.jsx("span",{className:"truncate",children:a})]},o.id)}),l.length===0&&e.jsx("p",{className:"px-2 py-2 text-xs text-muted-foreground",children:s("logs.filters.apiKeyAll")})]})]})]})}function jt(l){const{t}=K(),{total:i,activeFilters:n,filtersExpanded:c,setFiltersExpanded:s,handleResetFilters:r,activeQuickView:h,applyQuickView:p,providerFilter:j,setProviderFilter:u,endpointFilter:y,setEndpointFilter:o,selectedApiKeys:a,setSelectedApiKeys:d,modelFilter:k,setModelFilter:x,statusFilter:R,setStatusFilter:D,fromDate:S,setFromDate:_,toDate:w,setToDate:b,providerOptions:B,apiKeys:re,apiKeysLoading:oe,customEndpoints:W}=l;return e.jsx(Ee,{"data-testid":"logs-filters-card",className:"overflow-hidden",children:e.jsxs(_e,{className:"pt-4",children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("p",{className:"text-sm font-semibold text-foreground",children:t("logs.filtersTitle")}),e.jsx(M,{variant:"outline",children:t("logs.summary.total",{value:i.toLocaleString()})}),n.length>0&&e.jsx(M,{variant:"secondary",children:t("common.filters.activeCount",{count:n.length})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t("logs.filtersDescription")})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[n.length>0&&e.jsx(E,{variant:"ghost",size:"sm",onClick:r,children:t("common.actions.reset")}),e.jsx(E,{variant:"ghost",size:"sm",onClick:()=>s(g=>!g),children:c?e.jsxs(e.Fragment,{children:[t("common.filters.collapse"),e.jsx(We,{className:"ml-1 h-4 w-4"})]}):e.jsxs(e.Fragment,{children:[t("common.filters.expand"),e.jsx(Ge,{className:"ml-1 h-4 w-4"})]})})]})]}),e.jsxs("div",{className:"grid gap-3 lg:grid-cols-[minmax(0,1fr)_auto]",children:[e.jsx("div",{className:"flex min-h-[52px] items-center rounded-lg border border-border bg-secondary px-3 py-2",children:n.length>0?e.jsx("div",{className:"flex flex-wrap items-center gap-2",children:n.map(g=>e.jsxs(M,{variant:"secondary",role:"button",tabIndex:0,className:"cursor-pointer gap-1 border border-transparent bg-primary/10 text-primary hover:bg-destructive/10 hover:text-destructive",onClick:g.onRemove,onKeyDown:G=>{(G.key==="Enter"||G.key===" ")&&(G.preventDefault(),g.onRemove())},children:[g.label,e.jsx(Je,{className:"h-3 w-3","aria-hidden":"true"})]},g.key))}):e.jsx("span",{className:"text-sm text-muted-foreground",children:t("common.filters.allRequests")})}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-4 lg:min-w-[360px]",children:[e.jsx(Y,{label:t("common.filters.activeCount",{count:n.length}),value:n.length.toString()}),e.jsx(Y,{label:t("logs.filters.apiKey"),value:a.length.toString()}),e.jsx(Y,{label:t("logs.filters.provider"),value:j==="all"?t("common.noData"):"1"}),e.jsx(Y,{label:t("logs.filters.endpoint"),value:y==="all"?t("common.noData"):"1"})]})]}),e.jsx("div",{className:"flex flex-wrap items-center gap-2 rounded-lg border border-border bg-secondary p-2",children:["all","errors","today","anthropic","openai"].map(g=>e.jsx(E,{variant:h===g?"default":"outline",size:"sm",className:v("rounded-full border-transparent",h===g&&g==="all"&&"bg-foreground text-background hover:bg-foreground/90",h===g&&g==="errors"&&"bg-rose-500 text-white hover:bg-rose-500/90",h===g&&g==="today"&&"bg-emerald-500 text-white hover:bg-emerald-500/90",h===g&&(g==="anthropic"||g==="openai")&&"bg-amber-500 text-white hover:bg-amber-500/90"),onClick:()=>p(g),children:t(`logs.quickViews.${g}`)},g))})]}),c&&e.jsxs("div",{className:"mt-4 grid gap-4 rounded-lg border border-border bg-secondary p-4 md:grid-cols-2 xl:grid-cols-4 animate-in fade-in slide-in-from-top-2 duration-200",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(I,{children:t("logs.filters.provider")}),e.jsxs(ee,{value:j,onValueChange:u,children:[e.jsx(te,{children:e.jsx(se,{})}),e.jsxs(le,{children:[e.jsx(L,{value:"all",children:t("logs.filters.providerAll")}),B.map(g=>e.jsx(L,{value:g.id,children:g.label??g.id},g.id))]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(I,{children:t("logs.filters.endpoint")}),e.jsxs(ee,{value:y,onValueChange:o,children:[e.jsx(te,{children:e.jsx(se,{})}),e.jsxs(le,{children:[e.jsx(L,{value:"all",children:t("logs.filters.endpointAll")}),e.jsx(L,{value:"anthropic",children:t("logs.filters.endpointAnthropic")}),e.jsx(L,{value:"openai",children:t("logs.filters.endpointOpenAI")}),W==null?void 0:W.map(g=>e.jsx(L,{value:g.id,children:g.label||g.id},g.id))]})]})]}),e.jsx(yt,{className:"md:col-span-2",apiKeys:re,selected:a,disabled:oe,onChange:d}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(I,{children:t("logs.filters.modelId")}),e.jsx(ue,{value:k,onChange:g=>x(g.target.value),placeholder:t("logs.filters.modelPlaceholder")})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(I,{children:t("logs.filters.status")}),e.jsxs(ee,{value:R,onValueChange:g=>D(g),children:[e.jsx(te,{children:e.jsx(se,{})}),e.jsxs(le,{children:[e.jsx(L,{value:"all",children:t("logs.filters.statusAll")}),e.jsx(L,{value:"success",children:t("logs.filters.statusSuccess")}),e.jsx(L,{value:"error",children:t("logs.filters.statusError")})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(I,{children:t("logs.filters.startDate")}),e.jsx(ue,{type:"date",value:S,onChange:g=>_(g.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(I,{children:t("logs.filters.endDate")}),e.jsx(ue,{type:"date",value:w,onChange:g=>b(g.target.value)})]})]})]})})}function Y({label:l,value:t}){return e.jsxs("div",{className:"rounded-lg border border-border bg-card px-3 py-2",children:[e.jsx("p",{className:"text-[11px] text-muted-foreground",children:l}),e.jsx("p",{className:"mt-1 text-sm font-semibold text-foreground",children:t})]})}const he={listRequest(l){return{url:"/api/logs",method:"GET",params:l}},detailRequest(l){return{url:l===null?"":`/api/logs/${l}`,method:"GET"}},async exportArchive(l,t){const i=await st.post("/api/logs/export",l,{responseType:"blob",timeout:t});return new Blob([i.data],{type:"application/zip"})}};function vt({apiKeyMap:l,logId:t,open:i,providerLabelMap:n}){var o;const{t:c}=K(),{pushToast:s}=ge(),r=$(U.logs.detail(t),he.detailRequest(t),{enabled:i&&t!==null,staleTime:3e4});f.useEffect(()=>{!r.isError||!r.error||s({title:c("logs.detail.loadError"),description:r.error.message,variant:"error"})},[r.error,r.isError,s,c]);const h=f.useCallback(async(a,d,k)=>{if(!d){s({title:c("logs.detail.copy.empty",{label:a}),variant:"info"});return}try{await mt(d),s({title:c(k),variant:"success"})}catch(x){s({title:c("logs.detail.copy.failure"),description:x instanceof Error?x.message:c("logs.detail.copy.failureFallback"),variant:"error"})}},[s,c]),p=r.data,j=p?n.get(p.provider)??p.provider:"",u=p&&p.api_key_id!=null?l.get(p.api_key_id):void 0,y=p?De(p,c):null;return{apiKeyMeta:u,errorMessage:r.isError?((o=r.error)==null?void 0:o.message)??null:null,handleCopy:h,isError:r.isError,isPending:r.isPending,providerLabel:j,refetch:r.refetch,record:p,statusMeta:y}}function Nt({open:l,logId:t,onClose:i,providerLabelMap:n,apiKeyMap:c}){var x,R,D,S,_,w;const{t:s}=K(),{apiKeyMeta:r,errorMessage:h,handleCopy:p,isError:j,isPending:u,providerLabel:y,refetch:o,record:a,statusMeta:d}=vt({apiKeyMap:c,logId:t,open:l,providerLabelMap:n}),k=a?[{key:"client-request",title:s("logs.detail.payload.clientRequest"),value:((x=a.payload)==null?void 0:x.client_request)??null,emptyLabel:s("logs.detail.payload.emptyRequest"),copyToast:"logs.detail.copy.requestSuccess"},...(R=a.payload)!=null&&R.upstream_request?[{key:"upstream-request",title:s("logs.detail.payload.upstreamRequest"),value:a.payload.upstream_request,emptyLabel:s("logs.detail.payload.emptyRequest"),copyToast:"logs.detail.copy.requestSuccess"}]:[],...(D=a.payload)!=null&&D.upstream_response?[{key:"upstream-response",title:s("logs.detail.payload.upstreamResponse"),value:a.payload.upstream_response,emptyLabel:s("logs.detail.payload.emptyResponse"),copyToast:"logs.detail.copy.responseSuccess"}]:[],{key:"client-response",title:s("logs.detail.payload.clientResponse"),value:((S=a.payload)==null?void 0:S.client_response)??null,emptyLabel:s("logs.detail.payload.emptyResponse"),copyToast:"logs.detail.copy.responseSuccess"}]:[];return e.jsx(at,{open:l,onOpenChange:b=>{b||i()},children:e.jsxs(rt,{className:"w-[min(96vw,1200px)] max-w-[1200px]",children:[e.jsxs(ot,{className:"pr-14",children:[e.jsx(it,{children:s("logs.detail.title")}),e.jsx(nt,{children:a?s("logs.detail.id",{id:a.id}):s("logs.detail.loadError")})]}),e.jsx(dt,{className:"max-h-[78vh]",children:u?e.jsx(ct,{compact:!0,className:"min-h-[240px]",label:s("common.loading")}):j?e.jsx(xe,{compact:!0,className:"min-h-[240px]",tone:"danger",title:s("logs.detail.loadError"),description:h??s("common.unknownError"),action:e.jsx(E,{variant:"outline",onClick:()=>void o(),children:s("common.actions.refresh")})}):a?e.jsxs("div",{className:"space-y-6 text-sm",children:[e.jsxs("section",{className:"space-y-4 rounded-lg border border-border bg-card p-5",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:s("logs.detail.infoSection")}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 rounded-lg border border-border bg-secondary p-3 text-xs",children:[e.jsx("span",{className:"font-medium",children:s("logs.detail.summary.route",{from:a.client_model??s("logs.detail.info.noRequestedModel"),to:a.model})}),e.jsx("span",{className:"text-muted-foreground",children:s("logs.detail.summary.latency",{value:O(a.latency_ms,s("common.units.ms"))})}),a.ttft_ms!==null?e.jsxs("span",{className:"text-muted-foreground",children:["TTFT: ",O(a.ttft_ms,s("common.units.ms"))]}):null]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(M,{variant:d==null?void 0:d.variant,children:(d==null?void 0:d.label)??"-"}),e.jsx(M,{variant:"outline",children:a.stream?s("logs.stream.streaming"):s("logs.stream.single")})]})]}),e.jsxs("div",{className:"grid gap-3 md:grid-cols-4",children:[e.jsx(A,{label:s("logs.detail.info.latency"),value:O(a.latency_ms,s("common.units.ms"))}),e.jsx(A,{label:s("logs.detail.info.ttft"),value:O(a.ttft_ms,s("common.units.ms"))}),e.jsx(A,{label:s("logs.detail.info.tpot"),value:O(a.tpot_ms,s("common.units.msPerToken"))}),e.jsx(A,{label:s("logs.detail.info.status"),value:(d==null?void 0:d.label)??"-"})]}),e.jsxs("dl",{className:"grid gap-x-4 gap-y-3 md:grid-cols-2 xl:grid-cols-4",children:[e.jsx(F,{label:s("logs.detail.info.time"),value:Fe(a.timestamp)}),e.jsx(F,{label:s("logs.detail.info.sessionId"),value:a.session_id??"-"}),e.jsx(F,{label:s("logs.detail.info.endpoint"),value:a.endpoint||"-"}),e.jsx(F,{label:s("logs.detail.info.provider"),value:y}),e.jsx(F,{label:s("logs.detail.info.requestedModel"),value:a.client_model??s("logs.detail.info.noRequestedModel")}),e.jsx(F,{label:s("logs.detail.info.model"),value:a.model}),e.jsx(F,{label:s("logs.detail.info.stream"),value:pt(a.stream)}),e.jsx(F,{label:s("logs.detail.info.status"),value:(d==null?void 0:d.label)??"-"})]}),e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-4",children:[e.jsx(A,{label:s("logs.detail.info.inputTokens"),value:z(a.input_tokens)}),e.jsx(A,{label:s("logs.detail.info.cacheReadTokens"),value:z(a.cache_read_tokens)}),e.jsx(A,{label:s("logs.detail.info.cacheCreationTokens"),value:z(a.cache_creation_tokens)}),e.jsx(A,{label:s("logs.detail.info.outputTokens"),value:z(a.output_tokens)})]}),a.error?e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:s("logs.detail.info.error")}),e.jsx("p",{className:"rounded-[1rem] border border-destructive/50 bg-destructive/10 p-3 text-xs text-destructive",children:a.error})]}):null]}),e.jsxs("div",{className:"grid gap-6 xl:grid-cols-[minmax(0,0.9fr)_minmax(0,1.1fr)]",children:[e.jsxs("section",{className:"space-y-3 rounded-lg border border-border bg-card p-5",children:[e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:s("logs.detail.apiKey.title")}),e.jsxs("dl",{className:"grid gap-x-4 gap-y-3 sm:grid-cols-2",children:[e.jsx(F,{label:s("logs.detail.apiKey.name"),value:a.api_key_id==null&&!a.api_key_name?s("logs.detail.apiKey.missing"):r!=null&&r.isWildcard?s("apiKeys.wildcard"):(r==null?void 0:r.name)??a.api_key_name??s("logs.detail.apiKey.missing")}),e.jsx(F,{label:s("logs.detail.apiKey.identifier"),value:a.api_key_id??s("common.noData")}),e.jsx(F,{label:s("logs.detail.apiKey.masked"),value:r!=null&&r.isWildcard?s("apiKeys.wildcard"):(r==null?void 0:r.maskedKey)??a.api_key_name??s("logs.detail.apiKey.maskedUnavailable")}),e.jsx(F,{label:s("logs.detail.apiKey.lastUsed"),value:r!=null&&r.lastUsedAt?new Date(r.lastUsedAt).toLocaleString():s("common.noData")})]}),e.jsxs("div",{className:"rounded-lg border border-border bg-secondary p-3 text-xs",children:[e.jsx("p",{className:"font-medium",children:s("logs.detail.apiKey.rawMasked")}),e.jsx("p",{className:"mt-1 break-all font-mono",children:a.api_key_value_available?a.api_key_value_masked??s("logs.detail.apiKey.rawUnavailable"):s("logs.detail.apiKey.rawUnavailable")}),e.jsx("p",{className:"mt-2 text-[11px] text-muted-foreground",children:s("logs.detail.apiKey.rawMaskedHint")})]})]}),e.jsxs("section",{className:"space-y-4 rounded-lg border border-border bg-card p-5",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:s("logs.detail.payload.title")}),e.jsx("p",{className:"text-xs text-muted-foreground",children:(_=a.payload)!=null&&_.upstream_request||(w=a.payload)!=null&&w.upstream_response?s("logs.detail.payload.helperWithUpstream"):s("logs.detail.payload.helperClientOnly")})]}),e.jsx("div",{className:"grid gap-4 xl:grid-cols-2",children:k.map(b=>e.jsx(wt,{title:b.title,value:b.value,emptyLabel:b.emptyLabel,onCopy:()=>p(b.title,b.value,b.copyToast),t:s},b.key))})]})]})]}):e.jsx(xe,{compact:!0,className:"min-h-[240px]",title:s("logs.detail.loadError"),description:s("common.noData")})})]})})}function A({label:l,value:t}){return e.jsxs("div",{className:"min-w-0 rounded-lg border border-border bg-secondary px-3 py-3",children:[e.jsx("p",{className:"text-[11px] font-medium uppercase tracking-[0.16em] text-muted-foreground",children:l}),e.jsx("p",{className:"mt-2 break-all text-sm font-semibold leading-6",children:t})]})}function F({label:l,value:t}){return e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsx("dt",{className:"text-xs text-muted-foreground",children:l}),e.jsx("dd",{className:"min-w-0 break-all whitespace-pre-wrap text-sm font-medium leading-6 text-foreground",children:t??"-"})]})}function wt({emptyLabel:l,onCopy:t,title:i,value:n,t:c}){return e.jsxs("div",{className:"space-y-3 rounded-lg border border-border bg-secondary/40 p-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsx("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:i}),e.jsx(E,{variant:"outline",size:"sm",onClick:t,children:c("common.actions.copy")})]}),e.jsx("pre",{className:"max-h-72 overflow-auto whitespace-pre-wrap rounded-lg border border-border bg-secondary p-3 text-xs",children:ut(n,l)})]})}const H=[20,50,100],Q=["endpoint","provider","requestedModel","routedModel","apiKey","inputTokens","cacheReadTokens","cacheCreationTokens","outputTokens","latency","ttft","tpot","status","error"],ae=["endpoint","provider","requestedModel","routedModel","apiKey","inputTokens","cacheReadTokens","cacheCreationTokens","outputTokens","latency","ttft","tpot","status","error"];function kt(){if(typeof window>"u")return Q;try{const l=window.localStorage.getItem(C.logs.visibleColumns);if(!l)return Q;const t=JSON.parse(l);if(!Array.isArray(t))return Q;const i=t.filter(n=>ae.includes(n));return i.length>0?i:Q}catch{return Q}}function St(){return typeof window>"u"?"comfortable":window.localStorage.getItem(C.logs.density)==="compact"?"compact":"comfortable"}function Ct(){if(typeof window>"u")return H[0];const l=window.localStorage.getItem(C.logs.pageSize),t=Number(l);return H.includes(t)?t:H[0]}function Et(){if(typeof window>"u")return[];try{const l=window.localStorage.getItem(C.logs.selectedApiKeys);if(!l)return[];const t=JSON.parse(l);return Array.isArray(t)?t.map(i=>Number(i)).filter(i=>Number.isInteger(i)&&i>0):[]}catch{return[]}}function Ce(l,t=!1){if(!l)return;const i=t?`${l}T23:59:59.999`:`${l}T00:00:00.000`,n=Date.parse(i);return Number.isFinite(n)?n:void 0}function _t(l,t,i){return l===i&&t===i}function Dt({columnOptions:l,exporting:t,onExport:i,onRefresh:n,onResetColumns:c,onSetDensity:s,onToggleColumn:r,refreshing:h,rowDensity:p,total:j,visibleColumns:u,visibleColumnSet:y}){const{t:o}=K(),a=JSON.stringify(u)===JSON.stringify(Q);return e.jsxs("div",{className:"flex w-full flex-col gap-3 xl:w-auto xl:flex-row xl:items-center",children:[e.jsxs("div",{className:"flex w-full flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-center xl:w-auto xl:flex-nowrap",children:[e.jsxs("div",{className:"flex w-full items-center gap-1 overflow-x-auto rounded-full border border-border bg-secondary p-1 sm:w-auto",children:[e.jsx("button",{type:"button",onClick:()=>s("comfortable"),className:v("inline-flex h-8 flex-1 items-center justify-center whitespace-nowrap rounded-full px-3.5 text-xs font-medium transition-all sm:flex-none",p==="comfortable"?"bg-primary text-primary-foreground shadow-[0_8px_18px_-14px_rgba(59,130,246,0.7)]":"text-muted-foreground hover:bg-primary/5 hover:text-foreground"),children:o("logs.table.density.comfortable")}),e.jsx("button",{type:"button",onClick:()=>s("compact"),className:v("inline-flex h-8 flex-1 items-center justify-center whitespace-nowrap rounded-full px-3.5 text-xs font-medium transition-all sm:flex-none",p==="compact"?"bg-primary text-primary-foreground shadow-[0_8px_18px_-14px_rgba(59,130,246,0.7)]":"text-muted-foreground hover:bg-primary/5 hover:text-foreground"),children:o("logs.table.density.compact")})]}),e.jsxs(gt,{children:[e.jsx(ht,{asChild:!0,children:e.jsx(E,{variant:"outline",size:"sm",className:"w-full sm:w-auto",children:o("logs.actions.columns")})}),e.jsxs(ft,{align:"end",className:"w-64 p-3",children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-semibold",children:o("logs.actions.columns")}),e.jsx("p",{className:"text-xs text-muted-foreground",children:o("logs.actions.visibleCount",{count:u.length})})]}),e.jsx(E,{variant:"ghost",size:"sm",onClick:c,disabled:a,children:o("common.actions.reset")})]}),e.jsx("div",{className:"grid gap-1.5",children:l.map(d=>{const k=y.has(d.id);return e.jsxs("label",{className:v("flex cursor-pointer items-center gap-3 rounded-xl px-3 py-2 text-sm transition hover:bg-primary/5",k&&"bg-primary/10 text-primary"),children:[e.jsx("input",{type:"checkbox",checked:k,onChange:()=>r(d.id),className:"h-4 w-4 rounded border-border"}),e.jsx("span",{children:d.label})]},d.id)})})]})]}),e.jsxs(E,{onClick:i,disabled:t,className:"w-full sm:w-auto",children:[e.jsx(Xe,{className:"mr-2 h-4 w-4"}),o(t?"logs.actions.exporting":"logs.actions.export")]})]}),e.jsxs("div",{className:"flex w-full items-center justify-between gap-3 xl:w-auto xl:justify-start",children:[e.jsx("span",{className:"text-xs text-muted-foreground sm:text-sm",children:o("logs.summary.total",{value:j.toLocaleString()})}),e.jsxs(E,{variant:"outline",size:"sm",onClick:n,disabled:h,className:"shrink-0",children:[e.jsx(Ze,{className:v("mr-2 h-4 w-4",h&&"animate-spin")}),o(h?"common.actions.refreshing":"logs.actions.manualRefresh")]})]})]})}function Ft({record:l,providerLabelMap:t,apiKeyMap:i,onSelect:n,isEven:c,density:s,visibleColumnSet:r}){const{t:h}=K(),p=t.get(l.provider)??l.provider,j=l.endpoint||"-",u=De(l,h),y=l.client_model??h("logs.table.requestedModelFallback"),o=l.api_key_id!=null?i.get(l.api_key_id):void 0,a=l.api_key_id==null?h("logs.table.apiKeyUnknown"):o!=null&&o.isWildcard?h("apiKeys.wildcard"):o!=null&&o.name?o.name:l.api_key_name?l.api_key_name:h("logs.table.apiKeyUnknown"),d=s==="compact"?"px-3 py-1.5":"px-3 py-2",k=c?"bg-muted/30":"bg-background",x=xt(l.session_id),R=x==null?void 0:x.rowStyle,D=x==null?void 0:x.stickyStyle,S=x?{...x.stickyStyle,...x.accentStyle}:void 0;return e.jsxs("tr",{"data-session-id":x==null?void 0:x.sessionId,"data-session-color":x==null?void 0:x.colorKey,className:v("transition-colors",x?"":c?"bg-muted/30":"",x?"":"hover:bg-muted/50"),style:R,onMouseEnter:_=>{x&&Object.assign(_.currentTarget.style,x.hoverStyle)},onMouseLeave:_=>{x&&Object.assign(_.currentTarget.style,x.rowStyle)},children:[e.jsx("td",{className:v("sticky left-0 z-10 text-xs",d,x?"":k),style:S,children:Fe(l.timestamp)}),r.has("endpoint")&&e.jsx("td",{className:v(d,"text-xs"),children:j}),r.has("provider")&&e.jsx("td",{className:v(d,"text-xs"),children:e.jsx("div",{className:"max-w-[100px] truncate",title:p,children:p})}),r.has("requestedModel")&&e.jsx("td",{className:v(d,"text-xs text-muted-foreground"),children:e.jsx("div",{className:"max-w-[120px] truncate",title:y,children:y})}),r.has("routedModel")&&e.jsx("td",{className:v(d,"text-xs"),children:e.jsx("div",{className:"max-w-[120px] truncate",title:l.model,children:l.model})}),r.has("apiKey")&&e.jsx("td",{className:v(d,"text-xs text-muted-foreground"),children:e.jsx("div",{className:"max-w-[90px] truncate",title:a,children:a})}),r.has("inputTokens")&&e.jsx("td",{className:v(d,"text-right text-xs tabular-nums"),children:z(l.input_tokens)}),r.has("cacheReadTokens")&&e.jsx("td",{className:v(d,"text-right text-xs tabular-nums"),children:z(l.cache_read_tokens)}),r.has("cacheCreationTokens")&&e.jsx("td",{className:v(d,"text-right text-xs tabular-nums"),children:z(l.cache_creation_tokens)}),r.has("outputTokens")&&e.jsx("td",{className:v(d,"text-right text-xs tabular-nums"),children:z(l.output_tokens)}),r.has("latency")&&e.jsx("td",{className:v(d,"text-right text-xs tabular-nums"),children:O(l.latency_ms,"ms")}),r.has("ttft")&&e.jsx("td",{className:v(d,"text-right text-xs tabular-nums"),children:O(l.ttft_ms,"ms")}),r.has("tpot")&&e.jsx("td",{className:v(d,"text-right text-xs tabular-nums"),children:O(l.tpot_ms,"ms/tk")}),r.has("status")&&e.jsx("td",{className:v(d,"text-center"),children:e.jsx(M,{variant:u.variant,className:"text-xs",children:u.label})}),r.has("error")&&e.jsx("td",{className:v(d,"text-xs text-muted-foreground"),children:e.jsx("div",{className:"max-w-[100px] truncate",title:l.error??"",children:l.error?l.error:"-"})}),e.jsx("td",{className:v("sticky right-0 z-10 text-center",d,x?"":k),style:D,children:e.jsx(E,{variant:"outline",size:"sm",onClick:()=>n(l.id),children:h("logs.actions.detail")})})]})}function Tt(l){const{t}=K(),{tableScrollRef:i,visibleColumnSet:n,visibleColumnCount:c,logsError:s,logsPending:r,items:h,activeFiltersCount:p,handleResetFilters:j,handleRetry:u,providerLabelMap:y,apiKeyMap:o,handleOpenDetail:a,rowDensity:d,showScrollHint:k,pageSize:x,setPageSize:R,page:D,totalPages:S,setPage:_}=l;return e.jsx(Ee,{className:"overflow-hidden",children:e.jsxs(_e,{className:"p-0",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 border-b border-border bg-secondary px-4 py-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-semibold",children:t("logs.title")}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t("logs.actions.visibleCount",{count:c-2})})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(M,{variant:"secondary",children:"Wide Table"}),e.jsx(M,{variant:"outline",children:t(d==="compact"?"logs.table.density.compact":"logs.table.density.comfortable")}),k?e.jsx(M,{variant:"outline",className:"border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-800 dark:bg-amber-950/30 dark:text-amber-300",children:"Scroll for more"}):null]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{ref:i,className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[1480px] text-sm",children:[e.jsx("thead",{className:"border-b bg-muted/50",children:e.jsxs("tr",{children:[e.jsx("th",{className:"sticky left-0 z-20 bg-muted/95 px-3 py-2 text-left text-xs font-medium backdrop-blur",children:t("logs.table.columns.time")}),n.has("endpoint")&&e.jsx("th",{className:"px-3 py-2 text-left text-xs font-medium",children:t("logs.table.columns.endpoint")}),n.has("provider")&&e.jsx("th",{className:"px-3 py-2 text-left text-xs font-medium",children:t("logs.table.columns.provider")}),n.has("requestedModel")&&e.jsx("th",{className:"px-3 py-2 text-left text-xs font-medium",children:t("logs.table.columns.requestedModel")}),n.has("routedModel")&&e.jsx("th",{className:"px-3 py-2 text-left text-xs font-medium",children:t("logs.table.columns.routedModel")}),n.has("apiKey")&&e.jsx("th",{className:"px-3 py-2 text-left text-xs font-medium",children:t("logs.table.columns.apiKey")}),n.has("inputTokens")&&e.jsx("th",{className:"px-3 py-2 text-right text-xs font-medium",children:t("logs.table.columns.inputTokens")}),n.has("cacheReadTokens")&&e.jsx("th",{className:"px-3 py-2 text-right text-xs font-medium",children:t("logs.table.columns.cacheReadTokens")}),n.has("cacheCreationTokens")&&e.jsx("th",{className:"px-3 py-2 text-right text-xs font-medium",children:t("logs.table.columns.cacheCreationTokens")}),n.has("outputTokens")&&e.jsx("th",{className:"px-3 py-2 text-right text-xs font-medium",children:t("logs.table.columns.outputTokens")}),n.has("latency")&&e.jsx("th",{className:"px-3 py-2 text-right text-xs font-medium",children:t("logs.table.columns.latency")}),n.has("ttft")&&e.jsx("th",{className:"px-3 py-2 text-right text-xs font-medium",children:t("logs.table.columns.ttft")}),n.has("tpot")&&e.jsx("th",{className:"px-3 py-2 text-right text-xs font-medium",children:t("logs.table.columns.tpot")}),n.has("status")&&e.jsx("th",{className:"px-3 py-2 text-center text-xs font-medium",children:t("logs.table.columns.status")}),n.has("error")&&e.jsx("th",{className:"px-3 py-2 text-left text-xs font-medium",children:t("logs.table.columns.error")}),e.jsx("th",{className:"sticky right-0 z-20 bg-muted/95 px-3 py-2 text-center text-xs font-medium backdrop-blur",children:t("logs.table.columns.actions")})]})}),e.jsx("tbody",{className:"divide-y",children:r?Array.from({length:8}).map((w,b)=>e.jsx(bt,{columns:c},b)):s&&h.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:c,className:"px-3 py-6",children:e.jsx(xe,{compact:!0,tone:"danger",icon:e.jsx(Ye,{className:"h-5 w-5","aria-hidden":"true"}),title:t("logs.toast.listError.title"),description:s,action:e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-2",children:[e.jsx(E,{variant:"outline",size:"sm",onClick:u,children:t("common.actions.refresh")}),p>0?e.jsx(E,{variant:"ghost",size:"sm",onClick:j,children:t("common.actions.reset")}):null]})})})}):h.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:c,className:"px-3 py-8 text-center text-sm text-muted-foreground",children:e.jsxs("div",{className:"flex flex-col items-center gap-3 py-4",children:[e.jsx("span",{children:t("logs.table.empty")}),p>0&&e.jsx(E,{variant:"outline",size:"sm",onClick:j,children:t("common.actions.reset")})]})})}):h.map((w,b)=>e.jsx(Ft,{record:w,providerLabelMap:y,apiKeyMap:o,onSelect:a,isEven:b%2===0,density:d,visibleColumnSet:n},w.id))})]})}),k&&e.jsx("div",{className:"table-scroll-hint"})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-4 border-t p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:t("logs.table.pagination.perPage")}),e.jsxs(ee,{value:x.toString(),onValueChange:w=>R(Number(w)),children:[e.jsx(te,{className:"w-[80px]",children:e.jsx(se,{})}),e.jsx(le,{children:H.map(w=>e.jsx(L,{value:w.toString(),children:w},w))})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(E,{variant:"outline",size:"sm",onClick:()=>_(w=>Math.max(w-1,1)),disabled:D<=1,children:t("logs.table.pagination.previous")}),e.jsx("span",{className:"text-sm text-muted-foreground",children:t("logs.table.pagination.pageLabel",{page:S===0?0:D,total:S})}),e.jsx(E,{variant:"outline",size:"sm",onClick:()=>_(w=>S===0?w:Math.min(w+1,S)),disabled:S===0||D>=S,children:t("logs.table.pagination.next")})]})]})]})})}function Rt({exportTimeoutMs:l,queryParams:t,total:i}){const{t:n}=K(),{pushToast:c}=ge(),[s,r]=f.useState(!1),h=f.useCallback(async()=>{if(!s){r(!0);try{const p=i>0?Math.min(i,5e3):1e3,j={...t,limit:p,offset:0},u=await he.exportArchive(j,l),y=new Date().toISOString().replace(/[:.]/g,"-"),o=URL.createObjectURL(u),a=document.createElement("a");a.href=o,a.download=`cc-gw-logs-${y}.zip`,document.body.appendChild(a),a.click(),a.remove(),URL.revokeObjectURL(o),c({title:n("logs.toast.exportSuccess.title"),description:n("logs.toast.exportSuccess.desc"),variant:"success"})}catch(p){const j=lt(p);c({title:n("logs.toast.exportError.title"),description:n("logs.toast.exportError.desc",{message:j.message}),variant:"error"})}finally{r(!1)}}},[l,s,c,t,n,i]);return{exporting:s,handleExport:h}}function Lt(){const l=f.useRef(null),[t,i]=f.useState(!1),n=f.useCallback(()=>{const c=l.current;if(!c)return;const s=c.scrollWidth-c.scrollLeft-c.clientWidth>1;i(s)},[]);return f.useEffect(()=>{const c=l.current;if(!c)return;n(),c.addEventListener("scroll",n,{passive:!0});const s=new ResizeObserver(n);return s.observe(c),()=>{c.removeEventListener("scroll",n),s.disconnect()}},[n]),{scrollRef:l,showScrollHint:t,updateScrollHint:n}}function Kt(){const[l,t]=T(C.logs.density,St,{serialize:u=>u,deserialize:u=>u==="compact"?"compact":"comfortable"}),[i,n]=T(C.logs.visibleColumns,kt),{scrollRef:c,showScrollHint:s}=Lt(),r=f.useMemo(()=>new Set(i),[i]),h=i.length+2,p=f.useCallback(u=>{n(y=>{if(y.includes(u))return y.length===1?y:y.filter(a=>a!==u);const o=[...y,u];return o.sort((a,d)=>ae.indexOf(a)-ae.indexOf(d)),o})},[]);return{resetVisibleColumns:f.useCallback(()=>{n(Q)},[]),rowDensity:l,setRowDensity:t,showScrollHint:s,tableScrollRef:c,toggleColumn:p,visibleColumnCount:h,visibleColumns:i,visibleColumnSet:r}}function Mt(){var je,ve,Ne,we,ke;const{t:l}=K(),{pushToast:t}=ge(),[i,n]=T(C.logs.providerFilter,"all"),[c,s]=T(C.logs.endpointFilter,"all"),[r,h]=T(C.logs.modelFilter,""),[p,j]=T(C.logs.statusFilter,"all"),[u,y]=T(C.logs.fromDate,""),[o,a]=T(C.logs.toDate,""),[d,k]=f.useState(1),[x,R]=T(C.logs.pageSize,Ct,{serialize:m=>String(m),deserialize:m=>{const N=Number(m);return H.includes(N)?N:H[0]}}),[D,S]=f.useState(null),[_,w]=f.useState(!1),[b,B]=T(C.logs.selectedApiKeys,Et),[re,oe]=T(C.logs.filtersExpanded,!1),{resetVisibleColumns:W,rowDensity:g,setRowDensity:G,showScrollHint:Te,tableScrollRef:Re,toggleColumn:Le,visibleColumnCount:Ke,visibleColumns:Me,visibleColumnSet:Pe}=Kt();f.useEffect(()=>{k(1)},[i,c,r,p,u,o,x,b]);const ie=f.useMemo(()=>{const m={limit:x,offset:(d-1)*x};i!=="all"&&(m.provider=i),c!=="all"&&(m.endpoint=c),r.trim().length>0&&(m.model=r.trim()),p!=="all"&&(m.status=p);const N=Ce(u),q=Ce(o,!0);return N!==void 0&&(m.from=N),q!==void 0&&(m.to=q),b.length>0&&(m.apiKeys=b.join(",")),m},[c,u,r,d,x,i,b,p,o]),P=$(U.logs.list(ie),he.listRequest(ie)),V=$(U.providers.all(),Se.providersRequest()),fe=$(U.apiKeys.all(),{url:"/api/keys",method:"GET"}),ne=$(U.customEndpoints.all(),{url:"/api/custom-endpoints",method:"GET"}),be=$(U.config.exportTimeout(),Se.configRequest());f.useEffect(()=>{!P.isError||!P.error||t({title:l("logs.toast.listError.title"),description:l("logs.toast.listError.desc",{message:P.error.message}),variant:"error"})},[P.error,P.isError,t,l]),f.useEffect(()=>{!V.isError||!V.error||t({title:l("logs.toast.providerError.title"),description:l("logs.toast.providerError.desc",{message:V.error.message}),variant:"error"})},[V.error,V.isError,t,l]);const Z=((je=P.data)==null?void 0:je.total)??0,J=Z>0?Math.ceil(Z/x):0,Ae=((ve=P.data)==null?void 0:ve.items)??[],Oe=f.useMemo(()=>{var N;const m=(N=be.data)==null?void 0:N.logExportTimeoutSeconds;return typeof m=="number"&&Number.isFinite(m)?Math.min(Math.max(Math.round(m),5),600)*1e3:6e4},[(Ne=be.data)==null?void 0:Ne.logExportTimeoutSeconds]);f.useEffect(()=>{J>0&&d>J&&k(J)},[d,J]);const de=V.data??[],ce=f.useMemo(()=>{const m=new Map;for(const N of de)N.id&&m.set(N.id,N.label??N.id);return m},[de]),ye=f.useMemo(()=>{var N;const m=new Map;m.set("anthropic",l("logs.filters.endpointAnthropic")),m.set("openai",l("logs.filters.endpointOpenAI"));for(const q of((N=ne.data)==null?void 0:N.endpoints)??[])m.set(q.id,q.label||q.id);return m},[(we=ne.data)==null?void 0:we.endpoints,l]),ze=f.useMemo(()=>{const m=[];if(i!=="all"){const N=ce.get(i)??i;m.push({key:"provider",label:`${l("logs.filters.provider")}: ${N}`,onRemove:()=>n("all")})}if(c!=="all"){const N=ye.get(c)??c;m.push({key:"endpoint",label:`${l("logs.filters.endpoint")}: ${N}`,onRemove:()=>s("all")})}if(r.trim()&&m.push({key:"model",label:`${l("logs.filters.modelId")}: ${r.trim()}`,onRemove:()=>h("")}),p!=="all"){const N=l(p==="success"?"logs.filters.statusSuccess":"logs.filters.statusError");m.push({key:"status",label:`${l("logs.filters.status")}: ${N}`,onRemove:()=>j("all")})}return u&&m.push({key:"from",label:`${l("logs.filters.startDate")}: ${u}`,onRemove:()=>y("")}),o&&m.push({key:"to",label:`${l("logs.filters.endDate")}: ${o}`,onRemove:()=>a("")}),b.length>0&&m.push({key:"apiKeys",label:l("logs.filters.apiKeySelected",{count:b.length}),onRemove:()=>B([])}),m},[c,ye,u,r,i,ce,b.length,p,l,o]),me=fe.data??[],qe=f.useMemo(()=>{const m=new Map;for(const N of me)m.set(N.id,N);return m},[me]),Ie=f.useMemo(()=>ae.map(m=>({id:m,label:l(`logs.table.columns.${m}`)})),[l]),X=f.useMemo(()=>new Date().toISOString().slice(0,10),[]),Qe=f.useMemo(()=>i==="all"&&c==="all"&&r.trim()===""&&p==="all"&&u===""&&o===""&&b.length===0?"all":p==="error"&&c==="all"&&i==="all"&&r.trim()===""&&u===""&&o===""&&b.length===0?"errors":_t(u,o,X)&&c==="all"&&i==="all"&&r.trim()===""&&p==="all"&&b.length===0?"today":c==="anthropic"&&i==="all"&&r.trim()===""&&p==="all"&&u===""&&o===""&&b.length===0?"anthropic":c==="openai"&&i==="all"&&r.trim()===""&&p==="all"&&u===""&&o===""&&b.length===0?"openai":null,[c,u,r,i,b.length,p,o,X]),pe=f.useCallback(()=>{n("all"),h(""),s("all"),j("all"),y(""),a(""),B([])},[]),Ve=f.useCallback(m=>{if(k(1),pe(),m!=="all"){if(m==="errors"){j("error");return}if(m==="today"){y(X),a(X);return}if(m==="anthropic"){s("anthropic");return}m==="openai"&&s("openai")}},[pe,X]),{exporting:$e,handleExport:Ue}=Rt({exportTimeoutMs:Oe,queryParams:ie,total:Z}),He=f.useCallback(m=>{S(m),w(!0)},[]),Be=f.useCallback(()=>{w(!1),S(null)},[]);return{activeFilters:ze,activeQuickView:Qe,apiKeyMap:qe,apiKeys:me,apiKeysQuery:fe,applyQuickView:Ve,columnOptions:Ie,customEndpoints:(ke=ne.data)==null?void 0:ke.endpoints,endpointFilter:c,exporting:$e,filtersExpanded:re,fromDate:u,handleCloseDetail:Be,handleExport:Ue,handleOpenDetail:He,handleResetFilters:pe,isDetailOpen:_,items:Ae,logsQuery:P,modelFilter:r,page:d,pageSize:x,providerFilter:i,providerLabelMap:ce,providerOptions:de,rowDensity:g,resetVisibleColumns:W,selectedApiKeys:b,selectedLogId:D,setEndpointFilter:s,setFiltersExpanded:oe,setFromDate:y,setModelFilter:h,setPage:k,setPageSize:R,setProviderFilter:n,setRowDensity:G,setSelectedApiKeys:B,setStatusFilter:j,setToDate:a,showScrollHint:Te,statusFilter:p,tableScrollRef:Re,toDate:o,toggleColumn:Le,total:Z,totalPages:J,visibleColumnCount:Ke,visibleColumns:Me,visibleColumnSet:Pe}}function ls(){var i;const{t:l}=K(),t=Mt();return e.jsxs("div",{className:"flex flex-col gap-6",children:[e.jsx(tt,{icon:e.jsx(et,{className:"h-5 w-5","aria-hidden":"true"}),title:l("logs.title"),description:l("logs.description"),eyebrow:"Traffic Explorer",breadcrumb:"Gateway / Logs",helper:l("logs.filtersDescription"),badge:t.total>0?l("logs.summary.total",{value:t.total.toLocaleString()}):void 0,actions:e.jsx(Dt,{columnOptions:t.columnOptions,exporting:t.exporting,onExport:()=>void t.handleExport(),onRefresh:()=>void t.logsQuery.refetch(),onResetColumns:t.resetVisibleColumns,onSetDensity:t.setRowDensity,onToggleColumn:t.toggleColumn,refreshing:t.logsQuery.isFetching,rowDensity:t.rowDensity,total:t.total,visibleColumns:t.visibleColumns,visibleColumnSet:t.visibleColumnSet})}),e.jsx(jt,{total:t.total,activeFilters:t.activeFilters,filtersExpanded:t.filtersExpanded,setFiltersExpanded:t.setFiltersExpanded,handleResetFilters:t.handleResetFilters,activeQuickView:t.activeQuickView,applyQuickView:t.applyQuickView,providerFilter:t.providerFilter,setProviderFilter:t.setProviderFilter,endpointFilter:t.endpointFilter,setEndpointFilter:t.setEndpointFilter,selectedApiKeys:t.selectedApiKeys,setSelectedApiKeys:t.setSelectedApiKeys,modelFilter:t.modelFilter,setModelFilter:t.setModelFilter,statusFilter:t.statusFilter,setStatusFilter:t.setStatusFilter,fromDate:t.fromDate,setFromDate:t.setFromDate,toDate:t.toDate,setToDate:t.setToDate,providerOptions:t.providerOptions,apiKeys:t.apiKeys,apiKeysLoading:t.apiKeysQuery.isLoading,customEndpoints:t.customEndpoints}),e.jsx(Tt,{tableScrollRef:t.tableScrollRef,visibleColumnSet:t.visibleColumnSet,visibleColumnCount:t.visibleColumnCount,logsError:t.logsQuery.isError?((i=t.logsQuery.error)==null?void 0:i.message)??null:null,logsPending:t.logsQuery.isPending,items:t.items,activeFiltersCount:t.activeFilters.length,handleResetFilters:t.handleResetFilters,handleRetry:()=>void t.logsQuery.refetch(),providerLabelMap:t.providerLabelMap,apiKeyMap:t.apiKeyMap,handleOpenDetail:t.handleOpenDetail,rowDensity:t.rowDensity,showScrollHint:t.showScrollHint,pageSize:t.pageSize,setPageSize:t.setPageSize,page:t.page,totalPages:t.totalPages,setPage:t.setPage}),e.jsx(Nt,{open:t.isDetailOpen,logId:t.selectedLogId,onClose:t.handleCloseDetail,providerLabelMap:t.providerLabelMap,apiKeyMap:t.apiKeyMap})]})}export{ls as default};
@@ -1 +0,0 @@
1
- const a=[12,28,48,88,112,152,184,208,228,262,292,332];function c(t){const r=new Date(t);return`${r.getFullYear()}-${`${r.getMonth()+1}`.padStart(2,"0")}-${`${r.getDate()}`.padStart(2,"0")} ${`${r.getHours()}`.padStart(2,"0")}:${`${r.getMinutes()}`.padStart(2,"0")}:${`${r.getSeconds()}`.padStart(2,"0")}`}function s(t){return t==null?"-":t.toLocaleString()}function i(t,r){const e=s(t);return e==="-"?"-":`${e} ${r}`}function l(t){return t?"true":"false"}function f(t,r){if(!t||t.trim().length===0)return r;try{const e=JSON.parse(t);return JSON.stringify(e,null,2)}catch{return t}}function g(t,r){return t.status_code===null||t.status_code===void 0?t.error?{label:r("common.status.error"),tone:"error",variant:"destructive"}:{label:r("common.status.pending"),tone:"pending",variant:"warning"}:t.error||t.status_code>=400?{label:t.status_code.toString(),tone:"error",variant:"destructive"}:{label:t.status_code.toString(),tone:"success",variant:"success"}}function u(t){let r=0;for(let e=0;e<t.length;e+=1)r=r*31+t.charCodeAt(e)>>>0;return r}function S(t){const r=t==null?void 0:t.trim();if(!r)return null;const e=u(r),n=a[e%a.length],o=`hsl(${n} 82% 42%)`;return{sessionId:r,colorKey:`${n}`,rowStyle:{backgroundColor:`hsl(${n} 82% 42% / 0.08)`},hoverStyle:{backgroundColor:`hsl(${n} 82% 42% / 0.12)`},stickyStyle:{backgroundColor:`hsl(${n} 82% 42% / 0.1)`},accentStyle:{borderLeft:`3px solid ${o}`}}}export{c as a,l as b,s as c,f as d,S as e,i as f,g};