diff --git a/.claude/hooks/src/daemon-client.ts b/.claude/hooks/src/daemon-client.ts index 479b997a..60ffbf30 100644 --- a/.claude/hooks/src/daemon-client.ts +++ b/.claude/hooks/src/daemon-client.ts @@ -189,6 +189,9 @@ export interface DaemonResponse { // Track response fields hook?: string; total_invocations?: number; + // Imports/importers response fields + imports?: any[]; + importers?: any[]; } /** diff --git a/.claude/hooks/src/tldr-read-enforcer.ts b/.claude/hooks/src/tldr-read-enforcer.ts index 3090da00..f9138c6f 100644 --- a/.claude/hooks/src/tldr-read-enforcer.ts +++ b/.claude/hooks/src/tldr-read-enforcer.ts @@ -10,8 +10,8 @@ */ import { readFileSync, existsSync, statSync } from 'fs'; -import { basename, extname } from 'path'; -import { queryDaemonSync, DaemonResponse, trackHookActivitySync } from './daemon-client'; +import { basename, extname, resolve } from 'path'; +import { queryDaemonSync, DaemonResponse, trackHookActivitySync } from './daemon-client.js'; // Search context from smart-search-router interface SearchContext { @@ -371,7 +371,12 @@ async function main() { return; } - const filePath = input.tool_input.file_path || ''; + const rawFilePath = input.tool_input.file_path || ''; + // resolve() guarantees an absolute path: if rawFilePath is already absolute it returns + // it as-is; if relative, it resolves against projectCwd. Falls back to process.cwd() + // if input.cwd is absent (hook spec guarantees it, but be defensive). + const projectCwd = input.cwd || process.cwd(); + const filePath = resolve(projectCwd, rawFilePath); // Allow non-code files if (!isCodeFile(filePath)) { diff --git a/.claude/hooks/tsconfig.json b/.claude/hooks/tsconfig.json index 713fbd2a..8d3404ec 100644 --- a/.claude/hooks/tsconfig.json +++ b/.claude/hooks/tsconfig.json @@ -15,5 +15,5 @@ "types": ["node"] }, "include": ["src/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist", "src/__tests__"] }