updated /stats to use new slash command arch (#4146)

This commit is contained in:
Harold Mciver
2025-07-15 16:10:04 -04:00
committed by GitHub
parent 8d9dc44b71
commit 03b3917f62
6 changed files with 163 additions and 105 deletions

View File

@@ -0,0 +1,63 @@
/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import { MessageType, HistoryItemStats } from '../types.js';
import { formatDuration } from '../utils/formatters.js';
import { type CommandContext, type SlashCommand } from './types.js';
export const statsCommand: SlashCommand = {
name: 'stats',
altName: 'usage',
description: 'check session stats. Usage: /stats [model|tools]',
action: (context: CommandContext) => {
const now = new Date();
const { sessionStartTime } = context.session.stats;
if (!sessionStartTime) {
context.ui.addItem(
{
type: MessageType.ERROR,
text: 'Session start time is unavailable, cannot calculate stats.',
},
Date.now(),
);
return;
}
const wallDuration = now.getTime() - sessionStartTime.getTime();
const statsItem: HistoryItemStats = {
type: MessageType.STATS,
duration: formatDuration(wallDuration),
};
context.ui.addItem(statsItem, Date.now());
},
subCommands: [
{
name: 'model',
description: 'Show model-specific usage statistics.',
action: (context: CommandContext) => {
context.ui.addItem(
{
type: MessageType.MODEL_STATS,
},
Date.now(),
);
},
},
{
name: 'tools',
description: 'Show tool-specific usage statistics.',
action: (context: CommandContext) => {
context.ui.addItem(
{
type: MessageType.TOOL_STATS,
},
Date.now(),
);
},
},
],
};