/** * todo-continuation-enforcer hook * * Ensures in_progress todos are finalized when a session goes idle. * Extracted from the inline finalization logic in plugin-interface.ts. * * Primary path (zero-cost): If opencode/session/todo is available, directly * mutates the todo list to mark in_progress items as completed. * * Fallback path (1 LLM turn): If unavailable, injects a prompt asking the LLM * to finalize the todos. */ import type { PluginContext } from "../plugin/types"; import { type TodoWriter } from "./todo-writer"; export declare function createTodoContinuationEnforcer(client: PluginContext["client"], options?: { /** Inject a mock todo writer for testing (bypasses dynamic import) */ todoWriterOverride?: TodoWriter | null; /** Whether fallback prompt injection is allowed when direct write is unavailable. */ allowPromptFallback?: boolean; }): { checkAndFinalize: (sessionID: string) => Promise; markFinalized: (sessionID: string) => void; isFinalized: (sessionID: string) => boolean; clearFinalized: (sessionID: string) => void; clearSession: (sessionID: string) => void; };