dsh-cost-meter 1.6.11 → 1.6.13
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/README.en.md +5 -5
- package/README.md +5 -5
- package/lib/backfill.js +41 -16
- package/lib/client.js +2 -2
- package/lib/coding-plans.js +81 -0
- package/lib/index.js +55 -13
- package/lib/plan-billing.js +1 -0
- package/lib/store.js +37 -0
- package/lib/typert.host.js +14 -0
- package/package.json +4 -2
package/lib/client.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// This file is generated from src/client.js via `node scripts/build.mjs` (esbuild). Do not edit directly.
|
|
2
|
-
var Dn=Object.defineProperty;var r=(Pe,Me)=>Dn(Pe,"name",{value:Me,configurable:!0});window.__ModuleLoader__.load({id:"dsh-cost-meter",factory:r(Pe=>{var Me={exports:{}},He=Me.exports;Object.defineProperty(He,Symbol.toStringTag,{value:"Module"});const Ce=Pe("react"),{Tooltip:X}=Pe("@deepseek-ai/dsh-client-ui-primitives"),Te=!1,Yt=["/* dsh-cost-meter: \u4F1A\u8BDD\u8D39\u7528\u5FBD\u7AE0\u4E0E\u8BBE\u7F6E\u9875 */",".cm-root{display:block;text-align:center;max-width:var(--dsh-chat-content-width,720px);width:100%;margin:0 auto;box-sizing:border-box;padding:4px calc(var(--dsh-composer-side-clearance,0px) + 16px) 0;font-size:12px;line-height:20px;color:var(--dsw-alias-label-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}",".cm-chip{display:inline-flex;align-items:center;gap:4px;max-width:180px;padding:0 8px;height:22px;border-radius:6px;background:var(--dsw-alias-bg-layer-2);font-size:12px;line-height:22px;color:var(--dsw-alias-label-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}",".cm-foot{display:flex;align-items:center;gap:6px;height:32px;padding:0 8px;border-radius:8px;font-size:12px;color:var(--dsw-alias-label-secondary);white-space:nowrap;overflow:hidden}",".cm-foot:hover{background:var(--dsw-alias-interactive-bg-hover)}",".cm-foot-rail{width:100%;justify-content:center;padding:0;font-size:13px;font-weight:600;color:var(--dsw-alias-label-primary)}",".cm-foot-rail:hover{background:var(--dsw-alias-interactive-bg-hover)}",".cm-num{font-variant-numeric:tabular-nums}",".cm-go-rail{font-size:11px;font-weight:700;color:var(--dsw-alias-label-primary)}",".cm-go-list{display:flex;flex-direction:column;gap:10px}",".cm-go-row{display:flex;align-items:center;gap:8px;font-size:12px}",".cm-go-label{flex:none;width:88px;color:var(--dsw-alias-label-secondary)}",".cm-go-bar{flex:1;height:6px;border-radius:3px;background:var(--dsw-alias-interactive-bg-hover);overflow:hidden}",".cm-go-fill{height:100%;border-radius:3px;background:var(--dsw-alias-brand-primary)}",".cm-go-num{flex:none;min-width:44px;text-align:right;font-weight:600;font-variant-numeric:tabular-nums}",".cm-go-reset{flex:none;max-width:230px;font-size:11px;color:var(--dsw-alias-label-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}",".cm-go-time{font-size:11px;color:var(--dsw-alias-label-tertiary)}",".cm-go-row.main .cm-go-label{font-weight:600;color:var(--dsw-alias-label-primary)}",".cm-corner{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;width:100%;max-width:var(--dsh-chat-content-width,720px);margin:2px auto 0;box-sizing:border-box;padding:0 calc(var(--dsh-composer-side-clearance,0px) + 16px)}",".cm-corner-chip{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:6px;background:var(--dsw-alias-bg-layer-2);font-size:11px;line-height:20px;color:var(--dsw-alias-label-secondary);white-space:nowrap;font-variant-numeric:tabular-nums}",".cm-corner-chip:hover{background:var(--dsw-alias-interactive-bg-hover)}",".cm-corner-chip.warn{color:var(--dsw-alias-state-warn-primary)}",".cm-corner-chip.over{color:var(--dsw-alias-state-error-primary)}",".cm-qstrip{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;width:100%;max-width:var(--dsh-chat-content-width,720px);margin:0 auto;box-sizing:border-box;padding:0 calc(var(--dsh-composer-side-clearance,0px) + 16px)}",".cm-qchip{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border-radius:6px;background:var(--dsw-alias-bg-layer-2);font-size:11px;line-height:22px;color:var(--dsw-alias-label-secondary);white-space:nowrap;font-variant-numeric:tabular-nums;cursor:default}",".cm-qchip:hover{background:var(--dsw-alias-interactive-bg-hover)}",".cm-qchip .cm-qlabel{color:var(--dsw-alias-label-primary);font-weight:600}",".cm-qchip .cm-qbar{display:block;width:44px;height:4px;border-radius:2px;background:var(--dsw-alias-border-l1);overflow:hidden;flex:none}",".cm-qchip .cm-qfill{display:block;height:100%;border-radius:2px;background:var(--dsw-alias-state-ok-primary,#3ba272)}",".cm-qchip .cm-qseg{display:inline-flex;align-items:center;gap:4px}",".cm-qchip .cm-qsep{width:1px;height:12px;background:var(--dsw-alias-border-l1);flex:none}",".cm-qchip .cm-qtext{color:var(--dsw-alias-label-secondary)}",".cm-qchip.warn{color:var(--dsw-alias-state-warn-primary)}",".cm-qchip.warn .cm-qfill{background:var(--dsw-alias-state-warn-primary)}",".cm-qchip.over{color:var(--dsw-alias-state-error-primary)}",".cm-qchip.over .cm-qfill{background:var(--dsw-alias-state-error-primary)}",".cm-qchip.action{cursor:pointer;user-select:none;outline:none}",".cm-qchip.action:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-brand-primary)}",".cm-qchip.action:active{transform:translateY(0.5px)}",".cm-plan-provider{display:flex;flex-direction:column;gap:8px}",".cm-plan-provider + .cm-plan-provider{margin-top:14px}",".cm-plan-provider-name{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}",".cm-plan-updated{font-size:11px;font-weight:400;color:var(--dsw-alias-label-tertiary)}",".cm-plan-tag{flex:none;margin-left:6px;padding:0 6px;border-radius:999px;border:1px solid var(--dsw-alias-border-l1);font-size:10px;line-height:16px;color:var(--dsw-alias-state-warn-primary)}",".cm-plan-reset,.cm-plan-method{font-size:11px;color:var(--dsw-alias-label-tertiary)}",".cm-qguide{position:fixed;top:18px;left:50%;transform:translateX(-50%);z-index:9999;max-width:440px;width:calc(100% - 32px);border:1px solid var(--dsw-alias-border-l1);border-radius:12px;background:var(--dsw-alias-bg-layer-1);box-shadow:0 8px 28px rgba(0,0,0,.18);padding:14px 16px;font-size:13px;color:var(--dsw-alias-label-primary);display:flex;flex-direction:column;gap:8px}",".cm-qguide h4{margin:0;font-size:13px;font-weight:600}",".cm-qguide p{margin:0;font-size:12px;line-height:1.6;color:var(--dsw-alias-label-secondary)}",".cm-qguide .cm-buttons{display:flex;gap:8px;justify-content:flex-end}",".cm-section{display:flex;flex-direction:column;gap:20px;padding:4px 2px 24px;font-size:13px;color:var(--dsw-alias-label-primary)}",".cm-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}",".cm-cards-toggle{display:flex;align-items:center;gap:6px;margin:-6px 2px 0 auto;width:fit-content;font-size:12px;color:var(--dsw-alias-label-tertiary);cursor:pointer;user-select:none}",".cm-cards-toggle:hover{color:var(--dsw-alias-label-primary)}",".cm-cards-toggle input{margin:0;cursor:pointer}",".cm-card{border:1px solid var(--dsw-alias-border-l1);border-radius:12px;padding:14px 16px;background:var(--dsw-alias-bg-layer-1)}",".cm-card-title{font-size:12px;color:var(--dsw-alias-label-tertiary);margin:0 0 8px}",".cm-card-value{font-size:20px;line-height:28px;font-weight:600}",".cm-card-sub{font-size:12px;color:var(--dsw-alias-label-tertiary);margin-top:4px}",".cm-h{font-size:13px;font-weight:600;margin:0}",".cm-collapse-h{display:flex;align-items:center;gap:8px;background:none;border:none;padding:0;margin:0;cursor:pointer;color:inherit;font:inherit;text-align:left}",".cm-collapse-h:hover .cm-h{color:var(--dsw-alias-interactive-text-hover,var(--dsw-alias-label-primary))}",".cm-caret{flex:none;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid var(--dsw-alias-label-secondary);transform:rotate(-90deg);transition:transform .15s ease}",".cm-caret.open{transform:rotate(0)}",".cm-collapse-body{display:flex;flex-direction:column;gap:12px;margin-top:12px}",".cm-toolbar{display:flex;justify-content:flex-end;align-items:center;gap:10px}",".cm-toolbar .cm-field{flex-direction:row;align-items:center;gap:8px}",".cm-toolbar .cm-field label{margin:0;font-size:12px;color:var(--dsw-alias-label-tertiary)}",".cm-toolbar .cm-input{min-width:150px;padding:4px 10px}",".cm-tabs-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;border-bottom:1px solid var(--dsh-alias-border-l1);padding-bottom:10px}",".cm-tabs{display:flex;align-items:center;gap:4px;flex-wrap:wrap}",".cm-tab{font:inherit;font-size:13px;color:var(--dsw-alias-label-secondary);background:transparent;border:none;border-radius:8px;padding:6px 14px;cursor:pointer;white-space:nowrap}",".cm-tab:hover{background:var(--dsw-alias-interactive-bg-hover)}",".cm-tab.active{background:var(--dsw-alias-state-business-primary);color:var(--dsw-alias-label-primary-inverted);font-weight:600}",".cm-tabs-row .cm-msg{padding:2px 10px}",".cm-note{font-size:12px;color:var(--dsw-alias-label-tertiary);margin:0}",".cm-table{width:100%;border-collapse:collapse;font-size:12px}",".cm-table th,.cm-table td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--dsw-alias-border-l1);white-space:nowrap}",".cm-table th{color:var(--dsw-alias-label-tertiary);font-weight:500}",".cm-table td.num,.cm-table th.num{text-align:right;font-variant-numeric:tabular-nums}",".cm-table tr:last-child td{border-bottom:none}",".cm-table tr.cm-row-click{cursor:pointer}",".cm-table tr.cm-row-click:hover td{background:var(--dsw-alias-bg-hover,rgba(127,127,127,.08))}",".cm-sess-title{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}",".cm-sess-id{font-size:11px;font-family:ui-monospace,Consolas,monospace;color:var(--dsw-alias-label-tertiary)}",".cm-empty{font-size:12px;color:var(--dsw-alias-label-tertiary);padding:8px 0}",".cm-scroll{max-height:320px;overflow:auto;border:1px solid var(--dsw-alias-border-l1);border-radius:10px}",".cm-grid{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:12px}",".cm-field{display:flex;flex-direction:column;gap:6px}",".cm-field label{font-size:12px;color:var(--dsw-alias-label-secondary)}",".cm-input{font:inherit;font-size:13px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l1);border-radius:8px;padding:6px 10px;outline:none}",".cm-input:focus{border-color:var(--dsw-alias-state-business-primary)}",".cm-input.narrow{max-width:120px}",".cm-range-row{display:flex;align-items:center;gap:10px}",".cm-range{flex:1;min-width:0;accent-color:var(--dsw-alias-state-business-primary)}",".cm-range-value{flex:none;min-width:44px;font-size:12px;color:var(--dsw-alias-label-tertiary);text-align:right}",".cm-check{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--dsw-alias-label-primary);cursor:pointer}",".cm-price-card{border:1px solid var(--dsw-alias-border-l1);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:10px;background:var(--dsw-alias-bg-layer-1)}",".cm-price-head{display:flex;align-items:center;justify-content:space-between;gap:8px}",".cm-price-name{font-weight:600;font-size:13px}",".cm-price-legacy{font-size:11px;color:var(--dsw-alias-label-tertiary);border:1px solid var(--dsw-alias-border-l1);border-radius:999px;padding:1px 8px}",".cm-price-row{display:grid;grid-template-columns:52px 1fr 1fr 1fr;gap:8px;align-items:center}",".cm-price-row span{font-size:12px;color:var(--dsw-alias-label-tertiary)}",".cm-price-row input{width:100%}",".cm-buttons{display:flex;flex-wrap:wrap;gap:10px;align-items:center}",".cm-btn{font:inherit;font-size:13px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-button-elevated-fill);border:1px solid var(--dsw-alias-border-l1);border-radius:8px;padding:6px 14px;cursor:pointer}",".cm-btn:hover{background:var(--dsw-alias-interactive-bg-hover)}",".cm-btn.primary{background:var(--dsw-alias-state-business-primary);border-color:transparent;color:var(--dsw-alias-label-primary-inverted)}",".cm-btn.primary:hover{opacity:0.88;background:var(--dsw-alias-state-business-primary)}",".cm-btn.danger{color:var(--dsw-alias-state-error-primary)}",".cm-btn.small{padding:3px 10px;font-size:12px}",".cm-msg{font-size:12px;line-height:18px;padding:8px 12px;border-radius:8px;border:1px solid var(--dsw-alias-border-l1)}",".cm-msg.ok{color:var(--dsw-alias-state-success-primary)}",".cm-msg.err{color:var(--dsw-alias-state-error-primary)}",".cm-hint{font-size:12px;color:var(--dsw-alias-label-tertiary)}",".cm-budget{border:1px solid var(--dsw-alias-border-l1);border-radius:12px;padding:14px 16px;background:var(--dsw-alias-bg-layer-1);display:flex;flex-direction:column;gap:10px}",".cm-peak-alert{position:fixed;z-index:9999;width:340px;max-width:calc(100vw - 32px);padding:16px;border-radius:14px;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);box-shadow:0 14px 36px rgba(0,0,0,.22);display:flex;flex-direction:column;gap:8px;font-size:12px;animation:cm-peak-alert-in .22s cubic-bezier(.2,.8,.2,1)}",".cm-peak-alert.cm-peak-alert-corner{right:20px;bottom:20px}",".cm-peak-alert.cm-peak-alert-center{top:50%;left:50%;transform:translate(-50%,-50%);animation-name:cm-peak-alert-in-center}",".cm-peak-alert-peak{border-top:3px solid var(--dsw-alias-state-warn-primary)}",".cm-peak-alert-offpeak{border-top:3px solid var(--dsw-alias-state-info-primary,#3b82f6)}",".cm-peak-alert-badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.4px;text-transform:uppercase}",'.cm-peak-alert-badge::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:0 0 0 4px color-mix(in srgb,currentColor 16%,transparent)}',".cm-peak-alert-peak .cm-peak-alert-badge{color:var(--dsw-alias-state-warn-primary)}",".cm-peak-alert-offpeak .cm-peak-alert-badge{color:var(--dsw-alias-state-info-primary,#3b82f6)}",".cm-peak-alert-title{font-size:14px;font-weight:600;color:var(--dsw-alias-label-primary)}",".cm-peak-alert-body{color:var(--dsw-alias-label-secondary);line-height:1.55}",".cm-peak-alert-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:2px}",".cm-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}","@keyframes cm-peak-alert-in{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}","@keyframes cm-peak-alert-in-center{from{opacity:0;transform:translate(-50%,calc(-50% + 10px))}to{opacity:1;transform:translate(-50%,-50%)}}",".cm-budget-head{display:flex;align-items:center;justify-content:space-between;gap:8px}",".cm-budget-bar{height:8px;border-radius:999px;background:var(--dsw-alias-bg-layer-3);overflow:hidden}",".cm-budget-fill{height:100%;border-radius:999px;background:var(--dsw-alias-state-business-primary);transition:width .3s ease}",".cm-budget-fill.warn{background:var(--dsw-alias-state-warn-primary)}",".cm-budget-fill.over{background:var(--dsw-alias-state-error-primary)}",".cm-ug{display:flex;flex-direction:column;gap:12px}",".cm-ug-total{font-size:13px;color:var(--dsw-alias-label-primary)}",".cm-ug-grid{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,auto);gap:3px;width:100%}",".cm-ug-cell{width:100%;aspect-ratio:1/1;border-radius:3px;box-sizing:border-box;background:color-mix(in srgb,var(--dsw-alias-label-primary) 8%,transparent);border:1px solid var(--dsw-alias-border-l1)}",".cm-ug-cell.l1{background:color-mix(in srgb,var(--dsw-alias-state-business-primary) 25%,var(--dsw-alias-bg-layer-3));border-color:transparent}",".cm-ug-cell.l2{background:color-mix(in srgb,var(--dsw-alias-state-business-primary) 50%,var(--dsw-alias-bg-layer-3));border-color:transparent}",".cm-ug-cell.l3{background:color-mix(in srgb,var(--dsw-alias-state-business-primary) 75%,var(--dsw-alias-bg-layer-3));border-color:transparent}",".cm-ug-cell.l4{background:var(--dsw-alias-state-business-primary);border-color:transparent}",".cm-ug-cell.today{outline:1px solid var(--dsw-alias-label-secondary);outline-offset:1px}",".cm-ug-months{display:grid;grid-auto-flow:column;gap:3px;width:100%;font-size:10px;color:var(--dsw-alias-label-tertiary);margin-top:4px}",".cm-ug-monthc{white-space:nowrap}",".cm-budget-line{font-size:13px;color:var(--dsw-alias-label-secondary)}",".cm-budget-line.over{color:var(--dsw-alias-state-error-primary)}",".cm-peak-strip{display:flex;align-items:center;gap:6px;margin-top:4px;min-width:0}",".cm-peak-track{position:relative;display:flex;flex:1;height:6px;min-width:0;border-radius:999px;overflow:hidden;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-3)}",".cm-peak-segment{height:100%;flex:1}",".cm-peak-high{background:#ff9800}",".cm-peak-low{background:var(--dsw-alias-state-business-primary)}",".cm-peak-marker{position:absolute;top:0;left:50%;width:2px;height:100%;background:var(--dsw-alias-bg-base);box-shadow:0 0 0 1px var(--dsw-alias-label-tertiary);transform:translateX(-50%);transition:left .4s ease;z-index:2}",".cm-peak-chip{font-size:11px;font-weight:600;line-height:1.2;white-space:nowrap;color:var(--dsw-alias-label-secondary)}",".cm-peak-strip.peak .cm-peak-chip{color:#ff9800}",".cm-peak-strip.off .cm-peak-chip{color:var(--dsw-alias-state-business-primary)}",".cm-peak-strip.weekend .cm-peak-chip{color:#34a853}",".cm-peak-classic{position:relative;display:flex;flex-direction:column;gap:5px;margin-top:6px;min-width:0}",".cm-peak-classic .cm-peak-track{flex:none;height:8px}",".cm-peak-classic-marker{position:absolute;top:0;left:50%;width:4px;height:12px;background:var(--dsw-alias-bg-base);border:1.5px solid #ff9800;box-shadow:0 0 0 1px var(--dsw-alias-bg-base),0 0 0 2px var(--dsw-alias-label-tertiary);transform:translateX(-50%);transition:left .4s ease;z-index:2;border-radius:2px}",'.cm-peak-classic-marker::after{content:"";position:absolute;top:-7px;left:50%;transform:translateX(-50%);border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid #ff9800}',".cm-peak-classic.off .cm-peak-classic-marker{border-color:var(--dsw-alias-state-business-primary)}",".cm-peak-classic.off .cm-peak-classic-marker::after{border-top-color:var(--dsw-alias-state-business-primary)}",".cm-peak-classic-chip{align-self:flex-start;font-size:11px;font-weight:600;line-height:1.4;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:999px;padding:2px 8px;white-space:nowrap;color:var(--dsw-alias-label-secondary)}",".cm-peak-classic.peak .cm-peak-classic-chip{color:#ff9800}",".cm-peak-classic.off .cm-peak-classic-chip{color:var(--dsw-alias-state-business-primary)}",".cm-peak-classic.weekend .cm-peak-classic-chip{color:#34a853}",".cm-peak-classic.weekend .cm-peak-classic-marker{border-color:#34a853}",".cm-peak-classic.weekend .cm-peak-classic-marker::after{border-top-color:#34a853}",".cm-peak-rail{display:flex;flex-direction:column;align-items:center;gap:3px;width:40px;box-sizing:border-box}",".cm-peak-rail-track{position:relative;display:flex;flex-direction:column;width:6px;height:56px;border-radius:999px;overflow:hidden;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-3)}",".cm-peak-rail-segment{width:100%;flex:1}",".cm-peak-rail-high{background:#ff9800}",".cm-peak-rail-low{background:var(--dsw-alias-state-business-primary)}",".cm-peak-rail-marker{position:absolute;left:0;top:50%;width:100%;height:2px;background:var(--dsw-alias-bg-base);box-shadow:0 0 0 1px var(--dsw-alias-label-tertiary);transform:translateY(-50%);transition:top .4s ease;z-index:2}",".cm-peak-rail-label{font-size:10px;font-weight:600;line-height:1.2;white-space:nowrap;color:var(--dsw-alias-label-secondary)}",".cm-peak-rail.peak .cm-peak-rail-label{color:#ff9800}",".cm-peak-rail.off .cm-peak-rail-label{color:var(--dsw-alias-state-business-primary)}",".cm-peak-rail.weekend .cm-peak-rail-label{color:#34a853}",".cm-peak-rail-classic{display:flex;flex-direction:column;align-items:center;gap:3px;width:40px;box-sizing:border-box}",".cm-peak-rail-classic-track{position:relative;display:flex;flex-direction:column;width:14px;height:56px;border-radius:999px;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-3)}",".cm-peak-rail-classic-segment{position:relative;width:100%;flex:1;overflow:hidden}",".cm-peak-rail-classic-segment.peak{background:#ff9800;border-radius:999px 999px 0 0}",".cm-peak-rail-classic-segment.off{background:var(--dsw-alias-state-business-primary);border-radius:0 0 999px 999px}",".cm-peak-rail-classic-marker{position:absolute;left:50%;top:50%;width:12px;height:4px;background:var(--dsw-alias-bg-base);border:1.5px solid #ff9800;box-shadow:0 0 0 1px var(--dsw-alias-bg-base),0 0 0 2px var(--dsw-alias-label-tertiary);transform:translate(-50%,-50%);transition:top .4s ease;z-index:2;border-radius:2px}",".cm-peak-rail-classic.off .cm-peak-rail-classic-marker{border-color:var(--dsw-alias-state-business-primary)}",".cm-peak-rail-classic-label{font-size:10px;font-weight:600;line-height:1.2;white-space:nowrap}",".cm-peak-rail-classic.peak .cm-peak-rail-classic-label{color:#ff9800}",".cm-peak-rail-classic.off .cm-peak-rail-classic-label{color:var(--dsw-alias-state-business-primary)}",".cm-peak-rail-classic.weekend .cm-peak-rail-classic-marker{border-color:#34a853}",".cm-peak-rail-classic.weekend .cm-peak-rail-classic-label{color:#34a853}",".cm-grid-group{grid-column:1 / -1;margin-top:8px;font-size:12px;font-weight:600;color:var(--dsw-alias-label-tertiary);border-bottom:1px solid var(--dsw-alias-border-l1);padding-bottom:4px}",".cm-grid-group:first-child{margin-top:0}",".cm-peak-preview{margin-top:8px}",".cm-toggle-btn{background:none;border:none;padding:0;font-size:12px;font-weight:600;color:var(--dsw-alias-state-business-primary);cursor:pointer}",".cm-toggle-btn:hover{text-decoration:underline}",".cm-collapsed-note{margin-top:4px}",".cm-catalog-vendor{margin-top:10px;font-size:12px;font-weight:600;color:var(--dsw-alias-label-tertiary);border-bottom:1px solid var(--dsw-alias-border-l1);padding-bottom:2px;display:flex;align-items:center;justify-content:space-between;gap:8px}",".cm-vendor-toggle{cursor:pointer;user-select:none}",".cm-vendor-toggle:hover{color:var(--dsw-alias-label-secondary)}",".cm-vendor-display{display:inline-flex;align-items:center;gap:4px;font-weight:400;font-size:11px;color:var(--dsw-alias-label-tertiary);white-space:nowrap}",".cm-catalog-family{margin:6px 0 2px;font-size:11px;font-weight:600;color:var(--dsw-alias-label-tertiary)}",".cm-catalog-row{display:flex;align-items:center;gap:8px;padding:4px 0;border-top:1px solid var(--dsw-alias-border-l1);font-size:12px}",".cm-catalog-mounted{display:flex;flex-direction:column;gap:4px;padding:6px 0;border-top:1px solid var(--dsw-alias-border-l1)}",".cm-catalog-id{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}",".cm-catalog-price{color:var(--dsw-alias-label-secondary);white-space:nowrap;font-size:11px}",".cm-catalog-tag{font-size:10px;padding:1px 6px;border-radius:999px;border:1px solid var(--dsw-alias-state-business-primary);color:var(--dsw-alias-state-business-primary);white-space:nowrap}",".cm-mstats-tabs{display:flex;gap:8px;margin-bottom:8px}",".cm-mstats-tab{background:none;border:1px solid var(--dsw-alias-border-l1);border-radius:999px;padding:2px 12px;font-size:12px;color:var(--dsw-alias-label-secondary);cursor:pointer}",".cm-mstats-tab.active{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-alias-bg-base);font-weight:600}",".cm-mstats-h{margin:10px 0 4px;font-size:12px;font-weight:600;color:var(--dsw-alias-label-secondary)}",".cm-mstats-row{display:grid;grid-template-columns:minmax(90px,170px) 1fr auto;gap:8px;align-items:center;font-size:11px;line-height:1.7}",".cm-mstats-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-secondary)}",".cm-mstats-barbg{position:relative;height:10px;border-radius:999px;background:var(--dsw-alias-bg-layer-3);overflow:hidden;display:flex}",".cm-mstats-bar{height:100%;min-width:0}",".cm-mstats-bar.cost{background:#ff9800;border-radius:999px}",".cm-mstats-bar.hit{background:#34a853;border-radius:999px}",".cm-mstats-bar.value{background:#a142f4;border-radius:999px}",".cm-mstats-seg{height:100%;min-width:0}",".cm-mstats-seg.in{background:var(--dsw-alias-state-business-primary)}",".cm-mstats-seg.cache{background:#ff9800}",".cm-mstats-seg.out{background:#34a853}",".cm-mstats-val{white-space:nowrap;color:var(--dsw-alias-label-secondary)}",".cm-mstats-legend{display:flex;gap:12px;font-size:10px;color:var(--dsw-alias-label-tertiary);margin:2px 0 4px}",".cm-mstats-dot{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:3px}",".cm-mstats-note{margin-top:10px;font-size:10px;line-height:1.6;color:var(--dsw-alias-label-tertiary)}",".cm-match-row{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:12px;flex-wrap:wrap}",".cm-match-row .cm-input{flex:1;min-width:160px}",".cm-budget-controls{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:12px}",".cm-bbox{border:1px solid var(--dsw-alias-border-l1);border-radius:12px;padding:8px 10px;background:var(--dsw-alias-bg-layer-1);display:flex;flex-direction:column;gap:6px;min-width:148px;box-sizing:border-box}",".cm-bbox.rail{padding:6px;min-width:0;width:40px;align-items:center;justify-content:center;border-radius:10px}",".cm-bbox.warn{border-color:var(--dsw-alias-state-warn-primary)}",".cm-bbox.over{border-color:var(--dsw-alias-state-error-primary)}",".cm-bbox-head{display:flex;align-items:center;justify-content:space-between;gap:8px}",".cm-bbox-label{font-size:12px;font-weight:600;color:var(--dsw-alias-label-primary)}",".cm-bbox-pct{font-size:12px;font-weight:600;color:var(--dsw-alias-label-primary)}",".cm-bbox.warn .cm-bbox-pct{color:var(--dsw-alias-state-warn-primary)}",".cm-bbox.over .cm-bbox-pct{color:var(--dsw-alias-state-error-primary)}",".cm-bbox-bar{height:6px;border-radius:999px;background:var(--dsw-alias-bg-layer-3);overflow:hidden}",".cm-bbox-bar.segments{display:flex;height:8px}",".cm-bbox-bar.segments .cm-bbox-fill{flex:none;border-radius:0;height:100%}",".cm-bbox-bar.segments .cm-bbox-fill:first-child{border-radius:999px 0 0 999px}",".cm-bbox-bar.segments .cm-bbox-seg-today{flex:none;height:100%;background:#ff9800}",".cm-bbox-bar.segments .cm-bbox-seg-spent{flex:none;height:100%;background:var(--dsw-alias-interactive-bg-hover);border-radius:0 999px 999px 0}",".cm-bbox-bar.segments.rev .cm-bbox-fill{border-radius:0 999px 999px 0}",".cm-bbox-bar.segments.rev .cm-bbox-fill:first-child{border-radius:999px 0 0 999px}",".cm-bbox-bar.segments.rev .cm-bbox-fill:last-child{border-radius:0 999px 999px 0}",".cm-bbox-bar.segments.rev .cm-bbox-seg-today:first-child{border-radius:999px 0 0 999px}",".cm-bbox-bar.segments.rev .cm-bbox-seg-today:last-child{border-radius:0 999px 999px 0}",".cm-bbox-bar.segments.rev .cm-bbox-seg-spent{border-radius:0}",".cm-bbox-bar.segments.rev .cm-bbox-seg-spent:last-child{border-radius:0 999px 999px 0}",".cm-dir-row{display:flex;align-items:center;gap:8px;margin-top:6px}",".cm-dir-label{flex:1 1 40%;font-size:12px;color:var(--dsw-alias-label-secondary)}",".cm-dir-row .cm-input{flex:1 1 60%;width:auto}",".cm-bbox-fill{height:100%;border-radius:999px;background:var(--dsw-alias-state-business-primary)}",".cm-bbox-pct.cm-bal-amt{color:var(--dsw-alias-state-business-primary)}",".cm-bal-link{flex:none;display:inline-flex;align-items:center;padding:1px 5px;border-radius:4px;font-size:12px;line-height:16px;color:var(--dsw-alias-label-tertiary);text-decoration:none;outline:none}",".cm-bal-link:hover{color:var(--dsw-alias-brand-primary);background:var(--dsw-alias-interactive-bg-hover)}",".cm-bal-link:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-brand-primary)}",".cm-bbox.warn .cm-bbox-fill{background:var(--dsw-alias-state-warn-primary)}",".cm-bbox.over .cm-bbox-fill{background:var(--dsw-alias-state-error-primary)}",".cm-bbox-line{font-size:12px;color:var(--dsw-alias-label-tertiary)}",".cm-bbox-rail{font-size:11px;font-weight:600;color:var(--dsw-alias-label-primary)}",".cm-bbox.warn .cm-bbox-rail{color:var(--dsw-alias-state-warn-primary)}",".cm-bbox.over .cm-bbox-rail{color:var(--dsw-alias-state-error-primary)}",".cm-bbox-pair{display:flex;flex-direction:column;gap:0;padding:2px 10px}",".cm-bbox-pair .cm-bbox-section{display:flex;flex-direction:column;gap:4px;padding:4px 0}",".cm-bbox-pair .cm-bbox-bar{height:4px}",".cm-bbox-divider{height:1px;background:var(--dsw-alias-border-l1);margin:0}",".cm-bbox-section.warn .cm-bbox-pct{color:var(--dsw-alias-state-warn-primary)}",".cm-bbox-section.over .cm-bbox-pct{color:var(--dsw-alias-state-error-primary)}",".cm-bbox-section.warn .cm-bbox-fill{background:var(--dsw-alias-state-warn-primary)}",".cm-bbox-section.over .cm-bbox-fill{background:var(--dsw-alias-state-error-primary)}",".cm-bbox.clickable,.cm-foot.clickable{cursor:pointer}",".cm-bbox.clickable:hover{border-color:var(--dsw-alias-state-business-primary)}",".cm-bbox.clickable:focus-visible,.cm-foot.clickable:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:1px}","@keyframes cm-click-refresh-pulse{0%,100%{opacity:.55}50%{opacity:1}}",".cm-bbox.clickable.busy,.cm-foot.clickable.busy{animation:cm-click-refresh-pulse 1.1s ease-in-out infinite}",".cm-mm{padding:8px 10px;gap:4px}",".cm-mm-title{font-size:12px;font-weight:600;color:var(--dsw-alias-label-primary)}",".cm-mm-row{display:flex;align-items:center;gap:8px;padding:2px 0}",".cm-mm-row .cm-bbox-label{flex:none;width:22px;font-weight:400;color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums}",".cm-mm-row .cm-bbox-bar{flex:1;min-width:0;height:6px}",".cm-mm-row .cm-bbox-pct{flex:none;min-width:2.4em;text-align:right;font-variant-numeric:tabular-nums}",".cm-mm-row.warn .cm-bbox-label,.cm-mm-row.warn .cm-bbox-pct{color:var(--dsw-alias-state-warn-primary)}",".cm-mm-row.over .cm-bbox-label,.cm-mm-row.over .cm-bbox-pct{color:var(--dsw-alias-state-error-primary)}",".cm-mm-row.warn .cm-bbox-fill{background:var(--dsw-alias-state-warn-primary)}",".cm-mm-row.over .cm-bbox-fill{background:var(--dsw-alias-state-error-primary)}",".cm-mm-row.wide .cm-bbox-label{width:auto;max-width:64px;flex:0 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}",".cm-mm-row.wide .cm-mm-text{flex:1;min-width:0;font-size:12px;color:var(--dsw-alias-label-secondary);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}",".cm-bal-line{font-size:13px;color:var(--dsw-alias-label-secondary)}",".cm-bal-line.warn{color:var(--dsw-alias-state-warning-primary,#b45309)}",".cm-bal-line.err,.cm-bal-err{color:var(--dsw-alias-state-error-primary)}",".cm-footer-stack{display:flex;flex-direction:column;gap:6px;width:100%;align-items:stretch;box-sizing:border-box}",".cm-footer-stack.rail{align-items:center}",".cm-footer-stack .cm-bbox{width:100%;min-width:0}",".cm-footer-stack .cm-foot{width:100%;box-sizing:border-box}","@media (max-width:640px){.cm-cards{grid-template-columns:1fr}.cm-grid{grid-template-columns:1fr}.cm-budget-controls{grid-template-columns:1fr}}"].join(`
|
|
3
|
-
`),ut="dsh-cost-meter/client.css";if(typeof document<"u"&&document.querySelector("style[data-plugin-css="+JSON.stringify(ut)+"]")===null){const t=document.createElement("style");t.dataset.plugin="dsh-cost-meter",t.dataset.pluginCss=ut,t.textContent=Yt,document.head.appendChild(t)}const he={zh:{sessionCostTitle:"\u672C\u4F1A\u8BDD\u8D39\u7528(\u6309\u6BCF\u6B21\u8C03\u7528\u5B9E\u9645\u65F6\u523B\u7CBE\u786E\u8BA1\u8D39)",sessionDetailTokens:"\u8F93\u5165 {input} \xB7 \u7F13\u5B58 {cache} \xB7 \u8F93\u51FA {output}",sessionDetailCache:"\u7F13\u5B58:\u8BFB {read} \xB7 \u5199 {write}(\u5199\u5165\u6309\u547D\u4E2D\u4EF7\u8BA1\u8D39)",cost:"\u8D39\u7528 {amount}",sessionLine:"\u672C\u4F1A\u8BDD {amount} \xB7 \u8F93\u5165 {input} \xB7 \u7F13\u5B58 {cache} \xB7 \u8F93\u51FA {output}",balanceQueryFailed:"\u4F59\u989D\u67E5\u8BE2\u5931\u8D25:{message}",unknownError:"\u672A\u77E5\u9519\u8BEF",balance:"\u4F59\u989D",queryFailed:"\u67E5\u8BE2\u5931\u8D25",balanceTitle:"DeepSeek \u5F00\u653E\u5E73\u53F0\u8D26\u6237\u4F59\u989D",reconcileLabel:"\u5B98\u65B9\u4F59\u989D\u53D8\u52A8\u4E0E\u672C\u5730\u8D26\u672C\u4EA4\u53C9\u5BF9\u8D26(\u504F\u5DEE\u8D85\u9608\u65F6\u63D0\u793A)",totalBalance:"\u603B\u4F59\u989D {amount}",grantedToppedUp:"\u8D60\u9001 {granted} \xB7 \u5145\u503C {toppedUp}",updatedAt:"\u66F4\u65B0\u65F6\u95F4 {time}",budgetOf:"\u9884\u7B97({period})",usedOf:"\u5DF2\u7528 {used} / {amount}",todayShare:"\u4ECA\u65E5 {amount} \xB7 \u5360\u9884\u7B97 {pct}",monthTotal:"\u672C\u6708 {month} \xB7 \u7D2F\u8BA1 {total}",budget:"\u9884\u7B97",todayCostTitle:"\u4ECA\u65E5\u8D39\u7528(\u6309\u5B98\u65B9\u4EF7\u683C\u7CBE\u786E\u8BA1\u8D39)",callsTokens:"\u8C03\u7528 {calls} \u6B21 \xB7 \u8F93\u5165 {input} \xB7 \u7F13\u5B58 {cache} \xB7 \u8F93\u51FA {output}",monthCost:"\u672C\u6708 {amount}",totalCost:"\u7D2F\u8BA1 {amount}",today:"\u4ECA\u65E5",periodDay:"\u4ECA\u65E5",periodMonth:"\u672C\u6708",periodAll:"\u7D2F\u8BA1",periodCustom:"\u81EA\u5B9A\u4E49",periodCustomRange:"\u81EA\u5B9A\u4E49\u533A\u95F4",noHistory:"\u6682\u65E0\u5386\u53F2\u8BB0\u5F55\u3002\u5F00\u59CB\u5BF9\u8BDD\u540E,\u8D39\u7528\u5C06\u6309\u5929\u6C47\u603B\u5728\u8FD9\u91CC\u3002",colDate:"\u65E5\u671F",colCalls:"\u8C03\u7528",colInTok:"\u8F93\u5165 tok",colCacheTok:"\u7F13\u5B58 tok",colOutTok:"\u8F93\u51FA tok",colCost:"\u8D39\u7528",noSessionsToday:"\u4ECA\u65E5\u6682\u65E0\u4F1A\u8BDD\u8BB0\u5F55\u3002",colSession:"\u4F1A\u8BDD",enableBudget:"\u542F\u7528\u9884\u7B97",budgetAmountLabel:"\u9884\u7B97\u989D\u5EA6(\u6309\u663E\u793A\u5E01\u79CD)",budgetPeriodLabel:"\u9884\u7B97\u5468\u671F",startDate:"\u5F00\u59CB\u65E5\u671F",endDate:"\u7ED3\u675F\u65E5\u671F(\u7559\u7A7A = \u4ECA\u65E5)",rangeText:"\u7EDF\u8BA1\u533A\u95F4:{range}",budgetDisabledNote:"\u672A\u542F\u7528\u9884\u7B97\u3002\u542F\u7528\u540E\u6B64\u5904\u663E\u793A\u9884\u7B97\u989D\u5EA6\u3001\u5DF2\u7528\u91D1\u989D\u4E0E\u5DF2\u7528\u767E\u5206\u6BD4(\u6309\u5F53\u524D\u5E01\u79CD\u6362\u7B97);\u5468\u671F\u53EF\u9009\u4ECA\u65E5/\u672C\u6708/\u7D2F\u8BA1\u6216\u81EA\u5B9A\u4E49\u65E5\u671F\u533A\u95F4\u3002",budgetStatus:"{period}\u9884\u7B97 {amount} \xB7 \u5DF2\u7528 {used} \xB7 {pct}%",overLimit:"(\u5DF2\u8D85\u51FA)",nearLimit:"(\u63A5\u8FD1\u4E0A\u9650)",legacyModel:"\u65E7\u6A21\u578B",defaultFallback:"\u9ED8\u8BA4\u56DE\u9000",remove:"\u79FB\u9664",tierBase:"\u57FA\u7840",tierOffPeak:"\u8C37\u65F6",tierPeak:"\u5CF0\u65F6",balanceRefreshFailed:"\u4F59\u989D\u5237\u65B0\u5931\u8D25:{message}",balanceLine:"\u603B\u4F59\u989D {total} \xB7 \u8D60\u9001 {granted} \xB7 \u5145\u503C {toppedUp} \xB7 \u66F4\u65B0\u4E8E {time}",balanceQueryFailedHint:"\u4F59\u989D\u67E5\u8BE2\u5931\u8D25:{message}(\u4F7F\u7528 \u8BBE\u7F6E\u2192\u6A21\u578B \u4E2D\u914D\u7F6E\u7684 API Key)",balanceNotQueried:"\u672A\u67E5\u8BE2\u4F59\u989D",accountBalance:"\u5B98\u65B9\u8D26\u6237\u4F59\u989D",refreshing:"\u5237\u65B0\u4E2D\u2026",refreshBalance:"\u5237\u65B0\u4F59\u989D",customBalanceTitle:"\u81EA\u5B9A\u4E49 Provider \u4F59\u989D",customBalanceConfigNote:"\u914D\u7F6E\u81EA\u5B9A\u4E49 Provider \u7684\u4F59\u989D\u67E5\u8BE2\u8BF7\u6C42\u4E0E\u89E3\u6790\u89C4\u5219\u3002\u8BF7\u6C42\u5934\u652F\u6301 {{ENV_VAR}} \u5360\u4F4D\u7B26,\u4ECE DSH \u51ED\u636E\u5E93\u6216\u73AF\u5883\u53D8\u91CF\u89E3\u6790;extract \u89C4\u5219\u652F\u6301\u70B9\u8DEF\u5F84\u3001\u6570\u5B57\u5E38\u91CF\u4E0E add / subtract / divide \u8FD0\u7B97(NewApi \u7B49 quota \u7AEF\u70B9\u7528 divide \u6309 500000 \u6362\u7B97\u7F8E\u5143)\u3002",customBalanceLabelZh:"\u4E2D\u6587\u540D\u79F0",customBalanceLabelEn:"\u82F1\u6587\u540D\u79F0",customBalanceUrl:"\u8BF7\u6C42 URL",customBalanceMethod:"\u8BF7\u6C42\u65B9\u6CD5",customBalanceHeaders:"\u8BF7\u6C42\u5934 (JSON)",customBalanceExtract:"\u89E3\u6790\u89C4\u5219 (JSON)",customBalanceDisplayLabel:"\u81EA\u5B9A\u4E49\u4F59\u989D\u663E\u793A\u4F4D\u7F6E",customBalanceRefreshInterval:"\u5237\u65B0\u95F4\u9694 (\u5206\u949F)",customBalanceUnitLabel:"\u4F59\u989D\u5E01\u79CD",balanceBarRemaining:"\u4F59\u989D {amount}",balanceBarToday:"\u5F53\u65E5\u5DF2\u7528 {amount}",balanceBarSpent:"\u5DF2\u7528 {amount}",balanceShowProgressBar:"\u4F59\u989D\u8FDB\u5EA6\u6761 (\u84DD=\u4F59\u989D,\u6A59=\u5F53\u65E5,\u7070=\u5DF2\u7528)",barDirectionsTitle:"\u8FDB\u5EA6\u6761\u65B9\u5411",barDirectionsHint:"\u5404\u7EC4\u8FDB\u5EA6\u6761\u53EF\u72EC\u7ACB\u9009\u62E9\u586B\u5145\u65B9\u5411:\u300C\u5269\u4F59\u65B9\u5411\u300D\u6EE1\u6761\u8D77\u6B65\u3001\u968F\u6D88\u8017\u9012\u51CF;\u300C\u5DF2\u7528\u65B9\u5411\u300D\u7A7A\u6761\u8D77\u6B65\u3001\u968F\u6D88\u8017\u586B\u6EE1\u3002",barDirection_balance:"\u4F59\u989D\u6761(\u5B98\u65B9/\u81EA\u5B9A\u4E49)",barDirection_budget:"\u9884\u7B97\u6761",barDirection_go:"Go \u989D\u5EA6\u6761",barDirection_plan:"Plan / Codex \u989D\u5EA6\u6761",barDirectionRemaining:"\u5269\u4F59\u65B9\u5411(\u6EE1 \u2192 \u7A7A)",barDirectionUsed:"\u5DF2\u7528\u65B9\u5411(\u7A7A \u2192 \u6EE1)",balanceBudgetCapLabel:"\u989D\u5EA6\u4E0A\u9650 (\u53EF\u9009)",balanceBudgetCapHint:"\u7559\u7A7A\u5219\u4F18\u5148\u4F7F\u7528 API \u8FD4\u56DE\u7684 max_budget;\u4ECD\u65E0\u5219\u663E\u793A\u6574\u6761\u6D45\u84DD",customBalanceInvalidJson:"JSON \u683C\u5F0F\u65E0\u6548",enable:"\u542F\u7528",customBalanceOpenConfig:"\u5C55\u5F00\u914D\u7F6E",customBalanceCollapseConfig:"\u6536\u8D77\u914D\u7F6E",customBalanceLine:"\u5269\u4F59 {remaining} \xB7 \u5DF2\u7528 {spend} / \u989D\u5EA6 {maxBudget} \xB7 \u66F4\u65B0\u4E8E {time}",customBalanceRemaining:"\u5269\u4F59 {amount}",refreshCustomBalance:"\u5237\u65B0\u81EA\u5B9A\u4E49\u4F59\u989D",customBalanceRefreshFailed:"\u81EA\u5B9A\u4E49\u4F59\u989D\u5237\u65B0\u5931\u8D25:{message}",goQuotaTitle:"OpenCode Go \u8BA2\u9605\u989D\u5EA6",goQuotaRowLabel:"Go",goWindowRolling:"\u6EDA\u52A8 5 \u5C0F\u65F6",goWindowWeekly:"\u672C\u5468",goWindowMonthly:"\u672C\u6708",goResetAt:"\u91CD\u7F6E:{time}",goQuotaPercent:"{percent}%",goQuotaFetchedAt:"\u66F4\u65B0\u4E8E {time}",goQuotaDisplayLabel:"Go \u989D\u5EA6\u663E\u793A\u4F4D\u7F6E",goQuotaRefreshIntervalLabel:"Go \u989D\u5EA6\u5237\u65B0\u95F4\u9694(\u5206\u949F)",goQuotaRefreshMinutesUnit:"\u5206\u949F",goQuotaKeyLabel:"OpenCode Go API Key(\u53EF\u9009,\u7559\u7A7A\u81EA\u52A8\u53D1\u73B0)",goMainLabel:"Go \u989D\u5EA6\u4E3B\u6863\u4F4D",goDetailLabel:"Go \u56FE\u6846\u8BE6\u7EC6\u4FE1\u606F",credentialConfiguredOf:"\u5DF2\u914D\u7F6E(\u6765\u6E90:{source})",credentialNotConfigured:"\u672A\u914D\u7F6E",credentialSave:"\u4FDD\u5B58",credentialClear:"\u6E05\u9664",credentialSaving:"\u4FDD\u5B58\u4E2D\u2026",credentialInputHint:"\u5BC6\u94A5\u53EA\u5199\u5165 DSH \u51ED\u636E\u5E93,\u4E0D\u4FDD\u5B58\u5728\u8D26\u672C\u91CC,\u4E5F\u4E0D\u4F1A\u56DE\u663E\u3002",secretMigrationPending:"\u4EE5\u4E0B\u5BC6\u94A5\u4ECD\u4EE5\u660E\u6587\u7559\u5728\u672C\u5730\u8D26\u672C,\u672A\u80FD\u81EA\u52A8\u8FC1\u5165\u51ED\u636E\u5E93\u3002\u8BF7\u5BFC\u51FA\u5BF9\u5E94\u73AF\u5883\u53D8\u91CF\u540E\u91CD\u542F:",credentialUnknownTarget:"\u672A\u77E5\u7684\u5BC6\u94A5\u76EE\u6807",budgetDetailLabel:"\u9884\u7B97\u56FE\u6846\u8BE6\u7EC6\u4FE1\u606F",refreshGoQuota:"\u5237\u65B0\u989D\u5EA6",goQuotaNotQueried:"\u672A\u67E5\u8BE2\u989D\u5EA6",enableGoQuota:"\u542F\u7528 OpenCode Go \u989D\u5EA6",codingPlansTitle:"Coding Plan \u989D\u5EA6",codingPlansNote:"\u6309\u5382\u5546\u67E5\u8BE2 coding plan \u8BA2\u9605\u989D\u5EA6(\u5404\u5BB6\u72EC\u7ACB\u5F00\u5173\u4E0E\u51ED\u636E)\u3002\u51ED\u636E\u53EA\u53D1\u9001\u5230\u5BF9\u5E94\u5382\u5546\u7684\u5B98\u65B9\u7AEF\u70B9;Key \u7559\u7A7A\u65F6\u6309\u73AF\u5883\u53D8\u91CF\u4E0E CLI \u767B\u5F55\u6001\u81EA\u52A8\u53D1\u73B0\u3002",codingPlansOpen:"\u5C55\u5F00 Coding Plan \u989D\u5EA6\u914D\u7F6E",codingPlansCollapse:"\u6298\u53E0 Coding Plan \u989D\u5EA6",codingPlansCollapsedHint:"\u9ED8\u8BA4\u6536\u8D77;\u5C55\u5F00\u540E\u53EF\u4E3A\u5404\u5BB6\u542F\u7528\u3001\u586B Key \u5E76\u67E5\u8BE2\u989D\u5EA6,\u5C55\u5F00/\u6536\u8D77\u72B6\u6001\u4F1A\u88AB\u8BB0\u4F4F\u3002",codingPlanAnthropic:"Anthropic(Claude Pro/Max)",codingPlanZai:"Z.ai / \u667A\u8C31 GLM Coding Plan",codingPlanMinimax:"MiniMax Token Plan",codingPlanMinimaxTitle:"MiniMax Plan",codingPlanRemain5h:"5h",codingPlanRemain7d:"7d",balanceRechargeLink:"\u6253\u5F00 DeepSeek \u5145\u503C\u9875(platform.deepseek.com/usage)",codexQuotaTitle:"ChatGPT (Codex) \u5468\u989D\u5EA6",enableCodingPlan:"\u542F\u7528\u989D\u5EA6\u67E5\u8BE2",codingPlanDisplayLabel:"\u663E\u793A\u4F4D\u7F6E",codingPlanDisplayNote:"\u9009\u300C\u4E3B\u9875\u9762\u4FA7\u8FB9\u680F / \u4E24\u8005\u300D\u540E,\u8BE5\u5382\u5546\u989D\u5EA6\u4EE5\u56FE\u6846\u5361\u7247\u5E38\u9A7B\u4FA7\u8FB9\u680F(\u4E0E Go \u989D\u5EA6/\u4F59\u989D\u540C\u6B3E,\u6536\u8D77\u7A84\u680F\u663E\u793A\u767E\u5206\u6BD4)\u3002",codingPlanKeyLabel:"API Key(\u53EF\u9009,\u7559\u7A7A\u81EA\u52A8\u53D1\u73B0)",codingPlanRefreshIntervalLabel:"\u5237\u65B0\u95F4\u9694(\u5206\u949F)",refreshCodingPlan:"\u5237\u65B0",codingPlanNotQueried:"\u672A\u67E5\u8BE2\u989D\u5EA6",codingPlanDisabledNote:"\u672A\u542F\u7528\u3002\u5F00\u542F\u540E\u5C06\u6309\u5237\u65B0\u95F4\u9694\u67E5\u8BE2\u8BE5\u5382\u5546\u7684 coding plan \u989D\u5EA6\u5E76\u663E\u793A\u5728\u8FD9\u91CC\u3002",goQuotaDisabledNote:"\u672A\u542F\u7528\u989D\u5EA6\u3002\u5F00\u542F\u540E\u5C06\u8BFB\u53D6 OpenCode Go \u8BA2\u9605\u989D\u5EA6(\u6EDA\u52A8 5 \u5C0F\u65F6 / \u672C\u5468 / \u672C\u6708)\u5E76\u663E\u793A\u5728\u4FA7\u8FB9\u680F\u56FE\u6846\u3001\u8BBE\u7F6E\u9875\u4E0E\u53F3\u4E0B\u89D2;\u6CA1\u6709 Go \u8BA2\u9605\u65F6\u4F1A\u5728\u8FD9\u91CC\u63D0\u793A\u539F\u56E0\u3002",cornerLabel:"\u53F3\u4E0B\u89D2\u663E\u793A(dock)",cornerEnabledLabel:"\u5728\u53F3\u4E0B\u89D2\u663E\u793A OpenCode Go \u989D\u5EA6 / \u9884\u7B97",cornerGoRolling:"\u6EDA\u52A8 5 \u5C0F\u65F6\u989D\u5EA6",cornerGoWeekly:"\u672C\u5468\u989D\u5EA6",cornerGoMonthly:"\u672C\u6708\u989D\u5EA6",cornerBudget:"\u9884\u7B97\u5DF2\u7528%",goShortRolling:"5h",goShortWeekly:"\u5468",goShortMonthly:"\u6708",budgetShort:"\u9884\u7B97",ledgerReadFailed:"\u8D26\u672C\u8BFB\u53D6\u5931\u8D25:{message}",readingLedger:"\u6B63\u5728\u8BFB\u53D6\u8D26\u672C\u2026",ledgerUnavailable:"\u8D26\u672C\u4E0D\u53EF\u7528",syncFailed:"\u540C\u6B65\u5931\u8D25:{message}",historyCleared:"\u5386\u53F2\u8BB0\u5F55\u5DF2\u6E05\u9664\u3002",clearFailed:"\u6E05\u9664\u5931\u8D25:{message}",peakOff:"\u5CF0\u8C37\u8BA1\u4EF7\u5DF2\u5173\u95ED,\u6309\u57FA\u7840\u4EF7\u683C\u8BA1\u8D39",peakNotEffective:"\u5C1A\u672A\u751F\u6548(\u751F\u6548\u65F6\u95F4:{time}),\u5F53\u524D\u6309\u57FA\u7840\u4EF7\u683C\u8BA1\u8D39",peakActive:"\u5F53\u524D\u5904\u4E8E\u5CF0\u65F6\u6BB5,\u6309\u5CF0\u65F6\u4EF7\u8BA1\u8D39",peakNotice:"\u5F53\u524D\u4E3A DeepSeek \u5CF0\u65F6\u9AD8\u4EF7\u65F6\u6BB5,\u6309\u5CF0\u65F6\u4EF7\u8BA1\u8D39",offPeakActive:"\u5F53\u524D\u5904\u4E8E\u8C37\u65F6\u6BB5,\u6309\u8C37\u65F6\u4EF7\u8BA1\u8D39",weekendAllOffPeak:"\u5468\u672B\u65F6\u6BB5\u2014\u2014\u5168\u8C37\u4EF7(\u5468\u516D\u53CA\u5468\u65E5\u5168\u5929\u6309\u8C37\u65F6\u4EF7\u8BA1\u8D39)",weekendChip:"\u5468\u672B\u65F6\u6BB5\u2014\u2014\u5168\u8C37\u4EF7",weekendShort:"\u5468\u672B\u5168\u8C37",weekendRuleNote:"2026-08-23(\u5468\u65E5)00:00 \u8D77,\u5468\u672B(\u5468\u516D\u53CA\u5468\u65E5,\u5317\u4EAC\u65F6\u95F4)\u5168\u5929\u4E0D\u518D\u533A\u5206\u5CF0\u8C37,\u7EDF\u4E00\u6309\u8C37\u65F6\u4EF7\u683C\u8BA1\u8D39;\u751F\u6548\u524D\u7684\u8D39\u7528\u4ECD\u6309\u539F\u89C4\u5219\u7ED3\u7B97\u3002",peakShort:"\u5CF0\u65F6",offPeakShort:"\u5E73\u4EF7",peakStyleLabel:"\u5CF0\u8C37\u65F6\u6BB5\u6761\u6837\u5F0F",peakStyleCompact:"\u7B80\u6D01(\u5355\u884C\u7D27\u51D1)",peakStyleClassic:"\u7ECF\u5178(\u5206\u6BB5\u4E0E\u80F6\u56CA\u82AF\u7247)",peakAlertLabel:"\u5CF0/\u8C37\u5207\u6362\u524D\u5F39\u7A97\u63D0\u9192",peakAlertAheadLabel:"\u63D0\u524D\u63D0\u9192(\u5206\u949F,1-30)",peakAlertTargetLabel:"\u63D0\u9192\u7C7B\u578B",peakAlertTargetPeak:"\u8FDB\u5165\u5CF0\u65F6",peakAlertTargetOffPeak:"\u8FDB\u5165\u8C37\u65F6",peakAlertTargetBoth:"\u5CF0\u548C\u8C37",peakAlertTitlePeak:"\u5373\u5C06\u8FDB\u5165\u5CF0\u65F6",peakAlertTitleOffPeak:"\u5373\u5C06\u8FDB\u5165\u8C37\u65F6",peakAlertBody:"\u7EA6 {time} \u540E\u8BA1\u8D39\u6863\u4F4D\u5207\u6362\u4E3A{phase}\u4EF7,\u8BF7\u6CE8\u610F\u672C\u65F6\u6BB5\u8C03\u7528\u6210\u672C\u3002",peakAlertPhasePeak:"\u5CF0\u65F6",peakAlertPhaseOffPeak:"\u8C37\u65F6",peakAlertBtn:"\u77E5\u9053\u4E86",peakAlertBadgePeak:"\u5CF0\u4EF7\u63D0\u9192",peakAlertBadgeOffPeak:"\u8C37\u4EF7\u63D0\u9192",peakAlertPositionLabel:"\u5F39\u7A97\u4F4D\u7F6E",peakAlertPositionCorner:"\u53F3\u4E0B\u89D2",peakAlertPositionCenter:"\u5C4F\u5E55\u4E2D\u5FC3",peakAlertWebNotifyLabel:"\u540C\u6B65\u53D1\u9001\u7CFB\u7EDF\u901A\u77E5",peakAlertWebNotifyHint:"\u5F00\u5173\u540E\u8BF7\u5728\u6D4F\u89C8\u5668\u5730\u5740\u680F\u5141\u8BB8\u901A\u77E5\u6743\u9650,\u624D\u80FD\u5728\u9875\u9762\u6700\u5C0F\u5316/\u5207\u8D70\u65F6\u6536\u5230\u63D0\u9192\u3002",peakAlertPreviewLabel:"\u9884\u89C8\u5F39\u7A97",peakAlertPreviewPeak:"\u9884\u89C8 \u8FDB\u5165\u5CF0",peakAlertPreviewOffPeak:"\u9884\u89C8 \u8FDB\u5165\u8C37",peakAlertPreviewTag:"(\u9884\u89C8)",peakPanelTitle:"\u5CF0\u8C37\u8BA1\u4EF7\u4E0E\u63D0\u793A",peakNoticeHiddenHint:"\u63D0\u793A\u5DF2\u9690\u85CF:\u9700\u542F\u7528\u5CF0\u8C37\u8BA1\u4EF7\u5E76\u5F00\u542F\u300C\u5CF0\u65F6\u9AD8\u4EF7\u65F6\u6BB5\u663E\u8457\u63D0\u793A\u300D\u3002",groupGeneral:"\u5E38\u89C4",groupMoney:"\u91D1\u989D\u4E0E\u5E01\u79CD",groupSidebar:"\u4FA7\u8FB9\u680F\u663E\u793A",groupCorner:"\u53F3\u4E0B\u89D2\u89D2\u6807",groupDetail:"\u56FE\u6846\u8BE6\u7EC6\u4FE1\u606F",catalogTitle:"\u62D3\u5C55\u4EF7\u683C\u8868",catalogNote:"\u5185\u7F6E\u5404\u5382\u5546\u3001\u6309\u6A21\u578B\u5BB6\u65CF\u5206\u7C7B\u7684\u53C2\u8003\u4EF7\u683C\u76EE\u5F55(\u53EA\u8BFB)\u3002\u6302\u8F7D = \u628A\u6761\u76EE\u590D\u5236\u8FDB\u4E0A\u65B9\u53EF\u7F16\u8F91\u4EF7\u683C\u8868\u5E76\u53C2\u4E0E\u8BA1\u8D39;DeepSeek \u6A21\u578B\u53EF\u53D6\u6D88\u6302\u8F7D(\u56DE\u9000\u9ED8\u8BA4\u4EF7,\u76EE\u5F55\u4E2D\u4ECD\u53EF\u91CD\u65B0\u6302\u8F7D)\u3002",catalogOpen:"\u5C55\u5F00\u62D3\u5C55\u4EF7\u683C\u8868",catalogCollapse:"\u6536\u8D77\u62D3\u5C55\u4EF7\u683C\u8868",mountBtn:"\u6302\u8F7D",unmountBtn:"\u53D6\u6D88\u6302\u8F7D",mountedTag:"\u5DF2\u6302\u8F7D",catalogUnpriced:"\u672A\u6838\u4EF7",catalogDeepseekNote:"DeepSeek \u6A21\u578B\u652F\u6301\u5CF0\u8C37\u4E24\u6863;\u53D6\u6D88\u6302\u8F7D\u540E\u6309\u9ED8\u8BA4\u4EF7\u8BA1\u8D39\u4E14\u4E0D\u518D\u88AB\u81EA\u52A8\u5339\u914D\u547D\u4E2D\u3002",modelStatsTitle:"\u6309\u6A21\u578B\u7EDF\u8BA1(token \u4E0E\u8D39\u7528)",modelStatsToday:"\u4ECA\u65E5",modelStatsHistory:"\u8FD1 90 \u5929",modelStatsCostH:"\u8D39\u7528\u6392\u884C",modelStatsTokensH:"Token \u6D88\u8017",modelStatsHitH:"\u7F13\u5B58\u547D\u4E2D\u7387",modelStatsValueH:"\u6027\u4EF7\u6BD4 \xB7 \u6BCF\u7F8E\u5143 token \u6570",modelStatsInput:"\u8F93\u5165",modelStatsCache:"\u7F13\u5B58",modelStatsOutput:"\u8F93\u51FA",modelStatsEmpty:"\u8BE5\u65F6\u6BB5\u6682\u65E0\u7528\u91CF\u6570\u636E\u3002",modelStatsBlended:"\u7EFC\u5408\u5355\u4EF7 {price}/M",modelStatsNote:"\u53E3\u5F84:\u7F13\u5B58\u547D\u4E2D\u7387 = \u7F13\u5B58\u8BFB \xF7 (\u7F13\u5B58\u8BFB + \u975E\u7F13\u5B58\u8F93\u5165);\u7EFC\u5408\u5355\u4EF7 = \u8D39\u7528 \xF7 \u603B token \xD7 1M(USD/M tokens);\u6027\u4EF7\u6BD4 = \u603B token \xF7 \u8D39\u7528,\u8D8A\u9AD8\u8D8A\u597D;\u8D39\u7528\u4E3A\u8D26\u672C\u6309\u6BCF\u6B21\u8C03\u7528\u5B9E\u9645\u65F6\u523B\u8BA1\u8D39\u7684\u7F8E\u5143\u503C\u3002",modelStatsLegacy:"\u672A\u5206\u6A21\u578B(\u65E9\u671F\u6570\u636E \xB7 \u6309\u5F53\u65F6\u8BB0\u5F55\u8BA1\u8D39)",sessionLineSplit:"\u672C\u4F1A\u8BDD {amount}(API)\xB7 Plan \u7B49\u503C {planAmount} \xB7 \u8F93\u5165 {input} \xB7 \u7F13\u5B58 {cache} \xB7 \u8F93\u51FA {output}",costChipPlan:"\u8D39\u7528 {amount}(+Plan)",sessionDetailPlan:"Plan \u8BA2\u9605\u989D\u5EA6\u6D88\u8017(\u7B49\u503C){amount}",planStatsTitle:"Token Plan \u7528\u91CF\u7EDF\u8BA1(\u6BCF 1% \u4E0E\u6EE1\u7A97\u4F30\u7B97)",planStatsEmpty:"\u6682\u65E0\u5DF2\u542F\u7528\u7684 Coding Plan \u989D\u5EA6\u6570\u636E;\u5728\u300C\u989D\u5EA6\u300D\u6807\u7B7E\u542F\u7528\u5E76\u6210\u529F\u5237\u65B0\u540E,\u8FD9\u91CC\u4F1A\u663E\u793A\u5404\u7A97\u53E3\u7684\u6BCF 1% \u989D\u5EA6\u4E0E\u6EE1\u7A97\u7528\u91CF\u4F30\u7B97\u3002",planStatsWindow:"\u7A97\u53E3",planStatsPercent:"\u5DF2\u7528 %",planStatsLocal:"\u672C\u5468\u671F\u5B9E\u9645(\u672C\u5730\u8D26\u672C)",planStatsPer1:"\u6BCF 1% \u989D\u5EA6 \u2248",planStatsFull:"\u6EE1\u7A97 100% \u2248",planStatsResets:"\u91CD\u7F6E {time}",planStatsMethodSample:"\u91C7\u6837\u5DEE\u5206",planStatsMethodLive:"\u5F53\u524D\u7528\u91CF\u6298\u7B97",planStatsMethodNone:"\u6837\u672C\u4E0D\u8DB3",planStatsMethodSampleAt:"{method}(\u57FA\u51C6 {time})",planStatsConfidenceLow:"\u8BFB\u6570\u7CBE\u5EA6\u53D7\u9650",planStatsCurveTitle:"Plan \u7528\u91CF\u66F2\u7EBF(\u6309\u91C7\u6837\u533A\u95F4\u805A\u5408)",planStatsDaily:"\u6BCF\u65E5",planStatsWeekly:"\u6BCF\u5468",planStatsMonthly:"\u6BCF\u6708",planStatsCurveEmpty:"\u91C7\u6837\u533A\u95F4\u5C1A\u4E0D\u8DB3(\u81F3\u5C11\u4E24\u6B21\u6210\u529F\u5237\u65B0\u4E14\u767E\u5206\u6BD4\u6709\u53D8\u5316),\u66F2\u7EBF\u4F1A\u5728\u6301\u7EED\u4F7F\u7528\u540E\u9010\u6B65\u6210\u5F62\u3002",planStatsBarTip:"{date}:\u6EE1\u7A97\u4F30\u8BA1 \u2248 {full}(\u6BCF 1% \u2248 {per1})\xB7 \u5B9E\u9645 {tokens} / {cost} \xB7 {intervals} \u4E2A\u91C7\u6837\u533A\u95F4",planStatsNote:"\u53E3\u5F84:\u300C\u91D1\u989D\u300D\u5747\u4E3A\u6309\u76EE\u5F55 API \u4EF7\u6298\u7B97\u7684\u7B49\u503C\u7F8E\u5143\u2014\u2014\u8BA2\u9605\u6E20\u9053\u6D88\u8017\u7684\u662F\u5957\u9910\u989D\u5EA6,\u4E0D\u52A8\u771F\u91D1\u767D\u94F6,\u9884\u7B97/\u4ECA\u65E5\u8D39\u7528\u7B49\u91D1\u989D\u5C55\u793A\u53EA\u7EDF\u8BA1 API \u6E20\u9053\u3002\u672C\u9762\u677F\u7684\u300C\u672C\u5468\u671F\u5B9E\u9645(\u672C\u5730\u8D26\u672C)\u300D\u4E0E\u6BCF 1%/\u6EE1\u7A97\u4F30\u7B97\u53EA\u7EDF\u8BA1\u5728 dsh \u5185\u53D1\u8D77\u7684\u8C03\u7528\u2014\u2014\u5176\u5B83\u673A\u5668/CLI \u7684\u6D88\u8017\u4E0D\u8FDB\u672C\u5730\u8D26\u672C\u3002\u6BCF 1% \u4E0E\u6EE1\u7A97\u4F30\u7B97\u7531\u989D\u5EA6\u5237\u65B0\u91C7\u6837\u7684\u9996\u5C3E\u5DEE\u5206\u63A8\u7B97(\u8FDE\u7EED\u53EF\u4FE1\u6BB5\u5185\u4E2D\u95F4\u8BFB\u6570\u7684\u91CF\u5316\u8BEF\u5DEE\u4E24\u4E24\u62B5\u6D88);\u5404\u5BB6\u767E\u5206\u6BD4\u8BFB\u6570\u5B58\u5728\u4E2A\u4F4D\u7EA7\u91CF\u5316(\u663E\u793A 1% \u7684\u771F\u5B9E\u503C\u53EF\u80FD\u5728 0.5%~1.5%),\u5DEE\u5206\u8DE8\u5EA6\u4E0D\u8DB3 5 \u4E2A\u767E\u5206\u70B9\u65F6\u7ED3\u679C\u6CE2\u52A8\u8F83\u5927,\u65B9\u6CD5\u5217\u4F1A\u6807\u6CE8\u300C\u8BFB\u6570\u7CBE\u5EA6\u53D7\u9650\u300D\u3002\u6837\u672C\u8D85 7 \u5929\u6216\u4E0D\u8DB3\u65F6\u56DE\u9000\u300C\u672C\u5468\u671F\u5B9E\u9645 \xF7 \u5F53\u524D\u5DF2\u7528%\u300D\u6298\u7B97\u30025 \u5C0F\u65F6\u7A97\u4E3A\u6EDA\u52A8\u7A97,\u5468/\u6708\u6309\u672C\u5730\u65E5\u5386;\u7A97\u53E3\u8FB9\u754C\u6309\u5C0F\u65F6\u7C92\u5EA6\u5BF9\u9F50\u3002\u6CE8\u610F:\u670D\u52A1\u7AEF\u300C\u5DF2\u7528%\u300D\u7EDF\u8BA1\u8BE5\u8D26\u53F7\u5168\u90E8\u7528\u91CF,\u4E0E\u672C\u5730\u7EDF\u8BA1\u4E4B\u5DEE\u5373\u5176\u5B83\u6E20\u9053\u6D88\u8017\u2014\u2014\u540C\u4E00 Key \u5728\u522B\u5904\u4F7F\u7528\u65F6\u672C\u5730\u504F\u4F4E\u5C5E\u9884\u671F;\u90E8\u5206\u76EE\u5F55\u4EF7\u542B\u9650\u65F6\u4FC3\u9500(\u5982 gpt-5.6-sol \u81F3 2026-09-18 \u4E94\u6298)\u3002SCNet \u4E3A\u672C\u5730 Credits \u81EA\u4F30,\u4E0D\u53C2\u4E0E\u4F30\u7B97\u3002",billingClassLabel:"\u8BA1\u8D39\u65B9\u5F0F",billingClassPlan:"Plan \u8BA2\u9605",catalogDisplayLabel:"\u5728\u8D39\u7528\u8BBE\u7F6E\u76F4\u63A5\u663E\u793A",catalogDisplayHint:"\u53EA\u51B3\u5B9A\u8BE5\u6A21\u578B\u4EF7\u683C\u5361\u662F\u5426\u5728\u8D39\u7528\u8BBE\u7F6E\u300C\u4EF7\u683C\u8868\u300D\u533A\u76F4\u63A5\u663E\u793A,\u4E0D\u5F71\u54CD\u6302\u8F7D\u72B6\u6001\u4E0E\u8BA1\u8D39;\u4E0D\u76F4\u63A5\u663E\u793A\u65F6\u5DF2\u6302\u8F7D\u6A21\u578B\u5728\u62D3\u5C55\u4EF7\u683C\u8868\u5185\u5C55\u5F00\u5382\u5546\u540E\u53EF\u7F16\u8F91\u3002",priceTableDisplayHint:"\u5404\u6A21\u578B\u662F\u5426\u5728\u300C\u4EF7\u683C\u8868\u300D\u533A\u76F4\u63A5\u663E\u793A,\u53EF\u5728\u4E0B\u65B9\u62D3\u5C55\u4EF7\u683C\u8868\u4E2D\u9010\u6A21\u578B\u7528\u300C\u5728\u8D39\u7528\u8BBE\u7F6E\u76F4\u63A5\u663E\u793A\u300D\u5F00\u5173\u5207\u6362;DeepSeek \u6A21\u578B\u9ED8\u8BA4\u76F4\u63A5\u663E\u793A,\u7B2C\u4E09\u65B9\u6A21\u578B\u6302\u8F7D\u540E\u9ED8\u8BA4\u6536\u5165\u62D3\u5C55\u8868\u3002",catalogCustomModels:"\u624B\u52A8\u65B0\u589E\u6A21\u578B",priceMatchLabel:"\u672A\u77E5\u6A21\u578B\u540D\u81EA\u52A8\u5339\u914D",priceMatchAuto:"\u81EA\u52A8(\u53BB\u540E\u7F00 / \u524D\u7F00 / \u5BB6\u65CF\u76F8\u4F3C)",priceMatchExact:"\u4EC5\u7CBE\u786E\u5339\u914D",priceMatchNote:"\u81EA\u52A8\u5339\u914D\u987A\u5E8F:\u7CBE\u786E \u2192 \u624B\u52A8\u6307\u5B9A \u2192 \u53BB\u65E5\u671F/\u7248\u672C\u540E\u7F00 \u2192 \u524D\u7F00 \u2192 \u5BB6\u65CF\u76F8\u4F3C;\u672A\u547D\u4E2D\u65F6 DeepSeek \u56DE\u9000\u9ED8\u8BA4\u4EF7,\u5176\u4ED6 provider \u4E0D\u8BA1\u4EF7\u3002",unmatchedTitle:"\u6700\u8FD1\u51FA\u73B0\u4F46\u672A\u547D\u4E2D\u4EF7\u683C\u7684\u6A21\u578B",unmatchedHint:"\u6309\u5F53\u524D\u5339\u914D\u6A21\u5F0F\u672A\u547D\u4E2D\u4EF7\u683C\u6761\u76EE(\u542B\u8DE8\u5382\u5546\u5151\u5E95\u540E\u4ECD\u6309\u9ED8\u8BA4\u4EF7\u515C\u5E95\u7684);\u4E3A\u5176\u6307\u5B9A\u6761\u76EE\u5199\u5165\u624B\u52A8\u5339\u914D\u8986\u76D6,\u9009\u62E9\u300C\u9ED8\u8BA4\u4EF7\u300D\u5373\u56DE\u9000 DeepSeek \u9ED8\u8BA4\u4EF7\u3002\u672C\u5730\u63A8\u7406\u6765\u6E90(lmstudio / ollama / vLLM \u7B49)\u7684\u6A21\u578B\u5DF2\u81EA\u52A8\u6309\u96F6\u6D88\u8017\u5904\u7406;\u5982\u9700\u8BA1\u8D39,\u53EF\u5728\u6B64\u4E3A\u5176\u6307\u5B9A\u4EF7\u683C\u6761\u76EE\u3002",overrideTargetDefault:"DeepSeek \u9ED8\u8BA4\u4EF7",overrideRemove:"\u79FB\u9664",overrideTargetLocal:"\u672C\u5730\u6A21\u578B\uFF08\u96F6\u6D88\u8017\uFF09",matchedTitle:"\u672C\u6708\u5DF2\u547D\u4E2D\u4EF7\u683C\u7684\u6A21\u578B",matchedHint:"\u4EE5\u4E0B\u6A21\u578B\u5DF2\u81EA\u52A8\u547D\u4E2D\u4EF7\u683C\u6761\u76EE\u3002\u5728\u884C\u5185\u9009\u62E9\u76EE\u6807\u5373\u53EF\u6539\u6302\u5176\u5B83\u6761\u76EE,\u6216\u9009\u62E9\u300C\u672C\u5730\u6A21\u578B\uFF08\u96F6\u6D88\u8017\uFF09\u300D\u628A\u8BE5\u6A21\u578B\u6807\u8BB0\u4E3A\u672C\u5730\u6765\u6E90\u2014\u2014token \u7167\u5E38\u7EDF\u8BA1\u3001\u8D39\u7528\u6309 0 \u8BA1,\u5386\u53F2\u91D1\u989D\u5373\u65F6\u5F52\u96F6\u3002\u5199\u5165\u540E\u8BE5\u884C\u8F6C\u5165\u4E0A\u65B9\u624B\u52A8\u6307\u5B9A\u533A\u3002",matchedKeepAuto:"\u4FDD\u6301\u81EA\u52A8\u547D\u4E2D",overrideNone:"\u6682\u65E0\u624B\u52A8\u5339\u914D\u8986\u76D6\u3002",mountedSuffix:"\u5DF2\u6302\u8F7D(\u53C2\u4E0E\u8BA1\u8D39)",flatInput:"\u8F93\u5165",flatCached:"\u7F13\u5B58",flatOutput:"\u8F93\u51FA",deepseekMountedHeader:"DeepSeek \u4EF7\u683C\u8868(\u5DF2\u6302\u8F7D)",codingPlanKimi:"Kimi / Moonshot",codingPlanOpenrouter:"OpenRouter",codingPlanSiliconflow:"SiliconFlow \u7845\u57FA\u6D41\u52A8",codingPlanCommandcode:"CommandCode",codingPlanScnet:"SCNet \u8D85\u7B97\u4E92\u8054\u7F51 Token Plan",codingPlanVolcengine:"\u706B\u5C71\u65B9\u821F Volcano Ark Coding Plan",scnetPlanCreditsLabel:"\u6708\u5EA6 Credits \u989D\u5EA6(\u57FA\u7840 60,000 / \u6807\u51C6 240,000 / \u9AD8\u7EA7 600,000)",scnetPlanStartLabel:"\u8BA2\u9605\u8D77\u59CB\u65E5(\u53EF\u9009,\u683C\u5F0F YYYY-MM-DD;\u7559\u7A7A\u6309\u81EA\u7136\u6708)",scnetLocalNote:"SCNet \u65E0 API \u989D\u5EA6\u67E5\u8BE2\u7AEF\u70B9:\u6309\u5B98\u65B9 Credits \u62B5\u6263\u8868(2026-08-11 \u751F\u6548)\u7531\u672C\u5730\u8D26\u672C\u4F30\u7B97\u5F53\u524D\u8BA1\u8D39\u5468\u671F\u7528\u91CF,\u5B9E\u9645\u6D88\u8017\u4EE5\u63A7\u5236\u53F0\u8D26\u5355\u4E3A\u51C6;\u62B5\u6263\u8868\u8986\u76D6\u7684\u6A21\u578B\u81EA\u52A8\u6298\u7B97,\u5176\u4F59\u6A21\u578B\u4E0D\u8BA1\u5165\u3002",volcengineAccessKeyIdLabel:"\u706B\u5C71\u5F15\u64CE AccessKey ID",volcengineSecretAccessKeyLabel:"\u706B\u5C71\u5F15\u64CE SecretAccessKey",volcengineNote:"\u706B\u5C71\u65B9\u821F\u7BA1\u63A7\u9762\u9700 AK/SK \u7B7E\u540D(\u975E ARK_API_KEY Bearer):\u5728\u706B\u5C71\u5F15\u64CE\u63A7\u5236\u53F0 IAM \u521B\u5EFA\u5B50\u7528\u6237\u5E76\u6388\u4E88 ArkReadOnlyAccess + BillingCenterReadOnlyAccess,\u586B\u5199 AccessKeyID \u4E0E SecretAccessKey;\u4E5F\u53EF\u5728\u73AF\u5883\u53D8\u91CF\u5BFC\u51FA VOLC_ACCESSKEY / VOLC_SECRETKEY \u81EA\u52A8\u53D1\u73B0(\u5B98\u65B9 SDK \u7EA6\u5B9A);\u51ED\u636E\u4EC5\u53D1\u5F80 open.volcengineapi.com\u3002",volcengineAccessKeyPlaceholder:"AK...",volcengineSecretPlaceholder:"SK...",countdownHoursOnly:"{h}\u5C0F\u65F6",countdownHourMinute:"{h}\u5C0F\u65F6{m}\u5206",countdownMinute:"{m}\u5206\u949F",nextOffPeakIn:"{time}\u540E\u8FDB\u5165\u5E73\u4EF7",nextPeakIn:"{time}\u540E\u8FDB\u5165\u9AD8\u5CF0",peakSummary:"\u5CF0\u65F6\u6BB5(UTC):{windows};\u751F\u6548\u65F6\u95F4:{time}\u3002{status}",noPeakWindows:"\u672A\u914D\u7F6E\u5CF0\u8C37\u65F6\u6BB5\u3002{status}",unknown:"\u672A\u77E5",cardToday:"\u4ECA\u65E5\u8D39\u7528",cardMonth:"\u672C\u6708\u8D39\u7528",cardTotal:"\u7D2F\u8BA1\u8D39\u7528",cardTotalSub:"\u81EA\u8D26\u672C\u5EFA\u7ACB\u4EE5\u6765 \xB7 \u8C03\u7528 {calls} \u6B21",cardsFootnote:"\u53E3\u5F84\u8BF4\u660E:\u91D1\u989D\u4E3A\u6700\u8FD1\u4E00\u6B21\u843D\u76D8\u5FEB\u7167(2 \u79D2\u9632\u6296;\u6B63\u5E38\u5173\u95ED\u4F1A\u5148\u5F3A\u5236\u843D\u76D8\u518D\u9000\u51FA),\u4E0E\u5B98\u65B9\u5B9E\u65F6\u8D26\u5355\u5B58\u5728\u5206\u949F\u7EA7\u65F6\u5DEE\u5C5E\u9884\u671F;tokens \u5217\u4E3A\u8F93\u5165+\u8F93\u51FA+\u7F13\u5B58+\u63A8\u7406\u7684\u5408\u8BA1\u2014\u2014\u63A8\u7406 tokens \u7531 API \u5355\u72EC\u4E0A\u62A5\u4E14\u4E0D\u8BA1\u8D39(\u5B98\u65B9\u8D26\u5355\u5C06\u5176\u5E76\u5165\u300C\u8F93\u51FA\u300D\u5217\u5C55\u793A),\u5BF9\u8D26\u8BF7\u4EE5\u91D1\u989D\u4E3A\u51C6\u3002",timezoneHint:"\u65F6\u533A\u63D0\u793A:\u300C\u4ECA\u65E5/\u672C\u6708\u300D\u6309\u5BBF\u4E3B\u673A\u65F6\u533A {host} \u53D6\u65E5\u754C,\u4E0E\u5F53\u524D\u6D4F\u89C8\u5668({browser})\u4E0D\u540C\u2014\u2014\u5BBF\u4E3B\u673A\u8DE8\u65E5\u754C\u7684\u65F6\u523B\u4E0E\u672C\u5730\u4E0D\u4E00\u81F4,\u4F60\u672C\u5730\u5348\u591C\u540E\u7684\u8C03\u7528\u4F1A\u88AB\u8BB0\u5230\u524D\u4E00\u65E5(\u5E76\u975E\u6F0F\u8BA1;\u5B98\u65B9\u4F59\u989D\u5BF9\u8D26\u4E5F\u4F1A\u56E0\u6B64\u63D0\u793A\u504F\u5DEE)\u3002\u53EF\u5728\u5BBF\u4E3B\u673A\u4E0A\u4EE5\u672C\u5730\u65F6\u533A\u8FD0\u884C dsh \u4F7F\u4E24\u8005\u4E00\u81F4\u3002",todaySessions:"\u4ECA\u65E5\u4F1A\u8BDD",historyExpandHint:"\u70B9\u51FB\u65E5\u671F\u884C\u53EF\u5C55\u5F00\u5F53\u65E5\u4F1A\u8BDD\u660E\u7EC6",historySessionsLoading:"\u4F1A\u8BDD\u660E\u7EC6\u52A0\u8F7D\u4E2D\u2026",historyNoSessions:"\u8BE5\u65E5\u65E0\u4F1A\u8BDD\u660E\u7EC6(\u65E9\u671F\u6570\u636E\u6216\u4F1A\u8BDD\u65E5\u5FD7\u5DF2\u6E05\u7406)",historySessionsError:"\u4F1A\u8BDD\u660E\u7EC6\u52A0\u8F7D\u5931\u8D25",sessionRankTitle:"\u6309\u4F1A\u8BDD\u7EDF\u8BA1(\u5168\u90E8\u5386\u53F2)",sessionRankHint:"\u4E0D\u6309\u65E5\u671F\u5206\u7EC4,\u5168\u90E8\u5386\u53F2\u4F1A\u8BDD;\u6392\u5E8F\u4E0E\u6761\u6570\u53EF\u5207\u6362",sessionRankEmpty:"\u6682\u65E0\u4F1A\u8BDD\u6570\u636E",sessionRankLoading:"\u4F1A\u8BDD\u6392\u884C\u52A0\u8F7D\u4E2D\u2026",sessionRankError:"\u4F1A\u8BDD\u6392\u884C\u52A0\u8F7D\u5931\u8D25",sessionRankLimit:"\u663E\u793A\u6761\u6570",showSessionIdLabel:"\u4F1A\u8BDD\u5217\u8868\u9644\u663E\u4F1A\u8BDD ID",cardsTogglePlanTotal:"\u91D1\u989D\u542B Plan \u603B\u989D",cardsTogglePlanTotalHint:"\u5F00\u542F\u540E\u6240\u6709\u91D1\u989D\u6309\u542B Plan \u8BA2\u9605\u7B49\u503C\u7684\u603B\u8D39\u7528\u5C55\u793A;\u5173\u95ED(\u9ED8\u8BA4)\u4EC5\u8BA1\u771F\u91D1\u767D\u94F6 API \u6E20\u9053",hideOfficialBalanceLabel:"\u9690\u85CF\u5B98\u65B9\u8D26\u6237\u4F59\u989D(\u5F00\u542F\u540E\u4FA7\u8FB9\u680F\u4E0E\u8BBE\u7F6E\u9875\u4E0D\u518D\u663E\u793A\u5B98\u65B9\u4F59\u989D)",hideTodayCostLabel:"\u9690\u85CF\u4ECA\u65E5\u6D88\u8017\u91D1\u989D(\u5F00\u542F\u540E\u4FA7\u8FB9\u680F/\u9884\u7B97\u660E\u7EC6/\u6982\u89C8\u5361\u7247\u4E0D\u518D\u663E\u793A\u4ECA\u65E5\u8D39\u7528)",sessionRankSort:"\u6392\u5E8F",sessionSortCostDesc:"\u8D39\u7528 \u9AD8\u2192\u4F4E",sessionSortCostAsc:"\u8D39\u7528 \u4F4E\u2192\u9AD8",sessionSortTimeDesc:"\u65F6\u95F4 \u65B0\u2192\u65E7",sessionSortTimeAsc:"\u65F6\u95F4 \u65E7\u2192\u65B0",sessionSortRecent:"\u5B9E\u65F6\u987A\u5E8F",history:"\u5386\u53F2\u8BB0\u5F55",usageTitle:"Token \u7528\u91CF\u7EDF\u8BA1",usageTotal:"\u7D2F\u8BA1 {tokens} tokens \xB7 \u8F93\u5165 {input} \xB7 \u7F13\u5B58 {cache} \xB7 \u8F93\u51FA {output} \xB7 {calls} \u6B21\u8C03\u7528",usageDay:"{date}:\u5171 {tokens} tokens(\u8F93\u5165 {input} \xB7 \u7F13\u5B58 {cache} \xB7 \u8F93\u51FA {output})\xB7 {calls} \u6B21\u8C03\u7528 \xB7 {cost}",usageEmpty:"\u6682\u65E0\u5386\u53F2\u6570\u636E,\u5F00\u59CB\u5BF9\u8BDD\u540E\u6BCF\u65E5\u7528\u91CF\u4F1A\u6C47\u603B\u5728\u8FD9\u91CC",usageSectionLabel:"\u7528\u91CF",usagePositionLabel:"Token \u7528\u91CF\u7EDF\u8BA1\u4F4D\u7F6E",usagePositionCost:"\u8D39\u7528\u8BBE\u7F6E",usagePositionGeneral:"\u901A\u7528\u8BBE\u7F6E",usagePositionSection:"\u72EC\u7ACB\u5206\u8282(\u7528\u91CF)",displaySettings:"\u663E\u793A\u8BBE\u7F6E",tabOverview:"\u6982\u89C8",tabQuotas:"\u989D\u5EA6",tabUsage:"\u7528\u91CF",tabPricing:"\u4EF7\u683C",tabDisplay:"\u663E\u793A",historyDataTitle:"\u5386\u53F2\u6570\u636E",positionLabel:"\u4F1A\u8BDD\u8D39\u7528\u663E\u793A\u4F4D\u7F6E",positionDock:"\u8F93\u5165\u533A\u4E0B\u65B9",positionHeader:"\u4F1A\u8BDD\u6807\u9898\u680F",off:"\u5173\u95ED",quotaStripGroup:"\u8F93\u5165\u6846\u4E0A\u65B9\u989D\u5EA6\u6A2A\u6761",quotaStripEnable:"\u542F\u7528\u989D\u5EA6\u6A2A\u6761(\u8F93\u5165\u6846\u4E0A\u65B9\u4E00\u6761\u6A2A\u6392\u663E\u793A)",quotaStripShowBudget:"\u6A2A\u6761\u542B\u9884\u7B97\u5DF2\u7528%",quotaStripShowGo:"\u6A2A\u6761\u542B Go \u989D\u5EA6",quotaStripShowPlans:"\u6A2A\u6761\u542B Coding Plan \u989D\u5EA6",quotaStripNote:"\u6A2A\u6761\u60AC\u505C\u53EF\u89C1\u5404\u7A97\u53E3\u91CD\u7F6E\u65F6\u523B\u4E0E\u66F4\u65B0\u65F6\u95F4;\u65E0\u53EF\u7528\u989D\u5EA6\u6570\u636E\u65F6\u81EA\u52A8\u9690\u85CF\u3002",quotaStripGuideTitle:"\u65B0\u589E:\u8F93\u5165\u6846\u4E0A\u65B9\u989D\u5EA6\u6A2A\u6761",quotaStripGuideBody:"\u53EF\u4EE5\u5728\u8F93\u5165\u6846\u4E0A\u65B9\u7528\u4E00\u6761\u6A2A\u6761\u5B9E\u65F6\u67E5\u770B\u9884\u7B97\u4E0E\u591A\u5BB6\u8BA2\u9605\u989D\u5EA6(OpenCode Go / Coding Plan)\u7684\u7528\u91CF\u767E\u5206\u6BD4\u3002\u8981\u73B0\u5728\u5F00\u542F\u5417?\u53EF\u968F\u65F6\u5728\u300C\u8BBE\u7F6E \u2192 \u663E\u793A\u8BBE\u7F6E\u300D\u4E2D\u66F4\u6539\u3002",quotaStripGuideOn:"\u5F00\u542F\u6A2A\u6761",quotaStripGuideOff:"\u6682\u4E0D\u5F00\u542F",clickToRefresh:"\u70B9\u51FB\u7ACB\u5373\u5237\u65B0",balanceClickGuideTitle:"\u65B0\u589E:\u4F59\u989D\u56FE\u6846\u70B9\u51FB\u5237\u65B0",balanceClickGuideBody:"\u73B0\u5728\u70B9\u51FB\u4FA7\u8FB9\u680F\u7684\u5B98\u65B9\u4F59\u989D / \u81EA\u5B9A\u4E49\u4F59\u989D / Coding Plan \u56FE\u6846,\u5373\u53EF\u7ACB\u5373\u5237\u65B0\u6700\u65B0\u6570\u636E,\u65E0\u9700\u7B49\u5F85\u81EA\u52A8\u5237\u65B0\u95F4\u9694\u6216\u8FDB\u5165\u8BBE\u7F6E\u9875;\u5237\u65B0\u4E2D\u4F1A\u6709\u547C\u5438\u95EA\u70C1,\u5931\u8D25\u65F6\u4FDD\u6301\u539F\u503C\u5E76\u5728\u60AC\u505C\u63D0\u793A\u4E2D\u8BF4\u660E\u539F\u56E0\u3002",balanceClickGuideOk:"\u77E5\u9053\u4E86",sidebarLabel:"\u5F53\u65E5\u8D39\u7528\u663E\u793A",sidebarOn:"\u4FA7\u8FB9\u680F\u5E95\u90E8",currencyLabel:"\u8D27\u5E01\u5355\u4F4D",currencyCny:"\u4EBA\u6C11\u5E01 CNY",currencyUsd:"\u7F8E\u5143 USD",currencyEur:"\u6B27\u5143 EUR",symbolLabel:"\u8D27\u5E01\u7B26\u53F7",rateLabel:"\u6C47\u7387(1 \u7F8E\u5143 = ? \u76EE\u6807\u5E01\u79CD)",decimalsLabel:"\u5C0F\u6570\u4F4D\u6570",balanceDisplayLabel:"\u4F59\u989D\u663E\u793A\u4F4D\u7F6E",balanceSidebar:"\u4E3B\u9875\u9762\u4FA7\u8FB9\u680F",balanceSettings:"\u8BBE\u7F6E\u9875",balanceBoth:"\u4E24\u8005\u90FD\u663E\u793A",refreshIntervalLabel:"\u4F59\u989D\u5237\u65B0\u95F4\u9694(\u5206\u949F)",peakEnabledLabel:"\u542F\u7528 DeepSeek \u5CF0\u8C37\u65F6\u6BB5\u4EF7\u683C",peakNoticeLabel:"\u5CF0\u65F6\u9AD8\u4EF7\u65F6\u6BB5\u663E\u8457\u63D0\u793A(\u4FA7\u8FB9\u680F\u9884\u7B97\u6846/\u4ECA\u65E5\u8D39\u7528;\u8BBE\u7F6E\u9875\u5CF0\u8C37\u9762\u677F\u5185\u9884\u89C8)",badgeNote:"\u4F1A\u8BDD\u5FBD\u7AE0\u4E3A\u6309\u6BCF\u6B21\u8C03\u7528\u5B9E\u9645\u65F6\u523B\u7CBE\u786E\u8BA1\u8D39(\u542B\u5CF0\u8C37\u6863\u4F4D;\u5CF0\u8C37\u65F6\u4EE3\u5206\u754C 2026-08-16 16:00 UTC \u4E4B\u524D\u6309\u5F53\u65F6\u57FA\u7840\u4EF7),\u4E0E\u8D26\u672C\u5F53\u65E5/\u6708\u5EA6/\u7D2F\u8BA1\u540C\u53E3\u5F84\u3002\u8F93\u5165/\u7F13\u5B58/\u8F93\u51FA token \u5206\u5F00\u7EDF\u8BA1,\u7F13\u5B58\u8BFB\u5199\u6309\u547D\u4E2D\u4EF7\u8BA1\u8D39\u3002",priceTableTitle:"\u4EF7\u683C\u8868(\u7F8E\u5143 / 1M tokens)",pricingCurrencyLabel:"\u5B98\u65B9\u4EF7\u683C\u5E01\u79CD",pricingCurrencyUsd:"\u7F8E\u5143(\u82F1\u6587\u5B98\u65B9\u9875)",pricingCurrencyCny:"\u4EBA\u6C11\u5E01(\u4E2D\u6587\u5B98\u65B9\u9875)",pricingCurrencyNote:"\u51B3\u5B9A\u300C\u4ECE\u5B98\u65B9\u6587\u6863\u540C\u6B65\u4EF7\u683C\u300D\u6293\u53D6\u54EA\u4E2A\u8BED\u8A00\u7684\u5B98\u65B9\u9875\u3002\u5207\u6362\u5E76\u540C\u6B65\u540E,\u5386\u53F2\u8D26\u76EE\u4F1A\u6309\u65B0\u4EF7\u76EE\u6574\u4F53\u91CD\u7B97(\u65E5\u5FD7\u8986\u76D6\u4E0D\u5168\u7684\u4F1A\u8BDD\u4FDD\u6301\u539F\u53E3\u5F84),\u5386\u53F2\u4E0E\u5B98\u65B9\u8D26\u5355\u540C\u57FA\u51C6;\u91CD\u7B97\u5728\u540E\u53F0\u8FDB\u884C,\u5B8C\u6210\u540E\u6709\u63D0\u793A\u3002",priceTableNote:"\u300C\u8C37\u65F6/\u5CF0\u65F6\u300D\u4E3A\u5CF0\u8C37\u8BA1\u4EF7\u751F\u6548\u540E\u7684\u4EF7\u683C;\u5206\u754C 2026-08-16 16:00 UTC \u4E4B\u524D\u7684\u8C03\u7528\u6309\u5F53\u65F6\u57FA\u7840\u4EF7(legacyBase)\u8BA1\u8D39;\u7F13\u5B58\u5199\u5165\u6309\u7F13\u5B58\u547D\u4E2D\u4EF7\u683C\u8BA1\u8D39(\u4E0E\u5B98\u65B9\u89C4\u5219\u4E00\u81F4)\u3002\u65E0\u7F13\u5B58\u6298\u6263\u7684\u6A21\u578B(\u5982 Anthropic/Gemini \u7B49)\u53EF\u53EA\u586B\u8F93\u5165\u4E0E\u8F93\u51FA\u4EF7,\u547D\u4E2D\u4EF7\u81EA\u52A8\u53D6\u672A\u547D\u4E2D\u4EF7\u3002\u6240\u6709\u8BBE\u7F6E\u4FEE\u6539\u540E\u81EA\u52A8\u4FDD\u5B58\u3002",defaultModelId:"default(\u672A\u5339\u914D\u6A21\u578B\u65F6\u56DE\u9000)",newModelPlaceholder:"\u65B0\u6A21\u578B ID(\u5982 deepseek-v4-pro)",addModel:"\u6DFB\u52A0\u6A21\u578B",dataSync:"\u6570\u636E\u4E0E\u540C\u6B65",saving:"\u4FDD\u5B58\u4E2D\u2026",autoSaveFailed:"\u81EA\u52A8\u4FDD\u5B58\u5931\u8D25:{message}",autoSavedAt:"\u5DF2\u81EA\u52A8\u4FDD\u5B58 {time}",autoSaveHint:"\u914D\u7F6E\u4FEE\u6539\u540E\u81EA\u52A8\u4FDD\u5B58",confirmFetch:"\u786E\u8BA4\u7528\u5B98\u65B9\u6587\u6863\u4EF7\u683C\u8986\u76D6\u4EF7\u683C\u8868?",apply:"\u5E94\u7528",cancel:"\u53D6\u6D88",syncFromDocs:"\u4ECE\u5B98\u65B9\u6587\u6863\u540C\u6B65\u4EF7\u683C",confirmReset:"\u786E\u8BA4\u6E05\u9664\u5168\u90E8\u5386\u53F2?",importLegacy:"\u5BFC\u5165\u5B89\u88C5\u524D\u5386\u53F2",confirmImportLegacy:"\u786E\u8BA4\u5BFC\u5165?\u5C06\u56DE\u653E\u5168\u90E8\u4F1A\u8BDD\u65E5\u5FD7,\u53EA\u8865\u8D26\u672C\u7F3A\u5931\u7684\u65E5\u671F\u4E0E\u4F1A\u8BDD,\u4E0D\u5F71\u54CD\u5DF2\u6709\u8BB0\u5F55\u3002",legacyImportFailed:"\u5BFC\u5165\u5B89\u88C5\u524D\u5386\u53F2\u5931\u8D25:{message}",legacyImportNote:"\u63D2\u4EF6\u9996\u6B21\u542F\u52A8\u540E\u4F1A\u81EA\u52A8\u5BFC\u5165\u4E00\u6B21\u5B89\u88C5\u524D\u5386\u53F2;\u6B64\u5904\u53EF\u624B\u52A8\u91CD\u8DD1(\u5982\u540E\u7EED\u62F7\u5165\u4E86\u65E7\u65E5\u5FD7)\u3002\u91D1\u989D\u6309\u5F53\u524D\u4EF7\u76EE\u8868\u56DE\u63A8,\u5DF2\u6E05\u7406\u7684\u65E5\u5FD7\u65E0\u6CD5\u56DE\u653E,\u540C\u4E00\u4F1A\u8BDD\u8DE8\u5B89\u88C5\u65F6\u523B\u65F6\u5176\u5B89\u88C5\u524D\u7528\u91CF\u4E0D\u8BA1\u5165\u3002",confirmClear:"\u786E\u8BA4\u6E05\u9664",clearAllHistory:"\u6E05\u9664\u5168\u90E8\u5386\u53F2",lastSync:"\u6700\u8FD1\u540C\u6B65:{time}",neverSynced:"\u4ECE\u672A(\u4F7F\u7528\u5185\u7F6E\u4EF7\u683C)",source:";\u6765\u6E90:{source}",sourceOfficial:"\u5B98\u65B9\u6587\u6863",sourceBundled:"\u5185\u7F6E\u9ED8\u8BA4",languageLabel:"\u754C\u9762\u8BED\u8A00",localeAuto:"\u8DDF\u968F\u6D4F\u89C8\u5668(\u81EA\u52A8)",localeZh:"\u7B80\u4F53\u4E2D\u6587",localeEn:"English",sectionLabel:"\u8D39\u7528",rpcFailed:"{method} \u8C03\u7528\u5931\u8D25",rpcSyncFailed:"\u540C\u6B65\u8C03\u7528\u5931\u8D25",rpcBalanceFailed:"\u4F59\u989D\u5237\u65B0\u8C03\u7528\u5931\u8D25"},en:{sessionCostTitle:"Cost of this session (billed exactly at each call time)",sessionDetailTokens:"Input {input} \xB7 Cache {cache} \xB7 Output {output}",sessionDetailCache:"Cache: read {read} \xB7 write {write} (writes billed at the hit price)",cost:"Cost {amount}",sessionLine:"This session {amount} \xB7 Input {input} \xB7 Cache {cache} \xB7 Output {output}",balanceQueryFailed:"Balance query failed: {message}",unknownError:"Unknown error",balance:"Balance",queryFailed:"Query failed",balanceTitle:"DeepSeek open-platform account balance",reconcileLabel:"Cross-check official balance changes against the local ledger (warn when they diverge)",totalBalance:"Total {amount}",grantedToppedUp:"Granted {granted} \xB7 Topped-up {toppedUp}",updatedAt:"Updated {time}",budgetOf:"Budget ({period})",usedOf:"Used {used} / {amount}",todayShare:"Today {amount} \xB7 {pct} of budget",monthTotal:"This month {month} \xB7 All time {total}",budget:"Budget",todayCostTitle:"Today's cost (billed exactly at official prices)",callsTokens:"Calls {calls} \xB7 Input {input} \xB7 Cache {cache} \xB7 Output {output}",monthCost:"This month {amount}",totalCost:"All time {amount}",today:"Today",periodDay:"Today",periodMonth:"This month",periodAll:"All time",periodCustom:"Custom",periodCustomRange:"Custom range",noHistory:"No history yet. Once you start chatting, costs are aggregated here per day.",colDate:"Date",colCalls:"Calls",colInTok:"In tok",colCacheTok:"Cache tok",colOutTok:"Out tok",colCost:"Cost",noSessionsToday:"No sessions recorded today.",colSession:"Session",enableBudget:"Enable budget",budgetAmountLabel:"Budget amount (in display currency)",budgetPeriodLabel:"Budget period",startDate:"Start date",endDate:"End date (empty = today)",rangeText:"Range: {range}",budgetDisabledNote:"Budget is disabled. Once enabled, this panel shows the budget limit, the amount used and the used percentage (converted to the display currency); the period can be today / this month / all time / a custom date range.",budgetStatus:"{period} budget {amount} \xB7 Used {used} \xB7 {pct}%",overLimit:" (over limit)",nearLimit:" (near limit)",legacyModel:"Legacy",defaultFallback:"Default fallback",remove:"Remove",tierBase:"Base",tierOffPeak:"Off-peak",tierPeak:"Peak",balanceRefreshFailed:"Balance refresh failed: {message}",balanceLine:"Total {total} \xB7 Granted {granted} \xB7 Topped-up {toppedUp} \xB7 Updated {time}",balanceQueryFailedHint:"Balance query failed: {message} (uses the API key configured in Settings \u2192 Models)",balanceNotQueried:"Balance not queried",accountBalance:"Account balance",refreshing:"Refreshing\u2026",refreshBalance:"Refresh balance",customBalanceTitle:"Custom provider balance",customBalanceConfigNote:"Configure the balance query request and extract rules. Headers support {{ENV_VAR}} placeholders resolved from DSH credentials or environment variables; extract rules accept dot paths, numeric constants, and add / subtract / divide operations (use divide with 500000 for NewApi-style quota endpoints).",customBalanceLabelZh:"Chinese name",customBalanceLabelEn:"English name",customBalanceUrl:"Request URL",customBalanceMethod:"HTTP method",customBalanceHeaders:"Headers (JSON)",customBalanceExtract:"Extract rules (JSON)",customBalanceDisplayLabel:"Custom balance display",customBalanceRefreshInterval:"Refresh interval (minutes)",customBalanceUnitLabel:"Balance currency",balanceBarRemaining:"Balance {amount}",balanceBarToday:"Today {amount}",balanceBarSpent:"Spent {amount}",balanceShowProgressBar:"Balance progress bar (blue=balance, orange=today, gray=spent)",barDirectionsTitle:"Progress bar direction",barDirectionsHint:'Each group of bars can independently choose its fill direction: "Remaining" starts full and drains with usage; "Used" starts empty and fills up.',barDirection_balance:"Balance bars (official/custom)",barDirection_budget:"Budget bar",barDirection_go:"Go quota bar",barDirection_plan:"Plan / Codex quota bars",barDirectionRemaining:"Remaining (full \u2192 empty)",barDirectionUsed:"Used (empty \u2192 full)",balanceBudgetCapLabel:"Budget cap (optional)",balanceBudgetCapHint:"Leave empty to use API max_budget; if still missing, show full light-blue bar",customBalanceInvalidJson:"Invalid JSON",enable:"Enable",customBalanceOpenConfig:"Expand config",customBalanceCollapseConfig:"Collapse config",customBalanceLine:"Remaining {remaining} \xB7 Spent {spend} / Budget {maxBudget} \xB7 Updated {time}",customBalanceRemaining:"Remaining {amount}",refreshCustomBalance:"Refresh custom balance",customBalanceRefreshFailed:"Custom balance refresh failed: {message}",goQuotaTitle:"OpenCode Go subscription quota",goQuotaRowLabel:"Go",goWindowRolling:"Rolling 5h",goWindowWeekly:"Weekly",goWindowMonthly:"Monthly",goResetAt:"Resets: {time}",goQuotaPercent:"{percent}%",goQuotaFetchedAt:"Updated {time}",goQuotaDisplayLabel:"Go quota display position",goQuotaRefreshIntervalLabel:"Go quota refresh interval (minutes)",goQuotaRefreshMinutesUnit:"min",goQuotaKeyLabel:"OpenCode Go API key (optional; empty = auto-detect)",goMainLabel:"Go quota primary window",goDetailLabel:"Go box details",credentialConfiguredOf:"Configured (source: {source})",credentialNotConfigured:"Not configured",credentialSave:"Save",credentialClear:"Clear",credentialSaving:"Saving\u2026",credentialInputHint:"The key is written to the DSH credential store only \u2014 it is never saved in the ledger and never echoed back.",secretMigrationPending:"These credentials are still stored in plaintext in the local ledger and could not be migrated automatically. Export the matching environment variables and restart:",credentialUnknownTarget:"Unknown credential target",budgetDetailLabel:"Budget box details",refreshGoQuota:"Refresh quota",goQuotaNotQueried:"Quota not queried",enableGoQuota:"Enable OpenCode Go quota",codingPlansTitle:"Coding plan quotas",codingPlansNote:"Query coding plan subscription quotas per vendor (independent enable switch and credentials per vendor). Credentials are only sent to the vendor's official endpoint; leave the key empty to auto-detect from environment variables and CLI logins.",codingPlansOpen:"Expand Coding Plan quotas",codingPlansCollapse:"Collapse Coding Plan quotas",codingPlansCollapsedHint:"Collapsed by default; expand to enable providers, enter keys and query quotas. The open/closed state is remembered.",codingPlanAnthropic:"Anthropic (Claude Pro/Max)",codingPlanZai:"Z.ai / Zhipu GLM Coding Plan",codingPlanMinimax:"MiniMax Token Plan",codingPlanMinimaxTitle:"MiniMax Plan",codingPlanRemain5h:"5h",codingPlanRemain7d:"7d",balanceRechargeLink:"Open DeepSeek top-up page (platform.deepseek.com/usage)",codexQuotaTitle:"ChatGPT (Codex) weekly quota",enableCodingPlan:"Enable quota queries",codingPlanDisplayLabel:"Display position",codingPlanDisplayNote:`With "Main sidebar / Both" selected, this vendor's quota shows as a card in the sidebar (same box style as the Go quota / balance; the collapsed rail shows percentages).`,codingPlanKeyLabel:"API key (optional; empty = auto-detect)",codingPlanRefreshIntervalLabel:"Refresh interval (minutes)",refreshCodingPlan:"Refresh",codingPlanNotQueried:"Quota not queried",codingPlanDisabledNote:"Disabled. Enable it to query this vendor's coding plan quota on the refresh interval and show it here.",goQuotaDisabledNote:"Quota disabled. Enable it to read the OpenCode Go subscription quota (rolling 5h / weekly / monthly) and show it in the sidebar box, Settings page and bottom-right corner; if you have no Go subscription, the reason will be shown here.",cornerLabel:"Bottom-right (dock) display",cornerEnabledLabel:"Show OpenCode Go quota / budget at the bottom-right",cornerGoRolling:"Rolling-5h quota",cornerGoWeekly:"Weekly quota",cornerGoMonthly:"Monthly quota",cornerBudget:"Budget used %",goShortRolling:"5h",goShortWeekly:"Wk",goShortMonthly:"Mo",budgetShort:"Budget",ledgerReadFailed:"Ledger read failed: {message}",readingLedger:"Reading ledger\u2026",ledgerUnavailable:"Ledger unavailable",syncFailed:"Sync failed: {message}",historyCleared:"History cleared.",clearFailed:"Clear failed: {message}",peakOff:"Peak/off-peak pricing is off; base prices are used",peakNotEffective:"Not yet effective (effective at {time}); base prices are currently used",peakActive:"Peak hour now; peak prices apply",peakNotice:"DeepSeek peak-hour pricing is active; current calls are billed at peak prices",offPeakActive:"Off-peak now; off-peak prices apply",weekendAllOffPeak:"Weekend \u2014 all off-peak (Sat & Sun billed at off-peak prices all day)",weekendChip:"Weekend \u2014 all off-peak",weekendShort:"Weekend",weekendRuleNote:"From Aug 23, 2026 00:00 (Beijing time), weekends (Saturday & Sunday) are billed entirely at off-peak prices; charges before that still follow the previous rules.",peakShort:"Peak",offPeakShort:"Off-peak",peakStyleLabel:"Peak period strip style",peakStyleCompact:"Compact (one-line)",peakStyleClassic:"Classic (segments & chip)",peakAlertLabel:"Popup alert before peak/off-peak switch",peakAlertAheadLabel:"Lead time (minutes, 1-30)",peakAlertTargetLabel:"Alert type",peakAlertTargetPeak:"Entering peak",peakAlertTargetOffPeak:"Entering off-peak",peakAlertTargetBoth:"Both",peakAlertTitlePeak:"Entering peak hours soon",peakAlertTitleOffPeak:"Entering off-peak hours soon",peakAlertBody:"Billing switches to {phase} pricing in about {time}; mind your call costs in this window.",peakAlertPhasePeak:"peak",peakAlertPhaseOffPeak:"off-peak",peakAlertBtn:"Got it",peakAlertBadgePeak:"Peak alert",peakAlertBadgeOffPeak:"Off-peak alert",peakAlertPositionLabel:"Popup position",peakAlertPositionCorner:"Bottom-right",peakAlertPositionCenter:"Screen center",peakAlertWebNotifyLabel:"Also send a system notification",peakAlertWebNotifyHint:"When enabled, allow notification permission in the browser address bar so you get alerted even when the page is minimized or backgrounded.",peakAlertPreviewLabel:"Preview the popup",peakAlertPreviewPeak:"Preview entering peak",peakAlertPreviewOffPeak:"Preview entering off-peak",peakAlertPreviewTag:" (preview)",peakPanelTitle:"Peak/off-peak pricing & notice",peakNoticeHiddenHint:"Notice hidden: enable peak/off-peak pricing and the \u201Cprominent notice\u201D toggle.",groupGeneral:"General",groupMoney:"Money & currency",groupSidebar:"Sidebar display",groupCorner:"Corner chips",groupDetail:"Box details",catalogTitle:"Extended price catalog",catalogNote:"A built-in, read-only reference catalog grouped by vendor and model family. Mounting copies an entry into the editable price table above so it is used for billing; DeepSeek models can be unmounted (they fall back to the default price and can be re-mounted here).",catalogOpen:"Expand extended price catalog",catalogCollapse:"Collapse extended price catalog",mountBtn:"Mount",unmountBtn:"Unmount",mountedTag:"Mounted",catalogUnpriced:"Unpriced",catalogDeepseekNote:"DeepSeek models support peak/off-peak tiers; once unmounted they bill at the default price and are no longer hit by auto-matching.",modelStatsTitle:"Per-model statistics (tokens & cost)",modelStatsToday:"Today",modelStatsHistory:"Last 90 days",modelStatsCostH:"Cost ranking",modelStatsTokensH:"Token usage",modelStatsHitH:"Cache hit rate",modelStatsValueH:"Value \xB7 tokens per USD",modelStatsInput:"Input",modelStatsCache:"Cache",modelStatsOutput:"Output",modelStatsEmpty:"No usage data for this period.",modelStatsBlended:"blended {price}/M",modelStatsNote:"Methodology: cache hit rate = cache reads \xF7 (cache reads + non-cached input); blended price = cost \xF7 total tokens \xD7 1M (USD per 1M tokens); value = total tokens \xF7 cost (higher is better). Costs are USD exactly as billed per call by the ledger.",billingClassLabel:"Billing class",billingClassPlan:"Plan subscription",modelStatsLegacy:"Unattributed (early data \xB7 billed as recorded)",sessionLineSplit:"This session {amount} (API) \xB7 Plan equiv. {planAmount} \xB7 Input {input} \xB7 Cache {cache} \xB7 Output {output}",costChipPlan:"Cost {amount} (+Plan)",sessionDetailPlan:"Plan subscription quota usage (equiv.) {amount}",planStatsTitle:"Token Plan usage stats (per-1% & full-window estimates)",planStatsEmpty:"No enabled coding-plan quota data yet; enable and successfully refresh a provider under the Quotas tab to see per-1% and full-window usage estimates here.",planStatsWindow:"Window",planStatsPercent:"Used %",planStatsLocal:"This period actual (local ledger)",planStatsPer1:"Per 1% quota \u2248",planStatsFull:"Full window (100%) \u2248",planStatsResets:"resets {time}",planStatsMethodSample:"sample delta",planStatsMethodLive:"current usage ratio",planStatsMethodNone:"not enough samples",planStatsMethodSampleAt:"{method} (as of {time})",planStatsConfidenceLow:"low reading precision",planStatsCurveTitle:"Plan usage curves (aggregated from sample intervals)",planStatsDaily:"Daily",planStatsWeekly:"Weekly",planStatsMonthly:"Monthly",planStatsCurveEmpty:"Not enough sample intervals yet (at least two successful refreshes with a percent change); the curves will take shape with continued use.",planStatsBarTip:"{date}: full-window est. \u2248 {full} (per 1% \u2248 {per1}) \xB7 actual {tokens} / {cost} \xB7 {intervals} sample interval(s)",planStatsNote:'Scope: all amounts are catalog-price equivalents in USD \u2014 subscription channels consume plan quota, not real money; budget/today-cost displays only count the API channel. "This period actual (local ledger)" and the per-1%/full-window estimates only cover calls made inside dsh \u2014 usage from other machines/CLIs never enters the local ledger. Per-1% and full-window values come from end-to-end deltas over continuous trustworthy sample segments (quantization noise of intermediate readings cancels out). Percent readings carry ones-digit quantization (a displayed 1% may really be 0.5%-1.5%): when a segment spans fewer than 5 percentage points the result fluctuates heavily and the method column shows a "low reading precision" tag. Samples older than 7 days (or too few) fall back to "this period actual \xF7 current used %" (live). The 5-hour window is rolling; week/month follow the local calendar; window edges align to whole hours. Note: server "used %" covers ALL usage of the account \u2014 the difference vs local stats is consumption elsewhere, so low local numbers are expected when the same key is used outside dsh. Some catalog prices are time-limited promos (e.g. gpt-5.6-sol at 50% off until 2026-09-18). SCNet is a local credits self-estimate and does not participate.',catalogDisplayLabel:"Show directly in Cost settings",catalogDisplayHint:"Only decides whether this model's price card appears directly in the Cost settings price table; mounting and billing are unaffected. When hidden, the mounted model stays editable inside the expanded vendor section of this catalog.",priceTableDisplayHint:"Use the per-model \u201CShow directly in Cost settings\u201D toggle in the extended price catalog below to choose which models appear here; DeepSeek models default to direct display, third-party models default to the catalog once mounted.",catalogCustomModels:"Custom models",priceMatchLabel:"Auto-match unknown model names",priceMatchAuto:"Auto (strip suffix / prefix / family similarity)",priceMatchExact:"Exact match only",priceMatchNote:"Match order: exact \u2192 manual override \u2192 strip date/version suffix \u2192 prefix \u2192 family similarity. Unmatched DeepSeek ids fall back to the default price; other providers stay unpriced.",unmatchedTitle:"Recently seen models without a price hit",unmatchedHint:"These found no price entry under the current match mode (including cross-vendor fallback), or fell back to the DeepSeek default. Pick which entry each one should bill against (saved as a manual override); \u201CDefault price\u201D falls back to the DeepSeek default. Models served by local runtimes (lmstudio / ollama / vLLM / \u2026) are treated as zero-cost automatically; assign a price entry here to bill them.",overrideTargetDefault:"DeepSeek default price",overrideRemove:"Remove",overrideTargetLocal:"Local model (zero cost)",matchedTitle:"Models matched this month",matchedHint:"These models already auto-matched a price entry. Pick a target to re-map them, or pick \u201CLocal model (zero cost)\u201D to mark them as local \u2014 tokens are still counted, cost is 0, and their historical amounts are zeroed immediately. Overridden rows move to the manual list above.",matchedKeepAuto:"Keep auto match",overrideNone:"No manual match overrides.",mountedSuffix:"Mounted (billed)",flatInput:"Input",flatCached:"Cached",flatOutput:"Output",deepseekMountedHeader:"DeepSeek price table (mounted)",codingPlanKimi:"Kimi / Moonshot",codingPlanOpenrouter:"OpenRouter",codingPlanSiliconflow:"SiliconFlow",codingPlanCommandcode:"CommandCode",codingPlanScnet:"SCNet Token Plan",codingPlanVolcengine:"Volcano Ark Coding Plan",scnetPlanCreditsLabel:"Monthly credits quota (Basic 60,000 / Standard 240,000 / Pro 600,000)",scnetPlanStartLabel:"Plan start date (optional, YYYY-MM-DD; empty = calendar month)",scnetLocalNote:"SCNet exposes no API quota endpoint: usage for the current billing period is estimated from the local ledger using the official credits deduction table (effective 2026-08-11); actual consumption is subject to the SCNet console. Only models covered by the table are counted.",volcengineAccessKeyIdLabel:"Volcengine AccessKey ID",volcengineSecretAccessKeyLabel:"Volcengine SecretAccessKey",volcengineNote:"Volcano Ark control-plane requires AK/SK HMAC signature (not ARK_API_KEY Bearer): create an IAM sub-user with ArkReadOnlyAccess + BillingCenterReadOnlyAccess and enter AccessKeyID and SecretAccessKey; or export VOLC_ACCESSKEY / VOLC_SECRETKEY (official SDK env) for auto-discovery; credentials are only sent to open.volcengineapi.com.",volcengineAccessKeyPlaceholder:"AK...",volcengineSecretPlaceholder:"SK...",countdownHoursOnly:"{h}h",countdownHourMinute:"{h}h {m}m",countdownMinute:"{m}m",nextOffPeakIn:"Off-peak in {time}",nextPeakIn:"Peak in {time}",peakSummary:"Peak hours (UTC): {windows}; effective: {time}. {status}",noPeakWindows:"No peak windows configured. {status}",unknown:"unknown",cardToday:"Today",cardMonth:"This month",cardTotal:"All time",cardTotalSub:"Since the ledger was created \xB7 Calls {calls}",cardsFootnote:"Notes: amounts reflect the latest ledger snapshot (2s debounce; clean shutdown flushes everything first), so minute-level lag vs the live official bill is expected. Token columns sum input+output+cache+reasoning; reasoning tokens are reported separately by the API and are not billed (the official bill folds them into its output column) \u2014 reconcile by amount.",timezoneHint:"Timezone notice: today/this-month are keyed by the host machine's timezone {host}, which differs from this browser ({browser}) \u2014 the host's local midnight differs from yours, so calls made after your local midnight land on the previous day (not lost; balance reconciliation flags the same deviation). Run dsh on the host in your local timezone to align them.",todaySessions:"Today's sessions",historyExpandHint:"Click a date row to expand its session details",historySessionsLoading:"Loading session details\u2026",historyNoSessions:"No session details for this day (early data or session logs cleaned)",historySessionsError:"Failed to load session details",sessionRankTitle:"By session (all history)",sessionRankHint:"All historical sessions, not grouped by date; sort and row count are switchable",sessionRankEmpty:"No session data yet",sessionRankLoading:"Loading session ranking\u2026",sessionRankError:"Failed to load session ranking",sessionRankLimit:"Rows",showSessionIdLabel:"Show session IDs in session lists",cardsTogglePlanTotal:"Include plan totals",cardsTogglePlanTotalHint:"When on, every amount shows total equivalent cost including plan subscriptions; off (default) counts real-money API channels only",hideOfficialBalanceLabel:"Hide official account balance (balance UI removed from sidebar and settings)",hideTodayCostLabel:"Hide today's cost (today's amount removed from sidebar, budget details and overview card)",sessionRankSort:"Sort",sessionSortCostDesc:"Cost high\u2192low",sessionSortCostAsc:"Cost low\u2192high",sessionSortTimeDesc:"Time new\u2192old",sessionSortTimeAsc:"Time old\u2192new",sessionSortRecent:"Recent order",history:"History",usageTitle:"Token usage stats",usageTotal:"All-time {tokens} tokens \xB7 input {input} \xB7 cache {cache} \xB7 output {output} \xB7 {calls} calls",usageDay:"{date}: {tokens} tokens (input {input} \xB7 cache {cache} \xB7 output {output}) \xB7 {calls} calls \xB7 {cost}",usageEmpty:"No history yet \u2014 daily usage will accumulate here",usageSectionLabel:"Usage",usagePositionLabel:"Token usage stats position",usagePositionCost:"Cost settings",usagePositionGeneral:"General settings",usagePositionSection:"Own section (Usage)",displaySettings:"Display settings",tabOverview:"Overview",tabQuotas:"Quotas",tabUsage:"Usage",tabPricing:"Pricing",tabDisplay:"Display",historyDataTitle:"History data",positionLabel:"Session cost display position",positionDock:"Below the composer",positionHeader:"Session title bar",off:"Off",quotaStripGroup:"Quota strip above the input",quotaStripEnable:"Enable the quota strip (one row above the input box)",quotaStripShowBudget:"Strip includes budget used %",quotaStripShowGo:"Strip includes the Go quota",quotaStripShowPlans:"Strip includes coding plan quotas",quotaStripNote:"Hover a chip for reset times and the last refresh; the strip hides itself when there is no quota data.",quotaStripGuideTitle:"New: quota strip above the input",quotaStripGuideBody:"Show budget and subscription quotas (OpenCode Go / coding plans) as one compact strip above the input box. Enable it now? You can change this anytime in Settings \u2192 Display.",quotaStripGuideOn:"Enable the strip",quotaStripGuideOff:"Not now",clickToRefresh:"Click to refresh now",balanceClickGuideTitle:"New: click the balance box to refresh",balanceClickGuideBody:"Click the official balance / custom balance / coding-plan box in the sidebar to fetch the latest data immediately \u2014 no need to wait for the auto-refresh interval or open Settings. While refreshing the box pulses; on failure the previous value is kept and the reason appears in the hover tooltip.",balanceClickGuideOk:"Got it",sidebarLabel:"Today cost display",sidebarOn:"Sidebar footer",currencyLabel:"Currency",currencyCny:"Chinese Yuan (CNY)",currencyUsd:"US Dollar (USD)",currencyEur:"Euro (EUR)",symbolLabel:"Currency symbol",rateLabel:"Exchange rate (1 USD = ? target currency)",decimalsLabel:"Decimal places",balanceDisplayLabel:"Balance display position",balanceSidebar:"Main sidebar",balanceSettings:"Settings page",balanceBoth:"Both",refreshIntervalLabel:"Balance refresh interval (minutes)",peakEnabledLabel:"Use DeepSeek peak-hour prices",peakNoticeLabel:"Prominent notice during peak hours (sidebar budget box, today's cost; previewed in the Settings peak panel)",badgeNote:"The session badge is billed exactly at each call's actual time (peak/off-peak tiers; calls before the 2026-08-16 16:00 UTC boundary are billed at the base prices of that era), consistent with the ledger's today/month/all-time figures. Input/cache/output tokens are counted separately; cache reads and writes are billed at the cache-hit price.",priceTableTitle:"Price table (USD / 1M tokens)",pricingCurrencyLabel:"Official price currency",pricingCurrencyUsd:"USD (English official page)",pricingCurrencyCny:"CNY (Chinese official page)",pricingCurrencyNote:'Chooses which language of the official pricing page "Sync from the official docs" fetches. After switching and re-syncing, history is re-costed on the new price table (sessions without full log coverage keep their original basis), so history and the official bill share one basis; the recompute runs in the background and notifies when done.',priceTableNote:'"Off-peak / Peak" are the prices used once peak/off-peak pricing takes effect; calls before the 2026-08-16 16:00 UTC boundary are billed at the base prices of that time (legacyBase); cache writes are billed at the cache-hit price (matching the official rule). Models without a cache discount (e.g. Anthropic/Gemini) can be entered with just input and output prices \u2014 the hit price is then derived from the miss price. All settings changes are auto-saved.',defaultModelId:"default (fallback for unmatched models)",newModelPlaceholder:"New model ID (e.g. deepseek-v4-pro)",addModel:"Add model",dataSync:"Data & sync",saving:"Saving\u2026",autoSaveFailed:"Auto-save failed: {message}",autoSavedAt:"Auto-saved {time}",autoSaveHint:"Settings are auto-saved",confirmFetch:"Overwrite the price table with prices from the official docs?",apply:"Apply",cancel:"Cancel",syncFromDocs:"Sync prices from official docs",confirmReset:"Clear all history?",importLegacy:"Import pre-install history",confirmImportLegacy:"Confirm import? Replays all session logs and only fills dates/sessions missing from the ledger; existing records are untouched.",legacyImportFailed:"Failed to import pre-install history: {message}",legacyImportNote:"Pre-install history is imported automatically once on first launch; this button re-runs it manually (e.g. after copying in old logs). Costs are estimated with the current price catalog; cleaned logs cannot be replayed, and for a session spanning the install moment its pre-install usage is not counted.",confirmClear:"Confirm clear",clearAllHistory:"Clear all history",lastSync:"Last sync: {time}",neverSynced:"Never (bundled prices)",source:"; Source: {source}",sourceOfficial:"Official docs",sourceBundled:"Bundled",languageLabel:"Language",localeAuto:"Follow browser (auto)",localeZh:"Simplified Chinese",localeEn:"English",sectionLabel:"Cost",rpcFailed:"{method} call failed",rpcSyncFailed:"Sync call failed",rpcBalanceFailed:"Balance refresh call failed"}};function Vt(){return(typeof navigator<"u"&&typeof navigator.language=="string"?navigator.language:"").toLowerCase().startsWith("zh")?"zh":"en"}r(Vt,"detectBrowserLocale");function q(t){return t==="zh"||t==="en"?t:Vt()}r(q,"resolveLocale");function K(t){const s=t==="zh"?he.zh:he.en;return(o,a)=>{let n=s[o]??he.en[o]??o;if(a)for(const l of Object.keys(a))n=n.split("{"+l+"}").join(String(a[l]));return n}}r(K,"makeT");const Be={day:"periodDay",month:"periodMonth",all:"periodAll",custom:"periodCustom"};function $(t,s){throw new Error("dsh-cost-meter: \u670D\u52A1\u7AEF\u6570\u636E\u975E\u6CD5 ("+t+": "+s+")")}r($,"fail");function H(t,s){return(typeof t!="number"||!Number.isFinite(t))&&$(s,"number"),t}r(H,"needNum");function Qe(t,s){return typeof t!="string"&&$(s,"string"),t}r(Qe,"needStr");function Jt(t,s){return typeof t!="boolean"&&$(s,"boolean"),t}r(Jt,"needBool");function Oe(t,s){const o={};if(t!==null&&typeof t=="object"&&!Array.isArray(t))for(const a of Object.keys(t)){const n=t[a];if(n===null||typeof n!="object"||Array.isArray(n))continue;const l=r(i=>typeof i=="number"&&Number.isFinite(i)&&i>=0?i:0,"num");o[a]={input:l(n.input),output:l(n.output),cacheRead:l(n.cacheRead),cacheWrite:l(n.cacheWrite),reasoning:l(n.reasoning),cost:l(n.cost),apiCost:n.apiCost===void 0?l(n.cost):l(n.apiCost)}}return o}r(Oe,"aggregateModelMap");function $t(t,s){return(t===null||typeof t!="object"||Array.isArray(t))&&$(s,"object"),{id:Qe(t.id,s+".id"),provider:typeof t.provider=="string"?t.provider:"",model:typeof t.model=="string"?t.model:"",input:H(t.input,s+".input"),output:H(t.output,s+".output"),cacheRead:H(t.cacheRead,s+".cacheRead"),cacheWrite:H(t.cacheWrite,s+".cacheWrite"),reasoning:t.reasoning===void 0?0:H(t.reasoning,s+".reasoning"),calls:H(t.calls,s+".calls"),cost:H(t.cost,s+".cost"),apiCost:t.apiCost===void 0?void 0:H(t.apiCost,s+".apiCost"),byModel:Oe(t.byModel,s+".byModel"),byProviderModel:Oe(t.byProviderModel,s+".byProviderModel")}}r($t,"parseSession");function Le(t,s){(t===null||typeof t!="object"||Array.isArray(t))&&$(s,"object");const o={date:Qe(t.date,s+".date"),input:H(t.input,s+".input"),output:H(t.output,s+".output"),cacheRead:H(t.cacheRead,s+".cacheRead"),cacheWrite:H(t.cacheWrite,s+".cacheWrite"),reasoning:t.reasoning===void 0?0:H(t.reasoning,s+".reasoning"),calls:H(t.calls,s+".calls"),cost:H(t.cost,s+".cost"),apiCost:t.apiCost===void 0?void 0:H(t.apiCost,s+".apiCost"),byModel:Oe(t.byModel,s+".byModel"),byProviderModel:Oe(t.byProviderModel,s+".byProviderModel"),sessions:[]};return t.sessions!==void 0&&(Array.isArray(t.sessions)||$(s+".sessions","array"),o.sessions=t.sessions.map((a,n)=>$t(a,s+".sessions["+n+"]"))),o}r(Le,"parseDay");function mt(t,s){(t===null||typeof t!="object"||Array.isArray(t))&&$(s,"object");const o={cacheHit:H(t.cacheHit,s+".cacheHit"),cacheMiss:H(t.cacheMiss,s+".cacheMiss"),output:H(t.output,s+".output")};return t.offPeak!==void 0&&(o.offPeak={cacheHit:H(t.offPeak.cacheHit,s+".offPeak.cacheHit"),cacheMiss:H(t.offPeak.cacheMiss,s+".offPeak.cacheMiss"),output:H(t.offPeak.output,s+".offPeak.output")}),t.peak!==void 0&&(o.peak={cacheHit:H(t.peak.cacheHit,s+".peak.cacheHit"),cacheMiss:H(t.peak.cacheMiss,s+".peak.cacheMiss"),output:H(t.peak.output,s+".peak.output")}),t.legacyBase!==void 0&&(o.legacyBase={cacheHit:H(t.legacyBase.cacheHit,s+".legacyBase.cacheHit"),cacheMiss:H(t.legacyBase.cacheMiss,s+".legacyBase.cacheMiss"),output:H(t.legacyBase.output,s+".legacyBase.output")}),t.legacy!==void 0&&(o.legacy=Jt(t.legacy,s+".legacy")),o}r(mt,"parsePrice");function Zt(t,s){(t===null||typeof t!="object"||Array.isArray(t))&&$(s,"object");const o={};if(t.prices!==null&&typeof t.prices=="object"&&t.prices.models!==null&&typeof t.prices.models=="object")for(const a of Object.keys(t.prices.models))o[a]=mt(t.prices.models[a],s+".prices.models."+a);return{locale:t.locale==="zh"||t.locale==="en"||t.locale==="auto"?t.locale:"auto",position:t.position==="header"||t.position==="off"?t.position:"dock",sidebar:t.sidebar!==!1,showSessionId:t.showSessionId===!0,hideOfficialBalance:t.hideOfficialBalance===!0,hideTodayCost:t.hideTodayCost===!0,showTotalWithPlan:t.showTotalWithPlan===!0,pricingCurrency:t.pricingCurrency==="CNY"?"CNY":"USD",currency:typeof t.currency=="string"?t.currency:"CNY",symbol:typeof t.symbol=="string"?t.symbol:"\xA5",decimals:H(t.decimals,s+".decimals"),exchangeRate:H(t.exchangeRate,s+".exchangeRate"),peakEnabled:t.peakEnabled===!0,peakEffectiveAt:typeof t.peakEffectiveAt=="string"?t.peakEffectiveAt:"",peakWindows:Array.isArray(t.peakWindows)?t.peakWindows.map((a,n)=>({start:H(a.start,s+".peakWindows["+n+"].start"),end:H(a.end,s+".peakWindows["+n+"].end")})):[],peakNotice:t.peakNotice!==!1,peakAlertEnabled:t.peakAlertEnabled!==!1,peakAlertAhead:Number.isFinite(t.peakAlertAhead)&&t.peakAlertAhead>=1&&t.peakAlertAhead<=30?t.peakAlertAhead:2,peakAlertTarget:t.peakAlertTarget==="peak"||t.peakAlertTarget==="offpeak"?t.peakAlertTarget:"both",peakAlertPosition:t.peakAlertPosition==="center"?"center":"corner",peakAlertWebNotify:t.peakAlertWebNotify===!0,peakStyle:t.peakStyle==="classic"?"classic":"compact",priceMatch:t.priceMatch==="exact"?"exact":"auto",priceOverrides:(()=>{const a={};if(t.priceOverrides!==null&&typeof t.priceOverrides=="object"&&!Array.isArray(t.priceOverrides))for(const[n,l]of Object.entries(t.priceOverrides))typeof n=="string"&&typeof l=="string"&&(a[n]=l);return a})(),priceTableDisplay:(()=>{const a={};if(t.priceTableDisplay!==null&&typeof t.priceTableDisplay=="object"&&!Array.isArray(t.priceTableDisplay))for(const[n,l]of Object.entries(t.priceTableDisplay))typeof n=="string"&&(a[n]=l===!0);return a})(),codingPlans:(()=>{const a={};if(t.codingPlans!==null&&typeof t.codingPlans=="object"&&!Array.isArray(t.codingPlans))for(const n of Object.keys(t.codingPlans)){const l=t.codingPlans[n];l===null||typeof l!="object"||Array.isArray(l)||(a[n]={enabled:l.enabled===!0,display:l.display==="sidebar"||l.display==="both"||l.display==="off"?l.display:"settings",refreshMinutes:typeof l.refreshMinutes=="number"&&Number.isFinite(l.refreshMinutes)?l.refreshMinutes:15,apiKey:typeof l.apiKey=="string"?l.apiKey:"",...typeof l.planCredits=="number"&&Number.isFinite(l.planCredits)&&l.planCredits>0?{planCredits:l.planCredits}:{},...typeof l.planStart=="string"?{planStart:l.planStart}:{},...typeof l.accessKeyId=="string"?{accessKeyId:l.accessKeyId}:{},...typeof l.secretAccessKey=="string"?{secretAccessKey:l.secretAccessKey}:{}})}return a})(),prices:{models:o,default:mt(t.prices?.default??{cacheHit:0,cacheMiss:0,output:0},s+".prices.default"),providers:t.prices?.providers&&typeof t.prices.providers=="object"?t.prices.providers:{},currency:typeof t.prices?.currency=="string"&&t.prices.currency.length>0?t.prices.currency:void 0},historyDays:H(t.historyDays,s+".historyDays"),fetchedAt:t.fetchedAt===null||t.fetchedAt===void 0?null:Qe(t.fetchedAt,s+".fetchedAt"),priceSource:typeof t.priceSource=="string"?t.priceSource:"bundled",budget:{enabled:t.budget?.enabled===!0,amount:typeof t.budget?.amount=="number"&&Number.isFinite(t.budget.amount)?t.budget.amount:100,period:t.budget?.period==="day"||t.budget?.period==="all"||t.budget?.period==="custom"?t.budget.period:"month",customStart:typeof t.budget?.customStart=="string"?t.budget.customStart:null,customEnd:typeof t.budget?.customEnd=="string"?t.budget.customEnd:null,detail:t.budget?.detail!==!1},balance:{display:t.balance?.display==="sidebar"||t.balance?.display==="settings"||t.balance?.display==="off"?t.balance.display:"both",refreshMinutes:typeof t.balance?.refreshMinutes=="number"&&Number.isFinite(t.balance.refreshMinutes)?t.balance.refreshMinutes:5,showProgressBar:t.balance?.showProgressBar===!0,budgetCap:typeof t.balance?.budgetCap=="number"&&Number.isFinite(t.balance.budgetCap)&&t.balance.budgetCap>0?t.balance.budgetCap:null,clickHintSeen:t.balance?.clickHintSeen===!0},goQuota:{enabled:t.goQuota?.enabled!==!1,display:t.goQuota?.display==="sidebar"||t.goQuota?.display==="settings"||t.goQuota?.display==="off"?t.goQuota.display:"both",refreshMinutes:typeof t.goQuota?.refreshMinutes=="number"&&Number.isFinite(t.goQuota.refreshMinutes)?t.goQuota.refreshMinutes:15,apiKey:typeof t.goQuota?.apiKey=="string"?t.goQuota.apiKey:"",main:t.goQuota?.main==="weekly"||t.goQuota?.main==="monthly"?t.goQuota.main:"rolling",detail:t.goQuota?.detail!==!1},customBalance:t.customBalance===void 0||t.customBalance===null?void 0:{enabled:t.customBalance.enabled===!0,label:typeof t.customBalance.label=="string"?t.customBalance.label:"",labelEn:typeof t.customBalance.labelEn=="string"?t.customBalance.labelEn:"",display:t.customBalance.display==="sidebar"||t.customBalance.display==="settings"||t.customBalance.display==="off"?t.customBalance.display:"both",unit:t.customBalance.unit==="CNY"||t.customBalance.unit==="EUR"?t.customBalance.unit:"USD",refreshMinutes:typeof t.customBalance.refreshMinutes=="number"&&Number.isFinite(t.customBalance.refreshMinutes)?t.customBalance.refreshMinutes:15,request:t.customBalance.request&&typeof t.customBalance.request=="object"?t.customBalance.request:{url:""},extract:t.customBalance.extract&&typeof t.customBalance.extract=="object"?t.customBalance.extract:{}},corner:{enabled:t.corner?.enabled===!0,goRolling:t.corner?.goRolling!==!1,goWeekly:t.corner?.goWeekly!==!1,goMonthly:t.corner?.goMonthly!==!1,budget:t.corner?.budget!==!1},quotaStrip:{enabled:t.quotaStrip?.enabled===!0,budget:t.quotaStrip?.budget!==!1,go:t.quotaStrip?.go!==!1,plans:t.quotaStrip?.plans!==!1,promptSeen:t.quotaStrip?.promptSeen===!0},usage:{position:t.usage?.position==="general"||t.usage?.position==="section"?t.usage.position:"cost"},barDirections:(()=>{const a=t.barDirections!==null&&typeof t.barDirections=="object"&&!Array.isArray(t.barDirections)?t.barDirections:{},n=r((l,i)=>a[l]==="remaining"||a[l]==="used"?a[l]:i,"pick");return{balance:n("balance","remaining"),budget:n("budget","used"),go:n("go","used"),plan:n("plan","used")}})(),planBilling:{providers:(()=>{const a={};if(t.planBilling?.providers!==null&&typeof t.planBilling?.providers=="object"&&!Array.isArray(t.planBilling.providers))for(const[n,l]of Object.entries(t.planBilling.providers))typeof n=="string"&&(l==="auto"||l==="plan"||l==="api")&&(a[n]=l);return a})(),models:(()=>{const a={};if(t.planBilling?.models!==null&&typeof t.planBilling?.models=="object"&&!Array.isArray(t.planBilling.models))for(const[n,l]of Object.entries(t.planBilling.models))typeof n=="string"&&n.length>0&&(l==="plan"||l==="api")&&(a[n]=l);return a})()}}}r(Zt,"parseConfig");function Xt(t,s){return(t===null||typeof t!="object"||Array.isArray(t))&&$(s,"object"),{status:t.status==="ok"||t.status==="error"?t.status:"off",message:typeof t.message=="string"?t.message:"",fetchedAt:typeof t.fetchedAt=="number"?t.fetchedAt:0,currency:typeof t.currency=="string"?t.currency:"",totalBalance:typeof t.totalBalance=="number"&&Number.isFinite(t.totalBalance)?t.totalBalance:0,grantedBalance:typeof t.grantedBalance=="number"&&Number.isFinite(t.grantedBalance)?t.grantedBalance:0,toppedUpBalance:typeof t.toppedUpBalance=="number"&&Number.isFinite(t.toppedUpBalance)?t.toppedUpBalance:0}}r(Xt,"parseBalance");function qe(t,s){return t==null?null:((typeof t!="object"||Array.isArray(t))&&$(s,"object"),{percent:typeof t.percent=="number"&&Number.isFinite(t.percent)?t.percent:0,resetsAt:typeof t.resetsAt=="string"?t.resetsAt:""})}r(qe,"parseGoWindow");function ea(t,s){return(t===null||typeof t!="object"||Array.isArray(t))&&$(s,"object"),{status:t.status==="ok"||t.status==="error"?t.status:"off",message:typeof t.message=="string"?t.message:"",fetchedAt:typeof t.fetchedAt=="number"?t.fetchedAt:0,rolling:t.rolling===void 0||t.rolling===null?null:qe(t.rolling,s+".rolling"),weekly:t.weekly===void 0||t.weekly===null?null:qe(t.weekly,s+".weekly"),monthly:t.monthly===void 0||t.monthly===null?null:qe(t.monthly,s+".monthly")}}r(ea,"parseGoQuota");function ta(t,s){return(t===null||typeof t!="object"||Array.isArray(t))&&$(s,"object"),{status:t.status==="ok"||t.status==="error"?t.status:"off",message:typeof t.message=="string"?t.message:"",fetchedAt:typeof t.fetchedAt=="number"?t.fetchedAt:0,label:typeof t.label=="string"?t.label:"",unit:typeof t.unit=="string"?t.unit:"USD",remaining:typeof t.remaining=="number"&&Number.isFinite(t.remaining)?t.remaining:0,maxBudget:typeof t.maxBudget=="number"&&Number.isFinite(t.maxBudget)?t.maxBudget:null,spend:typeof t.spend=="number"&&Number.isFinite(t.spend)?t.spend:null}}r(ta,"parseCustomBalance");const ee=r(t=>typeof t=="number"&&Number.isFinite(t)?t:null,"numOrNull");function aa(t){if(t===null||typeof t!="object"||Array.isArray(t))return null;const s={};if(t.providers!==null&&typeof t.providers=="object"&&!Array.isArray(t.providers))for(const[o,a]of Object.entries(t.providers)){if(a===null||typeof a!="object"||Array.isArray(a))continue;const n={},l={};if(a.windows!==null&&typeof a.windows=="object"&&!Array.isArray(a.windows))for(const[i,c]of Object.entries(a.windows))c===null||typeof c!="object"||Array.isArray(c)||(n[i]={percent:ee(c.percent)??0,resetsAt:typeof c.resetsAt=="string"?c.resetsAt:"",localTokens:ee(c.localTokens)??0,localCost:ee(c.localCost)??0,method:c.method==="sample"||c.method==="live"?c.method:"none",sampleAt:ee(c.sampleAt),confidence:c.confidence==="high"||c.confidence==="low"?c.confidence:null,per1Tokens:ee(c.per1Tokens),per1Cost:ee(c.per1Cost),fullTokens:ee(c.fullTokens),fullCost:ee(c.fullCost),sampleCount:ee(c.sampleCount)??0});if(a.intervals!==null&&typeof a.intervals=="object"&&!Array.isArray(a.intervals))for(const[i,c]of Object.entries(a.intervals))Array.isArray(c)&&(l[i]=c.filter(p=>p!==null&&typeof p=="object"&&!Array.isArray(p)).map(p=>({t0:ee(p.t0)??0,t1:ee(p.t1)??0,tokens:ee(p.tokens)??0,cost:ee(p.cost)??0,pct:ee(p.pct)??0,per1Tokens:ee(p.per1Tokens)??0,per1Cost:ee(p.per1Cost)??0})));s[o]={windows:n,intervals:l}}return{generatedAt:ee(t.generatedAt)??0,providers:s}}r(aa,"parsePlanStats");function pt(t,s){return(t===null||typeof t!="object"||Array.isArray(t))&&$(s,"object"),{today:Le(t.today,s+".today"),month:Le(t.month,s+".month"),total:Le(t.total,s+".total"),budgetUsed:typeof t.budgetUsed=="number"&&Number.isFinite(t.budgetUsed)?t.budgetUsed:void 0,balance:t.balance===void 0||t.balance===null?{status:"off",message:"",fetchedAt:0,currency:"",totalBalance:0,grantedBalance:0,toppedUpBalance:0}:Xt(t.balance,s+".balance"),goQuota:t.goQuota===void 0||t.goQuota===null?{status:"off",message:"",fetchedAt:0,rolling:null,weekly:null,monthly:null}:ea(t.goQuota,s+".goQuota"),customBalance:t.customBalance===void 0||t.customBalance===null?{status:"off",message:"",fetchedAt:0,label:"",unit:"USD",remaining:0,maxBudget:null,spend:null}:ta(t.customBalance,s+".customBalance"),codingPlans:t.codingPlans!==null&&typeof t.codingPlans=="object"&&!Array.isArray(t.codingPlans)?t.codingPlans:{},planStats:aa(t.planStats),history:Array.isArray(t.history)?t.history.map((o,a)=>Le(o,s+".history["+a+"]")):[],config:Zt(t.config,s+".config"),reconcile:t.reconcile===null||t.reconcile===void 0?void 0:{ok:t.reconcile.ok===!0,message:typeof t.reconcile.message=="string"?t.reconcile.message:""},priceCatalog:t.priceCatalog!==null&&typeof t.priceCatalog=="object"&&!Array.isArray(t.priceCatalog)?t.priceCatalog:null,meta:{now:typeof t.meta?.now=="number"?t.meta.now:Date.now(),timezoneOffsetMinutes:typeof t.meta?.timezoneOffsetMinutes=="number"?t.meta.timezoneOffsetMinutes:0,timezone:typeof t.meta?.timezone=="string"?t.meta.timezone:"",dayKey:typeof t.meta?.dayKey=="string"?t.meta.dayKey:"",monthKey:typeof t.meta?.monthKey=="string"?t.meta.monthKey:""}}}r(pt,"parseState");function na(t,s){(t===null||typeof t!="object"||Array.isArray(t))&&$(s,"object");const o={ok:t.ok===!0,message:typeof t.message=="string"?t.message:""};return t.state!==void 0&&t.state!==null&&(o.state=pt(t.state,s+".state")),o}r(na,"parseFetchResult");function ie(t){return{parse:t}}r(ie,"codecOf");const We=ie(pt),sa=ie(t=>((t===null||typeof t!="object"||Array.isArray(t))&&$("patch","object"),t)),ge=ie(na),oa=ie(t=>(typeof t!="string"&&$("provider","string"),t)),la=ie(t=>(typeof t!="string"&&$("date","string"),t)),ra=ie(t=>((t===null||typeof t!="object"||Array.isArray(t))&&$("day","object"),t)),ia=ie(t=>(Number.isFinite(Number(t))||$("limit","number"),Number(t))),ft=ie(t=>(typeof t!="string"&&$("sort","string"),t)),ca=ie(t=>((t===null||typeof t!="object"||Array.isArray(t))&&$("topSessions","object"),t)),gt=ie(t=>(typeof t!="string"&&$("target","string"),t)),da=ie(t=>(typeof t!="string"&&$("value","string"),t)),ua={package:"dsh-cost-meter",descriptors:[{id:"dsh-cost-meter#costMeter/getState",service:"costMeter",namespace:"costMeter",method:"getState",invocation:{kind:"direct"},parameters:[],result:{mode:"strict",typeSymbol:"dsh-cost-meter#CostState",schema:We}},{id:"dsh-cost-meter#costMeter/updateConfig",service:"costMeter",namespace:"costMeter",method:"updateConfig",invocation:{kind:"direct"},parameters:[{name:"patch",wire:"patch",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#ConfigPatch",schema:sa}}],result:{mode:"strict",typeSymbol:"dsh-cost-meter#CostState",schema:We}},{id:"dsh-cost-meter#costMeter/fetchPrices",service:"costMeter",namespace:"costMeter",method:"fetchPrices",invocation:{kind:"direct"},parameters:[],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ge}},{id:"dsh-cost-meter#costMeter/refreshBalance",service:"costMeter",namespace:"costMeter",method:"refreshBalance",invocation:{kind:"direct"},parameters:[],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ge}},{id:"dsh-cost-meter#costMeter/refreshGoQuota",service:"costMeter",namespace:"costMeter",method:"refreshGoQuota",invocation:{kind:"direct"},parameters:[],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ge}},{id:"dsh-cost-meter#costMeter/refreshCustomBalance",service:"costMeter",namespace:"costMeter",method:"refreshCustomBalance",invocation:{kind:"direct"},parameters:[],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ge}},{id:"dsh-cost-meter#costMeter/refreshCodingPlan",service:"costMeter",namespace:"costMeter",method:"refreshCodingPlan",invocation:{kind:"direct"},parameters:[{name:"provider",wire:"provider",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#CodingPlanProvider",schema:oa}}],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ge}},{id:"dsh-cost-meter#costMeter/resetHistory",service:"costMeter",namespace:"costMeter",method:"resetHistory",invocation:{kind:"direct"},parameters:[],result:{mode:"strict",typeSymbol:"dsh-cost-meter#CostState",schema:We}},{id:"dsh-cost-meter#costMeter/importLegacyHistory",service:"costMeter",namespace:"costMeter",method:"importLegacyHistory",invocation:{kind:"direct"},parameters:[],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ge}},{id:"dsh-cost-meter#costMeter/getDaySessions",service:"costMeter",namespace:"costMeter",method:"getDaySessions",invocation:{kind:"direct"},parameters:[{name:"date",wire:"date",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#DayKey",schema:la}}],result:{mode:"strict",typeSymbol:"dsh-cost-meter#DayRecord",schema:ra}},{id:"dsh-cost-meter#costMeter/getTopSessions",service:"costMeter",namespace:"costMeter",method:"getTopSessions",invocation:{kind:"direct"},parameters:[{name:"limit",wire:"limit",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#SessionLimit",schema:ia}},{name:"sort",wire:"sort",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#SessionSort",schema:ft},acceptsUndefined:!0},{name:"dir",wire:"dir",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#SessionSortDir",schema:ft},acceptsUndefined:!0}],result:{mode:"strict",typeSymbol:"dsh-cost-meter#TopSessions",schema:ca}},{id:"dsh-cost-meter#costMeter/setCredential",service:"costMeter",namespace:"costMeter",method:"setCredential",invocation:{kind:"direct"},parameters:[{name:"target",wire:"target",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#CredentialTarget",schema:gt}},{name:"value",wire:"value",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#CredentialValue",schema:da}}],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ge}},{id:"dsh-cost-meter#costMeter/clearCredential",service:"costMeter",namespace:"costMeter",method:"clearCredential",invocation:{kind:"direct"},parameters:[{name:"target",wire:"target",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#CredentialTarget",schema:gt}}],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ge}}]};function ma(t,s){const o=s?.models??{};return typeof t=="string"&&t.length>0&&o[t]!==void 0?o[t]:s?.default??{cacheHit:0,cacheMiss:0,output:0}}r(ma,"priceEntryFor");function bt(t){if(t===null||typeof t!="object")return;const s=r(i=>{const c=t[i];return typeof c=="number"&&Number.isFinite(c)&&c>=0?c:void 0},"n"),o=s("cacheMiss")??s("input")??0,n={cacheHit:s("cacheHit")??s("cachedInput")??s("cacheRead")??o,cacheMiss:o,output:s("output")??0},l=s("reasoning");return l!==void 0&&(n.reasoning=l),n}r(bt,"normalizeClientTier");function pa(t){const s=bt(t);if(s===void 0)return null;for(const o of["offPeak","peak","legacyBase"]){const a=bt(t[o]);a!==void 0&&(s[o]=a)}return s}r(pa,"normalizeClientPrice");const ht=Date.parse("2026-08-22T16:00:00Z");function De(t){if(!Number.isFinite(t)||t<ht)return null;const s=Math.floor((t+8*36e5)/864e5),o=(s+4)%7;if(o!==6&&o!==0)return null;const a=o===6?s:s-1;return{start:Math.max(a*864e5-8*36e5,ht),end:(a+2)*864e5-8*36e5}}r(De,"weekendZoneAt");function yt(t,s,o){if(!Array.isArray(o)||o.length===0||De(t)!==null||Number.isFinite(s)&&t<s)return!1;const a=new Date(t).getUTCHours();return o.some(n=>{const l=Number(n.start),i=Number(n.end);return!Number.isFinite(l)||!Number.isFinite(i)?!1:l<i?a>=l&&a<i:a>=l||a<i})}r(yt,"isPeakHour");const fa=Date.parse("2026-08-16T16:00:00Z");function kt(t,s,o){const a=t??{cacheHit:0,cacheMiss:0,output:0},n=r(i=>({cacheHit:i.cacheHit,cacheMiss:i.cacheMiss,output:i.output,reasoning:i.reasoning??0}),"asTier");if(Number.isFinite(s)&&s<fa){const i=a.legacyBase;return n(i===void 0?a:i)}if(o?.enabled!==!0)return n(a);const l=typeof o.effectiveAtMs=="number"&&Number.isFinite(o.effectiveAtMs)?o.effectiveAtMs:void 0;if(yt(s,l,o.windows)){const i=a.peak;return n(i===void 0?a:i)}if(l!==void 0&&s>=l){const i=a.offPeak;return n(i===void 0?a:i)}return n(a)}r(kt,"tierFor");function wt(t,s){const o=Math.max(0,Number(t.input)||0),a=Math.max(0,Number(t.output)||0),n=Math.max(0,Number(t.cacheRead)||0),l=Math.max(0,Number(t.cacheWrite)||0),i=Math.max(0,Number(t.reasoning)||0);return(o*s.cacheMiss+a*s.output+(n+l)*s.cacheHit+i*(s.reasoning??0))/1e6}r(wt,"costOfBuckets");function xt(t,s,o){const a=Number(t);if(!Number.isFinite(a)||a<0||a===0)return 0;if(s!=="CNY")return a;const n=Number(o);return!Number.isFinite(n)||n<=0?a:a/n}r(xt,"usdFromCostLocal");function ne(t,s){const o=t?.barDirections,a=s==="balance"?"remaining":"used";if(o===null||typeof o!="object"||Array.isArray(o))return a;const n=o[s];return n==="remaining"||n==="used"?n:a}r(ne,"barDirectionOf");function ce(t,s){if(t==null||!Number.isFinite(Number(t)))return{width:0,label:null};const o=Math.max(0,Math.min(100,Number(t))),a=s==="remaining"?Math.round((100-o)*10)/10:Math.round(o*10)/10;return{width:a,label:a}}r(ce,"simpleBarByDirection");function le(t,s){const o=typeof s?.symbol=="string"&&s.symbol.length>0?s.symbol:"$",a=Number(s?.decimals),n=Math.max(0,Math.min(10,Number.isFinite(a)?Math.floor(a):2));let l=n;t>0&&t<Math.pow(10,-n)&&(l=n+2);const i=t.toFixed(l),c=i.includes(".")?i.replace(/0+$/,"").replace(/\.$/,""):i;return o+c}r(le,"formatMoneyValue");function V(t,s){const o=Number(s?.exchangeRate),a=t*(Number.isFinite(o)&&o>0?o:1);return le(a,s)}r(V,"formatMoneyUsd");function R(t){const s=Math.max(0,Number(t)||0),o=r(a=>a>=100?String(Math.round(a)):String(Math.round(a*10)/10),"scaled");return s<1e3?String(Math.round(s)):s>=999500?o(s/1e6)+"M":s<1e6?o(s/1e3)+"K":o(s/1e6)+"M"}r(R,"formatTokens");function re(t){return String(t??"").toLowerCase().replace(/\([^)]*\)/g," ").replace(/([^)]*)/g," ").replace(/[^a-z0-9]+/g,"")}r(re,"canonModelIdLocal");function we(t,s){if(typeof t!="string"||t.length===0)return null;const o=Array.isArray(s)?s.filter(v=>typeof v=="string"&&v.length>0):[];if(o.length===0)return null;const a=r(v=>String(v).toLowerCase().replace(/[-@]\d{4}-?\d{2}-?\d{2}$/,"").replace(/[-@]v\d+(\.\d+)*$/,""),"strip"),n=o.find(v=>v===t);if(n!==void 0)return n;const l=re(t);if(l.length===0)return null;const i=o.find(v=>re(v)===l);if(i!==void 0)return i;let c=null,p=0;for(const v of o){const P=re(v);if(!(P.length<4||P===l)&&l.includes(P)&&P.length>p){const C=l.indexOf(P);if(/^\d{1,2}$/.test(l.slice(C+P.length)))continue;c=v,p=P.length}}if(c!==null)return c;const w=a(t),u=o.find(v=>a(v)===w);if(u!==void 0)return u;let y=null;for(const v of o){const P=a(v);if(P.length===0||P===w)continue;const C=w.slice(P.length);if(w.startsWith(P)&&/^[-_./:]/.test(C)){if(/^\d{1,2}$/.test(C.replace(/^[-_./:]+/,"")))continue;(y===null||a(y).length<P.length)&&(y=v)}}if(y!==null)return y;const N=r(v=>a(v).split(/[-_./:]+/).filter(Boolean),"tokensOf"),x=N(t);if(x.length<2)return null;let b=null,A=0;for(const v of o){const P=N(v);let C=0;for(;C<x.length&&C<P.length&&x[C]===P[C];)C+=1;C<x.length&&C<P.length&&/^\d+$/.test(x[C])&&/^\d+$/.test(P[C])||C>=2&&C===P.length&&C<x.length&&x.slice(C).every(f=>/^\d{1,2}$/.test(f))||C>=2&&C<x.length&&C<P.length&&(/^\d{1,2}$/.test(x[C])&&/^[a-z]/.test(P[C])||/^\d{1,2}$/.test(P[C])&&/^[a-z]/.test(x[C]))||C>=2&&(C>A||C===A&&b!==null&&v.length<b.length)&&(b=v,A=C)}return b}r(we,"matchModelIdLocal");const ga=new Set(["lmstudio","ollama","jan","gpt4all","koboldcpp","llamacpp","llama-cpp","localai","vllm","sglang","tabbyapi","lmdeploy","oobabooga","text-generation-webui","llama-server"]),ba=["lmstudio:","lmstudio/","ollama:","ollama/","jan:","jan/","gpt4all:","gpt4all/","koboldcpp:","koboldcpp/","llamacpp:","llamacpp/","llama-cpp:","llama-cpp/","localai:","localai/","vllm:","vllm/","sglang:","sglang/","tabbyapi:","tabbyapi/","lmdeploy:","oobabooga/","text-generation-webui/","llama-server:","gguf:","local:"];function ha(t,s){if(typeof t=="string"&&ga.has(t))return!0;const o=typeof s=="string"?s.toLowerCase():"";return ba.some(a=>o.startsWith(a))}r(ha,"isLocalOriginClient");function ze(t,s,o){const a=o?.prices??{},n=o?.priceMatch==="exact"?"exact":"auto",l=o?.priceOverrides&&typeof o.priceOverrides=="object"?o.priceOverrides:{};let i=String(t??"").trim().toLowerCase();i.startsWith("llm-")&&(i=i.slice(4)),i===""&&(i="deepseek");let c=i,p=s;const w=l[i+":"+s];if(w==="__local__")return{entry:null,priced:!1,billingMode:"flat",matched:!0};if(typeof w=="string"&&w.length>0){const N=w.indexOf(":");if(N>0&&w.slice(N+1).length>0?(c=w.slice(0,N).trim().toLowerCase(),p=w.slice(N+1)):p=w,c==="deepseek"&&p==="__default__")return{entry:a.default??{cacheHit:0,cacheMiss:0,output:0},priced:!0,billingMode:"deepseek-peak",matched:!1}}if(ha(c,p))return{entry:null,priced:!1,billingMode:"flat",matched:!1};if(c==="deepseek"||c.includes("deepseek")){const N=a.models??{},x=N[p]!==void 0?p:n==="auto"?we(p,Object.keys(N)):null;if(x!==null)return{entry:N[x],priced:!0,billingMode:"deepseek-peak",matched:!0};if(n==="auto"){let b=null,A=-1,v="flat";for(const[P,C]of Object.entries(a.providers??{})){const f=C?.models??{},k=we(p,Object.keys(f));if(k===null||f[k]?.unpriced===!0)continue;const d=(k===p||re(k)===re(p)?1e3:0)+re(k).length;d>A&&(b=f[k],A=d,v=f[k]?.billingMode==="deepseek-peak"?"deepseek-peak":"flat")}if(b!==null)return{entry:b,priced:!0,billingMode:v,matched:!0}}return{entry:a.default??{cacheHit:0,cacheMiss:0,output:0},priced:!0,billingMode:"deepseek-peak",matched:!1}}const u=a.providers?.[c]?.models??{},y=u[p]!==void 0?p:n==="auto"?we(p,Object.keys(u)):null;if(y!==null)return{entry:u[y],priced:u[y]?.unpriced!==!0,billingMode:"flat",matched:!0};if(n==="auto"){const N=a.models??{},x=we(p,Object.keys(N));if(x!==null)return{entry:N[x],priced:!0,billingMode:"deepseek-peak",matched:!0};let b=null,A=-1,v="flat";for(const[P,C]of Object.entries(a.providers??{})){if(P===c)continue;const f=C?.models??{},k=we(p,Object.keys(f));if(k===null||f[k]?.unpriced===!0)continue;const d=(k===p||re(k)===re(p)?1e3:0)+re(k).length;d>A&&(b=f[k],A=d,v=f[k]?.billingMode==="deepseek-peak"?"deepseek-peak":"flat")}if(b!==null)return{entry:b,priced:!0,billingMode:v,matched:!0}}if(i!=="deepseek"&&!i.includes("deepseek")&&typeof w=="string"&&w.length>0&&!w.includes(":")){const N=a.models??{},x=N[w]!==void 0?w:n==="auto"?we(w,Object.keys(N)):null;if(x!==null)return{entry:N[x],priced:!0,billingMode:"deepseek-peak",matched:!0}}return{entry:null,priced:!1,billingMode:"flat",matched:!1}}r(ze,"resolveClientPrice");function vt(t,s){return!t||!s?0:typeof t.cost=="number"&&Number.isFinite(t.cost)?t.cost:_e(t,s).total}r(vt,"usageCost");function ya(t){if(t===null||typeof t!="object")return 0;const s=Number(t.cost)||0,o=t.apiCost===void 0||t.apiCost===null?s:Number(t.apiCost);return Number.isFinite(o)&&o>=0?Math.min(o,s):s}r(ya,"moneyCostOf");function z(t,s){return s!==null&&typeof s=="object"&&s.showTotalWithPlan===!0?Number(t?.cost)||0:ya(t)}r(z,"displayCostOf");const ka={go:["go","zen","opencode","opencode-go"]},Nt=["anthropic","zai","minimax","kimi","openrouter","siliconflow","commandcode","scnet","volcengine","go"];function wa(t){const s=String(t??"").trim().toLowerCase();if(s.length===0)return null;for(const[o,a]of Object.entries(ka))if(a.includes(s))return o;return Nt.includes(s)?s:null}r(wa,"planProviderIdOfLocal");function xa(t){const s=new Set,o=t?.codingPlans;if(o!==null&&typeof o=="object")for(const a of Nt)a!=="go"&&o[a]?.enabled===!0&&s.add(a);return t?.goQuota?.enabled===!0&&s.add("go"),s}r(xa,"enabledPlanSetOfLocal");function va(t,s,o){const a=String(t??"").trim().toLowerCase();if(a.length>0&&a!=="deepseek"&&!a.includes("deepseek"))return!1;const n=re(s);if(n.length===0)return!1;const l=o?.prices,i=l?.models??{};for(const c of Object.keys(i))if(re(c)===n)return!1;for(const c of Object.values(l?.providers??{}))for(const p of Object.keys(c?.models??{}))if(re(p)===n)return!0;return!1}r(va,"isRoutedThirdPartyCallLocal");function Ge(t,s,o){let a=wa(t);if(a===null&&va(t,s,o)&&(a="go"),a===null)return"api";const n=o?.planBilling?.models;if(n!==null&&typeof n=="object"){const i=n[t+":"+s];if(i==="plan"||i==="api")return i;const c=n[a+":"+s];if(c==="plan"||c==="api")return c}const l=o?.planBilling?.providers?.[a];return l==="plan"||l==="api"?l:xa(o).has(a)?"plan":"api"}r(Ge,"billingClassOfLocal");function _e(t,s){if(!t||!s)return{total:0,api:0};const o={enabled:s.peakEnabled===!0,effectiveAtMs:Date.parse(s.peakEffectiveAt||""),windows:s.peakWindows},a=Date.now(),n=t.byProviderModel??t.byModel??{};let l=0,i=0;for(const y of Object.keys(n)){const N=y.indexOf(":"),x=N>0?y.slice(0,N):"deepseek",b=N>0?y.slice(N+1):y,A=ze(x,b,s);if(A.priced){const v=wt(n[y],kt(pa(A.entry),a,{...o,enabled:A.billingMode==="deepseek-peak"&&o.enabled})),P=xt(v,A.billingMode==="deepseek-peak"&&s.prices?.currency==="CNY"?"CNY":"USD",s.exchangeRate);l+=P,Ge(x,b,s)==="api"&&(i+=P)}}const c={input:0,output:0,cacheRead:0,cacheWrite:0,reasoning:0};for(const y of Object.keys(n))c.input+=n[y].input??0,c.output+=n[y].output??0,c.cacheRead+=n[y].cacheRead??0,c.cacheWrite+=n[y].cacheWrite??0,c.reasoning+=n[y].reasoning??0;const p={input:Math.max(0,(t.input??0)-c.input),output:Math.max(0,(t.output??0)-c.output),cacheRead:Math.max(0,(t.cacheRead??0)-c.cacheRead),cacheWrite:Math.max(0,(t.cacheWrite??0)-c.cacheWrite),reasoning:Math.max(0,(t.reasoning??0)-c.reasoning)},w=wt(p,kt(ma("default",s.prices),a,o)),u=xt(w,s.prices?.currency==="CNY"?"CNY":"USD",s.exchangeRate);return l+=u,i+=u,{total:l,api:i}}r(_e,"usageSplit");function St(t,s){if(!t||!s)return!1;const o=t.byProviderModel??{};for(const a of Object.keys(o)){const n=a.indexOf(":"),l=n>0?a.slice(0,n):"deepseek",i=n>0?a.slice(n+1):a;if(Ge(l,i,s)==="plan")return!0}return!1}r(St,"usageHasPlanClass");function Ct(t){return(t?.input??0)+(t?.cacheRead??0)+(t?.cacheWrite??0)}r(Ct,"billedInput");function Ke(t){const s=Math.abs(Math.round(Number(t)||0)),o=Math.floor(s/60),a=s%60;return"UTC"+(Number(t)<0?"-":"+")+o+(a>0?":"+String(a).padStart(2,"0"):"")}r(Ke,"formatTzOffset");function Na(t){const s=t?.meta,o=Number(s?.timezoneOffsetMinutes);if(!Number.isFinite(o))return null;const a=-new Date().getTimezoneOffset();if(a===o)return null;const n=typeof s?.timezone=="string"&&s.timezone.length>0?s.timezone:"";return{hostLabel:n?n+" ("+Ke(o)+")":Ke(o),browserLabel:Ke(a)}}r(Na,"timezoneMismatchOf");function Sa(t){let s=t;const o=new Set;return{getSnapshot:r(()=>s,"getSnapshot"),subscribe:r(a=>(o.add(a),()=>{o.delete(a)}),"subscribe"),set:r(a=>{if(a!==s){s=a;for(const n of[...o])n()}},"set")}}r(Sa,"makeStore");const{createElement:e,Fragment:E,useState:L,useEffect:se,useRef:xe}=Ce;function Re({target:t,configured:s,source:o,t:a,api:n,placeholder:l,disabled:i}){const[c,p]=L(""),[w,u]=L(!1),[y,N]=L(null),x=i===!0||w,b=r(async()=>{const v=c.trim();if(!(v.length===0||x)){u(!0),N(null);try{const P=await n.setCredential(t,v);p(""),N({kind:"ok",text:P?.message??a("credentialSave")})}catch(P){N({kind:"err",text:String(P?.message??P)})}finally{u(!1)}}},"save"),A=r(async()=>{if(!x){u(!0),N(null);try{const v=await n.clearCredential(t);p(""),N({kind:"ok",text:v?.message??a("credentialClear")})}catch(v){N({kind:"err",text:String(v?.message??v)})}finally{u(!1)}}},"clear");return e("div",{className:"cm-field"},e("input",{className:"cm-input",type:"password",value:c,placeholder:typeof l=="string"?l:"",disabled:x,autoComplete:"off",onChange:r(v=>p(v.target.value),"onChange")}),e("div",{className:"cm-buttons"},e("button",{className:"cm-btn small",onClick:b,disabled:x||c.trim().length===0},a(w?"credentialSaving":"credentialSave")),s===!0?e("button",{className:"cm-btn small",onClick:A,disabled:x},a("credentialClear")):null),e("span",{className:"cm-hint"},s===!0?a("credentialConfiguredOf",{source:typeof o=="string"&&o.length>0?o:"unknown"}):a("credentialNotConfigured")),e("span",{className:"cm-hint"},a("credentialInputHint")),y!=null?e("div",{className:"cm-msg "+y.kind},y.text):null)}r(Re,"CredentialField");function Ca({pending:t,t:s}){return!Array.isArray(t)||t.length===0?null:e("div",{className:"cm-msg err"},e("div",null,s("secretMigrationPending")),e("div",null,t.join("\u3001")))}r(Ca,"SecretMigrationNotice");function Ye({size:t=16,className:s}){return e("svg",{width:t,height:t,className:s,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e("path",{d:"M4 4H12A2 2 0 0 1 14 6V11.5A2 2 0 0 1 12 13.5H4A2 2 0 0 1 2 11.5V6A2 2 0 0 1 4 4ZM4 5.3H12A0.7 0.7 0 0 1 12.7 6V11.5A0.7 0.7 0 0 1 12 12.2H4A0.7 0.7 0 0 1 3.3 11.5V6A0.7 0.7 0 0 1 4 5.3Z",fill:"currentColor",fillRule:"evenodd"}),e("path",{d:"M3.3 5.3H12.7V7.1H3.3Z",fill:"currentColor"}),e("path",{d:"M8 2.8A1.3 1.3 0 1 0 8 5.4A1.3 1.3 0 1 0 8 2.8Z",fill:"currentColor"}))}r(Ye,"WalletIcon");function Ve(t,s){const o=xe(!1),a=xe(""),n=s!==null&&typeof s=="object"?[s.input,s.cacheRead,s.cacheWrite,s.output,s.reasoning,s.cost].map(l=>String(l??0)).join("|"):"";se(()=>{if(!o.current){o.current=!0,a.current=n;return}if(n===""||n===a.current)return;a.current=n;const l=setTimeout(()=>{t.api?.reload?.()},800);return()=>clearTimeout(l)},[n])}r(Ve,"useProjectionRefresh");function Aa(t){const s=t.useProjection?t.useProjection("costUsage"):void 0,o=t.useCost?t.useCost(w=>w):void 0;Ve(t,s);const a=o?.state?.config;if(!s||!a||Ct(s)+(s?.output??0)===0)return null;const n=K(q(a.locale));let l=0,i=vt(s,a);if(a.showTotalWithPlan!==!0&&St(s,a)){const w=_e(s,a);l=Math.max(0,w.total-w.api),l>0&&(i=w.api)}const c=Ct(s),p=[n("sessionCostTitle"),n("sessionDetailTokens",{input:R(s?.input??0),cache:R((s?.cacheRead??0)+(s?.cacheWrite??0)),output:R(s?.output??0)}),n("sessionDetailCache",{read:R(s?.cacheRead??0),write:R(s?.cacheWrite??0)}),n("cost",{amount:V(i,a)}),...l>0?[n("sessionDetailPlan",{amount:V(l,a)})]:[]].join("; ");return e(X,{label:p,side:"top",delayMs:500},e("div",{className:"cm-chip"},l>0?n("costChipPlan",{amount:V(i,a)}):n("cost",{amount:V(i,a)})))}r(Aa,"SessionCost");function Pa(t){const s=t.useProjection?t.useProjection("costUsage"):void 0,o=t.useCost?t.useCost(u=>u):void 0;Ve(t,s);const a=o?.state?.config;if(!s||!a)return null;const n=s.input??0,l=(s.cacheRead??0)+(s.cacheWrite??0),i=s.output??0;if(n+l+i===0)return null;const c=K(q(a.locale));let p=0,w=vt(s,a);if(a.showTotalWithPlan!==!0&&St(s,a)){const u=_e(s,a);p=Math.max(0,u.total-u.api),p>0&&(w=u.api)}return e("div",{className:"cm-root"},p>0?c("sessionLineSplit",{amount:V(w,a),planAmount:V(p,a),input:R(n),cache:R(l),output:R(i)}):c("sessionLine",{amount:V(w,a),input:R(n),cache:R(l),output:R(i)}))}r(Pa,"DockLine");const Ma={USD:"$",CNY:"\xA5",EUR:"\u20AC"};function pe(t,s,o){const a=typeof o=="string"?o.toUpperCase():"",n=typeof s?.symbol=="string"&&s.symbol.length>0?s.symbol:"$";return le(t,{symbol:Ma[a]??n,decimals:Math.max(2,Math.min(10,Math.floor(Number(s?.decimals)||2)))})}r(pe,"formatBalanceMoney");function At(t,s){const o=Number(t?.balance?.budgetCap);if(Number.isFinite(o)&&o>0)return o;const a=Number(s?.maxBudget);return Number.isFinite(a)&&a>0?a:null}r(At,"resolveBalanceCap");function Ta(t){const s=t.today,o=s?.byProviderModel;if(o===null||typeof o!="object"||Object.keys(o).length===0)return Number(s?.cost)||0;let a=0;for(const[n,l]of Object.entries(o)){const i=n.indexOf(":");let c=i>=0?n.slice(0,i):n;c.startsWith("llm-")&&(c=c.slice(4)),!(c!=="deepseek"&&c!=="deepseek-official")&&(a+=Number(l?.cost)||0)}return a}r(Ta,"todayOfficialUsd");function Pt(t,s,o,a){const n=o==="official"?Ta(t):Number(t.today?.cost)||0;if(o==="custom"){if(Ot(s,a)==="USD")return n;const c=Number(s?.exchangeRate);return n*(Number.isFinite(c)&&c>0?c:1)}const l=Number(s?.exchangeRate);return n*(Number.isFinite(l)&&l>0?l:1)}r(Pt,"todayUsedInBalanceCurrency");function Mt({remaining:t,spend:s,todayUsed:o,cap:a}){if(a===null||a<=0)return{remainingPct:100,todayPct:0,spentPct:0,hasCap:!1,pastSpend:0,today:0};const n=Math.max(0,Number(t)||0),l=Math.max(0,Number(s)||0),i=Math.max(0,Math.min(l,Number(o)||0)),c=Math.max(0,l-i),p=Math.max(0,Math.min(100,n/a*100)),w=Math.max(0,Math.min(100-p,i/a*100)),u=Math.max(0,Math.min(100-p-w,c/a*100));return{remainingPct:p,todayPct:w,spentPct:u,hasCap:!0,pastSpend:c,today:i}}r(Mt,"computeBalanceSegments");function Je(t,s){const o=t.customBalance,a=At(s,o),n=Number(o?.remaining)||0,l=Number(o?.spend)||0,i=Pt(t,s,"custom",o);return{cap:a,...Mt({remaining:n,spend:l,todayUsed:i,cap:a})}}r(Je,"segmentsForCustomBalance");function Ba(t,s){const o=t.balance,a=At(s,null),n=Number(o?.totalBalance)||0,l=Pt(t,s,"official",null),i=a!==null?Math.max(0,a-n):0;return{cap:a,...Mt({remaining:n,spend:i,todayUsed:l,cap:a})}}r(Ba,"segmentsForOfficialBalance");function $e(t){const{segments:s,direction:o="remaining"}=t,{remainingPct:a,todayPct:n,spentPct:l}=s,i=[];a>0&&i.push(e("div",{className:"cm-bbox-fill",style:{width:a+"%"}})),n>0&&i.push(e("div",{className:"cm-bbox-seg-today",style:{width:n+"%"}})),l>0&&i.push(e("div",{className:"cm-bbox-seg-spent",style:{width:l+"%"}})),i.length===0&&i.push(e("div",{className:"cm-bbox-fill",style:{width:"100%"}}));const c=o==="used"?[...i].reverse():i;return e("div",{className:"cm-bbox-bar segments"+(o==="used"?" rev":"")},...c)}r($e,"BalanceBar");function Tt(t,s,o,a,n){const l=[t("balanceBarRemaining",{amount:a})];return o.today>0&&l.push(t("balanceBarToday",{amount:s(o.today)})),o.pastSpend>0&&l.push(t("balanceBarSpent",{amount:s(o.pastSpend)})),n!==null&&n>0&&l.push(t("balanceBudgetCapLabel")+": "+s(n)),l.join(" \xB7 ")}r(Tt,"balanceBarTooltipLines");function ye(t){const[s,o]=L(!1),[a,n]=L(null);return{busy:s,err:a,run:r(()=>{s||typeof t!="function"||(o(!0),n(null),Promise.resolve().then(t).catch(i=>{n(i?.message??String(i))}).finally(()=>{o(!1)}))},"run")}}r(ye,"useClickRefresh");const de=r((t,s)=>({role:"button",tabIndex:0,"aria-busy":t?"true":"false",onClick:s,onKeyDown:r(o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),s())},"onKeyDown")}),"clickableRefreshProps");function fe(t,s){const o=[t("clickToRefresh")];return s.busy&&o.push(t("refreshing")),s.err&&o.push("\u26A0 "+t("balanceRefreshFailed",{message:s.err})),o}r(fe,"clickRefreshTipLines");const Oa="https://platform.deepseek.com/usage";function Bt(t){return e("a",{className:"cm-bal-link",href:Oa,target:"_blank",rel:"noreferrer noopener",title:t("balanceRechargeLink"),"aria-label":t("balanceRechargeLink"),onClick:r(s=>s.stopPropagation(),"onClick"),onKeyDown:r(s=>s.stopPropagation(),"onKeyDown")},"\u2197")}r(Bt,"rechargeLinkEl");function La(t){const{state:s,wide:o,api:a}=t,n=s.balance,l=K(q(s.config?.locale)),i=ye(a?()=>a.refreshBalance():null);if(!n||n.status==="off")return null;if(n.status==="error")return e(X,{label:[l("balanceQueryFailed",{message:n.message||l("unknownError")}),...fe(l,i)].join("; "),side:"right",delayMs:300},e("div",{className:"cm-foot clickable"+(o?"":" cm-foot-rail")+" cm-bal-err"+(i.busy?" busy":""),...de(i.busy,i.run)},o?e(E,null,l("balance")," ",e("span",{className:"cm-num"},l("queryFailed"))):"\u26A0"));const c=[l("balanceTitle"),l("totalBalance",{amount:pe(n.totalBalance,s.config,n.currency)}),l("grantedToppedUp",{granted:pe(n.grantedBalance,s.config,n.currency),toppedUp:pe(n.toppedUpBalance,s.config,n.currency)}),l("updatedAt",{time:n.fetchedAt>0?new Date(n.fetchedAt).toLocaleTimeString():"\u2014"}),...s.reconcile?.ok===!1?["\u26A0 "+s.reconcile.message]:[],...fe(l,i)].join("; ");return e(X,{label:c,side:"right",delayMs:300},e("div",{className:"cm-foot clickable"+(o?"":" cm-foot-rail")+(i.busy?" busy":""),...de(i.busy,i.run)},o?e(E,null,l("balance")," ",e("span",{className:"cm-num"},pe(n.totalBalance,s.config,n.currency))," ",Bt(l),s.reconcile?.ok===!1?" \u26A0":""):e(Ye,{size:16})))}r(La,"BalanceRowContent");function Da(t){const{state:s,wide:o,api:a}=t,n=s.config,l=s.balance,i=K(q(n?.locale)),c=ye(a?()=>a.refreshBalance():null);if(!l||l.status!=="ok")return null;const p=Ba(s,n),w=pe(l.totalBalance,n,l.currency),u=r(x=>pe(x,n,l.currency),"formatAmt"),y=[i("balanceTitle"),Tt(i,u,p,w,p.cap),i("grantedToppedUp",{granted:pe(l.grantedBalance,n,l.currency),toppedUp:pe(l.toppedUpBalance,n,l.currency)}),i("updatedAt",{time:l.fetchedAt>0?new Date(l.fetchedAt).toLocaleTimeString():"\u2014"}),...s.reconcile?.ok===!1?["\u26A0 "+s.reconcile.message]:[],...fe(i,c)].join("; "),N=e(E,null,e("div",{className:"cm-bbox-head"},e("span",{className:"cm-bbox-label"},i("balance")),e("span",{className:"cm-bbox-pct cm-num cm-bal-amt"},w),Bt(i)),e($e,{segments:p,direction:ne(n,"balance")}));return e(X,{label:y,side:"right",delayMs:300},e("div",{className:"cm-bbox clickable"+(o?"":" rail")+(c.busy?" busy":""),...de(c.busy,c.run)},o?N:e("div",{className:"cm-bbox-rail cm-num"},Math.round(p.remainingPct)+"%")))}r(Da,"BalanceBox");function Ze(t,s){const o=typeof t?.label=="string"?t.label:"",a=typeof t?.labelEn=="string"?t.labelEn:"";return s==="en"?a||o||"Custom balance":o||a||"\u81EA\u5B9A\u4E49\u4F59\u989D"}r(Ze,"resolveCustomBalanceLabel");function Ot(t,s){const o=t?.customBalance?.unit;return o==="CNY"||o==="EUR"||o==="USD"?o:s?.unit==="CNY"||s?.unit==="EUR"?s.unit:"USD"}r(Ot,"customBalanceUnitOf");function be(t,s,o){const a=Ot(s,o),n=Math.max(2,Math.min(6,Math.floor(Number(s?.decimals)||4))),l=a==="CNY"?"\xA5":a==="EUR"?"\u20AC":"$",i=Number(t);if(!Number.isFinite(i))return"\u2014";let c=i.toFixed(n);return c.includes(".")&&(c=c.replace(/0+$/,"").replace(/\.$/,"")),l+c}r(be,"formatCustomBalanceMoney");function Xe(t,s,o,a){const n=be(t.remaining,s,t),l=r(y=>be(y,s,t),"formatAmt");if(a&&s.balance?.showProgressBar===!0){const y=Je(a,s);return[Tt(o,l,y,n,y.cap),o("updatedAt",{time:t.fetchedAt>0?new Date(t.fetchedAt).toLocaleTimeString():"\u2014"})].join(" \xB7 ")}const i=t.spend!==null?be(t.spend,s,t):"\u2014",c=t.maxBudget!==null?be(t.maxBudget,s,t):"\u2014",p=Number(s?.balance?.budgetCap),w=Number.isFinite(p)&&p>0?o("balanceBudgetCapLabel")+": "+be(p,s,t):"",u=t.maxBudget!==null&&t.spend!==null?o("customBalanceLine",{remaining:n,spend:i,maxBudget:c,time:t.fetchedAt>0?new Date(t.fetchedAt).toLocaleTimeString():"\u2014"}):o("customBalanceRemaining",{amount:n});return w?u+" \xB7 "+w:u}r(Xe,"customBalanceDetailText");function Ra(t,s,o){const a=t.customBalance,n=s.customBalance??{},l=Ze(n,q(s?.locale)),i=be(a.remaining,s,a),c=Je(t,s);return{level:"ok",rail:Math.round(c.remainingPct)+"%",body:e(E,null,e("div",{className:"cm-bbox-head"},e("span",{className:"cm-bbox-label"},l),e("span",{className:"cm-bbox-pct cm-num cm-bal-amt"},i)),e($e,{segments:c,direction:ne(s,"balance")}))}}r(Ra,"customBalanceBoxBody");function Ea(t){const{state:s,wide:o,api:a}=t,n=s.customBalance,l=s.config,i=K(q(l?.locale)),c=ye(a?()=>a.refreshCustomBalance():null);if(!n||n.status!=="ok")return null;const p=Ra(s,l,i),w=[Xe(n,l,i,s),...fe(i,c)].join(" \xB7 ");return e(X,{label:w,side:"right",delayMs:300},e("div",{className:"cm-bbox clickable"+(p.level==="ok"?"":" "+p.level)+(o?"":" rail")+(c.busy?" busy":""),...de(c.busy,c.run)},o?p.body:e("div",{className:"cm-bbox-rail cm-num"},p.rail)))}r(Ea,"CustomBalanceBox");function ja(t){const{state:s,wide:o,api:a}=t,n=s.customBalance,l=s.config,i=K(q(l?.locale)),c=ye(a?()=>a.refreshCustomBalance():null);if(!n||n.status==="off")return null;const p=Ze(l.customBalance??{},q(l?.locale));if(n.status==="error")return e(X,{label:[n.message||i("unknownError"),...fe(i,c)].join("; "),side:"right",delayMs:300},e("div",{className:"cm-foot clickable"+(o?"":" cm-foot-rail")+" cm-bal-err"+(c.busy?" busy":""),...de(c.busy,c.run)},o?e(E,null,p," ",e("span",{className:"cm-num"},i("queryFailed"))):"\u26A0"));const w=be(n.remaining,l,n),u=[Xe(n,l,i,s),...fe(i,c)].join(" \xB7 ");return e(X,{label:u,side:"right",delayMs:300},e("div",{className:"cm-foot clickable"+(o?"":" cm-foot-rail")+(c.busy?" busy":""),...de(c.busy,c.run)},o?e(E,null,p," ",e("span",{className:"cm-num"},w)):e(Ye,{size:16})))}r(ja,"CustomBalanceRowContent");function Fa(t){const o=(t.useCost?t.useCost(b=>b):void 0)?.state;if(!o)return null;const a=o.config,n=K(q(a?.locale)),l=a.corner??{enabled:!1,goRolling:!0,goWeekly:!0,goMonthly:!0,budget:!0},i=o.goQuota,c=a?.goQuota?.enabled!==!1&&i?.status==="ok",p=r(b=>b!==null&&typeof b?.percent=="number"?Math.round(Math.max(0,Math.min(100,b.percent))):null,"pctOf"),w=[],u=r((b,A,v,P)=>{if(!b||!c)return;const C=p(A);if(C===null)return;const f=typeof A.resetsAt=="string"&&A.resetsAt.length>0?n("goResetAt",{time:new Date(A.resetsAt).toLocaleString()}):"";w.push({key:v,text:n(v)+" "+C+"%",tip:n(P)+": "+C+"%"+(f?" \xB7 "+f:""),level:C>=100?"over":C>=80?"warn":"ok"})},"pushGo"),y=a?.goQuota?.main==="weekly"||a?.goQuota?.main==="monthly"?a.goQuota.main:"rolling",N=[y,...["rolling","weekly","monthly"].filter(b=>b!==y)],x=r(b=>b==="rolling"?["goRolling",i?.rolling,"goShortRolling","cornerGoRolling"]:b==="weekly"?["goWeekly",i?.weekly,"goShortWeekly","cornerGoWeekly"]:["goMonthly",i?.monthly,"goShortMonthly","cornerGoMonthly"],"defOf");for(const b of N){const[A,v,P,C]=x(b);u(l[A]===!0,v,P,C)}if(l.budget===!0){const b=a.budget??{enabled:!1,amount:100,period:"month"};if(b.enabled===!0){const A=Number(a.exchangeRate),P=(o.budgetUsed??(b.period==="day"?z(o.today,a):b.period==="all"?z(o.total,a):z(o.month,a)))*(Number.isFinite(A)&&A>0?A:1),C=Math.max(0,Number(b.amount)||0),f=C>0?Math.min(999,P/C*100):null;if(f!==null){const k=f>=100?"over":f>=80?"warn":"ok";w.push({key:"budget",text:n("budgetShort")+" "+f.toFixed(1)+"%",tip:n("budgetOf",{period:n(Be[b.period]??"periodMonth")})+" \xB7 "+n("usedOf",{used:le(P,a),amount:le(C,a)}),level:k})}}}return w.length===0?null:e("div",{className:"cm-corner"},w.map(b=>e(X,{key:b.key,label:b.tip,side:"top",delayMs:500},e("span",{className:"cm-corner-chip"+(b.level==="ok"?"":" "+b.level)},b.text))))}r(Fa,"CornerChips");function Ee(t,s){if(!Array.isArray(s)||s.length===0||!Number.isFinite(t))return null;const o=r((p,w)=>{const u=new Date(t);return u.setUTCDate(u.getUTCDate()+p),u.setUTCHours(w,0,0,0),u.getTime()},"hourAt"),a=[];for(let p=-4;p<=4;p+=1)for(const w of s){const u=Number(w?.start),y=Number(w?.end);if(!Number.isFinite(u)||!Number.isFinite(y))continue;const N={at:o(p,u),intoPeak:!0},x={at:o(y<=u?p+1:p,y),intoPeak:!1};De(N.at)===null&&a.push(N),De(x.at)===null&&a.push(x)}let n=null,l=null;for(const p of a)p.at<=t&&(n===null||p.at>n.at)&&(n=p),p.at>t&&(l===null||p.at<l.at)&&(l=p);const i=De(t);return i!==null?l===null?null:{inPeak:!1,weekend:!0,prevAtMs:i.start,nextAtMs:l.at,nextIntoPeak:l.intoPeak}:n===null||l===null?null:{inPeak:yt(t,void 0,s),weekend:!1,prevAtMs:n.at,nextAtMs:l.at,nextIntoPeak:l.intoPeak}}r(Ee,"peakPhaseAt");function je(t,s){if(!t||t.peakNotice===!1||t.peakEnabled!==!0)return null;const o=Date.parse(t.peakEffectiveAt||"");if(Number.isFinite(o)&&s<o)return null;const a=Array.isArray(t.peakWindows)?t.peakWindows:[];return Ee(s,a)}r(je,"peakView");function Fe(t){return t.weekend===!0?{short:"weekendShort",chip:"weekendChip",notice:"weekendAllOffPeak"}:t.inPeak?{short:"peakShort",chip:"peakShort",notice:"peakNotice"}:{short:"offPeakShort",chip:"offPeakShort",notice:"offPeakActive"}}r(Fe,"phaseLabelKeys");function ue(t,s,o){const a=Math.max(0,t.nextAtMs-s),n=Math.max(1,Math.ceil(a/6e4)),l=Math.floor(n/60),i=n%60;return l>0?i>0?o("countdownHourMinute",{h:l,m:i}):o("countdownHoursOnly",{h:l}):o("countdownMinute",{m:n})}r(ue,"countdownText");const et="cm-peak-alert-preview";let Lt=0;function Ua(t){const s=t.useCost?t.useCost(A=>A):void 0,o=s?.state?.config,[a,n]=L(Date.now()),[l,i]=L(null),[c,p]=L(null);if(se(()=>{const A=window.setInterval(()=>n(Date.now()),1e4);return()=>window.clearInterval(A)},[]),se(()=>{const A=r(v=>{const P=v.detail?.kind==="offpeak"?"offpeak":"peak";p(P);const C=s?.state?.config;if(C?.peakAlertWebNotify===!0&&window.Notification&&Notification.permission==="granted"){const f=K(q(C.locale));try{new Notification(f(P==="peak"?"peakAlertTitlePeak":"peakAlertTitleOffPeak")+f("peakAlertPreviewTag"),{body:f("peakAlertBody",{time:f("countdownMinute",{m:2}),phase:f(P==="peak"?"peakAlertPhasePeak":"peakAlertPhaseOffPeak")})})}catch{}}},"onPreview");return window.addEventListener(et,A),window.__cmPeakAlertLive=!0,()=>{window.removeEventListener(et,A),window.__cmPeakAlertLive=!1}},[]),se(()=>{if(!o||o.peakAlertEnabled!==!0||o.peakEnabled!==!0||o.peakAlertWebNotify!==!0||!window.Notification||Notification.permission!=="granted")return;const A=Ee(a,Array.isArray(o.peakWindows)?o.peakWindows:[]);if(A===null)return;const v=o.peakAlertTarget==="peak"||o.peakAlertTarget==="offpeak"?o.peakAlertTarget:"both",P=A.nextIntoPeak===!0;if(v!=="both"&&v!==(P?"peak":"offpeak"))return;const C=Number(o.peakAlertAhead),f=(Number.isFinite(C)&&C>=1?C:2)*6e4;if(a<A.nextAtMs-f||a>=A.nextAtMs||Lt===A.nextAtMs)return;const k=K(q(o.locale));Lt=A.nextAtMs;try{new Notification(k(P?"peakAlertTitlePeak":"peakAlertTitleOffPeak"),{body:k("peakAlertBody",{time:ue(A,a,k),phase:k(P?"peakAlertPhasePeak":"peakAlertPhaseOffPeak")})})}catch{}},[a]),!o||o.peakEnabled!==!0)return null;let w=null;if(o.peakAlertEnabled===!0){const A=Date.parse(o.peakEffectiveAt||"");if(!(Number.isFinite(A)&&a<A)){const v=Ee(a,Array.isArray(o.peakWindows)?o.peakWindows:[]);if(v!==null){const P=o.peakAlertTarget==="peak"||o.peakAlertTarget==="offpeak"?o.peakAlertTarget:"both",C=Number(o.peakAlertAhead),f=(Number.isFinite(C)&&C>=1?C:2)*6e4;(P==="both"||P===(v.nextIntoPeak?"peak":"offpeak"))&&a>=v.nextAtMs-f&&a<v.nextAtMs&&l!==v.nextAtMs&&(w=v)}}}let u=null,y=!1,N=null;if(w!==null)u=w,y=w.nextIntoPeak===!0,N=r(()=>i(w.nextAtMs),"dismiss");else if(c!==null)u={nextAtMs:a+2*6e4,nextIntoPeak:c==="peak"},y=c==="peak",N=r(()=>p(null),"dismiss");else return null;const x=K(q(o.locale)),b=o.peakAlertPosition==="center"?"cm-peak-alert-center":"cm-peak-alert-corner";return e("div",{className:"cm-peak-alert "+b+" "+(y?"cm-peak-alert-peak":"cm-peak-alert-offpeak"),role:"alert"},e("div",{className:"cm-peak-alert-badge"},x(y?"peakAlertBadgePeak":"peakAlertBadgeOffPeak")),e("div",{className:"cm-peak-alert-title"},x(y?"peakAlertTitlePeak":"peakAlertTitleOffPeak")),e("div",{className:"cm-peak-alert-body"},x("peakAlertBody",{time:ue(u,a,x),phase:x(y?"peakAlertPhasePeak":"peakAlertPhaseOffPeak")})),e("div",{className:"cm-peak-alert-actions"},e("button",{className:"cm-btn",onClick:N},x("peakAlertBtn"))))}r(Ua,"PeakAlert");function Ia(t){const{config:s,t:o}=t,[a,n]=L(Date.now());se(()=>{const p=window.setInterval(()=>n(Date.now()),3e4);return()=>window.clearInterval(p)},[]);const l=je(s,a);if(l===null)return null;const i=Fe(l),c=l.nextIntoPeak?o("nextPeakIn",{time:ue(l,a,o)}):o("nextOffPeakIn",{time:ue(l,a,o)});return e(X,{label:o(i.notice),side:"right",delayMs:300},e("div",{className:"cm-peak-strip "+(l.weekend?"weekend":l.inPeak?"peak":"off")},e("div",{className:"cm-peak-track"},e("div",{className:"cm-peak-segment cm-peak-high"}),e("div",{className:"cm-peak-segment cm-peak-low"}),e("div",{className:"cm-peak-marker",style:{left:l.weekend?"50%":l.inPeak?"25%":"75%"}})),e("span",{className:"cm-peak-chip"},o(i.chip)+" \xB7 "+c)))}r(Ia,"PeakStrip");function Ha(t){const{config:s,t:o}=t,[a,n]=L(Date.now());se(()=>{const p=window.setInterval(()=>n(Date.now()),3e4);return()=>window.clearInterval(p)},[]);const l=je(s,a);if(l===null)return null;const i=Fe(l),c=l.nextIntoPeak?o("nextPeakIn",{time:ue(l,a,o)}):o("nextOffPeakIn",{time:ue(l,a,o)});return e(X,{label:o(i.notice),side:"right",delayMs:300},e("div",{className:"cm-peak-classic "+(l.weekend?"weekend":l.inPeak?"peak":"off")},e("div",{className:"cm-peak-classic-marker",style:{left:l.weekend?"50%":l.inPeak?"25%":"75%"}}),e("div",{className:"cm-peak-track"},e("div",{className:"cm-peak-segment cm-peak-high"}),e("div",{className:"cm-peak-segment cm-peak-low"})),e("span",{className:"cm-peak-classic-chip"},o(i.chip)+" \xB7 "+c)))}r(Ha,"PeakStripClassic");function tt(t,s,o){return e(s?.peakStyle==="classic"?Ha:Ia,{config:s,t:o})}r(tt,"peakNoticeEl");function Qa(t){const{config:s,t:o}=t,[a,n]=L(Date.now());se(()=>{const w=window.setInterval(()=>n(Date.now()),3e4);return()=>window.clearInterval(w)},[]);const l=je(s,a);if(l===null)return null;const i=Fe(l),c=l.nextIntoPeak?o("nextPeakIn",{time:ue(l,a,o)}):o("nextOffPeakIn",{time:ue(l,a,o)}),p=[o(i.notice),c];return e(X,{label:p,side:"right",delayMs:300},e("div",{className:"cm-peak-rail "+(l.weekend?"weekend":l.inPeak?"peak":"off"),"aria-label":p.join("; ")},e("div",{className:"cm-peak-rail-track"},e("div",{className:"cm-peak-rail-segment cm-peak-rail-high"}),e("div",{className:"cm-peak-rail-segment cm-peak-rail-low"}),e("div",{className:"cm-peak-rail-marker",style:{top:l.weekend?"50%":l.inPeak?"25%":"75%"}})),e("span",{className:"cm-peak-rail-label"},o(i.short))))}r(Qa,"PeakRailStrip");function qa(t){const{config:s,t:o}=t,[a,n]=L(Date.now());se(()=>{const w=window.setInterval(()=>n(Date.now()),3e4);return()=>window.clearInterval(w)},[]);const l=je(s,a);if(l===null)return null;const i=Fe(l),c=l.nextIntoPeak?o("nextPeakIn",{time:ue(l,a,o)}):o("nextOffPeakIn",{time:ue(l,a,o)}),p=[o(i.notice),c];return e(X,{label:p,side:"right",delayMs:300},e("div",{className:"cm-peak-rail-classic "+(l.weekend?"weekend":l.inPeak?"peak":"off"),"aria-label":p.join("; ")},e("div",{className:"cm-peak-rail-classic-track"},e("div",{className:"cm-peak-rail-classic-segment peak"}),e("div",{className:"cm-peak-rail-classic-segment off"}),e("div",{className:"cm-peak-rail-classic-marker",style:{top:l.weekend?"50%":l.inPeak?"25%":"75%"}})),e("span",{className:"cm-peak-rail-classic-label"},o(i.short))))}r(qa,"PeakRailStripClassic");function Wa(t,s,o){return e(s?.peakStyle==="classic"?qa:Qa,{config:s,t:o})}r(Wa,"peakNoticeRailEl");function Dt(t,s,o){const a=t.today,n=s.budget??{enabled:!1,amount:100,period:"month"},l=Number(s.exchangeRate),c=(t.budgetUsed??(n.period==="day"?z(t.today,s):n.period==="all"?z(t.total,s):z(t.month,s)))*(Number.isFinite(l)&&l>0?l:1),p=Math.max(0,Number(n.amount)||0),w=p>0?Math.min(999,c/p*100):null,u=ce(w===null?null:Math.min(100,w),ne(s,"budget")),y=z(a,s)*(Number.isFinite(l)&&l>0?l:1),N=p>0?Math.min(999,y/p*100):null,x=n.detail!==!1;return{level:w===null?"ok":w>=100?"over":w>=80?"warn":"ok",rail:u.label===null?"\u2014":Math.round(u.label)+"%",body:e(E,null,e("div",{className:"cm-bbox-head"},e("span",{className:"cm-bbox-label"},o("budget")),e("span",{className:"cm-bbox-pct cm-num"},u.label===null?"\u2014":u.label.toFixed(1)+"%")),e("div",{className:"cm-bbox-bar"},e("div",{className:"cm-bbox-fill",style:{width:u.width+"%"}})),x?e(E,null,s.hideTodayCost===!0?null:e("div",{className:"cm-bbox-line cm-num"},o("todayShare",{amount:V(z(a,s),s),pct:N===null?"\u2014":N.toFixed(1)+"%"})),e("div",{className:"cm-bbox-line cm-num"},o("usedOf",{used:le(c,s),amount:le(p,s)}))):null,tt(t,s,o))}}r(Dt,"budgetBoxBody");function Rt(t,s,o){const a=t.goQuota,n=s?.goQuota?.main==="weekly"||s?.goQuota?.main==="monthly"?s.goQuota.main:"rolling",l=a[n],i=l!==null&&typeof l?.percent=="number"?Math.max(0,Math.min(100,Number(l.percent)||0)):0,c=r(x=>x!==null&&typeof x?.percent=="number"?Math.round(Math.max(0,Math.min(100,x.percent)))+"%":"\u2014","pctOf"),p=r(x=>o(x==="rolling"?"goShortRolling":x==="weekly"?"goShortWeekly":"goShortMonthly"),"shortOf"),w=["rolling","weekly","monthly"].filter(x=>x!==n),u=l!==null&&typeof l?.resetsAt=="string"&&l.resetsAt.length>0?o("goResetAt",{time:new Date(l.resetsAt).toLocaleString()}):"",y=s?.goQuota?.detail!==!1,N=ce(i,ne(s,"go"));return{level:i>=100?"over":i>=80?"warn":"ok",rail:N.label===null?"\u2014":Math.round(N.label)+"%",body:e(E,null,e("div",{className:"cm-bbox-head"},e("span",{className:"cm-bbox-label"},o("goQuotaRowLabel")+" "+p(n)),e("span",{className:"cm-bbox-pct cm-num"},N.label===null?"\u2014":Math.round(N.label)+"%")),e("div",{className:"cm-bbox-bar"},e("div",{className:"cm-bbox-fill",style:{width:N.width+"%"}})),y?e(E,null,e("div",{className:"cm-bbox-line cm-num"},w.map(x=>p(x)+" "+c(a[x])).join(" \xB7 ")),u?e("div",{className:"cm-bbox-line"},u):null):null)}}r(Rt,"goBoxBody");function za(t){const{state:s,wide:o}=t,a=s.goQuota,n=K(q(s.config?.locale));if(!a||a.status!=="ok")return null;const l=s.config?.goQuota?.main==="weekly"||s.config?.goQuota?.main==="monthly"?s.config.goQuota.main:"rolling";if(a[l]===null||typeof a[l]?.percent!="number")return null;const i=Rt(s,s.config,n),c=[n("goQuotaTitle"),n("goWindowRolling")+": "+(a.rolling===null?"\u2014":Math.round(a.rolling.percent)+"%"),n("goWindowWeekly")+": "+(a.weekly===null?"\u2014":Math.round(a.weekly.percent)+"%"),n("goWindowMonthly")+": "+(a.monthly===null?"\u2014":Math.round(a.monthly.percent)+"%"+(a.monthly!==null&&typeof a.monthly.resetsAt=="string"&&a.monthly.resetsAt.length>0?" \xB7 "+n("goResetAt",{time:new Date(a.monthly.resetsAt).toLocaleString()}):"")),n("goQuotaFetchedAt",{time:a.fetchedAt>0?new Date(a.fetchedAt).toLocaleTimeString():"\u2014"})].join("; ");return e(X,{label:c,side:"right",delayMs:300},e("div",{className:"cm-bbox"+(i.level==="ok"?"":" "+i.level)+(o?"":" rail")},o?i.body:e("div",{className:"cm-bbox-rail cm-num"},i.rail)))}r(za,"GoQuotaBox");function Ga(t){return t===null||typeof t!="object"||typeof t.percent!="number"?null:Math.max(0,Math.min(100,Math.round(Number(t.percent)||0)))}r(Ga,"planWindowUsedPct");function Ae(t){const s=t!==null&&typeof t=="object"?t:{};return{five:s["5h"]??null,seven:s["7d"]??s.week??s.weekly??null}}r(Ae,"miniMaxWindowsOf");function Et(t,s){return!t||typeof t.resetsAt!="string"||t.resetsAt.length===0?"":s("goResetAt",{time:new Date(t.resetsAt).toLocaleString()})}r(Et,"miniMaxResetText");function at(t,s,o){const a=Ga(s),n=a===null?"ok":a>=100?"over":a>=80?"warn":"ok",l=ce(a,o);return{level:n,pct:a,label:l.label,row:e("div",{className:"cm-mm-row"+(n==="ok"?"":" "+n)},e("span",{className:"cm-bbox-label"},t),e("div",{className:"cm-bbox-bar"},e("div",{className:"cm-bbox-fill",style:{width:l.width+"%"}})),e("span",{className:"cm-bbox-pct cm-num"},l.label===null?"\u2014":l.label+"%"))}}r(at,"miniMaxRow");function jt(t){const{five:s,seven:o,fetchedAt:a,t:n,wide:l,refresh:i,direction:c="used"}=t,p=at(n("codingPlanRemain5h"),s,c),w=at(n("codingPlanRemain7d"),o,c),u=p.level==="over"||w.level==="over"?"over":p.level==="warn"||w.level==="warn"?"warn":"ok",y=r((A,v,P)=>{const C=P.pct===null?"\u2014":P.pct+"%",f=Et(v,n);return A+" "+C+(f?" \xB7 "+f:"")},"lineOf"),N=[n("codingPlanMinimaxTitle"),y(n("codingPlanRemain5h"),s,p),y(n("codingPlanRemain7d"),o,w),a>0?n("goQuotaFetchedAt",{time:new Date(a).toLocaleTimeString()}):null,...i?fe(n,i):[]].filter(Boolean).join("; "),x=e(E,null,e("div",{className:"cm-mm-title"},n("codingPlanMinimaxTitle")),p.row,w.row),b=e(E,null,e("div",{className:"cm-bbox-rail cm-num"},p.pct===null?"\u2014":p.pct+"%"),e("div",{className:"cm-bbox-rail cm-num"},w.pct===null?"\u2014":w.pct+"%"));return e(X,{label:N,side:"right",delayMs:300},e("div",{className:"cm-bbox cm-mm"+(u==="ok"?"":" "+u)+(l===!1?" rail":"")+(i?" clickable"+(i.busy?" busy":""):""),...i?de(i.busy,i.run):{}},l===!1?b:x))}r(jt,"MiniMaxPlanCard");function _a(t){const{state:s,wide:o,api:a}=t,n=s.codingPlans?.minimax,l=K(q(s.config?.locale)),i=ye(a?()=>a.refreshCodingPlan("minimax"):null);if(!n||n.status!=="ok")return null;const{five:c,seven:p}=Ae(n.windows);return c==null&&p==null?null:e(jt,{five:c,seven:p,fetchedAt:n.fetchedAt,t:l,wide:o,refresh:i,direction:ne(s.config,"plan")})}r(_a,"MiniMaxPlanBox");const Ka="/plugins/dsh-openai-codex/auth/status",Ya=168*3600;function Va(t){if(t===null||typeof t!="object"||t.status!=="signed-in")return null;const s=t.usage!==null&&typeof t.usage=="object"?t.usage.rateLimits:null;if(!Array.isArray(s))return null;const o=s.find(c=>c!==null&&typeof c=="object"&&c.id==="codex");if(!o||!Array.isArray(o.windows))return null;const a=o.windows.find(c=>c!==null&&typeof c=="object"&&Number(c.windowSeconds)===Ya);if(!a||typeof a.remainingPercent!="number"||!Number.isFinite(Number(a.remainingPercent)))return null;const n=Math.max(0,Math.min(100,Math.round((100-Number(a.remainingPercent))*10)/10)),l=Number(a.resetAt),i=Number.isFinite(l)&&l>0?new Date(l*1e3).toISOString():"";return{weekly:{percent:n,resetsAt:i}}}r(Va,"parseCodexStatus");const J={status:"idle",windows:{},fetchedAt:0,inFlight:null,listeners:[]},Ja=r(t=>(J.listeners.push(t),()=>{J.listeners=J.listeners.filter(s=>s!==t)}),"subscribeCodexQuota"),$a=r(()=>{for(const t of J.listeners)try{t()}catch{}},"notifyCodexQuota");async function Ue(t=!1){if(J.inFlight!==null)return J.inFlight;if(!t&&J.fetchedAt>0&&Date.now()-J.fetchedAt<5*6e4)return;const s=(async()=>{try{const o=await fetch(Ka,{credentials:"same-origin",headers:{accept:"application/json"},signal:AbortSignal.timeout(8e3)});let a={};if(o.ok){const n=Va(await o.json().catch(()=>null));n!==null&&(a=n)}J.status=Object.keys(a).length>0?"ok":"unavailable",J.windows=a}catch{J.status="unavailable"}finally{J.fetchedAt=Date.now(),J.inFlight=null,$a()}})();return J.inFlight=s,s}r(Ue,"fetchCodexQuota"),Ue(!1);function Za(){const[t,s]=L(()=>({status:J.status,windows:J.windows,fetchedAt:J.fetchedAt}));return se(()=>{let o=!0;const n=Ja(r(()=>{o&&s({status:J.status,windows:J.windows,fetchedAt:J.fetchedAt})},"sync"));return Ue(!1),()=>{o=!1,n()}},[]),t}r(Za,"useCodexQuota");function Xa(t){const{state:s,wide:o}=t,a=K(q(s.config?.locale)),n=Za(),l=ye(()=>Ue(!0));if(n.status!=="ok")return null;const i=n.windows.weekly??null;if(i===null)return null;const c=ne(s.config,"plan"),p=at(a("goShortWeekly"),i,c),w=[a("codexQuotaTitle"),p.label===null?"\u2014":p.label+"%",Et(i,a),n.fetchedAt>0?a("goQuotaFetchedAt",{time:new Date(n.fetchedAt).toLocaleTimeString()}):null,...fe(a,l)].filter(Boolean).join("; "),u=e(E,null,e("div",{className:"cm-mm-title"},a("codexQuotaTitle")),p.row),y=e("div",{className:"cm-bbox-rail cm-num"},p.label===null?"\u2014":p.label+"%");return e(X,{label:w,side:"right",delayMs:300},e("div",{className:"cm-bbox cm-mm clickable"+(p.level==="ok"?"":" "+p.level)+(o===!1?" rail":"")+(l.busy?" busy":""),...de(l.busy,l.run)},o===!1?y:u))}r(Xa,"CodexPlanBox");function nt(t,s){return t==="fiveHour"||t==="5h"?"5h":t==="weekly"||t==="week"||t==="7d"?t==="7d"?"7d":s("goShortWeekly"):t==="monthly"||t==="month"?s("goShortMonthly"):String(t).replace(/_/g," ")}r(nt,"codingPlanWindowLabel");function en(t){const{id:s,state:o,wide:a,api:n}=t,l=o.codingPlans?.[s],i=K(q(o.config?.locale)),c=ye(n?()=>n.refreshCodingPlan(s):null),p=ve.find(f=>f.id===s);if(!p||!l||l.status!=="ok")return null;const w=l.windows!==null&&typeof l.windows=="object"?l.windows:{},u=Object.entries(w);if(u.length===0)return null;const y=r(f=>f!==null&&typeof f=="object"&&typeof f.percent=="number"?Math.max(0,Math.min(100,Math.round(Number(f.percent)||0))):null,"pctOf"),N=ne(o.config,"plan"),x=u.map(([f,k])=>{const m=y(k);if(m===null)return e("div",{key:f,className:"cm-mm-row wide"},e("span",{className:"cm-mm-text"},typeof k?.text=="string"?k.text:"\u2014"));const d=m>=100?"over":m>=80?"warn":"ok",S=ce(m,N);return e("div",{key:f,className:"cm-mm-row wide"+(d==="ok"?"":" "+d)},e("span",{className:"cm-bbox-label"},nt(f,i)),e("div",{className:"cm-bbox-bar"},e("div",{className:"cm-bbox-fill",style:{width:S.width+"%"}})),e("span",{className:"cm-bbox-pct cm-num"},S.label===null?"\u2014":S.label+"%"))}),b=u.map(([f,k])=>{const m=y(k),d=typeof k?.resetsAt=="string"&&k.resetsAt.length>0?" \xB7 "+i("goResetAt",{time:new Date(k.resetsAt).toLocaleString()}):"",S=m===null?typeof k?.text=="string"?k.text:"\u2014":m+"%";return nt(f,i)+" "+S+d});l.fetchedAt>0&&b.push(i("goQuotaFetchedAt",{time:new Date(l.fetchedAt).toLocaleTimeString()})),b.push(...fe(i,c));const A=[i(p.labelKey),...b].join("; "),v=u.map(([,f])=>y(f)).filter(f=>f!==null),P=v.some(f=>f>=100)?"over":v.some(f=>f>=80)?"warn":"ok",C=v.length>0?v.slice(0,2).map(f=>f+"%").join(" "):typeof u[0][1]?.text=="string"?u[0][1].text:"\u2014";return e(X,{label:A,side:"right",delayMs:300},e("div",{className:"cm-bbox cm-mm clickable"+(P==="ok"?"":" "+P)+(a===!1?" rail":"")+(c.busy?" busy":""),...de(c.busy,c.run)},a===!1?e("div",{className:"cm-bbox-rail cm-num"},C):e(E,null,e("div",{className:"cm-mm-title"},i(p.labelKey)),...x)))}r(en,"CodingPlanBox");const tn={anthropic:"Claude",zai:"Z.ai",minimax:"MM",kimi:"Kimi",openrouter:"OR",siliconflow:"SF",commandcode:"CC",scnet:"SCNet",volcengine:"Ark"};function an(t){const s=t.useCost?t.useCost(b=>b):void 0,[o,a]=L(null),[n,l]=L({}),i=s?.state,c=t.api;if(!i)return null;const p=i.config,w=p.quotaStrip??{enabled:!1,budget:!0,go:!0,plans:!0};if(w.enabled!==!0)return null;const u=K(q(p?.locale)),y=[];if(w.budget!==!1){const b=p.budget??{enabled:!1,amount:100,period:"month"};if(b.enabled===!0){const A=Number(p.exchangeRate),P=(i.budgetUsed??(b.period==="day"?z(i.today,p):b.period==="all"?z(i.total,p):z(i.month,p)))*(Number.isFinite(A)&&A>0?A:1),C=Math.max(0,Number(b.amount)||0);if(C>0){const f=Math.min(999,P/C*100),k=f>=100?"over":f>=80?"warn":"ok";y.push({key:"budget",label:u("budgetShort"),level:k,tip:u("budgetOf",{period:u(Be[b.period]??"periodMonth")})+" \xB7 "+u("usedOf",{used:le(P,p),amount:le(C,p)})+" \xB7 "+f.toFixed(1)+"%",segs:[{name:"main",pct:Math.round(ce(Math.min(100,f),ne(p,"budget")).width)}]})}}}if(w.go!==!1){const b=i.goQuota;if(p?.goQuota?.enabled!==!1&&b?.status==="ok"){const A=p.goQuota.main==="weekly"||p.goQuota.main==="monthly"?p.goQuota.main:"rolling",v=A==="rolling"?b.rolling:A==="weekly"?b.weekly:b.monthly;if(v!==null&&typeof v=="object"&&typeof v.percent=="number"){const P=Math.max(0,Math.min(100,Math.round(Number(v.percent)||0))),C=P>=100?"over":P>=80?"warn":"ok",f=typeof v.resetsAt=="string"&&v.resetsAt.length>0?" \xB7 "+u("goResetAt",{time:new Date(v.resetsAt).toLocaleString()}):"";y.push({key:"go",label:"Go "+u(A==="rolling"?"goShortRolling":A==="weekly"?"goShortWeekly":"goShortMonthly"),level:C,tip:"Go: "+P+"%"+f,segs:[{name:"main",pct:Math.round(ce(P,ne(p,"go")).width)}]})}}}if(w.plans!==!1)for(const b of ve){const A=i.codingPlans?.[b.id];if(p.codingPlans?.[b.id]?.enabled!==!0||!A||A.status!=="ok")continue;const v=A.windows!==null&&typeof A.windows=="object"?A.windows:{},P=Object.entries(v);if(P.length===0)continue;const C=tn[b.id]??b.id,f=[],k=[];let m=0,d=0;for(const[S,M]of P){const B=nt(S,u),O=typeof M?.resetsAt=="string"&&M.resetsAt.length>0?" \xB7 "+u("goResetAt",{time:new Date(M.resetsAt).toLocaleString()}):"",I=M!==null&&typeof M=="object"&&typeof M.percent=="number"?Math.max(0,Math.min(100,Math.round(Number(M.percent)||0))):null;if(k.push(B+" "+(I===null?typeof M?.text=="string"?M.text:"\u2014":I+"%")+O),I===null){f.push({name:S,pct:null,text:typeof M?.text=="string"?M.text:"\u2014"});continue}d>=2||(d+=1,f.push({name:S,pct:Math.round(ce(I,ne(p,"plan")).width)}),m=Math.max(m,I>=100?2:I>=80?1:0))}A.fetchedAt>0&&k.push(u("goQuotaFetchedAt",{time:new Date(A.fetchedAt).toLocaleTimeString()})),f.length!==0&&y.push({key:b.id,label:C,level:["ok","warn","over"][m],tip:k.join("; "),segs:f})}const N=J.status==="ok"?J.windows.weekly??null:null;if(N!==null&&typeof N.percent=="number"){const b=Math.max(0,Math.min(100,Math.round(Number(N.percent)||0))),A=typeof N.resetsAt=="string"&&N.resetsAt.length>0?" \xB7 "+u("goResetAt",{time:new Date(N.resetsAt).toLocaleString()}):"";y.push({key:"codex",label:"Codex",level:b>=100?"over":b>=80?"warn":"ok",tip:u("codexQuotaTitle")+": "+b+"%"+A,segs:[{name:"weekly",pct:Math.round(ce(b,ne(p,"plan")).width)}]})}if(y.length===0)return null;const x=r(b=>{o!==null||!c||(a(b),l(A=>({...A,[b]:null})),Promise.resolve().then(()=>b==="budget"?c.reload():b==="go"?c.refreshGoQuota():b==="codex"?Ue(!0):c.refreshCodingPlan(b)).catch(A=>{l(v=>({...v,[b]:A?.message??String(A)}))}).finally(()=>a(null)))},"doRefresh");return e("div",{className:"cm-qstrip"},y.map(b=>{const A=o===b.key,v=n[b.key],P=[e("span",{className:"cm-qlabel",key:"l"},b.label)];A?P.push(e("span",{className:"cm-qtext",key:"busy"},u("refreshing"))):b.segs.forEach((f,k)=>{k>0&&P.push(e("span",{className:"cm-qsep",key:"sep"+k,"aria-hidden":"true"})),f.pct===null?P.push(e("span",{className:"cm-qtext",key:f.name},f.text)):P.push(e("span",{className:"cm-qseg",key:f.name},e("span",{className:"cm-qbar"},e("span",{className:"cm-qfill",style:{width:f.pct+"%"}})),e("span",null,f.pct+"%")))});const C=[b.tip];return!A&&c&&C.push(u("clickToRefresh")),A&&C.push(u("refreshing")),v&&C.push("\u26A0 "+u("balanceRefreshFailed",{message:v})),e(X,{key:b.key,label:C.join("; "),side:"bottom",delayMs:400},e("span",{className:"cm-qchip"+(c?" action":"")+(b.level==="ok"?"":" "+b.level),...c?de(A,()=>x(b.key)):{}},P))}))}r(an,"QuotaStrip");function nn(t){const s=t.useCost?t.useCost(c=>c):void 0,o=xe(!1),a=s?.state;if(!a)return null;const n=a.config;if(n.quotaStrip?.promptSeen===!0)return null;const l=K(q(n?.locale)),i=r(c=>{if(o.current===!0)return;o.current=!0;const p=n.quotaStrip??{enabled:!1,budget:!0,go:!0,plans:!0};t.api.updateConfig({quotaStrip:{...p,enabled:c,promptSeen:!0}}).catch(()=>{o.current=!1})},"choose");return e("div",{className:"cm-qguide",role:"dialog","aria-label":l("quotaStripGuideTitle")},e("h4",null,l("quotaStripGuideTitle")),e("p",null,l("quotaStripGuideBody")),e("div",{className:"cm-buttons"},e("button",{type:"button",className:"cm-btn small",onClick:r(()=>i(!1),"onClick")},l("quotaStripGuideOff")),e("button",{type:"button",className:"cm-btn small primary",onClick:r(()=>i(!0),"onClick")},l("quotaStripGuideOn"))))}r(nn,"QuotaStripGuide");const Ft="dsh-cost-meter:balance-click-hint-seen",sn=r(()=>{try{return window.localStorage.getItem(Ft)==="1"}catch{return!1}},"readBalanceClickHintLS"),on=r(()=>{try{window.localStorage.setItem(Ft,"1")}catch{}},"writeBalanceClickHintLS");function ln(t){const s=t.useCost?t.useCost(x=>x):void 0,o=xe(!1),[a,n]=L(!1),[l]=L(sn),i=s?.state;if(!i)return null;const c=i.config,p=c.balance?.display==="sidebar"||c.balance?.display==="both",w=c.customBalance?.enabled===!0&&(c.customBalance?.display==="sidebar"||c.customBalance?.display==="both"),u=ve.some(x=>{const b=c.codingPlans?.[x.id];return b?.enabled===!0&&(b.display==="sidebar"||b.display==="both")});if(a||l||c.balance?.clickHintSeen===!0||!p&&!w&&!u||c.quotaStrip?.promptSeen!==!0)return null;const y=K(q(c?.locale)),N=r(()=>{o.current!==!0&&(n(!0),o.current=!0,on(),t.api.updateConfig({balance:{...c.balance??{},clickHintSeen:!0}}).catch(()=>{o.current=!1,n(!1)}))},"dismiss");return e("div",{className:"cm-qguide",role:"dialog","aria-label":y("balanceClickGuideTitle")},e("h4",null,y("balanceClickGuideTitle")),e("p",null,y("balanceClickGuideBody")),e("div",{className:"cm-buttons"},e("button",{type:"button",className:"cm-btn small primary",onClick:N},y("balanceClickGuideOk"))))}r(ln,"BalanceClickGuide");function Ut(t){const{state:s,wide:o}=t,a=s.today,n=s.config,l=K(q(n?.locale)),i=n.budget??{enabled:!1,amount:100,period:"month"},c=Number(n.exchangeRate),w=(s.budgetUsed??(i.period==="day"?z(s.today,n):i.period==="all"?z(s.total,n):z(s.month,n)))*(Number.isFinite(c)&&c>0?c:1),u=Math.max(0,Number(i.amount)||0),y=u>0?Math.min(999,w/u*100):null,N=y===null?"ok":y>=100?"over":y>=80?"warn":"ok";if(i.enabled===!0){const b=z(a,n),A=b*(Number.isFinite(c)&&c>0?c:1),v=u>0?Math.min(999,A/u*100):null,P=[l("budgetOf",{period:l(Be[i.period]??"periodMonth")}),l("usedOf",{used:le(w,n),amount:le(u,n)})+" \xB7 "+(y===null?"\u2014":y.toFixed(1)+"%"),...n.hideTodayCost===!0?[]:[l("todayShare",{amount:V(b,n),pct:v===null?"\u2014":v.toFixed(1)+"%"})],l("monthTotal",{month:V(z(s.month,n),n),total:V(z(s.total,n),n)})].join("; "),C=Dt(s,n,l);return e(X,{label:P,side:"right",delayMs:300},e("div",{className:"cm-bbox"+(N==="ok"?"":" "+N)+(o?"":" rail")},o?C.body:e("div",{className:"cm-bbox-rail cm-num"},C.rail)))}const x=[l("todayCostTitle"),l("callsTokens",{calls:a.calls,input:R(a.input),cache:R(a.cacheRead+a.cacheWrite),output:R(a.output)}),l("monthCost",{amount:V(z(s.month,n),n)}),l("totalCost",{amount:V(z(s.total,n),n)})].join("; ");return e(X,{label:x,side:"right",delayMs:300},e(E,null,e("div",{className:"cm-foot"+(o?"":" cm-foot-rail")},o?e(E,null,l("today")," ",e("span",{className:"cm-num"},V(z(a,n),n))):e(Ye,{size:16})),o?tt(s,n,l):null))}r(Ut,"BudgetBoxContent");function rn(t){const s=t.useCost?t.useCost(k=>k):void 0;let o;if(t.useProjection)try{o=t.useProjection("costUsage")}catch{o=void 0}Ve(t,o);const a=s?.state,n=!!t.wide,l=xe(null);if(se(()=>{const k=l.current,m=k?.parentElement;if(!k||!m)return;const d=r(()=>{n?m.firstElementChild!==k&&m.insertBefore(k,m.firstElementChild):m.lastElementChild!==k&&m.appendChild(k)},"apply");d();const S=new MutationObserver(()=>{k.isConnected&&d()});return S.observe(m,{childList:!0}),n?(m.style.flexDirection="",m.style.flexWrap="",m.style.alignItems="",m.style.gap=""):(m.style.flexDirection="column",m.style.flexWrap="nowrap",m.style.alignItems="center",m.style.gap="6px"),()=>{S.disconnect(),n||(m.style.flexDirection="",m.style.flexWrap="",m.style.alignItems="",m.style.gap="")}},[n,a]),!a)return null;const i=a.config,c=K(q(i?.locale)),p=(i.balance?.display==="sidebar"||i.balance?.display==="both")&&i.hideOfficialBalance!==!0,w=i.customBalance?.enabled===!0&&(i.customBalance?.display==="sidebar"||i.customBalance?.display==="both")&&a.customBalance?.status==="ok",u=p&&i.balance?.showProgressBar===!0&&a.balance?.status==="ok",y=w&&i.balance?.showProgressBar===!0,N=i.goQuota?.main==="weekly"||i.goQuota?.main==="monthly"?i.goQuota.main:"rolling",x=i.goQuota?.enabled!==!1&&(i.goQuota?.display==="sidebar"||i.goQuota?.display==="both")&&a.goQuota?.status==="ok"&&a.goQuota?.[N]!==null,b=ve.map(k=>k.id).filter(k=>{const m=i.codingPlans?.[k];if(m?.enabled!==!0||m.display!=="sidebar"&&m.display!=="both")return!1;const d=a.codingPlans?.[k];if(d?.status!=="ok")return!1;const S=d.windows!==null&&typeof d.windows=="object"?d.windows:{};return Object.keys(S).length>0}),A=b.length>0,v=J.status==="ok"&&J.windows.weekly!==null,P=(i.budget??{}).enabled===!0,C=i.sidebar!==!1&&i.hideTodayCost!==!0;if(!p&&!w&&!x&&!A&&!v&&!P&&!C)return null;const f=[];if(u?f.push(e(Da,{state:a,wide:n,api:t.api})):p&&f.push(e(La,{state:a,wide:n,api:t.api})),y?f.push(e(Ea,{state:a,wide:n,api:t.api})):w&&f.push(e(ja,{state:a,wide:n,api:t.api})),A&&f.push(...b.map(k=>k==="minimax"?e(_a,{state:a,wide:n,api:t.api}):e(en,{id:k,state:a,wide:n,api:t.api}))),v&&f.push(e(Xa,{state:a,wide:n,api:t.api})),x&&P&&n){const k=Rt(a,i,c),m=Dt(a,i,c),d=k.level==="over"||m.level==="over"?"over":k.level==="warn"||m.level==="warn"?"warn":"ok";f.push(e("div",{className:"cm-bbox cm-bbox-pair"+(d==="ok"?"":" "+d)},e("div",{className:"cm-bbox-section"+(k.level==="ok"?"":" "+k.level)},k.body),e("div",{className:"cm-bbox-divider"}),e("div",{className:"cm-bbox-section"+(m.level==="ok"?"":" "+m.level)},m.body)))}else x&&f.push(e(za,{state:a,wide:n})),P&&f.push(e(Ut,{state:a,wide:n}));return!P&&C&&f.push(e(Ut,{state:a,wide:n})),n||f.push(Wa(a,i,c)),e("div",{ref:l,className:"cm-footer-stack"+(n?"":" rail")},...f)}r(rn,"SidebarFooter");function st(t){return e("div",{className:"cm-card"},e("p",{className:"cm-card-title"},t.title),e("div",{className:"cm-card-value cm-num"},t.value),e("p",{className:"cm-card-sub"},t.sub))}r(st,"Card");function cn(t){const{state:s,api:o}=t,a=K(q(s.config?.locale)),[n,l]=L(!1);return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("button",{type:"button",className:"cm-collapse-h","aria-expanded":String(n),onClick:r(()=>l(!n),"onClick")},e("span",{className:"cm-caret"+(n?" open":"")}),e("h3",{className:"cm-h"},a("history")))),n?e("div",{className:"cm-collapse-body"},e(dn,{state:s,api:o})):null)}r(cn,"HistoryPanel");function dn(t){const{state:s,api:o}=t,a=K(q(s.config?.locale)),[n,l]=L(null),[i,c]=L({}),[p,w]=L(()=>new Set),u=s.history??[];if(u.length===0)return e("p",{className:"cm-empty"},a("noHistory"));const y=r(x=>{if(n===x){l(null);return}l(x),!(i[x]!==void 0||p.has(x))&&(w(b=>{const A=new Set(b);return A.add(x),A}),o.getDaySessions(x).then(b=>c(A=>({...A,[x]:Array.isArray(b?.sessions)?b.sessions:[]}))).catch(()=>c(b=>({...b,[x]:"error"}))).finally(()=>w(b=>{const A=new Set(b);return A.delete(x),A})))},"toggle"),N=r(x=>x.map(b=>e("tr",{key:b.id},ot(b,s.config?.showSessionId===!0,a),e("td",{className:"num"},String(b.calls)),e("td",{className:"num"},R(b.input)),e("td",{className:"num"},R(b.cacheRead+b.cacheWrite)),e("td",{className:"num"},R(b.output)),e("td",{className:"num"},V(z(b,s.config),s.config)))),"sessionRows");return e("div",{className:"cm-scroll"},e("p",{className:"cm-hint",style:{padding:"6px 10px 0"}},a("historyExpandHint")),e("table",{className:"cm-table"},e("thead",null,e("tr",null,e("th",null,a("colDate")),e("th",{className:"num"},a("colCalls")),e("th",{className:"num"},a("colInTok")),e("th",{className:"num"},a("colCacheTok")),e("th",{className:"num"},a("colOutTok")),e("th",{className:"num"},a("colCost")))),e("tbody",null,u.flatMap(x=>{const b=e("tr",{key:x.date,className:"cm-row-click",onClick:r(()=>y(x.date),"onClick")},e("td",null,(n===x.date?"\u25BE ":"\u25B8 ")+x.date),e("td",{className:"num"},String(x.calls)),e("td",{className:"num"},R(x.input)),e("td",{className:"num"},R(x.cacheRead+x.cacheWrite)),e("td",{className:"num"},R(x.output)),e("td",{className:"num"},V(z(x,s.config),s.config)));if(n!==x.date)return[b];const A=i[x.date],v=p.has(x.date)&&A===void 0?e("p",{className:"cm-empty"},a("historySessionsLoading")):A==="error"?e("p",{className:"cm-empty"},a("historySessionsError")):!Array.isArray(A)||A.length===0?e("p",{className:"cm-empty"},a("historyNoSessions")):e("table",{className:"cm-table"},e("thead",null,e("tr",null,e("th",null,a("colSession")),e("th",{className:"num"},a("colCalls")),e("th",{className:"num"},a("colInTok")),e("th",{className:"num"},a("colCacheTok")),e("th",{className:"num"},a("colOutTok")),e("th",{className:"num"},a("colCost")))),e("tbody",null,N(A)));return[b,e("tr",{key:x.date+"-sessions"},e("td",{colSpan:6},v))]}))))}r(dn,"HistoryTable");function un(t){const{state:s,api:o}=t,a=K(q(s.config?.locale)),[n,l]=L(!1),[i,c]=L(100),[p,w]=L("cost-desc"),[u,y]=L(null),[N,x]=L(!1),[b,A]=L(!1),v=Ce.useRef(0),P=r((m,d)=>{const[S,M]=d==="recent"?["recent","desc"]:d.split("-"),B=++v.current;x(!0),A(!1),o.getTopSessions(m,S,M).then(O=>{B===v.current&&y(Array.isArray(O?.sessions)?O.sessions:[])}).catch(()=>{B===v.current&&A(!0)}).finally(()=>{B===v.current&&x(!1)})},"load"),C=r(()=>{l(m=>{const d=!m;return d&&u===null&&!N&&P(i,p),d})},"toggle"),f=r(m=>{c(m),(n||u!==null)&&P(m,p)},"changeLimit"),k=r(m=>{w(m),(n||u!==null)&&P(i,m)},"changeSort");return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("button",{type:"button",className:"cm-collapse-h","aria-expanded":String(n),onClick:C},e("span",{className:"cm-caret"+(n?" open":"")}),e("h3",{className:"cm-h"},a("sessionRankTitle")))),n?e("div",{className:"cm-collapse-body"},e("p",{className:"cm-hint"},a("sessionRankHint")),e("div",{style:{display:"flex",gap:"12px",flexWrap:"wrap",margin:"6px 0"}},e("div",{className:"cm-field"},e("label",null,a("sessionRankSort")),e("select",{className:"cm-input",value:p,onChange:r(m=>k(m.target.value),"onChange")},e("option",{value:"cost-desc"},a("sessionSortCostDesc")),e("option",{value:"cost-asc"},a("sessionSortCostAsc")),e("option",{value:"time-desc"},a("sessionSortTimeDesc")),e("option",{value:"time-asc"},a("sessionSortTimeAsc")),e("option",{value:"recent"},a("sessionSortRecent")))),e("div",{className:"cm-field"},e("label",null,a("sessionRankLimit")),e("select",{className:"cm-input",value:String(i),onChange:r(m=>f(Number(m.target.value)),"onChange")},e("option",{value:"50"},"50"),e("option",{value:"100"},"100"),e("option",{value:"200"},"200")))),N?e("p",{className:"cm-empty"},a("sessionRankLoading")):b?e("p",{className:"cm-empty"},a("sessionRankError")):u===null||u.length===0?e("p",{className:"cm-empty"},a("sessionRankEmpty")):e("div",{className:"cm-scroll"},e("table",{className:"cm-table"},e("thead",null,e("tr",null,e("th",null,a("colDate")),e("th",null,a("colSession")),e("th",{className:"num"},a("colCalls")),e("th",{className:"num"},a("colInTok")),e("th",{className:"num"},a("colCacheTok")),e("th",{className:"num"},a("colOutTok")),e("th",{className:"num"},a("colCost")))),e("tbody",null,u.map(m=>e("tr",{key:m.date+":"+m.id},e("td",null,m.date),ot(m,s.config?.showSessionId===!0,a),e("td",{className:"num"},String(m.calls)),e("td",{className:"num"},R(m.input)),e("td",{className:"num"},R((m.cacheRead??0)+(m.cacheWrite??0))),e("td",{className:"num"},R(m.output)),e("td",{className:"num"},V(z(m,s.config),s.config)))))))):null)}r(un,"SessionRankPanel");function mn(t){const{state:s}=t,o=K(q(s.config?.locale)),a=s.today.sessions??[];if(a.length===0)return e("p",{className:"cm-empty"},o("noSessionsToday"));const n=s.config?.showSessionId===!0;return e("div",{className:"cm-scroll"},e("table",{className:"cm-table"},e("thead",null,e("tr",null,e("th",null,o("colSession")),e("th",{className:"num"},o("colCalls")),e("th",{className:"num"},o("colInTok")),e("th",{className:"num"},o("colCacheTok")),e("th",{className:"num"},o("colOutTok")),e("th",{className:"num"},o("colCost")))),e("tbody",null,a.map(l=>e("tr",{key:l.id},ot(l,n,o),e("td",{className:"num"},String(l.calls)),e("td",{className:"num"},R(l.input)),e("td",{className:"num"},R(l.cacheRead+l.cacheWrite)),e("td",{className:"num"},R(l.output)),e("td",{className:"num"},V(z(l,s.config),s.config)))))))}r(mn,"TodaySessions");function ot(t,s,o){const a=typeof t.title=="string"?t.title.trim():"",n=String(t.id).slice(0,14)+"\u2026",l=a.length>0?a:n,i=a.length>0?a+" \xB7 "+t.id:t.id;return e("td",{title:i},e("div",{className:"cm-sess-title"+(a.length===0?" cm-sess-id":"")},l),s&&a.length>0?e("div",{className:"cm-sess-id"},n):null)}r(ot,"sessionCell");const pn={CNY:{symbol:"\xA5",decimals:4,exchangeRate:7.2},USD:{symbol:"$",decimals:6,exchangeRate:1},EUR:{symbol:"\u20AC",decimals:6,exchangeRate:.92}};function fn(t){const{state:s,draft:o,setDraft:a,t:n}=t,l=s.config,i=o?.budget??l.budget,c=Number(l.exchangeRate),w=(s.budgetUsed??(i.period==="day"?z(s.today,l):i.period==="all"?z(s.total,l):z(s.month,l)))*(Number.isFinite(c)&&c>0?c:1),u=Math.max(0,Number(i.amount)||0),y=i.enabled&&u>0?Math.min(999,w/u*100):null,N=y===null?"ok":y>=100?"over":y>=80?"warn":"ok",x=r((v,P)=>{o!==null&&a({...o,budget:{...o.budget??l.budget,[v]:P}})},"setBudget"),b=i.period==="custom"?i.customStart+" \u2192 "+(i.customEnd??n("periodDay")):null,A=i.enabled&&y!==null?n("budgetStatus",{period:n(Be[i.period]??"periodMonth"),amount:le(u,l),used:le(w,l),pct:y.toFixed(1)})+(N==="over"?n("overLimit"):N==="warn"?n("nearLimit"):""):null;return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},n("budget")),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:i.enabled===!0,onChange:r(v=>x("enabled",v.target.checked),"onChange")}),e("span",null,n("enableBudget")))),i.enabled?e(E,null,e("div",{className:"cm-budget-bar"},e("div",{className:"cm-budget-fill "+(N==="ok"?"":N),style:{width:(y===null?0:Math.min(100,y))+"%"}})),e("div",{className:"cm-budget-line"+(N==="over"?" over":"")+" cm-num"},A),e("div",{className:"cm-budget-controls"},e("div",{className:"cm-field"},e("label",null,n("budgetAmountLabel")),oe({value:i.amount},v=>x("amount",v))),e("div",{className:"cm-field"},e("label",null,n("budgetPeriodLabel")),e("select",{className:"cm-input",value:i.period,onChange:r(v=>x("period",v.target.value),"onChange")},e("option",{value:"day"},n("periodDay")),e("option",{value:"month"},n("periodMonth")),e("option",{value:"all"},n("periodAll")),e("option",{value:"custom"},n("periodCustomRange")))),i.period==="custom"?e(E,null,e("div",{className:"cm-field"},e("label",null,n("startDate")),e("input",{className:"cm-input",type:"date",value:i.customStart??"",onChange:r(v=>x("customStart",v.target.value===""?null:v.target.value),"onChange")})),e("div",{className:"cm-field"},e("label",null,n("endDate")),e("input",{className:"cm-input",type:"date",value:i.customEnd??"",onChange:r(v=>x("customEnd",v.target.value===""?null:v.target.value),"onChange")}))):null),b!==null?e("p",{className:"cm-hint"},n("rangeText",{range:b})):null):e("p",{className:"cm-note"},n("budgetDisabledNote")))}r(fn,"BudgetPanel");function gn(t){const{state:s,draft:o,setDraft:a,t:n}=t,l=s.config,i=r((u,y)=>{o!==null&&a({...o,[u]:y})},"setField"),c=o===null?l:{...l,...o},p=(()=>{if(c.peakEnabled!==!0)return n("peakOff");const u=Date.parse(c.peakEffectiveAt||""),y=Date.now();if(Number.isFinite(u)&&y<u)return n("peakNotEffective",{time:new Date(u).toLocaleString()});const N=c.peakWindows??[],x=Ee(y,N);return x===null?n("offPeakActive"):x.weekend===!0?n("weekendAllOffPeak"):x.inPeak?n("peakActive"):n("offPeakActive")})(),w=(c.peakWindows?.length??0)>0?n("peakSummary",{windows:c.peakWindows.map(u=>u.start+":00-"+u.end+":00").join(q(c.locale)==="zh"?"\u3001":", "),time:c.peakEffectiveAt||n("unknown"),status:p}):n("noPeakWindows",{status:p});return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},n("peakPanelTitle")),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:o?.peakEnabled!==!1,onChange:r(u=>i("peakEnabled",u.target.checked),"onChange")}),e("span",null,n("peakEnabledLabel")))),e("div",{className:"cm-grid"},e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:o?.peakNotice!==!1,onChange:r(u=>i("peakNotice",u.target.checked),"onChange")}),e("span",null,n("peakNoticeLabel")))),e("div",{className:"cm-field"},e("label",null,n("peakStyleLabel")),e("select",{className:"cm-input",value:o?.peakStyle==="classic"?"classic":"compact",onChange:r(u=>i("peakStyle",u.target.value),"onChange")},e("option",{value:"compact"},n("peakStyleCompact")),e("option",{value:"classic"},n("peakStyleClassic"))))),e("div",{className:"cm-grid"},e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:o?.peakAlertEnabled!==!1,onChange:r(u=>i("peakAlertEnabled",u.target.checked),"onChange")}),e("span",null,n("peakAlertLabel")))),e("div",{className:"cm-field"},e("label",null,n("peakAlertAheadLabel")),e("input",{className:"cm-input narrow",type:"number",min:"1",max:"30",step:"1",value:String(typeof o?.peakAlertAhead=="number"&&Number.isFinite(o.peakAlertAhead)&&o.peakAlertAhead>=1&&o.peakAlertAhead<=30?o.peakAlertAhead:2),onChange:r(u=>{const y=Number(u.target.value);Number.isInteger(y)&&y>=1&&y<=30&&i("peakAlertAhead",y)},"onChange")})),e("div",{className:"cm-field"},e("label",null,n("peakAlertTargetLabel")),e("select",{className:"cm-input",value:o?.peakAlertTarget==="peak"||o?.peakAlertTarget==="offpeak"?o.peakAlertTarget:"both",onChange:r(u=>i("peakAlertTarget",u.target.value),"onChange")},e("option",{value:"both"},n("peakAlertTargetBoth")),e("option",{value:"peak"},n("peakAlertTargetPeak")),e("option",{value:"offpeak"},n("peakAlertTargetOffPeak"))))),e("div",{className:"cm-grid"},e("div",{className:"cm-field"},e("label",null,n("peakAlertPositionLabel")),e("select",{className:"cm-input",value:o?.peakAlertPosition==="center"?"center":"corner",onChange:r(u=>i("peakAlertPosition",u.target.value),"onChange")},e("option",{value:"corner"},n("peakAlertPositionCorner")),e("option",{value:"center"},n("peakAlertPositionCenter")))),e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:o?.peakAlertWebNotify===!0,onChange:r(u=>{i("peakAlertWebNotify",u.target.checked),u.target.checked&&window.Notification&&Notification.permission==="default"&&Promise.resolve(Notification.requestPermission()).catch(()=>{})},"onChange")}),e("span",null,n("peakAlertWebNotifyLabel"))),e("p",{className:"cm-hint"},n("peakAlertWebNotifyHint")))),e("div",{className:"cm-field"},e("label",null,n("peakAlertPreviewLabel")),e("div",{className:"cm-row"},e("button",{className:"cm-btn",onClick:r(()=>window.cmPeakAlertPreview?.("peak"),"onClick")},n("peakAlertPreviewPeak")),e("button",{className:"cm-btn",onClick:r(()=>window.cmPeakAlertPreview?.("offpeak"),"onClick")},n("peakAlertPreviewOffPeak")))),e("div",{className:"cm-peak-preview"},o?.peakEnabled!==!1&&o?.peakNotice!==!1?tt(s,c,n):e("p",{className:"cm-hint"},n("peakNoticeHiddenHint"))),e("p",{className:"cm-hint"},w),e("p",{className:"cm-hint"},n("weekendRuleNote")))}r(gn,"PeakPanel");function oe(t,s){const o=t.value;return e("input",{className:"cm-input narrow",type:"number",step:"any",min:"0",value:typeof o=="number"?String(o):"",onChange:r(a=>{const n=a.target.value;if(n===""){if(t.emptyMode==="clear"){s(null);return}if(t.emptyMode==="ignore")return;s(0);return}const l=Number(n);Number.isFinite(l)&&l>=0&&s(l)},"onChange")})}r(oe,"numInput");function lt(t){const{modelId:s,entry:o,isDefault:a,draft:n,setDraft:l,t:i}=t,c=r((u,y,N)=>{if(N===null){if(a){const m=n.prices.default??{cacheHit:0,cacheMiss:0,output:0},d={...m[u]??{}};delete d[y];const S={...m};Object.keys(d).length>0?S[u]=d:delete S[u],l({...n,prices:{...n.prices,default:S}});return}const P={...n.prices.models},C=P[s]??{cacheHit:0,cacheMiss:0,output:0},f={...C[u]??{}};delete f[y];const k={...C};Object.keys(f).length>0?k[u]=f:delete k[u],P[s]=k,l({...n,prices:{...n.prices,models:P}});return}const x=Math.max(0,N);if(a){let C={...n.prices.default??{cacheHit:0,cacheMiss:0,output:0}};if(u==="base")C[y]=x;else{const f={...C[u]??{},[y]:x};C={...C,[u]:f}}l({...n,prices:{...n.prices,default:C}});return}const b={...n.prices.models},A=b[s]??{cacheHit:0,cacheMiss:0,output:0};let v={...A};if(u==="base")v[y]=x;else{const P={...A[u]??{},[y]:x};v={...A,[u]:P}}b[s]=v,l({...n,prices:{...n.prices,models:b}})},"setTier"),p=r(()=>{const u={...n.prices.models};delete u[s],l({...n,prices:{...n.prices,models:u}})},"remove"),w=r((u,y)=>{const N=y==="base"?o:o[y]??null,x=y==="base"?"ignore":"clear";return e("div",{className:"cm-price-row",key:y},e("span",null,u),oe({value:N?.cacheHit??null,emptyMode:x},b=>c(y,"cacheHit",b)),oe({value:N?.cacheMiss??null,emptyMode:x},b=>c(y,"cacheMiss",b)),oe({value:N?.output??null,emptyMode:x},b=>c(y,"output",b)))},"tierRow");return e("div",{className:"cm-price-card"},e("div",{className:"cm-price-head"},e("span",{className:"cm-price-name"},s),e(E,null,o?.legacy===!0?e("span",{className:"cm-price-legacy"},i("legacyModel")):null,a?e("span",{className:"cm-price-legacy"},i("defaultFallback")):null,a?null:e("button",{className:"cm-btn small danger",onClick:p},i("remove")))),e("div",{className:"cm-price-row"},e("span",null,""),e("span",null,i("flatCached")),e("span",null,i("flatInput")),e("span",null,i("flatOutput"))),w(i("tierBase"),"base"),w(i("tierOffPeak"),"offPeak"),w(i("tierPeak"),"peak"))}r(lt,"PriceCard");const It={deepseek:"DeepSeek",openai:"OpenAI",anthropic:"Anthropic",google:"Google Gemini",moonshot:"Moonshot (Kimi)","z-ai":"Z.ai / \u667A\u8C31",xai:"xAI",alibaba:"\u963F\u91CC\u4E91\u767E\u70BC",minimax:"MiniMax",tencent:"\u817E\u8BAF\u6DF7\u5143",xiaomi:"\u5C0F\u7C73",upstage:"Upstage",nvidia:"NVIDIA",mistral:"Mistral",meta:"Meta",meituan:"\u7F8E\u56E2 LongCat","opencode-go":"OpenCode Go"};function bn(t,s){if(t===null||typeof t!="object")return"";if(t.unpriced===!0)return s("catalogUnpriced");const o=r(n=>"$"+String(n),"usd"),a=t.peak!==null&&typeof t.peak=="object"?t.peak:null;return a!==null?o(t.cacheMiss)+"/"+o(a.cacheMiss)+" in \xB7 "+o(t.output)+"/"+o(a.output)+" out":o(t.cacheMiss??t.input??0)+" in \xB7 "+o(t.output??0)+" out"}r(bn,"catalogPriceText");function hn(t){const{state:s,draft:o,setDraft:a,t:n}=t,[l,i]=L(!1),[c,p]=L({}),w=s.priceCatalog;if(w===null||typeof w!="object")return null;const u=o?.prices??s.config.prices,y=o?.priceTableDisplay??s.config.priceTableDisplay??{},N=r((d,S)=>{const M=y[d+":"+S];return typeof M=="boolean"?M:d==="deepseek"},"isDirect"),x=r((d,S,M)=>{o!==null&&a({...o,priceTableDisplay:{...y,[d+":"+S]:M}})},"setDirect"),b=r((d,S)=>d==="deepseek"?u.models?.[S]!==void 0:u.providers?.[d]?.models?.[S]!==void 0,"isMounted"),A=r((d,S,M)=>{if(o===null)return;const B=JSON.parse(JSON.stringify(M));if(d==="deepseek"){a({...o,prices:{...o.prices,models:{...o.prices.models,[S]:B}}});return}const O={...o.prices.providers??{}},I=O[d]??{};O[d]={...I,models:{...I.models??{},[S]:B}},a({...o,prices:{...o.prices,providers:O}})},"mount"),v=r((d,S)=>{if(o===null)return;if(d==="deepseek"){const O={...o.prices.models};delete O[S],a({...o,prices:{...o.prices,models:O}});return}const M={...o.prices.providers??{}},B=M[d];if(B!==void 0&&B.models!==void 0){const O={...B.models};delete O[S],M[d]={...B,models:O},a({...o,prices:{...o.prices,providers:M}})}},"unmount"),P=Object.keys(w).sort((d,S)=>d==="deepseek"?-1:S==="deepseek"?1:d.localeCompare(S)),C=r(d=>Object.values(w[d]).reduce((S,M)=>S+Object.keys(M).length,0),"countModels"),f=new Set(Object.values(w.deepseek??{}).flatMap(d=>Object.keys(d))),k=Object.keys(u.models??{}).filter(d=>!f.has(d)).sort(),m=r((d,S,M)=>{const B=b(d,S),O=N(d,S),I=B?e("label",{className:"cm-check cm-vendor-display",title:n("catalogDisplayHint")},e("input",{type:"checkbox",checked:O,onChange:r(g=>x(d,S,g.target.checked),"onChange")}),e("span",null,n("catalogDisplayLabel"))):null;if(B&&!O&&o!==null){const g=d==="deepseek"?e(lt,{key:S,modelId:S,entry:u.models[S],isDefault:!1,draft:o,setDraft:a,t:n}):e(Wt,{key:S,provider:d,modelId:S,entry:u.providers?.[d]?.models?.[S],draft:o,setDraft:a,t:n});return e("div",{key:S,className:"cm-catalog-mounted"},I,g)}return e("div",{key:S,className:"cm-catalog-row"},e("span",{className:"cm-catalog-id"},S),e("span",{className:"cm-catalog-price"},bn(M,n)),B?e("span",{className:"cm-catalog-tag"},n("mountedTag")):null,I,e("button",{className:"cm-btn small",disabled:!B&&M?.unpriced===!0,onClick:r(()=>B?v(d,S):A(d,S,M),"onClick")},n(B?"unmountBtn":"mountBtn")))},"renderModel");return e("div",{className:"cm-budget",style:{marginTop:"8px"}},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},n("catalogTitle")),e("button",{className:"cm-toggle-btn",onClick:r(()=>i(d=>!d),"onClick")},n(l?"catalogCollapse":"catalogOpen"))),l?e(E,null,e("p",{className:"cm-note"},n("catalogNote")),P.map(d=>{const S=c[d]===!0;return e("div",{key:d},e("div",{className:"cm-catalog-vendor cm-vendor-toggle",onClick:r(()=>p(M=>({...M,[d]:!S})),"onClick")},e("span",null,(S?"\u25BE ":"\u25B8 ")+(It[d]??d)+" \xB7 "+C(d))),S?e(E,null,d==="deepseek"?e("p",{className:"cm-hint"},n("catalogDeepseekNote")):null,Object.keys(w[d]).sort().map(M=>e("div",{key:M},e("div",{className:"cm-catalog-family"},M),Object.keys(w[d][M]).sort().map(B=>m(d,B,w[d][M][B])))),d==="deepseek"&&k.length>0?e("div",null,e("div",{className:"cm-catalog-family"},n("catalogCustomModels")),k.map(M=>m("deepseek",M,null))):null):null)})):null)}r(hn,"PriceCatalogPanel");const Ht=r(t=>t==="zen"?"go":t,"prettyProvider"),Qt=r(t=>{const s=t.indexOf(":");return s<=0?t:Ht(t.slice(0,s).toLowerCase())+t.slice(s)},"prettyProviderKey");function yn(t){const{state:s,config:o,t:a,initialTab:n}=t,[l,i]=L(n==="history"?"history":"today"),[c,p]=L(!1),w=r(f=>{if(f===null||typeof f!="object")return{};if(f.byProviderModel&&Object.keys(f.byProviderModel).length>0)return f.byProviderModel;if(f.byModel&&Object.keys(f.byModel).length>0)return f.byModel;const k={};if(Array.isArray(f.sessions))for(const m of f.sessions){if(m===null||typeof m!="object")continue;const d=typeof m.provider=="string"&&m.provider.length>0?m.provider:"deepseek",S=typeof m.model=="string"&&m.model.length>0?m.model:"unknown",M=d+":"+S,B=k[M]??(k[M]={input:0,output:0,cacheRead:0,cacheWrite:0,reasoning:0,cost:0}),O=r(I=>typeof I=="number"&&Number.isFinite(I)&&I>=0?I:0,"num");B.input+=O(m.input),B.output+=O(m.output),B.cacheRead+=O(m.cacheRead),B.cacheWrite+=O(m.cacheWrite),B.reasoning+=O(m.reasoning),B.cost+=O(m.cost)}if(Object.keys(k).length>0)return k;if(Number(f.cost)>0||Number(f.input)>0||Number(f.output)>0){const m=r(d=>typeof d=="number"&&Number.isFinite(d)&&d>=0?d:0,"num");return{"deepseek:legacy":{input:m(f.input),output:m(f.output),cacheRead:m(f.cacheRead),cacheWrite:m(f.cacheWrite),reasoning:m(f.reasoning),cost:m(f.cost)}}}return{}},"modelMapOf"),y=r(f=>{const k={},m=r(d=>{for(const S of Object.keys(d??{})){const M=d[S];if(M===null||typeof M!="object")continue;const B=k[S]??(k[S]={input:0,output:0,cacheRead:0,cacheWrite:0,reasoning:0,cost:0});B.input+=Number(M.input)||0,B.output+=Number(M.output)||0,B.cacheRead+=Number(M.cacheRead)||0,B.cacheWrite+=Number(M.cacheWrite)||0,B.reasoning+=Number(M.reasoning)||0,B.cost+=Number(M.cost)||0}},"add");if(f==="today")m(w(s.today));else for(const d of s.history??[])m(w(d));return Object.entries(k).map(([d,S])=>{const M=d.indexOf(":"),B=(M>0?d.slice(0,M):"deepseek").toLowerCase(),O=M>0?d.slice(M+1):d,I=S.input+S.output+S.cacheRead+S.cacheWrite+S.reasoning,g=S.cacheRead+S.input;return{label:d==="deepseek:legacy"?a("modelStatsLegacy"):B==="deepseek"||B===""?O:Ht(B)+":"+O,...S,tokens:I,cls:Ge(B,O,o),hitRate:g>0?S.cacheRead/g:null,blended:I>0&&S.cost>0?S.cost/I*1e6:null,perUsd:S.cost>0?I/S.cost:null}}).filter(d=>d.tokens>0||d.cost>0)},"aggregate")(l).sort((f,k)=>k.cost-f.cost||k.tokens-f.tokens),N=r(f=>(Math.max(0,Math.min(1,f))*100).toFixed(1)+"%","pct"),x=y.reduce((f,k)=>Math.max(f,k.cost),0),b=y.reduce((f,k)=>Math.max(f,k.tokens),0),A=y.reduce((f,k)=>Math.max(f,k.perUsd??0),0),v=r((f,k)=>e("button",{className:"cm-mstats-tab"+(l===f?" active":""),onClick:r(()=>i(f),"onClick")},k),"tabBtn"),P=r(f=>f.cls==="plan"?e("span",{className:"cm-plan-tag",title:a("billingClassLabel")},a("billingClassPlan")):null,"classChip"),C=r((f,k,m,d,S)=>e("div",{className:"cm-mstats-row"},e("span",{className:"cm-mstats-name"},f,S??null),e("div",{className:"cm-mstats-barbg"},e("div",{className:"cm-mstats-bar "+m,style:{width:N(k)}})),e("span",{className:"cm-mstats-val"},d)),"barRow");return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("button",{type:"button",className:"cm-collapse-h","aria-expanded":String(c),onClick:r(()=>p(!c),"onClick")},e("span",{className:"cm-caret"+(c?" open":"")}),e("h3",{className:"cm-h"},a("modelStatsTitle")))),c?e("div",{className:"cm-collapse-body"},e("div",{className:"cm-mstats-tabs"},v("today",a("modelStatsToday")),v("history",a("modelStatsHistory"))),y.length===0?e("p",{className:"cm-note"},a("modelStatsEmpty")):e(E,null,e("div",{className:"cm-mstats-h"},a("modelStatsCostH")),y.map(f=>e(E,{key:"c:"+f.label},C(f.label,x>0?f.cost/x:0,"cost",V(f.cost,o),P(f)))),e("div",{className:"cm-mstats-h"},a("modelStatsTokensH")),e("div",{className:"cm-mstats-legend"},e("span",null,e("span",{className:"cm-mstats-dot",style:{background:"var(--dsw-alias-state-business-primary)"}}),a("modelStatsInput")),e("span",null,e("span",{className:"cm-mstats-dot",style:{background:"#ff9800"}}),a("modelStatsCache")),e("span",null,e("span",{className:"cm-mstats-dot",style:{background:"#34a853"}}),a("modelStatsOutput"))),[...y].sort((f,k)=>k.tokens-f.tokens).map(f=>e("div",{className:"cm-mstats-row",key:"t:"+f.label},e("span",{className:"cm-mstats-name"},f.label),e("div",{className:"cm-mstats-barbg"},e("div",{className:"cm-mstats-seg in",style:{width:N(b>0?f.input/b:0)}}),e("div",{className:"cm-mstats-seg cache",style:{width:N(b>0?(f.cacheRead+f.cacheWrite)/b:0)}}),e("div",{className:"cm-mstats-seg out",style:{width:N(b>0?(f.output+f.reasoning)/b:0)}})),e("span",{className:"cm-mstats-val"},R(f.tokens)))),e("div",{className:"cm-mstats-h"},a("modelStatsHitH")),[...y].sort((f,k)=>(k.hitRate??-1)-(f.hitRate??-1)).map(f=>e(E,{key:"h:"+f.label},C(f.label,f.hitRate??0,"hit",f.hitRate===null?"\u2014":(f.hitRate*100).toFixed(1)+"%"))),e("div",{className:"cm-mstats-h"},a("modelStatsValueH")),[...y].sort((f,k)=>(k.perUsd??-1)-(f.perUsd??-1)).map(f=>e(E,{key:"v:"+f.label},C(f.label,A>0?(f.perUsd??0)/A:0,"value",f.perUsd===null?"\u2014":R(f.perUsd)+" tok/$"+(f.blended!==null?" \xB7 "+a("modelStatsBlended",{price:"$"+f.blended.toFixed(2)}):"")))),e("p",{className:"cm-mstats-note"},a("modelStatsNote")))):null)}r(yn,"ModelStatsPanel");function kn(t,s){return t==="fiveHour"?s==="en"?"5-hour":"5 \u5C0F\u65F6":t==="weekly"?s==="en"?"This week":"\u672C\u5468":t==="monthly"?s==="en"?"This month":"\u672C\u6708":t==="daily"?s==="en"?"Today":"\u5F53\u65E5":t}r(kn,"planWindowLabelOf");function wn(t,s){if(t==="go")return"OpenCode Go";const o=ve.find(a=>a.id===t);return o!==void 0?s(o.labelKey):t}r(wn,"planProviderLabelOf");const qt=["fiveHour","weekly","monthly","daily"];function xn(t,s){const o=new Map,a=r(n=>{const l=new Date(n),i=r(c=>String(c).padStart(2,"0"),"pad");if(s==="monthly")return l.getFullYear()+"-"+i(l.getMonth()+1);if(s==="weekly"){const c=new Date(l.getFullYear(),l.getMonth(),l.getDate()-(l.getDay()+6)%7);return c.getFullYear()+"-"+i(c.getMonth()+1)+"-"+i(c.getDate())}return l.getFullYear()+"-"+i(l.getMonth()+1)+"-"+i(l.getDate())},"bucketKeyOf");for(const n of Object.values(t??{}))for(const l of n??[]){if(l===null||typeof l!="object"||!(l.tokens>0)&&!(l.cost>0))continue;const i=a(Number(l.t1)||Number(l.t0)),c=o.get(i)??{key:i,tokens:0,cost:0,pct:0,intervals:0};c.tokens+=Number(l.tokens)||0,c.cost+=Number(l.cost)||0,c.pct+=Number(l.pct)||0,c.intervals+=1,o.set(i,c)}return[...o.values()].map(n=>({...n,per1Tokens:n.pct>0?n.tokens/n.pct:null,fullTokens:n.pct>0?n.tokens/n.pct*100:null})).sort((n,l)=>n.key<l.key?-1:n.key>l.key?1:0)}r(xn,"aggregatePlanIntervals");function vn(t){const{state:s,config:o,t:a}=t,[n,l]=L(!1),[i,c]=L("daily"),p=q(o?.locale),w=s?.planStats,u=w!=null&&typeof w.providers=="object"?w.providers:{},y=Object.keys(u).sort(),N=r(d=>V(Number(d)||0,o??s?.config),"fmtMoney"),x=r(d=>d.method==="none"||d.per1Tokens===null?"\u2014":R(d.per1Tokens)+" tok \xB7 "+N(d.per1Cost),"estTextOf"),b=r(d=>d.method==="none"||d.fullTokens===null?"\u2014":R(d.fullTokens)+" tok \xB7 "+N(d.fullCost),"fullTextOf"),A=r(d=>d.method==="sample"?a("planStatsMethodSample"):d.method==="live"?a("planStatsMethodLive"):a("planStatsMethodNone"),"methodRawOf"),v=r(d=>{let S=A(d);return d.method==="sample"&&Number(d.sampleAt)>0&&(S=a("planStatsMethodSampleAt",{method:S,time:new Date(Number(d.sampleAt)).toLocaleString(p==="en"?"en-US":"zh-CN")})),(d.method==="sample"||d.method==="live")&&d.confidence==="low"&&(S+=" \xB7 "+a("planStatsConfidenceLow")),S},"methodTagOf"),P=r(([d,S,M])=>e("tr",{key:S+":"+d},e("td",null,kn(d,p)),e("td",{className:"num"},Math.round(M.percent*10)/10+"%"),e("td",{className:"num"},R(M.localTokens)+" tok \xB7 "+N(M.localCost)),e("td",{className:"num"},x(M)),e("td",{className:"num"},b(M)),e("td",{className:"num cm-plan-reset"},M.resetsAt.length>0?a("planStatsResets",{time:new Date(M.resetsAt).toLocaleString(p==="en"?"en-US":"zh-CN")}):"\u2014"),e("td",{className:"cm-plan-method"},v(M))),"windowRow"),C=n?y.flatMap(d=>Object.entries(u[d]?.intervals??{})).map(([d,S])=>({winKey:d,list:S})):[],f=xn(Object.fromEntries(C.map(d=>[d.winKey,d.list])),i),k=f.reduce((d,S)=>Math.max(d,S.fullTokens??0),0),m=r((d,S)=>e("button",{key:d,className:"cm-mstats-tab"+(i===d?" active":""),onClick:r(()=>c(d),"onClick")},S),"granBtn");return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("button",{type:"button",className:"cm-collapse-h","aria-expanded":String(n),onClick:r(()=>l(!n),"onClick")},e("span",{className:"cm-caret"+(n?" open":"")}),e("h3",{className:"cm-h"},a("planStatsTitle")))),n?e("div",{className:"cm-collapse-body"},y.length===0?e("p",{className:"cm-empty"},a("planStatsEmpty")):e(E,null,y.map(d=>{const S=u[d]?.windows??{},M=[...qt.filter(B=>S[B]!==void 0).map(B=>[B,d,S[B]]),...Object.keys(S).filter(B=>!qt.includes(B)).map(B=>[B,d,S[B]])];return e("div",{key:d,className:"cm-plan-provider"},e("div",{className:"cm-plan-provider-name"},wn(d,a),e("span",{className:"cm-plan-updated"},(()=>{const B=Number(u[d]?.generatedAt)||Number(w?.generatedAt)||0;return B>0?new Date(B).toLocaleTimeString(p==="en"?"en-US":"zh-CN"):""})())),e("table",{className:"cm-table"},e("thead",null,e("tr",null,e("th",null,a("planStatsWindow")),e("th",{className:"num"},a("planStatsPercent")),e("th",null,a("planStatsLocal")),e("th",null,a("planStatsPer1")),e("th",null,a("planStatsFull")),e("th",null,""),e("th",null,""))),e("tbody",null,M.map(P))))}),e("div",{className:"cm-mstats-h",style:{marginTop:"10px"}},a("planStatsCurveTitle")),e("div",{className:"cm-mstats-tabs"},m("daily",a("planStatsDaily")),m("weekly",a("planStatsWeekly")),m("monthly",a("planStatsMonthly"))),f.length===0?e("p",{className:"cm-note"},a("planStatsCurveEmpty")):e(E,null,[...f].reverse().map(d=>e("div",{className:"cm-mstats-row",key:d.key},e("span",{className:"cm-mstats-name"},d.key),e("div",{className:"cm-mstats-barbg"},e("div",{className:"cm-mstats-bar value",style:{width:(k>0?(d.fullTokens??0)/k*100:0).toFixed(1)+"%"}})),e(X,{label:a("planStatsBarTip",{date:d.key,full:d.fullTokens===null?"\u2014":R(d.fullTokens),per1:d.per1Tokens===null?"\u2014":R(d.per1Tokens),tokens:R(d.tokens),cost:N(d.cost),intervals:d.intervals}),side:"top",delayMs:200},e("span",{className:"cm-mstats-val"},d.fullTokens===null?"\u2014":R(d.fullTokens)))))),e("p",{className:"cm-note"},a("planStatsNote")))):null)}r(vn,"PlanStatsPanel");function Wt(t){const{provider:s,modelId:o,entry:a,draft:n,setDraft:l,t:i}=t,c=r(u=>{const y={...n.prices.providers??{}},N=y[s]??{};y[s]={...N,models:u},l({...n,prices:{...n.prices,providers:y}})},"writeModels"),p=r((u,y)=>{if(n===null)return;const N={...(n.prices.providers??{})[s]?.models??{}};N[o]={...N[o]??{},[u]:Math.max(0,y)},c(N)},"setNum"),w=r(()=>{if(n===null)return;const u={...(n.prices.providers??{})[s]?.models??{}};delete u[o],c(u)},"remove");return e("div",{className:"cm-price-card"},e("div",{className:"cm-price-head"},e("span",{className:"cm-price-name"},o),e(E,null,a?.unpriced===!0?e("span",{className:"cm-price-legacy"},i("catalogUnpriced")):null,e("button",{className:"cm-btn small danger",onClick:w},i("unmountBtn")))),a?.unpriced===!0?null:e(E,null,e("div",{className:"cm-price-row"},e("span",null,""),e("span",null,i("flatInput")),e("span",null,i("flatCached")),e("span",null,i("flatOutput"))),e("div",{className:"cm-price-row"},e("span",null,"USD"),oe({value:a?.input??null,emptyMode:"ignore"},u=>p("input",u)),oe({value:a?.cachedInput??null,emptyMode:"ignore"},u=>p("cachedInput",u)),oe({value:a?.output??null,emptyMode:"ignore"},u=>p("output",u)))))}r(Wt,"ProviderPriceCard");function Nn(t){const{state:s,api:o,t:a,draft:n,setDraft:l}=t,[i,c]=L(!1),[p,w]=L(null),u=s.balance,y=s.config,N=s.reconcile,x=(n?.balance??y.balance??{}).reconcile!==!1,b=r(C=>{n===null||typeof l!="function"||l({...n,balance:{...n.balance??y.balance??{},reconcile:C.target.checked}})},"toggleReconcile"),A=r(async()=>{if(!i){c(!0),w(null);try{const C=await o.refreshBalance();w({kind:C.ok?"ok":"err",text:C.message})}catch(C){w({kind:"err",text:a("balanceRefreshFailed",{message:C?.message??String(C)})})}finally{c(!1)}}},"doRefresh"),v=r(C=>pe(C,y,u?.currency),"money"),P=u.status==="ok"?e("div",{className:"cm-bal-line"},e("span",null,a("balanceLine",{total:v(u.totalBalance),granted:v(u.grantedBalance),toppedUp:v(u.toppedUpBalance),time:u.fetchedAt>0?new Date(u.fetchedAt).toLocaleTimeString():"\u2014"}))):u.status==="error"?e("div",{className:"cm-bal-line err"},a("balanceQueryFailedHint",{message:u.message||a("unknownError")})):e("div",{className:"cm-bal-line"},a("balanceNotQueried"));return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},a("accountBalance")),e("button",{className:"cm-btn small",onClick:A,disabled:i},a(i?"refreshing":"refreshBalance"))),P,N!==void 0&&N.ok===!1?e("div",{className:"cm-bal-line warn"},"\u26A0 "+N.message):null,e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:x,onChange:b}),a("reconcileLabel")),p!==null?e("div",{className:"cm-msg "+p.kind},p.text):null)}r(Nn,"BalancePanel");const zt="dsh-cost-meter.customBalance.open";function Sn(){try{return window.localStorage.getItem(zt)!=="0"}catch{return!0}}r(Sn,"readCustomBalanceOpen");function Cn(t){const{state:s,api:o,t:a,draft:n,setDraft:l}=t,[i,c]=L(!1),[p,w]=L(null),[u,y]=L(Sn),[N,x]=L(""),[b,A]=L(""),[v,P]=L({headers:"",extract:""}),C=xe(!1),f=s.customBalance,k=s.config,m=n?.customBalance??k.customBalance??{},d=m.enabled===!0,S=r(()=>{y(F=>{const Y=!F;try{window.localStorage.setItem(zt,Y?"1":"0")}catch{}return Y})},"toggleOpen");se(()=>{u?(C.current||(x(JSON.stringify(m.request?.headers??{},null,2)),A(JSON.stringify(m.extract??{},null,2)),P({headers:"",extract:""})),C.current=!0):C.current=!1},[u,m]);const M=r((F,Y)=>{n!==null&&l({...n,customBalance:{...n.customBalance??k.customBalance??{},[F]:Y}})},"setCustomBalance"),B=r((F,Y)=>{if(n===null)return;const Z=n.customBalance??k.customBalance??{};l({...n,customBalance:{...Z,request:{...Z.request??{},[F]:Y}}})},"setCustomBalanceRequest"),O=r(F=>{x(F);try{const Y=JSON.parse(F);if(Y===null||typeof Y!="object"||Array.isArray(Y))throw new Error("invalid");if(Object.values(Y).some(Z=>typeof Z!="string"))throw new Error("invalid");P(Z=>({...Z,headers:""})),B("headers",Y)}catch{P(Y=>({...Y,headers:a("customBalanceInvalidJson")}))}},"applyHeadersText"),I=r(F=>{A(F);try{const Y=JSON.parse(F);if(Y===null||typeof Y!="object"||Array.isArray(Y))throw new Error("invalid");P(Z=>({...Z,extract:""})),M("extract",Y)}catch{P(Y=>({...Y,extract:a("customBalanceInvalidJson")}))}},"applyExtractText"),g=r(async()=>{if(!(i||k.customBalance?.enabled!==!0)){c(!0),w(null);try{const F=await o.refreshCustomBalance();w({kind:F.ok?"ok":"err",text:F.message})}catch(F){w({kind:"err",text:a("customBalanceRefreshFailed",{message:F?.message??String(F)})})}finally{c(!1)}}},"doRefresh"),U=f?.status==="ok"?e(E,null,k.balance?.showProgressBar===!0?e("div",{className:"cm-budget",style:{marginTop:"8px"}},e($e,{segments:Je(s,k),direction:ne(k,"balance")}),e("div",{className:"cm-bal-line"},Xe(f,k,a,s))):e("div",{className:"cm-bal-line"},a("customBalanceRemaining",{amount:be(f.remaining,k,f)}))):f?.status==="error"?e("div",{className:"cm-bal-line err"},f.message||a("unknownError")):e("div",{className:"cm-bal-line"},a("balanceNotQueried")),Ne=u?e(E,null,e("p",{className:"cm-note"},a("customBalanceConfigNote")),e("div",{className:"cm-grid"},e("div",{className:"cm-field"},e("label",null,a("customBalanceLabelZh")),e("input",{className:"cm-input",value:m.label??"",onChange:r(F=>M("label",F.target.value),"onChange")})),e("div",{className:"cm-field"},e("label",null,a("customBalanceLabelEn")),e("input",{className:"cm-input",value:m.labelEn??"",onChange:r(F=>M("labelEn",F.target.value),"onChange")})),e("div",{className:"cm-field"},e("label",null,a("customBalanceUnitLabel")),e("select",{className:"cm-input",value:m.unit==="CNY"||m.unit==="EUR"?m.unit:"USD",onChange:r(F=>M("unit",F.target.value),"onChange")},e("option",{value:"USD"},"USD ($)"),e("option",{value:"CNY"},"CNY (\xA5)"),e("option",{value:"EUR"},"EUR (\u20AC)"))),e("div",{className:"cm-field"},e("label",null,a("customBalanceDisplayLabel")),e("select",{className:"cm-input",value:m.display??"both",onChange:r(F=>M("display",F.target.value),"onChange")},e("option",{value:"sidebar"},a("balanceSidebar")),e("option",{value:"settings"},a("balanceSettings")),e("option",{value:"both"},a("balanceBoth")),e("option",{value:"off"},a("off")))),e("div",{className:"cm-field"},e("label",null,a("customBalanceRefreshInterval")),oe({value:m.refreshMinutes??15},F=>M("refreshMinutes",Math.min(1440,Math.max(1,Math.floor(F)))))),e("div",{className:"cm-field"},e("label",null,a("customBalanceMethod")),e("select",{className:"cm-input",value:m.request?.method??"GET",onChange:r(F=>B("method",F.target.value),"onChange")},e("option",{value:"GET"},"GET"),e("option",{value:"POST"},"POST"))),e("div",{className:"cm-field",style:{gridColumn:"1 / -1"}},e("label",null,a("customBalanceUrl")),e("input",{className:"cm-input",value:m.request?.url??"",placeholder:"https://example.com/key/info",onChange:r(F=>B("url",F.target.value),"onChange")})),e("div",{className:"cm-field",style:{gridColumn:"1 / -1"}},e("label",null,a("customBalanceHeaders")),e("textarea",{className:"cm-input",rows:5,value:N,onChange:r(F=>O(F.target.value),"onChange")}),v.headers?e("span",{className:"cm-hint err"},v.headers):null),e("div",{className:"cm-field",style:{gridColumn:"1 / -1"}},e("label",null,a("customBalanceExtract")),e("textarea",{className:"cm-input",rows:8,value:b,onChange:r(F=>I(F.target.value),"onChange")}),v.extract?e("span",{className:"cm-hint err"},v.extract):null))):e("p",{className:"cm-note cm-collapsed-note"},Ze(m,q(k?.locale))||a("customBalanceTitle"));return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},a("customBalanceTitle")),e("button",{className:"cm-toggle-btn",onClick:S},a(u?"customBalanceCollapseConfig":"customBalanceOpenConfig")),e("button",{className:"cm-btn small",onClick:g,disabled:i||k.customBalance?.enabled!==!0},a(i?"refreshing":"refreshCustomBalance"))),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:d===!0,onChange:r(F=>M("enabled",F.target.checked),"onChange")}),e("span",null,a("enable"))),U,Ne,p!==null?e("div",{className:"cm-msg "+p.kind},p.text):null)}r(Cn,"CustomBalancePanel");function An(t){const{state:s,api:o,t:a,draft:n,setDraft:l}=t,[i,c]=L(!1),[p,w]=L(null),u=s.goQuota,y=s.config,N=n?.goQuota?.enabled??y.goQuota?.enabled??!0,x=r((m,d)=>{n!==null&&l({...n,goQuota:{...n.goQuota??y.goQuota,[m]:d}})},"setGoQuota"),b=r(async()=>{if(!(i||N===!1)){c(!0),w(null);try{const m=await o.refreshGoQuota();w({kind:m.ok?"ok":"err",text:m.message})}catch(m){w({kind:"err",text:a("syncFailed",{message:m?.message??String(m)})})}finally{c(!1)}}},"doRefresh"),A=y.goQuota?.main==="weekly"||y.goQuota?.main==="monthly"?y.goQuota.main:"rolling",v=[A,...["rolling","weekly","monthly"].filter(m=>m!==A)],P=r(m=>m==="rolling"?"goWindowRolling":m==="weekly"?"goWindowWeekly":"goWindowMonthly","goLabelOf"),C=r(m=>m==="rolling"?u.rolling:m==="weekly"?u.weekly:u.monthly,"goWinOf"),f=r((m,d,S)=>{const M=d!==null&&typeof d=="object"&&typeof d.percent=="number",B=M?Math.max(0,Math.min(100,Number(d.percent)||0)):null,O=ce(B,ne(y,"go")),I=M&&typeof d.resetsAt=="string"&&d.resetsAt.length>0?a("goResetAt",{time:new Date(d.resetsAt).toLocaleString()}):"";return e("div",{className:"cm-go-row"+(S?" main":"")},e("span",{className:"cm-go-label"},a(m)),e("div",{className:"cm-go-bar"},B===null?null:e("div",{className:"cm-go-fill",style:{width:O.width+"%"}})),e("span",{className:"cm-go-num"},O.label===null?"\u2014":a("goQuotaPercent",{percent:String(Math.round(O.label))})),I?e("span",{className:"cm-go-reset"},I):null)},"windowRow"),k=N===!1?e("p",{className:"cm-note"},a("goQuotaDisabledNote")):u.status==="ok"?e("div",{className:"cm-go-list"},v.map(m=>f(P(m),C(m),m===A)),e("div",{className:"cm-go-time"},a("goQuotaFetchedAt",{time:u.fetchedAt>0?new Date(u.fetchedAt).toLocaleTimeString():"\u2014"}))):u.status==="error"?e("div",{className:"cm-bal-line err"},u.message||a("unknownError")):u.status==="off"&&u.message?e("p",{className:"cm-note"},u.message):e("div",{className:"cm-bal-line"},a("goQuotaNotQueried"));return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},a("goQuotaTitle")),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:N===!0,onChange:r(m=>x("enabled",m.target.checked),"onChange")}),e("span",null,a("enableGoQuota"))),e("button",{className:"cm-btn small",onClick:b,disabled:i||N===!1},a(i?"refreshing":"refreshGoQuota"))),k,p!==null?e("div",{className:"cm-msg "+p.kind},p.text):null)}r(An,"GoQuotaPanel");const ve=[{id:"anthropic",labelKey:"codingPlanAnthropic"},{id:"zai",labelKey:"codingPlanZai"},{id:"minimax",labelKey:"codingPlanMinimax"},{id:"kimi",labelKey:"codingPlanKimi"},{id:"openrouter",labelKey:"codingPlanOpenrouter"},{id:"siliconflow",labelKey:"codingPlanSiliconflow"},{id:"commandcode",labelKey:"codingPlanCommandcode"},{id:"scnet",labelKey:"codingPlanScnet"},{id:"volcengine",labelKey:"codingPlanVolcengine"}],Gt="dsh-cost-meter.codingPlans.open";function Pn(){try{return window.localStorage.getItem(Gt)==="1"}catch{return!1}}r(Pn,"readCodingPlansOpen");function Mn(t){const{state:s,api:o,t:a,draft:n,setDraft:l}=t,[i,c]=L(null),[p,w]=L({}),[u,y]=L(Pn),N=r(()=>{y(m=>{const d=!m;try{window.localStorage.setItem(Gt,d?"1":"0")}catch{}return d})},"toggleOpen"),x=s.codingPlans??{},b=s.config,A=r(m=>n?.codingPlans?.[m]??b.codingPlans?.[m]??{},"draftEntry"),v=r(m=>x[m]??{status:"off",message:"",fetchedAt:0,windows:{}},"liveEntry"),P=r((m,d,S)=>{if(n===null)return;const M=n.codingPlans??b.codingPlans??{};l({...n,codingPlans:{...M,[m]:{...M[m]??{},[d]:S}}})},"setPlan"),C=r(async m=>{if(i===null){c(m),w(d=>({...d,[m]:null}));try{const d=await o.refreshCodingPlan(m);w(S=>({...S,[m]:{kind:d.ok?"ok":"err",text:d.message}}))}catch(d){w(S=>({...S,[m]:{kind:"err",text:a("syncFailed",{message:d?.message??String(d)})}}))}finally{c(null)}}},"doRefresh"),f=r((m,d)=>{if(typeof d?.percent!="number")return e("div",{className:"cm-go-row"},e("span",{className:"cm-go-label"},m.replace(/_/g," ")),e("span",{className:"cm-go-num"},typeof d?.text=="string"?d.text:"\u2014"));const S=d?Math.max(0,Math.min(100,Number(d.percent)||0)):0,M=ce(S,ne(b,"plan")),B=d&&typeof d.resetsAt=="string"&&d.resetsAt.length>0?a("goResetAt",{time:new Date(d.resetsAt).toLocaleString()}):"";return e("div",{className:"cm-go-row"},e("span",{className:"cm-go-label"},m.replace(/_/g," ")),e("div",{className:"cm-go-bar"},e("div",{className:"cm-go-fill",style:{width:M.width+"%"}})),e("span",{className:"cm-go-num"},a("goQuotaPercent",{percent:String(Math.round(M.label))})),B?e("span",{className:"cm-go-reset"},B):null)},"windowRow"),k=r(({id:m,labelKey:d})=>{const S=A(m),M=v(m),B=S.enabled===!0,O=M.windows!==null&&typeof M.windows=="object"?M.windows:{},I=B===!1?e("p",{className:"cm-note"},a("codingPlanDisabledNote")):M.status==="ok"?e("div",{className:"cm-go-list"},Object.keys(O).length>0?m==="minimax"&&(Ae(O).five!=null||Ae(O).seven!=null)?e(jt,{five:Ae(O).five,seven:Ae(O).seven,fetchedAt:M.fetchedAt,t:a,wide:!0,direction:ne(b,"plan")}):Object.entries(O).map(([g,U])=>f(g,U)):e("div",{className:"cm-bal-line"},a("codingPlanNotQueried")),e("div",{className:"cm-go-time"},a("goQuotaFetchedAt",{time:M.fetchedAt>0?new Date(M.fetchedAt).toLocaleTimeString():"\u2014"}))):M.status==="error"?e("div",{className:"cm-bal-line err"},M.message||a("unknownError")):M.status==="off"&&M.message?e("p",{className:"cm-note"},M.message):e("div",{className:"cm-bal-line"},a("codingPlanNotQueried"));return e("div",{key:m,className:"cm-budget",style:{marginTop:"8px"}},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},a(d)),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:B,onChange:r(g=>P(m,"enabled",g.target.checked),"onChange")}),e("span",null,a("enableCodingPlan"))),e("button",{className:"cm-btn small",onClick:r(()=>{C(m)},"onClick"),disabled:i!==null||B===!1},a(i===m?"refreshing":"refreshCodingPlan"))),B?e("div",{className:"cm-field"},e("label",null,a("codingPlanDisplayLabel")),e("select",{className:"cm-input",value:typeof S.display=="string"?S.display:m==="minimax"?"both":"settings",onChange:r(g=>P(m,"display",g.target.value),"onChange")},e("option",{value:"sidebar"},a("balanceSidebar")),e("option",{value:"settings"},a("balanceSettings")),e("option",{value:"both"},a("balanceBoth")),e("option",{value:"off"},a("off"))),e("span",{className:"cm-hint"},a("codingPlanDisplayNote"))):null,B&&m!=="scnet"?e("div",{className:"cm-field"},e("label",null,a("codingPlanRefreshIntervalLabel")),oe({value:typeof S.refreshMinutes=="number"&&Number.isFinite(S.refreshMinutes)&&S.refreshMinutes>0?S.refreshMinutes:15},g=>{P(m,"refreshMinutes",Math.min(1440,Math.max(1,Math.floor(g))))})):null,B?m==="scnet"?e(E,null,e("div",{className:"cm-field"},e("label",null,a("scnetPlanCreditsLabel")),e("input",{className:"cm-input",type:"number",min:"1",step:"1000",value:typeof S.planCredits=="number"&&Number.isFinite(S.planCredits)&&S.planCredits>0?S.planCredits:24e4,onChange:r(g=>{const U=Number(g.target.value);Number.isFinite(U)&&U>0&&P(m,"planCredits",Math.floor(U))},"onChange")})),e("div",{className:"cm-field"},e("label",null,a("scnetPlanStartLabel")),e("input",{className:"cm-input",type:"date",value:typeof S.planStart=="string"?S.planStart:"",onChange:r(g=>P(m,"planStart",g.target.value),"onChange")})),e("p",{className:"cm-note"},a("scnetLocalNote"))):m==="volcengine"?e(E,null,e("div",{className:"cm-field"},e("label",null,a("volcengineAccessKeyIdLabel"))),e(Re,{target:"codingPlans.volcengine.ak",configured:M.keyConfigured===!0,source:M.keySource,t:a,api:o,placeholder:a("volcengineAccessKeyPlaceholder")}),e("div",{className:"cm-field"},e("label",null,a("volcengineSecretAccessKeyLabel"))),e(Re,{target:"codingPlans.volcengine.sk",configured:M.keyConfigured===!0,source:M.keySource,t:a,api:o,placeholder:a("volcengineSecretPlaceholder")}),e("p",{className:"cm-note"},a("volcengineNote"))):e(E,null,e("div",{className:"cm-field"},e("label",null,a("codingPlanKeyLabel"))),e(Re,{target:"codingPlans."+m,configured:M.keyConfigured===!0,source:M.keySource,t:a,api:o,placeholder:"sk-\u2026"})):null,I,p[m]!=null?e("div",{className:"cm-msg "+p[m].kind},p[m].text):null)},"renderRow");return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},a("codingPlansTitle")),e("button",{className:"cm-toggle-btn",onClick:N},a(u?"codingPlansCollapse":"codingPlansOpen"))),u?e(E,null,e("p",{className:"cm-note"},a("codingPlansNote")),ve.map(k)):e("p",{className:"cm-note cm-collapsed-note"},a("codingPlansCollapsedHint")))}r(Mn,"CodingPlansPanel");const Tn=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],_t=r(t=>(t.input??0)+(t.output??0)+(t.cacheRead??0)+(t.cacheWrite??0),"dayTokensOf");function rt(t){const s=t.useCost?t.useCost(k=>k):void 0,o=t.state??s?.state;if(!o)return null;const a=o.config,n=q(a?.locale),l=t.t??K(n),i=Array.isArray(o.history)?o.history:[];if(i.length===0)return e("div",null,e("h3",{className:"cm-h"},l("usageTitle")),e("p",{className:"cm-empty"},l("usageEmpty")));const c=o.meta?.dayKey??"",p=new Map(i.map(k=>[k.date,k])),w=r(k=>{const m=r(d=>String(d).padStart(2,"0"),"pad");return k.getFullYear()+"-"+m(k.getMonth()+1)+"-"+m(k.getDate())},"dayKeyOf"),u=new Date;u.setHours(0,0,0,0);const y=new Date(u);y.setDate(y.getDate()+(6-(u.getDay()+6)%7));const N=26,x=[],b=[];let A=-1;for(let k=N-1;k>=0;k-=1){for(let d=0;d<7;d+=1){const S=new Date(y);S.setDate(S.getDate()-(k*7+(6-d)));const M=p.get(w(S));x.push(M!==void 0?{day:M,tokens:_t(M)}:{day:{date:w(S)},tokens:0})}const m=new Date(y);m.setDate(m.getDate()-(k*7+6)),b.push(m.getMonth()!==A?n==="en"?Tn[m.getMonth()]:String(m.getMonth()+1)+"\u6708":""),A=m.getMonth()}const v=Math.max(...x.map(k=>k.tokens),1),P=r(k=>{const m=k/v;return m<.25?1:m<.5?2:m<.75?3:4},"levelOf"),C=r(k=>{const{day:m,tokens:d}=k,S="cm-ug-cell"+(d>0?" l"+P(d):"")+(m.date===c?" today":""),M=l("usageDay",{date:m.date,tokens:R(d),input:R(m.input??0),cache:R((m.cacheRead??0)+(m.cacheWrite??0)),output:R(m.output??0),calls:m.calls??0,cost:V(z(m,a),a)});return e(X,{key:m.date,label:M,side:"top",delayMs:200},e("div",{className:S}))},"cell"),f=o.total;return e("div",{className:"cm-ug"},e("h3",{className:"cm-h"},l("usageTitle")),e("div",{className:"cm-ug-total"},l("usageTotal",{tokens:R(_t(f)),input:R(f.input??0),cache:R((f.cacheRead??0)+(f.cacheWrite??0)),output:R(f.output??0),calls:f.calls??0})),e("div",{className:"cm-ug-grid",style:{gridTemplateColumns:"repeat("+N+",1fr)"}},x.map(C)),e("div",{className:"cm-ug-months",style:{gridTemplateColumns:"repeat("+N+",1fr)"}},b.map((k,m)=>e("span",{key:"m"+String(m),className:"cm-ug-monthc"},k))))}r(rt,"UsagePanel");function Bn(t){const s=t.useCost?t.useCost(h=>h):void 0,o=t.api,a=s?.state??null,[n,l]=L(null),[i,c]=L(null),[p,w]=L(!1),[u,y]=L(!1),[N,x]=L(!1),[b,A]=L(""),[v,P]=L(!1),[C,f]=L(!1),[k,m]=L("overview"),[d,S]=L({status:"idle",at:0,error:null}),M=Ce.useRef(null),B=Ce.useRef(null),O=Ce.useRef(null);se(()=>{if(a!==null){const h=JSON.stringify(a.config);l(j=>{const W=j!==null&&JSON.stringify(j)!==M.current;return W||(B.current=a.config,O.current=a.config),W?j:JSON.parse(h)}),M.current=h}},[a]),se(()=>{n!==null&&O.current===null&&B.current!==null&&(O.current=B.current)},[n]),se(()=>{if(n===null||o===void 0)return;const h=JSON.stringify(n);if(h===M.current)return;S(W=>W.status==="saving"?W:{...W,status:"saving"});const j=setTimeout(()=>{const W={},ae=O.current??B.current;if(ae!==null&&typeof ae=="object")for(const G of Object.keys(n))JSON.stringify(n[G])!==JSON.stringify(ae[G])&&(W[G]=n[G]);if(Object.keys(W).length===0){M.current=h,S({status:"saved",at:Date.now(),error:null});return}o.updateConfig(W).then(()=>{M.current=h,ae!==null&&typeof ae=="object"&&(O.current={...ae,...W}),S({status:"saved",at:Date.now(),error:null})},G=>{S({status:"error",at:0,error:G?.message??String(G)})})},600);return()=>{clearTimeout(j)}},[n,o]),se(()=>{s?.status==="error"&&s.error&&c({kind:"err",text:g("ledgerReadFailed",{message:s.error})})},[s?.status,s?.error]);const I=q((n??a?.config)?.locale),g=K(I);if(s===void 0||a===null)return e("div",{className:"cm-section"},e("p",{className:"cm-empty"},s?.status==="loading"?g("readingLedger"):g("ledgerUnavailable")));const U=a.config,Ne=r(async()=>{if(!v){P(!0),c(null);try{const h=await o.fetchPrices();if(c({kind:h.ok?"ok":"err",text:h.message}),h.ok&&h.state&&typeof h.state.config=="object"){const j=JSON.stringify(h.state.config);l(JSON.parse(j)),M.current=j}}catch(h){c({kind:"err",text:g("syncFailed",{message:h?.message??String(h)})})}finally{P(!1),w(!1)}}},"doFetch"),F=r(async()=>{if(!v){P(!0);try{await o.resetHistory(),c({kind:"ok",text:g("historyCleared")})}catch(h){c({kind:"err",text:g("clearFailed",{message:h?.message??String(h)})})}finally{P(!1),y(!1)}}},"doReset"),Y=r(async()=>{if(!v){P(!0),c(null);try{const h=await o.importLegacyHistory();c({kind:"ok",text:h.message})}catch(h){c({kind:"err",text:g("legacyImportFailed",{message:h?.message??String(h)})})}finally{P(!1),x(!1)}}},"doImportLegacy"),Z=r((h,j)=>{n!==null&&l({...n,[h]:j})},"setField"),Ie=r(()=>{if(n===null)return;const h=b.trim().toLowerCase();if(h.length===0||!/^[a-z0-9_.-]+$/.test(h)||n?.prices.models[h]!==void 0)return;const j={...n.prices.models,[h]:{cacheHit:0,cacheMiss:0,output:0}};l({...n,prices:{...n.prices,models:j}}),A("")},"addModel"),it=n===null?[]:Object.keys(n.prices.models).filter(h=>{const W=(n?.priceTableDisplay??U.priceTableDisplay??{})["deepseek:"+h];return typeof W=="boolean"?W:!0}).map(h=>e(lt,{key:h,modelId:h,entry:n.prices.models[h]??{cacheHit:0,cacheMiss:0,output:0},isDefault:!1,draft:n,setDraft:l,t:g})),T=[["overview",g("tabOverview")],["quotas",g("tabQuotas")],["usage",g("tabUsage")],["pricing",g("tabPricing")],["display",g("tabDisplay")]],D=d.status==="saving"?e("span",{className:"cm-hint"},g("saving")):d.status==="error"?e("span",{className:"cm-msg err"},g("autoSaveFailed",{message:d.error??""})):e("span",{className:"cm-hint"},d.status==="saved"?g("autoSavedAt",{time:new Date(d.at).toLocaleTimeString()}):g("autoSaveHint"));return e("div",{className:"cm-section"},e("div",{className:"cm-tabs-row"},e("div",{className:"cm-tabs",role:"tablist"},T.map(([h,j])=>e("button",{key:h,type:"button",role:"tab","aria-selected":String(k===h),className:"cm-tab"+(k===h?" active":""),onClick:r(()=>m(h),"onClick")},j))),D),i!==null?e("div",{className:"cm-msg "+i.kind},i.text):null,k==="overview"?e(E,{key:"overview"},e("div",{className:"cm-cards"},U.hideTodayCost===!0?null:e(st,{title:g("cardToday"),value:V(z(a.today,U),U),sub:g("callsTokens",{calls:a.today.calls,input:R(a.today.input),cache:R(a.today.cacheRead+a.today.cacheWrite),output:R(a.today.output)})}),e(st,{title:g("cardMonth"),value:V(z(a.month,U),U),sub:g("callsTokens",{calls:a.month.calls,input:R(a.month.input),cache:R(a.month.cacheRead+a.month.cacheWrite),output:R(a.month.output)})}),e(st,{title:g("cardTotal"),value:V(z(a.total,U),U),sub:g("cardTotalSub",{calls:a.total.calls})})),e("p",{className:"cm-note",key:"cards-footnote"},g("cardsFootnote")),(()=>{const h=Na(a);return h!==null?e("p",{className:"cm-note",key:"tz-hint"},g("timezoneHint",{host:h.hostLabel,browser:h.browserLabel})):null})(),e("label",{className:"cm-cards-toggle",title:g("cardsTogglePlanTotalHint")},e("input",{type:"checkbox",checked:(n??U).showTotalWithPlan===!0,onChange:r(h=>{const j=n??U;j!=null&&l({...j,showTotalWithPlan:h.target.checked})},"onChange")}),e("span",null,g("cardsTogglePlanTotal"))),e("div",null,e("h3",{className:"cm-h"},g("todaySessions")),e(mn,{state:a,t:g})),e(fn,{state:a,draft:n,setDraft:l,t:g}),(U.balance?.display==="settings"||U.balance?.display==="both")&&U.hideOfficialBalance!==!0?e(Nn,{state:a,api:o,t:g,draft:n,setDraft:l}):null):null,k==="quotas"?e(E,{key:"quotas"},e(An,{state:a,api:o,t:g,draft:n,setDraft:l}),e(Mn,{state:a,api:o,t:g,draft:n,setDraft:l}),e(Cn,{state:a,api:o,t:g,draft:n,setDraft:l})):null,k==="usage"?e(E,{key:"usage"},!Te||(U.usage?.position??"cost")==="cost"?e(rt,{state:a,t:g,locale:I}):null,e(yn,{state:a,config:n??U,t:g}),e(vn,{state:a,config:n??U,t:g}),e(cn,{state:a,api:o}),e(un,{state:a,api:o}),e("div",null,e("h3",{className:"cm-h"},g("historyDataTitle")),e("div",{className:"cm-buttons"},N?e(E,null,e("span",{className:"cm-hint"},g("confirmImportLegacy")),e("button",{className:"cm-btn",onClick:Y,disabled:v},g("apply")),e("button",{className:"cm-btn",onClick:r(()=>x(!1),"onClick")},g("cancel"))):e("button",{className:"cm-btn",onClick:r(()=>x(!0),"onClick"),disabled:v},g("importLegacy")),u?e(E,null,e("span",{className:"cm-hint"},g("confirmReset")),e("button",{className:"cm-btn danger",onClick:F,disabled:v},g("confirmClear")),e("button",{className:"cm-btn",onClick:r(()=>y(!1),"onClick")},g("cancel"))):e("button",{className:"cm-btn danger",onClick:r(()=>y(!0),"onClick"),disabled:v},g("clearAllHistory"))),e("p",{className:"cm-note"},g("legacyImportNote")))):null,k==="display"?e(E,{key:"display"},a?.secretMigration?.pending?.length>0?e(Ca,{pending:a.secretMigration.pending,t:g}):null,e("div",{className:"cm-toolbar"},e("div",{className:"cm-field"},e("label",null,g("languageLabel")),e("select",{className:"cm-input",value:n?.locale??"auto",onChange:r(h=>Z("locale",h.target.value),"onChange")},e("option",{value:"auto"},g("localeAuto")),e("option",{value:"zh"},g("localeZh")),e("option",{value:"en"},g("localeEn"))))),e("div",null,e("h3",{className:"cm-h"},g("displaySettings")),e("div",{className:"cm-grid"},e("div",{className:"cm-grid-group"},g("groupGeneral")),Te?e("div",{className:"cm-field"},e("label",null,g("usagePositionLabel")),e("select",{className:"cm-input",value:n?.usage?.position??"cost",onChange:r(h=>{n!==null&&l({...n,usage:{...n.usage??{position:"cost"},position:h.target.value}})},"onChange")},e("option",{value:"cost"},g("usagePositionCost")),e("option",{value:"general"},g("usagePositionGeneral")),e("option",{value:"section"},g("usagePositionSection")))):null,e("div",{className:"cm-field"},e("label",null,g("positionLabel")),e("select",{className:"cm-input",value:n?.position??"dock",onChange:r(h=>Z("position",h.target.value),"onChange")},e("option",{value:"dock"},g("positionDock")),e("option",{value:"header"},g("positionHeader")),e("option",{value:"off"},g("off")))),e("div",{className:"cm-field"},e("label",null,g("sidebarLabel")),e("select",{className:"cm-input",value:n?.sidebar===!1?"off":"on",onChange:r(h=>Z("sidebar",h.target.value==="on"),"onChange")},e("option",{value:"on"},g("sidebarOn")),e("option",{value:"off"},g("off")))),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.showSessionId===!0,onChange:r(h=>Z("showSessionId",h.target.checked),"onChange")}),e("span",null,g("showSessionIdLabel"))),e("div",{className:"cm-grid-group"},g("groupMoney")),e("div",{className:"cm-field"},e("label",null,g("currencyLabel")),e("select",{className:"cm-input",value:n?.currency??"CNY",onChange:r(h=>{const j=pn[h.target.value];j!==void 0&&n!==null&&l({...n,currency:h.target.value,...j})},"onChange")},e("option",{value:"CNY"},g("currencyCny")),e("option",{value:"USD"},g("currencyUsd")),e("option",{value:"EUR"},g("currencyEur")))),e("div",{className:"cm-field"},e("label",null,g("symbolLabel")),e("input",{className:"cm-input narrow",type:"text",value:n?.symbol??"",onChange:r(h=>Z("symbol",h.target.value),"onChange")})),e("div",{className:"cm-field"},e("label",null,g("rateLabel")),oe({value:n?.exchangeRate??1,emptyMode:"ignore"},h=>Z("exchangeRate",h))),e("div",{className:"cm-field"},e("label",null,g("decimalsLabel")),oe({value:n?.decimals??2},h=>Z("decimals",Math.min(10,Math.floor(h))))),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.hideOfficialBalance===!0,onChange:r(h=>Z("hideOfficialBalance",h.target.checked),"onChange")}),e("span",null,g("hideOfficialBalanceLabel"))),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.hideTodayCost===!0,onChange:r(h=>Z("hideTodayCost",h.target.checked),"onChange")}),e("span",null,g("hideTodayCostLabel"))),e("div",{className:"cm-grid-group"},g("groupSidebar")),e("div",{className:"cm-field"},e("label",null,g("balanceDisplayLabel")),e("select",{className:"cm-input",value:n?.balance?.display??"both",onChange:r(h=>{n!==null&&l({...n,balance:{...n.balance??{display:"both",refreshMinutes:5},display:h.target.value}})},"onChange")},e("option",{value:"sidebar"},g("balanceSidebar")),e("option",{value:"settings"},g("balanceSettings")),e("option",{value:"both"},g("balanceBoth")),e("option",{value:"off"},g("off")))),e("div",{className:"cm-field"},e("label",null,g("refreshIntervalLabel")),oe({value:n?.balance?.refreshMinutes??5},h=>{n!==null&&l({...n,balance:{...n.balance??{display:"both",refreshMinutes:5,showProgressBar:!1,budgetCap:null},refreshMinutes:Math.min(1440,Math.max(1,Math.floor(h)))}})})),e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.balance?.showProgressBar===!0,onChange:r(h=>{n!==null&&l({...n,balance:{...n.balance??{display:"both",refreshMinutes:5,showProgressBar:!1,budgetCap:null},showProgressBar:h.target.checked}})},"onChange")}),e("span",null,g("balanceShowProgressBar")))),e("div",{className:"cm-field"},e("label",null,g("balanceBudgetCapLabel")),oe({value:n?.balance?.budgetCap??""},h=>{n!==null&&l({...n,balance:{...n.balance??{display:"both",refreshMinutes:5,showProgressBar:!1,budgetCap:null},budgetCap:h>0?h:null}})}),e("span",{className:"cm-hint"},g("balanceBudgetCapHint"))),e("div",{className:"cm-field"},e("label",null,g("barDirectionsTitle")),["balance","budget","go","plan"].map(h=>e("div",{className:"cm-dir-row",key:h},e("span",{className:"cm-dir-label"},g("barDirection_"+h)),e("select",{className:"cm-input",value:n?.barDirections?.[h]??(h==="balance"?"remaining":"used"),onChange:r(j=>{if(n===null)return;const W={balance:"remaining",budget:"used",go:"used",plan:"used"};l({...n,barDirections:{...n.barDirections??W,[h]:j.target.value}})},"onChange")},e("option",{value:"remaining"},g("barDirectionRemaining")),e("option",{value:"used"},g("barDirectionUsed"))))),e("span",{className:"cm-hint"},g("barDirectionsHint"))),e("div",{className:"cm-field"},e("label",null,g("customBalanceDisplayLabel")),e("select",{className:"cm-input",value:n?.customBalance?.display??U.customBalance?.display??"both",onChange:r(h=>{n!==null&&l({...n,customBalance:{...n.customBalance??U.customBalance??{},display:h.target.value}})},"onChange")},e("option",{value:"sidebar"},g("balanceSidebar")),e("option",{value:"settings"},g("balanceSettings")),e("option",{value:"both"},g("balanceBoth")),e("option",{value:"off"},g("off")))),e("div",{className:"cm-field"},e("label",null,g("customBalanceRefreshInterval")),oe({value:n?.customBalance?.refreshMinutes??U.customBalance?.refreshMinutes??15},h=>{n!==null&&l({...n,customBalance:{...n.customBalance??U.customBalance??{},refreshMinutes:Math.min(1440,Math.max(1,Math.floor(h)))}})})),e("div",{className:"cm-field"},e("label",null,g("goQuotaDisplayLabel")),e("select",{className:"cm-input",value:n?.goQuota?.display??"both",onChange:r(h=>{n!==null&&l({...n,goQuota:{...n.goQuota??{display:"both",refreshMinutes:15,apiKey:""},display:h.target.value}})},"onChange")},e("option",{value:"sidebar"},g("balanceSidebar")),e("option",{value:"settings"},g("balanceSettings")),e("option",{value:"both"},g("balanceBoth")),e("option",{value:"off"},g("off")))),e("div",{className:"cm-field"},e("label",null,g("goMainLabel")),e("select",{className:"cm-input",value:n?.goQuota?.main??"rolling",onChange:r(h=>{n!==null&&l({...n,goQuota:{...n.goQuota??{display:"both",refreshMinutes:15,apiKey:"",main:"rolling"},main:h.target.value}})},"onChange")},e("option",{value:"rolling"},g("goWindowRolling")),e("option",{value:"weekly"},g("goWindowWeekly")),e("option",{value:"monthly"},g("goWindowMonthly")))),e("div",{className:"cm-field"},e("label",null,g("goQuotaRefreshIntervalLabel")),e("div",{className:"cm-range-row"},e("input",{className:"cm-range",type:"range",min:"1",max:"60",step:"1",value:Math.min(60,Math.max(1,Math.floor(Number(n?.goQuota?.refreshMinutes)||15))),onChange:r(h=>{n!==null&&l({...n,goQuota:{...n.goQuota??{display:"both",refreshMinutes:15,apiKey:""},refreshMinutes:Math.min(60,Math.max(1,Math.floor(Number(h.target.value)||15)))}})},"onChange")}),e("span",{className:"cm-range-value"},`${Math.min(60,Math.max(1,Math.floor(Number(n?.goQuota?.refreshMinutes)||15)))} ${g("goQuotaRefreshMinutesUnit")}`))),e("div",{className:"cm-field"},e("label",null,g("goQuotaKeyLabel"))),e(Re,{target:"goQuota",configured:U.goQuota?.keyConfigured===!0,source:U.goQuota?.keySource,t:g,api:o,placeholder:"sk-\u2026"}),e("div",{className:"cm-grid-group"},g("quotaStripGroup")),e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.quotaStrip?.enabled===!0,onChange:r(h=>{n!==null&&l({...n,quotaStrip:{...n.quotaStrip??{enabled:!1,budget:!0,go:!0,plans:!0},enabled:h.target.checked,promptSeen:!0}})},"onChange")}),e("span",null,g("quotaStripEnable")))),n?.quotaStrip?.enabled===!0?[["budget","quotaStripShowBudget"],["go","quotaStripShowGo"],["plans","quotaStripShowPlans"]].map(([h,j])=>e("label",{key:h,className:"cm-check"},e("input",{type:"checkbox",checked:n.quotaStrip[h]!==!1,onChange:r(W=>{n!==null&&l({...n,quotaStrip:{...n.quotaStrip,[h]:W.target.checked}})},"onChange")}),e("span",null,g(j)))):null,e("div",{className:"cm-field"},e("span",{className:"cm-hint"},g("quotaStripNote"))),e("div",{className:"cm-grid-group"},g("groupCorner")),e("div",{className:"cm-field"},e("label",null,g("cornerLabel")),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.corner?.enabled===!0,onChange:r(h=>{n!==null&&l({...n,corner:{...n.corner??{enabled:!1,goRolling:!0,goWeekly:!0,goMonthly:!0,budget:!0},enabled:h.target.checked}})},"onChange")}),e("span",null,g("cornerEnabledLabel"))),n?.corner?.enabled===!0?[["goRolling","cornerGoRolling"],["goWeekly","cornerGoWeekly"],["goMonthly","cornerGoMonthly"],["budget","cornerBudget"]].map(([h,j])=>e("label",{key:h,className:"cm-check"},e("input",{type:"checkbox",checked:n.corner[h]!==!1,onChange:r(W=>{n!==null&&l({...n,corner:{...n.corner,[h]:W.target.checked}})},"onChange")}),e("span",null,g(j)))):null),e("div",{className:"cm-grid-group"},g("groupDetail")),e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.goQuota?.detail!==!1,onChange:r(h=>{n!==null&&l({...n,goQuota:{...n.goQuota??{display:"both",refreshMinutes:15,apiKey:"",main:"rolling",detail:!0},detail:h.target.checked}})},"onChange")}),e("span",null,g("goDetailLabel")))),e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.budget?.detail!==!1,onChange:r(h=>{n!==null&&l({...n,budget:{...n.budget??{enabled:!1,amount:100,period:"month",customStart:null,customEnd:null,detail:!0},detail:h.target.checked}})},"onChange")}),e("span",null,g("budgetDetailLabel"))))),e("p",{className:"cm-note"},g("badgeNote")))):null,k==="pricing"?e(E,{key:"pricing"},e(gn,{state:a,draft:n,setDraft:l,t:g}),e("div",null,e("button",{type:"button",className:"cm-collapse-h","aria-expanded":String(C),onClick:r(()=>f(!C),"onClick")},e("span",{className:"cm-caret"+(C?" open":"")}),e("h3",{className:"cm-h"},g("priceTableTitle"))),C?e("div",{className:"cm-collapse-body"},e("p",{className:"cm-note"},g("priceTableNote")),e("p",{className:"cm-hint"},g("priceTableDisplayHint")),e("div",{className:"cm-catalog-vendor"},g("deepseekMountedHeader")),it,e(lt,{key:"__default__",modelId:g("defaultModelId"),entry:n?.prices.default??{cacheHit:0,cacheMiss:0,output:0},isDefault:!0,draft:n,setDraft:l,t:g}),e("div",{className:"cm-buttons"},e("input",{className:"cm-input narrow",type:"text",placeholder:g("newModelPlaceholder"),value:b,onChange:r(h=>A(h.target.value),"onChange")}),e("button",{className:"cm-btn small",onClick:Ie,disabled:b.trim().length===0},g("addModel"))),(()=>{const h=n?.priceTableDisplay??U.priceTableDisplay??{},j=n?.prices?.providers??{},W=r(G=>Object.keys(j[G]?.models??{}).filter(te=>h[G+":"+te]===!0),"directIds"),ae=Object.keys(j).filter(G=>W(G).length>0).sort((G,te)=>G.localeCompare(te));return ae.length===0?null:ae.map(G=>e("div",{key:G},e("div",{className:"cm-catalog-vendor"},(It[G]??G)+" \xB7 "+g("mountedSuffix")),W(G).sort().map(te=>e(Wt,{key:G+":"+te,provider:G,modelId:te,entry:j[G].models[te],draft:n,setDraft:l,t:g}))))})()):null),(()=>{const h=n?.priceOverrides??U.priceOverrides??{},j=n?.prices??U.prices,W=a.today.byProviderModel??{},ae={prices:j,priceMatch:n?.priceMatch??U.priceMatch},G=Object.keys(W).filter(Q=>{if(h[Q]!==void 0)return!1;const _=Q.indexOf(":"),me=(_>0?Q.slice(0,_):"deepseek").toLowerCase(),dt=_>0?Q.slice(_+1):Q;return ze(me,dt,ae).matched!==!0}),te=[...new Set([...G,...Object.keys(h)])],ke=a.month?.byProviderModel??{},Se=Object.keys(ke).filter(Q=>{if(h[Q]!==void 0)return!1;const _=Q.indexOf(":"),me=(_>0?Q.slice(0,_):"deepseek").toLowerCase(),dt=_>0?Q.slice(_+1):Q;return ze(me,dt,ae).matched===!0}).sort(),Kt=[{value:"__local__",label:g("overrideTargetLocal")},{value:"deepseek:__default__",label:g("overrideTargetDefault")},...Object.keys(j.models??{}).map(Q=>({value:"deepseek:"+Q,label:"DeepSeek \xB7 "+Q})),...Object.entries(j.providers??{}).flatMap(([Q,_])=>Object.keys(_?.models??{}).map(me=>({value:Q+":"+me,label:Q+" \xB7 "+me})))],ct=r((Q,_)=>{if(n===null)return;const me={...n.priceOverrides??{}};_===""?delete me[Q]:me[Q]=_,l({...n,priceOverrides:me})},"setOverride");return e("div",null,e("h3",{className:"cm-h"},g("priceMatchLabel")),e("div",{className:"cm-field"},e("select",{className:"cm-input",value:n?.priceMatch==="exact"?"exact":"auto",onChange:r(Q=>Z("priceMatch",Q.target.value),"onChange")},e("option",{value:"auto"},g("priceMatchAuto")),e("option",{value:"exact"},g("priceMatchExact")))),e("p",{className:"cm-note"},g("priceMatchNote")),te.length>0?e(E,null,e("h3",{className:"cm-h"},g("unmatchedTitle")),e("p",{className:"cm-hint"},g("unmatchedHint")),te.map(Q=>e("div",{key:Q,className:"cm-match-row"},e("span",null,Qt(Q)),e("select",{className:"cm-input",value:h[Q]??"",onChange:r(_=>ct(Q,_.target.value),"onChange")},e("option",{value:""},"\u2014"),Kt.map(_=>e("option",{key:_.value,value:_.value},_.label))),h[Q]!==void 0?e("button",{className:"cm-btn small",onClick:r(()=>ct(Q,""),"onClick")},g("overrideRemove")):null))):e("p",{className:"cm-hint"},g("overrideNone")),Se.length>0?e(E,null,e("h3",{className:"cm-h"},g("matchedTitle")),e("p",{className:"cm-hint"},g("matchedHint")),Se.map(Q=>e("div",{key:Q,className:"cm-match-row"},e("span",null,Qt(Q)),e("select",{className:"cm-input",value:"",onChange:r(_=>{_.target.value!==""&&ct(Q,_.target.value)},"onChange")},e("option",{value:""},g("matchedKeepAuto")),Kt.map(_=>e("option",{key:_.value,value:_.value},_.label)))))):null)})(),e(hn,{state:a,draft:n,setDraft:l,t:g}),e("div",null,e("h3",{className:"cm-h"},g("dataSync")),e("div",{className:"cm-field"},e("label",null,g("pricingCurrencyLabel")),e("select",{className:"cm-input",value:n?.pricingCurrency==="CNY"?"CNY":"USD",onChange:r(h=>Z("pricingCurrency",h.target.value),"onChange")},e("option",{value:"USD"},g("pricingCurrencyUsd")),e("option",{value:"CNY"},g("pricingCurrencyCny"))),e("p",{className:"cm-note"},g("pricingCurrencyNote"))),e("div",{className:"cm-buttons"},p?e(E,null,e("span",{className:"cm-hint"},g("confirmFetch")),e("button",{className:"cm-btn",onClick:Ne,disabled:v},g("apply")),e("button",{className:"cm-btn",onClick:r(()=>w(!1),"onClick")},g("cancel"))):e("button",{className:"cm-btn",onClick:r(()=>w(!0),"onClick"),disabled:v},g("syncFromDocs"))),e("p",{className:"cm-note"},g("lastSync",{time:U.fetchedAt!==null?new Date(U.fetchedAt).toLocaleString():g("neverSynced")})+g("source",{source:U.priceSource==="official"?g("sourceOfficial"):g("sourceBundled")})))):null)}r(Bn,"CostSection");const On=["remote"];async function Ln(t){const s=t.remote;if(s===void 0||typeof s.$mount!="function")return;const o=await s.$mount(ua);t.effect(()=>()=>{o()},"cost-meter: remote contribution");const a=t.get("remote.costMeter");if(a===void 0)return;const n=Sa({status:"loading",error:null,state:null}),l=r(()=>K(q(n.getSnapshot().state?.config?.locale)),"rpcT"),i=r(async(T,D)=>{const h=await a[T](...D??[]);if(h===null||typeof h!="object"||h.ok!==!0)throw new Error(h?.error?.message??l()("rpcFailed",{method:T}));return h.value},"call");let c=!1;const p=r(async()=>{if(c)return;c=!0;const T=n.getSnapshot();try{const D=await i("getState");n.set({status:"ready",error:null,state:D})}catch(D){n.set({status:"error",error:D?.message??String(D),state:T.state})}finally{c=!1}},"reload");t.effect(()=>t.on("connection/reset",()=>{p()}),"cost-meter: reconnect reload");const w=setInterval(()=>{document.hidden||p()},6e4);t.effect(()=>()=>{clearInterval(w)},"cost-meter: poll timer");const u=r(()=>{document.visibilityState==="visible"&&p()},"onVisible");document.addEventListener("visibilitychange",u),t.effect(()=>()=>{document.removeEventListener("visibilitychange",u)},"cost-meter: visibility reload");const y={reload:p,updateConfig:r(async T=>{const D=await i("updateConfig",[T]);return n.set({status:"ready",error:null,state:D}),D},"updateConfig"),fetchPrices:r(async()=>{const T=await a.fetchPrices();if(T===null||typeof T!="object"||T.ok!==!0)throw new Error(T?.error?.message??l()("rpcSyncFailed"));return T.value.state!==void 0&&n.set({status:"ready",error:null,state:T.value.state}),T.value},"fetchPrices"),resetHistory:r(async()=>{const T=await i("resetHistory");return n.set({status:"ready",error:null,state:T}),T},"resetHistory"),importLegacyHistory:r(async()=>{const T=await a.importLegacyHistory();if(T===null||typeof T!="object"||T.ok!==!0)throw new Error(T?.error?.message??T?.value?.message??l()("legacyImportFailed",{message:"RPC failed"}));return T.value.state!==void 0&&n.set({status:"ready",error:null,state:T.value.state}),T.value},"importLegacyHistory"),getDaySessions:r(async T=>i("getDaySessions",[T]),"getDaySessions"),getTopSessions:r(async(T,D,h)=>i("getTopSessions",[T,D,h]),"getTopSessions"),refreshBalance:r(async()=>{const T=await a.refreshBalance();if(T===null||typeof T!="object"||T.ok!==!0)throw new Error(T?.error?.message??l()("rpcBalanceFailed"));return T.value.state!==void 0&&n.set({status:"ready",error:null,state:T.value.state}),T.value},"refreshBalance"),refreshGoQuota:r(async()=>{const T=await a.refreshGoQuota();if(T===null||typeof T!="object"||T.ok!==!0)throw new Error(T?.error?.message??l()("rpcSyncFailed"));return T.value.state!==void 0&&n.set({status:"ready",error:null,state:T.value.state}),T.value},"refreshGoQuota"),refreshCustomBalance:r(async()=>{const T=await a.refreshCustomBalance();if(T===null||typeof T!="object"||T.ok!==!0)throw new Error(T?.error?.message??l()("rpcSyncFailed"));return T.value.state!==void 0&&n.set({status:"ready",error:null,state:T.value.state}),T.value},"refreshCustomBalance"),refreshCodingPlan:r(async T=>{const D=await a.refreshCodingPlan(T);if(D===null||typeof D!="object"||D.ok!==!0)throw new Error(D?.error?.message??l()("rpcSyncFailed"));return D.value.state!==void 0&&n.set({status:"ready",error:null,state:D.value.state}),D.value},"refreshCodingPlan"),setCredential:r(async(T,D)=>{const h=await a.setCredential(T,D);if(h===null||typeof h!="object"||h.ok!==!0)throw new Error(h?.error?.message??h?.value?.message??l()("rpcSyncFailed"));return h.value.state!==void 0&&n.set({status:"ready",error:null,state:h.value.state}),h.value},"setCredential"),clearCredential:r(async T=>{const D=await a.clearCredential(T);if(D===null||typeof D!="object"||D.ok!==!0)throw new Error(D?.error?.message??D?.value?.message??l()("rpcSyncFailed"));return D.value.state!==void 0&&n.set({status:"ready",error:null,state:D.value.state}),D.value},"clearCredential")};p();const N=t.get("slots");if(N===void 0)return;const x=r(()=>({hooks:{cost:n},api:y}),"injected"),b={gen:0,dispose:null},A=r(T=>{b.dispose!==null&&(b.dispose(),b.dispose=null),b.gen+=1;const D=b.gen;if(T==="off")return;const h=T==="header"?"conversation.session.header.actions":"conversation.composer.dock",j=T==="header"?{name:h,id:"cost-meter",order:-5,inject:x}:{name:h,id:"cost-meter",order:5,inject:x};N.inject(h,()=>{if(b.gen!==D)return;const W=N.register(j,T==="header"?Aa:Pa);if(b.gen!==D){W();return}return b.dispose=W,()=>{b.dispose===W&&(b.dispose=null),W()}})},"registerSession"),v={gen:0,dispose:null},P=r(T=>{v.dispose!==null&&(v.dispose(),v.dispose=null),v.gen+=1;const D=v.gen;T&&N.inject("sidebar.footer.action",()=>{if(v.gen!==D)return;const h=N.register({name:"sidebar.footer.action",id:"cost-meter",order:0,inject:x},rn);if(v.gen!==D){h();return}return v.dispose=h,()=>{v.dispose===h&&(v.dispose=null),h()}})},"registerFooter"),C={gen:0,dispose:null},f=r(T=>{C.dispose!==null&&(C.dispose(),C.dispose=null),C.gen+=1;const D=C.gen;T&&N.inject("conversation.composer.dock",()=>{if(C.gen!==D)return;const h=N.register({name:"conversation.composer.dock",id:"cost-meter-corner",order:9,inject:x},Fa);if(C.gen!==D){h();return}return C.dispose=h,()=>{C.dispose===h&&(C.dispose=null),h()}})},"registerCorner");N.inject("conversation.input.dock",()=>N.register({name:"conversation.input.dock",id:"cost-meter-qstrip",order:5,inject:x},an)),N.inject("sidebar.footer.action",()=>N.register({name:"sidebar.footer.action",id:"cost-meter-qstrip-guide",order:1,inject:x},nn)),N.inject("sidebar.footer.action",()=>N.register({name:"sidebar.footer.action",id:"cost-meter-balance-click-guide",order:2,inject:x},ln));const k={gen:0,dispose:null},m=r(T=>{k.dispose!==null&&(k.dispose(),k.dispose=null),k.gen+=1;const D=k.gen;T&&N.inject("sidebar.footer.action",()=>{if(k.gen!==D)return;const h=N.register({name:"sidebar.footer.action",id:"cost-meter-peak-alert",order:0,inject:x},Ua);if(k.gen!==D){h();return}return k.dispose=h,()=>{k.dispose===h&&(k.dispose=null),h()}})},"registerPeakAlert");window.cmPeakAlertPreview=T=>{if(window.__cmPeakAlertLive!==!0){console.warn("[dsh-cost-meter] \u5F39\u7A97\u7EC4\u4EF6\u672A\u6302\u8F7D:\u9700\u542F\u7528\u5CF0\u8C37\u8BA1\u4EF7\u5E76\u91CD\u542F dsh web \u540E\u518D\u9884\u89C8\u3002");return}window.dispatchEvent(new CustomEvent(et,{detail:{kind:T==="offpeak"?"offpeak":"peak"}}))};const d={gen:0,dispose:null},S=r(T=>{d.dispose!==null&&(d.dispose(),d.dispose=null),d.gen+=1;const D=d.gen;N.inject("settings.section",()=>{if(d.gen!==D)return;const h=N.register({name:"settings.section",id:"cost-meter",order:30,label:T==="en"?he.en.sectionLabel:he.zh.sectionLabel,inject:x},Bn);if(d.gen!==D){h();return}return d.dispose=h,()=>{d.dispose===h&&(d.dispose=null),h()}})},"registerSection"),M={gen:0,dispose:null},B=r(T=>{M.dispose!==null&&(M.dispose(),M.dispose=null),M.gen+=1;const D=M.gen;T&&N.inject("settings.general.item",()=>{if(M.gen!==D)return;const h=N.register({name:"settings.general.item",id:"cost-meter-usage",order:30,inject:x},rt);if(M.gen!==D){h();return}return M.dispose=h,()=>{M.dispose===h&&(M.dispose=null),h()}})},"registerGeneralUsage"),O={gen:0,dispose:null},I=r((T,D)=>{O.dispose!==null&&(O.dispose(),O.dispose=null),O.gen+=1;const h=O.gen;T&&N.inject("settings.section",()=>{if(O.gen!==h)return;const j=N.register({name:"settings.section",id:"cost-meter-usage",order:31,label:D==="en"?he.en.usageSectionLabel:he.zh.usageSectionLabel,inject:x},rt);if(O.gen!==h){j();return}return O.dispose=j,()=>{O.dispose===j&&(O.dispose=null),j()}})},"registerUsageSection");let g=null,U=null,Ne=null,F=null,Y=null,Z=null;const Ie=r(()=>{const T=n.getSnapshot().state,D=T?.config?.position??"dock",h=T?.config?.sidebar!==!1&&T?.config?.hideTodayCost!==!0,j=T?.config?.balance?.display??"both",W=(j==="sidebar"||j==="both")&&T?.config?.hideOfficialBalance!==!0,ae=h||W,G=T?.config?.corner?.enabled===!0,te=q(T?.config?.locale),ke=T?.config?.usage?.position??"cost";D!==g&&(A(D),g=D),ae!==U&&(P(ae),U=ae),G!==Ne&&(f(G),Ne=G);const Se=T?.config?.peakEnabled===!0;Se!==Z&&(m(Se),Z=Se),te!==F&&(S(te),F=te),ke!==Y?(Te&&(B(ke==="general"),I(ke==="section",te)),Y=ke):Te&&ke==="section"&&te!==F&&I(!0,te)},"sync");Ie();const it=n.subscribe(Ie);return()=>{it()}}return r(Ln,"apply"),He.apply=Ln,He.inject=On,Me.exports},"factory")});
|
|
2
|
+
var Dn=Object.defineProperty;var r=(Te,Be)=>Dn(Te,"name",{value:Be,configurable:!0});window.__ModuleLoader__.load({id:"dsh-cost-meter",factory:r(Te=>{var Be={exports:{}},Qe=Be.exports;Object.defineProperty(Qe,Symbol.toStringTag,{value:"Module"});const Ae=Te("react"),{Tooltip:te}=Te("@deepseek-ai/dsh-client-ui-primitives"),Le=!1,Yt=["/* dsh-cost-meter: \u4F1A\u8BDD\u8D39\u7528\u5FBD\u7AE0\u4E0E\u8BBE\u7F6E\u9875 */",".cm-root{display:block;text-align:center;max-width:var(--dsh-chat-content-width,720px);width:100%;margin:0 auto;box-sizing:border-box;padding:4px calc(var(--dsh-composer-side-clearance,0px) + 16px) 0;font-size:12px;line-height:20px;color:var(--dsw-alias-label-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}",".cm-chip{display:inline-flex;align-items:center;gap:4px;max-width:180px;padding:0 8px;height:22px;border-radius:6px;background:var(--dsw-alias-bg-layer-2);font-size:12px;line-height:22px;color:var(--dsw-alias-label-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}",".cm-foot{display:flex;align-items:center;gap:6px;height:32px;padding:0 8px;border-radius:8px;font-size:12px;color:var(--dsw-alias-label-secondary);white-space:nowrap;overflow:hidden}",".cm-foot:hover{background:var(--dsw-alias-interactive-bg-hover)}",".cm-foot-rail{width:100%;justify-content:center;padding:0;font-size:13px;font-weight:600;color:var(--dsw-alias-label-primary)}",".cm-foot-rail:hover{background:var(--dsw-alias-interactive-bg-hover)}",".cm-num{font-variant-numeric:tabular-nums}",".cm-go-rail{font-size:11px;font-weight:700;color:var(--dsw-alias-label-primary)}",".cm-go-list{display:flex;flex-direction:column;gap:10px}",".cm-go-row{display:flex;align-items:center;gap:8px;font-size:12px}",".cm-go-label{flex:none;width:88px;color:var(--dsw-alias-label-secondary)}",".cm-go-bar{flex:1;height:6px;border-radius:3px;background:var(--dsw-alias-interactive-bg-hover);overflow:hidden}",".cm-go-fill{height:100%;border-radius:3px;background:var(--dsw-alias-brand-primary)}",".cm-go-num{flex:none;min-width:44px;text-align:right;font-weight:600;font-variant-numeric:tabular-nums}",".cm-go-reset{flex:none;max-width:230px;font-size:11px;color:var(--dsw-alias-label-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}",".cm-go-time{font-size:11px;color:var(--dsw-alias-label-tertiary)}",".cm-go-row.main .cm-go-label{font-weight:600;color:var(--dsw-alias-label-primary)}",".cm-corner{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;width:100%;max-width:var(--dsh-chat-content-width,720px);margin:2px auto 0;box-sizing:border-box;padding:0 calc(var(--dsh-composer-side-clearance,0px) + 16px)}",".cm-corner-chip{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:6px;background:var(--dsw-alias-bg-layer-2);font-size:11px;line-height:20px;color:var(--dsw-alias-label-secondary);white-space:nowrap;font-variant-numeric:tabular-nums}",".cm-corner-chip:hover{background:var(--dsw-alias-interactive-bg-hover)}",".cm-corner-chip.warn{color:var(--dsw-alias-state-warn-primary)}",".cm-corner-chip.over{color:var(--dsw-alias-state-error-primary)}",".cm-qstrip{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;width:100%;max-width:var(--dsh-chat-content-width,720px);margin:0 auto;box-sizing:border-box;padding:0 calc(var(--dsh-composer-side-clearance,0px) + 16px)}",".cm-qchip{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border-radius:6px;background:var(--dsw-alias-bg-layer-2);font-size:11px;line-height:22px;color:var(--dsw-alias-label-secondary);white-space:nowrap;font-variant-numeric:tabular-nums;cursor:default}",".cm-qchip:hover{background:var(--dsw-alias-interactive-bg-hover)}",".cm-qchip .cm-qlabel{color:var(--dsw-alias-label-primary);font-weight:600}",".cm-qchip .cm-qbar{display:block;width:44px;height:4px;border-radius:2px;background:var(--dsw-alias-border-l1);overflow:hidden;flex:none}",".cm-qchip .cm-qfill{display:block;height:100%;border-radius:2px;background:var(--dsw-alias-state-ok-primary,#3ba272)}",".cm-qchip .cm-qseg{display:inline-flex;align-items:center;gap:4px}",".cm-qchip .cm-qsep{width:1px;height:12px;background:var(--dsw-alias-border-l1);flex:none}",".cm-qchip .cm-qtext{color:var(--dsw-alias-label-secondary)}",".cm-qchip.warn{color:var(--dsw-alias-state-warn-primary)}",".cm-qchip.warn .cm-qfill{background:var(--dsw-alias-state-warn-primary)}",".cm-qchip.over{color:var(--dsw-alias-state-error-primary)}",".cm-qchip.over .cm-qfill{background:var(--dsw-alias-state-error-primary)}",".cm-qchip.action{cursor:pointer;user-select:none;outline:none}",".cm-qchip.action:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-brand-primary)}",".cm-qchip.action:active{transform:translateY(0.5px)}",".cm-plan-provider{display:flex;flex-direction:column;gap:8px}",".cm-plan-provider + .cm-plan-provider{margin-top:14px}",".cm-plan-provider-name{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}",".cm-plan-updated{font-size:11px;font-weight:400;color:var(--dsw-alias-label-tertiary)}",".cm-plan-tag{flex:none;margin-left:6px;padding:0 6px;border-radius:999px;border:1px solid var(--dsw-alias-border-l1);font-size:10px;line-height:16px;color:var(--dsw-alias-state-warn-primary)}",".cm-plan-reset,.cm-plan-method{font-size:11px;color:var(--dsw-alias-label-tertiary)}",".cm-qguide{position:fixed;top:18px;left:50%;transform:translateX(-50%);z-index:9999;max-width:440px;width:calc(100% - 32px);border:1px solid var(--dsw-alias-border-l1);border-radius:12px;background:var(--dsw-alias-bg-layer-1);box-shadow:0 8px 28px rgba(0,0,0,.18);padding:14px 16px;font-size:13px;color:var(--dsw-alias-label-primary);display:flex;flex-direction:column;gap:8px}",".cm-qguide h4{margin:0;font-size:13px;font-weight:600}",".cm-qguide p{margin:0;font-size:12px;line-height:1.6;color:var(--dsw-alias-label-secondary)}",".cm-qguide .cm-buttons{display:flex;gap:8px;justify-content:flex-end}",".cm-section{display:flex;flex-direction:column;gap:20px;padding:4px 2px 24px;font-size:13px;color:var(--dsw-alias-label-primary)}",".cm-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}",".cm-cards-toggle{display:flex;align-items:center;gap:6px;margin:-6px 2px 0 auto;width:fit-content;font-size:12px;color:var(--dsw-alias-label-tertiary);cursor:pointer;user-select:none}",".cm-cards-toggle:hover{color:var(--dsw-alias-label-primary)}",".cm-cards-toggle input{margin:0;cursor:pointer}",".cm-card{border:1px solid var(--dsw-alias-border-l1);border-radius:12px;padding:14px 16px;background:var(--dsw-alias-bg-layer-1)}",".cm-card-title{font-size:12px;color:var(--dsw-alias-label-tertiary);margin:0 0 8px}",".cm-card-value{font-size:20px;line-height:28px;font-weight:600}",".cm-card-sub{font-size:12px;color:var(--dsw-alias-label-tertiary);margin-top:4px}",".cm-h{font-size:13px;font-weight:600;margin:0}",".cm-collapse-h{display:flex;align-items:center;gap:8px;background:none;border:none;padding:0;margin:0;cursor:pointer;color:inherit;font:inherit;text-align:left}",".cm-collapse-h:hover .cm-h{color:var(--dsw-alias-interactive-text-hover,var(--dsw-alias-label-primary))}",".cm-caret{flex:none;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid var(--dsw-alias-label-secondary);transform:rotate(-90deg);transition:transform .15s ease}",".cm-caret.open{transform:rotate(0)}",".cm-collapse-body{display:flex;flex-direction:column;gap:12px;margin-top:12px}",".cm-toolbar{display:flex;justify-content:flex-end;align-items:center;gap:10px}",".cm-toolbar .cm-field{flex-direction:row;align-items:center;gap:8px}",".cm-toolbar .cm-field label{margin:0;font-size:12px;color:var(--dsw-alias-label-tertiary)}",".cm-toolbar .cm-input{min-width:150px;padding:4px 10px}",".cm-tabs-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;border-bottom:1px solid var(--dsh-alias-border-l1);padding-bottom:10px}",".cm-tabs{display:flex;align-items:center;gap:4px;flex-wrap:wrap}",".cm-tab{font:inherit;font-size:13px;color:var(--dsw-alias-label-secondary);background:transparent;border:none;border-radius:8px;padding:6px 14px;cursor:pointer;white-space:nowrap}",".cm-tab:hover{background:var(--dsw-alias-interactive-bg-hover)}",".cm-tab.active{background:var(--dsw-alias-state-business-primary);color:var(--dsw-alias-label-primary-inverted);font-weight:600}",".cm-tabs-row .cm-msg{padding:2px 10px}",".cm-note{font-size:12px;color:var(--dsw-alias-label-tertiary);margin:0}",".cm-table{width:100%;border-collapse:collapse;font-size:12px}",".cm-table th,.cm-table td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--dsw-alias-border-l1);white-space:nowrap}",".cm-table th{color:var(--dsw-alias-label-tertiary);font-weight:500}",".cm-table td.num,.cm-table th.num{text-align:right;font-variant-numeric:tabular-nums}",".cm-table tr:last-child td{border-bottom:none}",".cm-table tr.cm-row-click{cursor:pointer}",".cm-table tr.cm-row-click:hover td{background:var(--dsw-alias-bg-hover,rgba(127,127,127,.08))}",".cm-sess-title{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}",".cm-sess-id{font-size:11px;font-family:ui-monospace,Consolas,monospace;color:var(--dsw-alias-label-tertiary)}",".cm-empty{font-size:12px;color:var(--dsw-alias-label-tertiary);padding:8px 0}",".cm-scroll{max-height:320px;overflow:auto;border:1px solid var(--dsw-alias-border-l1);border-radius:10px}",".cm-grid{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:12px}",".cm-field{display:flex;flex-direction:column;gap:6px}",".cm-field label{font-size:12px;color:var(--dsw-alias-label-secondary)}",".cm-input{font:inherit;font-size:13px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l1);border-radius:8px;padding:6px 10px;outline:none}",".cm-input:focus{border-color:var(--dsw-alias-state-business-primary)}",".cm-input.narrow{max-width:120px}",".cm-range-row{display:flex;align-items:center;gap:10px}",".cm-range{flex:1;min-width:0;accent-color:var(--dsw-alias-state-business-primary)}",".cm-range-value{flex:none;min-width:44px;font-size:12px;color:var(--dsw-alias-label-tertiary);text-align:right}",".cm-check{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--dsw-alias-label-primary);cursor:pointer}",".cm-price-card{border:1px solid var(--dsw-alias-border-l1);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:10px;background:var(--dsw-alias-bg-layer-1)}",".cm-price-head{display:flex;align-items:center;justify-content:space-between;gap:8px}",".cm-price-name{font-weight:600;font-size:13px}",".cm-price-legacy{font-size:11px;color:var(--dsw-alias-label-tertiary);border:1px solid var(--dsw-alias-border-l1);border-radius:999px;padding:1px 8px}",".cm-price-row{display:grid;grid-template-columns:52px 1fr 1fr 1fr;gap:8px;align-items:center}",".cm-price-row span{font-size:12px;color:var(--dsw-alias-label-tertiary)}",".cm-price-row input{width:100%}",".cm-buttons{display:flex;flex-wrap:wrap;gap:10px;align-items:center}",".cm-btn{font:inherit;font-size:13px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-button-elevated-fill);border:1px solid var(--dsw-alias-border-l1);border-radius:8px;padding:6px 14px;cursor:pointer}",".cm-btn:hover{background:var(--dsw-alias-interactive-bg-hover)}",".cm-btn.primary{background:var(--dsw-alias-state-business-primary);border-color:transparent;color:var(--dsw-alias-label-primary-inverted)}",".cm-btn.primary:hover{opacity:0.88;background:var(--dsw-alias-state-business-primary)}",".cm-btn.danger{color:var(--dsw-alias-state-error-primary)}",".cm-btn.small{padding:3px 10px;font-size:12px}",".cm-msg{font-size:12px;line-height:18px;padding:8px 12px;border-radius:8px;border:1px solid var(--dsw-alias-border-l1)}",".cm-msg.ok{color:var(--dsw-alias-state-success-primary)}",".cm-msg.err{color:var(--dsw-alias-state-error-primary)}",".cm-hint{font-size:12px;color:var(--dsw-alias-label-tertiary)}",".cm-budget{border:1px solid var(--dsw-alias-border-l1);border-radius:12px;padding:14px 16px;background:var(--dsw-alias-bg-layer-1);display:flex;flex-direction:column;gap:10px}",".cm-peak-alert{position:fixed;z-index:9999;width:340px;max-width:calc(100vw - 32px);padding:16px;border-radius:14px;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);box-shadow:0 14px 36px rgba(0,0,0,.22);display:flex;flex-direction:column;gap:8px;font-size:12px;animation:cm-peak-alert-in .22s cubic-bezier(.2,.8,.2,1)}",".cm-peak-alert.cm-peak-alert-corner{right:20px;bottom:20px}",".cm-peak-alert.cm-peak-alert-center{top:50%;left:50%;transform:translate(-50%,-50%);animation-name:cm-peak-alert-in-center}",".cm-peak-alert-peak{border-top:3px solid var(--dsw-alias-state-warn-primary)}",".cm-peak-alert-offpeak{border-top:3px solid var(--dsw-alias-state-info-primary,#3b82f6)}",".cm-peak-alert-badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.4px;text-transform:uppercase}",'.cm-peak-alert-badge::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:0 0 0 4px color-mix(in srgb,currentColor 16%,transparent)}',".cm-peak-alert-peak .cm-peak-alert-badge{color:var(--dsw-alias-state-warn-primary)}",".cm-peak-alert-offpeak .cm-peak-alert-badge{color:var(--dsw-alias-state-info-primary,#3b82f6)}",".cm-peak-alert-title{font-size:14px;font-weight:600;color:var(--dsw-alias-label-primary)}",".cm-peak-alert-body{color:var(--dsw-alias-label-secondary);line-height:1.55}",".cm-peak-alert-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:2px}",".cm-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}","@keyframes cm-peak-alert-in{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}","@keyframes cm-peak-alert-in-center{from{opacity:0;transform:translate(-50%,calc(-50% + 10px))}to{opacity:1;transform:translate(-50%,-50%)}}",".cm-budget-head{display:flex;align-items:center;justify-content:space-between;gap:8px}",".cm-budget-bar{height:8px;border-radius:999px;background:var(--dsw-alias-bg-layer-3);overflow:hidden}",".cm-budget-fill{height:100%;border-radius:999px;background:var(--dsw-alias-state-business-primary);transition:width .3s ease}",".cm-budget-fill.warn{background:var(--dsw-alias-state-warn-primary)}",".cm-budget-fill.over{background:var(--dsw-alias-state-error-primary)}",".cm-ug{display:flex;flex-direction:column;gap:12px}",".cm-ug-total{font-size:13px;color:var(--dsw-alias-label-primary)}",".cm-ug-grid{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,auto);gap:3px;width:100%}",".cm-ug-cell{width:100%;aspect-ratio:1/1;border-radius:3px;box-sizing:border-box;background:color-mix(in srgb,var(--dsw-alias-label-primary) 8%,transparent);border:1px solid var(--dsw-alias-border-l1)}",".cm-ug-cell.l1{background:color-mix(in srgb,var(--dsw-alias-state-business-primary) 25%,var(--dsw-alias-bg-layer-3));border-color:transparent}",".cm-ug-cell.l2{background:color-mix(in srgb,var(--dsw-alias-state-business-primary) 50%,var(--dsw-alias-bg-layer-3));border-color:transparent}",".cm-ug-cell.l3{background:color-mix(in srgb,var(--dsw-alias-state-business-primary) 75%,var(--dsw-alias-bg-layer-3));border-color:transparent}",".cm-ug-cell.l4{background:var(--dsw-alias-state-business-primary);border-color:transparent}",".cm-ug-cell.today{outline:1px solid var(--dsw-alias-label-secondary);outline-offset:1px}",".cm-ug-months{display:grid;grid-auto-flow:column;gap:3px;width:100%;font-size:10px;color:var(--dsw-alias-label-tertiary);margin-top:4px}",".cm-ug-monthc{white-space:nowrap}",".cm-budget-line{font-size:13px;color:var(--dsw-alias-label-secondary)}",".cm-budget-line.over{color:var(--dsw-alias-state-error-primary)}",".cm-peak-strip{display:flex;align-items:center;gap:6px;margin-top:4px;min-width:0}",".cm-peak-track{position:relative;display:flex;flex:1;height:6px;min-width:0;border-radius:999px;overflow:hidden;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-3)}",".cm-peak-segment{height:100%;flex:1}",".cm-peak-high{background:#ff9800}",".cm-peak-low{background:var(--dsw-alias-state-business-primary)}",".cm-peak-marker{position:absolute;top:0;left:50%;width:2px;height:100%;background:var(--dsw-alias-bg-base);box-shadow:0 0 0 1px var(--dsw-alias-label-tertiary);transform:translateX(-50%);transition:left .4s ease;z-index:2}",".cm-peak-chip{font-size:11px;font-weight:600;line-height:1.2;white-space:nowrap;color:var(--dsw-alias-label-secondary)}",".cm-peak-strip.peak .cm-peak-chip{color:#ff9800}",".cm-peak-strip.off .cm-peak-chip{color:var(--dsw-alias-state-business-primary)}",".cm-peak-strip.weekend .cm-peak-chip{color:#34a853}",".cm-peak-classic{position:relative;display:flex;flex-direction:column;gap:5px;margin-top:6px;min-width:0}",".cm-peak-classic .cm-peak-track{flex:none;height:8px}",".cm-peak-classic-marker{position:absolute;top:0;left:50%;width:4px;height:12px;background:var(--dsw-alias-bg-base);border:1.5px solid #ff9800;box-shadow:0 0 0 1px var(--dsw-alias-bg-base),0 0 0 2px var(--dsw-alias-label-tertiary);transform:translateX(-50%);transition:left .4s ease;z-index:2;border-radius:2px}",'.cm-peak-classic-marker::after{content:"";position:absolute;top:-7px;left:50%;transform:translateX(-50%);border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid #ff9800}',".cm-peak-classic.off .cm-peak-classic-marker{border-color:var(--dsw-alias-state-business-primary)}",".cm-peak-classic.off .cm-peak-classic-marker::after{border-top-color:var(--dsw-alias-state-business-primary)}",".cm-peak-classic-chip{align-self:flex-start;font-size:11px;font-weight:600;line-height:1.4;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:999px;padding:2px 8px;white-space:nowrap;color:var(--dsw-alias-label-secondary)}",".cm-peak-classic.peak .cm-peak-classic-chip{color:#ff9800}",".cm-peak-classic.off .cm-peak-classic-chip{color:var(--dsw-alias-state-business-primary)}",".cm-peak-classic.weekend .cm-peak-classic-chip{color:#34a853}",".cm-peak-classic.weekend .cm-peak-classic-marker{border-color:#34a853}",".cm-peak-classic.weekend .cm-peak-classic-marker::after{border-top-color:#34a853}",".cm-peak-rail{display:flex;flex-direction:column;align-items:center;gap:3px;width:40px;box-sizing:border-box}",".cm-peak-rail-track{position:relative;display:flex;flex-direction:column;width:6px;height:56px;border-radius:999px;overflow:hidden;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-3)}",".cm-peak-rail-segment{width:100%;flex:1}",".cm-peak-rail-high{background:#ff9800}",".cm-peak-rail-low{background:var(--dsw-alias-state-business-primary)}",".cm-peak-rail-marker{position:absolute;left:0;top:50%;width:100%;height:2px;background:var(--dsw-alias-bg-base);box-shadow:0 0 0 1px var(--dsw-alias-label-tertiary);transform:translateY(-50%);transition:top .4s ease;z-index:2}",".cm-peak-rail-label{font-size:10px;font-weight:600;line-height:1.2;white-space:nowrap;color:var(--dsw-alias-label-secondary)}",".cm-peak-rail.peak .cm-peak-rail-label{color:#ff9800}",".cm-peak-rail.off .cm-peak-rail-label{color:var(--dsw-alias-state-business-primary)}",".cm-peak-rail.weekend .cm-peak-rail-label{color:#34a853}",".cm-peak-rail-classic{display:flex;flex-direction:column;align-items:center;gap:3px;width:40px;box-sizing:border-box}",".cm-peak-rail-classic-track{position:relative;display:flex;flex-direction:column;width:14px;height:56px;border-radius:999px;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-3)}",".cm-peak-rail-classic-segment{position:relative;width:100%;flex:1;overflow:hidden}",".cm-peak-rail-classic-segment.peak{background:#ff9800;border-radius:999px 999px 0 0}",".cm-peak-rail-classic-segment.off{background:var(--dsw-alias-state-business-primary);border-radius:0 0 999px 999px}",".cm-peak-rail-classic-marker{position:absolute;left:50%;top:50%;width:12px;height:4px;background:var(--dsw-alias-bg-base);border:1.5px solid #ff9800;box-shadow:0 0 0 1px var(--dsw-alias-bg-base),0 0 0 2px var(--dsw-alias-label-tertiary);transform:translate(-50%,-50%);transition:top .4s ease;z-index:2;border-radius:2px}",".cm-peak-rail-classic.off .cm-peak-rail-classic-marker{border-color:var(--dsw-alias-state-business-primary)}",".cm-peak-rail-classic-label{font-size:10px;font-weight:600;line-height:1.2;white-space:nowrap}",".cm-peak-rail-classic.peak .cm-peak-rail-classic-label{color:#ff9800}",".cm-peak-rail-classic.off .cm-peak-rail-classic-label{color:var(--dsw-alias-state-business-primary)}",".cm-peak-rail-classic.weekend .cm-peak-rail-classic-marker{border-color:#34a853}",".cm-peak-rail-classic.weekend .cm-peak-rail-classic-label{color:#34a853}",".cm-grid-group{grid-column:1 / -1;margin-top:8px;font-size:12px;font-weight:600;color:var(--dsw-alias-label-tertiary);border-bottom:1px solid var(--dsw-alias-border-l1);padding-bottom:4px}",".cm-grid-group:first-child{margin-top:0}",".cm-peak-preview{margin-top:8px}",".cm-toggle-btn{background:none;border:none;padding:0;font-size:12px;font-weight:600;color:var(--dsw-alias-state-business-primary);cursor:pointer}",".cm-toggle-btn:hover{text-decoration:underline}",".cm-collapsed-note{margin-top:4px}",".cm-catalog-vendor{margin-top:10px;font-size:12px;font-weight:600;color:var(--dsw-alias-label-tertiary);border-bottom:1px solid var(--dsw-alias-border-l1);padding-bottom:2px;display:flex;align-items:center;justify-content:space-between;gap:8px}",".cm-vendor-toggle{cursor:pointer;user-select:none}",".cm-vendor-toggle:hover{color:var(--dsw-alias-label-secondary)}",".cm-vendor-display{display:inline-flex;align-items:center;gap:4px;font-weight:400;font-size:11px;color:var(--dsw-alias-label-tertiary);white-space:nowrap}",".cm-catalog-family{margin:6px 0 2px;font-size:11px;font-weight:600;color:var(--dsw-alias-label-tertiary)}",".cm-catalog-row{display:flex;align-items:center;gap:8px;padding:4px 0;border-top:1px solid var(--dsw-alias-border-l1);font-size:12px}",".cm-catalog-mounted{display:flex;flex-direction:column;gap:4px;padding:6px 0;border-top:1px solid var(--dsw-alias-border-l1)}",".cm-catalog-id{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}",".cm-catalog-price{color:var(--dsw-alias-label-secondary);white-space:nowrap;font-size:11px}",".cm-catalog-tag{font-size:10px;padding:1px 6px;border-radius:999px;border:1px solid var(--dsw-alias-state-business-primary);color:var(--dsw-alias-state-business-primary);white-space:nowrap}",".cm-mstats-tabs{display:flex;gap:8px;margin-bottom:8px}",".cm-mstats-tab{background:none;border:1px solid var(--dsw-alias-border-l1);border-radius:999px;padding:2px 12px;font-size:12px;color:var(--dsw-alias-label-secondary);cursor:pointer}",".cm-mstats-tab.active{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-alias-bg-base);font-weight:600}",".cm-mstats-h{margin:10px 0 4px;font-size:12px;font-weight:600;color:var(--dsw-alias-label-secondary)}",".cm-mstats-row{display:grid;grid-template-columns:minmax(90px,170px) 1fr auto;gap:8px;align-items:center;font-size:11px;line-height:1.7}",".cm-mstats-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-secondary)}",".cm-mstats-barbg{position:relative;height:10px;border-radius:999px;background:var(--dsw-alias-bg-layer-3);overflow:hidden;display:flex}",".cm-mstats-bar{height:100%;min-width:0}",".cm-mstats-bar.cost{background:#ff9800;border-radius:999px}",".cm-mstats-bar.hit{background:#34a853;border-radius:999px}",".cm-mstats-bar.value{background:#a142f4;border-radius:999px}",".cm-mstats-seg{height:100%;min-width:0}",".cm-mstats-seg.in{background:var(--dsw-alias-state-business-primary)}",".cm-mstats-seg.cache{background:#ff9800}",".cm-mstats-seg.out{background:#34a853}",".cm-mstats-val{white-space:nowrap;color:var(--dsw-alias-label-secondary)}",".cm-mstats-legend{display:flex;gap:12px;font-size:10px;color:var(--dsw-alias-label-tertiary);margin:2px 0 4px}",".cm-mstats-dot{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:3px}",".cm-mstats-note{margin-top:10px;font-size:10px;line-height:1.6;color:var(--dsw-alias-label-tertiary)}",".cm-match-row{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:12px;flex-wrap:wrap}",".cm-match-row .cm-input{flex:1;min-width:160px}",".cm-budget-controls{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:12px}",".cm-bbox{border:1px solid var(--dsw-alias-border-l1);border-radius:12px;padding:8px 10px;background:var(--dsw-alias-bg-layer-1);display:flex;flex-direction:column;gap:6px;min-width:148px;box-sizing:border-box}",".cm-bbox.rail{padding:6px;min-width:0;width:40px;align-items:center;justify-content:center;border-radius:10px}",".cm-bbox.warn{border-color:var(--dsw-alias-state-warn-primary)}",".cm-bbox.over{border-color:var(--dsw-alias-state-error-primary)}",".cm-bbox-head{display:flex;align-items:center;justify-content:space-between;gap:8px}",".cm-bbox-label{font-size:12px;font-weight:600;color:var(--dsw-alias-label-primary)}",".cm-bbox-pct{font-size:12px;font-weight:600;color:var(--dsw-alias-label-primary)}",".cm-bbox.warn .cm-bbox-pct{color:var(--dsw-alias-state-warn-primary)}",".cm-bbox.over .cm-bbox-pct{color:var(--dsw-alias-state-error-primary)}",".cm-bbox-bar{height:6px;border-radius:999px;background:var(--dsw-alias-bg-layer-3);overflow:hidden}",".cm-bbox-bar.segments{display:flex;height:8px}",".cm-bbox-bar.segments .cm-bbox-fill{flex:none;border-radius:0;height:100%}",".cm-bbox-bar.segments .cm-bbox-fill:first-child{border-radius:999px 0 0 999px}",".cm-bbox-bar.segments .cm-bbox-seg-today{flex:none;height:100%;background:#ff9800}",".cm-bbox-bar.segments .cm-bbox-seg-spent{flex:none;height:100%;background:var(--dsw-alias-interactive-bg-hover);border-radius:0 999px 999px 0}",".cm-bbox-bar.segments.rev .cm-bbox-fill{border-radius:0 999px 999px 0}",".cm-bbox-bar.segments.rev .cm-bbox-fill:first-child{border-radius:999px 0 0 999px}",".cm-bbox-bar.segments.rev .cm-bbox-fill:last-child{border-radius:0 999px 999px 0}",".cm-bbox-bar.segments.rev .cm-bbox-seg-today:first-child{border-radius:999px 0 0 999px}",".cm-bbox-bar.segments.rev .cm-bbox-seg-today:last-child{border-radius:0 999px 999px 0}",".cm-bbox-bar.segments.rev .cm-bbox-seg-spent{border-radius:0}",".cm-bbox-bar.segments.rev .cm-bbox-seg-spent:last-child{border-radius:0 999px 999px 0}",".cm-dir-row{display:flex;align-items:center;gap:8px;margin-top:6px}",".cm-dir-label{flex:1 1 40%;font-size:12px;color:var(--dsw-alias-label-secondary)}",".cm-dir-row .cm-input{flex:1 1 60%;width:auto}",".cm-bbox-fill{height:100%;border-radius:999px;background:var(--dsw-alias-state-business-primary)}",".cm-bbox-pct.cm-bal-amt{color:var(--dsw-alias-state-business-primary)}",".cm-bal-link{flex:none;display:inline-flex;align-items:center;padding:1px 5px;border-radius:4px;font-size:12px;line-height:16px;color:var(--dsw-alias-label-tertiary);text-decoration:none;outline:none}",".cm-bal-link:hover{color:var(--dsw-alias-brand-primary);background:var(--dsw-alias-interactive-bg-hover)}",".cm-bal-link:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-brand-primary)}",".cm-bbox.warn .cm-bbox-fill{background:var(--dsw-alias-state-warn-primary)}",".cm-bbox.over .cm-bbox-fill{background:var(--dsw-alias-state-error-primary)}",".cm-bbox-line{font-size:12px;color:var(--dsw-alias-label-tertiary)}",".cm-bbox-rail{font-size:11px;font-weight:600;color:var(--dsw-alias-label-primary)}",".cm-bbox.warn .cm-bbox-rail{color:var(--dsw-alias-state-warn-primary)}",".cm-bbox.over .cm-bbox-rail{color:var(--dsw-alias-state-error-primary)}",".cm-bbox-pair{display:flex;flex-direction:column;gap:0;padding:2px 10px}",".cm-bbox-pair .cm-bbox-section{display:flex;flex-direction:column;gap:4px;padding:4px 0}",".cm-bbox-pair .cm-bbox-bar{height:4px}",".cm-bbox-divider{height:1px;background:var(--dsw-alias-border-l1);margin:0}",".cm-bbox-section.warn .cm-bbox-pct{color:var(--dsw-alias-state-warn-primary)}",".cm-bbox-section.over .cm-bbox-pct{color:var(--dsw-alias-state-error-primary)}",".cm-bbox-section.warn .cm-bbox-fill{background:var(--dsw-alias-state-warn-primary)}",".cm-bbox-section.over .cm-bbox-fill{background:var(--dsw-alias-state-error-primary)}",".cm-bbox.clickable,.cm-foot.clickable{cursor:pointer}",".cm-bbox.clickable:hover{border-color:var(--dsw-alias-state-business-primary)}",".cm-bbox.clickable:focus-visible,.cm-foot.clickable:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:1px}","@keyframes cm-click-refresh-pulse{0%,100%{opacity:.55}50%{opacity:1}}",".cm-bbox.clickable.busy,.cm-foot.clickable.busy{animation:cm-click-refresh-pulse 1.1s ease-in-out infinite}",".cm-mm{padding:8px 10px;gap:4px}",".cm-mm-title{font-size:12px;font-weight:600;color:var(--dsw-alias-label-primary)}",".cm-mm-row{display:flex;align-items:center;gap:8px;padding:2px 0}",".cm-mm-row .cm-bbox-label{flex:none;width:22px;font-weight:400;color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums}",".cm-mm-row .cm-bbox-bar{flex:1;min-width:0;height:6px}",".cm-mm-row .cm-bbox-pct{flex:none;min-width:2.4em;text-align:right;font-variant-numeric:tabular-nums}",".cm-mm-row.warn .cm-bbox-label,.cm-mm-row.warn .cm-bbox-pct{color:var(--dsw-alias-state-warn-primary)}",".cm-mm-row.over .cm-bbox-label,.cm-mm-row.over .cm-bbox-pct{color:var(--dsw-alias-state-error-primary)}",".cm-mm-row.warn .cm-bbox-fill{background:var(--dsw-alias-state-warn-primary)}",".cm-mm-row.over .cm-bbox-fill{background:var(--dsw-alias-state-error-primary)}",".cm-mm-row.wide .cm-bbox-label{width:auto;max-width:64px;flex:0 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}",".cm-mm-row.wide .cm-mm-text{flex:1;min-width:0;font-size:12px;color:var(--dsw-alias-label-secondary);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}",".cm-bal-line{font-size:13px;color:var(--dsw-alias-label-secondary)}",".cm-bal-line.warn{color:var(--dsw-alias-state-warning-primary,#b45309)}",".cm-bal-line.err,.cm-bal-err{color:var(--dsw-alias-state-error-primary)}",".cm-footer-stack{display:flex;flex-direction:column;gap:6px;width:100%;align-items:stretch;box-sizing:border-box}",".cm-footer-stack.rail{align-items:center}",".cm-footer-stack .cm-bbox{width:100%;min-width:0}",".cm-footer-stack .cm-foot{width:100%;box-sizing:border-box}","@media (max-width:640px){.cm-cards{grid-template-columns:1fr}.cm-grid{grid-template-columns:1fr}.cm-budget-controls{grid-template-columns:1fr}}"].join(`
|
|
3
|
+
`),ut="dsh-cost-meter/client.css";if(typeof document<"u"&&document.querySelector("style[data-plugin-css="+JSON.stringify(ut)+"]")===null){const t=document.createElement("style");t.dataset.plugin="dsh-cost-meter",t.dataset.pluginCss=ut,t.textContent=Yt,document.head.appendChild(t)}const we={zh:{sessionCostTitle:"\u672C\u4F1A\u8BDD\u8D39\u7528(\u6309\u6BCF\u6B21\u8C03\u7528\u5B9E\u9645\u65F6\u523B\u7CBE\u786E\u8BA1\u8D39)",sessionDetailTokens:"\u8F93\u5165 {input} \xB7 \u7F13\u5B58 {cache} \xB7 \u8F93\u51FA {output}",sessionDetailCache:"\u7F13\u5B58:\u8BFB {read} \xB7 \u5199 {write}(\u5199\u5165\u6309\u547D\u4E2D\u4EF7\u8BA1\u8D39)",cost:"\u8D39\u7528 {amount}",sessionLine:"\u672C\u4F1A\u8BDD {amount} \xB7 \u8F93\u5165 {input} \xB7 \u7F13\u5B58 {cache} \xB7 \u8F93\u51FA {output}",balanceQueryFailed:"\u4F59\u989D\u67E5\u8BE2\u5931\u8D25:{message}",unknownError:"\u672A\u77E5\u9519\u8BEF",balance:"\u4F59\u989D",queryFailed:"\u67E5\u8BE2\u5931\u8D25",balanceTitle:"DeepSeek \u5F00\u653E\u5E73\u53F0\u8D26\u6237\u4F59\u989D",reconcileLabel:"\u5B98\u65B9\u4F59\u989D\u53D8\u52A8\u4E0E\u672C\u5730\u8D26\u672C\u4EA4\u53C9\u5BF9\u8D26(\u504F\u5DEE\u8D85\u9608\u65F6\u63D0\u793A)",totalBalance:"\u603B\u4F59\u989D {amount}",grantedToppedUp:"\u8D60\u9001 {granted} \xB7 \u5145\u503C {toppedUp}",updatedAt:"\u66F4\u65B0\u65F6\u95F4 {time}",budgetOf:"\u9884\u7B97({period})",usedOf:"\u5DF2\u7528 {used} / {amount}",todayShare:"\u4ECA\u65E5 {amount} \xB7 \u5360\u9884\u7B97 {pct}",monthTotal:"\u672C\u6708 {month} \xB7 \u7D2F\u8BA1 {total}",budget:"\u9884\u7B97",todayCostTitle:"\u4ECA\u65E5\u8D39\u7528(\u6309\u5B98\u65B9\u4EF7\u683C\u7CBE\u786E\u8BA1\u8D39)",callsTokens:"\u8C03\u7528 {calls} \u6B21 \xB7 \u8F93\u5165 {input} \xB7 \u7F13\u5B58 {cache} \xB7 \u8F93\u51FA {output}",monthCost:"\u672C\u6708 {amount}",totalCost:"\u7D2F\u8BA1 {amount}",today:"\u4ECA\u65E5",periodDay:"\u4ECA\u65E5",periodMonth:"\u672C\u6708",periodAll:"\u7D2F\u8BA1",periodCustom:"\u81EA\u5B9A\u4E49",periodCustomRange:"\u81EA\u5B9A\u4E49\u533A\u95F4",noHistory:"\u6682\u65E0\u5386\u53F2\u8BB0\u5F55\u3002\u5F00\u59CB\u5BF9\u8BDD\u540E,\u8D39\u7528\u5C06\u6309\u5929\u6C47\u603B\u5728\u8FD9\u91CC\u3002",colDate:"\u65E5\u671F",colCalls:"\u8C03\u7528",colInTok:"\u8F93\u5165 tok",colCacheTok:"\u7F13\u5B58 tok",colOutTok:"\u8F93\u51FA tok",colCost:"\u8D39\u7528",noSessionsToday:"\u4ECA\u65E5\u6682\u65E0\u4F1A\u8BDD\u8BB0\u5F55\u3002",colSession:"\u4F1A\u8BDD",enableBudget:"\u542F\u7528\u9884\u7B97",budgetAmountLabel:"\u9884\u7B97\u989D\u5EA6(\u6309\u663E\u793A\u5E01\u79CD)",budgetPeriodLabel:"\u9884\u7B97\u5468\u671F",startDate:"\u5F00\u59CB\u65E5\u671F",endDate:"\u7ED3\u675F\u65E5\u671F(\u7559\u7A7A = \u4ECA\u65E5)",rangeText:"\u7EDF\u8BA1\u533A\u95F4:{range}",budgetDisabledNote:"\u672A\u542F\u7528\u9884\u7B97\u3002\u542F\u7528\u540E\u6B64\u5904\u663E\u793A\u9884\u7B97\u989D\u5EA6\u3001\u5DF2\u7528\u91D1\u989D\u4E0E\u5DF2\u7528\u767E\u5206\u6BD4(\u6309\u5F53\u524D\u5E01\u79CD\u6362\u7B97);\u5468\u671F\u53EF\u9009\u4ECA\u65E5/\u672C\u6708/\u7D2F\u8BA1\u6216\u81EA\u5B9A\u4E49\u65E5\u671F\u533A\u95F4\u3002",budgetStatus:"{period}\u9884\u7B97 {amount} \xB7 \u5DF2\u7528 {used} \xB7 {pct}%",overLimit:"(\u5DF2\u8D85\u51FA)",nearLimit:"(\u63A5\u8FD1\u4E0A\u9650)",legacyModel:"\u65E7\u6A21\u578B",defaultFallback:"\u9ED8\u8BA4\u56DE\u9000",remove:"\u79FB\u9664",tierBase:"\u57FA\u7840",tierOffPeak:"\u8C37\u65F6",tierPeak:"\u5CF0\u65F6",balanceRefreshFailed:"\u4F59\u989D\u5237\u65B0\u5931\u8D25:{message}",balanceLine:"\u603B\u4F59\u989D {total} \xB7 \u8D60\u9001 {granted} \xB7 \u5145\u503C {toppedUp} \xB7 \u66F4\u65B0\u4E8E {time}",balanceQueryFailedHint:"\u4F59\u989D\u67E5\u8BE2\u5931\u8D25:{message}(\u4F7F\u7528 \u8BBE\u7F6E\u2192\u6A21\u578B \u4E2D\u914D\u7F6E\u7684 API Key)",balanceNotQueried:"\u672A\u67E5\u8BE2\u4F59\u989D",accountBalance:"\u5B98\u65B9\u8D26\u6237\u4F59\u989D",refreshing:"\u5237\u65B0\u4E2D\u2026",refreshBalance:"\u5237\u65B0\u4F59\u989D",customBalanceTitle:"\u81EA\u5B9A\u4E49 Provider \u4F59\u989D",customBalanceConfigNote:"\u914D\u7F6E\u81EA\u5B9A\u4E49 Provider \u7684\u4F59\u989D\u67E5\u8BE2\u8BF7\u6C42\u4E0E\u89E3\u6790\u89C4\u5219\u3002\u8BF7\u6C42\u5934\u652F\u6301 {{ENV_VAR}} \u5360\u4F4D\u7B26,\u4ECE DSH \u51ED\u636E\u5E93\u6216\u73AF\u5883\u53D8\u91CF\u89E3\u6790;extract \u89C4\u5219\u652F\u6301\u70B9\u8DEF\u5F84\u3001\u6570\u5B57\u5E38\u91CF\u4E0E add / subtract / divide \u8FD0\u7B97(NewApi \u7B49 quota \u7AEF\u70B9\u7528 divide \u6309 500000 \u6362\u7B97\u7F8E\u5143)\u3002",customBalanceLabelZh:"\u4E2D\u6587\u540D\u79F0",customBalanceLabelEn:"\u82F1\u6587\u540D\u79F0",customBalanceUrl:"\u8BF7\u6C42 URL",customBalanceMethod:"\u8BF7\u6C42\u65B9\u6CD5",customBalanceHeaders:"\u8BF7\u6C42\u5934 (JSON)",customBalanceExtract:"\u89E3\u6790\u89C4\u5219 (JSON)",customBalanceDisplayLabel:"\u81EA\u5B9A\u4E49\u4F59\u989D\u663E\u793A\u4F4D\u7F6E",customBalanceRefreshInterval:"\u5237\u65B0\u95F4\u9694 (\u5206\u949F)",customBalanceUnitLabel:"\u4F59\u989D\u5E01\u79CD",balanceBarRemaining:"\u4F59\u989D {amount}",balanceBarToday:"\u5F53\u65E5\u5DF2\u7528 {amount}",balanceBarSpent:"\u5DF2\u7528 {amount}",balanceShowProgressBar:"\u4F59\u989D\u8FDB\u5EA6\u6761 (\u84DD=\u4F59\u989D,\u6A59=\u5F53\u65E5,\u7070=\u5DF2\u7528)",barDirectionsTitle:"\u8FDB\u5EA6\u6761\u65B9\u5411",barDirectionsHint:"\u5404\u7EC4\u8FDB\u5EA6\u6761\u53EF\u72EC\u7ACB\u9009\u62E9\u586B\u5145\u65B9\u5411:\u300C\u5269\u4F59\u65B9\u5411\u300D\u6EE1\u6761\u8D77\u6B65\u3001\u968F\u6D88\u8017\u9012\u51CF;\u300C\u5DF2\u7528\u65B9\u5411\u300D\u7A7A\u6761\u8D77\u6B65\u3001\u968F\u6D88\u8017\u586B\u6EE1\u3002",barDirection_balance:"\u4F59\u989D\u6761(\u5B98\u65B9/\u81EA\u5B9A\u4E49)",barDirection_budget:"\u9884\u7B97\u6761",barDirection_go:"Go \u989D\u5EA6\u6761",barDirection_plan:"Plan / Codex \u989D\u5EA6\u6761",barDirectionRemaining:"\u5269\u4F59\u65B9\u5411(\u6EE1 \u2192 \u7A7A)",barDirectionUsed:"\u5DF2\u7528\u65B9\u5411(\u7A7A \u2192 \u6EE1)",balanceBudgetCapLabel:"\u989D\u5EA6\u4E0A\u9650 (\u53EF\u9009)",balanceBudgetCapHint:"\u7559\u7A7A\u5219\u4F18\u5148\u4F7F\u7528 API \u8FD4\u56DE\u7684 max_budget;\u4ECD\u65E0\u5219\u663E\u793A\u6574\u6761\u6D45\u84DD",customBalanceInvalidJson:"JSON \u683C\u5F0F\u65E0\u6548",enable:"\u542F\u7528",customBalanceOpenConfig:"\u5C55\u5F00\u914D\u7F6E",customBalanceCollapseConfig:"\u6536\u8D77\u914D\u7F6E",customBalanceLine:"\u5269\u4F59 {remaining} \xB7 \u5DF2\u7528 {spend} / \u989D\u5EA6 {maxBudget} \xB7 \u66F4\u65B0\u4E8E {time}",customBalanceRemaining:"\u5269\u4F59 {amount}",refreshCustomBalance:"\u5237\u65B0\u81EA\u5B9A\u4E49\u4F59\u989D",customBalanceRefreshFailed:"\u81EA\u5B9A\u4E49\u4F59\u989D\u5237\u65B0\u5931\u8D25:{message}",goQuotaTitle:"OpenCode Go \u8BA2\u9605\u989D\u5EA6",goQuotaRowLabel:"Go",goWindowRolling:"\u6EDA\u52A8 5 \u5C0F\u65F6",goWindowWeekly:"\u672C\u5468",goWindowMonthly:"\u672C\u6708",goResetAt:"\u91CD\u7F6E:{time}",goQuotaPercent:"{percent}%",goQuotaFetchedAt:"\u66F4\u65B0\u4E8E {time}",goQuotaDisplayLabel:"Go \u989D\u5EA6\u663E\u793A\u4F4D\u7F6E",goQuotaRefreshIntervalLabel:"Go \u989D\u5EA6\u5237\u65B0\u95F4\u9694(\u5206\u949F)",goQuotaRefreshMinutesUnit:"\u5206\u949F",goQuotaKeyLabel:"OpenCode Go API Key(\u53EF\u9009,\u7559\u7A7A\u81EA\u52A8\u53D1\u73B0)",goMainLabel:"Go \u989D\u5EA6\u4E3B\u6863\u4F4D",goDetailLabel:"Go \u56FE\u6846\u8BE6\u7EC6\u4FE1\u606F",credentialConfiguredOf:"\u5DF2\u914D\u7F6E(\u6765\u6E90:{source})",credentialNotConfigured:"\u672A\u914D\u7F6E",credentialSave:"\u4FDD\u5B58",credentialClear:"\u6E05\u9664",credentialSaving:"\u4FDD\u5B58\u4E2D\u2026",credentialInputHint:"\u5BC6\u94A5\u53EA\u5199\u5165 DSH \u51ED\u636E\u5E93,\u4E0D\u4FDD\u5B58\u5728\u8D26\u672C\u91CC,\u4E5F\u4E0D\u4F1A\u56DE\u663E\u3002",secretMigrationPending:"\u4EE5\u4E0B\u5BC6\u94A5\u4ECD\u4EE5\u660E\u6587\u7559\u5728\u672C\u5730\u8D26\u672C,\u672A\u80FD\u81EA\u52A8\u8FC1\u5165\u51ED\u636E\u5E93\u3002\u8BF7\u5BFC\u51FA\u5BF9\u5E94\u73AF\u5883\u53D8\u91CF\u540E\u91CD\u542F:",credentialUnknownTarget:"\u672A\u77E5\u7684\u5BC6\u94A5\u76EE\u6807",budgetDetailLabel:"\u9884\u7B97\u56FE\u6846\u8BE6\u7EC6\u4FE1\u606F",refreshGoQuota:"\u5237\u65B0\u989D\u5EA6",goQuotaNotQueried:"\u672A\u67E5\u8BE2\u989D\u5EA6",enableGoQuota:"\u542F\u7528 OpenCode Go \u989D\u5EA6",codingPlansTitle:"Coding Plan \u989D\u5EA6",codingPlansNote:"\u6309\u5382\u5546\u67E5\u8BE2 coding plan \u8BA2\u9605\u989D\u5EA6(\u5404\u5BB6\u72EC\u7ACB\u5F00\u5173\u4E0E\u51ED\u636E)\u3002\u51ED\u636E\u53EA\u53D1\u9001\u5230\u5BF9\u5E94\u5382\u5546\u7684\u5B98\u65B9\u7AEF\u70B9;Key \u7559\u7A7A\u65F6\u6309\u73AF\u5883\u53D8\u91CF\u4E0E CLI \u767B\u5F55\u6001\u81EA\u52A8\u53D1\u73B0\u3002",codingPlansOpen:"\u5C55\u5F00 Coding Plan \u989D\u5EA6\u914D\u7F6E",codingPlansCollapse:"\u6298\u53E0 Coding Plan \u989D\u5EA6",codingPlansCollapsedHint:"\u9ED8\u8BA4\u6536\u8D77;\u5C55\u5F00\u540E\u53EF\u4E3A\u5404\u5BB6\u542F\u7528\u3001\u586B Key \u5E76\u67E5\u8BE2\u989D\u5EA6,\u5C55\u5F00/\u6536\u8D77\u72B6\u6001\u4F1A\u88AB\u8BB0\u4F4F\u3002",codingPlanAnthropic:"Anthropic(Claude Pro/Max)",codingPlanZai:"Z.ai / \u667A\u8C31 GLM Coding Plan",codingPlanMinimax:"MiniMax Token Plan",codingPlanMinimaxTitle:"MiniMax Plan",codingPlanRemain5h:"5h",codingPlanRemain7d:"7d",balanceRechargeLink:"\u6253\u5F00 DeepSeek \u5145\u503C\u9875(platform.deepseek.com/usage)",codexQuotaTitle:"ChatGPT (Codex) \u5468\u989D\u5EA6",enableCodingPlan:"\u542F\u7528\u989D\u5EA6\u67E5\u8BE2",codingPlanDisplayLabel:"\u663E\u793A\u4F4D\u7F6E",codingPlanDisplayNote:"\u9009\u300C\u4E3B\u9875\u9762\u4FA7\u8FB9\u680F / \u4E24\u8005\u300D\u540E,\u8BE5\u5382\u5546\u989D\u5EA6\u4EE5\u56FE\u6846\u5361\u7247\u5E38\u9A7B\u4FA7\u8FB9\u680F(\u4E0E Go \u989D\u5EA6/\u4F59\u989D\u540C\u6B3E,\u6536\u8D77\u7A84\u680F\u663E\u793A\u767E\u5206\u6BD4)\u3002",codingPlanKeyLabel:"API Key(\u53EF\u9009,\u7559\u7A7A\u81EA\u52A8\u53D1\u73B0)",codingPlanRefreshIntervalLabel:"\u5237\u65B0\u95F4\u9694(\u5206\u949F)",refreshCodingPlan:"\u5237\u65B0",codingPlanNotQueried:"\u672A\u67E5\u8BE2\u989D\u5EA6",codingPlanDisabledNote:"\u672A\u542F\u7528\u3002\u5F00\u542F\u540E\u5C06\u6309\u5237\u65B0\u95F4\u9694\u67E5\u8BE2\u8BE5\u5382\u5546\u7684 coding plan \u989D\u5EA6\u5E76\u663E\u793A\u5728\u8FD9\u91CC\u3002",goQuotaDisabledNote:"\u672A\u542F\u7528\u989D\u5EA6\u3002\u5F00\u542F\u540E\u5C06\u8BFB\u53D6 OpenCode Go \u8BA2\u9605\u989D\u5EA6(\u6EDA\u52A8 5 \u5C0F\u65F6 / \u672C\u5468 / \u672C\u6708)\u5E76\u663E\u793A\u5728\u4FA7\u8FB9\u680F\u56FE\u6846\u3001\u8BBE\u7F6E\u9875\u4E0E\u53F3\u4E0B\u89D2;\u6CA1\u6709 Go \u8BA2\u9605\u65F6\u4F1A\u5728\u8FD9\u91CC\u63D0\u793A\u539F\u56E0\u3002",cornerLabel:"\u53F3\u4E0B\u89D2\u663E\u793A(dock)",cornerEnabledLabel:"\u5728\u53F3\u4E0B\u89D2\u663E\u793A OpenCode Go \u989D\u5EA6 / \u9884\u7B97",cornerGoRolling:"\u6EDA\u52A8 5 \u5C0F\u65F6\u989D\u5EA6",cornerGoWeekly:"\u672C\u5468\u989D\u5EA6",cornerGoMonthly:"\u672C\u6708\u989D\u5EA6",cornerBudget:"\u9884\u7B97\u5DF2\u7528%",goShortRolling:"5h",goShortWeekly:"\u5468",goShortMonthly:"\u6708",budgetShort:"\u9884\u7B97",ledgerReadFailed:"\u8D26\u672C\u8BFB\u53D6\u5931\u8D25:{message}",readingLedger:"\u6B63\u5728\u8BFB\u53D6\u8D26\u672C\u2026",ledgerUnavailable:"\u8D26\u672C\u4E0D\u53EF\u7528",syncFailed:"\u540C\u6B65\u5931\u8D25:{message}",historyCleared:"\u5386\u53F2\u8BB0\u5F55\u5DF2\u6E05\u9664\u3002",clearFailed:"\u6E05\u9664\u5931\u8D25:{message}",peakOff:"\u5CF0\u8C37\u8BA1\u4EF7\u5DF2\u5173\u95ED,\u6309\u57FA\u7840\u4EF7\u683C\u8BA1\u8D39",peakNotEffective:"\u5C1A\u672A\u751F\u6548(\u751F\u6548\u65F6\u95F4:{time}),\u5F53\u524D\u6309\u57FA\u7840\u4EF7\u683C\u8BA1\u8D39",peakActive:"\u5F53\u524D\u5904\u4E8E\u5CF0\u65F6\u6BB5,\u6309\u5CF0\u65F6\u4EF7\u8BA1\u8D39",peakNotice:"\u5F53\u524D\u4E3A DeepSeek \u5CF0\u65F6\u9AD8\u4EF7\u65F6\u6BB5,\u6309\u5CF0\u65F6\u4EF7\u8BA1\u8D39",offPeakActive:"\u5F53\u524D\u5904\u4E8E\u8C37\u65F6\u6BB5,\u6309\u8C37\u65F6\u4EF7\u8BA1\u8D39",weekendAllOffPeak:"\u5468\u672B\u65F6\u6BB5\u2014\u2014\u5168\u8C37\u4EF7(\u5468\u516D\u53CA\u5468\u65E5\u5168\u5929\u6309\u8C37\u65F6\u4EF7\u8BA1\u8D39)",weekendChip:"\u5468\u672B\u65F6\u6BB5\u2014\u2014\u5168\u8C37\u4EF7",weekendShort:"\u5468\u672B\u5168\u8C37",weekendRuleNote:"2026-08-23(\u5468\u65E5)00:00 \u8D77,\u5468\u672B(\u5468\u516D\u53CA\u5468\u65E5,\u5317\u4EAC\u65F6\u95F4)\u5168\u5929\u4E0D\u518D\u533A\u5206\u5CF0\u8C37,\u7EDF\u4E00\u6309\u8C37\u65F6\u4EF7\u683C\u8BA1\u8D39;\u751F\u6548\u524D\u7684\u8D39\u7528\u4ECD\u6309\u539F\u89C4\u5219\u7ED3\u7B97\u3002",peakShort:"\u5CF0\u65F6",offPeakShort:"\u5E73\u4EF7",peakStyleLabel:"\u5CF0\u8C37\u65F6\u6BB5\u6761\u6837\u5F0F",peakStyleCompact:"\u7B80\u6D01(\u5355\u884C\u7D27\u51D1)",peakStyleClassic:"\u7ECF\u5178(\u5206\u6BB5\u4E0E\u80F6\u56CA\u82AF\u7247)",peakAlertLabel:"\u5CF0/\u8C37\u5207\u6362\u524D\u5F39\u7A97\u63D0\u9192",peakAlertAheadLabel:"\u63D0\u524D\u63D0\u9192(\u5206\u949F,1-30)",peakAlertTargetLabel:"\u63D0\u9192\u7C7B\u578B",peakAlertTargetPeak:"\u8FDB\u5165\u5CF0\u65F6",peakAlertTargetOffPeak:"\u8FDB\u5165\u8C37\u65F6",peakAlertTargetBoth:"\u5CF0\u548C\u8C37",peakAlertTitlePeak:"\u5373\u5C06\u8FDB\u5165\u5CF0\u65F6",peakAlertTitleOffPeak:"\u5373\u5C06\u8FDB\u5165\u8C37\u65F6",peakAlertBody:"\u7EA6 {time} \u540E\u8BA1\u8D39\u6863\u4F4D\u5207\u6362\u4E3A{phase}\u4EF7,\u8BF7\u6CE8\u610F\u672C\u65F6\u6BB5\u8C03\u7528\u6210\u672C\u3002",peakAlertPhasePeak:"\u5CF0\u65F6",peakAlertPhaseOffPeak:"\u8C37\u65F6",peakAlertBtn:"\u77E5\u9053\u4E86",peakAlertBadgePeak:"\u5CF0\u4EF7\u63D0\u9192",peakAlertBadgeOffPeak:"\u8C37\u4EF7\u63D0\u9192",peakAlertPositionLabel:"\u5F39\u7A97\u4F4D\u7F6E",peakAlertPositionCorner:"\u53F3\u4E0B\u89D2",peakAlertPositionCenter:"\u5C4F\u5E55\u4E2D\u5FC3",peakAlertWebNotifyLabel:"\u540C\u6B65\u53D1\u9001\u7CFB\u7EDF\u901A\u77E5",peakAlertWebNotifyHint:"\u5F00\u5173\u540E\u8BF7\u5728\u6D4F\u89C8\u5668\u5730\u5740\u680F\u5141\u8BB8\u901A\u77E5\u6743\u9650,\u624D\u80FD\u5728\u9875\u9762\u6700\u5C0F\u5316/\u5207\u8D70\u65F6\u6536\u5230\u63D0\u9192\u3002",peakAlertPreviewLabel:"\u9884\u89C8\u5F39\u7A97",peakAlertPreviewPeak:"\u9884\u89C8 \u8FDB\u5165\u5CF0",peakAlertPreviewOffPeak:"\u9884\u89C8 \u8FDB\u5165\u8C37",peakAlertPreviewTag:"(\u9884\u89C8)",peakPanelTitle:"\u5CF0\u8C37\u8BA1\u4EF7\u4E0E\u63D0\u793A",peakNoticeHiddenHint:"\u63D0\u793A\u5DF2\u9690\u85CF:\u9700\u542F\u7528\u5CF0\u8C37\u8BA1\u4EF7\u5E76\u5F00\u542F\u300C\u5CF0\u65F6\u9AD8\u4EF7\u65F6\u6BB5\u663E\u8457\u63D0\u793A\u300D\u3002",groupGeneral:"\u5E38\u89C4",groupMoney:"\u91D1\u989D\u4E0E\u5E01\u79CD",groupSidebar:"\u4FA7\u8FB9\u680F\u663E\u793A",groupCorner:"\u53F3\u4E0B\u89D2\u89D2\u6807",groupDetail:"\u56FE\u6846\u8BE6\u7EC6\u4FE1\u606F",catalogTitle:"\u62D3\u5C55\u4EF7\u683C\u8868",catalogNote:"\u5185\u7F6E\u5404\u5382\u5546\u3001\u6309\u6A21\u578B\u5BB6\u65CF\u5206\u7C7B\u7684\u53C2\u8003\u4EF7\u683C\u76EE\u5F55(\u53EA\u8BFB)\u3002\u6302\u8F7D = \u628A\u6761\u76EE\u590D\u5236\u8FDB\u4E0A\u65B9\u53EF\u7F16\u8F91\u4EF7\u683C\u8868\u5E76\u53C2\u4E0E\u8BA1\u8D39;DeepSeek \u6A21\u578B\u53EF\u53D6\u6D88\u6302\u8F7D(\u56DE\u9000\u9ED8\u8BA4\u4EF7,\u76EE\u5F55\u4E2D\u4ECD\u53EF\u91CD\u65B0\u6302\u8F7D)\u3002",catalogOpen:"\u5C55\u5F00\u62D3\u5C55\u4EF7\u683C\u8868",catalogCollapse:"\u6536\u8D77\u62D3\u5C55\u4EF7\u683C\u8868",mountBtn:"\u6302\u8F7D",unmountBtn:"\u53D6\u6D88\u6302\u8F7D",mountedTag:"\u5DF2\u6302\u8F7D",catalogUnpriced:"\u672A\u6838\u4EF7",catalogDeepseekNote:"DeepSeek \u6A21\u578B\u652F\u6301\u5CF0\u8C37\u4E24\u6863;\u53D6\u6D88\u6302\u8F7D\u540E\u6309\u9ED8\u8BA4\u4EF7\u8BA1\u8D39\u4E14\u4E0D\u518D\u88AB\u81EA\u52A8\u5339\u914D\u547D\u4E2D\u3002",modelStatsTitle:"\u6309\u6A21\u578B\u7EDF\u8BA1(token \u4E0E\u8D39\u7528)",modelStatsToday:"\u4ECA\u65E5",modelStatsHistory:"\u8FD1 90 \u5929",modelStatsCostH:"\u8D39\u7528\u6392\u884C",modelStatsTokensH:"Token \u6D88\u8017",modelStatsHitH:"\u7F13\u5B58\u547D\u4E2D\u7387",modelStatsValueH:"\u6027\u4EF7\u6BD4 \xB7 \u6BCF\u7F8E\u5143 token \u6570",modelStatsInput:"\u8F93\u5165",modelStatsCache:"\u7F13\u5B58",modelStatsOutput:"\u8F93\u51FA",modelStatsEmpty:"\u8BE5\u65F6\u6BB5\u6682\u65E0\u7528\u91CF\u6570\u636E\u3002",modelStatsBlended:"\u7EFC\u5408\u5355\u4EF7 {price}/M",modelStatsNote:"\u53E3\u5F84:\u7F13\u5B58\u547D\u4E2D\u7387 = \u7F13\u5B58\u8BFB \xF7 (\u7F13\u5B58\u8BFB + \u975E\u7F13\u5B58\u8F93\u5165);\u7EFC\u5408\u5355\u4EF7 = \u8D39\u7528 \xF7 \u603B token \xD7 1M(USD/M tokens);\u6027\u4EF7\u6BD4 = \u603B token \xF7 \u8D39\u7528,\u8D8A\u9AD8\u8D8A\u597D;\u8D39\u7528\u4E3A\u8D26\u672C\u6309\u6BCF\u6B21\u8C03\u7528\u5B9E\u9645\u65F6\u523B\u8BA1\u8D39\u7684\u7F8E\u5143\u503C\u3002",modelStatsLegacy:"\u672A\u5206\u6A21\u578B(\u65E9\u671F\u6570\u636E \xB7 \u6309\u5F53\u65F6\u8BB0\u5F55\u8BA1\u8D39)",sessionLineSplit:"\u672C\u4F1A\u8BDD {amount}(API)\xB7 Plan \u7B49\u503C {planAmount} \xB7 \u8F93\u5165 {input} \xB7 \u7F13\u5B58 {cache} \xB7 \u8F93\u51FA {output}",costChipPlan:"\u8D39\u7528 {amount}(+Plan)",sessionDetailPlan:"Plan \u8BA2\u9605\u989D\u5EA6\u6D88\u8017(\u7B49\u503C){amount}",planStatsTitle:"Token Plan \u7528\u91CF\u7EDF\u8BA1(\u6BCF 1% \u4E0E\u6EE1\u7A97\u4F30\u7B97)",planStatsEmpty:"\u6682\u65E0\u5DF2\u542F\u7528\u7684 Coding Plan \u989D\u5EA6\u6570\u636E;\u5728\u300C\u989D\u5EA6\u300D\u6807\u7B7E\u542F\u7528\u5E76\u6210\u529F\u5237\u65B0\u540E,\u8FD9\u91CC\u4F1A\u663E\u793A\u5404\u7A97\u53E3\u7684\u6BCF 1% \u989D\u5EA6\u4E0E\u6EE1\u7A97\u7528\u91CF\u4F30\u7B97\u3002",planStatsWindow:"\u7A97\u53E3",planStatsPercent:"\u5DF2\u7528 %",planStatsLocal:"\u672C\u5468\u671F\u5B9E\u9645(\u672C\u5730\u8D26\u672C)",planStatsPer1:"\u6BCF 1% \u989D\u5EA6 \u2248",planStatsFull:"\u6EE1\u7A97 100% \u2248",planStatsResets:"\u91CD\u7F6E {time}",planStatsMethodSample:"\u91C7\u6837\u5DEE\u5206",planStatsMethodLive:"\u5F53\u524D\u7528\u91CF\u6298\u7B97",planStatsMethodNone:"\u6837\u672C\u4E0D\u8DB3",planStatsMethodSampleAt:"{method}(\u57FA\u51C6 {time})",planStatsConfidenceLow:"\u8BFB\u6570\u7CBE\u5EA6\u53D7\u9650",planStatsCurveTitle:"Plan \u7528\u91CF\u66F2\u7EBF(\u6309\u91C7\u6837\u533A\u95F4\u805A\u5408)",planStatsDaily:"\u6BCF\u65E5",planStatsWeekly:"\u6BCF\u5468",planStatsMonthly:"\u6BCF\u6708",planStatsCurveEmpty:"\u91C7\u6837\u533A\u95F4\u5C1A\u4E0D\u8DB3(\u81F3\u5C11\u4E24\u6B21\u6210\u529F\u5237\u65B0\u4E14\u767E\u5206\u6BD4\u6709\u53D8\u5316),\u66F2\u7EBF\u4F1A\u5728\u6301\u7EED\u4F7F\u7528\u540E\u9010\u6B65\u6210\u5F62\u3002",planStatsBarTip:"{date}:\u6EE1\u7A97\u4F30\u8BA1 \u2248 {full}(\u6BCF 1% \u2248 {per1})\xB7 \u5B9E\u9645 {tokens} / {cost} \xB7 {intervals} \u4E2A\u91C7\u6837\u533A\u95F4",planStatsNote:"\u53E3\u5F84:\u300C\u91D1\u989D\u300D\u5747\u4E3A\u6309\u76EE\u5F55 API \u4EF7\u6298\u7B97\u7684\u7B49\u503C\u7F8E\u5143\u2014\u2014\u8BA2\u9605\u6E20\u9053\u6D88\u8017\u7684\u662F\u5957\u9910\u989D\u5EA6,\u4E0D\u52A8\u771F\u91D1\u767D\u94F6,\u9884\u7B97/\u4ECA\u65E5\u8D39\u7528\u7B49\u91D1\u989D\u5C55\u793A\u53EA\u7EDF\u8BA1 API \u6E20\u9053\u3002\u672C\u9762\u677F\u7684\u300C\u672C\u5468\u671F\u5B9E\u9645(\u672C\u5730\u8D26\u672C)\u300D\u4E0E\u6BCF 1%/\u6EE1\u7A97\u4F30\u7B97\u53EA\u7EDF\u8BA1\u5728 dsh \u5185\u53D1\u8D77\u7684\u8C03\u7528\u2014\u2014\u5176\u5B83\u673A\u5668/CLI \u7684\u6D88\u8017\u4E0D\u8FDB\u672C\u5730\u8D26\u672C\u3002\u6BCF 1% \u4E0E\u6EE1\u7A97\u4F30\u7B97\u7531\u989D\u5EA6\u5237\u65B0\u91C7\u6837\u7684\u9996\u5C3E\u5DEE\u5206\u63A8\u7B97(\u8FDE\u7EED\u53EF\u4FE1\u6BB5\u5185\u4E2D\u95F4\u8BFB\u6570\u7684\u91CF\u5316\u8BEF\u5DEE\u4E24\u4E24\u62B5\u6D88);\u5404\u5BB6\u767E\u5206\u6BD4\u8BFB\u6570\u5B58\u5728\u4E2A\u4F4D\u7EA7\u91CF\u5316(\u663E\u793A 1% \u7684\u771F\u5B9E\u503C\u53EF\u80FD\u5728 0.5%~1.5%),\u5DEE\u5206\u8DE8\u5EA6\u4E0D\u8DB3 5 \u4E2A\u767E\u5206\u70B9\u65F6\u7ED3\u679C\u6CE2\u52A8\u8F83\u5927,\u65B9\u6CD5\u5217\u4F1A\u6807\u6CE8\u300C\u8BFB\u6570\u7CBE\u5EA6\u53D7\u9650\u300D\u3002\u6837\u672C\u8D85 7 \u5929\u6216\u4E0D\u8DB3\u65F6\u56DE\u9000\u300C\u672C\u5468\u671F\u5B9E\u9645 \xF7 \u5F53\u524D\u5DF2\u7528%\u300D\u6298\u7B97\u30025 \u5C0F\u65F6\u7A97\u4E3A\u6EDA\u52A8\u7A97,\u5468/\u6708\u6309\u672C\u5730\u65E5\u5386;\u7A97\u53E3\u8FB9\u754C\u6309\u5C0F\u65F6\u7C92\u5EA6\u5BF9\u9F50\u3002\u6CE8\u610F:\u670D\u52A1\u7AEF\u300C\u5DF2\u7528%\u300D\u7EDF\u8BA1\u8BE5\u8D26\u53F7\u5168\u90E8\u7528\u91CF,\u4E0E\u672C\u5730\u7EDF\u8BA1\u4E4B\u5DEE\u5373\u5176\u5B83\u6E20\u9053\u6D88\u8017\u2014\u2014\u540C\u4E00 Key \u5728\u522B\u5904\u4F7F\u7528\u65F6\u672C\u5730\u504F\u4F4E\u5C5E\u9884\u671F;\u90E8\u5206\u76EE\u5F55\u4EF7\u542B\u9650\u65F6\u4FC3\u9500(\u5982 gpt-5.6-sol \u81F3 2026-09-18 \u4E94\u6298)\u3002SCNet \u4E3A\u672C\u5730 Credits \u81EA\u4F30,\u4E0D\u53C2\u4E0E\u4F30\u7B97\u3002",billingClassLabel:"\u8BA1\u8D39\u65B9\u5F0F",billingClassPlan:"Plan \u8BA2\u9605",catalogDisplayLabel:"\u5728\u8D39\u7528\u8BBE\u7F6E\u76F4\u63A5\u663E\u793A",catalogDisplayHint:"\u53EA\u51B3\u5B9A\u8BE5\u6A21\u578B\u4EF7\u683C\u5361\u662F\u5426\u5728\u8D39\u7528\u8BBE\u7F6E\u300C\u4EF7\u683C\u8868\u300D\u533A\u76F4\u63A5\u663E\u793A,\u4E0D\u5F71\u54CD\u6302\u8F7D\u72B6\u6001\u4E0E\u8BA1\u8D39;\u4E0D\u76F4\u63A5\u663E\u793A\u65F6\u5DF2\u6302\u8F7D\u6A21\u578B\u5728\u62D3\u5C55\u4EF7\u683C\u8868\u5185\u5C55\u5F00\u5382\u5546\u540E\u53EF\u7F16\u8F91\u3002",priceTableDisplayHint:"\u5404\u6A21\u578B\u662F\u5426\u5728\u300C\u4EF7\u683C\u8868\u300D\u533A\u76F4\u63A5\u663E\u793A,\u53EF\u5728\u4E0B\u65B9\u62D3\u5C55\u4EF7\u683C\u8868\u4E2D\u9010\u6A21\u578B\u7528\u300C\u5728\u8D39\u7528\u8BBE\u7F6E\u76F4\u63A5\u663E\u793A\u300D\u5F00\u5173\u5207\u6362;DeepSeek \u6A21\u578B\u9ED8\u8BA4\u76F4\u63A5\u663E\u793A,\u7B2C\u4E09\u65B9\u6A21\u578B\u6302\u8F7D\u540E\u9ED8\u8BA4\u6536\u5165\u62D3\u5C55\u8868\u3002",catalogCustomModels:"\u624B\u52A8\u65B0\u589E\u6A21\u578B",priceMatchLabel:"\u672A\u77E5\u6A21\u578B\u540D\u81EA\u52A8\u5339\u914D",priceMatchAuto:"\u81EA\u52A8(\u53BB\u540E\u7F00 / \u524D\u7F00 / \u5BB6\u65CF\u76F8\u4F3C)",priceMatchExact:"\u4EC5\u7CBE\u786E\u5339\u914D",priceMatchNote:"\u81EA\u52A8\u5339\u914D\u987A\u5E8F:\u7CBE\u786E \u2192 \u624B\u52A8\u6307\u5B9A \u2192 \u53BB\u65E5\u671F/\u7248\u672C\u540E\u7F00 \u2192 \u524D\u7F00 \u2192 \u5BB6\u65CF\u76F8\u4F3C;\u672A\u547D\u4E2D\u65F6 DeepSeek \u56DE\u9000\u9ED8\u8BA4\u4EF7,\u5176\u4ED6 provider \u4E0D\u8BA1\u4EF7\u3002",unmatchedTitle:"\u6700\u8FD1\u51FA\u73B0\u4F46\u672A\u547D\u4E2D\u4EF7\u683C\u7684\u6A21\u578B",unmatchedHint:"\u6309\u5F53\u524D\u5339\u914D\u6A21\u5F0F\u672A\u547D\u4E2D\u4EF7\u683C\u6761\u76EE(\u542B\u8DE8\u5382\u5546\u5151\u5E95\u540E\u4ECD\u6309\u9ED8\u8BA4\u4EF7\u515C\u5E95\u7684);\u4E3A\u5176\u6307\u5B9A\u6761\u76EE\u5199\u5165\u624B\u52A8\u5339\u914D\u8986\u76D6,\u9009\u62E9\u300C\u9ED8\u8BA4\u4EF7\u300D\u5373\u56DE\u9000 DeepSeek \u9ED8\u8BA4\u4EF7\u3002\u672C\u5730\u63A8\u7406\u6765\u6E90(lmstudio / ollama / vLLM \u7B49)\u7684\u6A21\u578B\u5DF2\u81EA\u52A8\u6309\u96F6\u6D88\u8017\u5904\u7406;\u5982\u9700\u8BA1\u8D39,\u53EF\u5728\u6B64\u4E3A\u5176\u6307\u5B9A\u4EF7\u683C\u6761\u76EE\u3002",overrideTargetDefault:"DeepSeek \u9ED8\u8BA4\u4EF7",overrideRemove:"\u79FB\u9664",overrideTargetLocal:"\u672C\u5730\u6A21\u578B\uFF08\u96F6\u6D88\u8017\uFF09",matchedTitle:"\u672C\u6708\u5DF2\u547D\u4E2D\u4EF7\u683C\u7684\u6A21\u578B",matchedHint:"\u4EE5\u4E0B\u6A21\u578B\u5DF2\u81EA\u52A8\u547D\u4E2D\u4EF7\u683C\u6761\u76EE\u3002\u5728\u884C\u5185\u9009\u62E9\u76EE\u6807\u5373\u53EF\u6539\u6302\u5176\u5B83\u6761\u76EE,\u6216\u9009\u62E9\u300C\u672C\u5730\u6A21\u578B\uFF08\u96F6\u6D88\u8017\uFF09\u300D\u628A\u8BE5\u6A21\u578B\u6807\u8BB0\u4E3A\u672C\u5730\u6765\u6E90\u2014\u2014token \u7167\u5E38\u7EDF\u8BA1\u3001\u8D39\u7528\u6309 0 \u8BA1,\u5386\u53F2\u91D1\u989D\u5373\u65F6\u5F52\u96F6\u3002\u5199\u5165\u540E\u8BE5\u884C\u8F6C\u5165\u4E0A\u65B9\u624B\u52A8\u6307\u5B9A\u533A\u3002",matchedKeepAuto:"\u4FDD\u6301\u81EA\u52A8\u547D\u4E2D",overrideNone:"\u6682\u65E0\u624B\u52A8\u5339\u914D\u8986\u76D6\u3002",mountedSuffix:"\u5DF2\u6302\u8F7D(\u53C2\u4E0E\u8BA1\u8D39)",flatInput:"\u8F93\u5165",flatCached:"\u7F13\u5B58",flatOutput:"\u8F93\u51FA",deepseekMountedHeader:"DeepSeek \u4EF7\u683C\u8868(\u5DF2\u6302\u8F7D)",codingPlanKimi:"Kimi / Moonshot",codingPlanOpenrouter:"OpenRouter",codingPlanSiliconflow:"SiliconFlow \u7845\u57FA\u6D41\u52A8",codingPlanCommandcode:"CommandCode",codingPlanScnet:"SCNet \u8D85\u7B97\u4E92\u8054\u7F51 Token Plan",codingPlanVolcengine:"\u706B\u5C71\u65B9\u821F Volcano Ark Coding Plan",codingPlanQwen:"\u5343\u95EE Qwen Token Plan",qwenPlanCreditsLabel:"\u6708\u5EA6 Credits \u989D\u5EA6(\u4E2A\u4EBA\u7248 Lite 5 \u4E07 / \u6807\u51C6\u7248 50 \u4E07,\u4EE5\u8BA2\u9605\u9875\u4E3A\u51C6)",qwenPlanStartLabel:"\u8BA2\u9605\u8D77\u59CB\u65E5(\u53EF\u9009,\u683C\u5F0F YYYY-MM-DD;\u7559\u7A7A\u6309\u81EA\u7136\u6708)",qwenRatesLabel:"Credits \u62B5\u6263\u7387\u8986\u76D6(\u53EF\u9009;\u6BCF\u767E\u4E07 token \u62B5\u6263\u7684 Credits,\u7559\u7A7A\u7528\u5185\u7F6E\u8868)",qwenRatesModelPlaceholder:"\u6A21\u578B\u540D,\u5982 qwen3.8-max-preview",qwenRatePlaceholder:"\u8D39\u7387",qwenRatesAdd:"\u6DFB\u52A0",qwenLocalNote:"\u5343\u95EE Token Plan \u65E0 API \u989D\u5EA6\u67E5\u8BE2\u7AEF\u70B9(\u989D\u5EA6\u4EC5\u63A7\u5236\u53F0\u53EF\u89C1):\u6309\u5B98\u65B9 Credits \u62B5\u6263\u7387\u7531\u672C\u5730\u8D26\u672C\u4F30\u7B97\u5F53\u524D\u8BA1\u8D39\u5468\u671F\u7528\u91CF,\u5B9E\u9645\u6D88\u8017\u4EE5\u63A7\u5236\u53F0\u4E3A\u51C6;\u5185\u7F6E\u8868\u8986\u76D6\u7684\u6A21\u578B\u81EA\u52A8\u6298\u7B97,\u5176\u4F59\u6A21\u578B\u4E0D\u8BA1\u5165,\u53EF\u5728\u4E0A\u65B9\u624B\u52A8\u6307\u5B9A\u62B5\u6263\u7387\u3002",scnetPlanCreditsLabel:"\u6708\u5EA6 Credits \u989D\u5EA6(\u57FA\u7840 60,000 / \u6807\u51C6 240,000 / \u9AD8\u7EA7 600,000)",scnetPlanStartLabel:"\u8BA2\u9605\u8D77\u59CB\u65E5(\u53EF\u9009,\u683C\u5F0F YYYY-MM-DD;\u7559\u7A7A\u6309\u81EA\u7136\u6708)",scnetLocalNote:"SCNet \u65E0 API \u989D\u5EA6\u67E5\u8BE2\u7AEF\u70B9:\u6309\u5B98\u65B9 Credits \u62B5\u6263\u8868(2026-08-11 \u751F\u6548)\u7531\u672C\u5730\u8D26\u672C\u4F30\u7B97\u5F53\u524D\u8BA1\u8D39\u5468\u671F\u7528\u91CF,\u5B9E\u9645\u6D88\u8017\u4EE5\u63A7\u5236\u53F0\u8D26\u5355\u4E3A\u51C6;\u62B5\u6263\u8868\u8986\u76D6\u7684\u6A21\u578B\u81EA\u52A8\u6298\u7B97,\u5176\u4F59\u6A21\u578B\u4E0D\u8BA1\u5165\u3002",volcengineAccessKeyIdLabel:"\u706B\u5C71\u5F15\u64CE AccessKey ID",volcengineSecretAccessKeyLabel:"\u706B\u5C71\u5F15\u64CE SecretAccessKey",volcengineNote:"\u706B\u5C71\u65B9\u821F\u7BA1\u63A7\u9762\u9700 AK/SK \u7B7E\u540D(\u975E ARK_API_KEY Bearer):\u5728\u706B\u5C71\u5F15\u64CE\u63A7\u5236\u53F0 IAM \u521B\u5EFA\u5B50\u7528\u6237\u5E76\u6388\u4E88 ArkReadOnlyAccess + BillingCenterReadOnlyAccess,\u586B\u5199 AccessKeyID \u4E0E SecretAccessKey;\u4E5F\u53EF\u5728\u73AF\u5883\u53D8\u91CF\u5BFC\u51FA VOLC_ACCESSKEY / VOLC_SECRETKEY \u81EA\u52A8\u53D1\u73B0(\u5B98\u65B9 SDK \u7EA6\u5B9A);\u51ED\u636E\u4EC5\u53D1\u5F80 open.volcengineapi.com\u3002",volcengineAccessKeyPlaceholder:"AK...",volcengineSecretPlaceholder:"SK...",countdownHoursOnly:"{h}\u5C0F\u65F6",countdownHourMinute:"{h}\u5C0F\u65F6{m}\u5206",countdownMinute:"{m}\u5206\u949F",nextOffPeakIn:"{time}\u540E\u8FDB\u5165\u5E73\u4EF7",nextPeakIn:"{time}\u540E\u8FDB\u5165\u9AD8\u5CF0",peakSummary:"\u5CF0\u65F6\u6BB5(UTC):{windows};\u751F\u6548\u65F6\u95F4:{time}\u3002{status}",noPeakWindows:"\u672A\u914D\u7F6E\u5CF0\u8C37\u65F6\u6BB5\u3002{status}",unknown:"\u672A\u77E5",cardToday:"\u4ECA\u65E5\u8D39\u7528",cardMonth:"\u672C\u6708\u8D39\u7528",cardTotal:"\u7D2F\u8BA1\u8D39\u7528",cardTotalSub:"\u81EA\u8D26\u672C\u5EFA\u7ACB\u4EE5\u6765 \xB7 \u8C03\u7528 {calls} \u6B21",cardsFootnote:"\u53E3\u5F84\u8BF4\u660E:\u91D1\u989D\u4E3A\u6700\u8FD1\u4E00\u6B21\u843D\u76D8\u5FEB\u7167(2 \u79D2\u9632\u6296;\u6B63\u5E38\u5173\u95ED\u4F1A\u5148\u5F3A\u5236\u843D\u76D8\u518D\u9000\u51FA),\u4E0E\u5B98\u65B9\u5B9E\u65F6\u8D26\u5355\u5B58\u5728\u5206\u949F\u7EA7\u65F6\u5DEE\u5C5E\u9884\u671F;tokens \u5217\u4E3A\u8F93\u5165+\u8F93\u51FA+\u7F13\u5B58+\u63A8\u7406\u7684\u5408\u8BA1\u2014\u2014\u63A8\u7406 tokens \u7531 API \u5355\u72EC\u4E0A\u62A5\u4E14\u4E0D\u8BA1\u8D39(\u5B98\u65B9\u8D26\u5355\u5C06\u5176\u5E76\u5165\u300C\u8F93\u51FA\u300D\u5217\u5C55\u793A),\u5BF9\u8D26\u8BF7\u4EE5\u91D1\u989D\u4E3A\u51C6\u3002",timezoneHint:"\u65F6\u533A\u63D0\u793A:\u300C\u4ECA\u65E5/\u672C\u6708\u300D\u6309\u5BBF\u4E3B\u673A\u65F6\u533A {host} \u53D6\u65E5\u754C,\u4E0E\u5F53\u524D\u6D4F\u89C8\u5668({browser})\u4E0D\u540C\u2014\u2014\u5BBF\u4E3B\u673A\u8DE8\u65E5\u754C\u7684\u65F6\u523B\u4E0E\u672C\u5730\u4E0D\u4E00\u81F4,\u4F60\u672C\u5730\u5348\u591C\u540E\u7684\u8C03\u7528\u4F1A\u88AB\u8BB0\u5230\u524D\u4E00\u65E5(\u5E76\u975E\u6F0F\u8BA1;\u5B98\u65B9\u4F59\u989D\u5BF9\u8D26\u4E5F\u4F1A\u56E0\u6B64\u63D0\u793A\u504F\u5DEE)\u3002\u53EF\u5728\u5BBF\u4E3B\u673A\u4E0A\u4EE5\u672C\u5730\u65F6\u533A\u8FD0\u884C dsh \u4F7F\u4E24\u8005\u4E00\u81F4\u3002",todaySessions:"\u4ECA\u65E5\u4F1A\u8BDD",historyExpandHint:"\u70B9\u51FB\u65E5\u671F\u884C\u53EF\u5C55\u5F00\u5F53\u65E5\u4F1A\u8BDD\u660E\u7EC6",historySessionsLoading:"\u4F1A\u8BDD\u660E\u7EC6\u52A0\u8F7D\u4E2D\u2026",historyNoSessions:"\u8BE5\u65E5\u65E0\u4F1A\u8BDD\u660E\u7EC6(\u65E9\u671F\u6570\u636E\u6216\u4F1A\u8BDD\u65E5\u5FD7\u5DF2\u6E05\u7406)",historySessionsError:"\u4F1A\u8BDD\u660E\u7EC6\u52A0\u8F7D\u5931\u8D25",sessionRankTitle:"\u6309\u4F1A\u8BDD\u7EDF\u8BA1(\u5168\u90E8\u5386\u53F2)",sessionRankHint:"\u4E0D\u6309\u65E5\u671F\u5206\u7EC4,\u5168\u90E8\u5386\u53F2\u4F1A\u8BDD;\u6392\u5E8F\u4E0E\u6761\u6570\u53EF\u5207\u6362",sessionRankEmpty:"\u6682\u65E0\u4F1A\u8BDD\u6570\u636E",sessionRankLoading:"\u4F1A\u8BDD\u6392\u884C\u52A0\u8F7D\u4E2D\u2026",sessionRankError:"\u4F1A\u8BDD\u6392\u884C\u52A0\u8F7D\u5931\u8D25",sessionRankLimit:"\u663E\u793A\u6761\u6570",showSessionIdLabel:"\u4F1A\u8BDD\u5217\u8868\u9644\u663E\u4F1A\u8BDD ID",cardsTogglePlanTotal:"\u91D1\u989D\u542B Plan \u603B\u989D",cardsTogglePlanTotalHint:"\u5F00\u542F\u540E\u6240\u6709\u91D1\u989D\u6309\u542B Plan \u8BA2\u9605\u7B49\u503C\u7684\u603B\u8D39\u7528\u5C55\u793A;\u5173\u95ED(\u9ED8\u8BA4)\u4EC5\u8BA1\u771F\u91D1\u767D\u94F6 API \u6E20\u9053",hideOfficialBalanceLabel:"\u9690\u85CF\u5B98\u65B9\u8D26\u6237\u4F59\u989D(\u5F00\u542F\u540E\u4FA7\u8FB9\u680F\u4E0E\u8BBE\u7F6E\u9875\u4E0D\u518D\u663E\u793A\u5B98\u65B9\u4F59\u989D)",hideTodayCostLabel:"\u9690\u85CF\u4ECA\u65E5\u6D88\u8017\u91D1\u989D(\u5F00\u542F\u540E\u4FA7\u8FB9\u680F/\u9884\u7B97\u660E\u7EC6/\u6982\u89C8\u5361\u7247\u4E0D\u518D\u663E\u793A\u4ECA\u65E5\u8D39\u7528)",sessionRankSort:"\u6392\u5E8F",sessionSortCostDesc:"\u8D39\u7528 \u9AD8\u2192\u4F4E",sessionSortCostAsc:"\u8D39\u7528 \u4F4E\u2192\u9AD8",sessionSortTimeDesc:"\u65F6\u95F4 \u65B0\u2192\u65E7",sessionSortTimeAsc:"\u65F6\u95F4 \u65E7\u2192\u65B0",sessionSortRecent:"\u5B9E\u65F6\u987A\u5E8F",history:"\u5386\u53F2\u8BB0\u5F55",usageTitle:"Token \u7528\u91CF\u7EDF\u8BA1",usageTotal:"\u7D2F\u8BA1 {tokens} tokens \xB7 \u8F93\u5165 {input} \xB7 \u7F13\u5B58 {cache} \xB7 \u8F93\u51FA {output} \xB7 {calls} \u6B21\u8C03\u7528",usageDay:"{date}:\u5171 {tokens} tokens(\u8F93\u5165 {input} \xB7 \u7F13\u5B58 {cache} \xB7 \u8F93\u51FA {output})\xB7 {calls} \u6B21\u8C03\u7528 \xB7 {cost}",usageEmpty:"\u6682\u65E0\u5386\u53F2\u6570\u636E,\u5F00\u59CB\u5BF9\u8BDD\u540E\u6BCF\u65E5\u7528\u91CF\u4F1A\u6C47\u603B\u5728\u8FD9\u91CC",usageSectionLabel:"\u7528\u91CF",usagePositionLabel:"Token \u7528\u91CF\u7EDF\u8BA1\u4F4D\u7F6E",usagePositionCost:"\u8D39\u7528\u8BBE\u7F6E",usagePositionGeneral:"\u901A\u7528\u8BBE\u7F6E",usagePositionSection:"\u72EC\u7ACB\u5206\u8282(\u7528\u91CF)",displaySettings:"\u663E\u793A\u8BBE\u7F6E",tabOverview:"\u6982\u89C8",tabQuotas:"\u989D\u5EA6",tabUsage:"\u7528\u91CF",tabPricing:"\u4EF7\u683C",tabDisplay:"\u663E\u793A",historyDataTitle:"\u5386\u53F2\u6570\u636E",positionLabel:"\u4F1A\u8BDD\u8D39\u7528\u663E\u793A\u4F4D\u7F6E",positionDock:"\u8F93\u5165\u533A\u4E0B\u65B9",positionHeader:"\u4F1A\u8BDD\u6807\u9898\u680F",off:"\u5173\u95ED",quotaStripGroup:"\u8F93\u5165\u6846\u4E0A\u65B9\u989D\u5EA6\u6A2A\u6761",quotaStripEnable:"\u542F\u7528\u989D\u5EA6\u6A2A\u6761(\u8F93\u5165\u6846\u4E0A\u65B9\u4E00\u6761\u6A2A\u6392\u663E\u793A)",quotaStripShowBudget:"\u6A2A\u6761\u542B\u9884\u7B97\u5DF2\u7528%",quotaStripShowGo:"\u6A2A\u6761\u542B Go \u989D\u5EA6",quotaStripShowPlans:"\u6A2A\u6761\u542B Coding Plan \u989D\u5EA6",quotaStripNote:"\u6A2A\u6761\u60AC\u505C\u53EF\u89C1\u5404\u7A97\u53E3\u91CD\u7F6E\u65F6\u523B\u4E0E\u66F4\u65B0\u65F6\u95F4;\u65E0\u53EF\u7528\u989D\u5EA6\u6570\u636E\u65F6\u81EA\u52A8\u9690\u85CF\u3002",quotaStripGuideTitle:"\u65B0\u589E:\u8F93\u5165\u6846\u4E0A\u65B9\u989D\u5EA6\u6A2A\u6761",quotaStripGuideBody:"\u53EF\u4EE5\u5728\u8F93\u5165\u6846\u4E0A\u65B9\u7528\u4E00\u6761\u6A2A\u6761\u5B9E\u65F6\u67E5\u770B\u9884\u7B97\u4E0E\u591A\u5BB6\u8BA2\u9605\u989D\u5EA6(OpenCode Go / Coding Plan)\u7684\u7528\u91CF\u767E\u5206\u6BD4\u3002\u8981\u73B0\u5728\u5F00\u542F\u5417?\u53EF\u968F\u65F6\u5728\u300C\u8BBE\u7F6E \u2192 \u663E\u793A\u8BBE\u7F6E\u300D\u4E2D\u66F4\u6539\u3002",quotaStripGuideOn:"\u5F00\u542F\u6A2A\u6761",quotaStripGuideOff:"\u6682\u4E0D\u5F00\u542F",clickToRefresh:"\u70B9\u51FB\u7ACB\u5373\u5237\u65B0",balanceClickGuideTitle:"\u65B0\u589E:\u4F59\u989D\u56FE\u6846\u70B9\u51FB\u5237\u65B0",balanceClickGuideBody:"\u73B0\u5728\u70B9\u51FB\u4FA7\u8FB9\u680F\u7684\u5B98\u65B9\u4F59\u989D / \u81EA\u5B9A\u4E49\u4F59\u989D / Coding Plan \u56FE\u6846,\u5373\u53EF\u7ACB\u5373\u5237\u65B0\u6700\u65B0\u6570\u636E,\u65E0\u9700\u7B49\u5F85\u81EA\u52A8\u5237\u65B0\u95F4\u9694\u6216\u8FDB\u5165\u8BBE\u7F6E\u9875;\u5237\u65B0\u4E2D\u4F1A\u6709\u547C\u5438\u95EA\u70C1,\u5931\u8D25\u65F6\u4FDD\u6301\u539F\u503C\u5E76\u5728\u60AC\u505C\u63D0\u793A\u4E2D\u8BF4\u660E\u539F\u56E0\u3002",balanceClickGuideOk:"\u77E5\u9053\u4E86",sidebarLabel:"\u5F53\u65E5\u8D39\u7528\u663E\u793A",sidebarOn:"\u4FA7\u8FB9\u680F\u5E95\u90E8",currencyLabel:"\u8D27\u5E01\u5355\u4F4D",currencyCny:"\u4EBA\u6C11\u5E01 CNY",currencyUsd:"\u7F8E\u5143 USD",currencyEur:"\u6B27\u5143 EUR",symbolLabel:"\u8D27\u5E01\u7B26\u53F7",rateLabel:"\u6C47\u7387(1 \u7F8E\u5143 = ? \u76EE\u6807\u5E01\u79CD)",decimalsLabel:"\u5C0F\u6570\u4F4D\u6570",balanceDisplayLabel:"\u4F59\u989D\u663E\u793A\u4F4D\u7F6E",balanceSidebar:"\u4E3B\u9875\u9762\u4FA7\u8FB9\u680F",balanceSettings:"\u8BBE\u7F6E\u9875",balanceBoth:"\u4E24\u8005\u90FD\u663E\u793A",refreshIntervalLabel:"\u4F59\u989D\u5237\u65B0\u95F4\u9694(\u5206\u949F)",peakEnabledLabel:"\u542F\u7528 DeepSeek \u5CF0\u8C37\u65F6\u6BB5\u4EF7\u683C",peakNoticeLabel:"\u5CF0\u65F6\u9AD8\u4EF7\u65F6\u6BB5\u663E\u8457\u63D0\u793A(\u4FA7\u8FB9\u680F\u9884\u7B97\u6846/\u4ECA\u65E5\u8D39\u7528;\u8BBE\u7F6E\u9875\u5CF0\u8C37\u9762\u677F\u5185\u9884\u89C8)",badgeNote:"\u4F1A\u8BDD\u5FBD\u7AE0\u4E3A\u6309\u6BCF\u6B21\u8C03\u7528\u5B9E\u9645\u65F6\u523B\u7CBE\u786E\u8BA1\u8D39(\u542B\u5CF0\u8C37\u6863\u4F4D;\u5CF0\u8C37\u65F6\u4EE3\u5206\u754C 2026-08-16 16:00 UTC \u4E4B\u524D\u6309\u5F53\u65F6\u57FA\u7840\u4EF7),\u4E0E\u8D26\u672C\u5F53\u65E5/\u6708\u5EA6/\u7D2F\u8BA1\u540C\u53E3\u5F84\u3002\u8F93\u5165/\u7F13\u5B58/\u8F93\u51FA token \u5206\u5F00\u7EDF\u8BA1,\u7F13\u5B58\u8BFB\u5199\u6309\u547D\u4E2D\u4EF7\u8BA1\u8D39\u3002",priceTableTitle:"\u4EF7\u683C\u8868(\u7F8E\u5143 / 1M tokens)",pricingCurrencyLabel:"\u5B98\u65B9\u4EF7\u683C\u5E01\u79CD",pricingCurrencyUsd:"\u7F8E\u5143(\u82F1\u6587\u5B98\u65B9\u9875)",pricingCurrencyCny:"\u4EBA\u6C11\u5E01(\u4E2D\u6587\u5B98\u65B9\u9875)",pricingCurrencyNote:"\u51B3\u5B9A\u300C\u4ECE\u5B98\u65B9\u6587\u6863\u540C\u6B65\u4EF7\u683C\u300D\u6293\u53D6\u54EA\u4E2A\u8BED\u8A00\u7684\u5B98\u65B9\u9875\u3002\u5207\u6362\u5E76\u540C\u6B65\u540E,\u5386\u53F2\u8D26\u76EE\u4F1A\u6309\u65B0\u4EF7\u76EE\u6574\u4F53\u91CD\u7B97(\u65E5\u5FD7\u8986\u76D6\u4E0D\u5168\u7684\u4F1A\u8BDD\u4FDD\u6301\u539F\u53E3\u5F84),\u5386\u53F2\u4E0E\u5B98\u65B9\u8D26\u5355\u540C\u57FA\u51C6;\u91CD\u7B97\u5728\u540E\u53F0\u8FDB\u884C,\u5B8C\u6210\u540E\u6709\u63D0\u793A\u3002",priceTableNote:"\u300C\u8C37\u65F6/\u5CF0\u65F6\u300D\u4E3A\u5CF0\u8C37\u8BA1\u4EF7\u751F\u6548\u540E\u7684\u4EF7\u683C;\u5206\u754C 2026-08-16 16:00 UTC \u4E4B\u524D\u7684\u8C03\u7528\u6309\u5F53\u65F6\u57FA\u7840\u4EF7(legacyBase)\u8BA1\u8D39;\u7F13\u5B58\u5199\u5165\u6309\u7F13\u5B58\u547D\u4E2D\u4EF7\u683C\u8BA1\u8D39(\u4E0E\u5B98\u65B9\u89C4\u5219\u4E00\u81F4)\u3002\u65E0\u7F13\u5B58\u6298\u6263\u7684\u6A21\u578B(\u5982 Anthropic/Gemini \u7B49)\u53EF\u53EA\u586B\u8F93\u5165\u4E0E\u8F93\u51FA\u4EF7,\u547D\u4E2D\u4EF7\u81EA\u52A8\u53D6\u672A\u547D\u4E2D\u4EF7\u3002\u6240\u6709\u8BBE\u7F6E\u4FEE\u6539\u540E\u81EA\u52A8\u4FDD\u5B58\u3002",defaultModelId:"default(\u672A\u5339\u914D\u6A21\u578B\u65F6\u56DE\u9000)",newModelPlaceholder:"\u65B0\u6A21\u578B ID(\u5982 deepseek-v4-pro)",addModel:"\u6DFB\u52A0\u6A21\u578B",dataSync:"\u6570\u636E\u4E0E\u540C\u6B65",saving:"\u4FDD\u5B58\u4E2D\u2026",autoSaveFailed:"\u81EA\u52A8\u4FDD\u5B58\u5931\u8D25:{message}",autoSavedAt:"\u5DF2\u81EA\u52A8\u4FDD\u5B58 {time}",autoSaveHint:"\u914D\u7F6E\u4FEE\u6539\u540E\u81EA\u52A8\u4FDD\u5B58",confirmFetch:"\u786E\u8BA4\u7528\u5B98\u65B9\u6587\u6863\u4EF7\u683C\u8986\u76D6\u4EF7\u683C\u8868?",apply:"\u5E94\u7528",cancel:"\u53D6\u6D88",syncFromDocs:"\u4ECE\u5B98\u65B9\u6587\u6863\u540C\u6B65\u4EF7\u683C",confirmReset:"\u786E\u8BA4\u6E05\u9664\u5168\u90E8\u5386\u53F2?",importLegacy:"\u5BFC\u5165\u5B89\u88C5\u524D\u5386\u53F2",confirmImportLegacy:"\u786E\u8BA4\u5BFC\u5165?\u5C06\u56DE\u653E\u5168\u90E8\u4F1A\u8BDD\u65E5\u5FD7,\u53EA\u8865\u8D26\u672C\u7F3A\u5931\u7684\u65E5\u671F\u4E0E\u4F1A\u8BDD,\u4E0D\u5F71\u54CD\u5DF2\u6709\u8BB0\u5F55\u3002",legacyImportFailed:"\u5BFC\u5165\u5B89\u88C5\u524D\u5386\u53F2\u5931\u8D25:{message}",legacyImportNote:"\u63D2\u4EF6\u9996\u6B21\u542F\u52A8\u540E\u4F1A\u81EA\u52A8\u5BFC\u5165\u4E00\u6B21\u5B89\u88C5\u524D\u5386\u53F2;\u6B64\u5904\u53EF\u624B\u52A8\u91CD\u8DD1(\u5982\u540E\u7EED\u62F7\u5165\u4E86\u65E7\u65E5\u5FD7)\u3002\u91D1\u989D\u6309\u5F53\u524D\u4EF7\u76EE\u8868\u56DE\u63A8,\u5DF2\u6E05\u7406\u7684\u65E5\u5FD7\u65E0\u6CD5\u56DE\u653E,\u540C\u4E00\u4F1A\u8BDD\u8DE8\u5B89\u88C5\u65F6\u523B\u65F6\u5176\u5B89\u88C5\u524D\u7528\u91CF\u4E0D\u8BA1\u5165\u3002",confirmClear:"\u786E\u8BA4\u6E05\u9664",clearAllHistory:"\u6E05\u9664\u5168\u90E8\u5386\u53F2",lastSync:"\u6700\u8FD1\u540C\u6B65:{time}",neverSynced:"\u4ECE\u672A(\u4F7F\u7528\u5185\u7F6E\u4EF7\u683C)",source:";\u6765\u6E90:{source}",sourceOfficial:"\u5B98\u65B9\u6587\u6863",sourceBundled:"\u5185\u7F6E\u9ED8\u8BA4",languageLabel:"\u754C\u9762\u8BED\u8A00",localeAuto:"\u8DDF\u968F\u6D4F\u89C8\u5668(\u81EA\u52A8)",localeZh:"\u7B80\u4F53\u4E2D\u6587",localeEn:"English",sectionLabel:"\u8D39\u7528",rpcFailed:"{method} \u8C03\u7528\u5931\u8D25",rpcSyncFailed:"\u540C\u6B65\u8C03\u7528\u5931\u8D25",rpcBalanceFailed:"\u4F59\u989D\u5237\u65B0\u8C03\u7528\u5931\u8D25"},en:{sessionCostTitle:"Cost of this session (billed exactly at each call time)",sessionDetailTokens:"Input {input} \xB7 Cache {cache} \xB7 Output {output}",sessionDetailCache:"Cache: read {read} \xB7 write {write} (writes billed at the hit price)",cost:"Cost {amount}",sessionLine:"This session {amount} \xB7 Input {input} \xB7 Cache {cache} \xB7 Output {output}",balanceQueryFailed:"Balance query failed: {message}",unknownError:"Unknown error",balance:"Balance",queryFailed:"Query failed",balanceTitle:"DeepSeek open-platform account balance",reconcileLabel:"Cross-check official balance changes against the local ledger (warn when they diverge)",totalBalance:"Total {amount}",grantedToppedUp:"Granted {granted} \xB7 Topped-up {toppedUp}",updatedAt:"Updated {time}",budgetOf:"Budget ({period})",usedOf:"Used {used} / {amount}",todayShare:"Today {amount} \xB7 {pct} of budget",monthTotal:"This month {month} \xB7 All time {total}",budget:"Budget",todayCostTitle:"Today's cost (billed exactly at official prices)",callsTokens:"Calls {calls} \xB7 Input {input} \xB7 Cache {cache} \xB7 Output {output}",monthCost:"This month {amount}",totalCost:"All time {amount}",today:"Today",periodDay:"Today",periodMonth:"This month",periodAll:"All time",periodCustom:"Custom",periodCustomRange:"Custom range",noHistory:"No history yet. Once you start chatting, costs are aggregated here per day.",colDate:"Date",colCalls:"Calls",colInTok:"In tok",colCacheTok:"Cache tok",colOutTok:"Out tok",colCost:"Cost",noSessionsToday:"No sessions recorded today.",colSession:"Session",enableBudget:"Enable budget",budgetAmountLabel:"Budget amount (in display currency)",budgetPeriodLabel:"Budget period",startDate:"Start date",endDate:"End date (empty = today)",rangeText:"Range: {range}",budgetDisabledNote:"Budget is disabled. Once enabled, this panel shows the budget limit, the amount used and the used percentage (converted to the display currency); the period can be today / this month / all time / a custom date range.",budgetStatus:"{period} budget {amount} \xB7 Used {used} \xB7 {pct}%",overLimit:" (over limit)",nearLimit:" (near limit)",legacyModel:"Legacy",defaultFallback:"Default fallback",remove:"Remove",tierBase:"Base",tierOffPeak:"Off-peak",tierPeak:"Peak",balanceRefreshFailed:"Balance refresh failed: {message}",balanceLine:"Total {total} \xB7 Granted {granted} \xB7 Topped-up {toppedUp} \xB7 Updated {time}",balanceQueryFailedHint:"Balance query failed: {message} (uses the API key configured in Settings \u2192 Models)",balanceNotQueried:"Balance not queried",accountBalance:"Account balance",refreshing:"Refreshing\u2026",refreshBalance:"Refresh balance",customBalanceTitle:"Custom provider balance",customBalanceConfigNote:"Configure the balance query request and extract rules. Headers support {{ENV_VAR}} placeholders resolved from DSH credentials or environment variables; extract rules accept dot paths, numeric constants, and add / subtract / divide operations (use divide with 500000 for NewApi-style quota endpoints).",customBalanceLabelZh:"Chinese name",customBalanceLabelEn:"English name",customBalanceUrl:"Request URL",customBalanceMethod:"HTTP method",customBalanceHeaders:"Headers (JSON)",customBalanceExtract:"Extract rules (JSON)",customBalanceDisplayLabel:"Custom balance display",customBalanceRefreshInterval:"Refresh interval (minutes)",customBalanceUnitLabel:"Balance currency",balanceBarRemaining:"Balance {amount}",balanceBarToday:"Today {amount}",balanceBarSpent:"Spent {amount}",balanceShowProgressBar:"Balance progress bar (blue=balance, orange=today, gray=spent)",barDirectionsTitle:"Progress bar direction",barDirectionsHint:'Each group of bars can independently choose its fill direction: "Remaining" starts full and drains with usage; "Used" starts empty and fills up.',barDirection_balance:"Balance bars (official/custom)",barDirection_budget:"Budget bar",barDirection_go:"Go quota bar",barDirection_plan:"Plan / Codex quota bars",barDirectionRemaining:"Remaining (full \u2192 empty)",barDirectionUsed:"Used (empty \u2192 full)",balanceBudgetCapLabel:"Budget cap (optional)",balanceBudgetCapHint:"Leave empty to use API max_budget; if still missing, show full light-blue bar",customBalanceInvalidJson:"Invalid JSON",enable:"Enable",customBalanceOpenConfig:"Expand config",customBalanceCollapseConfig:"Collapse config",customBalanceLine:"Remaining {remaining} \xB7 Spent {spend} / Budget {maxBudget} \xB7 Updated {time}",customBalanceRemaining:"Remaining {amount}",refreshCustomBalance:"Refresh custom balance",customBalanceRefreshFailed:"Custom balance refresh failed: {message}",goQuotaTitle:"OpenCode Go subscription quota",goQuotaRowLabel:"Go",goWindowRolling:"Rolling 5h",goWindowWeekly:"Weekly",goWindowMonthly:"Monthly",goResetAt:"Resets: {time}",goQuotaPercent:"{percent}%",goQuotaFetchedAt:"Updated {time}",goQuotaDisplayLabel:"Go quota display position",goQuotaRefreshIntervalLabel:"Go quota refresh interval (minutes)",goQuotaRefreshMinutesUnit:"min",goQuotaKeyLabel:"OpenCode Go API key (optional; empty = auto-detect)",goMainLabel:"Go quota primary window",goDetailLabel:"Go box details",credentialConfiguredOf:"Configured (source: {source})",credentialNotConfigured:"Not configured",credentialSave:"Save",credentialClear:"Clear",credentialSaving:"Saving\u2026",credentialInputHint:"The key is written to the DSH credential store only \u2014 it is never saved in the ledger and never echoed back.",secretMigrationPending:"These credentials are still stored in plaintext in the local ledger and could not be migrated automatically. Export the matching environment variables and restart:",credentialUnknownTarget:"Unknown credential target",budgetDetailLabel:"Budget box details",refreshGoQuota:"Refresh quota",goQuotaNotQueried:"Quota not queried",enableGoQuota:"Enable OpenCode Go quota",codingPlansTitle:"Coding plan quotas",codingPlansNote:"Query coding plan subscription quotas per vendor (independent enable switch and credentials per vendor). Credentials are only sent to the vendor's official endpoint; leave the key empty to auto-detect from environment variables and CLI logins.",codingPlansOpen:"Expand Coding Plan quotas",codingPlansCollapse:"Collapse Coding Plan quotas",codingPlansCollapsedHint:"Collapsed by default; expand to enable providers, enter keys and query quotas. The open/closed state is remembered.",codingPlanAnthropic:"Anthropic (Claude Pro/Max)",codingPlanZai:"Z.ai / Zhipu GLM Coding Plan",codingPlanMinimax:"MiniMax Token Plan",codingPlanMinimaxTitle:"MiniMax Plan",codingPlanRemain5h:"5h",codingPlanRemain7d:"7d",balanceRechargeLink:"Open DeepSeek top-up page (platform.deepseek.com/usage)",codexQuotaTitle:"ChatGPT (Codex) weekly quota",enableCodingPlan:"Enable quota queries",codingPlanDisplayLabel:"Display position",codingPlanDisplayNote:`With "Main sidebar / Both" selected, this vendor's quota shows as a card in the sidebar (same box style as the Go quota / balance; the collapsed rail shows percentages).`,codingPlanKeyLabel:"API key (optional; empty = auto-detect)",codingPlanRefreshIntervalLabel:"Refresh interval (minutes)",refreshCodingPlan:"Refresh",codingPlanNotQueried:"Quota not queried",codingPlanDisabledNote:"Disabled. Enable it to query this vendor's coding plan quota on the refresh interval and show it here.",goQuotaDisabledNote:"Quota disabled. Enable it to read the OpenCode Go subscription quota (rolling 5h / weekly / monthly) and show it in the sidebar box, Settings page and bottom-right corner; if you have no Go subscription, the reason will be shown here.",cornerLabel:"Bottom-right (dock) display",cornerEnabledLabel:"Show OpenCode Go quota / budget at the bottom-right",cornerGoRolling:"Rolling-5h quota",cornerGoWeekly:"Weekly quota",cornerGoMonthly:"Monthly quota",cornerBudget:"Budget used %",goShortRolling:"5h",goShortWeekly:"Wk",goShortMonthly:"Mo",budgetShort:"Budget",ledgerReadFailed:"Ledger read failed: {message}",readingLedger:"Reading ledger\u2026",ledgerUnavailable:"Ledger unavailable",syncFailed:"Sync failed: {message}",historyCleared:"History cleared.",clearFailed:"Clear failed: {message}",peakOff:"Peak/off-peak pricing is off; base prices are used",peakNotEffective:"Not yet effective (effective at {time}); base prices are currently used",peakActive:"Peak hour now; peak prices apply",peakNotice:"DeepSeek peak-hour pricing is active; current calls are billed at peak prices",offPeakActive:"Off-peak now; off-peak prices apply",weekendAllOffPeak:"Weekend \u2014 all off-peak (Sat & Sun billed at off-peak prices all day)",weekendChip:"Weekend \u2014 all off-peak",weekendShort:"Weekend",weekendRuleNote:"From Aug 23, 2026 00:00 (Beijing time), weekends (Saturday & Sunday) are billed entirely at off-peak prices; charges before that still follow the previous rules.",peakShort:"Peak",offPeakShort:"Off-peak",peakStyleLabel:"Peak period strip style",peakStyleCompact:"Compact (one-line)",peakStyleClassic:"Classic (segments & chip)",peakAlertLabel:"Popup alert before peak/off-peak switch",peakAlertAheadLabel:"Lead time (minutes, 1-30)",peakAlertTargetLabel:"Alert type",peakAlertTargetPeak:"Entering peak",peakAlertTargetOffPeak:"Entering off-peak",peakAlertTargetBoth:"Both",peakAlertTitlePeak:"Entering peak hours soon",peakAlertTitleOffPeak:"Entering off-peak hours soon",peakAlertBody:"Billing switches to {phase} pricing in about {time}; mind your call costs in this window.",peakAlertPhasePeak:"peak",peakAlertPhaseOffPeak:"off-peak",peakAlertBtn:"Got it",peakAlertBadgePeak:"Peak alert",peakAlertBadgeOffPeak:"Off-peak alert",peakAlertPositionLabel:"Popup position",peakAlertPositionCorner:"Bottom-right",peakAlertPositionCenter:"Screen center",peakAlertWebNotifyLabel:"Also send a system notification",peakAlertWebNotifyHint:"When enabled, allow notification permission in the browser address bar so you get alerted even when the page is minimized or backgrounded.",peakAlertPreviewLabel:"Preview the popup",peakAlertPreviewPeak:"Preview entering peak",peakAlertPreviewOffPeak:"Preview entering off-peak",peakAlertPreviewTag:" (preview)",peakPanelTitle:"Peak/off-peak pricing & notice",peakNoticeHiddenHint:"Notice hidden: enable peak/off-peak pricing and the \u201Cprominent notice\u201D toggle.",groupGeneral:"General",groupMoney:"Money & currency",groupSidebar:"Sidebar display",groupCorner:"Corner chips",groupDetail:"Box details",catalogTitle:"Extended price catalog",catalogNote:"A built-in, read-only reference catalog grouped by vendor and model family. Mounting copies an entry into the editable price table above so it is used for billing; DeepSeek models can be unmounted (they fall back to the default price and can be re-mounted here).",catalogOpen:"Expand extended price catalog",catalogCollapse:"Collapse extended price catalog",mountBtn:"Mount",unmountBtn:"Unmount",mountedTag:"Mounted",catalogUnpriced:"Unpriced",catalogDeepseekNote:"DeepSeek models support peak/off-peak tiers; once unmounted they bill at the default price and are no longer hit by auto-matching.",modelStatsTitle:"Per-model statistics (tokens & cost)",modelStatsToday:"Today",modelStatsHistory:"Last 90 days",modelStatsCostH:"Cost ranking",modelStatsTokensH:"Token usage",modelStatsHitH:"Cache hit rate",modelStatsValueH:"Value \xB7 tokens per USD",modelStatsInput:"Input",modelStatsCache:"Cache",modelStatsOutput:"Output",modelStatsEmpty:"No usage data for this period.",modelStatsBlended:"blended {price}/M",modelStatsNote:"Methodology: cache hit rate = cache reads \xF7 (cache reads + non-cached input); blended price = cost \xF7 total tokens \xD7 1M (USD per 1M tokens); value = total tokens \xF7 cost (higher is better). Costs are USD exactly as billed per call by the ledger.",billingClassLabel:"Billing class",billingClassPlan:"Plan subscription",modelStatsLegacy:"Unattributed (early data \xB7 billed as recorded)",sessionLineSplit:"This session {amount} (API) \xB7 Plan equiv. {planAmount} \xB7 Input {input} \xB7 Cache {cache} \xB7 Output {output}",costChipPlan:"Cost {amount} (+Plan)",sessionDetailPlan:"Plan subscription quota usage (equiv.) {amount}",planStatsTitle:"Token Plan usage stats (per-1% & full-window estimates)",planStatsEmpty:"No enabled coding-plan quota data yet; enable and successfully refresh a provider under the Quotas tab to see per-1% and full-window usage estimates here.",planStatsWindow:"Window",planStatsPercent:"Used %",planStatsLocal:"This period actual (local ledger)",planStatsPer1:"Per 1% quota \u2248",planStatsFull:"Full window (100%) \u2248",planStatsResets:"resets {time}",planStatsMethodSample:"sample delta",planStatsMethodLive:"current usage ratio",planStatsMethodNone:"not enough samples",planStatsMethodSampleAt:"{method} (as of {time})",planStatsConfidenceLow:"low reading precision",planStatsCurveTitle:"Plan usage curves (aggregated from sample intervals)",planStatsDaily:"Daily",planStatsWeekly:"Weekly",planStatsMonthly:"Monthly",planStatsCurveEmpty:"Not enough sample intervals yet (at least two successful refreshes with a percent change); the curves will take shape with continued use.",planStatsBarTip:"{date}: full-window est. \u2248 {full} (per 1% \u2248 {per1}) \xB7 actual {tokens} / {cost} \xB7 {intervals} sample interval(s)",planStatsNote:'Scope: all amounts are catalog-price equivalents in USD \u2014 subscription channels consume plan quota, not real money; budget/today-cost displays only count the API channel. "This period actual (local ledger)" and the per-1%/full-window estimates only cover calls made inside dsh \u2014 usage from other machines/CLIs never enters the local ledger. Per-1% and full-window values come from end-to-end deltas over continuous trustworthy sample segments (quantization noise of intermediate readings cancels out). Percent readings carry ones-digit quantization (a displayed 1% may really be 0.5%-1.5%): when a segment spans fewer than 5 percentage points the result fluctuates heavily and the method column shows a "low reading precision" tag. Samples older than 7 days (or too few) fall back to "this period actual \xF7 current used %" (live). The 5-hour window is rolling; week/month follow the local calendar; window edges align to whole hours. Note: server "used %" covers ALL usage of the account \u2014 the difference vs local stats is consumption elsewhere, so low local numbers are expected when the same key is used outside dsh. Some catalog prices are time-limited promos (e.g. gpt-5.6-sol at 50% off until 2026-09-18). SCNet is a local credits self-estimate and does not participate.',catalogDisplayLabel:"Show directly in Cost settings",catalogDisplayHint:"Only decides whether this model's price card appears directly in the Cost settings price table; mounting and billing are unaffected. When hidden, the mounted model stays editable inside the expanded vendor section of this catalog.",priceTableDisplayHint:"Use the per-model \u201CShow directly in Cost settings\u201D toggle in the extended price catalog below to choose which models appear here; DeepSeek models default to direct display, third-party models default to the catalog once mounted.",catalogCustomModels:"Custom models",priceMatchLabel:"Auto-match unknown model names",priceMatchAuto:"Auto (strip suffix / prefix / family similarity)",priceMatchExact:"Exact match only",priceMatchNote:"Match order: exact \u2192 manual override \u2192 strip date/version suffix \u2192 prefix \u2192 family similarity. Unmatched DeepSeek ids fall back to the default price; other providers stay unpriced.",unmatchedTitle:"Recently seen models without a price hit",unmatchedHint:"These found no price entry under the current match mode (including cross-vendor fallback), or fell back to the DeepSeek default. Pick which entry each one should bill against (saved as a manual override); \u201CDefault price\u201D falls back to the DeepSeek default. Models served by local runtimes (lmstudio / ollama / vLLM / \u2026) are treated as zero-cost automatically; assign a price entry here to bill them.",overrideTargetDefault:"DeepSeek default price",overrideRemove:"Remove",overrideTargetLocal:"Local model (zero cost)",matchedTitle:"Models matched this month",matchedHint:"These models already auto-matched a price entry. Pick a target to re-map them, or pick \u201CLocal model (zero cost)\u201D to mark them as local \u2014 tokens are still counted, cost is 0, and their historical amounts are zeroed immediately. Overridden rows move to the manual list above.",matchedKeepAuto:"Keep auto match",overrideNone:"No manual match overrides.",mountedSuffix:"Mounted (billed)",flatInput:"Input",flatCached:"Cached",flatOutput:"Output",deepseekMountedHeader:"DeepSeek price table (mounted)",codingPlanKimi:"Kimi / Moonshot",codingPlanOpenrouter:"OpenRouter",codingPlanSiliconflow:"SiliconFlow",codingPlanCommandcode:"CommandCode",codingPlanScnet:"SCNet Token Plan",codingPlanVolcengine:"Volcano Ark Coding Plan",codingPlanQwen:"Qwen Token Plan (qianwenai.com)",qwenPlanCreditsLabel:"Monthly credits quota (personal Lite 50K / Standard 500K; see your plan page)",qwenPlanStartLabel:"Plan start date (optional, YYYY-MM-DD; empty = calendar month)",qwenRatesLabel:"Credits rate overrides (optional; credits deducted per 1M tokens; empty = built-in table)",qwenRatesModelPlaceholder:"Model name, e.g. qwen3.8-max-preview",qwenRatePlaceholder:"rate",qwenRatesAdd:"Add",qwenLocalNote:"Qwen Token Plan exposes no API quota endpoint (usage is console-only): the current billing period is estimated from the local ledger using official credits rates; actual consumption is subject to the console. Models covered by the built-in table are converted automatically; others can be assigned a rate above.",scnetPlanCreditsLabel:"Monthly credits quota (Basic 60,000 / Standard 240,000 / Pro 600,000)",scnetPlanStartLabel:"Plan start date (optional, YYYY-MM-DD; empty = calendar month)",scnetLocalNote:"SCNet exposes no API quota endpoint: usage for the current billing period is estimated from the local ledger using the official credits deduction table (effective 2026-08-11); actual consumption is subject to the SCNet console. Only models covered by the table are counted.",volcengineAccessKeyIdLabel:"Volcengine AccessKey ID",volcengineSecretAccessKeyLabel:"Volcengine SecretAccessKey",volcengineNote:"Volcano Ark control-plane requires AK/SK HMAC signature (not ARK_API_KEY Bearer): create an IAM sub-user with ArkReadOnlyAccess + BillingCenterReadOnlyAccess and enter AccessKeyID and SecretAccessKey; or export VOLC_ACCESSKEY / VOLC_SECRETKEY (official SDK env) for auto-discovery; credentials are only sent to open.volcengineapi.com.",volcengineAccessKeyPlaceholder:"AK...",volcengineSecretPlaceholder:"SK...",countdownHoursOnly:"{h}h",countdownHourMinute:"{h}h {m}m",countdownMinute:"{m}m",nextOffPeakIn:"Off-peak in {time}",nextPeakIn:"Peak in {time}",peakSummary:"Peak hours (UTC): {windows}; effective: {time}. {status}",noPeakWindows:"No peak windows configured. {status}",unknown:"unknown",cardToday:"Today",cardMonth:"This month",cardTotal:"All time",cardTotalSub:"Since the ledger was created \xB7 Calls {calls}",cardsFootnote:"Notes: amounts reflect the latest ledger snapshot (2s debounce; clean shutdown flushes everything first), so minute-level lag vs the live official bill is expected. Token columns sum input+output+cache+reasoning; reasoning tokens are reported separately by the API and are not billed (the official bill folds them into its output column) \u2014 reconcile by amount.",timezoneHint:"Timezone notice: today/this-month are keyed by the host machine's timezone {host}, which differs from this browser ({browser}) \u2014 the host's local midnight differs from yours, so calls made after your local midnight land on the previous day (not lost; balance reconciliation flags the same deviation). Run dsh on the host in your local timezone to align them.",todaySessions:"Today's sessions",historyExpandHint:"Click a date row to expand its session details",historySessionsLoading:"Loading session details\u2026",historyNoSessions:"No session details for this day (early data or session logs cleaned)",historySessionsError:"Failed to load session details",sessionRankTitle:"By session (all history)",sessionRankHint:"All historical sessions, not grouped by date; sort and row count are switchable",sessionRankEmpty:"No session data yet",sessionRankLoading:"Loading session ranking\u2026",sessionRankError:"Failed to load session ranking",sessionRankLimit:"Rows",showSessionIdLabel:"Show session IDs in session lists",cardsTogglePlanTotal:"Include plan totals",cardsTogglePlanTotalHint:"When on, every amount shows total equivalent cost including plan subscriptions; off (default) counts real-money API channels only",hideOfficialBalanceLabel:"Hide official account balance (balance UI removed from sidebar and settings)",hideTodayCostLabel:"Hide today's cost (today's amount removed from sidebar, budget details and overview card)",sessionRankSort:"Sort",sessionSortCostDesc:"Cost high\u2192low",sessionSortCostAsc:"Cost low\u2192high",sessionSortTimeDesc:"Time new\u2192old",sessionSortTimeAsc:"Time old\u2192new",sessionSortRecent:"Recent order",history:"History",usageTitle:"Token usage stats",usageTotal:"All-time {tokens} tokens \xB7 input {input} \xB7 cache {cache} \xB7 output {output} \xB7 {calls} calls",usageDay:"{date}: {tokens} tokens (input {input} \xB7 cache {cache} \xB7 output {output}) \xB7 {calls} calls \xB7 {cost}",usageEmpty:"No history yet \u2014 daily usage will accumulate here",usageSectionLabel:"Usage",usagePositionLabel:"Token usage stats position",usagePositionCost:"Cost settings",usagePositionGeneral:"General settings",usagePositionSection:"Own section (Usage)",displaySettings:"Display settings",tabOverview:"Overview",tabQuotas:"Quotas",tabUsage:"Usage",tabPricing:"Pricing",tabDisplay:"Display",historyDataTitle:"History data",positionLabel:"Session cost display position",positionDock:"Below the composer",positionHeader:"Session title bar",off:"Off",quotaStripGroup:"Quota strip above the input",quotaStripEnable:"Enable the quota strip (one row above the input box)",quotaStripShowBudget:"Strip includes budget used %",quotaStripShowGo:"Strip includes the Go quota",quotaStripShowPlans:"Strip includes coding plan quotas",quotaStripNote:"Hover a chip for reset times and the last refresh; the strip hides itself when there is no quota data.",quotaStripGuideTitle:"New: quota strip above the input",quotaStripGuideBody:"Show budget and subscription quotas (OpenCode Go / coding plans) as one compact strip above the input box. Enable it now? You can change this anytime in Settings \u2192 Display.",quotaStripGuideOn:"Enable the strip",quotaStripGuideOff:"Not now",clickToRefresh:"Click to refresh now",balanceClickGuideTitle:"New: click the balance box to refresh",balanceClickGuideBody:"Click the official balance / custom balance / coding-plan box in the sidebar to fetch the latest data immediately \u2014 no need to wait for the auto-refresh interval or open Settings. While refreshing the box pulses; on failure the previous value is kept and the reason appears in the hover tooltip.",balanceClickGuideOk:"Got it",sidebarLabel:"Today cost display",sidebarOn:"Sidebar footer",currencyLabel:"Currency",currencyCny:"Chinese Yuan (CNY)",currencyUsd:"US Dollar (USD)",currencyEur:"Euro (EUR)",symbolLabel:"Currency symbol",rateLabel:"Exchange rate (1 USD = ? target currency)",decimalsLabel:"Decimal places",balanceDisplayLabel:"Balance display position",balanceSidebar:"Main sidebar",balanceSettings:"Settings page",balanceBoth:"Both",refreshIntervalLabel:"Balance refresh interval (minutes)",peakEnabledLabel:"Use DeepSeek peak-hour prices",peakNoticeLabel:"Prominent notice during peak hours (sidebar budget box, today's cost; previewed in the Settings peak panel)",badgeNote:"The session badge is billed exactly at each call's actual time (peak/off-peak tiers; calls before the 2026-08-16 16:00 UTC boundary are billed at the base prices of that era), consistent with the ledger's today/month/all-time figures. Input/cache/output tokens are counted separately; cache reads and writes are billed at the cache-hit price.",priceTableTitle:"Price table (USD / 1M tokens)",pricingCurrencyLabel:"Official price currency",pricingCurrencyUsd:"USD (English official page)",pricingCurrencyCny:"CNY (Chinese official page)",pricingCurrencyNote:'Chooses which language of the official pricing page "Sync from the official docs" fetches. After switching and re-syncing, history is re-costed on the new price table (sessions without full log coverage keep their original basis), so history and the official bill share one basis; the recompute runs in the background and notifies when done.',priceTableNote:'"Off-peak / Peak" are the prices used once peak/off-peak pricing takes effect; calls before the 2026-08-16 16:00 UTC boundary are billed at the base prices of that time (legacyBase); cache writes are billed at the cache-hit price (matching the official rule). Models without a cache discount (e.g. Anthropic/Gemini) can be entered with just input and output prices \u2014 the hit price is then derived from the miss price. All settings changes are auto-saved.',defaultModelId:"default (fallback for unmatched models)",newModelPlaceholder:"New model ID (e.g. deepseek-v4-pro)",addModel:"Add model",dataSync:"Data & sync",saving:"Saving\u2026",autoSaveFailed:"Auto-save failed: {message}",autoSavedAt:"Auto-saved {time}",autoSaveHint:"Settings are auto-saved",confirmFetch:"Overwrite the price table with prices from the official docs?",apply:"Apply",cancel:"Cancel",syncFromDocs:"Sync prices from official docs",confirmReset:"Clear all history?",importLegacy:"Import pre-install history",confirmImportLegacy:"Confirm import? Replays all session logs and only fills dates/sessions missing from the ledger; existing records are untouched.",legacyImportFailed:"Failed to import pre-install history: {message}",legacyImportNote:"Pre-install history is imported automatically once on first launch; this button re-runs it manually (e.g. after copying in old logs). Costs are estimated with the current price catalog; cleaned logs cannot be replayed, and for a session spanning the install moment its pre-install usage is not counted.",confirmClear:"Confirm clear",clearAllHistory:"Clear all history",lastSync:"Last sync: {time}",neverSynced:"Never (bundled prices)",source:"; Source: {source}",sourceOfficial:"Official docs",sourceBundled:"Bundled",languageLabel:"Language",localeAuto:"Follow browser (auto)",localeZh:"Simplified Chinese",localeEn:"English",sectionLabel:"Cost",rpcFailed:"{method} call failed",rpcSyncFailed:"Sync call failed",rpcBalanceFailed:"Balance refresh call failed"}};function Vt(){return(typeof navigator<"u"&&typeof navigator.language=="string"?navigator.language:"").toLowerCase().startsWith("zh")?"zh":"en"}r(Vt,"detectBrowserLocale");function z(t){return t==="zh"||t==="en"?t:Vt()}r(z,"resolveLocale");function $(t){const s=t==="zh"?we.zh:we.en;return(o,a)=>{let n=s[o]??we.en[o]??o;if(a)for(const l of Object.keys(a))n=n.split("{"+l+"}").join(String(a[l]));return n}}r($,"makeT");const Oe={day:"periodDay",month:"periodMonth",all:"periodAll",custom:"periodCustom"};function ee(t,s){throw new Error("dsh-cost-meter: \u670D\u52A1\u7AEF\u6570\u636E\u975E\u6CD5 ("+t+": "+s+")")}r(ee,"fail");function H(t,s){return(typeof t!="number"||!Number.isFinite(t))&&ee(s,"number"),t}r(H,"needNum");function He(t,s){return typeof t!="string"&&ee(s,"string"),t}r(He,"needStr");function Jt(t,s){return typeof t!="boolean"&&ee(s,"boolean"),t}r(Jt,"needBool");function De(t,s){const o={};if(t!==null&&typeof t=="object"&&!Array.isArray(t))for(const a of Object.keys(t)){const n=t[a];if(n===null||typeof n!="object"||Array.isArray(n))continue;const l=r(i=>typeof i=="number"&&Number.isFinite(i)&&i>=0?i:0,"num");o[a]={input:l(n.input),output:l(n.output),cacheRead:l(n.cacheRead),cacheWrite:l(n.cacheWrite),reasoning:l(n.reasoning),cost:l(n.cost),apiCost:n.apiCost===void 0?l(n.cost):l(n.apiCost)}}return o}r(De,"aggregateModelMap");function $t(t,s){return(t===null||typeof t!="object"||Array.isArray(t))&&ee(s,"object"),{id:He(t.id,s+".id"),provider:typeof t.provider=="string"?t.provider:"",model:typeof t.model=="string"?t.model:"",input:H(t.input,s+".input"),output:H(t.output,s+".output"),cacheRead:H(t.cacheRead,s+".cacheRead"),cacheWrite:H(t.cacheWrite,s+".cacheWrite"),reasoning:t.reasoning===void 0?0:H(t.reasoning,s+".reasoning"),calls:H(t.calls,s+".calls"),cost:H(t.cost,s+".cost"),apiCost:t.apiCost===void 0?void 0:H(t.apiCost,s+".apiCost"),byModel:De(t.byModel,s+".byModel"),byProviderModel:De(t.byProviderModel,s+".byProviderModel")}}r($t,"parseSession");function Re(t,s){(t===null||typeof t!="object"||Array.isArray(t))&&ee(s,"object");const o={date:He(t.date,s+".date"),input:H(t.input,s+".input"),output:H(t.output,s+".output"),cacheRead:H(t.cacheRead,s+".cacheRead"),cacheWrite:H(t.cacheWrite,s+".cacheWrite"),reasoning:t.reasoning===void 0?0:H(t.reasoning,s+".reasoning"),calls:H(t.calls,s+".calls"),cost:H(t.cost,s+".cost"),apiCost:t.apiCost===void 0?void 0:H(t.apiCost,s+".apiCost"),byModel:De(t.byModel,s+".byModel"),byProviderModel:De(t.byProviderModel,s+".byProviderModel"),sessions:[]};return t.sessions!==void 0&&(Array.isArray(t.sessions)||ee(s+".sessions","array"),o.sessions=t.sessions.map((a,n)=>$t(a,s+".sessions["+n+"]"))),o}r(Re,"parseDay");function mt(t,s){(t===null||typeof t!="object"||Array.isArray(t))&&ee(s,"object");const o={cacheHit:H(t.cacheHit,s+".cacheHit"),cacheMiss:H(t.cacheMiss,s+".cacheMiss"),output:H(t.output,s+".output")};return t.offPeak!==void 0&&(o.offPeak={cacheHit:H(t.offPeak.cacheHit,s+".offPeak.cacheHit"),cacheMiss:H(t.offPeak.cacheMiss,s+".offPeak.cacheMiss"),output:H(t.offPeak.output,s+".offPeak.output")}),t.peak!==void 0&&(o.peak={cacheHit:H(t.peak.cacheHit,s+".peak.cacheHit"),cacheMiss:H(t.peak.cacheMiss,s+".peak.cacheMiss"),output:H(t.peak.output,s+".peak.output")}),t.legacyBase!==void 0&&(o.legacyBase={cacheHit:H(t.legacyBase.cacheHit,s+".legacyBase.cacheHit"),cacheMiss:H(t.legacyBase.cacheMiss,s+".legacyBase.cacheMiss"),output:H(t.legacyBase.output,s+".legacyBase.output")}),t.legacy!==void 0&&(o.legacy=Jt(t.legacy,s+".legacy")),o}r(mt,"parsePrice");function Zt(t,s){(t===null||typeof t!="object"||Array.isArray(t))&&ee(s,"object");const o={};if(t.prices!==null&&typeof t.prices=="object"&&t.prices.models!==null&&typeof t.prices.models=="object")for(const a of Object.keys(t.prices.models))o[a]=mt(t.prices.models[a],s+".prices.models."+a);return{locale:t.locale==="zh"||t.locale==="en"||t.locale==="auto"?t.locale:"auto",position:t.position==="header"||t.position==="off"?t.position:"dock",sidebar:t.sidebar!==!1,showSessionId:t.showSessionId===!0,hideOfficialBalance:t.hideOfficialBalance===!0,hideTodayCost:t.hideTodayCost===!0,showTotalWithPlan:t.showTotalWithPlan===!0,pricingCurrency:t.pricingCurrency==="CNY"?"CNY":"USD",currency:typeof t.currency=="string"?t.currency:"CNY",symbol:typeof t.symbol=="string"?t.symbol:"\xA5",decimals:H(t.decimals,s+".decimals"),exchangeRate:H(t.exchangeRate,s+".exchangeRate"),peakEnabled:t.peakEnabled===!0,peakEffectiveAt:typeof t.peakEffectiveAt=="string"?t.peakEffectiveAt:"",peakWindows:Array.isArray(t.peakWindows)?t.peakWindows.map((a,n)=>({start:H(a.start,s+".peakWindows["+n+"].start"),end:H(a.end,s+".peakWindows["+n+"].end")})):[],peakNotice:t.peakNotice!==!1,peakAlertEnabled:t.peakAlertEnabled!==!1,peakAlertAhead:Number.isFinite(t.peakAlertAhead)&&t.peakAlertAhead>=1&&t.peakAlertAhead<=30?t.peakAlertAhead:2,peakAlertTarget:t.peakAlertTarget==="peak"||t.peakAlertTarget==="offpeak"?t.peakAlertTarget:"both",peakAlertPosition:t.peakAlertPosition==="center"?"center":"corner",peakAlertWebNotify:t.peakAlertWebNotify===!0,peakStyle:t.peakStyle==="classic"?"classic":"compact",priceMatch:t.priceMatch==="exact"?"exact":"auto",priceOverrides:(()=>{const a={};if(t.priceOverrides!==null&&typeof t.priceOverrides=="object"&&!Array.isArray(t.priceOverrides))for(const[n,l]of Object.entries(t.priceOverrides))typeof n=="string"&&typeof l=="string"&&(a[n]=l);return a})(),priceTableDisplay:(()=>{const a={};if(t.priceTableDisplay!==null&&typeof t.priceTableDisplay=="object"&&!Array.isArray(t.priceTableDisplay))for(const[n,l]of Object.entries(t.priceTableDisplay))typeof n=="string"&&(a[n]=l===!0);return a})(),codingPlans:(()=>{const a={};if(t.codingPlans!==null&&typeof t.codingPlans=="object"&&!Array.isArray(t.codingPlans))for(const n of Object.keys(t.codingPlans)){const l=t.codingPlans[n];l===null||typeof l!="object"||Array.isArray(l)||(a[n]={enabled:l.enabled===!0,display:l.display==="sidebar"||l.display==="both"||l.display==="off"?l.display:"settings",refreshMinutes:typeof l.refreshMinutes=="number"&&Number.isFinite(l.refreshMinutes)?l.refreshMinutes:15,apiKey:typeof l.apiKey=="string"?l.apiKey:"",...typeof l.planCredits=="number"&&Number.isFinite(l.planCredits)&&l.planCredits>0?{planCredits:l.planCredits}:{},...typeof l.planStart=="string"?{planStart:l.planStart}:{},...l.rates!==null&&typeof l.rates=="object"&&!Array.isArray(l.rates)?{rates:l.rates}:{},...typeof l.accessKeyId=="string"?{accessKeyId:l.accessKeyId}:{},...typeof l.secretAccessKey=="string"?{secretAccessKey:l.secretAccessKey}:{}})}return a})(),prices:{models:o,default:mt(t.prices?.default??{cacheHit:0,cacheMiss:0,output:0},s+".prices.default"),providers:t.prices?.providers&&typeof t.prices.providers=="object"?t.prices.providers:{},currency:typeof t.prices?.currency=="string"&&t.prices.currency.length>0?t.prices.currency:void 0},historyDays:H(t.historyDays,s+".historyDays"),fetchedAt:t.fetchedAt===null||t.fetchedAt===void 0?null:He(t.fetchedAt,s+".fetchedAt"),priceSource:typeof t.priceSource=="string"?t.priceSource:"bundled",budget:{enabled:t.budget?.enabled===!0,amount:typeof t.budget?.amount=="number"&&Number.isFinite(t.budget.amount)?t.budget.amount:100,period:t.budget?.period==="day"||t.budget?.period==="all"||t.budget?.period==="custom"?t.budget.period:"month",customStart:typeof t.budget?.customStart=="string"?t.budget.customStart:null,customEnd:typeof t.budget?.customEnd=="string"?t.budget.customEnd:null,detail:t.budget?.detail!==!1},balance:{display:t.balance?.display==="sidebar"||t.balance?.display==="settings"||t.balance?.display==="off"?t.balance.display:"both",refreshMinutes:typeof t.balance?.refreshMinutes=="number"&&Number.isFinite(t.balance.refreshMinutes)?t.balance.refreshMinutes:5,showProgressBar:t.balance?.showProgressBar===!0,budgetCap:typeof t.balance?.budgetCap=="number"&&Number.isFinite(t.balance.budgetCap)&&t.balance.budgetCap>0?t.balance.budgetCap:null,clickHintSeen:t.balance?.clickHintSeen===!0},goQuota:{enabled:t.goQuota?.enabled!==!1,display:t.goQuota?.display==="sidebar"||t.goQuota?.display==="settings"||t.goQuota?.display==="off"?t.goQuota.display:"both",refreshMinutes:typeof t.goQuota?.refreshMinutes=="number"&&Number.isFinite(t.goQuota.refreshMinutes)?t.goQuota.refreshMinutes:15,apiKey:typeof t.goQuota?.apiKey=="string"?t.goQuota.apiKey:"",main:t.goQuota?.main==="weekly"||t.goQuota?.main==="monthly"?t.goQuota.main:"rolling",detail:t.goQuota?.detail!==!1},customBalance:t.customBalance===void 0||t.customBalance===null?void 0:{enabled:t.customBalance.enabled===!0,label:typeof t.customBalance.label=="string"?t.customBalance.label:"",labelEn:typeof t.customBalance.labelEn=="string"?t.customBalance.labelEn:"",display:t.customBalance.display==="sidebar"||t.customBalance.display==="settings"||t.customBalance.display==="off"?t.customBalance.display:"both",unit:t.customBalance.unit==="CNY"||t.customBalance.unit==="EUR"?t.customBalance.unit:"USD",refreshMinutes:typeof t.customBalance.refreshMinutes=="number"&&Number.isFinite(t.customBalance.refreshMinutes)?t.customBalance.refreshMinutes:15,request:t.customBalance.request&&typeof t.customBalance.request=="object"?t.customBalance.request:{url:""},extract:t.customBalance.extract&&typeof t.customBalance.extract=="object"?t.customBalance.extract:{}},corner:{enabled:t.corner?.enabled===!0,goRolling:t.corner?.goRolling!==!1,goWeekly:t.corner?.goWeekly!==!1,goMonthly:t.corner?.goMonthly!==!1,budget:t.corner?.budget!==!1},quotaStrip:{enabled:t.quotaStrip?.enabled===!0,budget:t.quotaStrip?.budget!==!1,go:t.quotaStrip?.go!==!1,plans:t.quotaStrip?.plans!==!1,promptSeen:t.quotaStrip?.promptSeen===!0},usage:{position:t.usage?.position==="general"||t.usage?.position==="section"?t.usage.position:"cost"},barDirections:(()=>{const a=t.barDirections!==null&&typeof t.barDirections=="object"&&!Array.isArray(t.barDirections)?t.barDirections:{},n=r((l,i)=>a[l]==="remaining"||a[l]==="used"?a[l]:i,"pick");return{balance:n("balance","remaining"),budget:n("budget","used"),go:n("go","used"),plan:n("plan","used")}})(),planBilling:{providers:(()=>{const a={};if(t.planBilling?.providers!==null&&typeof t.planBilling?.providers=="object"&&!Array.isArray(t.planBilling.providers))for(const[n,l]of Object.entries(t.planBilling.providers))typeof n=="string"&&(l==="auto"||l==="plan"||l==="api")&&(a[n]=l);return a})(),models:(()=>{const a={};if(t.planBilling?.models!==null&&typeof t.planBilling?.models=="object"&&!Array.isArray(t.planBilling.models))for(const[n,l]of Object.entries(t.planBilling.models))typeof n=="string"&&n.length>0&&(l==="plan"||l==="api")&&(a[n]=l);return a})()}}}r(Zt,"parseConfig");function Xt(t,s){return(t===null||typeof t!="object"||Array.isArray(t))&&ee(s,"object"),{status:t.status==="ok"||t.status==="error"?t.status:"off",message:typeof t.message=="string"?t.message:"",fetchedAt:typeof t.fetchedAt=="number"?t.fetchedAt:0,currency:typeof t.currency=="string"?t.currency:"",totalBalance:typeof t.totalBalance=="number"&&Number.isFinite(t.totalBalance)?t.totalBalance:0,grantedBalance:typeof t.grantedBalance=="number"&&Number.isFinite(t.grantedBalance)?t.grantedBalance:0,toppedUpBalance:typeof t.toppedUpBalance=="number"&&Number.isFinite(t.toppedUpBalance)?t.toppedUpBalance:0}}r(Xt,"parseBalance");function We(t,s){return t==null?null:((typeof t!="object"||Array.isArray(t))&&ee(s,"object"),{percent:typeof t.percent=="number"&&Number.isFinite(t.percent)?t.percent:0,resetsAt:typeof t.resetsAt=="string"?t.resetsAt:""})}r(We,"parseGoWindow");function ea(t,s){return(t===null||typeof t!="object"||Array.isArray(t))&&ee(s,"object"),{status:t.status==="ok"||t.status==="error"?t.status:"off",message:typeof t.message=="string"?t.message:"",fetchedAt:typeof t.fetchedAt=="number"?t.fetchedAt:0,rolling:t.rolling===void 0||t.rolling===null?null:We(t.rolling,s+".rolling"),weekly:t.weekly===void 0||t.weekly===null?null:We(t.weekly,s+".weekly"),monthly:t.monthly===void 0||t.monthly===null?null:We(t.monthly,s+".monthly")}}r(ea,"parseGoQuota");function ta(t,s){return(t===null||typeof t!="object"||Array.isArray(t))&&ee(s,"object"),{status:t.status==="ok"||t.status==="error"?t.status:"off",message:typeof t.message=="string"?t.message:"",fetchedAt:typeof t.fetchedAt=="number"?t.fetchedAt:0,label:typeof t.label=="string"?t.label:"",unit:typeof t.unit=="string"?t.unit:"USD",remaining:typeof t.remaining=="number"&&Number.isFinite(t.remaining)?t.remaining:0,maxBudget:typeof t.maxBudget=="number"&&Number.isFinite(t.maxBudget)?t.maxBudget:null,spend:typeof t.spend=="number"&&Number.isFinite(t.spend)?t.spend:null}}r(ta,"parseCustomBalance");const ae=r(t=>typeof t=="number"&&Number.isFinite(t)?t:null,"numOrNull");function aa(t){if(t===null||typeof t!="object"||Array.isArray(t))return null;const s={};if(t.providers!==null&&typeof t.providers=="object"&&!Array.isArray(t.providers))for(const[o,a]of Object.entries(t.providers)){if(a===null||typeof a!="object"||Array.isArray(a))continue;const n={},l={};if(a.windows!==null&&typeof a.windows=="object"&&!Array.isArray(a.windows))for(const[i,c]of Object.entries(a.windows))c===null||typeof c!="object"||Array.isArray(c)||(n[i]={percent:ae(c.percent)??0,resetsAt:typeof c.resetsAt=="string"?c.resetsAt:"",localTokens:ae(c.localTokens)??0,localCost:ae(c.localCost)??0,method:c.method==="sample"||c.method==="live"?c.method:"none",sampleAt:ae(c.sampleAt),confidence:c.confidence==="high"||c.confidence==="low"?c.confidence:null,per1Tokens:ae(c.per1Tokens),per1Cost:ae(c.per1Cost),fullTokens:ae(c.fullTokens),fullCost:ae(c.fullCost),sampleCount:ae(c.sampleCount)??0});if(a.intervals!==null&&typeof a.intervals=="object"&&!Array.isArray(a.intervals))for(const[i,c]of Object.entries(a.intervals))Array.isArray(c)&&(l[i]=c.filter(u=>u!==null&&typeof u=="object"&&!Array.isArray(u)).map(u=>({t0:ae(u.t0)??0,t1:ae(u.t1)??0,tokens:ae(u.tokens)??0,cost:ae(u.cost)??0,pct:ae(u.pct)??0,per1Tokens:ae(u.per1Tokens)??0,per1Cost:ae(u.per1Cost)??0})));s[o]={windows:n,intervals:l}}return{generatedAt:ae(t.generatedAt)??0,providers:s}}r(aa,"parsePlanStats");function pt(t,s){return(t===null||typeof t!="object"||Array.isArray(t))&&ee(s,"object"),{today:Re(t.today,s+".today"),month:Re(t.month,s+".month"),total:Re(t.total,s+".total"),budgetUsed:typeof t.budgetUsed=="number"&&Number.isFinite(t.budgetUsed)?t.budgetUsed:void 0,balance:t.balance===void 0||t.balance===null?{status:"off",message:"",fetchedAt:0,currency:"",totalBalance:0,grantedBalance:0,toppedUpBalance:0}:Xt(t.balance,s+".balance"),goQuota:t.goQuota===void 0||t.goQuota===null?{status:"off",message:"",fetchedAt:0,rolling:null,weekly:null,monthly:null}:ea(t.goQuota,s+".goQuota"),customBalance:t.customBalance===void 0||t.customBalance===null?{status:"off",message:"",fetchedAt:0,label:"",unit:"USD",remaining:0,maxBudget:null,spend:null}:ta(t.customBalance,s+".customBalance"),codingPlans:t.codingPlans!==null&&typeof t.codingPlans=="object"&&!Array.isArray(t.codingPlans)?t.codingPlans:{},planStats:aa(t.planStats),history:Array.isArray(t.history)?t.history.map((o,a)=>Re(o,s+".history["+a+"]")):[],config:Zt(t.config,s+".config"),reconcile:t.reconcile===null||t.reconcile===void 0?void 0:{ok:t.reconcile.ok===!0,message:typeof t.reconcile.message=="string"?t.reconcile.message:""},priceCatalog:t.priceCatalog!==null&&typeof t.priceCatalog=="object"&&!Array.isArray(t.priceCatalog)?t.priceCatalog:null,meta:{now:typeof t.meta?.now=="number"?t.meta.now:Date.now(),timezoneOffsetMinutes:typeof t.meta?.timezoneOffsetMinutes=="number"?t.meta.timezoneOffsetMinutes:0,timezone:typeof t.meta?.timezone=="string"?t.meta.timezone:"",dayKey:typeof t.meta?.dayKey=="string"?t.meta.dayKey:"",monthKey:typeof t.meta?.monthKey=="string"?t.meta.monthKey:""}}}r(pt,"parseState");function na(t,s){(t===null||typeof t!="object"||Array.isArray(t))&&ee(s,"object");const o={ok:t.ok===!0,message:typeof t.message=="string"?t.message:""};return t.state!==void 0&&t.state!==null&&(o.state=pt(t.state,s+".state")),o}r(na,"parseFetchResult");function ue(t){return{parse:t}}r(ue,"codecOf");const ze=ue(pt),sa=ue(t=>((t===null||typeof t!="object"||Array.isArray(t))&&ee("patch","object"),t)),ye=ue(na),oa=ue(t=>(typeof t!="string"&&ee("provider","string"),t)),la=ue(t=>(typeof t!="string"&&ee("date","string"),t)),ra=ue(t=>((t===null||typeof t!="object"||Array.isArray(t))&&ee("day","object"),t)),ia=ue(t=>(Number.isFinite(Number(t))||ee("limit","number"),Number(t))),ft=ue(t=>(typeof t!="string"&&ee("sort","string"),t)),ca=ue(t=>((t===null||typeof t!="object"||Array.isArray(t))&&ee("topSessions","object"),t)),gt=ue(t=>(typeof t!="string"&&ee("target","string"),t)),da=ue(t=>(typeof t!="string"&&ee("value","string"),t)),ua={package:"dsh-cost-meter",descriptors:[{id:"dsh-cost-meter#costMeter/getState",service:"costMeter",namespace:"costMeter",method:"getState",invocation:{kind:"direct"},parameters:[],result:{mode:"strict",typeSymbol:"dsh-cost-meter#CostState",schema:ze}},{id:"dsh-cost-meter#costMeter/updateConfig",service:"costMeter",namespace:"costMeter",method:"updateConfig",invocation:{kind:"direct"},parameters:[{name:"patch",wire:"patch",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#ConfigPatch",schema:sa}}],result:{mode:"strict",typeSymbol:"dsh-cost-meter#CostState",schema:ze}},{id:"dsh-cost-meter#costMeter/fetchPrices",service:"costMeter",namespace:"costMeter",method:"fetchPrices",invocation:{kind:"direct"},parameters:[],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ye}},{id:"dsh-cost-meter#costMeter/refreshBalance",service:"costMeter",namespace:"costMeter",method:"refreshBalance",invocation:{kind:"direct"},parameters:[],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ye}},{id:"dsh-cost-meter#costMeter/refreshGoQuota",service:"costMeter",namespace:"costMeter",method:"refreshGoQuota",invocation:{kind:"direct"},parameters:[],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ye}},{id:"dsh-cost-meter#costMeter/refreshCustomBalance",service:"costMeter",namespace:"costMeter",method:"refreshCustomBalance",invocation:{kind:"direct"},parameters:[],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ye}},{id:"dsh-cost-meter#costMeter/refreshCodingPlan",service:"costMeter",namespace:"costMeter",method:"refreshCodingPlan",invocation:{kind:"direct"},parameters:[{name:"provider",wire:"provider",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#CodingPlanProvider",schema:oa}}],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ye}},{id:"dsh-cost-meter#costMeter/resetHistory",service:"costMeter",namespace:"costMeter",method:"resetHistory",invocation:{kind:"direct"},parameters:[],result:{mode:"strict",typeSymbol:"dsh-cost-meter#CostState",schema:ze}},{id:"dsh-cost-meter#costMeter/importLegacyHistory",service:"costMeter",namespace:"costMeter",method:"importLegacyHistory",invocation:{kind:"direct"},parameters:[],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ye}},{id:"dsh-cost-meter#costMeter/getDaySessions",service:"costMeter",namespace:"costMeter",method:"getDaySessions",invocation:{kind:"direct"},parameters:[{name:"date",wire:"date",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#DayKey",schema:la}}],result:{mode:"strict",typeSymbol:"dsh-cost-meter#DayRecord",schema:ra}},{id:"dsh-cost-meter#costMeter/getTopSessions",service:"costMeter",namespace:"costMeter",method:"getTopSessions",invocation:{kind:"direct"},parameters:[{name:"limit",wire:"limit",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#SessionLimit",schema:ia}},{name:"sort",wire:"sort",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#SessionSort",schema:ft},acceptsUndefined:!0},{name:"dir",wire:"dir",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#SessionSortDir",schema:ft},acceptsUndefined:!0}],result:{mode:"strict",typeSymbol:"dsh-cost-meter#TopSessions",schema:ca}},{id:"dsh-cost-meter#costMeter/setCredential",service:"costMeter",namespace:"costMeter",method:"setCredential",invocation:{kind:"direct"},parameters:[{name:"target",wire:"target",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#CredentialTarget",schema:gt}},{name:"value",wire:"value",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#CredentialValue",schema:da}}],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ye}},{id:"dsh-cost-meter#costMeter/clearCredential",service:"costMeter",namespace:"costMeter",method:"clearCredential",invocation:{kind:"direct"},parameters:[{name:"target",wire:"target",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#CredentialTarget",schema:gt}}],result:{mode:"strict",typeSymbol:"dsh-cost-meter#FetchPricesResult",schema:ye}}]};function ma(t,s){const o=s?.models??{};return typeof t=="string"&&t.length>0&&o[t]!==void 0?o[t]:s?.default??{cacheHit:0,cacheMiss:0,output:0}}r(ma,"priceEntryFor");function bt(t){if(t===null||typeof t!="object")return;const s=r(i=>{const c=t[i];return typeof c=="number"&&Number.isFinite(c)&&c>=0?c:void 0},"n"),o=s("cacheMiss")??s("input")??0,n={cacheHit:s("cacheHit")??s("cachedInput")??s("cacheRead")??o,cacheMiss:o,output:s("output")??0},l=s("reasoning");return l!==void 0&&(n.reasoning=l),n}r(bt,"normalizeClientTier");function pa(t){const s=bt(t);if(s===void 0)return null;for(const o of["offPeak","peak","legacyBase"]){const a=bt(t[o]);a!==void 0&&(s[o]=a)}return s}r(pa,"normalizeClientPrice");const ht=Date.parse("2026-08-22T16:00:00Z");function Ee(t){if(!Number.isFinite(t)||t<ht)return null;const s=Math.floor((t+8*36e5)/864e5),o=(s+4)%7;if(o!==6&&o!==0)return null;const a=o===6?s:s-1;return{start:Math.max(a*864e5-8*36e5,ht),end:(a+2)*864e5-8*36e5}}r(Ee,"weekendZoneAt");function yt(t,s,o){if(!Array.isArray(o)||o.length===0||Ee(t)!==null||Number.isFinite(s)&&t<s)return!1;const a=new Date(t).getUTCHours();return o.some(n=>{const l=Number(n.start),i=Number(n.end);return!Number.isFinite(l)||!Number.isFinite(i)?!1:l<i?a>=l&&a<i:a>=l||a<i})}r(yt,"isPeakHour");const fa=Date.parse("2026-08-16T16:00:00Z");function kt(t,s,o){const a=t??{cacheHit:0,cacheMiss:0,output:0},n=r(i=>({cacheHit:i.cacheHit,cacheMiss:i.cacheMiss,output:i.output,reasoning:i.reasoning??0}),"asTier");if(Number.isFinite(s)&&s<fa){const i=a.legacyBase;return n(i===void 0?a:i)}if(o?.enabled!==!0)return n(a);const l=typeof o.effectiveAtMs=="number"&&Number.isFinite(o.effectiveAtMs)?o.effectiveAtMs:void 0;if(yt(s,l,o.windows)){const i=a.peak;return n(i===void 0?a:i)}if(l!==void 0&&s>=l){const i=a.offPeak;return n(i===void 0?a:i)}return n(a)}r(kt,"tierFor");function wt(t,s){const o=Math.max(0,Number(t.input)||0),a=Math.max(0,Number(t.output)||0),n=Math.max(0,Number(t.cacheRead)||0),l=Math.max(0,Number(t.cacheWrite)||0),i=Math.max(0,Number(t.reasoning)||0);return(o*s.cacheMiss+a*s.output+(n+l)*s.cacheHit+i*(s.reasoning??0))/1e6}r(wt,"costOfBuckets");function xt(t,s,o){const a=Number(t);if(!Number.isFinite(a)||a<0||a===0)return 0;if(s!=="CNY")return a;const n=Number(o);return!Number.isFinite(n)||n<=0?a:a/n}r(xt,"usdFromCostLocal");function oe(t,s){const o=t?.barDirections,a=s==="balance"?"remaining":"used";if(o===null||typeof o!="object"||Array.isArray(o))return a;const n=o[s];return n==="remaining"||n==="used"?n:a}r(oe,"barDirectionOf");function me(t,s){if(t==null||!Number.isFinite(Number(t)))return{width:0,label:null};const o=Math.max(0,Math.min(100,Number(t))),a=s==="remaining"?Math.round((100-o)*10)/10:Math.round(o*10)/10;return{width:a,label:a}}r(me,"simpleBarByDirection");function ce(t,s){const o=typeof s?.symbol=="string"&&s.symbol.length>0?s.symbol:"$",a=Number(s?.decimals),n=Math.max(0,Math.min(10,Number.isFinite(a)?Math.floor(a):2));let l=n;t>0&&t<Math.pow(10,-n)&&(l=n+2);const i=t.toFixed(l),c=i.includes(".")?i.replace(/0+$/,"").replace(/\.$/,""):i;return o+c}r(ce,"formatMoneyValue");function Z(t,s){const o=Number(s?.exchangeRate),a=t*(Number.isFinite(o)&&o>0?o:1);return ce(a,s)}r(Z,"formatMoneyUsd");function q(t){const s=Math.max(0,Number(t)||0),o=r(a=>a>=100?String(Math.round(a)):String(Math.round(a*10)/10),"scaled");return s<1e3?String(Math.round(s)):s>=999500?o(s/1e6)+"M":s<1e6?o(s/1e3)+"K":o(s/1e6)+"M"}r(q,"formatTokens");function de(t){return String(t??"").toLowerCase().replace(/\([^)]*\)/g," ").replace(/([^)]*)/g," ").replace(/[^a-z0-9]+/g,"")}r(de,"canonModelIdLocal");function Ne(t,s){if(typeof t!="string"||t.length===0)return null;const o=Array.isArray(s)?s.filter(v=>typeof v=="string"&&v.length>0):[];if(o.length===0)return null;const a=r(v=>String(v).toLowerCase().replace(/[-@]\d{4}-?\d{2}-?\d{2}$/,"").replace(/[-@]v\d+(\.\d+)*$/,""),"strip"),n=o.find(v=>v===t);if(n!==void 0)return n;const l=de(t);if(l.length===0)return null;const i=o.find(v=>de(v)===l);if(i!==void 0)return i;let c=null,u=0;for(const v of o){const P=de(v);if(!(P.length<4||P===l)&&l.includes(P)&&P.length>u){const S=l.indexOf(P);if(/^\d{1,2}$/.test(l.slice(S+P.length)))continue;c=v,u=P.length}}if(c!==null)return c;const w=a(t),d=o.find(v=>a(v)===w);if(d!==void 0)return d;let k=null;for(const v of o){const P=a(v);if(P.length===0||P===w)continue;const S=w.slice(P.length);if(w.startsWith(P)&&/^[-_./:]/.test(S)){if(/^\d{1,2}$/.test(S.replace(/^[-_./:]+/,"")))continue;(k===null||a(k).length<P.length)&&(k=v)}}if(k!==null)return k;const N=r(v=>a(v).split(/[-_./:]+/).filter(Boolean),"tokensOf"),x=N(t);if(x.length<2)return null;let g=null,C=0;for(const v of o){const P=N(v);let S=0;for(;S<x.length&&S<P.length&&x[S]===P[S];)S+=1;S<x.length&&S<P.length&&/^\d+$/.test(x[S])&&/^\d+$/.test(P[S])||S>=2&&S===P.length&&S<x.length&&x.slice(S).every(f=>/^\d{1,2}$/.test(f))||S>=2&&S<x.length&&S<P.length&&(/^\d{1,2}$/.test(x[S])&&/^[a-z]/.test(P[S])||/^\d{1,2}$/.test(P[S])&&/^[a-z]/.test(x[S]))||S>=2&&(S>C||S===C&&g!==null&&v.length<g.length)&&(g=v,C=S)}return g}r(Ne,"matchModelIdLocal");const ga=new Set(["lmstudio","ollama","jan","gpt4all","koboldcpp","llamacpp","llama-cpp","localai","vllm","sglang","tabbyapi","lmdeploy","oobabooga","text-generation-webui","llama-server"]),ba=["lmstudio:","lmstudio/","ollama:","ollama/","jan:","jan/","gpt4all:","gpt4all/","koboldcpp:","koboldcpp/","llamacpp:","llamacpp/","llama-cpp:","llama-cpp/","localai:","localai/","vllm:","vllm/","sglang:","sglang/","tabbyapi:","tabbyapi/","lmdeploy:","oobabooga/","text-generation-webui/","llama-server:","gguf:","local:"];function ha(t,s){if(typeof t=="string"&&ga.has(t))return!0;const o=typeof s=="string"?s.toLowerCase():"";return ba.some(a=>o.startsWith(a))}r(ha,"isLocalOriginClient");function Ge(t,s,o){const a=o?.prices??{},n=o?.priceMatch==="exact"?"exact":"auto",l=o?.priceOverrides&&typeof o.priceOverrides=="object"?o.priceOverrides:{};let i=String(t??"").trim().toLowerCase();i.startsWith("llm-")&&(i=i.slice(4)),i===""&&(i="deepseek");let c=i,u=s;const w=l[i+":"+s];if(w==="__local__")return{entry:null,priced:!1,billingMode:"flat",matched:!0};if(typeof w=="string"&&w.length>0){const N=w.indexOf(":");if(N>0&&w.slice(N+1).length>0?(c=w.slice(0,N).trim().toLowerCase(),u=w.slice(N+1)):u=w,c==="deepseek"&&u==="__default__")return{entry:a.default??{cacheHit:0,cacheMiss:0,output:0},priced:!0,billingMode:"deepseek-peak",matched:!1}}if(ha(c,u))return{entry:null,priced:!1,billingMode:"flat",matched:!1};if(c==="deepseek"||c.includes("deepseek")){const N=a.models??{},x=N[u]!==void 0?u:n==="auto"?Ne(u,Object.keys(N)):null;if(x!==null)return{entry:N[x],priced:!0,billingMode:"deepseek-peak",matched:!0};if(n==="auto"){let g=null,C=-1,v="flat";for(const[P,S]of Object.entries(a.providers??{})){const f=S?.models??{},y=Ne(u,Object.keys(f));if(y===null||f[y]?.unpriced===!0)continue;const p=(y===u||de(y)===de(u)?1e3:0)+de(y).length;p>C&&(g=f[y],C=p,v=f[y]?.billingMode==="deepseek-peak"?"deepseek-peak":"flat")}if(g!==null)return{entry:g,priced:!0,billingMode:v,matched:!0}}return{entry:a.default??{cacheHit:0,cacheMiss:0,output:0},priced:!0,billingMode:"deepseek-peak",matched:!1}}const d=a.providers?.[c]?.models??{},k=d[u]!==void 0?u:n==="auto"?Ne(u,Object.keys(d)):null;if(k!==null)return{entry:d[k],priced:d[k]?.unpriced!==!0,billingMode:"flat",matched:!0};if(n==="auto"){const N=a.models??{},x=Ne(u,Object.keys(N));if(x!==null)return{entry:N[x],priced:!0,billingMode:"deepseek-peak",matched:!0};let g=null,C=-1,v="flat";for(const[P,S]of Object.entries(a.providers??{})){if(P===c)continue;const f=S?.models??{},y=Ne(u,Object.keys(f));if(y===null||f[y]?.unpriced===!0)continue;const p=(y===u||de(y)===de(u)?1e3:0)+de(y).length;p>C&&(g=f[y],C=p,v=f[y]?.billingMode==="deepseek-peak"?"deepseek-peak":"flat")}if(g!==null)return{entry:g,priced:!0,billingMode:v,matched:!0}}if(i!=="deepseek"&&!i.includes("deepseek")&&typeof w=="string"&&w.length>0&&!w.includes(":")){const N=a.models??{},x=N[w]!==void 0?w:n==="auto"?Ne(w,Object.keys(N)):null;if(x!==null)return{entry:N[x],priced:!0,billingMode:"deepseek-peak",matched:!0}}return{entry:null,priced:!1,billingMode:"flat",matched:!1}}r(Ge,"resolveClientPrice");function vt(t,s){return!t||!s?0:typeof t.cost=="number"&&Number.isFinite(t.cost)?t.cost:Ke(t,s).total}r(vt,"usageCost");function ya(t){if(t===null||typeof t!="object")return 0;const s=Number(t.cost)||0,o=t.apiCost===void 0||t.apiCost===null?s:Number(t.apiCost);return Number.isFinite(o)&&o>=0?Math.min(o,s):s}r(ya,"moneyCostOf");function _(t,s){return s!==null&&typeof s=="object"&&s.showTotalWithPlan===!0?Number(t?.cost)||0:ya(t)}r(_,"displayCostOf");const ka={go:["go","zen","opencode","opencode-go"]},Nt=["anthropic","zai","minimax","kimi","openrouter","siliconflow","commandcode","scnet","volcengine","qwen","go"];function wa(t){const s=String(t??"").trim().toLowerCase();if(s.length===0)return null;for(const[o,a]of Object.entries(ka))if(a.includes(s))return o;return Nt.includes(s)?s:null}r(wa,"planProviderIdOfLocal");function xa(t){const s=new Set,o=t?.codingPlans;if(o!==null&&typeof o=="object")for(const a of Nt)a!=="go"&&o[a]?.enabled===!0&&s.add(a);return t?.goQuota?.enabled===!0&&s.add("go"),s}r(xa,"enabledPlanSetOfLocal");function va(t,s,o){const a=String(t??"").trim().toLowerCase();if(a.length>0&&a!=="deepseek"&&!a.includes("deepseek"))return!1;const n=de(s);if(n.length===0)return!1;const l=o?.prices,i=l?.models??{};for(const c of Object.keys(i))if(de(c)===n)return!1;for(const c of Object.values(l?.providers??{}))for(const u of Object.keys(c?.models??{}))if(de(u)===n)return!0;return!1}r(va,"isRoutedThirdPartyCallLocal");function _e(t,s,o){let a=wa(t);if(a===null&&va(t,s,o)&&(a="go"),a===null)return"api";const n=o?.planBilling?.models;if(n!==null&&typeof n=="object"){const i=n[t+":"+s];if(i==="plan"||i==="api")return i;const c=n[a+":"+s];if(c==="plan"||c==="api")return c}const l=o?.planBilling?.providers?.[a];return l==="plan"||l==="api"?l:xa(o).has(a)?"plan":"api"}r(_e,"billingClassOfLocal");function Ke(t,s){if(!t||!s)return{total:0,api:0};const o={enabled:s.peakEnabled===!0,effectiveAtMs:Date.parse(s.peakEffectiveAt||""),windows:s.peakWindows},a=Date.now(),n=t.byProviderModel??t.byModel??{};let l=0,i=0;for(const k of Object.keys(n)){const N=k.indexOf(":"),x=N>0?k.slice(0,N):"deepseek",g=N>0?k.slice(N+1):k,C=Ge(x,g,s);if(C.priced){const v=wt(n[k],kt(pa(C.entry),a,{...o,enabled:C.billingMode==="deepseek-peak"&&o.enabled})),P=xt(v,C.billingMode==="deepseek-peak"&&s.prices?.currency==="CNY"?"CNY":"USD",s.exchangeRate);l+=P,_e(x,g,s)==="api"&&(i+=P)}}const c={input:0,output:0,cacheRead:0,cacheWrite:0,reasoning:0};for(const k of Object.keys(n))c.input+=n[k].input??0,c.output+=n[k].output??0,c.cacheRead+=n[k].cacheRead??0,c.cacheWrite+=n[k].cacheWrite??0,c.reasoning+=n[k].reasoning??0;const u={input:Math.max(0,(t.input??0)-c.input),output:Math.max(0,(t.output??0)-c.output),cacheRead:Math.max(0,(t.cacheRead??0)-c.cacheRead),cacheWrite:Math.max(0,(t.cacheWrite??0)-c.cacheWrite),reasoning:Math.max(0,(t.reasoning??0)-c.reasoning)},w=wt(u,kt(ma("default",s.prices),a,o)),d=xt(w,s.prices?.currency==="CNY"?"CNY":"USD",s.exchangeRate);return l+=d,i+=d,{total:l,api:i}}r(Ke,"usageSplit");function St(t,s){if(!t||!s)return!1;const o=t.byProviderModel??{};for(const a of Object.keys(o)){const n=a.indexOf(":"),l=n>0?a.slice(0,n):"deepseek",i=n>0?a.slice(n+1):a;if(_e(l,i,s)==="plan")return!0}return!1}r(St,"usageHasPlanClass");function Ct(t){return(t?.input??0)+(t?.cacheRead??0)+(t?.cacheWrite??0)}r(Ct,"billedInput");function Ye(t){const s=Math.abs(Math.round(Number(t)||0)),o=Math.floor(s/60),a=s%60;return"UTC"+(Number(t)<0?"-":"+")+o+(a>0?":"+String(a).padStart(2,"0"):"")}r(Ye,"formatTzOffset");function Na(t){const s=t?.meta,o=Number(s?.timezoneOffsetMinutes);if(!Number.isFinite(o))return null;const a=-new Date().getTimezoneOffset();if(a===o)return null;const n=typeof s?.timezone=="string"&&s.timezone.length>0?s.timezone:"";return{hostLabel:n?n+" ("+Ye(o)+")":Ye(o),browserLabel:Ye(a)}}r(Na,"timezoneMismatchOf");function Sa(t){let s=t;const o=new Set;return{getSnapshot:r(()=>s,"getSnapshot"),subscribe:r(a=>(o.add(a),()=>{o.delete(a)}),"subscribe"),set:r(a=>{if(a!==s){s=a;for(const n of[...o])n()}},"set")}}r(Sa,"makeStore");const{createElement:e,Fragment:F,useState:E,useEffect:le,useRef:Se}=Ae;function je({target:t,configured:s,source:o,t:a,api:n,placeholder:l,disabled:i}){const[c,u]=E(""),[w,d]=E(!1),[k,N]=E(null),x=i===!0||w,g=r(async()=>{const v=c.trim();if(!(v.length===0||x)){d(!0),N(null);try{const P=await n.setCredential(t,v);u(""),N({kind:"ok",text:P?.message??a("credentialSave")})}catch(P){N({kind:"err",text:String(P?.message??P)})}finally{d(!1)}}},"save"),C=r(async()=>{if(!x){d(!0),N(null);try{const v=await n.clearCredential(t);u(""),N({kind:"ok",text:v?.message??a("credentialClear")})}catch(v){N({kind:"err",text:String(v?.message??v)})}finally{d(!1)}}},"clear");return e("div",{className:"cm-field"},e("input",{className:"cm-input",type:"password",value:c,placeholder:typeof l=="string"?l:"",disabled:x,autoComplete:"off",onChange:r(v=>u(v.target.value),"onChange")}),e("div",{className:"cm-buttons"},e("button",{className:"cm-btn small",onClick:g,disabled:x||c.trim().length===0},a(w?"credentialSaving":"credentialSave")),s===!0?e("button",{className:"cm-btn small",onClick:C,disabled:x},a("credentialClear")):null),e("span",{className:"cm-hint"},s===!0?a("credentialConfiguredOf",{source:typeof o=="string"&&o.length>0?o:"unknown"}):a("credentialNotConfigured")),e("span",{className:"cm-hint"},a("credentialInputHint")),k!=null?e("div",{className:"cm-msg "+k.kind},k.text):null)}r(je,"CredentialField");function Ca({pending:t,t:s}){return!Array.isArray(t)||t.length===0?null:e("div",{className:"cm-msg err"},e("div",null,s("secretMigrationPending")),e("div",null,t.join("\u3001")))}r(Ca,"SecretMigrationNotice");function Ve({size:t=16,className:s}){return e("svg",{width:t,height:t,className:s,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e("path",{d:"M4 4H12A2 2 0 0 1 14 6V11.5A2 2 0 0 1 12 13.5H4A2 2 0 0 1 2 11.5V6A2 2 0 0 1 4 4ZM4 5.3H12A0.7 0.7 0 0 1 12.7 6V11.5A0.7 0.7 0 0 1 12 12.2H4A0.7 0.7 0 0 1 3.3 11.5V6A0.7 0.7 0 0 1 4 5.3Z",fill:"currentColor",fillRule:"evenodd"}),e("path",{d:"M3.3 5.3H12.7V7.1H3.3Z",fill:"currentColor"}),e("path",{d:"M8 2.8A1.3 1.3 0 1 0 8 5.4A1.3 1.3 0 1 0 8 2.8Z",fill:"currentColor"}))}r(Ve,"WalletIcon");function Je(t,s){const o=Se(!1),a=Se(""),n=s!==null&&typeof s=="object"?[s.input,s.cacheRead,s.cacheWrite,s.output,s.reasoning,s.cost].map(l=>String(l??0)).join("|"):"";le(()=>{if(!o.current){o.current=!0,a.current=n;return}if(n===""||n===a.current)return;a.current=n;const l=setTimeout(()=>{t.api?.reload?.()},800);return()=>clearTimeout(l)},[n])}r(Je,"useProjectionRefresh");function Pa(t){const s=t.useProjection?t.useProjection("costUsage"):void 0,o=t.useCost?t.useCost(w=>w):void 0;Je(t,s);const a=o?.state?.config;if(!s||!a||Ct(s)+(s?.output??0)===0)return null;const n=$(z(a.locale));let l=0,i=vt(s,a);if(a.showTotalWithPlan!==!0&&St(s,a)){const w=Ke(s,a);l=Math.max(0,w.total-w.api),l>0&&(i=w.api)}const c=Ct(s),u=[n("sessionCostTitle"),n("sessionDetailTokens",{input:q(s?.input??0),cache:q((s?.cacheRead??0)+(s?.cacheWrite??0)),output:q(s?.output??0)}),n("sessionDetailCache",{read:q(s?.cacheRead??0),write:q(s?.cacheWrite??0)}),n("cost",{amount:Z(i,a)}),...l>0?[n("sessionDetailPlan",{amount:Z(l,a)})]:[]].join("; ");return e(te,{label:u,side:"top",delayMs:500},e("div",{className:"cm-chip"},l>0?n("costChipPlan",{amount:Z(i,a)}):n("cost",{amount:Z(i,a)})))}r(Pa,"SessionCost");function Aa(t){const s=t.useProjection?t.useProjection("costUsage"):void 0,o=t.useCost?t.useCost(d=>d):void 0;Je(t,s);const a=o?.state?.config;if(!s||!a)return null;const n=s.input??0,l=(s.cacheRead??0)+(s.cacheWrite??0),i=s.output??0;if(n+l+i===0)return null;const c=$(z(a.locale));let u=0,w=vt(s,a);if(a.showTotalWithPlan!==!0&&St(s,a)){const d=Ke(s,a);u=Math.max(0,d.total-d.api),u>0&&(w=d.api)}return e("div",{className:"cm-root"},u>0?c("sessionLineSplit",{amount:Z(w,a),planAmount:Z(u,a),input:q(n),cache:q(l),output:q(i)}):c("sessionLine",{amount:Z(w,a),input:q(n),cache:q(l),output:q(i)}))}r(Aa,"DockLine");const Ma={USD:"$",CNY:"\xA5",EUR:"\u20AC"};function be(t,s,o){const a=typeof o=="string"?o.toUpperCase():"",n=typeof s?.symbol=="string"&&s.symbol.length>0?s.symbol:"$";return ce(t,{symbol:Ma[a]??n,decimals:Math.max(2,Math.min(10,Math.floor(Number(s?.decimals)||2)))})}r(be,"formatBalanceMoney");function Pt(t,s){const o=Number(t?.balance?.budgetCap);if(Number.isFinite(o)&&o>0)return o;const a=Number(s?.maxBudget);return Number.isFinite(a)&&a>0?a:null}r(Pt,"resolveBalanceCap");function Ta(t){const s=t.today,o=s?.byProviderModel;if(o===null||typeof o!="object"||Object.keys(o).length===0)return Number(s?.cost)||0;let a=0;for(const[n,l]of Object.entries(o)){const i=n.indexOf(":");let c=i>=0?n.slice(0,i):n;c.startsWith("llm-")&&(c=c.slice(4)),!(c!=="deepseek"&&c!=="deepseek-official")&&(a+=Number(l?.cost)||0)}return a}r(Ta,"todayOfficialUsd");function At(t,s,o,a){const n=o==="official"?Ta(t):Number(t.today?.cost)||0;if(o==="custom"){if(Lt(s,a)==="USD")return n;const c=Number(s?.exchangeRate);return n*(Number.isFinite(c)&&c>0?c:1)}const l=Number(s?.exchangeRate);return n*(Number.isFinite(l)&&l>0?l:1)}r(At,"todayUsedInBalanceCurrency");function Mt({remaining:t,spend:s,todayUsed:o,cap:a}){if(a===null||a<=0)return{remainingPct:100,todayPct:0,spentPct:0,hasCap:!1,pastSpend:0,today:0};const n=Math.max(0,Number(t)||0),l=Math.max(0,Number(s)||0),i=Math.max(0,Math.min(l,Number(o)||0)),c=Math.max(0,l-i),u=Math.max(0,Math.min(100,n/a*100)),w=Math.max(0,Math.min(100-u,i/a*100)),d=Math.max(0,Math.min(100-u-w,c/a*100));return{remainingPct:u,todayPct:w,spentPct:d,hasCap:!0,pastSpend:c,today:i}}r(Mt,"computeBalanceSegments");function $e(t,s){const o=t.customBalance,a=Pt(s,o),n=Number(o?.remaining)||0,l=Number(o?.spend)||0,i=At(t,s,"custom",o);return{cap:a,...Mt({remaining:n,spend:l,todayUsed:i,cap:a})}}r($e,"segmentsForCustomBalance");function Ba(t,s){const o=t.balance,a=Pt(s,null),n=Number(o?.totalBalance)||0,l=At(t,s,"official",null),i=a!==null?Math.max(0,a-n):0;return{cap:a,...Mt({remaining:n,spend:i,todayUsed:l,cap:a})}}r(Ba,"segmentsForOfficialBalance");function Ze(t){const{segments:s,direction:o="remaining"}=t,{remainingPct:a,todayPct:n,spentPct:l}=s,i=[];a>0&&i.push(e("div",{className:"cm-bbox-fill",style:{width:a+"%"}})),n>0&&i.push(e("div",{className:"cm-bbox-seg-today",style:{width:n+"%"}})),l>0&&i.push(e("div",{className:"cm-bbox-seg-spent",style:{width:l+"%"}})),i.length===0&&i.push(e("div",{className:"cm-bbox-fill",style:{width:"100%"}}));const c=o==="used"?[...i].reverse():i;return e("div",{className:"cm-bbox-bar segments"+(o==="used"?" rev":"")},...c)}r(Ze,"BalanceBar");function Tt(t,s,o,a,n){const l=[t("balanceBarRemaining",{amount:a})];return o.today>0&&l.push(t("balanceBarToday",{amount:s(o.today)})),o.pastSpend>0&&l.push(t("balanceBarSpent",{amount:s(o.pastSpend)})),n!==null&&n>0&&l.push(t("balanceBudgetCapLabel")+": "+s(n)),l.join(" \xB7 ")}r(Tt,"balanceBarTooltipLines");function xe(t){const[s,o]=E(!1),[a,n]=E(null);return{busy:s,err:a,run:r(()=>{s||typeof t!="function"||(o(!0),n(null),Promise.resolve().then(t).catch(i=>{n(i?.message??String(i))}).finally(()=>{o(!1)}))},"run")}}r(xe,"useClickRefresh");const pe=r((t,s)=>({role:"button",tabIndex:0,"aria-busy":t?"true":"false",onClick:s,onKeyDown:r(o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),s())},"onKeyDown")}),"clickableRefreshProps");function he(t,s){const o=[t("clickToRefresh")];return s.busy&&o.push(t("refreshing")),s.err&&o.push("\u26A0 "+t("balanceRefreshFailed",{message:s.err})),o}r(he,"clickRefreshTipLines");const La="https://platform.deepseek.com/usage";function Bt(t){return e("a",{className:"cm-bal-link",href:La,target:"_blank",rel:"noreferrer noopener",title:t("balanceRechargeLink"),"aria-label":t("balanceRechargeLink"),onClick:r(s=>s.stopPropagation(),"onClick"),onKeyDown:r(s=>s.stopPropagation(),"onKeyDown")},"\u2197")}r(Bt,"rechargeLinkEl");function Oa(t){const{state:s,wide:o,api:a}=t,n=s.balance,l=$(z(s.config?.locale)),i=xe(a?()=>a.refreshBalance():null);if(!n||n.status==="off")return null;if(n.status==="error")return e(te,{label:[l("balanceQueryFailed",{message:n.message||l("unknownError")}),...he(l,i)].join("; "),side:"right",delayMs:300},e("div",{className:"cm-foot clickable"+(o?"":" cm-foot-rail")+" cm-bal-err"+(i.busy?" busy":""),...pe(i.busy,i.run)},o?e(F,null,l("balance")," ",e("span",{className:"cm-num"},l("queryFailed"))):"\u26A0"));const c=[l("balanceTitle"),l("totalBalance",{amount:be(n.totalBalance,s.config,n.currency)}),l("grantedToppedUp",{granted:be(n.grantedBalance,s.config,n.currency),toppedUp:be(n.toppedUpBalance,s.config,n.currency)}),l("updatedAt",{time:n.fetchedAt>0?new Date(n.fetchedAt).toLocaleTimeString():"\u2014"}),...s.reconcile?.ok===!1?["\u26A0 "+s.reconcile.message]:[],...he(l,i)].join("; ");return e(te,{label:c,side:"right",delayMs:300},e("div",{className:"cm-foot clickable"+(o?"":" cm-foot-rail")+(i.busy?" busy":""),...pe(i.busy,i.run)},o?e(F,null,l("balance")," ",e("span",{className:"cm-num"},be(n.totalBalance,s.config,n.currency))," ",Bt(l),s.reconcile?.ok===!1?" \u26A0":""):e(Ve,{size:16})))}r(Oa,"BalanceRowContent");function Da(t){const{state:s,wide:o,api:a}=t,n=s.config,l=s.balance,i=$(z(n?.locale)),c=xe(a?()=>a.refreshBalance():null);if(!l||l.status!=="ok")return null;const u=Ba(s,n),w=be(l.totalBalance,n,l.currency),d=r(x=>be(x,n,l.currency),"formatAmt"),k=[i("balanceTitle"),Tt(i,d,u,w,u.cap),i("grantedToppedUp",{granted:be(l.grantedBalance,n,l.currency),toppedUp:be(l.toppedUpBalance,n,l.currency)}),i("updatedAt",{time:l.fetchedAt>0?new Date(l.fetchedAt).toLocaleTimeString():"\u2014"}),...s.reconcile?.ok===!1?["\u26A0 "+s.reconcile.message]:[],...he(i,c)].join("; "),N=e(F,null,e("div",{className:"cm-bbox-head"},e("span",{className:"cm-bbox-label"},i("balance")),e("span",{className:"cm-bbox-pct cm-num cm-bal-amt"},w),Bt(i)),e(Ze,{segments:u,direction:oe(n,"balance")}));return e(te,{label:k,side:"right",delayMs:300},e("div",{className:"cm-bbox clickable"+(o?"":" rail")+(c.busy?" busy":""),...pe(c.busy,c.run)},o?N:e("div",{className:"cm-bbox-rail cm-num"},Math.round(u.remainingPct)+"%")))}r(Da,"BalanceBox");function Xe(t,s){const o=typeof t?.label=="string"?t.label:"",a=typeof t?.labelEn=="string"?t.labelEn:"";return s==="en"?a||o||"Custom balance":o||a||"\u81EA\u5B9A\u4E49\u4F59\u989D"}r(Xe,"resolveCustomBalanceLabel");function Lt(t,s){const o=t?.customBalance?.unit;return o==="CNY"||o==="EUR"||o==="USD"?o:s?.unit==="CNY"||s?.unit==="EUR"?s.unit:"USD"}r(Lt,"customBalanceUnitOf");function ke(t,s,o){const a=Lt(s,o),n=Math.max(2,Math.min(6,Math.floor(Number(s?.decimals)||4))),l=a==="CNY"?"\xA5":a==="EUR"?"\u20AC":"$",i=Number(t);if(!Number.isFinite(i))return"\u2014";let c=i.toFixed(n);return c.includes(".")&&(c=c.replace(/0+$/,"").replace(/\.$/,"")),l+c}r(ke,"formatCustomBalanceMoney");function et(t,s,o,a){const n=ke(t.remaining,s,t),l=r(k=>ke(k,s,t),"formatAmt");if(a&&s.balance?.showProgressBar===!0){const k=$e(a,s);return[Tt(o,l,k,n,k.cap),o("updatedAt",{time:t.fetchedAt>0?new Date(t.fetchedAt).toLocaleTimeString():"\u2014"})].join(" \xB7 ")}const i=t.spend!==null?ke(t.spend,s,t):"\u2014",c=t.maxBudget!==null?ke(t.maxBudget,s,t):"\u2014",u=Number(s?.balance?.budgetCap),w=Number.isFinite(u)&&u>0?o("balanceBudgetCapLabel")+": "+ke(u,s,t):"",d=t.maxBudget!==null&&t.spend!==null?o("customBalanceLine",{remaining:n,spend:i,maxBudget:c,time:t.fetchedAt>0?new Date(t.fetchedAt).toLocaleTimeString():"\u2014"}):o("customBalanceRemaining",{amount:n});return w?d+" \xB7 "+w:d}r(et,"customBalanceDetailText");function Ra(t,s,o){const a=t.customBalance,n=s.customBalance??{},l=Xe(n,z(s?.locale)),i=ke(a.remaining,s,a),c=$e(t,s);return{level:"ok",rail:Math.round(c.remainingPct)+"%",body:e(F,null,e("div",{className:"cm-bbox-head"},e("span",{className:"cm-bbox-label"},l),e("span",{className:"cm-bbox-pct cm-num cm-bal-amt"},i)),e(Ze,{segments:c,direction:oe(s,"balance")}))}}r(Ra,"customBalanceBoxBody");function Ea(t){const{state:s,wide:o,api:a}=t,n=s.customBalance,l=s.config,i=$(z(l?.locale)),c=xe(a?()=>a.refreshCustomBalance():null);if(!n||n.status!=="ok")return null;const u=Ra(s,l,i),w=[et(n,l,i,s),...he(i,c)].join(" \xB7 ");return e(te,{label:w,side:"right",delayMs:300},e("div",{className:"cm-bbox clickable"+(u.level==="ok"?"":" "+u.level)+(o?"":" rail")+(c.busy?" busy":""),...pe(c.busy,c.run)},o?u.body:e("div",{className:"cm-bbox-rail cm-num"},u.rail)))}r(Ea,"CustomBalanceBox");function ja(t){const{state:s,wide:o,api:a}=t,n=s.customBalance,l=s.config,i=$(z(l?.locale)),c=xe(a?()=>a.refreshCustomBalance():null);if(!n||n.status==="off")return null;const u=Xe(l.customBalance??{},z(l?.locale));if(n.status==="error")return e(te,{label:[n.message||i("unknownError"),...he(i,c)].join("; "),side:"right",delayMs:300},e("div",{className:"cm-foot clickable"+(o?"":" cm-foot-rail")+" cm-bal-err"+(c.busy?" busy":""),...pe(c.busy,c.run)},o?e(F,null,u," ",e("span",{className:"cm-num"},i("queryFailed"))):"\u26A0"));const w=ke(n.remaining,l,n),d=[et(n,l,i,s),...he(i,c)].join(" \xB7 ");return e(te,{label:d,side:"right",delayMs:300},e("div",{className:"cm-foot clickable"+(o?"":" cm-foot-rail")+(c.busy?" busy":""),...pe(c.busy,c.run)},o?e(F,null,u," ",e("span",{className:"cm-num"},w)):e(Ve,{size:16})))}r(ja,"CustomBalanceRowContent");function qa(t){const o=(t.useCost?t.useCost(g=>g):void 0)?.state;if(!o)return null;const a=o.config,n=$(z(a?.locale)),l=a.corner??{enabled:!1,goRolling:!0,goWeekly:!0,goMonthly:!0,budget:!0},i=o.goQuota,c=a?.goQuota?.enabled!==!1&&i?.status==="ok",u=r(g=>g!==null&&typeof g?.percent=="number"?Math.round(Math.max(0,Math.min(100,g.percent))):null,"pctOf"),w=[],d=r((g,C,v,P)=>{if(!g||!c)return;const S=u(C);if(S===null)return;const f=typeof C.resetsAt=="string"&&C.resetsAt.length>0?n("goResetAt",{time:new Date(C.resetsAt).toLocaleString()}):"";w.push({key:v,text:n(v)+" "+S+"%",tip:n(P)+": "+S+"%"+(f?" \xB7 "+f:""),level:S>=100?"over":S>=80?"warn":"ok"})},"pushGo"),k=a?.goQuota?.main==="weekly"||a?.goQuota?.main==="monthly"?a.goQuota.main:"rolling",N=[k,...["rolling","weekly","monthly"].filter(g=>g!==k)],x=r(g=>g==="rolling"?["goRolling",i?.rolling,"goShortRolling","cornerGoRolling"]:g==="weekly"?["goWeekly",i?.weekly,"goShortWeekly","cornerGoWeekly"]:["goMonthly",i?.monthly,"goShortMonthly","cornerGoMonthly"],"defOf");for(const g of N){const[C,v,P,S]=x(g);d(l[C]===!0,v,P,S)}if(l.budget===!0){const g=a.budget??{enabled:!1,amount:100,period:"month"};if(g.enabled===!0){const C=Number(a.exchangeRate),P=(o.budgetUsed??(g.period==="day"?_(o.today,a):g.period==="all"?_(o.total,a):_(o.month,a)))*(Number.isFinite(C)&&C>0?C:1),S=Math.max(0,Number(g.amount)||0),f=S>0?Math.min(999,P/S*100):null;if(f!==null){const y=f>=100?"over":f>=80?"warn":"ok";w.push({key:"budget",text:n("budgetShort")+" "+f.toFixed(1)+"%",tip:n("budgetOf",{period:n(Oe[g.period]??"periodMonth")})+" \xB7 "+n("usedOf",{used:ce(P,a),amount:ce(S,a)}),level:y})}}}return w.length===0?null:e("div",{className:"cm-corner"},w.map(g=>e(te,{key:g.key,label:g.tip,side:"top",delayMs:500},e("span",{className:"cm-corner-chip"+(g.level==="ok"?"":" "+g.level)},g.text))))}r(qa,"CornerChips");function qe(t,s){if(!Array.isArray(s)||s.length===0||!Number.isFinite(t))return null;const o=r((u,w)=>{const d=new Date(t);return d.setUTCDate(d.getUTCDate()+u),d.setUTCHours(w,0,0,0),d.getTime()},"hourAt"),a=[];for(let u=-4;u<=4;u+=1)for(const w of s){const d=Number(w?.start),k=Number(w?.end);if(!Number.isFinite(d)||!Number.isFinite(k))continue;const N={at:o(u,d),intoPeak:!0},x={at:o(k<=d?u+1:u,k),intoPeak:!1};Ee(N.at)===null&&a.push(N),Ee(x.at)===null&&a.push(x)}let n=null,l=null;for(const u of a)u.at<=t&&(n===null||u.at>n.at)&&(n=u),u.at>t&&(l===null||u.at<l.at)&&(l=u);const i=Ee(t);return i!==null?l===null?null:{inPeak:!1,weekend:!0,prevAtMs:i.start,nextAtMs:l.at,nextIntoPeak:l.intoPeak}:n===null||l===null?null:{inPeak:yt(t,void 0,s),weekend:!1,prevAtMs:n.at,nextAtMs:l.at,nextIntoPeak:l.intoPeak}}r(qe,"peakPhaseAt");function Fe(t,s){if(!t||t.peakNotice===!1||t.peakEnabled!==!0)return null;const o=Date.parse(t.peakEffectiveAt||"");if(Number.isFinite(o)&&s<o)return null;const a=Array.isArray(t.peakWindows)?t.peakWindows:[];return qe(s,a)}r(Fe,"peakView");function Ue(t){return t.weekend===!0?{short:"weekendShort",chip:"weekendChip",notice:"weekendAllOffPeak"}:t.inPeak?{short:"peakShort",chip:"peakShort",notice:"peakNotice"}:{short:"offPeakShort",chip:"offPeakShort",notice:"offPeakActive"}}r(Ue,"phaseLabelKeys");function fe(t,s,o){const a=Math.max(0,t.nextAtMs-s),n=Math.max(1,Math.ceil(a/6e4)),l=Math.floor(n/60),i=n%60;return l>0?i>0?o("countdownHourMinute",{h:l,m:i}):o("countdownHoursOnly",{h:l}):o("countdownMinute",{m:n})}r(fe,"countdownText");const tt="cm-peak-alert-preview";let Ot=0;function Fa(t){const s=t.useCost?t.useCost(C=>C):void 0,o=s?.state?.config,[a,n]=E(Date.now()),[l,i]=E(null),[c,u]=E(null);if(le(()=>{const C=window.setInterval(()=>n(Date.now()),1e4);return()=>window.clearInterval(C)},[]),le(()=>{const C=r(v=>{const P=v.detail?.kind==="offpeak"?"offpeak":"peak";u(P);const S=s?.state?.config;if(S?.peakAlertWebNotify===!0&&window.Notification&&Notification.permission==="granted"){const f=$(z(S.locale));try{new Notification(f(P==="peak"?"peakAlertTitlePeak":"peakAlertTitleOffPeak")+f("peakAlertPreviewTag"),{body:f("peakAlertBody",{time:f("countdownMinute",{m:2}),phase:f(P==="peak"?"peakAlertPhasePeak":"peakAlertPhaseOffPeak")})})}catch{}}},"onPreview");return window.addEventListener(tt,C),window.__cmPeakAlertLive=!0,()=>{window.removeEventListener(tt,C),window.__cmPeakAlertLive=!1}},[]),le(()=>{if(!o||o.peakAlertEnabled!==!0||o.peakEnabled!==!0||o.peakAlertWebNotify!==!0||!window.Notification||Notification.permission!=="granted")return;const C=qe(a,Array.isArray(o.peakWindows)?o.peakWindows:[]);if(C===null)return;const v=o.peakAlertTarget==="peak"||o.peakAlertTarget==="offpeak"?o.peakAlertTarget:"both",P=C.nextIntoPeak===!0;if(v!=="both"&&v!==(P?"peak":"offpeak"))return;const S=Number(o.peakAlertAhead),f=(Number.isFinite(S)&&S>=1?S:2)*6e4;if(a<C.nextAtMs-f||a>=C.nextAtMs||Ot===C.nextAtMs)return;const y=$(z(o.locale));Ot=C.nextAtMs;try{new Notification(y(P?"peakAlertTitlePeak":"peakAlertTitleOffPeak"),{body:y("peakAlertBody",{time:fe(C,a,y),phase:y(P?"peakAlertPhasePeak":"peakAlertPhaseOffPeak")})})}catch{}},[a]),!o||o.peakEnabled!==!0)return null;let w=null;if(o.peakAlertEnabled===!0){const C=Date.parse(o.peakEffectiveAt||"");if(!(Number.isFinite(C)&&a<C)){const v=qe(a,Array.isArray(o.peakWindows)?o.peakWindows:[]);if(v!==null){const P=o.peakAlertTarget==="peak"||o.peakAlertTarget==="offpeak"?o.peakAlertTarget:"both",S=Number(o.peakAlertAhead),f=(Number.isFinite(S)&&S>=1?S:2)*6e4;(P==="both"||P===(v.nextIntoPeak?"peak":"offpeak"))&&a>=v.nextAtMs-f&&a<v.nextAtMs&&l!==v.nextAtMs&&(w=v)}}}let d=null,k=!1,N=null;if(w!==null)d=w,k=w.nextIntoPeak===!0,N=r(()=>i(w.nextAtMs),"dismiss");else if(c!==null)d={nextAtMs:a+2*6e4,nextIntoPeak:c==="peak"},k=c==="peak",N=r(()=>u(null),"dismiss");else return null;const x=$(z(o.locale)),g=o.peakAlertPosition==="center"?"cm-peak-alert-center":"cm-peak-alert-corner";return e("div",{className:"cm-peak-alert "+g+" "+(k?"cm-peak-alert-peak":"cm-peak-alert-offpeak"),role:"alert"},e("div",{className:"cm-peak-alert-badge"},x(k?"peakAlertBadgePeak":"peakAlertBadgeOffPeak")),e("div",{className:"cm-peak-alert-title"},x(k?"peakAlertTitlePeak":"peakAlertTitleOffPeak")),e("div",{className:"cm-peak-alert-body"},x("peakAlertBody",{time:fe(d,a,x),phase:x(k?"peakAlertPhasePeak":"peakAlertPhaseOffPeak")})),e("div",{className:"cm-peak-alert-actions"},e("button",{className:"cm-btn",onClick:N},x("peakAlertBtn"))))}r(Fa,"PeakAlert");function Ua(t){const{config:s,t:o}=t,[a,n]=E(Date.now());le(()=>{const u=window.setInterval(()=>n(Date.now()),3e4);return()=>window.clearInterval(u)},[]);const l=Fe(s,a);if(l===null)return null;const i=Ue(l),c=l.nextIntoPeak?o("nextPeakIn",{time:fe(l,a,o)}):o("nextOffPeakIn",{time:fe(l,a,o)});return e(te,{label:o(i.notice),side:"right",delayMs:300},e("div",{className:"cm-peak-strip "+(l.weekend?"weekend":l.inPeak?"peak":"off")},e("div",{className:"cm-peak-track"},e("div",{className:"cm-peak-segment cm-peak-high"}),e("div",{className:"cm-peak-segment cm-peak-low"}),e("div",{className:"cm-peak-marker",style:{left:l.weekend?"50%":l.inPeak?"25%":"75%"}})),e("span",{className:"cm-peak-chip"},o(i.chip)+" \xB7 "+c)))}r(Ua,"PeakStrip");function Ia(t){const{config:s,t:o}=t,[a,n]=E(Date.now());le(()=>{const u=window.setInterval(()=>n(Date.now()),3e4);return()=>window.clearInterval(u)},[]);const l=Fe(s,a);if(l===null)return null;const i=Ue(l),c=l.nextIntoPeak?o("nextPeakIn",{time:fe(l,a,o)}):o("nextOffPeakIn",{time:fe(l,a,o)});return e(te,{label:o(i.notice),side:"right",delayMs:300},e("div",{className:"cm-peak-classic "+(l.weekend?"weekend":l.inPeak?"peak":"off")},e("div",{className:"cm-peak-classic-marker",style:{left:l.weekend?"50%":l.inPeak?"25%":"75%"}}),e("div",{className:"cm-peak-track"},e("div",{className:"cm-peak-segment cm-peak-high"}),e("div",{className:"cm-peak-segment cm-peak-low"})),e("span",{className:"cm-peak-classic-chip"},o(i.chip)+" \xB7 "+c)))}r(Ia,"PeakStripClassic");function at(t,s,o){return e(s?.peakStyle==="classic"?Ia:Ua,{config:s,t:o})}r(at,"peakNoticeEl");function Qa(t){const{config:s,t:o}=t,[a,n]=E(Date.now());le(()=>{const w=window.setInterval(()=>n(Date.now()),3e4);return()=>window.clearInterval(w)},[]);const l=Fe(s,a);if(l===null)return null;const i=Ue(l),c=l.nextIntoPeak?o("nextPeakIn",{time:fe(l,a,o)}):o("nextOffPeakIn",{time:fe(l,a,o)}),u=[o(i.notice),c];return e(te,{label:u,side:"right",delayMs:300},e("div",{className:"cm-peak-rail "+(l.weekend?"weekend":l.inPeak?"peak":"off"),"aria-label":u.join("; ")},e("div",{className:"cm-peak-rail-track"},e("div",{className:"cm-peak-rail-segment cm-peak-rail-high"}),e("div",{className:"cm-peak-rail-segment cm-peak-rail-low"}),e("div",{className:"cm-peak-rail-marker",style:{top:l.weekend?"50%":l.inPeak?"25%":"75%"}})),e("span",{className:"cm-peak-rail-label"},o(i.short))))}r(Qa,"PeakRailStrip");function Ha(t){const{config:s,t:o}=t,[a,n]=E(Date.now());le(()=>{const w=window.setInterval(()=>n(Date.now()),3e4);return()=>window.clearInterval(w)},[]);const l=Fe(s,a);if(l===null)return null;const i=Ue(l),c=l.nextIntoPeak?o("nextPeakIn",{time:fe(l,a,o)}):o("nextOffPeakIn",{time:fe(l,a,o)}),u=[o(i.notice),c];return e(te,{label:u,side:"right",delayMs:300},e("div",{className:"cm-peak-rail-classic "+(l.weekend?"weekend":l.inPeak?"peak":"off"),"aria-label":u.join("; ")},e("div",{className:"cm-peak-rail-classic-track"},e("div",{className:"cm-peak-rail-classic-segment peak"}),e("div",{className:"cm-peak-rail-classic-segment off"}),e("div",{className:"cm-peak-rail-classic-marker",style:{top:l.weekend?"50%":l.inPeak?"25%":"75%"}})),e("span",{className:"cm-peak-rail-classic-label"},o(i.short))))}r(Ha,"PeakRailStripClassic");function Wa(t,s,o){return e(s?.peakStyle==="classic"?Ha:Qa,{config:s,t:o})}r(Wa,"peakNoticeRailEl");function Dt(t,s,o){const a=t.today,n=s.budget??{enabled:!1,amount:100,period:"month"},l=Number(s.exchangeRate),c=(t.budgetUsed??(n.period==="day"?_(t.today,s):n.period==="all"?_(t.total,s):_(t.month,s)))*(Number.isFinite(l)&&l>0?l:1),u=Math.max(0,Number(n.amount)||0),w=u>0?Math.min(999,c/u*100):null,d=me(w===null?null:Math.min(100,w),oe(s,"budget")),k=_(a,s)*(Number.isFinite(l)&&l>0?l:1),N=u>0?Math.min(999,k/u*100):null,x=n.detail!==!1;return{level:w===null?"ok":w>=100?"over":w>=80?"warn":"ok",rail:d.label===null?"\u2014":Math.round(d.label)+"%",body:e(F,null,e("div",{className:"cm-bbox-head"},e("span",{className:"cm-bbox-label"},o("budget")),e("span",{className:"cm-bbox-pct cm-num"},d.label===null?"\u2014":d.label.toFixed(1)+"%")),e("div",{className:"cm-bbox-bar"},e("div",{className:"cm-bbox-fill",style:{width:d.width+"%"}})),x?e(F,null,s.hideTodayCost===!0?null:e("div",{className:"cm-bbox-line cm-num"},o("todayShare",{amount:Z(_(a,s),s),pct:N===null?"\u2014":N.toFixed(1)+"%"})),e("div",{className:"cm-bbox-line cm-num"},o("usedOf",{used:ce(c,s),amount:ce(u,s)}))):null,at(t,s,o))}}r(Dt,"budgetBoxBody");function Rt(t,s,o){const a=t.goQuota,n=s?.goQuota?.main==="weekly"||s?.goQuota?.main==="monthly"?s.goQuota.main:"rolling",l=a[n],i=l!==null&&typeof l?.percent=="number"?Math.max(0,Math.min(100,Number(l.percent)||0)):0,c=r(x=>x!==null&&typeof x?.percent=="number"?Math.round(Math.max(0,Math.min(100,x.percent)))+"%":"\u2014","pctOf"),u=r(x=>o(x==="rolling"?"goShortRolling":x==="weekly"?"goShortWeekly":"goShortMonthly"),"shortOf"),w=["rolling","weekly","monthly"].filter(x=>x!==n),d=l!==null&&typeof l?.resetsAt=="string"&&l.resetsAt.length>0?o("goResetAt",{time:new Date(l.resetsAt).toLocaleString()}):"",k=s?.goQuota?.detail!==!1,N=me(i,oe(s,"go"));return{level:i>=100?"over":i>=80?"warn":"ok",rail:N.label===null?"\u2014":Math.round(N.label)+"%",body:e(F,null,e("div",{className:"cm-bbox-head"},e("span",{className:"cm-bbox-label"},o("goQuotaRowLabel")+" "+u(n)),e("span",{className:"cm-bbox-pct cm-num"},N.label===null?"\u2014":Math.round(N.label)+"%")),e("div",{className:"cm-bbox-bar"},e("div",{className:"cm-bbox-fill",style:{width:N.width+"%"}})),k?e(F,null,e("div",{className:"cm-bbox-line cm-num"},w.map(x=>u(x)+" "+c(a[x])).join(" \xB7 ")),d?e("div",{className:"cm-bbox-line"},d):null):null)}}r(Rt,"goBoxBody");function za(t){const{state:s,wide:o}=t,a=s.goQuota,n=$(z(s.config?.locale));if(!a||a.status!=="ok")return null;const l=s.config?.goQuota?.main==="weekly"||s.config?.goQuota?.main==="monthly"?s.config.goQuota.main:"rolling";if(a[l]===null||typeof a[l]?.percent!="number")return null;const i=Rt(s,s.config,n),c=[n("goQuotaTitle"),n("goWindowRolling")+": "+(a.rolling===null?"\u2014":Math.round(a.rolling.percent)+"%"),n("goWindowWeekly")+": "+(a.weekly===null?"\u2014":Math.round(a.weekly.percent)+"%"),n("goWindowMonthly")+": "+(a.monthly===null?"\u2014":Math.round(a.monthly.percent)+"%"+(a.monthly!==null&&typeof a.monthly.resetsAt=="string"&&a.monthly.resetsAt.length>0?" \xB7 "+n("goResetAt",{time:new Date(a.monthly.resetsAt).toLocaleString()}):"")),n("goQuotaFetchedAt",{time:a.fetchedAt>0?new Date(a.fetchedAt).toLocaleTimeString():"\u2014"})].join("; ");return e(te,{label:c,side:"right",delayMs:300},e("div",{className:"cm-bbox"+(i.level==="ok"?"":" "+i.level)+(o?"":" rail")},o?i.body:e("div",{className:"cm-bbox-rail cm-num"},i.rail)))}r(za,"GoQuotaBox");function Ga(t){return t===null||typeof t!="object"||typeof t.percent!="number"?null:Math.max(0,Math.min(100,Math.round(Number(t.percent)||0)))}r(Ga,"planWindowUsedPct");function Me(t){const s=t!==null&&typeof t=="object"?t:{};return{five:s["5h"]??null,seven:s["7d"]??s.week??s.weekly??null}}r(Me,"miniMaxWindowsOf");function Et(t,s){return!t||typeof t.resetsAt!="string"||t.resetsAt.length===0?"":s("goResetAt",{time:new Date(t.resetsAt).toLocaleString()})}r(Et,"miniMaxResetText");function nt(t,s,o){const a=Ga(s),n=a===null?"ok":a>=100?"over":a>=80?"warn":"ok",l=me(a,o);return{level:n,pct:a,label:l.label,row:e("div",{className:"cm-mm-row"+(n==="ok"?"":" "+n)},e("span",{className:"cm-bbox-label"},t),e("div",{className:"cm-bbox-bar"},e("div",{className:"cm-bbox-fill",style:{width:l.width+"%"}})),e("span",{className:"cm-bbox-pct cm-num"},l.label===null?"\u2014":l.label+"%"))}}r(nt,"miniMaxRow");function jt(t){const{five:s,seven:o,fetchedAt:a,t:n,wide:l,refresh:i,direction:c="used"}=t,u=nt(n("codingPlanRemain5h"),s,c),w=nt(n("codingPlanRemain7d"),o,c),d=u.level==="over"||w.level==="over"?"over":u.level==="warn"||w.level==="warn"?"warn":"ok",k=r((C,v,P)=>{const S=P.pct===null?"\u2014":P.pct+"%",f=Et(v,n);return C+" "+S+(f?" \xB7 "+f:"")},"lineOf"),N=[n("codingPlanMinimaxTitle"),k(n("codingPlanRemain5h"),s,u),k(n("codingPlanRemain7d"),o,w),a>0?n("goQuotaFetchedAt",{time:new Date(a).toLocaleTimeString()}):null,...i?he(n,i):[]].filter(Boolean).join("; "),x=e(F,null,e("div",{className:"cm-mm-title"},n("codingPlanMinimaxTitle")),u.row,w.row),g=e(F,null,e("div",{className:"cm-bbox-rail cm-num"},u.pct===null?"\u2014":u.pct+"%"),e("div",{className:"cm-bbox-rail cm-num"},w.pct===null?"\u2014":w.pct+"%"));return e(te,{label:N,side:"right",delayMs:300},e("div",{className:"cm-bbox cm-mm"+(d==="ok"?"":" "+d)+(l===!1?" rail":"")+(i?" clickable"+(i.busy?" busy":""):""),...i?pe(i.busy,i.run):{}},l===!1?g:x))}r(jt,"MiniMaxPlanCard");function _a(t){const{state:s,wide:o,api:a}=t,n=s.codingPlans?.minimax,l=$(z(s.config?.locale)),i=xe(a?()=>a.refreshCodingPlan("minimax"):null);if(!n||n.status!=="ok")return null;const{five:c,seven:u}=Me(n.windows);return c==null&&u==null?null:e(jt,{five:c,seven:u,fetchedAt:n.fetchedAt,t:l,wide:o,refresh:i,direction:oe(s.config,"plan")})}r(_a,"MiniMaxPlanBox");const Ka="/plugins/dsh-openai-codex/auth/status",Ya=168*3600;function Va(t){if(t===null||typeof t!="object"||t.status!=="signed-in")return null;const s=t.usage!==null&&typeof t.usage=="object"?t.usage.rateLimits:null;if(!Array.isArray(s))return null;const o=s.find(c=>c!==null&&typeof c=="object"&&c.id==="codex");if(!o||!Array.isArray(o.windows))return null;const a=o.windows.find(c=>c!==null&&typeof c=="object"&&Number(c.windowSeconds)===Ya);if(!a||typeof a.remainingPercent!="number"||!Number.isFinite(Number(a.remainingPercent)))return null;const n=Math.max(0,Math.min(100,Math.round((100-Number(a.remainingPercent))*10)/10)),l=Number(a.resetAt),i=Number.isFinite(l)&&l>0?new Date(l*1e3).toISOString():"";return{weekly:{percent:n,resetsAt:i}}}r(Va,"parseCodexStatus");const X={status:"idle",windows:{},fetchedAt:0,inFlight:null,listeners:[]},Ja=r(t=>(X.listeners.push(t),()=>{X.listeners=X.listeners.filter(s=>s!==t)}),"subscribeCodexQuota"),$a=r(()=>{for(const t of X.listeners)try{t()}catch{}},"notifyCodexQuota");async function Ie(t=!1){if(X.inFlight!==null)return X.inFlight;if(!t&&X.fetchedAt>0&&Date.now()-X.fetchedAt<5*6e4)return;const s=(async()=>{try{const o=await fetch(Ka,{credentials:"same-origin",headers:{accept:"application/json"},signal:AbortSignal.timeout(8e3)});let a={};if(o.ok){const n=Va(await o.json().catch(()=>null));n!==null&&(a=n)}X.status=Object.keys(a).length>0?"ok":"unavailable",X.windows=a}catch{X.status="unavailable"}finally{X.fetchedAt=Date.now(),X.inFlight=null,$a()}})();return X.inFlight=s,s}r(Ie,"fetchCodexQuota"),Ie(!1);function Za(){const[t,s]=E(()=>({status:X.status,windows:X.windows,fetchedAt:X.fetchedAt}));return le(()=>{let o=!0;const n=Ja(r(()=>{o&&s({status:X.status,windows:X.windows,fetchedAt:X.fetchedAt})},"sync"));return Ie(!1),()=>{o=!1,n()}},[]),t}r(Za,"useCodexQuota");function Xa(t){const{state:s,wide:o}=t,a=$(z(s.config?.locale)),n=Za(),l=xe(()=>Ie(!0));if(n.status!=="ok")return null;const i=n.windows.weekly??null;if(i===null)return null;const c=oe(s.config,"plan"),u=nt(a("goShortWeekly"),i,c),w=[a("codexQuotaTitle"),u.label===null?"\u2014":u.label+"%",Et(i,a),n.fetchedAt>0?a("goQuotaFetchedAt",{time:new Date(n.fetchedAt).toLocaleTimeString()}):null,...he(a,l)].filter(Boolean).join("; "),d=e(F,null,e("div",{className:"cm-mm-title"},a("codexQuotaTitle")),u.row),k=e("div",{className:"cm-bbox-rail cm-num"},u.label===null?"\u2014":u.label+"%");return e(te,{label:w,side:"right",delayMs:300},e("div",{className:"cm-bbox cm-mm clickable"+(u.level==="ok"?"":" "+u.level)+(o===!1?" rail":"")+(l.busy?" busy":""),...pe(l.busy,l.run)},o===!1?k:d))}r(Xa,"CodexPlanBox");function st(t,s){return t==="fiveHour"||t==="5h"?"5h":t==="weekly"||t==="week"||t==="7d"?t==="7d"?"7d":s("goShortWeekly"):t==="monthly"||t==="month"?s("goShortMonthly"):String(t).replace(/_/g," ")}r(st,"codingPlanWindowLabel");function en(t){const{id:s,state:o,wide:a,api:n}=t,l=o.codingPlans?.[s],i=$(z(o.config?.locale)),c=xe(n?()=>n.refreshCodingPlan(s):null),u=Ce.find(f=>f.id===s);if(!u||!l||l.status!=="ok")return null;const w=l.windows!==null&&typeof l.windows=="object"?l.windows:{},d=Object.entries(w);if(d.length===0)return null;const k=r(f=>f!==null&&typeof f=="object"&&typeof f.percent=="number"?Math.max(0,Math.min(100,Math.round(Number(f.percent)||0))):null,"pctOf"),N=oe(o.config,"plan"),x=d.map(([f,y])=>{const b=k(y);if(b===null)return e("div",{key:f,className:"cm-mm-row wide"},e("span",{className:"cm-mm-text"},typeof y?.text=="string"?y.text:"\u2014"));const p=b>=100?"over":b>=80?"warn":"ok",A=me(b,N);return e("div",{key:f,className:"cm-mm-row wide"+(p==="ok"?"":" "+p)},e("span",{className:"cm-bbox-label"},st(f,i)),e("div",{className:"cm-bbox-bar"},e("div",{className:"cm-bbox-fill",style:{width:A.width+"%"}})),e("span",{className:"cm-bbox-pct cm-num"},A.label===null?"\u2014":A.label+"%"))}),g=d.map(([f,y])=>{const b=k(y),p=typeof y?.resetsAt=="string"&&y.resetsAt.length>0?" \xB7 "+i("goResetAt",{time:new Date(y.resetsAt).toLocaleString()}):"",A=b===null?typeof y?.text=="string"?y.text:"\u2014":b+"%";return st(f,i)+" "+A+p});l.fetchedAt>0&&g.push(i("goQuotaFetchedAt",{time:new Date(l.fetchedAt).toLocaleTimeString()})),g.push(...he(i,c));const C=[i(u.labelKey),...g].join("; "),v=d.map(([,f])=>k(f)).filter(f=>f!==null),P=v.some(f=>f>=100)?"over":v.some(f=>f>=80)?"warn":"ok",S=v.length>0?v.slice(0,2).map(f=>f+"%").join(" "):typeof d[0][1]?.text=="string"?d[0][1].text:"\u2014";return e(te,{label:C,side:"right",delayMs:300},e("div",{className:"cm-bbox cm-mm clickable"+(P==="ok"?"":" "+P)+(a===!1?" rail":"")+(c.busy?" busy":""),...pe(c.busy,c.run)},a===!1?e("div",{className:"cm-bbox-rail cm-num"},S):e(F,null,e("div",{className:"cm-mm-title"},i(u.labelKey)),...x)))}r(en,"CodingPlanBox");const tn={anthropic:"Claude",zai:"Z.ai",minimax:"MM",kimi:"Kimi",openrouter:"OR",siliconflow:"SF",commandcode:"CC",scnet:"SCNet",volcengine:"Ark",qwen:"Qwen"};function an(t){const s=t.useCost?t.useCost(g=>g):void 0,[o,a]=E(null),[n,l]=E({}),i=s?.state,c=t.api;if(!i)return null;const u=i.config,w=u.quotaStrip??{enabled:!1,budget:!0,go:!0,plans:!0};if(w.enabled!==!0)return null;const d=$(z(u?.locale)),k=[];if(w.budget!==!1){const g=u.budget??{enabled:!1,amount:100,period:"month"};if(g.enabled===!0){const C=Number(u.exchangeRate),P=(i.budgetUsed??(g.period==="day"?_(i.today,u):g.period==="all"?_(i.total,u):_(i.month,u)))*(Number.isFinite(C)&&C>0?C:1),S=Math.max(0,Number(g.amount)||0);if(S>0){const f=Math.min(999,P/S*100),y=f>=100?"over":f>=80?"warn":"ok";k.push({key:"budget",label:d("budgetShort"),level:y,tip:d("budgetOf",{period:d(Oe[g.period]??"periodMonth")})+" \xB7 "+d("usedOf",{used:ce(P,u),amount:ce(S,u)})+" \xB7 "+f.toFixed(1)+"%",segs:[{name:"main",pct:Math.round(me(Math.min(100,f),oe(u,"budget")).width)}]})}}}if(w.go!==!1){const g=i.goQuota;if(u?.goQuota?.enabled!==!1&&g?.status==="ok"){const C=u.goQuota.main==="weekly"||u.goQuota.main==="monthly"?u.goQuota.main:"rolling",v=C==="rolling"?g.rolling:C==="weekly"?g.weekly:g.monthly;if(v!==null&&typeof v=="object"&&typeof v.percent=="number"){const P=Math.max(0,Math.min(100,Math.round(Number(v.percent)||0))),S=P>=100?"over":P>=80?"warn":"ok",f=typeof v.resetsAt=="string"&&v.resetsAt.length>0?" \xB7 "+d("goResetAt",{time:new Date(v.resetsAt).toLocaleString()}):"";k.push({key:"go",label:"Go "+d(C==="rolling"?"goShortRolling":C==="weekly"?"goShortWeekly":"goShortMonthly"),level:S,tip:"Go: "+P+"%"+f,segs:[{name:"main",pct:Math.round(me(P,oe(u,"go")).width)}]})}}}if(w.plans!==!1)for(const g of Ce){const C=i.codingPlans?.[g.id];if(u.codingPlans?.[g.id]?.enabled!==!0||!C||C.status!=="ok")continue;const v=C.windows!==null&&typeof C.windows=="object"?C.windows:{},P=Object.entries(v);if(P.length===0)continue;const S=tn[g.id]??g.id,f=[],y=[];let b=0,p=0;for(const[A,M]of P){const L=st(A,d),j=typeof M?.resetsAt=="string"&&M.resetsAt.length>0?" \xB7 "+d("goResetAt",{time:new Date(M.resetsAt).toLocaleString()}):"",B=M!==null&&typeof M=="object"&&typeof M.percent=="number"?Math.max(0,Math.min(100,Math.round(Number(M.percent)||0))):null;if(y.push(L+" "+(B===null?typeof M?.text=="string"?M.text:"\u2014":B+"%")+j),B===null){f.push({name:A,pct:null,text:typeof M?.text=="string"?M.text:"\u2014"});continue}p>=2||(p+=1,f.push({name:A,pct:Math.round(me(B,oe(u,"plan")).width)}),b=Math.max(b,B>=100?2:B>=80?1:0))}C.fetchedAt>0&&y.push(d("goQuotaFetchedAt",{time:new Date(C.fetchedAt).toLocaleTimeString()})),f.length!==0&&k.push({key:g.id,label:S,level:["ok","warn","over"][b],tip:y.join("; "),segs:f})}const N=X.status==="ok"?X.windows.weekly??null:null;if(N!==null&&typeof N.percent=="number"){const g=Math.max(0,Math.min(100,Math.round(Number(N.percent)||0))),C=typeof N.resetsAt=="string"&&N.resetsAt.length>0?" \xB7 "+d("goResetAt",{time:new Date(N.resetsAt).toLocaleString()}):"";k.push({key:"codex",label:"Codex",level:g>=100?"over":g>=80?"warn":"ok",tip:d("codexQuotaTitle")+": "+g+"%"+C,segs:[{name:"weekly",pct:Math.round(me(g,oe(u,"plan")).width)}]})}if(k.length===0)return null;const x=r(g=>{o!==null||!c||(a(g),l(C=>({...C,[g]:null})),Promise.resolve().then(()=>g==="budget"?c.reload():g==="go"?c.refreshGoQuota():g==="codex"?Ie(!0):c.refreshCodingPlan(g)).catch(C=>{l(v=>({...v,[g]:C?.message??String(C)}))}).finally(()=>a(null)))},"doRefresh");return e("div",{className:"cm-qstrip"},k.map(g=>{const C=o===g.key,v=n[g.key],P=[e("span",{className:"cm-qlabel",key:"l"},g.label)];C?P.push(e("span",{className:"cm-qtext",key:"busy"},d("refreshing"))):g.segs.forEach((f,y)=>{y>0&&P.push(e("span",{className:"cm-qsep",key:"sep"+y,"aria-hidden":"true"})),f.pct===null?P.push(e("span",{className:"cm-qtext",key:f.name},f.text)):P.push(e("span",{className:"cm-qseg",key:f.name},e("span",{className:"cm-qbar"},e("span",{className:"cm-qfill",style:{width:f.pct+"%"}})),e("span",null,f.pct+"%")))});const S=[g.tip];return!C&&c&&S.push(d("clickToRefresh")),C&&S.push(d("refreshing")),v&&S.push("\u26A0 "+d("balanceRefreshFailed",{message:v})),e(te,{key:g.key,label:S.join("; "),side:"bottom",delayMs:400},e("span",{className:"cm-qchip"+(c?" action":"")+(g.level==="ok"?"":" "+g.level),...c?pe(C,()=>x(g.key)):{}},P))}))}r(an,"QuotaStrip");function nn(t){const s=t.useCost?t.useCost(c=>c):void 0,o=Se(!1),a=s?.state;if(!a)return null;const n=a.config;if(n.quotaStrip?.promptSeen===!0)return null;const l=$(z(n?.locale)),i=r(c=>{if(o.current===!0)return;o.current=!0;const u=n.quotaStrip??{enabled:!1,budget:!0,go:!0,plans:!0};t.api.updateConfig({quotaStrip:{...u,enabled:c,promptSeen:!0}}).catch(()=>{o.current=!1})},"choose");return e("div",{className:"cm-qguide",role:"dialog","aria-label":l("quotaStripGuideTitle")},e("h4",null,l("quotaStripGuideTitle")),e("p",null,l("quotaStripGuideBody")),e("div",{className:"cm-buttons"},e("button",{type:"button",className:"cm-btn small",onClick:r(()=>i(!1),"onClick")},l("quotaStripGuideOff")),e("button",{type:"button",className:"cm-btn small primary",onClick:r(()=>i(!0),"onClick")},l("quotaStripGuideOn"))))}r(nn,"QuotaStripGuide");const qt="dsh-cost-meter:balance-click-hint-seen",sn=r(()=>{try{return window.localStorage.getItem(qt)==="1"}catch{return!1}},"readBalanceClickHintLS"),on=r(()=>{try{window.localStorage.setItem(qt,"1")}catch{}},"writeBalanceClickHintLS");function ln(t){const s=t.useCost?t.useCost(x=>x):void 0,o=Se(!1),[a,n]=E(!1),[l]=E(sn),i=s?.state;if(!i)return null;const c=i.config,u=c.balance?.display==="sidebar"||c.balance?.display==="both",w=c.customBalance?.enabled===!0&&(c.customBalance?.display==="sidebar"||c.customBalance?.display==="both"),d=Ce.some(x=>{const g=c.codingPlans?.[x.id];return g?.enabled===!0&&(g.display==="sidebar"||g.display==="both")});if(a||l||c.balance?.clickHintSeen===!0||!u&&!w&&!d||c.quotaStrip?.promptSeen!==!0)return null;const k=$(z(c?.locale)),N=r(()=>{o.current!==!0&&(n(!0),o.current=!0,on(),t.api.updateConfig({balance:{...c.balance??{},clickHintSeen:!0}}).catch(()=>{o.current=!1,n(!1)}))},"dismiss");return e("div",{className:"cm-qguide",role:"dialog","aria-label":k("balanceClickGuideTitle")},e("h4",null,k("balanceClickGuideTitle")),e("p",null,k("balanceClickGuideBody")),e("div",{className:"cm-buttons"},e("button",{type:"button",className:"cm-btn small primary",onClick:N},k("balanceClickGuideOk"))))}r(ln,"BalanceClickGuide");function Ft(t){const{state:s,wide:o}=t,a=s.today,n=s.config,l=$(z(n?.locale)),i=n.budget??{enabled:!1,amount:100,period:"month"},c=Number(n.exchangeRate),w=(s.budgetUsed??(i.period==="day"?_(s.today,n):i.period==="all"?_(s.total,n):_(s.month,n)))*(Number.isFinite(c)&&c>0?c:1),d=Math.max(0,Number(i.amount)||0),k=d>0?Math.min(999,w/d*100):null,N=k===null?"ok":k>=100?"over":k>=80?"warn":"ok";if(i.enabled===!0){const g=_(a,n),C=g*(Number.isFinite(c)&&c>0?c:1),v=d>0?Math.min(999,C/d*100):null,P=[l("budgetOf",{period:l(Oe[i.period]??"periodMonth")}),l("usedOf",{used:ce(w,n),amount:ce(d,n)})+" \xB7 "+(k===null?"\u2014":k.toFixed(1)+"%"),...n.hideTodayCost===!0?[]:[l("todayShare",{amount:Z(g,n),pct:v===null?"\u2014":v.toFixed(1)+"%"})],l("monthTotal",{month:Z(_(s.month,n),n),total:Z(_(s.total,n),n)})].join("; "),S=Dt(s,n,l);return e(te,{label:P,side:"right",delayMs:300},e("div",{className:"cm-bbox"+(N==="ok"?"":" "+N)+(o?"":" rail")},o?S.body:e("div",{className:"cm-bbox-rail cm-num"},S.rail)))}const x=[l("todayCostTitle"),l("callsTokens",{calls:a.calls,input:q(a.input),cache:q(a.cacheRead+a.cacheWrite),output:q(a.output)}),l("monthCost",{amount:Z(_(s.month,n),n)}),l("totalCost",{amount:Z(_(s.total,n),n)})].join("; ");return e(te,{label:x,side:"right",delayMs:300},e(F,null,e("div",{className:"cm-foot"+(o?"":" cm-foot-rail")},o?e(F,null,l("today")," ",e("span",{className:"cm-num"},Z(_(a,n),n))):e(Ve,{size:16})),o?at(s,n,l):null))}r(Ft,"BudgetBoxContent");function rn(t){const s=t.useCost?t.useCost(y=>y):void 0;let o;if(t.useProjection)try{o=t.useProjection("costUsage")}catch{o=void 0}Je(t,o);const a=s?.state,n=!!t.wide,l=Se(null);if(le(()=>{const y=l.current,b=y?.parentElement;if(!y||!b)return;const p=r(()=>{n?b.firstElementChild!==y&&b.insertBefore(y,b.firstElementChild):b.lastElementChild!==y&&b.appendChild(y)},"apply");p();const A=new MutationObserver(()=>{y.isConnected&&p()});return A.observe(b,{childList:!0}),n?(b.style.flexDirection="",b.style.flexWrap="",b.style.alignItems="",b.style.gap=""):(b.style.flexDirection="column",b.style.flexWrap="nowrap",b.style.alignItems="center",b.style.gap="6px"),()=>{A.disconnect(),n||(b.style.flexDirection="",b.style.flexWrap="",b.style.alignItems="",b.style.gap="")}},[n,a]),!a)return null;const i=a.config,c=$(z(i?.locale)),u=(i.balance?.display==="sidebar"||i.balance?.display==="both")&&i.hideOfficialBalance!==!0,w=i.customBalance?.enabled===!0&&(i.customBalance?.display==="sidebar"||i.customBalance?.display==="both")&&a.customBalance?.status==="ok",d=u&&i.balance?.showProgressBar===!0&&a.balance?.status==="ok",k=w&&i.balance?.showProgressBar===!0,N=i.goQuota?.main==="weekly"||i.goQuota?.main==="monthly"?i.goQuota.main:"rolling",x=i.goQuota?.enabled!==!1&&(i.goQuota?.display==="sidebar"||i.goQuota?.display==="both")&&a.goQuota?.status==="ok"&&a.goQuota?.[N]!==null,g=Ce.map(y=>y.id).filter(y=>{const b=i.codingPlans?.[y];if(b?.enabled!==!0||b.display!=="sidebar"&&b.display!=="both")return!1;const p=a.codingPlans?.[y];if(p?.status!=="ok")return!1;const A=p.windows!==null&&typeof p.windows=="object"?p.windows:{};return Object.keys(A).length>0}),C=g.length>0,v=X.status==="ok"&&X.windows.weekly!==null,P=(i.budget??{}).enabled===!0,S=i.sidebar!==!1&&i.hideTodayCost!==!0;if(!u&&!w&&!x&&!C&&!v&&!P&&!S)return null;const f=[];if(d?f.push(e(Da,{state:a,wide:n,api:t.api})):u&&f.push(e(Oa,{state:a,wide:n,api:t.api})),k?f.push(e(Ea,{state:a,wide:n,api:t.api})):w&&f.push(e(ja,{state:a,wide:n,api:t.api})),C&&f.push(...g.map(y=>y==="minimax"?e(_a,{state:a,wide:n,api:t.api}):e(en,{id:y,state:a,wide:n,api:t.api}))),v&&f.push(e(Xa,{state:a,wide:n,api:t.api})),x&&P&&n){const y=Rt(a,i,c),b=Dt(a,i,c),p=y.level==="over"||b.level==="over"?"over":y.level==="warn"||b.level==="warn"?"warn":"ok";f.push(e("div",{className:"cm-bbox cm-bbox-pair"+(p==="ok"?"":" "+p)},e("div",{className:"cm-bbox-section"+(y.level==="ok"?"":" "+y.level)},y.body),e("div",{className:"cm-bbox-divider"}),e("div",{className:"cm-bbox-section"+(b.level==="ok"?"":" "+b.level)},b.body)))}else x&&f.push(e(za,{state:a,wide:n})),P&&f.push(e(Ft,{state:a,wide:n}));return!P&&S&&f.push(e(Ft,{state:a,wide:n})),n||f.push(Wa(a,i,c)),e("div",{ref:l,className:"cm-footer-stack"+(n?"":" rail")},...f)}r(rn,"SidebarFooter");function ot(t){return e("div",{className:"cm-card"},e("p",{className:"cm-card-title"},t.title),e("div",{className:"cm-card-value cm-num"},t.value),e("p",{className:"cm-card-sub"},t.sub))}r(ot,"Card");function cn(t){const{state:s,api:o}=t,a=$(z(s.config?.locale)),[n,l]=E(!1);return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("button",{type:"button",className:"cm-collapse-h","aria-expanded":String(n),onClick:r(()=>l(!n),"onClick")},e("span",{className:"cm-caret"+(n?" open":"")}),e("h3",{className:"cm-h"},a("history")))),n?e("div",{className:"cm-collapse-body"},e(dn,{state:s,api:o})):null)}r(cn,"HistoryPanel");function dn(t){const{state:s,api:o}=t,a=$(z(s.config?.locale)),[n,l]=E(null),[i,c]=E({}),[u,w]=E(()=>new Set),d=s.history??[];if(d.length===0)return e("p",{className:"cm-empty"},a("noHistory"));const k=r(x=>{if(n===x){l(null);return}l(x),!(i[x]!==void 0||u.has(x))&&(w(g=>{const C=new Set(g);return C.add(x),C}),o.getDaySessions(x).then(g=>c(C=>({...C,[x]:Array.isArray(g?.sessions)?g.sessions:[]}))).catch(()=>c(g=>({...g,[x]:"error"}))).finally(()=>w(g=>{const C=new Set(g);return C.delete(x),C})))},"toggle"),N=r(x=>x.map(g=>e("tr",{key:g.id},lt(g,s.config?.showSessionId===!0,a),e("td",{className:"num"},String(g.calls)),e("td",{className:"num"},q(g.input)),e("td",{className:"num"},q(g.cacheRead+g.cacheWrite)),e("td",{className:"num"},q(g.output)),e("td",{className:"num"},Z(_(g,s.config),s.config)))),"sessionRows");return e("div",{className:"cm-scroll"},e("p",{className:"cm-hint",style:{padding:"6px 10px 0"}},a("historyExpandHint")),e("table",{className:"cm-table"},e("thead",null,e("tr",null,e("th",null,a("colDate")),e("th",{className:"num"},a("colCalls")),e("th",{className:"num"},a("colInTok")),e("th",{className:"num"},a("colCacheTok")),e("th",{className:"num"},a("colOutTok")),e("th",{className:"num"},a("colCost")))),e("tbody",null,d.flatMap(x=>{const g=e("tr",{key:x.date,className:"cm-row-click",onClick:r(()=>k(x.date),"onClick")},e("td",null,(n===x.date?"\u25BE ":"\u25B8 ")+x.date),e("td",{className:"num"},String(x.calls)),e("td",{className:"num"},q(x.input)),e("td",{className:"num"},q(x.cacheRead+x.cacheWrite)),e("td",{className:"num"},q(x.output)),e("td",{className:"num"},Z(_(x,s.config),s.config)));if(n!==x.date)return[g];const C=i[x.date],v=u.has(x.date)&&C===void 0?e("p",{className:"cm-empty"},a("historySessionsLoading")):C==="error"?e("p",{className:"cm-empty"},a("historySessionsError")):!Array.isArray(C)||C.length===0?e("p",{className:"cm-empty"},a("historyNoSessions")):e("table",{className:"cm-table"},e("thead",null,e("tr",null,e("th",null,a("colSession")),e("th",{className:"num"},a("colCalls")),e("th",{className:"num"},a("colInTok")),e("th",{className:"num"},a("colCacheTok")),e("th",{className:"num"},a("colOutTok")),e("th",{className:"num"},a("colCost")))),e("tbody",null,N(C)));return[g,e("tr",{key:x.date+"-sessions"},e("td",{colSpan:6},v))]}))))}r(dn,"HistoryTable");function un(t){const{state:s,api:o}=t,a=$(z(s.config?.locale)),[n,l]=E(!1),[i,c]=E(100),[u,w]=E("cost-desc"),[d,k]=E(null),[N,x]=E(!1),[g,C]=E(!1),v=Ae.useRef(0),P=r((b,p)=>{const[A,M]=p==="recent"?["recent","desc"]:p.split("-"),L=++v.current;x(!0),C(!1),o.getTopSessions(b,A,M).then(j=>{L===v.current&&k(Array.isArray(j?.sessions)?j.sessions:[])}).catch(()=>{L===v.current&&C(!0)}).finally(()=>{L===v.current&&x(!1)})},"load"),S=r(()=>{l(b=>{const p=!b;return p&&d===null&&!N&&P(i,u),p})},"toggle"),f=r(b=>{c(b),(n||d!==null)&&P(b,u)},"changeLimit"),y=r(b=>{w(b),(n||d!==null)&&P(i,b)},"changeSort");return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("button",{type:"button",className:"cm-collapse-h","aria-expanded":String(n),onClick:S},e("span",{className:"cm-caret"+(n?" open":"")}),e("h3",{className:"cm-h"},a("sessionRankTitle")))),n?e("div",{className:"cm-collapse-body"},e("p",{className:"cm-hint"},a("sessionRankHint")),e("div",{style:{display:"flex",gap:"12px",flexWrap:"wrap",margin:"6px 0"}},e("div",{className:"cm-field"},e("label",null,a("sessionRankSort")),e("select",{className:"cm-input",value:u,onChange:r(b=>y(b.target.value),"onChange")},e("option",{value:"cost-desc"},a("sessionSortCostDesc")),e("option",{value:"cost-asc"},a("sessionSortCostAsc")),e("option",{value:"time-desc"},a("sessionSortTimeDesc")),e("option",{value:"time-asc"},a("sessionSortTimeAsc")),e("option",{value:"recent"},a("sessionSortRecent")))),e("div",{className:"cm-field"},e("label",null,a("sessionRankLimit")),e("select",{className:"cm-input",value:String(i),onChange:r(b=>f(Number(b.target.value)),"onChange")},e("option",{value:"50"},"50"),e("option",{value:"100"},"100"),e("option",{value:"200"},"200")))),N?e("p",{className:"cm-empty"},a("sessionRankLoading")):g?e("p",{className:"cm-empty"},a("sessionRankError")):d===null||d.length===0?e("p",{className:"cm-empty"},a("sessionRankEmpty")):e("div",{className:"cm-scroll"},e("table",{className:"cm-table"},e("thead",null,e("tr",null,e("th",null,a("colDate")),e("th",null,a("colSession")),e("th",{className:"num"},a("colCalls")),e("th",{className:"num"},a("colInTok")),e("th",{className:"num"},a("colCacheTok")),e("th",{className:"num"},a("colOutTok")),e("th",{className:"num"},a("colCost")))),e("tbody",null,d.map(b=>e("tr",{key:b.date+":"+b.id},e("td",null,b.date),lt(b,s.config?.showSessionId===!0,a),e("td",{className:"num"},String(b.calls)),e("td",{className:"num"},q(b.input)),e("td",{className:"num"},q((b.cacheRead??0)+(b.cacheWrite??0))),e("td",{className:"num"},q(b.output)),e("td",{className:"num"},Z(_(b,s.config),s.config)))))))):null)}r(un,"SessionRankPanel");function mn(t){const{state:s}=t,o=$(z(s.config?.locale)),a=s.today.sessions??[];if(a.length===0)return e("p",{className:"cm-empty"},o("noSessionsToday"));const n=s.config?.showSessionId===!0;return e("div",{className:"cm-scroll"},e("table",{className:"cm-table"},e("thead",null,e("tr",null,e("th",null,o("colSession")),e("th",{className:"num"},o("colCalls")),e("th",{className:"num"},o("colInTok")),e("th",{className:"num"},o("colCacheTok")),e("th",{className:"num"},o("colOutTok")),e("th",{className:"num"},o("colCost")))),e("tbody",null,a.map(l=>e("tr",{key:l.id},lt(l,n,o),e("td",{className:"num"},String(l.calls)),e("td",{className:"num"},q(l.input)),e("td",{className:"num"},q(l.cacheRead+l.cacheWrite)),e("td",{className:"num"},q(l.output)),e("td",{className:"num"},Z(_(l,s.config),s.config)))))))}r(mn,"TodaySessions");function lt(t,s,o){const a=typeof t.title=="string"?t.title.trim():"",n=String(t.id).slice(0,14)+"\u2026",l=a.length>0?a:n,i=a.length>0?a+" \xB7 "+t.id:t.id;return e("td",{title:i},e("div",{className:"cm-sess-title"+(a.length===0?" cm-sess-id":"")},l),s&&a.length>0?e("div",{className:"cm-sess-id"},n):null)}r(lt,"sessionCell");const pn={CNY:{symbol:"\xA5",decimals:4,exchangeRate:7.2},USD:{symbol:"$",decimals:6,exchangeRate:1},EUR:{symbol:"\u20AC",decimals:6,exchangeRate:.92}};function fn(t){const{state:s,draft:o,setDraft:a,t:n}=t,l=s.config,i=o?.budget??l.budget,c=Number(l.exchangeRate),w=(s.budgetUsed??(i.period==="day"?_(s.today,l):i.period==="all"?_(s.total,l):_(s.month,l)))*(Number.isFinite(c)&&c>0?c:1),d=Math.max(0,Number(i.amount)||0),k=i.enabled&&d>0?Math.min(999,w/d*100):null,N=k===null?"ok":k>=100?"over":k>=80?"warn":"ok",x=r((v,P)=>{o!==null&&a({...o,budget:{...o.budget??l.budget,[v]:P}})},"setBudget"),g=i.period==="custom"?i.customStart+" \u2192 "+(i.customEnd??n("periodDay")):null,C=i.enabled&&k!==null?n("budgetStatus",{period:n(Oe[i.period]??"periodMonth"),amount:ce(d,l),used:ce(w,l),pct:k.toFixed(1)})+(N==="over"?n("overLimit"):N==="warn"?n("nearLimit"):""):null;return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},n("budget")),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:i.enabled===!0,onChange:r(v=>x("enabled",v.target.checked),"onChange")}),e("span",null,n("enableBudget")))),i.enabled?e(F,null,e("div",{className:"cm-budget-bar"},e("div",{className:"cm-budget-fill "+(N==="ok"?"":N),style:{width:(k===null?0:Math.min(100,k))+"%"}})),e("div",{className:"cm-budget-line"+(N==="over"?" over":"")+" cm-num"},C),e("div",{className:"cm-budget-controls"},e("div",{className:"cm-field"},e("label",null,n("budgetAmountLabel")),re({value:i.amount},v=>x("amount",v))),e("div",{className:"cm-field"},e("label",null,n("budgetPeriodLabel")),e("select",{className:"cm-input",value:i.period,onChange:r(v=>x("period",v.target.value),"onChange")},e("option",{value:"day"},n("periodDay")),e("option",{value:"month"},n("periodMonth")),e("option",{value:"all"},n("periodAll")),e("option",{value:"custom"},n("periodCustomRange")))),i.period==="custom"?e(F,null,e("div",{className:"cm-field"},e("label",null,n("startDate")),e("input",{className:"cm-input",type:"date",value:i.customStart??"",onChange:r(v=>x("customStart",v.target.value===""?null:v.target.value),"onChange")})),e("div",{className:"cm-field"},e("label",null,n("endDate")),e("input",{className:"cm-input",type:"date",value:i.customEnd??"",onChange:r(v=>x("customEnd",v.target.value===""?null:v.target.value),"onChange")}))):null),g!==null?e("p",{className:"cm-hint"},n("rangeText",{range:g})):null):e("p",{className:"cm-note"},n("budgetDisabledNote")))}r(fn,"BudgetPanel");function gn(t){const{state:s,draft:o,setDraft:a,t:n}=t,l=s.config,i=r((d,k)=>{o!==null&&a({...o,[d]:k})},"setField"),c=o===null?l:{...l,...o},u=(()=>{if(c.peakEnabled!==!0)return n("peakOff");const d=Date.parse(c.peakEffectiveAt||""),k=Date.now();if(Number.isFinite(d)&&k<d)return n("peakNotEffective",{time:new Date(d).toLocaleString()});const N=c.peakWindows??[],x=qe(k,N);return x===null?n("offPeakActive"):x.weekend===!0?n("weekendAllOffPeak"):x.inPeak?n("peakActive"):n("offPeakActive")})(),w=(c.peakWindows?.length??0)>0?n("peakSummary",{windows:c.peakWindows.map(d=>d.start+":00-"+d.end+":00").join(z(c.locale)==="zh"?"\u3001":", "),time:c.peakEffectiveAt||n("unknown"),status:u}):n("noPeakWindows",{status:u});return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},n("peakPanelTitle")),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:o?.peakEnabled!==!1,onChange:r(d=>i("peakEnabled",d.target.checked),"onChange")}),e("span",null,n("peakEnabledLabel")))),e("div",{className:"cm-grid"},e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:o?.peakNotice!==!1,onChange:r(d=>i("peakNotice",d.target.checked),"onChange")}),e("span",null,n("peakNoticeLabel")))),e("div",{className:"cm-field"},e("label",null,n("peakStyleLabel")),e("select",{className:"cm-input",value:o?.peakStyle==="classic"?"classic":"compact",onChange:r(d=>i("peakStyle",d.target.value),"onChange")},e("option",{value:"compact"},n("peakStyleCompact")),e("option",{value:"classic"},n("peakStyleClassic"))))),e("div",{className:"cm-grid"},e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:o?.peakAlertEnabled!==!1,onChange:r(d=>i("peakAlertEnabled",d.target.checked),"onChange")}),e("span",null,n("peakAlertLabel")))),e("div",{className:"cm-field"},e("label",null,n("peakAlertAheadLabel")),e("input",{className:"cm-input narrow",type:"number",min:"1",max:"30",step:"1",value:String(typeof o?.peakAlertAhead=="number"&&Number.isFinite(o.peakAlertAhead)&&o.peakAlertAhead>=1&&o.peakAlertAhead<=30?o.peakAlertAhead:2),onChange:r(d=>{const k=Number(d.target.value);Number.isInteger(k)&&k>=1&&k<=30&&i("peakAlertAhead",k)},"onChange")})),e("div",{className:"cm-field"},e("label",null,n("peakAlertTargetLabel")),e("select",{className:"cm-input",value:o?.peakAlertTarget==="peak"||o?.peakAlertTarget==="offpeak"?o.peakAlertTarget:"both",onChange:r(d=>i("peakAlertTarget",d.target.value),"onChange")},e("option",{value:"both"},n("peakAlertTargetBoth")),e("option",{value:"peak"},n("peakAlertTargetPeak")),e("option",{value:"offpeak"},n("peakAlertTargetOffPeak"))))),e("div",{className:"cm-grid"},e("div",{className:"cm-field"},e("label",null,n("peakAlertPositionLabel")),e("select",{className:"cm-input",value:o?.peakAlertPosition==="center"?"center":"corner",onChange:r(d=>i("peakAlertPosition",d.target.value),"onChange")},e("option",{value:"corner"},n("peakAlertPositionCorner")),e("option",{value:"center"},n("peakAlertPositionCenter")))),e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:o?.peakAlertWebNotify===!0,onChange:r(d=>{i("peakAlertWebNotify",d.target.checked),d.target.checked&&window.Notification&&Notification.permission==="default"&&Promise.resolve(Notification.requestPermission()).catch(()=>{})},"onChange")}),e("span",null,n("peakAlertWebNotifyLabel"))),e("p",{className:"cm-hint"},n("peakAlertWebNotifyHint")))),e("div",{className:"cm-field"},e("label",null,n("peakAlertPreviewLabel")),e("div",{className:"cm-row"},e("button",{className:"cm-btn",onClick:r(()=>window.cmPeakAlertPreview?.("peak"),"onClick")},n("peakAlertPreviewPeak")),e("button",{className:"cm-btn",onClick:r(()=>window.cmPeakAlertPreview?.("offpeak"),"onClick")},n("peakAlertPreviewOffPeak")))),e("div",{className:"cm-peak-preview"},o?.peakEnabled!==!1&&o?.peakNotice!==!1?at(s,c,n):e("p",{className:"cm-hint"},n("peakNoticeHiddenHint"))),e("p",{className:"cm-hint"},w),e("p",{className:"cm-hint"},n("weekendRuleNote")))}r(gn,"PeakPanel");function re(t,s){const o=t.value;return e("input",{className:"cm-input narrow",type:"number",step:"any",min:"0",value:typeof o=="number"?String(o):"",onChange:r(a=>{const n=a.target.value;if(n===""){if(t.emptyMode==="clear"){s(null);return}if(t.emptyMode==="ignore")return;s(0);return}const l=Number(n);Number.isFinite(l)&&l>=0&&s(l)},"onChange")})}r(re,"numInput");function rt(t){const{modelId:s,entry:o,isDefault:a,draft:n,setDraft:l,t:i}=t,c=r((d,k,N)=>{if(N===null){if(a){const b=n.prices.default??{cacheHit:0,cacheMiss:0,output:0},p={...b[d]??{}};delete p[k];const A={...b};Object.keys(p).length>0?A[d]=p:delete A[d],l({...n,prices:{...n.prices,default:A}});return}const P={...n.prices.models},S=P[s]??{cacheHit:0,cacheMiss:0,output:0},f={...S[d]??{}};delete f[k];const y={...S};Object.keys(f).length>0?y[d]=f:delete y[d],P[s]=y,l({...n,prices:{...n.prices,models:P}});return}const x=Math.max(0,N);if(a){let S={...n.prices.default??{cacheHit:0,cacheMiss:0,output:0}};if(d==="base")S[k]=x;else{const f={...S[d]??{},[k]:x};S={...S,[d]:f}}l({...n,prices:{...n.prices,default:S}});return}const g={...n.prices.models},C=g[s]??{cacheHit:0,cacheMiss:0,output:0};let v={...C};if(d==="base")v[k]=x;else{const P={...C[d]??{},[k]:x};v={...C,[d]:P}}g[s]=v,l({...n,prices:{...n.prices,models:g}})},"setTier"),u=r(()=>{const d={...n.prices.models};delete d[s],l({...n,prices:{...n.prices,models:d}})},"remove"),w=r((d,k)=>{const N=k==="base"?o:o[k]??null,x=k==="base"?"ignore":"clear";return e("div",{className:"cm-price-row",key:k},e("span",null,d),re({value:N?.cacheHit??null,emptyMode:x},g=>c(k,"cacheHit",g)),re({value:N?.cacheMiss??null,emptyMode:x},g=>c(k,"cacheMiss",g)),re({value:N?.output??null,emptyMode:x},g=>c(k,"output",g)))},"tierRow");return e("div",{className:"cm-price-card"},e("div",{className:"cm-price-head"},e("span",{className:"cm-price-name"},s),e(F,null,o?.legacy===!0?e("span",{className:"cm-price-legacy"},i("legacyModel")):null,a?e("span",{className:"cm-price-legacy"},i("defaultFallback")):null,a?null:e("button",{className:"cm-btn small danger",onClick:u},i("remove")))),e("div",{className:"cm-price-row"},e("span",null,""),e("span",null,i("flatCached")),e("span",null,i("flatInput")),e("span",null,i("flatOutput"))),w(i("tierBase"),"base"),w(i("tierOffPeak"),"offPeak"),w(i("tierPeak"),"peak"))}r(rt,"PriceCard");const Ut={deepseek:"DeepSeek",openai:"OpenAI",anthropic:"Anthropic",google:"Google Gemini",moonshot:"Moonshot (Kimi)","z-ai":"Z.ai / \u667A\u8C31",xai:"xAI",alibaba:"\u963F\u91CC\u4E91\u767E\u70BC",minimax:"MiniMax",tencent:"\u817E\u8BAF\u6DF7\u5143",xiaomi:"\u5C0F\u7C73",upstage:"Upstage",nvidia:"NVIDIA",mistral:"Mistral",meta:"Meta",meituan:"\u7F8E\u56E2 LongCat","opencode-go":"OpenCode Go"};function bn(t,s){if(t===null||typeof t!="object")return"";if(t.unpriced===!0)return s("catalogUnpriced");const o=r(n=>"$"+String(n),"usd"),a=t.peak!==null&&typeof t.peak=="object"?t.peak:null;return a!==null?o(t.cacheMiss)+"/"+o(a.cacheMiss)+" in \xB7 "+o(t.output)+"/"+o(a.output)+" out":o(t.cacheMiss??t.input??0)+" in \xB7 "+o(t.output??0)+" out"}r(bn,"catalogPriceText");function hn(t){const{state:s,draft:o,setDraft:a,t:n}=t,[l,i]=E(!1),[c,u]=E({}),w=s.priceCatalog;if(w===null||typeof w!="object")return null;const d=o?.prices??s.config.prices,k=o?.priceTableDisplay??s.config.priceTableDisplay??{},N=r((p,A)=>{const M=k[p+":"+A];return typeof M=="boolean"?M:p==="deepseek"},"isDirect"),x=r((p,A,M)=>{o!==null&&a({...o,priceTableDisplay:{...k,[p+":"+A]:M}})},"setDirect"),g=r((p,A)=>p==="deepseek"?d.models?.[A]!==void 0:d.providers?.[p]?.models?.[A]!==void 0,"isMounted"),C=r((p,A,M)=>{if(o===null)return;const L=JSON.parse(JSON.stringify(M));if(p==="deepseek"){a({...o,prices:{...o.prices,models:{...o.prices.models,[A]:L}}});return}const j={...o.prices.providers??{}},B=j[p]??{};j[p]={...B,models:{...B.models??{},[A]:L}},a({...o,prices:{...o.prices,providers:j}})},"mount"),v=r((p,A)=>{if(o===null)return;if(p==="deepseek"){const j={...o.prices.models};delete j[A],a({...o,prices:{...o.prices,models:j}});return}const M={...o.prices.providers??{}},L=M[p];if(L!==void 0&&L.models!==void 0){const j={...L.models};delete j[A],M[p]={...L,models:j},a({...o,prices:{...o.prices,providers:M}})}},"unmount"),P=Object.keys(w).sort((p,A)=>p==="deepseek"?-1:A==="deepseek"?1:p.localeCompare(A)),S=r(p=>Object.values(w[p]).reduce((A,M)=>A+Object.keys(M).length,0),"countModels"),f=new Set(Object.values(w.deepseek??{}).flatMap(p=>Object.keys(p))),y=Object.keys(d.models??{}).filter(p=>!f.has(p)).sort(),b=r((p,A,M)=>{const L=g(p,A),j=N(p,A),B=L?e("label",{className:"cm-check cm-vendor-display",title:n("catalogDisplayHint")},e("input",{type:"checkbox",checked:j,onChange:r(m=>x(p,A,m.target.checked),"onChange")}),e("span",null,n("catalogDisplayLabel"))):null;if(L&&!j&&o!==null){const m=p==="deepseek"?e(rt,{key:A,modelId:A,entry:d.models[A],isDefault:!1,draft:o,setDraft:a,t:n}):e(Wt,{key:A,provider:p,modelId:A,entry:d.providers?.[p]?.models?.[A],draft:o,setDraft:a,t:n});return e("div",{key:A,className:"cm-catalog-mounted"},B,m)}return e("div",{key:A,className:"cm-catalog-row"},e("span",{className:"cm-catalog-id"},A),e("span",{className:"cm-catalog-price"},bn(M,n)),L?e("span",{className:"cm-catalog-tag"},n("mountedTag")):null,B,e("button",{className:"cm-btn small",disabled:!L&&M?.unpriced===!0,onClick:r(()=>L?v(p,A):C(p,A,M),"onClick")},n(L?"unmountBtn":"mountBtn")))},"renderModel");return e("div",{className:"cm-budget",style:{marginTop:"8px"}},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},n("catalogTitle")),e("button",{className:"cm-toggle-btn",onClick:r(()=>i(p=>!p),"onClick")},n(l?"catalogCollapse":"catalogOpen"))),l?e(F,null,e("p",{className:"cm-note"},n("catalogNote")),P.map(p=>{const A=c[p]===!0;return e("div",{key:p},e("div",{className:"cm-catalog-vendor cm-vendor-toggle",onClick:r(()=>u(M=>({...M,[p]:!A})),"onClick")},e("span",null,(A?"\u25BE ":"\u25B8 ")+(Ut[p]??p)+" \xB7 "+S(p))),A?e(F,null,p==="deepseek"?e("p",{className:"cm-hint"},n("catalogDeepseekNote")):null,Object.keys(w[p]).sort().map(M=>e("div",{key:M},e("div",{className:"cm-catalog-family"},M),Object.keys(w[p][M]).sort().map(L=>b(p,L,w[p][M][L])))),p==="deepseek"&&y.length>0?e("div",null,e("div",{className:"cm-catalog-family"},n("catalogCustomModels")),y.map(M=>b("deepseek",M,null))):null):null)})):null)}r(hn,"PriceCatalogPanel");const It=r(t=>t==="zen"?"go":t,"prettyProvider"),Qt=r(t=>{const s=t.indexOf(":");return s<=0?t:It(t.slice(0,s).toLowerCase())+t.slice(s)},"prettyProviderKey");function yn(t){const{state:s,config:o,t:a,initialTab:n}=t,[l,i]=E(n==="history"?"history":"today"),[c,u]=E(!1),w=r(f=>{if(f===null||typeof f!="object")return{};if(f.byProviderModel&&Object.keys(f.byProviderModel).length>0)return f.byProviderModel;if(f.byModel&&Object.keys(f.byModel).length>0)return f.byModel;const y={};if(Array.isArray(f.sessions))for(const b of f.sessions){if(b===null||typeof b!="object")continue;const p=typeof b.provider=="string"&&b.provider.length>0?b.provider:"deepseek",A=typeof b.model=="string"&&b.model.length>0?b.model:"unknown",M=p+":"+A,L=y[M]??(y[M]={input:0,output:0,cacheRead:0,cacheWrite:0,reasoning:0,cost:0}),j=r(B=>typeof B=="number"&&Number.isFinite(B)&&B>=0?B:0,"num");L.input+=j(b.input),L.output+=j(b.output),L.cacheRead+=j(b.cacheRead),L.cacheWrite+=j(b.cacheWrite),L.reasoning+=j(b.reasoning),L.cost+=j(b.cost)}if(Object.keys(y).length>0)return y;if(Number(f.cost)>0||Number(f.input)>0||Number(f.output)>0){const b=r(p=>typeof p=="number"&&Number.isFinite(p)&&p>=0?p:0,"num");return{"deepseek:legacy":{input:b(f.input),output:b(f.output),cacheRead:b(f.cacheRead),cacheWrite:b(f.cacheWrite),reasoning:b(f.reasoning),cost:b(f.cost)}}}return{}},"modelMapOf"),k=r(f=>{const y={},b=r(p=>{for(const A of Object.keys(p??{})){const M=p[A];if(M===null||typeof M!="object")continue;const L=y[A]??(y[A]={input:0,output:0,cacheRead:0,cacheWrite:0,reasoning:0,cost:0});L.input+=Number(M.input)||0,L.output+=Number(M.output)||0,L.cacheRead+=Number(M.cacheRead)||0,L.cacheWrite+=Number(M.cacheWrite)||0,L.reasoning+=Number(M.reasoning)||0,L.cost+=Number(M.cost)||0}},"add");if(f==="today")b(w(s.today));else for(const p of s.history??[])b(w(p));return Object.entries(y).map(([p,A])=>{const M=p.indexOf(":"),L=(M>0?p.slice(0,M):"deepseek").toLowerCase(),j=M>0?p.slice(M+1):p,B=A.input+A.output+A.cacheRead+A.cacheWrite+A.reasoning,m=A.cacheRead+A.input;return{label:p==="deepseek:legacy"?a("modelStatsLegacy"):L==="deepseek"||L===""?j:It(L)+":"+j,...A,tokens:B,cls:_e(L,j,o),hitRate:m>0?A.cacheRead/m:null,blended:B>0&&A.cost>0?A.cost/B*1e6:null,perUsd:A.cost>0?B/A.cost:null}}).filter(p=>p.tokens>0||p.cost>0)},"aggregate")(l).sort((f,y)=>y.cost-f.cost||y.tokens-f.tokens),N=r(f=>(Math.max(0,Math.min(1,f))*100).toFixed(1)+"%","pct"),x=k.reduce((f,y)=>Math.max(f,y.cost),0),g=k.reduce((f,y)=>Math.max(f,y.tokens),0),C=k.reduce((f,y)=>Math.max(f,y.perUsd??0),0),v=r((f,y)=>e("button",{className:"cm-mstats-tab"+(l===f?" active":""),onClick:r(()=>i(f),"onClick")},y),"tabBtn"),P=r(f=>f.cls==="plan"?e("span",{className:"cm-plan-tag",title:a("billingClassLabel")},a("billingClassPlan")):null,"classChip"),S=r((f,y,b,p,A)=>e("div",{className:"cm-mstats-row"},e("span",{className:"cm-mstats-name"},f,A??null),e("div",{className:"cm-mstats-barbg"},e("div",{className:"cm-mstats-bar "+b,style:{width:N(y)}})),e("span",{className:"cm-mstats-val"},p)),"barRow");return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("button",{type:"button",className:"cm-collapse-h","aria-expanded":String(c),onClick:r(()=>u(!c),"onClick")},e("span",{className:"cm-caret"+(c?" open":"")}),e("h3",{className:"cm-h"},a("modelStatsTitle")))),c?e("div",{className:"cm-collapse-body"},e("div",{className:"cm-mstats-tabs"},v("today",a("modelStatsToday")),v("history",a("modelStatsHistory"))),k.length===0?e("p",{className:"cm-note"},a("modelStatsEmpty")):e(F,null,e("div",{className:"cm-mstats-h"},a("modelStatsCostH")),k.map(f=>e(F,{key:"c:"+f.label},S(f.label,x>0?f.cost/x:0,"cost",Z(f.cost,o),P(f)))),e("div",{className:"cm-mstats-h"},a("modelStatsTokensH")),e("div",{className:"cm-mstats-legend"},e("span",null,e("span",{className:"cm-mstats-dot",style:{background:"var(--dsw-alias-state-business-primary)"}}),a("modelStatsInput")),e("span",null,e("span",{className:"cm-mstats-dot",style:{background:"#ff9800"}}),a("modelStatsCache")),e("span",null,e("span",{className:"cm-mstats-dot",style:{background:"#34a853"}}),a("modelStatsOutput"))),[...k].sort((f,y)=>y.tokens-f.tokens).map(f=>e("div",{className:"cm-mstats-row",key:"t:"+f.label},e("span",{className:"cm-mstats-name"},f.label),e("div",{className:"cm-mstats-barbg"},e("div",{className:"cm-mstats-seg in",style:{width:N(g>0?f.input/g:0)}}),e("div",{className:"cm-mstats-seg cache",style:{width:N(g>0?(f.cacheRead+f.cacheWrite)/g:0)}}),e("div",{className:"cm-mstats-seg out",style:{width:N(g>0?(f.output+f.reasoning)/g:0)}})),e("span",{className:"cm-mstats-val"},q(f.tokens)))),e("div",{className:"cm-mstats-h"},a("modelStatsHitH")),[...k].sort((f,y)=>(y.hitRate??-1)-(f.hitRate??-1)).map(f=>e(F,{key:"h:"+f.label},S(f.label,f.hitRate??0,"hit",f.hitRate===null?"\u2014":(f.hitRate*100).toFixed(1)+"%"))),e("div",{className:"cm-mstats-h"},a("modelStatsValueH")),[...k].sort((f,y)=>(y.perUsd??-1)-(f.perUsd??-1)).map(f=>e(F,{key:"v:"+f.label},S(f.label,C>0?(f.perUsd??0)/C:0,"value",f.perUsd===null?"\u2014":q(f.perUsd)+" tok/$"+(f.blended!==null?" \xB7 "+a("modelStatsBlended",{price:"$"+f.blended.toFixed(2)}):"")))),e("p",{className:"cm-mstats-note"},a("modelStatsNote")))):null)}r(yn,"ModelStatsPanel");function kn(t,s){return t==="fiveHour"?s==="en"?"5-hour":"5 \u5C0F\u65F6":t==="weekly"?s==="en"?"This week":"\u672C\u5468":t==="monthly"?s==="en"?"This month":"\u672C\u6708":t==="daily"?s==="en"?"Today":"\u5F53\u65E5":t}r(kn,"planWindowLabelOf");function wn(t,s){if(t==="go")return"OpenCode Go";const o=Ce.find(a=>a.id===t);return o!==void 0?s(o.labelKey):t}r(wn,"planProviderLabelOf");const Ht=["fiveHour","weekly","monthly","daily"];function xn(t,s){const o=new Map,a=r(n=>{const l=new Date(n),i=r(c=>String(c).padStart(2,"0"),"pad");if(s==="monthly")return l.getFullYear()+"-"+i(l.getMonth()+1);if(s==="weekly"){const c=new Date(l.getFullYear(),l.getMonth(),l.getDate()-(l.getDay()+6)%7);return c.getFullYear()+"-"+i(c.getMonth()+1)+"-"+i(c.getDate())}return l.getFullYear()+"-"+i(l.getMonth()+1)+"-"+i(l.getDate())},"bucketKeyOf");for(const n of Object.values(t??{}))for(const l of n??[]){if(l===null||typeof l!="object"||!(l.tokens>0)&&!(l.cost>0))continue;const i=a(Number(l.t1)||Number(l.t0)),c=o.get(i)??{key:i,tokens:0,cost:0,pct:0,intervals:0};c.tokens+=Number(l.tokens)||0,c.cost+=Number(l.cost)||0,c.pct+=Number(l.pct)||0,c.intervals+=1,o.set(i,c)}return[...o.values()].map(n=>({...n,per1Tokens:n.pct>0?n.tokens/n.pct:null,fullTokens:n.pct>0?n.tokens/n.pct*100:null})).sort((n,l)=>n.key<l.key?-1:n.key>l.key?1:0)}r(xn,"aggregatePlanIntervals");function vn(t){const{state:s,config:o,t:a}=t,[n,l]=E(!1),[i,c]=E("daily"),u=z(o?.locale),w=s?.planStats,d=w!=null&&typeof w.providers=="object"?w.providers:{},k=Object.keys(d).sort(),N=r(p=>Z(Number(p)||0,o??s?.config),"fmtMoney"),x=r(p=>p.method==="none"||p.per1Tokens===null?"\u2014":q(p.per1Tokens)+" tok \xB7 "+N(p.per1Cost),"estTextOf"),g=r(p=>p.method==="none"||p.fullTokens===null?"\u2014":q(p.fullTokens)+" tok \xB7 "+N(p.fullCost),"fullTextOf"),C=r(p=>p.method==="sample"?a("planStatsMethodSample"):p.method==="live"?a("planStatsMethodLive"):a("planStatsMethodNone"),"methodRawOf"),v=r(p=>{let A=C(p);return p.method==="sample"&&Number(p.sampleAt)>0&&(A=a("planStatsMethodSampleAt",{method:A,time:new Date(Number(p.sampleAt)).toLocaleString(u==="en"?"en-US":"zh-CN")})),(p.method==="sample"||p.method==="live")&&p.confidence==="low"&&(A+=" \xB7 "+a("planStatsConfidenceLow")),A},"methodTagOf"),P=r(([p,A,M])=>e("tr",{key:A+":"+p},e("td",null,kn(p,u)),e("td",{className:"num"},Math.round(M.percent*10)/10+"%"),e("td",{className:"num"},q(M.localTokens)+" tok \xB7 "+N(M.localCost)),e("td",{className:"num"},x(M)),e("td",{className:"num"},g(M)),e("td",{className:"num cm-plan-reset"},M.resetsAt.length>0?a("planStatsResets",{time:new Date(M.resetsAt).toLocaleString(u==="en"?"en-US":"zh-CN")}):"\u2014"),e("td",{className:"cm-plan-method"},v(M))),"windowRow"),S=n?k.flatMap(p=>Object.entries(d[p]?.intervals??{})).map(([p,A])=>({winKey:p,list:A})):[],f=xn(Object.fromEntries(S.map(p=>[p.winKey,p.list])),i),y=f.reduce((p,A)=>Math.max(p,A.fullTokens??0),0),b=r((p,A)=>e("button",{key:p,className:"cm-mstats-tab"+(i===p?" active":""),onClick:r(()=>c(p),"onClick")},A),"granBtn");return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("button",{type:"button",className:"cm-collapse-h","aria-expanded":String(n),onClick:r(()=>l(!n),"onClick")},e("span",{className:"cm-caret"+(n?" open":"")}),e("h3",{className:"cm-h"},a("planStatsTitle")))),n?e("div",{className:"cm-collapse-body"},k.length===0?e("p",{className:"cm-empty"},a("planStatsEmpty")):e(F,null,k.map(p=>{const A=d[p]?.windows??{},M=[...Ht.filter(L=>A[L]!==void 0).map(L=>[L,p,A[L]]),...Object.keys(A).filter(L=>!Ht.includes(L)).map(L=>[L,p,A[L]])];return e("div",{key:p,className:"cm-plan-provider"},e("div",{className:"cm-plan-provider-name"},wn(p,a),e("span",{className:"cm-plan-updated"},(()=>{const L=Number(d[p]?.generatedAt)||Number(w?.generatedAt)||0;return L>0?new Date(L).toLocaleTimeString(u==="en"?"en-US":"zh-CN"):""})())),e("table",{className:"cm-table"},e("thead",null,e("tr",null,e("th",null,a("planStatsWindow")),e("th",{className:"num"},a("planStatsPercent")),e("th",null,a("planStatsLocal")),e("th",null,a("planStatsPer1")),e("th",null,a("planStatsFull")),e("th",null,""),e("th",null,""))),e("tbody",null,M.map(P))))}),e("div",{className:"cm-mstats-h",style:{marginTop:"10px"}},a("planStatsCurveTitle")),e("div",{className:"cm-mstats-tabs"},b("daily",a("planStatsDaily")),b("weekly",a("planStatsWeekly")),b("monthly",a("planStatsMonthly"))),f.length===0?e("p",{className:"cm-note"},a("planStatsCurveEmpty")):e(F,null,[...f].reverse().map(p=>e("div",{className:"cm-mstats-row",key:p.key},e("span",{className:"cm-mstats-name"},p.key),e("div",{className:"cm-mstats-barbg"},e("div",{className:"cm-mstats-bar value",style:{width:(y>0?(p.fullTokens??0)/y*100:0).toFixed(1)+"%"}})),e(te,{label:a("planStatsBarTip",{date:p.key,full:p.fullTokens===null?"\u2014":q(p.fullTokens),per1:p.per1Tokens===null?"\u2014":q(p.per1Tokens),tokens:q(p.tokens),cost:N(p.cost),intervals:p.intervals}),side:"top",delayMs:200},e("span",{className:"cm-mstats-val"},p.fullTokens===null?"\u2014":q(p.fullTokens)))))),e("p",{className:"cm-note"},a("planStatsNote")))):null)}r(vn,"PlanStatsPanel");function Wt(t){const{provider:s,modelId:o,entry:a,draft:n,setDraft:l,t:i}=t,c=r(d=>{const k={...n.prices.providers??{}},N=k[s]??{};k[s]={...N,models:d},l({...n,prices:{...n.prices,providers:k}})},"writeModels"),u=r((d,k)=>{if(n===null)return;const N={...(n.prices.providers??{})[s]?.models??{}};N[o]={...N[o]??{},[d]:Math.max(0,k)},c(N)},"setNum"),w=r(()=>{if(n===null)return;const d={...(n.prices.providers??{})[s]?.models??{}};delete d[o],c(d)},"remove");return e("div",{className:"cm-price-card"},e("div",{className:"cm-price-head"},e("span",{className:"cm-price-name"},o),e(F,null,a?.unpriced===!0?e("span",{className:"cm-price-legacy"},i("catalogUnpriced")):null,e("button",{className:"cm-btn small danger",onClick:w},i("unmountBtn")))),a?.unpriced===!0?null:e(F,null,e("div",{className:"cm-price-row"},e("span",null,""),e("span",null,i("flatInput")),e("span",null,i("flatCached")),e("span",null,i("flatOutput"))),e("div",{className:"cm-price-row"},e("span",null,"USD"),re({value:a?.input??null,emptyMode:"ignore"},d=>u("input",d)),re({value:a?.cachedInput??null,emptyMode:"ignore"},d=>u("cachedInput",d)),re({value:a?.output??null,emptyMode:"ignore"},d=>u("output",d)))))}r(Wt,"ProviderPriceCard");function Nn(t){const{state:s,api:o,t:a,draft:n,setDraft:l}=t,[i,c]=E(!1),[u,w]=E(null),d=s.balance,k=s.config,N=s.reconcile,x=(n?.balance??k.balance??{}).reconcile!==!1,g=r(S=>{n===null||typeof l!="function"||l({...n,balance:{...n.balance??k.balance??{},reconcile:S.target.checked}})},"toggleReconcile"),C=r(async()=>{if(!i){c(!0),w(null);try{const S=await o.refreshBalance();w({kind:S.ok?"ok":"err",text:S.message})}catch(S){w({kind:"err",text:a("balanceRefreshFailed",{message:S?.message??String(S)})})}finally{c(!1)}}},"doRefresh"),v=r(S=>be(S,k,d?.currency),"money"),P=d.status==="ok"?e("div",{className:"cm-bal-line"},e("span",null,a("balanceLine",{total:v(d.totalBalance),granted:v(d.grantedBalance),toppedUp:v(d.toppedUpBalance),time:d.fetchedAt>0?new Date(d.fetchedAt).toLocaleTimeString():"\u2014"}))):d.status==="error"?e("div",{className:"cm-bal-line err"},a("balanceQueryFailedHint",{message:d.message||a("unknownError")})):e("div",{className:"cm-bal-line"},a("balanceNotQueried"));return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},a("accountBalance")),e("button",{className:"cm-btn small",onClick:C,disabled:i},a(i?"refreshing":"refreshBalance"))),P,N!==void 0&&N.ok===!1?e("div",{className:"cm-bal-line warn"},"\u26A0 "+N.message):null,e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:x,onChange:g}),a("reconcileLabel")),u!==null?e("div",{className:"cm-msg "+u.kind},u.text):null)}r(Nn,"BalancePanel");const zt="dsh-cost-meter.customBalance.open";function Sn(){try{return window.localStorage.getItem(zt)!=="0"}catch{return!0}}r(Sn,"readCustomBalanceOpen");function Cn(t){const{state:s,api:o,t:a,draft:n,setDraft:l}=t,[i,c]=E(!1),[u,w]=E(null),[d,k]=E(Sn),[N,x]=E(""),[g,C]=E(""),[v,P]=E({headers:"",extract:""}),S=Se(!1),f=s.customBalance,y=s.config,b=n?.customBalance??y.customBalance??{},p=b.enabled===!0,A=r(()=>{k(D=>{const I=!D;try{window.localStorage.setItem(zt,I?"1":"0")}catch{}return I})},"toggleOpen");le(()=>{d?(S.current||(x(JSON.stringify(b.request?.headers??{},null,2)),C(JSON.stringify(b.extract??{},null,2)),P({headers:"",extract:""})),S.current=!0):S.current=!1},[d,b]);const M=r((D,I)=>{n!==null&&l({...n,customBalance:{...n.customBalance??y.customBalance??{},[D]:I}})},"setCustomBalance"),L=r((D,I)=>{if(n===null)return;const Y=n.customBalance??y.customBalance??{};l({...n,customBalance:{...Y,request:{...Y.request??{},[D]:I}}})},"setCustomBalanceRequest"),j=r(D=>{x(D);try{const I=JSON.parse(D);if(I===null||typeof I!="object"||Array.isArray(I))throw new Error("invalid");if(Object.values(I).some(Y=>typeof Y!="string"))throw new Error("invalid");P(Y=>({...Y,headers:""})),L("headers",I)}catch{P(I=>({...I,headers:a("customBalanceInvalidJson")}))}},"applyHeadersText"),B=r(D=>{C(D);try{const I=JSON.parse(D);if(I===null||typeof I!="object"||Array.isArray(I))throw new Error("invalid");P(Y=>({...Y,extract:""})),M("extract",I)}catch{P(I=>({...I,extract:a("customBalanceInvalidJson")}))}},"applyExtractText"),m=r(async()=>{if(!(i||y.customBalance?.enabled!==!0)){c(!0),w(null);try{const D=await o.refreshCustomBalance();w({kind:D.ok?"ok":"err",text:D.message})}catch(D){w({kind:"err",text:a("customBalanceRefreshFailed",{message:D?.message??String(D)})})}finally{c(!1)}}},"doRefresh"),O=f?.status==="ok"?e(F,null,y.balance?.showProgressBar===!0?e("div",{className:"cm-budget",style:{marginTop:"8px"}},e(Ze,{segments:$e(s,y),direction:oe(y,"balance")}),e("div",{className:"cm-bal-line"},et(f,y,a,s))):e("div",{className:"cm-bal-line"},a("customBalanceRemaining",{amount:ke(f.remaining,y,f)}))):f?.status==="error"?e("div",{className:"cm-bal-line err"},f.message||a("unknownError")):e("div",{className:"cm-bal-line"},a("balanceNotQueried")),Q=d?e(F,null,e("p",{className:"cm-note"},a("customBalanceConfigNote")),e("div",{className:"cm-grid"},e("div",{className:"cm-field"},e("label",null,a("customBalanceLabelZh")),e("input",{className:"cm-input",value:b.label??"",onChange:r(D=>M("label",D.target.value),"onChange")})),e("div",{className:"cm-field"},e("label",null,a("customBalanceLabelEn")),e("input",{className:"cm-input",value:b.labelEn??"",onChange:r(D=>M("labelEn",D.target.value),"onChange")})),e("div",{className:"cm-field"},e("label",null,a("customBalanceUnitLabel")),e("select",{className:"cm-input",value:b.unit==="CNY"||b.unit==="EUR"?b.unit:"USD",onChange:r(D=>M("unit",D.target.value),"onChange")},e("option",{value:"USD"},"USD ($)"),e("option",{value:"CNY"},"CNY (\xA5)"),e("option",{value:"EUR"},"EUR (\u20AC)"))),e("div",{className:"cm-field"},e("label",null,a("customBalanceDisplayLabel")),e("select",{className:"cm-input",value:b.display??"both",onChange:r(D=>M("display",D.target.value),"onChange")},e("option",{value:"sidebar"},a("balanceSidebar")),e("option",{value:"settings"},a("balanceSettings")),e("option",{value:"both"},a("balanceBoth")),e("option",{value:"off"},a("off")))),e("div",{className:"cm-field"},e("label",null,a("customBalanceRefreshInterval")),re({value:b.refreshMinutes??15},D=>M("refreshMinutes",Math.min(1440,Math.max(1,Math.floor(D)))))),e("div",{className:"cm-field"},e("label",null,a("customBalanceMethod")),e("select",{className:"cm-input",value:b.request?.method??"GET",onChange:r(D=>L("method",D.target.value),"onChange")},e("option",{value:"GET"},"GET"),e("option",{value:"POST"},"POST"))),e("div",{className:"cm-field",style:{gridColumn:"1 / -1"}},e("label",null,a("customBalanceUrl")),e("input",{className:"cm-input",value:b.request?.url??"",placeholder:"https://example.com/key/info",onChange:r(D=>L("url",D.target.value),"onChange")})),e("div",{className:"cm-field",style:{gridColumn:"1 / -1"}},e("label",null,a("customBalanceHeaders")),e("textarea",{className:"cm-input",rows:5,value:N,onChange:r(D=>j(D.target.value),"onChange")}),v.headers?e("span",{className:"cm-hint err"},v.headers):null),e("div",{className:"cm-field",style:{gridColumn:"1 / -1"}},e("label",null,a("customBalanceExtract")),e("textarea",{className:"cm-input",rows:8,value:g,onChange:r(D=>B(D.target.value),"onChange")}),v.extract?e("span",{className:"cm-hint err"},v.extract):null))):e("p",{className:"cm-note cm-collapsed-note"},Xe(b,z(y?.locale))||a("customBalanceTitle"));return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},a("customBalanceTitle")),e("button",{className:"cm-toggle-btn",onClick:A},a(d?"customBalanceCollapseConfig":"customBalanceOpenConfig")),e("button",{className:"cm-btn small",onClick:m,disabled:i||y.customBalance?.enabled!==!0},a(i?"refreshing":"refreshCustomBalance"))),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:p===!0,onChange:r(D=>M("enabled",D.target.checked),"onChange")}),e("span",null,a("enable"))),O,Q,u!==null?e("div",{className:"cm-msg "+u.kind},u.text):null)}r(Cn,"CustomBalancePanel");function Pn(t){const{state:s,api:o,t:a,draft:n,setDraft:l}=t,[i,c]=E(!1),[u,w]=E(null),d=s.goQuota,k=s.config,N=n?.goQuota?.enabled??k.goQuota?.enabled??!0,x=r((b,p)=>{n!==null&&l({...n,goQuota:{...n.goQuota??k.goQuota,[b]:p}})},"setGoQuota"),g=r(async()=>{if(!(i||N===!1)){c(!0),w(null);try{const b=await o.refreshGoQuota();w({kind:b.ok?"ok":"err",text:b.message})}catch(b){w({kind:"err",text:a("syncFailed",{message:b?.message??String(b)})})}finally{c(!1)}}},"doRefresh"),C=k.goQuota?.main==="weekly"||k.goQuota?.main==="monthly"?k.goQuota.main:"rolling",v=[C,...["rolling","weekly","monthly"].filter(b=>b!==C)],P=r(b=>b==="rolling"?"goWindowRolling":b==="weekly"?"goWindowWeekly":"goWindowMonthly","goLabelOf"),S=r(b=>b==="rolling"?d.rolling:b==="weekly"?d.weekly:d.monthly,"goWinOf"),f=r((b,p,A)=>{const M=p!==null&&typeof p=="object"&&typeof p.percent=="number",L=M?Math.max(0,Math.min(100,Number(p.percent)||0)):null,j=me(L,oe(k,"go")),B=M&&typeof p.resetsAt=="string"&&p.resetsAt.length>0?a("goResetAt",{time:new Date(p.resetsAt).toLocaleString()}):"";return e("div",{className:"cm-go-row"+(A?" main":"")},e("span",{className:"cm-go-label"},a(b)),e("div",{className:"cm-go-bar"},L===null?null:e("div",{className:"cm-go-fill",style:{width:j.width+"%"}})),e("span",{className:"cm-go-num"},j.label===null?"\u2014":a("goQuotaPercent",{percent:String(Math.round(j.label))})),B?e("span",{className:"cm-go-reset"},B):null)},"windowRow"),y=N===!1?e("p",{className:"cm-note"},a("goQuotaDisabledNote")):d.status==="ok"?e("div",{className:"cm-go-list"},v.map(b=>f(P(b),S(b),b===C)),e("div",{className:"cm-go-time"},a("goQuotaFetchedAt",{time:d.fetchedAt>0?new Date(d.fetchedAt).toLocaleTimeString():"\u2014"}))):d.status==="error"?e("div",{className:"cm-bal-line err"},d.message||a("unknownError")):d.status==="off"&&d.message?e("p",{className:"cm-note"},d.message):e("div",{className:"cm-bal-line"},a("goQuotaNotQueried"));return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},a("goQuotaTitle")),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:N===!0,onChange:r(b=>x("enabled",b.target.checked),"onChange")}),e("span",null,a("enableGoQuota"))),e("button",{className:"cm-btn small",onClick:g,disabled:i||N===!1},a(i?"refreshing":"refreshGoQuota"))),y,u!==null?e("div",{className:"cm-msg "+u.kind},u.text):null)}r(Pn,"GoQuotaPanel");const Ce=[{id:"anthropic",labelKey:"codingPlanAnthropic"},{id:"zai",labelKey:"codingPlanZai"},{id:"minimax",labelKey:"codingPlanMinimax"},{id:"kimi",labelKey:"codingPlanKimi"},{id:"openrouter",labelKey:"codingPlanOpenrouter"},{id:"siliconflow",labelKey:"codingPlanSiliconflow"},{id:"commandcode",labelKey:"codingPlanCommandcode"},{id:"scnet",labelKey:"codingPlanScnet"},{id:"volcengine",labelKey:"codingPlanVolcengine"},{id:"qwen",labelKey:"codingPlanQwen"}],Gt="dsh-cost-meter.codingPlans.open";function An(){try{return window.localStorage.getItem(Gt)==="1"}catch{return!1}}r(An,"readCodingPlansOpen");function Mn(t){const{state:s,api:o,t:a,draft:n,setDraft:l}=t,[i,c]=E(null),[u,w]=E({}),[d,k]=E(An),N=r(()=>{k(B=>{const m=!B;try{window.localStorage.setItem(Gt,m?"1":"0")}catch{}return m})},"toggleOpen"),x=s.codingPlans??{},g=s.config,C=r(B=>n?.codingPlans?.[B]??g.codingPlans?.[B]??{},"draftEntry"),v=r(B=>x[B]??{status:"off",message:"",fetchedAt:0,windows:{}},"liveEntry"),P=r((B,m,O)=>{if(n===null)return;const Q=n.codingPlans??g.codingPlans??{};l({...n,codingPlans:{...Q,[B]:{...Q[B]??{},[m]:O}}})},"setPlan"),[S,f]=E(""),y=r(B=>B?.rates!==null&&typeof B?.rates=="object"&&!Array.isArray(B.rates)?B.rates:{},"ratesDraftOf"),b=r((B,m,O)=>{if(n===null)return;const Q=n.codingPlans??g.codingPlans??{},D={...(Q.qwen??{}).rates??{}},I={...D[B]??{}},Y=String(O).trim();if(Y==="")delete I[m];else{const K=Number(Y);Number.isFinite(K)&&K>0&&(I[m]=K)}I.input===void 0&&I.cachedInput===void 0&&I.output===void 0?delete D[B]:D[B]=I,l({...n,codingPlans:{...Q,qwen:{...Q.qwen??{},rates:D}}})},"setPlanRates"),p=r(B=>{if(n===null)return;const m=n.codingPlans??g.codingPlans??{},O={...(m.qwen??{}).rates??{}};O[B]={...O[B]??{}},l({...n,codingPlans:{...m,qwen:{...m.qwen??{},rates:O}}})},"setPlanRatesAdd"),A=r(B=>{if(n===null)return;const m=n.codingPlans??g.codingPlans??{},O={...(m.qwen??{}).rates??{}};delete O[B],l({...n,codingPlans:{...m,qwen:{...m.qwen??{},rates:O}}})},"setPlanRatesRemove"),M=r(async B=>{if(i===null){c(B),w(m=>({...m,[B]:null}));try{const m=await o.refreshCodingPlan(B);w(O=>({...O,[B]:{kind:m.ok?"ok":"err",text:m.message}}))}catch(m){w(O=>({...O,[B]:{kind:"err",text:a("syncFailed",{message:m?.message??String(m)})}}))}finally{c(null)}}},"doRefresh"),L=r((B,m)=>{if(typeof m?.percent!="number")return e("div",{className:"cm-go-row"},e("span",{className:"cm-go-label"},B.replace(/_/g," ")),e("span",{className:"cm-go-num"},typeof m?.text=="string"?m.text:"\u2014"));const O=m?Math.max(0,Math.min(100,Number(m.percent)||0)):0,Q=me(O,oe(g,"plan")),D=m&&typeof m.resetsAt=="string"&&m.resetsAt.length>0?a("goResetAt",{time:new Date(m.resetsAt).toLocaleString()}):"";return e("div",{className:"cm-go-row"},e("span",{className:"cm-go-label"},B.replace(/_/g," ")),e("div",{className:"cm-go-bar"},e("div",{className:"cm-go-fill",style:{width:Q.width+"%"}})),e("span",{className:"cm-go-num"},a("goQuotaPercent",{percent:String(Math.round(Q.label))})),D?e("span",{className:"cm-go-reset"},D):null)},"windowRow"),j=r(({id:B,labelKey:m})=>{const O=C(B),Q=v(B),D=O.enabled===!0,I=Q.windows!==null&&typeof Q.windows=="object"?Q.windows:{},Y=D===!1?e("p",{className:"cm-note"},a("codingPlanDisabledNote")):Q.status==="ok"?e("div",{className:"cm-go-list"},Object.keys(I).length>0?B==="minimax"&&(Me(I).five!=null||Me(I).seven!=null)?e(jt,{five:Me(I).five,seven:Me(I).seven,fetchedAt:Q.fetchedAt,t:a,wide:!0,direction:oe(g,"plan")}):Object.entries(I).map(([K,ie])=>L(K,ie)):e("div",{className:"cm-bal-line"},a("codingPlanNotQueried")),e("div",{className:"cm-go-time"},a("goQuotaFetchedAt",{time:Q.fetchedAt>0?new Date(Q.fetchedAt).toLocaleTimeString():"\u2014"}))):Q.status==="error"?e("div",{className:"cm-bal-line err"},Q.message||a("unknownError")):Q.status==="off"&&Q.message?e("p",{className:"cm-note"},Q.message):e("div",{className:"cm-bal-line"},a("codingPlanNotQueried"));return e("div",{key:B,className:"cm-budget",style:{marginTop:"8px"}},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},a(m)),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:D,onChange:r(K=>P(B,"enabled",K.target.checked),"onChange")}),e("span",null,a("enableCodingPlan"))),e("button",{className:"cm-btn small",onClick:r(()=>{M(B)},"onClick"),disabled:i!==null||D===!1},a(i===B?"refreshing":"refreshCodingPlan"))),D?e("div",{className:"cm-field"},e("label",null,a("codingPlanDisplayLabel")),e("select",{className:"cm-input",value:typeof O.display=="string"?O.display:B==="minimax"?"both":"settings",onChange:r(K=>P(B,"display",K.target.value),"onChange")},e("option",{value:"sidebar"},a("balanceSidebar")),e("option",{value:"settings"},a("balanceSettings")),e("option",{value:"both"},a("balanceBoth")),e("option",{value:"off"},a("off"))),e("span",{className:"cm-hint"},a("codingPlanDisplayNote"))):null,D&&B!=="scnet"&&B!=="qwen"?e("div",{className:"cm-field"},e("label",null,a("codingPlanRefreshIntervalLabel")),re({value:typeof O.refreshMinutes=="number"&&Number.isFinite(O.refreshMinutes)&&O.refreshMinutes>0?O.refreshMinutes:15},K=>{P(B,"refreshMinutes",Math.min(1440,Math.max(1,Math.floor(K))))})):null,D?B==="scnet"||B==="qwen"?e(F,null,e("div",{className:"cm-field"},e("label",null,a(B==="qwen"?"qwenPlanCreditsLabel":"scnetPlanCreditsLabel")),e("input",{className:"cm-input",type:"number",min:"1",step:"1000",value:typeof O.planCredits=="number"&&Number.isFinite(O.planCredits)&&O.planCredits>0?O.planCredits:B==="qwen"?5e5:24e4,onChange:r(K=>{const ie=Number(K.target.value);Number.isFinite(ie)&&ie>0&&P(B,"planCredits",Math.floor(ie))},"onChange")})),e("div",{className:"cm-field"},e("label",null,a(B==="qwen"?"qwenPlanStartLabel":"scnetPlanStartLabel")),e("input",{className:"cm-input",type:"date",value:typeof O.planStart=="string"?O.planStart:"",onChange:r(K=>P(B,"planStart",K.target.value),"onChange")})),B==="qwen"?e(F,null,e("div",{className:"cm-field"},e("label",null,a("qwenRatesLabel"))),Object.keys(y(O)).sort().map(K=>e("div",{key:K,className:"cm-match-row"},e("span",{style:{minWidth:"120px"}},K),["input","cachedInput","output"].map(ie=>e("input",{key:ie,className:"cm-input narrow",type:"number",min:"0",step:"0.1",value:y(O)[K]?.[ie]??"",placeholder:a("qwenRatePlaceholder"),onChange:r(T=>{const R=T.target.value;b(K,ie,R)},"onChange")})),e("button",{className:"cm-btn small",onClick:r(()=>A(K),"onClick")},a("overrideRemove")))),e("div",{className:"cm-buttons"},e("input",{className:"cm-input narrow",type:"text",placeholder:a("qwenRatesModelPlaceholder"),value:S,onChange:r(K=>f(K.target.value),"onChange")}),e("button",{className:"cm-btn small",onClick:r(()=>{const K=S.trim();K.length!==0&&(p(K),f(""))},"onClick"),disabled:S.trim().length===0},a("qwenRatesAdd")))):null,e("p",{className:"cm-note"},a(B==="qwen"?"qwenLocalNote":"scnetLocalNote"))):B==="volcengine"?e(F,null,e("div",{className:"cm-field"},e("label",null,a("volcengineAccessKeyIdLabel"))),e(je,{target:"codingPlans.volcengine.ak",configured:Q.keyConfigured===!0,source:Q.keySource,t:a,api:o,placeholder:a("volcengineAccessKeyPlaceholder")}),e("div",{className:"cm-field"},e("label",null,a("volcengineSecretAccessKeyLabel"))),e(je,{target:"codingPlans.volcengine.sk",configured:Q.keyConfigured===!0,source:Q.keySource,t:a,api:o,placeholder:a("volcengineSecretPlaceholder")}),e("p",{className:"cm-note"},a("volcengineNote"))):e(F,null,e("div",{className:"cm-field"},e("label",null,a("codingPlanKeyLabel"))),e(je,{target:"codingPlans."+B,configured:Q.keyConfigured===!0,source:Q.keySource,t:a,api:o,placeholder:"sk-\u2026"})):null,Y,u[B]!=null?e("div",{className:"cm-msg "+u[B].kind},u[B].text):null)},"renderRow");return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},a("codingPlansTitle")),e("button",{className:"cm-toggle-btn",onClick:N},a(d?"codingPlansCollapse":"codingPlansOpen"))),d?e(F,null,e("p",{className:"cm-note"},a("codingPlansNote")),Ce.map(j)):e("p",{className:"cm-note cm-collapsed-note"},a("codingPlansCollapsedHint")))}r(Mn,"CodingPlansPanel");const Tn=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],_t=r(t=>(t.input??0)+(t.output??0)+(t.cacheRead??0)+(t.cacheWrite??0),"dayTokensOf");function it(t){const s=t.useCost?t.useCost(y=>y):void 0,o=t.state??s?.state;if(!o)return null;const a=o.config,n=z(a?.locale),l=t.t??$(n),i=Array.isArray(o.history)?o.history:[];if(i.length===0)return e("div",null,e("h3",{className:"cm-h"},l("usageTitle")),e("p",{className:"cm-empty"},l("usageEmpty")));const c=o.meta?.dayKey??"",u=new Map(i.map(y=>[y.date,y])),w=r(y=>{const b=r(p=>String(p).padStart(2,"0"),"pad");return y.getFullYear()+"-"+b(y.getMonth()+1)+"-"+b(y.getDate())},"dayKeyOf"),d=new Date;d.setHours(0,0,0,0);const k=new Date(d);k.setDate(k.getDate()+(6-(d.getDay()+6)%7));const N=26,x=[],g=[];let C=-1;for(let y=N-1;y>=0;y-=1){for(let p=0;p<7;p+=1){const A=new Date(k);A.setDate(A.getDate()-(y*7+(6-p)));const M=u.get(w(A));x.push(M!==void 0?{day:M,tokens:_t(M)}:{day:{date:w(A)},tokens:0})}const b=new Date(k);b.setDate(b.getDate()-(y*7+6)),g.push(b.getMonth()!==C?n==="en"?Tn[b.getMonth()]:String(b.getMonth()+1)+"\u6708":""),C=b.getMonth()}const v=Math.max(...x.map(y=>y.tokens),1),P=r(y=>{const b=y/v;return b<.25?1:b<.5?2:b<.75?3:4},"levelOf"),S=r(y=>{const{day:b,tokens:p}=y,A="cm-ug-cell"+(p>0?" l"+P(p):"")+(b.date===c?" today":""),M=l("usageDay",{date:b.date,tokens:q(p),input:q(b.input??0),cache:q((b.cacheRead??0)+(b.cacheWrite??0)),output:q(b.output??0),calls:b.calls??0,cost:Z(_(b,a),a)});return e(te,{key:b.date,label:M,side:"top",delayMs:200},e("div",{className:A}))},"cell"),f=o.total;return e("div",{className:"cm-ug"},e("h3",{className:"cm-h"},l("usageTitle")),e("div",{className:"cm-ug-total"},l("usageTotal",{tokens:q(_t(f)),input:q(f.input??0),cache:q((f.cacheRead??0)+(f.cacheWrite??0)),output:q(f.output??0),calls:f.calls??0})),e("div",{className:"cm-ug-grid",style:{gridTemplateColumns:"repeat("+N+",1fr)"}},x.map(S)),e("div",{className:"cm-ug-months",style:{gridTemplateColumns:"repeat("+N+",1fr)"}},g.map((y,b)=>e("span",{key:"m"+String(b),className:"cm-ug-monthc"},y))))}r(it,"UsagePanel");function Bn(t){const s=t.useCost?t.useCost(h=>h):void 0,o=t.api,a=s?.state??null,[n,l]=E(null),[i,c]=E(null),[u,w]=E(!1),[d,k]=E(!1),[N,x]=E(!1),[g,C]=E(""),[v,P]=E(!1),[S,f]=E(!1),[y,b]=E("overview"),[p,A]=E({status:"idle",at:0,error:null}),M=Ae.useRef(null),L=Ae.useRef(null),j=Ae.useRef(null);le(()=>{if(a!==null){const h=JSON.stringify(a.config);l(U=>{const G=U!==null&&JSON.stringify(U)!==M.current;return G||(L.current=a.config,j.current=a.config),G?U:JSON.parse(h)}),M.current=h}},[a]),le(()=>{n!==null&&j.current===null&&L.current!==null&&(j.current=L.current)},[n]),le(()=>{if(n===null||o===void 0)return;const h=JSON.stringify(n);if(h===M.current)return;A(G=>G.status==="saving"?G:{...G,status:"saving"});const U=setTimeout(()=>{const G={},se=j.current??L.current;if(se!==null&&typeof se=="object")for(const V of Object.keys(n))JSON.stringify(n[V])!==JSON.stringify(se[V])&&(G[V]=n[V]);if(Object.keys(G).length===0){M.current=h,A({status:"saved",at:Date.now(),error:null});return}o.updateConfig(G).then(()=>{M.current=h,se!==null&&typeof se=="object"&&(j.current={...se,...G}),A({status:"saved",at:Date.now(),error:null})},V=>{A({status:"error",at:0,error:V?.message??String(V)})})},600);return()=>{clearTimeout(U)}},[n,o]),le(()=>{s?.status==="error"&&s.error&&c({kind:"err",text:m("ledgerReadFailed",{message:s.error})})},[s?.status,s?.error]);const B=z((n??a?.config)?.locale),m=$(B);if(s===void 0||a===null)return e("div",{className:"cm-section"},e("p",{className:"cm-empty"},s?.status==="loading"?m("readingLedger"):m("ledgerUnavailable")));const O=a.config,Q=r(async()=>{if(!v){P(!0),c(null);try{const h=await o.fetchPrices();if(c({kind:h.ok?"ok":"err",text:h.message}),h.ok&&h.state&&typeof h.state.config=="object"){const U=JSON.stringify(h.state.config);l(JSON.parse(U)),M.current=U}}catch(h){c({kind:"err",text:m("syncFailed",{message:h?.message??String(h)})})}finally{P(!1),w(!1)}}},"doFetch"),D=r(async()=>{if(!v){P(!0);try{await o.resetHistory(),c({kind:"ok",text:m("historyCleared")})}catch(h){c({kind:"err",text:m("clearFailed",{message:h?.message??String(h)})})}finally{P(!1),k(!1)}}},"doReset"),I=r(async()=>{if(!v){P(!0),c(null);try{const h=await o.importLegacyHistory();c({kind:"ok",text:h.message})}catch(h){c({kind:"err",text:m("legacyImportFailed",{message:h?.message??String(h)})})}finally{P(!1),x(!1)}}},"doImportLegacy"),Y=r((h,U)=>{n!==null&&l({...n,[h]:U})},"setField"),K=r(()=>{if(n===null)return;const h=g.trim().toLowerCase();if(h.length===0||!/^[a-z0-9_.-]+$/.test(h)||n?.prices.models[h]!==void 0)return;const U={...n.prices.models,[h]:{cacheHit:0,cacheMiss:0,output:0}};l({...n,prices:{...n.prices,models:U}}),C("")},"addModel"),ie=n===null?[]:Object.keys(n.prices.models).filter(h=>{const G=(n?.priceTableDisplay??O.priceTableDisplay??{})["deepseek:"+h];return typeof G=="boolean"?G:!0}).map(h=>e(rt,{key:h,modelId:h,entry:n.prices.models[h]??{cacheHit:0,cacheMiss:0,output:0},isDefault:!1,draft:n,setDraft:l,t:m})),T=[["overview",m("tabOverview")],["quotas",m("tabQuotas")],["usage",m("tabUsage")],["pricing",m("tabPricing")],["display",m("tabDisplay")]],R=p.status==="saving"?e("span",{className:"cm-hint"},m("saving")):p.status==="error"?e("span",{className:"cm-msg err"},m("autoSaveFailed",{message:p.error??""})):e("span",{className:"cm-hint"},p.status==="saved"?m("autoSavedAt",{time:new Date(p.at).toLocaleTimeString()}):m("autoSaveHint"));return e("div",{className:"cm-section"},e("div",{className:"cm-tabs-row"},e("div",{className:"cm-tabs",role:"tablist"},T.map(([h,U])=>e("button",{key:h,type:"button",role:"tab","aria-selected":String(y===h),className:"cm-tab"+(y===h?" active":""),onClick:r(()=>b(h),"onClick")},U))),R),i!==null?e("div",{className:"cm-msg "+i.kind},i.text):null,y==="overview"?e(F,{key:"overview"},e("div",{className:"cm-cards"},O.hideTodayCost===!0?null:e(ot,{title:m("cardToday"),value:Z(_(a.today,O),O),sub:m("callsTokens",{calls:a.today.calls,input:q(a.today.input),cache:q(a.today.cacheRead+a.today.cacheWrite),output:q(a.today.output)})}),e(ot,{title:m("cardMonth"),value:Z(_(a.month,O),O),sub:m("callsTokens",{calls:a.month.calls,input:q(a.month.input),cache:q(a.month.cacheRead+a.month.cacheWrite),output:q(a.month.output)})}),e(ot,{title:m("cardTotal"),value:Z(_(a.total,O),O),sub:m("cardTotalSub",{calls:a.total.calls})})),e("p",{className:"cm-note",key:"cards-footnote"},m("cardsFootnote")),(()=>{const h=Na(a);return h!==null?e("p",{className:"cm-note",key:"tz-hint"},m("timezoneHint",{host:h.hostLabel,browser:h.browserLabel})):null})(),e("label",{className:"cm-cards-toggle",title:m("cardsTogglePlanTotalHint")},e("input",{type:"checkbox",checked:(n??O).showTotalWithPlan===!0,onChange:r(h=>{const U=n??O;U!=null&&l({...U,showTotalWithPlan:h.target.checked})},"onChange")}),e("span",null,m("cardsTogglePlanTotal"))),e("div",null,e("h3",{className:"cm-h"},m("todaySessions")),e(mn,{state:a,t:m})),e(fn,{state:a,draft:n,setDraft:l,t:m}),(O.balance?.display==="settings"||O.balance?.display==="both")&&O.hideOfficialBalance!==!0?e(Nn,{state:a,api:o,t:m,draft:n,setDraft:l}):null):null,y==="quotas"?e(F,{key:"quotas"},e(Pn,{state:a,api:o,t:m,draft:n,setDraft:l}),e(Mn,{state:a,api:o,t:m,draft:n,setDraft:l}),e(Cn,{state:a,api:o,t:m,draft:n,setDraft:l})):null,y==="usage"?e(F,{key:"usage"},!Le||(O.usage?.position??"cost")==="cost"?e(it,{state:a,t:m,locale:B}):null,e(yn,{state:a,config:n??O,t:m}),e(vn,{state:a,config:n??O,t:m}),e(cn,{state:a,api:o}),e(un,{state:a,api:o}),e("div",null,e("h3",{className:"cm-h"},m("historyDataTitle")),e("div",{className:"cm-buttons"},N?e(F,null,e("span",{className:"cm-hint"},m("confirmImportLegacy")),e("button",{className:"cm-btn",onClick:I,disabled:v},m("apply")),e("button",{className:"cm-btn",onClick:r(()=>x(!1),"onClick")},m("cancel"))):e("button",{className:"cm-btn",onClick:r(()=>x(!0),"onClick"),disabled:v},m("importLegacy")),d?e(F,null,e("span",{className:"cm-hint"},m("confirmReset")),e("button",{className:"cm-btn danger",onClick:D,disabled:v},m("confirmClear")),e("button",{className:"cm-btn",onClick:r(()=>k(!1),"onClick")},m("cancel"))):e("button",{className:"cm-btn danger",onClick:r(()=>k(!0),"onClick"),disabled:v},m("clearAllHistory"))),e("p",{className:"cm-note"},m("legacyImportNote")))):null,y==="display"?e(F,{key:"display"},a?.secretMigration?.pending?.length>0?e(Ca,{pending:a.secretMigration.pending,t:m}):null,e("div",{className:"cm-toolbar"},e("div",{className:"cm-field"},e("label",null,m("languageLabel")),e("select",{className:"cm-input",value:n?.locale??"auto",onChange:r(h=>Y("locale",h.target.value),"onChange")},e("option",{value:"auto"},m("localeAuto")),e("option",{value:"zh"},m("localeZh")),e("option",{value:"en"},m("localeEn"))))),e("div",null,e("h3",{className:"cm-h"},m("displaySettings")),e("div",{className:"cm-grid"},e("div",{className:"cm-grid-group"},m("groupGeneral")),Le?e("div",{className:"cm-field"},e("label",null,m("usagePositionLabel")),e("select",{className:"cm-input",value:n?.usage?.position??"cost",onChange:r(h=>{n!==null&&l({...n,usage:{...n.usage??{position:"cost"},position:h.target.value}})},"onChange")},e("option",{value:"cost"},m("usagePositionCost")),e("option",{value:"general"},m("usagePositionGeneral")),e("option",{value:"section"},m("usagePositionSection")))):null,e("div",{className:"cm-field"},e("label",null,m("positionLabel")),e("select",{className:"cm-input",value:n?.position??"dock",onChange:r(h=>Y("position",h.target.value),"onChange")},e("option",{value:"dock"},m("positionDock")),e("option",{value:"header"},m("positionHeader")),e("option",{value:"off"},m("off")))),e("div",{className:"cm-field"},e("label",null,m("sidebarLabel")),e("select",{className:"cm-input",value:n?.sidebar===!1?"off":"on",onChange:r(h=>Y("sidebar",h.target.value==="on"),"onChange")},e("option",{value:"on"},m("sidebarOn")),e("option",{value:"off"},m("off")))),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.showSessionId===!0,onChange:r(h=>Y("showSessionId",h.target.checked),"onChange")}),e("span",null,m("showSessionIdLabel"))),e("div",{className:"cm-grid-group"},m("groupMoney")),e("div",{className:"cm-field"},e("label",null,m("currencyLabel")),e("select",{className:"cm-input",value:n?.currency??"CNY",onChange:r(h=>{const U=pn[h.target.value];U!==void 0&&n!==null&&l({...n,currency:h.target.value,...U})},"onChange")},e("option",{value:"CNY"},m("currencyCny")),e("option",{value:"USD"},m("currencyUsd")),e("option",{value:"EUR"},m("currencyEur")))),e("div",{className:"cm-field"},e("label",null,m("symbolLabel")),e("input",{className:"cm-input narrow",type:"text",value:n?.symbol??"",onChange:r(h=>Y("symbol",h.target.value),"onChange")})),e("div",{className:"cm-field"},e("label",null,m("rateLabel")),re({value:n?.exchangeRate??1,emptyMode:"ignore"},h=>Y("exchangeRate",h))),e("div",{className:"cm-field"},e("label",null,m("decimalsLabel")),re({value:n?.decimals??2},h=>Y("decimals",Math.min(10,Math.floor(h))))),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.hideOfficialBalance===!0,onChange:r(h=>Y("hideOfficialBalance",h.target.checked),"onChange")}),e("span",null,m("hideOfficialBalanceLabel"))),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.hideTodayCost===!0,onChange:r(h=>Y("hideTodayCost",h.target.checked),"onChange")}),e("span",null,m("hideTodayCostLabel"))),e("div",{className:"cm-grid-group"},m("groupSidebar")),e("div",{className:"cm-field"},e("label",null,m("balanceDisplayLabel")),e("select",{className:"cm-input",value:n?.balance?.display??"both",onChange:r(h=>{n!==null&&l({...n,balance:{...n.balance??{display:"both",refreshMinutes:5},display:h.target.value}})},"onChange")},e("option",{value:"sidebar"},m("balanceSidebar")),e("option",{value:"settings"},m("balanceSettings")),e("option",{value:"both"},m("balanceBoth")),e("option",{value:"off"},m("off")))),e("div",{className:"cm-field"},e("label",null,m("refreshIntervalLabel")),re({value:n?.balance?.refreshMinutes??5},h=>{n!==null&&l({...n,balance:{...n.balance??{display:"both",refreshMinutes:5,showProgressBar:!1,budgetCap:null},refreshMinutes:Math.min(1440,Math.max(1,Math.floor(h)))}})})),e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.balance?.showProgressBar===!0,onChange:r(h=>{n!==null&&l({...n,balance:{...n.balance??{display:"both",refreshMinutes:5,showProgressBar:!1,budgetCap:null},showProgressBar:h.target.checked}})},"onChange")}),e("span",null,m("balanceShowProgressBar")))),e("div",{className:"cm-field"},e("label",null,m("balanceBudgetCapLabel")),re({value:n?.balance?.budgetCap??""},h=>{n!==null&&l({...n,balance:{...n.balance??{display:"both",refreshMinutes:5,showProgressBar:!1,budgetCap:null},budgetCap:h>0?h:null}})}),e("span",{className:"cm-hint"},m("balanceBudgetCapHint"))),e("div",{className:"cm-field"},e("label",null,m("barDirectionsTitle")),["balance","budget","go","plan"].map(h=>e("div",{className:"cm-dir-row",key:h},e("span",{className:"cm-dir-label"},m("barDirection_"+h)),e("select",{className:"cm-input",value:n?.barDirections?.[h]??(h==="balance"?"remaining":"used"),onChange:r(U=>{if(n===null)return;const G={balance:"remaining",budget:"used",go:"used",plan:"used"};l({...n,barDirections:{...n.barDirections??G,[h]:U.target.value}})},"onChange")},e("option",{value:"remaining"},m("barDirectionRemaining")),e("option",{value:"used"},m("barDirectionUsed"))))),e("span",{className:"cm-hint"},m("barDirectionsHint"))),e("div",{className:"cm-field"},e("label",null,m("customBalanceDisplayLabel")),e("select",{className:"cm-input",value:n?.customBalance?.display??O.customBalance?.display??"both",onChange:r(h=>{n!==null&&l({...n,customBalance:{...n.customBalance??O.customBalance??{},display:h.target.value}})},"onChange")},e("option",{value:"sidebar"},m("balanceSidebar")),e("option",{value:"settings"},m("balanceSettings")),e("option",{value:"both"},m("balanceBoth")),e("option",{value:"off"},m("off")))),e("div",{className:"cm-field"},e("label",null,m("customBalanceRefreshInterval")),re({value:n?.customBalance?.refreshMinutes??O.customBalance?.refreshMinutes??15},h=>{n!==null&&l({...n,customBalance:{...n.customBalance??O.customBalance??{},refreshMinutes:Math.min(1440,Math.max(1,Math.floor(h)))}})})),e("div",{className:"cm-field"},e("label",null,m("goQuotaDisplayLabel")),e("select",{className:"cm-input",value:n?.goQuota?.display??"both",onChange:r(h=>{n!==null&&l({...n,goQuota:{...n.goQuota??{display:"both",refreshMinutes:15,apiKey:""},display:h.target.value}})},"onChange")},e("option",{value:"sidebar"},m("balanceSidebar")),e("option",{value:"settings"},m("balanceSettings")),e("option",{value:"both"},m("balanceBoth")),e("option",{value:"off"},m("off")))),e("div",{className:"cm-field"},e("label",null,m("goMainLabel")),e("select",{className:"cm-input",value:n?.goQuota?.main??"rolling",onChange:r(h=>{n!==null&&l({...n,goQuota:{...n.goQuota??{display:"both",refreshMinutes:15,apiKey:"",main:"rolling"},main:h.target.value}})},"onChange")},e("option",{value:"rolling"},m("goWindowRolling")),e("option",{value:"weekly"},m("goWindowWeekly")),e("option",{value:"monthly"},m("goWindowMonthly")))),e("div",{className:"cm-field"},e("label",null,m("goQuotaRefreshIntervalLabel")),e("div",{className:"cm-range-row"},e("input",{className:"cm-range",type:"range",min:"1",max:"60",step:"1",value:Math.min(60,Math.max(1,Math.floor(Number(n?.goQuota?.refreshMinutes)||15))),onChange:r(h=>{n!==null&&l({...n,goQuota:{...n.goQuota??{display:"both",refreshMinutes:15,apiKey:""},refreshMinutes:Math.min(60,Math.max(1,Math.floor(Number(h.target.value)||15)))}})},"onChange")}),e("span",{className:"cm-range-value"},`${Math.min(60,Math.max(1,Math.floor(Number(n?.goQuota?.refreshMinutes)||15)))} ${m("goQuotaRefreshMinutesUnit")}`))),e("div",{className:"cm-field"},e("label",null,m("goQuotaKeyLabel"))),e(je,{target:"goQuota",configured:O.goQuota?.keyConfigured===!0,source:O.goQuota?.keySource,t:m,api:o,placeholder:"sk-\u2026"}),e("div",{className:"cm-grid-group"},m("quotaStripGroup")),e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.quotaStrip?.enabled===!0,onChange:r(h=>{n!==null&&l({...n,quotaStrip:{...n.quotaStrip??{enabled:!1,budget:!0,go:!0,plans:!0},enabled:h.target.checked,promptSeen:!0}})},"onChange")}),e("span",null,m("quotaStripEnable")))),n?.quotaStrip?.enabled===!0?[["budget","quotaStripShowBudget"],["go","quotaStripShowGo"],["plans","quotaStripShowPlans"]].map(([h,U])=>e("label",{key:h,className:"cm-check"},e("input",{type:"checkbox",checked:n.quotaStrip[h]!==!1,onChange:r(G=>{n!==null&&l({...n,quotaStrip:{...n.quotaStrip,[h]:G.target.checked}})},"onChange")}),e("span",null,m(U)))):null,e("div",{className:"cm-field"},e("span",{className:"cm-hint"},m("quotaStripNote"))),e("div",{className:"cm-grid-group"},m("groupCorner")),e("div",{className:"cm-field"},e("label",null,m("cornerLabel")),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.corner?.enabled===!0,onChange:r(h=>{n!==null&&l({...n,corner:{...n.corner??{enabled:!1,goRolling:!0,goWeekly:!0,goMonthly:!0,budget:!0},enabled:h.target.checked}})},"onChange")}),e("span",null,m("cornerEnabledLabel"))),n?.corner?.enabled===!0?[["goRolling","cornerGoRolling"],["goWeekly","cornerGoWeekly"],["goMonthly","cornerGoMonthly"],["budget","cornerBudget"]].map(([h,U])=>e("label",{key:h,className:"cm-check"},e("input",{type:"checkbox",checked:n.corner[h]!==!1,onChange:r(G=>{n!==null&&l({...n,corner:{...n.corner,[h]:G.target.checked}})},"onChange")}),e("span",null,m(U)))):null),e("div",{className:"cm-grid-group"},m("groupDetail")),e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.goQuota?.detail!==!1,onChange:r(h=>{n!==null&&l({...n,goQuota:{...n.goQuota??{display:"both",refreshMinutes:15,apiKey:"",main:"rolling",detail:!0},detail:h.target.checked}})},"onChange")}),e("span",null,m("goDetailLabel")))),e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:n?.budget?.detail!==!1,onChange:r(h=>{n!==null&&l({...n,budget:{...n.budget??{enabled:!1,amount:100,period:"month",customStart:null,customEnd:null,detail:!0},detail:h.target.checked}})},"onChange")}),e("span",null,m("budgetDetailLabel"))))),e("p",{className:"cm-note"},m("badgeNote")))):null,y==="pricing"?e(F,{key:"pricing"},e(gn,{state:a,draft:n,setDraft:l,t:m}),e("div",null,e("button",{type:"button",className:"cm-collapse-h","aria-expanded":String(S),onClick:r(()=>f(!S),"onClick")},e("span",{className:"cm-caret"+(S?" open":"")}),e("h3",{className:"cm-h"},m("priceTableTitle"))),S?e("div",{className:"cm-collapse-body"},e("p",{className:"cm-note"},m("priceTableNote")),e("p",{className:"cm-hint"},m("priceTableDisplayHint")),e("div",{className:"cm-catalog-vendor"},m("deepseekMountedHeader")),ie,e(rt,{key:"__default__",modelId:m("defaultModelId"),entry:n?.prices.default??{cacheHit:0,cacheMiss:0,output:0},isDefault:!0,draft:n,setDraft:l,t:m}),e("div",{className:"cm-buttons"},e("input",{className:"cm-input narrow",type:"text",placeholder:m("newModelPlaceholder"),value:g,onChange:r(h=>C(h.target.value),"onChange")}),e("button",{className:"cm-btn small",onClick:K,disabled:g.trim().length===0},m("addModel"))),(()=>{const h=n?.priceTableDisplay??O.priceTableDisplay??{},U=n?.prices?.providers??{},G=r(V=>Object.keys(U[V]?.models??{}).filter(ne=>h[V+":"+ne]===!0),"directIds"),se=Object.keys(U).filter(V=>G(V).length>0).sort((V,ne)=>V.localeCompare(ne));return se.length===0?null:se.map(V=>e("div",{key:V},e("div",{className:"cm-catalog-vendor"},(Ut[V]??V)+" \xB7 "+m("mountedSuffix")),G(V).sort().map(ne=>e(Wt,{key:V+":"+ne,provider:V,modelId:ne,entry:U[V].models[ne],draft:n,setDraft:l,t:m}))))})()):null),(()=>{const h=n?.priceOverrides??O.priceOverrides??{},U=n?.prices??O.prices,G=a.today.byProviderModel??{},se={prices:U,priceMatch:n?.priceMatch??O.priceMatch},V=Object.keys(G).filter(W=>{if(h[W]!==void 0)return!1;const J=W.indexOf(":"),ge=(J>0?W.slice(0,J):"deepseek").toLowerCase(),dt=J>0?W.slice(J+1):W;return Ge(ge,dt,se).matched!==!0}),ne=[...new Set([...V,...Object.keys(h)])],ve=a.month?.byProviderModel??{},Pe=Object.keys(ve).filter(W=>{if(h[W]!==void 0)return!1;const J=W.indexOf(":"),ge=(J>0?W.slice(0,J):"deepseek").toLowerCase(),dt=J>0?W.slice(J+1):W;return Ge(ge,dt,se).matched===!0}).sort(),Kt=[{value:"__local__",label:m("overrideTargetLocal")},{value:"deepseek:__default__",label:m("overrideTargetDefault")},...Object.keys(U.models??{}).map(W=>({value:"deepseek:"+W,label:"DeepSeek \xB7 "+W})),...Object.entries(U.providers??{}).flatMap(([W,J])=>Object.keys(J?.models??{}).map(ge=>({value:W+":"+ge,label:W+" \xB7 "+ge})))],ct=r((W,J)=>{if(n===null)return;const ge={...n.priceOverrides??{}};J===""?delete ge[W]:ge[W]=J,l({...n,priceOverrides:ge})},"setOverride");return e("div",null,e("h3",{className:"cm-h"},m("priceMatchLabel")),e("div",{className:"cm-field"},e("select",{className:"cm-input",value:n?.priceMatch==="exact"?"exact":"auto",onChange:r(W=>Y("priceMatch",W.target.value),"onChange")},e("option",{value:"auto"},m("priceMatchAuto")),e("option",{value:"exact"},m("priceMatchExact")))),e("p",{className:"cm-note"},m("priceMatchNote")),ne.length>0?e(F,null,e("h3",{className:"cm-h"},m("unmatchedTitle")),e("p",{className:"cm-hint"},m("unmatchedHint")),ne.map(W=>e("div",{key:W,className:"cm-match-row"},e("span",null,Qt(W)),e("select",{className:"cm-input",value:h[W]??"",onChange:r(J=>ct(W,J.target.value),"onChange")},e("option",{value:""},"\u2014"),Kt.map(J=>e("option",{key:J.value,value:J.value},J.label))),h[W]!==void 0?e("button",{className:"cm-btn small",onClick:r(()=>ct(W,""),"onClick")},m("overrideRemove")):null))):e("p",{className:"cm-hint"},m("overrideNone")),Pe.length>0?e(F,null,e("h3",{className:"cm-h"},m("matchedTitle")),e("p",{className:"cm-hint"},m("matchedHint")),Pe.map(W=>e("div",{key:W,className:"cm-match-row"},e("span",null,Qt(W)),e("select",{className:"cm-input",value:"",onChange:r(J=>{J.target.value!==""&&ct(W,J.target.value)},"onChange")},e("option",{value:""},m("matchedKeepAuto")),Kt.map(J=>e("option",{key:J.value,value:J.value},J.label)))))):null)})(),e(hn,{state:a,draft:n,setDraft:l,t:m}),e("div",null,e("h3",{className:"cm-h"},m("dataSync")),e("div",{className:"cm-field"},e("label",null,m("pricingCurrencyLabel")),e("select",{className:"cm-input",value:n?.pricingCurrency==="CNY"?"CNY":"USD",onChange:r(h=>Y("pricingCurrency",h.target.value),"onChange")},e("option",{value:"USD"},m("pricingCurrencyUsd")),e("option",{value:"CNY"},m("pricingCurrencyCny"))),e("p",{className:"cm-note"},m("pricingCurrencyNote"))),e("div",{className:"cm-buttons"},u?e(F,null,e("span",{className:"cm-hint"},m("confirmFetch")),e("button",{className:"cm-btn",onClick:Q,disabled:v},m("apply")),e("button",{className:"cm-btn",onClick:r(()=>w(!1),"onClick")},m("cancel"))):e("button",{className:"cm-btn",onClick:r(()=>w(!0),"onClick"),disabled:v},m("syncFromDocs"))),e("p",{className:"cm-note"},m("lastSync",{time:O.fetchedAt!==null?new Date(O.fetchedAt).toLocaleString():m("neverSynced")})+m("source",{source:O.priceSource==="official"?m("sourceOfficial"):m("sourceBundled")})))):null)}r(Bn,"CostSection");const Ln=["remote"];async function On(t){const s=t.remote;if(s===void 0||typeof s.$mount!="function")return;const o=await s.$mount(ua);t.effect(()=>()=>{o()},"cost-meter: remote contribution");const a=t.get("remote.costMeter");if(a===void 0)return;const n=Sa({status:"loading",error:null,state:null}),l=r(()=>$(z(n.getSnapshot().state?.config?.locale)),"rpcT"),i=r(async(T,R)=>{const h=await a[T](...R??[]);if(h===null||typeof h!="object"||h.ok!==!0)throw new Error(h?.error?.message??l()("rpcFailed",{method:T}));return h.value},"call");let c=!1;const u=r(async()=>{if(c)return;c=!0;const T=n.getSnapshot();try{const R=await i("getState");n.set({status:"ready",error:null,state:R})}catch(R){n.set({status:"error",error:R?.message??String(R),state:T.state})}finally{c=!1}},"reload");t.effect(()=>t.on("connection/reset",()=>{u()}),"cost-meter: reconnect reload");const w=setInterval(()=>{document.hidden||u()},6e4);t.effect(()=>()=>{clearInterval(w)},"cost-meter: poll timer");const d=r(()=>{document.visibilityState==="visible"&&u()},"onVisible");document.addEventListener("visibilitychange",d),t.effect(()=>()=>{document.removeEventListener("visibilitychange",d)},"cost-meter: visibility reload");const k={reload:u,updateConfig:r(async T=>{const R=await i("updateConfig",[T]);return n.set({status:"ready",error:null,state:R}),R},"updateConfig"),fetchPrices:r(async()=>{const T=await a.fetchPrices();if(T===null||typeof T!="object"||T.ok!==!0)throw new Error(T?.error?.message??l()("rpcSyncFailed"));return T.value.state!==void 0&&n.set({status:"ready",error:null,state:T.value.state}),T.value},"fetchPrices"),resetHistory:r(async()=>{const T=await i("resetHistory");return n.set({status:"ready",error:null,state:T}),T},"resetHistory"),importLegacyHistory:r(async()=>{const T=await a.importLegacyHistory();if(T===null||typeof T!="object"||T.ok!==!0)throw new Error(T?.error?.message??T?.value?.message??l()("legacyImportFailed",{message:"RPC failed"}));return T.value.state!==void 0&&n.set({status:"ready",error:null,state:T.value.state}),T.value},"importLegacyHistory"),getDaySessions:r(async T=>i("getDaySessions",[T]),"getDaySessions"),getTopSessions:r(async(T,R,h)=>i("getTopSessions",[T,R,h]),"getTopSessions"),refreshBalance:r(async()=>{const T=await a.refreshBalance();if(T===null||typeof T!="object"||T.ok!==!0)throw new Error(T?.error?.message??l()("rpcBalanceFailed"));return T.value.state!==void 0&&n.set({status:"ready",error:null,state:T.value.state}),T.value},"refreshBalance"),refreshGoQuota:r(async()=>{const T=await a.refreshGoQuota();if(T===null||typeof T!="object"||T.ok!==!0)throw new Error(T?.error?.message??l()("rpcSyncFailed"));return T.value.state!==void 0&&n.set({status:"ready",error:null,state:T.value.state}),T.value},"refreshGoQuota"),refreshCustomBalance:r(async()=>{const T=await a.refreshCustomBalance();if(T===null||typeof T!="object"||T.ok!==!0)throw new Error(T?.error?.message??l()("rpcSyncFailed"));return T.value.state!==void 0&&n.set({status:"ready",error:null,state:T.value.state}),T.value},"refreshCustomBalance"),refreshCodingPlan:r(async T=>{const R=await a.refreshCodingPlan(T);if(R===null||typeof R!="object"||R.ok!==!0)throw new Error(R?.error?.message??l()("rpcSyncFailed"));return R.value.state!==void 0&&n.set({status:"ready",error:null,state:R.value.state}),R.value},"refreshCodingPlan"),setCredential:r(async(T,R)=>{const h=await a.setCredential(T,R);if(h===null||typeof h!="object"||h.ok!==!0)throw new Error(h?.error?.message??h?.value?.message??l()("rpcSyncFailed"));return h.value.state!==void 0&&n.set({status:"ready",error:null,state:h.value.state}),h.value},"setCredential"),clearCredential:r(async T=>{const R=await a.clearCredential(T);if(R===null||typeof R!="object"||R.ok!==!0)throw new Error(R?.error?.message??R?.value?.message??l()("rpcSyncFailed"));return R.value.state!==void 0&&n.set({status:"ready",error:null,state:R.value.state}),R.value},"clearCredential")};u();const N=t.get("slots");if(N===void 0)return;const x=r(()=>({hooks:{cost:n},api:k}),"injected"),g={gen:0,dispose:null},C=r(T=>{g.dispose!==null&&(g.dispose(),g.dispose=null),g.gen+=1;const R=g.gen;if(T==="off")return;const h=T==="header"?"conversation.session.header.actions":"conversation.composer.dock",U=T==="header"?{name:h,id:"cost-meter",order:-5,inject:x}:{name:h,id:"cost-meter",order:5,inject:x};N.inject(h,()=>{if(g.gen!==R)return;const G=N.register(U,T==="header"?Pa:Aa);if(g.gen!==R){G();return}return g.dispose=G,()=>{g.dispose===G&&(g.dispose=null),G()}})},"registerSession"),v={gen:0,dispose:null},P=r(T=>{v.dispose!==null&&(v.dispose(),v.dispose=null),v.gen+=1;const R=v.gen;T&&N.inject("sidebar.footer.action",()=>{if(v.gen!==R)return;const h=N.register({name:"sidebar.footer.action",id:"cost-meter",order:0,inject:x},rn);if(v.gen!==R){h();return}return v.dispose=h,()=>{v.dispose===h&&(v.dispose=null),h()}})},"registerFooter"),S={gen:0,dispose:null},f=r(T=>{S.dispose!==null&&(S.dispose(),S.dispose=null),S.gen+=1;const R=S.gen;T&&N.inject("conversation.composer.dock",()=>{if(S.gen!==R)return;const h=N.register({name:"conversation.composer.dock",id:"cost-meter-corner",order:9,inject:x},qa);if(S.gen!==R){h();return}return S.dispose=h,()=>{S.dispose===h&&(S.dispose=null),h()}})},"registerCorner");N.inject("conversation.input.dock",()=>N.register({name:"conversation.input.dock",id:"cost-meter-qstrip",order:5,inject:x},an)),N.inject("sidebar.footer.action",()=>N.register({name:"sidebar.footer.action",id:"cost-meter-qstrip-guide",order:1,inject:x},nn)),N.inject("sidebar.footer.action",()=>N.register({name:"sidebar.footer.action",id:"cost-meter-balance-click-guide",order:2,inject:x},ln));const y={gen:0,dispose:null},b=r(T=>{y.dispose!==null&&(y.dispose(),y.dispose=null),y.gen+=1;const R=y.gen;T&&N.inject("sidebar.footer.action",()=>{if(y.gen!==R)return;const h=N.register({name:"sidebar.footer.action",id:"cost-meter-peak-alert",order:0,inject:x},Fa);if(y.gen!==R){h();return}return y.dispose=h,()=>{y.dispose===h&&(y.dispose=null),h()}})},"registerPeakAlert");window.cmPeakAlertPreview=T=>{if(window.__cmPeakAlertLive!==!0){console.warn("[dsh-cost-meter] \u5F39\u7A97\u7EC4\u4EF6\u672A\u6302\u8F7D:\u9700\u542F\u7528\u5CF0\u8C37\u8BA1\u4EF7\u5E76\u91CD\u542F dsh web \u540E\u518D\u9884\u89C8\u3002");return}window.dispatchEvent(new CustomEvent(tt,{detail:{kind:T==="offpeak"?"offpeak":"peak"}}))};const p={gen:0,dispose:null},A=r(T=>{p.dispose!==null&&(p.dispose(),p.dispose=null),p.gen+=1;const R=p.gen;N.inject("settings.section",()=>{if(p.gen!==R)return;const h=N.register({name:"settings.section",id:"cost-meter",order:30,label:T==="en"?we.en.sectionLabel:we.zh.sectionLabel,inject:x},Bn);if(p.gen!==R){h();return}return p.dispose=h,()=>{p.dispose===h&&(p.dispose=null),h()}})},"registerSection"),M={gen:0,dispose:null},L=r(T=>{M.dispose!==null&&(M.dispose(),M.dispose=null),M.gen+=1;const R=M.gen;T&&N.inject("settings.general.item",()=>{if(M.gen!==R)return;const h=N.register({name:"settings.general.item",id:"cost-meter-usage",order:30,inject:x},it);if(M.gen!==R){h();return}return M.dispose=h,()=>{M.dispose===h&&(M.dispose=null),h()}})},"registerGeneralUsage"),j={gen:0,dispose:null},B=r((T,R)=>{j.dispose!==null&&(j.dispose(),j.dispose=null),j.gen+=1;const h=j.gen;T&&N.inject("settings.section",()=>{if(j.gen!==h)return;const U=N.register({name:"settings.section",id:"cost-meter-usage",order:31,label:R==="en"?we.en.usageSectionLabel:we.zh.usageSectionLabel,inject:x},it);if(j.gen!==h){U();return}return j.dispose=U,()=>{j.dispose===U&&(j.dispose=null),U()}})},"registerUsageSection");let m=null,O=null,Q=null,D=null,I=null,Y=null;const K=r(()=>{const T=n.getSnapshot().state,R=T?.config?.position??"dock",h=T?.config?.sidebar!==!1&&T?.config?.hideTodayCost!==!0,U=T?.config?.balance?.display??"both",G=(U==="sidebar"||U==="both")&&T?.config?.hideOfficialBalance!==!0,se=h||G,V=T?.config?.corner?.enabled===!0,ne=z(T?.config?.locale),ve=T?.config?.usage?.position??"cost";R!==m&&(C(R),m=R),se!==O&&(P(se),O=se),V!==Q&&(f(V),Q=V);const Pe=T?.config?.peakEnabled===!0;Pe!==Y&&(b(Pe),Y=Pe),ne!==D&&(A(ne),D=ne),ve!==I?(Le&&(L(ve==="general"),B(ve==="section",ne)),I=ve):Le&&ve==="section"&&ne!==D&&B(!0,ne)},"sync");K();const ie=n.subscribe(K);return()=>{ie()}}return r(On,"apply"),Qe.apply=On,Qe.inject=Ln,Be.exports},"factory")});
|