MCPcopy Create free account
hub / github.com/Dimillian/CodexMonitor / buildHomeUsageViewModel

Function buildHomeUsageViewModel

src/features/home/homeUsageViewModel.ts:33–293  ·  view source on GitHub ↗
({
  accountInfo,
  accountRateLimits,
  localUsageSnapshot,
  usageMetric,
  usageShowRemaining,
}: {
  accountInfo: AccountSnapshot | null;
  accountRateLimits: RateLimitSnapshot | null;
  localUsageSnapshot: LocalUsageSnapshot | null;
  usageMetric: UsageMetric;
  usageShowRemaining: boolean;
})

Source from the content-addressed store, hash-verified

31};
32
33export function buildHomeUsageViewModel({
34 accountInfo,
35 accountRateLimits,
36 localUsageSnapshot,
37 usageMetric,
38 usageShowRemaining,
39}: {
40 accountInfo: AccountSnapshot | null;
41 accountRateLimits: RateLimitSnapshot | null;
42 localUsageSnapshot: LocalUsageSnapshot | null;
43 usageMetric: UsageMetric;
44 usageShowRemaining: boolean;
45}): HomeUsageViewModel {
46 const usageTotals = localUsageSnapshot?.totals ?? null;
47 const usageDays = localUsageSnapshot?.days ?? [];
48 const latestUsageDay = usageDays[usageDays.length - 1] ?? null;
49 const last7Days = usageDays.slice(-7);
50 const last7Tokens = last7Days.reduce((total, day) => total + day.totalTokens, 0);
51 const last7Input = last7Days.reduce((total, day) => total + day.inputTokens, 0);
52 const last7Cached = last7Days.reduce(
53 (total, day) => total + day.cachedInputTokens,
54 0,
55 );
56 const last7AgentMs = last7Days.reduce(
57 (total, day) => total + (day.agentTimeMs ?? 0),
58 0,
59 );
60 const last30AgentMs = usageDays.reduce(
61 (total, day) => total + (day.agentTimeMs ?? 0),
62 0,
63 );
64 const averageDailyAgentMs =
65 last7Days.length > 0 ? Math.round(last7AgentMs / last7Days.length) : 0;
66 const last7AgentRuns = last7Days.reduce(
67 (total, day) => total + (day.agentRuns ?? 0),
68 0,
69 );
70 const last30AgentRuns = usageDays.reduce(
71 (total, day) => total + (day.agentRuns ?? 0),
72 0,
73 );
74 const averageTokensPerRun =
75 last7AgentRuns > 0 ? Math.round(last7Tokens / last7AgentRuns) : null;
76 const averageRunDurationMs =
77 last7AgentRuns > 0 ? Math.round(last7AgentMs / last7AgentRuns) : null;
78 const last7ActiveDays = last7Days.filter(isUsageDayActive).length;
79 const last30ActiveDays = usageDays.filter(isUsageDayActive).length;
80 const averageActiveDayAgentMs =
81 last7ActiveDays > 0 ? Math.round(last7AgentMs / last7ActiveDays) : null;
82 const peakAgentDay = usageDays.reduce<
83 | { day: string; agentTimeMs: number }
84 | null
85 >((best, day) => {
86 const value = day.agentTimeMs ?? 0;
87 if (value <= 0) {
88 return best;
89 }
90 if (!best || value > best.agentTimeMs) {

Callers 1

HomeUsageSectionFunction · 0.90

Calls 13

isUsageDayActiveFunction · 0.90
formatCompactNumberFunction · 0.90
formatDayLabelFunction · 0.90
formatCountFunction · 0.90
formatDurationCompactFunction · 0.90
formatDurationFunction · 0.90
formatDayCountFunction · 0.90
getUsageLabelsFunction · 0.90
formatPlanTypeFunction · 0.90
formatCreditsBalanceFunction · 0.90
buildWindowCaptionFunction · 0.90
formatAccountTypeLabelFunction · 0.90

Tested by

no test coverage detected