2026-02-08 16:25:25 +09:00
|
|
|
import type { HookName, OhMyOpenCodeConfig } from "../../config"
|
|
|
|
|
import type { PluginContext } from "../types"
|
2026-02-17 10:33:17 +09:00
|
|
|
import type { ModelCacheState } from "../../plugin-state"
|
2026-02-08 16:25:25 +09:00
|
|
|
|
|
|
|
|
import { createSessionHooks } from "./create-session-hooks"
|
|
|
|
|
import { createToolGuardHooks } from "./create-tool-guard-hooks"
|
|
|
|
|
import { createTransformHooks } from "./create-transform-hooks"
|
|
|
|
|
|
|
|
|
|
export function createCoreHooks(args: {
|
|
|
|
|
ctx: PluginContext
|
|
|
|
|
pluginConfig: OhMyOpenCodeConfig
|
2026-02-17 10:33:17 +09:00
|
|
|
modelCacheState: ModelCacheState
|
2026-02-08 16:25:25 +09:00
|
|
|
isHookEnabled: (hookName: HookName) => boolean
|
|
|
|
|
safeHookEnabled: boolean
|
|
|
|
|
}) {
|
2026-02-17 10:33:17 +09:00
|
|
|
const { ctx, pluginConfig, modelCacheState, isHookEnabled, safeHookEnabled } = args
|
2026-02-08 16:25:25 +09:00
|
|
|
|
|
|
|
|
const session = createSessionHooks({
|
|
|
|
|
ctx,
|
|
|
|
|
pluginConfig,
|
2026-02-17 10:33:17 +09:00
|
|
|
modelCacheState,
|
2026-02-08 16:25:25 +09:00
|
|
|
isHookEnabled,
|
|
|
|
|
safeHookEnabled,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const tool = createToolGuardHooks({
|
|
|
|
|
ctx,
|
|
|
|
|
pluginConfig,
|
2026-02-17 10:33:17 +09:00
|
|
|
modelCacheState,
|
2026-02-08 16:25:25 +09:00
|
|
|
isHookEnabled,
|
|
|
|
|
safeHookEnabled,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const transform = createTransformHooks({
|
|
|
|
|
ctx,
|
|
|
|
|
pluginConfig,
|
|
|
|
|
isHookEnabled: (name) => isHookEnabled(name as HookName),
|
|
|
|
|
safeHookEnabled,
|
2026-04-07 15:10:43 +09:00
|
|
|
ralphLoop: session.ralphLoop,
|
2026-02-08 16:25:25 +09:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
...session,
|
|
|
|
|
...tool,
|
|
|
|
|
...transform,
|
|
|
|
|
}
|
|
|
|
|
}
|