import { type PolicyResult } from "../../domain/policy/policy-result"; import type { ReviewerPlan } from "../../agents/review-resolver"; import type { RuntimeEffect } from "../../runtime/opencode/effects"; import type { RuntimeAssistantMessageInput, RuntimeBeforeCompactionInput, RuntimeCompactionInput, RuntimeSessionDeletedInput, RuntimeSessionIdleInput } from "./runtime-policy"; export interface SessionPolicy { onAssistantMessage(input: RuntimeAssistantMessageInput): PolicyResult | Promise>; onSessionIdle(input: RuntimeSessionIdleInput): PolicyResult | Promise>; onSessionDeleted(input: RuntimeSessionDeletedInput): PolicyResult | Promise>; beforeCompaction?(input: RuntimeBeforeCompactionInput): void | Promise; onCompaction(input: RuntimeCompactionInput): PolicyResult | Promise>; } export declare function createHookBackedSessionPolicy(args?: { reviewerResolver?: { forBaseAgent(baseAgent: "weft" | "warp", scope: "direct" | "post-execution"): ReviewerPlan; }; todoContinuationEnforcer?: { checkAndFinalize: (sessionId: string) => Promise; clearSession: (sessionId: string) => void; } | null; compactionPreserver?: { capture: (sessionId: string) => Promise; restore: (sessionId: string) => Promise; clearSession: (sessionId: string) => void; } | null; }): SessionPolicy;