@aidotnet/server-darwin-arm64 0.13.6 → 0.14.1

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 (59) hide show
  1. package/bin/astra-server +2 -2
  2. package/bin/wwwroot/assets/ClientsPage-Bbx4JQCh.js +9 -0
  3. package/bin/wwwroot/assets/KeyPage-EhvcnnPs.js +1 -0
  4. package/bin/wwwroot/assets/ModelDetailPage-Bi6HMYd9.js +1 -0
  5. package/bin/wwwroot/assets/ModelsPage-BXY68Eiv.js +1 -0
  6. package/bin/wwwroot/assets/PluginsPage-CGYvvJ4L.js +2 -0
  7. package/bin/wwwroot/assets/PrivacyPage-DsoFM60K.js +1 -0
  8. package/bin/wwwroot/assets/ProviderDetailPage-DggKqw4-.js +3 -0
  9. package/bin/wwwroot/assets/ProvidersPage-BiX8gU3n.js +2 -0
  10. package/bin/wwwroot/assets/SettingsPage-Cg3fYnlZ.js +2 -0
  11. package/bin/wwwroot/assets/{SmartRoutingPage-C8UPuxod.js → SmartRoutingPage-7EE9Wv4s.js} +2 -2
  12. package/bin/wwwroot/assets/TokenDetailPage-BGBhv8pL.js +1 -0
  13. package/bin/wwwroot/assets/{TokenPoolEditor-CSR-HDQz.js → TokenPoolEditor-P5q4QPdp.js} +1 -1
  14. package/bin/wwwroot/assets/TokensPage-C85gZule.js +1 -0
  15. package/bin/wwwroot/assets/TracesPage-Cjalyj5v.js +8 -0
  16. package/bin/wwwroot/assets/TrayPanelPage-DpXBU7l9.js +1 -0
  17. package/bin/wwwroot/assets/TrayPanelView-B2Bc2IHk.js +1 -0
  18. package/bin/wwwroot/assets/alert-Clz2DftU.js +15 -0
  19. package/bin/wwwroot/assets/{arrow-down-DZLYQSjE.js → arrow-down-D4v2aNc0.js} +1 -1
  20. package/bin/wwwroot/assets/{arrow-left-D_GXSlab.js → arrow-left-B41OJQ5k.js} +1 -1
  21. package/bin/wwwroot/assets/{arrow-up-right-6yJy6Xdl.js → arrow-up-right-Bl1glSI-.js} +1 -1
  22. package/bin/wwwroot/assets/{checkbox-j5bCl2a6.js → checkbox-B4uUeJZd.js} +1 -1
  23. package/bin/wwwroot/assets/{cloud-download-D02pcV_l.js → cloud-download-BZA23qWN.js} +1 -1
  24. package/bin/wwwroot/assets/confirm-morph-BHc1Rk5D.js +1 -0
  25. package/bin/wwwroot/assets/{download-DDp7Ezie.js → download-1kPyvAIz.js} +1 -1
  26. package/bin/wwwroot/assets/{ellipsis-D10W7mYw.js → ellipsis-Dzh8eeEb.js} +1 -1
  27. package/bin/wwwroot/assets/{external-link-DTLyxO14.js → external-link-CP_HY9s9.js} +1 -1
  28. package/bin/wwwroot/assets/{folder-open-VpvxiCWo.js → folder-open-gI3OxPvC.js} +1 -1
  29. package/bin/wwwroot/assets/{index-CIeJgTvn.css → index-DUNJByVq.css} +1 -1
  30. package/bin/wwwroot/assets/{index-DL_p8MKk.js → index-LdSd2gU7.js} +8 -8
  31. package/bin/wwwroot/assets/{log-out-DOsFUSwe.js → log-out-CLSeCkdA.js} +1 -1
  32. package/bin/wwwroot/assets/minus-CXBFbKrB.js +1 -0
  33. package/bin/wwwroot/assets/overlays-UV1fYmtB.js +41 -0
  34. package/bin/wwwroot/assets/{pencil-Zf5QNEUX.js → pencil-C4YX2See.js} +1 -1
  35. package/bin/wwwroot/assets/{power-B2lC52A0.js → power-CmBUImgB.js} +1 -1
  36. package/bin/wwwroot/assets/radio-cards-B0VL-JIL.js +1 -0
  37. package/bin/wwwroot/assets/{rotate-ccw-DwTwYkU2.js → rotate-ccw-ClcBYxmg.js} +1 -1
  38. package/bin/wwwroot/assets/{sortable.esm-Btakc5-n.js → sortable.esm-DLqkwcx8.js} +1 -1
  39. package/bin/wwwroot/index.html +4 -4
  40. package/package.json +1 -1
  41. package/bin/wwwroot/assets/ClientsPage-DdK1X-Ec.js +0 -9
  42. package/bin/wwwroot/assets/KeyPage-dJ_528w9.js +0 -1
  43. package/bin/wwwroot/assets/ModelDetailPage-DesYkEp0.js +0 -1
  44. package/bin/wwwroot/assets/ModelsPage-CvBrKMJm.js +0 -1
  45. package/bin/wwwroot/assets/PluginsPage-Czuxiksr.js +0 -2
  46. package/bin/wwwroot/assets/PrivacyPage-CxAIxf_4.js +0 -1
  47. package/bin/wwwroot/assets/ProviderDetailPage-zjVraUzS.js +0 -3
  48. package/bin/wwwroot/assets/ProvidersPage-D1GpUvNb.js +0 -2
  49. package/bin/wwwroot/assets/SettingsPage-CDgCn_us.js +0 -2
  50. package/bin/wwwroot/assets/TokenDetailPage-ClqiNQNY.js +0 -1
  51. package/bin/wwwroot/assets/TokensPage-B62tF1Mb.js +0 -1
  52. package/bin/wwwroot/assets/TracesPage-Dadx7Tfx.js +0 -8
  53. package/bin/wwwroot/assets/TrayPanelPage-Ckj4lTgg.js +0 -1
  54. package/bin/wwwroot/assets/TrayPanelView-bAOrJBs5.js +0 -1
  55. package/bin/wwwroot/assets/alert-BF0mCqUl.js +0 -15
  56. package/bin/wwwroot/assets/confirm-morph-BPDPizy8.js +0 -1
  57. package/bin/wwwroot/assets/minus-CFFJg-m8.js +0 -1
  58. package/bin/wwwroot/assets/overlays-OPtjc9Yr.js +0 -41
  59. package/bin/wwwroot/assets/radio-cards-DAFCv1Xc.js +0 -1
@@ -0,0 +1 @@
1
+ import{Ba as e,H as t,J as n,Or as r,Q as i,Rr as a,Ti as o,Tr as s,Ua as c,X as l,Y as u,_ as d,ai as f,c as p,ct as m,d as h,dn as g,fi as _,gt as v,ii as y,kr as b,l as x,lr as S,n as C,nn as w,p as T,q as E,r as D,rn as O,s as k,t as A,v as j,xt as M,za as N}from"./alert-Clz2DftU.js";import{a as P,gt as F,i as I,n as ee,o as L,r as R}from"./overlays-UV1fYmtB.js";import{t as te}from"./ellipsis-Dzh8eeEb.js";import{t as ne}from"./pencil-C4YX2See.js";import{t as re}from"./power-CmBUImgB.js";import{t as ie}from"./rotate-ccw-ClcBYxmg.js";import{B as z,F as ae,H as B,P as V,R as oe,U as se,Z as H,_ as U,h as W,s as G,y as K}from"./index-LdSd2gU7.js";import{a as ce,i as q,n as J,r as Y,t as X}from"./TokenPoolEditor-P5q4QPdp.js";var le={name:`chart-column`,size:24,node:[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M18 17V9`,key:`2bz60n`}],[`path`,{d:`M13 17V5`,key:`1frdt8`}],[`path`,{d:`M8 17v-3`,key:`17ska0`}]],aliases:[`bar-chart-3`]};le.node;var ue=M(le),de={name:`link-2`,size:24,node:[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7h2`,key:`8i5ue5`}],[`path`,{d:`M15 7h2a5 5 0 1 1 0 10h-2`,key:`1b9ql8`}],[`line`,{x1:`8`,x2:`16`,y1:`12`,y2:`12`,key:`1jonct`}]]};de.node;var fe=M(de),pe={name:`user-plus`,size:24,node:[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`19`,x2:`19`,y1:`8`,y2:`14`,key:`1bvyxn`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]};pe.node;var me=M(pe),Z=c(e(),1),Q=N(),he=[15,60,1440];function ge({token:e,open:n,onOpenChange:r}){let{t:i,locale:a}=m(),{toast:o}=L(),[s,c]=(0,Z.useState)(15),[l,u]=(0,Z.useState)(null),f=y(e.id,n),p=O(e.id),h=b(e.id),g=e=>e<60?i(`tokens.invite.minutes`,{n:e}):i(`tokens.invite.hours`,{n:e/60}),_=()=>p.mutate(s,{onSuccess:async e=>{u(e.link),o(await F.copy(e.link)?i(`tokens.invite.copied`):i(`tokens.copyFailed`),`success`)},onError:e=>o(P(e),`error`)}),v=e=>e===`pending`?`accent`:e===`used`?`green`:`neutral`;return(0,Q.jsx)(I,{open:n,onOpenChange:e=>{e||u(null),r(e)},title:i(`tokens.invite.title`,{name:e.name}),description:i(`tokens.invite.description`),footer:(0,Q.jsx)(D,{variant:`primary`,icon:(0,Q.jsx)(fe,{className:`size-3.5`}),loading:p.isPending,onClick:_,children:i(`tokens.invite.generate`)}),children:(0,Q.jsxs)(`div`,{className:`grid gap-4`,children:[(0,Q.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,Q.jsx)(`span`,{className:`text-[12px] text-[var(--text-secondary)]`,children:i(`tokens.invite.lifetime`)}),(0,Q.jsx)(d,{items:he.map(e=>({value:String(e),label:g(e)})),value:String(s),onChange:e=>c(Number(e)),ariaLabel:i(`tokens.invite.lifetime`)})]}),l&&(0,Q.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,Q.jsx)(`span`,{className:`text-[12px] text-[var(--text-secondary)]`,children:i(`tokens.invite.linkOnce`)}),(0,Q.jsx)(`code`,{className:`selectable break-all rounded-lg bg-[var(--surface-muted)] px-3 py-2 font-mono text-[11.5px]`,children:l})]}),(0,Q.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,Q.jsx)(`span`,{className:`text-[12px] text-[var(--text-secondary)]`,children:i(`tokens.invite.recent`)}),(f.data??[]).length===0?(0,Q.jsx)(`p`,{className:`text-[12px] text-[var(--text-muted)]`,children:i(`tokens.invite.none`)}):(0,Q.jsx)(`ul`,{className:`grid gap-1.5`,children:(f.data??[]).map(e=>(0,Q.jsxs)(`li`,{className:`flex flex-wrap items-center gap-2 rounded-lg border border-[var(--border)] px-3 py-2 text-[12px]`,children:[(0,Q.jsx)(C,{tone:v(e.status),children:i(`tokens.invite.status.${e.status}`)}),(0,Q.jsx)(`span`,{className:`text-[var(--text-secondary)]`,children:e.status===`used`?i(`tokens.invite.usedAt`,{time:t(e.usedAt,a),ip:e.usedIp??`—`}):i(`tokens.invite.expires`,{time:t(e.expiresAt,a)})}),e.status===`pending`&&(0,Q.jsx)(D,{size:`sm`,variant:`plain`,className:`ml-auto`,loading:h.isPending&&h.variables===e.id,onClick:()=>h.mutate(e.id,{onError:e=>o(P(e),`error`)}),children:i(`tokens.invite.revoke`)})]},e.id))})]})]})})}function _e(){let{t:e}=m(),t=f(),n=a(),r=_(),i=r.data?.state===`connected`?r.data.publicUrl:null,[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(null);return(0,Q.jsxs)(W,{title:e(`nav.tokens`),subtitle:e(`tokens.subtitle`),actions:(0,Q.jsx)(D,{variant:`primary`,icon:(0,Q.jsx)(z,{className:`size-3.5`}),onClick:()=>s(!0),children:e(`tokens.add`)}),children:[(0,Q.jsxs)(`div`,{className:`mx-auto flex max-w-[1100px] flex-col gap-4`,children:[n.data&&(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1 px-1 text-[12px] text-[var(--text-secondary)]`,children:[(0,Q.jsx)(`p`,{children:e(`tokens.directHint`,{url:`${n.data.gatewayBaseUrl}/v1`})}),(0,Q.jsx)(`p`,{className:`selectable`,children:e(`tokens.selfServiceHint`,{url:n.data.gatewayBaseUrl})}),i&&(0,Q.jsx)(`p`,{className:`selectable text-[var(--accent)]`,children:e(`tokens.remoteHint`,{url:`${i}/v1`,key:`${i}/key`})})]}),t.isLoading&&(0,Q.jsx)(j,{lines:4}),t.isError&&(0,Q.jsx)(A,{tone:`danger`,title:e(`common.error`),children:P(t.error)}),t.data?.length===0&&(0,Q.jsx)(`div`,{className:`card`,children:(0,Q.jsx)(p,{icon:(0,Q.jsx)(B,{className:`size-6`}),title:e(`tokens.empty`)})}),t.data&&t.data.length>0&&(0,Q.jsx)(`div`,{className:`card divide-y divide-[var(--border-subtle)] overflow-hidden p-0`,children:t.data.map(e=>(0,Q.jsx)(ve,{token:e,defaultOpen:t.data.length===1,onEdit:()=>l(e)},e.id))})]}),(0,Q.jsx)(Ce,{open:o,onOpenChange:s}),(0,Q.jsx)(we,{token:c,onClose:()=>l(null)})]})}function ve({token:e,defaultOpen:c,onEdit:l}){let{t:d,locale:f}=m(),{toast:p,confirm:h}=L(),_=S(),y=a(),b=r(),x=o(),w=s(),T=g(),[E,O]=(0,Z.useState)(c),A=(_.data??[]).find(t=>t.id===e.providerId),j=ce(),M=`token-detail-${e.id}`,N=(e,t)=>{p(t,`success`),e.skipped.length>0&&p(d(`tokens.skipped`,{clients:e.skipped.map(e=>U[e]?.name??e).join(`, `)}),`error`)},I=()=>b.mutate(e.id,{onSuccess:async({token:e})=>{await F.copy(e)?p(d(`tokens.copied`)):p(d(`tokens.copyFailed`),`error`)},onError:e=>p(P(e),`error`)}),[R,z]=(0,Z.useState)(!1),B=async()=>{let e=y.data?.gatewayBaseUrl;e&&(await F.copy(`${e}/v1`)?p(d(`tokens.urlCopied`)):p(d(`tokens.copyFailed`),`error`))},W=async()=>{let e=y.data?.gatewayBaseUrl;e&&(await F.copy(`npx @aidotnet/astra-connect join ${e}`)?p(d(`tokens.joinCopied`)):p(d(`tokens.copyFailed`),`error`))},G=async()=>{(!e.enabled||await h({title:d(`tokens.disableConfirm`,{name:e.name}),detail:d(`tokens.disableDetail`),confirmLabel:d(`tokens.disable`),destructive:!0}))&&x.mutate({id:e.id,enabled:!e.enabled},{onError:e=>p(P(e),`error`)})},q=async()=>{await h({title:d(`tokens.resetConfirm`,{name:e.name}),detail:d(`tokens.resetDetail`),confirmLabel:d(`tokens.reset`),destructive:!0})&&w.mutate(e.id,{onSuccess:e=>N(e,d(`tokens.resetDone`,{count:e.rewritten.length})),onError:e=>p(P(e),`error`)})},Y=async()=>{await h({title:d(`tokens.deleteConfirm`,{name:e.name}),detail:d(`tokens.deleteDetail`),confirmLabel:d(`common.delete`),destructive:!0})&&T.mutate(e.id,{onSuccess:t=>N(t,d(`tokens.deleted`,{name:e.name})),onError:e=>p(P(e),`error`)})},X=e.lastUsedAt?t(e.lastUsedAt,f):d(`tokens.neverUsed`);return(0,Q.jsxs)(`article`,{children:[(0,Q.jsxs)(`div`,{className:`flex cursor-pointer flex-wrap items-center gap-x-5 gap-y-2 px-4 py-3 hover:bg-[var(--surface-muted)]`,onClick:()=>O(e=>!e),children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 basis-56 items-start gap-2`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`mt-0.5 rounded text-[var(--text-muted)]`,"aria-expanded":E,"aria-controls":M,"aria-label":d(`tokens.details`),onClick:e=>{e.stopPropagation(),O(e=>!e)},children:(0,Q.jsx)(se,{className:`size-4 transition-transform ${E?`rotate-90`:``}`})}),(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Q.jsx)(`h2`,{className:`truncate text-[14px] font-medium ${e.enabled?``:`text-[var(--text-muted)]`}`,children:e.name}),e.isDefault&&(0,Q.jsx)(C,{tone:`accent`,children:d(`tokens.default`)}),!e.enabled&&(0,Q.jsx)(C,{tone:`orange`,children:d(`tokens.disabledBadge`)}),e.limitUsage.some(e=>e.exhausted)&&(0,Q.jsx)(C,{tone:`orange`,children:d(`tokens.limitExhausted`)}),e.pool&&(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,title:e.pool.members.map(e=>e.providerId).join(`, `),children:[(0,Q.jsx)(C,{children:d(`tokens.pool.summary`,{count:e.pool.members.length,strategy:d(`tokens.strategy.${e.pool.strategy}`)})}),e.pool.members.map(e=>(0,Q.jsx)(k,{tone:J(e.health.state)},e.providerId))]})]}),(0,Q.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-1`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(`code`,{className:`font-mono text-[12px] text-[var(--text-secondary)] selectable`,children:e.keyMasked}),(0,Q.jsx)(D,{size:`sm`,variant:`plain`,icon:(0,Q.jsx)(v,{className:`size-3.5`}),"aria-label":d(`tokens.copy`),title:d(`tokens.copy`),loading:b.isPending,onClick:I}),(0,Q.jsx)(D,{size:`sm`,variant:`plain`,icon:(0,Q.jsx)(fe,{className:`size-3.5`}),"aria-label":d(`tokens.copyUrl`),title:d(`tokens.copyUrl`),disabled:!y.data,onClick:()=>void B()}),(0,Q.jsx)(D,{size:`sm`,variant:`plain`,icon:(0,Q.jsx)(ae,{className:`size-3.5`}),"aria-label":d(`tokens.copyJoin`),title:d(`tokens.copyJoin`),disabled:!y.data,onClick:()=>void W()}),(0,Q.jsx)(D,{size:`sm`,variant:`plain`,icon:(0,Q.jsx)(me,{className:`size-3.5`}),"aria-label":d(`tokens.invite.open`),title:d(`tokens.invite.open`),disabled:!e.enabled,onClick:()=>z(!0)}),(0,Q.jsx)(ge,{token:e,open:R,onOpenChange:z})]})]})]}),(0,Q.jsx)(`div`,{className:`hidden w-16 items-center gap-1.5 md:flex`,title:e.clients.map(e=>U[e]?.name??e).join(`, `)||d(`tokens.noClients`),children:e.clients.length===0?(0,Q.jsx)(`span`,{className:`text-[12px] text-[var(--text-muted)]`,children:`—`}):e.clients.map(e=>(0,Q.jsx)(K,{kind:e,size:16},e))}),(0,Q.jsx)($,{label:d(`tokens.today`),value:i(e.today.costUsd),context:d(`tokens.requestsContext`,{count:u(e.today.requests)})}),(0,Q.jsx)($,{label:d(`tokens.total`),value:i(e.total.costUsd),context:`${u(e.total.totalTokens,!0)} Token`}),(0,Q.jsx)($,{label:d(`tokens.lastUsedTitle`),value:e.lastUsedAt?n(e.lastUsedAt,f):`—`,context:e.lastUsedAt?``:d(`tokens.neverUsed`),title:X}),(0,Q.jsx)(`div`,{onClick:e=>e.stopPropagation(),children:(0,Q.jsx)(ee,{label:d(`common.more`),icon:(0,Q.jsx)(te,{className:`size-4`}),items:[{id:`settings`,label:d(`tokens.settings`),icon:(0,Q.jsx)(ne,{className:`size-3.5`}),onSelect:l},{id:`toggle`,label:e.enabled?d(`tokens.disable`):d(`tokens.enable`),icon:(0,Q.jsx)(re,{className:`size-3.5`}),onSelect:()=>void G()},{id:`reset`,label:d(`tokens.reset`),icon:(0,Q.jsx)(ie,{className:`size-3.5`}),onSelect:()=>void q()},...e.isDefault?[]:[{id:`delete`,label:d(`tokens.delete`),icon:(0,Q.jsx)(V,{className:`size-3.5`}),destructive:!0,separatorBefore:!0,onSelect:()=>void Y()}]]})})]}),E&&(0,Q.jsxs)(`div`,{id:M,className:`border-t border-[var(--border-subtle)] bg-[var(--surface-muted)] px-4 py-3 md:pl-10`,children:[(0,Q.jsxs)(`dl`,{className:`flex flex-wrap gap-x-8 gap-y-2 text-[12px]`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsx)(`dt`,{className:`text-[var(--text-muted)]`,children:d(`tokens.clients`)}),(0,Q.jsx)(`dd`,{className:`mt-0.5 flex min-h-5 flex-wrap items-center gap-x-3 gap-y-1 text-[var(--text-secondary)]`,children:e.clients.length===0?d(`tokens.noClients`):e.clients.map(e=>(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,Q.jsx)(K,{kind:e,size:14}),U[e]?.name??e]},e))})]}),(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsx)(`dt`,{className:`text-[var(--text-muted)]`,children:e.pool?d(`tokens.pool.title`):d(`tokens.directProvider`)}),e.pool?(0,Q.jsx)(`dd`,{className:`mt-0.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-[var(--text-secondary)]`,children:e.pool.members.map(e=>(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,title:j(e.health),children:[(0,Q.jsx)(k,{tone:J(e.health.state)}),(_.data??[]).find(t=>t.id===e.providerId)?.name??e.providerId]},e.providerId))}):(0,Q.jsx)(`dd`,{className:`mt-0.5 truncate text-[var(--text-secondary)]`,children:A?.name??(e.providerId?e.providerId:d(`tokens.directNone`))})]}),(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsx)(`dt`,{className:`text-[var(--text-muted)]`,children:d(`tokens.allowedClients`)}),(0,Q.jsx)(`dd`,{className:`mt-0.5 truncate text-[var(--text-secondary)]`,children:e.allowedClients==null?d(`tokens.allowedClientsAny`):e.allowedClients.length===0?d(`tokens.directOnly`):e.allowedClients.map(e=>U[e]?.name??e).join(`, `)})]}),(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsx)(`dt`,{className:`text-[var(--text-muted)]`,children:d(`tokens.lastUsedTitle`)}),(0,Q.jsx)(`dd`,{className:`mt-0.5 truncate text-[var(--text-secondary)]`,children:X})]})]}),(0,Q.jsx)(ye,{token:e}),(0,Q.jsx)(xe,{today:e.today,total:e.total}),(0,Q.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(0,Q.jsx)(H,{to:`/tokens/${encodeURIComponent(e.id)}`,children:(0,Q.jsx)(D,{size:`sm`,icon:(0,Q.jsx)(ue,{className:`size-3.5`}),children:d(`tokens.detail.open`)})}),(0,Q.jsx)(H,{to:`/requests?token=${encodeURIComponent(e.id)}`,children:(0,Q.jsx)(D,{size:`sm`,icon:(0,Q.jsx)(oe,{className:`size-3.5`}),children:d(`tokens.detail.viewLogs`)})})]})]})]})}function ye({token:e}){let{t}=m(),n=e.limits?.rpm;return(0,Q.jsxs)(`div`,{className:`mt-3`,children:[(0,Q.jsx)(`div`,{className:`text-[12px] text-[var(--text-muted)]`,children:t(`tokens.limits`)}),e.limitUsage.length===0&&n==null?(0,Q.jsx)(`div`,{className:`mt-0.5 text-[12px] text-[var(--text-secondary)]`,children:t(`tokens.unlimited`)}):(0,Q.jsxs)(`div`,{className:`mt-1.5 grid gap-3 sm:grid-cols-2`,children:[e.limitUsage.map(e=>(0,Q.jsx)(be,{usage:e},`${e.metric}:${e.period}`)),n!=null&&(0,Q.jsxs)(`div`,{className:`text-[11.5px] text-[var(--text-secondary)]`,children:[t(`tokens.rpm`),` · `,(0,Q.jsx)(`span`,{className:`num`,children:t(`tokens.rpmUsage`,{used:e.recentRequests,limit:n})})]})]})]})}function be({usage:e}){let{t:n,locale:r}=m(),a=`${n(`tokens.period.${e.period}`)} · ${n(`tokens.metric.${e.metric}`)}`,o=t=>e.metric===`cost`?i(t):u(t,!0),s=Math.max(0,Math.min(100,Math.round(e.usedPercent))),c=s>=90?`var(--danger)`:s>=70?`var(--warning)`:`var(--accent)`;return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{className:`mb-1 flex items-baseline justify-between gap-2 text-[11.5px]`,children:[(0,Q.jsx)(`span`,{className:`text-[var(--text-secondary)]`,children:a}),(0,Q.jsx)(`span`,{className:`num`,children:n(`tokens.limitUsed`,{used:o(e.used),limit:o(e.limit)})})]}),(0,Q.jsx)(`div`,{role:`progressbar`,"aria-valuenow":s,"aria-valuemin":0,"aria-valuemax":100,"aria-label":a,className:`h-1.5 w-full overflow-hidden rounded-full bg-[var(--surface)]`,children:(0,Q.jsx)(`div`,{className:`h-full rounded-full`,style:{width:`${s}%`,background:c}})}),e.resetsAt&&(0,Q.jsx)(`div`,{className:`mt-1 text-[10.5px] text-[var(--text-muted)]`,children:n(`tokens.limitResets`,{time:t(e.resetsAt,r)})})]})}function $({label:e,value:t,context:n,title:r}){return(0,Q.jsxs)(`div`,{className:`w-24 min-w-0`,title:r,children:[(0,Q.jsx)(`div`,{className:`truncate text-[11px] text-[var(--text-muted)]`,children:e}),(0,Q.jsx)(`div`,{className:`num truncate text-[14px] leading-tight font-semibold`,children:t}),(0,Q.jsx)(`div`,{className:`truncate text-[11px] text-[var(--text-muted)]`,children:n||`\xA0`})]})}function xe({today:e,total:t}){let{t:n}=m(),r=[[n(`tokens.today`),e],[n(`tokens.total`),t]],a=`px-3 py-1.5 text-right font-normal whitespace-nowrap text-[var(--text-muted)]`,o=`num px-3 py-1.5 text-right whitespace-nowrap`;return(0,Q.jsx)(`div`,{className:`mt-3 overflow-x-auto rounded-[var(--radius-control)] bg-[var(--surface)]`,children:(0,Q.jsxs)(`table`,{className:`w-full text-[12px]`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{className:`border-b border-[var(--border-subtle)]`,children:[(0,Q.jsx)(`th`,{className:`${a} text-left`}),(0,Q.jsx)(`th`,{className:a,children:n(`tokens.cost`)}),(0,Q.jsx)(`th`,{className:a,children:n(`tokens.requests`)}),(0,Q.jsx)(`th`,{className:a,children:n(`tokens.tokens`)}),(0,Q.jsx)(`th`,{className:a,children:n(`tokens.inOut`)}),(0,Q.jsx)(`th`,{className:a,children:n(`tokens.cacheHit`)}),(0,Q.jsx)(`th`,{className:a,title:n(`tokens.tpsContext`),children:n(`tokens.tps`)})]})}),(0,Q.jsx)(`tbody`,{children:r.map(([e,t])=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{scope:`row`,className:`px-3 py-1.5 text-left font-medium whitespace-nowrap text-[var(--text-secondary)]`,children:e}),(0,Q.jsx)(`td`,{className:`${o} font-semibold selectable`,children:i(t.costUsd)}),(0,Q.jsx)(`td`,{className:o,children:u(t.requests)}),(0,Q.jsx)(`td`,{className:o,children:u(t.totalTokens,!0)}),(0,Q.jsxs)(`td`,{className:`${o} text-[var(--text-secondary)]`,children:[u(t.inputTokens,!0),` / `,u(t.outputTokens,!0)]}),(0,Q.jsx)(`td`,{className:o,title:n(`usage.cacheAmounts`,{read:u(t.cacheReadTokens,!0),write:u(t.cacheWriteTokens,!0)}),children:t.cacheHitRate==null?`—`:E(t.cacheHitRate)}),(0,Q.jsx)(`td`,{className:o,children:t.tps==null?`—`:l(t.tps)})]},e))})]})})}function Se(){let{t:e}=m(),t=(S().data??[]).filter(e=>e.enabled);return{providers:t,options:[{value:``,label:e(`tokens.directNone`)},...t.map(e=>({value:e.id,label:e.name}))]}}function Ce({open:e,onOpenChange:t}){let{t:n}=m(),{toast:r}=L(),i=w(),{options:a}=Se(),[o,s]=(0,Z.useState)(``),[c,l]=(0,Z.useState)(``);return(0,Z.useEffect)(()=>{e&&(s(``),l(``))},[e]),(0,Q.jsx)(I,{open:e,onOpenChange:t,title:n(`tokens.createTitle`),footer:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(D,{onClick:()=>t(!1),children:n(`common.cancel`)}),(0,Q.jsx)(D,{variant:`primary`,disabled:!o.trim(),loading:i.isPending,onClick:()=>i.mutate({name:o.trim(),providerId:c||null},{onSuccess:e=>{t(!1),r(n(`tokens.created`,{name:e.name}),`success`)},onError:e=>r(P(e),`error`)}),children:n(`common.create`)})]}),children:(0,Q.jsxs)(`div`,{className:`grid gap-4`,children:[(0,Q.jsx)(x,{label:n(`tokens.name`),children:(0,Q.jsx)(h,{value:o,maxLength:64,placeholder:n(`tokens.namePlaceholder`),onChange:e=>s(e.target.value)})}),(0,Q.jsx)(x,{label:n(`tokens.directProvider`),children:(0,Q.jsx)(R,{value:c,onChange:l,options:a})})]})})}function we({token:e,onClose:t}){let{t:n}=m(),{toast:r}=L(),i=o(),a=S(),[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)(null),[f,p]=(0,Z.useState)([]),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(`any`),[b,C]=(0,Z.useState)([]),w=new Set(f.map(e=>`${e.metric}:${e.period}`)).size<f.length,E=new Map((e?.pool?.members??[]).map(e=>[e.providerId,e.health]));return(0,Z.useEffect)(()=>{e&&(c(e.name),u(Y(e)),p(e.limits?.budgets.map(e=>({...e}))??[]),_(e.limits?.rpm??null),y(e.allowedClients==null?`any`:`only`),C(e.allowedClients??[]))},[e]),(0,Q.jsx)(I,{open:e!==null,onOpenChange:e=>!e&&t(),title:n(`tokens.settingsTitle`,{name:e?.name??``}),footer:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(D,{onClick:t,children:n(`common.cancel`)}),(0,Q.jsx)(D,{variant:`primary`,disabled:!s.trim()||w,loading:i.isPending,onClick:()=>{if(!e)return;let o=f.flatMap(e=>e.limit!=null&&e.limit>0?[{...e,limit:e.limit}]:[]),c=o.length>0||g!=null&&g>0?{budgets:o,rpm:g!=null&&g>0?Math.floor(g):null}:null;i.mutate({id:e.id,name:s.trim(),...l?{pool:q(l,a.data??[])}:{},limits:c,allowedClients:v===`any`?null:b},{onSuccess:()=>{t(),r(n(`common.saved`),`success`)},onError:e=>r(P(e),`error`)})},children:n(`common.save`)})]}),children:(0,Q.jsxs)(`div`,{className:`grid gap-4`,children:[(0,Q.jsx)(x,{label:n(`tokens.name`),children:(0,Q.jsx)(h,{value:s,maxLength:64,onChange:e=>c(e.target.value)})}),(0,Q.jsx)(x,{label:n(`tokens.pool.title`),hint:n(`tokens.pool.hint`),children:l&&(0,Q.jsx)(X,{draft:l,onChange:u,providers:a.data??[],health:E})}),(0,Q.jsx)(x,{label:n(`tokens.limits`),hint:n(`tokens.limitsHint`),error:w?n(`tokens.limitDuplicate`):void 0,children:(0,Q.jsx)(De,{budgets:f,onChange:p})}),(0,Q.jsx)(x,{label:n(`tokens.rpm`),hint:n(`tokens.rpmHint`),children:(0,Q.jsx)(T,{value:g,min:1,step:1,label:n(`tokens.rpm`),placeholder:n(`tokens.unlimited`),onChange:_})}),(0,Q.jsx)(x,{label:n(`tokens.allowedClients`),hint:n(`tokens.allowedClientsHint`),children:(0,Q.jsxs)(`div`,{className:`grid gap-2`,children:[(0,Q.jsx)(d,{ariaLabel:n(`tokens.allowedClients`),value:v,onChange:y,items:[{value:`any`,label:n(`tokens.allowedClientsAny`)},{value:`only`,label:n(`tokens.allowedClientsOnly`)}]}),v===`only`&&(0,Q.jsx)(G,{label:n(`tokens.allowedClients`),options:[...new Set([...Object.keys(U),...b])].map(e=>({value:e,label:U[e]?.name??e})),value:b,onValueChange:e=>C(e)})]})})]})})}var Te=[`cost`,`requests`,`tokens`],Ee=[`day`,`week`,`month`,`total`];function De({budgets:e,onChange:t}){let{t:n}=m(),r=(n,r)=>t(e.map((e,t)=>t===n?{...e,...r}:e)),i=Te.flatMap(e=>Ee.map(t=>({metric:e,period:t}))).find(t=>!e.some(e=>e.metric===t.metric&&e.period===t.period));return(0,Q.jsxs)(`div`,{className:`grid gap-2`,children:[e.length===0&&(0,Q.jsx)(`div`,{className:`text-[12px] text-[var(--text-muted)]`,children:n(`tokens.unlimited`)}),e.map((i,a)=>(0,Q.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_minmax(0,1fr)_minmax(0,1fr)_auto] items-center gap-2`,children:[(0,Q.jsx)(R,{ariaLabel:n(`tokens.limitMetric`),value:i.metric,onChange:e=>r(a,{metric:e}),options:Te.map(e=>({value:e,label:n(`tokens.metric.${e}`)}))}),(0,Q.jsx)(R,{ariaLabel:n(`tokens.limitPeriod`),value:i.period,onChange:e=>r(a,{period:e}),options:Ee.map(e=>({value:e,label:n(`tokens.period.${e}`)}))}),(0,Q.jsx)(T,{label:n(`tokens.limitValue`),value:i.limit,min:0,step:i.metric===`cost`?`any`:1,placeholder:n(`tokens.limitValue`),onChange:e=>r(a,{limit:e})}),(0,Q.jsx)(D,{size:`sm`,variant:`plain`,icon:(0,Q.jsx)(V,{className:`size-3.5`}),"aria-label":n(`tokens.removeLimit`),title:n(`tokens.removeLimit`),onClick:()=>t(e.filter((e,t)=>t!==a))})]},a)),i&&(0,Q.jsx)(`div`,{children:(0,Q.jsx)(D,{size:`sm`,icon:(0,Q.jsx)(z,{className:`size-3.5`}),onClick:()=>t([...e,{...i,limit:null}]),children:n(`tokens.addLimit`)})})]})}export{_e as TokensPage};