返回 DeepSeek-Reasonix
statusBarItems.ts
根目录 / desktop / frontend / src / lib / statusBarItems.ts
1 export const STATUS_BAR_ITEM_IDS = [
2 "workspace",
3 "cache",
4 "cache_avg",
5 "session_tokens",
6 "turn_tokens",
7 "turn_tps",
8 "turn_output_tokens",
9 "turn_cache_tokens",
10 "turn_cost",
11 "session_turns",
12 "context",
13 "compact",
14 "cost",
15 "balance",
16 ] as const;
17
18 export type StatusBarItemId = typeof STATUS_BAR_ITEM_IDS[number];
19
20 export const DEFAULT_STATUS_BAR_ITEMS: StatusBarItemId[] = [...STATUS_BAR_ITEM_IDS];
21
22 const statusBarItemSet = new Set<string>(STATUS_BAR_ITEM_IDS);
23
24 export function normalizeStatusBarItems(items: readonly string[] | null | undefined): StatusBarItemId[] {
25 const out: StatusBarItemId[] = [];
26 const seen = new Set<string>();
27 let removedModel = false;
28 for (const raw of items ?? []) {
29 const value = String(raw ?? "").trim();
30 if (value === "model") removedModel = true;
31 // Older preferences stored workspace and branch independently. Keep their
32 // first configured position while rendering one combined workspace item.
33 const id = value === "git_branch" ? "workspace" : value;
34 if (!statusBarItemSet.has(id) || seen.has(id)) continue;
35 out.push(id as StatusBarItemId);
36 seen.add(id);
37 }
38 return out.length > 0 ? out : removedModel ? ["workspace"] : [...DEFAULT_STATUS_BAR_ITEMS];
39 }
40
40 lines TYPESCRIPT