fix: integrate todo-codebase-compaction hook properly

- Import PreemptiveCompactionOptions type
- Export hook from hooks/index.ts
- Add todo-codebase-compaction to HookNameSchema
- Use todoCodebaseCompactionInjector when hook is enabled
This commit is contained in:
Oussama Douhou
2026-01-08 20:42:56 +01:00
parent 9bff359782
commit d5f75138dd
5 changed files with 9 additions and 3 deletions

View File

@@ -77,7 +77,8 @@
"edit-error-recovery",
"prometheus-md-only",
"start-work",
"sisyphus-orchestrator"
"sisyphus-orchestrator",
"todo-codebase-compaction"
]
}
},

View File

@@ -82,6 +82,7 @@ export const HookNameSchema = z.enum([
"prometheus-md-only",
"start-work",
"sisyphus-orchestrator",
"todo-codebase-compaction",
])
export const BuiltinCommandNameSchema = z.enum([

View File

@@ -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";

View File

@@ -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"

View File

@@ -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),
})