Main entry point: - create-hooks.ts, create-tools.ts, create-managers.ts - plugin-interface.ts: plugin interface types - plugin/ directory: plugin lifecycle modules Config handler: - agent-config-handler.ts, command-config-handler.ts - tool-config-handler.ts, mcp-config-handler.ts - provider-config-handler.ts, category-config-resolver.ts - agent-priority-order.ts, prometheus-agent-config-builder.ts - plugin-components-loader.ts
66 lines
2.0 KiB
TypeScript
66 lines
2.0 KiB
TypeScript
import type { OhMyOpenCodeConfig } from "../../config"
|
|
import type { PluginContext } from "../types"
|
|
|
|
import {
|
|
createClaudeCodeHooksHook,
|
|
createKeywordDetectorHook,
|
|
createThinkingBlockValidatorHook,
|
|
} from "../../hooks"
|
|
import {
|
|
contextCollector,
|
|
createContextInjectorMessagesTransformHook,
|
|
} from "../../features/context-injector"
|
|
import { safeCreateHook } from "../../shared/safe-create-hook"
|
|
|
|
export type TransformHooks = {
|
|
claudeCodeHooks: ReturnType<typeof createClaudeCodeHooksHook>
|
|
keywordDetector: ReturnType<typeof createKeywordDetectorHook> | null
|
|
contextInjectorMessagesTransform: ReturnType<typeof createContextInjectorMessagesTransformHook>
|
|
thinkingBlockValidator: ReturnType<typeof createThinkingBlockValidatorHook> | null
|
|
}
|
|
|
|
export function createTransformHooks(args: {
|
|
ctx: PluginContext
|
|
pluginConfig: OhMyOpenCodeConfig
|
|
isHookEnabled: (hookName: string) => boolean
|
|
safeHookEnabled?: boolean
|
|
}): TransformHooks {
|
|
const { ctx, pluginConfig, isHookEnabled } = args
|
|
const safeHookEnabled = args.safeHookEnabled ?? true
|
|
|
|
const claudeCodeHooks = createClaudeCodeHooksHook(
|
|
ctx,
|
|
{
|
|
disabledHooks: (pluginConfig.claude_code?.hooks ?? true) ? undefined : true,
|
|
keywordDetectorDisabled: !isHookEnabled("keyword-detector"),
|
|
},
|
|
contextCollector,
|
|
)
|
|
|
|
const keywordDetector = isHookEnabled("keyword-detector")
|
|
? safeCreateHook(
|
|
"keyword-detector",
|
|
() => createKeywordDetectorHook(ctx, contextCollector),
|
|
{ enabled: safeHookEnabled },
|
|
)
|
|
: null
|
|
|
|
const contextInjectorMessagesTransform =
|
|
createContextInjectorMessagesTransformHook(contextCollector)
|
|
|
|
const thinkingBlockValidator = isHookEnabled("thinking-block-validator")
|
|
? safeCreateHook(
|
|
"thinking-block-validator",
|
|
() => createThinkingBlockValidatorHook(),
|
|
{ enabled: safeHookEnabled },
|
|
)
|
|
: null
|
|
|
|
return {
|
|
claudeCodeHooks,
|
|
keywordDetector,
|
|
contextInjectorMessagesTransform,
|
|
thinkingBlockValidator,
|
|
}
|
|
}
|