import type { ParsedCommandEnvelope } from "../../runtime/opencode/command-envelope"; import type { RuntimeEffect } from "../../runtime/opencode/effects"; import { type PolicyResult } from "../../domain/policy/policy-result"; import type { RuntimeChatMessageInput } from "./runtime-policy"; export interface ChatPolicyInput { directory: string; hooks: RuntimeChatMessageInput["hooks"]; parsedEnvelope: ParsedCommandEnvelope | null; promptText: string; sessionId: string; } export interface ChatPolicy { onChatMessage(input: ChatPolicyInput): PolicyResult | Promise>; } export declare function createCommandChatPolicy(): ChatPolicy; export declare function createAutoPauseChatPolicy(): ChatPolicy; export declare function createTodoFinalizationChatPolicy(todoContinuationEnforcer?: { clearFinalized: (sessionId: string) => void; } | null): ChatPolicy;