lumira 0.7.1 → 0.7.2
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/README.md +14 -8
- package/dist/config.js +39 -5
- package/dist/config.js.map +1 -1
- package/dist/normalize.d.ts +11 -1
- package/dist/normalize.js +49 -7
- package/dist/normalize.js.map +1 -1
- package/dist/parsers/token-speed.d.ts +1 -1
- package/dist/parsers/token-speed.js.map +1 -1
- package/dist/render/colors.d.ts +13 -1
- package/dist/render/colors.js +17 -6
- package/dist/render/colors.js.map +1 -1
- package/dist/render/line1.js +14 -1
- package/dist/render/line1.js.map +1 -1
- package/dist/render/line2.js +31 -34
- package/dist/render/line2.js.map +1 -1
- package/dist/render/line3.js +1 -1
- package/dist/render/minimal.js +7 -1
- package/dist/render/minimal.js.map +1 -1
- package/dist/render/powerline-line1.js +28 -1
- package/dist/render/powerline-line1.js.map +1 -1
- package/dist/render/powerline-line2.js +20 -11
- package/dist/render/powerline-line2.js.map +1 -1
- package/dist/render/shared.d.ts +11 -1
- package/dist/render/shared.js +16 -6
- package/dist/render/shared.js.map +1 -1
- package/dist/types.d.ts +23 -1
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ Interactive wizard — preset, theme, icons — previewed live before write.
|
|
|
24
24
|

|
|
25
25
|

|
|
26
26
|
|
|
27
|
-
>
|
|
27
|
+
> 1,700+ downloads in the first month — [share your setup](https://github.com/cativo23/lumira/discussions) in Discussions.
|
|
28
28
|
|
|
29
29
|
## Table of contents
|
|
30
30
|
|
|
@@ -51,12 +51,12 @@ Claude Code's default statusline shows the model name and current directory. Tha
|
|
|
51
51
|
- **Active tools, agents, and todo progress** — parsed from the live transcript, updated every render.
|
|
52
52
|
- **Cross-platform** — same config drives Claude Code and Qwen Code; Qwen sessions auto-collapse to single-line.
|
|
53
53
|
|
|
54
|
-
Inspired by [claude-hud](https://github.com/jarrodwatts/claude-hud); takes a different stance on opt-in powerline rendering, theme contrast guarantees, and
|
|
54
|
+
Inspired by [claude-hud](https://github.com/jarrodwatts/claude-hud); takes a different stance on opt-in powerline rendering, theme contrast guarantees, and Qwen Code compatibility.
|
|
55
55
|
|
|
56
56
|
## Requirements
|
|
57
57
|
|
|
58
58
|
- **Node ≥18**
|
|
59
|
-
- **Nerd Font** (recommended) — for
|
|
59
|
+
- **Nerd Font** (recommended) — for branch, folder, model, and spinner icons. Falls back to plain glyphs via `icons: emoji` or `icons: none`.
|
|
60
60
|
- **Truecolor terminal** (for themes / powerline) — auto-detected via `COLORTERM=truecolor`. 256-color terminals get a nearest-index projection; named-ANSI terminals fall back to default colors silently.
|
|
61
61
|
|
|
62
62
|
## Features
|
|
@@ -253,13 +253,19 @@ Create `~/.config/lumira/config.json`:
|
|
|
253
253
|
"version": true,
|
|
254
254
|
"linesChanged": true,
|
|
255
255
|
"memory": true,
|
|
256
|
-
"health": false
|
|
256
|
+
"health": false,
|
|
257
|
+
"contextWarningThreshold": 70,
|
|
258
|
+
"contextCriticalThreshold": 85
|
|
257
259
|
}
|
|
258
260
|
}
|
|
259
261
|
```
|
|
260
262
|
|
|
261
263
|
All fields are optional — defaults are shown above. `display.health` defaults to `false` (opt-in widget).
|
|
262
264
|
|
|
265
|
+
**Context bar thresholds** — `contextWarningThreshold` (default 70) and `contextCriticalThreshold` (default 85) control when the bar transitions through yellow/orange/red. Both are clamped to `[0, 100]` and `warning < critical` is required (invalid pairs fall back to defaults with a one-shot stderr warning). Lower them for earlier warnings, raise them if your workflow tolerates fuller buffers.
|
|
266
|
+
|
|
267
|
+
> **Migration note (post-0.7.1):** default color transitions shifted from `50/65/80` to `50/70/85`. The bar now stays yellow up to 70% (was 65%) and orange up to 85% (was 80%) before flashing red. To restore the previous behavior, set `"contextWarningThreshold": 65, "contextCriticalThreshold": 80` in your config.
|
|
268
|
+
|
|
263
269
|
### CLI Flags
|
|
264
270
|
|
|
265
271
|
```bash
|
|
@@ -314,15 +320,15 @@ PRs welcome — particularly for new themes (one of the most common contribution
|
|
|
314
320
|
|
|
315
321
|
### What's next
|
|
316
322
|
|
|
317
|
-
- **
|
|
318
|
-
- **
|
|
319
|
-
- **Backlog** — incremental transcript parsing for very large sessions (
|
|
323
|
+
- **v1.0** — soak window on v0.7.x, then tagging stable. CLI flags, preset names, and config schema are considered frozen from this point.
|
|
324
|
+
- **Themes** — community theme contributions welcome via the theme PR template.
|
|
325
|
+
- **Backlog** — incremental transcript parsing for very large sessions (deferred; full re-parse stays under budget for real-world transcripts).
|
|
320
326
|
|
|
321
327
|
For security issues, see [SECURITY.md](SECURITY.md).
|
|
322
328
|
|
|
323
329
|
## Credits
|
|
324
330
|
|
|
325
|
-
|
|
331
|
+
Migrated from [claude-setup](https://github.com/cativo23/claude-setup) statusline.
|
|
326
332
|
|
|
327
333
|
Theme palettes drawn from upstream specs: [Dracula](https://draculatheme.com), [Nord](https://www.nordtheme.com), [Tokyo Night](https://github.com/folke/tokyonight.nvim), [Catppuccin](https://catppuccin.com), [Monokai](https://monokai.pro), [Gruvbox](https://github.com/morhetz/gruvbox), [Solarized](https://ethanschoonover.com/solarized).
|
|
328
334
|
|
package/dist/config.js
CHANGED
|
@@ -1,13 +1,39 @@
|
|
|
1
1
|
import { readFileSync, existsSync, writeFileSync, renameSync, mkdirSync } from 'node:fs';
|
|
2
2
|
import { join, dirname } from 'node:path';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
|
-
import { DEFAULT_CONFIG, DEFAULT_DISPLAY, POWERLINE_STYLE_NAMES } from './types.js';
|
|
4
|
+
import { DEFAULT_CONFIG, DEFAULT_DISPLAY, DEFAULT_CONTEXT_WARNING_THRESHOLD, DEFAULT_CONTEXT_CRITICAL_THRESHOLD, POWERLINE_STYLE_NAMES } from './types.js';
|
|
5
5
|
// Module-level flag: fires the qwen→minimal deprecation warning once per
|
|
6
6
|
// Node process. Process-scoped by design — tests must run in forked workers
|
|
7
7
|
// (see vitest.config.ts `pool: 'forks'`). Issue #20.
|
|
8
8
|
let qwenWarningShown = false;
|
|
9
|
+
let thresholdWarningShown = false;
|
|
9
10
|
/** Test-only — resets the process-scoped qwenWarningShown flag. Do not call in production. */
|
|
10
|
-
export function _resetMigrationFlags() { qwenWarningShown = false; }
|
|
11
|
+
export function _resetMigrationFlags() { qwenWarningShown = false; thresholdWarningShown = false; }
|
|
12
|
+
const clampPct = (n) => Math.max(0, Math.min(100, n));
|
|
13
|
+
/**
|
|
14
|
+
* Validate context-bar threshold pair. Clamps each to [0, 100]. If `warning`
|
|
15
|
+
* is not strictly less than `critical` after clamping, emits a one-shot warn
|
|
16
|
+
* to stderr and returns the defaults (70/85). Falls back to defaults if a
|
|
17
|
+
* value is missing or non-finite.
|
|
18
|
+
*/
|
|
19
|
+
function resolveThresholds(rawWarn, rawCrit) {
|
|
20
|
+
const hasWarn = typeof rawWarn === 'number' && Number.isFinite(rawWarn);
|
|
21
|
+
const hasCrit = typeof rawCrit === 'number' && Number.isFinite(rawCrit);
|
|
22
|
+
if (!hasWarn && !hasCrit) {
|
|
23
|
+
return { warning: DEFAULT_CONTEXT_WARNING_THRESHOLD, critical: DEFAULT_CONTEXT_CRITICAL_THRESHOLD };
|
|
24
|
+
}
|
|
25
|
+
const warning = hasWarn ? clampPct(rawWarn) : DEFAULT_CONTEXT_WARNING_THRESHOLD;
|
|
26
|
+
const critical = hasCrit ? clampPct(rawCrit) : DEFAULT_CONTEXT_CRITICAL_THRESHOLD;
|
|
27
|
+
if (warning >= critical) {
|
|
28
|
+
if (!thresholdWarningShown) {
|
|
29
|
+
process.stderr.write(`[lumira] context thresholds invalid (warning=${warning}, critical=${critical}); ` +
|
|
30
|
+
`falling back to defaults (${DEFAULT_CONTEXT_WARNING_THRESHOLD}/${DEFAULT_CONTEXT_CRITICAL_THRESHOLD})\n`);
|
|
31
|
+
thresholdWarningShown = true;
|
|
32
|
+
}
|
|
33
|
+
return { warning: DEFAULT_CONTEXT_WARNING_THRESHOLD, critical: DEFAULT_CONTEXT_CRITICAL_THRESHOLD };
|
|
34
|
+
}
|
|
35
|
+
return { warning, critical };
|
|
36
|
+
}
|
|
11
37
|
export function loadConfig(configDir = join(homedir(), '.config', 'lumira')) {
|
|
12
38
|
const p = join(configDir, 'config.json');
|
|
13
39
|
if (!existsSync(p))
|
|
@@ -43,10 +69,14 @@ function mergeConfig(rawIn) {
|
|
|
43
69
|
applyPreset(result, raw.preset);
|
|
44
70
|
// Then overlay user's explicit display toggles (user wins over preset)
|
|
45
71
|
if (raw.display && typeof raw.display === 'object') {
|
|
72
|
+
const rawDisplay = raw.display;
|
|
46
73
|
for (const k of Object.keys(DEFAULT_DISPLAY)) {
|
|
47
|
-
if (typeof
|
|
48
|
-
result.display[k] =
|
|
74
|
+
if (typeof rawDisplay[k] === 'boolean')
|
|
75
|
+
result.display[k] = rawDisplay[k];
|
|
49
76
|
}
|
|
77
|
+
const { warning, critical } = resolveThresholds(rawDisplay.contextWarningThreshold, rawDisplay.contextCriticalThreshold);
|
|
78
|
+
result.display.contextWarningThreshold = warning;
|
|
79
|
+
result.display.contextCriticalThreshold = critical;
|
|
50
80
|
}
|
|
51
81
|
if (typeof raw.theme === 'string' && raw.theme.length > 0)
|
|
52
82
|
result.theme = raw.theme;
|
|
@@ -112,8 +142,12 @@ export function applyPreset(r, preset) {
|
|
|
112
142
|
const def = PRESET_DEFS[preset];
|
|
113
143
|
r.preset = preset;
|
|
114
144
|
r.layout = def.layout;
|
|
145
|
+
// PRESET_DEFS only set boolean toggles — threshold numbers are not
|
|
146
|
+
// overridable via preset. The runtime guard keeps the cast narrow and
|
|
147
|
+
// catches accidental non-boolean entries in PRESET_DEFS.
|
|
115
148
|
for (const [k, v] of Object.entries(def.display)) {
|
|
116
|
-
|
|
149
|
+
if (typeof v === 'boolean')
|
|
150
|
+
r.display[k] = v;
|
|
117
151
|
}
|
|
118
152
|
}
|
|
119
153
|
export function mergeCliFlags(config, argv) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAyD,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/normalize.d.ts
CHANGED
|
@@ -49,6 +49,8 @@ export interface NormalizedInput {
|
|
|
49
49
|
agentName?: string;
|
|
50
50
|
/** Worktree name */
|
|
51
51
|
worktreeName?: string;
|
|
52
|
+
/** Reasoning effort level (≥ 2.1.x stdin, falls back to transcript regex) */
|
|
53
|
+
effortLevel?: string;
|
|
52
54
|
/** Rate limits (Claude only) */
|
|
53
55
|
rateLimits?: {
|
|
54
56
|
fiveHour?: {
|
|
@@ -65,6 +67,14 @@ export interface NormalizedInput {
|
|
|
65
67
|
/** Escape hatch: access raw platform data for platform-specific widgets */
|
|
66
68
|
raw: RawInput;
|
|
67
69
|
}
|
|
68
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* Strip terminal control characters and bidirectional/zero-width Unicode from
|
|
72
|
+
* untrusted strings.
|
|
73
|
+
* - C0/C1 + DEL — escape sequences, ANSI, etc.
|
|
74
|
+
* - U+200B-200F — zero-width and LTR/RTL marks
|
|
75
|
+
* - U+202A-202E — explicit directional embedding/overrides (visual spoofing)
|
|
76
|
+
* - U+2028/2029 — line/paragraph separators
|
|
77
|
+
* - U+2066-2069 — directional isolates
|
|
78
|
+
*/
|
|
69
79
|
export declare function sanitizeTermString(s: string): string;
|
|
70
80
|
export declare function normalize(input: RawInput): NormalizedInput;
|
package/dist/normalize.js
CHANGED
|
@@ -13,10 +13,20 @@ export function isQwenInput(input) {
|
|
|
13
13
|
const first = Object.values(models)[0];
|
|
14
14
|
return first != null && typeof first === 'object' && 'api' in first;
|
|
15
15
|
}
|
|
16
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Strip terminal control characters and bidirectional/zero-width Unicode from
|
|
18
|
+
* untrusted strings.
|
|
19
|
+
* - C0/C1 + DEL — escape sequences, ANSI, etc.
|
|
20
|
+
* - U+200B-200F — zero-width and LTR/RTL marks
|
|
21
|
+
* - U+202A-202E — explicit directional embedding/overrides (visual spoofing)
|
|
22
|
+
* - U+2028/2029 — line/paragraph separators
|
|
23
|
+
* - U+2066-2069 — directional isolates
|
|
24
|
+
*/
|
|
17
25
|
export function sanitizeTermString(s) {
|
|
18
|
-
return s.replace(/[\x00-\x1f\x7f-\x9f]/g, '');
|
|
26
|
+
return s.replace(/[\x00-\x1f\x7f-\x9f\u200b-\u200f\u202a-\u202e\u2028\u2029\u2066-\u2069]/g, '');
|
|
19
27
|
}
|
|
28
|
+
/** Allowed values for the reasoning effort level field (CC ≥ 2.1.x). */
|
|
29
|
+
const VALID_EFFORT_LEVELS = new Set(['low', 'medium', 'high', 'xhigh', 'max']);
|
|
20
30
|
export function normalize(input) {
|
|
21
31
|
const platform = isQwenInput(input) ? 'qwen-code' : 'claude-code';
|
|
22
32
|
const qwen = isQwenInput(input) ? input : null;
|
|
@@ -40,7 +50,33 @@ export function normalize(input) {
|
|
|
40
50
|
}
|
|
41
51
|
}
|
|
42
52
|
else if (claude) {
|
|
43
|
-
|
|
53
|
+
// Modern Claude Code (≥ 2.1.x) nests cache fields under current_usage.
|
|
54
|
+
// Fall back to the legacy top-level path for older payloads.
|
|
55
|
+
const cu = claude.context_window?.current_usage;
|
|
56
|
+
const nested = typeof cu === 'object' ? cu?.cache_read_input_tokens : undefined;
|
|
57
|
+
cached = nested ?? claude.context_window?.cache_read_input_tokens;
|
|
58
|
+
}
|
|
59
|
+
// Per-turn cache denominator (Claude only): fresh input + cache_read + cache_creation
|
|
60
|
+
// for the current turn. Used to compute a meaningful cache hit rate, since
|
|
61
|
+
// `cached` is per-turn while `total_input_tokens` is cumulative across the session.
|
|
62
|
+
// Falls back to total_input_tokens for legacy payloads without current_usage.
|
|
63
|
+
let cacheTurnDenominator;
|
|
64
|
+
if (claude) {
|
|
65
|
+
const cu = claude.context_window?.current_usage;
|
|
66
|
+
if (typeof cu === 'object' && cu) {
|
|
67
|
+
const fresh = cu.input_tokens ?? 0;
|
|
68
|
+
const read = cu.cache_read_input_tokens ?? 0;
|
|
69
|
+
const create = cu.cache_creation_input_tokens ?? 0;
|
|
70
|
+
const total = fresh + read + create;
|
|
71
|
+
if (total > 0)
|
|
72
|
+
cacheTurnDenominator = total;
|
|
73
|
+
}
|
|
74
|
+
// Legacy fallback: top-level totals (pre-2.1.x payloads, or current_usage
|
|
75
|
+
// without cache fields). The Math.min(100, ...) cap below protects against
|
|
76
|
+
// overflow when cache_read accumulates past total_input in long sessions.
|
|
77
|
+
if (cacheTurnDenominator == null && inputTokens > 0) {
|
|
78
|
+
cacheTurnDenominator = inputTokens;
|
|
79
|
+
}
|
|
44
80
|
}
|
|
45
81
|
// Performance (Qwen only)
|
|
46
82
|
let performance;
|
|
@@ -74,9 +110,10 @@ export function normalize(input) {
|
|
|
74
110
|
: undefined,
|
|
75
111
|
};
|
|
76
112
|
}
|
|
77
|
-
// Cache hit rate (Claude only)
|
|
78
|
-
|
|
79
|
-
|
|
113
|
+
// Cache hit rate (Claude only) — denominator is the current turn's total input
|
|
114
|
+
// (fresh + cache_read + cache_creation), not the cumulative session total.
|
|
115
|
+
const cacheHitRate = (cached != null && cached > 0 && cacheTurnDenominator && platform === 'claude-code')
|
|
116
|
+
? Math.min(100, Math.round((cached / cacheTurnDenominator) * 100))
|
|
80
117
|
: undefined;
|
|
81
118
|
return {
|
|
82
119
|
platform,
|
|
@@ -92,7 +129,9 @@ export function normalize(input) {
|
|
|
92
129
|
},
|
|
93
130
|
context: {
|
|
94
131
|
usedPercentage: input.context_window.used_percentage,
|
|
95
|
-
windowSize: qwen
|
|
132
|
+
windowSize: qwen
|
|
133
|
+
? qwen.context_window.context_window_size
|
|
134
|
+
: claude?.context_window?.context_window_size,
|
|
96
135
|
},
|
|
97
136
|
cost: claude ? claude.cost?.total_cost_usd : undefined,
|
|
98
137
|
durationMs: claude ? claude.cost?.total_duration_ms : undefined,
|
|
@@ -104,6 +143,9 @@ export function normalize(input) {
|
|
|
104
143
|
sessionName: input.session_name ? sanitizeTermString(input.session_name) : undefined,
|
|
105
144
|
outputStyle: input.output_style?.name ? sanitizeTermString(input.output_style.name) : undefined,
|
|
106
145
|
agentName: input.agent?.name ? sanitizeTermString(input.agent.name) : undefined,
|
|
146
|
+
effortLevel: claude?.effort?.level && VALID_EFFORT_LEVELS.has(claude.effort.level)
|
|
147
|
+
? sanitizeTermString(claude.effort.level)
|
|
148
|
+
: undefined,
|
|
107
149
|
worktreeName: input.worktree?.name ? sanitizeTermString(input.worktree.name) : undefined,
|
|
108
150
|
rateLimits,
|
|
109
151
|
cacheHitRate,
|
package/dist/normalize.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,yDAAyD;AACzD,kDAAkD;AAClD,yDAAyD;AAIzD,MAAM,UAAU,WAAW,CAAC,KAAe;IACzC,MAAM,GAAG,GAAG,KAA2C,CAAC;IACxD,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAChG,MAAM,MAAM,GAAI,GAAG,CAAC,OAAgD,CAAC,MAAM,CAAC;IAC5E,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC;AACtE,CAAC;
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ interface ContextWindow {
|
|
|
2
2
|
used_percentage: number;
|
|
3
3
|
remaining_percentage: number;
|
|
4
4
|
current_usage?: number | {
|
|
5
|
-
output_tokens
|
|
5
|
+
output_tokens?: number;
|
|
6
6
|
};
|
|
7
7
|
}
|
|
8
8
|
export declare function getTokenSpeed(contextWindow: ContextWindow, cacheDir?: string): number | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-speed.js","sourceRoot":"","sources":["../../src/parsers/token-speed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,eAAe,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"token-speed.js","sourceRoot":"","sources":["../../src/parsers/token-speed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,eAAe,GAAG,IAAI,CAAC;AAO7B,MAAM,UAAU,aAAa,CAAC,aAA4B,EAAE,WAAmB,MAAM,EAAE;IACrF,MAAM,EAAE,GAAG,aAAa,EAAE,aAAa,CAAC;IACxC,MAAM,YAAY,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,aAAa,CAAC;IACrE,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,YAAY,CAAa,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;IAE9E,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,IAAI,QAAQ,IAAI,YAAY,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QACzD,MAAM,OAAO,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,IAAI,WAAW,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,IAAI,eAAe,EAAE,CAAC;YACjE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,aAAa,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnE,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/render/colors.d.ts
CHANGED
|
@@ -16,5 +16,17 @@ export interface Colors {
|
|
|
16
16
|
export declare function createColors(mode: ColorMode, theme?: import('../themes.js').ThemePalette | null): Colors;
|
|
17
17
|
export declare function stripAnsi(str: string): string;
|
|
18
18
|
export declare function detectColorMode(): ColorMode;
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Map a context-fill percentage to its alarm color.
|
|
21
|
+
*
|
|
22
|
+
* Zones (with default 70/85): green<50, yellow 50–70, orange 70–85, red 85+.
|
|
23
|
+
*
|
|
24
|
+
* **Asymmetry by design:** the green→yellow boundary is fixed at 50%, the
|
|
25
|
+
* "universally healthy" mark. So if a user sets `warning ≤ 50`, the yellow
|
|
26
|
+
* zone collapses entirely and the bar jumps green→orange at `warning`. That's
|
|
27
|
+
* consistent with the field's contract ("percentage at which the bar turns
|
|
28
|
+
* orange") — yellow is just a soft pre-alarm buffer that only exists when
|
|
29
|
+
* there's room for it between 50 and `warning`.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getContextColor(pct: number, warning?: number, critical?: number): ColorName;
|
|
20
32
|
export declare function getQuotaColor(pct: number): ColorName;
|
package/dist/render/colors.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DEFAULT_CONTEXT_WARNING_THRESHOLD, DEFAULT_CONTEXT_CRITICAL_THRESHOLD } from '../types.js';
|
|
1
2
|
const RST = '\x1b[0m';
|
|
2
3
|
export function createColors(mode, theme) {
|
|
3
4
|
const wrap = (code) => (s) => `${code}${s}${RST}`;
|
|
@@ -60,12 +61,22 @@ export function detectColorMode() {
|
|
|
60
61
|
return '256';
|
|
61
62
|
return 'named';
|
|
62
63
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Map a context-fill percentage to its alarm color.
|
|
66
|
+
*
|
|
67
|
+
* Zones (with default 70/85): green<50, yellow 50–70, orange 70–85, red 85+.
|
|
68
|
+
*
|
|
69
|
+
* **Asymmetry by design:** the green→yellow boundary is fixed at 50%, the
|
|
70
|
+
* "universally healthy" mark. So if a user sets `warning ≤ 50`, the yellow
|
|
71
|
+
* zone collapses entirely and the bar jumps green→orange at `warning`. That's
|
|
72
|
+
* consistent with the field's contract ("percentage at which the bar turns
|
|
73
|
+
* orange") — yellow is just a soft pre-alarm buffer that only exists when
|
|
74
|
+
* there's room for it between 50 and `warning`.
|
|
75
|
+
*/
|
|
76
|
+
export function getContextColor(pct, warning = DEFAULT_CONTEXT_WARNING_THRESHOLD, critical = DEFAULT_CONTEXT_CRITICAL_THRESHOLD) {
|
|
77
|
+
if (pct < warning)
|
|
78
|
+
return pct < 50 ? 'green' : 'yellow';
|
|
79
|
+
if (pct < critical)
|
|
69
80
|
return 'orange';
|
|
70
81
|
return 'blinkRed';
|
|
71
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/render/colors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/render/colors.ts"],"names":[],"mappings":"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"}
|
package/dist/render/line1.js
CHANGED
|
@@ -3,12 +3,13 @@ import { pathToFileURL } from 'node:url';
|
|
|
3
3
|
import { fitSegments, truncField } from './text.js';
|
|
4
4
|
import { formatGitChanges, SEP } from './shared.js';
|
|
5
5
|
import { hyperlink } from './hyperlink.js';
|
|
6
|
+
import { formatDuration } from '../utils/format.js';
|
|
6
7
|
function getActiveTodo(transcript) {
|
|
7
8
|
const inProgress = transcript.todos.filter(t => t.status === 'in_progress');
|
|
8
9
|
return inProgress[0]?.content;
|
|
9
10
|
}
|
|
10
11
|
export function renderLine1(ctx, c) {
|
|
11
|
-
const { input, git, transcript, config: { display }, cols, icons } = ctx;
|
|
12
|
+
const { input, git, transcript, config: { display }, cols, icons, memory, tokenSpeed } = ctx;
|
|
12
13
|
const left = [];
|
|
13
14
|
const right = [];
|
|
14
15
|
// Model
|
|
@@ -42,6 +43,18 @@ export function renderLine1(ctx, c) {
|
|
|
42
43
|
left.push(hyperlink(pathToFileURL(cwd).href, label));
|
|
43
44
|
}
|
|
44
45
|
}
|
|
46
|
+
// Duration (Claude only)
|
|
47
|
+
if (display.duration && input.durationMs != null) {
|
|
48
|
+
right.push(c.dim(`${icons.clock} ${formatDuration(input.durationMs)}`));
|
|
49
|
+
}
|
|
50
|
+
// Memory
|
|
51
|
+
if (display.memory && memory) {
|
|
52
|
+
right.push(c.dim(`${memory.percentage}% mem`));
|
|
53
|
+
}
|
|
54
|
+
// Token speed
|
|
55
|
+
if (display.tokenSpeed && tokenSpeed != null) {
|
|
56
|
+
right.push(c.dim(`${icons.bolt}${tokenSpeed} tok/s`));
|
|
57
|
+
}
|
|
45
58
|
// Lines changed (right side)
|
|
46
59
|
if (display.linesChanged) {
|
|
47
60
|
const added = input.linesAdded;
|
package/dist/render/line1.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"line1.js","sourceRoot":"","sources":["../../src/render/line1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"line1.js","sourceRoot":"","sources":["../../src/render/line1.ts"],"names":[],"mappings":"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"}
|
package/dist/render/line2.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { fitSegments, displayWidth } from './text.js';
|
|
2
2
|
import { getQuotaColor, detectColorMode } from './colors.js';
|
|
3
3
|
import { buildContextBar, formatQwenMetrics, SEP } from './shared.js';
|
|
4
|
-
import { formatTokens,
|
|
4
|
+
import { formatTokens, formatCost, formatBurnRate } from '../utils/format.js';
|
|
5
5
|
import { getConfigHealth } from '../parsers/config-health.js';
|
|
6
6
|
export function formatCountdown(resetsAt) {
|
|
7
7
|
const resetsAtMs = resetsAt < 1e12 ? resetsAt * 1000 : resetsAt;
|
|
@@ -25,13 +25,25 @@ export function renderLine2(ctx, c) {
|
|
|
25
25
|
// Context bar
|
|
26
26
|
if (display.contextBar) {
|
|
27
27
|
const pct = input.context.usedPercentage;
|
|
28
|
-
leftParts.push(buildContextBar(pct, c, {
|
|
28
|
+
leftParts.push(buildContextBar(pct, c, {
|
|
29
|
+
iconSet: icons,
|
|
30
|
+
cols,
|
|
31
|
+
warningThreshold: display.contextWarningThreshold,
|
|
32
|
+
criticalThreshold: display.contextCriticalThreshold,
|
|
33
|
+
}));
|
|
29
34
|
}
|
|
30
|
-
// Context tokens
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
// Context tokens — prefer windowSize from payload over back-derivation.
|
|
36
|
+
// total_input_tokens is cumulative across the session; current context size
|
|
37
|
+
// is windowSize × usedPercentage / 100. Fallback derives capacity for legacy
|
|
38
|
+
// payloads without context_window_size.
|
|
39
|
+
if (display.contextTokens && input.context.usedPercentage > 0) {
|
|
40
|
+
const pct = input.context.usedPercentage;
|
|
41
|
+
const capacity = input.context.windowSize
|
|
42
|
+
?? (input.tokens.input > 0 ? Math.round(input.tokens.input / (pct / 100)) : 0);
|
|
43
|
+
if (capacity > 0) {
|
|
44
|
+
const used = Math.round(capacity * pct / 100);
|
|
45
|
+
leftParts.push(c.dim(`${formatTokens(used)}/${formatTokens(capacity)}`));
|
|
46
|
+
}
|
|
35
47
|
}
|
|
36
48
|
// Tokens
|
|
37
49
|
if (display.tokens) {
|
|
@@ -46,13 +58,8 @@ export function renderLine2(ctx, c) {
|
|
|
46
58
|
leftParts.push(`${icons.comment} ${parts.join(' ')}`);
|
|
47
59
|
}
|
|
48
60
|
// Cache metrics (hit rate)
|
|
49
|
-
if (display.cacheMetrics) {
|
|
50
|
-
|
|
51
|
-
const totalIn = input.tokens.input;
|
|
52
|
-
if (cacheRead != null && totalIn > 0) {
|
|
53
|
-
const hitRate = Math.round((cacheRead / totalIn) * 100);
|
|
54
|
-
leftParts.push(c.dim(`cache ${hitRate}%`));
|
|
55
|
-
}
|
|
61
|
+
if (display.cacheMetrics && input.cacheHitRate != null) {
|
|
62
|
+
leftParts.push(c.dim(`cache ${input.cacheHitRate}%`));
|
|
56
63
|
}
|
|
57
64
|
// Cost + burn rate (Claude only — Qwen doesn't send cost data)
|
|
58
65
|
if (display.cost && input.cost != null) {
|
|
@@ -65,14 +72,6 @@ export function renderLine2(ctx, c) {
|
|
|
65
72
|
}
|
|
66
73
|
leftParts.push(costPart);
|
|
67
74
|
}
|
|
68
|
-
// Duration (Claude only)
|
|
69
|
-
if (display.duration && input.durationMs != null) {
|
|
70
|
-
leftParts.push(`${icons.clock} ${formatDuration(input.durationMs)}`);
|
|
71
|
-
}
|
|
72
|
-
// Memory
|
|
73
|
-
if (display.memory && memory) {
|
|
74
|
-
leftParts.push(c.dim(`${memory.percentage}% mem`));
|
|
75
|
-
}
|
|
76
75
|
// MCP servers
|
|
77
76
|
if (display.mcp && mcp) {
|
|
78
77
|
const total = mcp.servers.length;
|
|
@@ -86,10 +85,6 @@ export function renderLine2(ctx, c) {
|
|
|
86
85
|
}
|
|
87
86
|
// Qwen metrics (shared helper)
|
|
88
87
|
leftParts.push(...formatQwenMetrics(input, c, icons));
|
|
89
|
-
// Token speed
|
|
90
|
-
if (display.tokenSpeed && tokenSpeed != null) {
|
|
91
|
-
leftParts.push(c.dim(`${icons.bolt}${tokenSpeed} tok/s`));
|
|
92
|
-
}
|
|
93
88
|
// Rate limits (only show if >=50%)
|
|
94
89
|
if (display.rateLimits && input.rateLimits) {
|
|
95
90
|
const limits = [
|
|
@@ -113,9 +108,12 @@ export function renderLine2(ctx, c) {
|
|
|
113
108
|
if (display.vim && input.vimMode) {
|
|
114
109
|
rightParts.push(c.dim(`[${input.vimMode}]`));
|
|
115
110
|
}
|
|
116
|
-
// Right side: effort (hidden if medium)
|
|
117
|
-
|
|
118
|
-
|
|
111
|
+
// Right side: effort (hidden if medium). Prefer stdin (≥ 2.1.x) over the
|
|
112
|
+
// transcript regex fallback — it's both more accurate and avoids a fragile
|
|
113
|
+
// log-line match that breaks when wording changes.
|
|
114
|
+
const effort = input.effortLevel || thinkingEffort;
|
|
115
|
+
if (display.effort && effort && effort !== 'medium') {
|
|
116
|
+
rightParts.push(c.dim(`^${effort}`));
|
|
119
117
|
}
|
|
120
118
|
// Config health hints (opt-in, default off). Sit on the right side as
|
|
121
119
|
// auxiliary signals next to vim/effort, and are dropped silently when the
|
|
@@ -140,9 +138,8 @@ export function renderLine2(ctx, c) {
|
|
|
140
138
|
}
|
|
141
139
|
}
|
|
142
140
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
return padLine(leftStr, rightParts.join(' '), cols);
|
|
141
|
+
if (leftParts.length === 0 && rightParts.length === 0)
|
|
142
|
+
return '';
|
|
143
|
+
return fitSegments(leftParts, rightParts, SEP, cols);
|
|
147
144
|
}
|
|
148
145
|
//# sourceMappingURL=line2.js.map
|
package/dist/render/line2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"line2.js","sourceRoot":"","sources":["../../src/render/line2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"line2.js","sourceRoot":"","sources":["../../src/render/line2.ts"],"names":[],"mappings":"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"}
|
package/dist/render/line3.js
CHANGED
|
@@ -8,7 +8,7 @@ function buildToolsPart(tools, c, ic) {
|
|
|
8
8
|
const parts = [];
|
|
9
9
|
const running = relevant.filter(t => t.status === 'running').slice(-2);
|
|
10
10
|
for (const tool of running) {
|
|
11
|
-
const target = tool.target ? `: ${truncField(tool.target,
|
|
11
|
+
const target = tool.target ? `: ${truncField(tool.target, 14)}` : '';
|
|
12
12
|
parts.push(c.yellow(`◐ ${tool.name}${target}`));
|
|
13
13
|
}
|
|
14
14
|
const completed = relevant.filter(t => t.status === 'completed');
|
package/dist/render/minimal.js
CHANGED
|
@@ -35,7 +35,13 @@ export function renderMinimal(ctx, c) {
|
|
|
35
35
|
// `showHint: false` — the minimal preset targets tight single-line terminals,
|
|
36
36
|
// where the /compact hint's ~10 trailing chars pushes truncation earlier. Users
|
|
37
37
|
// on minimal can still read the blinking skull icon as an at-risk signal.
|
|
38
|
-
parts.push(buildContextBar(input.context.usedPercentage, c, {
|
|
38
|
+
parts.push(buildContextBar(input.context.usedPercentage, c, {
|
|
39
|
+
segments: 10,
|
|
40
|
+
iconSet: icons,
|
|
41
|
+
showHint: false,
|
|
42
|
+
warningThreshold: display.contextWarningThreshold,
|
|
43
|
+
criticalThreshold: display.contextCriticalThreshold,
|
|
44
|
+
}));
|
|
39
45
|
}
|
|
40
46
|
// Only add these if cols >= 60
|
|
41
47
|
if (cols >= 60) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimal.js","sourceRoot":"","sources":["../../src/render/minimal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEhG,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,MAAM,UAAU,aAAa,CAAC,GAAkB,EAAE,CAAS;IACzD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAC1F,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,YAAY;IACZ,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,IAAI,OAAO,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,SAAS;IACT,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC;IACjD,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QACtE,IAAI,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;QAC7D,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;gBAAE,SAAS,IAAI,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;IAED,QAAQ;IACR,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,cAAc;IACd,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,8EAA8E;QAC9E,gFAAgF;QAChF,0EAA0E;QAC1E,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"minimal.js","sourceRoot":"","sources":["../../src/render/minimal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEhG,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,MAAM,UAAU,aAAa,CAAC,GAAkB,EAAE,CAAS;IACzD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAC1F,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,YAAY;IACZ,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,IAAI,OAAO,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,SAAS;IACT,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC;IACjD,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QACtE,IAAI,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;QAC7D,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;gBAAE,SAAS,IAAI,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;IAED,QAAQ;IACR,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,cAAc;IACd,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,8EAA8E;QAC9E,gFAAgF;QAChF,0EAA0E;QAC1E,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE;YAC1D,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK;YACf,gBAAgB,EAAE,OAAO,CAAC,uBAAuB;YACjD,iBAAiB,EAAE,OAAO,CAAC,wBAAwB;SACpD,CAAC,CAAC,CAAC;IACN,CAAC;IAED,+BAA+B;IAC/B,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QACf,SAAS;QACT,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACpC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YACtC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,QAAQ,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5D,IAAI,SAAS,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC9D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,yBAAyB;QACzB,IAAI,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,cAAc;QACd,IAAI,OAAO,CAAC,UAAU,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,QAAQ,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,gBAAgB;QAChB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;YAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC;YACnC,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAElD,QAAQ;QACR,IAAI,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,UAAU;QACV,IAAI,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,mBAAmB;QACnB,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,WAAW;QACX,IAAI,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,QAAQ;QACR,IAAI,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEzC,mCAAmC;IACnC,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/B,IAAI,EAAE;QAAE,OAAO,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;IACpC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { basename } from 'node:path';
|
|
2
2
|
import { pathToFileURL } from 'node:url';
|
|
3
3
|
import { truncField } from './text.js';
|
|
4
|
+
import { formatDuration } from '../utils/format.js';
|
|
4
5
|
import { hyperlink } from './hyperlink.js';
|
|
5
6
|
import { renderPowerline, resolveStyle, } from './powerline.js';
|
|
6
7
|
import { derivePowerlinePalette, DEFAULT_POWERLINE_PALETTE, } from '../themes.js';
|
|
@@ -18,7 +19,7 @@ function getActiveTodo(transcript) {
|
|
|
18
19
|
* version: 20 (dropped first)
|
|
19
20
|
*/
|
|
20
21
|
function buildSegments(ctx, palette) {
|
|
21
|
-
const { input, git, transcript, config: { display }, icons } = ctx;
|
|
22
|
+
const { input, git, transcript, config: { display }, icons, memory, tokenSpeed } = ctx;
|
|
22
23
|
const segments = [];
|
|
23
24
|
if (display.model) {
|
|
24
25
|
if (input.model) {
|
|
@@ -78,6 +79,32 @@ function buildSegments(ctx, palette) {
|
|
|
78
79
|
priority: 40,
|
|
79
80
|
});
|
|
80
81
|
}
|
|
82
|
+
// System info — moved from line 2 in fix #82 to declutter the metrics line.
|
|
83
|
+
// Mirror the classic line1 right cluster: duration, memory, tokenSpeed.
|
|
84
|
+
if (display.duration && input.durationMs != null) {
|
|
85
|
+
segments.push({
|
|
86
|
+
text: `${icons.clock} ${formatDuration(input.durationMs)}`,
|
|
87
|
+
bg: palette.branchCleanBg,
|
|
88
|
+
fg: palette.fg,
|
|
89
|
+
priority: 35,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
if (display.memory && memory) {
|
|
93
|
+
segments.push({
|
|
94
|
+
text: `${memory.percentage}% mem`,
|
|
95
|
+
bg: palette.branchCleanBg,
|
|
96
|
+
fg: palette.fg,
|
|
97
|
+
priority: 30,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
if (display.tokenSpeed && tokenSpeed != null) {
|
|
101
|
+
segments.push({
|
|
102
|
+
text: `${icons.bolt}${tokenSpeed} tok/s`,
|
|
103
|
+
bg: palette.branchCleanBg,
|
|
104
|
+
fg: palette.fg,
|
|
105
|
+
priority: 25,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
81
108
|
if (display.version && input.version) {
|
|
82
109
|
segments.push({
|
|
83
110
|
text: hyperlink(`https://www.npmjs.com/package/@anthropic-ai/claude-code/v/${encodeURIComponent(input.version)}`, `v${input.version}`),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"powerline-line1.js","sourceRoot":"","sources":["../../src/render/powerline-line1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,eAAe,EACf,YAAY,GAGb,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAEL,sBAAsB,EACtB,yBAAyB,GAE1B,MAAM,cAAc,CAAC;AAEtB,SAAS,aAAa,CAAC,UAA0B;IAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;IAC5E,OAAO,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;AAChC,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,aAAa,CAAC,GAAkB,EAAE,OAAyB;IAClE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"powerline-line1.js","sourceRoot":"","sources":["../../src/render/powerline-line1.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { renderPowerline, resolveStyle, } from './powerline.js';
|
|
2
2
|
import { buildContextBar } from './shared.js';
|
|
3
|
-
import { formatTokens, formatCost
|
|
3
|
+
import { formatTokens, formatCost } from '../utils/format.js';
|
|
4
4
|
import { derivePowerlinePalette, DEFAULT_POWERLINE_PALETTE, } from '../themes.js';
|
|
5
5
|
// Line 2 powerline palette — reuses PowerlinePalette bg slots with semantic remapping:
|
|
6
6
|
// modelBg → context bar segment
|
|
@@ -18,23 +18,32 @@ function buildSegments(ctx, palette, c) {
|
|
|
18
18
|
// Context bar — always highest priority. plain=true so the bar cells inherit
|
|
19
19
|
// the powerline segment bg; only %/icon/hint emit color escapes.
|
|
20
20
|
if (display.contextBar) {
|
|
21
|
-
const bar = buildContextBar(input.context.usedPercentage, c, {
|
|
21
|
+
const bar = buildContextBar(input.context.usedPercentage, c, {
|
|
22
|
+
iconSet: icons,
|
|
23
|
+
plain: true,
|
|
24
|
+
cols: ctx.cols,
|
|
25
|
+
warningThreshold: display.contextWarningThreshold,
|
|
26
|
+
criticalThreshold: display.contextCriticalThreshold,
|
|
27
|
+
});
|
|
22
28
|
segments.push({ text: bar, bg: palette.modelBg, fg: palette.fg, priority: 100 });
|
|
23
29
|
}
|
|
24
|
-
// Context tokens
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
// Context tokens — prefer windowSize from payload over back-derivation.
|
|
31
|
+
// total_input_tokens is cumulative across the session; current context size
|
|
32
|
+
// is windowSize × usedPercentage / 100. Falls back to back-derivation for
|
|
33
|
+
// legacy payloads without context_window_size. Mirrors line2.ts behaviour.
|
|
34
|
+
if (display.contextTokens && input.context.usedPercentage > 0) {
|
|
35
|
+
const pct = input.context.usedPercentage;
|
|
36
|
+
const capacity = input.context.windowSize
|
|
37
|
+
?? (input.tokens.input > 0 ? Math.round(input.tokens.input / (pct / 100)) : 0);
|
|
38
|
+
if (capacity > 0) {
|
|
39
|
+
const used = Math.round(capacity * pct / 100);
|
|
40
|
+
segments.push({ text: `${formatTokens(used)}/${formatTokens(capacity)}`, bg: palette.dirBg, fg: palette.fg, priority: 80 });
|
|
41
|
+
}
|
|
29
42
|
}
|
|
30
43
|
// Cost
|
|
31
44
|
if (display.cost && input.cost != null) {
|
|
32
45
|
segments.push({ text: formatCost(input.cost), bg: palette.taskBg, fg: palette.fg, priority: 60 });
|
|
33
46
|
}
|
|
34
|
-
// Duration
|
|
35
|
-
if (display.duration && input.durationMs != null) {
|
|
36
|
-
segments.push({ text: `${icons.clock} ${formatDuration(input.durationMs)}`, bg: palette.branchCleanBg, fg: palette.fg, priority: 40 });
|
|
37
|
-
}
|
|
38
47
|
// Rate limits — only show if >=50%
|
|
39
48
|
if (display.rateLimits && input.rateLimits) {
|
|
40
49
|
const fh = input.rateLimits.fiveHour;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"powerline-line2.js","sourceRoot":"","sources":["../../src/render/powerline-line2.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,YAAY,GAGb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"powerline-line2.js","sourceRoot":"","sources":["../../src/render/powerline-line2.ts"],"names":[],"mappings":"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"}
|
package/dist/render/shared.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type IconSet } from './icons.js';
|
|
2
2
|
import { type Colors } from './colors.js';
|
|
3
|
-
import type
|
|
3
|
+
import { type GitStatus } from '../types.js';
|
|
4
4
|
import type { NormalizedInput } from '../normalize.js';
|
|
5
5
|
export declare const SEP = " \u001B[90m\u2502\u001B[0m ";
|
|
6
6
|
export declare const SEP_MINIMAL = " \u001B[90m|\u001B[0m ";
|
|
@@ -18,6 +18,16 @@ export interface ContextBarOpts {
|
|
|
18
18
|
* the powerline renderer; classic mode leaves it false.
|
|
19
19
|
*/
|
|
20
20
|
plain?: boolean;
|
|
21
|
+
/** Terminal width; used to pick an adaptive segment count when `segments` is not set. */
|
|
22
|
+
cols?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Percentage at which the bar turns orange and shows the fire icon. Default 70.
|
|
25
|
+
* Note: yellow zone exists only when `warningThreshold > 50`; below that, the
|
|
26
|
+
* bar jumps green→orange directly. See `getContextColor` for details.
|
|
27
|
+
*/
|
|
28
|
+
warningThreshold?: number;
|
|
29
|
+
/** Percentage at which the bar turns red/blinking and shows the skull icon. Default 85. */
|
|
30
|
+
criticalThreshold?: number;
|
|
21
31
|
}
|
|
22
32
|
export declare function buildContextBar(pct: number, c: Colors, opts?: ContextBarOpts): string;
|
|
23
33
|
export declare function formatGitChanges(git: GitStatus, c: Colors): string[];
|
package/dist/render/shared.js
CHANGED
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
import { NERD_ICONS } from './icons.js';
|
|
2
2
|
import { getContextColor } from './colors.js';
|
|
3
3
|
import { formatTokens } from '../utils/format.js';
|
|
4
|
+
import { DEFAULT_CONTEXT_WARNING_THRESHOLD, DEFAULT_CONTEXT_CRITICAL_THRESHOLD } from '../types.js';
|
|
4
5
|
export const SEP = ` \x1b[90m\u2502\x1b[0m `;
|
|
5
6
|
export const SEP_MINIMAL = ` \x1b[90m|\x1b[0m `;
|
|
7
|
+
function adaptiveSegments(cols) {
|
|
8
|
+
if (cols == null || cols >= 100)
|
|
9
|
+
return 20;
|
|
10
|
+
if (cols >= 60)
|
|
11
|
+
return 12;
|
|
12
|
+
return 8;
|
|
13
|
+
}
|
|
6
14
|
export function buildContextBar(pct, c, opts) {
|
|
7
|
-
const segments = opts?.segments ??
|
|
15
|
+
const segments = opts?.segments ?? adaptiveSegments(opts?.cols);
|
|
8
16
|
const showIcons = opts?.showIcons ?? true;
|
|
9
17
|
const showHint = opts?.showHint ?? true;
|
|
10
18
|
const plain = opts?.plain ?? false;
|
|
11
19
|
const ic = opts?.iconSet ?? NERD_ICONS;
|
|
20
|
+
const warning = opts?.warningThreshold ?? DEFAULT_CONTEXT_WARNING_THRESHOLD;
|
|
21
|
+
const critical = opts?.criticalThreshold ?? DEFAULT_CONTEXT_CRITICAL_THRESHOLD;
|
|
12
22
|
const filled = Math.round((pct / 100) * segments);
|
|
13
|
-
const colorFn = c[getContextColor(pct)];
|
|
23
|
+
const colorFn = c[getContextColor(pct, warning, critical)];
|
|
14
24
|
// In plain mode the bar cells emit no ANSI — terminal default fg over
|
|
15
25
|
// whatever bg the caller has set. The empty-cell `dim` is also suppressed
|
|
16
26
|
// because `\x1b[2m...\x1b[0m` would still close out the caller's bg.
|
|
@@ -19,18 +29,18 @@ export function buildContextBar(pct, c, opts) {
|
|
|
19
29
|
: colorFn(ic.barFull.repeat(filled)) + c.dim(ic.barEmpty.repeat(segments - filled));
|
|
20
30
|
let icon = '';
|
|
21
31
|
if (showIcons) {
|
|
22
|
-
if (pct >=
|
|
32
|
+
if (pct >= critical)
|
|
23
33
|
icon = c.blinkRed(ic.skull);
|
|
24
|
-
else if (pct >=
|
|
34
|
+
else if (pct >= warning)
|
|
25
35
|
icon = c.orange(ic.fire);
|
|
26
36
|
}
|
|
27
37
|
// Actionable hint at high fill — nudges the user to reclaim context before
|
|
28
38
|
// the session stalls. Thresholds align with the color/icon tiers above.
|
|
29
39
|
let hint = '';
|
|
30
40
|
if (showHint) {
|
|
31
|
-
if (pct >=
|
|
41
|
+
if (pct >= critical + 5)
|
|
32
42
|
hint = ' ' + c.red('/compact!');
|
|
33
|
-
else if (pct >=
|
|
43
|
+
else if (pct >= critical)
|
|
34
44
|
hint = ' ' + c.dim('/compact?');
|
|
35
45
|
}
|
|
36
46
|
const pctStr = colorFn(`${pct < 10 ? pct.toFixed(1) : pct.toFixed(0)}%`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/render/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,eAAe,EAAe,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/render/shared.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -13,10 +13,14 @@ export interface ClaudeCodeInput {
|
|
|
13
13
|
used_percentage: number;
|
|
14
14
|
remaining_percentage: number;
|
|
15
15
|
current_usage?: number | {
|
|
16
|
-
|
|
16
|
+
input_tokens?: number;
|
|
17
|
+
output_tokens?: number;
|
|
18
|
+
cache_read_input_tokens?: number;
|
|
19
|
+
cache_creation_input_tokens?: number;
|
|
17
20
|
};
|
|
18
21
|
total_input_tokens?: number;
|
|
19
22
|
total_output_tokens?: number;
|
|
23
|
+
/** Legacy top-level path; modern payloads nest these under current_usage. */
|
|
20
24
|
cache_read_input_tokens?: number;
|
|
21
25
|
cache_creation_input_tokens?: number;
|
|
22
26
|
};
|
|
@@ -45,6 +49,14 @@ export interface ClaudeCodeInput {
|
|
|
45
49
|
seven_day?: RateLimitWindow;
|
|
46
50
|
};
|
|
47
51
|
exceeds_200k_tokens?: boolean;
|
|
52
|
+
/** Modern (≥ 2.1.x) — current reasoning effort level. */
|
|
53
|
+
effort?: {
|
|
54
|
+
level?: string;
|
|
55
|
+
};
|
|
56
|
+
/** Modern (≥ 2.1.x) — extended thinking enabled state. */
|
|
57
|
+
thinking?: {
|
|
58
|
+
enabled?: boolean;
|
|
59
|
+
};
|
|
48
60
|
}
|
|
49
61
|
export interface RateLimitWindow {
|
|
50
62
|
used_percentage: number;
|
|
@@ -181,10 +193,20 @@ export interface DisplayToggles {
|
|
|
181
193
|
cacheMetrics: boolean;
|
|
182
194
|
mcp: boolean;
|
|
183
195
|
health: boolean;
|
|
196
|
+
/**
|
|
197
|
+
* Percentage at which the context bar turns orange and shows the fire icon. Default 70. Clamped [0,100].
|
|
198
|
+
* Setting this ≤ 50 collapses the yellow zone; the bar jumps green→orange directly at this value.
|
|
199
|
+
*/
|
|
200
|
+
contextWarningThreshold: number;
|
|
201
|
+
/** Percentage at which the context bar turns red/blinking and shows the skull icon. Default 85. Clamped [0,100]. Must be > contextWarningThreshold. */
|
|
202
|
+
contextCriticalThreshold: number;
|
|
184
203
|
}
|
|
185
204
|
export interface ColorConfig {
|
|
186
205
|
mode: 'auto' | 'named' | '256' | 'truecolor';
|
|
187
206
|
}
|
|
207
|
+
/** Default thresholds — used as fallback when user-provided values are invalid. */
|
|
208
|
+
export declare const DEFAULT_CONTEXT_WARNING_THRESHOLD = 70;
|
|
209
|
+
export declare const DEFAULT_CONTEXT_CRITICAL_THRESHOLD = 85;
|
|
188
210
|
export declare const DEFAULT_DISPLAY: DisplayToggles;
|
|
189
211
|
export declare const DEFAULT_CONFIG: HudConfig;
|
|
190
212
|
export interface Dependencies {
|
package/dist/types.js
CHANGED
|
@@ -22,6 +22,9 @@ export const EMPTY_TRANSCRIPT = {
|
|
|
22
22
|
export const POWERLINE_STYLE_NAMES = [
|
|
23
23
|
'arrow', 'flame', 'slant', 'round', 'diamond', 'compatible', 'plain', 'auto',
|
|
24
24
|
];
|
|
25
|
+
/** Default thresholds — used as fallback when user-provided values are invalid. */
|
|
26
|
+
export const DEFAULT_CONTEXT_WARNING_THRESHOLD = 70;
|
|
27
|
+
export const DEFAULT_CONTEXT_CRITICAL_THRESHOLD = 85;
|
|
25
28
|
export const DEFAULT_DISPLAY = {
|
|
26
29
|
model: true,
|
|
27
30
|
branch: true,
|
|
@@ -49,6 +52,8 @@ export const DEFAULT_DISPLAY = {
|
|
|
49
52
|
cacheMetrics: true,
|
|
50
53
|
mcp: true,
|
|
51
54
|
health: false,
|
|
55
|
+
contextWarningThreshold: DEFAULT_CONTEXT_WARNING_THRESHOLD,
|
|
56
|
+
contextCriticalThreshold: DEFAULT_CONTEXT_CRITICAL_THRESHOLD,
|
|
52
57
|
};
|
|
53
58
|
export const DEFAULT_CONFIG = {
|
|
54
59
|
layout: 'auto',
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,uEAAuE;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,uEAAuE;AA6DvE,MAAM,CAAC,MAAM,SAAS,GAAc;IAClC,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;CACb,CAAC;AAUF,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC9C,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,cAAc,EAAE,EAAE;IAClB,YAAY,EAAE,IAAI;CACnB,CAAC;AAmGF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM;CACpE,CAAC;AA2CX,mFAAmF;AACnF,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AACpD,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC;AAErD,MAAM,CAAC,MAAM,eAAe,GAAmB;IAC7C,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,IAAI;IACjB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,IAAI;IACZ,YAAY,EAAE,IAAI;IAClB,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,iCAAiC;IAC1D,wBAAwB,EAAE,kCAAkC;CAC7D,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,EAAE,GAAG,eAAe,EAAE;IAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;CACzB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lumira",
|
|
3
|
-
"version": "0.7.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.7.2",
|
|
4
|
+
"description": "Real-time statusline HUD for Claude Code and Qwen Code — context bar, burn rate, themes, powerline, zero deps.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
|
@@ -38,6 +38,8 @@
|
|
|
38
38
|
"keywords": [
|
|
39
39
|
"claude-code",
|
|
40
40
|
"claude",
|
|
41
|
+
"qwen-code",
|
|
42
|
+
"qwen",
|
|
41
43
|
"statusline",
|
|
42
44
|
"terminal",
|
|
43
45
|
"nerd-font",
|