@wendongfly/myhi 1.0.86 → 1.0.87
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/dist/chat.html +17 -19
- package/dist/index.html +17 -19
- package/dist/index.js +96 -96
- package/package.json +1 -1
package/dist/chat.html
CHANGED
|
@@ -344,36 +344,34 @@
|
|
|
344
344
|
const H = 'style="font-size:0.9rem;font-weight:700;margin-bottom:0.5rem;color:#e6edf3"';
|
|
345
345
|
const T = 'style="font-size:0.82rem;color:#b1bac4;line-height:1.6"';
|
|
346
346
|
let html = '<div style="padding:1.5rem">';
|
|
347
|
-
html += '<h3 style="margin:0 0 1.2rem;font-size:1.1rem;color:#fff;text-align:center">Claude
|
|
347
|
+
html += '<h3 style="margin:0 0 1.2rem;font-size:1.1rem;color:#fff;text-align:center">Claude 用量</h3>';
|
|
348
348
|
if (data.rateLimit) {
|
|
349
349
|
const rl = data.rateLimit;
|
|
350
|
-
const
|
|
350
|
+
const resetTime = new Date(rl.resetsAt * 1000);
|
|
351
|
+
const remaining = Math.max(0, Math.ceil((resetTime - Date.now()) / 60000));
|
|
352
|
+
const hours = Math.floor(remaining / 60);
|
|
353
|
+
const mins = remaining % 60;
|
|
354
|
+
const timeStr = hours > 0 ? `${hours}小时${mins}分钟` : `${mins}分钟`;
|
|
351
355
|
const statusColor = rl.status === 'allowed' ? '#3fb950' : '#f85149';
|
|
352
|
-
|
|
353
|
-
html += `<div ${
|
|
356
|
+
const statusText = rl.status === 'allowed' ? '正常可用' : '已达上限';
|
|
357
|
+
html += `<div ${C}>`;
|
|
358
|
+
html += `<div ${H}>5 小时配额窗口</div>`;
|
|
359
|
+
html += `<div ${T}><span style="color:${statusColor};font-weight:700;font-size:0.95rem">${rl.status === 'allowed' ? '●' : '●'} ${statusText}</span></div>`;
|
|
360
|
+
html += `<div ${T}>窗口重置: <b style="color:#e6edf3">${timeStr}后</b>(${resetTime.toLocaleTimeString('zh-CN', {hour:'2-digit',minute:'2-digit'})})</div>`;
|
|
361
|
+
html += '</div>';
|
|
354
362
|
} else {
|
|
355
|
-
html += `<div ${C}><div ${H}>5
|
|
356
|
-
}
|
|
357
|
-
if (data.sevenDay) {
|
|
358
|
-
const s = data.sevenDay;
|
|
359
|
-
html += `<div ${C}><div ${H}>近 7 天</div>`;
|
|
360
|
-
html += `<div ${T}>消息 <b style="color:#e6edf3">${s.messageCount.toLocaleString()}</b> 会话 <b style="color:#e6edf3">${s.sessionCount}</b> 工具调用 <b style="color:#e6edf3">${s.toolCallCount.toLocaleString()}</b></div></div>`;
|
|
363
|
+
html += `<div ${C}><div ${H}>5 小时配额窗口</div><div ${T}>发送一条 Agent 消息后可查看</div></div>`;
|
|
361
364
|
}
|
|
362
365
|
if (data.activeSessions?.length) {
|
|
363
|
-
html += `<div ${C}><div ${H}
|
|
366
|
+
html += `<div ${C}><div ${H}>当前会话</div>`;
|
|
364
367
|
for (const s of data.activeSessions) {
|
|
365
368
|
if (!s.usage) continue;
|
|
366
|
-
|
|
369
|
+
const u = s.usage;
|
|
370
|
+
html += `<div ${T}><b style="color:#e6edf3">${s.title}</b> (${s.owner || '管理员'})</div>`;
|
|
371
|
+
html += `<div style="font-size:0.78rem;color:#8b949e;margin:0.2rem 0 0.5rem;line-height:1.5">查询 <b style="color:#b1bac4">${u.queryCount}</b>次 输入 <b style="color:#b1bac4">${((u.totalInputTokens+u.totalCacheReadTokens)/1000).toFixed(0)}K</b> 输出 <b style="color:#b1bac4">${(u.totalOutputTokens/1000).toFixed(0)}K</b> 费用 <b style="color:#b1bac4">$${u.totalCostUSD.toFixed(4)}</b></div>`;
|
|
367
372
|
}
|
|
368
373
|
html += '</div>';
|
|
369
374
|
}
|
|
370
|
-
if (data.totalStats) {
|
|
371
|
-
const t = data.totalStats;
|
|
372
|
-
html += `<div ${C}><div ${H}>累计(截至 ${t.lastComputedDate || '未知'})</div>`;
|
|
373
|
-
html += `<div ${T}>总会话 <b style="color:#e6edf3">${t.totalSessions}</b> 总消息 <b style="color:#e6edf3">${t.totalMessages?.toLocaleString()}</b></div>`;
|
|
374
|
-
if (t.modelUsage) { for (const [m, u] of Object.entries(t.modelUsage)) { if (u.outputTokens > 0) html += `<div style="font-size:0.75rem;color:#8b949e;margin-top:0.3rem">${m.replace(/claude-/,'').replace(/-\d{8}$/,'')} 输入 ${(u.inputTokens/1000).toFixed(0)}K 输出 ${(u.outputTokens/1000).toFixed(0)}K</div>`; } }
|
|
375
|
-
html += '</div>';
|
|
376
|
-
}
|
|
377
375
|
html += '<button onclick="this.closest(\'[data-usage-overlay]\').remove()" style="margin-top:0.8rem;width:100%;padding:0.7rem;background:#7c3aed;color:#fff;border:none;border-radius:10px;cursor:pointer;font-size:0.9rem;font-weight:600">关闭</button></div>';
|
|
378
376
|
const overlay = document.createElement('div');
|
|
379
377
|
overlay.setAttribute('data-usage-overlay', '');
|
package/dist/index.html
CHANGED
|
@@ -540,36 +540,34 @@
|
|
|
540
540
|
const H = 'style="font-size:0.9rem;font-weight:700;margin-bottom:0.5rem;color:#e6edf3"';
|
|
541
541
|
const T = 'style="font-size:0.82rem;color:#b1bac4;line-height:1.6"';
|
|
542
542
|
let html = '<div style="padding:1.5rem">';
|
|
543
|
-
html += '<h3 style="margin:0 0 1.2rem;font-size:1.1rem;color:#fff;text-align:center">Claude
|
|
543
|
+
html += '<h3 style="margin:0 0 1.2rem;font-size:1.1rem;color:#fff;text-align:center">Claude 用量</h3>';
|
|
544
544
|
if (data.rateLimit) {
|
|
545
545
|
const rl = data.rateLimit;
|
|
546
|
-
const
|
|
546
|
+
const resetTime = new Date(rl.resetsAt * 1000);
|
|
547
|
+
const remaining = Math.max(0, Math.ceil((resetTime - Date.now()) / 60000));
|
|
548
|
+
const hours = Math.floor(remaining / 60);
|
|
549
|
+
const mins = remaining % 60;
|
|
550
|
+
const timeStr = hours > 0 ? `${hours}小时${mins}分钟` : `${mins}分钟`;
|
|
547
551
|
const statusColor = rl.status === 'allowed' ? '#3fb950' : '#f85149';
|
|
548
|
-
|
|
549
|
-
html += `<div ${
|
|
552
|
+
const statusText = rl.status === 'allowed' ? '正常可用' : '已达上限';
|
|
553
|
+
html += `<div ${C}>`;
|
|
554
|
+
html += `<div ${H}>5 小时配额窗口</div>`;
|
|
555
|
+
html += `<div ${T}><span style="color:${statusColor};font-weight:700;font-size:0.95rem">● ${statusText}</span></div>`;
|
|
556
|
+
html += `<div ${T}>窗口重置: <b style="color:#e6edf3">${timeStr}后</b>(${resetTime.toLocaleTimeString('zh-CN', {hour:'2-digit',minute:'2-digit'})})</div>`;
|
|
557
|
+
html += '</div>';
|
|
550
558
|
} else {
|
|
551
|
-
html += `<div ${C}><div ${H}>5
|
|
552
|
-
}
|
|
553
|
-
if (data.sevenDay) {
|
|
554
|
-
const s = data.sevenDay;
|
|
555
|
-
html += `<div ${C}><div ${H}>近 7 天</div>`;
|
|
556
|
-
html += `<div ${T}>消息 <b style="color:#e6edf3">${s.messageCount.toLocaleString()}</b> 会话 <b style="color:#e6edf3">${s.sessionCount}</b> 工具调用 <b style="color:#e6edf3">${s.toolCallCount.toLocaleString()}</b></div></div>`;
|
|
559
|
+
html += `<div ${C}><div ${H}>5 小时配额窗口</div><div ${T}>发送一条 Agent 消息后可查看</div></div>`;
|
|
557
560
|
}
|
|
558
561
|
if (data.activeSessions?.length) {
|
|
559
|
-
html += `<div ${C}><div ${H}
|
|
562
|
+
html += `<div ${C}><div ${H}>当前会话</div>`;
|
|
560
563
|
for (const s of data.activeSessions) {
|
|
561
564
|
if (!s.usage) continue;
|
|
562
|
-
|
|
565
|
+
const u = s.usage;
|
|
566
|
+
html += `<div ${T}><b style="color:#e6edf3">${s.title}</b> (${s.owner || '管理员'})</div>`;
|
|
567
|
+
html += `<div style="font-size:0.78rem;color:#8b949e;margin:0.2rem 0 0.5rem;line-height:1.5">查询 <b style="color:#b1bac4">${u.queryCount}</b>次 输入 <b style="color:#b1bac4">${((u.totalInputTokens+u.totalCacheReadTokens)/1000).toFixed(0)}K</b> 输出 <b style="color:#b1bac4">${(u.totalOutputTokens/1000).toFixed(0)}K</b> 费用 <b style="color:#b1bac4">$${u.totalCostUSD.toFixed(4)}</b></div>`;
|
|
563
568
|
}
|
|
564
569
|
html += '</div>';
|
|
565
570
|
}
|
|
566
|
-
if (data.totalStats) {
|
|
567
|
-
const t = data.totalStats;
|
|
568
|
-
html += `<div ${C}><div ${H}>累计(截至 ${t.lastComputedDate || '未知'})</div>`;
|
|
569
|
-
html += `<div ${T}>总会话 <b style="color:#e6edf3">${t.totalSessions}</b> 总消息 <b style="color:#e6edf3">${t.totalMessages?.toLocaleString()}</b></div>`;
|
|
570
|
-
if (t.modelUsage) { for (const [m, u] of Object.entries(t.modelUsage)) { if (u.outputTokens > 0) html += `<div style="font-size:0.75rem;color:#8b949e;margin-top:0.3rem">${m.replace(/claude-/,'').replace(/-\d{8}$/,'')} 输入 ${(u.inputTokens/1000).toFixed(0)}K 输出 ${(u.outputTokens/1000).toFixed(0)}K</div>`; } }
|
|
571
|
-
html += '</div>';
|
|
572
|
-
}
|
|
573
571
|
html += '<button onclick="this.closest(\'[data-usage-overlay]\').remove()" style="margin-top:0.8rem;width:100%;padding:0.7rem;background:#7c3aed;color:#fff;border:none;border-radius:10px;cursor:pointer;font-size:0.9rem;font-weight:600">关闭</button></div>';
|
|
574
572
|
const overlay = document.createElement('div');
|
|
575
573
|
overlay.setAttribute('data-usage-overlay', '');
|