@tokscale/cli 1.0.10 → 1.0.11
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverviewView.d.ts","sourceRoot":"","sources":["../../../src/tui/components/OverviewView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIhE,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"OverviewView.d.ts","sourceRoot":"","sources":["../../../src/tui/components/OverviewView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIhE,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAM7D,UAAU,iBAAiB;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,OA2FpD"}
|
|
@@ -5,6 +5,7 @@ import { Legend } from "./Legend.js";
|
|
|
5
5
|
import { ModelRow } from "./ModelRow.js";
|
|
6
6
|
import { formatCost } from "../utils/format.js";
|
|
7
7
|
import { isNarrow, isVeryNarrow } from "../utils/responsive.js";
|
|
8
|
+
const CHART_MAX_DAYS = 90;
|
|
8
9
|
export function OverviewView(props) {
|
|
9
10
|
const safeHeight = () => Math.max(props.height, 12);
|
|
10
11
|
const chartHeight = () => Math.max(5, Math.floor(safeHeight() * 0.35));
|
|
@@ -12,6 +13,7 @@ export function OverviewView(props) {
|
|
|
12
13
|
const itemsPerPage = () => Math.max(1, Math.floor(listHeight() / 2));
|
|
13
14
|
const isNarrowTerminal = () => isNarrow(props.width);
|
|
14
15
|
const isVeryNarrowTerminal = () => isVeryNarrow(props.width);
|
|
16
|
+
const recentChartData = createMemo(() => props.data.chartData.slice(-CHART_MAX_DAYS));
|
|
15
17
|
const legendModelLimit = () => isVeryNarrowTerminal() ? 3 : 5;
|
|
16
18
|
const topModelsForLegend = () => props.data.topModels.slice(0, legendModelLimit()).map(m => m.modelId);
|
|
17
19
|
const maxModelNameWidth = () => isVeryNarrowTerminal() ? 20 : isNarrowTerminal() ? 30 : 50;
|
|
@@ -42,7 +44,7 @@ export function OverviewView(props) {
|
|
|
42
44
|
const visibleModels = () => sortedModels().slice(props.scrollOffset(), props.scrollOffset() + itemsPerPage());
|
|
43
45
|
const totalModels = () => sortedModels().length;
|
|
44
46
|
const endIndex = () => Math.min(props.scrollOffset() + visibleModels().length, totalModels());
|
|
45
|
-
return (_jsxs("box", { flexDirection: "column", gap: 1, children: [_jsxs("box", { flexDirection: "column", children: [_jsx(BarChart, { data:
|
|
47
|
+
return (_jsxs("box", { flexDirection: "column", gap: 1, children: [_jsxs("box", { flexDirection: "column", children: [_jsx(BarChart, { data: recentChartData(), 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
48
|
const isActive = createMemo(() => i() === props.selectedIndex());
|
|
47
49
|
return (_jsx(ModelRow, { modelId: model.modelId, tokens: {
|
|
48
50
|
input: model.inputTokens,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverviewView.js","sourceRoot":"","sources":["../../../src/tui/components/OverviewView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAiB,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"OverviewView.js","sourceRoot":"","sources":["../../../src/tui/components/OverviewView.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tokscale/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.11",
|
|
4
4
|
"description": "A high-performance CLI tool and visualization dashboard for tracking AI coding assistant token usage and costs across multiple platforms.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"prepublishOnly": "bun run build"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@tokscale/core": "1.0.
|
|
30
|
+
"@tokscale/core": "1.0.11",
|
|
31
31
|
"@opentui/core": "0.1.60",
|
|
32
32
|
"@opentui/react": "^0.1.60",
|
|
33
33
|
"@opentui/solid": "^0.1.60",
|
|
@@ -6,6 +6,8 @@ import type { TUIData, SortType } from "../hooks/useData.js";
|
|
|
6
6
|
import { formatCost } from "../utils/format.js";
|
|
7
7
|
import { isNarrow, isVeryNarrow } from "../utils/responsive.js";
|
|
8
8
|
|
|
9
|
+
const CHART_MAX_DAYS = 90;
|
|
10
|
+
|
|
9
11
|
interface OverviewViewProps {
|
|
10
12
|
data: TUIData;
|
|
11
13
|
sortBy: SortType;
|
|
@@ -25,6 +27,8 @@ export function OverviewView(props: OverviewViewProps) {
|
|
|
25
27
|
const isNarrowTerminal = () => isNarrow(props.width);
|
|
26
28
|
const isVeryNarrowTerminal = () => isVeryNarrow(props.width);
|
|
27
29
|
|
|
30
|
+
const recentChartData = createMemo(() => props.data.chartData.slice(-CHART_MAX_DAYS));
|
|
31
|
+
|
|
28
32
|
const legendModelLimit = () => isVeryNarrowTerminal() ? 3 : 5;
|
|
29
33
|
const topModelsForLegend = () => props.data.topModels.slice(0, legendModelLimit()).map(m => m.modelId);
|
|
30
34
|
|
|
@@ -62,7 +66,7 @@ export function OverviewView(props: OverviewViewProps) {
|
|
|
62
66
|
return (
|
|
63
67
|
<box flexDirection="column" gap={1}>
|
|
64
68
|
<box flexDirection="column">
|
|
65
|
-
<BarChart data={
|
|
69
|
+
<BarChart data={recentChartData()} width={props.width - 4} height={chartHeight()} />
|
|
66
70
|
<Legend models={topModelsForLegend()} width={props.width} />
|
|
67
71
|
</box>
|
|
68
72
|
|