diff --git a/assets/oh-my-opencode.schema.json b/assets/oh-my-opencode.schema.json index 6ae62f2..9b39d48 100644 --- a/assets/oh-my-opencode.schema.json +++ b/assets/oh-my-opencode.schema.json @@ -77,7 +77,8 @@ "edit-error-recovery", "prometheus-md-only", "start-work", - "sisyphus-orchestrator" + "sisyphus-orchestrator", + "todo-codebase-compaction" ] } }, diff --git a/src/config/schema.ts b/src/config/schema.ts index 5a3aec5..4b707d7 100644 --- a/src/config/schema.ts +++ b/src/config/schema.ts @@ -82,6 +82,7 @@ export const HookNameSchema = z.enum([ "prometheus-md-only", "start-work", "sisyphus-orchestrator", + "todo-codebase-compaction", ]) export const BuiltinCommandNameSchema = z.enum([ diff --git a/src/hooks/index.ts b/src/hooks/index.ts index 821c190..617670c 100644 --- a/src/hooks/index.ts +++ b/src/hooks/index.ts @@ -29,3 +29,4 @@ export { createPrometheusMdOnlyHook } from "./prometheus-md-only"; export { createTaskResumeInfoHook } from "./task-resume-info"; export { createStartWorkHook } from "./start-work"; export { createSisyphusOrchestratorHook } from "./sisyphus-orchestrator"; +export { createTodoCodebaseCompactionInjector, createCustomCompactionHook } from "./todo-codebase-compaction"; diff --git a/src/hooks/todo-codebase-compaction/index.ts b/src/hooks/todo-codebase-compaction/index.ts index b4cc509..666b52f 100644 --- a/src/hooks/todo-codebase-compaction/index.ts +++ b/src/hooks/todo-codebase-compaction/index.ts @@ -1,4 +1,4 @@ -import type { SummarizeContext } from "../preemptive-compaction" +import type { SummarizeContext, PreemptiveCompactionOptions } from "../preemptive-compaction" import { injectHookMessage } from "../../features/hook-message-injector" import { log } from "../../shared/logger" import { createPreemptiveCompactionHook } from "../preemptive-compaction" diff --git a/src/index.ts b/src/index.ts index 047a946..e908bfd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -146,10 +146,13 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => { const compactionContextInjector = isHookEnabled("compaction-context-injector") ? createCompactionContextInjector() : undefined; + const todoCodebaseCompactionInjector = isHookEnabled("todo-codebase-compaction") + ? createTodoCodebaseCompactionInjector() + : undefined; const preemptiveCompaction = isHookEnabled("preemptive-compaction") ? createPreemptiveCompactionHook(ctx, { experimental: pluginConfig.experimental, - onBeforeSummarize: compactionContextInjector, + onBeforeSummarize: todoCodebaseCompactionInjector ?? compactionContextInjector, getModelLimit: (providerID, modelID) => getModelLimit(modelCacheState, providerID, modelID), })