From c0e0dc1f95ded107770c5a2d3c31b9c3bee382fc Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Tue, 9 Dec 2025 15:49:13 +0900 Subject: [PATCH] feat: integrate command/skill loaders and think-mode hook in main entry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add loadCommands() and loadSkills() to config - Register think-mode hook for UserPromptSubmit event 🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) --- src/index.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/index.ts b/src/index.ts index b654e78..49ab4e1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,7 +8,18 @@ import { createGrepOutputTruncatorHook, createDirectoryAgentsInjectorHook, createEmptyTaskResponseDetectorHook, + createThinkModeHook, } from "./hooks"; +import { + loadUserCommands, + loadProjectCommands, + loadOpencodeGlobalCommands, + loadOpencodeProjectCommands, +} from "./features/command-loader"; +import { + loadUserSkillsAsCommands, + loadProjectSkillsAsCommands, +} from "./features/skill-loader"; import { updateTerminalTitle } from "./features/terminal"; import { builtinTools } from "./tools"; import { createBuiltinMcps } from "./mcp"; @@ -57,6 +68,7 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => { const grepOutputTruncator = createGrepOutputTruncatorHook(ctx); const directoryAgentsInjector = createDirectoryAgentsInjectorHook(ctx); const emptyTaskResponseDetector = createEmptyTaskResponseDetectorHook(ctx); + const thinkMode = createThinkModeHook(); updateTerminalTitle({ sessionId: "main" }); @@ -86,12 +98,31 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => { ...config.mcp, ...createBuiltinMcps(pluginConfig.disabled_mcps), }; + + const userCommands = loadUserCommands(); + const opencodeGlobalCommands = loadOpencodeGlobalCommands(); + const systemCommands = config.command ?? {}; + const projectCommands = loadProjectCommands(); + const opencodeProjectCommands = loadOpencodeProjectCommands(); + const userSkills = loadUserSkillsAsCommands(); + const projectSkills = loadProjectSkillsAsCommands(); + + config.command = { + ...userCommands, + ...userSkills, + ...opencodeGlobalCommands, + ...systemCommands, + ...projectCommands, + ...projectSkills, + ...opencodeProjectCommands, + }; }, event: async (input) => { await todoContinuationEnforcer(input); await contextWindowMonitor.event(input); await directoryAgentsInjector.event(input); + await thinkMode.event(input); const { event } = input; const props = event.properties as Record | undefined;