@tokscale/cli 1.4.3 → 2.0.1

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
@@ -1,15 +0,0 @@
1
- export interface GraphColorPalette {
2
- name: string;
3
- grade0: string;
4
- grade1: string;
5
- grade2: string;
6
- grade3: string;
7
- grade4: string;
8
- }
9
- export type ColorPaletteName = "green" | "halloween" | "teal" | "blue" | "pink" | "purple" | "orange" | "monochrome" | "YlGnBu";
10
- export declare const colorPalettes: Record<ColorPaletteName, GraphColorPalette>;
11
- export declare const DEFAULT_PALETTE: ColorPaletteName;
12
- export declare const getPaletteNames: () => ColorPaletteName[];
13
- export declare const getPalette: (name: ColorPaletteName) => GraphColorPalette;
14
- export declare const getGradeColor: (palette: GraphColorPalette, intensity: 0 | 1 | 2 | 3 | 4) => string;
15
- //# sourceMappingURL=themes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../../src/tui/config/themes.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP,WAAW,GACX,MAAM,GACN,MAAM,GACN,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,QAAQ,CAAC;AAIb,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,CAyErE,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,gBAAyB,CAAC;AAExD,eAAO,MAAM,eAAe,QAAO,gBAAgB,EACD,CAAC;AAEnD,eAAO,MAAM,UAAU,GAAI,MAAM,gBAAgB,KAAG,iBACG,CAAC;AAExD,eAAO,MAAM,aAAa,GACxB,SAAS,iBAAiB,EAC1B,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAC3B,MAMF,CAAC"}
@@ -1,82 +0,0 @@
1
- const GRAPH_EMPTY = "#1F1F20";
2
- export const colorPalettes = {
3
- green: {
4
- name: "Green",
5
- grade0: GRAPH_EMPTY,
6
- grade1: "#9be9a8",
7
- grade2: "#40c463",
8
- grade3: "#30a14e",
9
- grade4: "#216e39",
10
- },
11
- halloween: {
12
- name: "Halloween",
13
- grade0: GRAPH_EMPTY,
14
- grade1: "#FFEE4A",
15
- grade2: "#FFC501",
16
- grade3: "#FE9600",
17
- grade4: "#03001C",
18
- },
19
- teal: {
20
- name: "Teal",
21
- grade0: GRAPH_EMPTY,
22
- grade1: "#7ee5e5",
23
- grade2: "#2dc5c5",
24
- grade3: "#0d9e9e",
25
- grade4: "#0e6d6d",
26
- },
27
- blue: {
28
- name: "Blue",
29
- grade0: GRAPH_EMPTY,
30
- grade1: "#79b8ff",
31
- grade2: "#388bfd",
32
- grade3: "#1f6feb",
33
- grade4: "#0d419d",
34
- },
35
- pink: {
36
- name: "Pink",
37
- grade0: GRAPH_EMPTY,
38
- grade1: "#f0b5d2",
39
- grade2: "#d961a0",
40
- grade3: "#bf4b8a",
41
- grade4: "#99286e",
42
- },
43
- purple: {
44
- name: "Purple",
45
- grade0: GRAPH_EMPTY,
46
- grade1: "#cdb4ff",
47
- grade2: "#a371f7",
48
- grade3: "#8957e5",
49
- grade4: "#6e40c9",
50
- },
51
- orange: {
52
- name: "Orange",
53
- grade0: GRAPH_EMPTY,
54
- grade1: "#ffd699",
55
- grade2: "#ffb347",
56
- grade3: "#ff8c00",
57
- grade4: "#cc5500",
58
- },
59
- monochrome: {
60
- name: "Monochrome",
61
- grade0: GRAPH_EMPTY,
62
- grade1: "#9e9e9e",
63
- grade2: "#757575",
64
- grade3: "#424242",
65
- grade4: "#212121",
66
- },
67
- YlGnBu: {
68
- name: "YlGnBu",
69
- grade0: GRAPH_EMPTY,
70
- grade1: "#a1dab4",
71
- grade2: "#41b6c4",
72
- grade3: "#2c7fb8",
73
- grade4: "#253494",
74
- },
75
- };
76
- export const DEFAULT_PALETTE = "blue";
77
- export const getPaletteNames = () => Object.keys(colorPalettes);
78
- export const getPalette = (name) => colorPalettes[name] || colorPalettes[DEFAULT_PALETTE];
79
- export const getGradeColor = (palette, intensity) => {
80
- return ([palette.grade0, palette.grade1, palette.grade2, palette.grade3, palette.grade4][intensity] || palette.grade0);
81
- };
82
- //# sourceMappingURL=themes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"themes.js","sourceRoot":"","sources":["../../../src/tui/config/themes.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,GAAG,SAAS,CAAC;AAE9B,MAAM,CAAC,MAAM,aAAa,GAAgD;IACxE,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAqB,MAAM,CAAC;AAExD,MAAM,CAAC,MAAM,eAAe,GAAG,GAAuB,EAAE,CACtD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAuB,CAAC;AAEnD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAsB,EAAqB,EAAE,CACtE,aAAa,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,eAAe,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAA0B,EAC1B,SAA4B,EACpB,EAAE;IACV,OAAO,CACL,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAC9E,SAAS,CACV,IAAI,OAAO,CAAC,MAAM,CACpB,CAAC;AACJ,CAAC,CAAC"}
@@ -1,19 +0,0 @@
1
- import { type Accessor } from "solid-js";
2
- import type { SourceType, SortType, ModelEntry, DailyEntry, ContributionDay, Stats, ModelWithPercentage, GridCell, TotalBreakdown, TUIData, LoadingPhase } from "../types/index.js";
3
- export type { SortType, ModelEntry, DailyEntry, ContributionDay, Stats, ModelWithPercentage, GridCell, TotalBreakdown, TUIData, LoadingPhase, };
4
- export interface DateFilters {
5
- since?: string;
6
- until?: string;
7
- year?: string;
8
- sinceTs?: number;
9
- untilTs?: number;
10
- }
11
- export declare function useData(enabledSources: Accessor<Set<SourceType>>, dateFilters?: DateFilters): {
12
- data: Accessor<TUIData | null>;
13
- loading: Accessor<boolean>;
14
- error: Accessor<string | null>;
15
- refresh: () => void;
16
- loadingPhase: Accessor<LoadingPhase>;
17
- isRefreshing: Accessor<boolean>;
18
- };
19
- //# sourceMappingURL=useData.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useData.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,eAAe,EACf,KAAK,EACL,mBAAmB,EACnB,QAAQ,EACR,cAAc,EACd,OAAO,EAEP,YAAY,EAEb,MAAM,mBAAmB,CAAC;AAY3B,YAAY,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,eAAe,EACf,KAAK,EACL,mBAAmB,EACnB,QAAQ,EACR,cAAc,EACd,OAAO,EACP,YAAY,GACb,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA6ZD,wBAAgB,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW;;;;;;;EAkG3F"}
@@ -1,468 +0,0 @@
1
- import { createSignal, createEffect, on } from "solid-js";
2
- import { parseLocalSourcesAsync, finalizeReportAndGraphAsync, } from "../../native.js";
3
- import { syncCursorCache, isCursorLoggedIn, hasCursorUsageCache } from "../../cursor.js";
4
- import { getModelColor } from "../utils/colors.js";
5
- import { loadCachedData, saveCachedData, isCacheStale, loadSettings } from "../config/settings.js";
6
- import { formatDateLocal } from "../../date-utils.js";
7
- function buildContributionGrid(contributions) {
8
- const grid = Array.from({ length: 7 }, () => []);
9
- const today = new Date();
10
- const todayStr = formatDateLocal(today);
11
- const startDate = new Date(today);
12
- startDate.setDate(startDate.getDate() - 364);
13
- while (startDate.getDay() !== 0) {
14
- startDate.setDate(startDate.getDate() - 1);
15
- }
16
- const endDate = new Date(today);
17
- while (endDate.getDay() !== 6) {
18
- endDate.setDate(endDate.getDate() + 1);
19
- }
20
- const contributionMap = new Map(contributions.map(c => [c.date, c.level]));
21
- const currentDate = new Date(startDate);
22
- while (currentDate <= endDate) {
23
- const dateStr = formatDateLocal(currentDate);
24
- const dayOfWeek = currentDate.getDay();
25
- const isFuture = dateStr > todayStr;
26
- const level = isFuture ? 0 : (contributionMap.get(dateStr) || 0);
27
- grid[dayOfWeek].push({ date: isFuture ? null : dateStr, level });
28
- currentDate.setDate(currentDate.getDate() + 1);
29
- }
30
- return grid;
31
- }
32
- function calculatePeakHour(messages) {
33
- if (messages.length === 0)
34
- return "N/A";
35
- const hourCounts = new Array(24).fill(0);
36
- for (const msg of messages) {
37
- const hour = new Date(msg.timestampMs).getHours();
38
- hourCounts[hour]++;
39
- }
40
- let maxCount = 0;
41
- let peakHour = 0;
42
- for (let h = 0; h < 24; h++) {
43
- if (hourCounts[h] > maxCount) {
44
- maxCount = hourCounts[h];
45
- peakHour = h;
46
- }
47
- }
48
- if (maxCount === 0)
49
- return "N/A";
50
- const suffix = peakHour >= 12 ? "pm" : "am";
51
- const displayHour = peakHour === 0 ? 12 : peakHour > 12 ? peakHour - 12 : peakHour;
52
- return `${displayHour}${suffix}`;
53
- }
54
- function calculateLongestSession(messages) {
55
- if (messages.length === 0)
56
- return "N/A";
57
- const sessions = new Map();
58
- for (const msg of messages) {
59
- if (!msg.sessionId)
60
- continue;
61
- const timestamps = sessions.get(msg.sessionId) || [];
62
- timestamps.push(msg.timestampMs);
63
- sessions.set(msg.sessionId, timestamps);
64
- }
65
- if (sessions.size === 0)
66
- return "N/A";
67
- let maxDurationMs = 0;
68
- for (const [, timestamps] of sessions) {
69
- if (timestamps.length < 2)
70
- continue;
71
- const minTs = Math.min(...timestamps);
72
- const maxTs = Math.max(...timestamps);
73
- const duration = maxTs - minTs;
74
- if (duration > maxDurationMs) {
75
- maxDurationMs = duration;
76
- }
77
- }
78
- if (maxDurationMs === 0)
79
- return "N/A";
80
- const totalSeconds = Math.floor(maxDurationMs / 1000);
81
- const hours = Math.floor(totalSeconds / 3600);
82
- const minutes = Math.floor((totalSeconds % 3600) / 60);
83
- if (hours > 0) {
84
- return `${hours}h ${minutes}m`;
85
- }
86
- else if (minutes > 0) {
87
- return `${minutes}m`;
88
- }
89
- return `${totalSeconds}s`;
90
- }
91
- async function loadData(enabledSources, dateFilters, setPhase) {
92
- const sources = Array.from(enabledSources);
93
- const localSources = sources.filter(s => s !== "cursor");
94
- const includeCursor = sources.includes("cursor");
95
- const { since, until, year, sinceTs, untilTs } = dateFilters ?? {};
96
- setPhase?.("parsing-sources");
97
- const phase1Results = await Promise.allSettled([
98
- includeCursor && isCursorLoggedIn() ? syncCursorCache() : Promise.resolve({ synced: false, rows: 0, error: undefined }),
99
- localSources.length > 0
100
- ? parseLocalSourcesAsync({ sources: localSources, since, until, year, sinceTs, untilTs })
101
- : Promise.resolve({ messages: [], opencodeCount: 0, claudeCount: 0, codexCount: 0, geminiCount: 0, ampCount: 0, droidCount: 0, openclawCount: 0, piCount: 0, kimiCount: 0, processingTimeMs: 0 }),
102
- ]);
103
- const cursorSync = phase1Results[0].status === "fulfilled"
104
- ? phase1Results[0].value
105
- : { synced: false, rows: 0, error: "Cursor sync failed" };
106
- const localMessages = phase1Results[1].status === "fulfilled"
107
- ? phase1Results[1].value
108
- : null;
109
- if (includeCursor && cursorSync.error && (cursorSync.synced || hasCursorUsageCache())) {
110
- // TUI should keep working; just emit a warning.
111
- const prefix = cursorSync.synced ? "Cursor sync warning" : "Cursor sync failed; using cached data";
112
- console.warn(`${prefix}: ${cursorSync.error}`);
113
- }
114
- const emptyMessages = {
115
- messages: [],
116
- opencodeCount: 0,
117
- claudeCount: 0,
118
- codexCount: 0,
119
- geminiCount: 0,
120
- ampCount: 0,
121
- droidCount: 0,
122
- openclawCount: 0,
123
- piCount: 0,
124
- kimiCount: 0,
125
- processingTimeMs: 0,
126
- };
127
- setPhase?.("finalizing-report");
128
- const { report, graph } = await finalizeReportAndGraphAsync({
129
- localMessages: localMessages || emptyMessages,
130
- includeCursor: includeCursor && (cursorSync.synced || hasCursorUsageCache()),
131
- since,
132
- until,
133
- year,
134
- sinceTs,
135
- untilTs,
136
- });
137
- const settings = loadSettings();
138
- const allModelEntries = report.entries.map(e => ({
139
- source: e.source,
140
- model: e.model,
141
- input: e.input,
142
- output: e.output,
143
- cacheWrite: e.cacheWrite,
144
- cacheRead: e.cacheRead,
145
- reasoning: e.reasoning,
146
- total: e.input + e.output + e.cacheWrite + e.cacheRead + e.reasoning,
147
- cost: e.cost,
148
- }));
149
- const modelEntries = settings.includeUnusedModels
150
- ? allModelEntries
151
- : allModelEntries.filter(e => e.total > 0);
152
- const dailyMap = new Map();
153
- for (const contrib of graph.contributions) {
154
- const dateStr = contrib.date;
155
- if (!dailyMap.has(dateStr)) {
156
- dailyMap.set(dateStr, {
157
- date: dateStr,
158
- input: 0,
159
- output: 0,
160
- cacheRead: 0,
161
- cacheWrite: 0,
162
- total: 0,
163
- cost: 0,
164
- });
165
- }
166
- const entry = dailyMap.get(dateStr);
167
- entry.input += contrib.tokenBreakdown.input;
168
- entry.output += contrib.tokenBreakdown.output;
169
- entry.cacheRead += contrib.tokenBreakdown.cacheRead;
170
- entry.cacheWrite += contrib.tokenBreakdown.cacheWrite;
171
- entry.total += contrib.totals.tokens;
172
- entry.cost += contrib.totals.cost;
173
- }
174
- const dailyEntries = Array.from(dailyMap.values()).sort((a, b) => b.date.localeCompare(a.date));
175
- let maxCost = 1;
176
- for (const d of dailyEntries) {
177
- if (d.cost > maxCost)
178
- maxCost = d.cost;
179
- }
180
- let maxTokens = 1;
181
- for (const d of dailyEntries) {
182
- if (d.total > maxTokens)
183
- maxTokens = d.total;
184
- }
185
- const contributions = dailyEntries.map(d => ({
186
- date: d.date,
187
- cost: d.cost,
188
- tokens: d.total,
189
- level: d.cost === 0 ? 0 : Math.min(4, Math.ceil((d.cost / maxCost) * 4)),
190
- }));
191
- const contributionGrid = buildContributionGrid(contributions);
192
- const modelCosts = new Map();
193
- for (const e of modelEntries) {
194
- const current = modelCosts.get(e.model) || 0;
195
- modelCosts.set(e.model, current + e.cost);
196
- }
197
- let favoriteModel = "N/A";
198
- let maxModelCost = 0;
199
- for (const [model, cost] of modelCosts) {
200
- if (cost > maxModelCost) {
201
- maxModelCost = cost;
202
- favoriteModel = model;
203
- }
204
- }
205
- let currentStreak = 0;
206
- let longestStreak = 0;
207
- const sortedDates = dailyEntries.map(d => d.date).sort();
208
- if (sortedDates.length > 0) {
209
- const todayParts = new Date().toISOString().split("T")[0].split("-").map(Number);
210
- const todayUTC = Date.UTC(todayParts[0], todayParts[1] - 1, todayParts[2]);
211
- let streak = 0;
212
- for (let i = sortedDates.length - 1; i >= 0; i--) {
213
- const dateParts = sortedDates[i].split("-").map(Number);
214
- const dateUTC = Date.UTC(dateParts[0], dateParts[1] - 1, dateParts[2]);
215
- const daysFromToday = Math.round((todayUTC - dateUTC) / (1000 * 60 * 60 * 24));
216
- if (i === sortedDates.length - 1) {
217
- if (daysFromToday <= 1) {
218
- streak = 1;
219
- }
220
- else {
221
- break;
222
- }
223
- }
224
- else {
225
- const prevParts = sortedDates[i + 1].split("-").map(Number);
226
- const prevUTC = Date.UTC(prevParts[0], prevParts[1] - 1, prevParts[2]);
227
- const diffDays = Math.round((prevUTC - dateUTC) / (1000 * 60 * 60 * 24));
228
- if (diffDays === 1) {
229
- streak++;
230
- }
231
- else {
232
- break;
233
- }
234
- }
235
- }
236
- currentStreak = streak;
237
- streak = 1;
238
- for (let i = 1; i < sortedDates.length; i++) {
239
- const prevParts = sortedDates[i - 1].split("-").map(Number);
240
- const currParts = sortedDates[i].split("-").map(Number);
241
- const prevDate = Date.UTC(prevParts[0], prevParts[1] - 1, prevParts[2]);
242
- const currDate = Date.UTC(currParts[0], currParts[1] - 1, currParts[2]);
243
- const diffDays = Math.round((currDate - prevDate) / (1000 * 60 * 60 * 24));
244
- if (diffDays === 1) {
245
- streak++;
246
- }
247
- else {
248
- longestStreak = Math.max(longestStreak, streak);
249
- streak = 1;
250
- }
251
- }
252
- longestStreak = Math.max(longestStreak, streak);
253
- }
254
- const stats = {
255
- favoriteModel,
256
- totalTokens: report.totalInput + report.totalOutput + report.totalCacheRead + report.totalCacheWrite,
257
- sessions: report.totalMessages,
258
- longestSession: calculateLongestSession((localMessages?.messages || []).map((m) => ({
259
- sessionId: m.sessionId,
260
- timestampMs: m.timestamp,
261
- }))),
262
- currentStreak,
263
- longestStreak,
264
- activeDays: dailyEntries.length,
265
- totalDays: graph.summary.totalDays,
266
- peakHour: calculatePeakHour((localMessages?.messages || []).map((m) => ({
267
- timestampMs: m.timestamp,
268
- }))),
269
- };
270
- const dailyModelMap = new Map();
271
- for (const contrib of graph.contributions) {
272
- const dateStr = contrib.date;
273
- if (!dailyModelMap.has(dateStr)) {
274
- dailyModelMap.set(dateStr, new Map());
275
- }
276
- const modelMap = dailyModelMap.get(dateStr);
277
- for (const source of contrib.sources) {
278
- const modelId = source.modelId;
279
- const tokens = source.tokens.input + source.tokens.output + source.tokens.cacheRead;
280
- modelMap.set(modelId, (modelMap.get(modelId) || 0) + tokens);
281
- }
282
- }
283
- const chartData = Array.from(dailyModelMap.entries())
284
- .map(([date, modelMap]) => {
285
- const models = Array.from(modelMap.entries()).map(([modelId, tokens]) => ({
286
- modelId,
287
- tokens,
288
- color: getModelColor(modelId),
289
- }));
290
- return {
291
- date,
292
- models,
293
- total: models.reduce((sum, m) => sum + m.tokens, 0),
294
- };
295
- })
296
- .sort((a, b) => a.date.localeCompare(b.date));
297
- const modelTokensMap = new Map();
298
- for (const e of modelEntries) {
299
- const existing = modelTokensMap.get(e.model) || { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0 };
300
- modelTokensMap.set(e.model, {
301
- input: existing.input + e.input,
302
- output: existing.output + e.output,
303
- cacheRead: existing.cacheRead + e.cacheRead,
304
- cacheWrite: existing.cacheWrite + e.cacheWrite,
305
- cost: existing.cost + e.cost,
306
- });
307
- }
308
- const totalCostSum = report.totalCost || 1;
309
- const topModels = Array.from(modelTokensMap.entries())
310
- .map(([modelId, data]) => {
311
- const totalTokens = data.input + data.output + data.cacheRead + data.cacheWrite;
312
- return {
313
- modelId,
314
- percentage: (data.cost / totalCostSum) * 100,
315
- inputTokens: data.input,
316
- outputTokens: data.output,
317
- cacheReadTokens: data.cacheRead,
318
- cacheWriteTokens: data.cacheWrite,
319
- totalTokens,
320
- cost: data.cost,
321
- };
322
- })
323
- .sort((a, b) => b.cost - a.cost);
324
- const totalReasoning = modelEntries.reduce((sum, e) => sum + e.reasoning, 0);
325
- const totals = {
326
- input: report.totalInput,
327
- output: report.totalOutput,
328
- cacheWrite: report.totalCacheWrite,
329
- cacheRead: report.totalCacheRead,
330
- reasoning: totalReasoning,
331
- total: report.totalInput + report.totalOutput + report.totalCacheWrite + report.totalCacheRead + totalReasoning,
332
- cost: report.totalCost,
333
- };
334
- const dailyBreakdowns = new Map();
335
- for (const contrib of graph.contributions) {
336
- const dateStr = contrib.date;
337
- const models = contrib.sources.map((source) => ({
338
- modelId: source.modelId,
339
- source: source.source,
340
- tokens: {
341
- input: source.tokens.input,
342
- output: source.tokens.output,
343
- cacheRead: source.tokens.cacheRead,
344
- cacheWrite: source.tokens.cacheWrite,
345
- reasoning: source.tokens.reasoning || 0,
346
- },
347
- cost: source.cost,
348
- messages: source.messages,
349
- }));
350
- const existing = dailyBreakdowns.get(dateStr);
351
- if (existing) {
352
- existing.cost += contrib.totals.cost;
353
- existing.totalTokens += contrib.totals.tokens;
354
- existing.models.push(...models);
355
- existing.models.sort((a, b) => b.cost - a.cost);
356
- }
357
- else {
358
- dailyBreakdowns.set(dateStr, {
359
- date: dateStr,
360
- cost: contrib.totals.cost,
361
- totalTokens: contrib.totals.tokens,
362
- models: models.sort((a, b) => b.cost - a.cost),
363
- });
364
- }
365
- }
366
- return {
367
- modelEntries,
368
- dailyEntries,
369
- contributions,
370
- contributionGrid,
371
- stats,
372
- totalCost: report.totalCost,
373
- totals,
374
- modelCount: modelEntries.length,
375
- chartData,
376
- topModels,
377
- dailyBreakdowns,
378
- };
379
- }
380
- export function useData(enabledSources, dateFilters) {
381
- const initialSources = enabledSources();
382
- const initialCachedData = loadCachedData(initialSources);
383
- const initialCacheIsStale = initialCachedData ? isCacheStale(initialSources) : true;
384
- const [data, setData] = createSignal(initialCachedData);
385
- const [loading, setLoading] = createSignal(!initialCachedData);
386
- const [error, setError] = createSignal(null);
387
- const [refreshTrigger, setRefreshTrigger] = createSignal(0);
388
- const [loadingPhase, setLoadingPhase] = createSignal(initialCachedData ? (initialCacheIsStale ? "loading-pricing" : "complete") : "idle");
389
- const [isRefreshing, setIsRefreshing] = createSignal(initialCachedData ? initialCacheIsStale : false);
390
- const [forceRefresh, setForceRefresh] = createSignal(false);
391
- let pendingRefresh = false;
392
- let currentRequestId = 0;
393
- const refresh = () => {
394
- if (isRefreshing() || loading()) {
395
- pendingRefresh = true;
396
- return;
397
- }
398
- setIsRefreshing(true);
399
- setForceRefresh(true);
400
- setRefreshTrigger(prev => prev + 1);
401
- };
402
- const doLoad = (sources, skipCacheCheck = false) => {
403
- ++currentRequestId; // Invalidate any in-flight requests immediately
404
- const shouldSkipCache = skipCacheCheck || forceRefresh();
405
- if (!shouldSkipCache) {
406
- const cachedData = loadCachedData(sources);
407
- const cacheIsStale = isCacheStale(sources);
408
- if (cachedData && !cacheIsStale) {
409
- setData(cachedData);
410
- setLoading(false);
411
- setLoadingPhase("complete");
412
- setIsRefreshing(false);
413
- return;
414
- }
415
- if (cachedData) {
416
- setData(cachedData);
417
- setLoading(false);
418
- setIsRefreshing(true);
419
- setLoadingPhase("idle");
420
- }
421
- else {
422
- setLoading(true);
423
- setLoadingPhase("idle");
424
- }
425
- }
426
- else {
427
- setIsRefreshing(true);
428
- setLoadingPhase("idle");
429
- setForceRefresh(false);
430
- }
431
- const requestId = currentRequestId;
432
- setError(null);
433
- loadData(sources, dateFilters, setLoadingPhase)
434
- .then((freshData) => {
435
- if (requestId !== currentRequestId)
436
- return;
437
- setData(freshData);
438
- saveCachedData(freshData, sources);
439
- })
440
- .catch((e) => {
441
- if (requestId !== currentRequestId)
442
- return;
443
- setError(e instanceof Error ? e.message : String(e));
444
- })
445
- .finally(() => {
446
- if (requestId !== currentRequestId)
447
- return;
448
- setLoading(false);
449
- setIsRefreshing(false);
450
- setLoadingPhase("complete");
451
- if (pendingRefresh) {
452
- pendingRefresh = false;
453
- refresh();
454
- }
455
- });
456
- };
457
- if (initialCachedData && initialCacheIsStale) {
458
- doLoad(initialSources, true);
459
- }
460
- else if (!initialCachedData) {
461
- doLoad(initialSources, false);
462
- }
463
- createEffect(on(() => [enabledSources(), refreshTrigger()], ([sources]) => {
464
- doLoad(sources);
465
- }, { defer: true }));
466
- return { data, loading, error, refresh, loadingPhase, isRefreshing };
467
- }
468
- //# sourceMappingURL=useData.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useData.js","sourceRoot":"","sources":["../../../src/tui/hooks/useData.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { TUIOptions } from "./types/index.js";
2
- export type { TUIOptions };
3
- export declare function launchTUI(options?: TUIOptions): Promise<void>;
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tui/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,iBAoCnD"}