@tokscale/cli 1.4.3 → 2.0.0

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 (188) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +128 -0
  4. package/dist/index.js.map +1 -0
  5. package/package.json +19 -26
  6. package/dist/auth.d.ts +0 -17
  7. package/dist/auth.d.ts.map +0 -1
  8. package/dist/auth.js +0 -162
  9. package/dist/auth.js.map +0 -1
  10. package/dist/cli.d.ts +0 -9
  11. package/dist/cli.d.ts.map +0 -1
  12. package/dist/cli.js +0 -1550
  13. package/dist/cli.js.map +0 -1
  14. package/dist/credentials.d.ts +0 -50
  15. package/dist/credentials.d.ts.map +0 -1
  16. package/dist/credentials.js +0 -151
  17. package/dist/credentials.js.map +0 -1
  18. package/dist/cursor.d.ts +0 -167
  19. package/dist/cursor.d.ts.map +0 -1
  20. package/dist/cursor.js +0 -906
  21. package/dist/cursor.js.map +0 -1
  22. package/dist/date-utils.d.ts +0 -10
  23. package/dist/date-utils.d.ts.map +0 -1
  24. package/dist/date-utils.js +0 -47
  25. package/dist/date-utils.js.map +0 -1
  26. package/dist/graph-types.d.ts +0 -142
  27. package/dist/graph-types.d.ts.map +0 -1
  28. package/dist/graph-types.js +0 -6
  29. package/dist/graph-types.js.map +0 -1
  30. package/dist/native-runner.d.ts +0 -11
  31. package/dist/native-runner.d.ts.map +0 -1
  32. package/dist/native-runner.js +0 -77
  33. package/dist/native-runner.js.map +0 -1
  34. package/dist/native.d.ts +0 -106
  35. package/dist/native.d.ts.map +0 -1
  36. package/dist/native.js +0 -302
  37. package/dist/native.js.map +0 -1
  38. package/dist/sessions/types.d.ts +0 -28
  39. package/dist/sessions/types.d.ts.map +0 -1
  40. package/dist/sessions/types.js +0 -27
  41. package/dist/sessions/types.js.map +0 -1
  42. package/dist/spinner.d.ts +0 -75
  43. package/dist/spinner.d.ts.map +0 -1
  44. package/dist/spinner.js +0 -203
  45. package/dist/spinner.js.map +0 -1
  46. package/dist/submit.d.ts +0 -23
  47. package/dist/submit.d.ts.map +0 -1
  48. package/dist/submit.js +0 -294
  49. package/dist/submit.js.map +0 -1
  50. package/dist/table.d.ts +0 -42
  51. package/dist/table.d.ts.map +0 -1
  52. package/dist/table.js +0 -181
  53. package/dist/table.js.map +0 -1
  54. package/dist/tui/App.d.ts +0 -4
  55. package/dist/tui/App.d.ts.map +0 -1
  56. package/dist/tui/App.js +0 -333
  57. package/dist/tui/App.js.map +0 -1
  58. package/dist/tui/components/BarChart.d.ts +0 -17
  59. package/dist/tui/components/BarChart.d.ts.map +0 -1
  60. package/dist/tui/components/BarChart.js +0 -146
  61. package/dist/tui/components/BarChart.js.map +0 -1
  62. package/dist/tui/components/DailyView.d.ts +0 -13
  63. package/dist/tui/components/DailyView.d.ts.map +0 -1
  64. package/dist/tui/components/DailyView.js +0 -86
  65. package/dist/tui/components/DailyView.js.map +0 -1
  66. package/dist/tui/components/DateBreakdownPanel.d.ts +0 -7
  67. package/dist/tui/components/DateBreakdownPanel.d.ts.map +0 -1
  68. package/dist/tui/components/DateBreakdownPanel.js +0 -36
  69. package/dist/tui/components/DateBreakdownPanel.js.map +0 -1
  70. package/dist/tui/components/Footer.d.ts +0 -28
  71. package/dist/tui/components/Footer.d.ts.map +0 -1
  72. package/dist/tui/components/Footer.js +0 -130
  73. package/dist/tui/components/Footer.js.map +0 -1
  74. package/dist/tui/components/Header.d.ts +0 -9
  75. package/dist/tui/components/Header.d.ts.map +0 -1
  76. package/dist/tui/components/Header.js +0 -20
  77. package/dist/tui/components/Header.js.map +0 -1
  78. package/dist/tui/components/Legend.d.ts +0 -7
  79. package/dist/tui/components/Legend.d.ts.map +0 -1
  80. package/dist/tui/components/Legend.js +0 -16
  81. package/dist/tui/components/Legend.js.map +0 -1
  82. package/dist/tui/components/LoadingSpinner.d.ts +0 -8
  83. package/dist/tui/components/LoadingSpinner.d.ts.map +0 -1
  84. package/dist/tui/components/LoadingSpinner.js +0 -55
  85. package/dist/tui/components/LoadingSpinner.js.map +0 -1
  86. package/dist/tui/components/ModelRow.d.ts +0 -13
  87. package/dist/tui/components/ModelRow.d.ts.map +0 -1
  88. package/dist/tui/components/ModelRow.js +0 -15
  89. package/dist/tui/components/ModelRow.js.map +0 -1
  90. package/dist/tui/components/ModelView.d.ts +0 -13
  91. package/dist/tui/components/ModelView.d.ts.map +0 -1
  92. package/dist/tui/components/ModelView.js +0 -96
  93. package/dist/tui/components/ModelView.js.map +0 -1
  94. package/dist/tui/components/OverviewView.d.ts +0 -14
  95. package/dist/tui/components/OverviewView.d.ts.map +0 -1
  96. package/dist/tui/components/OverviewView.js +0 -65
  97. package/dist/tui/components/OverviewView.js.map +0 -1
  98. package/dist/tui/components/StatsView.d.ts +0 -14
  99. package/dist/tui/components/StatsView.d.ts.map +0 -1
  100. package/dist/tui/components/StatsView.js +0 -102
  101. package/dist/tui/components/StatsView.js.map +0 -1
  102. package/dist/tui/components/TokenBreakdown.d.ts +0 -14
  103. package/dist/tui/components/TokenBreakdown.d.ts.map +0 -1
  104. package/dist/tui/components/TokenBreakdown.js +0 -10
  105. package/dist/tui/components/TokenBreakdown.js.map +0 -1
  106. package/dist/tui/components/index.d.ts +0 -16
  107. package/dist/tui/components/index.d.ts.map +0 -1
  108. package/dist/tui/components/index.js +0 -13
  109. package/dist/tui/components/index.js.map +0 -1
  110. package/dist/tui/config/settings.d.ts +0 -15
  111. package/dist/tui/config/settings.d.ts.map +0 -1
  112. package/dist/tui/config/settings.js +0 -147
  113. package/dist/tui/config/settings.js.map +0 -1
  114. package/dist/tui/config/themes.d.ts +0 -15
  115. package/dist/tui/config/themes.d.ts.map +0 -1
  116. package/dist/tui/config/themes.js +0 -82
  117. package/dist/tui/config/themes.js.map +0 -1
  118. package/dist/tui/hooks/useData.d.ts +0 -19
  119. package/dist/tui/hooks/useData.d.ts.map +0 -1
  120. package/dist/tui/hooks/useData.js +0 -468
  121. package/dist/tui/hooks/useData.js.map +0 -1
  122. package/dist/tui/index.d.ts +0 -4
  123. package/dist/tui/index.d.ts.map +0 -1
  124. package/dist/tui/index.js +0 -36
  125. package/dist/tui/index.js.map +0 -1
  126. package/dist/tui/types/index.d.ts +0 -137
  127. package/dist/tui/types/index.d.ts.map +0 -1
  128. package/dist/tui/types/index.js +0 -26
  129. package/dist/tui/types/index.js.map +0 -1
  130. package/dist/tui/utils/cleanup.d.ts +0 -22
  131. package/dist/tui/utils/cleanup.d.ts.map +0 -1
  132. package/dist/tui/utils/cleanup.js +0 -59
  133. package/dist/tui/utils/cleanup.js.map +0 -1
  134. package/dist/tui/utils/colors.d.ts +0 -19
  135. package/dist/tui/utils/colors.d.ts.map +0 -1
  136. package/dist/tui/utils/colors.js +0 -71
  137. package/dist/tui/utils/colors.js.map +0 -1
  138. package/dist/tui/utils/format.d.ts +0 -7
  139. package/dist/tui/utils/format.d.ts.map +0 -1
  140. package/dist/tui/utils/format.js +0 -45
  141. package/dist/tui/utils/format.js.map +0 -1
  142. package/dist/tui/utils/responsive.d.ts +0 -5
  143. package/dist/tui/utils/responsive.d.ts.map +0 -1
  144. package/dist/tui/utils/responsive.js +0 -5
  145. package/dist/tui/utils/responsive.js.map +0 -1
  146. package/dist/wrapped.d.ts +0 -43
  147. package/dist/wrapped.d.ts.map +0 -1
  148. package/dist/wrapped.js +0 -719
  149. package/dist/wrapped.js.map +0 -1
  150. package/src/auth.ts +0 -211
  151. package/src/cli.ts +0 -1892
  152. package/src/credentials.ts +0 -176
  153. package/src/cursor.ts +0 -1044
  154. package/src/date-utils.ts +0 -51
  155. package/src/graph-types.ts +0 -175
  156. package/src/native-runner.js +0 -4
  157. package/src/native-runner.ts +0 -91
  158. package/src/native.ts +0 -633
  159. package/src/sessions/types.ts +0 -59
  160. package/src/spinner.ts +0 -283
  161. package/src/submit.ts +0 -360
  162. package/src/table.ts +0 -233
  163. package/src/tui/App.tsx +0 -453
  164. package/src/tui/components/BarChart.tsx +0 -205
  165. package/src/tui/components/DailyView.tsx +0 -132
  166. package/src/tui/components/DateBreakdownPanel.tsx +0 -79
  167. package/src/tui/components/Footer.tsx +0 -380
  168. package/src/tui/components/Header.tsx +0 -68
  169. package/src/tui/components/Legend.tsx +0 -39
  170. package/src/tui/components/LoadingSpinner.tsx +0 -81
  171. package/src/tui/components/ModelRow.tsx +0 -47
  172. package/src/tui/components/ModelView.tsx +0 -147
  173. package/src/tui/components/OverviewView.tsx +0 -121
  174. package/src/tui/components/StatsView.tsx +0 -249
  175. package/src/tui/components/TokenBreakdown.tsx +0 -46
  176. package/src/tui/components/index.ts +0 -15
  177. package/src/tui/config/settings.ts +0 -183
  178. package/src/tui/config/themes.ts +0 -115
  179. package/src/tui/hooks/useData.ts +0 -558
  180. package/src/tui/index.tsx +0 -44
  181. package/src/tui/opentui.d.ts +0 -166
  182. package/src/tui/types/index.ts +0 -173
  183. package/src/tui/utils/cleanup.ts +0 -65
  184. package/src/tui/utils/colors.ts +0 -78
  185. package/src/tui/utils/format.ts +0 -36
  186. package/src/tui/utils/responsive.ts +0 -8
  187. package/src/types.d.ts +0 -28
  188. package/src/wrapped.ts +0 -848
package/dist/tui/App.js DELETED
@@ -1,333 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
2
- import { createEffect, createSignal, Switch, Match, onCleanup } from "solid-js";
3
- import { useKeyboard, useTerminalDimensions, useRenderer } from "@opentui/solid";
4
- import clipboardy from "clipboardy";
5
- import { Header } from "./components/Header.js";
6
- import { Footer } from "./components/Footer.js";
7
- import { ModelView } from "./components/ModelView.js";
8
- import { DailyView } from "./components/DailyView.js";
9
- import { StatsView } from "./components/StatsView.js";
10
- import { OverviewView } from "./components/OverviewView.js";
11
- import { LoadingSpinner } from "./components/LoadingSpinner.js";
12
- import { useData } from "./hooks/useData.js";
13
- import { DEFAULT_PALETTE, getPaletteNames } from "./config/themes.js";
14
- import { loadSettings, saveSettings, getCacheTimestamp } from "./config/settings.js";
15
- import { TABS, ALL_SOURCES } from "./types/index.js";
16
- const PALETTE_NAMES = getPaletteNames();
17
- const SOURCE_HOTKEYS = {
18
- "1": "opencode",
19
- "2": "claude",
20
- "3": "codex",
21
- "4": "cursor",
22
- "5": "gemini",
23
- "6": "amp",
24
- "7": "droid",
25
- "8": "openclaw",
26
- "9": "pi",
27
- "0": "kimi",
28
- };
29
- function cycleTabForward(current) {
30
- const idx = TABS.indexOf(current);
31
- return TABS[(idx + 1) % TABS.length];
32
- }
33
- function cycleTabBackward(current) {
34
- const idx = TABS.indexOf(current);
35
- return TABS[(idx - 1 + TABS.length) % TABS.length];
36
- }
37
- export function App(props) {
38
- const renderer = useRenderer();
39
- const terminalDimensions = useTerminalDimensions();
40
- const columns = () => terminalDimensions().width;
41
- const rows = () => terminalDimensions().height;
42
- const settings = loadSettings();
43
- const [activeTab, setActiveTab] = createSignal(props.initialTab ?? "overview");
44
- const [enabledSources, setEnabledSources] = createSignal(new Set(props.enabledSources ?? ALL_SOURCES));
45
- const [sortBy, setSortBy] = createSignal(props.sortBy ?? "tokens");
46
- const [sortDesc, setSortDesc] = createSignal(props.sortDesc ?? true);
47
- const [selectedIndex, setSelectedIndex] = createSignal(0);
48
- const [scrollOffset, setScrollOffset] = createSignal(0);
49
- const [colorPalette, setColorPalette] = createSignal(props.colorPalette ?? settings.colorPalette ?? DEFAULT_PALETTE);
50
- const dateFilters = {
51
- since: props.since,
52
- until: props.until,
53
- year: props.year,
54
- sinceTs: props.sinceTs,
55
- untilTs: props.untilTs,
56
- };
57
- const { data, loading, error, refresh, loadingPhase, isRefreshing } = useData(() => enabledSources(), dateFilters);
58
- const cacheTimestamp = () => !isRefreshing() && !loading() ? getCacheTimestamp() : null;
59
- const [selectedDate, setSelectedDate] = createSignal(null);
60
- const [statusMessage, setStatusMessage] = createSignal(null);
61
- let statusTimeout = null;
62
- const [autoRefreshEnabled, setAutoRefreshEnabled] = createSignal(settings.autoRefreshEnabled ?? false);
63
- const [autoRefreshMs, setAutoRefreshMs] = createSignal(settings.autoRefreshMs ?? 60000);
64
- const showStatus = (msg, duration = 2000) => {
65
- if (statusTimeout)
66
- clearTimeout(statusTimeout);
67
- setStatusMessage(msg);
68
- statusTimeout = setTimeout(() => setStatusMessage(null), duration);
69
- };
70
- onCleanup(() => {
71
- if (statusTimeout)
72
- clearTimeout(statusTimeout);
73
- });
74
- const MIN_AUTO_REFRESH_MS = 30000;
75
- const MAX_AUTO_REFRESH_MS = 3600000;
76
- const AUTO_REFRESH_STEPS_MS = [
77
- 30000,
78
- 60000,
79
- 120000,
80
- 300000,
81
- 600000,
82
- ];
83
- const AUTO_REFRESH_AFTER_MAX_STEP_MS = 600000;
84
- const clampAutoRefresh = (value) => Math.min(MAX_AUTO_REFRESH_MS, Math.max(MIN_AUTO_REFRESH_MS, value));
85
- const formatIntervalSeconds = (ms) => {
86
- const seconds = Math.round(ms / 1000);
87
- if (seconds < 60)
88
- return `${seconds}s`;
89
- const minutes = Math.round(seconds / 60);
90
- return `${minutes}m`;
91
- };
92
- const getAutoRefreshIntervalStep = (current, direction) => {
93
- const value = clampAutoRefresh(current);
94
- const cappedSteps = AUTO_REFRESH_STEPS_MS;
95
- const maxStep = cappedSteps[cappedSteps.length - 1];
96
- if (value > maxStep) {
97
- const delta = direction === "up" ? AUTO_REFRESH_AFTER_MAX_STEP_MS : -AUTO_REFRESH_AFTER_MAX_STEP_MS;
98
- return clampAutoRefresh(value + delta);
99
- }
100
- if (value === maxStep && direction === "up") {
101
- return clampAutoRefresh(value + AUTO_REFRESH_AFTER_MAX_STEP_MS);
102
- }
103
- if (value === maxStep && direction === "down") {
104
- return cappedSteps[cappedSteps.length - 2];
105
- }
106
- let idx = cappedSteps.findIndex((step) => step >= value);
107
- if (idx === -1)
108
- idx = cappedSteps.length - 1;
109
- if (direction === "up") {
110
- const nextIndex = value === cappedSteps[idx] ? idx + 1 : idx;
111
- return clampAutoRefresh(cappedSteps[Math.min(nextIndex, cappedSteps.length - 1)]);
112
- }
113
- const prevIndex = value === cappedSteps[idx] ? idx - 1 : idx - 1;
114
- return clampAutoRefresh(cappedSteps[Math.max(prevIndex, 0)]);
115
- };
116
- createEffect(() => {
117
- if (!autoRefreshEnabled())
118
- return;
119
- const ms = autoRefreshMs();
120
- const interval = setInterval(() => {
121
- if (!loading() && !isRefreshing()) {
122
- refresh();
123
- }
124
- }, ms);
125
- onCleanup(() => clearInterval(interval));
126
- });
127
- const contentHeight = () => Math.max(rows() - 4, 12);
128
- const overviewChartHeight = () => Math.max(5, Math.floor(contentHeight() * 0.35));
129
- const overviewListHeight = () => Math.max(4, contentHeight() - overviewChartHeight() - 4);
130
- const overviewItemsPerPage = () => Math.max(1, Math.floor(overviewListHeight() / 2));
131
- const handleSourceToggle = (source) => {
132
- const newSources = new Set(enabledSources());
133
- if (newSources.has(source)) {
134
- if (newSources.size > 1) {
135
- newSources.delete(source);
136
- }
137
- }
138
- else {
139
- newSources.add(source);
140
- }
141
- setEnabledSources(newSources);
142
- };
143
- const handlePaletteChange = () => {
144
- const currentIdx = PALETTE_NAMES.indexOf(colorPalette());
145
- const nextIdx = (currentIdx + 1) % PALETTE_NAMES.length;
146
- const newPalette = PALETTE_NAMES[nextIdx];
147
- saveSettings({ colorPalette: newPalette });
148
- setColorPalette(newPalette);
149
- };
150
- const handleSortChange = (sort) => {
151
- if (sortBy() === sort) {
152
- setSortDesc(!sortDesc());
153
- }
154
- else {
155
- setSortBy(sort);
156
- setSortDesc(true);
157
- }
158
- };
159
- useKeyboard((key) => {
160
- if (key.name === "q") {
161
- renderer.destroy();
162
- return;
163
- }
164
- if (key.name === "r" && key.shift) {
165
- const next = !autoRefreshEnabled();
166
- setAutoRefreshEnabled(next);
167
- saveSettings({ autoRefreshEnabled: next });
168
- showStatus(`Auto update: ${next ? "ON" : "OFF"} (${formatIntervalSeconds(autoRefreshMs())})`);
169
- return;
170
- }
171
- if ((key.name === "+") || (key.name === "=" && key.shift)) {
172
- const next = getAutoRefreshIntervalStep(autoRefreshMs(), "up");
173
- setAutoRefreshMs(next);
174
- saveSettings({ autoRefreshMs: next });
175
- showStatus(`Auto update interval: ${formatIntervalSeconds(next)}`);
176
- return;
177
- }
178
- if (key.name === "-" || key.name === "_") {
179
- const next = getAutoRefreshIntervalStep(autoRefreshMs(), "down");
180
- setAutoRefreshMs(next);
181
- saveSettings({ autoRefreshMs: next });
182
- showStatus(`Auto update interval: ${formatIntervalSeconds(next)}`);
183
- return;
184
- }
185
- if (key.name === "r") {
186
- refresh();
187
- return;
188
- }
189
- if (key.name === "tab" || key.name === "right") {
190
- setActiveTab(cycleTabForward(activeTab()));
191
- setSelectedIndex(0);
192
- setScrollOffset(0);
193
- return;
194
- }
195
- if (key.name === "left") {
196
- setActiveTab(cycleTabBackward(activeTab()));
197
- setSelectedIndex(0);
198
- setScrollOffset(0);
199
- return;
200
- }
201
- if (key.name === "c" && !key.meta && !key.ctrl) {
202
- handleSortChange("cost");
203
- return;
204
- }
205
- if (key.name === "y") {
206
- const d = data();
207
- if (!d)
208
- return;
209
- let textToCopy = "";
210
- const tab = activeTab();
211
- if (tab === "model") {
212
- const sorted = [...d.modelEntries].sort((a, b) => {
213
- if (sortBy() === "cost")
214
- return sortDesc() ? b.cost - a.cost : a.cost - b.cost;
215
- if (sortBy() === "tokens")
216
- return sortDesc() ? b.total - a.total : a.total - b.total;
217
- return sortDesc() ? b.model.localeCompare(a.model) : a.model.localeCompare(b.model);
218
- });
219
- const entry = sorted[selectedIndex()];
220
- if (entry) {
221
- textToCopy = `${entry.source} ${entry.model}: ${entry.total.toLocaleString()} tokens, $${entry.cost.toFixed(2)}`;
222
- }
223
- }
224
- else if (tab === "daily") {
225
- const sorted = [...d.dailyEntries].sort((a, b) => {
226
- if (sortBy() === "cost")
227
- return sortDesc() ? b.cost - a.cost : a.cost - b.cost;
228
- if (sortBy() === "tokens")
229
- return sortDesc() ? b.total - a.total : a.total - b.total;
230
- return sortDesc() ? b.date.localeCompare(a.date) : a.date.localeCompare(b.date);
231
- });
232
- const entry = sorted[selectedIndex()];
233
- if (entry) {
234
- textToCopy = `${entry.date}: ${entry.total.toLocaleString()} tokens, $${entry.cost.toFixed(2)}`;
235
- }
236
- }
237
- else if (tab === "overview") {
238
- const model = d.topModels[scrollOffset() + selectedIndex()];
239
- if (model) {
240
- textToCopy = `${model.modelId}: ${model.totalTokens.toLocaleString()} tokens, $${model.cost.toFixed(2)}`;
241
- }
242
- }
243
- if (textToCopy) {
244
- clipboardy.write(textToCopy)
245
- .then(() => showStatus("Copied to clipboard"))
246
- .catch(() => showStatus("Failed to copy"));
247
- }
248
- return;
249
- }
250
- if (key.name === "t") {
251
- handleSortChange("tokens");
252
- return;
253
- }
254
- if (key.name === "d") {
255
- handleSortChange("date");
256
- return;
257
- }
258
- if (key.name === "p") {
259
- handlePaletteChange();
260
- return;
261
- }
262
- if (!key.meta && !key.ctrl) {
263
- const source = SOURCE_HOTKEYS[key.name];
264
- if (source) {
265
- handleSourceToggle(source);
266
- return;
267
- }
268
- }
269
- if (key.name === "up") {
270
- if (activeTab() === "overview") {
271
- if (selectedIndex() > 0) {
272
- setSelectedIndex(selectedIndex() - 1);
273
- }
274
- else if (scrollOffset() > 0) {
275
- setScrollOffset(scrollOffset() - 1);
276
- }
277
- }
278
- else {
279
- setSelectedIndex(Math.max(0, selectedIndex() - 1));
280
- }
281
- return;
282
- }
283
- if (key.name === "down") {
284
- if (activeTab() === "overview") {
285
- const maxVisible = Math.min(overviewItemsPerPage(), (data()?.topModels.length ?? 0) - scrollOffset());
286
- const maxOffset = Math.max(0, (data()?.topModels.length ?? 0) - overviewItemsPerPage());
287
- if (selectedIndex() < maxVisible - 1) {
288
- setSelectedIndex(selectedIndex() + 1);
289
- }
290
- else if (scrollOffset() < maxOffset) {
291
- setScrollOffset(scrollOffset() + 1);
292
- }
293
- }
294
- else {
295
- const d = data();
296
- const maxIndex = activeTab() === "model"
297
- ? (d?.modelEntries.length ?? 0)
298
- : (d?.dailyEntries.length ?? 0);
299
- if (maxIndex > 0) {
300
- setSelectedIndex(Math.min(selectedIndex() + 1, maxIndex - 1));
301
- }
302
- }
303
- return;
304
- }
305
- if (key.name === "e" && data()) {
306
- const d = data();
307
- const exportData = {
308
- exportedAt: new Date().toISOString(),
309
- totalCost: d.totalCost,
310
- modelCount: d.modelCount,
311
- models: d.modelEntries,
312
- daily: d.dailyEntries,
313
- stats: d.stats,
314
- };
315
- const filename = `tokscale-export-${new Date().toISOString().split("T")[0]}.json`;
316
- import("node:fs")
317
- .then((fs) => {
318
- fs.writeFileSync(filename, JSON.stringify(exportData, null, 2));
319
- showStatus(`Exported to ${filename}`);
320
- })
321
- .catch(() => showStatus("Export failed"));
322
- return;
323
- }
324
- });
325
- const handleTabClick = (tab) => {
326
- setActiveTab(tab);
327
- setSelectedIndex(0);
328
- setScrollOffset(0);
329
- setSelectedDate(null);
330
- };
331
- return (_jsxs("box", { flexDirection: "column", width: columns(), height: rows(), backgroundColor: "black", children: [_jsx(Header, { activeTab: activeTab(), onTabClick: handleTabClick, width: columns() }), _jsx("box", { flexDirection: "column", flexGrow: 1, paddingX: 1, children: _jsxs(Switch, { children: [_jsx(Match, { when: loading(), children: _jsx(LoadingSpinner, { phase: loadingPhase() }) }), _jsx(Match, { when: error(), children: _jsx("box", { justifyContent: "center", alignItems: "center", flexGrow: 1, children: _jsx("text", { fg: "red", children: `Error: ${error()}` }) }) }), _jsx(Match, { when: data(), children: _jsxs(Switch, { children: [_jsx(Match, { when: activeTab() === "overview", children: _jsx(OverviewView, { data: data(), sortBy: sortBy(), sortDesc: sortDesc(), selectedIndex: selectedIndex, scrollOffset: scrollOffset, height: contentHeight(), width: columns() }) }), _jsx(Match, { when: activeTab() === "model", children: _jsx(ModelView, { data: data(), sortBy: sortBy(), sortDesc: sortDesc(), selectedIndex: selectedIndex, height: contentHeight(), width: columns() }) }), _jsx(Match, { when: activeTab() === "daily", children: _jsx(DailyView, { data: data(), sortBy: sortBy(), sortDesc: sortDesc(), selectedIndex: selectedIndex, height: contentHeight(), width: columns() }) }), _jsx(Match, { when: activeTab() === "stats", children: _jsx(StatsView, { data: data(), height: contentHeight(), colorPalette: colorPalette(), width: columns(), selectedDate: selectedDate(), sortBy: sortBy() }) })] }) })] }) }), _jsx(Footer, { enabledSources: enabledSources(), sortBy: sortBy(), totals: data()?.totals, modelCount: data()?.modelCount ?? 0, activeTab: activeTab(), scrollStart: scrollOffset(), scrollEnd: Math.min(scrollOffset() + overviewItemsPerPage(), data()?.topModels.length ?? 0), totalItems: data()?.topModels.length, colorPalette: colorPalette(), statusMessage: statusMessage(), isRefreshing: isRefreshing(), loadingPhase: loadingPhase(), cacheTimestamp: cacheTimestamp(), autoRefreshEnabled: autoRefreshEnabled(), autoRefreshMs: autoRefreshMs(), width: columns(), onSourceToggle: handleSourceToggle, onSortChange: handleSortChange, onPaletteChange: handlePaletteChange, onRefresh: refresh })] }));
332
- }
333
- //# sourceMappingURL=App.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- export interface ChartDataPoint {
2
- date: string;
3
- models: {
4
- modelId: string;
5
- tokens: number;
6
- color: string;
7
- }[];
8
- total: number;
9
- }
10
- interface BarChartProps {
11
- data: ChartDataPoint[];
12
- width: number;
13
- height: number;
14
- }
15
- export declare function BarChart(props: BarChartProps): any;
16
- export {};
17
- //# sourceMappingURL=BarChart.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../src/tui/components/BarChart.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAqBD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,OAyK5C"}
@@ -1,146 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
2
- import { For, Show, createMemo } from "solid-js";
3
- import { formatTokensCompact } from "../utils/format.js";
4
- import { isNarrow, isVeryNarrow } from "../utils/responsive.js";
5
- const BLOCKS = [" ", "▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"];
6
- const MONTH_NAMES = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
7
- const REPEAT_CACHE_MAX_SIZE = 256;
8
- const repeatCache = new Map();
9
- function getRepeatedString(char, count) {
10
- const key = `${char}:${count}`;
11
- let cached = repeatCache.get(key);
12
- if (!cached) {
13
- if (repeatCache.size >= REPEAT_CACHE_MAX_SIZE) {
14
- const firstKey = repeatCache.keys().next().value;
15
- if (firstKey)
16
- repeatCache.delete(firstKey);
17
- }
18
- cached = char.repeat(count);
19
- repeatCache.set(key, cached);
20
- }
21
- return cached;
22
- }
23
- export function BarChart(props) {
24
- const data = () => props.data;
25
- const width = () => props.width;
26
- const height = () => props.height;
27
- const isNarrowTerminal = () => isNarrow(width());
28
- const isVeryNarrowTerminal = () => isVeryNarrow(width());
29
- const safeHeight = () => Math.max(height(), 1);
30
- const maxTotal = createMemo(() => {
31
- const arr = data();
32
- if (arr.length === 0)
33
- return 1;
34
- let max = arr[0].total;
35
- for (let i = 1; i < arr.length; i++) {
36
- if (arr[i].total > max)
37
- max = arr[i].total;
38
- }
39
- return Math.max(max, 1);
40
- });
41
- const chartWidth = () => Math.max(width() - 8, 20);
42
- const getBarWidth = (index, total) => {
43
- const cw = chartWidth();
44
- if (total === 0)
45
- return 1;
46
- const start = Math.floor((index * cw) / total);
47
- const end = Math.floor(((index + 1) * cw) / total);
48
- return Math.max(1, end - start);
49
- };
50
- const visibleData = () => data();
51
- const sortedModelsMap = createMemo(() => {
52
- const vd = visibleData();
53
- const map = new Map();
54
- for (const point of vd) {
55
- const models = point.models ?? [];
56
- const sorted = [...models].sort((a, b) => a.modelId.localeCompare(b.modelId));
57
- map.set(point.date, sorted);
58
- }
59
- return map;
60
- });
61
- const rowIndices = createMemo(() => {
62
- const sh = safeHeight();
63
- const indices = new Array(sh);
64
- for (let i = 0; i < sh; i++) {
65
- indices[i] = sh - 1 - i;
66
- }
67
- return indices;
68
- });
69
- const dateLabels = createMemo(() => {
70
- const vd = visibleData();
71
- if (vd.length === 0)
72
- return [];
73
- const labelInterval = Math.max(1, Math.floor(vd.length / (isVeryNarrowTerminal() ? 2 : 3)));
74
- const labels = [];
75
- for (let i = 0; i < vd.length; i += labelInterval) {
76
- const dateStr = vd[i].date;
77
- const parts = dateStr.split("-");
78
- if (parts.length === 3) {
79
- const month = parseInt(parts[1], 10);
80
- const day = parseInt(parts[2], 10);
81
- labels.push(isVeryNarrowTerminal() ? `${month}/${day}` : `${MONTH_NAMES[month - 1]} ${day}`);
82
- }
83
- else {
84
- labels.push(dateStr.slice(5));
85
- }
86
- }
87
- return labels;
88
- });
89
- const axisWidth = () => chartWidth();
90
- const labelPadding = () => {
91
- const labels = dateLabels();
92
- return labels.length > 0 ? Math.floor(axisWidth() / labels.length) : 0;
93
- };
94
- const chartTitle = () => isVeryNarrowTerminal() ? "Tokens" : "Tokens per Day";
95
- const getBarContent = (point, row, barIndex) => {
96
- const mt = maxTotal();
97
- const sh = safeHeight();
98
- const rowThreshold = ((row + 1) / sh) * mt;
99
- const prevThreshold = (row / sh) * mt;
100
- const thresholdDiff = rowThreshold - prevThreshold;
101
- const bw = getBarWidth(barIndex, visibleData().length);
102
- if (point.total <= prevThreshold) {
103
- return { char: getRepeatedString(" ", bw), color: "dim" };
104
- }
105
- const sortedModels = sortedModelsMap().get(point.date) ?? [];
106
- if (sortedModels.length === 0) {
107
- return { char: getRepeatedString(" ", bw), color: "dim" };
108
- }
109
- let currentHeight = 0;
110
- let maxOverlap = 0;
111
- let color = sortedModels[0].color;
112
- const rowStart = prevThreshold;
113
- const rowEnd = rowThreshold;
114
- for (const m of sortedModels) {
115
- const mStart = currentHeight;
116
- const mEnd = currentHeight + m.tokens;
117
- currentHeight += m.tokens;
118
- const overlapStart = Math.max(mStart, rowStart);
119
- const overlapEnd = Math.min(mEnd, rowEnd);
120
- const overlap = Math.max(0, overlapEnd - overlapStart);
121
- if (overlap > maxOverlap) {
122
- maxOverlap = overlap;
123
- color = m.color;
124
- }
125
- }
126
- if (point.total >= rowThreshold) {
127
- return { char: getRepeatedString("█", bw), color };
128
- }
129
- const ratio = thresholdDiff > 0 ? (point.total - prevThreshold) / thresholdDiff : 1;
130
- const blockIndex = Math.min(8, Math.max(1, Math.floor(ratio * 8)));
131
- return { char: getRepeatedString(BLOCKS[blockIndex], bw), color };
132
- };
133
- return (_jsx(Show, { when: data().length > 0, fallback: _jsx("text", { dim: true, children: "No chart data" }), children: _jsxs("box", { flexDirection: "column", children: [_jsx("text", { bold: true, children: chartTitle() }), _jsx(For, { each: rowIndices(), children: (row) => {
134
- const yLabelWidth = isVeryNarrowTerminal() ? 5 : 6;
135
- const yLabel = row === safeHeight() - 1
136
- ? formatTokensCompact(maxTotal()).padStart(yLabelWidth)
137
- : " ".repeat(yLabelWidth);
138
- return (_jsxs("box", { flexDirection: "row", children: [_jsxs("text", { dim: true, children: [yLabel, "\u2502"] }), _jsx(For, { each: visibleData(), children: (point, barIndex) => {
139
- const bar = getBarContent(point, row, barIndex());
140
- return bar.color === "dim"
141
- ? _jsx("text", { dim: true, children: bar.char })
142
- : _jsx("text", { fg: bar.color, children: bar.char });
143
- } })] }));
144
- } }), _jsxs("box", { flexDirection: "row", children: [_jsx("text", { dim: true, children: isVeryNarrowTerminal() ? " 0│" : " 0│" }), _jsx("text", { dim: true, children: getRepeatedString("─", axisWidth()) })] }), _jsx(Show, { when: dateLabels().length > 0, children: _jsxs("box", { flexDirection: "row", children: [_jsx("text", { dim: true, children: isVeryNarrowTerminal() ? " " : " " }), _jsx("text", { dim: true, children: dateLabels().map((l) => l.padEnd(labelPadding())).join("") })] }) })] }) }));
145
- }
146
- //# sourceMappingURL=BarChart.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BarChart.js","sourceRoot":"","sources":["../../../src/tui/components/BarChart.tsx"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { type Accessor } from "solid-js";
2
- import type { TUIData, SortType } from "../hooks/useData.js";
3
- interface DailyViewProps {
4
- data: TUIData;
5
- sortBy: SortType;
6
- sortDesc: boolean;
7
- selectedIndex: Accessor<number>;
8
- height: number;
9
- width?: number;
10
- }
11
- export declare function DailyView(props: DailyViewProps): any;
12
- export {};
13
- //# sourceMappingURL=DailyView.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DailyView.d.ts","sourceRoot":"","sources":["../../../src/tui/components/DailyView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAiB7D,UAAU,cAAc;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,OAwG9C"}