@mastra/core
Version:
Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack.
75 lines • 2.46 kB
TypeScript
/**
* CDP-based ScreencastStream implementation.
*
* This provides a unified screencast implementation that works with any
* CDP session provider (Playwright, Puppeteer, direct CDP, etc.).
*/
import { EventEmitter } from 'node:events';
import type { CdpSessionProvider, ScreencastOptions } from './types.js';
/**
* ScreencastStream wraps CDP screencast with an event emitter interface.
*
* Works with any CDP session provider (Playwright, Puppeteer, direct CDP).
*
* @example
* ```typescript
* const stream = new ScreencastStream(cdpProvider, { quality: 80 });
* stream.on('frame', (frame) => {
* console.log(`Frame: ${frame.viewport.width}x${frame.viewport.height}`);
* });
* await stream.start();
* // Later...
* await stream.stop();
* ```
*/
export declare class ScreencastStream extends EventEmitter {
/** Whether screencast is currently active */
private active;
/** Resolved options with defaults applied (excludes threadId which is only used for page selection) */
private options;
/** CDP session provider */
private provider;
/** Current CDP session */
private cdpSession;
/** Frame handler reference (for cleanup) */
private frameHandler;
/**
* Creates a new ScreencastStream.
*
* @param provider - CDP session provider (browser instance)
* @param options - Screencast configuration options
*/
constructor(provider: CdpSessionProvider, options?: ScreencastOptions);
/**
* Start the screencast.
* If already active, returns immediately.
*/
start(): Promise<void>;
/**
* Acknowledge a frame to CDP (required to continue receiving frames).
*/
private acknowledgeFrame;
/**
* Stop the screencast and release resources.
* Safe to call even if browser/CDP session is already closed.
*/
stop(): Promise<void>;
/**
* Check if screencast is currently active.
*/
isActive(): boolean;
/**
* Emit a URL update event.
* Browser providers call this when navigation is detected.
*/
emitUrl(url: string): void;
/**
* Reconnect the screencast by stopping and restarting.
* Use this when the active page/tab changes.
*
* @returns Promise that resolves when reconnection is complete
* @throws Error if reconnection fails (also emits 'error' event)
*/
reconnect(): Promise<void>;
}
//# sourceMappingURL=screencast-stream.d.ts.map