import type { Message } from "@earendil-works/pi-ai"; import type { ContextEvent } from "@earendil-works/pi-coding-agent"; export type AgentMessage = ContextEvent["messages"][number]; export type HostKind = "omp" | "pi"; export type IdleMode = "backgroundAuto" | "beforeNextTurn"; export type PiThresholdType = "percentage" | "tokens"; export type NoticeLevel = "info" | "warning" | "error"; export type SettingsRecord = Record; export interface DynamicSettings { get(key: string): unknown; } export interface RelaceMessage { role: "user" | "assistant" | "developer" | "tool" | "system"; content: string | unknown[]; tool_call_id?: string; } export interface RelaceConfig { enabled: boolean; apiKey: string; endpoint: string; targetPercent: number; idleTimeoutSeconds: number; idleMode: IdleMode; idleModelOverrides: ReadonlyArray; piThresholdType: PiThresholdType; piThreshold: number; } export interface SessionState { replacement: Message[] | undefined; compactions: number; idleTimer: ReturnType | undefined; idleCompactDue: boolean; compactPending: boolean; } export interface CompactCallbacks { onComplete?: () => void; onError?: (error: Error) => void; }