import type { BrainState } from '../brain/brain.js'; import type { Provider } from '../errors.js'; import type { NormalizedMessage } from '../api/types.js'; export interface CommandContext { brain: { getState: () => BrainState; reset: () => void; }; model: string; setModel: (model: string) => void; /** Coste acumulado por modelo en la sesión actual. */ costByModel: () => Map; /** Historial completo de la sesión (para /export, /context). */ history: () => NormalizedMessage[]; /** System prompt construido para esta sesión (para /context). */ systemPrompt: () => string; /** Path del fichero de sesión persistido (para /export default). */ sessionId: () => string; /** Getter/setter de style — para `/style`. */ outputStyle?: () => string; setOutputStyle?: (s: 'default' | 'concise' | 'explanatory') => void; /** Estado de thinking collapse + toggle. */ thinkingCollapsed?: () => boolean; setThinkingCollapsed?: (v: boolean) => void; } export interface CommandResultLogin { output: string; exit?: boolean; action: 'login'; loginProvider: Provider; } export interface CommandResult { /** Texto a mostrar. Puede estar vacío si `action` lanza algo interactivo. */ output: string; exit?: boolean; /** Acción especial que el REPL debe gestionar (por ejemplo abrir el model picker). */ action?: 'pick-model' | 'login' | 'compact' | 'mcp' | 'resume' | 'review' | 'undo' | 'sessions' | 'paste' | 'fork' | 'repeat' | 'search' | 'template' | 'clean' | 'router' | 'committee' | 'snippet' | 'summary' | 'cancel' | 'library' | 'gh' | 'redact' | 'airplane' | 'sticky' | 'dispatch' | 'squad' | 'tasklist' | 'sidebar'; /** Provider sobre el que arrancar el OAuth flow (cuando action === 'login'). */ loginProvider?: Provider; /** Rango de git para `/review [rango]` (p.ej. `HEAD~3`). */ reviewRange?: string; /** Args crudos para `/sessions [list|prune N|retain N|off]`. */ sessionsArgs?: string; /** Prompt opcional que acompaña la imagen de `/paste [texto]`. */ pasteArgs?: string; /** Query para `/search`. */ searchQuery?: string; /** Args crudos para `/template`. */ templateArgs?: string; /** Arg de `/router on|off|show`. */ routerArg?: string; /** Prompt completo para `/committee`. */ committeePrompt?: string; /** Args crudos para `/snippet save|insert|list|delete`. */ snippetArgs?: string; /** Args crudos para `/library [name]`. */ libraryArgs?: string; /** Args crudos para `/gh pr NUMBER`. */ ghArgs?: string; /** Arg para `/redact on|off|status`. */ redactArg?: string; /** Arg para `/airplane on|off|status`. */ airplaneArg?: string; /** Arg para `/sticky list|clear|add PATH|remove PATH`. */ stickyArg?: string; /** Body entero de `/dispatch` (multi-línea). */ dispatchBody?: string; /** Args crudos de `/squad NAME [task...]` o `/squad list`. */ squadArgs?: string; /** Arg de `/tasklist [clean]`. */ tasklistArg?: string; } export declare function handleCommand(input: string, ctx: CommandContext): CommandResult | null; //# sourceMappingURL=commands.d.ts.map