libre-webui 0.34.1 → 0.35.0
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.
- package/backend/dist/persistence/extensionTypes.d.ts +2 -0
- package/backend/dist/persistence/extensionTypes.d.ts.map +1 -1
- package/backend/dist/persistence/extensionTypes.js.map +1 -1
- package/backend/dist/persistence/postgresExtensionRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/postgresExtensionRepositories.js +26 -0
- package/backend/dist/persistence/postgresExtensionRepositories.js.map +1 -1
- package/backend/dist/persistence/sqliteExtensionRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteExtensionRepositories.js +28 -0
- package/backend/dist/persistence/sqliteExtensionRepositories.js.map +1 -1
- package/backend/dist/platform/jobs/durableJobRuntime.d.ts.map +1 -1
- package/backend/dist/platform/jobs/durableJobRuntime.js +3 -1
- package/backend/dist/platform/jobs/durableJobRuntime.js.map +1 -1
- package/backend/dist/platform/storage/s3EncryptedBlobStore.js +1 -1
- package/backend/dist/platform/storage/s3EncryptedBlobStore.js.map +1 -1
- package/backend/dist/routes/chat.d.ts.map +1 -1
- package/backend/dist/routes/chat.js +49 -0
- package/backend/dist/routes/chat.js.map +1 -1
- package/backend/dist/routes/plugins.d.ts.map +1 -1
- package/backend/dist/routes/plugins.js +29 -2
- package/backend/dist/routes/plugins.js.map +1 -1
- package/backend/dist/services/calendarService.js +1 -1
- package/backend/dist/services/calendarService.js.map +1 -1
- package/backend/dist/services/chatService.d.ts.map +1 -1
- package/backend/dist/services/chatService.js +5 -2
- package/backend/dist/services/chatService.js.map +1 -1
- package/backend/dist/services/documentService.d.ts.map +1 -1
- package/backend/dist/services/documentService.js +4 -5
- package/backend/dist/services/documentService.js.map +1 -1
- package/backend/dist/services/followUpService.js +1 -1
- package/backend/dist/services/followUpService.js.map +1 -1
- package/backend/dist/services/galleryService.d.ts.map +1 -1
- package/backend/dist/services/galleryService.js +5 -2
- package/backend/dist/services/galleryService.js.map +1 -1
- package/backend/dist/services/legacyCiphertextIntegrity.js +2 -2
- package/backend/dist/services/legacyCiphertextIntegrity.js.map +1 -1
- package/backend/dist/services/pluginCacheInvalidation.d.ts.map +1 -1
- package/backend/dist/services/pluginCacheInvalidation.js +3 -2
- package/backend/dist/services/pluginCacheInvalidation.js.map +1 -1
- package/backend/dist/services/pluginUsageService.d.ts +5 -1
- package/backend/dist/services/pluginUsageService.d.ts.map +1 -1
- package/backend/dist/services/pluginUsageService.js +37 -14
- package/backend/dist/services/pluginUsageService.js.map +1 -1
- package/backend/dist/services/thinkingSummaryService.d.ts +48 -0
- package/backend/dist/services/thinkingSummaryService.d.ts.map +1 -0
- package/backend/dist/services/thinkingSummaryService.js +170 -0
- package/backend/dist/services/thinkingSummaryService.js.map +1 -0
- package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
- package/backend/dist/services/workRuntimeService.js +5 -2
- package/backend/dist/services/workRuntimeService.js.map +1 -1
- package/backend/dist/services/workTaskService.d.ts.map +1 -1
- package/backend/dist/services/workTaskService.js +5 -2
- package/backend/dist/services/workTaskService.js.map +1 -1
- package/backend/dist/utils/pluginStreamAdapter.d.ts.map +1 -1
- package/backend/dist/utils/pluginStreamAdapter.js +2 -7
- package/backend/dist/utils/pluginStreamAdapter.js.map +1 -1
- package/backend/package.json +3 -3
- package/bin/cli.js +0 -1
- package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
- package/frontend/dist/artifact-runtime/framer-motion.js +3 -3
- package/frontend/dist/artifact-runtime/lucide-react.js +1 -1
- package/frontend/dist/assets/index-B8CRGFpq.css +1 -0
- package/frontend/dist/assets/index-D34e2tgI.js +92 -0
- package/frontend/dist/assets/{markdown-math-Ddr6Z9Sf.css → markdown-math-B3MBJsZb.css} +1 -1
- package/frontend/dist/index.html +21 -21
- package/frontend/dist/js/{ArtifactContainer-Cdrv0kJM.js → ArtifactContainer-DxNTcOvH.js} +1 -1
- package/frontend/dist/js/{ArtifactDemoPage-BcXPfD-W.js → ArtifactDemoPage-Bzb07rM8.js} +1 -1
- package/frontend/dist/js/{ArtifactSandboxFrame-5qM5QELi.js → ArtifactSandboxFrame-DP_4rZwQ.js} +1 -1
- package/frontend/dist/js/{ArtifactSlideOutPanel-tuGsj_HW.js → ArtifactSlideOutPanel-DkuFYmTf.js} +1 -1
- package/frontend/dist/js/{AutomationModal-DL9kNzgL.js → AutomationModal-Dh_l3_KV.js} +1 -1
- package/frontend/dist/js/{AutomationsPage-BMtR7wCN.js → AutomationsPage-BZqRE_iS.js} +1 -1
- package/frontend/dist/js/{AvatarUpload-DrfSzzOZ.js → AvatarUpload-CM537pyV.js} +1 -1
- package/frontend/dist/js/CalendarPage-CNovVIyJ.js +1 -0
- package/frontend/dist/js/ChannelsPage-B24ElGbY.js +1 -0
- package/frontend/dist/js/ChatPage-YD9iS6Kh.js +14 -0
- package/frontend/dist/js/{ConnectModels-flyZgito.js → ConnectModels-Dwih31mg.js} +1 -1
- package/frontend/dist/js/{EvaluationsPage-DUntWRVo.js → EvaluationsPage-fd4Bzfet.js} +2 -2
- package/frontend/dist/js/{FirstTimeSetup-CMQ000Hh.js → FirstTimeSetup-Bf6VF-W2.js} +1 -1
- package/frontend/dist/js/{GalleryPage-DNSo3Q0p.js → GalleryPage-BiHsiQXa.js} +1 -1
- package/frontend/dist/js/HomePage-QmyVNWCW.js +1 -0
- package/frontend/dist/js/LanguageSwitcher-DjCF4n-n.js +1 -0
- package/frontend/dist/js/{LibreClawPage-D97-90n6.js → LibreClawPage-BgWhUlqz.js} +1 -1
- package/frontend/dist/js/{ModelManagerModals-DzEVkCuT.js → ModelManagerModals-DdL3LeGl.js} +1 -1
- package/frontend/dist/js/NotesPage-Di2Bg-aA.js +3 -0
- package/frontend/dist/js/{PasswordStrengthMeter-DLQ5jaO_.js → PasswordStrengthMeter-H0Os6XbX.js} +1 -1
- package/frontend/dist/js/{PersonasPage-D8-4PyoM.js → PersonasPage-BdJO364O.js} +1 -1
- package/frontend/dist/js/PluginUsagePage-Cg8eqMsE.js +1 -0
- package/frontend/dist/js/RichMessageContent-C8qt0Aa7.js +1 -0
- package/frontend/dist/js/{RichMessageContent-yWLHf4YS.js → RichMessageContent-CUbm43PQ.js} +2 -2
- package/frontend/dist/js/SettingsModal-BxEuHSvE.js +19 -0
- package/frontend/dist/js/{ShareDialog-J5zbwIWY.js → ShareDialog-DTGlwdvx.js} +1 -1
- package/frontend/dist/js/{SystemPage-CEjZpR5I.js → SystemPage-wOjktp6W.js} +1 -1
- package/frontend/dist/js/{UserManagementPage-DdpcN4-Q.js → UserManagementPage-BHEMaK5a.js} +1 -1
- package/frontend/dist/js/UserManagementPanel-KLgquEZv.js +1 -0
- package/frontend/dist/js/{WhatsNewModal-5lCndkFc.js → WhatsNewModal-B-8T7RFf.js} +1 -1
- package/frontend/dist/js/WorkPage-5YiyDil1.js +7 -0
- package/frontend/dist/js/api-C4tAvZc2.js +14 -0
- package/frontend/dist/js/api-vKAlaBw8.js +1 -0
- package/frontend/dist/js/{appNavigation-DToyRu19.js → appNavigation-DXgSn83Q.js} +1 -1
- package/frontend/dist/js/{appStore-Bsxed1km.js → appStore-CmY86Gzn.js} +2 -2
- package/frontend/dist/js/appVersion-Nzg0IWED.js +1 -0
- package/frontend/dist/js/ar-DtoEKcvZ.js +2 -0
- package/frontend/dist/js/authStore-Cq6ASMHJ.js +1 -0
- package/frontend/dist/js/{authStore-8w9Idb5o.js → authStore-DzKajX63.js} +3 -3
- package/frontend/dist/js/bn-DP2AKHj6.js +2 -0
- package/frontend/dist/js/chatStore-Bp-tan20.js +3 -0
- package/frontend/dist/js/{composerStyles-DqJg-2vE.js → composerStyles-nggBKICR.js} +1 -1
- package/frontend/dist/js/{config-B5SBQwEe.js → config-Cg4OZeHO.js} +1 -1
- package/frontend/dist/js/cs-BYiysC42.js +2 -0
- package/frontend/dist/js/da-CjvZwl21.js +2 -0
- package/frontend/dist/js/de-BKI2vbyb.js +2 -0
- package/frontend/dist/js/es-Bd_rGARS.js +2 -0
- package/frontend/dist/js/{evaluationsApi-BvkmhMgQ.js → evaluationsApi-BKkwm4WQ.js} +1 -1
- package/frontend/dist/js/fr-MJPX-cfk.js +2 -0
- package/frontend/dist/js/hi-i1pFIKuq.js +2 -0
- package/frontend/dist/js/{i18next-ChipS_AK.js → i18next-Dq_6N9uy.js} +1 -1
- package/frontend/dist/js/id-Cx2UmvDs.js +2 -0
- package/frontend/dist/js/is-BhoLtzfO.js +2 -0
- package/frontend/dist/js/it-DBSOFUQF.js +2 -0
- package/frontend/dist/js/ja-tt90GfPo.js +2 -0
- package/frontend/dist/js/ko-CuQjGSbu.js +2 -0
- package/frontend/dist/js/markdownMath-BW8RNkEl.js +1 -0
- package/frontend/dist/js/{messageCodeStyles-DchDafYE.js → messageCodeStyles-CNMdqZf-.js} +2 -2
- package/frontend/dist/js/ms-B1IgAOxc.js +2 -0
- package/frontend/dist/js/nl-KC1T6ODd.js +2 -0
- package/frontend/dist/js/pl-BELaieBr.js +2 -0
- package/frontend/dist/js/pt-BcNdTKuY.js +2 -0
- package/frontend/dist/js/router-vendor-Epc3_KZ_.js +1 -0
- package/frontend/dist/js/ru-BY36Y8EF.js +2 -0
- package/frontend/dist/js/sv-Df0qJdhZ.js +2 -0
- package/frontend/dist/js/{teamEventStream-C0_UAzCG.js → teamEventStream-CjWlYJh3.js} +1 -1
- package/frontend/dist/js/th-BQogE70C.js +2 -0
- package/frontend/dist/js/tr-CE2ShLd6.js +2 -0
- package/frontend/dist/js/ui-DzVF9vZ5.js +2 -0
- package/frontend/dist/js/ui-vendor-Dt9hfsGD.js +177 -0
- package/frontend/dist/js/uk-DuVduqlS.js +2 -0
- package/frontend/dist/js/useChat-DubO9MWm.js +10 -0
- package/frontend/dist/js/vi-DABvOoXL.js +2 -0
- package/frontend/dist/js/workApi-mPLHmuyT.js +1 -0
- package/frontend/dist/js/{workApi-0L8fBGq1.js → workApi-oO8srJWT.js} +3 -3
- package/frontend/dist/js/zh-D2B1N9vW.js +2 -0
- package/package.json +6 -2
- package/frontend/dist/assets/index-Bv773ECu.js +0 -17
- package/frontend/dist/assets/index-CxFIHoRc.css +0 -1
- package/frontend/dist/js/CalendarPage-BBkLlXa5.js +0 -1
- package/frontend/dist/js/ChannelsPage-C2KWU3sZ.js +0 -1
- package/frontend/dist/js/ChatPage-CWsAjCPP.js +0 -14
- package/frontend/dist/js/HomePage-BOXsuk3g.js +0 -1
- package/frontend/dist/js/LanguageSwitcher-BIrE0C-N.js +0 -1
- package/frontend/dist/js/NotesPage-VBGqE4aV.js +0 -3
- package/frontend/dist/js/PluginUsagePage-CHcweo11.js +0 -1
- package/frontend/dist/js/RichMessageContent-D7wqrY68.js +0 -1
- package/frontend/dist/js/SettingsModal-CxVt1ObR.js +0 -19
- package/frontend/dist/js/UserManagementPanel-Dhwk4I0s.js +0 -1
- package/frontend/dist/js/WorkPage-c8xOdYyy.js +0 -7
- package/frontend/dist/js/api-CHEuZtwG.js +0 -1
- package/frontend/dist/js/api-DEOxp9DN.js +0 -14
- package/frontend/dist/js/appVersion-CgCvuf4s.js +0 -1
- package/frontend/dist/js/ar-DNI77Stn.js +0 -2
- package/frontend/dist/js/authStore-DwmcyHDN.js +0 -1
- package/frontend/dist/js/bn-u6oyZr4U.js +0 -2
- package/frontend/dist/js/chatStore-lyGhYu24.js +0 -3
- package/frontend/dist/js/cs-BIkJ6jwb.js +0 -2
- package/frontend/dist/js/da-DV3V6XJ_.js +0 -2
- package/frontend/dist/js/de-DdcTQ-vn.js +0 -2
- package/frontend/dist/js/es-Cw-ozFaX.js +0 -2
- package/frontend/dist/js/fr-Y2NfnlYR.js +0 -2
- package/frontend/dist/js/hi-BKU62_1Y.js +0 -2
- package/frontend/dist/js/id-q6wo4InR.js +0 -2
- package/frontend/dist/js/is-_B6QblCu.js +0 -2
- package/frontend/dist/js/it-NUupXhzK.js +0 -2
- package/frontend/dist/js/ja-BUvl9RXq.js +0 -2
- package/frontend/dist/js/ko-df4leR83.js +0 -2
- package/frontend/dist/js/markdownMath-CoDj1i7z.js +0 -1
- package/frontend/dist/js/ms-CN-7Q9S2.js +0 -2
- package/frontend/dist/js/nl-OEm4uNIo.js +0 -2
- package/frontend/dist/js/pl-B9pHpjg7.js +0 -2
- package/frontend/dist/js/pt-D3uaEKud.js +0 -2
- package/frontend/dist/js/router-vendor-CMbYTGdh.js +0 -1
- package/frontend/dist/js/ru-z9H07lhi.js +0 -2
- package/frontend/dist/js/sv-GkQDA4wx.js +0 -2
- package/frontend/dist/js/th-0hzCkDzt.js +0 -2
- package/frontend/dist/js/tr-CZDobfHQ.js +0 -2
- package/frontend/dist/js/ui-BQojEu4t.js +0 -2
- package/frontend/dist/js/ui-vendor-BvD5yGW1.js +0 -177
- package/frontend/dist/js/uk-BwspIPCI.js +0 -2
- package/frontend/dist/js/useChat-CDllZR7C.js +0 -10
- package/frontend/dist/js/vi-Dipdv5ta.js +0 -2
- package/frontend/dist/js/workApi-BjDBLsFh.js +0 -1
- package/frontend/dist/js/zh-CgdWmtP_.js +0 -2
- /package/frontend/dist/js/{markdown-math-Dg-WB9ui.js → markdown-math-gtdBxaM5.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-vendor-D0Ec-185.js";import{t as r}from"./useQuery-BKulzCS7.js";import{t as i}from"./useTranslation-rdLmo6zV.js";import{t as a}from"./utils-CKWltgs8.js";import{Bn as o,Ft as s,In as c,J as l,Tn as u,Yn as d,Z as f,an as p,br as m,g as h,or as g,s as _,tt as v,v as y,vr as b}from"./ui-vendor-Dt9hfsGD.js";import{n as x}from"./workApi-oO8srJWT.js";import{u as S}from"./api-C4tAvZc2.js";import{t as C}from"./Button-BxwbQ5xw.js";import{a as w,o as T}from"./ui-DzVF9vZ5.js";var E=e(t(),1),D={getAnalytics:e=>x.get(`/costs/analytics`,{params:{days:e}}).then(e=>e.data),listTariffs:()=>x.get(`/costs/tariffs`).then(e=>e.data),createTariff:e=>x.post(`/costs/tariffs`,e).then(e=>e.data),deleteTariff:e=>x.delete(`/costs/tariffs/${encodeURIComponent(e)}`).then(()=>void 0),listBudgets:()=>x.get(`/costs/budgets`).then(e=>e.data),createBudget:e=>x.post(`/costs/budgets`,e).then(e=>e.data),deleteBudget:e=>x.delete(`/costs/budgets/${encodeURIComponent(e)}`).then(()=>void 0),exportUrl:e=>`/api/costs/export?days=${e}`,exportCsv:e=>x.get(`/costs/export`,{params:{days:e},responseType:`blob`}).then(e=>e.data)},O=n(),k=e=>new Intl.NumberFormat(void 0,{style:`currency`,currency:`USD`,maximumFractionDigits:e<1?4:2}).format(e),A=`w-full rounded-lg border border-gray-300 bg-white px-2 py-1.5 text-sm dark:border-dark-300 dark:bg-dark-50`,j=({days:e})=>{let{t}=i(),[n,r]=(0,E.useState)(null),[a,o]=(0,E.useState)([]),[c,l]=(0,E.useState)([]),[d,f]=(0,E.useState)(!0),[p,h]=(0,E.useState)(0),[g,_]=(0,E.useState)({pluginId:``,model:``,inputPerMillion:``,outputPerMillion:``,unitPrice:``}),[b,x]=(0,E.useState)({name:``,principalType:`instance`,principalId:``,period:`monthly`,amountUsd:``,mode:`soft`});(0,E.useEffect)(()=>{let n=!1;return Promise.all([D.getAnalytics(e),D.listTariffs(),D.listBudgets()]).then(([e,t,i])=>{n||(e.success&&e.data&&r(e.data),t.success&&t.data&&o(t.data),i.success&&i.data&&l(i.data))}).catch(()=>m.error(t(`costs.loadFailed`))).finally(()=>{n||f(!1)}),()=>{n=!0}},[e,p,t]);let S=e=>{if(!e.trim())return;let t=Number(e);return Number.isFinite(t)?t:void 0},w=async()=>{try{let e=await D.createTariff({pluginId:g.pluginId.trim(),model:g.model.trim()||void 0,inputPerMillion:S(g.inputPerMillion),outputPerMillion:S(g.outputPerMillion),unitPrice:S(g.unitPrice)});if(!e.success)throw Error(e.message);m.success(t(`costs.tariffSaved`)),_({pluginId:``,model:``,inputPerMillion:``,outputPerMillion:``,unitPrice:``}),h(e=>e+1)}catch(e){m.error(e instanceof Error?e.message:t(`costs.saveFailed`))}},T=async()=>{try{let e=await D.createBudget({name:b.name.trim(),principalType:b.principalType,principalId:b.principalType===`instance`?void 0:b.principalId.trim(),period:b.period,amountUsd:Number(b.amountUsd),mode:b.mode});if(!e.success)throw Error(e.message);m.success(t(`costs.budgetSaved`)),x({name:``,principalType:`instance`,principalId:``,period:`monthly`,amountUsd:``,mode:`soft`}),h(e=>e+1)}catch(e){m.error(e instanceof Error?e.message:t(`costs.saveFailed`))}},j=async()=>{try{let t=await D.exportCsv(e),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`libre-webui-costs.csv`,document.body.appendChild(r),r.click(),r.remove(),URL.revokeObjectURL(n)}catch{m.error(t(`costs.exportFailed`))}};return d&&!n?(0,O.jsx)(`div`,{className:`flex justify-center rounded-lg border border-gray-200 bg-white p-6 dark:border-dark-300 dark:bg-dark-100`,children:(0,O.jsx)(s,{className:`h-5 w-5 animate-spin text-gray-400`})}):(0,O.jsxs)(`div`,{className:`space-y-4 rounded-lg border border-gray-200 bg-white p-4 dark:border-dark-300 dark:bg-dark-100`,"data-testid":`cost-governance-panel`,children:[(0,O.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`h3`,{className:`text-sm font-semibold text-gray-900 dark:text-gray-100`,children:t(`costs.title`)}),(0,O.jsx)(`p`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:t(`costs.description`)})]}),(0,O.jsxs)(C,{size:`sm`,variant:`outline`,onClick:()=>void j(),children:[(0,O.jsx)(u,{className:`mr-1 h-3.5 w-3.5`}),t(`costs.exportCsv`)]})]}),n&&(0,O.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 sm:grid-cols-4`,children:[(0,O.jsxs)(`div`,{className:`rounded-lg bg-gray-50 p-3 dark:bg-dark-50`,children:[(0,O.jsx)(`p`,{className:`text-xs text-gray-500`,children:t(`costs.totalSpend`)}),(0,O.jsx)(`p`,{className:`text-lg font-semibold`,children:k(n.totalUsd)})]}),(0,O.jsxs)(`div`,{className:`rounded-lg bg-gray-50 p-3 dark:bg-dark-50`,children:[(0,O.jsx)(`p`,{className:`text-xs text-gray-500`,children:t(`costs.meteredEvents`)}),(0,O.jsx)(`p`,{className:`text-lg font-semibold`,children:n.meteredEvents})]}),(0,O.jsxs)(`div`,{className:`rounded-lg bg-gray-50 p-3 dark:bg-dark-50`,children:[(0,O.jsx)(`p`,{className:`text-xs text-gray-500`,children:t(`costs.unmeteredEvents`)}),(0,O.jsx)(`p`,{className:`text-lg font-semibold`,children:n.unmeteredEvents})]}),(0,O.jsxs)(`div`,{className:`rounded-lg bg-gray-50 p-3 dark:bg-dark-50`,children:[(0,O.jsx)(`p`,{className:`text-xs text-gray-500`,children:t(`costs.topModel`)}),(0,O.jsx)(`p`,{className:`truncate text-sm font-medium`,children:n.byModel[0]?`${n.byModel[0].model} (${k(n.byModel[0].usd)})`:`—`})]})]}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`h4`,{className:`mb-2 text-xs font-semibold uppercase tracking-wide text-gray-500`,children:t(`costs.budgets`)}),(0,O.jsxs)(`div`,{className:`space-y-2`,children:[n?.budgets.map(e=>{let n=Math.min(1,e.spentUsd/e.amountUsd);return(0,O.jsxs)(`div`,{className:`rounded-lg border border-gray-200 p-2 dark:border-dark-300`,children:[(0,O.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-sm`,children:[(0,O.jsxs)(`span`,{className:`min-w-0 truncate font-medium`,children:[e.name,(0,O.jsxs)(`span`,{className:`ml-2 text-xs font-normal text-gray-500`,children:[t(`costs.mode.${e.mode}`),` ·`,` `,t(`costs.period.${e.period}`),` ·`,` `,e.principalType===`instance`?t(`costs.scope.instance`):`${t(`costs.scope.${e.principalType}`)}: ${e.principalId}`]})]}),(0,O.jsxs)(`span`,{className:`shrink-0 text-xs text-gray-600 dark:text-gray-300`,children:[k(e.spentUsd),` / `,k(e.amountUsd)]}),(0,O.jsx)(`button`,{onClick:()=>{D.deleteBudget(e.id).then(()=>h(e=>e+1)).catch(()=>m.error(t(`costs.saveFailed`)))},className:`shrink-0 rounded p-1 text-red-500 hover:bg-red-50 dark:hover:bg-red-950/30`,"aria-label":t(`costs.deleteBudget`),children:(0,O.jsx)(y,{className:`h-3.5 w-3.5`})})]}),(0,O.jsx)(`div`,{className:`mt-1 h-1.5 overflow-hidden rounded bg-gray-200 dark:bg-dark-300`,children:(0,O.jsx)(`div`,{className:n>=1?`h-full bg-red-500`:n>=.8?`h-full bg-amber-500`:`h-full bg-emerald-500`,style:{width:`${Math.round(n*100)}%`}})})]},e.id)}),c.length===0&&(0,O.jsx)(`p`,{className:`text-xs text-gray-500`,children:t(`costs.noBudgets`)})]}),(0,O.jsxs)(`div`,{className:`mt-2 grid grid-cols-2 gap-2 sm:grid-cols-6`,children:[(0,O.jsx)(`input`,{className:A,placeholder:t(`costs.budgetName`),value:b.name,onChange:e=>x({...b,name:e.target.value})}),(0,O.jsxs)(`select`,{className:A,value:b.principalType,onChange:e=>x({...b,principalType:e.target.value}),children:[(0,O.jsx)(`option`,{value:`instance`,children:t(`costs.scope.instance`)}),(0,O.jsx)(`option`,{value:`user`,children:t(`costs.scope.user`)}),(0,O.jsx)(`option`,{value:`group`,children:t(`costs.scope.group`)})]}),(0,O.jsx)(`input`,{className:A,placeholder:t(`costs.principalId`),value:b.principalId,disabled:b.principalType===`instance`,onChange:e=>x({...b,principalId:e.target.value})}),(0,O.jsxs)(`select`,{className:A,value:b.period,onChange:e=>x({...b,period:e.target.value}),children:[(0,O.jsx)(`option`,{value:`daily`,children:t(`costs.period.daily`)}),(0,O.jsx)(`option`,{value:`weekly`,children:t(`costs.period.weekly`)}),(0,O.jsx)(`option`,{value:`monthly`,children:t(`costs.period.monthly`)})]}),(0,O.jsxs)(`div`,{className:`flex gap-2`,children:[(0,O.jsx)(`input`,{className:A,placeholder:`USD`,inputMode:`decimal`,value:b.amountUsd,onChange:e=>x({...b,amountUsd:e.target.value})}),(0,O.jsxs)(`select`,{className:A,value:b.mode,onChange:e=>x({...b,mode:e.target.value}),children:[(0,O.jsx)(`option`,{value:`observe`,children:t(`costs.mode.observe`)}),(0,O.jsx)(`option`,{value:`soft`,children:t(`costs.mode.soft`)}),(0,O.jsx)(`option`,{value:`hard`,children:t(`costs.mode.hard`)})]})]}),(0,O.jsxs)(C,{size:`sm`,onClick:()=>void T(),children:[(0,O.jsx)(v,{className:`mr-1 h-3.5 w-3.5`}),t(`costs.addBudget`)]})]})]}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`h4`,{className:`mb-2 text-xs font-semibold uppercase tracking-wide text-gray-500`,children:t(`costs.tariffs`)}),(0,O.jsx)(`div`,{className:`overflow-x-auto`,children:(0,O.jsxs)(`table`,{className:`w-full text-left text-xs`,children:[(0,O.jsx)(`thead`,{className:`text-gray-500`,children:(0,O.jsxs)(`tr`,{children:[(0,O.jsx)(`th`,{className:`py-1 pr-2`,children:t(`costs.plugin`)}),(0,O.jsx)(`th`,{className:`py-1 pr-2`,children:t(`costs.model`)}),(0,O.jsx)(`th`,{className:`py-1 pr-2`,children:t(`costs.inputPerMillion`)}),(0,O.jsx)(`th`,{className:`py-1 pr-2`,children:t(`costs.outputPerMillion`)}),(0,O.jsx)(`th`,{className:`py-1 pr-2`,children:t(`costs.unitPrice`)}),(0,O.jsx)(`th`,{className:`py-1 pr-2`,children:t(`costs.effectiveFrom`)}),(0,O.jsx)(`th`,{})]})}),(0,O.jsxs)(`tbody`,{children:[a.map(e=>(0,O.jsxs)(`tr`,{className:`border-t border-gray-100 dark:border-dark-300`,children:[(0,O.jsx)(`td`,{className:`py-1 pr-2`,children:e.plugin_id}),(0,O.jsx)(`td`,{className:`py-1 pr-2`,children:e.model??t(`costs.allModels`)}),(0,O.jsx)(`td`,{className:`py-1 pr-2`,children:e.input_per_million===null?`—`:k(e.input_per_million)}),(0,O.jsx)(`td`,{className:`py-1 pr-2`,children:e.output_per_million===null?`—`:k(e.output_per_million)}),(0,O.jsx)(`td`,{className:`py-1 pr-2`,children:e.unit_price===null?`—`:k(e.unit_price)}),(0,O.jsx)(`td`,{className:`py-1 pr-2`,children:new Intl.DateTimeFormat(void 0,{dateStyle:`medium`}).format(e.effective_from)}),(0,O.jsx)(`td`,{className:`py-1`,children:(0,O.jsx)(`button`,{onClick:()=>{D.deleteTariff(e.id).then(()=>h(e=>e+1)).catch(()=>m.error(t(`costs.saveFailed`)))},className:`rounded p-1 text-red-500 hover:bg-red-50 dark:hover:bg-red-950/30`,"aria-label":t(`costs.deleteTariff`),children:(0,O.jsx)(y,{className:`h-3.5 w-3.5`})})})]},e.id)),a.length===0&&(0,O.jsx)(`tr`,{children:(0,O.jsx)(`td`,{colSpan:7,className:`py-2 text-gray-500`,children:t(`costs.noTariffs`)})})]})]})}),(0,O.jsxs)(`div`,{className:`mt-2 grid grid-cols-2 gap-2 sm:grid-cols-6`,children:[(0,O.jsx)(`input`,{className:A,placeholder:t(`costs.plugin`),value:g.pluginId,onChange:e=>_({...g,pluginId:e.target.value})}),(0,O.jsx)(`input`,{className:A,placeholder:t(`costs.modelOptional`),value:g.model,onChange:e=>_({...g,model:e.target.value})}),(0,O.jsx)(`input`,{className:A,placeholder:t(`costs.inputPerMillion`),inputMode:`decimal`,value:g.inputPerMillion,onChange:e=>_({...g,inputPerMillion:e.target.value})}),(0,O.jsx)(`input`,{className:A,placeholder:t(`costs.outputPerMillion`),inputMode:`decimal`,value:g.outputPerMillion,onChange:e=>_({...g,outputPerMillion:e.target.value})}),(0,O.jsx)(`input`,{className:A,placeholder:t(`costs.unitPrice`),inputMode:`decimal`,value:g.unitPrice,onChange:e=>_({...g,unitPrice:e.target.value})}),(0,O.jsxs)(C,{size:`sm`,onClick:()=>void w(),children:[(0,O.jsx)(v,{className:`mr-1 h-3.5 w-3.5`}),t(`costs.addTariff`)]})]})]})]})},M=[`#3b82f6`,`#059669`,`#db683c`,`#8b5cf6`,`#e11d48`,`#0891b2`,`#a16207`,`#db2777`,`#0d9488`,`#6366f1`,`#65a30d`,`#a855f7`,`#4879a8`,`#9d6c34`,`#c25280`,`#6f7d35`,`#5363bb`],N=`#6b7280`,P=e=>{let t=e*137.508%360,n=e=>{let n=.65*Math.min(e,1-e);return[0,8,4].map(r=>{let i=(r+t/30)%12;return e-n*Math.max(-1,Math.min(i-3,9-i,1))})},r=0,i=1;for(let e=0;e<16;e++){let e=(r+i)/2,t=n(e).map(e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4);t[0]*.2126+t[1]*.7152+t[2]*.0722<.2?r=e:i=e}return`#${n((r+i)/2).map(e=>Math.round(e*255).toString(16).padStart(2,`0`)).join(``)}`},F=e=>e===null?`other`:`model:${e}`;function ee(e,t){return e.range.from===t.range.from&&e.range.to===t.range.to&&e.series.length===t.series.length&&e.series.every((e,n)=>{let r=t.series[n];return e.timestamp===r.timestamp&&e.calls===r.calls&&e.tokens===r.tokens&&e.errors===r.errors})}function te(e){return e.modelSeries?.length?e.modelSeries.map(e=>({...e,key:F(e.model)})):[{key:`total`,model:void 0,points:e.series}]}function I(e){let t=e.heatmap?.models??[],n=(e.modelSeries??[]).flatMap(e=>e.model===null?[]:[e.model]).filter(e=>!t.includes(e)).sort(),r=new Set([...t,...e.heatmap?.cells.flatMap(e=>e.models.map(e=>e.model))??[],...e.modelSeries?.flatMap(e=>e.model===null?[]:[e.model])??[],...e.models.map(e=>e.model)]),i=[...t,...n,...[...r].filter(e=>!t.includes(e)&&!n.includes(e)).sort()],a=new Map([[`other`,N],[`total`,N]]);return i.forEach((e,t)=>{a.set(F(e),M[t]??P(t))}),a}function L(e,t,n,r){let i=e.models.filter(e=>e.pluginId===t&&(r===void 0||e.pluginName===r)&&e.calls>0).map(({model:e,calls:t})=>({model:e,calls:t})),a=n-i.reduce((e,t)=>e+t.calls,0);return a>0?[...i,{model:null,calls:a}]:i}function R({analytics:e,metric:t,onMetricChange:n,colors:r,highlighted:o,selected:s,loadingModel:c,canLoadModels:u=!1,onHighlight:f,onSelect:p}){let{t:m,i18n:h}=i(),g=(0,E.useMemo)(()=>te(e),[e]),_=(0,E.useRef)(null),[v,y]=(0,E.useState)(960),[b,x]=(0,E.useState)();(0,E.useEffect)(()=>{let e=_.current;if(!e)return;let t=new ResizeObserver(e=>{y(Math.max(280,e[0].contentRect.width))});return t.observe(e),()=>t.disconnect()},[]);let S=(e,t=!1)=>new Intl.NumberFormat(h.language,{notation:t&&e>=1e4?`compact`:`standard`,maximumFractionDigits:+!!t}).format(e),C=new Intl.DateTimeFormat(h.language,{month:`short`,day:`numeric`,timeZone:`UTC`}),w=e=>e===void 0?m(`usageAnalytics.activity.allModels`):e===null?m(`usageAnalytics.heatmap.other`):e||`—`,T={top:18,right:20,bottom:32,left:48},D=v-T.left-T.right,k=260-T.top-T.bottom,A=Math.max(1,...g.flatMap(e=>e.points.map(e=>e[t]))),j=Math.ceil(A/4)*4,M=e.series.reduce((e,n)=>e+n[t],0),N=t===`tokens`&&M===0,P=t=>T.left+(e.series.length<=1?D/2:t/(e.series.length-1)*D),F=e=>T.top+k-e/j*k,ee=e.series.findIndex(e=>e.timestamp===b),I=ee<0?Math.max(0,e.series.length-1):ee,L=e.series[I],R=g.find(e=>e.key===o),z=[...new Set([0,Math.floor((e.series.length-1)/2),e.series.length-1])].filter(e=>e>=0),B=g.map(e=>({...e,value:e.points[I]?.[t]??0})).sort((e,t)=>t.value-e.value),V=e=>e.map((e,n)=>`${n===0?`M`:`L`} ${P(n)} ${F(e[t])}`).join(` `);return(0,O.jsxs)(`section`,{"data-testid":`plugin-usage-chart`,"aria-busy":c!==void 0,className:`min-w-0 overflow-hidden rounded-2xl border border-gray-200/80 bg-white/80 shadow-subtle dark:border-white/[0.08] dark:bg-dark-100/75`,children:[(0,O.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3 border-b border-gray-200/70 px-4 py-4 dark:border-white/[0.07] sm:px-5`,children:[(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`h2`,{className:`text-sm font-medium text-gray-950 dark:text-dark-950`,children:m(`usageAnalytics.activity.title`)}),(0,O.jsx)(`p`,{className:`mt-1 text-xs text-gray-500 dark:text-dark-500`,children:m(`usageAnalytics.activity.${t===`calls`?`callsDescription`:`tokensDescription`}`)})]}),(0,O.jsx)(`div`,{className:`inline-flex rounded-xl bg-gray-100 p-1 dark:bg-dark-200/80`,children:[`calls`,`tokens`].map(e=>(0,O.jsx)(`button`,{type:`button`,"aria-pressed":t===e,className:a(`min-h-9 rounded-lg px-3 text-xs font-medium focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500`,t===e?`bg-white text-gray-950 shadow-sm dark:bg-dark-300 dark:text-dark-950`:`text-gray-500 hover:text-gray-800 dark:text-dark-500 dark:hover:text-dark-800`),onClick:()=>n(e),children:m(`usageAnalytics.metrics.${e}`)},e))})]}),(0,O.jsxs)(`div`,{className:`px-4 pt-4 sm:px-5`,children:[(0,O.jsxs)(`div`,{className:`mb-3 flex min-h-8 flex-wrap items-center justify-between gap-2`,children:[(0,O.jsx)(`p`,{className:`text-xs text-gray-500 dark:text-dark-500`,children:m(`usageAnalytics.activity.compareHint`)}),(0,O.jsxs)(`button`,{type:`button`,disabled:!s&&!o,className:a(`inline-flex min-h-9 items-center gap-1.5 rounded-lg px-2 text-xs font-medium text-gray-700 hover:bg-gray-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary-500 dark:text-dark-800 dark:hover:bg-dark-200`,!s&&!o&&`invisible`),onClick:()=>{p(void 0),f(void 0)},children:[(0,O.jsx)(l,{className:`h-3.5 w-3.5`}),m(`usageAnalytics.activity.showAll`)]})]}),(0,O.jsx)(`div`,{"data-testid":`usage-model-legend`,className:a(`grid gap-2 sm:grid-cols-2 lg:grid-cols-3`,u&&`h-48 content-start overflow-y-auto pe-1`),children:g.map(e=>{let n=o===e.key,i=s===e.key,c=r.get(e.key)??`#6b7280`,l=e.points.reduce((e,n)=>e+n[t],0);return(0,O.jsxs)(`button`,{type:`button`,"aria-pressed":i,"aria-label":w(e.model),title:w(e.model),onMouseEnter:()=>f(e.key),onMouseLeave:()=>f(void 0),onFocus:()=>f(e.key),onBlur:()=>f(void 0),onClick:()=>p(i?void 0:e.key),className:a(`flex min-h-11 min-w-0 items-center gap-2.5 rounded-xl border px-3 py-2 text-start focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500`,n?`border-gray-400 bg-gray-50 dark:border-dark-500 dark:bg-dark-200`:`border-gray-200/70 hover:bg-gray-50 dark:border-white/[0.07] dark:hover:bg-dark-200/70`),children:[(0,O.jsx)(`span`,{className:`h-2.5 w-2.5 shrink-0 rounded-full`,style:{backgroundColor:c},"aria-hidden":`true`}),(0,O.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs font-medium text-gray-800 dark:text-dark-900`,dir:`auto`,children:w(e.model)}),(0,O.jsx)(`span`,{className:`shrink-0 text-xs tabular-nums text-gray-500 dark:text-dark-500`,children:S(l,!0)}),i&&(0,O.jsx)(d,{className:`h-3.5 w-3.5 shrink-0 text-gray-800 dark:text-dark-900`,"aria-hidden":`true`})]},e.key)})}),(u||g.some(e=>e.model===null))&&(0,O.jsx)(`p`,{className:`mt-2 text-[11px] text-gray-500 dark:text-dark-500`,children:m(`usageAnalytics.activity.topModels`)}),g[0]?.model===void 0&&(0,O.jsx)(`p`,{className:`mt-2 text-xs text-gray-500 dark:text-dark-500`,children:m(`usageAnalytics.activity.breakdownUnavailable`)})]}),(0,O.jsx)(`div`,{className:`relative mx-3 mt-4 sm:mx-5`,ref:_,children:N?(0,O.jsx)(`div`,{className:`flex h-[260px] items-center justify-center text-sm text-gray-500 dark:text-dark-500`,children:m(`usageAnalytics.activity.noTokens`)}):(0,O.jsxs)(`svg`,{viewBox:`0 0 ${v} 260`,direction:`ltr`,className:`block h-[260px] w-full touch-pan-y`,role:`img`,"aria-label":m(`usageAnalytics.activity.chartLabel`,{metric:m(`usageAnalytics.metrics.${t}`)}),onPointerMove:t=>{let n=t.currentTarget.getBoundingClientRect(),r=(t.clientX-n.left)*v/n.width,i=Math.round(Math.max(0,Math.min(1,(r-T.left)/D))*(e.series.length-1));e.series[i]&&x(e.series[i].timestamp)},children:[(0,O.jsx)(`title`,{children:m(`usageAnalytics.activity.chartLabel`,{metric:m(`usageAnalytics.metrics.${t}`)})}),[0,.25,.5,.75,1].map(e=>{let t=T.top+k*e;return(0,O.jsxs)(`g`,{children:[(0,O.jsx)(`line`,{x1:T.left,x2:v-T.right,y1:t,y2:t,className:`stroke-gray-200 dark:stroke-white/[0.07]`,strokeDasharray:e===1?void 0:`3 6`}),(0,O.jsx)(`text`,{x:T.left-9,y:t+4,textAnchor:`end`,className:`fill-gray-500 text-[11px] dark:fill-dark-500`,children:S(Math.round(j*(1-e)),!0)})]},e)}),L&&(0,O.jsx)(`line`,{x1:P(I),x2:P(I),y1:T.top,y2:260-T.bottom,className:`stroke-gray-300 dark:stroke-dark-400`,strokeDasharray:`3 4`}),[...g].sort((e,t)=>Number(e.key===o)-Number(t.key===o)).map(e=>{let n=e.key===o,i=r.get(e.key)??`#6b7280`,a=e.points[I];return(0,O.jsxs)(`g`,{opacity:o&&!n?.18:1,children:[(0,O.jsx)(`path`,{"data-testid":`usage-model-line`,"data-model":e.model===void 0?`__total__`:e.model??`__other__`,"data-highlighted":n,d:V(e.points),stroke:i,fill:`none`,strokeWidth:n?3.5:2,strokeDasharray:e.model===null?`6 4`:void 0,strokeLinecap:`round`,strokeLinejoin:`round`,vectorEffect:`non-scaling-stroke`,children:(0,O.jsx)(`title`,{children:w(e.model)})}),a&&(0,O.jsx)(`circle`,{cx:P(I),cy:F(a[t]),r:n?5:3.5,fill:i,className:`stroke-white dark:stroke-dark-100`,strokeWidth:`2`})]},e.key)}),z.map(t=>(0,O.jsx)(`text`,{x:P(t),y:252,textAnchor:t===0?`start`:t===e.series.length-1?`end`:`middle`,className:`fill-gray-500 text-[11px] dark:fill-dark-500`,children:C.format(e.series[t].timestamp)},t))]})}),L&&(0,O.jsxs)(`div`,{className:`border-t border-gray-200/70 px-4 py-4 dark:border-white/[0.07] sm:px-5`,children:[(0,O.jsxs)(`label`,{className:`mb-2 flex flex-wrap items-center justify-between gap-2 text-xs text-gray-500 dark:text-dark-500`,children:[(0,O.jsx)(`span`,{children:m(`usageAnalytics.activity.exploreDay`)}),(0,O.jsx)(`span`,{className:`text-gray-800 dark:text-dark-800`,children:C.format(L.timestamp)}),(0,O.jsx)(`input`,{"data-testid":`usage-chart-day-slider`,type:`range`,min:0,max:Math.max(0,e.series.length-1),step:1,value:I,"aria-label":m(`usageAnalytics.activity.exploreDay`),"aria-valuetext":C.format(L.timestamp),onChange:t=>x(e.series[Number(t.target.value)]?.timestamp),className:`h-6 w-full cursor-pointer accent-gray-700 focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary-500 dark:accent-gray-300`,dir:`ltr`})]}),(0,O.jsxs)(`div`,{"data-testid":`usage-chart-day-detail`,"aria-live":`polite`,"aria-atomic":`true`,children:[(0,O.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-baseline justify-between gap-2`,children:[(0,O.jsxs)(`span`,{className:`text-xs font-medium text-gray-700 dark:text-dark-800`,children:[m(`usageAnalytics.activity.dayTotal`),` ·`,` `,C.format(L.timestamp)]}),(0,O.jsxs)(`span`,{className:`text-sm font-medium tabular-nums text-gray-950 dark:text-dark-950`,children:[S(L[t]),` `,m(`usageAnalytics.metrics.${t}`)]})]}),(0,O.jsx)(`div`,{className:a(`grid gap-x-5 gap-y-2 sm:grid-cols-2 lg:grid-cols-3`,u&&`max-h-40 overflow-y-auto`),children:B.map(e=>(0,O.jsxs)(`div`,{"data-model":e.model===void 0?`__total__`:e.model??`__other__`,className:a(`flex min-w-0 items-center gap-2 text-xs`,o===e.key&&`font-medium`),children:[(0,O.jsx)(`span`,{"aria-hidden":`true`,className:`h-2 w-2 shrink-0 rounded-full`,style:{backgroundColor:r.get(e.key)??`#6b7280`}}),(0,O.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-gray-600 dark:text-dark-700`,title:w(e.model),dir:`auto`,children:w(e.model)}),(0,O.jsx)(`span`,{className:`shrink-0 tabular-nums text-gray-900 dark:text-dark-900`,children:S(e.value)})]},e.key))}),(0,O.jsx)(`p`,{className:`mt-3 h-4 truncate text-xs font-medium text-gray-600 dark:text-dark-700`,children:c===void 0?R?m(`usageAnalytics.activity.highlightedModel`,{model:w(R.model)}):m(`usageAnalytics.activity.allModels`):m(`usageAnalytics.activity.loadingModel`,{model:c})})]})]})]})}var z=new Intl.NumberFormat(void 0,{maximumFractionDigits:0}),B=new Intl.NumberFormat(void 0,{notation:`compact`,maximumFractionDigits:1}),V=e=>e>=1e4?B.format(e):z.format(e),ne=e=>e?e<1e3?`${z.format(e)} ms`:`${(e/1e3).toFixed(+(e<1e4))} s`:`—`,re=(e,t)=>e===0?0:(e-t)/e*100,H=864e5,U=10,W=12,G=30,K=16,q=`fill-gray-950/[0.06] dark:fill-white/[0.07]`,J=[0,.35,.55,.75,1],ie=({heatmap:e,colors:t,chartModels:n,focusedModel:r})=>{let{t:o,i18n:s}=i(),[c,l]=(0,E.useState)(null),u=[...new Set([...e.models,...n])],d=e=>e!==void 0&&(u.includes(e)||e===r)?t.get(F(e))??`#6b7280`:N,{weeks:f,firstColStart:p,cellsByDay:m,maxCalls:h,totalCalls:g}=(0,E.useMemo)(()=>{let t=new Map(e.cells.map(e=>[e.timestamp,e])),n=e.from,r=e.from+(e.days-1)*H,i=n-new Date(n).getUTCDay()*H;return{weeks:Math.ceil((r-i+H)/(7*H)),firstColStart:i,cellsByDay:t,maxCalls:Math.max(1,...e.cells.map(e=>e.calls)),totalCalls:e.cells.reduce((e,t)=>e+t.calls,0)}},[e]),_=new Intl.DateTimeFormat(s.language,{month:`short`,timeZone:`UTC`}),v=new Intl.DateTimeFormat(s.language,{weekday:`short`,timeZone:`UTC`}),y=new Intl.DateTimeFormat(s.language,{dateStyle:`medium`,timeZone:`UTC`}),b=e.from,x=e.from+(e.days-1)*H,S=G+f*W,C=[],w=-1;for(let e=0;e<f;e++){let t=p+e*7*H,n=Math.max(t,b),r=new Date(n).getUTCMonth();r!==w&&t>=b-6*H&&((w!==-1||t>=b)&&C.push({x:G+e*W,label:_.format(n)}),w=r)}let T=e=>e<=0?0:Math.min(4,Math.max(1,Math.ceil(e/h*4))),D=e=>d(e.models[0]?.model),k=(e,t,n)=>{let r=e.currentTarget.closest(`[data-heatmap-wrapper]`);if(!r)return;let i=r.getBoundingClientRect(),a=e.currentTarget.getBoundingClientRect(),o=a.left-i.left+a.width/2;l({x:Math.min(Math.max(o,96),Math.max(i.width-96,96)),y:a.top-i.top,timestamp:t,calls:n.calls,models:n.models})};return(0,O.jsxs)(`section`,{"data-testid":`usage-heatmap`,className:`min-w-0 overflow-hidden rounded-2xl border border-gray-200/80 bg-white/80 shadow-subtle backdrop-blur-md dark:border-white/[0.08] dark:bg-dark-100/75`,children:[(0,O.jsxs)(`div`,{className:`flex flex-col gap-1 border-b border-gray-200/70 px-4 py-3 dark:border-white/[0.07] sm:flex-row sm:items-center sm:justify-between sm:px-5`,children:[(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`h2`,{className:`text-sm font-medium text-gray-950 dark:text-dark-950`,children:o(`usageAnalytics.heatmap.title`)}),(0,O.jsx)(`p`,{className:`mt-1 text-xs text-gray-500 dark:text-dark-500`,children:o(`usageAnalytics.heatmap.description`)})]}),(0,O.jsx)(`span`,{className:`shrink-0 text-xs tabular-nums text-gray-500 dark:text-dark-500`,children:o(`usageAnalytics.heatmap.yearTotal`,{count:g,formatted:V(g)})})]}),(0,O.jsxs)(`div`,{className:`relative p-4 sm:px-5`,"data-heatmap-wrapper":!0,children:[(0,O.jsx)(`div`,{className:`overflow-x-auto`,children:(0,O.jsxs)(`svg`,{viewBox:`0 0 ${S} 100`,direction:`ltr`,className:`h-auto w-full min-w-[640px]`,role:`img`,"aria-label":o(`usageAnalytics.heatmap.title`),onMouseLeave:()=>l(null),children:[C.map(({x:e,label:t})=>(0,O.jsx)(`text`,{x:e,y:10,className:`fill-gray-400 text-[8px] dark:fill-dark-500`,children:t},`${e}-${t}`)),[1,3,5].map(e=>(0,O.jsx)(`text`,{x:0,y:K+e*W+U-2,className:`fill-gray-400 text-[8px] dark:fill-dark-500`,children:v.format(new Date(Date.UTC(2023,0,1+e)))},e)),Array.from({length:f},(e,t)=>Array.from({length:7},(e,n)=>{let r=p+(t*7+n)*H;if(r<b||r>x)return null;let i=m.get(r),o=i?.calls??0,s=T(o);return(0,O.jsx)(`rect`,{x:G+t*W,y:K+n*W,width:U,height:U,rx:2,"data-model":i?.models[0]?.model,fill:i&&s>0?D(i):void 0,fillOpacity:s===0?1:J[s],strokeWidth:+(c?.timestamp===r),className:a(`motion-safe:transition-opacity`,(s===0||!i)&&q,c?.timestamp===r?`stroke-gray-500 dark:stroke-white/60`:`stroke-transparent`),onMouseEnter:e=>k(e,r,{calls:o,models:i?.models??[]}),children:(0,O.jsx)(`title`,{children:`${y.format(r)} — ${V(o)}`})},r)}))]})}),c&&(0,O.jsxs)(`div`,{className:`pointer-events-none absolute z-10 min-w-[10rem] -translate-x-1/2 -translate-y-full rounded-lg border border-gray-200/80 bg-white/95 px-3 py-2 shadow-card backdrop-blur-md dark:border-white/[0.1] dark:bg-dark-100/95`,style:{left:c.x,top:c.y-6},children:[(0,O.jsx)(`div`,{className:`text-[11px] font-medium text-gray-900 dark:text-dark-900`,children:y.format(c.timestamp)}),(0,O.jsx)(`div`,{className:`mt-0.5 text-[11px] text-gray-500 dark:text-dark-500`,children:c.calls===0?o(`usageAnalytics.heatmap.noCalls`):`${V(c.calls)} ${o(`usageAnalytics.heatmap.calls`)}`}),c.models.slice(0,3).map(e=>(0,O.jsxs)(`div`,{className:`mt-1 flex items-center justify-between gap-3 text-[11px]`,children:[(0,O.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,O.jsx)(`span`,{className:`h-2 w-2 shrink-0 rounded-[3px]`,style:{backgroundColor:d(e.model)}}),(0,O.jsx)(`span`,{className:`truncate font-mono text-gray-700 dark:text-dark-700`,dir:`ltr`,children:e.model})]}),(0,O.jsx)(`span`,{className:`tabular-nums text-gray-500 dark:text-dark-500`,children:V(e.calls)})]},e.model))]}),(0,O.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center justify-between gap-3`,children:[(0,O.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-1.5`,children:[u.map(e=>(0,O.jsxs)(`span`,{className:`flex items-center gap-1.5 text-[11px] text-gray-600 dark:text-dark-600`,children:[(0,O.jsx)(`span`,{className:`h-2.5 w-2.5 rounded-[3px]`,style:{backgroundColor:t.get(F(e))??`#6b7280`}}),(0,O.jsx)(`span`,{className:`font-mono`,dir:`ltr`,children:e})]},e)),(0,O.jsxs)(`span`,{className:`flex items-center gap-1.5 text-[11px] text-gray-600 dark:text-dark-600`,children:[(0,O.jsx)(`span`,{className:`h-2.5 w-2.5 rounded-[3px]`,style:{backgroundColor:N}}),o(`usageAnalytics.heatmap.other`)]})]}),(0,O.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[11px] text-gray-500 dark:text-dark-500`,children:[o(`usageAnalytics.heatmap.less`),(0,O.jsx)(`span`,{className:`h-2.5 w-2.5 rounded-[3px] bg-gray-950/[0.06] dark:bg-white/[0.07]`}),J.slice(1).map(e=>(0,O.jsx)(`span`,{className:`h-2.5 w-2.5 rounded-[3px] bg-gray-500`,style:{opacity:e}},e)),o(`usageAnalytics.heatmap.more`)]})]})]})]})},Y=()=>{let{t:e}=i(),[t,n]=(0,E.useState)(30),[l,u]=(0,E.useState)(`calls`),[d,m]=(0,E.useState)(),[v,y]=(0,E.useState)(),{data:x,error:D,isLoading:k,isFetching:A,refetch:M}=r({queryKey:[`plugin-usage`,t],queryFn:async()=>{let n=await S.getUsage(t);if(!n.success||!n.data)throw Error(n.error||e(`usageAnalytics.loadFailed`));return n.data}}),N=(0,E.useMemo)(()=>new Set(x?te(x).map(e=>e.key):[]),[x]),P=(0,E.useMemo)(()=>new Set([...N,...x?.models.map(e=>F(e.model))??[]]),[N,x]),z=d&&P.has(d)?d:void 0,B=v&&P.has(v)?v:void 0,H=N.has(`other`),U=(H?[B,z].find(e=>e?.startsWith(`model:`)&&!N.has(e)):void 0)?.slice(6),W=r({queryKey:[`plugin-usage`,t,`model`,U,x?.range.to],enabled:U!==void 0,staleTime:3e4,queryFn:async()=>{let n=await S.getUsage(t,U,x?.range.to);if(!n.success||!n.data)throw Error(n.error||e(`usageAnalytics.loadFailed`));return n.data}}),G=x,K=!!x&&!!W.data&&ee(x,W.data),q=(0,E.useMemo)(()=>x&&U!==void 0&&K?{...x,modelSeries:W.data.modelSeries}:x,[x,U,K,W.data]),J=(0,E.useRef)(null);(0,E.useEffect)(()=>{U!==void 0&&W.data&&!K&&!A&&J.current!==W.data&&(J.current=W.data,M())},[U,W.data,K,A,M]);let Y=D??(U===void 0?null:W.error),ae=Y?Y instanceof Error?Y.message:e(`usageAnalytics.loadFailed`):null,oe=U!==void 0&&!K&&!Y?U:void 0,X=(0,E.useMemo)(()=>x?I(x):new Map,[x]),se=(0,E.useMemo)(()=>new Set(q?te(q).map(e=>e.key):[]),[q]),Z=B??z,ce=e=>m(e),Q=e=>{if(x?.modelSeries?.length&&!(e===null&&!N.has(`other`)))return F(e)},$=G?.totals,le=(0,E.useMemo)(()=>[{label:e(`usageAnalytics.cards.calls`),value:V($?.calls??0),detail:e(`usageAnalytics.cards.callsDetail`,{count:$?.uniqueUsers??0}),icon:b},{label:e(`usageAnalytics.cards.tokens`),value:V($?.reportedTokens??0),detail:e(`usageAnalytics.cards.coverage`,{percent:$?.calls?($.meteredCalls/$.calls*100).toFixed(1):`0`}),icon:p},{label:e(`usageAnalytics.cards.success`),value:`${re($?.calls??0,($?.failedCalls??0)+($?.cancelledCalls??0)).toFixed(1)}%`,detail:e(`usageAnalytics.cards.successDetail`,{count:$?.failedCalls??0}),icon:o},{label:e(`usageAnalytics.cards.latency`),value:ne($?.averageLatencyMs??0),detail:e(`usageAnalytics.cards.latencyDetail`),icon:c}],[e,$]);return k&&!G?(0,O.jsx)(T,{width:`wide`,children:(0,O.jsx)(`div`,{className:`flex min-h-[50vh] items-center justify-center`,children:(0,O.jsx)(s,{className:`h-7 w-7 motion-safe:animate-spin text-primary-500`})})}):(0,O.jsxs)(T,{width:`wide`,children:[(0,O.jsx)(w,{eyebrow:e(`usageAnalytics.eyebrow`),title:e(`usageAnalytics.title`),description:e(`usageAnalytics.description`),actions:(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(`div`,{className:`inline-flex rounded-xl border border-gray-200 bg-white/70 p-1 dark:border-white/[0.08] dark:bg-dark-100/70`,children:[7,30,90].map(r=>(0,O.jsx)(`button`,{type:`button`,className:a(`min-h-9 rounded-lg px-3 py-1.5 text-xs font-medium motion-safe:transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary-500`,t===r?`bg-gray-950 text-white dark:bg-white dark:text-gray-950`:`text-gray-500 hover:text-gray-900 dark:text-dark-500 dark:hover:text-dark-900`),"aria-pressed":t===r,onClick:()=>{n(r),y(void 0)},children:e(`usageAnalytics.days`,{count:r})},r))}),(0,O.jsxs)(C,{variant:`outline`,size:`sm`,onClick:()=>{M(),U!==void 0&&W.refetch()},disabled:A||U!==void 0&&W.isFetching,children:[(0,O.jsx)(f,{className:a(`h-4 w-4`,A&&`motion-safe:animate-spin`)}),(0,O.jsx)(`span`,{className:`sr-only`,children:e(`usageAnalytics.refresh`)})]})]})}),ae&&(0,O.jsxs)(`div`,{className:`mb-6 flex items-center gap-3 rounded-2xl border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700 dark:border-red-900/40 dark:bg-red-950/30 dark:text-red-300`,children:[(0,O.jsx)(h,{className:`h-4 w-4 shrink-0`}),(0,O.jsx)(`span`,{children:ae})]}),(0,O.jsx)(`div`,{className:`mb-6`,children:(0,O.jsx)(j,{days:t})}),G&&(0,O.jsxs)(`div`,{className:`min-w-0 space-y-4`,children:[(0,O.jsx)(`div`,{className:`grid gap-3 sm:grid-cols-2 xl:grid-cols-4`,children:le.map(e=>{let t=e.icon;return(0,O.jsxs)(`section`,{className:`rounded-2xl border border-gray-200/80 bg-white/75 p-4 shadow-subtle backdrop-blur-md dark:border-white/[0.08] dark:bg-dark-100/70`,children:[(0,O.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,O.jsx)(`span`,{className:`text-xs font-medium uppercase tracking-[0.12em] text-gray-500 dark:text-dark-500`,children:e.label}),(0,O.jsx)(t,{className:`h-4 w-4 text-primary-500 dark:text-primary-400`})]}),(0,O.jsx)(`div`,{className:`mt-2 text-2xl font-normal tracking-[-0.04em] text-gray-950 dark:text-dark-950`,children:e.value}),(0,O.jsx)(`p`,{className:`mt-1.5 text-xs text-gray-500 dark:text-dark-500`,children:e.detail})]},e.label)})}),G.heatmap&&G.heatmap.cells.length>0&&(0,O.jsx)(ie,{heatmap:G.heatmap,colors:X,focusedModel:Z?.startsWith(`model:`)?Z.slice(6):void 0,chartModels:(x?.modelSeries??[]).flatMap(e=>e.model===null?[]:[e.model])}),(0,O.jsx)(R,{analytics:q??G,metric:l,onMetricChange:u,colors:X,highlighted:Z,selected:z,onHighlight:y,onSelect:ce,loadingModel:oe,canLoadModels:H}),G.totals.calls===0?(0,O.jsxs)(`div`,{className:`rounded-2xl border border-dashed border-gray-300 px-6 py-10 text-center dark:border-white/[0.12]`,children:[(0,O.jsx)(g,{className:`mx-auto h-8 w-8 text-gray-400 dark:text-dark-500`}),(0,O.jsx)(`h2`,{className:`mt-4 text-base font-medium text-gray-900 dark:text-dark-900`,children:e(`usageAnalytics.empty.title`)}),(0,O.jsx)(`p`,{className:`mx-auto mt-2 max-w-md text-sm leading-6 text-gray-500 dark:text-dark-500`,children:e(`usageAnalytics.empty.description`)})]}):(0,O.jsxs)(`div`,{className:`grid min-w-0 gap-4 xl:grid-cols-[minmax(0,1.15fr)_minmax(0,0.85fr)]`,children:[(0,O.jsxs)(`section`,{className:`min-w-0 overflow-hidden rounded-2xl border border-gray-200/80 bg-white/80 shadow-subtle backdrop-blur-md dark:border-white/[0.08] dark:bg-dark-100/75`,children:[(0,O.jsxs)(`div`,{className:`border-b border-gray-200/70 px-4 py-3 dark:border-white/[0.07] sm:px-5`,children:[(0,O.jsx)(`h2`,{className:`text-sm font-medium text-gray-950 dark:text-dark-950`,children:e(`usageAnalytics.models.title`)}),(0,O.jsx)(`p`,{className:`mt-1 text-xs text-gray-500 dark:text-dark-500`,children:e(`usageAnalytics.models.description`)})]}),(0,O.jsx)(`div`,{className:`overflow-x-auto`,children:(0,O.jsxs)(`table`,{"data-testid":`usage-model-table`,className:`w-full min-w-[620px] text-start text-sm`,children:[(0,O.jsx)(`thead`,{className:`text-[11px] uppercase tracking-[0.1em] text-gray-400 dark:text-dark-500`,children:(0,O.jsxs)(`tr`,{children:[(0,O.jsx)(`th`,{className:`px-5 py-2 text-start font-medium`,children:e(`usageAnalytics.models.model`)}),(0,O.jsx)(`th`,{className:`px-4 py-2 text-end font-medium`,children:e(`usageAnalytics.metrics.calls`)}),(0,O.jsx)(`th`,{className:`px-4 py-2 text-end font-medium`,children:e(`usageAnalytics.metrics.tokens`)}),(0,O.jsx)(`th`,{className:`px-4 py-2 text-end font-medium`,children:e(`usageAnalytics.models.success`)}),(0,O.jsx)(`th`,{className:`px-5 py-2 text-end font-medium`,children:e(`usageAnalytics.models.latency`)})]})}),(0,O.jsx)(`tbody`,{className:`divide-y divide-gray-100 dark:divide-white/[0.06]`,children:G.models.map(t=>(0,O.jsxs)(`tr`,{"data-testid":`usage-model-row`,"data-model":t.model,"data-highlighted":Z===Q(t.model),onMouseEnter:()=>y(Q(t.model)),onMouseLeave:()=>y(void 0),className:a(Z===Q(t.model)&&Z&&`bg-gray-50 dark:bg-dark-200/70`),children:[(0,O.jsxs)(`td`,{className:`px-5 py-2.5`,children:[(0,O.jsxs)(`button`,{type:`button`,disabled:!Q(t.model),"aria-label":e(`usageAnalytics.activity.highlightModel`,{model:t.model}),"aria-pressed":!!z&&z===Q(t.model),className:`flex min-h-9 max-w-[260px] items-center gap-2 rounded-md text-start font-medium text-gray-900 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500 dark:text-dark-900`,title:se.has(F(t.model))?t.model:e(`usageAnalytics.models.notCharted`),onFocus:()=>y(Q(t.model)),onBlur:()=>y(void 0),onClick:()=>ce(z===Q(t.model)?void 0:Q(t.model)),children:[(0,O.jsx)(`span`,{"aria-hidden":`true`,className:`h-2.5 w-2.5 shrink-0 rounded-full`,style:{backgroundColor:X.get(F(t.model))??`#6b7280`}}),(0,O.jsx)(`span`,{className:`truncate`,dir:`ltr`,children:t.model})]}),(0,O.jsx)(`div`,{className:`mt-0.5 text-xs text-gray-500 dark:text-dark-500`,children:t.pluginName})]}),(0,O.jsxs)(`td`,{className:`px-4 py-2.5 text-end tabular-nums text-gray-700 dark:text-dark-700`,children:[V(t.calls),(0,O.jsxs)(`div`,{className:`mt-1 text-[11px] text-gray-500 dark:text-dark-500`,title:e(`usageAnalytics.models.share`),children:[(t.calls/G.totals.calls*100).toFixed(1),`%`]})]}),(0,O.jsx)(`td`,{className:`px-4 py-2.5 text-end tabular-nums text-gray-700 dark:text-dark-700`,children:t.tokens?V(t.tokens):`—`}),(0,O.jsxs)(`td`,{className:`px-4 py-2.5 text-end tabular-nums text-gray-700 dark:text-dark-700`,children:[re(t.calls,t.errors).toFixed(1),`%`]}),(0,O.jsx)(`td`,{className:`px-5 py-2.5 text-end tabular-nums text-gray-500 dark:text-dark-500`,children:ne(t.averageLatencyMs)})]},JSON.stringify([t.pluginId,t.pluginName,t.model])))})]})})]}),(0,O.jsxs)(`div`,{className:`min-w-0 space-y-4`,children:[(0,O.jsxs)(`section`,{"data-testid":`usage-provider-breakdown`,className:`min-w-0 rounded-2xl border border-gray-200/80 bg-white/80 p-4 shadow-subtle dark:border-white/[0.08] dark:bg-dark-100/75 sm:p-5`,children:[(0,O.jsx)(`h2`,{className:`text-sm font-medium text-gray-950 dark:text-dark-950`,children:e(`usageAnalytics.providers.title`)}),(0,O.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-gray-500 dark:text-dark-500`,children:e(`usageAnalytics.providers.description`)}),(0,O.jsx)(`div`,{className:`mt-4 divide-y divide-gray-200/70 dark:divide-white/[0.07]`,children:G.plugins.map(t=>{let n=G.totals.calls?t.calls/G.totals.calls*100:0,r=L(G,t.pluginId,t.calls,t.pluginName);return(0,O.jsxs)(`article`,{"data-provider":t.pluginId,className:`py-4 first:pt-0 last:pb-0`,children:[(0,O.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,O.jsxs)(`div`,{className:`min-w-0`,children:[(0,O.jsx)(`h3`,{className:`truncate text-sm font-medium text-gray-900 dark:text-dark-900`,title:t.pluginName,children:t.pluginName}),(0,O.jsx)(`p`,{className:`mt-1 text-xs text-gray-500 dark:text-dark-500`,children:e(`usageAnalytics.providers.share`,{percent:n.toFixed(1)})})]}),(0,O.jsxs)(`div`,{className:`shrink-0 text-end`,children:[(0,O.jsx)(`div`,{className:`text-base font-medium tabular-nums text-gray-950 dark:text-dark-950`,children:V(t.calls)}),(0,O.jsx)(`div`,{className:`text-[11px] text-gray-500 dark:text-dark-500`,children:e(`usageAnalytics.metrics.calls`)})]})]}),(0,O.jsx)(`div`,{className:`my-3 flex h-2 overflow-hidden rounded-full bg-gray-100 dark:bg-dark-300`,"aria-hidden":`true`,children:r.map(n=>(0,O.jsx)(`span`,{"data-model":n.model??`__other__`,title:`${n.model??e(`usageAnalytics.heatmap.other`)}: ${V(n.calls)}`,style:{width:`${t.calls?n.calls/t.calls*100:0}%`,backgroundColor:X.get(F(n.model))??`#6b7280`,opacity:Z&&Z!==Q(n.model)?.25:1}},F(n.model)))}),(0,O.jsxs)(`dl`,{className:`grid grid-cols-3 gap-2`,children:[(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`dt`,{className:`text-[10px] text-gray-500 dark:text-dark-500`,children:e(`usageAnalytics.metrics.tokens`)}),(0,O.jsx)(`dd`,{className:`mt-1 text-xs tabular-nums text-gray-800 dark:text-dark-800`,title:t.tokens?void 0:e(`usageAnalytics.providers.noTokens`),children:t.tokens?V(t.tokens):`—`})]}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`dt`,{className:`text-[10px] text-gray-500 dark:text-dark-500`,children:e(`usageAnalytics.models.success`)}),(0,O.jsxs)(`dd`,{className:`mt-1 text-xs tabular-nums text-gray-800 dark:text-dark-800`,children:[re(t.calls,t.errors).toFixed(1),`%`]})]}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`dt`,{className:`text-[10px] text-gray-500 dark:text-dark-500`,children:e(`usageAnalytics.models.latency`)}),(0,O.jsx)(`dd`,{className:`mt-1 text-xs tabular-nums text-gray-800 dark:text-dark-800`,children:ne(t.averageLatencyMs)})]})]}),t.errors>0&&(0,O.jsxs)(`p`,{className:`mt-2 flex items-center gap-1 text-[11px] text-gray-500 dark:text-dark-500`,children:[(0,O.jsx)(h,{className:`h-3 w-3`}),e(`usageAnalytics.providers.failures`,{count:t.errors})]}),(0,O.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-1.5`,children:r.map(t=>{let n=Q(t.model),r=t.model??e(`usageAnalytics.heatmap.other`);return(0,O.jsxs)(`button`,{type:`button`,disabled:!n,"aria-label":e(`usageAnalytics.activity.highlightModel`,{model:r}),"aria-pressed":!!z&&z===n,title:r,onMouseEnter:()=>y(n),onMouseLeave:()=>y(void 0),onFocus:()=>y(n),onBlur:()=>y(void 0),onClick:()=>ce(z===n?void 0:n),className:a(`flex min-h-8 min-w-0 max-w-full items-center gap-1.5 rounded-md border px-2 py-1 text-[11px] text-gray-600 focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary-500 dark:text-dark-700`,Z&&Z===n?`border-gray-400 bg-gray-50 dark:border-dark-500 dark:bg-dark-200`:`border-gray-200/70 dark:border-white/[0.07]`),children:[(0,O.jsx)(`span`,{className:`h-2 w-2 shrink-0 rounded-full`,style:{backgroundColor:X.get(F(t.model))??`#6b7280`},"aria-hidden":`true`}),(0,O.jsx)(`span`,{className:`truncate`,dir:`auto`,children:r})]},F(t.model))})})]},JSON.stringify([t.pluginId,t.pluginName]))})})]}),(0,O.jsxs)(`section`,{className:`rounded-2xl border border-gray-200/80 bg-white/80 p-4 shadow-subtle backdrop-blur-md dark:border-white/[0.08] dark:bg-dark-100/75 sm:p-5`,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(_,{className:`h-4 w-4 text-primary-500 dark:text-primary-400`}),(0,O.jsx)(`h2`,{className:`text-sm font-medium text-gray-950 dark:text-dark-950`,children:e(`usageAnalytics.capabilities.title`)})]}),(0,O.jsx)(`div`,{className:`mt-5 grid grid-cols-2 gap-3`,children:G.capabilities.map(t=>(0,O.jsxs)(`div`,{className:`rounded-xl bg-gray-50 px-3 py-2.5 dark:bg-dark-200/70`,children:[(0,O.jsx)(`div`,{className:`text-xs font-medium capitalize text-gray-500 dark:text-dark-500`,children:t.capability}),(0,O.jsx)(`div`,{className:`mt-1 text-xl text-gray-950 dark:text-dark-950`,children:V(t.calls)}),(0,O.jsx)(`div`,{className:`mt-1 text-[11px] text-gray-500 dark:text-dark-500`,children:t.capability===`tts`?e(`usageAnalytics.capabilities.characters`,{count:V(t.inputUnits)}):t.capability===`stt`?e(`usageAnalytics.capabilities.bytes`,{count:V(t.inputUnits)}):t.capability===`image`?e(`usageAnalytics.capabilities.images`,{count:V(t.outputUnits)}):t.capability===`video`?e(`usageAnalytics.capabilities.jobs`,{count:V(t.calls)}):t.capability===`embedding`?e(`usageAnalytics.capabilities.inputs`,{count:V(t.inputUnits)}):e(`usageAnalytics.capabilities.reportedTokens`,{count:V(t.tokens)})})]},t.capability))})]})]})]}),(0,O.jsx)(`p`,{className:`px-1 text-xs leading-5 text-gray-500 dark:text-dark-500`,children:e(`usageAnalytics.privacyNote`)})]})]})};export{Y as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./RichMessageContent-CUbm43PQ.js";export{e as RichMessageContent,e as default};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/markdownMath-
|
|
2
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-vendor-D0Ec-185.js";import{o as r}from"./logger-DnuT4jgB.js";import{t as i}from"./utils-CKWltgs8.js";import{t as a}from"./appStore-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/markdownMath-BW8RNkEl.js","js/markdown-math-gtdBxaM5.js","js/markdown-core-D067gSd8.js","js/rolldown-runtime-hePW80VL.js","js/react-vendor-D0Ec-185.js","assets/markdown-math-B3MBJsZb.css","js/markdownHtml-Djpz4yB3.js","js/markdown-html-CQM6wA9G.js","js/OptimizedSyntaxHighlighter-SkJc7ZMe.js","js/OptimizedSyntaxHighlighter-CtQ_FGCX.js","js/syntax-highlight-DTWfgxYh.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-vendor-D0Ec-185.js";import{o as r}from"./logger-DnuT4jgB.js";import{t as i}from"./utils-CKWltgs8.js";import{t as a}from"./appStore-CmY86Gzn.js";import{a as o,i as s,n as c,r as l,s as u,t as d}from"./messageCodeStyles-CNMdqZf-.js";import{i as f,s as p}from"./markdown-core-D067gSd8.js";var m=e(t(),1),h=null,g=null,_=null,v=null,y=()=>_??=r(()=>import(`./markdownMath-BW8RNkEl.js`).then(e=>(h=e,e)),__vite__mapDeps([0,1,2,3,4,5])),b=()=>v??=r(()=>import(`./markdownHtml-Djpz4yB3.js`).then(e=>(g=e,e)),__vite__mapDeps([6,7,2,3,4])),x=e=>e.includes(`$`);function S(e){let{needsMath:t,needsHtml:n}=e,[,r]=m.useReducer(e=>e+1,0);return m.useEffect(()=>{if(!t||h)return;let e=!1;return y().then(()=>{e||r()}),()=>{e=!0}},[t]),m.useEffect(()=>{if(!n||g)return;let e=!1;return b().then(()=>{e||r()}),()=>{e=!0}},[n]),{math:t?h:null,html:n?g:null}}var C=n(),w=m.lazy(()=>r(()=>import(`./OptimizedSyntaxHighlighter-SkJc7ZMe.js`),__vite__mapDeps([8,9,3,4,10,2])));function T({children:e,className:t}){return(0,C.jsx)(`pre`,{dir:`ltr`,className:i(l,`rounded-lg`,t),children:(0,C.jsx)(`code`,{children:e})})}var E=m.memo(({content:e,className:t,allowHtml:n=!1})=>{let r=a(e=>e.theme.mode!==`light`),l=m.useMemo(()=>u(e),[e]),{math:h,html:g}=S({needsMath:x(l),needsHtml:n}),_=m.useMemo(()=>h?[f,h.remarkMath]:[f],[h]),v=m.useMemo(()=>{let e=[];return g&&e.push(g.rehypeRaw,[g.rehypeSanitize,g.richContentSanitizeSchema]),h&&e.push([h.rehypeKatex,{strict:e=>e===`unknownSymbol`?`ignore`:`warn`}]),e},[g,h]);return(0,C.jsx)(`div`,{dir:`auto`,className:i(`prose prose-sm max-w-none dark:prose-invert prose-gray`,`[&_.katex-display]:overflow-x-auto [&_.katex-display]:overflow-y-hidden [&_.katex-display]:py-2`,`[&_.katex]:text-inherit`,t),children:(0,C.jsx)(p,{remarkPlugins:_,rehypePlugins:v,components:{code({className:e,children:t,node:n,...a}){let l=/language-([^\s]+)/.exec(e||``),u=String(t),f=u.replace(/\n$/,``),p=l?l[1]:null;return p||u.includes(`
|
|
3
3
|
`)?(0,C.jsx)(o,{code:f,language:p,state:`complete`,children:(0,C.jsx)(`div`,{className:`overflow-x-auto`,children:(0,C.jsx)(m.Suspense,{fallback:(0,C.jsx)(T,{className:`!m-0 !rounded-none !border-none`,children:f}),children:(0,C.jsx)(w,{language:p||`text`,isDark:r,codeTheme:`night`,backgroundColor:r?d:c,borderRadius:0,customStyle:s,className:`!m-0 !rounded-none !border-none`,showLineNumbers:!0,children:f})})})}):(0,C.jsx)(`code`,{dir:`ltr`,className:i(`px-1.5 py-0.5 rounded-md bg-gray-100 dark:bg-dark-200 text-gray-800 dark:text-dark-800`,`font-mono text-[0.85em] border border-gray-200 dark:border-dark-300`,e),...a,children:t})},pre({children:e}){return(0,C.jsx)(C.Fragment,{children:e})},p({children:e,...t}){return(0,C.jsx)(`div`,{dir:`auto`,className:`mb-2.5 last:mb-0 leading-relaxed`,...t,children:e})},ul({children:e,...t}){return(0,C.jsx)(`ul`,{dir:`auto`,className:`list-disc list-inside mb-2.5 space-y-1 ps-4`,...t,children:e})},ol({children:e,...t}){return(0,C.jsx)(`ol`,{dir:`auto`,className:`list-decimal list-inside mb-2.5 space-y-1 ps-4`,...t,children:e})},li({children:e,...t}){return(0,C.jsx)(`li`,{dir:`auto`,className:`text-ink leading-relaxed`,...t,children:e})},blockquote({children:e,...t}){return(0,C.jsx)(`blockquote`,{dir:`auto`,className:`border-s-2 border-primary-400 dark:border-primary-500 bg-primary-25 dark:bg-primary-950/30 ps-3 py-2 my-3 rounded-e-lg italic text-ink`,...t,children:e})},h1({children:e,...t}){return(0,C.jsx)(`h1`,{dir:`auto`,className:`text-xl font-bold mb-3 mt-5 first:mt-0 text-ink border-b border-gray-200 dark:border-dark-300 pb-1.5`,...t,children:e})},h2({children:e,...t}){return(0,C.jsx)(`h2`,{dir:`auto`,className:`text-lg font-semibold mb-2 mt-5 first:mt-0 text-ink`,...t,children:e})},h3({children:e,...t}){return(0,C.jsx)(`h3`,{dir:`auto`,className:`text-base font-medium mb-2 mt-4 first:mt-0 text-ink`,...t,children:e})},table({children:e,node:t,...n}){return(0,C.jsx)(`div`,{className:i(`my-4 w-full overflow-x-auto rounded-xl border border-line bg-surface shadow-subtle`,`focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/40`),tabIndex:0,children:(0,C.jsx)(`table`,{dir:`auto`,className:`w-full min-w-[42rem] border-separate border-spacing-0 text-start text-sm`,...n,children:e})})},thead({children:e,node:t,...n}){return(0,C.jsx)(`thead`,{className:`bg-surface-subtle`,...n,children:e})},tbody({children:e,node:t,...n}){return(0,C.jsx)(`tbody`,{...n,children:e})},tr({children:e,node:t,...n}){return(0,C.jsx)(`tr`,{className:`transition-colors hover:bg-black/[0.025] last:[&>td]:border-b-0 dark:hover:bg-white/[0.025]`,...n,children:e})},th({align:e,children:t,node:n,...r}){return(0,C.jsx)(`th`,{className:i(`border-b border-e border-line-strong px-3 py-2.5 align-bottom font-semibold text-ink last:border-e-0`,e===`center`?`text-center`:e===`right`?`text-right`:e===`left`?`text-left`:`text-start`),...r,children:t})},td({align:e,children:t,node:n,...r}){return(0,C.jsx)(`td`,{className:i(`min-w-40 border-b border-e border-line px-3 py-2.5 align-top leading-relaxed text-ink last:border-e-0`,e===`center`?`text-center`:e===`right`?`text-right`:e===`left`?`text-left`:`text-start`),...r,children:t})}},children:l})})});E.displayName=`RichMessageContent`;export{E as t};
|