dsh-cost-meter 1.6.13 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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=(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")});
2
+ var En=Object.defineProperty;var r=(Be,Te)=>En(Be,"name",{value:Te,configurable:!0});window.__ModuleLoader__.load({id:"dsh-cost-meter",factory:r(Be=>{var Te={exports:{}},He=Te.exports;Object.defineProperty(He,Symbol.toStringTag,{value:"Module"});const Ae=Be("react"),{Tooltip:ee}=Be("@deepseek-ai/dsh-client-ui-primitives"),Le=!1,Vt=["/* 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
+ `),mt="dsh-cost-meter/client.css";if(typeof document<"u"&&document.querySelector("style[data-plugin-css="+JSON.stringify(mt)+"]")===null){const t=document.createElement("style");t.dataset.plugin="dsh-cost-meter",t.dataset.pluginCss=mt,t.textContent=Vt,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",customBalanceMultiNote:"\u652F\u6301\u914D\u7F6E\u591A\u4E2A\u81EA\u5B9A\u4E49\u63D0\u4F9B\u5546(\u6700\u591A 8 \u6761),\u6BCF\u6761\u72EC\u7ACB\u7684\u8BF7\u6C42\u4E0E\u89E3\u6790\u89C4\u5219\u3001\u72EC\u7ACB\u5F00\u5173\u4E0E\u663E\u793A\u4F4D\u7F6E\u3001\u72EC\u7ACB\u5237\u65B0\u95F4\u9694;\u5347\u7EA7\u524D\u7684\u5355\u6761\u914D\u7F6E\u5DF2\u81EA\u52A8\u8FC1\u79FB\u4E3A\u7B2C 1 \u6761\u3002",customBalanceAdd:"\u6DFB\u52A0\u914D\u7F6E",customBalanceRemove:"\u5220\u9664",customBalanceEmpty:"\u5C1A\u672A\u914D\u7F6E\u81EA\u5B9A\u4E49 Provider \u4F59\u989D,\u70B9\u51FB\u300C\u6DFB\u52A0\u914D\u7F6E\u300D\u65B0\u5EFA\u3002",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",customBalanceMultiNote:"Configure multiple custom providers (up to 8): each entry has its own request & extract rules, enable switch, display position and refresh interval; your previous single entry was migrated to #1 automatically.",customBalanceAdd:"Add entry",customBalanceRemove:"Remove",customBalanceEmpty:'No custom provider balance configured yet \u2014 click "Add entry" to create one.',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 Jt(){return(typeof navigator<"u"&&typeof navigator.language=="string"?navigator.language:"").toLowerCase().startsWith("zh")?"zh":"en"}r(Jt,"detectBrowserLocale");function H(t){return t==="zh"||t==="en"?t:Jt()}r(H,"resolveLocale");function V(t){const s=t==="zh"?we.zh:we.en;return(o,n)=>{let a=s[o]??we.en[o]??o;if(n)for(const l of Object.keys(n))a=a.split("{"+l+"}").join(String(n[l]));return a}}r(V,"makeT");const De={day:"periodDay",month:"periodMonth",all:"periodAll",custom:"periodCustom"};function Z(t,s){throw new Error("dsh-cost-meter: \u670D\u52A1\u7AEF\u6570\u636E\u975E\u6CD5 ("+t+": "+s+")")}r(Z,"fail");function W(t,s){return(typeof t!="number"||!Number.isFinite(t))&&Z(s,"number"),t}r(W,"needNum");function We(t,s){return typeof t!="string"&&Z(s,"string"),t}r(We,"needStr");function $t(t,s){return typeof t!="boolean"&&Z(s,"boolean"),t}r($t,"needBool");function Oe(t,s){const o={};if(t!==null&&typeof t=="object"&&!Array.isArray(t))for(const n of Object.keys(t)){const a=t[n];if(a===null||typeof a!="object"||Array.isArray(a))continue;const l=r(i=>typeof i=="number"&&Number.isFinite(i)&&i>=0?i:0,"num");o[n]={input:l(a.input),output:l(a.output),cacheRead:l(a.cacheRead),cacheWrite:l(a.cacheWrite),reasoning:l(a.reasoning),cost:l(a.cost),apiCost:a.apiCost===void 0?l(a.cost):l(a.apiCost)}}return o}r(Oe,"aggregateModelMap");function Zt(t,s){return(t===null||typeof t!="object"||Array.isArray(t))&&Z(s,"object"),{id:We(t.id,s+".id"),provider:typeof t.provider=="string"?t.provider:"",model:typeof t.model=="string"?t.model:"",input:W(t.input,s+".input"),output:W(t.output,s+".output"),cacheRead:W(t.cacheRead,s+".cacheRead"),cacheWrite:W(t.cacheWrite,s+".cacheWrite"),reasoning:t.reasoning===void 0?0:W(t.reasoning,s+".reasoning"),calls:W(t.calls,s+".calls"),cost:W(t.cost,s+".cost"),apiCost:t.apiCost===void 0?void 0:W(t.apiCost,s+".apiCost"),byModel:Oe(t.byModel,s+".byModel"),byProviderModel:Oe(t.byProviderModel,s+".byProviderModel")}}r(Zt,"parseSession");function Re(t,s){(t===null||typeof t!="object"||Array.isArray(t))&&Z(s,"object");const o={date:We(t.date,s+".date"),input:W(t.input,s+".input"),output:W(t.output,s+".output"),cacheRead:W(t.cacheRead,s+".cacheRead"),cacheWrite:W(t.cacheWrite,s+".cacheWrite"),reasoning:t.reasoning===void 0?0:W(t.reasoning,s+".reasoning"),calls:W(t.calls,s+".calls"),cost:W(t.cost,s+".cost"),apiCost:t.apiCost===void 0?void 0:W(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)||Z(s+".sessions","array"),o.sessions=t.sessions.map((n,a)=>Zt(n,s+".sessions["+a+"]"))),o}r(Re,"parseDay");function pt(t,s){(t===null||typeof t!="object"||Array.isArray(t))&&Z(s,"object");const o={cacheHit:W(t.cacheHit,s+".cacheHit"),cacheMiss:W(t.cacheMiss,s+".cacheMiss"),output:W(t.output,s+".output")};return t.offPeak!==void 0&&(o.offPeak={cacheHit:W(t.offPeak.cacheHit,s+".offPeak.cacheHit"),cacheMiss:W(t.offPeak.cacheMiss,s+".offPeak.cacheMiss"),output:W(t.offPeak.output,s+".offPeak.output")}),t.peak!==void 0&&(o.peak={cacheHit:W(t.peak.cacheHit,s+".peak.cacheHit"),cacheMiss:W(t.peak.cacheMiss,s+".peak.cacheMiss"),output:W(t.peak.output,s+".peak.output")}),t.legacyBase!==void 0&&(o.legacyBase={cacheHit:W(t.legacyBase.cacheHit,s+".legacyBase.cacheHit"),cacheMiss:W(t.legacyBase.cacheMiss,s+".legacyBase.cacheMiss"),output:W(t.legacyBase.output,s+".legacyBase.output")}),t.legacy!==void 0&&(o.legacy=$t(t.legacy,s+".legacy")),o}r(pt,"parsePrice");function Xt(t,s){(t===null||typeof t!="object"||Array.isArray(t))&&Z(s,"object");const o={};if(t.prices!==null&&typeof t.prices=="object"&&t.prices.models!==null&&typeof t.prices.models=="object")for(const n of Object.keys(t.prices.models))o[n]=pt(t.prices.models[n],s+".prices.models."+n);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:W(t.decimals,s+".decimals"),exchangeRate:W(t.exchangeRate,s+".exchangeRate"),peakEnabled:t.peakEnabled===!0,peakEffectiveAt:typeof t.peakEffectiveAt=="string"?t.peakEffectiveAt:"",peakWindows:Array.isArray(t.peakWindows)?t.peakWindows.map((n,a)=>({start:W(n.start,s+".peakWindows["+a+"].start"),end:W(n.end,s+".peakWindows["+a+"].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 n={};if(t.priceOverrides!==null&&typeof t.priceOverrides=="object"&&!Array.isArray(t.priceOverrides))for(const[a,l]of Object.entries(t.priceOverrides))typeof a=="string"&&typeof l=="string"&&(n[a]=l);return n})(),priceTableDisplay:(()=>{const n={};if(t.priceTableDisplay!==null&&typeof t.priceTableDisplay=="object"&&!Array.isArray(t.priceTableDisplay))for(const[a,l]of Object.entries(t.priceTableDisplay))typeof a=="string"&&(n[a]=l===!0);return n})(),codingPlans:(()=>{const n={};if(t.codingPlans!==null&&typeof t.codingPlans=="object"&&!Array.isArray(t.codingPlans))for(const a of Object.keys(t.codingPlans)){const l=t.codingPlans[a];l===null||typeof l!="object"||Array.isArray(l)||(n[a]={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 n})(),prices:{models:o,default:pt(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:W(t.historyDays,s+".historyDays"),fetchedAt:t.fetchedAt===null||t.fetchedAt===void 0?null:We(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:{}},customBalances:(()=>{const n=r(a=>({enabled:a?.enabled===!0,label:typeof a?.label=="string"?a.label:"",labelEn:typeof a?.labelEn=="string"?a.labelEn:"",display:a?.display==="sidebar"||a?.display==="settings"||a?.display==="off"?a.display:"both",unit:a?.unit==="CNY"||a?.unit==="EUR"?a.unit:"USD",refreshMinutes:typeof a?.refreshMinutes=="number"&&Number.isFinite(a.refreshMinutes)?a.refreshMinutes:15,request:a?.request&&typeof a.request=="object"?a.request:{url:""},extract:a?.extract&&typeof a.extract=="object"?a.extract:{}}),"parseEntry");return Array.isArray(t.customBalances)?t.customBalances.filter(a=>a!==null&&typeof a=="object").slice(0,8).map(n):t.customBalance!==void 0&&t.customBalance!==null?[n(t.customBalance)]:[]})(),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 n=t.barDirections!==null&&typeof t.barDirections=="object"&&!Array.isArray(t.barDirections)?t.barDirections:{},a=r((l,i)=>n[l]==="remaining"||n[l]==="used"?n[l]:i,"pick");return{balance:a("balance","remaining"),budget:a("budget","used"),go:a("go","used"),plan:a("plan","used")}})(),planBilling:{providers:(()=>{const n={};if(t.planBilling?.providers!==null&&typeof t.planBilling?.providers=="object"&&!Array.isArray(t.planBilling.providers))for(const[a,l]of Object.entries(t.planBilling.providers))typeof a=="string"&&(l==="auto"||l==="plan"||l==="api")&&(n[a]=l);return n})(),models:(()=>{const n={};if(t.planBilling?.models!==null&&typeof t.planBilling?.models=="object"&&!Array.isArray(t.planBilling.models))for(const[a,l]of Object.entries(t.planBilling.models))typeof a=="string"&&a.length>0&&(l==="plan"||l==="api")&&(n[a]=l);return n})()}}}r(Xt,"parseConfig");function ea(t,s){return(t===null||typeof t!="object"||Array.isArray(t))&&Z(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(ea,"parseBalance");function ze(t,s){return t==null?null:((typeof t!="object"||Array.isArray(t))&&Z(s,"object"),{percent:typeof t.percent=="number"&&Number.isFinite(t.percent)?t.percent:0,resetsAt:typeof t.resetsAt=="string"?t.resetsAt:""})}r(ze,"parseGoWindow");function ta(t,s){return(t===null||typeof t!="object"||Array.isArray(t))&&Z(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:ze(t.rolling,s+".rolling"),weekly:t.weekly===void 0||t.weekly===null?null:ze(t.weekly,s+".weekly"),monthly:t.monthly===void 0||t.monthly===null?null:ze(t.monthly,s+".monthly")}}r(ta,"parseGoQuota");function ft(t,s){return(t===null||typeof t!="object"||Array.isArray(t))&&Z(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,index:typeof t.index=="number"&&Number.isFinite(t.index)&&t.index>=0?Math.floor(t.index):null}}r(ft,"parseCustomBalance");const ne=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,n]of Object.entries(t.providers)){if(n===null||typeof n!="object"||Array.isArray(n))continue;const a={},l={};if(n.windows!==null&&typeof n.windows=="object"&&!Array.isArray(n.windows))for(const[i,c]of Object.entries(n.windows))c===null||typeof c!="object"||Array.isArray(c)||(a[i]={percent:ne(c.percent)??0,resetsAt:typeof c.resetsAt=="string"?c.resetsAt:"",localTokens:ne(c.localTokens)??0,localCost:ne(c.localCost)??0,method:c.method==="sample"||c.method==="live"?c.method:"none",sampleAt:ne(c.sampleAt),confidence:c.confidence==="high"||c.confidence==="low"?c.confidence:null,per1Tokens:ne(c.per1Tokens),per1Cost:ne(c.per1Cost),fullTokens:ne(c.fullTokens),fullCost:ne(c.fullCost),sampleCount:ne(c.sampleCount)??0});if(n.intervals!==null&&typeof n.intervals=="object"&&!Array.isArray(n.intervals))for(const[i,c]of Object.entries(n.intervals))Array.isArray(c)&&(l[i]=c.filter(m=>m!==null&&typeof m=="object"&&!Array.isArray(m)).map(m=>({t0:ne(m.t0)??0,t1:ne(m.t1)??0,tokens:ne(m.tokens)??0,cost:ne(m.cost)??0,pct:ne(m.pct)??0,per1Tokens:ne(m.per1Tokens)??0,per1Cost:ne(m.per1Cost)??0})));s[o]={windows:a,intervals:l}}return{generatedAt:ne(t.generatedAt)??0,providers:s}}r(aa,"parsePlanStats");function gt(t,s){return(t===null||typeof t!="object"||Array.isArray(t))&&Z(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}:ea(t.balance,s+".balance"),goQuota:t.goQuota===void 0||t.goQuota===null?{status:"off",message:"",fetchedAt:0,rolling:null,weekly:null,monthly:null}:ta(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,index:null}:ft(t.customBalance,s+".customBalance"),customBalances:Array.isArray(t.customBalances)?t.customBalances.filter(o=>o!==null&&typeof o=="object").map((o,n)=>ft(o,s+".customBalances["+n+"]")):[],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,n)=>Re(o,s+".history["+n+"]")):[],config:Xt(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(gt,"parseState");function na(t,s){(t===null||typeof t!="object"||Array.isArray(t))&&Z(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=gt(t.state,s+".state")),o}r(na,"parseFetchResult");function ue(t){return{parse:t}}r(ue,"codecOf");const Ge=ue(gt),sa=ue(t=>((t===null||typeof t!="object"||Array.isArray(t))&&Z("patch","object"),t)),ye=ue(na),oa=ue(t=>(typeof t!="string"&&Z("provider","string"),t)),la=ue(t=>(typeof t!="string"&&Z("date","string"),t)),ra=ue(t=>((t===null||typeof t!="object"||Array.isArray(t))&&Z("day","object"),t)),ia=ue(t=>(Number.isFinite(Number(t))||Z("limit","number"),Number(t))),bt=ue(t=>(typeof t!="string"&&Z("sort","string"),t)),ca=ue(t=>((t===null||typeof t!="object"||Array.isArray(t))&&Z("topSessions","object"),t)),ht=ue(t=>(typeof t!="string"&&Z("target","string"),t)),da=ue(t=>(typeof t!="string"&&Z("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:Ge}},{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:Ge}},{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:Ge}},{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:bt},acceptsUndefined:!0},{name:"dir",wire:"dir",source:"json",codec:{mode:"strict",typeSymbol:"dsh-cost-meter#SessionSortDir",schema:bt},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:ht}},{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:ht}}],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 yt(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,a={cacheHit:s("cacheHit")??s("cachedInput")??s("cacheRead")??o,cacheMiss:o,output:s("output")??0},l=s("reasoning");return l!==void 0&&(a.reasoning=l),a}r(yt,"normalizeClientTier");function pa(t){const s=yt(t);if(s===void 0)return null;for(const o of["offPeak","peak","legacyBase"]){const n=yt(t[o]);n!==void 0&&(s[o]=n)}return s}r(pa,"normalizeClientPrice");const kt=Date.parse("2026-08-22T16:00:00Z");function Ee(t){if(!Number.isFinite(t)||t<kt)return null;const s=Math.floor((t+8*36e5)/864e5),o=(s+4)%7;if(o!==6&&o!==0)return null;const n=o===6?s:s-1;return{start:Math.max(n*864e5-8*36e5,kt),end:(n+2)*864e5-8*36e5}}r(Ee,"weekendZoneAt");function wt(t,s,o){if(!Array.isArray(o)||o.length===0||Ee(t)!==null||Number.isFinite(s)&&t<s)return!1;const n=new Date(t).getUTCHours();return o.some(a=>{const l=Number(a.start),i=Number(a.end);return!Number.isFinite(l)||!Number.isFinite(i)?!1:l<i?n>=l&&n<i:n>=l||n<i})}r(wt,"isPeakHour");const fa=Date.parse("2026-08-16T16:00:00Z");function xt(t,s,o){const n=t??{cacheHit:0,cacheMiss:0,output:0},a=r(i=>({cacheHit:i.cacheHit,cacheMiss:i.cacheMiss,output:i.output,reasoning:i.reasoning??0}),"asTier");if(Number.isFinite(s)&&s<fa){const i=n.legacyBase;return a(i===void 0?n:i)}if(o?.enabled!==!0)return a(n);const l=typeof o.effectiveAtMs=="number"&&Number.isFinite(o.effectiveAtMs)?o.effectiveAtMs:void 0;if(wt(s,l,o.windows)){const i=n.peak;return a(i===void 0?n:i)}if(l!==void 0&&s>=l){const i=n.offPeak;return a(i===void 0?n:i)}return a(n)}r(xt,"tierFor");function vt(t,s){const o=Math.max(0,Number(t.input)||0),n=Math.max(0,Number(t.output)||0),a=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+n*s.output+(a+l)*s.cacheHit+i*(s.reasoning??0))/1e6}r(vt,"costOfBuckets");function Nt(t,s,o){const n=Number(t);if(!Number.isFinite(n)||n<0||n===0)return 0;if(s!=="CNY")return n;const a=Number(o);return!Number.isFinite(a)||a<=0?n:n/a}r(Nt,"usdFromCostLocal");function le(t,s){const o=t?.barDirections,n=s==="balance"?"remaining":"used";if(o===null||typeof o!="object"||Array.isArray(o))return n;const a=o[s];return a==="remaining"||a==="used"?a:n}r(le,"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))),n=s==="remaining"?Math.round((100-o)*10)/10:Math.round(o*10)/10;return{width:n,label:n}}r(me,"simpleBarByDirection");function ce(t,s){const o=typeof s?.symbol=="string"&&s.symbol.length>0?s.symbol:"$",n=Number(s?.decimals),a=Math.max(0,Math.min(10,Number.isFinite(n)?Math.floor(n):2));let l=a;t>0&&t<Math.pow(10,-a)&&(l=a+2);const i=t.toFixed(l),c=i.includes(".")?i.replace(/0+$/,"").replace(/\.$/,""):i;return o+c}r(ce,"formatMoneyValue");function J(t,s){const o=Number(s?.exchangeRate),n=t*(Number.isFinite(o)&&o>0?o:1);return ce(n,s)}r(J,"formatMoneyUsd");function q(t){const s=Math.max(0,Number(t)||0),o=r(n=>n>=100?String(Math.round(n)):String(Math.round(n*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 n=r(v=>String(v).toLowerCase().replace(/[-@]\d{4}-?\d{2}-?\d{2}$/,"").replace(/[-@]v\d+(\.\d+)*$/,""),"strip"),a=o.find(v=>v===t);if(a!==void 0)return a;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,m=0;for(const v of o){const A=de(v);if(!(A.length<4||A===l)&&l.includes(A)&&A.length>m){const S=l.indexOf(A);if(/^\d{1,2}$/.test(l.slice(S+A.length)))continue;c=v,m=A.length}}if(c!==null)return c;const y=n(t),u=o.find(v=>n(v)===y);if(u!==void 0)return u;let k=null;for(const v of o){const A=n(v);if(A.length===0||A===y)continue;const S=y.slice(A.length);if(y.startsWith(A)&&/^[-_./:]/.test(S)){if(/^\d{1,2}$/.test(S.replace(/^[-_./:]+/,"")))continue;(k===null||n(k).length<A.length)&&(k=v)}}if(k!==null)return k;const w=r(v=>n(v).split(/[-_./:]+/).filter(Boolean),"tokensOf"),h=w(t);if(h.length<2)return null;let f=null,C=0;for(const v of o){const A=w(v);let S=0;for(;S<h.length&&S<A.length&&h[S]===A[S];)S+=1;S<h.length&&S<A.length&&/^\d+$/.test(h[S])&&/^\d+$/.test(A[S])||S>=2&&S===A.length&&S<h.length&&h.slice(S).every(g=>/^\d{1,2}$/.test(g))||S>=2&&S<h.length&&S<A.length&&(/^\d{1,2}$/.test(h[S])&&/^[a-z]/.test(A[S])||/^\d{1,2}$/.test(A[S])&&/^[a-z]/.test(h[S]))||S>=2&&(S>C||S===C&&f!==null&&v.length<f.length)&&(f=v,C=S)}return f}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(n=>o.startsWith(n))}r(ha,"isLocalOriginClient");function _e(t,s,o){const n=o?.prices??{},a=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,m=s;const y=l[i+":"+s];if(y==="__local__")return{entry:null,priced:!1,billingMode:"flat",matched:!0};if(typeof y=="string"&&y.length>0){const w=y.indexOf(":");if(w>0&&y.slice(w+1).length>0?(c=y.slice(0,w).trim().toLowerCase(),m=y.slice(w+1)):m=y,c==="deepseek"&&m==="__default__")return{entry:n.default??{cacheHit:0,cacheMiss:0,output:0},priced:!0,billingMode:"deepseek-peak",matched:!1}}if(ha(c,m))return{entry:null,priced:!1,billingMode:"flat",matched:!1};if(c==="deepseek"||c.includes("deepseek")){const w=n.models??{},h=w[m]!==void 0?m:a==="auto"?Ne(m,Object.keys(w)):null;if(h!==null)return{entry:w[h],priced:!0,billingMode:"deepseek-peak",matched:!0};if(a==="auto"){let f=null,C=-1,v="flat";for(const[A,S]of Object.entries(n.providers??{})){const g=S?.models??{},N=Ne(m,Object.keys(g));if(N===null||g[N]?.unpriced===!0)continue;const d=(N===m||de(N)===de(m)?1e3:0)+de(N).length;d>C&&(f=g[N],C=d,v=g[N]?.billingMode==="deepseek-peak"?"deepseek-peak":"flat")}if(f!==null)return{entry:f,priced:!0,billingMode:v,matched:!0}}return{entry:n.default??{cacheHit:0,cacheMiss:0,output:0},priced:!0,billingMode:"deepseek-peak",matched:!1}}const u=n.providers?.[c]?.models??{},k=u[m]!==void 0?m:a==="auto"?Ne(m,Object.keys(u)):null;if(k!==null)return{entry:u[k],priced:u[k]?.unpriced!==!0,billingMode:"flat",matched:!0};if(a==="auto"){const w=n.models??{},h=Ne(m,Object.keys(w));if(h!==null)return{entry:w[h],priced:!0,billingMode:"deepseek-peak",matched:!0};let f=null,C=-1,v="flat";for(const[A,S]of Object.entries(n.providers??{})){if(A===c)continue;const g=S?.models??{},N=Ne(m,Object.keys(g));if(N===null||g[N]?.unpriced===!0)continue;const d=(N===m||de(N)===de(m)?1e3:0)+de(N).length;d>C&&(f=g[N],C=d,v=g[N]?.billingMode==="deepseek-peak"?"deepseek-peak":"flat")}if(f!==null)return{entry:f,priced:!0,billingMode:v,matched:!0}}if(i!=="deepseek"&&!i.includes("deepseek")&&typeof y=="string"&&y.length>0&&!y.includes(":")){const w=n.models??{},h=w[y]!==void 0?y:a==="auto"?Ne(y,Object.keys(w)):null;if(h!==null)return{entry:w[h],priced:!0,billingMode:"deepseek-peak",matched:!0}}return{entry:null,priced:!1,billingMode:"flat",matched:!1}}r(_e,"resolveClientPrice");function St(t,s){return!t||!s?0:typeof t.cost=="number"&&Number.isFinite(t.cost)?t.cost:Ye(t,s).total}r(St,"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"]},Ct=["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,n]of Object.entries(ka))if(n.includes(s))return o;return Ct.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 n of Ct)n!=="go"&&o[n]?.enabled===!0&&s.add(n);return t?.goQuota?.enabled===!0&&s.add("go"),s}r(xa,"enabledPlanSetOfLocal");function va(t,s,o){const n=String(t??"").trim().toLowerCase();if(n.length>0&&n!=="deepseek"&&!n.includes("deepseek"))return!1;const a=de(s);if(a.length===0)return!1;const l=o?.prices,i=l?.models??{};for(const c of Object.keys(i))if(de(c)===a)return!1;for(const c of Object.values(l?.providers??{}))for(const m of Object.keys(c?.models??{}))if(de(m)===a)return!0;return!1}r(va,"isRoutedThirdPartyCallLocal");function Ke(t,s,o){let n=wa(t);if(n===null&&va(t,s,o)&&(n="go"),n===null)return"api";const a=o?.planBilling?.models;if(a!==null&&typeof a=="object"){const i=a[t+":"+s];if(i==="plan"||i==="api")return i;const c=a[n+":"+s];if(c==="plan"||c==="api")return c}const l=o?.planBilling?.providers?.[n];return l==="plan"||l==="api"?l:xa(o).has(n)?"plan":"api"}r(Ke,"billingClassOfLocal");function Ye(t,s){if(!t||!s)return{total:0,api:0};const o={enabled:s.peakEnabled===!0,effectiveAtMs:Date.parse(s.peakEffectiveAt||""),windows:s.peakWindows},n=Date.now(),a=t.byProviderModel??t.byModel??{};let l=0,i=0;for(const k of Object.keys(a)){const w=k.indexOf(":"),h=w>0?k.slice(0,w):"deepseek",f=w>0?k.slice(w+1):k,C=_e(h,f,s);if(C.priced){const v=vt(a[k],xt(pa(C.entry),n,{...o,enabled:C.billingMode==="deepseek-peak"&&o.enabled})),A=Nt(v,C.billingMode==="deepseek-peak"&&s.prices?.currency==="CNY"?"CNY":"USD",s.exchangeRate);l+=A,Ke(h,f,s)==="api"&&(i+=A)}}const c={input:0,output:0,cacheRead:0,cacheWrite:0,reasoning:0};for(const k of Object.keys(a))c.input+=a[k].input??0,c.output+=a[k].output??0,c.cacheRead+=a[k].cacheRead??0,c.cacheWrite+=a[k].cacheWrite??0,c.reasoning+=a[k].reasoning??0;const m={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)},y=vt(m,xt(ma("default",s.prices),n,o)),u=Nt(y,s.prices?.currency==="CNY"?"CNY":"USD",s.exchangeRate);return l+=u,i+=u,{total:l,api:i}}r(Ye,"usageSplit");function Pt(t,s){if(!t||!s)return!1;const o=t.byProviderModel??{};for(const n of Object.keys(o)){const a=n.indexOf(":"),l=a>0?n.slice(0,a):"deepseek",i=a>0?n.slice(a+1):n;if(Ke(l,i,s)==="plan")return!0}return!1}r(Pt,"usageHasPlanClass");function At(t){return(t?.input??0)+(t?.cacheRead??0)+(t?.cacheWrite??0)}r(At,"billedInput");function Ve(t){const s=Math.abs(Math.round(Number(t)||0)),o=Math.floor(s/60),n=s%60;return"UTC"+(Number(t)<0?"-":"+")+o+(n>0?":"+String(n).padStart(2,"0"):"")}r(Ve,"formatTzOffset");function Na(t){const s=t?.meta,o=Number(s?.timezoneOffsetMinutes);if(!Number.isFinite(o))return null;const n=-new Date().getTimezoneOffset();if(n===o)return null;const a=typeof s?.timezone=="string"&&s.timezone.length>0?s.timezone:"";return{hostLabel:a?a+" ("+Ve(o)+")":Ve(o),browserLabel:Ve(n)}}r(Na,"timezoneMismatchOf");function Sa(t){let s=t;const o=new Set;return{getSnapshot:r(()=>s,"getSnapshot"),subscribe:r(n=>(o.add(n),()=>{o.delete(n)}),"subscribe"),set:r(n=>{if(n!==s){s=n;for(const a of[...o])a()}},"set")}}r(Sa,"makeStore");const{createElement:e,Fragment:F,useState:E,useEffect:re,useRef:Se}=Ae;function je({target:t,configured:s,source:o,t:n,api:a,placeholder:l,disabled:i}){const[c,m]=E(""),[y,u]=E(!1),[k,w]=E(null),h=i===!0||y,f=r(async()=>{const v=c.trim();if(!(v.length===0||h)){u(!0),w(null);try{const A=await a.setCredential(t,v);m(""),w({kind:"ok",text:A?.message??n("credentialSave")})}catch(A){w({kind:"err",text:String(A?.message??A)})}finally{u(!1)}}},"save"),C=r(async()=>{if(!h){u(!0),w(null);try{const v=await a.clearCredential(t);m(""),w({kind:"ok",text:v?.message??n("credentialClear")})}catch(v){w({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:h,autoComplete:"off",onChange:r(v=>m(v.target.value),"onChange")}),e("div",{className:"cm-buttons"},e("button",{className:"cm-btn small",onClick:f,disabled:h||c.trim().length===0},n(y?"credentialSaving":"credentialSave")),s===!0?e("button",{className:"cm-btn small",onClick:C,disabled:h},n("credentialClear")):null),e("span",{className:"cm-hint"},s===!0?n("credentialConfiguredOf",{source:typeof o=="string"&&o.length>0?o:"unknown"}):n("credentialNotConfigured")),e("span",{className:"cm-hint"},n("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 Je({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(Je,"WalletIcon");function $e(t,s){const o=Se(!1),n=Se(""),a=s!==null&&typeof s=="object"?[s.input,s.cacheRead,s.cacheWrite,s.output,s.reasoning,s.cost].map(l=>String(l??0)).join("|"):"";re(()=>{if(!o.current){o.current=!0,n.current=a;return}if(a===""||a===n.current)return;n.current=a;const l=setTimeout(()=>{t.api?.reload?.()},800);return()=>clearTimeout(l)},[a])}r($e,"useProjectionRefresh");function Pa(t){const s=t.useProjection?t.useProjection("costUsage"):void 0,o=t.useCost?t.useCost(y=>y):void 0;$e(t,s);const n=o?.state?.config;if(!s||!n||At(s)+(s?.output??0)===0)return null;const a=V(H(n.locale));let l=0,i=St(s,n);if(n.showTotalWithPlan!==!0&&Pt(s,n)){const y=Ye(s,n);l=Math.max(0,y.total-y.api),l>0&&(i=y.api)}const c=At(s),m=[a("sessionCostTitle"),a("sessionDetailTokens",{input:q(s?.input??0),cache:q((s?.cacheRead??0)+(s?.cacheWrite??0)),output:q(s?.output??0)}),a("sessionDetailCache",{read:q(s?.cacheRead??0),write:q(s?.cacheWrite??0)}),a("cost",{amount:J(i,n)}),...l>0?[a("sessionDetailPlan",{amount:J(l,n)})]:[]].join("; ");return e(ee,{label:m,side:"top",delayMs:500},e("div",{className:"cm-chip"},l>0?a("costChipPlan",{amount:J(i,n)}):a("cost",{amount:J(i,n)})))}r(Pa,"SessionCost");function Aa(t){const s=t.useProjection?t.useProjection("costUsage"):void 0,o=t.useCost?t.useCost(u=>u):void 0;$e(t,s);const n=o?.state?.config;if(!s||!n)return null;const a=s.input??0,l=(s.cacheRead??0)+(s.cacheWrite??0),i=s.output??0;if(a+l+i===0)return null;const c=V(H(n.locale));let m=0,y=St(s,n);if(n.showTotalWithPlan!==!0&&Pt(s,n)){const u=Ye(s,n);m=Math.max(0,u.total-u.api),m>0&&(y=u.api)}return e("div",{className:"cm-root"},m>0?c("sessionLineSplit",{amount:J(y,n),planAmount:J(m,n),input:q(a),cache:q(l),output:q(i)}):c("sessionLine",{amount:J(y,n),input:q(a),cache:q(l),output:q(i)}))}r(Aa,"DockLine");const Ma={USD:"$",CNY:"\xA5",EUR:"\u20AC"};function be(t,s,o){const n=typeof o=="string"?o.toUpperCase():"",a=typeof s?.symbol=="string"&&s.symbol.length>0?s.symbol:"$";return ce(t,{symbol:Ma[n]??a,decimals:Math.max(2,Math.min(10,Math.floor(Number(s?.decimals)||2)))})}r(be,"formatBalanceMoney");function Mt(t,s){const o=Number(t?.balance?.budgetCap);if(Number.isFinite(o)&&o>0)return o;const n=Number(s?.maxBudget);return Number.isFinite(n)&&n>0?n:null}r(Mt,"resolveBalanceCap");function Ba(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 n=0;for(const[a,l]of Object.entries(o)){const i=a.indexOf(":");let c=i>=0?a.slice(0,i):a;c.startsWith("llm-")&&(c=c.slice(4)),!(c!=="deepseek"&&c!=="deepseek-official")&&(n+=Number(l?.cost)||0)}return n}r(Ba,"todayOfficialUsd");function Bt(t,s,o,n,a=null){const l=o==="official"?Ba(t):Number(t.today?.cost)||0;if(o==="custom"){if(Ot(s,n,a)==="USD")return l;const m=Number(s?.exchangeRate);return l*(Number.isFinite(m)&&m>0?m:1)}const i=Number(s?.exchangeRate);return l*(Number.isFinite(i)&&i>0?i:1)}r(Bt,"todayUsedInBalanceCurrency");function Tt({remaining:t,spend:s,todayUsed:o,cap:n}){if(n===null||n<=0)return{remainingPct:100,todayPct:0,spentPct:0,hasCap:!1,pastSpend:0,today:0};const a=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),m=Math.max(0,Math.min(100,a/n*100)),y=Math.max(0,Math.min(100-m,i/n*100)),u=Math.max(0,Math.min(100-m-y,c/n*100));return{remainingPct:m,todayPct:y,spentPct:u,hasCap:!0,pastSpend:c,today:i}}r(Tt,"computeBalanceSegments");function Ze(t,s,o=null,n=null){const a=o??t.customBalance,l=Mt(s,a),i=Number(a?.remaining)||0,c=Number(a?.spend)||0,m=Bt(t,s,"custom",a,n);return{cap:l,...Tt({remaining:i,spend:c,todayUsed:m,cap:l})}}r(Ze,"segmentsForCustomBalance");function Ta(t,s){const o=t.balance,n=Mt(s,null),a=Number(o?.totalBalance)||0,l=Bt(t,s,"official",null),i=n!==null?Math.max(0,n-a):0;return{cap:n,...Tt({remaining:a,spend:i,todayUsed:l,cap:n})}}r(Ta,"segmentsForOfficialBalance");function Xe(t){const{segments:s,direction:o="remaining"}=t,{remainingPct:n,todayPct:a,spentPct:l}=s,i=[];n>0&&i.push(e("div",{className:"cm-bbox-fill",style:{width:n+"%"}})),a>0&&i.push(e("div",{className:"cm-bbox-seg-today",style:{width:a+"%"}})),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(Xe,"BalanceBar");function Lt(t,s,o,n,a){const l=[t("balanceBarRemaining",{amount:n})];return o.today>0&&l.push(t("balanceBarToday",{amount:s(o.today)})),o.pastSpend>0&&l.push(t("balanceBarSpent",{amount:s(o.pastSpend)})),a!==null&&a>0&&l.push(t("balanceBudgetCapLabel")+": "+s(a)),l.join(" \xB7 ")}r(Lt,"balanceBarTooltipLines");function xe(t){const[s,o]=E(!1),[n,a]=E(null);return{busy:s,err:n,run:r(()=>{s||typeof t!="function"||(o(!0),a(null),Promise.resolve().then(t).catch(i=>{a(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 Dt(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(Dt,"rechargeLinkEl");function Da(t){const{state:s,wide:o,api:n}=t,a=s.balance,l=V(H(s.config?.locale)),i=xe(n?()=>n.refreshBalance():null);if(!a||a.status==="off")return null;if(a.status==="error")return e(ee,{label:[l("balanceQueryFailed",{message:a.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(a.totalBalance,s.config,a.currency)}),l("grantedToppedUp",{granted:be(a.grantedBalance,s.config,a.currency),toppedUp:be(a.toppedUpBalance,s.config,a.currency)}),l("updatedAt",{time:a.fetchedAt>0?new Date(a.fetchedAt).toLocaleTimeString():"\u2014"}),...s.reconcile?.ok===!1?["\u26A0 "+s.reconcile.message]:[],...he(l,i)].join("; ");return e(ee,{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(a.totalBalance,s.config,a.currency))," ",Dt(l),s.reconcile?.ok===!1?" \u26A0":""):e(Je,{size:16})))}r(Da,"BalanceRowContent");function Oa(t){const{state:s,wide:o,api:n}=t,a=s.config,l=s.balance,i=V(H(a?.locale)),c=xe(n?()=>n.refreshBalance():null);if(!l||l.status!=="ok")return null;const m=Ta(s,a),y=be(l.totalBalance,a,l.currency),u=r(h=>be(h,a,l.currency),"formatAmt"),k=[i("balanceTitle"),Lt(i,u,m,y,m.cap),i("grantedToppedUp",{granted:be(l.grantedBalance,a,l.currency),toppedUp:be(l.toppedUpBalance,a,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("; "),w=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"},y),Dt(i)),e(Xe,{segments:m,direction:le(a,"balance")}));return e(ee,{label:k,side:"right",delayMs:300},e("div",{className:"cm-bbox clickable"+(o?"":" rail")+(c.busy?" busy":""),...pe(c.busy,c.run)},o?w:e("div",{className:"cm-bbox-rail cm-num"},Math.round(m.remainingPct)+"%")))}r(Oa,"BalanceBox");function qe(t,s){const o=typeof t?.label=="string"?t.label:"",n=typeof t?.labelEn=="string"?t.labelEn:"";return s==="en"?n||o||"Custom balance":o||n||"\u81EA\u5B9A\u4E49\u4F59\u989D"}r(qe,"resolveCustomBalanceLabel");function Ot(t,s,o){const n=o?.unit??t?.customBalance?.unit;return n==="CNY"||n==="EUR"||n==="USD"?n:s?.unit==="CNY"||s?.unit==="EUR"?s.unit:"USD"}r(Ot,"customBalanceUnitOf");function ke(t,s,o,n){const a=Ot(s,o,n),l=Math.max(2,Math.min(6,Math.floor(Number(s?.decimals)||4))),i=a==="CNY"?"\xA5":a==="EUR"?"\u20AC":"$",c=Number(t);if(!Number.isFinite(c))return"\u2014";let m=c.toFixed(l);return m.includes(".")&&(m=m.replace(/0+$/,"").replace(/\.$/,"")),i+m}r(ke,"formatCustomBalanceMoney");function et(t,s,o,n,a=null){const l=ke(t.remaining,s,t,a),i=r(w=>ke(w,s,t,a),"formatAmt");if(n&&s.balance?.showProgressBar===!0){const w=Ze(n,s,t,a);return[Lt(o,i,w,l,w.cap),o("updatedAt",{time:t.fetchedAt>0?new Date(t.fetchedAt).toLocaleTimeString():"\u2014"})].join(" \xB7 ")}const c=t.spend!==null?ke(t.spend,s,t,a):"\u2014",m=t.maxBudget!==null?ke(t.maxBudget,s,t,a):"\u2014",y=Number(s?.balance?.budgetCap),u=Number.isFinite(y)&&y>0?o("balanceBudgetCapLabel")+": "+ke(y,s,t,a):"",k=t.maxBudget!==null&&t.spend!==null?o("customBalanceLine",{remaining:l,spend:c,maxBudget:m,time:t.fetchedAt>0?new Date(t.fetchedAt).toLocaleTimeString():"\u2014"}):o("customBalanceRemaining",{amount:l});return u?k+" \xB7 "+u:k}r(et,"customBalanceDetailText");function Ra(t,s,o,n,a){const l=qe(a??s.customBalance??{},H(s?.locale)),i=ke(n.remaining,s,n,a),c=Ze(t,s,n,a);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(Xe,{segments:c,direction:le(s,"balance")}))}}r(Ra,"customBalanceBoxBody");function tt(t,s){const o=s?.customBalances??[],n=Array.isArray(t?.customBalances)?t.customBalances:[],a=[];return o.forEach((l,i)=>{if(l?.enabled!==!0||l.display!=="sidebar"&&l.display!=="both")return;const c=n.find(m=>m.index===i)??(n.length===1&&o.length===1?n[0]:null);a.push({index:i,entry:l,snapshot:c})}),a.length===0&&n.length===0&&s?.customBalance?.enabled===!0&&(s.customBalance.display==="sidebar"||s.customBalance.display==="both")&&t?.customBalance?.status&&t.customBalance.status!=="off"&&a.push({index:null,entry:s.customBalance,snapshot:t.customBalance}),a}r(tt,"visibleCustomEntries");function Ea(t){const{state:s,wide:o,api:n}=t,a=s.config,l=V(H(a?.locale)),i=tt(s,a);return i.length===0?null:e(F,null,i.map(({index:c,entry:m,snapshot:y})=>e(ja,{key:"cb-"+c,state:s,wide:o,api:n,t:l,index:c,entry:m,snapshot:y})))}r(Ea,"CustomBalanceBox");function ja(t){const{state:s,wide:o,api:n,t:a,index:l,entry:i,snapshot:c}=t,m=s.config;if(c==null||c.status!=="ok")return null;const y=xe(n?()=>n.refreshCustomBalance(l):null),u=Ra(s,m,a,c,i),k=[et(c,m,a,s,i),...he(a,y)].join(" \xB7 ");return e(ee,{label:k,side:"right",delayMs:300},e("div",{className:"cm-bbox clickable"+(u.level==="ok"?"":" "+u.level)+(o?"":" rail")+(y.busy?" busy":""),...pe(y.busy,y.run)},o?u.body:e("div",{className:"cm-bbox-rail cm-num"},u.rail)))}r(ja,"CustomBalanceEntryBox");function qa(t){const{state:s,wide:o,api:n}=t,a=s.config,l=V(H(a?.locale)),i=tt(s,a);return i.length===0?null:e(F,null,i.map(({index:c,entry:m,snapshot:y})=>e(Fa,{key:"cbr-"+c,state:s,wide:o,api:n,t:l,index:c,entry:m,snapshot:y})))}r(qa,"CustomBalanceRowContent");function Fa(t){const{state:s,wide:o,api:n,t:a,index:l,entry:i,snapshot:c}=t,m=s.config,y=c??{status:"off",message:"",fetchedAt:0,label:"",unit:"USD",remaining:0,maxBudget:null,spend:null,index:l};if(y.status==="off")return null;const u=xe(n?()=>n.refreshCustomBalance(l):null),k=qe(i??m.customBalance??{},H(m?.locale));if(y.status==="error")return e(ee,{label:[y.message||a("unknownError"),...he(a,u)].join("; "),side:"right",delayMs:300},e("div",{className:"cm-foot clickable"+(o?"":" cm-foot-rail")+" cm-bal-err"+(u.busy?" busy":""),...pe(u.busy,u.run)},o?e(F,null,k," ",e("span",{className:"cm-num"},a("queryFailed"))):"\u26A0"));const w=ke(y.remaining,m,y,i),h=[et(y,m,a,s,i),...he(a,u)].join(" \xB7 ");return e(ee,{label:h,side:"right",delayMs:300},e("div",{className:"cm-foot clickable"+(o?"":" cm-foot-rail")+(u.busy?" busy":""),...pe(u.busy,u.run)},o?e(F,null,k," ",e("span",{className:"cm-num"},w)):e(Je,{size:16})))}r(Fa,"CustomBalanceEntryRow");function Ua(t){const o=(t.useCost?t.useCost(f=>f):void 0)?.state;if(!o)return null;const n=o.config,a=V(H(n?.locale)),l=n.corner??{enabled:!1,goRolling:!0,goWeekly:!0,goMonthly:!0,budget:!0},i=o.goQuota,c=n?.goQuota?.enabled!==!1&&i?.status==="ok",m=r(f=>f!==null&&typeof f?.percent=="number"?Math.round(Math.max(0,Math.min(100,f.percent))):null,"pctOf"),y=[],u=r((f,C,v,A)=>{if(!f||!c)return;const S=m(C);if(S===null)return;const g=typeof C.resetsAt=="string"&&C.resetsAt.length>0?a("goResetAt",{time:new Date(C.resetsAt).toLocaleString()}):"";y.push({key:v,text:a(v)+" "+S+"%",tip:a(A)+": "+S+"%"+(g?" \xB7 "+g:""),level:S>=100?"over":S>=80?"warn":"ok"})},"pushGo"),k=n?.goQuota?.main==="weekly"||n?.goQuota?.main==="monthly"?n.goQuota.main:"rolling",w=[k,...["rolling","weekly","monthly"].filter(f=>f!==k)],h=r(f=>f==="rolling"?["goRolling",i?.rolling,"goShortRolling","cornerGoRolling"]:f==="weekly"?["goWeekly",i?.weekly,"goShortWeekly","cornerGoWeekly"]:["goMonthly",i?.monthly,"goShortMonthly","cornerGoMonthly"],"defOf");for(const f of w){const[C,v,A,S]=h(f);u(l[C]===!0,v,A,S)}if(l.budget===!0){const f=n.budget??{enabled:!1,amount:100,period:"month"};if(f.enabled===!0){const C=Number(n.exchangeRate),A=(o.budgetUsed??(f.period==="day"?_(o.today,n):f.period==="all"?_(o.total,n):_(o.month,n)))*(Number.isFinite(C)&&C>0?C:1),S=Math.max(0,Number(f.amount)||0),g=S>0?Math.min(999,A/S*100):null;if(g!==null){const N=g>=100?"over":g>=80?"warn":"ok";y.push({key:"budget",text:a("budgetShort")+" "+g.toFixed(1)+"%",tip:a("budgetOf",{period:a(De[f.period]??"periodMonth")})+" \xB7 "+a("usedOf",{used:ce(A,n),amount:ce(S,n)}),level:N})}}}return y.length===0?null:e("div",{className:"cm-corner"},y.map(f=>e(ee,{key:f.key,label:f.tip,side:"top",delayMs:500},e("span",{className:"cm-corner-chip"+(f.level==="ok"?"":" "+f.level)},f.text))))}r(Ua,"CornerChips");function Fe(t,s){if(!Array.isArray(s)||s.length===0||!Number.isFinite(t))return null;const o=r((m,y)=>{const u=new Date(t);return u.setUTCDate(u.getUTCDate()+m),u.setUTCHours(y,0,0,0),u.getTime()},"hourAt"),n=[];for(let m=-4;m<=4;m+=1)for(const y of s){const u=Number(y?.start),k=Number(y?.end);if(!Number.isFinite(u)||!Number.isFinite(k))continue;const w={at:o(m,u),intoPeak:!0},h={at:o(k<=u?m+1:m,k),intoPeak:!1};Ee(w.at)===null&&n.push(w),Ee(h.at)===null&&n.push(h)}let a=null,l=null;for(const m of n)m.at<=t&&(a===null||m.at>a.at)&&(a=m),m.at>t&&(l===null||m.at<l.at)&&(l=m);const i=Ee(t);return i!==null?l===null?null:{inPeak:!1,weekend:!0,prevAtMs:i.start,nextAtMs:l.at,nextIntoPeak:l.intoPeak}:a===null||l===null?null:{inPeak:wt(t,void 0,s),weekend:!1,prevAtMs:a.at,nextAtMs:l.at,nextIntoPeak:l.intoPeak}}r(Fe,"peakPhaseAt");function Ue(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 n=Array.isArray(t.peakWindows)?t.peakWindows:[];return Fe(s,n)}r(Ue,"peakView");function Ie(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(Ie,"phaseLabelKeys");function fe(t,s,o){const n=Math.max(0,t.nextAtMs-s),a=Math.max(1,Math.ceil(n/6e4)),l=Math.floor(a/60),i=a%60;return l>0?i>0?o("countdownHourMinute",{h:l,m:i}):o("countdownHoursOnly",{h:l}):o("countdownMinute",{m:a})}r(fe,"countdownText");const at="cm-peak-alert-preview";let Rt=0;function Ia(t){const s=t.useCost?t.useCost(C=>C):void 0,o=s?.state?.config,[n,a]=E(Date.now()),[l,i]=E(null),[c,m]=E(null);if(re(()=>{const C=window.setInterval(()=>a(Date.now()),1e4);return()=>window.clearInterval(C)},[]),re(()=>{const C=r(v=>{const A=v.detail?.kind==="offpeak"?"offpeak":"peak";m(A);const S=s?.state?.config;if(S?.peakAlertWebNotify===!0&&window.Notification&&Notification.permission==="granted"){const g=V(H(S.locale));try{new Notification(g(A==="peak"?"peakAlertTitlePeak":"peakAlertTitleOffPeak")+g("peakAlertPreviewTag"),{body:g("peakAlertBody",{time:g("countdownMinute",{m:2}),phase:g(A==="peak"?"peakAlertPhasePeak":"peakAlertPhaseOffPeak")})})}catch{}}},"onPreview");return window.addEventListener(at,C),window.__cmPeakAlertLive=!0,()=>{window.removeEventListener(at,C),window.__cmPeakAlertLive=!1}},[]),re(()=>{if(!o||o.peakAlertEnabled!==!0||o.peakEnabled!==!0||o.peakAlertWebNotify!==!0||!window.Notification||Notification.permission!=="granted")return;const C=Fe(n,Array.isArray(o.peakWindows)?o.peakWindows:[]);if(C===null)return;const v=o.peakAlertTarget==="peak"||o.peakAlertTarget==="offpeak"?o.peakAlertTarget:"both",A=C.nextIntoPeak===!0;if(v!=="both"&&v!==(A?"peak":"offpeak"))return;const S=Number(o.peakAlertAhead),g=(Number.isFinite(S)&&S>=1?S:2)*6e4;if(n<C.nextAtMs-g||n>=C.nextAtMs||Rt===C.nextAtMs)return;const N=V(H(o.locale));Rt=C.nextAtMs;try{new Notification(N(A?"peakAlertTitlePeak":"peakAlertTitleOffPeak"),{body:N("peakAlertBody",{time:fe(C,n,N),phase:N(A?"peakAlertPhasePeak":"peakAlertPhaseOffPeak")})})}catch{}},[n]),!o||o.peakEnabled!==!0)return null;let y=null;if(o.peakAlertEnabled===!0){const C=Date.parse(o.peakEffectiveAt||"");if(!(Number.isFinite(C)&&n<C)){const v=Fe(n,Array.isArray(o.peakWindows)?o.peakWindows:[]);if(v!==null){const A=o.peakAlertTarget==="peak"||o.peakAlertTarget==="offpeak"?o.peakAlertTarget:"both",S=Number(o.peakAlertAhead),g=(Number.isFinite(S)&&S>=1?S:2)*6e4;(A==="both"||A===(v.nextIntoPeak?"peak":"offpeak"))&&n>=v.nextAtMs-g&&n<v.nextAtMs&&l!==v.nextAtMs&&(y=v)}}}let u=null,k=!1,w=null;if(y!==null)u=y,k=y.nextIntoPeak===!0,w=r(()=>i(y.nextAtMs),"dismiss");else if(c!==null)u={nextAtMs:n+2*6e4,nextIntoPeak:c==="peak"},k=c==="peak",w=r(()=>m(null),"dismiss");else return null;const h=V(H(o.locale)),f=o.peakAlertPosition==="center"?"cm-peak-alert-center":"cm-peak-alert-corner";return e("div",{className:"cm-peak-alert "+f+" "+(k?"cm-peak-alert-peak":"cm-peak-alert-offpeak"),role:"alert"},e("div",{className:"cm-peak-alert-badge"},h(k?"peakAlertBadgePeak":"peakAlertBadgeOffPeak")),e("div",{className:"cm-peak-alert-title"},h(k?"peakAlertTitlePeak":"peakAlertTitleOffPeak")),e("div",{className:"cm-peak-alert-body"},h("peakAlertBody",{time:fe(u,n,h),phase:h(k?"peakAlertPhasePeak":"peakAlertPhaseOffPeak")})),e("div",{className:"cm-peak-alert-actions"},e("button",{className:"cm-btn",onClick:w},h("peakAlertBtn"))))}r(Ia,"PeakAlert");function Qa(t){const{config:s,t:o}=t,[n,a]=E(Date.now());re(()=>{const m=window.setInterval(()=>a(Date.now()),3e4);return()=>window.clearInterval(m)},[]);const l=Ue(s,n);if(l===null)return null;const i=Ie(l),c=l.nextIntoPeak?o("nextPeakIn",{time:fe(l,n,o)}):o("nextOffPeakIn",{time:fe(l,n,o)});return e(ee,{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(Qa,"PeakStrip");function Ha(t){const{config:s,t:o}=t,[n,a]=E(Date.now());re(()=>{const m=window.setInterval(()=>a(Date.now()),3e4);return()=>window.clearInterval(m)},[]);const l=Ue(s,n);if(l===null)return null;const i=Ie(l),c=l.nextIntoPeak?o("nextPeakIn",{time:fe(l,n,o)}):o("nextOffPeakIn",{time:fe(l,n,o)});return e(ee,{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 nt(t,s,o){return e(s?.peakStyle==="classic"?Ha:Qa,{config:s,t:o})}r(nt,"peakNoticeEl");function Wa(t){const{config:s,t:o}=t,[n,a]=E(Date.now());re(()=>{const y=window.setInterval(()=>a(Date.now()),3e4);return()=>window.clearInterval(y)},[]);const l=Ue(s,n);if(l===null)return null;const i=Ie(l),c=l.nextIntoPeak?o("nextPeakIn",{time:fe(l,n,o)}):o("nextOffPeakIn",{time:fe(l,n,o)}),m=[o(i.notice),c];return e(ee,{label:m,side:"right",delayMs:300},e("div",{className:"cm-peak-rail "+(l.weekend?"weekend":l.inPeak?"peak":"off"),"aria-label":m.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(Wa,"PeakRailStrip");function za(t){const{config:s,t:o}=t,[n,a]=E(Date.now());re(()=>{const y=window.setInterval(()=>a(Date.now()),3e4);return()=>window.clearInterval(y)},[]);const l=Ue(s,n);if(l===null)return null;const i=Ie(l),c=l.nextIntoPeak?o("nextPeakIn",{time:fe(l,n,o)}):o("nextOffPeakIn",{time:fe(l,n,o)}),m=[o(i.notice),c];return e(ee,{label:m,side:"right",delayMs:300},e("div",{className:"cm-peak-rail-classic "+(l.weekend?"weekend":l.inPeak?"peak":"off"),"aria-label":m.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(za,"PeakRailStripClassic");function Ga(t,s,o){return e(s?.peakStyle==="classic"?za:Wa,{config:s,t:o})}r(Ga,"peakNoticeRailEl");function Et(t,s,o){const n=t.today,a=s.budget??{enabled:!1,amount:100,period:"month"},l=Number(s.exchangeRate),c=(t.budgetUsed??(a.period==="day"?_(t.today,s):a.period==="all"?_(t.total,s):_(t.month,s)))*(Number.isFinite(l)&&l>0?l:1),m=Math.max(0,Number(a.amount)||0),y=m>0?Math.min(999,c/m*100):null,u=me(y===null?null:Math.min(100,y),le(s,"budget")),k=_(n,s)*(Number.isFinite(l)&&l>0?l:1),w=m>0?Math.min(999,k/m*100):null,h=a.detail!==!1;return{level:y===null?"ok":y>=100?"over":y>=80?"warn":"ok",rail:u.label===null?"\u2014":Math.round(u.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"},u.label===null?"\u2014":u.label.toFixed(1)+"%")),e("div",{className:"cm-bbox-bar"},e("div",{className:"cm-bbox-fill",style:{width:u.width+"%"}})),h?e(F,null,s.hideTodayCost===!0?null:e("div",{className:"cm-bbox-line cm-num"},o("todayShare",{amount:J(_(n,s),s),pct:w===null?"\u2014":w.toFixed(1)+"%"})),e("div",{className:"cm-bbox-line cm-num"},o("usedOf",{used:ce(c,s),amount:ce(m,s)}))):null,nt(t,s,o))}}r(Et,"budgetBoxBody");function jt(t,s,o){const n=t.goQuota,a=s?.goQuota?.main==="weekly"||s?.goQuota?.main==="monthly"?s.goQuota.main:"rolling",l=n[a],i=l!==null&&typeof l?.percent=="number"?Math.max(0,Math.min(100,Number(l.percent)||0)):0,c=r(h=>h!==null&&typeof h?.percent=="number"?Math.round(Math.max(0,Math.min(100,h.percent)))+"%":"\u2014","pctOf"),m=r(h=>o(h==="rolling"?"goShortRolling":h==="weekly"?"goShortWeekly":"goShortMonthly"),"shortOf"),y=["rolling","weekly","monthly"].filter(h=>h!==a),u=l!==null&&typeof l?.resetsAt=="string"&&l.resetsAt.length>0?o("goResetAt",{time:new Date(l.resetsAt).toLocaleString()}):"",k=s?.goQuota?.detail!==!1,w=me(i,le(s,"go"));return{level:i>=100?"over":i>=80?"warn":"ok",rail:w.label===null?"\u2014":Math.round(w.label)+"%",body:e(F,null,e("div",{className:"cm-bbox-head"},e("span",{className:"cm-bbox-label"},o("goQuotaRowLabel")+" "+m(a)),e("span",{className:"cm-bbox-pct cm-num"},w.label===null?"\u2014":Math.round(w.label)+"%")),e("div",{className:"cm-bbox-bar"},e("div",{className:"cm-bbox-fill",style:{width:w.width+"%"}})),k?e(F,null,e("div",{className:"cm-bbox-line cm-num"},y.map(h=>m(h)+" "+c(n[h])).join(" \xB7 ")),u?e("div",{className:"cm-bbox-line"},u):null):null)}}r(jt,"goBoxBody");function _a(t){const{state:s,wide:o}=t,n=s.goQuota,a=V(H(s.config?.locale));if(!n||n.status!=="ok")return null;const l=s.config?.goQuota?.main==="weekly"||s.config?.goQuota?.main==="monthly"?s.config.goQuota.main:"rolling";if(n[l]===null||typeof n[l]?.percent!="number")return null;const i=jt(s,s.config,a),c=[a("goQuotaTitle"),a("goWindowRolling")+": "+(n.rolling===null?"\u2014":Math.round(n.rolling.percent)+"%"),a("goWindowWeekly")+": "+(n.weekly===null?"\u2014":Math.round(n.weekly.percent)+"%"),a("goWindowMonthly")+": "+(n.monthly===null?"\u2014":Math.round(n.monthly.percent)+"%"+(n.monthly!==null&&typeof n.monthly.resetsAt=="string"&&n.monthly.resetsAt.length>0?" \xB7 "+a("goResetAt",{time:new Date(n.monthly.resetsAt).toLocaleString()}):"")),a("goQuotaFetchedAt",{time:n.fetchedAt>0?new Date(n.fetchedAt).toLocaleTimeString():"\u2014"})].join("; ");return e(ee,{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(_a,"GoQuotaBox");function Ka(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(Ka,"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 qt(t,s){return!t||typeof t.resetsAt!="string"||t.resetsAt.length===0?"":s("goResetAt",{time:new Date(t.resetsAt).toLocaleString()})}r(qt,"miniMaxResetText");function st(t,s,o){const n=Ka(s),a=n===null?"ok":n>=100?"over":n>=80?"warn":"ok",l=me(n,o);return{level:a,pct:n,label:l.label,row:e("div",{className:"cm-mm-row"+(a==="ok"?"":" "+a)},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(st,"miniMaxRow");function Ft(t){const{five:s,seven:o,fetchedAt:n,t:a,wide:l,refresh:i,direction:c="used"}=t,m=st(a("codingPlanRemain5h"),s,c),y=st(a("codingPlanRemain7d"),o,c),u=m.level==="over"||y.level==="over"?"over":m.level==="warn"||y.level==="warn"?"warn":"ok",k=r((C,v,A)=>{const S=A.pct===null?"\u2014":A.pct+"%",g=qt(v,a);return C+" "+S+(g?" \xB7 "+g:"")},"lineOf"),w=[a("codingPlanMinimaxTitle"),k(a("codingPlanRemain5h"),s,m),k(a("codingPlanRemain7d"),o,y),n>0?a("goQuotaFetchedAt",{time:new Date(n).toLocaleTimeString()}):null,...i?he(a,i):[]].filter(Boolean).join("; "),h=e(F,null,e("div",{className:"cm-mm-title"},a("codingPlanMinimaxTitle")),m.row,y.row),f=e(F,null,e("div",{className:"cm-bbox-rail cm-num"},m.pct===null?"\u2014":m.pct+"%"),e("div",{className:"cm-bbox-rail cm-num"},y.pct===null?"\u2014":y.pct+"%"));return e(ee,{label:w,side:"right",delayMs:300},e("div",{className:"cm-bbox cm-mm"+(u==="ok"?"":" "+u)+(l===!1?" rail":"")+(i?" clickable"+(i.busy?" busy":""):""),...i?pe(i.busy,i.run):{}},l===!1?f:h))}r(Ft,"MiniMaxPlanCard");function Ya(t){const{state:s,wide:o,api:n}=t,a=s.codingPlans?.minimax,l=V(H(s.config?.locale)),i=xe(n?()=>n.refreshCodingPlan("minimax"):null);if(!a||a.status!=="ok")return null;const{five:c,seven:m}=Me(a.windows);return c==null&&m==null?null:e(Ft,{five:c,seven:m,fetchedAt:a.fetchedAt,t:l,wide:o,refresh:i,direction:le(s.config,"plan")})}r(Ya,"MiniMaxPlanBox");const Va="/plugins/dsh-openai-codex/auth/status",Ja=168*3600;function $a(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 n=o.windows.find(c=>c!==null&&typeof c=="object"&&Number(c.windowSeconds)===Ja);if(!n||typeof n.remainingPercent!="number"||!Number.isFinite(Number(n.remainingPercent)))return null;const a=Math.max(0,Math.min(100,Math.round((100-Number(n.remainingPercent))*10)/10)),l=Number(n.resetAt),i=Number.isFinite(l)&&l>0?new Date(l*1e3).toISOString():"";return{weekly:{percent:a,resetsAt:i}}}r($a,"parseCodexStatus");const $={status:"idle",windows:{},fetchedAt:0,inFlight:null,listeners:[]},Za=r(t=>($.listeners.push(t),()=>{$.listeners=$.listeners.filter(s=>s!==t)}),"subscribeCodexQuota"),Xa=r(()=>{for(const t of $.listeners)try{t()}catch{}},"notifyCodexQuota");async function Qe(t=!1){if($.inFlight!==null)return $.inFlight;if(!t&&$.fetchedAt>0&&Date.now()-$.fetchedAt<5*6e4)return;const s=(async()=>{try{const o=await fetch(Va,{credentials:"same-origin",headers:{accept:"application/json"},signal:AbortSignal.timeout(8e3)});let n={};if(o.ok){const a=$a(await o.json().catch(()=>null));a!==null&&(n=a)}$.status=Object.keys(n).length>0?"ok":"unavailable",$.windows=n}catch{$.status="unavailable"}finally{$.fetchedAt=Date.now(),$.inFlight=null,Xa()}})();return $.inFlight=s,s}r(Qe,"fetchCodexQuota"),Qe(!1);function en(){const[t,s]=E(()=>({status:$.status,windows:$.windows,fetchedAt:$.fetchedAt}));return re(()=>{let o=!0;const a=Za(r(()=>{o&&s({status:$.status,windows:$.windows,fetchedAt:$.fetchedAt})},"sync"));return Qe(!1),()=>{o=!1,a()}},[]),t}r(en,"useCodexQuota");function tn(t){const{state:s,wide:o}=t,n=V(H(s.config?.locale)),a=en(),l=xe(()=>Qe(!0));if(a.status!=="ok")return null;const i=a.windows.weekly??null;if(i===null)return null;const c=le(s.config,"plan"),m=st(n("goShortWeekly"),i,c),y=[n("codexQuotaTitle"),m.label===null?"\u2014":m.label+"%",qt(i,n),a.fetchedAt>0?n("goQuotaFetchedAt",{time:new Date(a.fetchedAt).toLocaleTimeString()}):null,...he(n,l)].filter(Boolean).join("; "),u=e(F,null,e("div",{className:"cm-mm-title"},n("codexQuotaTitle")),m.row),k=e("div",{className:"cm-bbox-rail cm-num"},m.label===null?"\u2014":m.label+"%");return e(ee,{label:y,side:"right",delayMs:300},e("div",{className:"cm-bbox cm-mm clickable"+(m.level==="ok"?"":" "+m.level)+(o===!1?" rail":"")+(l.busy?" busy":""),...pe(l.busy,l.run)},o===!1?k:u))}r(tn,"CodexPlanBox");function ot(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(ot,"codingPlanWindowLabel");function an(t){const{id:s,state:o,wide:n,api:a}=t,l=o.codingPlans?.[s],i=V(H(o.config?.locale)),c=xe(a?()=>a.refreshCodingPlan(s):null),m=Ce.find(g=>g.id===s);if(!m||!l||l.status!=="ok")return null;const y=l.windows!==null&&typeof l.windows=="object"?l.windows:{},u=Object.entries(y);if(u.length===0)return null;const k=r(g=>g!==null&&typeof g=="object"&&typeof g.percent=="number"?Math.max(0,Math.min(100,Math.round(Number(g.percent)||0))):null,"pctOf"),w=le(o.config,"plan"),h=u.map(([g,N])=>{const x=k(N);if(x===null)return e("div",{key:g,className:"cm-mm-row wide"},e("span",{className:"cm-mm-text"},typeof N?.text=="string"?N.text:"\u2014"));const d=x>=100?"over":x>=80?"warn":"ok",P=me(x,w);return e("div",{key:g,className:"cm-mm-row wide"+(d==="ok"?"":" "+d)},e("span",{className:"cm-bbox-label"},ot(g,i)),e("div",{className:"cm-bbox-bar"},e("div",{className:"cm-bbox-fill",style:{width:P.width+"%"}})),e("span",{className:"cm-bbox-pct cm-num"},P.label===null?"\u2014":P.label+"%"))}),f=u.map(([g,N])=>{const x=k(N),d=typeof N?.resetsAt=="string"&&N.resetsAt.length>0?" \xB7 "+i("goResetAt",{time:new Date(N.resetsAt).toLocaleString()}):"",P=x===null?typeof N?.text=="string"?N.text:"\u2014":x+"%";return ot(g,i)+" "+P+d});l.fetchedAt>0&&f.push(i("goQuotaFetchedAt",{time:new Date(l.fetchedAt).toLocaleTimeString()})),f.push(...he(i,c));const C=[i(m.labelKey),...f].join("; "),v=u.map(([,g])=>k(g)).filter(g=>g!==null),A=v.some(g=>g>=100)?"over":v.some(g=>g>=80)?"warn":"ok",S=v.length>0?v.slice(0,2).map(g=>g+"%").join(" "):typeof u[0][1]?.text=="string"?u[0][1].text:"\u2014";return e(ee,{label:C,side:"right",delayMs:300},e("div",{className:"cm-bbox cm-mm clickable"+(A==="ok"?"":" "+A)+(n===!1?" rail":"")+(c.busy?" busy":""),...pe(c.busy,c.run)},n===!1?e("div",{className:"cm-bbox-rail cm-num"},S):e(F,null,e("div",{className:"cm-mm-title"},i(m.labelKey)),...h)))}r(an,"CodingPlanBox");const nn={anthropic:"Claude",zai:"Z.ai",minimax:"MM",kimi:"Kimi",openrouter:"OR",siliconflow:"SF",commandcode:"CC",scnet:"SCNet",volcengine:"Ark",qwen:"Qwen"};function sn(t){const s=t.useCost?t.useCost(f=>f):void 0,[o,n]=E(null),[a,l]=E({}),i=s?.state,c=t.api;if(!i)return null;const m=i.config,y=m.quotaStrip??{enabled:!1,budget:!0,go:!0,plans:!0};if(y.enabled!==!0)return null;const u=V(H(m?.locale)),k=[];if(y.budget!==!1){const f=m.budget??{enabled:!1,amount:100,period:"month"};if(f.enabled===!0){const C=Number(m.exchangeRate),A=(i.budgetUsed??(f.period==="day"?_(i.today,m):f.period==="all"?_(i.total,m):_(i.month,m)))*(Number.isFinite(C)&&C>0?C:1),S=Math.max(0,Number(f.amount)||0);if(S>0){const g=Math.min(999,A/S*100),N=g>=100?"over":g>=80?"warn":"ok";k.push({key:"budget",label:u("budgetShort"),level:N,tip:u("budgetOf",{period:u(De[f.period]??"periodMonth")})+" \xB7 "+u("usedOf",{used:ce(A,m),amount:ce(S,m)})+" \xB7 "+g.toFixed(1)+"%",segs:[{name:"main",pct:Math.round(me(Math.min(100,g),le(m,"budget")).width)}]})}}}if(y.go!==!1){const f=i.goQuota;if(m?.goQuota?.enabled!==!1&&f?.status==="ok"){const C=m.goQuota.main==="weekly"||m.goQuota.main==="monthly"?m.goQuota.main:"rolling",v=C==="rolling"?f.rolling:C==="weekly"?f.weekly:f.monthly;if(v!==null&&typeof v=="object"&&typeof v.percent=="number"){const A=Math.max(0,Math.min(100,Math.round(Number(v.percent)||0))),S=A>=100?"over":A>=80?"warn":"ok",g=typeof v.resetsAt=="string"&&v.resetsAt.length>0?" \xB7 "+u("goResetAt",{time:new Date(v.resetsAt).toLocaleString()}):"";k.push({key:"go",label:"Go "+u(C==="rolling"?"goShortRolling":C==="weekly"?"goShortWeekly":"goShortMonthly"),level:S,tip:"Go: "+A+"%"+g,segs:[{name:"main",pct:Math.round(me(A,le(m,"go")).width)}]})}}}if(y.plans!==!1)for(const f of Ce){const C=i.codingPlans?.[f.id];if(m.codingPlans?.[f.id]?.enabled!==!0||!C||C.status!=="ok")continue;const v=C.windows!==null&&typeof C.windows=="object"?C.windows:{},A=Object.entries(v);if(A.length===0)continue;const S=nn[f.id]??f.id,g=[],N=[];let x=0,d=0;for(const[P,M]of A){const L=ot(P,u),j=typeof M?.resetsAt=="string"&&M.resetsAt.length>0?" \xB7 "+u("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(N.push(L+" "+(B===null?typeof M?.text=="string"?M.text:"\u2014":B+"%")+j),B===null){g.push({name:P,pct:null,text:typeof M?.text=="string"?M.text:"\u2014"});continue}d>=2||(d+=1,g.push({name:P,pct:Math.round(me(B,le(m,"plan")).width)}),x=Math.max(x,B>=100?2:B>=80?1:0))}C.fetchedAt>0&&N.push(u("goQuotaFetchedAt",{time:new Date(C.fetchedAt).toLocaleTimeString()})),g.length!==0&&k.push({key:f.id,label:S,level:["ok","warn","over"][x],tip:N.join("; "),segs:g})}const w=$.status==="ok"?$.windows.weekly??null:null;if(w!==null&&typeof w.percent=="number"){const f=Math.max(0,Math.min(100,Math.round(Number(w.percent)||0))),C=typeof w.resetsAt=="string"&&w.resetsAt.length>0?" \xB7 "+u("goResetAt",{time:new Date(w.resetsAt).toLocaleString()}):"";k.push({key:"codex",label:"Codex",level:f>=100?"over":f>=80?"warn":"ok",tip:u("codexQuotaTitle")+": "+f+"%"+C,segs:[{name:"weekly",pct:Math.round(me(f,le(m,"plan")).width)}]})}if(k.length===0)return null;const h=r(f=>{o!==null||!c||(n(f),l(C=>({...C,[f]:null})),Promise.resolve().then(()=>f==="budget"?c.reload():f==="go"?c.refreshGoQuota():f==="codex"?Qe(!0):c.refreshCodingPlan(f)).catch(C=>{l(v=>({...v,[f]:C?.message??String(C)}))}).finally(()=>n(null)))},"doRefresh");return e("div",{className:"cm-qstrip"},k.map(f=>{const C=o===f.key,v=a[f.key],A=[e("span",{className:"cm-qlabel",key:"l"},f.label)];C?A.push(e("span",{className:"cm-qtext",key:"busy"},u("refreshing"))):f.segs.forEach((g,N)=>{N>0&&A.push(e("span",{className:"cm-qsep",key:"sep"+N,"aria-hidden":"true"})),g.pct===null?A.push(e("span",{className:"cm-qtext",key:g.name},g.text)):A.push(e("span",{className:"cm-qseg",key:g.name},e("span",{className:"cm-qbar"},e("span",{className:"cm-qfill",style:{width:g.pct+"%"}})),e("span",null,g.pct+"%")))});const S=[f.tip];return!C&&c&&S.push(u("clickToRefresh")),C&&S.push(u("refreshing")),v&&S.push("\u26A0 "+u("balanceRefreshFailed",{message:v})),e(ee,{key:f.key,label:S.join("; "),side:"bottom",delayMs:400},e("span",{className:"cm-qchip"+(c?" action":"")+(f.level==="ok"?"":" "+f.level),...c?pe(C,()=>h(f.key)):{}},A))}))}r(sn,"QuotaStrip");function on(t){const s=t.useCost?t.useCost(c=>c):void 0,o=Se(!1),n=s?.state;if(!n)return null;const a=n.config;if(a.quotaStrip?.promptSeen===!0)return null;const l=V(H(a?.locale)),i=r(c=>{if(o.current===!0)return;o.current=!0;const m=a.quotaStrip??{enabled:!1,budget:!0,go:!0,plans:!0};t.api.updateConfig({quotaStrip:{...m,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(on,"QuotaStripGuide");const Ut="dsh-cost-meter:balance-click-hint-seen",ln=r(()=>{try{return window.localStorage.getItem(Ut)==="1"}catch{return!1}},"readBalanceClickHintLS"),rn=r(()=>{try{window.localStorage.setItem(Ut,"1")}catch{}},"writeBalanceClickHintLS");function cn(t){const s=t.useCost?t.useCost(h=>h):void 0,o=Se(!1),[n,a]=E(!1),[l]=E(ln),i=s?.state;if(!i)return null;const c=i.config,m=c.balance?.display==="sidebar"||c.balance?.display==="both",y=(c?.customBalances??[]).some(h=>h?.enabled===!0&&(h.display==="sidebar"||h.display==="both"))||c.customBalance?.enabled===!0&&(c.customBalance?.display==="sidebar"||c.customBalance?.display==="both"),u=Ce.some(h=>{const f=c.codingPlans?.[h.id];return f?.enabled===!0&&(f.display==="sidebar"||f.display==="both")});if(n||l||c.balance?.clickHintSeen===!0||!m&&!y&&!u||c.quotaStrip?.promptSeen!==!0)return null;const k=V(H(c?.locale)),w=r(()=>{o.current!==!0&&(a(!0),o.current=!0,rn(),t.api.updateConfig({balance:{...c.balance??{},clickHintSeen:!0}}).catch(()=>{o.current=!1,a(!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:w},k("balanceClickGuideOk"))))}r(cn,"BalanceClickGuide");function It(t){const{state:s,wide:o}=t,n=s.today,a=s.config,l=V(H(a?.locale)),i=a.budget??{enabled:!1,amount:100,period:"month"},c=Number(a.exchangeRate),y=(s.budgetUsed??(i.period==="day"?_(s.today,a):i.period==="all"?_(s.total,a):_(s.month,a)))*(Number.isFinite(c)&&c>0?c:1),u=Math.max(0,Number(i.amount)||0),k=u>0?Math.min(999,y/u*100):null,w=k===null?"ok":k>=100?"over":k>=80?"warn":"ok";if(i.enabled===!0){const f=_(n,a),C=f*(Number.isFinite(c)&&c>0?c:1),v=u>0?Math.min(999,C/u*100):null,A=[l("budgetOf",{period:l(De[i.period]??"periodMonth")}),l("usedOf",{used:ce(y,a),amount:ce(u,a)})+" \xB7 "+(k===null?"\u2014":k.toFixed(1)+"%"),...a.hideTodayCost===!0?[]:[l("todayShare",{amount:J(f,a),pct:v===null?"\u2014":v.toFixed(1)+"%"})],l("monthTotal",{month:J(_(s.month,a),a),total:J(_(s.total,a),a)})].join("; "),S=Et(s,a,l);return e(ee,{label:A,side:"right",delayMs:300},e("div",{className:"cm-bbox"+(w==="ok"?"":" "+w)+(o?"":" rail")},o?S.body:e("div",{className:"cm-bbox-rail cm-num"},S.rail)))}const h=[l("todayCostTitle"),l("callsTokens",{calls:n.calls,input:q(n.input),cache:q(n.cacheRead+n.cacheWrite),output:q(n.output)}),l("monthCost",{amount:J(_(s.month,a),a)}),l("totalCost",{amount:J(_(s.total,a),a)})].join("; ");return e(ee,{label:h,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"},J(_(n,a),a))):e(Je,{size:16})),o?nt(s,a,l):null))}r(It,"BudgetBoxContent");function dn(t){const s=t.useCost?t.useCost(x=>x):void 0;let o;if(t.useProjection)try{o=t.useProjection("costUsage")}catch{o=void 0}$e(t,o);const n=s?.state,a=!!t.wide,l=Se(null);if(re(()=>{const x=l.current,d=x?.parentElement;if(!x||!d)return;const P=r(()=>{a?d.firstElementChild!==x&&d.insertBefore(x,d.firstElementChild):d.lastElementChild!==x&&d.appendChild(x)},"apply");P();const M=new MutationObserver(()=>{x.isConnected&&P()});return M.observe(d,{childList:!0}),a?(d.style.flexDirection="",d.style.flexWrap="",d.style.alignItems="",d.style.gap=""):(d.style.flexDirection="column",d.style.flexWrap="nowrap",d.style.alignItems="center",d.style.gap="6px"),()=>{M.disconnect(),a||(d.style.flexDirection="",d.style.flexWrap="",d.style.alignItems="",d.style.gap="")}},[a,n]),!n)return null;const i=n.config,c=V(H(i?.locale)),m=(i.balance?.display==="sidebar"||i.balance?.display==="both")&&i.hideOfficialBalance!==!0,u=tt(n,i).length>0,k=m&&i.balance?.showProgressBar===!0&&n.balance?.status==="ok",w=u&&i.balance?.showProgressBar===!0,h=i.goQuota?.main==="weekly"||i.goQuota?.main==="monthly"?i.goQuota.main:"rolling",f=i.goQuota?.enabled!==!1&&(i.goQuota?.display==="sidebar"||i.goQuota?.display==="both")&&n.goQuota?.status==="ok"&&n.goQuota?.[h]!==null,C=Ce.map(x=>x.id).filter(x=>{const d=i.codingPlans?.[x];if(d?.enabled!==!0||d.display!=="sidebar"&&d.display!=="both")return!1;const P=n.codingPlans?.[x];if(P?.status!=="ok")return!1;const M=P.windows!==null&&typeof P.windows=="object"?P.windows:{};return Object.keys(M).length>0}),v=C.length>0,A=$.status==="ok"&&$.windows.weekly!==null,S=(i.budget??{}).enabled===!0,g=i.sidebar!==!1&&i.hideTodayCost!==!0;if(!m&&!u&&!f&&!v&&!A&&!S&&!g)return null;const N=[];if(k?N.push(e(Oa,{state:n,wide:a,api:t.api})):m&&N.push(e(Da,{state:n,wide:a,api:t.api})),w?N.push(e(Ea,{state:n,wide:a,api:t.api})):u&&N.push(e(qa,{state:n,wide:a,api:t.api})),v&&N.push(...C.map(x=>x==="minimax"?e(Ya,{state:n,wide:a,api:t.api}):e(an,{id:x,state:n,wide:a,api:t.api}))),A&&N.push(e(tn,{state:n,wide:a,api:t.api})),f&&S&&a){const x=jt(n,i,c),d=Et(n,i,c),P=x.level==="over"||d.level==="over"?"over":x.level==="warn"||d.level==="warn"?"warn":"ok";N.push(e("div",{className:"cm-bbox cm-bbox-pair"+(P==="ok"?"":" "+P)},e("div",{className:"cm-bbox-section"+(x.level==="ok"?"":" "+x.level)},x.body),e("div",{className:"cm-bbox-divider"}),e("div",{className:"cm-bbox-section"+(d.level==="ok"?"":" "+d.level)},d.body)))}else f&&N.push(e(_a,{state:n,wide:a})),S&&N.push(e(It,{state:n,wide:a}));return!S&&g&&N.push(e(It,{state:n,wide:a})),a||N.push(Ga(n,i,c)),e("div",{ref:l,className:"cm-footer-stack"+(a?"":" rail")},...N)}r(dn,"SidebarFooter");function lt(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(lt,"Card");function un(t){const{state:s,api:o}=t,n=V(H(s.config?.locale)),[a,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(a),onClick:r(()=>l(!a),"onClick")},e("span",{className:"cm-caret"+(a?" open":"")}),e("h3",{className:"cm-h"},n("history")))),a?e("div",{className:"cm-collapse-body"},e(mn,{state:s,api:o})):null)}r(un,"HistoryPanel");function mn(t){const{state:s,api:o}=t,n=V(H(s.config?.locale)),[a,l]=E(null),[i,c]=E({}),[m,y]=E(()=>new Set),u=s.history??[];if(u.length===0)return e("p",{className:"cm-empty"},n("noHistory"));const k=r(h=>{if(a===h){l(null);return}l(h),!(i[h]!==void 0||m.has(h))&&(y(f=>{const C=new Set(f);return C.add(h),C}),o.getDaySessions(h).then(f=>c(C=>({...C,[h]:Array.isArray(f?.sessions)?f.sessions:[]}))).catch(()=>c(f=>({...f,[h]:"error"}))).finally(()=>y(f=>{const C=new Set(f);return C.delete(h),C})))},"toggle"),w=r(h=>h.map(f=>e("tr",{key:f.id},rt(f,s.config?.showSessionId===!0,n),e("td",{className:"num"},String(f.calls)),e("td",{className:"num"},q(f.input)),e("td",{className:"num"},q(f.cacheRead+f.cacheWrite)),e("td",{className:"num"},q(f.output)),e("td",{className:"num"},J(_(f,s.config),s.config)))),"sessionRows");return e("div",{className:"cm-scroll"},e("p",{className:"cm-hint",style:{padding:"6px 10px 0"}},n("historyExpandHint")),e("table",{className:"cm-table"},e("thead",null,e("tr",null,e("th",null,n("colDate")),e("th",{className:"num"},n("colCalls")),e("th",{className:"num"},n("colInTok")),e("th",{className:"num"},n("colCacheTok")),e("th",{className:"num"},n("colOutTok")),e("th",{className:"num"},n("colCost")))),e("tbody",null,u.flatMap(h=>{const f=e("tr",{key:h.date,className:"cm-row-click",onClick:r(()=>k(h.date),"onClick")},e("td",null,(a===h.date?"\u25BE ":"\u25B8 ")+h.date),e("td",{className:"num"},String(h.calls)),e("td",{className:"num"},q(h.input)),e("td",{className:"num"},q(h.cacheRead+h.cacheWrite)),e("td",{className:"num"},q(h.output)),e("td",{className:"num"},J(_(h,s.config),s.config)));if(a!==h.date)return[f];const C=i[h.date],v=m.has(h.date)&&C===void 0?e("p",{className:"cm-empty"},n("historySessionsLoading")):C==="error"?e("p",{className:"cm-empty"},n("historySessionsError")):!Array.isArray(C)||C.length===0?e("p",{className:"cm-empty"},n("historyNoSessions")):e("table",{className:"cm-table"},e("thead",null,e("tr",null,e("th",null,n("colSession")),e("th",{className:"num"},n("colCalls")),e("th",{className:"num"},n("colInTok")),e("th",{className:"num"},n("colCacheTok")),e("th",{className:"num"},n("colOutTok")),e("th",{className:"num"},n("colCost")))),e("tbody",null,w(C)));return[f,e("tr",{key:h.date+"-sessions"},e("td",{colSpan:6},v))]}))))}r(mn,"HistoryTable");function pn(t){const{state:s,api:o}=t,n=V(H(s.config?.locale)),[a,l]=E(!1),[i,c]=E(100),[m,y]=E("cost-desc"),[u,k]=E(null),[w,h]=E(!1),[f,C]=E(!1),v=Ae.useRef(0),A=r((x,d)=>{const[P,M]=d==="recent"?["recent","desc"]:d.split("-"),L=++v.current;h(!0),C(!1),o.getTopSessions(x,P,M).then(j=>{L===v.current&&k(Array.isArray(j?.sessions)?j.sessions:[])}).catch(()=>{L===v.current&&C(!0)}).finally(()=>{L===v.current&&h(!1)})},"load"),S=r(()=>{l(x=>{const d=!x;return d&&u===null&&!w&&A(i,m),d})},"toggle"),g=r(x=>{c(x),(a||u!==null)&&A(x,m)},"changeLimit"),N=r(x=>{y(x),(a||u!==null)&&A(i,x)},"changeSort");return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("button",{type:"button",className:"cm-collapse-h","aria-expanded":String(a),onClick:S},e("span",{className:"cm-caret"+(a?" open":"")}),e("h3",{className:"cm-h"},n("sessionRankTitle")))),a?e("div",{className:"cm-collapse-body"},e("p",{className:"cm-hint"},n("sessionRankHint")),e("div",{style:{display:"flex",gap:"12px",flexWrap:"wrap",margin:"6px 0"}},e("div",{className:"cm-field"},e("label",null,n("sessionRankSort")),e("select",{className:"cm-input",value:m,onChange:r(x=>N(x.target.value),"onChange")},e("option",{value:"cost-desc"},n("sessionSortCostDesc")),e("option",{value:"cost-asc"},n("sessionSortCostAsc")),e("option",{value:"time-desc"},n("sessionSortTimeDesc")),e("option",{value:"time-asc"},n("sessionSortTimeAsc")),e("option",{value:"recent"},n("sessionSortRecent")))),e("div",{className:"cm-field"},e("label",null,n("sessionRankLimit")),e("select",{className:"cm-input",value:String(i),onChange:r(x=>g(Number(x.target.value)),"onChange")},e("option",{value:"50"},"50"),e("option",{value:"100"},"100"),e("option",{value:"200"},"200")))),w?e("p",{className:"cm-empty"},n("sessionRankLoading")):f?e("p",{className:"cm-empty"},n("sessionRankError")):u===null||u.length===0?e("p",{className:"cm-empty"},n("sessionRankEmpty")):e("div",{className:"cm-scroll"},e("table",{className:"cm-table"},e("thead",null,e("tr",null,e("th",null,n("colDate")),e("th",null,n("colSession")),e("th",{className:"num"},n("colCalls")),e("th",{className:"num"},n("colInTok")),e("th",{className:"num"},n("colCacheTok")),e("th",{className:"num"},n("colOutTok")),e("th",{className:"num"},n("colCost")))),e("tbody",null,u.map(x=>e("tr",{key:x.date+":"+x.id},e("td",null,x.date),rt(x,s.config?.showSessionId===!0,n),e("td",{className:"num"},String(x.calls)),e("td",{className:"num"},q(x.input)),e("td",{className:"num"},q((x.cacheRead??0)+(x.cacheWrite??0))),e("td",{className:"num"},q(x.output)),e("td",{className:"num"},J(_(x,s.config),s.config)))))))):null)}r(pn,"SessionRankPanel");function fn(t){const{state:s}=t,o=V(H(s.config?.locale)),n=s.today.sessions??[];if(n.length===0)return e("p",{className:"cm-empty"},o("noSessionsToday"));const a=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,n.map(l=>e("tr",{key:l.id},rt(l,a,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"},J(_(l,s.config),s.config)))))))}r(fn,"TodaySessions");function rt(t,s,o){const n=typeof t.title=="string"?t.title.trim():"",a=String(t.id).slice(0,14)+"\u2026",l=n.length>0?n:a,i=n.length>0?n+" \xB7 "+t.id:t.id;return e("td",{title:i},e("div",{className:"cm-sess-title"+(n.length===0?" cm-sess-id":"")},l),s&&n.length>0?e("div",{className:"cm-sess-id"},a):null)}r(rt,"sessionCell");const gn={CNY:{symbol:"\xA5",decimals:4,exchangeRate:7.2},USD:{symbol:"$",decimals:6,exchangeRate:1},EUR:{symbol:"\u20AC",decimals:6,exchangeRate:.92}};function bn(t){const{state:s,draft:o,setDraft:n,t:a}=t,l=s.config,i=o?.budget??l.budget,c=Number(l.exchangeRate),y=(s.budgetUsed??(i.period==="day"?_(s.today,l):i.period==="all"?_(s.total,l):_(s.month,l)))*(Number.isFinite(c)&&c>0?c:1),u=Math.max(0,Number(i.amount)||0),k=i.enabled&&u>0?Math.min(999,y/u*100):null,w=k===null?"ok":k>=100?"over":k>=80?"warn":"ok",h=r((v,A)=>{o!==null&&n({...o,budget:{...o.budget??l.budget,[v]:A}})},"setBudget"),f=i.period==="custom"?i.customStart+" \u2192 "+(i.customEnd??a("periodDay")):null,C=i.enabled&&k!==null?a("budgetStatus",{period:a(De[i.period]??"periodMonth"),amount:ce(u,l),used:ce(y,l),pct:k.toFixed(1)})+(w==="over"?a("overLimit"):w==="warn"?a("nearLimit"):""):null;return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},a("budget")),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:i.enabled===!0,onChange:r(v=>h("enabled",v.target.checked),"onChange")}),e("span",null,a("enableBudget")))),i.enabled?e(F,null,e("div",{className:"cm-budget-bar"},e("div",{className:"cm-budget-fill "+(w==="ok"?"":w),style:{width:(k===null?0:Math.min(100,k))+"%"}})),e("div",{className:"cm-budget-line"+(w==="over"?" over":"")+" cm-num"},C),e("div",{className:"cm-budget-controls"},e("div",{className:"cm-field"},e("label",null,a("budgetAmountLabel")),ie({value:i.amount},v=>h("amount",v))),e("div",{className:"cm-field"},e("label",null,a("budgetPeriodLabel")),e("select",{className:"cm-input",value:i.period,onChange:r(v=>h("period",v.target.value),"onChange")},e("option",{value:"day"},a("periodDay")),e("option",{value:"month"},a("periodMonth")),e("option",{value:"all"},a("periodAll")),e("option",{value:"custom"},a("periodCustomRange")))),i.period==="custom"?e(F,null,e("div",{className:"cm-field"},e("label",null,a("startDate")),e("input",{className:"cm-input",type:"date",value:i.customStart??"",onChange:r(v=>h("customStart",v.target.value===""?null:v.target.value),"onChange")})),e("div",{className:"cm-field"},e("label",null,a("endDate")),e("input",{className:"cm-input",type:"date",value:i.customEnd??"",onChange:r(v=>h("customEnd",v.target.value===""?null:v.target.value),"onChange")}))):null),f!==null?e("p",{className:"cm-hint"},a("rangeText",{range:f})):null):e("p",{className:"cm-note"},a("budgetDisabledNote")))}r(bn,"BudgetPanel");function hn(t){const{state:s,draft:o,setDraft:n,t:a}=t,l=s.config,i=r((u,k)=>{o!==null&&n({...o,[u]:k})},"setField"),c=o===null?l:{...l,...o},m=(()=>{if(c.peakEnabled!==!0)return a("peakOff");const u=Date.parse(c.peakEffectiveAt||""),k=Date.now();if(Number.isFinite(u)&&k<u)return a("peakNotEffective",{time:new Date(u).toLocaleString()});const w=c.peakWindows??[],h=Fe(k,w);return h===null?a("offPeakActive"):h.weekend===!0?a("weekendAllOffPeak"):h.inPeak?a("peakActive"):a("offPeakActive")})(),y=(c.peakWindows?.length??0)>0?a("peakSummary",{windows:c.peakWindows.map(u=>u.start+":00-"+u.end+":00").join(H(c.locale)==="zh"?"\u3001":", "),time:c.peakEffectiveAt||a("unknown"),status:m}):a("noPeakWindows",{status:m});return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},a("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,a("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,a("peakNoticeLabel")))),e("div",{className:"cm-field"},e("label",null,a("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"},a("peakStyleCompact")),e("option",{value:"classic"},a("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,a("peakAlertLabel")))),e("div",{className:"cm-field"},e("label",null,a("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 k=Number(u.target.value);Number.isInteger(k)&&k>=1&&k<=30&&i("peakAlertAhead",k)},"onChange")})),e("div",{className:"cm-field"},e("label",null,a("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"},a("peakAlertTargetBoth")),e("option",{value:"peak"},a("peakAlertTargetPeak")),e("option",{value:"offpeak"},a("peakAlertTargetOffPeak"))))),e("div",{className:"cm-grid"},e("div",{className:"cm-field"},e("label",null,a("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"},a("peakAlertPositionCorner")),e("option",{value:"center"},a("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,a("peakAlertWebNotifyLabel"))),e("p",{className:"cm-hint"},a("peakAlertWebNotifyHint")))),e("div",{className:"cm-field"},e("label",null,a("peakAlertPreviewLabel")),e("div",{className:"cm-row"},e("button",{className:"cm-btn",onClick:r(()=>window.cmPeakAlertPreview?.("peak"),"onClick")},a("peakAlertPreviewPeak")),e("button",{className:"cm-btn",onClick:r(()=>window.cmPeakAlertPreview?.("offpeak"),"onClick")},a("peakAlertPreviewOffPeak")))),e("div",{className:"cm-peak-preview"},o?.peakEnabled!==!1&&o?.peakNotice!==!1?nt(s,c,a):e("p",{className:"cm-hint"},a("peakNoticeHiddenHint"))),e("p",{className:"cm-hint"},y),e("p",{className:"cm-hint"},a("weekendRuleNote")))}r(hn,"PeakPanel");function ie(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(n=>{const a=n.target.value;if(a===""){if(t.emptyMode==="clear"){s(null);return}if(t.emptyMode==="ignore")return;s(0);return}const l=Number(a);Number.isFinite(l)&&l>=0&&s(l)},"onChange")})}r(ie,"numInput");function it(t){const{modelId:s,entry:o,isDefault:n,draft:a,setDraft:l,t:i}=t,c=r((u,k,w)=>{if(w===null){if(n){const x=a.prices.default??{cacheHit:0,cacheMiss:0,output:0},d={...x[u]??{}};delete d[k];const P={...x};Object.keys(d).length>0?P[u]=d:delete P[u],l({...a,prices:{...a.prices,default:P}});return}const A={...a.prices.models},S=A[s]??{cacheHit:0,cacheMiss:0,output:0},g={...S[u]??{}};delete g[k];const N={...S};Object.keys(g).length>0?N[u]=g:delete N[u],A[s]=N,l({...a,prices:{...a.prices,models:A}});return}const h=Math.max(0,w);if(n){let S={...a.prices.default??{cacheHit:0,cacheMiss:0,output:0}};if(u==="base")S[k]=h;else{const g={...S[u]??{},[k]:h};S={...S,[u]:g}}l({...a,prices:{...a.prices,default:S}});return}const f={...a.prices.models},C=f[s]??{cacheHit:0,cacheMiss:0,output:0};let v={...C};if(u==="base")v[k]=h;else{const A={...C[u]??{},[k]:h};v={...C,[u]:A}}f[s]=v,l({...a,prices:{...a.prices,models:f}})},"setTier"),m=r(()=>{const u={...a.prices.models};delete u[s],l({...a,prices:{...a.prices,models:u}})},"remove"),y=r((u,k)=>{const w=k==="base"?o:o[k]??null,h=k==="base"?"ignore":"clear";return e("div",{className:"cm-price-row",key:k},e("span",null,u),ie({value:w?.cacheHit??null,emptyMode:h},f=>c(k,"cacheHit",f)),ie({value:w?.cacheMiss??null,emptyMode:h},f=>c(k,"cacheMiss",f)),ie({value:w?.output??null,emptyMode:h},f=>c(k,"output",f)))},"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,n?e("span",{className:"cm-price-legacy"},i("defaultFallback")):null,n?null:e("button",{className:"cm-btn small danger",onClick:m},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"))),y(i("tierBase"),"base"),y(i("tierOffPeak"),"offPeak"),y(i("tierPeak"),"peak"))}r(it,"PriceCard");const Qt={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 yn(t,s){if(t===null||typeof t!="object")return"";if(t.unpriced===!0)return s("catalogUnpriced");const o=r(a=>"$"+String(a),"usd"),n=t.peak!==null&&typeof t.peak=="object"?t.peak:null;return n!==null?o(t.cacheMiss)+"/"+o(n.cacheMiss)+" in \xB7 "+o(t.output)+"/"+o(n.output)+" out":o(t.cacheMiss??t.input??0)+" in \xB7 "+o(t.output??0)+" out"}r(yn,"catalogPriceText");function kn(t){const{state:s,draft:o,setDraft:n,t:a}=t,[l,i]=E(!1),[c,m]=E({}),y=s.priceCatalog;if(y===null||typeof y!="object")return null;const u=o?.prices??s.config.prices,k=o?.priceTableDisplay??s.config.priceTableDisplay??{},w=r((d,P)=>{const M=k[d+":"+P];return typeof M=="boolean"?M:d==="deepseek"},"isDirect"),h=r((d,P,M)=>{o!==null&&n({...o,priceTableDisplay:{...k,[d+":"+P]:M}})},"setDirect"),f=r((d,P)=>d==="deepseek"?u.models?.[P]!==void 0:u.providers?.[d]?.models?.[P]!==void 0,"isMounted"),C=r((d,P,M)=>{if(o===null)return;const L=JSON.parse(JSON.stringify(M));if(d==="deepseek"){n({...o,prices:{...o.prices,models:{...o.prices.models,[P]:L}}});return}const j={...o.prices.providers??{}},B=j[d]??{};j[d]={...B,models:{...B.models??{},[P]:L}},n({...o,prices:{...o.prices,providers:j}})},"mount"),v=r((d,P)=>{if(o===null)return;if(d==="deepseek"){const j={...o.prices.models};delete j[P],n({...o,prices:{...o.prices,models:j}});return}const M={...o.prices.providers??{}},L=M[d];if(L!==void 0&&L.models!==void 0){const j={...L.models};delete j[P],M[d]={...L,models:j},n({...o,prices:{...o.prices,providers:M}})}},"unmount"),A=Object.keys(y).sort((d,P)=>d==="deepseek"?-1:P==="deepseek"?1:d.localeCompare(P)),S=r(d=>Object.values(y[d]).reduce((P,M)=>P+Object.keys(M).length,0),"countModels"),g=new Set(Object.values(y.deepseek??{}).flatMap(d=>Object.keys(d))),N=Object.keys(u.models??{}).filter(d=>!g.has(d)).sort(),x=r((d,P,M)=>{const L=f(d,P),j=w(d,P),B=L?e("label",{className:"cm-check cm-vendor-display",title:a("catalogDisplayHint")},e("input",{type:"checkbox",checked:j,onChange:r(p=>h(d,P,p.target.checked),"onChange")}),e("span",null,a("catalogDisplayLabel"))):null;if(L&&!j&&o!==null){const p=d==="deepseek"?e(it,{key:P,modelId:P,entry:u.models[P],isDefault:!1,draft:o,setDraft:n,t:a}):e(Gt,{key:P,provider:d,modelId:P,entry:u.providers?.[d]?.models?.[P],draft:o,setDraft:n,t:a});return e("div",{key:P,className:"cm-catalog-mounted"},B,p)}return e("div",{key:P,className:"cm-catalog-row"},e("span",{className:"cm-catalog-id"},P),e("span",{className:"cm-catalog-price"},yn(M,a)),L?e("span",{className:"cm-catalog-tag"},a("mountedTag")):null,B,e("button",{className:"cm-btn small",disabled:!L&&M?.unpriced===!0,onClick:r(()=>L?v(d,P):C(d,P,M),"onClick")},a(L?"unmountBtn":"mountBtn")))},"renderModel");return e("div",{className:"cm-budget",style:{marginTop:"8px"}},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},a("catalogTitle")),e("button",{className:"cm-toggle-btn",onClick:r(()=>i(d=>!d),"onClick")},a(l?"catalogCollapse":"catalogOpen"))),l?e(F,null,e("p",{className:"cm-note"},a("catalogNote")),A.map(d=>{const P=c[d]===!0;return e("div",{key:d},e("div",{className:"cm-catalog-vendor cm-vendor-toggle",onClick:r(()=>m(M=>({...M,[d]:!P})),"onClick")},e("span",null,(P?"\u25BE ":"\u25B8 ")+(Qt[d]??d)+" \xB7 "+S(d))),P?e(F,null,d==="deepseek"?e("p",{className:"cm-hint"},a("catalogDeepseekNote")):null,Object.keys(y[d]).sort().map(M=>e("div",{key:M},e("div",{className:"cm-catalog-family"},M),Object.keys(y[d][M]).sort().map(L=>x(d,L,y[d][M][L])))),d==="deepseek"&&N.length>0?e("div",null,e("div",{className:"cm-catalog-family"},a("catalogCustomModels")),N.map(M=>x("deepseek",M,null))):null):null)})):null)}r(kn,"PriceCatalogPanel");const Ht=r(t=>t==="zen"?"go":t,"prettyProvider"),Wt=r(t=>{const s=t.indexOf(":");return s<=0?t:Ht(t.slice(0,s).toLowerCase())+t.slice(s)},"prettyProviderKey");function wn(t){const{state:s,config:o,t:n,initialTab:a}=t,[l,i]=E(a==="history"?"history":"today"),[c,m]=E(!1),y=r(g=>{if(g===null||typeof g!="object")return{};if(g.byProviderModel&&Object.keys(g.byProviderModel).length>0)return g.byProviderModel;if(g.byModel&&Object.keys(g.byModel).length>0)return g.byModel;const N={};if(Array.isArray(g.sessions))for(const x of g.sessions){if(x===null||typeof x!="object")continue;const d=typeof x.provider=="string"&&x.provider.length>0?x.provider:"deepseek",P=typeof x.model=="string"&&x.model.length>0?x.model:"unknown",M=d+":"+P,L=N[M]??(N[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(x.input),L.output+=j(x.output),L.cacheRead+=j(x.cacheRead),L.cacheWrite+=j(x.cacheWrite),L.reasoning+=j(x.reasoning),L.cost+=j(x.cost)}if(Object.keys(N).length>0)return N;if(Number(g.cost)>0||Number(g.input)>0||Number(g.output)>0){const x=r(d=>typeof d=="number"&&Number.isFinite(d)&&d>=0?d:0,"num");return{"deepseek:legacy":{input:x(g.input),output:x(g.output),cacheRead:x(g.cacheRead),cacheWrite:x(g.cacheWrite),reasoning:x(g.reasoning),cost:x(g.cost)}}}return{}},"modelMapOf"),k=r(g=>{const N={},x=r(d=>{for(const P of Object.keys(d??{})){const M=d[P];if(M===null||typeof M!="object")continue;const L=N[P]??(N[P]={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(g==="today")x(y(s.today));else for(const d of s.history??[])x(y(d));return Object.entries(N).map(([d,P])=>{const M=d.indexOf(":"),L=(M>0?d.slice(0,M):"deepseek").toLowerCase(),j=M>0?d.slice(M+1):d,B=P.input+P.output+P.cacheRead+P.cacheWrite+P.reasoning,p=P.cacheRead+P.input;return{label:d==="deepseek:legacy"?n("modelStatsLegacy"):L==="deepseek"||L===""?j:Ht(L)+":"+j,...P,tokens:B,cls:Ke(L,j,o),hitRate:p>0?P.cacheRead/p:null,blended:B>0&&P.cost>0?P.cost/B*1e6:null,perUsd:P.cost>0?B/P.cost:null}}).filter(d=>d.tokens>0||d.cost>0)},"aggregate")(l).sort((g,N)=>N.cost-g.cost||N.tokens-g.tokens),w=r(g=>(Math.max(0,Math.min(1,g))*100).toFixed(1)+"%","pct"),h=k.reduce((g,N)=>Math.max(g,N.cost),0),f=k.reduce((g,N)=>Math.max(g,N.tokens),0),C=k.reduce((g,N)=>Math.max(g,N.perUsd??0),0),v=r((g,N)=>e("button",{className:"cm-mstats-tab"+(l===g?" active":""),onClick:r(()=>i(g),"onClick")},N),"tabBtn"),A=r(g=>g.cls==="plan"?e("span",{className:"cm-plan-tag",title:n("billingClassLabel")},n("billingClassPlan")):null,"classChip"),S=r((g,N,x,d,P)=>e("div",{className:"cm-mstats-row"},e("span",{className:"cm-mstats-name"},g,P??null),e("div",{className:"cm-mstats-barbg"},e("div",{className:"cm-mstats-bar "+x,style:{width:w(N)}})),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(()=>m(!c),"onClick")},e("span",{className:"cm-caret"+(c?" open":"")}),e("h3",{className:"cm-h"},n("modelStatsTitle")))),c?e("div",{className:"cm-collapse-body"},e("div",{className:"cm-mstats-tabs"},v("today",n("modelStatsToday")),v("history",n("modelStatsHistory"))),k.length===0?e("p",{className:"cm-note"},n("modelStatsEmpty")):e(F,null,e("div",{className:"cm-mstats-h"},n("modelStatsCostH")),k.map(g=>e(F,{key:"c:"+g.label},S(g.label,h>0?g.cost/h:0,"cost",J(g.cost,o),A(g)))),e("div",{className:"cm-mstats-h"},n("modelStatsTokensH")),e("div",{className:"cm-mstats-legend"},e("span",null,e("span",{className:"cm-mstats-dot",style:{background:"var(--dsw-alias-state-business-primary)"}}),n("modelStatsInput")),e("span",null,e("span",{className:"cm-mstats-dot",style:{background:"#ff9800"}}),n("modelStatsCache")),e("span",null,e("span",{className:"cm-mstats-dot",style:{background:"#34a853"}}),n("modelStatsOutput"))),[...k].sort((g,N)=>N.tokens-g.tokens).map(g=>e("div",{className:"cm-mstats-row",key:"t:"+g.label},e("span",{className:"cm-mstats-name"},g.label),e("div",{className:"cm-mstats-barbg"},e("div",{className:"cm-mstats-seg in",style:{width:w(f>0?g.input/f:0)}}),e("div",{className:"cm-mstats-seg cache",style:{width:w(f>0?(g.cacheRead+g.cacheWrite)/f:0)}}),e("div",{className:"cm-mstats-seg out",style:{width:w(f>0?(g.output+g.reasoning)/f:0)}})),e("span",{className:"cm-mstats-val"},q(g.tokens)))),e("div",{className:"cm-mstats-h"},n("modelStatsHitH")),[...k].sort((g,N)=>(N.hitRate??-1)-(g.hitRate??-1)).map(g=>e(F,{key:"h:"+g.label},S(g.label,g.hitRate??0,"hit",g.hitRate===null?"\u2014":(g.hitRate*100).toFixed(1)+"%"))),e("div",{className:"cm-mstats-h"},n("modelStatsValueH")),[...k].sort((g,N)=>(N.perUsd??-1)-(g.perUsd??-1)).map(g=>e(F,{key:"v:"+g.label},S(g.label,C>0?(g.perUsd??0)/C:0,"value",g.perUsd===null?"\u2014":q(g.perUsd)+" tok/$"+(g.blended!==null?" \xB7 "+n("modelStatsBlended",{price:"$"+g.blended.toFixed(2)}):"")))),e("p",{className:"cm-mstats-note"},n("modelStatsNote")))):null)}r(wn,"ModelStatsPanel");function xn(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(xn,"planWindowLabelOf");function vn(t,s){if(t==="go")return"OpenCode Go";const o=Ce.find(n=>n.id===t);return o!==void 0?s(o.labelKey):t}r(vn,"planProviderLabelOf");const zt=["fiveHour","weekly","monthly","daily"];function Nn(t,s){const o=new Map,n=r(a=>{const l=new Date(a),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 a of Object.values(t??{}))for(const l of a??[]){if(l===null||typeof l!="object"||!(l.tokens>0)&&!(l.cost>0))continue;const i=n(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(a=>({...a,per1Tokens:a.pct>0?a.tokens/a.pct:null,fullTokens:a.pct>0?a.tokens/a.pct*100:null})).sort((a,l)=>a.key<l.key?-1:a.key>l.key?1:0)}r(Nn,"aggregatePlanIntervals");function Sn(t){const{state:s,config:o,t:n}=t,[a,l]=E(!1),[i,c]=E("daily"),m=H(o?.locale),y=s?.planStats,u=y!=null&&typeof y.providers=="object"?y.providers:{},k=Object.keys(u).sort(),w=r(d=>J(Number(d)||0,o??s?.config),"fmtMoney"),h=r(d=>d.method==="none"||d.per1Tokens===null?"\u2014":q(d.per1Tokens)+" tok \xB7 "+w(d.per1Cost),"estTextOf"),f=r(d=>d.method==="none"||d.fullTokens===null?"\u2014":q(d.fullTokens)+" tok \xB7 "+w(d.fullCost),"fullTextOf"),C=r(d=>d.method==="sample"?n("planStatsMethodSample"):d.method==="live"?n("planStatsMethodLive"):n("planStatsMethodNone"),"methodRawOf"),v=r(d=>{let P=C(d);return d.method==="sample"&&Number(d.sampleAt)>0&&(P=n("planStatsMethodSampleAt",{method:P,time:new Date(Number(d.sampleAt)).toLocaleString(m==="en"?"en-US":"zh-CN")})),(d.method==="sample"||d.method==="live")&&d.confidence==="low"&&(P+=" \xB7 "+n("planStatsConfidenceLow")),P},"methodTagOf"),A=r(([d,P,M])=>e("tr",{key:P+":"+d},e("td",null,xn(d,m)),e("td",{className:"num"},Math.round(M.percent*10)/10+"%"),e("td",{className:"num"},q(M.localTokens)+" tok \xB7 "+w(M.localCost)),e("td",{className:"num"},h(M)),e("td",{className:"num"},f(M)),e("td",{className:"num cm-plan-reset"},M.resetsAt.length>0?n("planStatsResets",{time:new Date(M.resetsAt).toLocaleString(m==="en"?"en-US":"zh-CN")}):"\u2014"),e("td",{className:"cm-plan-method"},v(M))),"windowRow"),S=a?k.flatMap(d=>Object.entries(u[d]?.intervals??{})).map(([d,P])=>({winKey:d,list:P})):[],g=Nn(Object.fromEntries(S.map(d=>[d.winKey,d.list])),i),N=g.reduce((d,P)=>Math.max(d,P.fullTokens??0),0),x=r((d,P)=>e("button",{key:d,className:"cm-mstats-tab"+(i===d?" active":""),onClick:r(()=>c(d),"onClick")},P),"granBtn");return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("button",{type:"button",className:"cm-collapse-h","aria-expanded":String(a),onClick:r(()=>l(!a),"onClick")},e("span",{className:"cm-caret"+(a?" open":"")}),e("h3",{className:"cm-h"},n("planStatsTitle")))),a?e("div",{className:"cm-collapse-body"},k.length===0?e("p",{className:"cm-empty"},n("planStatsEmpty")):e(F,null,k.map(d=>{const P=u[d]?.windows??{},M=[...zt.filter(L=>P[L]!==void 0).map(L=>[L,d,P[L]]),...Object.keys(P).filter(L=>!zt.includes(L)).map(L=>[L,d,P[L]])];return e("div",{key:d,className:"cm-plan-provider"},e("div",{className:"cm-plan-provider-name"},vn(d,n),e("span",{className:"cm-plan-updated"},(()=>{const L=Number(u[d]?.generatedAt)||Number(y?.generatedAt)||0;return L>0?new Date(L).toLocaleTimeString(m==="en"?"en-US":"zh-CN"):""})())),e("table",{className:"cm-table"},e("thead",null,e("tr",null,e("th",null,n("planStatsWindow")),e("th",{className:"num"},n("planStatsPercent")),e("th",null,n("planStatsLocal")),e("th",null,n("planStatsPer1")),e("th",null,n("planStatsFull")),e("th",null,""),e("th",null,""))),e("tbody",null,M.map(A))))}),e("div",{className:"cm-mstats-h",style:{marginTop:"10px"}},n("planStatsCurveTitle")),e("div",{className:"cm-mstats-tabs"},x("daily",n("planStatsDaily")),x("weekly",n("planStatsWeekly")),x("monthly",n("planStatsMonthly"))),g.length===0?e("p",{className:"cm-note"},n("planStatsCurveEmpty")):e(F,null,[...g].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:(N>0?(d.fullTokens??0)/N*100:0).toFixed(1)+"%"}})),e(ee,{label:n("planStatsBarTip",{date:d.key,full:d.fullTokens===null?"\u2014":q(d.fullTokens),per1:d.per1Tokens===null?"\u2014":q(d.per1Tokens),tokens:q(d.tokens),cost:w(d.cost),intervals:d.intervals}),side:"top",delayMs:200},e("span",{className:"cm-mstats-val"},d.fullTokens===null?"\u2014":q(d.fullTokens)))))),e("p",{className:"cm-note"},n("planStatsNote")))):null)}r(Sn,"PlanStatsPanel");function Gt(t){const{provider:s,modelId:o,entry:n,draft:a,setDraft:l,t:i}=t,c=r(u=>{const k={...a.prices.providers??{}},w=k[s]??{};k[s]={...w,models:u},l({...a,prices:{...a.prices,providers:k}})},"writeModels"),m=r((u,k)=>{if(a===null)return;const w={...(a.prices.providers??{})[s]?.models??{}};w[o]={...w[o]??{},[u]:Math.max(0,k)},c(w)},"setNum"),y=r(()=>{if(a===null)return;const u={...(a.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(F,null,n?.unpriced===!0?e("span",{className:"cm-price-legacy"},i("catalogUnpriced")):null,e("button",{className:"cm-btn small danger",onClick:y},i("unmountBtn")))),n?.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"),ie({value:n?.input??null,emptyMode:"ignore"},u=>m("input",u)),ie({value:n?.cachedInput??null,emptyMode:"ignore"},u=>m("cachedInput",u)),ie({value:n?.output??null,emptyMode:"ignore"},u=>m("output",u)))))}r(Gt,"ProviderPriceCard");function Cn(t){const{state:s,api:o,t:n,draft:a,setDraft:l}=t,[i,c]=E(!1),[m,y]=E(null),u=s.balance,k=s.config,w=s.reconcile,h=(a?.balance??k.balance??{}).reconcile!==!1,f=r(S=>{a===null||typeof l!="function"||l({...a,balance:{...a.balance??k.balance??{},reconcile:S.target.checked}})},"toggleReconcile"),C=r(async()=>{if(!i){c(!0),y(null);try{const S=await o.refreshBalance();y({kind:S.ok?"ok":"err",text:S.message})}catch(S){y({kind:"err",text:n("balanceRefreshFailed",{message:S?.message??String(S)})})}finally{c(!1)}}},"doRefresh"),v=r(S=>be(S,k,u?.currency),"money"),A=u.status==="ok"?e("div",{className:"cm-bal-line"},e("span",null,n("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"},n("balanceQueryFailedHint",{message:u.message||n("unknownError")})):e("div",{className:"cm-bal-line"},n("balanceNotQueried"));return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},n("accountBalance")),e("button",{className:"cm-btn small",onClick:C,disabled:i},n(i?"refreshing":"refreshBalance"))),A,w!==void 0&&w.ok===!1?e("div",{className:"cm-bal-line warn"},"\u26A0 "+w.message):null,e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:h,onChange:f}),n("reconcileLabel")),m!==null?e("div",{className:"cm-msg "+m.kind},m.text):null)}r(Cn,"BalancePanel");function Pn(t){const{state:s,api:o,t:n,draft:a,setDraft:l}=t,i=s.config,c=a?.customBalances??i.customBalances??[],m=r(w=>{a!==null&&l({...a,customBalances:w})},"setEntries"),y=r((w,h)=>{m(c.map((f,C)=>C===w?{...f,...h}:f))},"setEntry"),u=r(w=>{m(c.filter((h,f)=>f!==w))},"removeEntry"),k=r(()=>{c.length>=8||m([...c,{enabled:!1,label:"",labelEn:"",display:"both",unit:"USD",refreshMinutes:15,request:{url:"",method:"GET",headers:{}},extract:{}}])},"addEntry");return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},n("customBalanceTitle")),e("button",{className:"cm-btn small",onClick:k,disabled:c.length>=8},n("customBalanceAdd"))),e("p",{className:"cm-note"},n("customBalanceMultiNote")),c.length===0?e("p",{className:"cm-hint"},n("customBalanceEmpty")):c.map((w,h)=>e(An,{key:"cbe-"+h,state:s,api:o,t:n,entry:w,index:h,canRemove:c.length>1,onPatch:r(f=>y(h,f),"onPatch"),onRemove:r(()=>u(h),"onRemove")})))}r(Pn,"CustomBalancePanel");function An(t){const{state:s,api:o,t:n,entry:a,index:l,canRemove:i,onPatch:c,onRemove:m}=t,[y,u]=E(!1),[k,w]=E(null),[h,f]=E(!1),[C,v]=E(()=>JSON.stringify(a.request?.headers??{},null,2)),[A,S]=E(()=>JSON.stringify(a.extract??{},null,2)),[g,N]=E({headers:"",extract:""}),x=Se(!1),d=s.config,M=(Array.isArray(s.customBalances)?s.customBalances:[]).find(O=>O.index===l)??null,L=a.enabled===!0,j=r(()=>{f(O=>!O)},"toggleOpen");re(()=>{h&&!x.current&&(v(JSON.stringify(a.request?.headers??{},null,2)),S(JSON.stringify(a.extract??{},null,2)),N({headers:"",extract:""})),x.current=h},[h]);const B=r((O,I)=>c({[O]:I}),"setField"),p=r((O,I)=>c({request:{...a.request??{},[O]:I}}),"setRequest"),D=r(O=>{v(O);try{const I=JSON.parse(O);if(I===null||typeof I!="object"||Array.isArray(I))throw new Error("invalid");if(Object.values(I).some(T=>typeof T!="string"))throw new Error("invalid");N(T=>({...T,headers:""})),p("headers",I)}catch{N(I=>({...I,headers:n("customBalanceInvalidJson")}))}},"applyHeadersText"),Q=r(O=>{S(O);try{const I=JSON.parse(O);if(I===null||typeof I!="object"||Array.isArray(I))throw new Error("invalid");N(T=>({...T,extract:""})),B("extract",I)}catch{N(I=>({...I,extract:n("customBalanceInvalidJson")}))}},"applyExtractText"),X=r(async()=>{const O=(d.customBalances??[])[l];if(!(y||O?.enabled!==!0)){u(!0),w(null);try{const I=await o.refreshCustomBalance(l);w({kind:I.ok?"ok":"err",text:I.message})}catch(I){w({kind:"err",text:n("customBalanceRefreshFailed",{message:I?.message??String(I)})})}finally{u(!1)}}},"doRefresh"),ae=M!==null&&M.status==="ok"?e(F,null,d.balance?.showProgressBar===!0?e("div",{className:"cm-budget",style:{marginTop:"8px"}},e(Xe,{segments:Ze(s,d,M,a),direction:le(d,"balance")}),e("div",{className:"cm-bal-line"},et(M,d,n,s,a))):e("div",{className:"cm-bal-line"},n("customBalanceRemaining",{amount:ke(M.remaining,d,M,a)}))):M!==null&&M.status==="error"?e("div",{className:"cm-bal-line err"},M.message||n("unknownError")):e("div",{className:"cm-bal-line"},n("balanceNotQueried")),te=h?e(F,null,e("p",{className:"cm-note"},n("customBalanceConfigNote")),e("div",{className:"cm-grid"},e("div",{className:"cm-field"},e("label",null,n("customBalanceLabelZh")),e("input",{className:"cm-input",value:a.label??"",onChange:r(O=>B("label",O.target.value),"onChange")})),e("div",{className:"cm-field"},e("label",null,n("customBalanceLabelEn")),e("input",{className:"cm-input",value:a.labelEn??"",onChange:r(O=>B("labelEn",O.target.value),"onChange")})),e("div",{className:"cm-field"},e("label",null,n("customBalanceUnitLabel")),e("select",{className:"cm-input",value:a.unit==="CNY"||a.unit==="EUR"?a.unit:"USD",onChange:r(O=>B("unit",O.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,n("customBalanceDisplayLabel")),e("select",{className:"cm-input",value:a.display??"both",onChange:r(O=>B("display",O.target.value),"onChange")},e("option",{value:"sidebar"},n("balanceSidebar")),e("option",{value:"settings"},n("balanceSettings")),e("option",{value:"both"},n("balanceBoth")),e("option",{value:"off"},n("off")))),e("div",{className:"cm-field"},e("label",null,n("customBalanceRefreshInterval")),ie({value:a.refreshMinutes??15},O=>B("refreshMinutes",Math.min(1440,Math.max(1,Math.floor(O)))))),e("div",{className:"cm-field"},e("label",null,n("customBalanceMethod")),e("select",{className:"cm-input",value:a.request?.method??"GET",onChange:r(O=>p("method",O.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,n("customBalanceUrl")),e("input",{className:"cm-input",value:a.request?.url??"",placeholder:"https://example.com/key/info",onChange:r(O=>p("url",O.target.value),"onChange")})),e("div",{className:"cm-field",style:{gridColumn:"1 / -1"}},e("label",null,n("customBalanceHeaders")),e("textarea",{className:"cm-input",rows:5,value:C,onChange:r(O=>D(O.target.value),"onChange")}),g.headers?e("span",{className:"cm-hint err"},g.headers):null),e("div",{className:"cm-field",style:{gridColumn:"1 / -1"}},e("label",null,n("customBalanceExtract")),e("textarea",{className:"cm-input",rows:8,value:A,onChange:r(O=>Q(O.target.value),"onChange")}),g.extract?e("span",{className:"cm-hint err"},g.extract):null))):e("p",{className:"cm-note cm-collapsed-note"},qe(a,H(d?.locale))||n("customBalanceTitle"));return e("div",{className:"cm-budget",style:{marginTop:"10px"}},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},`#${l+1} \xB7 `+(qe(a,H(d?.locale))||n("customBalanceTitle"))),e("button",{className:"cm-toggle-btn",onClick:j},n(h?"customBalanceCollapseConfig":"customBalanceOpenConfig")),e("button",{className:"cm-btn small",onClick:X,disabled:y||L===!1},n(y?"refreshing":"refreshCustomBalance")),i?e("button",{className:"cm-btn small",onClick:m},n("customBalanceRemove")):null),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:L===!0,onChange:r(O=>B("enabled",O.target.checked),"onChange")}),e("span",null,n("enable"))),ae,te,k!==null?e("div",{className:"cm-msg "+k.kind},k.text):null)}r(An,"CustomBalanceEntryPanel");function Mn(t){const{state:s,api:o,t:n,draft:a,setDraft:l}=t,[i,c]=E(!1),[m,y]=E(null),u=s.goQuota,k=s.config,w=a?.goQuota?.enabled??k.goQuota?.enabled??!0,h=r((x,d)=>{a!==null&&l({...a,goQuota:{...a.goQuota??k.goQuota,[x]:d}})},"setGoQuota"),f=r(async()=>{if(!(i||w===!1)){c(!0),y(null);try{const x=await o.refreshGoQuota();y({kind:x.ok?"ok":"err",text:x.message})}catch(x){y({kind:"err",text:n("syncFailed",{message:x?.message??String(x)})})}finally{c(!1)}}},"doRefresh"),C=k.goQuota?.main==="weekly"||k.goQuota?.main==="monthly"?k.goQuota.main:"rolling",v=[C,...["rolling","weekly","monthly"].filter(x=>x!==C)],A=r(x=>x==="rolling"?"goWindowRolling":x==="weekly"?"goWindowWeekly":"goWindowMonthly","goLabelOf"),S=r(x=>x==="rolling"?u.rolling:x==="weekly"?u.weekly:u.monthly,"goWinOf"),g=r((x,d,P)=>{const M=d!==null&&typeof d=="object"&&typeof d.percent=="number",L=M?Math.max(0,Math.min(100,Number(d.percent)||0)):null,j=me(L,le(k,"go")),B=M&&typeof d.resetsAt=="string"&&d.resetsAt.length>0?n("goResetAt",{time:new Date(d.resetsAt).toLocaleString()}):"";return e("div",{className:"cm-go-row"+(P?" main":"")},e("span",{className:"cm-go-label"},n(x)),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":n("goQuotaPercent",{percent:String(Math.round(j.label))})),B?e("span",{className:"cm-go-reset"},B):null)},"windowRow"),N=w===!1?e("p",{className:"cm-note"},n("goQuotaDisabledNote")):u.status==="ok"?e("div",{className:"cm-go-list"},v.map(x=>g(A(x),S(x),x===C)),e("div",{className:"cm-go-time"},n("goQuotaFetchedAt",{time:u.fetchedAt>0?new Date(u.fetchedAt).toLocaleTimeString():"\u2014"}))):u.status==="error"?e("div",{className:"cm-bal-line err"},u.message||n("unknownError")):u.status==="off"&&u.message?e("p",{className:"cm-note"},u.message):e("div",{className:"cm-bal-line"},n("goQuotaNotQueried"));return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},n("goQuotaTitle")),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:w===!0,onChange:r(x=>h("enabled",x.target.checked),"onChange")}),e("span",null,n("enableGoQuota"))),e("button",{className:"cm-btn small",onClick:f,disabled:i||w===!1},n(i?"refreshing":"refreshGoQuota"))),N,m!==null?e("div",{className:"cm-msg "+m.kind},m.text):null)}r(Mn,"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"}],_t="dsh-cost-meter.codingPlans.open";function Bn(){try{return window.localStorage.getItem(_t)==="1"}catch{return!1}}r(Bn,"readCodingPlansOpen");function Tn(t){const{state:s,api:o,t:n,draft:a,setDraft:l}=t,[i,c]=E(null),[m,y]=E({}),[u,k]=E(Bn),w=r(()=>{k(B=>{const p=!B;try{window.localStorage.setItem(_t,p?"1":"0")}catch{}return p})},"toggleOpen"),h=s.codingPlans??{},f=s.config,C=r(B=>a?.codingPlans?.[B]??f.codingPlans?.[B]??{},"draftEntry"),v=r(B=>h[B]??{status:"off",message:"",fetchedAt:0,windows:{}},"liveEntry"),A=r((B,p,D)=>{if(a===null)return;const Q=a.codingPlans??f.codingPlans??{};l({...a,codingPlans:{...Q,[B]:{...Q[B]??{},[p]:D}}})},"setPlan"),[S,g]=E(""),N=r(B=>B?.rates!==null&&typeof B?.rates=="object"&&!Array.isArray(B.rates)?B.rates:{},"ratesDraftOf"),x=r((B,p,D)=>{if(a===null)return;const Q=a.codingPlans??f.codingPlans??{},X={...(Q.qwen??{}).rates??{}},ae={...X[B]??{}},te=String(D).trim();if(te==="")delete ae[p];else{const O=Number(te);Number.isFinite(O)&&O>0&&(ae[p]=O)}ae.input===void 0&&ae.cachedInput===void 0&&ae.output===void 0?delete X[B]:X[B]=ae,l({...a,codingPlans:{...Q,qwen:{...Q.qwen??{},rates:X}}})},"setPlanRates"),d=r(B=>{if(a===null)return;const p=a.codingPlans??f.codingPlans??{},D={...(p.qwen??{}).rates??{}};D[B]={...D[B]??{}},l({...a,codingPlans:{...p,qwen:{...p.qwen??{},rates:D}}})},"setPlanRatesAdd"),P=r(B=>{if(a===null)return;const p=a.codingPlans??f.codingPlans??{},D={...(p.qwen??{}).rates??{}};delete D[B],l({...a,codingPlans:{...p,qwen:{...p.qwen??{},rates:D}}})},"setPlanRatesRemove"),M=r(async B=>{if(i===null){c(B),y(p=>({...p,[B]:null}));try{const p=await o.refreshCodingPlan(B);y(D=>({...D,[B]:{kind:p.ok?"ok":"err",text:p.message}}))}catch(p){y(D=>({...D,[B]:{kind:"err",text:n("syncFailed",{message:p?.message??String(p)})}}))}finally{c(null)}}},"doRefresh"),L=r((B,p)=>{if(typeof p?.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 p?.text=="string"?p.text:"\u2014"));const D=p?Math.max(0,Math.min(100,Number(p.percent)||0)):0,Q=me(D,le(f,"plan")),X=p&&typeof p.resetsAt=="string"&&p.resetsAt.length>0?n("goResetAt",{time:new Date(p.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"},n("goQuotaPercent",{percent:String(Math.round(Q.label))})),X?e("span",{className:"cm-go-reset"},X):null)},"windowRow"),j=r(({id:B,labelKey:p})=>{const D=C(B),Q=v(B),X=D.enabled===!0,ae=Q.windows!==null&&typeof Q.windows=="object"?Q.windows:{},te=X===!1?e("p",{className:"cm-note"},n("codingPlanDisabledNote")):Q.status==="ok"?e("div",{className:"cm-go-list"},Object.keys(ae).length>0?B==="minimax"&&(Me(ae).five!=null||Me(ae).seven!=null)?e(Ft,{five:Me(ae).five,seven:Me(ae).seven,fetchedAt:Q.fetchedAt,t:n,wide:!0,direction:le(f,"plan")}):Object.entries(ae).map(([O,I])=>L(O,I)):e("div",{className:"cm-bal-line"},n("codingPlanNotQueried")),e("div",{className:"cm-go-time"},n("goQuotaFetchedAt",{time:Q.fetchedAt>0?new Date(Q.fetchedAt).toLocaleTimeString():"\u2014"}))):Q.status==="error"?e("div",{className:"cm-bal-line err"},Q.message||n("unknownError")):Q.status==="off"&&Q.message?e("p",{className:"cm-note"},Q.message):e("div",{className:"cm-bal-line"},n("codingPlanNotQueried"));return e("div",{key:B,className:"cm-budget",style:{marginTop:"8px"}},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},n(p)),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:X,onChange:r(O=>A(B,"enabled",O.target.checked),"onChange")}),e("span",null,n("enableCodingPlan"))),e("button",{className:"cm-btn small",onClick:r(()=>{M(B)},"onClick"),disabled:i!==null||X===!1},n(i===B?"refreshing":"refreshCodingPlan"))),X?e("div",{className:"cm-field"},e("label",null,n("codingPlanDisplayLabel")),e("select",{className:"cm-input",value:typeof D.display=="string"?D.display:B==="minimax"?"both":"settings",onChange:r(O=>A(B,"display",O.target.value),"onChange")},e("option",{value:"sidebar"},n("balanceSidebar")),e("option",{value:"settings"},n("balanceSettings")),e("option",{value:"both"},n("balanceBoth")),e("option",{value:"off"},n("off"))),e("span",{className:"cm-hint"},n("codingPlanDisplayNote"))):null,X&&B!=="scnet"&&B!=="qwen"?e("div",{className:"cm-field"},e("label",null,n("codingPlanRefreshIntervalLabel")),ie({value:typeof D.refreshMinutes=="number"&&Number.isFinite(D.refreshMinutes)&&D.refreshMinutes>0?D.refreshMinutes:15},O=>{A(B,"refreshMinutes",Math.min(1440,Math.max(1,Math.floor(O))))})):null,X?B==="scnet"||B==="qwen"?e(F,null,e("div",{className:"cm-field"},e("label",null,n(B==="qwen"?"qwenPlanCreditsLabel":"scnetPlanCreditsLabel")),e("input",{className:"cm-input",type:"number",min:"1",step:"1000",value:typeof D.planCredits=="number"&&Number.isFinite(D.planCredits)&&D.planCredits>0?D.planCredits:B==="qwen"?5e5:24e4,onChange:r(O=>{const I=Number(O.target.value);Number.isFinite(I)&&I>0&&A(B,"planCredits",Math.floor(I))},"onChange")})),e("div",{className:"cm-field"},e("label",null,n(B==="qwen"?"qwenPlanStartLabel":"scnetPlanStartLabel")),e("input",{className:"cm-input",type:"date",value:typeof D.planStart=="string"?D.planStart:"",onChange:r(O=>A(B,"planStart",O.target.value),"onChange")})),B==="qwen"?e(F,null,e("div",{className:"cm-field"},e("label",null,n("qwenRatesLabel"))),Object.keys(N(D)).sort().map(O=>e("div",{key:O,className:"cm-match-row"},e("span",{style:{minWidth:"120px"}},O),["input","cachedInput","output"].map(I=>e("input",{key:I,className:"cm-input narrow",type:"number",min:"0",step:"0.1",value:N(D)[O]?.[I]??"",placeholder:n("qwenRatePlaceholder"),onChange:r(T=>{const R=T.target.value;x(O,I,R)},"onChange")})),e("button",{className:"cm-btn small",onClick:r(()=>P(O),"onClick")},n("overrideRemove")))),e("div",{className:"cm-buttons"},e("input",{className:"cm-input narrow",type:"text",placeholder:n("qwenRatesModelPlaceholder"),value:S,onChange:r(O=>g(O.target.value),"onChange")}),e("button",{className:"cm-btn small",onClick:r(()=>{const O=S.trim();O.length!==0&&(d(O),g(""))},"onClick"),disabled:S.trim().length===0},n("qwenRatesAdd")))):null,e("p",{className:"cm-note"},n(B==="qwen"?"qwenLocalNote":"scnetLocalNote"))):B==="volcengine"?e(F,null,e("div",{className:"cm-field"},e("label",null,n("volcengineAccessKeyIdLabel"))),e(je,{target:"codingPlans.volcengine.ak",configured:Q.keyConfigured===!0,source:Q.keySource,t:n,api:o,placeholder:n("volcengineAccessKeyPlaceholder")}),e("div",{className:"cm-field"},e("label",null,n("volcengineSecretAccessKeyLabel"))),e(je,{target:"codingPlans.volcengine.sk",configured:Q.keyConfigured===!0,source:Q.keySource,t:n,api:o,placeholder:n("volcengineSecretPlaceholder")}),e("p",{className:"cm-note"},n("volcengineNote"))):e(F,null,e("div",{className:"cm-field"},e("label",null,n("codingPlanKeyLabel"))),e(je,{target:"codingPlans."+B,configured:Q.keyConfigured===!0,source:Q.keySource,t:n,api:o,placeholder:"sk-\u2026"})):null,te,m[B]!=null?e("div",{className:"cm-msg "+m[B].kind},m[B].text):null)},"renderRow");return e("div",{className:"cm-budget"},e("div",{className:"cm-budget-head"},e("h3",{className:"cm-h"},n("codingPlansTitle")),e("button",{className:"cm-toggle-btn",onClick:w},n(u?"codingPlansCollapse":"codingPlansOpen"))),u?e(F,null,e("p",{className:"cm-note"},n("codingPlansNote")),Ce.map(j)):e("p",{className:"cm-note cm-collapsed-note"},n("codingPlansCollapsedHint")))}r(Tn,"CodingPlansPanel");const Ln=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Kt=r(t=>(t.input??0)+(t.output??0)+(t.cacheRead??0)+(t.cacheWrite??0),"dayTokensOf");function ct(t){const s=t.useCost?t.useCost(N=>N):void 0,o=t.state??s?.state;if(!o)return null;const n=o.config,a=H(n?.locale),l=t.t??V(a),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??"",m=new Map(i.map(N=>[N.date,N])),y=r(N=>{const x=r(d=>String(d).padStart(2,"0"),"pad");return N.getFullYear()+"-"+x(N.getMonth()+1)+"-"+x(N.getDate())},"dayKeyOf"),u=new Date;u.setHours(0,0,0,0);const k=new Date(u);k.setDate(k.getDate()+(6-(u.getDay()+6)%7));const w=26,h=[],f=[];let C=-1;for(let N=w-1;N>=0;N-=1){for(let d=0;d<7;d+=1){const P=new Date(k);P.setDate(P.getDate()-(N*7+(6-d)));const M=m.get(y(P));h.push(M!==void 0?{day:M,tokens:Kt(M)}:{day:{date:y(P)},tokens:0})}const x=new Date(k);x.setDate(x.getDate()-(N*7+6)),f.push(x.getMonth()!==C?a==="en"?Ln[x.getMonth()]:String(x.getMonth()+1)+"\u6708":""),C=x.getMonth()}const v=Math.max(...h.map(N=>N.tokens),1),A=r(N=>{const x=N/v;return x<.25?1:x<.5?2:x<.75?3:4},"levelOf"),S=r(N=>{const{day:x,tokens:d}=N,P="cm-ug-cell"+(d>0?" l"+A(d):"")+(x.date===c?" today":""),M=l("usageDay",{date:x.date,tokens:q(d),input:q(x.input??0),cache:q((x.cacheRead??0)+(x.cacheWrite??0)),output:q(x.output??0),calls:x.calls??0,cost:J(_(x,n),n)});return e(ee,{key:x.date,label:M,side:"top",delayMs:200},e("div",{className:P}))},"cell"),g=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(Kt(g)),input:q(g.input??0),cache:q((g.cacheRead??0)+(g.cacheWrite??0)),output:q(g.output??0),calls:g.calls??0})),e("div",{className:"cm-ug-grid",style:{gridTemplateColumns:"repeat("+w+",1fr)"}},h.map(S)),e("div",{className:"cm-ug-months",style:{gridTemplateColumns:"repeat("+w+",1fr)"}},f.map((N,x)=>e("span",{key:"m"+String(x),className:"cm-ug-monthc"},N))))}r(ct,"UsagePanel");function Dn(t){const s=t.useCost?t.useCost(b=>b):void 0,o=t.api,n=s?.state??null,[a,l]=E(null),[i,c]=E(null),[m,y]=E(!1),[u,k]=E(!1),[w,h]=E(!1),[f,C]=E(""),[v,A]=E(!1),[S,g]=E(!1),[N,x]=E("overview"),[d,P]=E({status:"idle",at:0,error:null}),M=Ae.useRef(null),L=Ae.useRef(null),j=Ae.useRef(null);re(()=>{if(n!==null){const b=JSON.stringify(n.config);l(U=>{const G=U!==null&&JSON.stringify(U)!==M.current;return G||(L.current=n.config,j.current=n.config),G?U:JSON.parse(b)}),M.current=b}},[n]),re(()=>{a!==null&&j.current===null&&L.current!==null&&(j.current=L.current)},[a]),re(()=>{if(a===null||o===void 0)return;const b=JSON.stringify(a);if(b===M.current)return;P(G=>G.status==="saving"?G:{...G,status:"saving"});const U=setTimeout(()=>{const G={},oe=j.current??L.current;if(oe!==null&&typeof oe=="object")for(const K of Object.keys(a))JSON.stringify(a[K])!==JSON.stringify(oe[K])&&(G[K]=a[K]);if(Object.keys(G).length===0){M.current=b,P({status:"saved",at:Date.now(),error:null});return}o.updateConfig(G).then(()=>{M.current=b,oe!==null&&typeof oe=="object"&&(j.current={...oe,...G}),P({status:"saved",at:Date.now(),error:null})},K=>{P({status:"error",at:0,error:K?.message??String(K)})})},600);return()=>{clearTimeout(U)}},[a,o]),re(()=>{s?.status==="error"&&s.error&&c({kind:"err",text:p("ledgerReadFailed",{message:s.error})})},[s?.status,s?.error]);const B=H((a??n?.config)?.locale),p=V(B);if(s===void 0||n===null)return e("div",{className:"cm-section"},e("p",{className:"cm-empty"},s?.status==="loading"?p("readingLedger"):p("ledgerUnavailable")));const D=n.config,Q=r(async()=>{if(!v){A(!0),c(null);try{const b=await o.fetchPrices();if(c({kind:b.ok?"ok":"err",text:b.message}),b.ok&&b.state&&typeof b.state.config=="object"){const U=JSON.stringify(b.state.config);l(JSON.parse(U)),M.current=U}}catch(b){c({kind:"err",text:p("syncFailed",{message:b?.message??String(b)})})}finally{A(!1),y(!1)}}},"doFetch"),X=r(async()=>{if(!v){A(!0);try{await o.resetHistory(),c({kind:"ok",text:p("historyCleared")})}catch(b){c({kind:"err",text:p("clearFailed",{message:b?.message??String(b)})})}finally{A(!1),k(!1)}}},"doReset"),ae=r(async()=>{if(!v){A(!0),c(null);try{const b=await o.importLegacyHistory();c({kind:"ok",text:b.message})}catch(b){c({kind:"err",text:p("legacyImportFailed",{message:b?.message??String(b)})})}finally{A(!1),h(!1)}}},"doImportLegacy"),te=r((b,U)=>{a!==null&&l({...a,[b]:U})},"setField"),O=r(()=>{if(a===null)return;const b=f.trim().toLowerCase();if(b.length===0||!/^[a-z0-9_.-]+$/.test(b)||a?.prices.models[b]!==void 0)return;const U={...a.prices.models,[b]:{cacheHit:0,cacheMiss:0,output:0}};l({...a,prices:{...a.prices,models:U}}),C("")},"addModel"),I=a===null?[]:Object.keys(a.prices.models).filter(b=>{const G=(a?.priceTableDisplay??D.priceTableDisplay??{})["deepseek:"+b];return typeof G=="boolean"?G:!0}).map(b=>e(it,{key:b,modelId:b,entry:a.prices.models[b]??{cacheHit:0,cacheMiss:0,output:0},isDefault:!1,draft:a,setDraft:l,t:p})),T=[["overview",p("tabOverview")],["quotas",p("tabQuotas")],["usage",p("tabUsage")],["pricing",p("tabPricing")],["display",p("tabDisplay")]],R=d.status==="saving"?e("span",{className:"cm-hint"},p("saving")):d.status==="error"?e("span",{className:"cm-msg err"},p("autoSaveFailed",{message:d.error??""})):e("span",{className:"cm-hint"},d.status==="saved"?p("autoSavedAt",{time:new Date(d.at).toLocaleTimeString()}):p("autoSaveHint"));return e("div",{className:"cm-section"},e("div",{className:"cm-tabs-row"},e("div",{className:"cm-tabs",role:"tablist"},T.map(([b,U])=>e("button",{key:b,type:"button",role:"tab","aria-selected":String(N===b),className:"cm-tab"+(N===b?" active":""),onClick:r(()=>x(b),"onClick")},U))),R),i!==null?e("div",{className:"cm-msg "+i.kind},i.text):null,N==="overview"?e(F,{key:"overview"},e("div",{className:"cm-cards"},D.hideTodayCost===!0?null:e(lt,{title:p("cardToday"),value:J(_(n.today,D),D),sub:p("callsTokens",{calls:n.today.calls,input:q(n.today.input),cache:q(n.today.cacheRead+n.today.cacheWrite),output:q(n.today.output)})}),e(lt,{title:p("cardMonth"),value:J(_(n.month,D),D),sub:p("callsTokens",{calls:n.month.calls,input:q(n.month.input),cache:q(n.month.cacheRead+n.month.cacheWrite),output:q(n.month.output)})}),e(lt,{title:p("cardTotal"),value:J(_(n.total,D),D),sub:p("cardTotalSub",{calls:n.total.calls})})),e("p",{className:"cm-note",key:"cards-footnote"},p("cardsFootnote")),(()=>{const b=Na(n);return b!==null?e("p",{className:"cm-note",key:"tz-hint"},p("timezoneHint",{host:b.hostLabel,browser:b.browserLabel})):null})(),e("label",{className:"cm-cards-toggle",title:p("cardsTogglePlanTotalHint")},e("input",{type:"checkbox",checked:(a??D).showTotalWithPlan===!0,onChange:r(b=>{const U=a??D;U!=null&&l({...U,showTotalWithPlan:b.target.checked})},"onChange")}),e("span",null,p("cardsTogglePlanTotal"))),e("div",null,e("h3",{className:"cm-h"},p("todaySessions")),e(fn,{state:n,t:p})),e(bn,{state:n,draft:a,setDraft:l,t:p}),(D.balance?.display==="settings"||D.balance?.display==="both")&&D.hideOfficialBalance!==!0?e(Cn,{state:n,api:o,t:p,draft:a,setDraft:l}):null):null,N==="quotas"?e(F,{key:"quotas"},e(Mn,{state:n,api:o,t:p,draft:a,setDraft:l}),e(Tn,{state:n,api:o,t:p,draft:a,setDraft:l}),e(Pn,{state:n,api:o,t:p,draft:a,setDraft:l})):null,N==="usage"?e(F,{key:"usage"},!Le||(D.usage?.position??"cost")==="cost"?e(ct,{state:n,t:p,locale:B}):null,e(wn,{state:n,config:a??D,t:p}),e(Sn,{state:n,config:a??D,t:p}),e(un,{state:n,api:o}),e(pn,{state:n,api:o}),e("div",null,e("h3",{className:"cm-h"},p("historyDataTitle")),e("div",{className:"cm-buttons"},w?e(F,null,e("span",{className:"cm-hint"},p("confirmImportLegacy")),e("button",{className:"cm-btn",onClick:ae,disabled:v},p("apply")),e("button",{className:"cm-btn",onClick:r(()=>h(!1),"onClick")},p("cancel"))):e("button",{className:"cm-btn",onClick:r(()=>h(!0),"onClick"),disabled:v},p("importLegacy")),u?e(F,null,e("span",{className:"cm-hint"},p("confirmReset")),e("button",{className:"cm-btn danger",onClick:X,disabled:v},p("confirmClear")),e("button",{className:"cm-btn",onClick:r(()=>k(!1),"onClick")},p("cancel"))):e("button",{className:"cm-btn danger",onClick:r(()=>k(!0),"onClick"),disabled:v},p("clearAllHistory"))),e("p",{className:"cm-note"},p("legacyImportNote")))):null,N==="display"?e(F,{key:"display"},n?.secretMigration?.pending?.length>0?e(Ca,{pending:n.secretMigration.pending,t:p}):null,e("div",{className:"cm-toolbar"},e("div",{className:"cm-field"},e("label",null,p("languageLabel")),e("select",{className:"cm-input",value:a?.locale??"auto",onChange:r(b=>te("locale",b.target.value),"onChange")},e("option",{value:"auto"},p("localeAuto")),e("option",{value:"zh"},p("localeZh")),e("option",{value:"en"},p("localeEn"))))),e("div",null,e("h3",{className:"cm-h"},p("displaySettings")),e("div",{className:"cm-grid"},e("div",{className:"cm-grid-group"},p("groupGeneral")),Le?e("div",{className:"cm-field"},e("label",null,p("usagePositionLabel")),e("select",{className:"cm-input",value:a?.usage?.position??"cost",onChange:r(b=>{a!==null&&l({...a,usage:{...a.usage??{position:"cost"},position:b.target.value}})},"onChange")},e("option",{value:"cost"},p("usagePositionCost")),e("option",{value:"general"},p("usagePositionGeneral")),e("option",{value:"section"},p("usagePositionSection")))):null,e("div",{className:"cm-field"},e("label",null,p("positionLabel")),e("select",{className:"cm-input",value:a?.position??"dock",onChange:r(b=>te("position",b.target.value),"onChange")},e("option",{value:"dock"},p("positionDock")),e("option",{value:"header"},p("positionHeader")),e("option",{value:"off"},p("off")))),e("div",{className:"cm-field"},e("label",null,p("sidebarLabel")),e("select",{className:"cm-input",value:a?.sidebar===!1?"off":"on",onChange:r(b=>te("sidebar",b.target.value==="on"),"onChange")},e("option",{value:"on"},p("sidebarOn")),e("option",{value:"off"},p("off")))),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:a?.showSessionId===!0,onChange:r(b=>te("showSessionId",b.target.checked),"onChange")}),e("span",null,p("showSessionIdLabel"))),e("div",{className:"cm-grid-group"},p("groupMoney")),e("div",{className:"cm-field"},e("label",null,p("currencyLabel")),e("select",{className:"cm-input",value:a?.currency??"CNY",onChange:r(b=>{const U=gn[b.target.value];U!==void 0&&a!==null&&l({...a,currency:b.target.value,...U})},"onChange")},e("option",{value:"CNY"},p("currencyCny")),e("option",{value:"USD"},p("currencyUsd")),e("option",{value:"EUR"},p("currencyEur")))),e("div",{className:"cm-field"},e("label",null,p("symbolLabel")),e("input",{className:"cm-input narrow",type:"text",value:a?.symbol??"",onChange:r(b=>te("symbol",b.target.value),"onChange")})),e("div",{className:"cm-field"},e("label",null,p("rateLabel")),ie({value:a?.exchangeRate??1,emptyMode:"ignore"},b=>te("exchangeRate",b))),e("div",{className:"cm-field"},e("label",null,p("decimalsLabel")),ie({value:a?.decimals??2},b=>te("decimals",Math.min(10,Math.floor(b))))),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:a?.hideOfficialBalance===!0,onChange:r(b=>te("hideOfficialBalance",b.target.checked),"onChange")}),e("span",null,p("hideOfficialBalanceLabel"))),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:a?.hideTodayCost===!0,onChange:r(b=>te("hideTodayCost",b.target.checked),"onChange")}),e("span",null,p("hideTodayCostLabel"))),e("div",{className:"cm-grid-group"},p("groupSidebar")),e("div",{className:"cm-field"},e("label",null,p("balanceDisplayLabel")),e("select",{className:"cm-input",value:a?.balance?.display??"both",onChange:r(b=>{a!==null&&l({...a,balance:{...a.balance??{display:"both",refreshMinutes:5},display:b.target.value}})},"onChange")},e("option",{value:"sidebar"},p("balanceSidebar")),e("option",{value:"settings"},p("balanceSettings")),e("option",{value:"both"},p("balanceBoth")),e("option",{value:"off"},p("off")))),e("div",{className:"cm-field"},e("label",null,p("refreshIntervalLabel")),ie({value:a?.balance?.refreshMinutes??5},b=>{a!==null&&l({...a,balance:{...a.balance??{display:"both",refreshMinutes:5,showProgressBar:!1,budgetCap:null},refreshMinutes:Math.min(1440,Math.max(1,Math.floor(b)))}})})),e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:a?.balance?.showProgressBar===!0,onChange:r(b=>{a!==null&&l({...a,balance:{...a.balance??{display:"both",refreshMinutes:5,showProgressBar:!1,budgetCap:null},showProgressBar:b.target.checked}})},"onChange")}),e("span",null,p("balanceShowProgressBar")))),e("div",{className:"cm-field"},e("label",null,p("balanceBudgetCapLabel")),ie({value:a?.balance?.budgetCap??""},b=>{a!==null&&l({...a,balance:{...a.balance??{display:"both",refreshMinutes:5,showProgressBar:!1,budgetCap:null},budgetCap:b>0?b:null}})}),e("span",{className:"cm-hint"},p("balanceBudgetCapHint"))),e("div",{className:"cm-field"},e("label",null,p("barDirectionsTitle")),["balance","budget","go","plan"].map(b=>e("div",{className:"cm-dir-row",key:b},e("span",{className:"cm-dir-label"},p("barDirection_"+b)),e("select",{className:"cm-input",value:a?.barDirections?.[b]??(b==="balance"?"remaining":"used"),onChange:r(U=>{if(a===null)return;const G={balance:"remaining",budget:"used",go:"used",plan:"used"};l({...a,barDirections:{...a.barDirections??G,[b]:U.target.value}})},"onChange")},e("option",{value:"remaining"},p("barDirectionRemaining")),e("option",{value:"used"},p("barDirectionUsed"))))),e("span",{className:"cm-hint"},p("barDirectionsHint"))),e("div",{className:"cm-field"},e("label",null,p("customBalanceDisplayLabel")),e("select",{className:"cm-input",value:a?.customBalance?.display??D.customBalance?.display??"both",onChange:r(b=>{a!==null&&l({...a,customBalance:{...a.customBalance??D.customBalance??{},display:b.target.value}})},"onChange")},e("option",{value:"sidebar"},p("balanceSidebar")),e("option",{value:"settings"},p("balanceSettings")),e("option",{value:"both"},p("balanceBoth")),e("option",{value:"off"},p("off")))),e("div",{className:"cm-field"},e("label",null,p("customBalanceRefreshInterval")),ie({value:a?.customBalance?.refreshMinutes??D.customBalance?.refreshMinutes??15},b=>{a!==null&&l({...a,customBalance:{...a.customBalance??D.customBalance??{},refreshMinutes:Math.min(1440,Math.max(1,Math.floor(b)))}})})),e("div",{className:"cm-field"},e("label",null,p("goQuotaDisplayLabel")),e("select",{className:"cm-input",value:a?.goQuota?.display??"both",onChange:r(b=>{a!==null&&l({...a,goQuota:{...a.goQuota??{display:"both",refreshMinutes:15,apiKey:""},display:b.target.value}})},"onChange")},e("option",{value:"sidebar"},p("balanceSidebar")),e("option",{value:"settings"},p("balanceSettings")),e("option",{value:"both"},p("balanceBoth")),e("option",{value:"off"},p("off")))),e("div",{className:"cm-field"},e("label",null,p("goMainLabel")),e("select",{className:"cm-input",value:a?.goQuota?.main??"rolling",onChange:r(b=>{a!==null&&l({...a,goQuota:{...a.goQuota??{display:"both",refreshMinutes:15,apiKey:"",main:"rolling"},main:b.target.value}})},"onChange")},e("option",{value:"rolling"},p("goWindowRolling")),e("option",{value:"weekly"},p("goWindowWeekly")),e("option",{value:"monthly"},p("goWindowMonthly")))),e("div",{className:"cm-field"},e("label",null,p("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(a?.goQuota?.refreshMinutes)||15))),onChange:r(b=>{a!==null&&l({...a,goQuota:{...a.goQuota??{display:"both",refreshMinutes:15,apiKey:""},refreshMinutes:Math.min(60,Math.max(1,Math.floor(Number(b.target.value)||15)))}})},"onChange")}),e("span",{className:"cm-range-value"},`${Math.min(60,Math.max(1,Math.floor(Number(a?.goQuota?.refreshMinutes)||15)))} ${p("goQuotaRefreshMinutesUnit")}`))),e("div",{className:"cm-field"},e("label",null,p("goQuotaKeyLabel"))),e(je,{target:"goQuota",configured:D.goQuota?.keyConfigured===!0,source:D.goQuota?.keySource,t:p,api:o,placeholder:"sk-\u2026"}),e("div",{className:"cm-grid-group"},p("quotaStripGroup")),e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:a?.quotaStrip?.enabled===!0,onChange:r(b=>{a!==null&&l({...a,quotaStrip:{...a.quotaStrip??{enabled:!1,budget:!0,go:!0,plans:!0},enabled:b.target.checked,promptSeen:!0}})},"onChange")}),e("span",null,p("quotaStripEnable")))),a?.quotaStrip?.enabled===!0?[["budget","quotaStripShowBudget"],["go","quotaStripShowGo"],["plans","quotaStripShowPlans"]].map(([b,U])=>e("label",{key:b,className:"cm-check"},e("input",{type:"checkbox",checked:a.quotaStrip[b]!==!1,onChange:r(G=>{a!==null&&l({...a,quotaStrip:{...a.quotaStrip,[b]:G.target.checked}})},"onChange")}),e("span",null,p(U)))):null,e("div",{className:"cm-field"},e("span",{className:"cm-hint"},p("quotaStripNote"))),e("div",{className:"cm-grid-group"},p("groupCorner")),e("div",{className:"cm-field"},e("label",null,p("cornerLabel")),e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:a?.corner?.enabled===!0,onChange:r(b=>{a!==null&&l({...a,corner:{...a.corner??{enabled:!1,goRolling:!0,goWeekly:!0,goMonthly:!0,budget:!0},enabled:b.target.checked}})},"onChange")}),e("span",null,p("cornerEnabledLabel"))),a?.corner?.enabled===!0?[["goRolling","cornerGoRolling"],["goWeekly","cornerGoWeekly"],["goMonthly","cornerGoMonthly"],["budget","cornerBudget"]].map(([b,U])=>e("label",{key:b,className:"cm-check"},e("input",{type:"checkbox",checked:a.corner[b]!==!1,onChange:r(G=>{a!==null&&l({...a,corner:{...a.corner,[b]:G.target.checked}})},"onChange")}),e("span",null,p(U)))):null),e("div",{className:"cm-grid-group"},p("groupDetail")),e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:a?.goQuota?.detail!==!1,onChange:r(b=>{a!==null&&l({...a,goQuota:{...a.goQuota??{display:"both",refreshMinutes:15,apiKey:"",main:"rolling",detail:!0},detail:b.target.checked}})},"onChange")}),e("span",null,p("goDetailLabel")))),e("div",{className:"cm-field"},e("label",{className:"cm-check"},e("input",{type:"checkbox",checked:a?.budget?.detail!==!1,onChange:r(b=>{a!==null&&l({...a,budget:{...a.budget??{enabled:!1,amount:100,period:"month",customStart:null,customEnd:null,detail:!0},detail:b.target.checked}})},"onChange")}),e("span",null,p("budgetDetailLabel"))))),e("p",{className:"cm-note"},p("badgeNote")))):null,N==="pricing"?e(F,{key:"pricing"},e(hn,{state:n,draft:a,setDraft:l,t:p}),e("div",null,e("button",{type:"button",className:"cm-collapse-h","aria-expanded":String(S),onClick:r(()=>g(!S),"onClick")},e("span",{className:"cm-caret"+(S?" open":"")}),e("h3",{className:"cm-h"},p("priceTableTitle"))),S?e("div",{className:"cm-collapse-body"},e("p",{className:"cm-note"},p("priceTableNote")),e("p",{className:"cm-hint"},p("priceTableDisplayHint")),e("div",{className:"cm-catalog-vendor"},p("deepseekMountedHeader")),I,e(it,{key:"__default__",modelId:p("defaultModelId"),entry:a?.prices.default??{cacheHit:0,cacheMiss:0,output:0},isDefault:!0,draft:a,setDraft:l,t:p}),e("div",{className:"cm-buttons"},e("input",{className:"cm-input narrow",type:"text",placeholder:p("newModelPlaceholder"),value:f,onChange:r(b=>C(b.target.value),"onChange")}),e("button",{className:"cm-btn small",onClick:O,disabled:f.trim().length===0},p("addModel"))),(()=>{const b=a?.priceTableDisplay??D.priceTableDisplay??{},U=a?.prices?.providers??{},G=r(K=>Object.keys(U[K]?.models??{}).filter(se=>b[K+":"+se]===!0),"directIds"),oe=Object.keys(U).filter(K=>G(K).length>0).sort((K,se)=>K.localeCompare(se));return oe.length===0?null:oe.map(K=>e("div",{key:K},e("div",{className:"cm-catalog-vendor"},(Qt[K]??K)+" \xB7 "+p("mountedSuffix")),G(K).sort().map(se=>e(Gt,{key:K+":"+se,provider:K,modelId:se,entry:U[K].models[se],draft:a,setDraft:l,t:p}))))})()):null),(()=>{const b=a?.priceOverrides??D.priceOverrides??{},U=a?.prices??D.prices,G=n.today.byProviderModel??{},oe={prices:U,priceMatch:a?.priceMatch??D.priceMatch},K=Object.keys(G).filter(z=>{if(b[z]!==void 0)return!1;const Y=z.indexOf(":"),ge=(Y>0?z.slice(0,Y):"deepseek").toLowerCase(),ut=Y>0?z.slice(Y+1):z;return _e(ge,ut,oe).matched!==!0}),se=[...new Set([...K,...Object.keys(b)])],ve=n.month?.byProviderModel??{},Pe=Object.keys(ve).filter(z=>{if(b[z]!==void 0)return!1;const Y=z.indexOf(":"),ge=(Y>0?z.slice(0,Y):"deepseek").toLowerCase(),ut=Y>0?z.slice(Y+1):z;return _e(ge,ut,oe).matched===!0}).sort(),Yt=[{value:"__local__",label:p("overrideTargetLocal")},{value:"deepseek:__default__",label:p("overrideTargetDefault")},...Object.keys(U.models??{}).map(z=>({value:"deepseek:"+z,label:"DeepSeek \xB7 "+z})),...Object.entries(U.providers??{}).flatMap(([z,Y])=>Object.keys(Y?.models??{}).map(ge=>({value:z+":"+ge,label:z+" \xB7 "+ge})))],dt=r((z,Y)=>{if(a===null)return;const ge={...a.priceOverrides??{}};Y===""?delete ge[z]:ge[z]=Y,l({...a,priceOverrides:ge})},"setOverride");return e("div",null,e("h3",{className:"cm-h"},p("priceMatchLabel")),e("div",{className:"cm-field"},e("select",{className:"cm-input",value:a?.priceMatch==="exact"?"exact":"auto",onChange:r(z=>te("priceMatch",z.target.value),"onChange")},e("option",{value:"auto"},p("priceMatchAuto")),e("option",{value:"exact"},p("priceMatchExact")))),e("p",{className:"cm-note"},p("priceMatchNote")),se.length>0?e(F,null,e("h3",{className:"cm-h"},p("unmatchedTitle")),e("p",{className:"cm-hint"},p("unmatchedHint")),se.map(z=>e("div",{key:z,className:"cm-match-row"},e("span",null,Wt(z)),e("select",{className:"cm-input",value:b[z]??"",onChange:r(Y=>dt(z,Y.target.value),"onChange")},e("option",{value:""},"\u2014"),Yt.map(Y=>e("option",{key:Y.value,value:Y.value},Y.label))),b[z]!==void 0?e("button",{className:"cm-btn small",onClick:r(()=>dt(z,""),"onClick")},p("overrideRemove")):null))):e("p",{className:"cm-hint"},p("overrideNone")),Pe.length>0?e(F,null,e("h3",{className:"cm-h"},p("matchedTitle")),e("p",{className:"cm-hint"},p("matchedHint")),Pe.map(z=>e("div",{key:z,className:"cm-match-row"},e("span",null,Wt(z)),e("select",{className:"cm-input",value:"",onChange:r(Y=>{Y.target.value!==""&&dt(z,Y.target.value)},"onChange")},e("option",{value:""},p("matchedKeepAuto")),Yt.map(Y=>e("option",{key:Y.value,value:Y.value},Y.label)))))):null)})(),e(kn,{state:n,draft:a,setDraft:l,t:p}),e("div",null,e("h3",{className:"cm-h"},p("dataSync")),e("div",{className:"cm-field"},e("label",null,p("pricingCurrencyLabel")),e("select",{className:"cm-input",value:a?.pricingCurrency==="CNY"?"CNY":"USD",onChange:r(b=>te("pricingCurrency",b.target.value),"onChange")},e("option",{value:"USD"},p("pricingCurrencyUsd")),e("option",{value:"CNY"},p("pricingCurrencyCny"))),e("p",{className:"cm-note"},p("pricingCurrencyNote"))),e("div",{className:"cm-buttons"},m?e(F,null,e("span",{className:"cm-hint"},p("confirmFetch")),e("button",{className:"cm-btn",onClick:Q,disabled:v},p("apply")),e("button",{className:"cm-btn",onClick:r(()=>y(!1),"onClick")},p("cancel"))):e("button",{className:"cm-btn",onClick:r(()=>y(!0),"onClick"),disabled:v},p("syncFromDocs"))),e("p",{className:"cm-note"},p("lastSync",{time:D.fetchedAt!==null?new Date(D.fetchedAt).toLocaleString():p("neverSynced")})+p("source",{source:D.priceSource==="official"?p("sourceOfficial"):p("sourceBundled")})))):null)}r(Dn,"CostSection");const On=["remote"];async function Rn(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 n=t.get("remote.costMeter");if(n===void 0)return;const a=Sa({status:"loading",error:null,state:null}),l=r(()=>V(H(a.getSnapshot().state?.config?.locale)),"rpcT"),i=r(async(T,R)=>{const b=await n[T](...R??[]);if(b===null||typeof b!="object"||b.ok!==!0)throw new Error(b?.error?.message??l()("rpcFailed",{method:T}));return b.value},"call");let c=!1;const m=r(async()=>{if(c)return;c=!0;const T=a.getSnapshot();try{const R=await i("getState");a.set({status:"ready",error:null,state:R})}catch(R){a.set({status:"error",error:R?.message??String(R),state:T.state})}finally{c=!1}},"reload");t.effect(()=>t.on("connection/reset",()=>{m()}),"cost-meter: reconnect reload");const y=setInterval(()=>{document.hidden||m()},6e4);t.effect(()=>()=>{clearInterval(y)},"cost-meter: poll timer");const u=r(()=>{document.visibilityState==="visible"&&m()},"onVisible");document.addEventListener("visibilitychange",u),t.effect(()=>()=>{document.removeEventListener("visibilitychange",u)},"cost-meter: visibility reload");const k={reload:m,updateConfig:r(async T=>{const R=await i("updateConfig",[T]);return a.set({status:"ready",error:null,state:R}),R},"updateConfig"),fetchPrices:r(async()=>{const T=await n.fetchPrices();if(T===null||typeof T!="object"||T.ok!==!0)throw new Error(T?.error?.message??l()("rpcSyncFailed"));return T.value.state!==void 0&&a.set({status:"ready",error:null,state:T.value.state}),T.value},"fetchPrices"),resetHistory:r(async()=>{const T=await i("resetHistory");return a.set({status:"ready",error:null,state:T}),T},"resetHistory"),importLegacyHistory:r(async()=>{const T=await n.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&&a.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,b)=>i("getTopSessions",[T,R,b]),"getTopSessions"),refreshBalance:r(async()=>{const T=await n.refreshBalance();if(T===null||typeof T!="object"||T.ok!==!0)throw new Error(T?.error?.message??l()("rpcBalanceFailed"));return T.value.state!==void 0&&a.set({status:"ready",error:null,state:T.value.state}),T.value},"refreshBalance"),refreshGoQuota:r(async()=>{const T=await n.refreshGoQuota();if(T===null||typeof T!="object"||T.ok!==!0)throw new Error(T?.error?.message??l()("rpcSyncFailed"));return T.value.state!==void 0&&a.set({status:"ready",error:null,state:T.value.state}),T.value},"refreshGoQuota"),refreshCustomBalance:r(async(T=null)=>{const R=T==null?await n.refreshCustomBalance():await n.refreshCustomBalance(T);if(R===null||typeof R!="object"||R.ok!==!0)throw new Error(R?.error?.message??l()("rpcSyncFailed"));return R.value.state!==void 0&&a.set({status:"ready",error:null,state:R.value.state}),R.value},"refreshCustomBalance"),refreshCodingPlan:r(async T=>{const R=await n.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&&a.set({status:"ready",error:null,state:R.value.state}),R.value},"refreshCodingPlan"),setCredential:r(async(T,R)=>{const b=await n.setCredential(T,R);if(b===null||typeof b!="object"||b.ok!==!0)throw new Error(b?.error?.message??b?.value?.message??l()("rpcSyncFailed"));return b.value.state!==void 0&&a.set({status:"ready",error:null,state:b.value.state}),b.value},"setCredential"),clearCredential:r(async T=>{const R=await n.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&&a.set({status:"ready",error:null,state:R.value.state}),R.value},"clearCredential")};m();const w=t.get("slots");if(w===void 0)return;const h=r(()=>({hooks:{cost:a},api:k}),"injected"),f={gen:0,dispose:null},C=r(T=>{f.dispose!==null&&(f.dispose(),f.dispose=null),f.gen+=1;const R=f.gen;if(T==="off")return;const b=T==="header"?"conversation.session.header.actions":"conversation.composer.dock",U=T==="header"?{name:b,id:"cost-meter",order:-5,inject:h}:{name:b,id:"cost-meter",order:5,inject:h};w.inject(b,()=>{if(f.gen!==R)return;const G=w.register(U,T==="header"?Pa:Aa);if(f.gen!==R){G();return}return f.dispose=G,()=>{f.dispose===G&&(f.dispose=null),G()}})},"registerSession"),v={gen:0,dispose:null},A=r(T=>{v.dispose!==null&&(v.dispose(),v.dispose=null),v.gen+=1;const R=v.gen;T&&w.inject("sidebar.footer.action",()=>{if(v.gen!==R)return;const b=w.register({name:"sidebar.footer.action",id:"cost-meter",order:0,inject:h},dn);if(v.gen!==R){b();return}return v.dispose=b,()=>{v.dispose===b&&(v.dispose=null),b()}})},"registerFooter"),S={gen:0,dispose:null},g=r(T=>{S.dispose!==null&&(S.dispose(),S.dispose=null),S.gen+=1;const R=S.gen;T&&w.inject("conversation.composer.dock",()=>{if(S.gen!==R)return;const b=w.register({name:"conversation.composer.dock",id:"cost-meter-corner",order:9,inject:h},Ua);if(S.gen!==R){b();return}return S.dispose=b,()=>{S.dispose===b&&(S.dispose=null),b()}})},"registerCorner");w.inject("conversation.input.dock",()=>w.register({name:"conversation.input.dock",id:"cost-meter-qstrip",order:5,inject:h},sn)),w.inject("sidebar.footer.action",()=>w.register({name:"sidebar.footer.action",id:"cost-meter-qstrip-guide",order:1,inject:h},on)),w.inject("sidebar.footer.action",()=>w.register({name:"sidebar.footer.action",id:"cost-meter-balance-click-guide",order:2,inject:h},cn));const N={gen:0,dispose:null},x=r(T=>{N.dispose!==null&&(N.dispose(),N.dispose=null),N.gen+=1;const R=N.gen;T&&w.inject("sidebar.footer.action",()=>{if(N.gen!==R)return;const b=w.register({name:"sidebar.footer.action",id:"cost-meter-peak-alert",order:0,inject:h},Ia);if(N.gen!==R){b();return}return N.dispose=b,()=>{N.dispose===b&&(N.dispose=null),b()}})},"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(at,{detail:{kind:T==="offpeak"?"offpeak":"peak"}}))};const d={gen:0,dispose:null},P=r(T=>{d.dispose!==null&&(d.dispose(),d.dispose=null),d.gen+=1;const R=d.gen;w.inject("settings.section",()=>{if(d.gen!==R)return;const b=w.register({name:"settings.section",id:"cost-meter",order:30,label:T==="en"?we.en.sectionLabel:we.zh.sectionLabel,inject:h},Dn);if(d.gen!==R){b();return}return d.dispose=b,()=>{d.dispose===b&&(d.dispose=null),b()}})},"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&&w.inject("settings.general.item",()=>{if(M.gen!==R)return;const b=w.register({name:"settings.general.item",id:"cost-meter-usage",order:30,inject:h},ct);if(M.gen!==R){b();return}return M.dispose=b,()=>{M.dispose===b&&(M.dispose=null),b()}})},"registerGeneralUsage"),j={gen:0,dispose:null},B=r((T,R)=>{j.dispose!==null&&(j.dispose(),j.dispose=null),j.gen+=1;const b=j.gen;T&&w.inject("settings.section",()=>{if(j.gen!==b)return;const U=w.register({name:"settings.section",id:"cost-meter-usage",order:31,label:R==="en"?we.en.usageSectionLabel:we.zh.usageSectionLabel,inject:h},ct);if(j.gen!==b){U();return}return j.dispose=U,()=>{j.dispose===U&&(j.dispose=null),U()}})},"registerUsageSection");let p=null,D=null,Q=null,X=null,ae=null,te=null;const O=r(()=>{const T=a.getSnapshot().state,R=T?.config?.position??"dock",b=T?.config?.sidebar!==!1&&T?.config?.hideTodayCost!==!0,U=T?.config?.balance?.display??"both",G=(U==="sidebar"||U==="both")&&T?.config?.hideOfficialBalance!==!0,oe=b||G,K=T?.config?.corner?.enabled===!0,se=H(T?.config?.locale),ve=T?.config?.usage?.position??"cost";R!==p&&(C(R),p=R),oe!==D&&(A(oe),D=oe),K!==Q&&(g(K),Q=K);const Pe=T?.config?.peakEnabled===!0;Pe!==te&&(x(Pe),te=Pe),se!==X&&(P(se),X=se),ve!==ae?(Le&&(L(ve==="general"),B(ve==="section",se)),ae=ve):Le&&ve==="section"&&se!==X&&B(!0,se)},"sync");O();const I=a.subscribe(O);return()=>{I()}}return r(Rn,"apply"),He.apply=Rn,He.inject=On,Te.exports},"factory")});