fix: address review feedback on statusline-counts.js

- Check CLAUDE_MEM_DATA_DIR env var before settings.json (Greptile)
- Derive project before DB check for consistent output (Greptile)
- Include project in error fallback output (Greptile)
- Set executable permission for shebang compatibility (Greptile)
This commit is contained in:
Rod Boev
2026-02-10 04:39:58 -05:00
parent 9bcef1774d
commit 6ac5507e4e
+15 -13
View File
@@ -23,28 +23,30 @@ import { existsSync, readFileSync } from "fs";
import { homedir } from "os";
import { join, basename } from "path";
const cwd = process.argv[2] || process.env.CLAUDE_CWD || process.cwd();
const project = basename(cwd);
try {
// Resolve data directory from settings (supports CLAUDE_MEM_DATA_DIR override)
let dataDir = join(homedir(), ".claude-mem");
const settingsPath = join(dataDir, "settings.json");
if (existsSync(settingsPath)) {
try {
const settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
if (settings.CLAUDE_MEM_DATA_DIR) dataDir = settings.CLAUDE_MEM_DATA_DIR;
} catch { /* use default */ }
// Resolve data directory: env var → settings.json → default
let dataDir = process.env.CLAUDE_MEM_DATA_DIR || join(homedir(), ".claude-mem");
if (!process.env.CLAUDE_MEM_DATA_DIR) {
const settingsPath = join(dataDir, "settings.json");
if (existsSync(settingsPath)) {
try {
const settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
if (settings.CLAUDE_MEM_DATA_DIR) dataDir = settings.CLAUDE_MEM_DATA_DIR;
} catch { /* use default */ }
}
}
const dbPath = join(dataDir, "claude-mem.db");
if (!existsSync(dbPath)) {
console.log(JSON.stringify({ observations: 0, prompts: 0, project: "" }));
console.log(JSON.stringify({ observations: 0, prompts: 0, project }));
process.exit(0);
}
const db = new Database(dbPath, { readonly: true });
const cwd = process.argv[2] || process.env.CLAUDE_CWD || process.cwd();
const project = basename(cwd);
const obs = db.query("SELECT COUNT(*) as c FROM observations WHERE project = ?").get(project);
// user_prompts links to projects through sdk_sessions.content_session_id
const prompts = db.query(
@@ -55,5 +57,5 @@ try {
console.log(JSON.stringify({ observations: obs.c, prompts: prompts.c, project }));
db.close();
} catch (e) {
console.log(JSON.stringify({ observations: 0, prompts: 0, error: e.message }));
console.log(JSON.stringify({ observations: 0, prompts: 0, project, error: e.message }));
}