diff --git a/src/config/schema.ts b/src/config/schema.ts index 936c96a8..3b70a31f 100644 --- a/src/config/schema.ts +++ b/src/config/schema.ts @@ -101,6 +101,7 @@ export const HookNameSchema = z.enum([ "stop-continuation-guard", "tasks-todowrite-disabler", "write-existing-file-guard", + "anthropic-effort", ]) export const BuiltinCommandNameSchema = z.enum([ diff --git a/src/index.ts b/src/index.ts index f1750aee..ee210e66 100644 --- a/src/index.ts +++ b/src/index.ts @@ -40,6 +40,7 @@ import { createTasksTodowriteDisablerHook, createWriteExistingFileGuardHook, } from "./hooks"; +import { createAnthropicEffortHook } from "./hooks/anthropic-effort"; import { contextCollector, createContextInjectorMessagesTransformHook, @@ -294,6 +295,10 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => { const taskResumeInfo = createTaskResumeInfoHook(); + const anthropicEffort = isHookEnabled("anthropic-effort") + ? createAnthropicEffortHook() + : null; + const tmuxSessionManager = new TmuxSessionManager(ctx, tmuxConfig); const backgroundManager = new BackgroundManager( @@ -550,6 +555,29 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => { return { tool: filteredTools, + "chat.params": async ( + input: { + sessionID: string + agent: string + model: Record + provider: Record + message: Record + }, + output: { + temperature: number + topP: number + topK: number + options: Record + }, + ) => { + const model = input.model as { providerID: string; modelID: string } + const message = input.message as { variant?: string } + await anthropicEffort?.["chat.params"]?.( + { ...input, agent: { name: input.agent }, model, provider: input.provider as { id: string }, message }, + output, + ); + }, + "chat.message": async (input, output) => { if (input.agent) { setSessionAgent(input.sessionID, input.agent);