INNER CODE UNIT · TypeScript
loadState
vibeeval/vibecosystem · hooks/src/achievement-tracker.ts:94
function loadState(): AchievementState {
if (!existsSync(ACHIEVEMENTS_PATH)) return defaultState();
try {
const parsed = JSON.parse(readFileSync(ACHIEVEMENTS_PATH, 'utf-8')) as AchievementState;
// Ensure counters bag exists for older state files
if (!parsed.progress.counters) parsed.progress.counters = {};
if (!parsed.progress['session-languages']) parsed.progress['session-languages'] = [];
return parsed;
} catch {
return defaultState();
}
}
function saveState(state: AchievementState): void {
const dir = join(homedir(), '.claude');
if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
writeFileSync(ACHIEVEMENTS_PATH, JSON.stringify(state, null, 2));
}