lumira 1.1.0 β†’ 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -78,7 +78,7 @@ Inspired by [claude-hud](https://github.com/jarrodwatts/claude-hud); takes a dif
78
78
  - **Rate limits** β€” 5h/7d usage as a battery glyph (Nerd Font level fill, or πŸ”‹/πŸͺ« in emoji mode) with color tier and reset countdown. Threshold-gated at 50% to stay invisible while you have margin.
79
79
  - **Pace delta** β€” `usedPct βˆ’ elapsedPct` of the 5h window. Turtle when behind pace (healthy), car with time-to-exhaustion when ahead. Color escalates green β†’ yellow β†’ orange β†’ blinkRed. Toggle independently via `display.paceDelta`.
80
80
  - **Active agents** β€” live count of running subagents (`⚑N agents`) plus types parsed from the transcript. Toggle via `display.agents`.
81
- - **Cache hit rate** β€” prompt cache efficiency for the current turn (`94k/200k 87%⚑`). Green β‰₯70%, yellow 40–69%, orange below.
81
+ - **Cache hit rate** β€” prompt cache efficiency for the current turn (`87%⚑`). Alarm-mode: hidden while β‰₯90% (Anthropic's prompt cache pins this near 99% in healthy steady state, so an always-on number is wallpaper, not signal). Surfaces as yellow/orange/blinkRed only when the cache is actually degrading. Same hide-when-healthy pattern as rate-limits and agent count.
82
82
  - **GSD integration** β€” current task and update notifications (opt-in).
83
83
  - **Config health widget** β€” surfaces silent fallbacks (theme/powerline degrading in named-ANSI, missing GSD STATE.md). Opt-in.
84
84
  - **Memory usage** β€” process RSS percentage.
@@ -0,0 +1,82 @@
1
+ import type { AgentEntry } from '../types.js';
2
+ export declare const GENERIC_AGENT_TYPES: ReadonlySet<string>;
3
+ /**
4
+ * Returns true when `type` identifies a *named* subagent β€” i.e. one defined
5
+ * by the user (e.g. `pepito`, `feature-dev:code-reviewer`) rather than an
6
+ * anonymous dispatch via the generic Agent tool. Render layers use this to
7
+ * decide whether to surface the type in the cubes-icon widget.
8
+ */
9
+ export declare function isNamedAgentType(type: string | undefined | null): boolean;
10
+ /**
11
+ * Per-file metadata captured by `scanSubagentsDir`. Phase 1 of the parse:
12
+ * a stat-only summary the cache uses for fingerprinting and that the full
13
+ * parse re-uses to avoid re-running readdir/stat on miss.
14
+ */
15
+ export interface AgentCandidate {
16
+ id: string;
17
+ jsonlFile: string;
18
+ metaFile: string;
19
+ mtimeMs: number;
20
+ size: number;
21
+ }
22
+ export declare function deriveSubagentsDir(jsonlPath: string): string;
23
+ /**
24
+ * Cheap filesystem fingerprint of a session's subagents dir, suitable for
25
+ * folding into a transcript-level cache key. Captures (a) the number of
26
+ * matching agent files, (b) the most recent file mtime in the dir, and
27
+ * (c) the aggregate file size. A change to any agent file flips at least
28
+ * one of these β€” `maxMtimeMs` is monotonic across writes (every new write
29
+ * either bumps mtime or leaves it unchanged on the same-second case where
30
+ * the size delta still fires), and `totalSize` catches in-place edits that
31
+ * happen at exactly the same mtime tick.
32
+ *
33
+ * Intentionally O(N) on dir size: the dir is small (≀ MAX_AGENTS handful)
34
+ * and `stat` is fast. Returns null when the dir doesn't exist or isn't
35
+ * accessible β€” the caller should treat that as "no fingerprint, no cached
36
+ * subagent state".
37
+ */
38
+ export interface SubagentsDirState {
39
+ count: number;
40
+ maxMtimeMs: number;
41
+ totalSize: number;
42
+ }
43
+ /**
44
+ * Unified scan: walks the subagents/ dir once, gathering both the cache
45
+ * fingerprint AND the per-file stat metadata needed for the full parse.
46
+ * Callers that only need the fingerprint can ignore `candidates`; callers
47
+ * doing a full parse can hand the candidates to `readSubagentDetails`
48
+ * without re-running readdir/stat.
49
+ */
50
+ export declare function scanSubagentsDir(rawJsonlPath: string): Promise<{
51
+ state: SubagentsDirState | null;
52
+ candidates: AgentCandidate[];
53
+ }>;
54
+ export declare function getSubagentsDirState(jsonlPath: string): Promise<SubagentsDirState | null>;
55
+ export declare function subagentsDirStateEqual(a: SubagentsDirState | null, b: SubagentsDirState | null): boolean;
56
+ /**
57
+ * Phase 2 of the parse β€” reads JSONL bodies + meta sidecars only for the
58
+ * MAX_AGENTS most recent files in `candidates`. Sorts oldest β†’ newest by
59
+ * file mtime; the survivors of `slice(-MAX_AGENTS)` are read.
60
+ *
61
+ * `mtime` is the on-disk last-write timestamp, not the agent's logical
62
+ * "last activity". The two usually coincide, but on a slow filesystem an
63
+ * agent dispatched recently may have a stale mtime (its first write
64
+ * hasn't been journaled yet) while an older agent's file gets touched by
65
+ * an unrelated journal flush. The downstream `startTime` is read from
66
+ * the JSONL line's embedded `timestamp` field β€” so the sort order may
67
+ * not match `startTime` order exactly. Acceptable for the statusline's
68
+ * "newest N" picker; flagged here so a future caller doesn't assume the
69
+ * two orderings are identical.
70
+ *
71
+ * Exported so callers that already ran `scanSubagentsDir` (e.g. the
72
+ * transcript parser, which uses the same scan to build its cache key) can
73
+ * skip a second readdir+stat pass.
74
+ */
75
+ export declare function readSubagentDetails(candidates: AgentCandidate[]): Promise<AgentEntry[]>;
76
+ /**
77
+ * Convenience wrapper: full scan + full parse. Equivalent to
78
+ * `(await scanSubagentsDir(p)).candidates β†’ readSubagentDetails`.
79
+ * Callers that need the cache fingerprint *and* the agents in the same
80
+ * tick should call `scanSubagentsDir` directly to avoid a second scan.
81
+ */
82
+ export declare function parseSubagentsDir(jsonlPath: string): Promise<AgentEntry[]>;
@@ -0,0 +1,338 @@
1
+ // Mixed sync/async fs imports are deliberate: `stat` and `readFile` are async
2
+ // I/O on the hot path; the only sync call is the canonicalisation helper from
3
+ // `utils/path.ts`. We do not gate any I/O behind `existsSync` here β€” the
4
+ // async readdir/stat calls have try/catch fallbacks, which avoids the
5
+ // existsSync→readdir TOCTOU window.
6
+ import { open, readdir, readFile, stat } from 'node:fs/promises';
7
+ import { join, dirname, basename, resolve } from 'node:path';
8
+ import { isUnderAllowedRoot, LUMIRA_ALLOWED_ROOTS } from '../utils/path.js';
9
+ import { sanitizeTermString } from '../normalize.js';
10
+ import { debug } from '../utils/debug.js';
11
+ const log = debug('subagents');
12
+ // Claude Code stores per-subagent transcripts at
13
+ // ~/.claude/projects/<slug>/<session-id>/subagents/agent-<id>.jsonl
14
+ // alongside an agent-<id>.meta.json sidecar carrying {agentType, description}.
15
+ // This is an undocumented implementation detail of Claude Code (verified
16
+ // against 2.1.x). When the layout changes, this module degrades to an empty
17
+ // result and the main-JSONL parser remains the source of truth.
18
+ const AGENT_FILE_RE = /^agent-([A-Za-z0-9_-]+)\.jsonl$/;
19
+ // Long-running sessions accumulate dozens of agent files; the statusline only
20
+ // surfaces a handful. Match the cap used by the main-JSONL agent slice (in
21
+ // `transcript.ts: agentMap.values()).slice(-10)`).
22
+ const MAX_AGENTS = 10;
23
+ // Generic dispatch types Claude Code attaches to anonymous Agent calls. The
24
+ // list is hard-coded today; extend it when Claude Code adds new generic
25
+ // types so the statusline doesn't accidentally surface their names as if
26
+ // they were user-named subagents. Exported as part of the public API;
27
+ // callers should prefer `isNamedAgentType` for membership checks rather
28
+ // than reaching into the set directly.
29
+ export const GENERIC_AGENT_TYPES = new Set(['general-purpose', 'unknown']);
30
+ /**
31
+ * Returns true when `type` identifies a *named* subagent β€” i.e. one defined
32
+ * by the user (e.g. `pepito`, `feature-dev:code-reviewer`) rather than an
33
+ * anonymous dispatch via the generic Agent tool. Render layers use this to
34
+ * decide whether to surface the type in the cubes-icon widget.
35
+ */
36
+ export function isNamedAgentType(type) {
37
+ return typeof type === 'string' && type.length > 0 && !GENERIC_AGENT_TYPES.has(type);
38
+ }
39
+ export function deriveSubagentsDir(jsonlPath) {
40
+ const dir = dirname(jsonlPath);
41
+ const base = basename(jsonlPath).replace(/\.jsonl$/i, '');
42
+ return join(dir, base, 'subagents');
43
+ }
44
+ /**
45
+ * Unified scan: walks the subagents/ dir once, gathering both the cache
46
+ * fingerprint AND the per-file stat metadata needed for the full parse.
47
+ * Callers that only need the fingerprint can ignore `candidates`; callers
48
+ * doing a full parse can hand the candidates to `readSubagentDetails`
49
+ * without re-running readdir/stat.
50
+ */
51
+ export async function scanSubagentsDir(rawJsonlPath) {
52
+ if (!rawJsonlPath)
53
+ return { state: null, candidates: [] };
54
+ // Canonicalise the input path here so public callers (relative paths,
55
+ // `..` segments) and internal callers (`transcript.ts` already passes a
56
+ // resolved absolute path) get identical results. `deriveSubagentsDir`
57
+ // remains a pure string operation; this is the single point of resolution.
58
+ const jsonlPath = resolve(rawJsonlPath);
59
+ const resolved = deriveSubagentsDir(jsonlPath);
60
+ if (!isUnderAllowedRoot(resolved, LUMIRA_ALLOWED_ROOTS)) {
61
+ log('skip β€” subagents dir outside allowed roots:', resolved);
62
+ return { state: null, candidates: [] };
63
+ }
64
+ let entries;
65
+ try {
66
+ entries = await readdir(resolved);
67
+ }
68
+ catch (err) {
69
+ log('readdir failed:', resolved, err);
70
+ return { state: null, candidates: [] };
71
+ }
72
+ let count = 0;
73
+ let maxMtimeMs = 0;
74
+ let totalSize = 0;
75
+ const candidates = [];
76
+ for (const file of entries) {
77
+ const m = file.match(AGENT_FILE_RE);
78
+ if (!m)
79
+ continue;
80
+ try {
81
+ const jsonlFile = join(resolved, file);
82
+ const st = await stat(jsonlFile);
83
+ if (!st.isFile())
84
+ continue;
85
+ count += 1;
86
+ if (st.mtimeMs > maxMtimeMs)
87
+ maxMtimeMs = st.mtimeMs;
88
+ totalSize += st.size;
89
+ candidates.push({
90
+ id: m[1],
91
+ jsonlFile,
92
+ metaFile: join(resolved, `agent-${m[1]}.meta.json`),
93
+ mtimeMs: st.mtimeMs,
94
+ size: st.size,
95
+ });
96
+ }
97
+ catch { /* file disappeared mid-scan β€” skip */ }
98
+ }
99
+ return { state: { count, maxMtimeMs, totalSize }, candidates };
100
+ }
101
+ // Thin wrapper retained for callers that only want the cache fingerprint.
102
+ // Internally re-uses `scanSubagentsDir` so the two paths can never drift.
103
+ export async function getSubagentsDirState(jsonlPath) {
104
+ return (await scanSubagentsDir(jsonlPath)).state;
105
+ }
106
+ export function subagentsDirStateEqual(a, b) {
107
+ if (a === b)
108
+ return true;
109
+ if (!a || !b)
110
+ return false;
111
+ return a.count === b.count && a.maxMtimeMs === b.maxMtimeMs && a.totalSize === b.totalSize;
112
+ }
113
+ async function readMeta(metaPath) {
114
+ try {
115
+ const raw = await readFile(metaPath, 'utf8');
116
+ const parsed = JSON.parse(raw);
117
+ if (parsed && typeof parsed === 'object')
118
+ return parsed;
119
+ }
120
+ catch { /* meta is best-effort */ }
121
+ return null;
122
+ }
123
+ // Files larger than this threshold are read via head/tail chunks rather
124
+ // than slurped whole. Subagent transcripts can grow into the megabytes
125
+ // when the agent runs many tool calls β€” buffering all of them on every
126
+ // cache miss caused real memory pressure in the wild.
127
+ const LARGE_FILE_THRESHOLD = 64 * 1024;
128
+ // Window we read at each end of a large file. 16 KB is comfortably bigger
129
+ // than any single JSONL line we've observed (Claude Code wraps very long
130
+ // content), and small enough to keep a 10-agent miss under 320 KB peak.
131
+ const BOUNDARY_CHUNK_SIZE = 16 * 1024;
132
+ // Extracts both the first and last well-formed JSON objects from a JSONL
133
+ // file. We need the first line's timestamp for `startTime` (file mtime
134
+ // drifts to the *last* write) and the last line for completion markers.
135
+ //
136
+ // For files at or below `LARGE_FILE_THRESHOLD` we slurp via `readFile`
137
+ // (one syscall, no chunking). For larger files we open the fd and read
138
+ // only the head and tail windows β€” bounding peak memory regardless of
139
+ // transcript size.
140
+ async function readBoundaryJsonLines(filePath, fileSize) {
141
+ if (fileSize <= LARGE_FILE_THRESHOLD) {
142
+ try {
143
+ const raw = await readFile(filePath, 'utf8');
144
+ return { first: parseFirstJson(raw), last: parseLastJson(raw) };
145
+ }
146
+ catch {
147
+ return { first: null, last: null };
148
+ }
149
+ }
150
+ let fd;
151
+ try {
152
+ fd = await open(filePath, 'r');
153
+ }
154
+ catch {
155
+ return { first: null, last: null };
156
+ }
157
+ try {
158
+ // We're on the chunked path, so fileSize > LARGE_FILE_THRESHOLD >
159
+ // BOUNDARY_CHUNK_SIZE β€” head and tail windows are always exactly
160
+ // BOUNDARY_CHUNK_SIZE bytes, never clamped by file size.
161
+ const chunkSize = BOUNDARY_CHUNK_SIZE;
162
+ const headBuf = Buffer.alloc(chunkSize);
163
+ await fd.read(headBuf, 0, chunkSize, 0);
164
+ const head = headBuf.toString('utf8');
165
+ const tailBuf = Buffer.alloc(chunkSize);
166
+ await fd.read(tailBuf, 0, chunkSize, fileSize - chunkSize);
167
+ const tail = tailBuf.toString('utf8');
168
+ // The tail window starts at an arbitrary byte offset; if that byte
169
+ // happens to be inside a JSON line, the leading fragment is malformed
170
+ // and we discard everything up to the first newline. If the offset
171
+ // lands cleanly on a line boundary the slice still drops only the
172
+ // single leading newline byte (harmless), so the same logic covers
173
+ // both cases without an extra branch.
174
+ const tailFromBoundary = tail.includes('\n') ? tail.slice(tail.indexOf('\n') + 1) : tail;
175
+ const first = parseFirstJson(head);
176
+ const last = parseLastJson(tailFromBoundary);
177
+ if (log.enabled) {
178
+ // When a single first/last line is bigger than the chunk window,
179
+ // JSON.parse fails on every fragment we see and we fall back to
180
+ // mtime / "running". A fully corrupt file produces the same
181
+ // signal β€” the suffix "(no valid JSON in head/tail window)"
182
+ // covers both interpretations without overcommitting to either.
183
+ if (first === null)
184
+ log('warn β€” first-line parse missed (no valid JSON in head window):', filePath);
185
+ if (last === null)
186
+ log('warn β€” last-line parse missed (no valid JSON in tail window):', filePath);
187
+ }
188
+ return { first, last };
189
+ }
190
+ catch {
191
+ return { first: null, last: null };
192
+ }
193
+ finally {
194
+ await fd.close().catch(() => undefined);
195
+ }
196
+ }
197
+ function parseFirstJson(raw) {
198
+ for (const l of raw.split('\n')) {
199
+ const t = l.trim();
200
+ if (!t)
201
+ continue;
202
+ try {
203
+ return JSON.parse(t);
204
+ }
205
+ catch { /* try next line */ }
206
+ }
207
+ return null;
208
+ }
209
+ function parseLastJson(raw) {
210
+ const lines = raw.split('\n');
211
+ for (let i = lines.length - 1; i >= 0; i--) {
212
+ const t = lines[i].trim();
213
+ if (!t)
214
+ continue;
215
+ try {
216
+ return JSON.parse(t);
217
+ }
218
+ catch { /* try previous line */ }
219
+ }
220
+ return null;
221
+ }
222
+ function extractStopReason(lastLine) {
223
+ if (!lastLine || typeof lastLine !== 'object')
224
+ return null;
225
+ const msg = lastLine.message;
226
+ if (!msg || typeof msg !== 'object')
227
+ return null;
228
+ const sr = msg.stop_reason;
229
+ return typeof sr === 'string' ? sr : null;
230
+ }
231
+ // JSONL lines carry an ISO `timestamp` field. Prefer it for endTime over the
232
+ // file's mtime: mtime can drift due to OS-level flush buffering, especially
233
+ // for short-lived agents that finish faster than the journal commit window.
234
+ function extractTimestamp(lastLine) {
235
+ if (!lastLine || typeof lastLine !== 'object')
236
+ return null;
237
+ const ts = lastLine.timestamp;
238
+ if (typeof ts !== 'string')
239
+ return null;
240
+ const d = new Date(ts);
241
+ return Number.isFinite(d.getTime()) ? d : null;
242
+ }
243
+ // When the user stops a running subagent, Claude Code appends a synthetic
244
+ // user-role message whose text is bracket-wrapped, e.g.
245
+ // "[Request interrupted by user for tool use]". That's the only on-disk
246
+ // signal of a kill β€” the assistant message that preceded it never gets its
247
+ // closing stop_reason rewritten. Matching is anchored on both ends to avoid
248
+ // false positives if Claude Code ever ships an unrelated message that
249
+ // starts with the same prefix.
250
+ // `[^[]*` rather than `[^\]]*` so a hypothetical future variant whose
251
+ // reason text contains a `]` (but no `[`) would still match.
252
+ const INTERRUPT_MARKER_RE = /^\[Request interrupted by user[^[]*\]$/;
253
+ function wasInterruptedByUser(lastLine) {
254
+ if (!lastLine || typeof lastLine !== 'object')
255
+ return false;
256
+ const d = lastLine;
257
+ if (d.type !== 'user')
258
+ return false;
259
+ const content = d.message?.content;
260
+ if (!Array.isArray(content))
261
+ return false;
262
+ for (const block of content) {
263
+ if (block && typeof block === 'object') {
264
+ const text = block.text;
265
+ if (typeof text === 'string' && INTERRUPT_MARKER_RE.test(text.trim()))
266
+ return true;
267
+ }
268
+ }
269
+ return false;
270
+ }
271
+ async function readAgentDetails(c) {
272
+ const { first, last } = await readBoundaryJsonLines(c.jsonlFile, c.size);
273
+ const stopReason = extractStopReason(last);
274
+ const interrupted = wasInterruptedByUser(last);
275
+ const meta = await readMeta(c.metaFile);
276
+ const agentType = sanitizeTermString(typeof meta?.agentType === 'string' ? meta.agentType : 'unknown');
277
+ const description = typeof meta?.description === 'string' ? sanitizeTermString(meta.description) : undefined;
278
+ const status = (stopReason === 'end_turn' || interrupted) ? 'completed' : 'running';
279
+ // startTime: prefer the first JSONL line's embedded ISO timestamp (the
280
+ // dispatch moment) over the file mtime. mtime tracks the *last* write,
281
+ // which for a long-running agent is the close-out β€” using it as
282
+ // startTime would make duration calculations meaningless. birthtimeMs
283
+ // is unreliable across filesystems (often 0/unset, can't be updated by
284
+ // utimes() so tests can't simulate it), hence we don't try it.
285
+ const startTime = extractTimestamp(first) ?? new Date(c.mtimeMs);
286
+ const agent = {
287
+ id: c.id,
288
+ type: agentType,
289
+ status,
290
+ startTime,
291
+ };
292
+ if (description)
293
+ agent.description = description;
294
+ if (status === 'completed') {
295
+ const tsFromLine = extractTimestamp(last);
296
+ agent.endTime = tsFromLine ?? new Date(c.mtimeMs);
297
+ }
298
+ return agent;
299
+ }
300
+ /**
301
+ * Phase 2 of the parse β€” reads JSONL bodies + meta sidecars only for the
302
+ * MAX_AGENTS most recent files in `candidates`. Sorts oldest β†’ newest by
303
+ * file mtime; the survivors of `slice(-MAX_AGENTS)` are read.
304
+ *
305
+ * `mtime` is the on-disk last-write timestamp, not the agent's logical
306
+ * "last activity". The two usually coincide, but on a slow filesystem an
307
+ * agent dispatched recently may have a stale mtime (its first write
308
+ * hasn't been journaled yet) while an older agent's file gets touched by
309
+ * an unrelated journal flush. The downstream `startTime` is read from
310
+ * the JSONL line's embedded `timestamp` field β€” so the sort order may
311
+ * not match `startTime` order exactly. Acceptable for the statusline's
312
+ * "newest N" picker; flagged here so a future caller doesn't assume the
313
+ * two orderings are identical.
314
+ *
315
+ * Exported so callers that already ran `scanSubagentsDir` (e.g. the
316
+ * transcript parser, which uses the same scan to build its cache key) can
317
+ * skip a second readdir+stat pass.
318
+ */
319
+ export async function readSubagentDetails(candidates) {
320
+ const sorted = candidates.slice().sort((a, b) => a.mtimeMs - b.mtimeMs);
321
+ const top = sorted.slice(-MAX_AGENTS);
322
+ const agents = [];
323
+ for (const c of top) {
324
+ agents.push(await readAgentDetails(c));
325
+ }
326
+ return agents;
327
+ }
328
+ /**
329
+ * Convenience wrapper: full scan + full parse. Equivalent to
330
+ * `(await scanSubagentsDir(p)).candidates β†’ readSubagentDetails`.
331
+ * Callers that need the cache fingerprint *and* the agents in the same
332
+ * tick should call `scanSubagentsDir` directly to avoid a second scan.
333
+ */
334
+ export async function parseSubagentsDir(jsonlPath) {
335
+ const { candidates } = await scanSubagentsDir(jsonlPath);
336
+ return readSubagentDetails(candidates);
337
+ }
338
+ //# sourceMappingURL=subagents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagents.js","sourceRoot":"","sources":["../../src/parsers/subagents.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { createReadStream, existsSync, realpathSync } from 'node:fs';
1
+ import { createReadStream, existsSync } from 'node:fs';
2
2
  import { createInterface } from 'node:readline';
3
3
  import { resolve } from 'node:path';
4
- import { homedir, tmpdir } from 'node:os';
5
4
  import { EMPTY_TRANSCRIPT } from '../types.js';
6
5
  import { isMtimeFresh, getMtimeState } from '../utils/cache.js';
7
6
  import { sanitizeTermString } from '../normalize.js';
8
- import { isUnderAllowedRoot } from '../utils/path.js';
7
+ import { isUnderAllowedRoot, LUMIRA_ALLOWED_ROOTS } from '../utils/path.js';
9
8
  import { debug } from '../utils/debug.js';
9
+ import { scanSubagentsDir, readSubagentDetails, subagentsDirStateEqual } from './subagents.js';
10
10
  const log = debug('transcript');
11
11
  // Full re-parse on cache miss is intentional. Incremental byte-offset parsing
12
12
  // was evaluated and rejected (see #43): real transcripts are low-thousands of
@@ -119,22 +119,10 @@ export function extractToolTarget(toolName, input) {
119
119
  // under an allowed root pointing at /etc/passwd) is tracked separately;
120
120
  // the threat is narrow because `transcript_path` arrives from Claude Code
121
121
  // itself, not arbitrary external input.
122
- function realpathSafe(p) {
123
- try {
124
- return realpathSync(p);
125
- }
126
- catch {
127
- return resolve(p);
128
- }
129
- }
130
- const ALLOWED_ROOTS = [
131
- ...new Set([
132
- resolve(homedir()),
133
- resolve(tmpdir()),
134
- realpathSafe(homedir()),
135
- realpathSafe(tmpdir()),
136
- ]),
137
- ];
122
+ // `realpathSafe` and `LUMIRA_ALLOWED_ROOTS` previously lived here; both are
123
+ // now in `src/utils/path.ts` so other parsers (e.g. `subagents.ts`) share the
124
+ // same canonicalisation and allow-list semantics. See `path.ts` for caveats
125
+ // about the string-level (non-symlink-following) nature of the check.
138
126
  export async function parseTranscript(transcriptPath) {
139
127
  const result = { ...EMPTY_TRANSCRIPT, tools: [], agents: [], todos: [] };
140
128
  if (!transcriptPath || !existsSync(transcriptPath)) {
@@ -146,15 +134,27 @@ export async function parseTranscript(transcriptPath) {
146
134
  transcriptCache.delete(resolve(transcriptPath));
147
135
  return result;
148
136
  }
137
+ // path.resolve, NOT realpathSafe β€” symlink resolution is deliberately not
138
+ // done here (and not in subagents.ts either). See `src/utils/path.ts`
139
+ // header for the string-level threat model rationale.
149
140
  const resolved = resolve(transcriptPath);
150
- if (!isUnderAllowedRoot(resolved, ALLOWED_ROOTS)) {
141
+ if (!isUnderAllowedRoot(resolved, LUMIRA_ALLOWED_ROOTS)) {
151
142
  log('skip β€” path outside allowed roots:', resolved);
152
143
  transcriptCache.delete(resolved);
153
144
  return result;
154
145
  }
155
146
  const currentMtime = getMtimeState(resolved);
147
+ // The subagents/ dir lives outside the main JSONL's stat scope, so a quiet
148
+ // subagent's progress (or a `stop_reason: end_turn` flush) wouldn't change
149
+ // anything the cache can see. A single `scanSubagentsDir` produces both
150
+ // the cache fingerprint AND the per-file candidates we'll feed to
151
+ // `readSubagentDetails` on a miss β€” eliminates the double readdir+stat
152
+ // pass that an independent fingerprint call would force.
153
+ const subagentsScan = await scanSubagentsDir(resolved);
154
+ const currentSubagentsState = subagentsScan.state;
156
155
  const cached = transcriptCache.get(resolved);
157
- if (currentMtime && cached && isMtimeFresh(resolved, cached.mtime)) {
156
+ if (currentMtime && cached && isMtimeFresh(resolved, cached.mtime)
157
+ && subagentsDirStateEqual(cached.subagentsDir, currentSubagentsState)) {
158
158
  log('cache hit:', resolved);
159
159
  touchCache(resolved, cached);
160
160
  return cloneShallow(cached.result);
@@ -200,17 +200,31 @@ export async function parseTranscript(transcriptPath) {
200
200
  continue;
201
201
  for (const block of content) {
202
202
  if (block.type === 'tool_use' && block.id && block.name) {
203
- toolMap.set(block.id, { id: block.id, name: sanitizeTermString(block.name), target: extractToolTarget(block.name, block.input), status: 'running', startTime: timestamp });
204
- if (block.name === 'Task') {
205
- const inp = block.input || {};
206
- agentMap.set(block.id, {
207
- id: block.id,
208
- type: sanitizeTermString(inp.subagent_type || 'unknown'),
209
- model: typeof inp.model === 'string' ? sanitizeTermString(inp.model) : inp.model,
210
- description: typeof inp.description === 'string' ? sanitizeTermString(inp.description) : inp.description,
211
- status: 'running',
212
- startTime: timestamp,
213
- });
203
+ // Claude Code occasionally re-emits a tool_use after its tool_result
204
+ // has already landed (observed when a subagent dispatch fails with
205
+ // "Agent type not found"). Treat the first completion as final β€”
206
+ // never downgrade completed/error back to running on re-registration.
207
+ const existingTool = toolMap.get(block.id);
208
+ if (!existingTool || existingTool.status === 'running') {
209
+ toolMap.set(block.id, { id: block.id, name: sanitizeTermString(block.name), target: extractToolTarget(block.name, block.input), status: 'running', startTime: timestamp });
210
+ }
211
+ // Claude Code β‰₯ 2.1.x renamed the subagent dispatch tool from
212
+ // `Task` to `Agent`. Both shapes carry the same fields
213
+ // (subagent_type, description, model, prompt). Accept either so the
214
+ // live agent count widget works on both versions.
215
+ if (block.name === 'Task' || block.name === 'Agent') {
216
+ const existingAgent = agentMap.get(block.id);
217
+ if (!existingAgent || existingAgent.status === 'running') {
218
+ const inp = block.input || {};
219
+ agentMap.set(block.id, {
220
+ id: block.id,
221
+ type: sanitizeTermString(inp.subagent_type || 'unknown'),
222
+ model: typeof inp.model === 'string' ? sanitizeTermString(inp.model) : inp.model,
223
+ description: typeof inp.description === 'string' ? sanitizeTermString(inp.description) : inp.description,
224
+ status: 'running',
225
+ startTime: timestamp,
226
+ });
227
+ }
214
228
  }
215
229
  if (block.name === 'TodoWrite' && block.input?.todos && Array.isArray(block.input.todos)) {
216
230
  const existingById = new Map(todos.map(t => [t.id || t.content, t]));
@@ -282,8 +296,21 @@ export async function parseTranscript(transcriptPath) {
282
296
  result.agents = Array.from(agentMap.values()).slice(-10);
283
297
  result.todos = todos;
284
298
  result.thinkingEffort = thinkingEffort;
299
+ // The subagents/ dir alongside the main JSONL is Claude Code's own
300
+ // per-subagent transcript store. It records every agent that ran in this
301
+ // session β€” including quiet/background ones whose tool_use entry stays
302
+ // buffered in the parent JSONL β€” and exposes a definitive completion
303
+ // marker via stop_reason. When present, prefer it over the main-JSONL
304
+ // pairing heuristic. When absent (older Claude Code, layout change), fall
305
+ // back to whatever main-JSONL parsing produced.
306
+ const subagentDirAgents = await readSubagentDetails(subagentsScan.candidates);
307
+ if (subagentDirAgents.length > 0) {
308
+ if (log.enabled)
309
+ log('subagents-dir override:', subagentDirAgents.length, 'agents replace', result.agents.length, 'from main JSONL');
310
+ result.agents = subagentDirAgents;
311
+ }
285
312
  if (currentMtime) {
286
- touchCache(resolved, { result, mtime: currentMtime });
313
+ touchCache(resolved, { result, mtime: currentMtime, subagentsDir: currentSubagentsState });
287
314
  }
288
315
  if (log.enabled) {
289
316
  log('parsed', resolved, {
@@ -1 +1 @@
1
- {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/parsers/transcript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/parsers/transcript.ts"],"names":[],"mappings":"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"}
@@ -36,8 +36,12 @@ export declare function getContextColor(pct: number, warning?: number, critical?
36
36
  */
37
37
  export declare function getPaceColor(delta: number): ColorName;
38
38
  /**
39
- * Color for the cache hit rate percentage.
40
- * Green when cache is working well (β‰₯70%), yellow for moderate (40–69%), orange for poor (<40%).
39
+ * Color for the cache hit rate widget. Rendered only when below the alarm
40
+ * threshold (β‰₯90% is hidden as healthy steady-state), so the tiers reflect
41
+ * degrees of "something is wrong" rather than degrees of healthy.
42
+ * 70–89%: yellow (mild concern β€” TTL expiry, fresh content arrived)
43
+ * 40–69%: orange (caching not engaging)
44
+ * <40%: blinkRed (cache likely broken)
41
45
  */
42
46
  export declare function getCacheHitColor(pct: number): ColorName;
43
47
  export declare function getQuotaColor(pct: number): ColorName;
@@ -95,15 +95,19 @@ export function getPaceColor(delta) {
95
95
  return 'blinkRed';
96
96
  }
97
97
  /**
98
- * Color for the cache hit rate percentage.
99
- * Green when cache is working well (β‰₯70%), yellow for moderate (40–69%), orange for poor (<40%).
98
+ * Color for the cache hit rate widget. Rendered only when below the alarm
99
+ * threshold (β‰₯90% is hidden as healthy steady-state), so the tiers reflect
100
+ * degrees of "something is wrong" rather than degrees of healthy.
101
+ * 70–89%: yellow (mild concern β€” TTL expiry, fresh content arrived)
102
+ * 40–69%: orange (caching not engaging)
103
+ * <40%: blinkRed (cache likely broken)
100
104
  */
101
105
  export function getCacheHitColor(pct) {
102
106
  if (pct >= 70)
103
- return 'green';
104
- if (pct >= 40)
105
107
  return 'yellow';
106
- return 'orange';
108
+ if (pct >= 40)
109
+ return 'orange';
110
+ return 'blinkRed';
107
111
  }
108
112
  export function getQuotaColor(pct) {
109
113
  if (!Number.isFinite(pct))
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/render/colors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/render/colors.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { fitSegments, truncField } from './text.js';
4
4
  import { formatGitChanges, getActiveTodo, SEP } from './shared.js';
5
5
  import { hyperlink } from './hyperlink.js';
6
6
  import { formatDuration } from '../utils/format.js';
7
+ import { isNamedAgentType } from '../parsers/subagents.js';
7
8
  export function renderLine1(ctx, c) {
8
9
  const { input, git, transcript, config: { display }, cols, icons, memory, tokenSpeed } = ctx;
9
10
  const left = [];
@@ -71,8 +72,22 @@ export function renderLine1(ctx, c) {
71
72
  if (display.worktree && input.worktreeName) {
72
73
  right.push(c.gray(`${icons.tree} ${truncField(input.worktreeName, 15)}`));
73
74
  }
74
- if (display.agent && input.agentName) {
75
- right.push(c.gray(`${icons.cubes} ${truncField(input.agentName, 15)}`));
75
+ if (display.agent) {
76
+ // Show the cubes-icon agent name when:
77
+ // 1) the statusline is rendering inside a subagent session (input.agentName
78
+ // comes from Claude Code's stdin payload), or
79
+ // 2) the parent session has exactly one *named* subagent currently
80
+ // running. Anonymous (general-purpose / unknown) agents stay collapsed
81
+ // under the live ⚑N agents widget on line 3 to avoid noise.
82
+ let agentName = input.agentName;
83
+ if (!agentName) {
84
+ const named = transcript.agents.filter(a => a.status === 'running' && isNamedAgentType(a.type));
85
+ if (named.length === 1)
86
+ agentName = named[0].type;
87
+ }
88
+ if (agentName) {
89
+ right.push(c.gray(`${icons.cubes} ${truncField(agentName, 15)}`));
90
+ }
76
91
  }
77
92
  if (display.sessionName && input.sessionName) {
78
93
  right.push(c.dim(truncField(input.sessionName, 20)));
@@ -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,aAAa,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,MAAM,UAAU,WAAW,CAAC,GAAkB,EAAE,CAAS;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAC7F,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,QAAQ;IACR,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,KAAK,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,mFAAmF;IACnF,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,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3F,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAChD,IAAI,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC;QAEtD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACvC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,SAAS,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED,YAAY;IACZ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACtB,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7E,yEAAyE;YACzE,oEAAoE;YACpE,wCAAwC;YACxC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,IAAI,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,SAAS;IACT,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,cAAc;IACd,IAAI,OAAO,CAAC,UAAU,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,UAAU,QAAQ,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,6BAA6B;IAC7B,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;QAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC;QACnC,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,4EAA4E;IAC5E,0EAA0E;IAC1E,yEAAyE;IACzE,gDAAgD;IAChD,IAAI,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,yEAAyE;IACzE,IAAI,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,SAAS,CAClB,6DAA6D,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAChG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAC3B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACvD,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"line1.js","sourceRoot":"","sources":["../../src/render/line1.ts"],"names":[],"mappings":"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"}
@@ -64,8 +64,11 @@ export function renderLine2(ctx, c) {
64
64
  if (parts.length > 0)
65
65
  leftParts.push(`${icons.comment} ${parts.join(' ')}`);
66
66
  }
67
- // Cache metrics (hit rate) β€” colored by quality tier
68
- if (display.cacheMetrics && input.cacheHitRate != null) {
67
+ // Cache metrics (hit rate) β€” alarm-mode display: only render when <90%
68
+ // because Anthropic's prompt cache pins this near 99% in healthy steady state,
69
+ // and an always-on 99% is wallpaper, not signal. Mirrors the hide-when-healthy
70
+ // pattern used by rate-limits (β‰₯50%) and agent-count (β‰₯1).
71
+ if (display.cacheMetrics && input.cacheHitRate != null && input.cacheHitRate < 90) {
69
72
  const cacheColorFn = c[getCacheHitColor(input.cacheHitRate)];
70
73
  leftParts.push(cacheColorFn(`${input.cacheHitRate}%${icons.lightning}`));
71
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"line2.js","sourceRoot":"","sources":["../../src/render/line2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"line2.js","sourceRoot":"","sources":["../../src/render/line2.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,20 @@
1
+ import { debug } from '../utils/debug.js';
2
+ const log = debug('pace');
1
3
  export function computePaceDelta(usedPercentage, resetsAt, nowSec) {
2
4
  const now = nowSec ?? Date.now() / 1000;
3
- if (resetsAt === undefined || resetsAt <= now)
5
+ if (resetsAt === undefined || resetsAt <= now) {
6
+ if (log.enabled)
7
+ log({ reason: 'no resetsAt or already past', resetsAt, now });
4
8
  return null;
9
+ }
5
10
  const totalWindowSec = 5 * 3600;
6
11
  const remainingSec = resetsAt - now;
7
12
  const elapsedSec = totalWindowSec - remainingSec;
8
- if (elapsedSec < 300)
9
- return null; // insufficient data β€” less than 5 min elapsed
13
+ if (elapsedSec < 300) {
14
+ if (log.enabled)
15
+ log({ reason: 'insufficient data (<5min)', elapsedSec, remainingSec });
16
+ return null;
17
+ }
10
18
  const elapsedPct = (elapsedSec / totalWindowSec) * 100;
11
19
  const delta = usedPercentage - elapsedPct;
12
20
  let timeToExhaustion = null;
@@ -15,6 +23,20 @@ export function computePaceDelta(usedPercentage, resetsAt, nowSec) {
15
23
  // time to exhaust remaining (100 - usedPercentage) pct at that rate
16
24
  timeToExhaustion = (100 - usedPercentage) / (usedPercentage / elapsedSec) / 60;
17
25
  }
26
+ if (log.enabled) {
27
+ log({
28
+ usedPercentage,
29
+ resetsAt,
30
+ now,
31
+ elapsedSec: Math.round(elapsedSec),
32
+ elapsedMin: Math.round(elapsedSec / 60),
33
+ remainingSec: Math.round(remainingSec),
34
+ remainingMin: Math.round(remainingSec / 60),
35
+ elapsedPct: Math.round(elapsedPct * 10) / 10,
36
+ delta: Math.round(delta * 10) / 10,
37
+ timeToExhaustionMin: timeToExhaustion != null ? Math.round(timeToExhaustion) : null,
38
+ });
39
+ }
18
40
  return { delta, timeToExhaustion };
19
41
  }
20
42
  export function formatPaceDelta(pace) {
@@ -1 +1 @@
1
- {"version":3,"file":"pace.js","sourceRoot":"","sources":["../../src/render/pace.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,gBAAgB,CAC9B,cAAsB,EACtB,QAA4B,EAC5B,MAAe;IAEf,MAAM,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAExC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC;IAE3D,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC;IAChC,MAAM,YAAY,GAAG,QAAQ,GAAG,GAAG,CAAC;IACpC,MAAM,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC;IAEjD,IAAI,UAAU,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC,CAAC,8CAA8C;IAEjF,MAAM,UAAU,GAAG,CAAC,UAAU,GAAG,cAAc,CAAC,GAAG,GAAG,CAAC;IACvD,MAAM,KAAK,GAAG,cAAc,GAAG,UAAU,CAAC;IAE1C,IAAI,gBAAgB,GAAkB,IAAI,CAAC;IAC3C,IAAI,KAAK,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACpC,2DAA2D;QAC3D,oEAAoE;QACpE,gBAAgB,GAAG,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;IACjF,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAe;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAExD,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACnB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC/C,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBACb,MAAM,GAAG,IAAI,IAAI,EAAE;oBACjB,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI;oBACjC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC;YACvB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;IACjC,CAAC;IAED,OAAO,GAAG,OAAO,GAAG,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"pace.js","sourceRoot":"","sources":["../../src/render/pace.ts"],"names":[],"mappings":"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"}
@@ -106,8 +106,8 @@ function buildSegments(ctx, palette, c) {
106
106
  segments.push({ text: `${icons.comment} ${parts.join(' ')}`, bg: palette.dirBg, fg: palette.fg, priority: 60 });
107
107
  }
108
108
  }
109
- // Cache metrics (hit rate) β€” priority 50, colored text inside segment
110
- if (display.cacheMetrics && input.cacheHitRate != null) {
109
+ // Cache metrics (hit rate) β€” alarm-mode: only when <90%. See line2.ts for why.
110
+ if (display.cacheMetrics && input.cacheHitRate != null && input.cacheHitRate < 90) {
111
111
  segments.push({ text: `${input.cacheHitRate}%${icons.lightning}`, bg: palette.versionBg, fg: palette.fg, priority: 50 });
112
112
  }
113
113
  // MCP servers
@@ -1 +1 @@
1
- {"version":3,"file":"powerline-line2.js","sourceRoot":"","sources":["../../src/render/powerline-line2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"powerline-line2.js","sourceRoot":"","sources":["../../src/render/powerline-line2.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,21 @@
1
+ /**
2
+ * Resolves a path through symlinks, falling back to plain `resolve()` if the
3
+ * path doesn't exist or canonicalisation fails. Used to harden allow-list
4
+ * checks across modules that read user-controlled paths.
5
+ */
6
+ export declare function realpathSafe(p: string): string;
7
+ /**
8
+ * The default set of root directories Lumira parsers are allowed to read from.
9
+ * Includes both the canonical and the symlink-resolved forms of $HOME and
10
+ * $TMPDIR so paths under either spelling are accepted.
11
+ *
12
+ * IMPORTANT: this allow-list is a *string-level* defence. `isUnderAllowedRoot`
13
+ * does not follow symlinks at check time β€” callers protecting against symlink
14
+ * traversal should canonicalise the candidate path with `realpathSafe` before
15
+ * the comparison, or accept that a symlink whose target lies outside the
16
+ * allow-list is treated as legal as long as its own *path* sits under one.
17
+ */
18
+ export declare const LUMIRA_ALLOWED_ROOTS: readonly string[];
1
19
  /**
2
20
  * Returns true if `candidate` is the same as, or a descendant of, any of the
3
21
  * `roots`. Uses `path.relative` to avoid the classic `startsWith` bypass where
@@ -1,4 +1,33 @@
1
+ import { realpathSync } from 'node:fs';
2
+ import { homedir, tmpdir } from 'node:os';
1
3
  import { resolve, relative, isAbsolute } from 'node:path';
4
+ /**
5
+ * Resolves a path through symlinks, falling back to plain `resolve()` if the
6
+ * path doesn't exist or canonicalisation fails. Used to harden allow-list
7
+ * checks across modules that read user-controlled paths.
8
+ */
9
+ export function realpathSafe(p) {
10
+ try {
11
+ return realpathSync(p);
12
+ }
13
+ catch {
14
+ return resolve(p);
15
+ }
16
+ }
17
+ /**
18
+ * The default set of root directories Lumira parsers are allowed to read from.
19
+ * Includes both the canonical and the symlink-resolved forms of $HOME and
20
+ * $TMPDIR so paths under either spelling are accepted.
21
+ *
22
+ * IMPORTANT: this allow-list is a *string-level* defence. `isUnderAllowedRoot`
23
+ * does not follow symlinks at check time β€” callers protecting against symlink
24
+ * traversal should canonicalise the candidate path with `realpathSafe` before
25
+ * the comparison, or accept that a symlink whose target lies outside the
26
+ * allow-list is treated as legal as long as its own *path* sits under one.
27
+ */
28
+ export const LUMIRA_ALLOWED_ROOTS = [
29
+ ...new Set([resolve(homedir()), resolve(tmpdir()), realpathSafe(homedir()), realpathSafe(tmpdir())]),
30
+ ];
2
31
  /**
3
32
  * Returns true if `candidate` is the same as, or a descendant of, any of the
4
33
  * `roots`. Uses `path.relative` to avoid the classic `startsWith` bypass where
@@ -1 +1 @@
1
- {"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE1D;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,KAAwB;IAC5E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,mBAAmB,KAAK,cAAc;YAAE,OAAO,IAAI,CAAC;QACxD,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;QAC1D,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE1D;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,IAAI,CAAC;QAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAsB;IACrD,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CACrG,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,KAAwB;IAC5E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,mBAAmB,KAAK,cAAc;YAAE,OAAO,IAAI,CAAC;QACxD,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;QAC1D,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lumira",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
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",