diff --git a/src/converters/claude-to-opencode.ts b/src/converters/claude-to-opencode.ts index ad8cc00..5e3cf71 100644 --- a/src/converters/claude-to-opencode.ts +++ b/src/converters/claude-to-opencode.ts @@ -209,9 +209,11 @@ function renderHookStatements( ): string[] { if (!matcher.hooks || matcher.hooks.length === 0) return [] const tools = matcher.matcher - .split("|") - .map((tool) => tool.trim().toLowerCase()) - .filter(Boolean) + ? matcher.matcher + .split("|") + .map((tool) => tool.trim().toLowerCase()) + .filter(Boolean) + : [] const useMatcher = useToolMatcher && tools.length > 0 && !tools.includes("*") const condition = useMatcher @@ -232,10 +234,10 @@ function renderHookStatements( continue } if (hook.type === "prompt") { - statements.push(`// Prompt hook for ${matcher.matcher}: ${hook.prompt.replace(/\n/g, " ")}`) + statements.push(`// Prompt hook for ${matcher.matcher ?? "*"}: ${hook.prompt.replace(/\n/g, " ")}`) continue } - statements.push(`// Agent hook for ${matcher.matcher}: ${hook.agent}`) + statements.push(`// Agent hook for ${matcher.matcher ?? "*"}: ${hook.agent}`) } return statements diff --git a/src/types/claude.ts b/src/types/claude.ts index 4b1c050..a878274 100644 --- a/src/types/claude.ts +++ b/src/types/claude.ts @@ -79,7 +79,7 @@ export type ClaudeHookAgent = { export type ClaudeHookEntry = ClaudeHookCommand | ClaudeHookPrompt | ClaudeHookAgent export type ClaudeHookMatcher = { - matcher: string + matcher?: string hooks: ClaudeHookEntry[] }