/**
 * BrowserContextProcessor
 *
 * Input processor that injects browser context into agent prompts.
 * Similar to ChatChannelProcessor for channels.
 *
 * - `processInput`: Adds a system message with stable context (provider, sessionId, headless mode).
 * - `processInputStep`: At step 0, adds a new user message with browser context as a `<system-reminder>`.
 *   This preserves prompt cache by not modifying existing messages in history.
 *
 * Reads from `requestContext.get('browser')`.
 *
 * @example
 * ```ts
 * const agent = new Agent({
 *   browser: new AgentBrowser({ ... }),
 *   inputProcessors: [new BrowserContextProcessor()],
 * });
 * ```
 */
import type { ComputeStateSignalArgs, ComputeStateSignalResult, ProcessInputArgs, ProcessInputResult } from '../processors/index.js';
/**
 * Browser context stored in RequestContext.
 * Set by the browser implementation or deployer.
 */
export interface BrowserContext {
    /** Browser provider name (e.g., "agent-browser", "stagehand") */
    provider: string;
    /** Provider type: 'sdk' for direct API, 'cli' for command-line tools */
    providerType?: 'sdk' | 'cli';
    /** Session ID for tracking */
    sessionId?: string;
    /** Whether browser is running in headless mode */
    headless?: boolean;
    /** Current page URL (updated per-request) */
    currentUrl?: string;
    /** Current page title (updated per-request) */
    pageTitle?: string;
    /** Whether the browser is currently open/connected. Defaults to true when browser context is present. */
    isOpen?: boolean;
    /**
     * Reason the browser was closed, when isOpen is false.
     * Helps differentiate between agent-initiated close, user action, process restart, or error.
     */
    closeReason?: 'agent' | 'user' | 'process_restart' | 'error';
    /** Number of currently open tabs, when available. */
    tabCount?: number;
    /** Who initiated the most recent active URL change, when known. */
    activeUrlChangeSource?: 'agent' | 'user';
    /** Additional active page metadata exposed by the browser provider. */
    pageMetadata?: Record<string, string | number | boolean | null | undefined>;
    /**
     * CDP WebSocket URL for CLI providers.
     * When present, the agent should pass this URL to CLI commands
     * to connect them to the browser managed by Mastra.
     */
    cdpUrl?: string;
    /** Internal provider hook used to refresh browser state between agentic loop steps. */
    getState?: () => Promise<Partial<BrowserContext> | undefined>;
}
/**
 * Input processor that injects browser context into agent prompts.
 */
export declare class BrowserContextProcessor {
    readonly id = "browser-context";
    readonly stateId = "browser";
    processInput(args: ProcessInputArgs): ProcessInputResult;
    computeStateSignal(args: ComputeStateSignalArgs): Promise<ComputeStateSignalResult>;
}
//# sourceMappingURL=processor.d.ts.map