Initial commit with translated description

This commit is contained in:
2026-03-29 10:19:19 +08:00
commit 5aa1f324c6
81 changed files with 27526 additions and 0 deletions

88
tests/llm-usage.test.js Normal file
View File

@@ -0,0 +1,88 @@
const { describe, it } = require("node:test");
const assert = require("node:assert");
const { transformLiveUsageData } = require("../src/llm-usage");
describe("llm-usage module", () => {
describe("transformLiveUsageData()", () => {
it("transforms valid usage data with anthropic provider", () => {
const usage = {
providers: [
{
provider: "anthropic",
windows: [
{ label: "5h", usedPercent: 25, resetAt: Date.now() + 3600000 },
{ label: "Week", usedPercent: 10, resetAt: Date.now() + 86400000 * 3 },
{ label: "Sonnet", usedPercent: 5, resetAt: Date.now() + 86400000 * 5 },
],
},
],
};
const result = transformLiveUsageData(usage);
assert.strictEqual(result.source, "live");
assert.strictEqual(result.claude.session.usedPct, 25);
assert.strictEqual(result.claude.session.remainingPct, 75);
assert.strictEqual(result.claude.weekly.usedPct, 10);
assert.strictEqual(result.claude.sonnet.usedPct, 5);
});
it("handles auth error from provider", () => {
const usage = {
providers: [{ provider: "anthropic", error: "403 Forbidden" }],
};
const result = transformLiveUsageData(usage);
assert.strictEqual(result.source, "error");
assert.strictEqual(result.errorType, "auth");
assert.ok(result.error.includes("403"));
assert.strictEqual(result.claude.session.usedPct, null);
});
it("handles missing windows gracefully", () => {
const usage = { providers: [{ provider: "anthropic", windows: [] }] };
const result = transformLiveUsageData(usage);
assert.strictEqual(result.source, "live");
assert.strictEqual(result.claude.session.usedPct, 0);
assert.strictEqual(result.claude.weekly.usedPct, 0);
});
it("handles codex provider data", () => {
const usage = {
providers: [
{ provider: "anthropic", windows: [] },
{
provider: "openai-codex",
windows: [
{ label: "5h", usedPercent: 30 },
{ label: "Day", usedPercent: 15 },
],
},
],
};
const result = transformLiveUsageData(usage);
assert.strictEqual(result.codex.usage5hPct, 30);
assert.strictEqual(result.codex.usageDayPct, 15);
});
it("handles missing providers gracefully", () => {
const usage = { providers: [] };
const result = transformLiveUsageData(usage);
assert.strictEqual(result.source, "live");
assert.strictEqual(result.codex.usage5hPct, 0);
});
it("formats reset time correctly", () => {
const usage = {
providers: [
{
provider: "anthropic",
windows: [{ label: "5h", usedPercent: 50, resetAt: Date.now() + 30 * 60000 }],
},
],
};
const result = transformLiveUsageData(usage);
assert.ok(result.claude.session.resetsIn.includes("m"));
});
});
});