import type { AnalysisError } from "../domain/analysisErrorBase.js"; import type { InspectWebPageInput, ListBrowserTargetsInput, } from "../domain/browserObservation.js"; import type { BrowserTargetList, WebPageInspection, } from "../domain/browserObservationSchemas.js"; import type { Result } from "../domain/result.js"; import type { AnalyzeWebBundleInput, WebBundleAnalysis, } from "../domain/webBundleAnalysis.js"; import type { ObserveWebSessionInput, WebObservationSession, } from "../domain/browserSession.js"; import type { DiscoverWebMcpToolsInput, WebMcpDiscovery, } from "../domain/webMcpDiscovery.js"; import type { BrowserCaptureComparison, BrowserCaptureComparisonInput, } from "../domain/browserCaptureComparison.js"; import type { CaptureWebScreenshotInput, CompareWebScreenshotsInput, WebScreenshot, WebScreenshotDiff, } from "../domain/webScreenshot.js"; import type { ProviderIdentity } from "./AnalysisProvider.js"; import type { ExecutionOptions } from "./AnalysisProvider.js"; /** Provider-neutral application boundary for passive browser observation. */ export interface BrowserObservationPort { identity(): ProviderIdentity; listTargets( input: ListBrowserTargetsInput, options?: ExecutionOptions, ): Promise>; inspectPage( input: InspectWebPageInput, options?: ExecutionOptions, ): Promise>; analyzeBundle( input: AnalyzeWebBundleInput, options?: ExecutionOptions, ): Promise>; observeSession( input: ObserveWebSessionInput, options?: ExecutionOptions, ): Promise>; discoverWebMcpTools( input: DiscoverWebMcpToolsInput, options?: ExecutionOptions, ): Promise>; compareCaptures( input: BrowserCaptureComparisonInput, ): Promise>; captureScreenshot( input: CaptureWebScreenshotInput, options?: ExecutionOptions, ): Promise>; compareScreenshots( input: CompareWebScreenshotsInput, ): Promise>; }