import * as readline from 'node:readline'; import type { HookRegistry } from '../../../agent/hooks.js'; import type { PreviewDiffRef } from '../../../agent/tools/hooks/edit-preview-hook.js'; import type { SessionRef } from '../../../agent/session-ref.js'; import type { MemoryStore } from '../../../agent/memory/index.js'; import type { StateStore } from '../../../agent/state/state-store.js'; import type { AgentModelInput } from '../../../agent/types.js'; import type { BackgroundAgentRegistry } from '../../../agent/background-registry.js'; import type { BackgroundSummarizer } from '../../../agent/background-summarizer.js'; import type { SubagentControl } from '../../../agent/tools/subagent-executor.js'; import type { SlashContext, SessionStats, ResumeSwapResult, ThinkingUiMode } from '../../slash/types.js'; import type { StoredSession } from '../../session-store.js'; import type { StatusLine } from '../../status-line.js'; import type { ReplRenderer } from './repl-renderer.js'; import type { ResolvedResumeTarget } from '../../resume-session.js'; import { ContextSampler } from '../../context-sampler.js'; import type { GitStatusSampler } from '../../git-status-sampler.js'; export type { ResumeSwapResult } from '../../slash/types.js'; export declare function reseedStatsFromStored(stats: SessionStats, stored: StoredSession, resumeId: string): void; export declare function resolveResumeCwd(extrasCwd: string | undefined, storedCwd: string | undefined): string | undefined; export declare function printResumeBanner(stats: SessionStats, writer: CompletionWriter): void; export type { ThinkingUiMode } from '../../slash/types.js'; export interface CliOptions { model: AgentModelInput; maxTurns: string; thinking?: string; thinkingUi?: ThinkingUiMode; theme?: 'dark' | 'light' | 'umber' | 'auto'; effort?: string; maxOutputTokens?: string; resume?: string; continue?: boolean; debug?: boolean; dangerouslySkipPermissions?: boolean; worktree?: string | true; worktreeAutoname?: boolean; worktreeBase?: string; worktreeOnExit?: 'ask' | 'keep' | 'remove'; shellPassthrough?: boolean; provider?: string; dumpPrompt?: string | boolean; mcpConfig?: string; plain?: boolean; } export interface InteractiveCtx { session: SessionRef; memoryStore: MemoryStore; stateStore?: StateStore; stats: SessionStats; statusLine: StatusLine; contextSampler: ContextSampler; gitStatusSampler: GitStatusSampler; completionWriter: CompletionWriter; replRenderer: ReplRenderer; slashCtx: SlashContext; rl: readline.Interface; options: CliOptions; resumeTarget?: ResolvedResumeTarget; teardownTrustedSkillEvents?: () => void; bootWarnings: string[]; bashTailSetter: { current: ((toolUseId: string, tail: string | undefined) => void) | undefined; }; mcpManager?: import('../../../agent/mcp/index.js').McpManager; backgroundRegistry: BackgroundAgentRegistry; subagentControl?: SubagentControl; bgSummarizer?: BackgroundSummarizer; firstTurnHook?: (firstMessage: string) => Promise; initialInput?: string; worktreeDisposition?: import('./worktree-disposition.js').WorktreeDisposition; resolveWorktreeDisposition?: (canPrompt: boolean) => Promise; getInFlight?: () => boolean; requestResume?: (target: ResolvedResumeTarget) => Promise; clearVerdictLedger?: () => void; clearBgResultBuffer?: () => void; clearPendingStopInjection?: () => void; preArmAnchorRow?: number; inputSurfaceRef?: { current: import('../../input/input-surface.js').InputSurface | null; }; suggestApiKey?: string; suggestBaseUrl?: string; suggestGhostConfig?: boolean; viewingTaskId?: string; hookRegistry?: HookRegistry; addPreviewDiffRef?: PreviewDiffRef; hasPendingUserMessage?: () => boolean; } export interface CompletionWriter { fn: (line: string) => void; idleFn: (line: string) => void; suppressSubagentCompletion?: boolean; } export interface TurnHandles { setInFlight(v: boolean): void; onUserMessage?(userInput: string): Promise | void; onQueuedUserMessage?(userInput: string): Promise | void; onTurnComplete?(userInput: string, assistantText: string): Promise; onAfterTurn?(): void | Promise; rearmStatus?(): void; onTerminalState?(state: import('./terminal-state.js').TerminalState, meta?: { doneHasCorroboratingEvidence?: boolean; doneEvidenceClassification?: 'no-code-changes' | 'verified' | 'unverified'; }): void; setActiveCompositor?(c: import('../../terminal-compositor.js').TerminalCompositor | null): void; setInterruptNotifier?(notifier: ((active: boolean) => void) | null): void; scrollRegion?: { withFullScrollRegion(fn: () => T): T; getExtraRows(): number; }; getCompositor?(): import('../../terminal-compositor.js').TerminalCompositor | null; setBackgroundHandler?(handler: (() => void) | null): void; subagentControl?: SubagentControl; setSoftStopHandler?(handler: (() => void) | null): void; setTaskViewHandler?(handler: (() => boolean) | null): void; setPausedState?(paused: boolean): void; setPauseInterruptHandler?(handler: (() => void) | null): void; onContextProgress?(): void | Promise; onStageChange?(stage: import('./loop-stage.js').LoopStage, signals?: import('./loop-stage.js').StageSignals): void; addPreviewDiffRef?: PreviewDiffRef; bashTailSetter?: { current: ((toolUseId: string, tail: string | undefined) => void) | undefined; }; onTextDelta?(charCount: number): void; } export declare const REPL_SPINNER_OPTIONS: { readonly stream: NodeJS.WriteStream & { fd: 1; }; readonly hideCursor: false; readonly discardStdin: false; }; export declare function contextRatio(stats: SessionStats, sampler?: ContextSampler): number; export declare function formatStatusFields(stats: SessionStats, sampler?: ContextSampler, gitSampler?: GitStatusSampler, maxTurns?: number, backgroundRegistry?: BackgroundAgentRegistry, maxBudgetUsd?: number): { activeAgentCount?: number | undefined; maxBudgetUsd?: number | undefined; budgetUsd?: number | undefined; maxTurns?: number | undefined; turnCount?: number | undefined; quotaWindows?: import("../../quota-indicator.js").QuotaWindows | undefined; pr?: number | undefined; branch?: string | undefined; cwd?: string | undefined; model: string; cost: number; tokens: number; contextPct: number; contextLimit: number; contextUsedTokens: number | undefined; contextSparkline: string | undefined; permissionMode: import("../../../agent/types.js").PermissionMode; };