97 lines
1.9 KiB
TypeScript
97 lines
1.9 KiB
TypeScript
export type RateLimitBucket = {
|
|
limitId: string;
|
|
limitName: string | null;
|
|
usedPercent: number;
|
|
windowDurationMins: number | null;
|
|
resetsAt: number | null;
|
|
secondaryUsedPercent: number | null;
|
|
secondaryResetsAt: number | null;
|
|
reachedType: string | null;
|
|
};
|
|
|
|
export type LiveStatus = {
|
|
state: "online" | "fallback" | "offline" | string;
|
|
detail: string | null;
|
|
};
|
|
|
|
export type TokenBreakdown = {
|
|
input: number;
|
|
output: number;
|
|
cached: number;
|
|
reasoning: number;
|
|
tool: number;
|
|
responses: number;
|
|
};
|
|
|
|
export type ThreadUsage = {
|
|
id: string;
|
|
title: string;
|
|
tokensUsed: number;
|
|
model: string | null;
|
|
reasoningEffort: string | null;
|
|
updatedAt: number;
|
|
cwd: string | null;
|
|
};
|
|
|
|
export type ModelUsage = {
|
|
model: string;
|
|
tokens: number;
|
|
threads: number;
|
|
};
|
|
|
|
export type UsageSummary = {
|
|
totalTokens: number;
|
|
todayTokens: number;
|
|
weekTokens: number;
|
|
threadCount: number;
|
|
todayThreadCount: number;
|
|
weekThreadCount: number;
|
|
currentThread: ThreadUsage | null;
|
|
recentThreads: ThreadUsage[];
|
|
modelBreakdown: ModelUsage[];
|
|
tokenBreakdown: TokenBreakdown;
|
|
sourcePath: string | null;
|
|
error: string | null;
|
|
};
|
|
|
|
export type MonitorSnapshot = {
|
|
source: string;
|
|
fetchedAt: number;
|
|
liveStatus: LiveStatus;
|
|
buckets: RateLimitBucket[];
|
|
usageSummary: UsageSummary;
|
|
currentThread: ThreadUsage | null;
|
|
message: string | null;
|
|
};
|
|
|
|
export type UsagePoint = {
|
|
label: string;
|
|
tokens: number;
|
|
threads: number;
|
|
};
|
|
|
|
export type UsageHistory = {
|
|
range: string;
|
|
points: UsagePoint[];
|
|
};
|
|
|
|
export type BadgePosition = {
|
|
x: number;
|
|
y: number;
|
|
};
|
|
|
|
export type AppSettings = {
|
|
codexExecutable: string | null;
|
|
codexHome: string;
|
|
refreshIntervalSecs: number;
|
|
badgeVisible: boolean;
|
|
badgePosition: BadgePosition;
|
|
privacyMode: boolean;
|
|
thresholds: {
|
|
warning: number;
|
|
critical: number;
|
|
exhausted: number;
|
|
};
|
|
notificationsMutedUntil: number | null;
|
|
};
|