import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraStreamPhase}from'../../../internal/stream-phase.js'; /** `true`-defaulting boolean attribute converter -- Lit's default presence-based `type: Boolean` * can never be set back to `false` from a plain-HTML attribute once a property's own default is * `true` (removing an attribute that was never present fires no `attributeChangedCallback`), so * `fromAttribute` checks the literal string instead. Mirrors ``'s own * `showCancel`/`showRetry` converter (`toAttribute` omits the attribute for `true` since nothing * in this component's stylesheet keys off `[controls]`'s presence). */ export interface BrowserPing{id:string;x:number;y:number;kind:'click'|'type'|'scroll'|'move';} /** Who currently holds input control of the browser session. */ export type BrowserFrameController='agent'|'user';export interface LyraBrowserFrameEventMap{'lr-take-over':CustomEvent<{controller:BrowserFrameController;}>;'lr-stop':CustomEvent;} /** * `` — presentational "agent computer" viewport: a screenshot/frame stream (or * slotted live media), read-only URL display, action-ping overlays, and take-over/stop affordances. * No automation transport, no input relay — take-over is an event; the host swaps in its own * interactive element. * * Public collection properties take bounded, clone-owned readonly snapshots. Create a new * collection and reassign it after changes; mutating the assigned array does not update the view. * * @customElement lr-browser-frame * @event lr-take-over - `detail: { controller }` — the *requested* controller. * @event lr-stop - Stop the agent's browser session. * @slot - Host-owned live element (e.g. `