@tokscale/cli 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/cli.js +11 -3
  2. package/dist/cli.js.map +1 -1
  3. package/dist/native.d.ts.map +1 -1
  4. package/dist/native.js +3 -2
  5. package/dist/native.js.map +1 -1
  6. package/dist/tui/{App.jsx → App.js} +3 -35
  7. package/dist/tui/{App.jsx.map → App.js.map} +1 -1
  8. package/dist/tui/components/{BarChart.jsx → BarChart.js} +14 -37
  9. package/dist/tui/components/{BarChart.jsx.map → BarChart.js.map} +1 -1
  10. package/dist/tui/components/{DailyView.jsx → DailyView.js} +7 -23
  11. package/dist/tui/components/{DailyView.jsx.map → DailyView.js.map} +1 -1
  12. package/dist/tui/components/DateBreakdownPanel.js +36 -0
  13. package/dist/tui/components/DateBreakdownPanel.js.map +1 -0
  14. package/dist/tui/components/Footer.js +87 -0
  15. package/dist/tui/components/Footer.js.map +1 -0
  16. package/dist/tui/components/Header.js +20 -0
  17. package/dist/tui/components/Header.js.map +1 -0
  18. package/dist/tui/components/Legend.js +16 -0
  19. package/dist/tui/components/Legend.js.map +1 -0
  20. package/dist/tui/components/{LoadingSpinner.jsx → LoadingSpinner.js} +6 -12
  21. package/dist/tui/components/{LoadingSpinner.jsx.map → LoadingSpinner.js.map} +1 -1
  22. package/dist/tui/components/ModelRow.js +15 -0
  23. package/dist/tui/components/ModelRow.js.map +1 -0
  24. package/dist/tui/components/{ModelView.jsx → ModelView.js} +7 -24
  25. package/dist/tui/components/{ModelView.jsx.map → ModelView.js.map} +1 -1
  26. package/dist/tui/components/{OverviewView.jsx → OverviewView.js} +11 -35
  27. package/dist/tui/components/{OverviewView.jsx.map → OverviewView.js.map} +1 -1
  28. package/dist/tui/components/StatsView.js +86 -0
  29. package/dist/tui/components/StatsView.js.map +1 -0
  30. package/dist/tui/components/TokenBreakdown.js +10 -0
  31. package/dist/tui/components/TokenBreakdown.js.map +1 -0
  32. package/dist/tui/{index.jsx → index.js} +3 -2
  33. package/dist/tui/{index.jsx.map → index.js.map} +1 -1
  34. package/package.json +6 -4
  35. package/src/tui/App.tsx +339 -0
  36. package/src/tui/components/BarChart.tsx +198 -0
  37. package/src/tui/components/DailyView.tsx +113 -0
  38. package/src/tui/components/DateBreakdownPanel.tsx +79 -0
  39. package/src/tui/components/Footer.tsx +225 -0
  40. package/src/tui/components/Header.tsx +68 -0
  41. package/src/tui/components/Legend.tsx +39 -0
  42. package/src/tui/components/LoadingSpinner.tsx +82 -0
  43. package/src/tui/components/ModelRow.tsx +47 -0
  44. package/src/tui/components/ModelView.tsx +145 -0
  45. package/src/tui/components/OverviewView.tsx +108 -0
  46. package/{dist/tui/components/StatsView.jsx → src/tui/components/StatsView.tsx} +128 -83
  47. package/{dist/tui/components/TokenBreakdown.jsx → src/tui/components/TokenBreakdown.tsx} +28 -9
  48. package/src/tui/components/index.ts +15 -0
  49. package/src/tui/config/settings.ts +130 -0
  50. package/src/tui/config/themes.ts +115 -0
  51. package/src/tui/hooks/useData.ts +518 -0
  52. package/src/tui/index.tsx +44 -0
  53. package/src/tui/opentui.d.ts +137 -0
  54. package/src/tui/types/index.ts +165 -0
  55. package/src/tui/utils/cleanup.ts +65 -0
  56. package/src/tui/utils/colors.ts +65 -0
  57. package/src/tui/utils/format.ts +36 -0
  58. package/src/tui/utils/responsive.ts +8 -0
  59. package/dist/tui/components/DateBreakdownPanel.jsx +0 -61
  60. package/dist/tui/components/DateBreakdownPanel.jsx.map +0 -1
  61. package/dist/tui/components/Footer.jsx +0 -158
  62. package/dist/tui/components/Footer.jsx.map +0 -1
  63. package/dist/tui/components/Header.jsx +0 -38
  64. package/dist/tui/components/Header.jsx.map +0 -1
  65. package/dist/tui/components/Legend.jsx +0 -27
  66. package/dist/tui/components/Legend.jsx.map +0 -1
  67. package/dist/tui/components/ModelRow.jsx +0 -28
  68. package/dist/tui/components/ModelRow.jsx.map +0 -1
  69. package/dist/tui/components/StatsView.jsx.map +0 -1
  70. package/dist/tui/components/TokenBreakdown.jsx.map +0 -1
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
2
+ import { For, createMemo } from "solid-js";
3
+ import { getSourceColor } from "../utils/colors.js";
4
+ import { formatTokens, formatCost } from "../utils/format.js";
5
+ import { ModelRow } from "./ModelRow.js";
6
+ function formatDateDisplay(dateStr) {
7
+ const date = new Date(dateStr + "T00:00:00");
8
+ return date.toLocaleDateString("en-US", { weekday: "short", month: "short", day: "numeric", year: "numeric" });
9
+ }
10
+ export function DateBreakdownPanel(props) {
11
+ const groupedBySource = createMemo(() => {
12
+ if (!props.breakdown?.models)
13
+ return new Map();
14
+ const groups = new Map();
15
+ for (const model of props.breakdown.models) {
16
+ const existing = groups.get(model.source) || [];
17
+ existing.push(model);
18
+ groups.set(model.source, existing);
19
+ }
20
+ for (const [, models] of groups) {
21
+ models.sort((a, b) => {
22
+ const totalA = a.tokens.input + a.tokens.output + (a.tokens.cacheRead || 0) + (a.tokens.cacheWrite || 0);
23
+ const totalB = b.tokens.input + b.tokens.output + (b.tokens.cacheRead || 0) + (b.tokens.cacheWrite || 0);
24
+ return totalB - totalA;
25
+ });
26
+ }
27
+ return groups;
28
+ });
29
+ return (_jsxs("box", { flexDirection: "column", marginTop: 1, paddingX: 1, children: [_jsxs("box", { flexDirection: "row", justifyContent: "space-between", children: [_jsx("text", { bold: true, fg: "white", children: formatDateDisplay(props.breakdown.date) }), _jsxs("box", { flexDirection: "row", gap: 2, children: [_jsx("text", { fg: "cyan", children: formatTokens(props.breakdown.totalTokens) }), _jsx("text", { fg: "green", bold: true, children: formatCost(props.breakdown.cost) })] })] }), _jsx("box", { flexDirection: "column", marginTop: 1, children: _jsx(For, { each: Array.from(groupedBySource().entries()), children: ([source, models]) => (_jsxs("box", { flexDirection: "column", children: [_jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { fg: getSourceColor(source), bold: true, children: `● ${source.toUpperCase()}` }), _jsx("text", { dim: true, children: `(${models.length} model${models.length > 1 ? "s" : ""})` })] }), _jsx(For, { each: models, children: (model) => (_jsx(ModelRow, { modelId: model.modelId, tokens: {
30
+ input: model.tokens.input,
31
+ output: model.tokens.output,
32
+ cacheRead: model.tokens.cacheRead,
33
+ cacheWrite: model.tokens.cacheWrite,
34
+ }, compact: props.isNarrow, indent: 2 })) })] })) }) }), _jsx("box", { flexDirection: "row", marginTop: 1, children: _jsx("text", { dim: true, children: "Click another day or same day to close" }) })] }));
35
+ }
36
+ //# sourceMappingURL=DateBreakdownPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateBreakdownPanel.js","sourceRoot":"","sources":["../../../src/tui/components/DateBreakdownPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@opentui/solid/jsx-runtime";
2
+ import { Show, createSignal, onMount, onCleanup } from "solid-js";
3
+ import { getPalette } from "../config/themes.js";
4
+ import { formatTokens } from "../utils/format.js";
5
+ import { isVeryNarrow } from "../utils/responsive.js";
6
+ function formatTimeAgo(timestamp) {
7
+ const seconds = Math.floor((Date.now() - timestamp) / 1000);
8
+ if (seconds < 60)
9
+ return `${seconds}s ago`;
10
+ const minutes = Math.floor(seconds / 60);
11
+ if (minutes < 60)
12
+ return `${minutes}m ago`;
13
+ const hours = Math.floor(minutes / 60);
14
+ if (hours < 24)
15
+ return `${hours}h ago`;
16
+ const days = Math.floor(hours / 24);
17
+ return `${days}d ago`;
18
+ }
19
+ export function Footer(props) {
20
+ const palette = () => getPalette(props.colorPalette);
21
+ const isVeryNarrowTerminal = () => isVeryNarrow(props.width);
22
+ const showScrollInfo = () => props.activeTab === "overview" &&
23
+ props.totalItems &&
24
+ props.scrollStart !== undefined &&
25
+ props.scrollEnd !== undefined;
26
+ const totals = () => props.totals || { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, reasoning: 0, total: 0, cost: 0 };
27
+ return (_jsxs("box", { flexDirection: "column", paddingX: 1, children: [_jsxs("box", { flexDirection: "row", justifyContent: "space-between", children: [_jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx(SourceBadge, { name: isVeryNarrowTerminal() ? "1" : "1:OC", source: "opencode", enabled: props.enabledSources.has("opencode"), onToggle: props.onSourceToggle }), _jsx(SourceBadge, { name: isVeryNarrowTerminal() ? "2" : "2:CC", source: "claude", enabled: props.enabledSources.has("claude"), onToggle: props.onSourceToggle }), _jsx(SourceBadge, { name: isVeryNarrowTerminal() ? "3" : "3:CX", source: "codex", enabled: props.enabledSources.has("codex"), onToggle: props.onSourceToggle }), _jsx(SourceBadge, { name: isVeryNarrowTerminal() ? "4" : "4:CR", source: "cursor", enabled: props.enabledSources.has("cursor"), onToggle: props.onSourceToggle }), _jsx(SourceBadge, { name: isVeryNarrowTerminal() ? "5" : "5:GM", source: "gemini", enabled: props.enabledSources.has("gemini"), onToggle: props.onSourceToggle }), _jsxs(Show, { when: !isVeryNarrowTerminal(), children: [_jsx("text", { dim: true, children: "|" }), _jsx(SortButton, { label: "Cost", sortType: "cost", active: props.sortBy === "cost", onClick: props.onSortChange }), _jsx(SortButton, { label: "Tokens", sortType: "tokens", active: props.sortBy === "tokens", onClick: props.onSortChange })] }), _jsxs(Show, { when: showScrollInfo() && !isVeryNarrowTerminal(), children: [_jsx("text", { dim: true, children: "|" }), _jsx("text", { dim: true, children: `↓ ${props.scrollStart + 1}-${props.scrollEnd} of ${props.totalItems}` })] })] }), _jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { fg: "cyan", children: formatTokens(totals().total) }), _jsx("text", { dim: true, children: "tokens" }), _jsx("text", { dim: true, children: "|" }), _jsx("text", { fg: "green", bold: true, children: `$${totals().cost.toFixed(2)}` }), _jsx(Show, { when: !isVeryNarrowTerminal(), children: _jsxs("text", { dim: true, children: ["(", props.modelCount, " models)"] }) })] })] }), _jsx("box", { flexDirection: "row", gap: 1, children: _jsx(Show, { when: props.statusMessage, fallback: _jsxs(Show, { when: isVeryNarrowTerminal(), fallback: _jsxs(_Fragment, { children: [_jsx("text", { dim: true, children: "\u2191\u2193 scroll \u2022 \u2190\u2192/tab view \u2022 y copy \u2022" }), _jsx("box", { onMouseDown: props.onPaletteChange, children: _jsx("text", { fg: "magenta", children: `[p:${palette().name}]` }) }), _jsx("box", { onMouseDown: props.onRefresh, children: _jsx("text", { fg: "yellow", children: "[r:refresh]" }) }), _jsx("text", { dim: true, children: "\u2022 e export \u2022 q quit" })] }), children: [_jsx("text", { dim: true, children: "\u2191\u2193\u2022\u2190\u2192\u2022y\u2022" }), _jsx("box", { onMouseDown: props.onPaletteChange, children: _jsx("text", { fg: "magenta", children: "[p]" }) }), _jsx("box", { onMouseDown: props.onRefresh, children: _jsx("text", { fg: "yellow", children: "[r]" }) }), _jsx("text", { dim: true, children: "\u2022e\u2022q" })] }), children: _jsx("text", { fg: "green", bold: true, children: props.statusMessage }) }) }), _jsx(Show, { when: props.isRefreshing, children: _jsx(LoadingStatusLine, { phase: props.loadingPhase }) }), _jsx(Show, { when: !props.isRefreshing && props.cacheTimestamp, children: _jsx("box", { flexDirection: "row", children: _jsx("text", { dim: true, children: `Last updated: ${formatTimeAgo(props.cacheTimestamp)}` }) }) })] }));
28
+ }
29
+ function SourceBadge(props) {
30
+ const handleClick = () => props.onToggle?.(props.source);
31
+ return (_jsx("box", { onMouseDown: handleClick, children: _jsx("text", { fg: props.enabled ? "green" : "gray", children: `[${props.enabled ? "●" : "○"}${props.name}]` }) }));
32
+ }
33
+ function SortButton(props) {
34
+ const handleClick = () => props.onClick?.(props.sortType);
35
+ return (_jsx("box", { onMouseDown: handleClick, children: _jsx("text", { fg: props.active ? "white" : "gray", bold: props.active, children: props.label }) }));
36
+ }
37
+ const SPINNER_COLORS = ["#00FFFF", "#00D7D7", "#00AFAF", "#008787", "#666666", "#666666"];
38
+ const SPINNER_WIDTH = 6;
39
+ const SPINNER_HOLD_START = 20;
40
+ const SPINNER_HOLD_END = 6;
41
+ const SPINNER_TRAIL = 3;
42
+ const SPINNER_INTERVAL = 40;
43
+ const PHASE_MESSAGES = {
44
+ "idle": "Initializing...",
45
+ "loading-pricing": "Loading pricing data...",
46
+ "syncing-cursor": "Syncing Cursor data...",
47
+ "parsing-sources": "Parsing session files...",
48
+ "finalizing-report": "Finalizing report...",
49
+ "complete": "Complete",
50
+ };
51
+ function LoadingStatusLine(props) {
52
+ const [frame, setFrame] = createSignal(0);
53
+ onMount(() => {
54
+ const id = setInterval(() => setFrame(f => f + 1), SPINNER_INTERVAL);
55
+ onCleanup(() => clearInterval(id));
56
+ });
57
+ const getSpinnerState = () => {
58
+ const forwardFrames = SPINNER_WIDTH;
59
+ const backwardFrames = SPINNER_WIDTH - 1;
60
+ const totalCycle = forwardFrames + SPINNER_HOLD_END + backwardFrames + SPINNER_HOLD_START;
61
+ const normalized = frame() % totalCycle;
62
+ if (normalized < forwardFrames) {
63
+ return { position: normalized, forward: true };
64
+ }
65
+ else if (normalized < forwardFrames + SPINNER_HOLD_END) {
66
+ return { position: SPINNER_WIDTH - 1, forward: true };
67
+ }
68
+ else if (normalized < forwardFrames + SPINNER_HOLD_END + backwardFrames) {
69
+ return { position: SPINNER_WIDTH - 2 - (normalized - forwardFrames - SPINNER_HOLD_END), forward: false };
70
+ }
71
+ return { position: 0, forward: false };
72
+ };
73
+ const getCharProps = (index) => {
74
+ const { position, forward } = getSpinnerState();
75
+ const distance = forward ? position - index : index - position;
76
+ if (distance >= 0 && distance < SPINNER_TRAIL) {
77
+ return { char: "■", color: SPINNER_COLORS[distance] };
78
+ }
79
+ return { char: "⬝", color: "#444444" };
80
+ };
81
+ const message = () => props.phase ? PHASE_MESSAGES[props.phase] : "Refreshing...";
82
+ return (_jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("box", { flexDirection: "row", gap: 0, children: Array.from({ length: SPINNER_WIDTH }, (_, i) => {
83
+ const { char, color } = getCharProps(i);
84
+ return _jsx("text", { fg: color, children: char });
85
+ }) }), _jsx("text", { dim: true, children: message() })] }));
86
+ }
87
+ //# sourceMappingURL=Footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../../src/tui/components/Footer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
2
+ import { Show } from "solid-js";
3
+ import { exec } from "child_process";
4
+ import { isNarrow, isVeryNarrow } from "../utils/responsive.js";
5
+ const REPO_URL = "https://github.com/junhoyeo/tokscale";
6
+ function openUrl(url) {
7
+ const cmd = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
8
+ exec(`${cmd} ${url}`);
9
+ }
10
+ export function Header(props) {
11
+ const isNarrowTerminal = () => isNarrow(props.width);
12
+ const isVeryNarrowTerminal = () => isVeryNarrow(props.width);
13
+ const getTabName = (fullName, shortName) => isVeryNarrowTerminal() ? shortName : fullName;
14
+ return (_jsxs("box", { flexDirection: "row", paddingX: 1, paddingY: 0, justifyContent: "space-between", children: [_jsxs("box", { flexDirection: "row", gap: isVeryNarrowTerminal() ? 1 : 2, children: [_jsx(Tab, { name: getTabName("Overview", "Ovw"), tabId: "overview", active: props.activeTab === "overview", onClick: props.onTabClick }), _jsx(Tab, { name: getTabName("Models", "Mod"), tabId: "model", active: props.activeTab === "model", onClick: props.onTabClick }), _jsx(Tab, { name: getTabName("Daily", "Day"), tabId: "daily", active: props.activeTab === "daily", onClick: props.onTabClick }), _jsx(Tab, { name: getTabName("Stats", "Sta"), tabId: "stats", active: props.activeTab === "stats", onClick: props.onTabClick })] }), _jsx(Show, { when: !isNarrowTerminal(), children: _jsxs("box", { flexDirection: "row", onMouseDown: () => openUrl(REPO_URL), children: [_jsx("text", { fg: "cyan", bold: true, children: "tokscale" }), _jsx("text", { fg: "#666666", children: " | GitHub" })] }) })] }));
15
+ }
16
+ function Tab(props) {
17
+ const handleClick = () => props.onClick?.(props.tabId);
18
+ return (_jsx(Show, { when: props.active, fallback: _jsx("box", { onMouseDown: handleClick, children: _jsx("text", { dim: true, children: props.name }) }), children: _jsx("box", { onMouseDown: handleClick, children: _jsx("text", { bg: "cyan", fg: "black", bold: true, children: ` ${props.name} ` }) }) }));
19
+ }
20
+ //# sourceMappingURL=Header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/tui/components/Header.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
2
+ import { For, Show } from "solid-js";
3
+ import { getModelColor } from "../utils/colors.js";
4
+ import { isNarrow, isVeryNarrow } from "../utils/responsive.js";
5
+ export function Legend(props) {
6
+ const isNarrowTerminal = () => isNarrow(props.width);
7
+ const isVeryNarrowTerminal = () => isVeryNarrow(props.width);
8
+ const maxModelNameWidth = () => isVeryNarrowTerminal() ? 12 : isNarrowTerminal() ? 18 : 30;
9
+ const truncateModelName = (name) => {
10
+ const max = maxModelNameWidth();
11
+ return name.length > max ? name.slice(0, max - 1) + "…" : name;
12
+ };
13
+ const models = () => props.models;
14
+ return (_jsx(Show, { when: models().length > 0, children: _jsx("box", { flexDirection: "row", gap: 1, flexWrap: "wrap", children: _jsx(For, { each: models(), children: (modelId, i) => (_jsxs("box", { flexDirection: "row", gap: 0, children: [_jsx("text", { fg: getModelColor(modelId), children: "\u25CF" }), _jsx("text", { children: ` ${truncateModelName(modelId)}` }), _jsx(Show, { when: i() < models().length - 1, children: _jsx("text", { dim: true, children: isVeryNarrowTerminal() ? " " : " ·" }) })] })) }) }) }));
15
+ }
16
+ //# sourceMappingURL=Legend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Legend.js","sourceRoot":"","sources":["../../../src/tui/components/Legend.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAOhE,MAAM,UAAU,MAAM,CAAC,KAAkB;IACvC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE7D,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE;QACzC,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IAElC,OAAO,CACL,KAAC,IAAI,IAAC,IAAI,EAAE,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,YAC7B,cAAK,aAAa,EAAC,KAAK,EAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAC,MAAM,YAC9C,KAAC,GAAG,IAAC,IAAI,EAAE,MAAM,EAAE,YAChB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CACf,eAAK,aAAa,EAAC,KAAK,EAAC,GAAG,EAAE,CAAC,aAC7B,eAAM,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,uBAAU,EAC1C,yBAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,GAAQ,EAC/C,KAAC,IAAI,IAAC,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,YACnC,eAAM,GAAG,kBAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAQ,GAClD,IACH,CACP,GACG,GACF,GACD,CACR,CAAC;AACJ,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
1
2
  import { createSignal, onMount, onCleanup } from "solid-js";
2
3
  const COLORS = ["#00FFFF", "#00D7D7", "#00AFAF", "#008787", "#666666", "#666666", "#666666", "#666666"];
3
4
  const WIDTH = 8;
@@ -47,16 +48,9 @@ export function LoadingSpinner(props) {
47
48
  }
48
49
  return { char: "⬝", color: "#444444" };
49
50
  };
50
- return (<box flexDirection="column" justifyContent="center" alignItems="center" flexGrow={1}>
51
- <box flexDirection="row" gap={0}>
52
- {Array.from({ length: WIDTH }, (_, i) => {
53
- const { char, color } = getCharProps(i);
54
- return <text fg={color}>{char}</text>;
55
- })}
56
- </box>
57
- <box marginTop={1}>
58
- <text dim>{displayMessage()}</text>
59
- </box>
60
- </box>);
51
+ return (_jsxs("box", { flexDirection: "column", justifyContent: "center", alignItems: "center", flexGrow: 1, children: [_jsx("box", { flexDirection: "row", gap: 0, children: Array.from({ length: WIDTH }, (_, i) => {
52
+ const { char, color } = getCharProps(i);
53
+ return _jsx("text", { fg: color, children: char });
54
+ }) }), _jsx("box", { marginTop: 1, children: _jsx("text", { dim: true, children: displayMessage() }) })] }));
61
55
  }
62
- //# sourceMappingURL=LoadingSpinner.jsx.map
56
+ //# sourceMappingURL=LoadingSpinner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingSpinner.jsx","sourceRoot":"","sources":["../../../src/tui/components/LoadingSpinner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG5D,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACxG,MAAM,KAAK,GAAG,CAAC,CAAC;AAChB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,QAAQ,GAAG,EAAE,CAAC;AAOpB,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,aAAa,GAAG,KAAK,CAAC;IAC5B,MAAM,cAAc,GAAG,KAAK,GAAG,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,aAAa,GAAG,QAAQ,GAAG,cAAc,GAAG,UAAU,CAAC;IAC1E,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC;IAEtC,IAAI,UAAU,GAAG,aAAa,EAAE,CAAC;QAC/B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;SAAM,IAAI,UAAU,GAAG,aAAa,GAAG,QAAQ,EAAE,CAAC;QACjD,OAAO,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;SAAM,IAAI,UAAU,GAAG,aAAa,GAAG,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClE,OAAO,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC3F,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,cAAc,GAAiC;IACnD,MAAM,EAAE,iBAAiB;IACzB,iBAAiB,EAAE,yBAAyB;IAC5C,gBAAgB,EAAE,wBAAwB;IAC1C,iBAAiB,EAAE,0BAA0B;IAC7C,mBAAmB,EAAE,sBAAsB;IAC3C,UAAU,EAAE,UAAU;CACvB,CAAC;AAOF,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,EAAE;QACX,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE;YAC1B,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,CAAC,EAAE,QAAQ,CAAC,CAAC;QACb,SAAS,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAE9G,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE;QACrC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC;QAE/D,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,YAAY,EAAE,CAAC;YAC7C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACzC,CAAC,CAAC;IAEF,OAAO,CACL,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAClF;MAAA,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC9B;QAAA,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CACJ;MAAA,EAAE,GAAG,CACL;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAChB;QAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,CACpC;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"LoadingSpinner.js","sourceRoot":"","sources":["../../../src/tui/components/LoadingSpinner.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
2
+ import { Show, createMemo } from "solid-js";
3
+ import { TokenBreakdown } from "./TokenBreakdown.js";
4
+ import { getModelColor } from "../utils/colors.js";
5
+ export function ModelRow(props) {
6
+ const color = () => getModelColor(props.modelId);
7
+ const bgColor = createMemo(() => props.isActive ? "blue" : undefined);
8
+ const truncateName = (name) => {
9
+ const max = props.maxNameWidth ?? 50;
10
+ return name.length > max ? name.slice(0, max - 1) + "…" : name;
11
+ };
12
+ const indentStr = () => " ".repeat(props.indent ?? 0);
13
+ return (_jsxs("box", { flexDirection: "column", children: [_jsxs("box", { flexDirection: "row", backgroundColor: bgColor(), children: [_jsx(Show, { when: props.indent, children: _jsx("text", { children: indentStr() }) }), _jsx("text", { fg: color(), bg: bgColor(), children: "\u25CF" }), _jsx("text", { fg: props.isActive ? "white" : undefined, bg: bgColor(), children: ` ${truncateName(props.modelId)}` }), _jsx(Show, { when: props.percentage !== undefined, children: _jsx("text", { dim: true, bg: bgColor(), children: ` (${props.percentage.toFixed(1)}%)` }) })] }), _jsx("box", { flexDirection: "row", children: _jsx(TokenBreakdown, { tokens: props.tokens, compact: props.compact, indent: (props.indent ?? 0) + 2 }) })] }));
14
+ }
15
+ //# sourceMappingURL=ModelRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelRow.js","sourceRoot":"","sources":["../../../src/tui/components/ModelRow.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,cAAc,EAA2B,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAYnD,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEtE,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAEtD,OAAO,CACL,eAAK,aAAa,EAAC,QAAQ,aACzB,eAAK,aAAa,EAAC,KAAK,EAAC,eAAe,EAAE,OAAO,EAAE,aACjD,KAAC,IAAI,IAAC,IAAI,EAAE,KAAK,CAAC,MAAM,YACtB,yBAAO,SAAS,EAAE,GAAQ,GACrB,EACP,eAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,uBAAU,EAC1C,eAAM,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,YAAG,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAQ,EACzG,KAAC,IAAI,IAAC,IAAI,EAAE,KAAK,CAAC,UAAU,KAAK,SAAS,YACxC,eAAM,GAAG,QAAC,EAAE,EAAE,OAAO,EAAE,YAAG,KAAK,KAAK,CAAC,UAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAQ,GAClE,IACH,EACN,cAAK,aAAa,EAAC,KAAK,YACtB,KAAC,cAAc,IACb,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,GAC/B,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
1
2
  import { For, createMemo } from "solid-js";
2
3
  import { getModelColor } from "../utils/colors.js";
3
4
  import { formatTokensCompact, formatCostFull } from "../utils/format.js";
@@ -84,28 +85,10 @@ export function ModelView(props) {
84
85
  }
85
86
  return `${row.displayName.padEnd(row.nameWidth)}${row.input.padStart(INPUT_COL_WIDTH)}${row.output.padStart(OUTPUT_COL_WIDTH)}${row.cache.padStart(CACHE_COL_WIDTH)}${row.total.padStart(TOTAL_COL_WIDTH)}`;
86
87
  };
87
- return (<box flexDirection="column">
88
- <box flexDirection="row">
89
- <text fg="cyan" bold>
90
- {renderHeader()}
91
- </text>
92
- </box>
93
-
94
- <For each={formattedRows()}>
95
- {(row, i) => {
96
- const isActive = createMemo(() => i() === props.selectedIndex());
97
- const rowBg = createMemo(() => isActive() ? "blue" : (i() % 2 === 1 ? STRIPE_BG : undefined));
98
- return (<box flexDirection="row">
99
- <text fg={getModelColor(row.entry.model)} bg={rowBg()}>●</text>
100
- <text bg={rowBg()} fg={isActive() ? "white" : undefined}>
101
- {renderRowData(row)}
102
- </text>
103
- <text fg="green" bg={rowBg()}>
104
- {row.cost.padStart(COST_COL_WIDTH)}
105
- </text>
106
- </box>);
107
- }}
108
- </For>
109
- </box>);
88
+ return (_jsxs("box", { flexDirection: "column", children: [_jsx("box", { flexDirection: "row", children: _jsx("text", { fg: "cyan", bold: true, children: renderHeader() }) }), _jsx(For, { each: formattedRows(), children: (row, i) => {
89
+ const isActive = createMemo(() => i() === props.selectedIndex());
90
+ const rowBg = createMemo(() => isActive() ? "blue" : (i() % 2 === 1 ? STRIPE_BG : undefined));
91
+ return (_jsxs("box", { flexDirection: "row", children: [_jsx("text", { fg: getModelColor(row.entry.model), bg: rowBg(), children: "\u25CF" }), _jsx("text", { bg: rowBg(), fg: isActive() ? "white" : undefined, children: renderRowData(row) }), _jsx("text", { fg: "green", bg: rowBg(), children: row.cost.padStart(COST_COL_WIDTH) })] }));
92
+ } })] }));
110
93
  }
111
- //# sourceMappingURL=ModelView.jsx.map
94
+ //# sourceMappingURL=ModelView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelView.jsx","sourceRoot":"","sources":["../../../src/tui/components/ModelView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModelView.js","sourceRoot":"","sources":["../../../src/tui/components/ModelView.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
1
2
  import { Show, For, createMemo } from "solid-js";
2
3
  import { BarChart } from "./BarChart.js";
3
4
  import { Legend } from "./Legend.js";
@@ -41,39 +42,14 @@ export function OverviewView(props) {
41
42
  const visibleModels = () => sortedModels().slice(props.scrollOffset(), props.scrollOffset() + itemsPerPage());
42
43
  const totalModels = () => sortedModels().length;
43
44
  const endIndex = () => Math.min(props.scrollOffset() + visibleModels().length, totalModels());
44
- return (<box flexDirection="column" gap={1}>
45
- <box flexDirection="column">
46
- <BarChart data={props.data.chartData} width={props.width - 4} height={chartHeight()}/>
47
- <Legend models={topModelsForLegend()} width={props.width}/>
48
- </box>
49
-
50
- <box flexDirection="column">
51
- <box flexDirection="row" justifyContent="space-between" marginBottom={0}>
52
- <text bold>{isVeryNarrowTerminal() ? "Top Models" : `Models by ${props.sortBy === "tokens" ? "Tokens" : "Cost"}`}</text>
53
- <box flexDirection="row">
54
- <text dim>{isVeryNarrowTerminal() ? "" : "Total: "}</text>
55
- <text fg="green">{formatCost(props.data.totalCost)}</text>
56
- </box>
57
- </box>
58
-
59
- <box flexDirection="column">
60
- <For each={visibleModels()}>
61
- {(model, i) => {
62
- const isActive = createMemo(() => i() === props.selectedIndex());
63
- return (<ModelRow modelId={model.modelId} tokens={{
64
- input: model.inputTokens,
65
- output: model.outputTokens,
66
- cacheRead: model.cacheReadTokens,
67
- cacheWrite: model.cacheWriteTokens,
68
- }} percentage={getPercentage(model)} isActive={isActive()} compact={isVeryNarrowTerminal()} maxNameWidth={maxModelNameWidth()}/>);
69
- }}
70
- </For>
71
- </box>
72
-
73
- <Show when={totalModels() > visibleModels().length}>
74
- <text dim>{`↓ ${props.scrollOffset() + 1}-${endIndex()} of ${totalModels()} models (↑↓ to scroll)`}</text>
75
- </Show>
76
- </box>
77
- </box>);
45
+ return (_jsxs("box", { flexDirection: "column", gap: 1, children: [_jsxs("box", { flexDirection: "column", children: [_jsx(BarChart, { data: props.data.chartData, width: props.width - 4, height: chartHeight() }), _jsx(Legend, { models: topModelsForLegend(), width: props.width })] }), _jsxs("box", { flexDirection: "column", children: [_jsxs("box", { flexDirection: "row", justifyContent: "space-between", marginBottom: 0, children: [_jsx("text", { bold: true, children: isVeryNarrowTerminal() ? "Top Models" : `Models by ${props.sortBy === "tokens" ? "Tokens" : "Cost"}` }), _jsxs("box", { flexDirection: "row", children: [_jsx("text", { dim: true, children: isVeryNarrowTerminal() ? "" : "Total: " }), _jsx("text", { fg: "green", children: formatCost(props.data.totalCost) })] })] }), _jsx("box", { flexDirection: "column", children: _jsx(For, { each: visibleModels(), children: (model, i) => {
46
+ const isActive = createMemo(() => i() === props.selectedIndex());
47
+ return (_jsx(ModelRow, { modelId: model.modelId, tokens: {
48
+ input: model.inputTokens,
49
+ output: model.outputTokens,
50
+ cacheRead: model.cacheReadTokens,
51
+ cacheWrite: model.cacheWriteTokens,
52
+ }, percentage: getPercentage(model), isActive: isActive(), compact: isVeryNarrowTerminal(), maxNameWidth: maxModelNameWidth() }));
53
+ } }) }), _jsx(Show, { when: totalModels() > visibleModels().length, children: _jsx("text", { dim: true, children: `↓ ${props.scrollOffset() + 1}-${endIndex()} of ${totalModels()} models (↑↓ to scroll)` }) })] })] }));
78
54
  }
79
- //# sourceMappingURL=OverviewView.jsx.map
55
+ //# sourceMappingURL=OverviewView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OverviewView.jsx","sourceRoot":"","sources":["../../../src/tui/components/OverviewView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OverviewView.js","sourceRoot":"","sources":["../../../src/tui/components/OverviewView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
2
+ import { For, Show, createMemo, createSignal } from "solid-js";
3
+ import { getPalette, getGradeColor } from "../config/themes.js";
4
+ import { getModelColor } from "../utils/colors.js";
5
+ import { formatTokens } from "../utils/format.js";
6
+ import { isNarrow } from "../utils/responsive.js";
7
+ import { DateBreakdownPanel } from "./DateBreakdownPanel.js";
8
+ const MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
9
+ const MONTHS_SHORT = ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"];
10
+ const DAYS = ["", "Mon", "", "Wed", "", "Fri", ""];
11
+ export function StatsView(props) {
12
+ const palette = () => getPalette(props.colorPalette);
13
+ const isNarrowTerminal = () => isNarrow(props.width);
14
+ const grid = () => props.data.contributionGrid;
15
+ const cellWidth = 2;
16
+ const [clickedCell, setClickedCell] = createSignal(null);
17
+ const selectedBreakdown = createMemo(() => {
18
+ const date = clickedCell();
19
+ if (!date)
20
+ return null;
21
+ if (!props.data.dailyBreakdowns)
22
+ return null;
23
+ if (!(props.data.dailyBreakdowns instanceof Map))
24
+ return null;
25
+ return props.data.dailyBreakdowns.get(date) || null;
26
+ });
27
+ const monthPositions = createMemo(() => {
28
+ const sundayRow = grid()[0] || [];
29
+ if (sundayRow.length === 0)
30
+ return [];
31
+ const positions = [];
32
+ let lastMonth = -1;
33
+ const monthNames = isNarrowTerminal() ? MONTHS_SHORT : MONTHS;
34
+ for (let weekIdx = 0; weekIdx < sundayRow.length; weekIdx++) {
35
+ const cell = sundayRow[weekIdx];
36
+ if (!cell.date)
37
+ continue;
38
+ const month = new Date(cell.date + "T00:00:00").getMonth();
39
+ if (month !== lastMonth) {
40
+ positions.push({ month: monthNames[month], weekIndex: weekIdx });
41
+ lastMonth = month;
42
+ }
43
+ }
44
+ return positions;
45
+ });
46
+ const totalWeeks = createMemo(() => (grid()[0] || []).length);
47
+ const monthLabelRow = createMemo(() => {
48
+ const weeks = totalWeeks();
49
+ const positions = monthPositions();
50
+ const chars = new Array(weeks * cellWidth).fill(" ");
51
+ for (const pos of positions) {
52
+ const startIdx = pos.weekIndex * cellWidth;
53
+ const monthChars = pos.month.split("");
54
+ for (let i = 0; i < monthChars.length && startIdx + i < chars.length; i++) {
55
+ chars[startIdx + i] = monthChars[i];
56
+ }
57
+ }
58
+ return chars.join("");
59
+ });
60
+ const dayLabelWidth = () => isNarrowTerminal() ? 2 : 4;
61
+ const isSelected = (cellDate) => cellDate && (clickedCell() === cellDate || props.selectedDate === cellDate);
62
+ const getCellColor = (level) => level === 0 ? "#666666" : getGradeColor(palette(), level);
63
+ return (_jsxs("box", { flexDirection: "column", gap: 1, children: [_jsxs("box", { flexDirection: "column", children: [_jsxs("box", { flexDirection: "row", children: [_jsx("text", { dim: true, children: " ".repeat(dayLabelWidth()) }), _jsx("text", { dim: true, children: monthLabelRow() })] }), _jsx("box", { onMouseDown: (e) => {
64
+ const labelW = dayLabelWidth();
65
+ const col = Math.floor((e.x - labelW) / cellWidth);
66
+ const row = e.y - 2;
67
+ const gridRows = grid().length;
68
+ if (row < 0 || row >= gridRows) {
69
+ return;
70
+ }
71
+ if (col < 0) {
72
+ return;
73
+ }
74
+ const rowData = grid()[row];
75
+ if (!rowData || col >= rowData.length) {
76
+ return;
77
+ }
78
+ const cell = rowData[col];
79
+ if (!cell?.date) {
80
+ return;
81
+ }
82
+ const newDate = clickedCell() === cell.date ? null : cell.date;
83
+ setClickedCell(newDate);
84
+ }, children: _jsx(For, { each: DAYS, children: (day, dayIndex) => (_jsxs("box", { flexDirection: "row", children: [_jsx("text", { dim: true, children: isNarrowTerminal() ? " " : day.padStart(3) + " " }), _jsx(For, { each: grid()[dayIndex()] || [], children: (cell) => (_jsx("text", { fg: isSelected(cell.date) ? "#ffffff" : getCellColor(cell.level), bg: isSelected(cell.date) ? getCellColor(cell.level) : undefined, children: isSelected(cell.date) ? "▓▓" : (cell.level === 0 ? "· " : "██") })) })] })) }) })] }), _jsxs("box", { flexDirection: "row", gap: 2, marginTop: 1, children: [_jsx("text", { dim: true, children: "Less" }), _jsx("box", { flexDirection: "row", gap: 0, children: _jsx(For, { each: [0, 1, 2, 3, 4], children: (level) => (_jsx("text", { fg: level === 0 ? "#666666" : getGradeColor(palette(), level), children: level === 0 ? "· " : "██" })) }) }), _jsx("text", { dim: true, children: "More" }), _jsxs(Show, { when: !isNarrowTerminal(), children: [_jsx("text", { dim: true, children: "|" }), _jsx("text", { dim: true, children: "Click on a day to see breakdown" })] })] }), _jsx(Show, { when: selectedBreakdown(), children: _jsx(DateBreakdownPanel, { breakdown: selectedBreakdown(), isNarrow: isNarrowTerminal() }) }), _jsxs(Show, { when: !selectedBreakdown(), children: [_jsx("box", { flexDirection: "column", marginTop: 1, children: _jsxs("box", { flexDirection: isNarrowTerminal() ? "column" : "row", gap: isNarrowTerminal() ? 0 : 4, children: [_jsxs("box", { flexDirection: "column", children: [_jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { dim: true, children: isNarrowTerminal() ? "Model:" : "Favorite model:" }), _jsx("text", { fg: getModelColor(props.data.stats.favoriteModel), children: props.data.stats.favoriteModel })] }), _jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { dim: true, children: "Sessions:" }), _jsx("text", { fg: "cyan", children: props.data.stats.sessions.toLocaleString() })] }), _jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { dim: true, children: isNarrowTerminal() ? "Streak:" : "Current streak:" }), _jsx("text", { fg: "cyan", children: `${props.data.stats.currentStreak} days` })] }), _jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { dim: true, children: isNarrowTerminal() ? "Active:" : "Active days:" }), _jsx("text", { fg: "cyan", children: `${props.data.stats.activeDays}/${props.data.stats.totalDays}` })] })] }), _jsxs("box", { flexDirection: "column", children: [_jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { dim: true, children: isNarrowTerminal() ? "Tokens:" : "Total tokens:" }), _jsx("text", { fg: "cyan", children: formatTokens(props.data.stats.totalTokens) })] }), _jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { dim: true, children: isNarrowTerminal() ? "Session:" : "Longest session:" }), _jsx("text", { fg: "cyan", children: props.data.stats.longestSession })] }), _jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { dim: true, children: isNarrowTerminal() ? "Max streak:" : "Longest streak:" }), _jsx("text", { fg: "cyan", children: `${props.data.stats.longestStreak} days` })] }), _jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { dim: true, children: isNarrowTerminal() ? "Peak:" : "Peak hour:" }), _jsx("text", { fg: "cyan", children: props.data.stats.peakHour })] })] })] }) }), _jsx(Show, { when: !isNarrowTerminal(), children: _jsx("box", { marginTop: 1, children: _jsx("text", { fg: "yellow", italic: true, children: `Your total spending is $${props.data.totalCost.toFixed(2)} on AI coding assistants!` }) }) }), _jsx(Show, { when: isNarrowTerminal(), children: _jsx("box", { marginTop: 1, children: _jsx("text", { fg: "yellow", italic: true, children: `Total: $${props.data.totalCost.toFixed(2)}` }) }) })] })] }));
85
+ }
86
+ //# sourceMappingURL=StatsView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatsView.js","sourceRoot":"","sources":["../../../src/tui/components/StatsView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
2
+ import { formatTokens, formatTokensCompact } from "../utils/format.js";
3
+ export function TokenBreakdown(props) {
4
+ const indentStr = () => " ".repeat(props.indent ?? 0);
5
+ if (props.compact) {
6
+ return (_jsxs("box", { flexDirection: "row", children: [_jsx("text", { fg: "#666666", children: indentStr() }), _jsx("text", { fg: "#AAAAAA", children: formatTokensCompact(props.tokens.input) }), _jsx("text", { fg: "#666666", children: "/" }), _jsx("text", { fg: "#AAAAAA", children: formatTokensCompact(props.tokens.output) }), _jsx("text", { fg: "#666666", children: "/" }), _jsx("text", { fg: "#AAAAAA", children: formatTokensCompact(props.tokens.cacheRead) }), _jsx("text", { fg: "#666666", children: "/" }), _jsx("text", { fg: "#AAAAAA", children: formatTokensCompact(props.tokens.cacheWrite) })] }));
7
+ }
8
+ return (_jsxs("box", { flexDirection: "row", children: [_jsx("text", { fg: "#666666", children: `${indentStr()}In: ` }), _jsx("text", { fg: "#AAAAAA", children: formatTokens(props.tokens.input) }), _jsx("text", { fg: "#666666", children: " · Out: " }), _jsx("text", { fg: "#AAAAAA", children: formatTokens(props.tokens.output) }), _jsx("text", { fg: "#666666", children: " · CR: " }), _jsx("text", { fg: "#AAAAAA", children: formatTokens(props.tokens.cacheRead) }), _jsx("text", { fg: "#666666", children: " · CW: " }), _jsx("text", { fg: "#AAAAAA", children: formatTokens(props.tokens.cacheWrite) })] }));
9
+ }
10
+ //# sourceMappingURL=TokenBreakdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenBreakdown.js","sourceRoot":"","sources":["../../../src/tui/components/TokenBreakdown.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAevE,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAEtD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CACL,eAAK,aAAa,EAAC,KAAK,aACtB,eAAM,EAAE,EAAC,SAAS,YAAE,SAAS,EAAE,GAAQ,EACvC,eAAM,EAAE,EAAC,SAAS,YAAE,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAQ,EACnE,eAAM,EAAE,EAAC,SAAS,YAAE,GAAG,GAAQ,EAC/B,eAAM,EAAE,EAAC,SAAS,YAAE,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAQ,EACpE,eAAM,EAAE,EAAC,SAAS,YAAE,GAAG,GAAQ,EAC/B,eAAM,EAAE,EAAC,SAAS,YAAE,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAQ,EACvE,eAAM,EAAE,EAAC,SAAS,YAAE,GAAG,GAAQ,EAC/B,eAAM,EAAE,EAAC,SAAS,YAAE,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAQ,IACpE,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,aAAa,EAAC,KAAK,aACtB,eAAM,EAAE,EAAC,SAAS,YAAE,GAAG,SAAS,EAAE,MAAM,GAAQ,EAChD,eAAM,EAAE,EAAC,SAAS,YAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAQ,EAC5D,eAAM,EAAE,EAAC,SAAS,YAAE,UAAU,GAAQ,EACtC,eAAM,EAAE,EAAC,SAAS,YAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAQ,EAC7D,eAAM,EAAE,EAAC,SAAS,YAAE,SAAS,GAAQ,EACrC,eAAM,EAAE,EAAC,SAAS,YAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAQ,EAChE,eAAM,EAAE,EAAC,SAAS,YAAE,SAAS,GAAQ,EACrC,eAAM,EAAE,EAAC,SAAS,YAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAQ,IAC7D,CACP,CAAC;AACJ,CAAC"}