export type PresetName = "editorial" | "minimal" | "classic"; export type ActivityState = "ready" | "working" | "warning" | "error"; export type SegmentId = "brand" | "activity" | "metrics" | "context" | "model" | "git" | "statuses" | "menu"; export type Ornament = "none" | "restrained"; export interface BarConfig { preset: PresetName; shortcut: string; segments: SegmentId[]; ornament: Ornament; contextWarning: number; contextDanger: number; currencyDecimals: number; showExtensionStatuses: boolean; showSessionActions: boolean; } export interface BarMetrics { usageAvailable: boolean; costAvailable: boolean; input: number; output: number; cacheRead: number; cacheWrite: number; cacheHitPercent?: number; cost: number; subscription: boolean; contextTokens: number | null; contextWindow: number; contextPercent: number | null; autoCompact: boolean | null; } export interface BarState { activity: ActivityState; workingLabel?: string; modelId?: string; provider?: string; thinkingLevel?: string; branch?: string; dirty: boolean; metrics: BarMetrics; extensionStatuses: readonly string[]; } export const DEFAULT_CONFIG: BarConfig = { preset: "editorial", shortcut: "alt+a", segments: ["brand", "activity", "metrics", "context", "model", "git", "statuses", "menu"], ornament: "restrained", contextWarning: 70, contextDanger: 90, currencyDecimals: 3, showExtensionStatuses: true, showSessionActions: true, };