@mastra/core
Version:
70 lines • 2.9 kB
TypeScript
/**
* 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