fix: complete extension usage accounting

closes #6509
This commit is contained in:
Mario Zechner
2026-07-20 17:04:12 +02:00
parent 2fd3868401
commit f8b74a4507
20 changed files with 267 additions and 36 deletions
@@ -5,6 +5,7 @@ import { AgentSession } from "../src/core/agent-session.ts";
import { AuthStorage } from "../src/core/auth-storage.ts";
import { SessionManager } from "../src/core/session-manager.ts";
import { SettingsManager } from "../src/core/settings-manager.ts";
import { getUsageCostBreakdown } from "../src/core/usage-totals.ts";
import { createInMemoryModelRegistry, getModelRuntime } from "./model-runtime-test-utils.ts";
import { createTestResourceLoader } from "./utilities.ts";
@@ -224,6 +225,31 @@ describe("AgentSession.getSessionStats", () => {
}
});
it("groups tool and summary usage separately from model-attributed usage", () => {
const sessionManager = SessionManager.inMemory();
const rootId = sessionManager.appendMessage(createUserMessage("hello", 1));
sessionManager.appendMessage({
...createAssistantMessage("response", 100, 2),
usage: { ...createUsage(100), cost: { ...createUsage(100).cost, total: 0.5 } },
});
sessionManager.appendMessage(
createToolResultMessage({ ...createUsage(100), cost: { ...createUsage(100).cost, total: 1 } }),
);
sessionManager.appendCompaction("summary", rootId, 100, undefined, false, {
...createUsage(100),
cost: { ...createUsage(100).cost, total: 2 },
});
sessionManager.branchWithSummary(null, "branch summary", undefined, false, {
...createUsage(100),
cost: { ...createUsage(100).cost, total: 3 },
});
expect(getUsageCostBreakdown(sessionManager.getEntries())).toEqual([
{ key: "Tools/summaries", cost: 6, tokens: 300 },
{ key: `${model.provider}/${model.id}`, cost: 0.5, tokens: 100 },
]);
});
it("ignores zero-usage messages when checking for post-compaction context usage", async () => {
const { session, sessionManager } = await createSession();