SYMBOL INDEX (256 symbols across 31 files) FILE: src/claude-config-dir.ts function expandHomeDirPrefix (line 3) | function expandHomeDirPrefix(inputPath: string, homeDir: string): string { function getClaudeConfigDir (line 13) | function getClaudeConfigDir(homeDir: string): string { function getClaudeConfigJsonPath (line 21) | function getClaudeConfigJsonPath(homeDir: string): string { function getHudPluginDir (line 25) | function getHudPluginDir(homeDir: string): string { FILE: src/config-reader.ts type ConfigCounts (line 9) | interface ConfigCounts { type DisabledMcpKey (line 17) | type DisabledMcpKey = 'disabledMcpServers' | 'disabledMcpjsonServers'; function getMcpServerNames (line 19) | function getMcpServerNames(filePath: string): Set { function getDisabledMcpServers (line 33) | function getDisabledMcpServers(filePath: string, key: DisabledMcpKey): S... function countMcpServersInFile (line 51) | function countMcpServersInFile(filePath: string, excludeFrom?: string): ... function countHooksInFile (line 62) | function countHooksInFile(filePath: string): number { function countRulesInDir (line 76) | function countRulesInDir(rulesDir: string): number { function normalizePathForComparison (line 95) | function normalizePathForComparison(inputPath: string): string { function pathsReferToSameLocation (line 104) | function pathsReferToSameLocation(pathA: string, pathB: string): boolean { function countConfigs (line 122) | async function countConfigs(cwd?: string): Promise { FILE: src/config.ts type LineLayoutType (line 6) | type LineLayoutType = 'compact' | 'expanded'; type AutocompactBufferMode (line 8) | type AutocompactBufferMode = 'enabled' | 'disabled'; type ContextValueMode (line 9) | type ContextValueMode = 'percent' | 'tokens' | 'remaining'; type HudElement (line 10) | type HudElement = 'project' | 'context' | 'usage' | 'environment' | 'too... type HudColorName (line 11) | type HudColorName = type HudColorValue (line 21) | type HudColorValue = HudColorName | number | string; type HudColorOverrides (line 23) | interface HudColorOverrides { constant DEFAULT_ELEMENT_ORDER (line 31) | const DEFAULT_ELEMENT_ORDER: HudElement[] = [ constant KNOWN_ELEMENTS (line 41) | const KNOWN_ELEMENTS = new Set(DEFAULT_ELEMENT_ORDER); type HudConfig (line 43) | interface HudConfig { constant DEFAULT_CONFIG (line 82) | const DEFAULT_CONFIG: HudConfig = { function getConfigPath (line 127) | function getConfigPath(): string { function validatePathLevels (line 132) | function validatePathLevels(value: unknown): value is 1 | 2 | 3 { function validateLineLayout (line 136) | function validateLineLayout(value: unknown): value is LineLayoutType { function validateAutocompactBuffer (line 140) | function validateAutocompactBuffer(value: unknown): value is Autocompact... function validateContextValue (line 144) | function validateContextValue(value: unknown): value is ContextValueMode { function validateColorName (line 148) | function validateColorName(value: unknown): value is HudColorName { constant HEX_COLOR_PATTERN (line 158) | const HEX_COLOR_PATTERN = /^#[0-9a-fA-F]{6}$/; function validateColorValue (line 160) | function validateColorValue(value: unknown): value is HudColorValue { function validateElementOrder (line 167) | function validateElementOrder(value: unknown): HudElement[] { type LegacyConfig (line 192) | interface LegacyConfig { function migrateConfig (line 196) | function migrateConfig(userConfig: Partial & LegacyConfig): P... function validateThreshold (line 222) | function validateThreshold(value: unknown, max = 100): number { function validatePositiveInt (line 227) | function validatePositiveInt(value: unknown, defaultValue: number): numb... function mergeConfig (line 232) | function mergeConfig(userConfig: Partial): HudConfig { function loadConfig (line 350) | async function loadConfig(): Promise { FILE: src/constants.ts constant AUTOCOMPACT_BUFFER_PERCENT (line 10) | const AUTOCOMPACT_BUFFER_PERCENT = 0.165; FILE: src/debug.ts constant DEBUG (line 4) | const DEBUG = process.env.DEBUG?.includes('claude-hud') || process.env.D... function createDebug (line 10) | function createDebug(namespace: string) { FILE: src/extra-cmd.ts constant MAX_BUFFER (line 6) | const MAX_BUFFER = 10 * 1024; constant MAX_LABEL_LENGTH (line 7) | const MAX_LABEL_LENGTH = 50; constant TIMEOUT_MS (line 8) | const TIMEOUT_MS = 3000; function debug (line 12) | function debug(message: string): void { type ExtraLabel (line 18) | interface ExtraLabel { function sanitize (line 26) | function sanitize(input: string): string { function parseExtraCmdArg (line 39) | function parseExtraCmdArg(argv: string[] = process.argv): string | null { function runExtraCmd (line 79) | async function runExtraCmd(cmd: string, timeout: number = TIMEOUT_MS): P... FILE: src/git.ts type FileStats (line 6) | interface FileStats { type GitStatus (line 13) | interface GitStatus { function getGitBranch (line 21) | async function getGitBranch(cwd?: string): Promise { function getGitStatus (line 36) | async function getGitStatus(cwd?: string): Promise { function parseFileStats (line 95) | function parseFileStats(porcelainOutput: string): FileStats { FILE: src/index.ts type MainDeps (line 13) | type MainDeps = { function main (line 27) | async function main(overrides: Partial = {}): Promise { function formatSessionDuration (line 101) | function formatSessionDuration(sessionStart?: Date, now: () => number = ... FILE: src/render/agents-line.ts function renderAgentsLine (line 4) | function renderAgentsLine(ctx: RenderContext): string | null { function formatAgent (line 27) | function formatAgent(agent: AgentEntry): string { function truncateDesc (line 37) | function truncateDesc(desc: string, maxLen: number = 40): string { function formatElapsed (line 42) | function formatElapsed(agent: AgentEntry): string { FILE: src/render/colors.ts constant RESET (line 3) | const RESET = '\x1b[0m'; constant DIM (line 5) | const DIM = '\x1b[2m'; constant RED (line 6) | const RED = '\x1b[31m'; constant GREEN (line 7) | const GREEN = '\x1b[32m'; constant YELLOW (line 8) | const YELLOW = '\x1b[33m'; constant MAGENTA (line 9) | const MAGENTA = '\x1b[35m'; constant CYAN (line 10) | const CYAN = '\x1b[36m'; constant BRIGHT_BLUE (line 11) | const BRIGHT_BLUE = '\x1b[94m'; constant BRIGHT_MAGENTA (line 12) | const BRIGHT_MAGENTA = '\x1b[95m'; constant CLAUDE_ORANGE (line 13) | const CLAUDE_ORANGE = '\x1b[38;5;208m'; constant ANSI_BY_NAME (line 15) | const ANSI_BY_NAME: Record = { function hexToAnsi (line 26) | function hexToAnsi(hex: string): string { function resolveAnsi (line 37) | function resolveAnsi(value: HudColorValue | undefined, fallback: string)... function colorize (line 50) | function colorize(text: string, color: string): string { function green (line 54) | function green(text: string): string { function yellow (line 58) | function yellow(text: string): string { function red (line 62) | function red(text: string): string { function cyan (line 66) | function cyan(text: string): string { function magenta (line 70) | function magenta(text: string): string { function dim (line 74) | function dim(text: string): string { function claudeOrange (line 78) | function claudeOrange(text: string): string { function warning (line 82) | function warning(text: string, colors?: Partial): str... function critical (line 86) | function critical(text: string, colors?: Partial): st... function getContextColor (line 90) | function getContextColor(percent: number, colors?: Partial(['tools', 'agents', 'todos... function collectActivityLines (line 309) | function collectActivityLines(ctx: RenderContext): string[] { function renderElementLine (line 337) | function renderElementLine(ctx: RenderContext, element: HudElement): str... function renderCompact (line 358) | function renderCompact(ctx: RenderContext): string[] { function renderExpanded (line 369) | function renderExpanded(ctx: RenderContext): Array<{ line: string; isAct... function render (line 418) | function render(ctx: RenderContext): void { FILE: src/render/lines/environment.ts function renderEnvironmentLine (line 4) | function renderEnvironmentLine(ctx: RenderContext): string | null { FILE: src/render/lines/identity.ts constant DEBUG (line 6) | const DEBUG = process.env.DEBUG?.includes('claude-hud') || process.env.D... function renderIdentityLine (line 8) | function renderIdentityLine(ctx: RenderContext): string { function formatTokens (line 40) | function formatTokens(n: number): string { function formatContextValue (line 50) | function formatContextValue(ctx: RenderContext, percent: number, mode: '... FILE: src/render/lines/project.ts function renderProjectLine (line 6) | function renderProjectLine(ctx: RenderContext): string | null { FILE: src/render/lines/usage.ts function renderUsageLine (line 7) | function renderUsageLine(ctx: RenderContext): string | null { function formatUsagePercent (line 78) | function formatUsagePercent(percent: number | null, colors?: RenderConte... function formatUsageError (line 86) | function formatUsageError(error?: string): string { function formatResetTime (line 93) | function formatResetTime(resetAt: Date | null): string { FILE: src/render/session-line.ts constant DEBUG (line 8) | const DEBUG = process.env.DEBUG?.includes('claude-hud') || process.env.D... function renderSessionLine (line 14) | function renderSessionLine(ctx: RenderContext): string { function formatTokens (line 231) | function formatTokens(n: number): string { function formatContextValue (line 241) | function formatContextValue(ctx: RenderContext, percent: number, mode: '... function formatUsagePercent (line 258) | function formatUsagePercent(percent: number | null, colors?: RenderConte... function formatUsageError (line 266) | function formatUsageError(error?: string): string { function formatResetTime (line 273) | function formatResetTime(resetAt: Date | null): string { FILE: src/render/todos-line.ts function renderTodosLine (line 4) | function renderTodosLine(ctx: RenderContext): string | null { function truncateContent (line 28) | function truncateContent(content: string, maxLen: number = 50): string { FILE: src/render/tools-line.ts function renderToolsLine (line 4) | function renderToolsLine(ctx: RenderContext): string | null { function truncatePath (line 42) | function truncatePath(path: string, maxLen: number = 20): string { FILE: src/speed-tracker.ts constant SPEED_WINDOW_MS (line 7) | const SPEED_WINDOW_MS = 2000; type SpeedCache (line 9) | interface SpeedCache { type SpeedTrackerDeps (line 14) | type SpeedTrackerDeps = { function getCachePath (line 24) | function getCachePath(homeDir: string): string { function readCache (line 28) | function readCache(homeDir: string): SpeedCache | null { function writeCache (line 43) | function writeCache(homeDir: string, cache: SpeedCache): void { function getOutputSpeed (line 56) | function getOutputSpeed(stdin: StdinData, overrides: Partial { function getTotalTokens (line 26) | function getTotalTokens(stdin: StdinData): number { function getNativePercent (line 39) | function getNativePercent(stdin: StdinData): number | null { function getContextPercent (line 47) | function getContextPercent(stdin: StdinData): number { function getBufferedPercent (line 64) | function getBufferedPercent(stdin: StdinData): number { function getModelName (line 91) | function getModelName(stdin: StdinData): string { function isBedrockModelId (line 106) | function isBedrockModelId(modelId?: string): boolean { function getProviderLabel (line 114) | function getProviderLabel(stdin: StdinData): string | null { function normalizeBedrockModelLabel (line 121) | function normalizeBedrockModelLabel(modelId: string): string | null { function readNumericVersion (line 157) | function readNumericVersion(tokens: string[], startIndex: number, step: ... FILE: src/transcript.ts type TranscriptLine (line 5) | interface TranscriptLine { type ContentBlock (line 15) | interface ContentBlock { function parseTranscript (line 24) | async function parseTranscript(transcriptPath: string): Promise... function resolveTaskIndex (line 192) | function resolveTaskIndex( function normalizeTaskStatus (line 215) | function normalizeTaskStatus(status: unknown): TodoItem['status'] | null { FILE: src/types.ts type StdinData (line 4) | interface StdinData { type ToolEntry (line 25) | interface ToolEntry { type AgentEntry (line 34) | interface AgentEntry { type TodoItem (line 44) | interface TodoItem { type UsageWindow (line 50) | interface UsageWindow { type UsageData (line 55) | interface UsageData { function isLimitReached (line 66) | function isLimitReached(data: UsageData): boolean { type TranscriptData (line 70) | interface TranscriptData { type RenderContext (line 78) | interface RenderContext { FILE: src/usage-api.ts constant LEGACY_KEYCHAIN_SERVICE_NAME (line 16) | const LEGACY_KEYCHAIN_SERVICE_NAME = 'Claude Code-credentials'; type CredentialsFile (line 18) | interface CredentialsFile { type UsageApiResponse (line 29) | interface UsageApiResponse { type UsageApiResult (line 40) | interface UsageApiResult { constant CACHE_TTL_MS (line 48) | const CACHE_TTL_MS = 5 * 60_000; constant CACHE_FAILURE_TTL_MS (line 49) | const CACHE_FAILURE_TTL_MS = 15_000; constant CACHE_RATE_LIMITED_BASE_MS (line 50) | const CACHE_RATE_LIMITED_BASE_MS = 60_000; constant CACHE_RATE_LIMITED_MAX_MS (line 51) | const CACHE_RATE_LIMITED_MAX_MS = 5 * 60_000; constant CACHE_LOCK_STALE_MS (line 52) | const CACHE_LOCK_STALE_MS = 30_000; constant CACHE_LOCK_WAIT_MS (line 53) | const CACHE_LOCK_WAIT_MS = 2_000; constant CACHE_LOCK_POLL_MS (line 54) | const CACHE_LOCK_POLL_MS = 50; constant KEYCHAIN_TIMEOUT_MS (line 55) | const KEYCHAIN_TIMEOUT_MS = 3000; constant KEYCHAIN_BACKOFF_MS (line 56) | const KEYCHAIN_BACKOFF_MS = 60_000; constant USAGE_API_TIMEOUT_MS_DEFAULT (line 57) | const USAGE_API_TIMEOUT_MS_DEFAULT = 15_000; constant USAGE_API_USER_AGENT (line 58) | const USAGE_API_USER_AGENT = 'claude-code/2.1'; function isUsingCustomApiEndpoint (line 64) | function isUsingCustomApiEndpoint(env: NodeJS.ProcessEnv = process.env):... type CacheFile (line 79) | interface CacheFile { type CacheState (line 90) | interface CacheState { type CacheLockStatus (line 96) | type CacheLockStatus = 'acquired' | 'busy' | 'unsupported'; function getCachePath (line 98) | function getCachePath(homeDir: string): string { function getCacheLockPath (line 102) | function getCacheLockPath(homeDir: string): string { function hydrateCacheData (line 106) | function hydrateCacheData(data: UsageData): UsageData { type CacheTtls (line 118) | type CacheTtls = { cacheTtlMs: number; failureCacheTtlMs: number }; function getRateLimitedTtlMs (line 120) | function getRateLimitedTtlMs(count: number): number { function getRateLimitedRetryUntil (line 125) | function getRateLimitedRetryUntil(cache: CacheFile): number | null { function withRateLimitedSyncing (line 141) | function withRateLimitedSyncing(data: UsageData): UsageData { function readCacheState (line 148) | function readCacheState(homeDir: string, now: number, ttls: CacheTtls): ... function readRateLimitedCount (line 178) | function readRateLimitedCount(homeDir: string): number { function readLastGoodData (line 190) | function readLastGoodData(homeDir: string): UsageData | null { function readCache (line 202) | function readCache(homeDir: string, now: number, ttls: CacheTtls): Usage... type WriteCacheOpts (line 207) | interface WriteCacheOpts { function writeCache (line 213) | function writeCache(homeDir: string, data: UsageData, timestamp: number,... function readLockTimestamp (line 238) | function readLockTimestamp(lockPath: string): number | null { function tryAcquireCacheLock (line 249) | function tryAcquireCacheLock(homeDir: string): CacheLockStatus { function releaseCacheLock (line 304) | function releaseCacheLock(homeDir: string): void { function waitForFreshCache (line 315) | async function waitForFreshCache( type UsageApiDeps (line 339) | type UsageApiDeps = { function getUsage (line 364) | async function getUsage(overrides: Partial = {}): Promise<... function getKeychainBackoffPath (line 487) | function getKeychainBackoffPath(homeDir: string): string { function isKeychainBackoff (line 495) | function isKeychainBackoff(homeDir: string, now: number): boolean { function recordKeychainFailure (line 509) | function recordKeychainFailure(homeDir: string, now: number): void { function getKeychainServiceName (line 526) | function getKeychainServiceName(configDir: string, homeDir: string): str... function getKeychainServiceNames (line 538) | function getKeychainServiceNames( function isMissingKeychainItemError (line 562) | function isMissingKeychainItemError(error: unknown): boolean { function resolveKeychainCredentials (line 579) | function resolveKeychainCredentials( function getKeychainAccountName (line 634) | function getKeychainAccountName(): string | null { function readKeychainCredentials (line 650) | function readKeychainCredentials(now: number, homeDir: string): { access... function readFileCredentials (line 706) | function readFileCredentials(homeDir: string, now: number): { accessToke... function readFileSubscriptionType (line 723) | function readFileSubscriptionType(homeDir: string): string | null { function parseCredentialsData (line 750) | function parseCredentialsData(data: CredentialsFile, now: number): { acc... function readCredentials (line 776) | function readCredentials( function getPlanName (line 812) | function getPlanName(subscriptionType: string): string | null { function parseUtilization (line 824) | function parseUtilization(value: number | undefined): number | null { function parseDate (line 831) | function parseDate(dateStr: string | undefined): Date | null { function getUsageApiTimeoutMs (line 842) | function getUsageApiTimeoutMs(env: NodeJS.ProcessEnv = process.env): num... function isNoProxy (line 854) | function isNoProxy(hostname: string, env: NodeJS.ProcessEnv = process.en... function getProxyUrl (line 869) | function getProxyUrl(hostname: string, env: NodeJS.ProcessEnv = process.... function createProxyTunnelAgent (line 896) | function createProxyTunnelAgent(proxyUrl: URL): https.Agent { function fetchUsageApi (line 983) | function fetchUsageApi(accessToken: string): Promise { function parseRetryAfterSeconds (line 1053) | function parseRetryAfterSeconds( function clearCache (line 1075) | function clearCache(homeDir?: string): void { FILE: src/utils/terminal.ts function getAdaptiveBarWidth (line 3) | function getAdaptiveBarWidth(): number { FILE: tests/config.test.js function restoreEnvVar (line 15) | function restoreEnvVar(name, value) { FILE: tests/core.test.js function restoreEnvVar (line 12) | function restoreEnvVar(name, value) { FILE: tests/integration.test.js function stripAnsi (line 10) | function stripAnsi(text) { function skipIfSpawnBlocked (line 17) | function skipIfSpawnBlocked(result, t) { FILE: tests/render-width.test.js function baseContext (line 5) | function baseContext() { function stripAnsi (line 54) | function stripAnsi(str) { function isWideCodePoint (line 59) | function isWideCodePoint(codePoint) { function displayWidth (line 76) | function displayWidth(text) { function withColumns (line 85) | function withColumns(stream, columns, fn) { function withTerminal (line 99) | function withTerminal(columns, fn) { function captureRender (line 103) | function captureRender(ctx) { function countContaining (line 115) | function countContaining(lines, needle) { FILE: tests/render.test.js function stripAnsi (line 15) | function stripAnsi(str) { function baseContext (line 20) | function baseContext() { function captureRenderLines (line 59) | function captureRenderLines(ctx) { function withDeterministicSpeedCache (line 71) | async function withDeterministicSpeedCache(fn) { FILE: tests/speed-tracker.test.js function restoreEnvVar (line 9) | function restoreEnvVar(name, value) { function createTempHome (line 17) | async function createTempHome() { FILE: tests/usage-api.test.js constant USAGE_API_USER_AGENT (line 23) | let USAGE_API_USER_AGENT; function ensureUsageApiDistIsCurrent (line 25) | function ensureUsageApiDistIsCurrent() { function createTempHome (line 63) | async function createTempHome() { function restoreEnvVar (line 67) | function restoreEnvVar(name, value) { function writeCredentialsInConfigDir (line 75) | async function writeCredentialsInConfigDir(configDir, credentials) { function writeCredentials (line 81) | async function writeCredentials(homeDir, credentials) { function buildCredentials (line 85) | function buildCredentials(overrides = {}) { function buildApiResponse (line 96) | function buildApiResponse(overrides = {}) { function buildApiResult (line 110) | function buildApiResult(overrides = {}) { function buildMissingKeychainError (line 117) | function buildMissingKeychainError() {