Files
oh-my-opencode/src/hooks/claude-code-hooks/handlers/pre-compact-handler.ts
T
YeonGyu-Kim cac64c83a7 refactor(claude-code-hooks): extract handlers and session state
Split hook into per-concern modules:
- handlers/ directory for individual hook handlers
- session-hook-state.ts: session-level hook state management
2026-02-08 16:22:17 +09:00

42 lines
1.2 KiB
TypeScript

import type { PluginInput } from "@opencode-ai/plugin"
import { loadClaudeHooksConfig } from "../config"
import { loadPluginExtendedConfig } from "../config-loader"
import { executePreCompactHooks, type PreCompactContext } from "../pre-compact"
import type { PluginConfig } from "../types"
import { isHookDisabled, log } from "../../../shared"
export function createPreCompactHandler(ctx: PluginInput, config: PluginConfig) {
return async (
input: { sessionID: string },
output: { context: string[] },
): Promise<void> => {
if (isHookDisabled(config, "PreCompact")) {
return
}
const claudeConfig = await loadClaudeHooksConfig()
const extendedConfig = await loadPluginExtendedConfig()
const preCompactCtx: PreCompactContext = {
sessionId: input.sessionID,
cwd: ctx.directory,
}
const result = await executePreCompactHooks(
preCompactCtx,
claudeConfig,
extendedConfig,
)
if (result.context.length > 0) {
log("PreCompact hooks injecting context", {
sessionID: input.sessionID,
contextCount: result.context.length,
hookName: result.hookName,
elapsedMs: result.elapsedMs,
})
output.context.push(...result.context)
}
}
}