feat(rpc): expose token throughput in state

This commit is contained in:
Frederico Luz
2026-07-29 19:14:59 +01:00
parent abc2159d80
commit 37a8102219
4 changed files with 5 additions and 0 deletions
@@ -32,6 +32,7 @@ import { executeAcpBuiltinSlashCommand } from "../../slash-commands/acp-builtins
import { buildAvailableSlashCommands } from "../../slash-commands/available-commands";
import { defaultLoadModeForToolName } from "../../tools/essential-tools";
import type { EventBus } from "../../utils/event-bus";
import { calculateTokensPerSecond } from "../../utils/token-rate";
import { initializeExtensions } from "../runtime-init";
import { isRpcHostToolResult, isRpcHostToolUpdate, RpcHostToolBridge } from "./host-tools";
import { isRpcHostUriResult, RpcHostUriBridge } from "./host-uris";
@@ -1087,6 +1088,7 @@ export async function runRpcMode(
queuedMessageCount: session.queuedMessageCount,
todoPhases: session.getTodoPhases(),
fastModeEnabled: session.isFastModeEnabled(),
tokensPerSecond: calculateTokensPerSecond(session.messages, session.isStreaming),
fastModeActive: session.isFastModeActive(),
messageCount: session.messages.length,
systemPrompt: session.systemPrompt,
@@ -110,6 +110,7 @@ export interface RpcSessionState {
autoCompactionEnabled: boolean;
fastModeEnabled: boolean;
fastModeActive: boolean;
tokensPerSecond: number | null;
messageCount: number;
queuedMessageCount: number;
todoPhases: TodoPhase[];
@@ -326,6 +326,7 @@ describe("RpcInputDispatcher", () => {
autoCompactionEnabled: false,
fastModeEnabled: false,
fastModeActive: false,
tokensPerSecond: null,
messageCount: 0,
queuedMessageCount: 0,
todoPhases: [],
+1
View File
@@ -59,6 +59,7 @@ describe.skipIf(!e2eApiKey("ANTHROPIC_API_KEY"))("RPC mode", () => {
expect(state.model?.id).toBe("claude-sonnet-4-5");
expect(state.isStreaming).toBe(false);
expect(state.messageCount).toBe(0);
expect(state.tokensPerSecond).toBeNull();
}, 30000);
test("should set fast mode and expose enabled/active state", async () => {