feat: persist session usage details (#1050)

This commit is contained in:
Ari Webb
2026-02-26 18:00:48 -08:00
committed by GitHub
parent 6707af5930
commit 3f4c689d61
3 changed files with 242 additions and 1 deletions

View File

@@ -59,6 +59,7 @@ import {
type ModelReasoningEffort,
} from "../agent/model";
import { INTERRUPT_RECOVERY_ALERT } from "../agent/promptAssets";
import { recordSessionEnd } from "../agent/sessionHistory";
import { SessionStats } from "../agent/stats";
import {
INTERRUPTED_BY_USER,
@@ -5493,6 +5494,28 @@ export default function App({
const stats = sessionStatsRef.current.getSnapshot();
telemetry.trackSessionEnd(stats, "exit_command");
// Record session to local history file
try {
recordSessionEnd(
agentId,
telemetry.getSessionId(),
stats,
{
project: projectDirectory,
model: currentModelLabel ?? "",
provider: currentModelProvider ?? "",
},
undefined,
{
messageCount: telemetry.getMessageCount(),
toolCallCount: telemetry.getToolCallCount(),
exitReason: "exit_command",
},
);
} catch {
// Non-critical, don't fail the exit
}
// Flush telemetry before exit
await telemetry.flush();
@@ -5501,7 +5524,13 @@ export default function App({
setTimeout(() => {
process.exit(0);
}, 100);
}, [runEndHooks]);
}, [
runEndHooks,
agentId,
projectDirectory,
currentModelLabel,
currentModelProvider,
]);
// Handler when user presses UP/ESC to load queue into input for editing
const handleEnterQueueEditMode = useCallback(() => {
@@ -7369,6 +7398,28 @@ export default function App({
const stats = sessionStatsRef.current.getSnapshot();
telemetry.trackSessionEnd(stats, "logout");
// Record session to local history file
try {
recordSessionEnd(
agentId,
telemetry.getSessionId(),
stats,
{
project: projectDirectory,
model: currentModelLabel ?? "",
provider: currentModelProvider ?? "",
},
undefined,
{
messageCount: telemetry.getMessageCount(),
toolCallCount: telemetry.getToolCallCount(),
exitReason: "logout",
},
);
} catch {
// Non-critical, don't fail the exit
}
// Flush telemetry before exit
await telemetry.flush();