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 +1 -1
- package/dist/parsers/subagents.d.ts +82 -0
- package/dist/parsers/subagents.js +338 -0
- package/dist/parsers/subagents.js.map +1 -0
- package/dist/parsers/transcript.js +60 -33
- package/dist/parsers/transcript.js.map +1 -1
- package/dist/render/colors.d.ts +6 -2
- package/dist/render/colors.js +9 -5
- package/dist/render/colors.js.map +1 -1
- package/dist/render/line1.js +17 -2
- package/dist/render/line1.js.map +1 -1
- package/dist/render/line2.js +5 -2
- package/dist/render/line2.js.map +1 -1
- package/dist/render/pace.js +25 -3
- package/dist/render/pace.js.map +1 -1
- package/dist/render/powerline-line2.js +2 -2
- package/dist/render/powerline-line2.js.map +1 -1
- package/dist/utils/path.d.ts +18 -0
- package/dist/utils/path.js +29 -0
- package/dist/utils/path.js.map +1 -1
- package/package.json +1 -1
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 (`
|
|
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
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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,
|
|
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
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
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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"}
|
package/dist/render/colors.d.ts
CHANGED
|
@@ -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
|
|
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;
|
package/dist/render/colors.js
CHANGED
|
@@ -95,15 +95,19 @@ export function getPaceColor(delta) {
|
|
|
95
95
|
return 'blinkRed';
|
|
96
96
|
}
|
|
97
97
|
/**
|
|
98
|
-
* Color for the cache hit rate
|
|
99
|
-
*
|
|
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
|
-
|
|
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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"}
|
package/dist/render/line1.js
CHANGED
|
@@ -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
|
|
75
|
-
|
|
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)));
|
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,aAAa,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,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
|
@@ -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) β
|
|
68
|
-
|
|
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
|
}
|
package/dist/render/line2.js.map
CHANGED
|
@@ -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":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAe,MAAM,aAAa,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG9D,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,MAAM,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IAChE,MAAM,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;IACxD,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;IACxD,OAAO,GAAG,CAAC,GAAG,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAkB,EAAE,CAAS;IACvD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IACjH,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,0EAA0E;IAC1E,2DAA2D;IAC3D,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,cAAc;IACd,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;QACzC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE;YACrC,OAAO,EAAE,KAAK;YACd,IAAI;YACJ,gBAAgB,EAAE,OAAO,CAAC,uBAAuB;YACjD,iBAAiB,EAAE,OAAO,CAAC,wBAAwB;SACpD,CAAC,CAAC,CAAC;QACJ,gBAAgB,EAAE,CAAC;IACrB,CAAC;IAED,wEAAwE;IACxE,4EAA4E;IAC5E,6EAA6E;IAC7E,wCAAwC;IACxC,IAAI,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;QAC9D,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU;eACpC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YACzE,gBAAgB,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,SAAS;IACT,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACpC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QACtC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,QAAQ,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI,SAAS,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,uEAAuE;IACvE,+EAA+E;IAC/E,+EAA+E;IAC/E,2DAA2D;IAC3D,IAAI,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,IAAI,IAAI,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC;QAClF,MAAM,YAAY,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QAC7D,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,+DAA+D;IAC/D,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,QAAQ,GAAG,OAAO,CAAC;QACvB,IAAI,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC1D,IAAI,IAAI;gBAAE,QAAQ,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED,cAAc;IACd,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QACjC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;QACpE,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,SAAS,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAEtD,mCAAmC;IACnC,EAAE;IACF,8EAA8E;IAC9E,6EAA6E;IAC7E,8EAA8E;IAC9E,4EAA4E;IAC5E,2EAA2E;IAC3E,sDAAsD;IACtD,IAAI,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAiD;YAC3D,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;YACjC,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;SAClC,CAAC;QACF,yEAAyE;QACzE,wEAAwE;QACxE,IAAI,gBAAgB,GAAG,gBAAgB,CAAC;QACxC,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;YAClC,yEAAyE;YACzE,kEAAkE;YAClE,mEAAmE;YACnE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,cAAc,GAAG,EAAE;gBAAE,SAAS;YACtF,MAAM,OAAO,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;YACrD,uEAAuE;YACvE,uEAAuE;YACvE,IAAI,QAAQ,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;YAC3G,IAAI,GAAG,CAAC,cAAc,IAAI,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC7C,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAChD,IAAI,SAAS;oBAAE,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,IAAI,GAAG,CAAC,cAAc,IAAI,cAAc,EAAE,CAAC;gBACzC,SAAS,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAChD,gBAAgB,EAAE,CAAC,CAAC,2DAA2D;YACjF,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,8EAA8E;IAC9E,4CAA4C;IAC5C,IAAI,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC;QACpD,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC9C,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC,cAAc,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;YAChF,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClF,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAChD,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjD,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,UAAU,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,IAAI,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACjC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,yEAAyE;IACzE,2EAA2E;IAC3E,mDAAmD;IACnD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,IAAI,cAAc,CAAC;IACnD,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACpD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,sEAAsE;IACtE,0EAA0E;IAC1E,wEAAwE;IACxE,wEAAwE;IACxE,2BAA2B;IAC3B,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QACjG,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC/B,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CACvE,CAAC;YACF,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAChD,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,oDAAoD;YACpD,IAAI,UAAU,GAAG,KAAK,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC;YACrE,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,UAAU,GAAG,IAAI,GAAG,IAAI;oBAAE,MAAM;gBACpC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnB,UAAU,IAAI,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjE,OAAO,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACvD,CAAC"}
|
package/dist/render/pace.js
CHANGED
|
@@ -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
|
-
|
|
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) {
|
package/dist/render/pace.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pace.js","sourceRoot":"","sources":["../../src/render/pace.ts"],"names":[],"mappings":"
|
|
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) β
|
|
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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"}
|
package/dist/utils/path.d.ts
CHANGED
|
@@ -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
|
package/dist/utils/path.js
CHANGED
|
@@ -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
|
package/dist/utils/path.js.map
CHANGED
|
@@ -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