mirror of
https://github.com/jarrodwatts/claude-hud.git
synced 2026-04-20 01:24:50 +00:00
104 lines
4.0 KiB
JavaScript
104 lines
4.0 KiB
JavaScript
import * as fs from 'node:fs';
|
|
import * as path from 'node:path';
|
|
import * as os from 'node:os';
|
|
export const DEFAULT_CONFIG = {
|
|
layout: 'default',
|
|
pathLevels: 1,
|
|
gitStatus: {
|
|
enabled: true,
|
|
showDirty: true,
|
|
showAheadBehind: false,
|
|
},
|
|
display: {
|
|
showModel: true,
|
|
showContextBar: true,
|
|
showConfigCounts: true,
|
|
showDuration: true,
|
|
showTokenBreakdown: true,
|
|
showUsage: true,
|
|
showTools: true,
|
|
showAgents: true,
|
|
showTodos: true,
|
|
autocompactBuffer: 'enabled',
|
|
},
|
|
};
|
|
export function getConfigPath() {
|
|
const homeDir = os.homedir();
|
|
return path.join(homeDir, '.claude', 'plugins', 'claude-hud', 'config.json');
|
|
}
|
|
function validatePathLevels(value) {
|
|
return value === 1 || value === 2 || value === 3;
|
|
}
|
|
function validateLayout(value) {
|
|
return value === 'default' || value === 'separators';
|
|
}
|
|
function validateAutocompactBuffer(value) {
|
|
return value === 'enabled' || value === 'disabled';
|
|
}
|
|
function mergeConfig(userConfig) {
|
|
const layout = validateLayout(userConfig.layout)
|
|
? userConfig.layout
|
|
: DEFAULT_CONFIG.layout;
|
|
const pathLevels = validatePathLevels(userConfig.pathLevels)
|
|
? userConfig.pathLevels
|
|
: DEFAULT_CONFIG.pathLevels;
|
|
const gitStatus = {
|
|
enabled: typeof userConfig.gitStatus?.enabled === 'boolean'
|
|
? userConfig.gitStatus.enabled
|
|
: DEFAULT_CONFIG.gitStatus.enabled,
|
|
showDirty: typeof userConfig.gitStatus?.showDirty === 'boolean'
|
|
? userConfig.gitStatus.showDirty
|
|
: DEFAULT_CONFIG.gitStatus.showDirty,
|
|
showAheadBehind: typeof userConfig.gitStatus?.showAheadBehind === 'boolean'
|
|
? userConfig.gitStatus.showAheadBehind
|
|
: DEFAULT_CONFIG.gitStatus.showAheadBehind,
|
|
};
|
|
const display = {
|
|
showModel: typeof userConfig.display?.showModel === 'boolean'
|
|
? userConfig.display.showModel
|
|
: DEFAULT_CONFIG.display.showModel,
|
|
showContextBar: typeof userConfig.display?.showContextBar === 'boolean'
|
|
? userConfig.display.showContextBar
|
|
: DEFAULT_CONFIG.display.showContextBar,
|
|
showConfigCounts: typeof userConfig.display?.showConfigCounts === 'boolean'
|
|
? userConfig.display.showConfigCounts
|
|
: DEFAULT_CONFIG.display.showConfigCounts,
|
|
showDuration: typeof userConfig.display?.showDuration === 'boolean'
|
|
? userConfig.display.showDuration
|
|
: DEFAULT_CONFIG.display.showDuration,
|
|
showTokenBreakdown: typeof userConfig.display?.showTokenBreakdown === 'boolean'
|
|
? userConfig.display.showTokenBreakdown
|
|
: DEFAULT_CONFIG.display.showTokenBreakdown,
|
|
showUsage: typeof userConfig.display?.showUsage === 'boolean'
|
|
? userConfig.display.showUsage
|
|
: DEFAULT_CONFIG.display.showUsage,
|
|
showTools: typeof userConfig.display?.showTools === 'boolean'
|
|
? userConfig.display.showTools
|
|
: DEFAULT_CONFIG.display.showTools,
|
|
showAgents: typeof userConfig.display?.showAgents === 'boolean'
|
|
? userConfig.display.showAgents
|
|
: DEFAULT_CONFIG.display.showAgents,
|
|
showTodos: typeof userConfig.display?.showTodos === 'boolean'
|
|
? userConfig.display.showTodos
|
|
: DEFAULT_CONFIG.display.showTodos,
|
|
autocompactBuffer: validateAutocompactBuffer(userConfig.display?.autocompactBuffer)
|
|
? userConfig.display.autocompactBuffer
|
|
: DEFAULT_CONFIG.display.autocompactBuffer,
|
|
};
|
|
return { layout, pathLevels, gitStatus, display };
|
|
}
|
|
export async function loadConfig() {
|
|
const configPath = getConfigPath();
|
|
try {
|
|
if (!fs.existsSync(configPath)) {
|
|
return DEFAULT_CONFIG;
|
|
}
|
|
const content = fs.readFileSync(configPath, 'utf-8');
|
|
const userConfig = JSON.parse(content);
|
|
return mergeConfig(userConfig);
|
|
}
|
|
catch {
|
|
return DEFAULT_CONFIG;
|
|
}
|
|
}
|
|
//# sourceMappingURL=config.js.map
|