@calltelemetry/cli 0.4.14 → 0.4.15

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.
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- const VERSION = '0.4.14';
2
+ const VERSION = '0.4.15';
3
3
  import { Command } from 'commander';
4
4
  import { registerStatusCommand } from './commands/status.js';
5
5
  import { registerUpdateCommand } from './commands/update.js';
@@ -1 +1 @@
1
- {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../src/ui/components/AppShell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sFAAsF;IACtF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAA2B,EAC3B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,GACZ,EAAE,aAAa,2CAuDf"}
1
+ {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../src/ui/components/AppShell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sFAAsF;IACtF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAA2B,EAC3B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,GACZ,EAAE,aAAa,2CAwDf"}
@@ -3,10 +3,11 @@ import { useEffect } from 'react';
3
3
  import { Box, Text, useApp, useInput } from 'ink';
4
4
  import { LogLevelBadge } from './LogLevelBadge.js';
5
5
  import { MetricsFooter } from './MetricsFooter.js';
6
- import { useMetrics } from '../context/MetricsContext.js';
6
+ import { useMetrics, useMetricsHistory } from '../context/MetricsContext.js';
7
7
  export function AppShell({ title = 'CallTelemetry CLI', command, children, onBack, isComplete, breadcrumb, logLevel, hideMetrics, }) {
8
8
  const { exit } = useApp();
9
9
  const metrics = useMetrics();
10
+ const metricsHistory = useMetricsHistory();
10
11
  // Auto-exit when complete with no back handler (standalone mode)
11
12
  useEffect(() => {
12
13
  if (isComplete && !onBack) {
@@ -19,6 +20,6 @@ export function AppShell({ title = 'CallTelemetry CLI', command, children, onBac
19
20
  onBack();
20
21
  }
21
22
  }, { isActive: Boolean(isComplete && onBack) });
22
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { borderStyle: "single", paddingX: 1, justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { bold: true, color: "cyan", children: title }), breadcrumb && _jsxs(Text, { dimColor: true, children: [" ", breadcrumb] }), logLevel && logLevel !== 'normal' && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(LogLevelBadge, { level: logLevel })] }))] }), command && _jsx(Text, { dimColor: true, children: command })] }), _jsx(Box, { flexDirection: "column", paddingTop: 1, children: children }), isComplete && onBack && (_jsx(Box, { paddingTop: 1, children: _jsx(Text, { dimColor: true, children: "q Back" }) })), !hideMetrics && metrics && (_jsx(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, marginTop: 1, children: _jsx(MetricsFooter, { metrics: metrics }) }))] }));
23
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { borderStyle: "single", paddingX: 1, justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { bold: true, color: "cyan", children: title }), breadcrumb && _jsxs(Text, { dimColor: true, children: [" ", breadcrumb] }), logLevel && logLevel !== 'normal' && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(LogLevelBadge, { level: logLevel })] }))] }), command && _jsx(Text, { dimColor: true, children: command })] }), _jsx(Box, { flexDirection: "column", paddingTop: 1, children: children }), isComplete && onBack && (_jsx(Box, { paddingTop: 1, children: _jsx(Text, { dimColor: true, children: "q Back" }) })), !hideMetrics && metrics && (_jsx(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, marginTop: 1, children: _jsx(MetricsFooter, { metrics: metrics, history: metricsHistory }) }))] }));
23
24
  }
24
25
  //# sourceMappingURL=AppShell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppShell.js","sourceRoot":"","sources":["../../../src/ui/components/AppShell.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAgB1D,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,GAAG,mBAAmB,EAC3B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,GACG;IACd,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,iEAAiE;IACjE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/B,gEAAgE;IAChE,QAAQ,CACN,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACb,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YACjD,MAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,EAAE,CAC5C,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,GAAG,IACF,WAAW,EAAC,QAAQ,EACpB,QAAQ,EAAE,CAAC,EACX,cAAc,EAAC,eAAe,aAE9B,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,KAAK,GAAQ,EACrC,UAAU,IAAI,MAAC,IAAI,IAAC,QAAQ,yBAAI,UAAU,IAAQ,EAClD,QAAQ,IAAI,QAAQ,KAAK,QAAQ,IAAI,CACpC,8BACE,KAAC,IAAI,oBAAS,EACd,KAAC,aAAa,IAAC,KAAK,EAAE,QAAQ,GAAI,IACjC,CACJ,IACG,EACL,OAAO,IAAI,KAAC,IAAI,IAAC,QAAQ,kBAAE,OAAO,GAAQ,IACvC,EACN,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,YACtC,QAAQ,GACL,EACL,UAAU,IAAI,MAAM,IAAI,CACvB,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,KAAC,IAAI,IAAC,QAAQ,6BAAc,GACxB,CACP,EACA,CAAC,WAAW,IAAI,OAAO,IAAI,CAC1B,KAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,YACpE,KAAC,aAAa,IAAC,OAAO,EAAE,OAAO,GAAI,GAC/B,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"AppShell.js","sourceRoot":"","sources":["../../../src/ui/components/AppShell.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAgB7E,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,GAAG,mBAAmB,EAC3B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,GACG;IACd,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,iEAAiE;IACjE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/B,gEAAgE;IAChE,QAAQ,CACN,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACb,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YACjD,MAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,EAAE,CAC5C,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,GAAG,IACF,WAAW,EAAC,QAAQ,EACpB,QAAQ,EAAE,CAAC,EACX,cAAc,EAAC,eAAe,aAE9B,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,KAAK,GAAQ,EACrC,UAAU,IAAI,MAAC,IAAI,IAAC,QAAQ,yBAAI,UAAU,IAAQ,EAClD,QAAQ,IAAI,QAAQ,KAAK,QAAQ,IAAI,CACpC,8BACE,KAAC,IAAI,oBAAS,EACd,KAAC,aAAa,IAAC,KAAK,EAAE,QAAQ,GAAI,IACjC,CACJ,IACG,EACL,OAAO,IAAI,KAAC,IAAI,IAAC,QAAQ,kBAAE,OAAO,GAAQ,IACvC,EACN,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,YACtC,QAAQ,GACL,EACL,UAAU,IAAI,MAAM,IAAI,CACvB,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,KAAC,IAAI,IAAC,QAAQ,6BAAc,GACxB,CACP,EACA,CAAC,WAAW,IAAI,OAAO,IAAI,CAC1B,KAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,YACpE,KAAC,aAAa,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAI,GACxD,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import type { SystemMetrics } from '../../lib/system.js';
2
2
  interface MetricsFooterProps {
3
3
  metrics: SystemMetrics;
4
+ history: SystemMetrics[];
4
5
  }
5
- export declare function MetricsFooter({ metrics }: MetricsFooterProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function MetricsFooter({ metrics, history }: MetricsFooterProps): import("react/jsx-runtime").JSX.Element;
6
7
  export {};
7
8
  //# sourceMappingURL=MetricsFooter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MetricsFooter.d.ts","sourceRoot":"","sources":["../../../src/ui/components/MetricsFooter.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,UAAU,kBAAkB;IAC1B,OAAO,EAAE,aAAa,CAAC;CACxB;AAcD,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,kBAAkB,2CA8D5D"}
1
+ {"version":3,"file":"MetricsFooter.d.ts","sourceRoot":"","sources":["../../../src/ui/components/MetricsFooter.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,UAAU,kBAAkB;IAC1B,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,kBAAkB,2CAmBrE"}
@@ -1,36 +1,15 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text, useStdout } from 'ink';
3
- function barColor(percent) {
4
- if (percent >= 90)
5
- return 'red';
6
- if (percent >= 70)
7
- return 'yellow';
8
- return 'green';
9
- }
10
- function miniBar(percent, width) {
11
- const clamped = Math.max(0, Math.min(100, percent));
12
- const filledCount = Math.round((clamped / 100) * width);
13
- return { filled: '█'.repeat(filledCount), empty: '░'.repeat(width - filledCount) };
14
- }
15
- export function MetricsFooter({ metrics }) {
2
+ import { Box, useStdout } from 'ink';
3
+ import { Sparkline } from './Sparkline.js';
4
+ export function MetricsFooter({ metrics, history }) {
16
5
  const { stdout } = useStdout();
17
6
  const width = stdout?.columns ?? 80;
18
- const barWidth = 10;
19
- const ramBar = miniBar(metrics.ram.percent, barWidth);
20
- const diskBar = miniBar(metrics.disk.usedPercent, barWidth);
21
- const cpuBar = miniBar(metrics.cpu.percent, barWidth);
22
- const ramColor = barColor(metrics.ram.percent);
23
- const diskColor = barColor(metrics.disk.usedPercent);
24
- const cpuColor = barColor(metrics.cpu.percent);
25
- // Very narrow: percentages only
26
- if (width < 50) {
27
- return (_jsxs(Box, { children: [_jsx(Text, { bold: true, children: "RAM " }), _jsxs(Text, { color: ramColor, bold: true, children: [metrics.ram.percent, "%"] }), _jsx(Text, { children: " " }), _jsx(Text, { bold: true, children: "Disk " }), _jsxs(Text, { color: diskColor, bold: true, children: [metrics.disk.usedPercent, "%"] }), _jsx(Text, { children: " " }), _jsx(Text, { bold: true, children: "CPU " }), _jsxs(Text, { color: cpuColor, bold: true, children: [metrics.cpu.percent, "%"] })] }));
28
- }
29
- // Narrow: bars + percentages, no detail labels
30
- if (width < 70) {
31
- return (_jsxs(Box, { children: [_jsx(Text, { bold: true, children: "RAM " }), _jsx(Text, { color: ramColor, children: ramBar.filled }), _jsx(Text, { dimColor: true, children: ramBar.empty }), _jsxs(Text, { color: ramColor, bold: true, children: [" ", metrics.ram.percent, "%"] }), _jsx(Text, { children: " " }), _jsx(Text, { bold: true, children: "Disk " }), _jsx(Text, { color: diskColor, children: diskBar.filled }), _jsx(Text, { dimColor: true, children: diskBar.empty }), _jsxs(Text, { color: diskColor, bold: true, children: [" ", metrics.disk.usedPercent, "%"] }), _jsx(Text, { children: " " }), _jsx(Text, { bold: true, children: "CPU " }), _jsx(Text, { color: cpuColor, children: cpuBar.filled }), _jsx(Text, { dimColor: true, children: cpuBar.empty }), _jsxs(Text, { color: cpuColor, bold: true, children: [" ", metrics.cpu.percent, "%"] })] }));
32
- }
33
- // Full: bars + percentages + detail labels
34
- return (_jsxs(Box, { children: [_jsx(Text, { bold: true, children: "RAM " }), _jsx(Text, { color: ramColor, children: ramBar.filled }), _jsx(Text, { dimColor: true, children: ramBar.empty }), _jsxs(Text, { color: ramColor, bold: true, children: [" ", `${metrics.ram.percent}%`.padEnd(4)] }), _jsxs(Text, { dimColor: true, children: [metrics.ram.label, " "] }), _jsx(Text, { bold: true, children: "Disk " }), _jsx(Text, { color: diskColor, children: diskBar.filled }), _jsx(Text, { dimColor: true, children: diskBar.empty }), _jsxs(Text, { color: diskColor, bold: true, children: [" ", `${metrics.disk.usedPercent}%`.padEnd(4)] }), _jsxs(Text, { dimColor: true, children: [metrics.disk.label, " "] }), _jsx(Text, { bold: true, children: "CPU " }), _jsx(Text, { color: cpuColor, children: cpuBar.filled }), _jsx(Text, { dimColor: true, children: cpuBar.empty }), _jsxs(Text, { color: cpuColor, bold: true, children: [" ", `${metrics.cpu.percent}%`.padEnd(4)] }), _jsx(Text, { dimColor: true, children: metrics.cpu.label })] }));
7
+ // Sparkline width adapts to terminal — leave room for label (11) + detail (~12)
8
+ const sparkWidth = Math.max(10, Math.min(40, width - 30));
9
+ const ramData = history.map(m => m.ram.percent);
10
+ const cpuData = history.map(m => m.cpu.percent);
11
+ const diskData = history.map(m => m.disk.usedPercent);
12
+ const loadData = history.map(m => m.cpu.load1m);
13
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Sparkline, { data: ramData, width: sparkWidth, label: "RAM", detail: `${metrics.ram.percent}% ${metrics.ram.label}`, color: "magenta" }), _jsx(Sparkline, { data: cpuData, width: sparkWidth, label: "CPU", detail: `${metrics.cpu.percent}% ${metrics.cpu.label}`, color: "blue" }), _jsx(Sparkline, { data: diskData, width: sparkWidth, label: "Disk", detail: `${metrics.disk.usedPercent}% ${metrics.disk.label}`, color: "yellow" }), _jsx(Sparkline, { data: loadData, width: sparkWidth, label: "Load", detail: `${metrics.cpu.load1m.toFixed(1)}`, color: "green" })] }));
35
14
  }
36
15
  //# sourceMappingURL=MetricsFooter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MetricsFooter.js","sourceRoot":"","sources":["../../../src/ui/components/MetricsFooter.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MetricsFooter.js","sourceRoot":"","sources":["../../../src/ui/components/MetricsFooter.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAQ,SAAS,EAAE,MAAM,KAAK,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAQ3C,MAAM,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,EAAsB;IACpE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;IACpC,gFAAgF;IAChF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEhD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,SAAS,IAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAC,KAAK,EAAC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAC,SAAS,GAAG,EACnI,KAAC,SAAS,IAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAC,KAAK,EAAC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAC,MAAM,GAAG,EAChI,KAAC,SAAS,IAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAC,MAAM,EAAC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAC,QAAQ,GAAG,EAC1I,KAAC,SAAS,IAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAC,MAAM,EAAC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAC,OAAO,GAAG,IACnH,CACP,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Sparkline.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Sparkline.tsx"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,KAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAc,EAAE,EAAE,cAAc,2CAwB5F"}
1
+ {"version":3,"file":"Sparkline.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Sparkline.tsx"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,KAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAc,EAAE,EAAE,cAAc,2CAyB5F"}
@@ -2,10 +2,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box, Text } from 'ink';
3
3
  const BLOCKS = ['▁', '▂', '▃', '▄', '▅', '▆', '▇', '█'];
4
4
  export function Sparkline({ data, width = 24, label, detail, color = 'cyan' }) {
5
- // Take last `width` data points, pad with zeros if shorter
5
+ // Take last `width` data points; pad with first value (not zero) if shorter
6
6
  const visible = data.length > width ? data.slice(-width) : data;
7
+ const fillValue = visible.length > 0 ? visible[0] : 0;
7
8
  const padded = visible.length < width
8
- ? [...Array(width - visible.length).fill(0), ...visible]
9
+ ? [...Array(width - visible.length).fill(fillValue), ...visible]
9
10
  : visible;
10
11
  const min = Math.min(...padded);
11
12
  const max = Math.max(...padded);
@@ -1 +1 @@
1
- {"version":3,"file":"Sparkline.js","sourceRoot":"","sources":["../../../src/ui/components/Sparkline.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAexD,MAAM,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,EAAkB;IAC3F,2DAA2D;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK;QACnC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAS,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC;QAChE,CAAC,CAAC,OAAO,CAAC;IAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;IAExB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5B,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,OAAO,CACL,MAAC,GAAG,eACD,KAAK,IAAI,KAAC,IAAI,IAAC,IAAI,kBAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EAC9C,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAAG,IAAI,GAAQ,EAChC,MAAM,IAAI,KAAC,IAAI,IAAC,QAAQ,kBAAE,KAAK,MAAM,EAAE,GAAQ,IAC5C,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Sparkline.js","sourceRoot":"","sources":["../../../src/ui/components/Sparkline.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAexD,MAAM,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,EAAkB;IAC3F,4EAA4E;IAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK;QACnC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAS,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC;QACxE,CAAC,CAAC,OAAO,CAAC;IAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;IAExB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5B,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,OAAO,CACL,MAAC,GAAG,eACD,KAAK,IAAI,KAAC,IAAI,IAAC,IAAI,kBAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EAC9C,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAAG,IAAI,GAAQ,EAChC,MAAM,IAAI,KAAC,IAAI,IAAC,QAAQ,kBAAE,KAAK,MAAM,EAAE,GAAQ,IAC5C,CACP,CAAC;AACJ,CAAC"}
@@ -4,4 +4,5 @@ export declare function MetricsProvider({ children }: {
4
4
  children: React.ReactNode;
5
5
  }): import("react/jsx-runtime").JSX.Element;
6
6
  export declare function useMetrics(): SystemMetrics | undefined;
7
+ export declare function useMetricsHistory(): SystemMetrics[];
7
8
  //# sourceMappingURL=MetricsContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MetricsContext.d.ts","sourceRoot":"","sources":["../../../src/ui/context/MetricsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAGlE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQzD,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAS1E;AAED,wBAAgB,UAAU,IAAI,aAAa,GAAG,SAAS,CAEtD"}
1
+ {"version":3,"file":"MetricsContext.d.ts","sourceRoot":"","sources":["../../../src/ui/context/MetricsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuF,MAAM,OAAO,CAAC;AAE5G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAYzD,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAkC1E;AAED,wBAAgB,UAAU,IAAI,aAAa,GAAG,SAAS,CAEtD;AAED,wBAAgB,iBAAiB,IAAI,aAAa,EAAE,CAEnD"}
@@ -1,15 +1,44 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createContext, useContext, useMemo } from 'react';
3
- import { usePolling } from '../hooks/usePolling.js';
2
+ import { createContext, useContext, useMemo, useRef, useState, useEffect, useCallback } from 'react';
4
3
  import { getSystemMetrics } from '../../lib/system.js';
5
- const MetricsContext = createContext({ metrics: undefined });
4
+ /** Maximum history samples kept (10s interval × 60 = 10 minutes). */
5
+ const MAX_HISTORY = 60;
6
+ const MetricsContext = createContext({ metrics: undefined, history: [] });
6
7
  export function MetricsProvider({ children }) {
7
- const { data: metrics } = usePolling(getSystemMetrics, 10_000, true);
8
- // Memoize the context value to prevent unnecessary consumer re-renders
9
- const value = useMemo(() => ({ metrics }), [metrics]);
8
+ const [metrics, setMetrics] = useState();
9
+ const [history, setHistory] = useState([]);
10
+ const inFlightRef = useRef(false);
11
+ const poll = useCallback(async () => {
12
+ if (inFlightRef.current)
13
+ return;
14
+ inFlightRef.current = true;
15
+ try {
16
+ const m = await getSystemMetrics();
17
+ setMetrics(m);
18
+ setHistory(prev => {
19
+ const next = [...prev, m];
20
+ return next.length > MAX_HISTORY ? next.slice(-MAX_HISTORY) : next;
21
+ });
22
+ }
23
+ catch {
24
+ // ignore
25
+ }
26
+ finally {
27
+ inFlightRef.current = false;
28
+ }
29
+ }, []);
30
+ useEffect(() => {
31
+ poll();
32
+ const timer = setInterval(poll, 10_000);
33
+ return () => clearInterval(timer);
34
+ }, [poll]);
35
+ const value = useMemo(() => ({ metrics, history }), [metrics, history]);
10
36
  return (_jsx(MetricsContext.Provider, { value: value, children: children }));
11
37
  }
12
38
  export function useMetrics() {
13
39
  return useContext(MetricsContext).metrics;
14
40
  }
41
+ export function useMetricsHistory() {
42
+ return useContext(MetricsContext).history;
43
+ }
15
44
  //# sourceMappingURL=MetricsContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MetricsContext.js","sourceRoot":"","sources":["../../../src/ui/context/MetricsContext.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAOvD,MAAM,cAAc,GAAG,aAAa,CAAsB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAElF,MAAM,UAAU,eAAe,CAAC,EAAE,QAAQ,EAAiC;IACzE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAgB,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACpF,uEAAuE;IACvE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,OAAO,CACL,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAClC,QAAQ,GACe,CAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"MetricsContext.js","sourceRoot":"","sources":["../../../src/ui/context/MetricsContext.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,qEAAqE;AACrE,MAAM,WAAW,GAAG,EAAE,CAAC;AAOvB,MAAM,cAAc,GAAG,aAAa,CAAsB,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;AAE/F,MAAM,UAAU,eAAe,CAAC,EAAE,QAAQ,EAAiC;IACzE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAA6B,CAAC;IACpE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAkB,EAAE,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAElC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAClC,IAAI,WAAW,CAAC,OAAO;YAAE,OAAO;QAChC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,gBAAgB,EAAE,CAAC;YACnC,UAAU,CAAC,CAAC,CAAC,CAAC;YACd,UAAU,CAAC,IAAI,CAAC,EAAE;gBAChB,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC1B,OAAO,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrE,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;gBAAS,CAAC;YACT,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;QAC9B,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,EAAE,CAAC;QACP,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACxE,OAAO,CACL,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAClC,QAAQ,GACe,CAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;AAC5C,CAAC"}
@@ -71,7 +71,7 @@ export function LoadTestRunView({ userConfig, onComplete, onBack }) {
71
71
  };
72
72
  // Collect initial sample immediately
73
73
  poll();
74
- const interval = setInterval(poll, 2000);
74
+ const interval = setInterval(poll, 1000);
75
75
  return () => {
76
76
  cancelled = true;
77
77
  clearInterval(interval);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@calltelemetry/cli",
3
- "version": "0.4.14",
3
+ "version": "0.4.15",
4
4
  "description": "CallTelemetry appliance management CLI",
5
5
  "type": "module",
6
6
  "bin": {