@rtrvr-ai/rover 2.0.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +118 -15
- package/dist/embed.js +202 -60
- package/dist/index.d.ts +12 -2
- package/dist/rover.js +202 -60
- package/package.json +33 -1
package/dist/rover.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
var U;(function(e){e.click_element="click_element",e.type_into_element="type_into_element",e.type_and_enter="type_and_enter",e.select_dropdown_value="select_dropdown_value",e.clear_element="clear_element",e.focus_element="focus_element",e.check_field_validity="check_field_validity",e.select_text="select_text",e.hover_element="hover_element",e.right_click_element="right_click_element",e.double_click_element="double_click_element",e.press_key="press_key",e.mouse_wheel="mouse_wheel",e.dispatch_pointer_path="dispatch_pointer_path",e.drag_element="drag_element",e.drag_and_drop="drag_and_drop",e.adjust_slider="adjust_slider",e.scroll_page="scroll_page",e.scroll_to_element="scroll_to_element",e.swipe_element="swipe_element",e.long_press_element="long_press_element",e.pinch_zoom="pinch_zoom",e.go_back="go_back",e.go_forward="go_forward",e.goto_url="goto_url",e.refresh_page="refresh_page",e.open_new_tab="open_new_tab",e.switch_tab="switch_tab",e.close_tab="close_tab",e.describe_images="describe_images",e.google_search="google_search",e.network_run_recipe="network_run_recipe",e.rover_external_read_context="rover_external_read_context",e.rover_external_act_context="rover_external_act_context",e.copy_text="copy_text",e.paste_text="paste_text",e.wait_action="wait_action",e.wait_for_element="wait_for_element",e.answer_task="answer_task",e.upload_file="upload_file",e.solve_captcha="solve_captcha"})(U||(U={}));var Wk=new Set(Object.values(U)),$i=["element_id","source_element_id","target_element_id","center_element_id","element_ids"],Th=40;function Gu(e){let t=Array.isArray(e?.element_ids)?e.element_ids:e?.element_id!=null?[e.element_id]:[];return Array.from(new Set(t.map(r=>Math.trunc(Number(r))))).filter(r=>Number.isFinite(r)&&r>0).slice(0,Th)}var wn;(function(e){e[e.Unknown=0]="Unknown",e[e.React=1]="React",e[e.Vue=2]="Vue",e[e.Angular=3]="Angular",e[e.Svelte=4]="Svelte",e[e.JQuery=5]="JQuery"})(wn||(wn={}));var Xu={[wn.Unknown]:"unknown",[wn.React]:"react",[wn.Vue]:"vue",[wn.Angular]:"angular",[wn.Svelte]:"svelte",[wn.JQuery]:"jquery"},Bc={react:wn.React,vue:wn.Vue,angular:wn.Angular,svelte:wn.Svelte,jquery:wn.JQuery},_t;(function(e){e[e.Other=0]="Other",e[e.Inline=1]="Inline",e[e.Delegated=2]="Delegated",e[e.React=3]="React",e[e.Vue=4]="Vue",e[e.Angular=5]="Angular",e[e.Svelte=6]="Svelte",e[e.JQuery=7]="JQuery",e[e.Native=8]="Native"})(_t||(_t={}));var zk={[_t.Other]:"other",[_t.Inline]:"inline",[_t.Delegated]:"delegated",[_t.React]:"react",[_t.Vue]:"vue",[_t.Angular]:"angular",[_t.Svelte]:"svelte",[_t.JQuery]:"jquery",[_t.Native]:"native"},jk={inline:_t.Inline,delegated:_t.Delegated,react:_t.React,vue:_t.Vue,angular:_t.Angular,svelte:_t.Svelte,jquery:_t.JQuery,other:_t.Other,native:_t.Native},Te;(function(e){e[e.click_element=1]="click_element",e[e.type_into_element=2]="type_into_element",e[e.type_and_enter=3]="type_and_enter",e[e.select_dropdown_value=4]="select_dropdown_value",e[e.clear_element=5]="clear_element",e[e.focus_element=6]="focus_element",e[e.hover_element=7]="hover_element",e[e.right_click_element=8]="right_click_element",e[e.double_click_element=9]="double_click_element",e[e.long_press_element=10]="long_press_element",e[e.drag_element=11]="drag_element",e[e.drag_and_drop=12]="drag_and_drop",e[e.swipe_element=13]="swipe_element",e[e.adjust_slider=14]="adjust_slider",e[e.describe_images=15]="describe_images",e[e.scroll_to_element=16]="scroll_to_element",e[e.paste_text=17]="paste_text",e[e.check_field_validity=18]="check_field_validity",e[e.select_text=19]="select_text",e[e.mouse_wheel=20]="mouse_wheel",e[e.copy_text=21]="copy_text",e[e.upload_file=22]="upload_file",e[e.go_back=23]="go_back",e[e.go_forward=24]="go_forward",e[e.refresh_page=25]="refresh_page",e[e.press_key=26]="press_key",e[e.scroll_page=27]="scroll_page",e[e.wait_action=28]="wait_action",e[e.wait_for_element=29]="wait_for_element",e[e.pinch_zoom=30]="pinch_zoom",e[e.goto_url=31]="goto_url",e[e.google_search=32]="google_search",e[e.open_new_tab=33]="open_new_tab",e[e.switch_tab=34]="switch_tab",e[e.close_tab=35]="close_tab",e[e.solve_captcha=36]="solve_captcha",e[e.answer_task=37]="answer_task",e[e.dispatch_pointer_path=38]="dispatch_pointer_path",e[e.network_run_recipe=40]="network_run_recipe",e[e.rover_external_read_context=41]="rover_external_read_context",e[e.rover_external_act_context=42]="rover_external_act_context"})(Te||(Te={}));var Vi={[U.click_element]:Te.click_element,[U.type_into_element]:Te.type_into_element,[U.type_and_enter]:Te.type_and_enter,[U.select_dropdown_value]:Te.select_dropdown_value,[U.clear_element]:Te.clear_element,[U.focus_element]:Te.focus_element,[U.hover_element]:Te.hover_element,[U.right_click_element]:Te.right_click_element,[U.double_click_element]:Te.double_click_element,[U.long_press_element]:Te.long_press_element,[U.drag_element]:Te.drag_element,[U.drag_and_drop]:Te.drag_and_drop,[U.swipe_element]:Te.swipe_element,[U.adjust_slider]:Te.adjust_slider,[U.describe_images]:Te.describe_images,[U.scroll_to_element]:Te.scroll_to_element,[U.paste_text]:Te.paste_text,[U.check_field_validity]:Te.check_field_validity,[U.select_text]:Te.select_text,[U.mouse_wheel]:Te.mouse_wheel,[U.copy_text]:Te.copy_text,[U.upload_file]:Te.upload_file,[U.go_back]:Te.go_back,[U.go_forward]:Te.go_forward,[U.refresh_page]:Te.refresh_page,[U.press_key]:Te.press_key,[U.scroll_page]:Te.scroll_page,[U.wait_action]:Te.wait_action,[U.wait_for_element]:Te.wait_for_element,[U.pinch_zoom]:Te.pinch_zoom,[U.goto_url]:Te.goto_url,[U.google_search]:Te.google_search,[U.open_new_tab]:Te.open_new_tab,[U.switch_tab]:Te.switch_tab,[U.close_tab]:Te.close_tab,[U.solve_captcha]:Te.solve_captcha,[U.answer_task]:Te.answer_task,[U.dispatch_pointer_path]:Te.dispatch_pointer_path,[U.network_run_recipe]:Te.network_run_recipe,[U.rover_external_read_context]:Te.rover_external_read_context,[U.rover_external_act_context]:Te.rover_external_act_context},Ku=Object.fromEntries(Object.entries(Vi).map(([e,t])=>[t,e]));function zi(e){let t=[];return e&&(e&1&&t.push("native"),e&2&&t.push("inline"),e&4&&t.push("react"),e&8&&t.push("vue"),e&16&&t.push("angular"),e&32&&t.push("svelte"),e&64&&t.push("jquery"),e&128&&t.push("delegated"),e&256&&t.push("other")),t}var Qu={semanticIdStart:1,interactiveIdStart:1,includeFrameContents:!0,clearIframes:!0,frameContextLabel:null,signalProvider:null,disableDomAnnotations:!1},rn={...Qu},Gi=globalThis;function Ju(e){rn={...Qu,...e||{}}}function yo(){return rn.signalProvider??null}function dt(){try{return typeof Gi.document<"u"?Gi.document:null}catch{return null}}function pr(){try{return typeof Gi.window<"u"?Gi.window:null}catch{return null}}function Y(e,t){if(e&&typeof e=="object"){let n=e.ownerDocument;if(n)return n;if(e.nodeType===9)return e}return t??dt()??{}}function be(e,t){return Y(e,t?t.document:null)?.defaultView??t??pr()??{}}function ne(e,t){return e?.defaultView??t??pr()??{}}function Xi(e,t){try{return e?.getElementById?.(t)??null}catch{return null}}function Ki(e,t){try{return e?.querySelector?.(t)??null}catch{return null}}function Uc(e,t){try{return Array.from(e?.querySelectorAll?.(t)??[])}catch{return[]}}function Fs(e){try{return e.contentDocument||(e.contentWindow?.document??null)}catch{return null}}function Yi(e,t){let n=e.CSS?.escape;return typeof n=="function"?n(t):t.replace(/([^\w-])/g,"\\$1")}function In(e,t){try{return e[t]}catch{return}}function mr(e,t){return!!e&&String(e.tagName||"").toUpperCase()===t.toUpperCase()}function Zu(e,t){let n=In(t,"HTMLAnchorElement");return n?e instanceof n:mr(e,"A")}function Bn(e,t){let n=In(t,"HTMLInputElement");return n?e instanceof n:mr(e,"INPUT")}function Kn(e,t){let n=In(t,"HTMLTextAreaElement");return n?e instanceof n:mr(e,"TEXTAREA")}function ed(e,t){let n=In(t,"HTMLLabelElement");return n?e instanceof n:mr(e,"LABEL")}function td(e,t){let n=In(t,"HTMLSelectElement");return n?e instanceof n:mr(e,"SELECT")}function nd(e,t){let n=In(t,"HTMLSlotElement");return n?e instanceof n:mr(e,"SLOT")}function rd(e,t){let n=In(t,"HTMLButtonElement");return n?e instanceof n:mr(e,"BUTTON")}function od(e,t){let n=In(t,"HTMLImageElement");return n?e instanceof n:mr(e,"IMG")}function sd(e,t){let n=In(t,"HTMLVideoElement");return n?e instanceof n:mr(e,"VIDEO")}function id(e,t){let n=In(t,"HTMLCanvasElement");return n?e instanceof n:mr(e,"CANVAS")}function Et(e,t){if(!e||e.nodeType!==1)return!1;let n=In(t,"HTMLElement");return n?e instanceof n:typeof e.tagName=="string"}function xn(e){return!!e&&e.nodeType===11&&typeof e.host=="object"&&typeof e.mode=="string"}function vo(e){if(!e||e.nodeType!==1)return!1;let t=Y(e),r=ne(t).Element;return r?e instanceof r:typeof e.tagName=="string"}function Hs(e){if(!e||e.nodeType!==1)return!1;let t=Y(e),r=ne(t).HTMLIFrameElement;return r&&e instanceof r?!0:String(e.tagName||"").toUpperCase()==="IFRAME"}function kh(e,t){if(!e)return!1;if(e.nodeType===9)return!0;let n=In(t,"Document");return n?e instanceof n:!1}function _h(e,t){if(!e)return!1;let n=In(t,"Window");if(n)return e instanceof n;try{return e.window===e}catch{return!1}}function Qi(e){try{return e.document}catch{return null}}function Ji(e,t){if(kh(e,t))try{return e.documentElement}catch{return null}if(_h(e,t)){let n=Qi(e);if(!n)return null;try{return n.documentElement}catch{return null}}return null}function ji(e){if(!e)return null;if(typeof e=="string")return e;if(typeof e=="object"&&typeof e.baseVal=="string")return e.baseVal;try{return String(e)}catch{return null}}function Yu(e,t,n){try{let r=Y(t,n);return new URL(e,r.baseURI).href}catch{return e}}function Zi(e,t){let n=e.tagName.includes("-"),r=e.getAttribute("href")||e.getAttribute("src")||e.getAttribute("data")||e.getAttribute("action");if(r){let o=Yu(r,e,t);return o.trim().toLowerCase().startsWith("javascript:")?null:o}if(n)return null;try{let o=e,s=ji(o.href)||ji(o.src)||ji(o.data)||ji(o.action);return s?Yu(s,e,t):null}catch{return null}}var ad=["click","dblclick","doubleclick","mousedown","mouseup","mouseenter","mouseleave","mousemove","mouseover","mouseout","contextmenu","auxclick","keydown","keyup","keypress","input","change","submit","reset","select","search","invalid","beforeinput","focus","blur","focusin","focusout","touchstart","touchend","touchmove","touchcancel","pointerdown","pointerup","pointermove","pointerenter","pointerleave","pointercancel","pointerover","dragstart","dragend","drag","dragenter","dragleave","dragover","drop","copy","cut","paste","scroll","wheel","play","pause","ended","volumechange","seeking","seeked","animationstart","animationend","transitionend","transitionstart","resize","toggle","fullscreenchange","load","error","abort","beforeunload","unload","hashchange","popstate","storage","message"],He={};ad.forEach((e,t)=>{He[e]=t});var Mr={};ad.forEach((e,t)=>{Mr[t]=e});function To(e){if(!e)return null;let t=e.trim();if(!t||!t.includes("~"))return null;let n=[];for(let r of t.split(",")){if(!r)continue;let[o,s]=r.split("~"),i=Number(o);if(!Number.isFinite(i))continue;let a=s&&parseInt(s,36)||0;n.push({id:i,mask:a})}return n.length?{entries:n}:null}function Eh(e){let t=To(e);if(t){let n=new Set;for(let{id:r}of t.entries)n.add(r);return[...n]}return[]}function qs(e){return Ko(e).map(n=>Mr[n]).filter(n=>!!n)}function Ko(e){let t=yo();if(t?.getEventHandlerIds)try{let o=t.getEventHandlerIds(e);if(o&&o.length)return o}catch{}let n=e.getAttribute(Kr),r=Eh(n);return!r||r.length===0?[]:r}var Fc=["media"],cd=new Set(Fc),Hc=["alert","alertdialog","application","directory","feed","grid","log","marquee","menu","menubar","menuitem","menuitemcheckbox","menuitemradio","note","radiogroup","scrollbar","search","switch","tab","tablist","tabpanel","timer","toolbar","tooltip","tree","treegrid","treeitem"];var ld=new Set(Hc),Nr=new Set(["button","checkbox","combobox","figure","img","link","listbox","option","radio","scrollbar","searchbox","separator","slider","spinbutton","switch","tab","tabpanel","textbox","tooltip","treeitem","grid","gridcell","table","cell","columnheader","rowheader","menu","menubar","menuitem","menuitemcheckbox","menuitemradio","tree","treegrid","radiogroup","application","dialog","alertdialog","alert","status","progressbar","meter","search","code","media"]),Ws=new Set(["group","region","section","banner","contentinfo","main","navigation","complementary","form","article","document","presentation","none"]);var ud=["none","presentation"],Oe;(function(e){e[e.ANCESTOR_ROLE_REQUIRED=6]="ANCESTOR_ROLE_REQUIRED",e[e.PROPERTY_VALUE_MATCH=5]="PROPERTY_VALUE_MATCH",e[e.HAS_TABLE_ROW_DATA=7]="HAS_TABLE_ROW_DATA",e[e.BOOLEAN_PROPERTY=0]="BOOLEAN_PROPERTY",e[e.ATTRIBUTE_GREATER_THAN=2]="ATTRIBUTE_GREATER_THAN",e[e.HAS_TABLE_COLUMN_DATA=8]="HAS_TABLE_COLUMN_DATA",e[e.FORBIDDEN_ANCESTORS=1]="FORBIDDEN_ANCESTORS",e[e.HAS_ACCESSIBLE_NAME=4]="HAS_ACCESSIBLE_NAME",e[e.ATTRIBUTE_LESS_THAN=3]="ATTRIBUTE_LESS_THAN"})(Oe||(Oe={}));var dd={a:["link"],area:["link"],article:["article"],aside:["complementary"],body:["document"],button:["button"],datalist:["listbox"],dd:["definition"],details:["group"],dfn:["term"],dialog:["dialog"],dt:["term"],fieldset:["group"],figure:["figure"],footer:["contentinfo"],form:["form"],h1:["heading"],h2:["heading"],h3:["heading"],h4:["heading"],h5:["heading"],h6:["heading"],header:["banner"],hr:["separator"],img:["img"],input:["button","checkbox","combobox","radio","searchbox","slider","spinbutton","textbox"],li:["listitem"],link:["link"],main:["main"],math:["math"],menu:["list"],nav:["navigation"],ol:["list"],optgroup:["group"],option:["option"],output:["status"],progress:["progressbar"],section:["region"],select:["combobox","listbox"],summary:["button"],table:["table"],tbody:["rowgroup"],td:["cell","gridcell"],textarea:["textbox"],tfoot:["rowgroup"],th:["cell","columnheader","gridcell","rowheader"],thead:["rowgroup"],tr:["row"],ul:["list"],code:["code"],pre:["code"]},$s={heading:{selector:"h6,h1,h3,h2,h5,h4"},checkbox:{conditionalSelectors:[{selector:"input",conditions:[{type:Oe.PROPERTY_VALUE_MATCH,property:"type",values:["checkbox"]}]}]},navigation:{selector:"nav"},row:{selector:"tr"},complementary:{selector:"aside"},table:{selector:"table"},gridcell:{conditionalSelectors:[{selector:"td",conditions:[{type:Oe.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"grid"}]},{selector:"td",conditions:[{type:Oe.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"treegrid"}]},{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:Oe.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"treegrid"},{type:Oe.HAS_TABLE_COLUMN_DATA,hasData:!0},{type:Oe.HAS_TABLE_ROW_DATA,hasData:!0}]}]},slider:{conditionalSelectors:[{selector:"input",conditions:[{type:Oe.PROPERTY_VALUE_MATCH,property:"type",values:["range"]}]}]},listitem:{selector:"li"},contentinfo:{conditionalSelectors:[{selector:"footer",conditions:[{type:Oe.FORBIDDEN_ANCESTORS,selector:'section,nav,main,aside,article,[role="region"],[role="navigation"],[role="main"],[role="complementary"],[role="article"]'}]}]},definition:{selector:"dd"},button:{selector:"summary,button",conditionalSelectors:[{selector:"input",conditions:[{type:Oe.PROPERTY_VALUE_MATCH,property:"type",values:["submit","reset","image","button"]}]}]},status:{selector:"output"},form:{conditionalSelectors:[{selector:"form",conditions:[{type:Oe.HAS_ACCESSIBLE_NAME}]}]},article:{selector:"article"},textbox:{selector:"textarea",conditionalSelectors:[{selector:"input:not([list])",conditions:[{type:Oe.PROPERTY_VALUE_MATCH,property:"type",values:["url","text","tel","email"]}]}]},radio:{conditionalSelectors:[{selector:"input",conditions:[{type:Oe.PROPERTY_VALUE_MATCH,property:"type",values:["radio"]}]}]},columnheader:{selector:'th[scope="colgroup"],th[scope="col"]',conditionalSelectors:[{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:Oe.HAS_TABLE_ROW_DATA,hasData:!1}]}]},list:{selector:"ul,ol,menu"},region:{conditionalSelectors:[{selector:"section",conditions:[{type:Oe.HAS_ACCESSIBLE_NAME}]}]},document:{selector:"body"},option:{selector:"select > option,select > optgroup > option,datalist > option"},separator:{selector:"hr"},link:{selector:"area[href],a[href],link[href]"},img:{selector:"img[alt],img:not([alt])"},main:{selector:"main"},searchbox:{conditionalSelectors:[{selector:"input:not([list])",conditions:[{type:Oe.PROPERTY_VALUE_MATCH,property:"type",values:["search"]}]}]},cell:{conditionalSelectors:[{selector:"td",conditions:[{type:Oe.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"table"}]},{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:Oe.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"table"},{type:Oe.HAS_TABLE_COLUMN_DATA,hasData:!0},{type:Oe.HAS_TABLE_ROW_DATA,hasData:!0}]}]},rowheader:{selector:'th[scope="rowgroup"],th[scope="row"]',conditionalSelectors:[{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:Oe.HAS_TABLE_COLUMN_DATA,hasData:!1},{type:Oe.HAS_TABLE_ROW_DATA,hasData:!0}]}]},dialog:{selector:"dialog"},listbox:{selector:"select[multiple],datalist",conditionalSelectors:[{selector:"select",conditions:[{type:Oe.ATTRIBUTE_GREATER_THAN,attribute:"size",value:1}]}]},group:{selector:"optgroup,fieldset,details"},term:{selector:"dt,dfn"},progressbar:{selector:"progress"},figure:{selector:"figure"},spinbutton:{conditionalSelectors:[{selector:"input",conditions:[{type:Oe.PROPERTY_VALUE_MATCH,property:"type",values:["number"]}]}]},math:{selector:"math"},combobox:{selector:"select:not([size]):not([multiple])",conditionalSelectors:[{selector:"select:not([multiple])",conditions:[{type:Oe.ATTRIBUTE_LESS_THAN,attribute:"size",value:2}]},{selector:"input[list]",conditions:[{type:Oe.PROPERTY_VALUE_MATCH,property:"type",values:["url","text","tel","search","email"]}]}]},banner:{conditionalSelectors:[{selector:"header",conditions:[{type:Oe.FORBIDDEN_ANCESTORS,selector:'[role="region"],[role="navigation"],[role="main"],[role="complementary"],[role="article"],section,nav,main,aside,article'}]}]},rowgroup:{selector:"thead,tfoot,tbody"},code:{selector:"code,pre"}},Kr="rtrvr-ls",Lr="rtrvr-ro",qc="rtrvr-mw-ready",ko="rtrvr-mw-busy",Wc="rtrvr-mwa-ready",fd=new Set(["button","cell","checkbox","columnheader","gridcell","heading","link","menuitem","menuitemcheckbox","menuitemradio","option","radio","row","rowgroup","rowheader","switch","tab","tooltip","tree","treeitem","sectionhead","definition","term","deletion","insertion"]),pd=["BUTTON","INPUT","METER","OUTPUT","PROGRESS","SELECT","TEXTAREA"],md=["h1","h2","h3","h4","h5","h6"],hd="http://www.w3.org/1999/xhtml",gd="http://www.w3.org/2000/svg",Gt="rtrvr-label";var na=new Set(["NOSCRIPT","SCRIPT","STYLE","META"]),_o="CODE",Eo="PRE",bd="aria-hidden",yd="target";var ea;(function(e){e[e.value=0]="value",e[e.alt=1]="alt",e[e.list=2]="list",e[e.title=3]="title"})(ea||(ea={}));var Yo;(function(e){e[e["data-icon"]=13]="data-icon",e[e["data-name"]=14]="data-name",e[e["data-tooltip"]=15]="data-tooltip",e[e["data-label"]=16]="data-label"})(Yo||(Yo={}));var ta;(function(e){e[e.VALUENOW=0]="VALUENOW",e[e.VALUETEXT=1]="VALUETEXT"})(ta||(ta={}));var $c=new Set([He.click,He.dblclick,He.doubleclick,He.contextmenu,He.auxclick,He.pointerdown,He.pointerup,He.mousedown,He.mouseup,He.touchstart,He.touchend,He.keydown,He.keyup,He.input,He.beforeinput,He.change,He.submit,He.reset,He.paste,He.dragstart,He.dragend,He.drop]),vd=new Set([...$c,He.scroll,He.wheel,He.mouseenter,He.mouseover,He.focus,He.blur,He.focusin,He.focusout]),ra=new Set(["click","dblclick","auxclick","contextmenu","mousedown","mouseup","pointerdown","pointerup","touchstart","touchend"]),Vc=new Set(["input","change","beforeinput","keydown","keyup","keypress","paste","compositionstart","compositionend"]),zc=new Set(["drag","dragstart","dragend","dragenter","dragleave","dragover","drop"]);var Yr;(function(e){e[e.ELEMENT=1]="ELEMENT",e[e.ATTRIBUTE=2]="ATTRIBUTE",e[e.TEXT=3]="TEXT",e[e.CDATA_SECTION=4]="CDATA_SECTION",e[e.ENTITY_REFERENCE=5]="ENTITY_REFERENCE",e[e.ENTITY=6]="ENTITY",e[e.PROCESSING_INSTRUCTION=7]="PROCESSING_INSTRUCTION",e[e.COMMENT=8]="COMMENT",e[e.DOCUMENT=9]="DOCUMENT",e[e.DOCUMENT_TYPE=10]="DOCUMENT_TYPE",e[e.DOCUMENT_FRAGMENT=11]="DOCUMENT_FRAGMENT",e[e.NOTATION=12]="NOTATION"})(Yr||(Yr={}));var Vs;(function(e){e[e.HTML=0]="HTML",e[e.SVG=1]="SVG"})(Vs||(Vs={}));var oa;(function(e){e[e.VALUENOW=0]="VALUENOW",e[e.VALUETEXT=1]="VALUETEXT",e[e.ATOMIC=2]="ATOMIC",e[e.AUTOCOMPLETE=3]="AUTOCOMPLETE",e[e.COLCOUNT=4]="COLCOUNT",e[e.COLINDEX=5]="COLINDEX",e[e.COLSPAN=6]="COLSPAN",e[e.ERRORMESSAGE=7]="ERRORMESSAGE",e[e.HASPOPUP=8]="HASPOPUP",e[e.LEVEL=9]="LEVEL",e[e.LIVE=10]="LIVE",e[e.MULTILINE=11]="MULTILINE",e[e.MULTISELECTABLE=12]="MULTISELECTABLE",e[e.ORIENTATION=13]="ORIENTATION",e[e.PLACEHOLDER=14]="PLACEHOLDER",e[e.POSINSET=15]="POSINSET",e[e.READONLY=16]="READONLY",e[e.RELEVANT=17]="RELEVANT",e[e.REQUIRED=18]="REQUIRED",e[e.ROWCOUNT=19]="ROWCOUNT",e[e.ROWINDEX=20]="ROWINDEX",e[e.ROWSPAN=21]="ROWSPAN",e[e.SETSIZE=22]="SETSIZE",e[e.SORT=23]="SORT",e[e.VALUEMAX=24]="VALUEMAX",e[e.VALUEMIN=25]="VALUEMIN",e[e.KEYSHORTCUTS=26]="KEYSHORTCUTS",e[e.ROLEDESCRIPTION=27]="ROLEDESCRIPTION"})(oa||(oa={}));var sa;(function(e){e[e.BUSY=0]="BUSY",e[e.CHECKED=1]="CHECKED",e[e.CURRENT=2]="CURRENT",e[e.EXPANDED=3]="EXPANDED",e[e.INVALID=4]="INVALID",e[e.PRESSED=5]="PRESSED",e[e.SELECTED=6]="SELECTED"})(sa||(sa={}));var hn;(function(e){e[e["rtrvr-label"]=0]="rtrvr-label",e[e.role=1]="role",e[e.value=2]="value",e[e.alt=3]="alt",e[e.list=4]="list",e[e.title=5]="title",e[e["aria-label"]=6]="aria-label",e[e["aria-labelledby"]=7]="aria-labelledby",e[e["aria-description"]=8]="aria-description",e[e["aria-describedby"]=9]="aria-describedby",e[e.disabled=10]="disabled",e[e.href=11]="href",e[e.placeholder=12]="placeholder",e[e.type=13]="type",e[e.tabindex=14]="tabindex",e[e.id=15]="id",e[e._ngcontent=16]="_ngcontent",e[e["ng-reflect-*"]=17]="ng-reflect-*",e[e["data-reactroot"]=18]="data-reactroot",e[e["data-v-*"]=19]="data-v-*",e[e.required=20]="required",e[e.contenteditable=21]="contenteditable",e[e.accept=22]="accept"})(hn||(hn={}));var qt;(function(e){e[e.display=0]="display",e[e.content=1]="content",e[e.beforeDisplay=2]="beforeDisplay",e[e.afterDisplay=3]="afterDisplay",e[e.beforeContent=4]="beforeContent",e[e.afterContent=5]="afterContent",e[e.width=6]="width",e[e.height=7]="height",e[e.minWidth=8]="minWidth",e[e.minHeight=9]="minHeight",e[e.position=10]="position",e[e.top=11]="top",e[e.left=12]="left",e[e.right=13]="right",e[e.bottom=14]="bottom",e[e.paddingTop=15]="paddingTop",e[e.paddingRight=16]="paddingRight",e[e.paddingBottom=17]="paddingBottom",e[e.paddingLeft=18]="paddingLeft",e[e.marginTop=19]="marginTop",e[e.marginRight=20]="marginRight",e[e.marginBottom=21]="marginBottom",e[e.marginLeft=22]="marginLeft",e[e.cursor=23]="cursor",e[e.opacity=24]="opacity",e[e.visibility=25]="visibility",e[e.overflowX=26]="overflowX",e[e.overflowY=27]="overflowY",e[e.backgroundColor=28]="backgroundColor",e[e.color=29]="color",e[e.borderWidth=30]="borderWidth",e[e.borderStyle=31]="borderStyle",e[e.boxShadow=32]="boxShadow",e[e.outline=33]="outline"})(qt||(qt={}));var Dr;(function(e){e[e.text=0]="text",e[e.elText=1]="elText",e[e.viewBox=2]="viewBox",e[e.paths=3]="paths",e[e.pathData=4]="pathData",e[e.circles=5]="circles",e[e.rects=6]="rects",e[e.lines=7]="lines",e[e.polygons=8]="polygons",e[e.polylines=9]="polylines",e[e.ellipses=10]="ellipses"})(Dr||(Dr={}));var wh=[...Hc,...Object.keys($s),...Fc],Td=[...new Set(wh)],Qo={};Td.forEach((e,t)=>{Qo[e]=t});var zs={};Td.forEach((e,t)=>{zs[t]=e});var ia=class{currentId;constructor(t=1){this.currentId=t}generateId(){let t=this.currentId;return this.currentId++,t}initialize(t=1){this.currentId=t}getCurrentValue(){return this.currentId}};function js(e){let t=yo();if(t?.getRoleHint)try{let o=t.getRoleHint(e);if(o)return o}catch{}let n=e.getAttribute(Lr);if(!n)return null;let r=n.trim();if(!r)return null;if(r.startsWith("s:"))return r.slice(2);if(/^\d+$/.test(r)){let o=Number(r);if(Number.isFinite(o)){let s=zs[o];if(s)return s}}return r}function Jo(e){return Array.from(new Set(e))}function kd(e,t){if(!e||e.length===0)return Jo(t);let n=new Set([...e,...t]);return Jo(Array.from(n))}function Sn(e,t){let r=yo()?.getEventHandlerIds?.(e)??Ko(e),o=r.length>0&&r.some(a=>$c.has(a)),s=aa(e),i=t?Ws.has(t):!1;return{element:e,semanticRole:t,eventHandlerIndices:r,isEditableRegion:s,hasNodeWorthyHandlers:o,isLikelyStructuralContainer:i}}var Ih=new Set(["text","search","url","tel","password","email","number","date","datetime-local","time","month","week","color"]);function xh(e){let n=be(e).getComputedStyle(e);if(n.display==="none"||n.visibility==="hidden"||n.pointerEvents==="none")return!1;let r=e.getBoundingClientRect();return!(r.width===0||r.height===0)}function Sh(e){let t=be(e);if(!Bn(e,t))return!1;let n=(e.type||"text").toLowerCase();return Ih.has(n)?!e.disabled&&!e.readOnly:!1}function Rh(e){let t=be(e);return Kn(e,t)&&!e.disabled&&!e.readOnly}function Ah(e){let t=e;return!(!t.isContentEditable||t.getAttribute("aria-readonly")==="true"||t.getAttribute("aria-disabled")==="true")}function aa(e){return!e||!xh(e)?!1:!!(Sh(e)||Rh(e)||Ah(e))}function Gs(e){if(!e)return null;let t=e.match(/^\s*\[id=(\d+)\]/);if(t?.[1]){let o=parseInt(t[1],10);return Number.isFinite(o)?o:null}let n=/\[id=(\d+)\]/g,r;for(;r=n.exec(e);){let o=r.index??0,s=e.slice(Math.max(0,o-30),o);if(/iframeRoot\s*=\s*$/.test(s)||s.includes("iframeRoot="))continue;let i=parseInt(r[1],10);if(Number.isFinite(i))return i}try{let o=e.match(LABEL_ID_PATTERN);if(o?.[1]){let s=parseInt(o[1],10);return Number.isFinite(s)?s:null}}catch{}return null}function Xs(e){let t=String(e??"").replace(/[\n\r\t]/g," ").replace(/\s+/g," ").trim();return t=t.replace(/\[/g,"[").replace(/\]/g,"]"),t}function _d({element:e,elementID:t,frameContextLabel:n}){let r=!rn.disableDomAnnotations,o=[`[id=${t}]`],s=be(e);if(Hs(e)){let c=Xs(e.id||e.getAttribute("name")||"unnamed");o.push(`[iframe=${c}]`)}if(n){let c=Xs(n);o.push(`[iframeRoot=${c}]`)}if(od(e,s)&&o.push(`[size=${e.clientWidth}x${e.clientHeight}]`),(sd(e,s)||id(e,s))&&o.push(`[size=${e.clientWidth}x${e.clientHeight}]`),Bn(e,s)||Kn(e,s)){let c=Ch(e);o.push(...c)}e.getAttribute(bd)==="true"&&o.push("[aria-hidden=true]"),e.disabled&&o.push("[disabled]"),r&&Zu(e,s)&&e.setAttribute(yd,"_self");let a=o.join(" ");return r&&e.setAttribute(Gt,a),a}function Ch(e){let t=[],n=be(e),r=Bn(e,n);if(r&&e.type&&e.type!=="text"&&t.push(`[type=${e.type}]`),e.name){let o=Xs(e.name);o&&t.push(`[name=${o}]`)}if(r&&e.multiple&&t.push("[multiple]"),r&&(e.type==="checkbox"||e.type==="radio")&&t.push(`[checked=${e.checked}]`),r&&e.type==="file"&&e.files?.length&&t.push(`[files=${e.files.length}]`),r&&e.type==="number"&&(e.min!==""&&t.push(`[min=${e.min}]`),e.max!==""&&t.push(`[max=${e.max}]`),e.step!==""&&e.step!=="1"&&t.push(`[step=${e.step}]`)),r&&e.type==="range"&&(t.push(`[min=${e.min||"0"}]`),t.push(`[max=${e.max||"100"}]`),t.push(`[value=${e.value}]`)),e.readOnly&&t.push("[readonly]"),e.required&&t.push("[required]"),e.maxLength&&e.maxLength!==-1&&e.maxLength<524288&&t.push(`[maxlength=${e.maxLength}]`),r&&e.pattern&&t.push("[pattern]"),e.autocomplete&&e.autocomplete!=="off"&&t.push(`[autocomplete=${e.autocomplete}]`),e.placeholder){let o=Xs(e.placeholder).replace(/\\/g,"\\\\").replace(/"/g,'\\"');o&&t.push(`[placeholder="${o}"]`)}if(e.value){let o=e.value;r&&e.type==="password"&&(o="*".repeat(Math.min(o.length,10)));let s=Xs(o).replace(/\\/g,"\\\\").replace(/"/g,'\\"');t.push(`[value="${s}"]`)}return t}var wo=new ia,jc=new WeakMap;function Ed(){jc=new WeakMap}function ca(e){let t=jc.get(e);if(t)return t;let n=wo.generateId();return jc.set(e,n),n}var la=new Map,Gc=new WeakMap;function wd(){la.clear(),Gc=new WeakMap}function Xc(e,t){try{typeof WeakRef<"u"?la.set(e,new WeakRef(t)):la.set(e,t)}catch{}}function Ks(e){let t=la.get(e);if(!t)return null;let n=t instanceof WeakRef?t.deref():t;return!n||n.isConnected===!1?null:n}function Qr(e){let t=null,n=ca(e);if(rn.frameContextLabel)t=rn.frameContextLabel;else{let o=dt();if(o&&e.ownerDocument!==o)try{let i=e.ownerDocument?.defaultView?.frameElement?.getAttribute(Gt)||"",a=i?Gs(i):null;t=a?String(a):null}catch{t=""}}let r=_d({element:e,elementID:n,frameContextLabel:t});if(Xc(n,e),r)try{Gc.set(e,r)}catch{}return r}function Id(e){return Gc.get(e)??null}function Kc(e,t){try{e.querySelectorAll?.(`[${Gt}]`)?.forEach(r=>r.removeAttribute(Gt))}catch{}if(t.includeShadow)try{let n=e.querySelectorAll?.("*");if(n)for(let r of Array.from(n))try{let o=r.shadowRoot;o&&Kc(o,t)}catch{}}catch{}if(t.includeIframes)try{let n=e.querySelectorAll?.("iframe");if(n)for(let r of Array.from(n))try{let o=Fs(r);o?.body&&Kc(o.body,t)}catch{}}catch{}}function xd(e,t={}){if(rn.disableDomAnnotations)return;let n=vo(e)?be(e):ne(e)??window,r=Ji(e,n)??e;if(r){try{r.removeAttribute?.(Gt)}catch{}Kc(r,{includeShadow:t.includeShadow??!0,includeIframes:t.includeIframes??!0})}}var hr={},Yc=new WeakMap,ua=new WeakSet;function Sd(){hr={},Yc=new WeakMap,ua=new WeakSet,Ed()}function Xt({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:s,originatedFromParent:i,elementContext:a}){let c=ca(e);Xc(c,e);let l=hr[c];if(i){if(!l){let d={nodeCategory:e.nodeType,provisionalFromParent:!0},p=e.nodeName;p&&p.trim()&&(d.elementName=p);let v=e.getAttribute("role");v&&(d.preservedAttributes={1:v});let m=e.tagName;m&&(d.elementTag=m),hr[c]=d}}else{if(l&&!l.provisionalFromParent){if((o||Zo(e))&&(l.isFrameElement=!0,s&&s.length>0&&(l.frameContent=s)),a){let{eventHandlerIndices:d,isEditableRegion:p}=a;if(d&&d.length>0){let v=Jo(d);v.length>0&&(l.eventHandlers=kd(l.eventHandlers,v))}p&&(l.isEditable=!0)}return c}if(ua.has(e))return c;ua.add(e);try{hr[c]=Rd({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:s,elementContext:a})}finally{ua.delete(e)}}return c}function Ys(e){let t=Yc.get(e);if(t!==void 0)return t;let r=(e.textContent||"").replace(/\s+/g," ").trim(),o=e.data?.replace(/\s+/g," ").trim();if(!r&&!o)return 0;let s=wo.generateId(),i={textContent:r,nodeCategory:e.nodeType};return o&&o!==r&&(i.rawData=o),hr[s]=i,Yc.set(e,s),s}function Cd(e,t){let n=Nd(e),{minY:r,maxY:o}=n.getCellBounds(t);return n.getRows().slice(r,o+1).some(s=>s.some(Qs))}function Md(e,t){let n=Nd(e),{minX:r,maxX:o}=n.getCellBounds(t);return n.getRows().some(s=>s.slice(r,o+1).some(Qs))}var fa=class{cells;constructor(t=[]){this.cells=t}get rowCount(){return this.cells.length}get columnCount(){return Math.max(...this.cells.map(t=>t.length))}getCellAt=(t,n)=>this.getRowAt(n)[t];setCellAt=(t,n,r)=>{this.getRowAt(n)[t]=r};getRowAt=t=>(this.cells[t]===void 0&&(this.cells[t]=[]),this.cells[t]);getRows=()=>this.cells;getCellBounds=t=>{let n=this.columnCount,r=this.rowCount,o=-1,s=-1;for(let i=0;i<this.rowCount;i++){let a=this.getRowAt(i),c=a.indexOf(t);c!==-1&&(o=Math.max(o,a.lastIndexOf(t)),s=Math.max(s,i),n=Math.min(n,c),r=Math.min(r,i))}return{minX:n,minY:r,maxX:o,maxY:s}};merge=t=>{this.cells=this.getRows().concat(t.getRows())}};function Nd(e){let n=be(e).TableGrid||fa,r=new n;e.tHead!==null&&r.merge(da(e.tHead.rows)),Array.from(e.tBodies).forEach(s=>{r.merge(da(s.rows))});let o=[];for(let s of Array.from(e.children))Qc(s)&&Io(s,"tr")&&o.push(s);return r.merge(da(o)),e.tFoot!==null&&r.merge(da(e.tFoot.rows)),r}function da(e){let t=new fa,n=[];for(let r=0;r<e.length;r++){let o=0;for(let s of Array.from(e[r].cells)){for(;t.getCellAt(o,r)||n[o];)!Qs(t.getCellAt(o,r))&&n[o]&&t.setCellAt(o,r,n[o]),o++;for(let i=o;i<o+s.colSpan;i++){Ad(s)===0&&(n[i]=s,t.setCellAt(i,r,s));for(let a=r;a<r+Ad(s);a++)Qs(t.getCellAt(i,a))||t.setCellAt(i,a,s)}o+=s.colSpan}for(let s=o;s<t.columnCount;s++){let i=n[s];i!==void 0&&!Qs(t.getCellAt(s,r))&&t.setCellAt(s,r,i)}}return t}function Ad(e){let t=e.getAttribute("rowSpan");if(t===null||t.trim()==="")return 1;let n=Number(t);return isNaN(n)?1:n}function Qs(e){return e!==void 0&&Io(e,"td")}function Yn(e){let t=e.tagName?.toLowerCase();if(t==="code"||t==="pre"){let r=Fh(e);if(r)return r}let n=Ld(e);if(n===null){if(t==="dl")return"list";if(t==="form")return"form";if(t==="header")return"banner";if(t==="footer")return"contentinfo";if(t==="option")return"option";if(t==="textarea")return"textbox";if(t==="input"){let o=e;switch(o.type.toLowerCase()){case"checkbox":return"checkbox";case"radio":return"radio";case"button":case"submit":case"reset":case"image":return"button";case"number":return"spinbutton";case"range":return"slider";case"hidden":return null;default:return o.hasAttribute("list")?"combobox":"textbox"}}if(t==="select")return e.multiple?"listbox":"combobox";if(t==="svg"){if(e.getAttribute("aria-hidden")==="true")return null;let o=e.querySelector("title"),s=e.querySelector("desc"),i=e.hasAttribute("aria-label"),a=e.hasAttribute("role");return o||s||i||a||Ko(e).length>0||e.getAttribute("tabindex")!==null?"img":null}if(Ko(e).length>0){let o=e.tagName.toLowerCase();if(["div","span","li","p","i","em","strong","b"].includes(o))return Mh(e)}}if(t==="td"&&e.getAttribute("role")===null)return"cell";if(n!==null&&t==="th"){let r=e.getAttribute("role");if(r&&Dd(r))return r;let o=e;return o.scope==="col"||o.hasAttribute("aria-sort")?"columnheader":o.scope==="row"?"rowheader":"cell"}return n}function Mh(e){return js(e)??null}function Ld(e){let t=e.getAttribute("role");if(t!==null)return ud.includes(t)||!Dd(t)?null:t;let n=e.tagName.toLowerCase();return(dd[n]??[]).find(o=>Nh(e,o))||null}function Nh(e,t){let n=$s[t],r=n?.selector;if(r&&pa(e,r))return!0;let o=n?.conditionalSelectors;return o?o.some(i=>pa(e,i.selector)&&i.conditions.every(c=>Dh(e,c))):!1}function Lh(e,t){let n=(t||"").trim().replace(/^#/,"");if(!n)return null;try{let r=e.getRootNode?.();if(xn(r)){let o=be(e),s=`#${Yi(o,n)}`,i=Ki(r,s);if(i)return i}}catch{}return Xi(Y(e),n)}function Dh(e,t){switch(t.type){case Oe.ATTRIBUTE_GREATER_THAN:{let n=e.getAttribute(t.attribute);return n!==null&&Number(n)>t.value}case Oe.ATTRIBUTE_LESS_THAN:{let n=e.getAttribute(t.attribute);return n!==null&&Number(n)<t.value}case Oe.HAS_ACCESSIBLE_NAME:return e.hasAttribute("aria-label")?!0:(e.getAttribute("aria-labelledby")||"").split(/\s+/).filter(Boolean).some(r=>Lh(e,r)!=null);case Oe.FORBIDDEN_ANCESTORS:return Or(e,t.selector)===null;case Oe.BOOLEAN_PROPERTY:return e[t.property]===t.value;case Oe.PROPERTY_VALUE_MATCH:return t.values.some(n=>n===e[t.property]);case Oe.ANCESTOR_ROLE_REQUIRED:{let n=e.parentElement;if(n===null)return!1;let r=Or(n,t.tag);return r!==null&&Ld(r)===t.role}case Oe.HAS_TABLE_COLUMN_DATA:{let n=Or(e,"table");return n===null?!1:t.hasData===Md(n,e)}case Oe.HAS_TABLE_ROW_DATA:{let n=Or(e,"table");return n===null?!1:t.hasData===Cd(n,e)}default:return Oh(t),!1}}function Oh(e){throw new Error(`unexpected value ${e}!`)}function Dd(e){return Bh(e)||Uh(e)||Ph(e)}function Ph(e){return cd.has(e)}function Bh(e){return ld.has(e)}function Uh(e){return $s.hasOwnProperty(e)}function Fh(e){if(e.tagName!==_o&&e.tagName!==Eo)return null;if(qs(e).some(r=>r==="click"||r==="copy"))return"button";let n=e.getAttribute("tabindex");return n!==null&&parseInt(n,10)>=0?"button":e.tagName===Eo||e.tagName===_o&&e.closest("pre")?"code":null}var Hh={[qt.display]:[qt.beforeDisplay,qt.afterDisplay],[qt.content]:[qt.beforeContent,qt.afterContent]},Jc=new Map,qh={minWidth:"min-width",minHeight:"min-height",backgroundColor:"background-color",borderWidth:"border-width",borderStyle:"border-style",boxShadow:"box-shadow",paddingTop:"padding-top",paddingRight:"padding-right",paddingBottom:"padding-bottom",paddingLeft:"padding-left",marginTop:"margin-top",marginRight:"margin-right",marginBottom:"margin-bottom",marginLeft:"margin-left",overflowX:"overflow-x",overflowY:"overflow-y"};function Wh(e,t){if(!Jc.has(e)){let n=qh[t]||t.replace(/([A-Z])/g,"-$1").toLowerCase();Jc.set(e,n)}return Jc.get(e)}var $h={display:e=>e!=="block"&&e!=="inline"&&e!=="",visibility:e=>e!=="visible",opacity:e=>parseFloat(e)<1,position:e=>e!=="static",cursor:e=>e!=="auto"&&e!=="default"&&e!=="text",width:e=>e!=="auto"&&e!=="",height:e=>e!=="auto"&&e!=="",minWidth:e=>e!=="0px"&&e!=="",minHeight:e=>e!=="0px"&&e!=="",paddingTop:e=>parseFloat(e)>0,paddingRight:e=>parseFloat(e)>0,paddingBottom:e=>parseFloat(e)>0,paddingLeft:e=>parseFloat(e)>0,marginTop:e=>Math.abs(parseFloat(e))>5,marginRight:e=>Math.abs(parseFloat(e))>5,marginBottom:e=>Math.abs(parseFloat(e))>5,marginLeft:e=>Math.abs(parseFloat(e))>5,overflowX:e=>e!=="visible",overflowY:e=>e!=="visible",backgroundColor:e=>e!=="transparent"&&e!=="rgba(0, 0, 0, 0)"&&e!=="initial",color:e=>e!=="initial"&&e!=="inherit"&&e!=="",borderWidth:e=>e!=="0px"&&parseFloat(e)>0,borderStyle:e=>e!=="none"&&e!=="initial",boxShadow:e=>e!=="none"&&e!=="",outline:e=>e!=="none"&&e!==""&&!e.includes("0px")};function Bd(e,t,n){let r=$h[e];return r?r(t,n):t.trim()!==""&&!["initial","inherit","unset"].includes(t)}function Ud(e){let t={},n=be(e);if(!Et(e,n))return t;let r=n.getComputedStyle(e),o=new Map([[qt.beforeDisplay,n.getComputedStyle(e,"::before")],[qt.afterDisplay,n.getComputedStyle(e,"::after")],[qt.beforeContent,n.getComputedStyle(e,"::before")],[qt.afterContent,n.getComputedStyle(e,"::after")]]);for(let s in qt)if(isNaN(Number(s))){let i=qt[s],a=Wh(i,s),c=Hh[i];c?((i===qt.display||i===qt.content)&&Od(r,a,i,s,t,e),Pd(o.get(c[0]),a,c[0],"beforeContent",t),Pd(o.get(c[1]),a,c[1],"afterContent",t)):Od(r,a,i,s,t,e)}return t}function Od(e,t,n,r,o,s){if(e){let i=e.getPropertyValue(t);i&&Bd(r,i,s)&&(o[n]=i)}}function Pd(e,t,n,r,o){if(e){let s=e.getPropertyValue(t);(t==="content"&&s&&s!=="none"&&s!=='""'&&s!=="''"||s&&Bd(r,s))&&(o[n]=s)}}function xo(e,t){let n=be(e);if(!Et(e,n))return!0;if(t&&Nr.has(t))return!1;if(e.hasAttribute("hidden")||Or(e,"[hidden]")!==null||Or(e,"[inert]")!==null)return!0;let r=n.getComputedStyle(e);if(r.display==="none"||r.visibility==="hidden"||r.visibility==="collapse"||e.getClientRects().length===0)return!0;let o=e.getBoundingClientRect(),s=1e6;return Math.abs(o.left)>s||Math.abs(o.top)>s}function Js(e){return Qn(e)&&e.classList.contains("jasmine_html-reporter")}function Vh(e){let t=e.getAttribute("role");return t==="presentation"||t==="none"}function Fd(e){return e?e.split(/\s+/).map(t=>t.trim()).filter(Boolean).map(t=>t.replace(/^#/,"")):[]}function Hd(e,t){let n=(t||"").trim().replace(/^#/,"");if(!n)return null;try{let o=e.getRootNode?.();if(xn(o)){let s=be(e),i=`#${Yi(s,n)}`,a=Ki(o,i);if(a)return a}}catch{}let r=Y(e);return Xi(r,n)}function Zc(e){let n=[];for(let r=0;r<arguments.length;r++){let o=arguments[r];if(Array.isArray(o))for(let s=0;s<o.length;s+=8192){let i=zh(o,s,s+8192),a=Zc.apply(null,i);for(let c=0;c<a.length;c++)n.push(a[c])}else n.push(o)}return n}function zh(e,t,n){return arguments.length<=2?Array.prototype.slice.call(e,t):Array.prototype.slice.call(e,t,n)}function qd(e,t){return jh(e,t).concat(Gh(e))}function jh(e,t){return Zc(tl(e).map(r=>Xd(r)&&Qn(r)?Wd(r,t):r))}function Wd(e,t){if(!e||xo(e,t))return[];if(!Vh(e))return[e];let n=Array.from(e.children);return Zc(n.map(r=>Wd(r,t)))}function $d(e){let t=Fd(e.getAttribute("aria-owns"));if(!t.length)return[];let n=[],r=new Set;for(let o of t){if(r.has(o))continue;r.add(o);let s=Hd(e,o);s&&s!==e&&n.push(s)}return n}function Gh(e){let t=$d(e);for(let n of t)n["aria-owned-by"]=e;return t}function Vd(e){let t=be(e),n=Y(e);if(e.getAttribute("role")!=="dialog"&&e.getAttribute("role")!=="alertdialog"||e.getAttribute("aria-modal")!=="true")return!1;let r=t.getComputedStyle(e);if(r?.position!=="fixed"&&r?.position!=="absolute"||parseInt(r?.zIndex,10)<=Qh(e))return!1;let o=Xh(e);return!o||!Yh(o)||!Zh(e)||o.getAttribute("role")==="dialog"||e.getAttribute("role")==="dialog"?!1:Jh(e)}function Xh(e){return[e.previousElementSibling,e.nextElementSibling,...Array.from(e.children),...e.parentElement?[e.parentElement.previousElementSibling,e.parentElement.nextElementSibling]:[]].filter(n=>n!==null).find(Kh)||null}function Kh(e){if(xo(e))return!1;let n=be(e).getComputedStyle(e);return(n?.position==="fixed"||n?.position==="absolute")&&n?.backgroundColor!=="rgba(0, 0, 0, 0)"&&n?.backgroundColor!=="transparent"&&n?.pointerEvents!=="none"}function Yh(e){let t=be(e),n=e.getBoundingClientRect();return n.top<=0&&n.left<=0&&n.bottom>=t.innerHeight&&n.right>=t.innerWidth}function Qh(e){let t=Y(e),n=be(e),r=n?.getComputedStyle;if(!r)return 0;let o=Uc(t,"*").filter(s=>s!==e&&!xo(s)).map(s=>parseInt(r.call(n,s)?.zIndex,10)).filter(s=>Number.isFinite(s)&&!isNaN(s));return o.length?Math.max(...o):0}function Jh(e){return e.querySelectorAll('a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])').length>0}function Zh(e){let t=e.parentElement;if(!t)return!1;for(let n of Array.from(t.children))if(n!==e&&!xo(n)&&n.getAttribute("aria-hidden")!=="true")return!1;return!0}function eg(){try{let t=dt()?.querySelector?.("dialog:modal");return'[aria-modal="true"], dialog:modal'}catch{return'[aria-modal="true"]'}}var zd=eg();function tg(e){return e.getAttribute("aria-disabled")==="true"||e.hasAttribute("disabled")}function el(e){let t=e.getAttribute("href")||e.getAttribute("src")||e.getAttribute("data")||e.getAttribute("action");if(!t&&!e.tagName.includes("-"))try{let n=e;t=n.href||n.src||n.data||n.action||null}catch{return!1}if(!t)return!1;try{let n=Y(e),r=new URL(t,n.baseURI);return r.protocol==="javascript:"&&(r.pathname.trim()!==""||r.search.trim()!==""||r.hash.trim()!=="")}catch{return!1}}function jd(e){return fd.has(e)}function ng(e){let t=e.parentElement,n=Y(e);if(!(!t||t===n.body||t===n.documentElement))return Xt({targetElement:t,originatedFromParent:!0})}function Rd({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:s,elementContext:i}){let a={nodeCategory:e.nodeType},c=t||tg(e),l=ng(e);if(l&&(a.parent=l),n){let Re=Qo[n];typeof Re=="number"?a.semanticRole=Re:a.semanticRole=n}if(c&&(a.isDisabled=!0),i){let{eventHandlerIndices:Re,isEditableRegion:Nt}=i,gt=Jo(Re);gt.length>0&&(a.eventHandlers=gt),Nt&&(a.isEditable=!0)}let d=og(e);d&&Object.keys(d).length>0&&(a.ariaProperties=d);let p=sg(e);p&&Object.keys(p).length>0&&(a.ariaStates=p);let v=e.nodeName;v&&v.trim()&&(a.elementName=v);let m=Ud(e);m&&Object.keys(m).length>0&&(a.computedStyles=m),xo(e)&&(a.isInvisible=!0);let g=rg(e,n);g&&Object.keys(g).length>0&&(a.preservedAttributes=g),e.draggable&&(a.isDraggable=!0),e.scrollWidth&&e.clientWidth&&e.scrollWidth>e.clientWidth&&(a.supportsHorizontalSwipe=!0),e.scrollHeight&&e.clientHeight&&e.scrollHeight>e.clientHeight&&(a.supportsVerticalSwipe=!0);let T=e.getAttribute("class");if(T?.trim()){T.includes("handle")&&(a.isDragHandle=!0),a.supportsHorizontalSwipe||(T.includes("horizontal")||T.includes("carousel"))&&(a.supportsHorizontalSwipe=!0),a.supportsVerticalSwipe||(T.includes("vertical")||T.includes("feed"))&&(a.supportsVerticalSwipe=!0),T.includes("dismissible")&&(a.supportsDismissSwipe=!0),(T.includes("long-press")||T.includes("hold")||T.includes("press-hold"))&&(a.supportsLongPress=!0);let Re=a.inputType||a.preservedAttributes?.[hn.type];Re==="submit"||Re==="reset"||Re==="clear"||(T.includes("submit")&&(a.preservedAttributes={...a.preservedAttributes||{},[hn.type]:"submit"}),T.includes("clear")&&(a.preservedAttributes={...a.preservedAttributes||{},[hn.type]:"clear"}),T.includes("reset")&&(a.preservedAttributes={...a.preservedAttributes||{},[hn.type]:"reset"}))}let D=dg({element:e});D&&D.length>0&&(a.labelReferences=D);let N=e.tagName;if(N&&(a.elementTag=N),ag(e)&&(a.hasFocus=!0),!o){let Re=nl({element:e,semanticRole:n,parentDisabled:c,excludeLabels:r});Re&&Re.length>0&&(a.childElements=Re)}let A=yg({element:e});A&&A.length>0&&(a.ownedElements=A);let S=Zi(e);S&&(a.resourceLocator=S),(o||Zo(e))&&(a.isFrameElement=!0),s&&s.length>0&&(a.frameContent=s);let F=e.type;F&&typeof F=="string"&&F.trim()&&(a.inputType=F);let $=e.placeholder;$&&typeof $=="string"&&$.trim()&&(a.placeholderText=$);let Q=e.value;Q&&typeof Q=="string"&&Q.trim()&&(a.elementValue=Q);let oe=fg({element:e,parentDisabled:t,semanticRole:n});if(oe&&oe.length>0&&(a.selectedOptions=oe),Or(e,"select,datalist")&&(a.nearestSelectList=!0),Qc(e))a.elementNamespace=Vs.HTML;else if(ig(e)){a.elementNamespace=Vs.SVG,a.svgStructure=cg(e);let Re=lg(e);Re&&Object.keys(Re).length>0&&(a.preservedAttributes?a.preservedAttributes={...a.preservedAttributes,...Re}:a.preservedAttributes=Re)}let fe=r?void 0:pg({element:e});fe&&fe.length>0&&(a.associatedLabels=fe);let _e=e.scope;_e&&typeof _e=="string"&&_e.trim()&&(a.tableScope=_e);let ge=hg({element:e});ge&&(a.tableCaption=ge);let Le=gg({element:e});Le&&(a.figureCaption=Le);let Se=bg({element:e});return Se&&(a.fieldsetLegend=Se),Or(e,"table")&&(a.nearestTable=!0),a}function rg(e,t){let n={},r=new Set(Object.values(hn).filter(a=>typeof a=="string")),o=new Set(Object.keys(ea).filter(a=>isNaN(Number(a)))),s=new Set(["_ngcontent","ng-reflect-*","data-v-*"]),i=e?.attributes?Array.from(e.attributes):[];for(let a of i){let c=a.name,l=a.value;if(c==="id"&&(!t||!Nr.has(t)))continue;let d;if(r.has(c)?d=c:c.startsWith("data-v-")?d="data-v-*":c.startsWith("ng-reflect-")?d="ng-reflect-*":c.startsWith("_ngcontent")&&(d="_ngcontent"),d){let p=l.trim()!=="",v=o.has(d);if(p||v){let m=hn[d],g=s.has(d)?"true":l;n[m]=g}}}if(!n[hn[Gt]]){let a=Id(e);a&&(n[hn[Gt]]=a)}return n}function og(e){return Gd(e,oa,ta)}function sg(e){return Gd(e,sa,null)}function Gd(e,t,n){let r={};for(let o in t)if(isNaN(Number(o))){let s=t[o],a=`aria-${o.toLowerCase().replace(/_/g,"-")}`,c=e.getAttribute(a),l=!1;n!==null&&(l=Object.values(n).filter(p=>typeof p=="number").includes(s)),e.hasAttribute(a)&&l||c?.trim()?r[s]=c:a==="aria-level"&&md.includes(e.tagName.toLowerCase()?.trim())&&(r[s]=e.tagName.substring(1))}return r}function Qn(e){return Xd(e)&&e.nodeType===Yr.ELEMENT}function ma(e){return e.nodeType===Yr.TEXT}function Xd(e){let t=typeof e;return t=="object"&&e!=null||t=="function"}function Qc(e){return Qn(e)&&(!e.namespaceURI||e.namespaceURI===hd)}function ig(e){return Qn(e)&&e.namespaceURI===gd}function Zo(e){return e.tagName==="IFRAME"}function Io(e,t){return"tagName"in e?e.tagName?.toLowerCase()===t:e.elementTag?.toLowerCase()===t}function Or(e,t){if(e.closest)return e.closest(t);for(;!pa(e,t);){if(e.parentElement===null)return null;e=e.parentElement}return e}function pa(e,t){return e.matches?.(t)??e.msMatchesSelector?.(t)??e.webkitMatchesSelector(t)}function ag(e){let t=e.ownerDocument,n=t?.hasFocus()?t.activeElement:null;if(n){let r=n.getAttribute("aria-activedescendant");r&&(n=t.getElementById(r)||n)}return e===n}function cg(e){let t={},n=Dr.text,r=Dr.elText;e.textContent?.trim()&&(t[n]=e.textContent);let o=e.querySelector("title"),s=e.querySelector("img");o?.textContent?.trim()?t[r]=o.textContent:s?.alt?.trim()&&(t[r]=s.alt);let i=e.getAttribute("viewBox");i&&(t[Dr.viewBox]=i);let a=e.querySelectorAll("path");a.length>0&&(t[Dr.paths]=a.length,t[Dr.pathData]=Array.from(a).slice(0,3).map(l=>l.getAttribute("d")).filter(Boolean).map(l=>l.substring(0,100)));let c={circles:e.querySelectorAll("circle").length,rects:e.querySelectorAll("rect").length,lines:e.querySelectorAll("line").length,polygons:e.querySelectorAll("polygon").length,polylines:e.querySelectorAll("polyline").length,ellipses:e.querySelectorAll("ellipse").length};return Object.entries(c).forEach(([l,d])=>{if(d>0){let p=Dr[l];t[p]=d}}),Object.keys(t).length>0?t:void 0}function lg(e){let t={};if(!e?.hasAttributes())return t;for(let n of Object.values(Yo).filter(r=>typeof r=="number")){let r=Yo[n];if(r){let o=r;if(Yo.hasOwnProperty(o)&&e.hasAttribute(o)){let s=e.getAttribute(o);s?.trim()&&(t[n]=s)}}}return t}function ug({frameElement:e,parentDisabled:t,excludeLabels:n}){if(!rn.includeFrameContents)return[];let r=null;try{r=e.contentWindow?.document?.body||null}catch{return[]}if(!r)return[];let o=[];for(let s of tl(r))if(!(Js(s)||Kd(s))){if(Qn(s)){let i=s,a=Yn(i),c=Sn(i,a),{shouldCreate:l,shouldAnnotate:d}=ha(c);if(l){d&&Qr(i);let p=Xt({targetElement:i,parentDisabled:t,semanticRole:a??void 0,excludeLabels:n,elementContext:c});p&&o.push(p)}else{let p=nl({element:i,semanticRole:a??void 0,parentDisabled:t,excludeLabels:n});o.push(...p)}}else if(ma(s)){let i=Ys(s);i&&o.push(i)}}return o}function tl(e){let t=be(e);if(nd(e,t)){try{let n=e.assignedNodes({flatten:!0});if(n&&n.length)return n}catch{}return Array.from(e.childNodes)}try{let n=e.shadowRoot||yo()?.getShadowRoot?.(e)||null;if(n){let r=Array.from(n.childNodes),o=Array.from(e.childNodes).filter(s=>!s.assignedSlot);return r.concat(o)}}catch{}return Array.from(e.childNodes)}function nl({element:e,semanticRole:t,parentDisabled:n,excludeLabels:r}){let o=[];for(let s of tl(e))if(!(Js(s)||Kd(s))){if(Qn(s)){let i=s,a=Yn(i),c=Sn(i,a);if(Zo(i)){Qr(i);let p=ug({frameElement:i,parentDisabled:n,excludeLabels:r}),v=Xt({targetElement:i,parentDisabled:n,semanticRole:a??void 0,excludeLabels:r,isFrameNode:!0,frameContentNodes:p,elementContext:c});v&&o.push(v);continue}let{shouldCreate:l,shouldAnnotate:d}=ha(c);if(l){d&&Qr(i);let p=Xt({targetElement:i,parentDisabled:n,semanticRole:a??void 0,excludeLabels:r,elementContext:c});p&&o.push(p)}else{let p=nl({element:i,semanticRole:a??void 0,parentDisabled:n,excludeLabels:r});o.push(...p)}}else if(ma(s)){let i=Ys(s);i&&o.push(i)}}return o}function dg({element:e}){let t=Fd(e.getAttribute("aria-labelledby")),n=new Set;for(let r of t){let o=Hd(e,r);if(!(!o||o===e)&&o){let s=Yn(o),i=Xt({targetElement:o,semanticRole:s,elementContext:Sn(o,s)});n.add(i)}}return Array.from(n)}function fg({element:e,parentDisabled:t,semanticRole:n}){let r=[];return e&&(n&&n==="listbox"?r=Array.from(e.querySelectorAll('[role="option"][aria-selected="true"]')).map(o=>Xt({targetElement:o,parentDisabled:t,semanticRole:"option",elementContext:Sn(o,"option")})):Io(e,"select")&&(r=Array.from(e.selectedOptions).map(o=>Xt({targetElement:o,parentDisabled:t,semanticRole:"option",elementContext:Sn(o,"option")})))),r}function pg({element:e}){if(pd.includes(e.tagName)){let t=Y(e),n=Uc(t,"label"),r=new Set;return Array.from(n).filter(o=>o!==e&&mg(o,e)).map(o=>{let s=Yn(o),i=Xt({targetElement:o,semanticRole:s,excludeLabels:!0,elementContext:Sn(o,s)});r.add(i)}),Array.from(r)}}function mg(e,t){let n=e.control;return n!==void 0?n===t:e.htmlFor!==""&&e.htmlFor===t.id?!0:!!(e.htmlFor===""&&e.contains(t))}function hg({element:e}){if(Io(e,"table")){let t=e.querySelector("caption");if(t&&t!==e){let n=Yn(t);return Xt({targetElement:t,semanticRole:n,elementContext:Sn(t,n)})}}}function gg({element:e}){if(Io(e,"figure")){let t=e.querySelector("figcaption");if(t&&t!==e){let n=Yn(t);return Xt({targetElement:t,semanticRole:n,elementContext:Sn(t,n)})}}}function bg({element:e}){if(Io(e,"fieldset")){let t=e.querySelector("legend");if(t&&t!==e){let n=Yn(t);return Xt({targetElement:t,semanticRole:n,elementContext:Sn(t,n)})}}}function yg({element:e}){let t=new Set,n=$d(e);for(let r of n){let o=Yn(r),s=Xt({targetElement:r,semanticRole:o,elementContext:Sn(r,o)});t.add(s)}return Array.from(t)}function ha(e){let{semanticRole:t,eventHandlerIndices:n,isEditableRegion:r,hasNodeWorthyHandlers:o,isLikelyStructuralContainer:s}=e,i=n.length>0&&n.some(p=>vd.has(p)),c=!!t||!s&&(o||r),l=!!t&&Nr.has(t);return{shouldCreate:c,shouldAnnotate:c&&(l||r||i)}}function Kd(e){if(!Qn(e))return!1;let t=e,n=t.tagName;return na.has(n)?!0:n===_o||n===Eo?vg(t):!1}function vg(e){let t=be(e),n=t?.getComputedStyle;if(!n||n.call(t,e).display==="none")return!0;let o=e.getBoundingClientRect();return o.width===0&&o.height===0&&!(typeof e.closest=="function"&&e.closest("pre"))||o.right<-1e3||o.left>t.innerWidth+1e3}function rl(e,t={}){return Ju(t),Sd(),wd(),xd(e,{includeShadow:!0,includeIframes:rn.clearIframes}),wo.initialize(rn.semanticIdStart),{rootNodes:Yd(e),semanticNodes:hr}}function Yd(e){let t=[];try{let n=Y(e),o=Array.from(n.querySelectorAll(zd)).filter(s=>!xo(s)&&Vd(s));if(o.length===0)t=es({targetElement:e});else if(o.length===1){let s=o[0];s.contains(e)?t=es({targetElement:e}):e.contains(s)?t=es({targetElement:s}):t=es({targetElement:e})}else t=es({targetElement:e})}catch(n){throw console.error("Error constructing semantic tree",n),n}return t}function es({targetElement:e,parentNode:t}){if(Js(e)||Qd(e))return[];let n=Yn(e),r=Sn(e,n);if(Zo(e))return[kg({frameElement:e,role:n,parentNode:t,elementContext:r})];let o=0,{shouldCreate:s,shouldAnnotate:i}=ha(r);s&&(i&&Qr(e),o=Xt({targetElement:e,parentDisabled:t?.isDisabled,semanticRole:n,elementContext:r}));let a=hr[o],c=Tg(e,n,o?a:t);return o&&c.length>0&&(a.semanticChildren=c),o?[o]:c}function Tg(e,t,n){let r=[],o=qd(e,t);for(let s of o)if(!(Js(s)||Qd(s))){if(Qn(s)){let i=es({targetElement:s,parentNode:n});r.push(...i)}else if(ma(s)&&Ig(s,n)){let i=Ys(s);i&&r.push(i)}}return r}function kg({frameElement:e,role:t,parentNode:n,elementContext:r}){Qr(e);let o=_g(e);return Xt({targetElement:e,parentDisabled:n?.isDisabled,semanticRole:t,isFrameNode:!0,frameContentNodes:o,elementContext:r})}function _g(e){if(!rn.includeFrameContents)return[];let t=Eg(e);return t.kind==="content"?Yd(t.rootElement):wg(e,t.reason)}function Eg(e){let t=null;try{t=e.contentDocument||e.contentWindow?.document||null}catch{return{kind:"unavailable",reason:"cross_origin_blocked"}}let n=t?.body||t?.documentElement||null;return n?{kind:"content",rootElement:n}:{kind:"unavailable",reason:"iframe_not_ready_or_empty"}}function wg(e,t){let n=wo.generateId(),r=wo.generateId(),o=e.getAttribute("title")?.trim()||e.getAttribute("name")?.trim()||e.id?.trim()||"Embedded frame",s=Zi(e)||void 0,i=t==="cross_origin_blocked"?"Iframe content is not accessible from this origin (cross-origin).":"Iframe content is not ready yet or has no readable DOM.";return hr[n]={nodeCategory:Yr.ELEMENT,semanticRole:"embedded_document_unavailable",computedName:o,syntheticKind:"embedded_container",frameContent:[r],...s?{resourceLocator:s}:{}},hr[r]={nodeCategory:Yr.TEXT,parent:n,textContent:i,preventTextMerge:!0,syntheticKind:"embedded_unavailable_text"},[n]}function Ig(e,t){let n=e.data.trim();if(!n||n==="")return!1;if(t?.semanticRole!==void 0&&t?.semanticRole!==null){let r=typeof t.semanticRole=="number"?zs[t.semanticRole]:t.semanticRole;if(jd(r))return!1}return!0}function Qd(e){if(!Qn(e))return!1;let t=e,n=t.tagName;return na.has(n)?!0:n===_o||n===Eo?xg(t):!1}function xg(e){let t=be(e);if(t.getComputedStyle(e).display==="none")return!0;let r=e.getBoundingClientRect();return r.width===0&&r.height===0&&!e.closest("pre")||r.right<-1e3||r.left>t.innerWidth+1e3}function ba(e){let t=e.activeElement;for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}function Sg(e){let t=e.getBoundingClientRect();return{x:t.left+t.width/2,y:t.top+t.height/2}}function ns(e,t,n){let r=Y(e,t),o=ne(r,n);try{e.focus?.({preventScroll:!0})}catch{}if(ba(r)===e)return!0;try{let{x:s,y:i}=Sg(e),a=o.PointerEvent||PointerEvent,c=o.MouseEvent||MouseEvent;e.dispatchEvent(new a("pointerdown",{bubbles:!0,cancelable:!0,composed:!0,clientX:s,clientY:i,buttons:1,button:0,pointerType:"mouse"})),e.dispatchEvent(new c("mousedown",{bubbles:!0,cancelable:!0,composed:!0,clientX:s,clientY:i,buttons:1,button:0})),e.dispatchEvent(new c("mouseup",{bubbles:!0,cancelable:!0,composed:!0,clientX:s,clientY:i,buttons:0,button:0})),e.dispatchEvent(new a("pointerup",{bubbles:!0,cancelable:!0,composed:!0,clientX:s,clientY:i,buttons:0,button:0,pointerType:"mouse"})),(e.isContentEditable||Bn(e,o)||Kn(e,o)||e.getAttribute("contenteditable")==="true")&&e.dispatchEvent(new c("click",{bubbles:!0,cancelable:!0,composed:!0,clientX:s,clientY:i,button:0}))}catch{}try{e.focus?.({preventScroll:!0})}catch{}return ba(r)===e}function Zs(e,t){let n=be(e),r=Kn(e,n)?n.HTMLTextAreaElement.prototype:n.HTMLInputElement.prototype,o=Object.getOwnPropertyDescriptor(r,"value");o?.set?o.set.call(e,t):e.value=t}function Ro(e,t,n="insertText"){let r=be(e),o=r.InputEvent||(typeof InputEvent<"u"?InputEvent:null),s=r.Event||Event;try{o?e.dispatchEvent(new o("beforeinput",{bubbles:!0,cancelable:!0,composed:!0,data:String(t??""),inputType:n})):e.dispatchEvent(new s("beforeinput",{bubbles:!0,cancelable:!0,composed:!0}))}catch{try{e.dispatchEvent(new s("beforeinput",{bubbles:!0,cancelable:!0,composed:!0}))}catch{}}try{o?e.dispatchEvent(new o("input",{bubbles:!0,cancelable:!1,composed:!0,data:String(t??""),inputType:n})):e.dispatchEvent(new s("input",{bubbles:!0,cancelable:!1,composed:!0}))}catch{try{e.dispatchEvent(new s("input",{bubbles:!0,cancelable:!1,composed:!0}))}catch{}}try{e.dispatchEvent(new s("change",{bubbles:!0,cancelable:!0,composed:!0}))}catch{}}function Rg(e){let n=be(e).KeyboardEvent||KeyboardEvent,r={key:"Enter",code:"Enter",keyCode:13,which:13,bubbles:!0,cancelable:!0,composed:!0},o=e.dispatchEvent(new n("keydown",r)),s=e.dispatchEvent(new n("keypress",r)),i=e.dispatchEvent(new n("keyup",r));return{canceled:!(o&&s&&i)}}function So(e){if(!e)return!1;let t=be(e);if(Kn(e,t))return!e.disabled&&!e.readOnly;if(Bn(e,t)){let n=(e.type||"text").toLowerCase();return(n==="text"||n==="search"||n==="email"||n==="url"||n==="tel"||n==="password"||n==="number")&&!e.disabled&&!e.readOnly}return!1}function ol(e){let t=be(e);if(!e||!Et(e,t))return!1;if(e.isContentEditable)return!0;let n=e.getAttribute("contenteditable");return!!(n&&n!=="false"||e.getAttribute("role")==="textbox"&&!("value"in e))}function Ag(e,t){let n=e.getRootNode();return xn(n)?n:Y(e)??t}function Cg(e,t){let n=[];for(let r of t.split(/\s+/).filter(Boolean)){let o=e.getElementById?.(r)||e.querySelector?.(`#${CSS.escape(r)}`),s=be(o);Et(o,s)&&n.push(o)}return n}function tf(e,t){if(!e)return{kind:"none",el:null,via:"no-root"};if(So(e))return{kind:"input",el:e,via:"self-input"};if(ol(e))return{kind:"contenteditable",el:e,via:"self-contenteditable"};let n=Y(e)??t,r=ne(n),o=Ag(e,n);if(ed(e,r)){let c=e.control;if(So(c))return{kind:"input",el:c,via:"label.control"};let l=e.htmlFor;if(l){let d=o.getElementById?.(l)||o.querySelector?.(`#${CSS.escape(l)}`);if(So(d))return{kind:"input",el:d,via:"label.for"}}}let s=e.getAttribute("aria-controls")||e.getAttribute("aria-owns");if(s)for(let c of Cg(o,s)){if(So(c))return{kind:"input",el:c,via:"aria-controls/owns"};if(ol(c))return{kind:"contenteditable",el:c,via:"aria-controls/owns"};let l=c.querySelector?.("input,textarea");if(So(l))return{kind:"input",el:l,via:"aria-controls->desc"}}let i=e.querySelector?.("input,textarea");if(So(i))return{kind:"input",el:i,via:"descendant"};let a=e.shadowRoot||null;if(a){let c=a.querySelector?.("input,textarea");if(So(c))return{kind:"input",el:c,via:"open-shadow-input"};let l=a.querySelector?.('[contenteditable="true"],[contenteditable=""],[role="textbox"]');if(ol(l))return{kind:"contenteditable",el:l,via:"open-shadow-contenteditable"}}return e.getAttribute("role")==="textbox"&&!("value"in e)?{kind:"contenteditable",el:e,via:"role=textbox"}:{kind:"none",el:null,via:"not-found"}}function ts(e,t,n,r=!1){let o=Y(e,t),i=ne(o,n).getSelection?.();if(!i)return!1;try{let a=o.createRange();return a.selectNodeContents(e),r&&a.collapse(!1),i.removeAllRanges(),i.addRange(a),!0}catch{return!1}}function Ao(e){return(e.textContent??"").replace(/\u00A0/g," ").trim()}var ga=e=>String(e??"").replace(/\s+/g," ").trim(),nf=new MessageChannel,rf=[];nf.port1.onmessage=()=>{let e=rf.shift();e&&e()};function Jd(){return new Promise(e=>{rf.push(e),nf.port2.postMessage(0)})}async function Zd(e,t,n){await Promise.resolve();let r=Math.max(0,Math.min(4,Number(n)||0));for(let o=0;o<r;o++)e.hidden?await Jd():await new Promise(s=>{try{t.requestAnimationFrame(()=>s())}catch{Jd().then(s)}})}function Mg(e){let t=String(e??"");return t===" "?{code:"Space",which:32}:/^[a-z]$/i.test(t)?{code:`Key${t.toUpperCase()}`,which:t.toUpperCase().charCodeAt(0)}:/^[0-9]$/.test(t)?{code:`Digit${t}`,which:t.charCodeAt(0)}:{code:"",which:t.length===1?t.charCodeAt(0):0}}function ef(e,t,n,r){let o=Y(e,t),i=ne(o,n).KeyboardEvent||KeyboardEvent,a=String(r??"");for(let c of a){let{code:l,which:d}=Mg(c),p={key:c,code:l,bubbles:!0,cancelable:!0,composed:!0,keyCode:d,which:d};e.dispatchEvent(new i("keydown",p)),e.dispatchEvent(new i("keypress",p)),e.dispatchEvent(new i("keyup",p))}}async function of(e,t,n,r,o){let s=String(r??"");if(e.disabled||e.readOnly)return{success:!1,method:"type-native-setter",details:"disabled_or_readonly",allowFallback:!0};let i=String(e.value??""),a=Y(e,t),c=ne(a,n),l=ns(e,a,c),d=Number.isFinite(Number(o?.settleFrames))?Math.max(0,Math.min(4,Number(o?.settleFrames))):a.hidden?1:2,p=!!o?.useKeyFallback,v=Number.isFinite(Number(o?.keyFallbackMaxLen))?Number(o?.keyFallbackMaxLen):140,m=p&&s.length>0&&s.length<=v;Zs(e,s),Ro(e,s,"insertReplacementText"),m&&ef(e,a,c,s),await Zd(a,c,d);let g=String(e.value??""),T=ga(i),D=ga(g),N=ga(s),A=T===N,S=D===N,F=g!==i,$=s.length>0&&!A&&g===i,Q=1;if(!A&&!S&&!F){Q=2;try{e.focus?.({preventScroll:!0}),e.select?.()}catch{}let ge=!1;try{a.execCommand?.("selectAll",!1,void 0),ge=!!a.execCommand?.("insertText",!1,s)}catch{ge=!1}if(!ge)try{Zs(e,s)}catch{}try{Ro(e,s,"insertReplacementText")}catch{}m&&ef(e,a,c,s),await Zd(a,c,d),g=String(e.value??"")}let me=ga(g)===N,fe=g!==i;$=s.length>0&&!A&&g===i;let _e=A||me||fe;return{success:_e,method:"type-native-setter",details:`focus=${l};attempts=${Q};settleFrames=${d};beforeLen=${i.length};afterLen=${g.length};changed=${fe};alreadyCorrect=${A};nowCorrect=${me};reverted=${$};keyFallback=${m}`,allowFallback:_e?void 0:!0}}function Ng(e,t,n){let o=be(e).InputEvent||InputEvent,s=new o("beforeinput",{bubbles:!0,cancelable:!0,composed:!0,data:t,inputType:n});return{ok:e.dispatchEvent(s),defaultPrevented:s.defaultPrevented}}function sf(e,t,n,r){let o=Y(e,n),s=ne(o,r),i=s.InputEvent||InputEvent,a=s.Event||Event,c=String(t??""),l=Ao(e),d=ns(e,o,s),p=ts(e,o,s,!0),v=Ng(e,c,"insertText"),m=!1,g="execCommand",T=!1,D=()=>{T=!0};try{e.addEventListener("input",D,{capture:!0})}catch{}if(v.ok&&!v.defaultPrevented)try{m=!!o.execCommand?.("insertText",!1,c)}catch{}if(!m)try{let S=s.getSelection?.(),F=S&&S.rangeCount?S.getRangeAt(0):null;if(!F||!e.contains(F.commonAncestorContainer)){ts(e,o,s,!0);let $=s.getSelection?.();F=$&&$.rangeCount?$.getRangeAt(0):null}F&&(F.insertNode(o.createTextNode(c)),F.collapse(!1),S?.removeAllRanges(),S?.addRange(F),m=!0,g="range")}catch{}if(m&&!T){try{e.dispatchEvent(new i("input",{bubbles:!0,cancelable:!1,composed:!0,data:c,inputType:"insertText"}))}catch{try{e.dispatchEvent(new a("input",{bubbles:!0,cancelable:!1,composed:!0}))}catch{}}try{e.dispatchEvent(new a("change",{bubbles:!0,cancelable:!0,composed:!0}))}catch{}}try{e.removeEventListener("input",D,{capture:!0})}catch{}let N=Ao(e);return{success:N!==l||!!c&&N.includes(c),method:`type-contenteditable-${g}`,details:`focus=${d};selectedWithin=${p};inserted=${m}`}}function af(e){let{canceled:t}=Rg(e);if(t)return{submitted:!1,method:"enter-handled"};let n=e.form||e.closest?.("form");return n?(n.requestSubmit?.()??n.submit?.(),{submitted:!0,method:"enter->form-submit"}):{submitted:!1,method:"enter-dispatched"}}function cf(e,t,n){if(e.disabled||e.readOnly)return{success:!1,method:"clear-native-setter",details:"disabled_or_readonly",allowFallback:!0};let r=Y(e,t),o=ne(r,n),s=String(e.value??""),i=ns(e,r,o);Zs(e,""),Ro(e,"","deleteByCut");let a=String(e.value??""),c=a!==s;return{success:c||a.length===0,method:"clear-native-setter",details:`focus=${i};beforeLen=${s.length};afterLen=${a.length};changed=${c}`}}function lf(e,t,n){let r=Y(e,t),o=ne(r,n),s=Ao(e),i=ns(e,r,o),a=ts(e,r,o,!1),c=!1,l="execCommand";try{c=!!r.execCommand?.("delete",!1,void 0)}catch{c=!1}if(!c)try{let m=o.getSelection?.(),g=m&&m.rangeCount?m.getRangeAt(0):null;(!g||!e.contains(g.commonAncestorContainer))&&ts(e,r,o,!1);let T=o.getSelection?.(),D=T&&T.rangeCount?T.getRangeAt(0):null;D&&(D.deleteContents(),D.collapse(!1),T?.removeAllRanges(),T?.addRange(D),c=!0,l="range")}catch{}if(!c)try{e.textContent="",c=!0,l="textContent"}catch{}Ro(e,"","deleteByCut");let d=Ao(e),p=d!==s;return{success:c||p||d.length===0,method:`clear-contenteditable-${l}`,details:`focus=${i};selectedWithin=${a};cleared=${c};changed=${p}`}}function uf(e,t){if(e===t||e.contains(t))return!0;let n=t;for(;n;){let r=n.getRootNode?.();if(xn(r)){let o=r.host;if(o===e||e.contains(o))return!0;n=o;continue}n=n.parentNode||null}return!1}var ya;(function(e){e.FLASH_LITE="Gemini Flash Lite",e.FLASH="Gemini Flash",e.PRO="Gemini Pro"})(ya||(ya={}));var df;(function(e){e[e.NativeHostConnected=0]="NativeHostConnected",e[e.NativeHostDisconnected=1]="NativeHostDisconnected"})(df||(df={}));var Lg=["image/png","image/jpeg","image/webp"],Dg=["application/pdf","text/plain"],wE=[...Lg,...Dg];var St;(function(e){e.ACT="act_on_tab",e.CRAWL="crawl_and_extract_from_tab",e.EXTRACT="extract_from_tab",e.SHEETS_WORKFLOW="sheets_workflow",e.INFER_SHEET_DATA="infer_sheet_data",e.GRAPHBOT="graph_bot",e.PDF_FILLER="pdf_filler",e.CUSTOM_TOOL_GENERATOR="custom_tool_generator",e.WEBPAGE_GENERATOR="webpage_generator",e.GOOGLE_DOC_GENERATOR="google_doc_generator",e.GOOGLE_SLIDES_GENERATOR="google_slides_generator",e.PROCESS_TEXT="process_text",e.CREATE_SHEET_FROM_DATA="create_sheet_from_data",e.ROVER_EXTERNAL_READ_CONTEXT="rover_external_read_context",e.ROVER_EXTERNAL_ACT_CONTEXT="rover_external_act_context",e.CONFIGURE_API_KEY="configure_api_key",e.TASK_COMPLETE="task_complete",e.ASK_USER="ask_user",e.EXECUTE_MULTIPLE_TOOLS="execute_multiple_tools",e.QUERY_RTRVR_AI_DOCUMENTATION="query_rtrvr_ai_documentation"})(St||(St={}));var wt;(function(e){e.PLANNER="Planner",e.AGENTIC_SEEK="Agentic Action",e.CRAWL_PAGES="Crawl Pages",e.EXTRACT_PAGE="Extract Page",e.SHEETS_WORKFLOW="Sheets Workflow",e.INFER_SHEET_DATA="Infer Sheet Data",e.MULTI_STEPS="Multi Steps",e.PDF_FILLER="PDF Filler",e.CUSTOM_TOOL_GENERATOR="Custom Tool Generator",e.WEBPAGE_GENERATOR="WebPage Generator",e.GOOGLE_DOC_GENERATOR="Google Doc Generator",e.GOOGLE_SLIDES_GENERATOR="Google Slides Generator",e.PROCESS_TEXT="Process Text",e.CREATE_SHEET_FROM_DATA="Create Sheet From Data",e.ROVER_EXTERNAL_READ_CONTEXT="Rover External Read Context",e.ROVER_EXTERNAL_ACT_CONTEXT="Rover External Act Context",e.EXECUTE_MULTIPLE_TOOLS="Execute Multiple User Tools",e.CONFIGURE_API_KEY="Configure Gemini API Key",e.QUERY_RTRVR_AI_DOCUMENTATION="query_rtrvr_ai_documentation"})(wt||(wt={}));var IE={[St.ACT]:wt.AGENTIC_SEEK,[St.CRAWL]:wt.CRAWL_PAGES,[St.EXTRACT]:wt.EXTRACT_PAGE,[St.SHEETS_WORKFLOW]:wt.SHEETS_WORKFLOW,[St.INFER_SHEET_DATA]:wt.INFER_SHEET_DATA,[St.PDF_FILLER]:wt.PDF_FILLER,[St.CUSTOM_TOOL_GENERATOR]:wt.CUSTOM_TOOL_GENERATOR,[St.WEBPAGE_GENERATOR]:wt.WEBPAGE_GENERATOR,[St.GOOGLE_DOC_GENERATOR]:wt.GOOGLE_DOC_GENERATOR,[St.GOOGLE_SLIDES_GENERATOR]:wt.GOOGLE_SLIDES_GENERATOR,[St.PROCESS_TEXT]:wt.PROCESS_TEXT,[St.CREATE_SHEET_FROM_DATA]:wt.CREATE_SHEET_FROM_DATA,[St.ROVER_EXTERNAL_READ_CONTEXT]:wt.ROVER_EXTERNAL_READ_CONTEXT,[St.ROVER_EXTERNAL_ACT_CONTEXT]:wt.ROVER_EXTERNAL_ACT_CONTEXT,[St.EXECUTE_MULTIPLE_TOOLS]:wt.EXECUTE_MULTIPLE_TOOLS,[St.CONFIGURE_API_KEY]:wt.CONFIGURE_API_KEY,[St.QUERY_RTRVR_AI_DOCUMENTATION]:wt.QUERY_RTRVR_AI_DOCUMENTATION};var sl=200;var Og=30,Pg=320,Bg=0,Ug=50,Fg=1,xE=ya.FLASH;var SE=wt.PLANNER;var il="application/pdf",al="application/gsheet";var RE=20*1024*1024;var rs={maxParallelTabs:4,pageLoadDelay:2e3,disableAutoScroll:!1,makeNewTabsActive:!1,writeRowProcessingTime:!1,totalBudgetMs:25e3,pageDataTimeoutMs:22e3,adaptiveSettleDebounceMs:Og,adaptiveSettleMaxWaitMs:Pg,adaptiveSettleRetries:Bg,sparseTreeRetryDelayMs:Ug,sparseTreeRetryMaxAttempts:Fg,pdfTextSelectionTimeoutMs:12e3,onlyTextContent:!1};var Hg=1,qg=9,Wg=11,ll="application/gdoc",os="text/html",va="text/plain";function $g(e){return!!e&&typeof e=="object"&&e.nodeType===qg}function ff(e){return!!e&&typeof e=="object"&&e.nodeType===Hg}function Vg(e){return!!e&&typeof e=="object"&&e.nodeType===Wg&&typeof e.host=="object"&&typeof e.mode=="string"}function pf(e){return ff(e)&&String(e.tagName).toUpperCase()==="IFRAME"}function cl(e){let t;if(typeof e=="number")t=e;else if(typeof e=="bigint")t=Number(e);else if(typeof e=="string")t=Number(e.trim());else return null;if(!Number.isFinite(t))return null;let n=Math.trunc(t);return n<=0?null:n}function zg(e){try{let t=e.shadowRoot;return t||globalThis?.chrome?.dom?.openOrClosedShadowRoot?.(e)||null}catch{return null}}function jg(e,t,n={}){let r=n.traverseShadow!==!1,o=n.traverseIframes!==!1,s=n.requireOwnerDocument,i=[e],a=new WeakSet;for(;i.length;){let c=i.pop();if(c&&typeof c=="object"){if(a.has(c))continue;a.add(c)}if($g(c)){let p=c.documentElement||c.body;p&&i.push(p);continue}if(Vg(c)){let p=c.children;if(p&&p.length)for(let v=p.length-1;v>=0;v--)i.push(p[v]);continue}if(!ff(c))continue;let l=c;if(s&&l.ownerDocument!==s)continue;let d=l.getAttribute?.(Gt);if(d&&Gs(d)===t)return l;if(r)try{let p=zg(l);p&&i.push(p)}catch{}if(o&&pf(l))try{let p=Fs(l);p&&i.push(p)}catch{}for(let p=l.lastElementChild;p;p=p.previousElementSibling)i.push(p)}return null}function Jn(e,t,n={}){let r=cl(t);if(!r)return null;let o=Ks(r);return o&&(!n.requireOwnerDocument||o.ownerDocument===n.requireOwnerDocument)?o:jg(e,r,{requireOwnerDocument:n.requireOwnerDocument,traverseShadow:n.traverseShadow,traverseIframes:n.traverseIframes})}function ul(e=document){return e.querySelector('embed[type="application/pdf"], embed[type="application/x-google-chrome-pdf"]')}function mf(e){if(e==null)return[];if(Array.isArray(e)){let t=[];for(let n of e){let r=cl(n);r&&t.push(r)}return t}if(typeof e=="number"||typeof e=="bigint"){let t=cl(e);return t?[t]:[]}if(typeof e=="string"){let t=e.match(/\d+/g);return t?t.map(r=>parseInt(r,10)).filter(r=>Number.isFinite(r)&&r>0):[]}if(typeof e=="object"){let t=e.path??e.ids??e.iframe_path;if(t!==void 0)return mf(t)}return[]}function ss(e,t){let n=mf(t),r=e.defaultView||window;if(!n.length)return{doc:e,win:r,iframePath:n,resolvedPath:[],unresolvedPath:[]};let o=e,s=[];for(let i=0;i<n.length;i++){let a=n[i],c=n.length===1,l=Jn(o,a,{requireOwnerDocument:c?void 0:o,traverseShadow:!0,traverseIframes:c});if(!l||!pf(l))return{doc:o,win:o.defaultView||r,iframePath:n,resolvedPath:s,unresolvedPath:n.slice(i)};let d=null;try{d=Fs(l)||null}catch{d=null}if(!d)return{doc:o,win:o.defaultView||r,iframePath:n,resolvedPath:s,unresolvedPath:n.slice(i)};s.push(a),o=d}return{doc:o,win:o.defaultView||r,iframePath:n,resolvedPath:s,unresolvedPath:[]}}function hf(e){return e==="application/pdf"||e==="application/x-pdf"||e==="application/x-google-chrome-pdf"}function Gg(e){let t={...rs,...e??{}},n=Number(e?.pdfTextSelectionTimeoutMs);return Number.isFinite(n)&&(t.pdfTextSelectionTimeoutMs=Math.floor(n)),t.totalBudgetMs!==void 0&&(t.totalBudgetMs=Math.max(1500,Math.floor(t.totalBudgetMs))),t.pageDataTimeoutMs!==void 0&&(t.pageDataTimeoutMs=Math.max(500,Math.floor(t.pageDataTimeoutMs))),t.pdfTextSelectionTimeoutMs!==void 0&&(t.pdfTextSelectionTimeoutMs=Math.max(150,Math.floor(t.pdfTextSelectionTimeoutMs))),t.adaptiveSettleDebounceMs!==void 0&&(t.adaptiveSettleDebounceMs=Math.max(20,Math.min(500,Math.floor(t.adaptiveSettleDebounceMs)))),t.adaptiveSettleMaxWaitMs!==void 0&&(t.adaptiveSettleMaxWaitMs=Math.max(120,Math.min(5e3,Math.floor(t.adaptiveSettleMaxWaitMs)))),t.adaptiveSettleRetries!==void 0&&(t.adaptiveSettleRetries=Math.max(0,Math.min(6,Math.floor(t.adaptiveSettleRetries)))),t.sparseTreeRetryDelayMs!==void 0&&(t.sparseTreeRetryDelayMs=Math.max(40,Math.min(1e3,Math.floor(t.sparseTreeRetryDelayMs)))),t.sparseTreeRetryMaxAttempts!==void 0&&(t.sparseTreeRetryMaxAttempts=Math.max(0,Math.min(4,Math.floor(t.sparseTreeRetryMaxAttempts)))),t}var Xg=["disableAutoScroll","onlyTextContent","totalBudgetMs","pageDataTimeoutMs","pdfTextSelectionTimeoutMs","adaptiveSettleDebounceMs","adaptiveSettleMaxWaitMs","adaptiveSettleRetries","sparseTreeRetryDelayMs","sparseTreeRetryMaxAttempts"];function Ta(e){if(!e||typeof e!="object")return;let t=e,n={};typeof t.disableAutoScroll=="boolean"&&(n.disableAutoScroll=t.disableAutoScroll),typeof t.onlyTextContent=="boolean"&&(n.onlyTextContent=t.onlyTextContent);let r=["totalBudgetMs","pageDataTimeoutMs","pdfTextSelectionTimeoutMs","adaptiveSettleDebounceMs","adaptiveSettleMaxWaitMs","adaptiveSettleRetries","sparseTreeRetryDelayMs","sparseTreeRetryMaxAttempts"];for(let i of r){let a=Number(t[i]);Number.isFinite(a)&&(n[i]=Math.trunc(a))}if(!Object.keys(n).length)return;let o=Gg(n),s={};for(let i of Xg)n[i]!==void 0&&o[i]!==void 0&&(s[i]=o[i]);return Object.keys(s).length?s:void 0}function Kg(){return Date.now()}function It(e){return!e||!Number.isFinite(e)?Number.POSITIVE_INFINITY:Math.max(0,e-Kg())}async function gf(e,t,n){if(!Number.isFinite(e)||e<=0)return;let r=It(n);r<=0||r<e+40||await Rt(e,t)}async function is(e,t,n){let r=Math.max(0,Math.floor(t));return r?await Promise.race([e.then(s=>({ok:!0,value:s})),(async()=>(await Rt(r,n),{ok:!1,reason:"timeout"}))()]):{ok:!1,reason:"timeout"}}var Rt=(()=>{let e=new MessageChannel,t=[];e.port1.onmessage=()=>{let r=t.shift();r&&r()};let n=()=>new Promise(r=>{t.push(r),e.port2.postMessage(0)});return async(r,o)=>{let s=Number(r);if(!Number.isFinite(s)||s<=0)return;if(!o.hidden){let a=o.defaultView||window,c=a.setTimeout?a.setTimeout.bind(a):setTimeout;await new Promise(l=>c(l,s));return}let i=Date.now();for(;Date.now()-i<s;)await n()}})();var Yg=3e4;function bf(e){return(String(e??"").replace(/\\/g,"/").split("/").pop()||"upload").replace(/[\u0000-\u001f\u007f]/g,"").trim()||"upload"}var dl=class extends Error{url;status;statusText;bodySnippet;constructor(t,n){super(t),this.name="FetchFileError",this.url=n.url,this.status=n.status,this.statusText=n.statusText,this.bodySnippet=n.bodySnippet}};function Qg(e){return e&&e.split(";")[0].trim()||"application/octet-stream"}function Jg(e){if(!e)return;let t=/filename\*\s*=\s*UTF-8''([^;]+)/i.exec(e);if(t?.[1])try{return decodeURIComponent(t[1].trim().replace(/^\"(.*)\"$/,"$1"))}catch{}let n=/filename\s*=\s*(\"?)([^\";]+)\1/i.exec(e);if(n?.[2])return n[2].trim()}function fl(e,t){try{let r=(t??window).URL||URL,s=new r(e).pathname.match(/\/o\/(.+?)(\?|$)/);if(s?.[1]){let a=decodeURIComponent(s[1]).split("/");return a[a.length-1].replace(/^\d+-/,"")}}catch{}}function yf(e){let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}async function Zg(e,t={},n,r=fetch){let o=new AbortController,s=Yg,i=!1,a=()=>{};if(n){let l=!1;a=()=>{l=!0},(async()=>{try{if(await Rt(s,n),l)return;i=!0,o.abort()}catch{}})().catch(()=>{})}else{let l=setTimeout(()=>{i=!0,o.abort()},s);a=()=>clearTimeout(l)}let c=new Headers(t.headers);c.has("Accept")||c.set("Accept","*/*");try{let l=await r(e,{method:"GET",redirect:t.redirect??"follow",cache:t.cache??"no-store",mode:t.mode??"cors",credentials:t.credentials??"include",...t,headers:c,signal:o.signal});if(!l.ok){let m=await l.text().catch(()=>"");throw new dl(`Fetch failed (${l.status})`,{url:e,status:l.status,statusText:l.statusText,bodySnippet:m.slice(0,256)})}let d=await l.arrayBuffer(),p=Qg(l.headers.get("content-type")),v=Jg(l.headers.get("content-disposition"))||fl(e);return{bytes:d,mimeType:p,fileName:v}}finally{a()}}async function vf(e,t,n){return await Zg(t,{referrer:n??void 0,referrerPolicy:"strict-origin-when-cross-origin"})}var ft={plannerHistory:16,prevSteps:8,uiMessages:40,timelineEvents:60,localPersistBytes:131072,snapshotBytes:262144};var Tf={activation:"on_demand",idleCloseMs:3e4,fallbackPollMinMs:2e3,fallbackPollMaxMs:15e3,maxInflightCommands:1};var pt;(function(e){e.UP="UP",e.DOWN="DOWN",e.LEFT="LEFT",e.RIGHT="RIGHT",e.TOP="TOP",e.BOTTOM="BOTTOM"})(pt||(pt={}));var Wt;(function(e){e.START="START",e.CENTER="CENTER",e.END="END",e.NEAREST="NEAREST"})(Wt||(Wt={}));function _f(e){if(!e)return Wt.CENTER;let t=typeof e=="string"?e.toUpperCase():String(e).toUpperCase();return Wt&&t in Wt?Wt[t]:Wt.CENTER}function pl(e){return globalThis.CSS&&typeof globalThis.CSS.escape=="function"?globalThis.CSS.escape(e):e.replace(/([ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g,"\\$1")}function as(e,t){if(!e)return"";let n=Y(e,t);if(e===n.documentElement)return"html";if(e===n.body)return"body";if(e.id)return`#${pl(e.id)}`;let r=[],o=e;for(;o&&o!==n.body&&o!==n.documentElement;){let s=o.tagName.toLowerCase();if(o.id){s+=`#${pl(o.id)}`,r.unshift(s);break}let a=(o.classList&&o.classList.length?Array.from(o.classList):(o.className||"").toString().split(/\s+/).filter(Boolean)).filter(c=>c&&c.length<=48).sort((c,l)=>c.length-l.length).slice(0,3).map(pl);if(a.length)s+="."+a.join(".");else{let c=o.parentElement;if(c){let l=Array.from(c.children).filter(d=>d.tagName===o.tagName);if(l.length>1){let d=l.indexOf(o)+1;s+=`:nth-of-type(${d})`}}}r.unshift(s),o=o.parentElement}return r.join(" > ")}function Co(e){return e.scrollingElement||e.documentElement||e.body}function ka(e,t,n,r,o){let s=Y(e,t),i=ne(s,n),a=Co(s),c=e===s.documentElement||e===s.body||e===a,l=c?a:e,d=c?i.innerHeight:l.clientHeight,p=c?i.innerWidth:l.clientWidth,v=o??d*.8;switch(r){case pt.DOWN:{l.scrollTop+=v;break}case pt.UP:{l.scrollTop=Math.max(0,l.scrollTop-v);break}case pt.LEFT:return l.scrollLeft=Math.max(0,l.scrollLeft-(o??p*.8)),{success:!0,scrollLeft:l.scrollLeft};case pt.RIGHT:return l.scrollLeft+=o??p*.8,{success:!0,scrollLeft:l.scrollLeft};default:return{success:!1,error:`Unsupported scroll direction: ${String(r)}`}}let m=l.scrollHeight,g=c?i.innerHeight:l.clientHeight,T=m-g;return{success:!0,scrollTop:l.scrollTop,isAtTop:l.scrollTop<=5,isAtBottom:l.scrollTop>=T-5}}function eb(e,t,n){let r=Y(e,t),o=ne(r,n),s=Co(r),i=e;for(;i&&i!==r.body&&i!==r.documentElement;){let c=o.getComputedStyle(i).overflowY;if((c==="auto"||c==="scroll"||c==="overlay")&&i.scrollHeight>i.clientHeight+5)return i;i=i.parentElement}return s}function kf(e,t,n){let r=Y(e,t),o=ne(r,n),s=Co(r),i=e===r.documentElement||e===r.body||e===s,a=i?s:e,c=a.scrollHeight,l=i?o.innerHeight:a.clientHeight,d=c-l;return a.scrollTop>=d-5}function ml(e,t,n,r){let o=Y(e,t),s=ne(o,n),i=Co(o),a=eb(e,o,s),c=a===o.documentElement||a===o.body||a===i,l=c?i:a,d=e.getBoundingClientRect(),p=c?new(s.DOMRect||DOMRect)(0,0,s.innerWidth,s.innerHeight):a.getBoundingClientRect(),v=c?s.innerHeight:a.clientHeight,m=24,g=d.top-p.top,T=l.scrollTop+g,D;switch(r){case Wt.START:D=T-m;break;case Wt.END:D=T+d.height-v+m;break;case Wt.NEAREST:{if(d.top>=p.top&&d.bottom<=p.bottom)return{success:!0,scrollTop:l.scrollTop,isAtTop:l.scrollTop<=5,isAtBottom:kf(l,o,s)};d.top<p.top?D=T-m:D=T+d.height-v+m;break}case Wt.CENTER:default:D=T-v/2+d.height/2;break}let N=l.scrollHeight-v;return l.scrollTop=Math.max(0,Math.min(D,N)),{success:!0,scrollTop:l.scrollTop,isAtTop:l.scrollTop<=5,isAtBottom:kf(l,o,s)}}function Ef(e){let t=Number(e);if(!Number.isFinite(t))return null;let n=Math.trunc(t);return n>0?n:null}function wf(e){let t=[];for(let n of $i){let r=e?.[n];if(r==null)continue;if(Array.isArray(r)){for(let s of r){let i=Ef(s);i!=null&&t.push(i)}continue}let o=Ef(r);o!=null&&t.push(o)}return Array.from(new Set(t))}function tb(e){return wf(e).length>0}function nb(e){let t=wf(e);return t.length?t[0]:null}var rb=new Set([U.click_element,U.type_into_element,U.type_and_enter,U.hover_element,U.right_click_element,U.double_click_element,U.press_key,U.scroll_page,U.scroll_to_element,U.mouse_wheel,U.drag_element,U.drag_and_drop,U.swipe_element,U.long_press_element,U.adjust_slider,U.select_dropdown_value,U.clear_element,U.focus_element,U.check_field_validity,U.select_text,U.copy_text,U.paste_text,U.pinch_zoom,U.upload_file,U.dispatch_pointer_path]);(()=>{let e="__RTRVR_ACTION_EXECUTOR__";if(window[e])return;window[e]=!0;try{document.documentElement?.setAttribute(Wc,"1")}catch{}let n="__RTRVR_INTERNAL__";try{window.__RTRVR_INTERNAL_KEY__=window.__RTRVR_INTERNAL_KEY__||n}catch{}let r=window.__RTRVR_INTERNAL_KEY__||n,o=window[r],s=o&&typeof o=="object"?o:{};if(!o)try{Object.defineProperty(window,r,{value:s,writable:!1,configurable:!1,enumerable:!1})}catch{window[r]=s}async function i(f){let w={};try{let E=Ku[f.opcode];if(!E)throw new Error(`Unknown tool opcode: ${f.opcode}`);let _={...f.call,name:E};w=(await T({tabIndex:f.tabIndex,call:_,elementData:g(f.elementData),payload:f.payload}))[0]?.response??{success:!1,error:"Empty tool response",allowFallback:!0}}catch(E){w={success:!1,error:E?.message||String(E),allowFallback:!0}}return w}try{Object.defineProperty(s,"actions",{value:Object.freeze({execute:i}),writable:!1,configurable:!1,enumerable:!1})}catch{}let a="__RTRVR_UPLOAD_BYTES_REQ__",c="__RTRVR_UPLOAD_BYTES_RES__",l="__RTRVR_UPLOAD_BYTES_BRIDGE__",d="__RTRVR_WINDOW_MESSAGE_MUX__";function p(f){let w=f,E=w[d];if(!E||typeof E!="object"){E={handlers:new Set,installed:!1};try{Object.defineProperty(w,d,{value:E,enumerable:!1,configurable:!1})}catch{w[d]=E}}if(!E.installed){E.installed=!0,f.addEventListener("message",_=>{if(_.source===f)for(let y of Array.from(E.handlers))try{y(_)}catch{}},!0);try{f.addEventListener("pagehide",()=>{let y=f[l]?.pending;if(y)for(let[b,k]of y){try{k.cancelTimeout()}catch{}k.reject(new Error("pagehide: upload bytes request canceled")),y.delete(b)}},!0)}catch{}}return E}function v(f){let w=f,E=w[l];if(!E||typeof E!="object"){E={pending:new Map};try{Object.defineProperty(w,l,{value:E,enumerable:!1,configurable:!1})}catch{w[l]=E}p(f).handlers.add(y=>{let b=y?.data;if(!b||typeof b!="object"||b.type!==c)return;let k=String(b.requestId||"");if(!k)return;let x=E.pending.get(k);if(!x)return;E.pending.delete(k);try{x.cancelTimeout()}catch{}if(!b.ok){x.reject(new Error(b.error||"Failed to get bytes"));return}let B=b.bytes;if(!(B instanceof ArrayBuffer)){x.reject(new Error("Invalid bytes payload (expected ArrayBuffer)"));return}if(typeof x.expectedByteLength=="number"&&B.byteLength!==x.expectedByteLength){x.reject(new Error(`Byte length mismatch: got=${B.byteLength}, expected=${x.expectedByteLength}`));return}x.resolve(B)})}return E}function m(f,w,E,_=9e4){let y=f.__ROVER_UPLOAD_BYTES__||f.rover?.uploadBytes||f.rtrvr?.uploadBytes;if(typeof y=="function")return Promise.resolve().then(()=>y({token:w,byteLength:E,timeoutMs:_})).then(P=>{if(P instanceof ArrayBuffer)return P;if(P&&P.buffer instanceof ArrayBuffer)return P.buffer;throw new Error("Upload bytes provider returned invalid buffer")});let b=v(f),k=globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(16).slice(2)}`,x=Math.max(1e3,Math.min(Number(_)||9e4,18e4)),B=Qi(f)||document;return new Promise((P,H)=>{let W=!1,z=!1,te=()=>{z=!0};(async()=>{await Rt(x,B),!(z||W)&&(b.pending.delete(k),W=!0,H(new Error("Timed out waiting for upload bytes")))})().catch(()=>{}),b.pending.set(k,{cancelTimeout:te,expectedByteLength:E,resolve:se=>{W||(W=!0,te(),P(se))},reject:se=>{W||(W=!0,te(),H(se))}}),f.postMessage({type:a,requestId:k,token:w,byteLength:E},"*")})}function g(f){if(f)return{frameworks:f.frameworks?f.frameworks.map(w=>Xu[w]).filter(w=>w&&w!=="unknown"):[],listenersRaw:f.listenersRaw??"",role:f.role??void 0,pattern:f.pattern??void 0,value:f.value??void 0}}async function T({tabIndex:f,call:w,elementData:E,payload:_}){let y=(()=>{try{return pr()?.top?.document||document}catch{return document}})(),b=w.args,k=tb(b),x,B,P=[],H=[],W=[];try{({doc:x,win:B,iframePath:P,resolvedPath:H,unresolvedPath:W}=ss(y,b.iframe_id))}catch{if(b.iframe_id!=null){let ie=`Cannot access iframe ${b.iframe_id} (cross-origin or not found)`;return[{name:w.name,args:w.args,response:{success:!1,error:ie,allowFallback:!1,output:{success:!1,error:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:ie,retryable:!1},iframe_context:{requested_iframe_id:b.iframe_id}}}}]}x=document,B=ne(x)}if(b.iframe_id!=null&&W.length>0&&!k){let ue=`iframe_id unresolved: remaining=${W.join(">")||"(none)"} (cross-origin, not-ready, or not found)`;return[{name:w.name,args:w.args,response:{success:!1,error:ue,allowFallback:!1,details:`requested=${P.join(">")||"(none)"} resolved=${H.join(">")||"(none)"}`,output:{success:!1,error:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:ue,retryable:!1},iframe_context:{requested_iframe_id:b.iframe_id,requested_path:P,resolved_path:H,unresolved_path:W}}}}]}let z=w.name,te=nb(b),se=te?Jn(x,te):null,we=se?.ownerDocument??null,le;if(!rb.has(z))le={success:!1,error:`Tool not promotable to main: ${z}`,allowFallback:!0};else{let ie=we??x,ue=ne(ie,B);le=await N(z,se,b,E,ie,ue,_)}return[{name:w.name,args:w.args,response:le}]}async function D(f,w,E){try{let _=f.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",b=f[_]?.scroll?.execute;if(typeof b!="function")throw new Error("main-world scroll detector not available");let k=E?.doc||Qi(f)||document,x=Math.max(250,Math.min(Number(E?.timeoutMs??3500),8e3)),B=await is(Promise.resolve().then(()=>b(w)),x,k);if(!B.ok)throw new Error("scroll detector timeout");return B.value}catch(_){throw new Error(_?.message||"main-world scroll detector not available")}}async function N(f,w,E,_,y,b,k){let x=z=>({success:z.success,error:z.success?void 0:z.details||"Action failed",allowFallback:z.success?void 0:z.allowFallback??!0}),B=f===U.press_key||f===U.scroll_page||f===U.drag_and_drop||f===U.pinch_zoom;if(!w&&!B)return x({success:!1,method:"missing-element-race",details:"Target element missing",allowFallback:!0});let P=new Set([U.type_into_element,U.type_and_enter,U.clear_element,U.focus_element,U.select_text,U.check_field_validity]),H=w,W=Y(H,y);if(H&&P.has(f)){let z=tf(H,W);(z.kind==="input"||z.kind==="contenteditable")&&(H=z.el)}try{switch(f){case U.click_element:return x($(w,y,b,_));case U.double_click_element:return x(ur(w,y,b));case U.right_click_element:return x(kn(w,y,b));case U.hover_element:return x(await ut(w,y,b,_,E.duration));case U.type_into_element:return x(await $n(H,y,b,E.text,_));case U.type_and_enter:return x(await Mn(H,y,b,E.text,_));case U.clear_element:return x(await ln(H,y,b,_));case U.focus_element:return x(bt(H,y,b));case U.select_dropdown_value:return x(Qe(w,y,b,E.value,_));case U.adjust_slider:return x(Zt(w,y,b,_?.value??E.value,_));case U.check_field_validity:return x(Ir(H,y,b));case U.select_text:return x(xr(H,y,b,E.start_offset,E.end_offset));case U.scroll_page:return x(await ho(w,y,b,E));case U.scroll_to_element:return x(await Je(w,y,b,E));case U.mouse_wheel:return x(Vn(w,y,b,E.delta_x,E.delta_y));case U.drag_element:return x(await yt(w,y,b,E,_));case U.drag_and_drop:return x(await un(E,w,y,b));case U.swipe_element:return x(await Nn(w,y,b,E));case U.long_press_element:return x(await dn(w,y,b,E.duration));case U.pinch_zoom:return x(await Dt(w,y,b,E));case U.press_key:return x(rt(E.key,E.modifiers,w,y,b));case U.copy_text:return x(await Sr(w,y,b));case U.paste_text:return x(await cr(w,y,b,_));case U.upload_file:return x(await jn(E,y,b,k,w,_));case U.dispatch_pointer_path:return x(await lr(E,y,b));default:return x({success:!1,method:"unhandled",details:`Unhandled ${f}`,allowFallback:!0})}}catch(z){return x({success:!1,method:"exception",details:z?.message||"exception",allowFallback:!0})}}function A(f){let w=new Map;if(!f)return w;let E=f.trim();if(!E)return w;let _=To(E);if(_){for(let{id:y,mask:b}of _.entries){let k=Mr[y];if(!k)continue;let x=new Set(zi(b)),B=w.get(k);if(B)for(let P of x)B.add(P);else w.set(k,x)}return w}return w}function S(f,...w){return f?w.some(E=>f.has(E)):!1}function F(f,w){let E=A(w?.listenersRaw),_=new Set;for(let[,P]of E)for(let H of P)(H==="react"||H==="vue"||H==="angular"||H==="svelte"||H==="jquery")&&_.add(H);let y=new Set;for(let[P,H]of E)if(["click","input","change","keydown","keyup","pointerdown","pointerup","mousedown","mouseup","submit","dragstart","drop","wheel","scroll"].includes(P))for(let W of H)y.add(W);let b=_.size>0||[...y].some(P=>["react","vue","angular","svelte","jquery"].includes(P)),k=S(E.get("click"),"delegated"),x=S(E.get("input"),"delegated")||S(E.get("change"),"delegated")||S(E.get("keydown"),"delegated"),B=w?.role||js(f)||f.getAttribute("role");return{sourcesByType:E,fws:_,isFrameworkElement:b,delegatedClick:k,delegatedInput:x,role:B}}function $(f,w,E,_){let y=F(f,_),b=Y(f,w),k=ne(b,E);ot(f,b,k),_?.pattern==="hover-activate"&&ut(f,b,k,_,120);let x=y.fws.has("react")||S(y.sourcesByType.get("click"),"react"),B=y.fws.has("vue")||S(y.sourcesByType.get("click"),"vue"),P=y.fws.has("angular")||S(y.sourcesByType.get("click"),"angular"),H=y.fws.has("svelte")||S(y.sourcesByType.get("click"),"svelte"),W=y.fws.has("jquery")||S(y.sourcesByType.get("click"),"jquery");return en(()=>Q(f,b,k),()=>oe(f,b,k),()=>x?fe(f,b,k):null,()=>B?_e(f,b,k):null,()=>P?ge(f,b,k):null,()=>H?Le(f,b,k):null,()=>W?Se(f,b,k):null)}function Q(f,w,E){let _=Y(f,w),y=ne(_,E),b=y.PointerEvent||PointerEvent,k=y.MouseEvent||MouseEvent,{x,y:B}=me(f,_,y),P={bubbles:!0,cancelable:!0,composed:!0,view:y,clientX:x,clientY:B,button:0,buttons:1};return f.focus?.({preventScroll:!0}),[new b("pointerover",P),new b("pointerenter",{...P,bubbles:!1}),new k("mouseover",P),new k("mouseenter",{...P,bubbles:!1}),new b("pointerdown",P),new k("mousedown",P),new b("pointerup",{...P,buttons:0}),new k("mouseup",{...P,buttons:0}),new k("click",{...P,buttons:0})].forEach(W=>f.dispatchEvent(W)),{success:!0,method:"pointer-mouse-click"}}function oe(f,w,E){let _=Y(f,w),y=ne(_,E);try{if(f instanceof HTMLAnchorElement){let b=f.getAttribute("target");try{f.setAttribute("target","_self"),f.click()}finally{b===null?f.removeAttribute("target"):f.setAttribute("target",b)}}else f.click?.();return{success:!0,method:"native-click"}}catch{return{success:!1,method:"native-click"}}}function me(f,w,E){let _=Y(f,w),y=f.getBoundingClientRect(),b=[{x:y.left+y.width/2,y:y.top+y.height/2},{x:y.left+4,y:y.top+4},{x:y.right-4,y:y.top+4},{x:y.left+4,y:y.bottom-4},{x:y.right-4,y:y.bottom-4}],k=null;for(let x=0;x<b.length;x++){let B=b[x],P=_.elementFromPoint(B.x,B.y);if(x===0&&(k=P),P&&uf(f,P))return{...B,hit:P,ok:!0}}return{...b[0],hit:k,ok:!1}}function fe(f,w,E){let _=Y(f,w),y=ne(_,E);try{let b=Gn(f);if(!b)return{success:!1,method:"react-no-fiber"};let k=En(b),x=k.onClick||k.onClickCapture;return x?(x(fn("click",f,_,y)),{success:!0,method:"react-fiber-onClick"}):{success:!1,method:"react-no-onClick"}}catch{return{success:!1,method:"react-fiber-onClick"}}}function _e(f,w,E){let _=Y(f,w),b=ne(_,E).MouseEvent||MouseEvent;try{let k=Ze(f);if(!k)return{success:!1,method:"vue-none"};let x=bo(k);return x.click?(x.click(new b("click",{bubbles:!0})),{success:!0,method:"vue-handler"}):k.$emit?(k.$emit("click"),{success:!0,method:"vue-emit"}):{success:!1,method:"vue-no-click"}}catch{return{success:!1,method:"vue-handler"}}}function ge(f,w,E){let _=Y(f,w),y=ne(_,E),b=y.MouseEvent||MouseEvent;try{let k=y.ng?.getZone?.()||null;return k?.run?(k.run(()=>f.dispatchEvent(new b("click",{bubbles:!0,cancelable:!0}))),{success:!0,method:"angular-zone-click"}):(f.dispatchEvent(new b("click",{bubbles:!0,cancelable:!0})),f.click?.(),{success:!0,method:"angular-click"})}catch{return{success:!1,method:"angular-click",allowFallback:!0}}}function Le(f,w,E){let _=Y(f,w),b=ne(_,E).MouseEvent||MouseEvent;try{let k=f.getBoundingClientRect(),x={bubbles:!0,cancelable:!0,view:f.ownerDocument?.defaultView||window,clientX:k.left+k.width/2,clientY:k.top+k.height/2};return f.dispatchEvent(new b("mousedown",x)),f.dispatchEvent(new b("mouseup",x)),f.dispatchEvent(new b("click",x)),{success:!0,method:"svelte-click"}}catch{return{success:!1,method:"svelte-click"}}}function Se(f,w,E){let _=Y(f,w),y=ne(_,E);try{return y.jQuery?.(f)?.trigger?.("click"),{success:!0,method:"jquery-trigger"}}catch{return{success:!1,method:"jquery-trigger"}}}async function ut(f,w,E,_,y=500){let b=Math.min(Math.max(0,Number(y)||500),3e4),k=Y(f,w),x=ne(k,E),B=F(f,_);ot(f,k,x);let P=x.PointerEvent||PointerEvent,H=x.MouseEvent||MouseEvent,W=f.getBoundingClientRect(),z=W.left+W.width/2,te=W.top+W.height/2;if(B.fws.has("react")){let le=Gn(f),ie=le?En(le):{};ie.onMouseEnter?.(fn("mouseenter",f,k,x)),ie.onPointerEnter?.(fn("pointerenter",f,k,x))}else if(B.fws.has("vue")){let le=Ze(f),ie=le?bo(le):{};ie.mouseenter?.(new H("mouseenter",{bubbles:!0})),ie.mouseover?.(new H("mouseover",{bubbles:!0}))}let se={bubbles:!0,cancelable:!0,composed:!0,view:x,clientX:z,clientY:te};return[new P("pointerover",se),new P("pointerenter",{...se,bubbles:!1}),new H("mouseover",se),new H("mouseenter",{...se,bubbles:!1})].forEach(le=>f.dispatchEvent(le)),await Rt(b,k),{success:!0,method:"hover-seq"}}async function Re(f,w,E=1){await Promise.resolve();for(let _=0;_<E;_++)f.hidden?await tn():await new Promise(y=>{try{w.requestAnimationFrame(()=>y())}catch{tn().then(y)}})}let Nt=f=>String(f??"").replace(/\s+/g," ").trim();function gt(f){try{if("value"in f)return String(f.value??"")}catch{}return""}function at(f){try{return typeof Ao=="function"?Ao(f):Nt(f.textContent)}catch{return""}}function Lt(f,w){if(!(w.isFrameworkElement||w.delegatedInput))return!1;let E=String(f??"").length;return E>0&&E<=140}async function $n(f,w,E,_,y){let b=F(f,y),k=Y(f,w),x=ne(k,E);if(ot(f,k,x),Bn(f,x)||Kn(f,x)){let P=Lt(String(_??""),b),H=await of(f,k,x,_,{settleFrames:k.hidden?1:2,useKeyFallback:P,keyFallbackMaxLen:140});return{success:H.success,method:H.method,details:H.details,allowFallback:!H.success}}if(f.isContentEditable===!0||b.role==="textbox"&&!("value"in f)){let P=at(f),H=sf(f,_,k,x);await Re(k,x,k.hidden?1:2);let W=at(f),z=!1;if(String(_??"").length>0&&W===P){z=!0;try{ns(f,k,x),ts(f,k,x,!0);try{k.execCommand?.("insertText",!1,String(_??""))}catch{}Ro(f,String(_??""),"insertText")}catch{}await Re(k,x,k.hidden?1:2)}let te=at(f),se=te!==P||!!String(_??"")&&te.includes(String(_??""));return{success:se,method:H.method,details:`${H.details};beforeLen=${P.length};afterLen=${te.length};reverted=${W===P};fallback=${z}`,allowFallback:se?void 0:!0}}return{success:!1,method:"type",details:"target not editable",allowFallback:!0}}async function Mn(f,w,E,_,y){let b=Y(f,w),k=ne(b,E),x=await $n(f,b,k,_,y);if(!x.success)return x;let B=af(f);return{success:!0,method:"type+enter",details:`${x.details};enter=${B.method}`}}async function ln(f,w,E,_){let y=Y(f,w),b=ne(y,E),k=b.Event||Event;if(ot(f,y,b),Bn(f,b)||Kn(f,b)){let B=gt(f),P=cf(f,y,b);if(await Re(y,b,y.hidden?1:2),gt(f)===B&&B.length>0){try{Zs(f,""),Ro(f,"","deleteByCut")}catch{}await Re(y,b,y.hidden?1:2)}let z=gt(f),te=z.length===0||z!==B;return{success:P.success,method:P.method,details:P.details,allowFallback:!P.success}}if(f.isContentEditable===!0||F(f,_).role==="textbox"&&!("value"in f)){let B=lf(f,y,b);return await Re(y,b,y.hidden?1:2),{success:B.success,method:B.method,details:B.details,allowFallback:!B.success}}if("value"in f){try{f.value=""}catch{}return f.dispatchEvent(new k("input",{bubbles:!0,composed:!0})),f.dispatchEvent(new k("change",{bubbles:!0,composed:!0})),{success:!0,method:"clear-generic-value"}}return{success:!1,method:"clear",details:"target not clearable",allowFallback:!0}}function bt(f,w,E){try{let _=Y(f,w),y=ne(_,E),b=y.FocusEvent||FocusEvent;return ot(f,_,y),f.focus?.({preventScroll:!0}),f.dispatchEvent(new b("focus",{bubbles:!0})),f.dispatchEvent(new b("focusin",{bubbles:!0})),{success:!0,method:"focus"}}catch(_){return{success:!1,method:"focus",details:_.message,allowFallback:!0}}}function Qe(f,w,E,_,y){try{let b=Y(f,w),k=ne(b,E),x=k.Event||Event;if(!td(f,k))return{success:!1,method:"select",details:"target not select",allowFallback:!0};ot(f,b,k),f.focus?.({preventScroll:!0});let B=Array.from(f.options).find(z=>z.value===_||z.text.trim()===_.trim());if(!B)return{success:!1,method:"select",details:`Option not found: ${_}`,allowFallback:!0};B.selected=!0;let P=Object.getPrototypeOf(f),H=Object.getOwnPropertyDescriptor(P,"value");if(H?.set?H.set.call(f,B.value):f.value=B.value,f.dispatchEvent(new x("input",{bubbles:!0,composed:!0})),f.dispatchEvent(new x("change",{bubbles:!0,composed:!0})),F(f,y).fws.has("react")){let z=Gn(f);if(z){let te=En(z);if(te.onChange){let se=fn("change",f,b,k);se.target.value=B.value,te.onChange(se)}}}return{success:!0,method:"select"}}catch(b){return{success:!1,method:"select",details:b.message,allowFallback:!0}}}function Zt(f,w,E,_,y){try{let b=Y(f,w),k=ne(b,E),x=k.Event||Event;if(!Bn(f,k))return{success:!1,method:"slider",details:"target not input",allowFallback:!0};ot(f,b,k),f.focus?.({preventScroll:!0});let B=Object.getPrototypeOf(f),P=Object.getOwnPropertyDescriptor(B,"value");if(P?.set?P.set.call(f,String(_)):f.value=String(_),f.dispatchEvent(new x("input",{bubbles:!0,composed:!0})),f.dispatchEvent(new x("change",{bubbles:!0,composed:!0})),F(f,y).fws.has("react")){let W=Gn(f);if(W){let z=En(W);if(z.onChange){let te=fn("change",f,b,k);te.target.value=String(_),z.onChange(te)}}}return{success:!0,method:"slider"}}catch(b){return{success:!1,method:"slider",details:b.message,allowFallback:!0}}}function Ir(f,w,E){try{let _=f.checkValidity?.()??!0;return _||f.reportValidity?.(),{success:_,method:"check-validity",details:_?void 0:f.validationMessage}}catch(_){return{success:!1,method:"check-validity",details:_.message,allowFallback:!0}}}function xr(f,w,E,_,y){try{let b=Y(f,w),k=ne(b,E);if("setSelectionRange"in f){let P=f;P.focus?.();let H=P.value?.length??0;return P.setSelectionRange(_??0,y??H),{success:!0,method:"select-range"}}let x=k.getSelection();if(!x)return{success:!1,method:"select-range",allowFallback:!0};let B=b.createRange();return B.selectNodeContents(f),x.removeAllRanges(),x.addRange(B),{success:!0,method:"select-range-node"}}catch(b){return{success:!1,method:"select-range",details:b.message,allowFallback:!0}}}function Tn(f,w,E,_,y){let b=Co((f&&Y(f))??w),k=f||b,x=Y(k,w),B=ne(x,E),P=k===x.documentElement||k===x.body||k===b;if(_===pt.TOP||_===pt.BOTTOM){let H=k.scrollHeight,W=P?B.innerHeight:k.clientHeight,z=Math.max(0,H-W);return k.scrollTop=_===pt.TOP?0:z,{success:!0,scrollTop:k.scrollTop}}return ka(k,x,B,_,y)}async function ho(f,w,E,_){let y=_.direction,b=_.amount,k=Y(f,w),x=ne(k,E),B=!k.hidden,P=B?"smooth":"auto";try{if(f){let W=jr(f,k,x),z=Tn(W,k,x,y,b);return z?.success?{success:!0,method:"direct-element-scroll",details:JSON.stringify(z)}:{success:!1,method:"direct-element-scroll",details:z?.error||"direct scroll failed",allowFallback:!0}}if(y===pt.TOP||y===pt.BOTTOM){let W=await D(x,{action:"scrollTo",direction:y,options:{behavior:P,isTabActive:B}},{doc:k,timeoutMs:k.hidden?5200:2800});return{success:!0,method:"detector-scrollTo",details:JSON.stringify(W)}}let H=await D(x,{action:"scrollBy",direction:y,options:{amount:b,behavior:P,isTabActive:B}},{doc:k,timeoutMs:k.hidden?5200:2800});return{success:!0,method:"detector-scrollBy",details:JSON.stringify(H)}}catch(H){let W=k?Tn(Co(k),k,x,y,b):void 0;return W?.success?{success:!0,method:"direct-primary-scroll-fallback",details:JSON.stringify(W)}:{success:!1,method:"scroll-page-failed",details:H?.message||W?.error||"scroll_page failed",allowFallback:!0}}}async function Je(f,w,E,_){let y=Y(f,w),b=ne(y,E),k=!y.hidden,x=k?"smooth":"auto",B=_f(_.position),P=as(f,y);if(!P){let H=ml(f,y,b,B);return{success:H.success,method:"direct-scrollElement-no-selector",details:H.error,allowFallback:!H.success}}try{let H=await D(b,{action:"scrollElement",selector:P,position:B,options:{behavior:x,isTabActive:k}},{doc:y,timeoutMs:y.hidden?5600:3e3});return{success:!0,method:"detector-scrollElement",details:JSON.stringify(H)}}catch(H){let W=ml(f,y,b,B);return W.success?{success:!0,method:"direct-scrollElement-fallback",details:JSON.stringify(W)}:{success:!1,method:"scroll-to-element-failed",details:H?.message||W.error||"scroll_to_element failed",allowFallback:!0}}}function Vn(f,w,E,_,y){try{let b=Y(f,w),k=ne(b,E),x=k.WheelEvent||WheelEvent;ot(f,b,k);let B=jr(f,b,k);return B.dispatchEvent(new x("wheel",{bubbles:!0,cancelable:!0,composed:!0,view:k,deltaX:_||0,deltaY:y||0,deltaMode:x.DOM_DELTA_PIXEL})),B.scrollBy({left:_||0,top:y||0,behavior:"auto"}),{success:!0,method:"wheel"}}catch(b){return{success:!1,method:"wheel",details:b.message,allowFallback:!0}}}function jr(f,w,E){let _=Y(f,w),y=ne(_,E),b=_.scrollingElement||_.documentElement||_.body,k=f;for(;k&&k!==_.body&&k!==_.documentElement;){let B=y.getComputedStyle(k).overflowY;if((B==="auto"||B==="scroll"||B==="overlay")&&k.scrollHeight>k.clientHeight+5)return k;k=k.parentElement}return b}async function yt(f,w,E,_,y){try{let b=Y(f,w),k=ne(b,E),x=k.PointerEvent||PointerEvent,B=k.MouseEvent||MouseEvent,P=k.DragEvent||DragEvent,H=k.DataTransfer||DataTransfer;ot(f,b,k);let W=me(f,b,k),z=Et(W.hit,k)?W.hit:f,te=f.getBoundingClientRect(),se=Number.isFinite(Number(_?.distance))?Number(_.distance):160,we=0,le=0;switch(String(_?.direction||"").toUpperCase()){case"UP":le=-se;break;case"DOWN":le=se;break;case"LEFT":we=-se;break;case"RIGHT":we=se;break;default:we=Number(_?.delta_x)||0,le=Number(_?.delta_y)||0}let ie=(ee,de)=>({x:Math.max(2,Math.min(ee,k.innerWidth-3)),y:Math.max(2,Math.min(de,k.innerHeight-3))}),ue=ie(W.x,W.y),Me=ie(W.x+we,W.y+le),je=500+Date.now()%1e4,ke=Math.max(12,Math.min(36,Number(_?.steps)||18)),ve=(ee,de)=>({bubbles:!0,cancelable:!0,composed:!0,view:k,clientX:ee,clientY:de,pageX:ee+(k.scrollX||0),pageY:de+(k.scrollY||0)}),Pe=(ee,de,Ue)=>({...ve(ee,de),pointerId:je,pointerType:"mouse",isPrimary:!0,width:1,height:1,pressure:Ue?.5:0,buttons:Ue,button:0}),Ne=(ee,de,Ue)=>({...ve(ee,de),buttons:Ue,button:0});z.dispatchEvent(new x("pointerdown",Pe(ue.x,ue.y,1))),z.dispatchEvent(new B("mousedown",Ne(ue.x,ue.y,1)));try{z.setPointerCapture?.(je)}catch{}let We=null;try{(f.draggable||F(f,y).sourcesByType.has("dragstart"))&&(We=new H)}catch{We=null}if(We)try{f.dispatchEvent(new P("dragstart",{bubbles:!0,cancelable:!0,clientX:ue.x,clientY:ue.y,dataTransfer:We}))}catch{}let Ke=null;for(let ee=1;ee<=ke;ee++){let de=ue.x+(Me.x-ue.x)*ee/ke,Ue=ue.y+(Me.y-ue.y)*ee/ke,zt=b.elementFromPoint(de,Ue)||f;if(zt.dispatchEvent(new x("pointermove",Pe(de,Ue,1))),zt.dispatchEvent(new B("mousemove",Ne(de,Ue,1))),We)try{Ke&&Ke!==zt&&Ke.dispatchEvent(new P("dragleave",{bubbles:!0,cancelable:!0,clientX:de,clientY:Ue,dataTransfer:We})),zt.dispatchEvent(new P("dragover",{bubbles:!0,cancelable:!0,clientX:de,clientY:Ue,dataTransfer:We})),Ke=zt}catch{}ee%3===0&&await tn()}let ae=b.elementFromPoint(Me.x,Me.y)||f;if(ae.dispatchEvent(new x("pointerup",Pe(Me.x,Me.y,0))),ae.dispatchEvent(new B("mouseup",Ne(Me.x,Me.y,0))),We)try{f.dispatchEvent(new P("dragend",{bubbles:!0,cancelable:!0,clientX:Me.x,clientY:Me.y,dataTransfer:We}))}catch{}return{success:!0,method:"drag",details:`dx=${we};dy=${le};steps=${ke};hitOk=${W.ok}`}}catch(b){return{success:!1,method:"drag",details:b?.message||"drag failed",allowFallback:!0}}}async function un(f,w,E,_){try{let y=Y(w,E),b=ne(y,_),k=b.PointerEvent||PointerEvent,x=b.MouseEvent||MouseEvent,B=b.DragEvent||DragEvent,P=b.DataTransfer||DataTransfer,H=f?.source_element_id??f?.element_id,W=(H?Jn(y,String(H)):null)||w;if(!W)return{success:!1,method:"drag-drop",details:"source missing",allowFallback:!0};let z=null,te=Number(f?.target_x),se=Number(f?.target_y);if(f?.target_element_id){if(z=Jn(y,String(f.target_element_id)),!z)return{success:!1,method:"drag-drop",details:"target missing",allowFallback:!0};let ae=z.getBoundingClientRect();te=ae.left+ae.width/2,se=ae.top+ae.height/2}if((!Number.isFinite(te)||!Number.isFinite(se))&&!z)return{success:!1,method:"drag-drop",details:"missing target coords",allowFallback:!0};ot(W,y,b),z&&ot(z,y,b);let we=(ae,ee)=>({x:Math.max(2,Math.min(ae,b.innerWidth-3)),y:Math.max(2,Math.min(ee,b.innerHeight-3))}),le=W.getBoundingClientRect(),ie=we(le.left+le.width/2,le.top+le.height/2),ue=we(Number(te),Number(se)),Me=600+Date.now()%1e4,je=Math.max(14,Math.min(42,Number(f?.steps)||22)),ke=(ae,ee)=>({bubbles:!0,cancelable:!0,composed:!0,view:b,clientX:ae,clientY:ee,pageX:ae+(b.scrollX||0),pageY:ee+(b.scrollY||0)}),ve=(ae,ee,de)=>({...ke(ae,ee),pointerId:Me,pointerType:"mouse",isPrimary:!0,width:1,height:1,pressure:de?.5:0,buttons:de,button:0}),Pe=(ae,ee,de)=>({...ke(ae,ee),buttons:de,button:0}),Ne=null;try{Ne=new P}catch{Ne=null}W.dispatchEvent(new k("pointerdown",ve(ie.x,ie.y,1))),W.dispatchEvent(new x("mousedown",Pe(ie.x,ie.y,1)));try{W.setPointerCapture?.(Me)}catch{}if(Ne)try{W.dispatchEvent(new B("dragstart",{bubbles:!0,cancelable:!0,clientX:ie.x,clientY:ie.y,dataTransfer:Ne}))}catch{}let We=null;for(let ae=1;ae<=je;ae++){let ee=ie.x+(ue.x-ie.x)*ae/je,de=ie.y+(ue.y-ie.y)*ae/je,Ue=y.elementFromPoint(ee,de)||z||y.body;if(Ue.dispatchEvent(new k("pointermove",ve(ee,de,1))),Ue.dispatchEvent(new x("mousemove",Pe(ee,de,1))),Ne)try{We&&We!==Ue&&We.dispatchEvent(new B("dragleave",{bubbles:!0,cancelable:!0,clientX:ee,clientY:de,dataTransfer:Ne})),Ue.dispatchEvent(new B("dragenter",{bubbles:!0,cancelable:!0,clientX:ee,clientY:de,dataTransfer:Ne})),Ue.dispatchEvent(new B("dragover",{bubbles:!0,cancelable:!0,clientX:ee,clientY:de,dataTransfer:Ne})),We=Ue}catch{}ae%3===0&&await tn()}let Ke=z||y.elementFromPoint(ue.x,ue.y)||y.body;if(Ne)try{Ke.dispatchEvent(new B("drop",{bubbles:!0,cancelable:!0,clientX:ue.x,clientY:ue.y,dataTransfer:Ne}))}catch{}if(Ke.dispatchEvent(new k("pointerup",ve(ue.x,ue.y,0))),Ke.dispatchEvent(new x("mouseup",Pe(ue.x,ue.y,0))),Ne)try{W.dispatchEvent(new B("dragend",{bubbles:!0,cancelable:!0,clientX:ue.x,clientY:ue.y,dataTransfer:Ne}))}catch{}return{success:!0,method:"html5+pointer-dragdrop",details:`steps=${je};source=${String(H)}`}}catch(y){return{success:!1,method:"drag-drop",details:y?.message||"drag-drop failed",allowFallback:!0}}}async function Nn(f,w,E,_){try{let y=Y(f,w),b=ne(y,E),k=b.PointerEvent||PointerEvent,x=b.MouseEvent||MouseEvent;ot(f,y,b);let B=me(f,y,b),P={x:B.x,y:B.y},H=f.getBoundingClientRect(),W=Number.isFinite(Number(_?.distance))?Number(_.distance):Math.min(Math.max(80,Math.min(H.width,H.height)),220),z=String(_?.direction||"RIGHT").toUpperCase(),te=P.x,se=P.y;z==="LEFT"&&(te-=W),z==="RIGHT"&&(te+=W),z==="UP"&&(se-=W),z==="DOWN"&&(se+=W);let we=(ee,de)=>({x:Math.max(2,Math.min(ee,b.innerWidth-3)),y:Math.max(2,Math.min(de,b.innerHeight-3))}),le=we(P.x,P.y),ie=we(te,se),ue=700+Date.now()%1e4,Me=Math.max(10,Math.min(28,Number(_?.steps)||16)),je=(ee,de)=>({bubbles:!0,cancelable:!0,composed:!0,view:b,clientX:ee,clientY:de,pageX:ee+(b.scrollX||0),pageY:de+(b.scrollY||0)}),ke=(ee,de,Ue)=>({...je(ee,de),pointerId:ue,pointerType:"touch",isPrimary:!0,width:1,height:1,pressure:Ue?.5:0,buttons:Ue,button:0}),ve=(ee,de,Ue)=>({...je(ee,de),buttons:Ue,button:0}),Pe=y.elementFromPoint(le.x,le.y)||f;Pe.dispatchEvent(new k("pointerdown",ke(le.x,le.y,1))),Pe.dispatchEvent(new x("mousedown",ve(le.x,le.y,1)));let Ne=b.Touch,We=b.TouchEvent,Ke=!!Ne&&!!We;if(Ke)try{let ee=new Ne({identifier:ue,target:Pe,clientX:le.x,clientY:le.y,pageX:le.x,pageY:le.y,screenX:le.x,screenY:le.y,radiusX:1,radiusY:1,rotationAngle:0,force:1});Pe.dispatchEvent(new We("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[ee],targetTouches:[ee],changedTouches:[ee]}))}catch{}for(let ee=1;ee<=Me;ee++){let de=le.x+(ie.x-le.x)*ee/Me,Ue=le.y+(ie.y-le.y)*ee/Me,zt=y.elementFromPoint(de,Ue)||f;if(zt.dispatchEvent(new k("pointermove",ke(de,Ue,1))),zt.dispatchEvent(new x("mousemove",ve(de,Ue,1))),Ke)try{let Pt=new Ne({identifier:ue,target:zt,clientX:de,clientY:Ue,pageX:de,pageY:Ue,screenX:de,screenY:Ue,radiusX:1,radiusY:1,rotationAngle:0,force:1});zt.dispatchEvent(new We("touchmove",{bubbles:!0,cancelable:!0,composed:!0,touches:[Pt],targetTouches:[Pt],changedTouches:[Pt]}))}catch{}ee%3===0&&await tn()}let ae=y.elementFromPoint(ie.x,ie.y)||f;if(ae.dispatchEvent(new k("pointerup",ke(ie.x,ie.y,0))),ae.dispatchEvent(new x("mouseup",ve(ie.x,ie.y,0))),Ke)try{let ee=new Ne({identifier:ue,target:ae,clientX:ie.x,clientY:ie.y,pageX:ie.x,pageY:ie.y,screenX:ie.x,screenY:ie.y,radiusX:1,radiusY:1,rotationAngle:0,force:0});ae.dispatchEvent(new We("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[ee]}))}catch{}return{success:!0,method:"swipe",details:`dir=${z};dist=${W};steps=${Me};hitOk=${B.ok}`}}catch(y){return{success:!1,method:"swipe",details:y?.message||"swipe failed",allowFallback:!0}}}async function Dt(f,w,E,_){try{let y=f||w.body,b=Y(y,w),k=ne(b,E),x=k.PointerEvent||PointerEvent,B=k.WheelEvent||WheelEvent;ot(y,b,k);let P=Number.isFinite(Number(_?.scale))?Number(_.scale):1.2,H=y.getBoundingClientRect(),W=H.left+H.width/2,z=H.top+H.height/2,te=24,se=Math.max(6,Math.min(200,te*P)),we=Math.max(6,Math.min(18,Number(_?.steps)||10)),le=k.Touch,ie=k.TouchEvent;if(!!le&&!!ie)try{let ke=(Ke,ae)=>new le({identifier:Ke,target:y,clientX:ae,clientY:z,pageX:ae,pageY:z,screenX:ae,screenY:z,radiusX:1,radiusY:1,rotationAngle:0,force:1}),ve=ke(911,W-te),Pe=ke(912,W+te);y.dispatchEvent(new ie("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[ve,Pe],targetTouches:[ve,Pe],changedTouches:[ve,Pe]}));for(let Ke=1;Ke<=we;Ke++){let ae=te+(se-te)*Ke/we,ee=ke(911,W-ae),de=ke(912,W+ae);y.dispatchEvent(new ie("touchmove",{bubbles:!0,cancelable:!0,composed:!0,touches:[ee,de],targetTouches:[ee,de],changedTouches:[ee,de]})),Ke%2===0&&await tn()}let Ne=ke(911,W-se),We=ke(912,W+se);y.dispatchEvent(new ie("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[Ne,We]}))}catch{}try{let ke=(ve,Pe,Ne)=>({bubbles:!0,cancelable:!0,composed:!0,view:k,clientX:Pe,clientY:z,pointerId:ve,pointerType:"touch",isPrimary:ve===821,width:1,height:1,pressure:Ne?.5:0,buttons:Ne,button:0});y.dispatchEvent(new x("pointerdown",ke(821,W-te,1))),y.dispatchEvent(new x("pointerdown",ke(822,W+te,1)));for(let ve=1;ve<=we;ve++){let Pe=te+(se-te)*ve/we;y.dispatchEvent(new x("pointermove",ke(821,W-Pe,1))),y.dispatchEvent(new x("pointermove",ke(822,W+Pe,1))),ve%2===0&&await tn()}y.dispatchEvent(new x("pointerup",ke(821,W-se,0))),y.dispatchEvent(new x("pointerup",ke(822,W+se,0)))}catch{}try{let Me=P>=1?-120:120;y.dispatchEvent(new B("wheel",{bubbles:!0,cancelable:!0,composed:!0,view:k,clientX:W,clientY:z,ctrlKey:!0,deltaY:Me,deltaMode:B.DOM_DELTA_PIXEL}))}catch{}return{success:!0,method:"pinch-zoom",details:`scale=${P};steps=${we}`}}catch(y){return{success:!1,method:"pinch-zoom",details:y?.message||"pinch-zoom failed",allowFallback:!0}}}async function dn(f,w,E,_=800){try{let y=Y(f,w),b=ne(y,E),k=b.PointerEvent||PointerEvent,x=b.MouseEvent||MouseEvent,B=b.FocusEvent||FocusEvent;ot(f,y,b);let P=me(f,y,b),H=f;!P.ok&&Et(P.hit,b)?H=P.hit.closest?.('a,button,input,select,textarea,summary,[role="button"],[role="link"],[onclick]')||P.hit:Et(P.hit,b)&&(H=P.hit);let W=_n(H,y,b),z=P.x,te=P.y,se=1+Date.now()%1e4,we={bubbles:!0,cancelable:!0,composed:!0,view:b,clientX:z,clientY:te,pageX:z+(b.scrollX||0),pageY:te+(b.scrollY||0),screenX:z+(b.screenX||0),screenY:te+(b.screenY||0)},le={...we,pointerId:se,pointerType:"touch",isPrimary:!0,width:1,height:1,pressure:0,buttons:0,button:0};try{H.dispatchEvent(new k("pointerover",le)),H.dispatchEvent(new k("pointerenter",{...le,bubbles:!1}))}catch{}try{H.dispatchEvent(new x("mouseover",we)),H.dispatchEvent(new x("mouseenter",{...we,bubbles:!1}))}catch{}try{H.focus?.({preventScroll:!0}),H.dispatchEvent(new B("focus",{bubbles:!0,composed:!0})),H.dispatchEvent(new B("focusin",{bubbles:!0,composed:!0}))}catch{}try{H.dispatchEvent(new k("pointerdown",{...le,buttons:1,pressure:.5}))}catch{}try{H.dispatchEvent(new x("mousedown",{...we,buttons:1,button:0}))}catch{}try{let ke=b.Touch,ve=b.TouchEvent;if(typeof ke<"u"&&typeof ve<"u"){let Pe=new ke({identifier:se,target:H,clientX:z,clientY:te,pageX:z+(b.scrollX||0),pageY:te+(b.scrollY||0),screenX:z+(b.screenX||0),screenY:te+(b.screenY||0),radiusX:1,radiusY:1,rotationAngle:0,force:1});H.dispatchEvent(new ve("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[Pe],targetTouches:[Pe],changedTouches:[Pe]}))}}catch{}let ie=Number(_),ue=Number.isFinite(ie)&&ie>0?ie:800,Me=y.hidden?Math.max(ue,1200):ue;await Rt(Me,y);try{H.dispatchEvent(new x("contextmenu",{...we,button:2,buttons:2}))}catch{}try{H.dispatchEvent(new k("pointerup",{...le,buttons:0,pressure:0}))}catch{}try{H.dispatchEvent(new x("mouseup",{...we,buttons:0,button:0}))}catch{}try{let ke=b.Touch,ve=b.TouchEvent;if(typeof ke<"u"&&typeof ve<"u"){let Pe=new ke({identifier:se,target:H,clientX:z,clientY:te,pageX:z+(b.scrollX||0),pageY:te+(b.scrollY||0),screenX:z+(b.screenX||0),screenY:te+(b.screenY||0),radiusX:1,radiusY:1,rotationAngle:0,force:0});H.dispatchEvent(new ve("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[Pe]}))}}catch{}let je=await Rr(H,y,b,W);return{success:!0,method:"long-press",details:`holdMs=${Me};verified=${je};hitOk=${P.ok};target=${H.tagName.toLowerCase()}`}}catch(y){return{success:!1,method:"long-press",details:y?.message||"long-press failed",allowFallback:!0}}}function rt(f,w,E,_,y){try{let b=Y(E,_),x=ne(b,y).KeyboardEvent||KeyboardEvent,B=E||b.activeElement||b.body||b.documentElement;B.focus?.();let P={key:f,code:On(f),bubbles:!0,cancelable:!0,ctrlKey:w?.includes("CTRL"),altKey:w?.includes("ALT"),shiftKey:w?.includes("SHIFT"),metaKey:w?.includes("META")},H=B.dispatchEvent(new x("keydown",P)),W=B.dispatchEvent(new x("keypress",P)),z=B.dispatchEvent(new x("keyup",P));if(f==="Enter"&&!!(H&&W&&z)){let se=B.form||B.closest?.("form");se?.requestSubmit?se.requestSubmit():se?.submit?.()}return{success:!0,method:"press-key"}}catch(b){return{success:!1,method:"press-key",details:b.message,allowFallback:!0}}}async function Sr(f,w,E){try{let _=f.innerText||f.value||"";if(!_)return{success:!1,method:"copy",details:"nothing to copy",allowFallback:!0};let y=Y(f,w),b=ne(y,E);if(b.navigator?.clipboard?.writeText)return await b.navigator.clipboard.writeText(_),{success:!0,method:"clipboard-copy"};let k=y.createRange();k.selectNodeContents(f);let x=b.getSelection?.()||(y.defaultView||window).getSelection?.();x?.removeAllRanges(),x?.addRange(k);let B=y.execCommand?.("copy")??!1;return x?.removeAllRanges(),{success:!!B,method:"execCommand-copy",allowFallback:!B}}catch(_){return{success:!1,method:"clipboard-copy",details:_.message,allowFallback:!0}}}async function cr(f,w,E,_){try{f.focus?.();let y=Y(f,w),b=ne(y,E);if(b.navigator?.clipboard?.readText){let x=await b.navigator.clipboard.readText();if(x)return await $n(f,y,b,x,_)}return y.execCommand?.("paste")??!1?{success:!0,method:"execCommand-paste"}:{success:!1,method:"paste",details:"clipboard empty or denied",allowFallback:!0}}catch(y){return{success:!1,method:"paste",details:y.message,allowFallback:!0}}}function zn(f){return`${(f/1024).toFixed(1)}KB`}function Ln(f,w){if(f instanceof w.defaultView.HTMLInputElement){let k=f;if((k.type||"").toLowerCase()==="file")return k}let E=f.closest?.("label"),_=E?.htmlFor||f.htmlFor||"";if(_){let k=w.getElementById(_);if(k&&(k.type||"").toLowerCase()==="file")return k}if(E){let k=E.querySelector?.('input[type="file"]');if(k)return k}let y=f.closest?.("form");if(y){let k=y.querySelector?.('input[type="file"]');if(k)return k}let b=f.closest?.("div,section,main,article")||f.parentElement;if(b){let k=b.querySelector?.('input[type="file"]');if(k)return k}return null}function go(f,w,E){try{let _=E.HTMLInputElement?.prototype,y=_?Object.getOwnPropertyDescriptor(_,"files")?.set:void 0;if(!y){let b=Object.getPrototypeOf(f);for(;b&&!y;)y=Object.getOwnPropertyDescriptor(b,"files")?.set,b=Object.getPrototypeOf(b)}return y?(y.call(f,w),!0):(f.files=w,!0)}catch{try{return f.files=w,!0}catch{return!1}}}async function jn(f,w,E,_,y,b){try{let{file_url:k,element_id:x,file_name:B}=f,P=null;if(y&&(P=Ln(y,w)),!P&&x!==void 0&&(P=w.querySelector(`input[type="file"][${Gt}*="[id=${x}]"]`)),!P){let ae=w.querySelectorAll('input[type="file"]');for(let ee of ae){if(ee.disabled)continue;let de=ee.getBoundingClientRect();if(de.width>0&&de.height>0){P=ee;break}}}if(!P)return{success:!1,method:"upload-file",details:"No file input found",allowFallback:!0};if(P.disabled)return{success:!1,method:"upload-file",details:"File input is disabled",allowFallback:!0};let H=Y(P,w),W=ne(H,E);if(!(_?.kind==="upload_file"&&typeof _.byteLength=="number"&&_.byteLength>=0&&typeof _.mimeType=="string"&&(typeof _.inlineB64=="string"||typeof _.token=="string")))return{success:!1,method:"upload-file",details:"Missing upload payload (need inlineB64 or token)",allowFallback:!0};let te=Number(_.byteLength),se=(_.mimeType||"application/octet-stream").split(";")[0].trim()||"application/octet-stream",we;if(_.inlineB64&&typeof _.inlineB64=="string"){let ae=yf(_.inlineB64);if(ae.byteLength!==te)return{success:!1,method:"upload-file",details:`Inline bytes length mismatch: got=${ae.byteLength} expected=${te}`,allowFallback:!0};we=ae.buffer}else{let ae=String(_.token);we=await m(W,ae,te,9e4)}let le=W.Blob||Blob,ie=new le([we],{type:se}),ue=B||_?.fileName;!ue&&k&&typeof k=="string"&&(ue=fl(k,W)),ue=bf(ue||"upload");let Me=W.File||File,je=new Me([ie],ue,{type:se,lastModified:Date.now()}),ke=W.Event||Event,ve=W.DataTransfer||DataTransfer;if(!ve)return{success:!1,method:"upload-file",details:"DataTransfer unavailable in this context",allowFallback:!0};let Pe=new ve;if(Pe.items.add(je),!go(P,Pe.files,W))return{success:!1,method:"upload-file",details:"Failed to set input.files",allowFallback:!0};P.dispatchEvent(new ke("input",{bubbles:!0,composed:!0,cancelable:!0})),P.dispatchEvent(new ke("change",{bubbles:!0,composed:!0,cancelable:!0}));let We=Gn(P);if(We){let ae=En(We);if(ae.onChange){let ee=fn("change",P,H,W);ee.target.files=Pe.files,ae.onChange(ee)}}let Ke=Ze(P);if(Ke){let ae=bo(Ke);if(ae.change){let ee=new ke("change",{bubbles:!0});ee.target=P,ee.target.files=Pe.files,ae.change(ee)}}try{let ae=W.jQuery||W.$;ae&&typeof ae=="function"&&ae(P).triggerHandler?.("change")}catch{}return P.focus?.({preventScroll:!0}),await Re(H,W,2),{success:!0,method:"upload-file",details:`Uploaded ${ue} (${zn(ie.size)}) [token]`}}catch(k){return{success:!1,method:"upload-file",details:k?.message||"Upload failed",allowFallback:!0}}}async function lr(f,w,E){let _=Array.isArray(f.path)?f.path:[];if(!_.length)return{success:!1,method:"dispatch_pointer_path",details:"Empty path",allowFallback:!0};let y=E.PointerEvent||PointerEvent,b=E.MouseEvent||MouseEvent,k=16;for(let x=0;x<_.length;x++){let B=_[x],P=Number(B.x)||0,H=Number(B.y)||0,W=Number(B.pressure)||(x===0||x===_.length-1?0:.5),z=w.elementFromPoint(P,H)||w.documentElement,te={bubbles:!0,cancelable:!0,clientX:P,clientY:H,screenX:P,screenY:H,view:E};if(x===0?(z.dispatchEvent(new y("pointerdown",{...te,pressure:W,pointerId:1,pointerType:"mouse"})),z.dispatchEvent(new b("mousedown",{...te,button:0,buttons:1}))):(z.dispatchEvent(new y("pointermove",{...te,pressure:W,pointerId:1,pointerType:"mouse"})),z.dispatchEvent(new b("mousemove",{...te,button:0,buttons:1}))),x===_.length-1&&(z.dispatchEvent(new y("pointerup",{...te,pressure:0,pointerId:1,pointerType:"mouse"})),z.dispatchEvent(new b("mouseup",{...te,button:0,buttons:0}))),x<_.length-1){let se=Number(B.timestamp)||0,we=Number(_[x+1].timestamp)||0,le=se&&we?Math.max(0,Math.min(we-se,1e3)):k;le>0&&await Rt(le,w)}}return{success:!0,method:"dispatch_pointer_path",details:`Dispatched ${_.length} point(s)`}}function ur(f,w,E){let _=Y(f,w),y=ne(_,E),b=y.MouseEvent||MouseEvent;ot(f,_,y),Q(f,_,y),Q(f,_,y);let k=f.getBoundingClientRect();return f.dispatchEvent(new b("dblclick",{bubbles:!0,cancelable:!0,clientX:k.left+k.width/2,clientY:k.top+k.height/2,detail:2,view:y})),{success:!0,method:"dblclick"}}function kn(f,w,E){let _=Y(f,w),y=ne(_,E),b=y.PointerEvent||PointerEvent,k=y.MouseEvent||MouseEvent;ot(f,_,y);let x=f.getBoundingClientRect(),B=x.left+x.width/2,P=x.top+x.height/2,H={bubbles:!0,cancelable:!0,composed:!0,view:y,clientX:B,clientY:P,button:2,buttons:2};return f.dispatchEvent(new b("pointerdown",H)),f.dispatchEvent(new k("mousedown",H)),f.dispatchEvent(new b("pointerup",{...H,buttons:0})),f.dispatchEvent(new k("mouseup",{...H,buttons:0})),f.dispatchEvent(new k("contextmenu",H)),{success:!0,method:"contextmenu"}}function _n(f,w,E){let _=Y(f,w),y=ne(_,E),b=f,k=f.getBoundingClientRect();return{href:String(y.location.href),hash:String(y.location.hash),ariaExpanded:f.getAttribute("aria-expanded"),ariaPressed:f.getAttribute("aria-pressed"),ariaDisabled:f.getAttribute("aria-disabled"),disabled:!!b.disabled,open:typeof b.open<"u"?b.open:void 0,checked:typeof b.checked<"u"?b.checked:void 0,value:typeof b.value<"u"?b.value:void 0,active:ba(_),rect:{w:k.width,h:k.height}}}function Ee(f,w){let E=Math.abs(f.rect.w-w.rect.w)>2||Math.abs(f.rect.h-w.rect.h)>2;return f.href!==w.href||f.hash!==w.hash||f.ariaExpanded!==w.ariaExpanded||f.ariaPressed!==w.ariaPressed||f.ariaDisabled!==w.ariaDisabled||f.disabled!==w.disabled||f.open!==w.open||f.checked!==w.checked||f.value!==w.value||f.active!==w.active||E}async function Rr(f,w,E,_){await Promise.resolve();let y=Y(f,w),b=ne(y,E);w.hidden||await tn();let k=_n(f,y,b);return Ee(_,k)}function Dn(f,w,E){f.focus?.({preventScroll:!0});let _=Y(f,w),y=ne(_,E),x=f.getAttribute("role")==="button"||rd(f,y)||f.tagName.toLowerCase()==="button"?[" ","Enter"]:["Enter"],B=y.KeyboardEvent||KeyboardEvent;for(let P of x){let H={key:P,code:P===" "?"Space":"Enter",bubbles:!0,cancelable:!0,composed:!0};f.dispatchEvent(new B("keydown",H)),f.dispatchEvent(new B("keypress",H)),f.dispatchEvent(new B("keyup",H))}return{success:!0,method:"keyboard-activate"}}async function Ot(f,w,E,..._){let y=null;for(let b of _){let k=Y(f,w),x=ne(k,E),B=_n(f,k,x),P=b();if(!P||!P.success)continue;if(await Rr(f,k,x,B))return{...P,details:(P.details?P.details+";":"")+"verified=true"};y=P}return y?{...y,details:(y.details?y.details+";":"")+"verified=false"}:{success:!1,method:"all-strategies-unverified",details:"no verified effect",allowFallback:!0}}function en(...f){for(let w of f)try{let E=w();if(E&&E.success)return E}catch{}return{success:!1,method:"all-strategies-failed",allowFallback:!0}}function ot(f,w,E){let _=Y(f,w),y=ne(_,E),b=f.getBoundingClientRect();b.top>=0&&b.left>=0&&b.bottom<=y.innerHeight&&b.right<=y.innerWidth||(f.scrollIntoView({behavior:"auto",block:"center",inline:"center"}),f.offsetHeight)}function Go(f,w,E,_){let y=Y(f,w),k=ne(y,E).KeyboardEvent||KeyboardEvent;for(let x of _){let B=String(x??""),P="";/^[a-z]$/i.test(B)?P=`Key${B.toUpperCase()}`:/^[0-9]$/.test(B)?P=`Digit${B}`:B===" "&&(P="Space");let H=B.length===1?B.charCodeAt(0):0,W={key:B,code:P,bubbles:!0,cancelable:!0,composed:!0,keyCode:H,which:H};f.dispatchEvent(new k("keydown",W)),f.dispatchEvent(new k("keypress",W)),f.dispatchEvent(new k("keyup",W))}}function qi(f,w,E){let _=Y(f,w),b=ne(_,E).KeyboardEvent||KeyboardEvent,k={key:"Enter",code:"Enter",keyCode:13,which:13,bubbles:!0,cancelable:!0,composed:!0},x=f.dispatchEvent(new b("keydown",k)),B=f.dispatchEvent(new b("keypress",k)),P=f.dispatchEvent(new b("keyup",k));if(!!(x&&B&&P)){let W=f.form||f.closest?.("form");W?.requestSubmit?.()??W?.submit?.()}}function On(f){return{Enter:"Enter",Tab:"Tab",Escape:"Escape",Space:"Space"," ":"Space",ArrowUp:"ArrowUp",ArrowDown:"ArrowDown",ArrowLeft:"ArrowLeft",ArrowRight:"ArrowRight",Backspace:"Backspace",Delete:"Delete",Home:"Home",End:"End",PageUp:"PageUp",PageDown:"PageDown",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F11",F12:"F12"}[f]||`Key${f.toUpperCase()}`}let Ar=new MessageChannel,Pn=[];Ar.port1.onmessage=()=>{let f=Pn.shift();f&&f()};function tn(){return new Promise(f=>{Pn.push(f),Ar.port2.postMessage(0)})}function Gn(f){let w=_=>{if(!_)return null;let y=Object.keys(_);for(let b of y)if(b.startsWith("__reactFiber")||b.startsWith("__reactInternalInstance")||b.includes("reactFiber")||b.includes("reactProps")||b.includes("reactEventHandlers")||/^__r\d+/.test(b))return _[b];return null},E=f;for(let _=0;_<4&&E;_++){let y=w(E);if(y)return y;E=E.parentElement}return null}function En(f){let w={},E=f,_=0;for(;E&&_++<10;){let y=[E.memoizedProps,E.pendingProps,E.stateNode?.props,E._memoizedProps,E._pendingProps,E.alternate?.memoizedProps].filter(Boolean);for(let b of y)if(!(!b||typeof b!="object"))for(let k in b)k.startsWith("on")&&typeof b[k]=="function"&&(w[k]=b[k]);if(Object.keys(w).length)break;E=E.return||E.alternate}return w}function Gr(f,w){let E=f;for(;E;){if(E._reactRootContainer||E.__reactContainer||E.hasAttribute("data-reactroot")||E.hasAttribute("data-react-root")||["root","app","__next"].includes(E.id))return E;E=E.parentElement}return Y(f,w).querySelector("#root,#app,#__next,[data-reactroot],[data-react-root]")}function fn(f,w,E,_){let y=Y(w,E),b=ne(y,_),k=b.MouseEvent||MouseEvent,x=w.getBoundingClientRect(),B=new k(f,{bubbles:!0,cancelable:!0,view:b,clientX:x.left+x.width/2,clientY:x.top+x.height/2});return{type:f,target:w,currentTarget:w,bubbles:!0,cancelable:!0,nativeEvent:B,isTrusted:!0,preventDefault(){B.preventDefault()},stopPropagation(){B.stopPropagation()}}}function Ze(f){let w=f;if(w.__vue__)return w.__vue__;if(w.__vueParentComponent)return w.__vueParentComponent;if(w._vnode)return w._vnode;let E=f.parentElement;for(let _=0;_<3&&E;_++){let y=E;if(y.__vue__||y.__vueParentComponent||y._vnode)return y.__vue__||y.__vueParentComponent||y._vnode;E=E.parentElement}return null}function bo(f){let w={};if(f?.$listeners&&Object.assign(w,f.$listeners),f?._events)for(let E in f._events){let _=f._events[E];w[E]=Array.isArray(_)?_[0]:_}if(f?.props)for(let E in f.props)E.startsWith("on")&&typeof f.props[E]=="function"&&(w[E.substring(2).toLowerCase()]=f.props[E]);if(f?.vnode?.props)for(let E in f.vnode.props)E.startsWith("on")&&typeof f.vnode.props[E]=="function"&&(w[E.substring(2).toLowerCase()]=f.vnode.props[E]);return w}})();function If(){let e=window,t=e.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__";e[t]?.actions?.execute}async function xf(e){let t=window,n=t.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",o=t[n]?.actions?.execute;if(typeof o!="function")throw new Error("Rover main-world action executor not initialized");return o(e)}function ei(e,t,n={}){let{rootNodes:r,semanticNodes:o}=rl(e,{includeFrameContents:n.includeFrames??!0,clearIframes:n.includeFrames??!0,frameContextLabel:n.frameContextLabel??null,signalProvider:t.signalProvider,disableDomAnnotations:n.disableDomAnnotations??!0}),s={};for(let i of Object.keys(o)){let a=Number(i);if(!Number.isFinite(a))continue;let c=Ks(a);c&&(s[a]=t.getFrameworkMetadata(c))}return{rootNodes:r,semanticNodes:o,elementMeta:s}}(()=>{let e="__rtrvr_scroll_detector",t="__RTRVR_SCROLL_API__",n="__RTRVR_INTERNAL__";if(window[e])return;class r{doc;win;viewport;lastDetectedPrimary=null;detectionCache=new Map;lastDetectionTime=0;CACHE_TTL=5e3;constructor(d=document,p=window){this.doc=d,this.win=p,this.viewport={width:p.innerWidth,height:p.innerHeight},this.updateViewport()}getValidPrimary(){return this.lastDetectedPrimary&&!this.doc.contains(this.lastDetectedPrimary)&&(this.lastDetectedPrimary=null),this.lastDetectedPrimary}async handleCommand(d){switch(d.action){case"detectPrimary":{let p=this.detectPrimaryScrollable();if(!p)return null;let{target:v,isRoot:m}=this.getScrollContext(p.element),g=v.scrollHeight,T=pr(),D=m&&T?T.innerHeight:v.clientHeight,N=Math.max(0,g-D),A=v.scrollTop;return{selector:p.selector,score:p.score,type:p.type,metrics:{scrollTop:A,scrollHeight:g,clientHeight:D,isAtTop:A<=5,isAtBottom:A>=N-5}}}case"scrollTo":if(!d.direction)throw new Error("scrollTo requires direction");return this.scrollToDirection(d.direction,d.options);case"scrollBy":if(!d.direction)throw new Error("scrollBy requires direction");return this.scrollByAmount(d.direction,d.options);case"scrollElement":if(!d.selector)throw new Error("scrollElement requires selector");return this.scrollElementIntoView(d.selector,d.position,d.options);case"getMetrics":return this.getScrollMetrics();default:throw new Error(`Unknown command: ${d.action}`)}}updateViewport(){this.viewport={width:this.win.innerWidth,height:this.win.innerHeight}}async execute(d){return this.handleCommand(d)}detectPrimaryScrollable(){if(Date.now()-this.lastDetectionTime<this.CACHE_TTL&&this.detectionCache.size>0){let m=Array.from(this.detectionCache.values()).sort((g,T)=>T.score-g.score)[0];if(m)return this.lastDetectedPrimary=m.element,m}this.updateViewport();let d=this.collectScrollableCandidates();if(d.length===0){let m=this.doc.scrollingElement||this.doc.documentElement||this.doc.body;if(!m)return null;let g=this.buildFeatures(m),T=Y(m,this.doc),D={element:m,selector:as(m,T),score:.5,features:g,type:"document"};return this.detectionCache.clear(),this.detectionCache.set(D.selector,D),this.lastDetectionTime=Date.now(),this.lastDetectedPrimary=m,D}let p=this.scoreCandidates(d);if(p.length===0)return null;this.detectionCache.clear();for(let m of p)this.detectionCache.set(m.selector,m);this.lastDetectionTime=Date.now();let v=p[0];return v&&(this.lastDetectedPrimary=v.element),v||null}collectAllElementsDeep(d,p=15e4){let v=[],m=[],g=d.body||d.documentElement;g&&m.push(g);let T=0,D=N=>{try{let A=this.win.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",F=this.win[A]?.shadow?.getRoot;if(typeof F=="function"){let $=F(N);if($)return $}}catch{}try{return N.shadowRoot||null}catch{return null}};for(;m.length&&!(++T>p);){let N=m.pop();if(xn(N)){let F=N.children;for(let $=F.length-1;$>=0;$--)m.push(F[$]);continue}let A=N,S=be(A);Et(A,S)&&v.push(A);try{let F=D(A);F&&m.push(F)}catch{}for(let F=A.lastElementChild;F;F=F.previousElementSibling)m.push(F)}return v}collectScrollableCandidates(){let d=[],p=new WeakSet,v=[this.doc.scrollingElement,this.doc.documentElement,this.doc.body];for(let g of v){if(!g||p.has(g))continue;let T=this.isScrollable(g);(T.vertical||T.horizontal)&&(d.push(g),p.add(g))}let m=this.collectAllElementsDeep(this.doc);for(let g of Array.from(m)){if(p.has(g))continue;let T=g.getBoundingClientRect(),D=this.win.getComputedStyle(g);if(!this.isElementRendered(g,T,D)||!this.isScrollable(g).vertical)continue;let A=40,S=this.viewport.width*.15;if(T.height<A||T.width<S){let F=(g.className||"").toLowerCase().includes("scroll"),$=D.overflowY==="auto"||D.overflowY==="scroll"||D.overflow==="auto"||D.overflow==="scroll";if(!F&&!$)continue}d.push(g),p.add(g)}return d}isElementRendered(d,p,v){if(v.display==="none"||v.visibility==="hidden")return!1;let m=parseFloat(v.opacity||"1");return!(!Number.isNaN(m)&&m<.01||p.width<=1||p.height<=1)}isScrollable(d){let p=this.win.getComputedStyle(d),v=p.overflowY,m=p.overflowX,g=this.doc.scrollingElement,T=d===this.doc.documentElement||d===this.doc.body||!!g&&d===g,D=d.scrollHeight,N=d.clientHeight,A=d.scrollWidth,S=d.clientWidth;if(T){let ge=this.doc.documentElement,Le=this.doc.body;D=Math.max(ge?ge.scrollHeight:0,Le?Le.scrollHeight:0),N=this.win.innerHeight}let F=D-N>8,$=A-S>8,Q=v==="auto"||v==="scroll"||v==="overlay",oe=m==="auto"||m==="scroll"||m==="overlay";return{vertical:T?F:F&&Q,horizontal:T?$:$&&oe,byOverflow:Q||oe}}calculateVisibleIntersection(d){let p=Math.max(0,d.left),v=Math.max(0,d.top),m=Math.min(this.viewport.width,d.right),g=Math.min(this.viewport.height,d.bottom),T=Math.max(0,m-p),D=Math.max(0,g-v);return{width:T,height:D,area:T*D}}analyzeTextContent(d,p=2e3){let v=0,m=0,g=d.ownerDocument||this.doc,D=(g.defaultView||this.win).NodeFilter||NodeFilter,N=g.createTreeWalker(d,D.SHOW_ELEMENT|D.SHOW_TEXT,null),A=0,S=N.currentNode,F=[];for(;S&&A<p;){if(S.nodeType===Node.TEXT_NODE){let fe=(S.textContent||"").replace(/\s+/g,"").length;if(fe>0){v+=fe;let _e=S.parentElement;_e&&_e.closest("a")&&(m+=fe)}}else S.nodeType===Node.ELEMENT_NODE&&F.push(S);A++,S=N.nextNode()}let $=F.length||1,Q=v/$,oe=v>0?m/v:0;return{textChars:v,linkChars:m,textDensity:Q,linkDensity:oe}}calculateRepetitionScore(d){let p=Array.from(d.children);if(p.length<3)return 0;let v=p.slice(0,50),m=new Map,g=new Map,T=new Map;for(let me of v){let fe=be(me);if(!Et(me,fe))continue;let _e=me.getBoundingClientRect();if(_e.height<5||_e.width<this.viewport.width*.1)continue;let ge=Math.round(_e.height/10)*10,Le=Math.round(_e.width/10)*10;m.set(ge,(m.get(ge)||0)+1),g.set(Le,(g.get(Le)||0)+1);let Se=(me.className||me.tagName).toString();T.set(Se,(T.get(Se)||0)+1)}let D=v.length||1,N=Math.max(0,...m.values()),A=Math.max(0,...g.values()),S=Math.max(0,...T.values()),F=N/D,$=A/D,Q=S/D,oe=.4*F+.3*$+.3*Q;return Math.min(1,Math.max(0,oe))}calculateSemanticScore(d){let p=0,v=null,m=!1,g=(d.getAttribute("role")||"").toLowerCase(),T=d.tagName.toLowerCase(),D=(d.id||"").toLowerCase(),N=(d.className||"").toLowerCase(),A=`${g} ${T} ${D} ${N}`;return(T==="main"||g==="main")&&(p+=1.2,v="article"),T==="article"&&(p+=1,v=v||"article"),(g==="feed"||A.includes("feed"))&&(p+=1,v="feed"),(g==="log"||A.includes("chat")||A.includes("messages"))&&(p+=1,v="chat"),A.includes("content")&&(p+=.5),(A.includes("results")||A.includes("list"))&&(p+=.4),(A.includes("job")||A.includes("jobs"))&&(p+=.4),(T==="nav"||g==="navigation"||A.includes("sidebar"))&&(p-=1,m=!0),(T==="aside"||g==="complementary")&&(p-=.7,m=!0),(T==="footer"||g==="contentinfo"||A.includes("footer"))&&(p-=.8,m=!0),A.includes("header")&&(p-=.6),p=Math.max(-1,Math.min(1,p)),{semanticScore:p,typeHint:v,navLike:m}}detectScrollListeners(d){return[d.querySelector('[class*="infinite"]'),d.querySelector('[class*="load-more"]'),d.querySelector("[data-infinite]"),d.querySelector('[loading="lazy"]'),d.querySelector(".observer-target"),d.querySelector("[data-scroll]")].some(v=>v!==null)}buildFeatures(d){let p=d.getBoundingClientRect(),v=this.win.getComputedStyle(d),m=this.calculateVisibleIntersection(p),g=this.viewport.width*this.viewport.height||1,T=m.area/g,D=this.viewport.width>0?m.width/this.viewport.width:0,N=p.top+p.height/2,A=this.viewport.height/2||1,S=Math.min(1,Math.abs(N-A)/A),F=this.isScrollable(d),$=this.doc.scrollingElement,Q=d===this.doc.documentElement||d===this.doc.body||!!$&&d===$,oe=d.scrollHeight,me=d.clientHeight;if(Q){let at=this.doc.documentElement,Lt=this.doc.body;oe=Math.max(at?at.scrollHeight:0,Lt?Lt.scrollHeight:0),me=this.win.innerHeight}let fe=Math.max(0,oe-me),_e=fe*m.width,ge=this.analyzeTextContent(d),Le=this.calculateRepetitionScore(d),Se=this.calculateSemanticScore(d),ut=d.contains(this.doc.activeElement),Re=this.detectScrollListeners(d),Nt=parseInt(v.zIndex||"0",10),gt=Number.isFinite(Nt)?Nt:0;return{geometry:{viewportCoverage:T,widthProminence:D,centerDistance:S,scrollCapacity:fe,scrollSurface:_e,zIndex:gt},content:{textDensity:ge.textDensity,linkDensity:ge.linkDensity,repetitionScore:Le,semanticScore:Se.semanticScore},interaction:{hasScrollListeners:Re,hasFocus:ut,recentActivity:ut?1:0}}}inferElementType(d,p,v,m){if(v)return v;let g=(d.getAttribute("role")||"").toLowerCase(),T=(d.className||"").toLowerCase(),D=d.tagName.toLowerCase(),N=p.geometry,A=p.content;if(g==="log"||T.includes("chat")||T.includes("messages"))return"chat";let S=this.win.getComputedStyle(d);if((S.position==="fixed"||S.position==="absolute")&&N.zIndex>100&&N.viewportCoverage>.2&&N.centerDistance<.4)return"modal";if(g==="feed"||A.repetitionScore>.3&&N.scrollCapacity>400&&N.widthProminence>=.25)return"feed";if(D==="article"||A.textDensity>40&&A.linkDensity<.4&&N.widthProminence>.4)return"article";if(m||N.widthProminence<.3&&A.linkDensity>.3)return"sidebar";let $=this.doc.scrollingElement;return d===this.doc.documentElement||d===this.doc.body||$&&d===$?"document":"unknown"}scoreCandidates(d){let p=[],v=[],m=[],g=[],T=[],D=[];for(let Q of d){let oe=this.buildFeatures(Q),me=oe.content.semanticScore,fe=this.calculateSemanticScore(Q),_e=this.inferElementType(Q,oe,fe.typeHint,fe.navLike);D.push({element:Q,features:{geometry:{...oe.geometry},content:{...oe.content,semanticScore:fe.semanticScore},interaction:oe.interaction},type:_e,navLike:fe.navLike,semanticScore:fe.semanticScore}),v.push(oe.geometry.scrollSurface),m.push(oe.content.textDensity),g.push(Math.abs(fe.semanticScore)),T.push(oe.content.repetitionScore)}let N=Math.max(0,...v),A=Math.max(0,...m),S=Math.max(0,...g),F=Math.max(0,...T),$=-1/0;for(let Q of D){let{element:oe,features:me,type:fe,navLike:_e,semanticScore:ge}=Q,Le=me.geometry,Se=me.content,ut=me.interaction,Re=N>0?Le.scrollSurface/N:0,Nt=A>0?Se.textDensity/A:0,gt=S>0?(ge/S+1)/2:.5,at=fe==="feed"||Se.repetitionScore>.3&&Le.scrollCapacity>400,Lt=Se.linkDensity>.5?(Se.linkDensity-.5)/.5:0,$n=at?0:Lt,Mn=(at?1:.5)*Se.repetitionScore*Math.min(1,Le.scrollCapacity/4e3),bt={feed:.2,chat:.2,article:.08,modal:.08,document:.05,sidebar:-.12,unknown:0}[fe]||0,Qe=0;Qe+=Le.viewportCoverage*.18,Qe+=Le.widthProminence*.15,Qe+=(1-Le.centerDistance)*.07,Qe+=Re*.22,Qe+=Mn*.18,Qe+=Nt*.08,Qe+=(F>0?Se.repetitionScore/F:0)*.05,Qe+=gt*.07,Qe-=$n*.05,ut.hasFocus&&(Qe+=.05),ut.hasScrollListeners&&(Qe+=.05),Qe+=bt,_e&&(Qe-=.05);let Zt=Math.max(0,Math.min(1,Qe));Zt>$&&($=Zt),p.push({element:oe,selector:as(oe,Y(oe)),score:Zt,features:me,type:fe})}if(p.sort((Q,oe)=>oe.score-Q.score),p.length>=2){let Q=p[0],oe=p[1];Math.abs(Q.score-oe.score)<.08&&Q.type==="article"&&oe.type==="feed"&&(p[0]=oe,p[1]=Q)}return p}getScrollContext(d){let p=document.scrollingElement;return d===document.documentElement||d===document.body||!!p&&d===p?{target:p||document.documentElement||document.body,isRoot:!0}:{target:d,isRoot:!1}}async scrollToDirection(d,p){let v=this.getValidPrimary()||this.detectPrimaryScrollable()?.element;if(!v)return{success:!1,error:"No scrollable element found"};let{target:m,isRoot:g}=this.getScrollContext(v),T=Y(m),D=ne(T),N=p?.isTabActive??!T.hidden,A=p?.behavior,S=N&&A==="smooth",F=g?Math.max(T.documentElement?T.documentElement.scrollHeight:0,T.body?T.body.scrollHeight:0):m.scrollHeight,$=g?D.innerHeight:m.clientHeight,Q=Math.max(0,F-$),oe=()=>g?D.scrollY:m.scrollTop,me=fe=>{if(S)try{g?D.scrollTo({top:fe,behavior:"smooth"}):m.scrollTo({top:fe,behavior:"smooth"})}catch{g?(T.scrollingElement||T.documentElement||T.body).scrollTop=fe:m.scrollTop=fe}else if(g){let _e=T.scrollingElement||T.documentElement||T.body;_e.scrollTop=fe}else m.scrollTop=fe};switch(d){case pt.TOP:return me(0),{success:!0,scrollTop:0,isAtTop:!0};case pt.BOTTOM:return me(Q),{success:!0,scrollTop:Q,isAtBottom:!0};default:return{success:!1,error:`Unknown direction: ${d}`}}}async scrollByAmount(d,p){let v=this.getValidPrimary()||this.detectPrimaryScrollable()?.element;if(!v)return{success:!1,error:"No scrollable element found"};let{target:m,isRoot:g}=this.getScrollContext(v),T=p?.isTabActive??!document.hidden,D=p?.behavior,N=T&&D==="smooth",A=pr(),S=g&&A?A.innerHeight:m.clientHeight,F=g&&A?A.innerWidth:m.clientWidth,$=p?.amount??S*.8,Q=g?Math.max(document.documentElement?document.documentElement.scrollHeight:0,document.body?document.body.scrollHeight:0):m.scrollHeight,oe=g&&A?A.innerHeight:m.clientHeight,me=Math.max(0,Q-oe),fe=ge=>{if(N)try{g?A?.scrollTo({top:ge,behavior:"smooth"}):m.scrollTo({top:ge,behavior:"smooth"})}catch{let Le=document.scrollingElement||document.documentElement||document.body;Le.scrollTop=ge}else{let Le=g?document.scrollingElement||document.documentElement||document.body:m;Le.scrollTop=ge}},_e=ge=>{if(N)try{m.scrollBy({left:ge,behavior:"smooth"})}catch{m.scrollLeft+=ge}else m.scrollLeft+=ge};switch(d){case pt.DOWN:{let Le=(g&&A?A.scrollY:m.scrollTop)+$;fe(Le);let Se=g&&A?A.scrollY:m.scrollTop;return{success:!0,scrollTop:Se,isAtTop:Se<=5,isAtBottom:Se>=me-5}}case pt.UP:{let ge=g&&A?A.scrollY:m.scrollTop,Le=Math.max(0,ge-$);fe(Le);let Se=g&&A?A.scrollY:m.scrollTop;return{success:!0,scrollTop:Se,isAtTop:Se<=5,isAtBottom:Se>=me-5}}case pt.LEFT:{let ge=-(p?.amount??F*.8);return _e(ge),{success:!0,scrollLeft:m.scrollLeft}}case pt.RIGHT:{let ge=p?.amount??F*.8;return _e(ge),{success:!0,scrollLeft:m.scrollLeft}}default:return{success:!1,error:`Unknown direction: ${d}`}}}normalizeScrollPosition(d){switch(d){case Wt.START:return"start";case Wt.END:return"end";case Wt.NEAREST:return"nearest";case Wt.CENTER:default:return"center"}}getScrollContainerForElement(d){let p=document.scrollingElement,v=d;for(;v&&v!==document.body&&v!==document.documentElement;){let T=getComputedStyle(v).overflowY,D=T==="auto"||T==="scroll"||T==="overlay",N=v.scrollHeight-v.clientHeight>8;if(D&&N)return{container:v,isRoot:!1};v=v.parentElement}return{container:p||document.documentElement||document.body,isRoot:!0}}scrollElementIntoView(d,p,v){let m=document.querySelector(d);if(!m)return{success:!1,error:`Element not found for selector: ${d}`};let{container:g,isRoot:T}=this.getScrollContainerForElement(m),D=be(g),N=D?.DOMRect||DOMRect,A=T?new N(0,0,D.innerWidth??0,D.innerHeight??0):g.getBoundingClientRect(),S=m.getBoundingClientRect(),F=24,$=S.top>=A.top+F&&S.bottom<=A.bottom-F,Q=v?.isTabActive??!document.hidden,oe=v?.behavior,me=Q&&oe==="smooth",fe=this.normalizeScrollPosition(p);if(p===Wt.NEAREST&&$)return{success:!0,alreadyVisible:!0,...this.getScrollMetricsForContainer(g,T)};try{m.scrollIntoView({behavior:me?"smooth":"auto",block:fe,inline:"nearest"})}catch{m.scrollIntoView()}let _e=this.getScrollMetricsForContainer(g,T);return{success:!0,position:fe,..._e}}getScrollMetricsForContainer(d,p){let v=p?Math.max(document.documentElement?document.documentElement.scrollHeight:0,document.body?document.body.scrollHeight:0):d.scrollHeight,m=Y(d),g=be(d),T=p&&g?g.innerHeight:d.clientHeight,D=Math.max(0,v-T),A=(p?m.scrollingElement||m.documentElement||m.body:d).scrollTop;return{scrollTop:A,scrollHeight:v,clientHeight:T,maxScroll:D,isAtTop:A<=5,isAtBottom:A>=D-5,scrollPercentage:D>0?A/D*100:0}}getScrollMetrics(){let d=this.getValidPrimary()||this.detectPrimaryScrollable()?.element;if(!d)return null;let{target:p,isRoot:v}=this.getScrollContext(d),m=Y(p),g=ne(m),T=v?Math.max(m.documentElement?m.documentElement.scrollHeight:0,m.body?m.body.scrollHeight:0):p.scrollHeight,D=v?g.innerHeight:p.clientHeight,N=Math.max(0,T-D),S=(v?m.scrollingElement||m.documentElement||m.body:p).scrollTop;return{element:as(p,m),scrollTop:S,scrollHeight:T,clientHeight:D,maxScroll:N,isAtTop:S<=5,isAtBottom:S>=N-5,scrollPercentage:N>0?S/N*100:0}}}let o=new r;window[e]=o;let s={execute:l=>o.execute(l)};try{Object.defineProperty(window,t,{value:s,writable:!1,configurable:!1,enumerable:!1})}catch{try{window[t]=s}catch{}}let i=window.__RTRVR_INTERNAL_KEY__||n,a=window[i],c=a&&typeof a=="object"?a:null;if(c){try{c.scroll=c.scroll||s}catch{}try{c.scroll||Object.defineProperty(c,"scroll",{value:s,writable:!1,configurable:!1,enumerable:!1})}catch{}}if(i!==n)try{!window[n]&&c&&Object.defineProperty(window,n,{value:c,writable:!1,configurable:!1,enumerable:!1})}catch{}})();var ob=/\[id=(\d+)\]/,xt;(function(e){e.HTML="html",e.PDF="pdf",e.GOOGLE_DOC="google_doc",e.GOOGLE_SHEET="google_sheet",e.PLAIN_TEXT="plain_text"})(xt||(xt={}));var sb=20,cs=new Map;function ib(e,t){if(cs.size>=sb&&!cs.has(e)){let n=cs.keys().next().value;n!==void 0&&cs.delete(n)}cs.set(e,t)}var ab=24,cb=220,lb=0,ub=250,db=2,fb=300,pb=new Set(["BODY","DIV","SPAN","IMG","PICTURE","SVG"]),mb=new Set(["A","BUTTON","INPUT","SELECT","TEXTAREA","H1","H2","H3","H4","H5","H6","MAIN","NAV","HEADER","FOOTER","ARTICLE","SECTION","ASIDE"]);function hb(e){let t={};for(let n of Object.keys(e)){let r=e[Number(n)],o=r?.preservedAttributes?.[hn["rtrvr-label"]],s=r?.resourceLocator;if(typeof o=="string"&&typeof s=="string"){let i=o.match(ob);if(i?.[1]){let a=Number(i[1]);Number.isFinite(a)&&(t[a]=s)}}}return t}async function Df(e,t,n={}){let r=e.ownerDocument||document,o=n.pageConfig||rs,s=String(r.contentType||"").trim().toLowerCase(),i=Tb(s,r),a=vb(i.documentType,s),c={url:r.URL,title:r.title,contentType:a},l=yb(o),d=gb(o);if(i.documentType!==xt.HTML){let oe=Number(o?.pageDataTimeoutMs),me=Number.isFinite(oe)?Math.max(200,Math.floor(oe)):9e3,fe=Math.max(200,Math.min(me,It(l))),_e=wb(r,i.documentType,o,l),ge=await is(_e,fe,r);if(!ge.ok)return{...c,content:"",error:`non_html_timeout:${a}`,metadata:{extractionMethod:"timeout"}};let Le=ge.value||{},Se=i.documentType===xt.GOOGLE_SHEET?ey(r):void 0;return{...c,...Le,contentType:Le.contentType||c.contentType,sheetInfo:Le.sheetInfo||Se}}if(o?.onlyTextContent)return{...c,contentType:os,content:ti(r)};let p=Math.max(0,Math.min(1e3,It(l))),v=performance.now(),m=!1;if(!o?.disableAutoScroll&&p>80){let oe=r.hidden?200:400,me=Math.min(oe,p);me>80&&(m=await Qb(r,{profile:"light",timeBudgetMs:me,delayMs:r.hidden?0:160,finalWaitMs:r.hidden?0:200}))}let g=Math.max(0,p-(performance.now()-v));g>60&&await Sf(r,{...d,deadlineEpochMs:l,totalBudgetMs:g});let T=Math.max(0,p-(performance.now()-v));T>80&&await Zb(r,{mode:"full",totalBudgetMs:Math.min(r.hidden?300:400,T),budgetMs:Math.min(r.hidden?200:300,T),maxPasses:r.hidden?1:2});let D=ei(e,t,{includeFrames:n.includeFrames??!0,disableDomAnnotations:n.disableDomAnnotations??!0}),N="normal",A=0,S=0,F=[],$=Math.max(0,d.sparseTreeRetryMaxAttempts)>0,Q=Af(r,D.rootNodes,D.semanticNodes);if(Q.needsStabilization){F=[...Q.reasons],N="suspicious_unrecovered";let oe=$?Math.max(0,Math.min(fb,It(l)-20)):0;if(oe>20){let me=Date.now();await Sf(r,{...d,retries:0,deadlineEpochMs:l,totalBudgetMs:oe}),S=Date.now()-me,A=1,D=ei(e,t,{includeFrames:n.includeFrames??!0,disableDomAnnotations:n.disableDomAnnotations??!0});let fe=Af(r,D.rootNodes,D.semanticNodes);fe.reasons.length>0&&(F=[...fe.reasons]),!fe.needsStabilization&&!Rf(D.rootNodes,D.semanticNodes)&&(N="suspicious_recovered")}}return Rf(D.rootNodes,D.semanticNodes)?{...c,contentType:os,content:ti(r),metadata:{scrollingPerformed:m,extractionMethod:"empty_tree_fallback",treeCapture:{status:N,attempts:A,waitedMs:S,reasons:F}}}:{...c,contentType:os,roots:D.rootNodes,nodes:D.semanticNodes,elementLinkRecord:hb(D.semanticNodes),metadata:{scrollingPerformed:m,extractionMethod:N!=="normal"?N:void 0,treeCapture:{status:N,attempts:A,waitedMs:S,reasons:F}}}}function gb(e){let t=Number(e?.adaptiveSettleDebounceMs),n=Number(e?.adaptiveSettleMaxWaitMs),r=Number(e?.adaptiveSettleRetries),o=Number(e?.sparseTreeRetryDelayMs),s=Number(e?.sparseTreeRetryMaxAttempts);return{debounceMs:Number.isFinite(t)?Math.max(8,Math.min(500,Math.floor(t))):ab,maxWaitMs:Number.isFinite(n)?Math.max(80,Math.min(5e3,Math.floor(n))):cb,retries:Number.isFinite(r)?Math.max(0,Math.min(6,Math.floor(r))):lb,sparseTreeRetryDelayMs:Number.isFinite(o)?Math.max(20,Math.min(1e3,Math.floor(o))):ub,sparseTreeRetryMaxAttempts:Number.isFinite(s)?Math.max(0,Math.min(4,Math.floor(s))):db}}async function Sf(e,t){let n=It(t.deadlineEpochMs);if(n<=20)return;let r=Math.max(20,Math.min(Math.floor(t.totalBudgetMs),n)),o=Date.now()+r,s=0;for(;s<=t.retries&&It(o)>20;){let i=Math.max(40,Math.min(t.maxWaitMs,It(o)));if(await bb(e,{debounceMs:t.debounceMs,windowBudgetMs:i,deadlineEpochMs:o}))return;s+=1}}async function bb(e,t){let n=e.documentElement;if(!n||typeof MutationObserver>"u")return!0;let r=Date.now(),o=new MutationObserver(()=>{r=Date.now()});try{o.observe(n,{subtree:!0,childList:!0,attributes:!0,characterData:!0})}catch{return!0}let s=Date.now()+Math.max(40,Math.floor(t.windowBudgetMs));try{for(;It(t.deadlineEpochMs)>20&&It(s)>20;){let i=Date.now()-r;if(i>=t.debounceMs)return!0;let a=Math.max(10,Math.min(60,t.debounceMs-i,It(t.deadlineEpochMs),It(s)));await Rt(a,e)}}finally{o.disconnect()}return!1}function yb(e){let t=Number(e?.deadlineEpochMs);if(Number.isFinite(t)&&t>0)return t;let n=Number(e?.totalBudgetMs),r=Number.isFinite(n)?Math.max(1500,Math.floor(n)):9e3;return Date.now()+r}function vb(e,t){switch(e){case xt.PDF:return il;case xt.GOOGLE_DOC:return ll;case xt.GOOGLE_SHEET:return al;case xt.PLAIN_TEXT:return va;case xt.HTML:default:return t||os}}function Tb(e,t){let n=e||String(t.contentType||"").toLowerCase();return hf(n)?{documentType:xt.PDF}:kb(t)&&(Eb(t)||_b(t.URL))?{documentType:xt.PDF}:Pb(t)?{documentType:xt.GOOGLE_DOC}:Bb(t)?{documentType:xt.GOOGLE_SHEET}:n.includes(va)?{documentType:xt.PLAIN_TEXT}:{documentType:xt.HTML}}function kb(e){try{let t=Ab(e);return ul(t)?!0:!!t.querySelector?.('object[type="application/pdf"],object[type="application/x-google-chrome-pdf"]')}catch{return!1}}function _b(e){try{return e?e.toLowerCase().includes(".pdf")?!0:(new URL(e).searchParams.get("file")||"").toLowerCase().includes(".pdf"):!1}catch{return String(e||"").toLowerCase().includes(".pdf")}}function Eb(e){try{let t=e.body;return!t||t.querySelectorAll('embed[type="application/pdf"],embed[type="application/x-google-chrome-pdf"],object[type="application/pdf"],object[type="application/x-google-chrome-pdf"]').length===0||(t.innerText||"").trim().length>40?!1:Array.from(t.children).filter(s=>!["SCRIPT","STYLE"].includes(String(s.tagName).toUpperCase())).length<=3}catch{return!1}}async function wb(e,t,n,r){switch(t){case xt.PDF:return Ib(e,n,r);case xt.GOOGLE_DOC:return xb(e);case xt.GOOGLE_SHEET:return Xb(e,n);case xt.PLAIN_TEXT:return{content:ti(e),contentType:va};case xt.HTML:default:return{content:ti(e),contentType:os}}}async function Ib(e,t,n){It(n)>sl+50&&await gf(sl,e,n);let o=(()=>{let d=Number(t?.pdfTextSelectionTimeoutMs),p=rs.pdfTextSelectionTimeoutMs;return Number.isFinite(d)?Math.max(150,Math.floor(d)):p})(),s=It(n),a=Number.isFinite(s)?Math.max(150,Math.min(o,Math.max(0,s-150))):o,c=await Mb(e,a),l=!!c.success&&!!(c.data||"").trim();return{content:l&&c.data||"",contentType:il,error:l?void 0:`pdf_extraction_failed:${c.reason||"unknown"}`}}async function xb(e){return{content:Gb(),contentType:ll}}function Rf(e,t){return!Array.isArray(e)||e.length===0||!t||Object.keys(t).length===0}function Sb(e){return!!(e.documentElement?.hasAttribute(ko)||e.body?.hasAttribute(ko)||e.body?.getAttribute?.("aria-busy")==="true")}function Rb(e,t,n){let r=Array.isArray(t)?t.length:0,o=n&&typeof n=="object"?Object.keys(n).length:0,s=o?Object.values(n):[],i=0,a=0;for(let c of s){let l=String(c?.elementName||c?.elementTag||"").trim().toUpperCase();(String(c?.textContent||c?.computedName||c?.computedDescription||"").trim().length>=2||mb.has(l))&&(a+=1),pb.has(l)&&(i+=1)}return{rootsCount:r,semanticCount:o,meaningfulNodeCount:a,genericNodeRatio:o>0?i/o:1,visibleTextLength:0,isDocumentComplete:e.readyState==="complete",busy:Sb(e)}}function Af(e,t,n){let r=Rb(e,t,n),o=0;!(r.rootsCount>0&&r.semanticCount>0&&r.isDocumentComplete&&!r.busy&&r.meaningfulNodeCount>=2)&&r.semanticCount>0&&r.semanticCount<=6&&(r.meaningfulNodeCount>=1||r.genericNodeRatio>=.8)&&(o=ti(e).trim().length);let a={...r,visibleTextLength:o},c=a.rootsCount>0&&a.semanticCount>0&&a.isDocumentComplete&&!a.busy&&(a.meaningfulNodeCount>=2||a.semanticCount<=6&&a.meaningfulNodeCount>=1&&a.visibleTextLength<160),l=[];return(a.rootsCount===0||a.semanticCount===0)&&l.push("empty_tree"),a.semanticCount>0&&a.semanticCount<=4&&a.meaningfulNodeCount===0&&l.push("generic_shell"),a.semanticCount<=6&&a.meaningfulNodeCount<=1&&a.genericNodeRatio>=.8&&a.visibleTextLength>=80&&(l.includes("generic_shell")||l.push("generic_shell"),l.push("text_semantic_mismatch")),(!a.isDocumentComplete||a.busy)&&a.semanticCount<=8&&a.meaningfulNodeCount<=1&&l.push("dom_not_ready"),{proceedImmediately:c,needsStabilization:!c&&l.length>0,reasons:l,signals:a}}function ti(e){return e.body?.innerText||e.body?.textContent||e.documentElement?.innerText||e.documentElement?.textContent||""}function Ab(e){try{let t=e.defaultView||window,n=t.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",o=t[n]?.shadow?.getRoot;if(typeof o=="function"){let s=o(e.body||e.documentElement);if(s)return s}}catch{}return e}function Cb(e){let t=e.URL||"";try{let n=new URL(t),r=n.searchParams.get("file")||n.searchParams.get("src")||"";return r||t}catch{return t}}async function Mb(e,t){let n=Number.isFinite(t)&&t>0?Math.floor(t):rs.pdfTextSelectionTimeoutMs,r=Cb(e),o=cs.get(r)??"";if(o.trim().length>0)return{success:!0,data:o,reason:"ok"};let s=await Nb(e,n);return s.success&&s.data.trim()&&ib(r,s.data),s}async function Nb(e,t){let n=e.defaultView||window,r=Lb(e);if(!r||typeof r.postMessage!="function")return{success:!1,data:"",reason:"no_viewer"};let o=globalThis.crypto&&"randomUUID"in globalThis.crypto?globalThis.crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`,s=!1,i="",a=d=>{if(s||!Db(String(d.origin||""),e))return;let p=d.data;Ob(p,o)&&typeof p.selectedText=="string"&&p.selectedText.trim().length>0&&(i=p.selectedText,s=!0)};n.addEventListener("message",a);try{r.postMessage({type:"selectAll",requestId:o},"*")}catch{}let c=Date.now();for(;!s&&Date.now()-c<t;){try{r.postMessage({type:"getSelectedText",requestId:o},"*")}catch{}if(await Rt(200,e),i.trim()){s=!0;break}}return n.removeEventListener("message",a),i.trim()?{success:!0,data:i,reason:"ok"}:{success:!1,data:"",reason:Date.now()-c>=t?"timeout":"no_response"}}function Lb(e){let t=ul(e)||e.querySelector?.('object[type="application/pdf"],object[type="application/x-google-chrome-pdf"]');if(t&&typeof t.postMessage=="function")return t;let n=e.querySelector?.('iframe[type="application/pdf"]');return n?.contentWindow?n.contentWindow:null}function Db(e,t){let n=(e||"").toLowerCase();if(!n||n==="null"||n.startsWith("chrome-extension://")||n.startsWith("chrome://")||n.startsWith("chrome-untrusted://"))return!0;try{let r=new URL(t.URL||"").origin.toLowerCase();if(r&&n===r)return!0}catch{}return!1}function Ob(e,t){return!(!e||typeof e!="object"||e.type!=="getSelectedTextReply"||typeof e.selectedText!="string"||e.requestId&&e.requestId!==t)}function Pb(e){try{let t=e.defaultView||pr();if(t?.location.hostname==="docs.google.com"&&t?.location.pathname.startsWith("/document/d/"))return!0}catch{}try{if(e.querySelector('iframe[src^="https://docs.google.com/document/d/"]'))return!0}catch{}return ls(e)!==null}function Bb(e){let n=(e.defaultView||pr())?.location.href??"";return/^https:\/\/docs\.google\.com\/spreadsheets\/(?:u\/\d+\/)?d\/[a-zA-Z0-9_-]+/.test(n)}function Ub(e){try{return e.defaultView?.top?.document??e}catch{return e}}function Ia(e){let t=[e],n=Ub(e);return n!==e&&t.push(n),t}var Fb=".docs-texteventtarget-iframe",Hb=".kix-cursor",qb=".docos-replyview-body",Wb=".docos-replyview",$b=".docos-author",Of="\u200B",Vb="\xA0";function ls(e){for(let t of Ia(e)){let n=t.querySelector(Fb);if(n)return n}return null}function zb(e){for(let t of Ia(e)){let n=t.querySelector(Hb);if(n)return n}return null}function _a(e){let t=zb(e);return t?(t.ownerDocument?.defaultView?.getComputedStyle(t).display??t.style.display)==="none":!1}function Ea(e,t){let n=ls(e);if(!n)return;let r=t?"ArrowUp":"ArrowDown",s={key:r,keyCode:t?38:40,altKey:!0,shiftKey:!0,code:r,bubbles:!0,cancelable:!0},i=n.contentDocument,a=n.contentWindow;if(!i)return;let c=a?.KeyboardEvent||KeyboardEvent;i.dispatchEvent(new c("keydown",s))}function Cf(e){let t=ls(e);if(!t)return;let n={key:"ArrowLeft",keyCode:37,code:"ArrowLeft",bubbles:!0,cancelable:!0},r=t.contentDocument,o=t.contentWindow;if(!r)return;let s=o?.KeyboardEvent||KeyboardEvent;r.dispatchEvent(new s("keydown",n))}function jb(e){let t=ls(e);if(!t)return;let r=(typeof navigator<"u"?String(navigator.platform||""):"").toUpperCase().indexOf("MAC")>=0,o={key:"a",code:"KeyA",ctrlKey:!r,metaKey:r,bubbles:!0,cancelable:!0},s=t.contentDocument,i=t.contentWindow;if(!s)return;let a=i?.KeyboardEvent||KeyboardEvent;s.dispatchEvent(new a("keydown",o))}function wa(e){let t=ls(e);if(!t)return"";let n=t.contentDocument,r=t.contentWindow,o=n?.body;if(!n||!o)return"";try{let a=r?.ClipboardEvent||ClipboardEvent,c=new a("copy",{bubbles:!0,cancelable:!0});o.firstChild?.dispatchEvent?.(c),o.firstChild?.dispatchEvent||o.dispatchEvent(c)}catch{}let s=o.innerText||o.textContent||"";return String(s).replace(new RegExp(Of,"g"),"")??""}function hl(e){let t=`
|
|
1
|
+
var H;(function(e){e.click_element="click_element",e.type_into_element="type_into_element",e.type_and_enter="type_and_enter",e.select_dropdown_value="select_dropdown_value",e.clear_element="clear_element",e.focus_element="focus_element",e.check_field_validity="check_field_validity",e.select_text="select_text",e.hover_element="hover_element",e.right_click_element="right_click_element",e.double_click_element="double_click_element",e.press_key="press_key",e.mouse_wheel="mouse_wheel",e.dispatch_pointer_path="dispatch_pointer_path",e.drag_element="drag_element",e.drag_and_drop="drag_and_drop",e.adjust_slider="adjust_slider",e.scroll_page="scroll_page",e.scroll_to_element="scroll_to_element",e.swipe_element="swipe_element",e.long_press_element="long_press_element",e.pinch_zoom="pinch_zoom",e.go_back="go_back",e.go_forward="go_forward",e.goto_url="goto_url",e.refresh_page="refresh_page",e.open_new_tab="open_new_tab",e.switch_tab="switch_tab",e.close_tab="close_tab",e.describe_images="describe_images",e.google_search="google_search",e.network_run_recipe="network_run_recipe",e.rover_external_read_context="rover_external_read_context",e.rover_external_act_context="rover_external_act_context",e.copy_text="copy_text",e.paste_text="paste_text",e.wait_action="wait_action",e.wait_for_element="wait_for_element",e.answer_task="answer_task",e.upload_file="upload_file",e.solve_captcha="solve_captcha"})(H||(H={}));var DE=new Set(Object.values(H)),La=["element_id","source_element_id","target_element_id","center_element_id","element_ids"],Mb=40;function uf(e){let t=Array.isArray(e?.element_ids)?e.element_ids:e?.element_id!=null?[e.element_id]:[];return Array.from(new Set(t.map(r=>Math.trunc(Number(r))))).filter(r=>Number.isFinite(r)&&r>0).slice(0,Mb)}var Nn;(function(e){e[e.Unknown=0]="Unknown",e[e.React=1]="React",e[e.Vue=2]="Vue",e[e.Angular=3]="Angular",e[e.Svelte=4]="Svelte",e[e.JQuery=5]="JQuery"})(Nn||(Nn={}));var df={[Nn.Unknown]:"unknown",[Nn.React]:"react",[Nn.Vue]:"vue",[Nn.Angular]:"angular",[Nn.Svelte]:"svelte",[Nn.JQuery]:"jquery"},Pl={react:Nn.React,vue:Nn.Vue,angular:Nn.Angular,svelte:Nn.Svelte,jquery:Nn.JQuery},Rt;(function(e){e[e.Other=0]="Other",e[e.Inline=1]="Inline",e[e.Delegated=2]="Delegated",e[e.React=3]="React",e[e.Vue=4]="Vue",e[e.Angular=5]="Angular",e[e.Svelte=6]="Svelte",e[e.JQuery=7]="JQuery",e[e.Native=8]="Native"})(Rt||(Rt={}));var BE={[Rt.Other]:"other",[Rt.Inline]:"inline",[Rt.Delegated]:"delegated",[Rt.React]:"react",[Rt.Vue]:"vue",[Rt.Angular]:"angular",[Rt.Svelte]:"svelte",[Rt.JQuery]:"jquery",[Rt.Native]:"native"},UE={inline:Rt.Inline,delegated:Rt.Delegated,react:Rt.React,vue:Rt.Vue,angular:Rt.Angular,svelte:Rt.Svelte,jquery:Rt.JQuery,other:Rt.Other,native:Rt.Native},we;(function(e){e[e.click_element=1]="click_element",e[e.type_into_element=2]="type_into_element",e[e.type_and_enter=3]="type_and_enter",e[e.select_dropdown_value=4]="select_dropdown_value",e[e.clear_element=5]="clear_element",e[e.focus_element=6]="focus_element",e[e.hover_element=7]="hover_element",e[e.right_click_element=8]="right_click_element",e[e.double_click_element=9]="double_click_element",e[e.long_press_element=10]="long_press_element",e[e.drag_element=11]="drag_element",e[e.drag_and_drop=12]="drag_and_drop",e[e.swipe_element=13]="swipe_element",e[e.adjust_slider=14]="adjust_slider",e[e.describe_images=15]="describe_images",e[e.scroll_to_element=16]="scroll_to_element",e[e.paste_text=17]="paste_text",e[e.check_field_validity=18]="check_field_validity",e[e.select_text=19]="select_text",e[e.mouse_wheel=20]="mouse_wheel",e[e.copy_text=21]="copy_text",e[e.upload_file=22]="upload_file",e[e.go_back=23]="go_back",e[e.go_forward=24]="go_forward",e[e.refresh_page=25]="refresh_page",e[e.press_key=26]="press_key",e[e.scroll_page=27]="scroll_page",e[e.wait_action=28]="wait_action",e[e.wait_for_element=29]="wait_for_element",e[e.pinch_zoom=30]="pinch_zoom",e[e.goto_url=31]="goto_url",e[e.google_search=32]="google_search",e[e.open_new_tab=33]="open_new_tab",e[e.switch_tab=34]="switch_tab",e[e.close_tab=35]="close_tab",e[e.solve_captcha=36]="solve_captcha",e[e.answer_task=37]="answer_task",e[e.dispatch_pointer_path=38]="dispatch_pointer_path",e[e.network_run_recipe=40]="network_run_recipe",e[e.rover_external_read_context=41]="rover_external_read_context",e[e.rover_external_act_context=42]="rover_external_act_context"})(we||(we={}));var Da={[H.click_element]:we.click_element,[H.type_into_element]:we.type_into_element,[H.type_and_enter]:we.type_and_enter,[H.select_dropdown_value]:we.select_dropdown_value,[H.clear_element]:we.clear_element,[H.focus_element]:we.focus_element,[H.hover_element]:we.hover_element,[H.right_click_element]:we.right_click_element,[H.double_click_element]:we.double_click_element,[H.long_press_element]:we.long_press_element,[H.drag_element]:we.drag_element,[H.drag_and_drop]:we.drag_and_drop,[H.swipe_element]:we.swipe_element,[H.adjust_slider]:we.adjust_slider,[H.describe_images]:we.describe_images,[H.scroll_to_element]:we.scroll_to_element,[H.paste_text]:we.paste_text,[H.check_field_validity]:we.check_field_validity,[H.select_text]:we.select_text,[H.mouse_wheel]:we.mouse_wheel,[H.copy_text]:we.copy_text,[H.upload_file]:we.upload_file,[H.go_back]:we.go_back,[H.go_forward]:we.go_forward,[H.refresh_page]:we.refresh_page,[H.press_key]:we.press_key,[H.scroll_page]:we.scroll_page,[H.wait_action]:we.wait_action,[H.wait_for_element]:we.wait_for_element,[H.pinch_zoom]:we.pinch_zoom,[H.goto_url]:we.goto_url,[H.google_search]:we.google_search,[H.open_new_tab]:we.open_new_tab,[H.switch_tab]:we.switch_tab,[H.close_tab]:we.close_tab,[H.solve_captcha]:we.solve_captcha,[H.answer_task]:we.answer_task,[H.dispatch_pointer_path]:we.dispatch_pointer_path,[H.network_run_recipe]:we.network_run_recipe,[H.rover_external_read_context]:we.rover_external_read_context,[H.rover_external_act_context]:we.rover_external_act_context},ff=Object.fromEntries(Object.entries(Da).map(([e,t])=>[t,e]));function Oa(e){let t=[];return e&&(e&1&&t.push("native"),e&2&&t.push("inline"),e&4&&t.push("react"),e&8&&t.push("vue"),e&16&&t.push("angular"),e&32&&t.push("svelte"),e&64&&t.push("jquery"),e&128&&t.push("delegated"),e&256&&t.push("other")),t}var mf={semanticIdStart:1,interactiveIdStart:1,includeFrameContents:!0,clearIframes:!0,frameContextLabel:null,signalProvider:null,disableDomAnnotations:!1},ln={...mf},Ba=globalThis;function hf(e){ln={...mf,...e||{}}}function Lo(){return ln.signalProvider??null}function gt(){try{return typeof Ba.document<"u"?Ba.document:null}catch{return null}}function vr(){try{return typeof Ba.window<"u"?Ba.window:null}catch{return null}}function Z(e,t){if(e&&typeof e=="object"){let n=e.ownerDocument;if(n)return n;if(e.nodeType===9)return e}return t??gt()??{}}function ye(e,t){return Z(e,t?t.document:null)?.defaultView??t??vr()??{}}function se(e,t){return e?.defaultView??t??vr()??{}}function Ua(e,t){try{return e?.getElementById?.(t)??null}catch{return null}}function Fa(e,t){try{return e?.querySelector?.(t)??null}catch{return null}}function Bl(e,t){try{return Array.from(e?.querySelectorAll?.(t)??[])}catch{return[]}}function yi(e){try{return e.contentDocument||(e.contentWindow?.document??null)}catch{return null}}function Ha(e,t){let n=e.CSS?.escape;return typeof n=="function"?n(t):t.replace(/([^\w-])/g,"\\$1")}function Ln(e,t){try{return e[t]}catch{return}}function yr(e,t){return!!e&&String(e.tagName||"").toUpperCase()===t.toUpperCase()}function gf(e,t){let n=Ln(t,"HTMLAnchorElement");return n?e instanceof n:yr(e,"A")}function Vn(e,t){let n=Ln(t,"HTMLInputElement");return n?e instanceof n:yr(e,"INPUT")}function or(e,t){let n=Ln(t,"HTMLTextAreaElement");return n?e instanceof n:yr(e,"TEXTAREA")}function bf(e,t){let n=Ln(t,"HTMLLabelElement");return n?e instanceof n:yr(e,"LABEL")}function vf(e,t){let n=Ln(t,"HTMLSelectElement");return n?e instanceof n:yr(e,"SELECT")}function yf(e,t){let n=Ln(t,"HTMLSlotElement");return n?e instanceof n:yr(e,"SLOT")}function Tf(e,t){let n=Ln(t,"HTMLButtonElement");return n?e instanceof n:yr(e,"BUTTON")}function _f(e,t){let n=Ln(t,"HTMLImageElement");return n?e instanceof n:yr(e,"IMG")}function kf(e,t){let n=Ln(t,"HTMLVideoElement");return n?e instanceof n:yr(e,"VIDEO")}function wf(e,t){let n=Ln(t,"HTMLCanvasElement");return n?e instanceof n:yr(e,"CANVAS")}function At(e,t){if(!e||e.nodeType!==1)return!1;let n=Ln(t,"HTMLElement");return n?e instanceof n:typeof e.tagName=="string"}function Dn(e){return!!e&&e.nodeType===11&&typeof e.host=="object"&&typeof e.mode=="string"}function Do(e){if(!e||e.nodeType!==1)return!1;let t=Z(e),r=se(t).Element;return r?e instanceof r:typeof e.tagName=="string"}function Ti(e){if(!e||e.nodeType!==1)return!1;let t=Z(e),r=se(t).HTMLIFrameElement;return r&&e instanceof r?!0:String(e.tagName||"").toUpperCase()==="IFRAME"}function Nb(e,t){if(!e)return!1;if(e.nodeType===9)return!0;let n=Ln(t,"Document");return n?e instanceof n:!1}function Lb(e,t){if(!e)return!1;let n=Ln(t,"Window");if(n)return e instanceof n;try{return e.window===e}catch{return!1}}function qa(e){try{return e.document}catch{return null}}function Wa(e,t){if(Nb(e,t))try{return e.documentElement}catch{return null}if(Lb(e,t)){let n=qa(e);if(!n)return null;try{return n.documentElement}catch{return null}}return null}function Pa(e){if(!e)return null;if(typeof e=="string")return e;if(typeof e=="object"&&typeof e.baseVal=="string")return e.baseVal;try{return String(e)}catch{return null}}function pf(e,t,n){try{let r=Z(t,n);return new URL(e,r.baseURI).href}catch{return e}}function $a(e,t){let n=e.tagName.includes("-"),r=e.getAttribute("href")||e.getAttribute("src")||e.getAttribute("data")||e.getAttribute("action");if(r){let o=pf(r,e,t);return o.trim().toLowerCase().startsWith("javascript:")?null:o}if(n)return null;try{let o=e,s=Pa(o.href)||Pa(o.src)||Pa(o.data)||Pa(o.action);return s?pf(s,e,t):null}catch{return null}}var Ef=["click","dblclick","doubleclick","mousedown","mouseup","mouseenter","mouseleave","mousemove","mouseover","mouseout","contextmenu","auxclick","keydown","keyup","keypress","input","change","submit","reset","select","search","invalid","beforeinput","focus","blur","focusin","focusout","touchstart","touchend","touchmove","touchcancel","pointerdown","pointerup","pointermove","pointerenter","pointerleave","pointercancel","pointerover","dragstart","dragend","drag","dragenter","dragleave","dragover","drop","copy","cut","paste","scroll","wheel","play","pause","ended","volumechange","seeking","seeked","animationstart","animationend","transitionend","transitionstart","resize","toggle","fullscreenchange","load","error","abort","beforeunload","unload","hashchange","popstate","storage","message"],$e={};Ef.forEach((e,t)=>{$e[e]=t});var Ur={};Ef.forEach((e,t)=>{Ur[t]=e});function Oo(e){if(!e)return null;let t=e.trim();if(!t||!t.includes("~"))return null;let n=[];for(let r of t.split(",")){if(!r)continue;let[o,s]=r.split("~"),i=Number(o);if(!Number.isFinite(i))continue;let a=s&&parseInt(s,36)||0;n.push({id:i,mask:a})}return n.length?{entries:n}:null}function Db(e){let t=Oo(e);if(t){let n=new Set;for(let{id:r}of t.entries)n.add(r);return[...n]}return[]}function _i(e){return bs(e).map(n=>Ur[n]).filter(n=>!!n)}function bs(e){let t=Lo();if(t?.getEventHandlerIds)try{let o=t.getEventHandlerIds(e);if(o&&o.length)return o}catch{}let n=e.getAttribute(co),r=Db(n);return!r||r.length===0?[]:r}var Ul=["media"],If=new Set(Ul),Fl=["alert","alertdialog","application","directory","feed","grid","log","marquee","menu","menubar","menuitem","menuitemcheckbox","menuitemradio","note","radiogroup","scrollbar","search","switch","tab","tablist","tabpanel","timer","toolbar","tooltip","tree","treegrid","treeitem"];var xf=new Set(Fl),Fr=new Set(["button","checkbox","combobox","figure","img","link","listbox","option","radio","scrollbar","searchbox","separator","slider","spinbutton","switch","tab","tabpanel","textbox","tooltip","treeitem","grid","gridcell","table","cell","columnheader","rowheader","menu","menubar","menuitem","menuitemcheckbox","menuitemradio","tree","treegrid","radiogroup","application","dialog","alertdialog","alert","status","progressbar","meter","search","code","media"]),ki=new Set(["group","region","section","banner","contentinfo","main","navigation","complementary","form","article","document","presentation","none"]);var Sf=["none","presentation"],Be;(function(e){e[e.ANCESTOR_ROLE_REQUIRED=6]="ANCESTOR_ROLE_REQUIRED",e[e.PROPERTY_VALUE_MATCH=5]="PROPERTY_VALUE_MATCH",e[e.HAS_TABLE_ROW_DATA=7]="HAS_TABLE_ROW_DATA",e[e.BOOLEAN_PROPERTY=0]="BOOLEAN_PROPERTY",e[e.ATTRIBUTE_GREATER_THAN=2]="ATTRIBUTE_GREATER_THAN",e[e.HAS_TABLE_COLUMN_DATA=8]="HAS_TABLE_COLUMN_DATA",e[e.FORBIDDEN_ANCESTORS=1]="FORBIDDEN_ANCESTORS",e[e.HAS_ACCESSIBLE_NAME=4]="HAS_ACCESSIBLE_NAME",e[e.ATTRIBUTE_LESS_THAN=3]="ATTRIBUTE_LESS_THAN"})(Be||(Be={}));var Rf={a:["link"],area:["link"],article:["article"],aside:["complementary"],body:["document"],button:["button"],datalist:["listbox"],dd:["definition"],details:["group"],dfn:["term"],dialog:["dialog"],dt:["term"],fieldset:["group"],figure:["figure"],footer:["contentinfo"],form:["form"],h1:["heading"],h2:["heading"],h3:["heading"],h4:["heading"],h5:["heading"],h6:["heading"],header:["banner"],hr:["separator"],img:["img"],input:["button","checkbox","combobox","radio","searchbox","slider","spinbutton","textbox"],li:["listitem"],link:["link"],main:["main"],math:["math"],menu:["list"],nav:["navigation"],ol:["list"],optgroup:["group"],option:["option"],output:["status"],progress:["progressbar"],section:["region"],select:["combobox","listbox"],summary:["button"],table:["table"],tbody:["rowgroup"],td:["cell","gridcell"],textarea:["textbox"],tfoot:["rowgroup"],th:["cell","columnheader","gridcell","rowheader"],thead:["rowgroup"],tr:["row"],ul:["list"],code:["code"],pre:["code"]},wi={heading:{selector:"h6,h1,h3,h2,h5,h4"},checkbox:{conditionalSelectors:[{selector:"input",conditions:[{type:Be.PROPERTY_VALUE_MATCH,property:"type",values:["checkbox"]}]}]},navigation:{selector:"nav"},row:{selector:"tr"},complementary:{selector:"aside"},table:{selector:"table"},gridcell:{conditionalSelectors:[{selector:"td",conditions:[{type:Be.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"grid"}]},{selector:"td",conditions:[{type:Be.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"treegrid"}]},{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:Be.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"treegrid"},{type:Be.HAS_TABLE_COLUMN_DATA,hasData:!0},{type:Be.HAS_TABLE_ROW_DATA,hasData:!0}]}]},slider:{conditionalSelectors:[{selector:"input",conditions:[{type:Be.PROPERTY_VALUE_MATCH,property:"type",values:["range"]}]}]},listitem:{selector:"li"},contentinfo:{conditionalSelectors:[{selector:"footer",conditions:[{type:Be.FORBIDDEN_ANCESTORS,selector:'section,nav,main,aside,article,[role="region"],[role="navigation"],[role="main"],[role="complementary"],[role="article"]'}]}]},definition:{selector:"dd"},button:{selector:"summary,button",conditionalSelectors:[{selector:"input",conditions:[{type:Be.PROPERTY_VALUE_MATCH,property:"type",values:["submit","reset","image","button"]}]}]},status:{selector:"output"},form:{conditionalSelectors:[{selector:"form",conditions:[{type:Be.HAS_ACCESSIBLE_NAME}]}]},article:{selector:"article"},textbox:{selector:"textarea",conditionalSelectors:[{selector:"input:not([list])",conditions:[{type:Be.PROPERTY_VALUE_MATCH,property:"type",values:["url","text","tel","email"]}]}]},radio:{conditionalSelectors:[{selector:"input",conditions:[{type:Be.PROPERTY_VALUE_MATCH,property:"type",values:["radio"]}]}]},columnheader:{selector:'th[scope="colgroup"],th[scope="col"]',conditionalSelectors:[{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:Be.HAS_TABLE_ROW_DATA,hasData:!1}]}]},list:{selector:"ul,ol,menu"},region:{conditionalSelectors:[{selector:"section",conditions:[{type:Be.HAS_ACCESSIBLE_NAME}]}]},document:{selector:"body"},option:{selector:"select > option,select > optgroup > option,datalist > option"},separator:{selector:"hr"},link:{selector:"area[href],a[href],link[href]"},img:{selector:"img[alt],img:not([alt])"},main:{selector:"main"},searchbox:{conditionalSelectors:[{selector:"input:not([list])",conditions:[{type:Be.PROPERTY_VALUE_MATCH,property:"type",values:["search"]}]}]},cell:{conditionalSelectors:[{selector:"td",conditions:[{type:Be.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"table"}]},{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:Be.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"table"},{type:Be.HAS_TABLE_COLUMN_DATA,hasData:!0},{type:Be.HAS_TABLE_ROW_DATA,hasData:!0}]}]},rowheader:{selector:'th[scope="rowgroup"],th[scope="row"]',conditionalSelectors:[{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:Be.HAS_TABLE_COLUMN_DATA,hasData:!1},{type:Be.HAS_TABLE_ROW_DATA,hasData:!0}]}]},dialog:{selector:"dialog"},listbox:{selector:"select[multiple],datalist",conditionalSelectors:[{selector:"select",conditions:[{type:Be.ATTRIBUTE_GREATER_THAN,attribute:"size",value:1}]}]},group:{selector:"optgroup,fieldset,details"},term:{selector:"dt,dfn"},progressbar:{selector:"progress"},figure:{selector:"figure"},spinbutton:{conditionalSelectors:[{selector:"input",conditions:[{type:Be.PROPERTY_VALUE_MATCH,property:"type",values:["number"]}]}]},math:{selector:"math"},combobox:{selector:"select:not([size]):not([multiple])",conditionalSelectors:[{selector:"select:not([multiple])",conditions:[{type:Be.ATTRIBUTE_LESS_THAN,attribute:"size",value:2}]},{selector:"input[list]",conditions:[{type:Be.PROPERTY_VALUE_MATCH,property:"type",values:["url","text","tel","search","email"]}]}]},banner:{conditionalSelectors:[{selector:"header",conditions:[{type:Be.FORBIDDEN_ANCESTORS,selector:'[role="region"],[role="navigation"],[role="main"],[role="complementary"],[role="article"],section,nav,main,aside,article'}]}]},rowgroup:{selector:"thead,tfoot,tbody"},code:{selector:"code,pre"}},co="rtrvr-ls",Hr="rtrvr-ro",Hl="rtrvr-mw-ready",Po="rtrvr-mw-busy",ql="rtrvr-mwa-ready",Af=new Set(["button","cell","checkbox","columnheader","gridcell","heading","link","menuitem","menuitemcheckbox","menuitemradio","option","radio","row","rowgroup","rowheader","switch","tab","tooltip","tree","treeitem","sectionhead","definition","term","deletion","insertion"]),Cf=["BUTTON","INPUT","METER","OUTPUT","PROGRESS","SELECT","TEXTAREA"],Mf=["h1","h2","h3","h4","h5","h6"],Nf="http://www.w3.org/1999/xhtml",Lf="http://www.w3.org/2000/svg",Zt="rtrvr-label";var ja=new Set(["NOSCRIPT","SCRIPT","STYLE","META"]),Bo="CODE",Uo="PRE",Df="aria-hidden",Of="target";var Va;(function(e){e[e.value=0]="value",e[e.alt=1]="alt",e[e.list=2]="list",e[e.title=3]="title"})(Va||(Va={}));var vs;(function(e){e[e["data-icon"]=13]="data-icon",e[e["data-name"]=14]="data-name",e[e["data-tooltip"]=15]="data-tooltip",e[e["data-label"]=16]="data-label"})(vs||(vs={}));var za;(function(e){e[e.VALUENOW=0]="VALUENOW",e[e.VALUETEXT=1]="VALUETEXT"})(za||(za={}));var Wl=new Set([$e.click,$e.dblclick,$e.doubleclick,$e.contextmenu,$e.auxclick,$e.pointerdown,$e.pointerup,$e.mousedown,$e.mouseup,$e.touchstart,$e.touchend,$e.keydown,$e.keyup,$e.input,$e.beforeinput,$e.change,$e.submit,$e.reset,$e.paste,$e.dragstart,$e.dragend,$e.drop]),Pf=new Set([...Wl,$e.scroll,$e.wheel,$e.mouseenter,$e.mouseover,$e.focus,$e.blur,$e.focusin,$e.focusout]),Ga=new Set(["click","dblclick","auxclick","contextmenu","mousedown","mouseup","pointerdown","pointerup","touchstart","touchend"]),$l=new Set(["input","change","beforeinput","keydown","keyup","keypress","paste","compositionstart","compositionend"]),Vl=new Set(["drag","dragstart","dragend","dragenter","dragleave","dragover","drop"]);var lo;(function(e){e[e.ELEMENT=1]="ELEMENT",e[e.ATTRIBUTE=2]="ATTRIBUTE",e[e.TEXT=3]="TEXT",e[e.CDATA_SECTION=4]="CDATA_SECTION",e[e.ENTITY_REFERENCE=5]="ENTITY_REFERENCE",e[e.ENTITY=6]="ENTITY",e[e.PROCESSING_INSTRUCTION=7]="PROCESSING_INSTRUCTION",e[e.COMMENT=8]="COMMENT",e[e.DOCUMENT=9]="DOCUMENT",e[e.DOCUMENT_TYPE=10]="DOCUMENT_TYPE",e[e.DOCUMENT_FRAGMENT=11]="DOCUMENT_FRAGMENT",e[e.NOTATION=12]="NOTATION"})(lo||(lo={}));var Ei;(function(e){e[e.HTML=0]="HTML",e[e.SVG=1]="SVG"})(Ei||(Ei={}));var Ka;(function(e){e[e.VALUENOW=0]="VALUENOW",e[e.VALUETEXT=1]="VALUETEXT",e[e.ATOMIC=2]="ATOMIC",e[e.AUTOCOMPLETE=3]="AUTOCOMPLETE",e[e.COLCOUNT=4]="COLCOUNT",e[e.COLINDEX=5]="COLINDEX",e[e.COLSPAN=6]="COLSPAN",e[e.ERRORMESSAGE=7]="ERRORMESSAGE",e[e.HASPOPUP=8]="HASPOPUP",e[e.LEVEL=9]="LEVEL",e[e.LIVE=10]="LIVE",e[e.MULTILINE=11]="MULTILINE",e[e.MULTISELECTABLE=12]="MULTISELECTABLE",e[e.ORIENTATION=13]="ORIENTATION",e[e.PLACEHOLDER=14]="PLACEHOLDER",e[e.POSINSET=15]="POSINSET",e[e.READONLY=16]="READONLY",e[e.RELEVANT=17]="RELEVANT",e[e.REQUIRED=18]="REQUIRED",e[e.ROWCOUNT=19]="ROWCOUNT",e[e.ROWINDEX=20]="ROWINDEX",e[e.ROWSPAN=21]="ROWSPAN",e[e.SETSIZE=22]="SETSIZE",e[e.SORT=23]="SORT",e[e.VALUEMAX=24]="VALUEMAX",e[e.VALUEMIN=25]="VALUEMIN",e[e.KEYSHORTCUTS=26]="KEYSHORTCUTS",e[e.ROLEDESCRIPTION=27]="ROLEDESCRIPTION"})(Ka||(Ka={}));var Xa;(function(e){e[e.BUSY=0]="BUSY",e[e.CHECKED=1]="CHECKED",e[e.CURRENT=2]="CURRENT",e[e.EXPANDED=3]="EXPANDED",e[e.INVALID=4]="INVALID",e[e.PRESSED=5]="PRESSED",e[e.SELECTED=6]="SELECTED"})(Xa||(Xa={}));var yn;(function(e){e[e["rtrvr-label"]=0]="rtrvr-label",e[e.role=1]="role",e[e.value=2]="value",e[e.alt=3]="alt",e[e.list=4]="list",e[e.title=5]="title",e[e["aria-label"]=6]="aria-label",e[e["aria-labelledby"]=7]="aria-labelledby",e[e["aria-description"]=8]="aria-description",e[e["aria-describedby"]=9]="aria-describedby",e[e.disabled=10]="disabled",e[e.href=11]="href",e[e.placeholder=12]="placeholder",e[e.type=13]="type",e[e.tabindex=14]="tabindex",e[e.id=15]="id",e[e._ngcontent=16]="_ngcontent",e[e["ng-reflect-*"]=17]="ng-reflect-*",e[e["data-reactroot"]=18]="data-reactroot",e[e["data-v-*"]=19]="data-v-*",e[e.required=20]="required",e[e.contenteditable=21]="contenteditable",e[e.accept=22]="accept"})(yn||(yn={}));var jt;(function(e){e[e.display=0]="display",e[e.content=1]="content",e[e.beforeDisplay=2]="beforeDisplay",e[e.afterDisplay=3]="afterDisplay",e[e.beforeContent=4]="beforeContent",e[e.afterContent=5]="afterContent",e[e.width=6]="width",e[e.height=7]="height",e[e.minWidth=8]="minWidth",e[e.minHeight=9]="minHeight",e[e.position=10]="position",e[e.top=11]="top",e[e.left=12]="left",e[e.right=13]="right",e[e.bottom=14]="bottom",e[e.paddingTop=15]="paddingTop",e[e.paddingRight=16]="paddingRight",e[e.paddingBottom=17]="paddingBottom",e[e.paddingLeft=18]="paddingLeft",e[e.marginTop=19]="marginTop",e[e.marginRight=20]="marginRight",e[e.marginBottom=21]="marginBottom",e[e.marginLeft=22]="marginLeft",e[e.cursor=23]="cursor",e[e.opacity=24]="opacity",e[e.visibility=25]="visibility",e[e.overflowX=26]="overflowX",e[e.overflowY=27]="overflowY",e[e.backgroundColor=28]="backgroundColor",e[e.color=29]="color",e[e.borderWidth=30]="borderWidth",e[e.borderStyle=31]="borderStyle",e[e.boxShadow=32]="boxShadow",e[e.outline=33]="outline"})(jt||(jt={}));var qr;(function(e){e[e.text=0]="text",e[e.elText=1]="elText",e[e.viewBox=2]="viewBox",e[e.paths=3]="paths",e[e.pathData=4]="pathData",e[e.circles=5]="circles",e[e.rects=6]="rects",e[e.lines=7]="lines",e[e.polygons=8]="polygons",e[e.polylines=9]="polylines",e[e.ellipses=10]="ellipses"})(qr||(qr={}));var Ob=[...Fl,...Object.keys(wi),...Ul],Bf=[...new Set(Ob)],ys={};Bf.forEach((e,t)=>{ys[e]=t});var Ii={};Bf.forEach((e,t)=>{Ii[t]=e});var Ya=class{currentId;constructor(t=1){this.currentId=t}generateId(){let t=this.currentId;return this.currentId++,t}initialize(t=1){this.currentId=t}getCurrentValue(){return this.currentId}};function xi(e){let t=Lo();if(t?.getRoleHint)try{let o=t.getRoleHint(e);if(o)return o}catch{}let n=e.getAttribute(Hr);if(!n)return null;let r=n.trim();if(!r)return null;if(r.startsWith("s:"))return r.slice(2);if(/^\d+$/.test(r)){let o=Number(r);if(Number.isFinite(o)){let s=Ii[o];if(s)return s}}return r}function Ts(e){return Array.from(new Set(e))}function Uf(e,t){if(!e||e.length===0)return Ts(t);let n=new Set([...e,...t]);return Ts(Array.from(n))}function On(e,t){let r=Lo()?.getEventHandlerIds?.(e)??bs(e),o=r.length>0&&r.some(a=>Wl.has(a)),s=Qa(e),i=t?ki.has(t):!1;return{element:e,semanticRole:t,eventHandlerIndices:r,isEditableRegion:s,hasNodeWorthyHandlers:o,isLikelyStructuralContainer:i}}var Pb=new Set(["text","search","url","tel","password","email","number","date","datetime-local","time","month","week","color"]);function Bb(e){let n=ye(e).getComputedStyle(e);if(n.display==="none"||n.visibility==="hidden"||n.pointerEvents==="none")return!1;let r=e.getBoundingClientRect();return!(r.width===0||r.height===0)}function Ub(e){let t=ye(e);if(!Vn(e,t))return!1;let n=(e.type||"text").toLowerCase();return Pb.has(n)?!e.disabled&&!e.readOnly:!1}function Fb(e){let t=ye(e);return or(e,t)&&!e.disabled&&!e.readOnly}function Hb(e){let t=e;return!(!t.isContentEditable||t.getAttribute("aria-readonly")==="true"||t.getAttribute("aria-disabled")==="true")}function Qa(e){return!e||!Bb(e)?!1:!!(Ub(e)||Fb(e)||Hb(e))}function Si(e){if(!e)return null;let t=e.match(/^\s*\[id=(\d+)\]/);if(t?.[1]){let o=parseInt(t[1],10);return Number.isFinite(o)?o:null}let n=/\[id=(\d+)\]/g,r;for(;r=n.exec(e);){let o=r.index??0,s=e.slice(Math.max(0,o-30),o);if(/iframeRoot\s*=\s*$/.test(s)||s.includes("iframeRoot="))continue;let i=parseInt(r[1],10);if(Number.isFinite(i))return i}try{let o=e.match(LABEL_ID_PATTERN);if(o?.[1]){let s=parseInt(o[1],10);return Number.isFinite(s)?s:null}}catch{}return null}function Ri(e){let t=String(e??"").replace(/[\n\r\t]/g," ").replace(/\s+/g," ").trim();return t=t.replace(/\[/g,"[").replace(/\]/g,"]"),t}function Ff({element:e,elementID:t,frameContextLabel:n}){let r=!ln.disableDomAnnotations,o=[`[id=${t}]`],s=ye(e);if(Ti(e)){let c=Ri(e.id||e.getAttribute("name")||"unnamed");o.push(`[iframe=${c}]`)}if(n){let c=Ri(n);o.push(`[iframeRoot=${c}]`)}if(_f(e,s)&&o.push(`[size=${e.clientWidth}x${e.clientHeight}]`),(kf(e,s)||wf(e,s))&&o.push(`[size=${e.clientWidth}x${e.clientHeight}]`),Vn(e,s)||or(e,s)){let c=qb(e);o.push(...c)}e.getAttribute(Df)==="true"&&o.push("[aria-hidden=true]"),e.disabled&&o.push("[disabled]"),r&&gf(e,s)&&e.setAttribute(Of,"_self");let a=o.join(" ");return r&&e.setAttribute(Zt,a),a}function qb(e){let t=[],n=ye(e),r=Vn(e,n);if(r&&e.type&&e.type!=="text"&&t.push(`[type=${e.type}]`),e.name){let o=Ri(e.name);o&&t.push(`[name=${o}]`)}if(r&&e.multiple&&t.push("[multiple]"),r&&(e.type==="checkbox"||e.type==="radio")&&t.push(`[checked=${e.checked}]`),r&&e.type==="file"&&e.files?.length&&t.push(`[files=${e.files.length}]`),r&&e.type==="number"&&(e.min!==""&&t.push(`[min=${e.min}]`),e.max!==""&&t.push(`[max=${e.max}]`),e.step!==""&&e.step!=="1"&&t.push(`[step=${e.step}]`)),r&&e.type==="range"&&(t.push(`[min=${e.min||"0"}]`),t.push(`[max=${e.max||"100"}]`),t.push(`[value=${e.value}]`)),e.readOnly&&t.push("[readonly]"),e.required&&t.push("[required]"),e.maxLength&&e.maxLength!==-1&&e.maxLength<524288&&t.push(`[maxlength=${e.maxLength}]`),r&&e.pattern&&t.push("[pattern]"),e.autocomplete&&e.autocomplete!=="off"&&t.push(`[autocomplete=${e.autocomplete}]`),e.placeholder){let o=Ri(e.placeholder).replace(/\\/g,"\\\\").replace(/"/g,'\\"');o&&t.push(`[placeholder="${o}"]`)}if(e.value){let o=e.value;r&&e.type==="password"&&(o="*".repeat(Math.min(o.length,10)));let s=Ri(o).replace(/\\/g,"\\\\").replace(/"/g,'\\"');t.push(`[value="${s}"]`)}return t}var Fo=new Ya,zl=new WeakMap;function Hf(){zl=new WeakMap}function Ja(e){let t=zl.get(e);if(t)return t;let n=Fo.generateId();return zl.set(e,n),n}var Za=new Map,jl=new WeakMap;function qf(){Za.clear(),jl=new WeakMap}function Gl(e,t){try{typeof WeakRef<"u"?Za.set(e,new WeakRef(t)):Za.set(e,t)}catch{}}function Ai(e){let t=Za.get(e);if(!t)return null;let n=t instanceof WeakRef?t.deref():t;return!n||n.isConnected===!1?null:n}function uo(e){let t=null,n=Ja(e);if(ln.frameContextLabel)t=ln.frameContextLabel;else{let o=gt();if(o&&e.ownerDocument!==o)try{let i=e.ownerDocument?.defaultView?.frameElement?.getAttribute(Zt)||"",a=i?Si(i):null;t=a?String(a):null}catch{t=""}}let r=Ff({element:e,elementID:n,frameContextLabel:t});if(Gl(n,e),r)try{jl.set(e,r)}catch{}return r}function Wf(e){return jl.get(e)??null}function Kl(e,t){try{e.querySelectorAll?.(`[${Zt}]`)?.forEach(r=>r.removeAttribute(Zt))}catch{}if(t.includeShadow)try{let n=e.querySelectorAll?.("*");if(n)for(let r of Array.from(n))try{let o=r.shadowRoot;o&&Kl(o,t)}catch{}}catch{}if(t.includeIframes)try{let n=e.querySelectorAll?.("iframe");if(n)for(let r of Array.from(n))try{let o=yi(r);o?.body&&Kl(o.body,t)}catch{}}catch{}}function $f(e,t={}){if(ln.disableDomAnnotations)return;let n=Do(e)?ye(e):se(e)??window,r=Wa(e,n)??e;if(r){try{r.removeAttribute?.(Zt)}catch{}Kl(r,{includeShadow:t.includeShadow??!0,includeIframes:t.includeIframes??!0})}}var Tr={},Xl=new WeakMap,ec=new WeakSet;function Vf(){Tr={},Xl=new WeakMap,ec=new WeakSet,Hf()}function en({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:s,originatedFromParent:i,elementContext:a}){let c=Ja(e);Gl(c,e);let d=Tr[c];if(i){if(!d){let p={nodeCategory:e.nodeType,provisionalFromParent:!0},u=e.nodeName;u&&u.trim()&&(p.elementName=u);let v=e.getAttribute("role");v&&(p.preservedAttributes={1:v});let h=e.tagName;h&&(p.elementTag=h),Tr[c]=p}}else{if(d&&!d.provisionalFromParent){if((o||_s(e))&&(d.isFrameElement=!0,s&&s.length>0&&(d.frameContent=s)),a){let{eventHandlerIndices:p,isEditableRegion:u}=a;if(p&&p.length>0){let v=Ts(p);v.length>0&&(d.eventHandlers=Uf(d.eventHandlers,v))}u&&(d.isEditable=!0)}return c}if(ec.has(e))return c;ec.add(e);try{Tr[c]=zf({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:s,elementContext:a})}finally{ec.delete(e)}}return c}function Ci(e){let t=Xl.get(e);if(t!==void 0)return t;let r=(e.textContent||"").replace(/\s+/g," ").trim(),o=e.data?.replace(/\s+/g," ").trim();if(!r&&!o)return 0;let s=Fo.generateId(),i={textContent:r,nodeCategory:e.nodeType};return o&&o!==r&&(i.rawData=o),Tr[s]=i,Xl.set(e,s),s}function Gf(e,t){let n=Xf(e),{minY:r,maxY:o}=n.getCellBounds(t);return n.getRows().slice(r,o+1).some(s=>s.some(Mi))}function Kf(e,t){let n=Xf(e),{minX:r,maxX:o}=n.getCellBounds(t);return n.getRows().some(s=>s.slice(r,o+1).some(Mi))}var nc=class{cells;constructor(t=[]){this.cells=t}get rowCount(){return this.cells.length}get columnCount(){return Math.max(...this.cells.map(t=>t.length))}getCellAt=(t,n)=>this.getRowAt(n)[t];setCellAt=(t,n,r)=>{this.getRowAt(n)[t]=r};getRowAt=t=>(this.cells[t]===void 0&&(this.cells[t]=[]),this.cells[t]);getRows=()=>this.cells;getCellBounds=t=>{let n=this.columnCount,r=this.rowCount,o=-1,s=-1;for(let i=0;i<this.rowCount;i++){let a=this.getRowAt(i),c=a.indexOf(t);c!==-1&&(o=Math.max(o,a.lastIndexOf(t)),s=Math.max(s,i),n=Math.min(n,c),r=Math.min(r,i))}return{minX:n,minY:r,maxX:o,maxY:s}};merge=t=>{this.cells=this.getRows().concat(t.getRows())}};function Xf(e){let n=ye(e).TableGrid||nc,r=new n;e.tHead!==null&&r.merge(tc(e.tHead.rows)),Array.from(e.tBodies).forEach(s=>{r.merge(tc(s.rows))});let o=[];for(let s of Array.from(e.children))Yl(s)&&Ho(s,"tr")&&o.push(s);return r.merge(tc(o)),e.tFoot!==null&&r.merge(tc(e.tFoot.rows)),r}function tc(e){let t=new nc,n=[];for(let r=0;r<e.length;r++){let o=0;for(let s of Array.from(e[r].cells)){for(;t.getCellAt(o,r)||n[o];)!Mi(t.getCellAt(o,r))&&n[o]&&t.setCellAt(o,r,n[o]),o++;for(let i=o;i<o+s.colSpan;i++){jf(s)===0&&(n[i]=s,t.setCellAt(i,r,s));for(let a=r;a<r+jf(s);a++)Mi(t.getCellAt(i,a))||t.setCellAt(i,a,s)}o+=s.colSpan}for(let s=o;s<t.columnCount;s++){let i=n[s];i!==void 0&&!Mi(t.getCellAt(s,r))&&t.setCellAt(s,r,i)}}return t}function jf(e){let t=e.getAttribute("rowSpan");if(t===null||t.trim()==="")return 1;let n=Number(t);return isNaN(n)?1:n}function Mi(e){return e!==void 0&&Ho(e,"td")}function sr(e){let t=e.tagName?.toLowerCase();if(t==="code"||t==="pre"){let r=Yb(e);if(r)return r}let n=Yf(e);if(n===null){if(t==="dl")return"list";if(t==="form")return"form";if(t==="header")return"banner";if(t==="footer")return"contentinfo";if(t==="option")return"option";if(t==="textarea")return"textbox";if(t==="input"){let o=e;switch(o.type.toLowerCase()){case"checkbox":return"checkbox";case"radio":return"radio";case"button":case"submit":case"reset":case"image":return"button";case"number":return"spinbutton";case"range":return"slider";case"hidden":return null;default:return o.hasAttribute("list")?"combobox":"textbox"}}if(t==="select")return e.multiple?"listbox":"combobox";if(t==="svg"){if(e.getAttribute("aria-hidden")==="true")return null;let o=e.querySelector("title"),s=e.querySelector("desc"),i=e.hasAttribute("aria-label"),a=e.hasAttribute("role");return o||s||i||a||bs(e).length>0||e.getAttribute("tabindex")!==null?"img":null}if(bs(e).length>0){let o=e.tagName.toLowerCase();if(["div","span","li","p","i","em","strong","b"].includes(o))return Wb(e)}}if(t==="td"&&e.getAttribute("role")===null)return"cell";if(n!==null&&t==="th"){let r=e.getAttribute("role");if(r&&Qf(r))return r;let o=e;return o.scope==="col"||o.hasAttribute("aria-sort")?"columnheader":o.scope==="row"?"rowheader":"cell"}return n}function Wb(e){return xi(e)??null}function Yf(e){let t=e.getAttribute("role");if(t!==null)return Sf.includes(t)||!Qf(t)?null:t;let n=e.tagName.toLowerCase();return(Rf[n]??[]).find(o=>$b(e,o))||null}function $b(e,t){let n=wi[t],r=n?.selector;if(r&&rc(e,r))return!0;let o=n?.conditionalSelectors;return o?o.some(i=>rc(e,i.selector)&&i.conditions.every(c=>zb(e,c))):!1}function Vb(e,t){let n=(t||"").trim().replace(/^#/,"");if(!n)return null;try{let r=e.getRootNode?.();if(Dn(r)){let o=ye(e),s=`#${Ha(o,n)}`,i=Fa(r,s);if(i)return i}}catch{}return Ua(Z(e),n)}function zb(e,t){switch(t.type){case Be.ATTRIBUTE_GREATER_THAN:{let n=e.getAttribute(t.attribute);return n!==null&&Number(n)>t.value}case Be.ATTRIBUTE_LESS_THAN:{let n=e.getAttribute(t.attribute);return n!==null&&Number(n)<t.value}case Be.HAS_ACCESSIBLE_NAME:return e.hasAttribute("aria-label")?!0:(e.getAttribute("aria-labelledby")||"").split(/\s+/).filter(Boolean).some(r=>Vb(e,r)!=null);case Be.FORBIDDEN_ANCESTORS:return Wr(e,t.selector)===null;case Be.BOOLEAN_PROPERTY:return e[t.property]===t.value;case Be.PROPERTY_VALUE_MATCH:return t.values.some(n=>n===e[t.property]);case Be.ANCESTOR_ROLE_REQUIRED:{let n=e.parentElement;if(n===null)return!1;let r=Wr(n,t.tag);return r!==null&&Yf(r)===t.role}case Be.HAS_TABLE_COLUMN_DATA:{let n=Wr(e,"table");return n===null?!1:t.hasData===Kf(n,e)}case Be.HAS_TABLE_ROW_DATA:{let n=Wr(e,"table");return n===null?!1:t.hasData===Gf(n,e)}default:return jb(t),!1}}function jb(e){throw new Error(`unexpected value ${e}!`)}function Qf(e){return Kb(e)||Xb(e)||Gb(e)}function Gb(e){return If.has(e)}function Kb(e){return xf.has(e)}function Xb(e){return wi.hasOwnProperty(e)}function Yb(e){if(e.tagName!==Bo&&e.tagName!==Uo)return null;if(_i(e).some(r=>r==="click"||r==="copy"))return"button";let n=e.getAttribute("tabindex");return n!==null&&parseInt(n,10)>=0?"button":e.tagName===Uo||e.tagName===Bo&&e.closest("pre")?"code":null}var Qb={[jt.display]:[jt.beforeDisplay,jt.afterDisplay],[jt.content]:[jt.beforeContent,jt.afterContent]},Ql=new Map,Jb={minWidth:"min-width",minHeight:"min-height",backgroundColor:"background-color",borderWidth:"border-width",borderStyle:"border-style",boxShadow:"box-shadow",paddingTop:"padding-top",paddingRight:"padding-right",paddingBottom:"padding-bottom",paddingLeft:"padding-left",marginTop:"margin-top",marginRight:"margin-right",marginBottom:"margin-bottom",marginLeft:"margin-left",overflowX:"overflow-x",overflowY:"overflow-y"};function Zb(e,t){if(!Ql.has(e)){let n=Jb[t]||t.replace(/([A-Z])/g,"-$1").toLowerCase();Ql.set(e,n)}return Ql.get(e)}var ev={display:e=>e!=="block"&&e!=="inline"&&e!=="",visibility:e=>e!=="visible",opacity:e=>parseFloat(e)<1,position:e=>e!=="static",cursor:e=>e!=="auto"&&e!=="default"&&e!=="text",width:e=>e!=="auto"&&e!=="",height:e=>e!=="auto"&&e!=="",minWidth:e=>e!=="0px"&&e!=="",minHeight:e=>e!=="0px"&&e!=="",paddingTop:e=>parseFloat(e)>0,paddingRight:e=>parseFloat(e)>0,paddingBottom:e=>parseFloat(e)>0,paddingLeft:e=>parseFloat(e)>0,marginTop:e=>Math.abs(parseFloat(e))>5,marginRight:e=>Math.abs(parseFloat(e))>5,marginBottom:e=>Math.abs(parseFloat(e))>5,marginLeft:e=>Math.abs(parseFloat(e))>5,overflowX:e=>e!=="visible",overflowY:e=>e!=="visible",backgroundColor:e=>e!=="transparent"&&e!=="rgba(0, 0, 0, 0)"&&e!=="initial",color:e=>e!=="initial"&&e!=="inherit"&&e!=="",borderWidth:e=>e!=="0px"&&parseFloat(e)>0,borderStyle:e=>e!=="none"&&e!=="initial",boxShadow:e=>e!=="none"&&e!=="",outline:e=>e!=="none"&&e!==""&&!e.includes("0px")};function ep(e,t,n){let r=ev[e];return r?r(t,n):t.trim()!==""&&!["initial","inherit","unset"].includes(t)}function tp(e){let t={},n=ye(e);if(!At(e,n))return t;let r=n.getComputedStyle(e),o=new Map([[jt.beforeDisplay,n.getComputedStyle(e,"::before")],[jt.afterDisplay,n.getComputedStyle(e,"::after")],[jt.beforeContent,n.getComputedStyle(e,"::before")],[jt.afterContent,n.getComputedStyle(e,"::after")]]);for(let s in jt)if(isNaN(Number(s))){let i=jt[s],a=Zb(i,s),c=Qb[i];c?((i===jt.display||i===jt.content)&&Jf(r,a,i,s,t,e),Zf(o.get(c[0]),a,c[0],"beforeContent",t),Zf(o.get(c[1]),a,c[1],"afterContent",t)):Jf(r,a,i,s,t,e)}return t}function Jf(e,t,n,r,o,s){if(e){let i=e.getPropertyValue(t);i&&ep(r,i,s)&&(o[n]=i)}}function Zf(e,t,n,r,o){if(e){let s=e.getPropertyValue(t);(t==="content"&&s&&s!=="none"&&s!=='""'&&s!=="''"||s&&ep(r,s))&&(o[n]=s)}}function qo(e,t){let n=ye(e);if(!At(e,n))return!0;if(t&&Fr.has(t))return!1;if(e.hasAttribute("hidden")||Wr(e,"[hidden]")!==null||Wr(e,"[inert]")!==null)return!0;let r=n.getComputedStyle(e);if(r.display==="none"||r.visibility==="hidden"||r.visibility==="collapse"||e.getClientRects().length===0)return!0;let o=e.getBoundingClientRect(),s=1e6;return Math.abs(o.left)>s||Math.abs(o.top)>s}function Ni(e){return ir(e)&&e.classList.contains("jasmine_html-reporter")}function tv(e){let t=e.getAttribute("role");return t==="presentation"||t==="none"}function np(e){return e?e.split(/\s+/).map(t=>t.trim()).filter(Boolean).map(t=>t.replace(/^#/,"")):[]}function rp(e,t){let n=(t||"").trim().replace(/^#/,"");if(!n)return null;try{let o=e.getRootNode?.();if(Dn(o)){let s=ye(e),i=`#${Ha(s,n)}`,a=Fa(o,i);if(a)return a}}catch{}let r=Z(e);return Ua(r,n)}function Jl(e){let n=[];for(let r=0;r<arguments.length;r++){let o=arguments[r];if(Array.isArray(o))for(let s=0;s<o.length;s+=8192){let i=nv(o,s,s+8192),a=Jl.apply(null,i);for(let c=0;c<a.length;c++)n.push(a[c])}else n.push(o)}return n}function nv(e,t,n){return arguments.length<=2?Array.prototype.slice.call(e,t):Array.prototype.slice.call(e,t,n)}function op(e,t){return rv(e,t).concat(ov(e))}function rv(e,t){return Jl(eu(e).map(r=>dp(r)&&ir(r)?sp(r,t):r))}function sp(e,t){if(!e||qo(e,t))return[];if(!tv(e))return[e];let n=Array.from(e.children);return Jl(n.map(r=>sp(r,t)))}function ip(e){let t=np(e.getAttribute("aria-owns"));if(!t.length)return[];let n=[],r=new Set;for(let o of t){if(r.has(o))continue;r.add(o);let s=rp(e,o);s&&s!==e&&n.push(s)}return n}function ov(e){let t=ip(e);for(let n of t)n["aria-owned-by"]=e;return t}function ap(e){let t=ye(e),n=Z(e);if(e.getAttribute("role")!=="dialog"&&e.getAttribute("role")!=="alertdialog"||e.getAttribute("aria-modal")!=="true")return!1;let r=t.getComputedStyle(e);if(r?.position!=="fixed"&&r?.position!=="absolute"||parseInt(r?.zIndex,10)<=cv(e))return!1;let o=sv(e);return!o||!av(o)||!uv(e)||o.getAttribute("role")==="dialog"||e.getAttribute("role")==="dialog"?!1:lv(e)}function sv(e){return[e.previousElementSibling,e.nextElementSibling,...Array.from(e.children),...e.parentElement?[e.parentElement.previousElementSibling,e.parentElement.nextElementSibling]:[]].filter(n=>n!==null).find(iv)||null}function iv(e){if(qo(e))return!1;let n=ye(e).getComputedStyle(e);return(n?.position==="fixed"||n?.position==="absolute")&&n?.backgroundColor!=="rgba(0, 0, 0, 0)"&&n?.backgroundColor!=="transparent"&&n?.pointerEvents!=="none"}function av(e){let t=ye(e),n=e.getBoundingClientRect();return n.top<=0&&n.left<=0&&n.bottom>=t.innerHeight&&n.right>=t.innerWidth}function cv(e){let t=Z(e),n=ye(e),r=n?.getComputedStyle;if(!r)return 0;let o=Bl(t,"*").filter(s=>s!==e&&!qo(s)).map(s=>parseInt(r.call(n,s)?.zIndex,10)).filter(s=>Number.isFinite(s)&&!isNaN(s));return o.length?Math.max(...o):0}function lv(e){return e.querySelectorAll('a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])').length>0}function uv(e){let t=e.parentElement;if(!t)return!1;for(let n of Array.from(t.children))if(n!==e&&!qo(n)&&n.getAttribute("aria-hidden")!=="true")return!1;return!0}function dv(){try{let t=gt()?.querySelector?.("dialog:modal");return'[aria-modal="true"], dialog:modal'}catch{return'[aria-modal="true"]'}}var cp=dv();function fv(e){return e.getAttribute("aria-disabled")==="true"||e.hasAttribute("disabled")}function Zl(e){let t=e.getAttribute("href")||e.getAttribute("src")||e.getAttribute("data")||e.getAttribute("action");if(!t&&!e.tagName.includes("-"))try{let n=e;t=n.href||n.src||n.data||n.action||null}catch{return!1}if(!t)return!1;try{let n=Z(e),r=new URL(t,n.baseURI);return r.protocol==="javascript:"&&(r.pathname.trim()!==""||r.search.trim()!==""||r.hash.trim()!=="")}catch{return!1}}function lp(e){return Af.has(e)}function pv(e){let t=e.parentElement,n=Z(e);if(!(!t||t===n.body||t===n.documentElement))return en({targetElement:t,originatedFromParent:!0})}function zf({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:s,elementContext:i}){let a={nodeCategory:e.nodeType},c=t||fv(e),d=pv(e);if(d&&(a.parent=d),n){let Ne=ys[n];typeof Ne=="number"?a.semanticRole=Ne:a.semanticRole=n}if(c&&(a.isDisabled=!0),i){let{eventHandlerIndices:Ne,isEditableRegion:Dt}=i,rt=Ts(Ne);rt.length>0&&(a.eventHandlers=rt),Dt&&(a.isEditable=!0)}let p=hv(e);p&&Object.keys(p).length>0&&(a.ariaProperties=p);let u=gv(e);u&&Object.keys(u).length>0&&(a.ariaStates=u);let v=e.nodeName;v&&v.trim()&&(a.elementName=v);let h=tp(e);h&&Object.keys(h).length>0&&(a.computedStyles=h),qo(e)&&(a.isInvisible=!0);let g=mv(e,n);g&&Object.keys(g).length>0&&(a.preservedAttributes=g),e.draggable&&(a.isDraggable=!0),e.scrollWidth&&e.clientWidth&&e.scrollWidth>e.clientWidth&&(a.supportsHorizontalSwipe=!0),e.scrollHeight&&e.clientHeight&&e.scrollHeight>e.clientHeight&&(a.supportsVerticalSwipe=!0);let _=e.getAttribute("class");if(_?.trim()){_.includes("handle")&&(a.isDragHandle=!0),a.supportsHorizontalSwipe||(_.includes("horizontal")||_.includes("carousel"))&&(a.supportsHorizontalSwipe=!0),a.supportsVerticalSwipe||(_.includes("vertical")||_.includes("feed"))&&(a.supportsVerticalSwipe=!0),_.includes("dismissible")&&(a.supportsDismissSwipe=!0),(_.includes("long-press")||_.includes("hold")||_.includes("press-hold"))&&(a.supportsLongPress=!0);let Ne=a.inputType||a.preservedAttributes?.[yn.type];Ne==="submit"||Ne==="reset"||Ne==="clear"||(_.includes("submit")&&(a.preservedAttributes={...a.preservedAttributes||{},[yn.type]:"submit"}),_.includes("clear")&&(a.preservedAttributes={...a.preservedAttributes||{},[yn.type]:"clear"}),_.includes("reset")&&(a.preservedAttributes={...a.preservedAttributes||{},[yn.type]:"reset"}))}let A=kv({element:e});A&&A.length>0&&(a.labelReferences=A);let R=e.tagName;if(R&&(a.elementTag=R),vv(e)&&(a.hasFocus=!0),!o){let Ne=tu({element:e,semanticRole:n,parentDisabled:c,excludeLabels:r});Ne&&Ne.length>0&&(a.childElements=Ne)}let B=Av({element:e});B&&B.length>0&&(a.ownedElements=B);let D=$a(e);D&&(a.resourceLocator=D),(o||_s(e))&&(a.isFrameElement=!0),s&&s.length>0&&(a.frameContent=s);let F=e.type;F&&typeof F=="string"&&F.trim()&&(a.inputType=F);let C=e.placeholder;C&&typeof C=="string"&&C.trim()&&(a.placeholderText=C);let Q=e.value;Q&&typeof Q=="string"&&Q.trim()&&(a.elementValue=Q);let ae=wv({element:e,parentDisabled:t,semanticRole:n});if(ae&&ae.length>0&&(a.selectedOptions=ae),Wr(e,"select,datalist")&&(a.nearestSelectList=!0),Yl(e))a.elementNamespace=Ei.HTML;else if(bv(e)){a.elementNamespace=Ei.SVG,a.svgStructure=yv(e);let Ne=Tv(e);Ne&&Object.keys(Ne).length>0&&(a.preservedAttributes?a.preservedAttributes={...a.preservedAttributes,...Ne}:a.preservedAttributes=Ne)}let pe=r?void 0:Ev({element:e});pe&&pe.length>0&&(a.associatedLabels=pe);let xe=e.scope;xe&&typeof xe=="string"&&xe.trim()&&(a.tableScope=xe);let ge=xv({element:e});ge&&(a.tableCaption=ge);let Se=Sv({element:e});Se&&(a.figureCaption=Se);let We=Rv({element:e});return We&&(a.fieldsetLegend=We),Wr(e,"table")&&(a.nearestTable=!0),a}function mv(e,t){let n={},r=new Set(Object.values(yn).filter(a=>typeof a=="string")),o=new Set(Object.keys(Va).filter(a=>isNaN(Number(a)))),s=new Set(["_ngcontent","ng-reflect-*","data-v-*"]),i=e?.attributes?Array.from(e.attributes):[];for(let a of i){let c=a.name,d=a.value;if(c==="id"&&(!t||!Fr.has(t)))continue;let p;if(r.has(c)?p=c:c.startsWith("data-v-")?p="data-v-*":c.startsWith("ng-reflect-")?p="ng-reflect-*":c.startsWith("_ngcontent")&&(p="_ngcontent"),p){let u=d.trim()!=="",v=o.has(p);if(u||v){let h=yn[p],g=s.has(p)?"true":d;n[h]=g}}}if(!n[yn[Zt]]){let a=Wf(e);a&&(n[yn[Zt]]=a)}return n}function hv(e){return up(e,Ka,za)}function gv(e){return up(e,Xa,null)}function up(e,t,n){let r={};for(let o in t)if(isNaN(Number(o))){let s=t[o],a=`aria-${o.toLowerCase().replace(/_/g,"-")}`,c=e.getAttribute(a),d=!1;n!==null&&(d=Object.values(n).filter(u=>typeof u=="number").includes(s)),e.hasAttribute(a)&&d||c?.trim()?r[s]=c:a==="aria-level"&&Mf.includes(e.tagName.toLowerCase()?.trim())&&(r[s]=e.tagName.substring(1))}return r}function ir(e){return dp(e)&&e.nodeType===lo.ELEMENT}function oc(e){return e.nodeType===lo.TEXT}function dp(e){let t=typeof e;return t=="object"&&e!=null||t=="function"}function Yl(e){return ir(e)&&(!e.namespaceURI||e.namespaceURI===Nf)}function bv(e){return ir(e)&&e.namespaceURI===Lf}function _s(e){return e.tagName==="IFRAME"}function Ho(e,t){return"tagName"in e?e.tagName?.toLowerCase()===t:e.elementTag?.toLowerCase()===t}function Wr(e,t){if(e.closest)return e.closest(t);for(;!rc(e,t);){if(e.parentElement===null)return null;e=e.parentElement}return e}function rc(e,t){return e.matches?.(t)??e.msMatchesSelector?.(t)??e.webkitMatchesSelector(t)}function vv(e){let t=e.ownerDocument,n=t?.hasFocus()?t.activeElement:null;if(n){let r=n.getAttribute("aria-activedescendant");r&&(n=t.getElementById(r)||n)}return e===n}function yv(e){let t={},n=qr.text,r=qr.elText;e.textContent?.trim()&&(t[n]=e.textContent);let o=e.querySelector("title"),s=e.querySelector("img");o?.textContent?.trim()?t[r]=o.textContent:s?.alt?.trim()&&(t[r]=s.alt);let i=e.getAttribute("viewBox");i&&(t[qr.viewBox]=i);let a=e.querySelectorAll("path");a.length>0&&(t[qr.paths]=a.length,t[qr.pathData]=Array.from(a).slice(0,3).map(d=>d.getAttribute("d")).filter(Boolean).map(d=>d.substring(0,100)));let c={circles:e.querySelectorAll("circle").length,rects:e.querySelectorAll("rect").length,lines:e.querySelectorAll("line").length,polygons:e.querySelectorAll("polygon").length,polylines:e.querySelectorAll("polyline").length,ellipses:e.querySelectorAll("ellipse").length};return Object.entries(c).forEach(([d,p])=>{if(p>0){let u=qr[d];t[u]=p}}),Object.keys(t).length>0?t:void 0}function Tv(e){let t={};if(!e?.hasAttributes())return t;for(let n of Object.values(vs).filter(r=>typeof r=="number")){let r=vs[n];if(r){let o=r;if(vs.hasOwnProperty(o)&&e.hasAttribute(o)){let s=e.getAttribute(o);s?.trim()&&(t[n]=s)}}}return t}function _v({frameElement:e,parentDisabled:t,excludeLabels:n}){if(!ln.includeFrameContents)return[];let r=null;try{r=e.contentWindow?.document?.body||null}catch{return[]}if(!r)return[];let o=[];for(let s of eu(r))if(!(Ni(s)||fp(s))){if(ir(s)){let i=s,a=sr(i),c=On(i,a),{shouldCreate:d,shouldAnnotate:p}=sc(c);if(d){p&&uo(i);let u=en({targetElement:i,parentDisabled:t,semanticRole:a??void 0,excludeLabels:n,elementContext:c});u&&o.push(u)}else{let u=tu({element:i,semanticRole:a??void 0,parentDisabled:t,excludeLabels:n});o.push(...u)}}else if(oc(s)){let i=Ci(s);i&&o.push(i)}}return o}function eu(e){let t=ye(e);if(yf(e,t)){try{let n=e.assignedNodes({flatten:!0});if(n&&n.length)return n}catch{}return Array.from(e.childNodes)}try{let n=e.shadowRoot||Lo()?.getShadowRoot?.(e)||null;if(n){let r=Array.from(n.childNodes),o=Array.from(e.childNodes).filter(s=>!s.assignedSlot);return r.concat(o)}}catch{}return Array.from(e.childNodes)}function tu({element:e,semanticRole:t,parentDisabled:n,excludeLabels:r}){let o=[];for(let s of eu(e))if(!(Ni(s)||fp(s))){if(ir(s)){let i=s,a=sr(i),c=On(i,a);if(_s(i)){uo(i);let u=_v({frameElement:i,parentDisabled:n,excludeLabels:r}),v=en({targetElement:i,parentDisabled:n,semanticRole:a??void 0,excludeLabels:r,isFrameNode:!0,frameContentNodes:u,elementContext:c});v&&o.push(v);continue}let{shouldCreate:d,shouldAnnotate:p}=sc(c);if(d){p&&uo(i);let u=en({targetElement:i,parentDisabled:n,semanticRole:a??void 0,excludeLabels:r,elementContext:c});u&&o.push(u)}else{let u=tu({element:i,semanticRole:a??void 0,parentDisabled:n,excludeLabels:r});o.push(...u)}}else if(oc(s)){let i=Ci(s);i&&o.push(i)}}return o}function kv({element:e}){let t=np(e.getAttribute("aria-labelledby")),n=new Set;for(let r of t){let o=rp(e,r);if(!(!o||o===e)&&o){let s=sr(o),i=en({targetElement:o,semanticRole:s,elementContext:On(o,s)});n.add(i)}}return Array.from(n)}function wv({element:e,parentDisabled:t,semanticRole:n}){let r=[];return e&&(n&&n==="listbox"?r=Array.from(e.querySelectorAll('[role="option"][aria-selected="true"]')).map(o=>en({targetElement:o,parentDisabled:t,semanticRole:"option",elementContext:On(o,"option")})):Ho(e,"select")&&(r=Array.from(e.selectedOptions).map(o=>en({targetElement:o,parentDisabled:t,semanticRole:"option",elementContext:On(o,"option")})))),r}function Ev({element:e}){if(Cf.includes(e.tagName)){let t=Z(e),n=Bl(t,"label"),r=new Set;return Array.from(n).filter(o=>o!==e&&Iv(o,e)).map(o=>{let s=sr(o),i=en({targetElement:o,semanticRole:s,excludeLabels:!0,elementContext:On(o,s)});r.add(i)}),Array.from(r)}}function Iv(e,t){let n=e.control;return n!==void 0?n===t:e.htmlFor!==""&&e.htmlFor===t.id?!0:!!(e.htmlFor===""&&e.contains(t))}function xv({element:e}){if(Ho(e,"table")){let t=e.querySelector("caption");if(t&&t!==e){let n=sr(t);return en({targetElement:t,semanticRole:n,elementContext:On(t,n)})}}}function Sv({element:e}){if(Ho(e,"figure")){let t=e.querySelector("figcaption");if(t&&t!==e){let n=sr(t);return en({targetElement:t,semanticRole:n,elementContext:On(t,n)})}}}function Rv({element:e}){if(Ho(e,"fieldset")){let t=e.querySelector("legend");if(t&&t!==e){let n=sr(t);return en({targetElement:t,semanticRole:n,elementContext:On(t,n)})}}}function Av({element:e}){let t=new Set,n=ip(e);for(let r of n){let o=sr(r),s=en({targetElement:r,semanticRole:o,elementContext:On(r,o)});t.add(s)}return Array.from(t)}function sc(e){let{semanticRole:t,eventHandlerIndices:n,isEditableRegion:r,hasNodeWorthyHandlers:o,isLikelyStructuralContainer:s}=e,i=n.length>0&&n.some(u=>Pf.has(u)),c=!!t||!s&&(o||r),d=!!t&&Fr.has(t);return{shouldCreate:c,shouldAnnotate:c&&(d||r||i)}}function fp(e){if(!ir(e))return!1;let t=e,n=t.tagName;return ja.has(n)?!0:n===Bo||n===Uo?Cv(t):!1}function Cv(e){let t=ye(e),n=t?.getComputedStyle;if(!n||n.call(t,e).display==="none")return!0;let o=e.getBoundingClientRect();return o.width===0&&o.height===0&&!(typeof e.closest=="function"&&e.closest("pre"))||o.right<-1e3||o.left>t.innerWidth+1e3}function nu(e,t={}){return hf(t),Vf(),qf(),$f(e,{includeShadow:!0,includeIframes:ln.clearIframes}),Fo.initialize(ln.semanticIdStart),{rootNodes:pp(e),semanticNodes:Tr}}function pp(e){let t=[];try{let n=Z(e),o=Array.from(n.querySelectorAll(cp)).filter(s=>!qo(s)&&ap(s));if(o.length===0)t=ks({targetElement:e});else if(o.length===1){let s=o[0];s.contains(e)?t=ks({targetElement:e}):e.contains(s)?t=ks({targetElement:s}):t=ks({targetElement:e})}else t=ks({targetElement:e})}catch(n){throw console.error("Error constructing semantic tree",n),n}return t}function ks({targetElement:e,parentNode:t}){if(Ni(e)||mp(e))return[];let n=sr(e),r=On(e,n);if(_s(e))return[Nv({frameElement:e,role:n,parentNode:t,elementContext:r})];let o=0,{shouldCreate:s,shouldAnnotate:i}=sc(r);s&&(i&&uo(e),o=en({targetElement:e,parentDisabled:t?.isDisabled,semanticRole:n,elementContext:r}));let a=Tr[o],c=Mv(e,n,o?a:t);return o&&c.length>0&&(a.semanticChildren=c),o?[o]:c}function Mv(e,t,n){let r=[],o=op(e,t);for(let s of o)if(!(Ni(s)||mp(s))){if(ir(s)){let i=ks({targetElement:s,parentNode:n});r.push(...i)}else if(oc(s)&&Pv(s,n)){let i=Ci(s);i&&r.push(i)}}return r}function Nv({frameElement:e,role:t,parentNode:n,elementContext:r}){uo(e);let o=Lv(e);return en({targetElement:e,parentDisabled:n?.isDisabled,semanticRole:t,isFrameNode:!0,frameContentNodes:o,elementContext:r})}function Lv(e){if(!ln.includeFrameContents)return[];let t=Dv(e);return t.kind==="content"?pp(t.rootElement):Ov(e,t.reason)}function Dv(e){let t=null;try{t=e.contentDocument||e.contentWindow?.document||null}catch{return{kind:"unavailable",reason:"cross_origin_blocked"}}let n=t?.body||t?.documentElement||null;return n?{kind:"content",rootElement:n}:{kind:"unavailable",reason:"iframe_not_ready_or_empty"}}function Ov(e,t){let n=Fo.generateId(),r=Fo.generateId(),o=e.getAttribute("title")?.trim()||e.getAttribute("name")?.trim()||e.id?.trim()||"Embedded frame",s=$a(e)||void 0,i=t==="cross_origin_blocked"?"Iframe content is not accessible from this origin (cross-origin).":"Iframe content is not ready yet or has no readable DOM.";return Tr[n]={nodeCategory:lo.ELEMENT,semanticRole:"embedded_document_unavailable",computedName:o,syntheticKind:"embedded_container",frameContent:[r],...s?{resourceLocator:s}:{}},Tr[r]={nodeCategory:lo.TEXT,parent:n,textContent:i,preventTextMerge:!0,syntheticKind:"embedded_unavailable_text"},[n]}function Pv(e,t){let n=e.data.trim();if(!n||n==="")return!1;if(t?.semanticRole!==void 0&&t?.semanticRole!==null){let r=typeof t.semanticRole=="number"?Ii[t.semanticRole]:t.semanticRole;if(lp(r))return!1}return!0}function mp(e){if(!ir(e))return!1;let t=e,n=t.tagName;return ja.has(n)?!0:n===Bo||n===Uo?Bv(t):!1}function Bv(e){let t=ye(e);if(t.getComputedStyle(e).display==="none")return!0;let r=e.getBoundingClientRect();return r.width===0&&r.height===0&&!e.closest("pre")||r.right<-1e3||r.left>t.innerWidth+1e3}function ac(e){let t=e.activeElement;for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}function Uv(e){let t=e.getBoundingClientRect();return{x:t.left+t.width/2,y:t.top+t.height/2}}function Es(e,t,n){let r=Z(e,t),o=se(r,n);try{e.focus?.({preventScroll:!0})}catch{}if(ac(r)===e)return!0;try{let{x:s,y:i}=Uv(e),a=o.PointerEvent||PointerEvent,c=o.MouseEvent||MouseEvent;e.dispatchEvent(new a("pointerdown",{bubbles:!0,cancelable:!0,composed:!0,clientX:s,clientY:i,buttons:1,button:0,pointerType:"mouse"})),e.dispatchEvent(new c("mousedown",{bubbles:!0,cancelable:!0,composed:!0,clientX:s,clientY:i,buttons:1,button:0})),e.dispatchEvent(new c("mouseup",{bubbles:!0,cancelable:!0,composed:!0,clientX:s,clientY:i,buttons:0,button:0})),e.dispatchEvent(new a("pointerup",{bubbles:!0,cancelable:!0,composed:!0,clientX:s,clientY:i,buttons:0,button:0,pointerType:"mouse"})),(e.isContentEditable||Vn(e,o)||or(e,o)||e.getAttribute("contenteditable")==="true")&&e.dispatchEvent(new c("click",{bubbles:!0,cancelable:!0,composed:!0,clientX:s,clientY:i,button:0}))}catch{}try{e.focus?.({preventScroll:!0})}catch{}return ac(r)===e}function Li(e,t){let n=ye(e),r=or(e,n)?n.HTMLTextAreaElement.prototype:n.HTMLInputElement.prototype,o=Object.getOwnPropertyDescriptor(r,"value");o?.set?o.set.call(e,t):e.value=t}function $o(e,t,n="insertText"){let r=ye(e),o=r.InputEvent||(typeof InputEvent<"u"?InputEvent:null),s=r.Event||Event;try{o?e.dispatchEvent(new o("beforeinput",{bubbles:!0,cancelable:!0,composed:!0,data:String(t??""),inputType:n})):e.dispatchEvent(new s("beforeinput",{bubbles:!0,cancelable:!0,composed:!0}))}catch{try{e.dispatchEvent(new s("beforeinput",{bubbles:!0,cancelable:!0,composed:!0}))}catch{}}try{o?e.dispatchEvent(new o("input",{bubbles:!0,cancelable:!1,composed:!0,data:String(t??""),inputType:n})):e.dispatchEvent(new s("input",{bubbles:!0,cancelable:!1,composed:!0}))}catch{try{e.dispatchEvent(new s("input",{bubbles:!0,cancelable:!1,composed:!0}))}catch{}}try{e.dispatchEvent(new s("change",{bubbles:!0,cancelable:!0,composed:!0}))}catch{}}function Fv(e){let n=ye(e).KeyboardEvent||KeyboardEvent,r={key:"Enter",code:"Enter",keyCode:13,which:13,bubbles:!0,cancelable:!0,composed:!0},o=e.dispatchEvent(new n("keydown",r)),s=e.dispatchEvent(new n("keypress",r)),i=e.dispatchEvent(new n("keyup",r));return{canceled:!(o&&s&&i)}}function Wo(e){if(!e)return!1;let t=ye(e);if(or(e,t))return!e.disabled&&!e.readOnly;if(Vn(e,t)){let n=(e.type||"text").toLowerCase();return(n==="text"||n==="search"||n==="email"||n==="url"||n==="tel"||n==="password"||n==="number")&&!e.disabled&&!e.readOnly}return!1}function ru(e){let t=ye(e);if(!e||!At(e,t))return!1;if(e.isContentEditable)return!0;let n=e.getAttribute("contenteditable");return!!(n&&n!=="false"||e.getAttribute("role")==="textbox"&&!("value"in e))}function Hv(e,t){let n=e.getRootNode();return Dn(n)?n:Z(e)??t}function qv(e,t){let n=[];for(let r of t.split(/\s+/).filter(Boolean)){let o=e.getElementById?.(r)||e.querySelector?.(`#${CSS.escape(r)}`),s=ye(o);At(o,s)&&n.push(o)}return n}function vp(e,t){if(!e)return{kind:"none",el:null,via:"no-root"};if(Wo(e))return{kind:"input",el:e,via:"self-input"};if(ru(e))return{kind:"contenteditable",el:e,via:"self-contenteditable"};let n=Z(e)??t,r=se(n),o=Hv(e,n);if(bf(e,r)){let c=e.control;if(Wo(c))return{kind:"input",el:c,via:"label.control"};let d=e.htmlFor;if(d){let p=o.getElementById?.(d)||o.querySelector?.(`#${CSS.escape(d)}`);if(Wo(p))return{kind:"input",el:p,via:"label.for"}}}let s=e.getAttribute("aria-controls")||e.getAttribute("aria-owns");if(s)for(let c of qv(o,s)){if(Wo(c))return{kind:"input",el:c,via:"aria-controls/owns"};if(ru(c))return{kind:"contenteditable",el:c,via:"aria-controls/owns"};let d=c.querySelector?.("input,textarea");if(Wo(d))return{kind:"input",el:d,via:"aria-controls->desc"}}let i=e.querySelector?.("input,textarea");if(Wo(i))return{kind:"input",el:i,via:"descendant"};let a=e.shadowRoot||null;if(a){let c=a.querySelector?.("input,textarea");if(Wo(c))return{kind:"input",el:c,via:"open-shadow-input"};let d=a.querySelector?.('[contenteditable="true"],[contenteditable=""],[role="textbox"]');if(ru(d))return{kind:"contenteditable",el:d,via:"open-shadow-contenteditable"}}return e.getAttribute("role")==="textbox"&&!("value"in e)?{kind:"contenteditable",el:e,via:"role=textbox"}:{kind:"none",el:null,via:"not-found"}}function ws(e,t,n,r=!1){let o=Z(e,t),i=se(o,n).getSelection?.();if(!i)return!1;try{let a=o.createRange();return a.selectNodeContents(e),r&&a.collapse(!1),i.removeAllRanges(),i.addRange(a),!0}catch{return!1}}function Vo(e){return(e.textContent??"").replace(/\u00A0/g," ").trim()}var ic=e=>String(e??"").replace(/\s+/g," ").trim(),yp=new MessageChannel,Tp=[];yp.port1.onmessage=()=>{let e=Tp.shift();e&&e()};function hp(){return new Promise(e=>{Tp.push(e),yp.port2.postMessage(0)})}async function gp(e,t,n){await Promise.resolve();let r=Math.max(0,Math.min(4,Number(n)||0));for(let o=0;o<r;o++)e.hidden?await hp():await new Promise(s=>{try{t.requestAnimationFrame(()=>s())}catch{hp().then(s)}})}function Wv(e){let t=String(e??"");return t===" "?{code:"Space",which:32}:/^[a-z]$/i.test(t)?{code:`Key${t.toUpperCase()}`,which:t.toUpperCase().charCodeAt(0)}:/^[0-9]$/.test(t)?{code:`Digit${t}`,which:t.charCodeAt(0)}:{code:"",which:t.length===1?t.charCodeAt(0):0}}function bp(e,t,n,r){let o=Z(e,t),i=se(o,n).KeyboardEvent||KeyboardEvent,a=String(r??"");for(let c of a){let{code:d,which:p}=Wv(c),u={key:c,code:d,bubbles:!0,cancelable:!0,composed:!0,keyCode:p,which:p};e.dispatchEvent(new i("keydown",u)),e.dispatchEvent(new i("keypress",u)),e.dispatchEvent(new i("keyup",u))}}async function _p(e,t,n,r,o){let s=String(r??"");if(e.disabled||e.readOnly)return{success:!1,method:"type-native-setter",details:"disabled_or_readonly",allowFallback:!0};let i=String(e.value??""),a=Z(e,t),c=se(a,n),d=Es(e,a,c),p=Number.isFinite(Number(o?.settleFrames))?Math.max(0,Math.min(4,Number(o?.settleFrames))):a.hidden?1:2,u=!!o?.useKeyFallback,v=Number.isFinite(Number(o?.keyFallbackMaxLen))?Number(o?.keyFallbackMaxLen):140,h=u&&s.length>0&&s.length<=v;Li(e,s),$o(e,s,"insertReplacementText"),h&&bp(e,a,c,s),await gp(a,c,p);let g=String(e.value??""),_=ic(i),A=ic(g),R=ic(s),B=_===R,D=A===R,F=g!==i,C=s.length>0&&!B&&g===i,Q=1;if(!B&&!D&&!F){Q=2;try{e.focus?.({preventScroll:!0}),e.select?.()}catch{}let ge=!1;try{a.execCommand?.("selectAll",!1,void 0),ge=!!a.execCommand?.("insertText",!1,s)}catch{ge=!1}if(!ge)try{Li(e,s)}catch{}try{$o(e,s,"insertReplacementText")}catch{}h&&bp(e,a,c,s),await gp(a,c,p),g=String(e.value??"")}let re=ic(g)===R,pe=g!==i;C=s.length>0&&!B&&g===i;let xe=B||re||pe;return{success:xe,method:"type-native-setter",details:`focus=${d};attempts=${Q};settleFrames=${p};beforeLen=${i.length};afterLen=${g.length};changed=${pe};alreadyCorrect=${B};nowCorrect=${re};reverted=${C};keyFallback=${h}`,allowFallback:xe?void 0:!0}}function $v(e,t,n){let o=ye(e).InputEvent||InputEvent,s=new o("beforeinput",{bubbles:!0,cancelable:!0,composed:!0,data:t,inputType:n});return{ok:e.dispatchEvent(s),defaultPrevented:s.defaultPrevented}}function kp(e,t,n,r){let o=Z(e,n),s=se(o,r),i=s.InputEvent||InputEvent,a=s.Event||Event,c=String(t??""),d=Vo(e),p=Es(e,o,s),u=ws(e,o,s,!0),v=$v(e,c,"insertText"),h=!1,g="execCommand",_=!1,A=()=>{_=!0};try{e.addEventListener("input",A,{capture:!0})}catch{}if(v.ok&&!v.defaultPrevented)try{h=!!o.execCommand?.("insertText",!1,c)}catch{}if(!h)try{let D=s.getSelection?.(),F=D&&D.rangeCount?D.getRangeAt(0):null;if(!F||!e.contains(F.commonAncestorContainer)){ws(e,o,s,!0);let C=s.getSelection?.();F=C&&C.rangeCount?C.getRangeAt(0):null}F&&(F.insertNode(o.createTextNode(c)),F.collapse(!1),D?.removeAllRanges(),D?.addRange(F),h=!0,g="range")}catch{}if(h&&!_){try{e.dispatchEvent(new i("input",{bubbles:!0,cancelable:!1,composed:!0,data:c,inputType:"insertText"}))}catch{try{e.dispatchEvent(new a("input",{bubbles:!0,cancelable:!1,composed:!0}))}catch{}}try{e.dispatchEvent(new a("change",{bubbles:!0,cancelable:!0,composed:!0}))}catch{}}try{e.removeEventListener("input",A,{capture:!0})}catch{}let R=Vo(e);return{success:R!==d||!!c&&R.includes(c),method:`type-contenteditable-${g}`,details:`focus=${p};selectedWithin=${u};inserted=${h}`}}function wp(e){let{canceled:t}=Fv(e);if(t)return{submitted:!1,method:"enter-handled"};let n=e.form||e.closest?.("form");return n?(n.requestSubmit?.()??n.submit?.(),{submitted:!0,method:"enter->form-submit"}):{submitted:!1,method:"enter-dispatched"}}function Ep(e,t,n){if(e.disabled||e.readOnly)return{success:!1,method:"clear-native-setter",details:"disabled_or_readonly",allowFallback:!0};let r=Z(e,t),o=se(r,n),s=String(e.value??""),i=Es(e,r,o);Li(e,""),$o(e,"","deleteByCut");let a=String(e.value??""),c=a!==s;return{success:c||a.length===0,method:"clear-native-setter",details:`focus=${i};beforeLen=${s.length};afterLen=${a.length};changed=${c}`}}function Ip(e,t,n){let r=Z(e,t),o=se(r,n),s=Vo(e),i=Es(e,r,o),a=ws(e,r,o,!1),c=!1,d="execCommand";try{c=!!r.execCommand?.("delete",!1,void 0)}catch{c=!1}if(!c)try{let h=o.getSelection?.(),g=h&&h.rangeCount?h.getRangeAt(0):null;(!g||!e.contains(g.commonAncestorContainer))&&ws(e,r,o,!1);let _=o.getSelection?.(),A=_&&_.rangeCount?_.getRangeAt(0):null;A&&(A.deleteContents(),A.collapse(!1),_?.removeAllRanges(),_?.addRange(A),c=!0,d="range")}catch{}if(!c)try{e.textContent="",c=!0,d="textContent"}catch{}$o(e,"","deleteByCut");let p=Vo(e),u=p!==s;return{success:c||u||p.length===0,method:`clear-contenteditable-${d}`,details:`focus=${i};selectedWithin=${a};cleared=${c};changed=${u}`}}function xp(e,t){if(e===t||e.contains(t))return!0;let n=t;for(;n;){let r=n.getRootNode?.();if(Dn(r)){let o=r.host;if(o===e||e.contains(o))return!0;n=o;continue}n=n.parentNode||null}return!1}var cc;(function(e){e.FLASH_LITE="Gemini Flash Lite",e.FLASH="Gemini Flash",e.PRO="Gemini Pro"})(cc||(cc={}));var Sp;(function(e){e[e.NativeHostConnected=0]="NativeHostConnected",e[e.NativeHostDisconnected=1]="NativeHostDisconnected"})(Sp||(Sp={}));var Vv=["image/png","image/jpeg","image/webp"],zv=["application/pdf","text/plain"],gx=[...Vv,...zv];var Ot;(function(e){e.ACT="act_on_tab",e.CRAWL="crawl_and_extract_from_tab",e.EXTRACT="extract_from_tab",e.SHEETS_WORKFLOW="sheets_workflow",e.INFER_SHEET_DATA="infer_sheet_data",e.GRAPHBOT="graph_bot",e.PDF_FILLER="pdf_filler",e.CUSTOM_TOOL_GENERATOR="custom_tool_generator",e.WEBPAGE_GENERATOR="webpage_generator",e.GOOGLE_DOC_GENERATOR="google_doc_generator",e.GOOGLE_SLIDES_GENERATOR="google_slides_generator",e.PROCESS_TEXT="process_text",e.CREATE_SHEET_FROM_DATA="create_sheet_from_data",e.ROVER_EXTERNAL_READ_CONTEXT="rover_external_read_context",e.ROVER_EXTERNAL_ACT_CONTEXT="rover_external_act_context",e.CONFIGURE_API_KEY="configure_api_key",e.TASK_COMPLETE="task_complete",e.ASK_USER="ask_user",e.EXECUTE_MULTIPLE_TOOLS="execute_multiple_tools",e.QUERY_RTRVR_AI_DOCUMENTATION="query_rtrvr_ai_documentation"})(Ot||(Ot={}));var Ct;(function(e){e.PLANNER="Planner",e.AGENTIC_SEEK="Agentic Action",e.CRAWL_PAGES="Crawl Pages",e.EXTRACT_PAGE="Extract Page",e.SHEETS_WORKFLOW="Sheets Workflow",e.INFER_SHEET_DATA="Infer Sheet Data",e.MULTI_STEPS="Multi Steps",e.PDF_FILLER="PDF Filler",e.CUSTOM_TOOL_GENERATOR="Custom Tool Generator",e.WEBPAGE_GENERATOR="WebPage Generator",e.GOOGLE_DOC_GENERATOR="Google Doc Generator",e.GOOGLE_SLIDES_GENERATOR="Google Slides Generator",e.PROCESS_TEXT="Process Text",e.CREATE_SHEET_FROM_DATA="Create Sheet From Data",e.ROVER_EXTERNAL_READ_CONTEXT="Rover External Read Context",e.ROVER_EXTERNAL_ACT_CONTEXT="Rover External Act Context",e.EXECUTE_MULTIPLE_TOOLS="Execute Multiple User Tools",e.CONFIGURE_API_KEY="Configure Gemini API Key",e.QUERY_RTRVR_AI_DOCUMENTATION="query_rtrvr_ai_documentation"})(Ct||(Ct={}));var bx={[Ot.ACT]:Ct.AGENTIC_SEEK,[Ot.CRAWL]:Ct.CRAWL_PAGES,[Ot.EXTRACT]:Ct.EXTRACT_PAGE,[Ot.SHEETS_WORKFLOW]:Ct.SHEETS_WORKFLOW,[Ot.INFER_SHEET_DATA]:Ct.INFER_SHEET_DATA,[Ot.PDF_FILLER]:Ct.PDF_FILLER,[Ot.CUSTOM_TOOL_GENERATOR]:Ct.CUSTOM_TOOL_GENERATOR,[Ot.WEBPAGE_GENERATOR]:Ct.WEBPAGE_GENERATOR,[Ot.GOOGLE_DOC_GENERATOR]:Ct.GOOGLE_DOC_GENERATOR,[Ot.GOOGLE_SLIDES_GENERATOR]:Ct.GOOGLE_SLIDES_GENERATOR,[Ot.PROCESS_TEXT]:Ct.PROCESS_TEXT,[Ot.CREATE_SHEET_FROM_DATA]:Ct.CREATE_SHEET_FROM_DATA,[Ot.ROVER_EXTERNAL_READ_CONTEXT]:Ct.ROVER_EXTERNAL_READ_CONTEXT,[Ot.ROVER_EXTERNAL_ACT_CONTEXT]:Ct.ROVER_EXTERNAL_ACT_CONTEXT,[Ot.EXECUTE_MULTIPLE_TOOLS]:Ct.EXECUTE_MULTIPLE_TOOLS,[Ot.CONFIGURE_API_KEY]:Ct.CONFIGURE_API_KEY,[Ot.QUERY_RTRVR_AI_DOCUMENTATION]:Ct.QUERY_RTRVR_AI_DOCUMENTATION};var ou=200;var jv=30,Gv=320,Kv=0,Xv=50,Yv=1,vx=cc.FLASH;var yx=Ct.PLANNER;var su="application/pdf",iu="application/gsheet";var Tx=20*1024*1024;var Is={maxParallelTabs:4,pageLoadDelay:2e3,disableAutoScroll:!1,makeNewTabsActive:!1,writeRowProcessingTime:!1,totalBudgetMs:25e3,pageDataTimeoutMs:22e3,adaptiveSettleDebounceMs:jv,adaptiveSettleMaxWaitMs:Gv,adaptiveSettleRetries:Kv,sparseTreeRetryDelayMs:Xv,sparseTreeRetryMaxAttempts:Yv,pdfTextSelectionTimeoutMs:12e3,onlyTextContent:!1};var Qv=1,Jv=9,Zv=11,cu="application/gdoc",xs="text/html",lc="text/plain";function ey(e){return!!e&&typeof e=="object"&&e.nodeType===Jv}function Rp(e){return!!e&&typeof e=="object"&&e.nodeType===Qv}function ty(e){return!!e&&typeof e=="object"&&e.nodeType===Zv&&typeof e.host=="object"&&typeof e.mode=="string"}function Ap(e){return Rp(e)&&String(e.tagName).toUpperCase()==="IFRAME"}function au(e){let t;if(typeof e=="number")t=e;else if(typeof e=="bigint")t=Number(e);else if(typeof e=="string")t=Number(e.trim());else return null;if(!Number.isFinite(t))return null;let n=Math.trunc(t);return n<=0?null:n}function ny(e){try{let t=e.shadowRoot;return t||globalThis?.chrome?.dom?.openOrClosedShadowRoot?.(e)||null}catch{return null}}function ry(e,t,n={}){let r=n.traverseShadow!==!1,o=n.traverseIframes!==!1,s=n.requireOwnerDocument,i=[e],a=new WeakSet;for(;i.length;){let c=i.pop();if(c&&typeof c=="object"){if(a.has(c))continue;a.add(c)}if(ey(c)){let u=c.documentElement||c.body;u&&i.push(u);continue}if(ty(c)){let u=c.children;if(u&&u.length)for(let v=u.length-1;v>=0;v--)i.push(u[v]);continue}if(!Rp(c))continue;let d=c;if(s&&d.ownerDocument!==s)continue;let p=d.getAttribute?.(Zt);if(p&&Si(p)===t)return d;if(r)try{let u=ny(d);u&&i.push(u)}catch{}if(o&&Ap(d))try{let u=yi(d);u&&i.push(u)}catch{}for(let u=d.lastElementChild;u;u=u.previousElementSibling)i.push(u)}return null}function ar(e,t,n={}){let r=au(t);if(!r)return null;let o=Ai(r);return o&&(!n.requireOwnerDocument||o.ownerDocument===n.requireOwnerDocument)?o:ry(e,r,{requireOwnerDocument:n.requireOwnerDocument,traverseShadow:n.traverseShadow,traverseIframes:n.traverseIframes})}function lu(e=document){return e.querySelector('embed[type="application/pdf"], embed[type="application/x-google-chrome-pdf"]')}function Cp(e){if(e==null)return[];if(Array.isArray(e)){let t=[];for(let n of e){let r=au(n);r&&t.push(r)}return t}if(typeof e=="number"||typeof e=="bigint"){let t=au(e);return t?[t]:[]}if(typeof e=="string"){let t=e.match(/\d+/g);return t?t.map(r=>parseInt(r,10)).filter(r=>Number.isFinite(r)&&r>0):[]}if(typeof e=="object"){let t=e.path??e.ids??e.iframe_path;if(t!==void 0)return Cp(t)}return[]}function Ss(e,t){let n=Cp(t),r=e.defaultView||window;if(!n.length)return{doc:e,win:r,iframePath:n,resolvedPath:[],unresolvedPath:[]};let o=e,s=[];for(let i=0;i<n.length;i++){let a=n[i],c=n.length===1,d=ar(o,a,{requireOwnerDocument:c?void 0:o,traverseShadow:!0,traverseIframes:c});if(!d||!Ap(d))return{doc:o,win:o.defaultView||r,iframePath:n,resolvedPath:s,unresolvedPath:n.slice(i)};let p=null;try{p=yi(d)||null}catch{p=null}if(!p)return{doc:o,win:o.defaultView||r,iframePath:n,resolvedPath:s,unresolvedPath:n.slice(i)};s.push(a),o=p}return{doc:o,win:o.defaultView||r,iframePath:n,resolvedPath:s,unresolvedPath:[]}}function Mp(e){return e==="application/pdf"||e==="application/x-pdf"||e==="application/x-google-chrome-pdf"}function oy(e){let t={...Is,...e??{}},n=Number(e?.pdfTextSelectionTimeoutMs);return Number.isFinite(n)&&(t.pdfTextSelectionTimeoutMs=Math.floor(n)),t.totalBudgetMs!==void 0&&(t.totalBudgetMs=Math.max(1500,Math.floor(t.totalBudgetMs))),t.pageDataTimeoutMs!==void 0&&(t.pageDataTimeoutMs=Math.max(500,Math.floor(t.pageDataTimeoutMs))),t.pdfTextSelectionTimeoutMs!==void 0&&(t.pdfTextSelectionTimeoutMs=Math.max(150,Math.floor(t.pdfTextSelectionTimeoutMs))),t.adaptiveSettleDebounceMs!==void 0&&(t.adaptiveSettleDebounceMs=Math.max(20,Math.min(500,Math.floor(t.adaptiveSettleDebounceMs)))),t.adaptiveSettleMaxWaitMs!==void 0&&(t.adaptiveSettleMaxWaitMs=Math.max(120,Math.min(5e3,Math.floor(t.adaptiveSettleMaxWaitMs)))),t.adaptiveSettleRetries!==void 0&&(t.adaptiveSettleRetries=Math.max(0,Math.min(6,Math.floor(t.adaptiveSettleRetries)))),t.sparseTreeRetryDelayMs!==void 0&&(t.sparseTreeRetryDelayMs=Math.max(40,Math.min(1e3,Math.floor(t.sparseTreeRetryDelayMs)))),t.sparseTreeRetryMaxAttempts!==void 0&&(t.sparseTreeRetryMaxAttempts=Math.max(0,Math.min(4,Math.floor(t.sparseTreeRetryMaxAttempts)))),t}var sy=["disableAutoScroll","onlyTextContent","totalBudgetMs","pageDataTimeoutMs","pdfTextSelectionTimeoutMs","adaptiveSettleDebounceMs","adaptiveSettleMaxWaitMs","adaptiveSettleRetries","sparseTreeRetryDelayMs","sparseTreeRetryMaxAttempts"];function uc(e){if(!e||typeof e!="object")return;let t=e,n={};typeof t.disableAutoScroll=="boolean"&&(n.disableAutoScroll=t.disableAutoScroll),typeof t.onlyTextContent=="boolean"&&(n.onlyTextContent=t.onlyTextContent);let r=["totalBudgetMs","pageDataTimeoutMs","pdfTextSelectionTimeoutMs","adaptiveSettleDebounceMs","adaptiveSettleMaxWaitMs","adaptiveSettleRetries","sparseTreeRetryDelayMs","sparseTreeRetryMaxAttempts"];for(let i of r){let a=Number(t[i]);Number.isFinite(a)&&(n[i]=Math.trunc(a))}if(!Object.keys(n).length)return;let o=oy(n),s={};for(let i of sy)n[i]!==void 0&&o[i]!==void 0&&(s[i]=o[i]);return Object.keys(s).length?s:void 0}function iy(){return Date.now()}function Mt(e){return!e||!Number.isFinite(e)?Number.POSITIVE_INFINITY:Math.max(0,e-iy())}async function Np(e,t,n){if(!Number.isFinite(e)||e<=0)return;let r=Mt(n);r<=0||r<e+40||await Pt(e,t)}async function Rs(e,t,n){let r=Math.max(0,Math.floor(t));return r?await Promise.race([e.then(s=>({ok:!0,value:s})),(async()=>(await Pt(r,n),{ok:!1,reason:"timeout"}))()]):{ok:!1,reason:"timeout"}}var Pt=(()=>{let e=new MessageChannel,t=[];e.port1.onmessage=()=>{let r=t.shift();r&&r()};let n=()=>new Promise(r=>{t.push(r),e.port2.postMessage(0)});return async(r,o)=>{let s=Number(r);if(!Number.isFinite(s)||s<=0)return;if(!o.hidden){let a=o.defaultView||window,c=a.setTimeout?a.setTimeout.bind(a):setTimeout;await new Promise(d=>c(d,s));return}let i=Date.now();for(;Date.now()-i<s;)await n()}})();var ay=3e4;function Lp(e){return(String(e??"").replace(/\\/g,"/").split("/").pop()||"upload").replace(/[\u0000-\u001f\u007f]/g,"").trim()||"upload"}var uu=class extends Error{url;status;statusText;bodySnippet;constructor(t,n){super(t),this.name="FetchFileError",this.url=n.url,this.status=n.status,this.statusText=n.statusText,this.bodySnippet=n.bodySnippet}};function cy(e){return e&&e.split(";")[0].trim()||"application/octet-stream"}function ly(e){if(!e)return;let t=/filename\*\s*=\s*UTF-8''([^;]+)/i.exec(e);if(t?.[1])try{return decodeURIComponent(t[1].trim().replace(/^\"(.*)\"$/,"$1"))}catch{}let n=/filename\s*=\s*(\"?)([^\";]+)\1/i.exec(e);if(n?.[2])return n[2].trim()}function du(e,t){try{let r=(t??window).URL||URL,s=new r(e).pathname.match(/\/o\/(.+?)(\?|$)/);if(s?.[1]){let a=decodeURIComponent(s[1]).split("/");return a[a.length-1].replace(/^\d+-/,"")}}catch{}}function Dp(e){let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}async function uy(e,t={},n,r=fetch){let o=new AbortController,s=ay,i=!1,a=()=>{};if(n){let d=!1;a=()=>{d=!0},(async()=>{try{if(await Pt(s,n),d)return;i=!0,o.abort()}catch{}})().catch(()=>{})}else{let d=setTimeout(()=>{i=!0,o.abort()},s);a=()=>clearTimeout(d)}let c=new Headers(t.headers);c.has("Accept")||c.set("Accept","*/*");try{let d=await r(e,{method:"GET",redirect:t.redirect??"follow",cache:t.cache??"no-store",mode:t.mode??"cors",credentials:t.credentials??"include",...t,headers:c,signal:o.signal});if(!d.ok){let h=await d.text().catch(()=>"");throw new uu(`Fetch failed (${d.status})`,{url:e,status:d.status,statusText:d.statusText,bodySnippet:h.slice(0,256)})}let p=await d.arrayBuffer(),u=cy(d.headers.get("content-type")),v=ly(d.headers.get("content-disposition"))||du(e);return{bytes:p,mimeType:u,fileName:v}}finally{a()}}async function Op(e,t,n){return await uy(t,{referrer:n??void 0,referrerPolicy:"strict-origin-when-cross-origin"})}var bt={plannerHistory:16,prevSteps:8,uiMessages:40,timelineEvents:60,localPersistBytes:131072,snapshotBytes:262144};var Pp={activation:"on_demand",idleCloseMs:3e4,fallbackPollMinMs:2e3,fallbackPollMaxMs:15e3,maxInflightCommands:1};var vt;(function(e){e.UP="UP",e.DOWN="DOWN",e.LEFT="LEFT",e.RIGHT="RIGHT",e.TOP="TOP",e.BOTTOM="BOTTOM"})(vt||(vt={}));var Gt;(function(e){e.START="START",e.CENTER="CENTER",e.END="END",e.NEAREST="NEAREST"})(Gt||(Gt={}));function Up(e){if(!e)return Gt.CENTER;let t=typeof e=="string"?e.toUpperCase():String(e).toUpperCase();return Gt&&t in Gt?Gt[t]:Gt.CENTER}function fu(e){return globalThis.CSS&&typeof globalThis.CSS.escape=="function"?globalThis.CSS.escape(e):e.replace(/([ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g,"\\$1")}function As(e,t){if(!e)return"";let n=Z(e,t);if(e===n.documentElement)return"html";if(e===n.body)return"body";if(e.id)return`#${fu(e.id)}`;let r=[],o=e;for(;o&&o!==n.body&&o!==n.documentElement;){let s=o.tagName.toLowerCase();if(o.id){s+=`#${fu(o.id)}`,r.unshift(s);break}let a=(o.classList&&o.classList.length?Array.from(o.classList):(o.className||"").toString().split(/\s+/).filter(Boolean)).filter(c=>c&&c.length<=48).sort((c,d)=>c.length-d.length).slice(0,3).map(fu);if(a.length)s+="."+a.join(".");else{let c=o.parentElement;if(c){let d=Array.from(c.children).filter(p=>p.tagName===o.tagName);if(d.length>1){let p=d.indexOf(o)+1;s+=`:nth-of-type(${p})`}}}r.unshift(s),o=o.parentElement}return r.join(" > ")}function zo(e){return e.scrollingElement||e.documentElement||e.body}function dc(e,t,n,r,o){let s=Z(e,t),i=se(s,n),a=zo(s),c=e===s.documentElement||e===s.body||e===a,d=c?a:e,p=c?i.innerHeight:d.clientHeight,u=c?i.innerWidth:d.clientWidth,v=o??p*.8;switch(r){case vt.DOWN:{d.scrollTop+=v;break}case vt.UP:{d.scrollTop=Math.max(0,d.scrollTop-v);break}case vt.LEFT:return d.scrollLeft=Math.max(0,d.scrollLeft-(o??u*.8)),{success:!0,scrollLeft:d.scrollLeft};case vt.RIGHT:return d.scrollLeft+=o??u*.8,{success:!0,scrollLeft:d.scrollLeft};default:return{success:!1,error:`Unsupported scroll direction: ${String(r)}`}}let h=d.scrollHeight,g=c?i.innerHeight:d.clientHeight,_=h-g;return{success:!0,scrollTop:d.scrollTop,isAtTop:d.scrollTop<=5,isAtBottom:d.scrollTop>=_-5}}function dy(e,t,n){let r=Z(e,t),o=se(r,n),s=zo(r),i=e;for(;i&&i!==r.body&&i!==r.documentElement;){let c=o.getComputedStyle(i).overflowY;if((c==="auto"||c==="scroll"||c==="overlay")&&i.scrollHeight>i.clientHeight+5)return i;i=i.parentElement}return s}function Bp(e,t,n){let r=Z(e,t),o=se(r,n),s=zo(r),i=e===r.documentElement||e===r.body||e===s,a=i?s:e,c=a.scrollHeight,d=i?o.innerHeight:a.clientHeight,p=c-d;return a.scrollTop>=p-5}function pu(e,t,n,r){let o=Z(e,t),s=se(o,n),i=zo(o),a=dy(e,o,s),c=a===o.documentElement||a===o.body||a===i,d=c?i:a,p=e.getBoundingClientRect(),u=c?new(s.DOMRect||DOMRect)(0,0,s.innerWidth,s.innerHeight):a.getBoundingClientRect(),v=c?s.innerHeight:a.clientHeight,h=24,g=p.top-u.top,_=d.scrollTop+g,A;switch(r){case Gt.START:A=_-h;break;case Gt.END:A=_+p.height-v+h;break;case Gt.NEAREST:{if(p.top>=u.top&&p.bottom<=u.bottom)return{success:!0,scrollTop:d.scrollTop,isAtTop:d.scrollTop<=5,isAtBottom:Bp(d,o,s)};p.top<u.top?A=_-h:A=_+p.height-v+h;break}case Gt.CENTER:default:A=_-v/2+p.height/2;break}let R=d.scrollHeight-v;return d.scrollTop=Math.max(0,Math.min(A,R)),{success:!0,scrollTop:d.scrollTop,isAtTop:d.scrollTop<=5,isAtBottom:Bp(d,o,s)}}function Fp(e){let t=Number(e);if(!Number.isFinite(t))return null;let n=Math.trunc(t);return n>0?n:null}function Hp(e){let t=[];for(let n of La){let r=e?.[n];if(r==null)continue;if(Array.isArray(r)){for(let s of r){let i=Fp(s);i!=null&&t.push(i)}continue}let o=Fp(r);o!=null&&t.push(o)}return Array.from(new Set(t))}function fy(e){return Hp(e).length>0}function py(e){let t=Hp(e);return t.length?t[0]:null}var my=new Set([H.click_element,H.type_into_element,H.type_and_enter,H.hover_element,H.right_click_element,H.double_click_element,H.press_key,H.scroll_page,H.scroll_to_element,H.mouse_wheel,H.drag_element,H.drag_and_drop,H.swipe_element,H.long_press_element,H.adjust_slider,H.select_dropdown_value,H.clear_element,H.focus_element,H.check_field_validity,H.select_text,H.copy_text,H.paste_text,H.pinch_zoom,H.upload_file,H.dispatch_pointer_path]);(()=>{let e="__RTRVR_ACTION_EXECUTOR__";if(window[e])return;window[e]=!0;try{document.documentElement?.setAttribute(ql,"1")}catch{}let n="__RTRVR_INTERNAL__";try{window.__RTRVR_INTERNAL_KEY__=window.__RTRVR_INTERNAL_KEY__||n}catch{}let r=window.__RTRVR_INTERNAL_KEY__||n,o=window[r],s=o&&typeof o=="object"?o:{};if(!o)try{Object.defineProperty(window,r,{value:s,writable:!1,configurable:!1,enumerable:!1})}catch{window[r]=s}async function i(f){let w={};try{let E=ff[f.opcode];if(!E)throw new Error(`Unknown tool opcode: ${f.opcode}`);let I={...f.call,name:E};w=(await _({tabIndex:f.tabIndex,call:I,elementData:g(f.elementData),payload:f.payload}))[0]?.response??{success:!1,error:"Empty tool response",allowFallback:!0}}catch(E){w={success:!1,error:E?.message||String(E),allowFallback:!0}}return w}try{Object.defineProperty(s,"actions",{value:Object.freeze({execute:i}),writable:!1,configurable:!1,enumerable:!1})}catch{}let a="__RTRVR_UPLOAD_BYTES_REQ__",c="__RTRVR_UPLOAD_BYTES_RES__",d="__RTRVR_UPLOAD_BYTES_BRIDGE__",p="__RTRVR_WINDOW_MESSAGE_MUX__";function u(f){let w=f,E=w[p];if(!E||typeof E!="object"){E={handlers:new Set,installed:!1};try{Object.defineProperty(w,p,{value:E,enumerable:!1,configurable:!1})}catch{w[p]=E}}if(!E.installed){E.installed=!0,f.addEventListener("message",I=>{if(I.source===f)for(let y of Array.from(E.handlers))try{y(I)}catch{}},!0);try{f.addEventListener("pagehide",()=>{let y=f[d]?.pending;if(y)for(let[b,k]of y){try{k.cancelTimeout()}catch{}k.reject(new Error("pagehide: upload bytes request canceled")),y.delete(b)}},!0)}catch{}}return E}function v(f){let w=f,E=w[d];if(!E||typeof E!="object"){E={pending:new Map};try{Object.defineProperty(w,d,{value:E,enumerable:!1,configurable:!1})}catch{w[d]=E}u(f).handlers.add(y=>{let b=y?.data;if(!b||typeof b!="object"||b.type!==c)return;let k=String(b.requestId||"");if(!k)return;let x=E.pending.get(k);if(!x)return;E.pending.delete(k);try{x.cancelTimeout()}catch{}if(!b.ok){x.reject(new Error(b.error||"Failed to get bytes"));return}let q=b.bytes;if(!(q instanceof ArrayBuffer)){x.reject(new Error("Invalid bytes payload (expected ArrayBuffer)"));return}if(typeof x.expectedByteLength=="number"&&q.byteLength!==x.expectedByteLength){x.reject(new Error(`Byte length mismatch: got=${q.byteLength}, expected=${x.expectedByteLength}`));return}x.resolve(q)})}return E}function h(f,w,E,I=9e4){let y=f.__ROVER_UPLOAD_BYTES__||f.rover?.uploadBytes||f.rtrvr?.uploadBytes;if(typeof y=="function")return Promise.resolve().then(()=>y({token:w,byteLength:E,timeoutMs:I})).then(U=>{if(U instanceof ArrayBuffer)return U;if(U&&U.buffer instanceof ArrayBuffer)return U.buffer;throw new Error("Upload bytes provider returned invalid buffer")});let b=v(f),k=globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(16).slice(2)}`,x=Math.max(1e3,Math.min(Number(I)||9e4,18e4)),q=qa(f)||document;return new Promise((U,W)=>{let V=!1,j=!1,ne=()=>{j=!0};(async()=>{await Pt(x,q),!(j||V)&&(b.pending.delete(k),V=!0,W(new Error("Timed out waiting for upload bytes")))})().catch(()=>{}),b.pending.set(k,{cancelTimeout:ne,expectedByteLength:E,resolve:ue=>{V||(V=!0,ne(),U(ue))},reject:ue=>{V||(V=!0,ne(),W(ue))}}),f.postMessage({type:a,requestId:k,token:w,byteLength:E},"*")})}function g(f){if(f)return{frameworks:f.frameworks?f.frameworks.map(w=>df[w]).filter(w=>w&&w!=="unknown"):[],listenersRaw:f.listenersRaw??"",role:f.role??void 0,pattern:f.pattern??void 0,value:f.value??void 0}}async function _({tabIndex:f,call:w,elementData:E,payload:I}){let y=(()=>{try{return vr()?.top?.document||document}catch{return document}})(),b=w.args,k=fy(b),x,q,U=[],W=[],V=[];try{({doc:x,win:q,iframePath:U,resolvedPath:W,unresolvedPath:V}=Ss(y,b.iframe_id))}catch{if(b.iframe_id!=null){let de=`Cannot access iframe ${b.iframe_id} (cross-origin or not found)`;return[{name:w.name,args:w.args,response:{success:!1,error:de,allowFallback:!1,output:{success:!1,error:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:de,retryable:!1},iframe_context:{requested_iframe_id:b.iframe_id}}}}]}x=document,q=se(x)}if(b.iframe_id!=null&&V.length>0&&!k){let he=`iframe_id unresolved: remaining=${V.join(">")||"(none)"} (cross-origin, not-ready, or not found)`;return[{name:w.name,args:w.args,response:{success:!1,error:he,allowFallback:!1,details:`requested=${U.join(">")||"(none)"} resolved=${W.join(">")||"(none)"}`,output:{success:!1,error:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:he,retryable:!1},iframe_context:{requested_iframe_id:b.iframe_id,requested_path:U,resolved_path:W,unresolved_path:V}}}}]}let j=w.name,ne=py(b),ue=ne?ar(x,ne):null,Ee=ue?.ownerDocument??null,ce;if(!my.has(j))ce={success:!1,error:`Tool not promotable to main: ${j}`,allowFallback:!0};else{let de=Ee??x,he=se(de,q);ce=await R(j,ue,b,E,de,he,I)}return[{name:w.name,args:w.args,response:ce}]}async function A(f,w,E){try{let I=f.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",b=f[I]?.scroll?.execute;if(typeof b!="function")throw new Error("main-world scroll detector not available");let k=E?.doc||qa(f)||document,x=Math.max(250,Math.min(Number(E?.timeoutMs??3500),8e3)),q=await Rs(Promise.resolve().then(()=>b(w)),x,k);if(!q.ok)throw new Error("scroll detector timeout");return q.value}catch(I){throw new Error(I?.message||"main-world scroll detector not available")}}async function R(f,w,E,I,y,b,k){let x=j=>({success:j.success,error:j.success?void 0:j.details||"Action failed",allowFallback:j.success?void 0:j.allowFallback??!0}),q=f===H.press_key||f===H.scroll_page||f===H.drag_and_drop||f===H.pinch_zoom;if(!w&&!q)return x({success:!1,method:"missing-element-race",details:"Target element missing",allowFallback:!0});let U=new Set([H.type_into_element,H.type_and_enter,H.clear_element,H.focus_element,H.select_text,H.check_field_validity]),W=w,V=Z(W,y);if(W&&U.has(f)){let j=vp(W,V);(j.kind==="input"||j.kind==="contenteditable")&&(W=j.el)}try{switch(f){case H.click_element:return x(C(w,y,b,I));case H.double_click_element:return x(Or(w,y,b));case H.right_click_element:return x(gn(w,y,b));case H.hover_element:return x(await Lt(w,y,b,I,E.duration));case H.type_into_element:return x(await qt(W,y,b,E.text,I));case H.type_and_enter:return x(await Yn(W,y,b,E.text,I));case H.clear_element:return x(await sn(W,y,b,I));case H.focus_element:return x(En(W,y,b));case H.select_dropdown_value:return x(dt(w,y,b,E.value,I));case H.adjust_slider:return x(Yt(w,y,b,I?.value??E.value,I));case H.check_field_validity:return x(Wt(W,y,b));case H.select_text:return x(Mr(W,y,b,E.start_offset,E.end_offset));case H.scroll_page:return x(await mi(w,y,b,E));case H.scroll_to_element:return x(await Hn(w,y,b,E));case H.mouse_wheel:return x(In(w,y,b,E.delta_x,E.delta_y));case H.drag_element:return x(await He(w,y,b,E,I));case H.drag_and_drop:return x(await mn(E,w,y,b));case H.swipe_element:return x(await Lr(w,y,b,E));case H.long_press_element:return x(await hn(w,y,b,E.duration));case H.pinch_zoom:return x(await qn(w,y,b,E));case H.press_key:return x(st(E.key,E.modifiers,w,y,b));case H.copy_text:return x(await an(w,y,b));case H.paste_text:return x(await xn(w,y,b,I));case H.upload_file:return x(await Dr(E,y,b,k,w,I));case H.dispatch_pointer_path:return x(await Wn(E,y,b));default:return x({success:!1,method:"unhandled",details:`Unhandled ${f}`,allowFallback:!0})}}catch(j){return x({success:!1,method:"exception",details:j?.message||"exception",allowFallback:!0})}}function B(f){let w=new Map;if(!f)return w;let E=f.trim();if(!E)return w;let I=Oo(E);if(I){for(let{id:y,mask:b}of I.entries){let k=Ur[y];if(!k)continue;let x=new Set(Oa(b)),q=w.get(k);if(q)for(let U of x)q.add(U);else w.set(k,x)}return w}return w}function D(f,...w){return f?w.some(E=>f.has(E)):!1}function F(f,w){let E=B(w?.listenersRaw),I=new Set;for(let[,U]of E)for(let W of U)(W==="react"||W==="vue"||W==="angular"||W==="svelte"||W==="jquery")&&I.add(W);let y=new Set;for(let[U,W]of E)if(["click","input","change","keydown","keyup","pointerdown","pointerup","mousedown","mouseup","submit","dragstart","drop","wheel","scroll"].includes(U))for(let V of W)y.add(V);let b=I.size>0||[...y].some(U=>["react","vue","angular","svelte","jquery"].includes(U)),k=D(E.get("click"),"delegated"),x=D(E.get("input"),"delegated")||D(E.get("change"),"delegated")||D(E.get("keydown"),"delegated"),q=w?.role||xi(f)||f.getAttribute("role");return{sourcesByType:E,fws:I,isFrameworkElement:b,delegatedClick:k,delegatedInput:x,role:q}}function C(f,w,E,I){let y=F(f,I),b=Z(f,w),k=se(b,E);ft(f,b,k),I?.pattern==="hover-activate"&&Lt(f,b,k,I,120);let x=y.fws.has("react")||D(y.sourcesByType.get("click"),"react"),q=y.fws.has("vue")||D(y.sourcesByType.get("click"),"vue"),U=y.fws.has("angular")||D(y.sourcesByType.get("click"),"angular"),W=y.fws.has("svelte")||D(y.sourcesByType.get("click"),"svelte"),V=y.fws.has("jquery")||D(y.sourcesByType.get("click"),"jquery");return Zn(()=>Q(f,b,k),()=>ae(f,b,k),()=>x?pe(f,b,k):null,()=>q?xe(f,b,k):null,()=>U?ge(f,b,k):null,()=>W?Se(f,b,k):null,()=>V?We(f,b,k):null)}function Q(f,w,E){let I=Z(f,w),y=se(I,E),b=y.PointerEvent||PointerEvent,k=y.MouseEvent||MouseEvent,{x,y:q}=re(f,I,y),U={bubbles:!0,cancelable:!0,composed:!0,view:y,clientX:x,clientY:q,button:0,buttons:1};return f.focus?.({preventScroll:!0}),[new b("pointerover",U),new b("pointerenter",{...U,bubbles:!1}),new k("mouseover",U),new k("mouseenter",{...U,bubbles:!1}),new b("pointerdown",U),new k("mousedown",U),new b("pointerup",{...U,buttons:0}),new k("mouseup",{...U,buttons:0}),new k("click",{...U,buttons:0})].forEach(V=>f.dispatchEvent(V)),{success:!0,method:"pointer-mouse-click"}}function ae(f,w,E){let I=Z(f,w),y=se(I,E);try{if(f instanceof HTMLAnchorElement){let b=f.getAttribute("target");try{f.setAttribute("target","_self"),f.click()}finally{b===null?f.removeAttribute("target"):f.setAttribute("target",b)}}else f.click?.();return{success:!0,method:"native-click"}}catch{return{success:!1,method:"native-click"}}}function re(f,w,E){let I=Z(f,w),y=f.getBoundingClientRect(),b=[{x:y.left+y.width/2,y:y.top+y.height/2},{x:y.left+4,y:y.top+4},{x:y.right-4,y:y.top+4},{x:y.left+4,y:y.bottom-4},{x:y.right-4,y:y.bottom-4}],k=null;for(let x=0;x<b.length;x++){let q=b[x],U=I.elementFromPoint(q.x,q.y);if(x===0&&(k=U),U&&xp(f,U))return{...q,hit:U,ok:!0}}return{...b[0],hit:k,ok:!1}}function pe(f,w,E){let I=Z(f,w),y=se(I,E);try{let b=Cn(f);if(!b)return{success:!1,method:"react-no-fiber"};let k=Qt(b),x=k.onClick||k.onClickCapture;return x?(x($n("click",f,I,y)),{success:!0,method:"react-fiber-onClick"}):{success:!1,method:"react-no-onClick"}}catch{return{success:!1,method:"react-fiber-onClick"}}}function xe(f,w,E){let I=Z(f,w),b=se(I,E).MouseEvent||MouseEvent;try{let k=eo(f);if(!k)return{success:!1,method:"vue-none"};let x=Mn(k);return x.click?(x.click(new b("click",{bubbles:!0})),{success:!0,method:"vue-handler"}):k.$emit?(k.$emit("click"),{success:!0,method:"vue-emit"}):{success:!1,method:"vue-no-click"}}catch{return{success:!1,method:"vue-handler"}}}function ge(f,w,E){let I=Z(f,w),y=se(I,E),b=y.MouseEvent||MouseEvent;try{let k=y.ng?.getZone?.()||null;return k?.run?(k.run(()=>f.dispatchEvent(new b("click",{bubbles:!0,cancelable:!0}))),{success:!0,method:"angular-zone-click"}):(f.dispatchEvent(new b("click",{bubbles:!0,cancelable:!0})),f.click?.(),{success:!0,method:"angular-click"})}catch{return{success:!1,method:"angular-click",allowFallback:!0}}}function Se(f,w,E){let I=Z(f,w),b=se(I,E).MouseEvent||MouseEvent;try{let k=f.getBoundingClientRect(),x={bubbles:!0,cancelable:!0,view:f.ownerDocument?.defaultView||window,clientX:k.left+k.width/2,clientY:k.top+k.height/2};return f.dispatchEvent(new b("mousedown",x)),f.dispatchEvent(new b("mouseup",x)),f.dispatchEvent(new b("click",x)),{success:!0,method:"svelte-click"}}catch{return{success:!1,method:"svelte-click"}}}function We(f,w,E){let I=Z(f,w),y=se(I,E);try{return y.jQuery?.(f)?.trigger?.("click"),{success:!0,method:"jquery-trigger"}}catch{return{success:!1,method:"jquery-trigger"}}}async function Lt(f,w,E,I,y=500){let b=Math.min(Math.max(0,Number(y)||500),3e4),k=Z(f,w),x=se(k,E),q=F(f,I);ft(f,k,x);let U=x.PointerEvent||PointerEvent,W=x.MouseEvent||MouseEvent,V=f.getBoundingClientRect(),j=V.left+V.width/2,ne=V.top+V.height/2;if(q.fws.has("react")){let ce=Cn(f),de=ce?Qt(ce):{};de.onMouseEnter?.($n("mouseenter",f,k,x)),de.onPointerEnter?.($n("pointerenter",f,k,x))}else if(q.fws.has("vue")){let ce=eo(f),de=ce?Mn(ce):{};de.mouseenter?.(new W("mouseenter",{bubbles:!0})),de.mouseover?.(new W("mouseover",{bubbles:!0}))}let ue={bubbles:!0,cancelable:!0,composed:!0,view:x,clientX:j,clientY:ne};return[new U("pointerover",ue),new U("pointerenter",{...ue,bubbles:!1}),new W("mouseover",ue),new W("mouseenter",{...ue,bubbles:!1})].forEach(ce=>f.dispatchEvent(ce)),await Pt(b,k),{success:!0,method:"hover-seq"}}async function Ne(f,w,E=1){await Promise.resolve();for(let I=0;I<E;I++)f.hidden?await An():await new Promise(y=>{try{w.requestAnimationFrame(()=>y())}catch{An().then(y)}})}let Dt=f=>String(f??"").replace(/\s+/g," ").trim();function rt(f){try{if("value"in f)return String(f.value??"")}catch{}return""}function et(f){try{return typeof Vo=="function"?Vo(f):Dt(f.textContent)}catch{return""}}function Xt(f,w){if(!(w.isFrameworkElement||w.delegatedInput))return!1;let E=String(f??"").length;return E>0&&E<=140}async function qt(f,w,E,I,y){let b=F(f,y),k=Z(f,w),x=se(k,E);if(ft(f,k,x),Vn(f,x)||or(f,x)){let U=Xt(String(I??""),b),W=await _p(f,k,x,I,{settleFrames:k.hidden?1:2,useKeyFallback:U,keyFallbackMaxLen:140});return{success:W.success,method:W.method,details:W.details,allowFallback:!W.success}}if(f.isContentEditable===!0||b.role==="textbox"&&!("value"in f)){let U=et(f),W=kp(f,I,k,x);await Ne(k,x,k.hidden?1:2);let V=et(f),j=!1;if(String(I??"").length>0&&V===U){j=!0;try{Es(f,k,x),ws(f,k,x,!0);try{k.execCommand?.("insertText",!1,String(I??""))}catch{}$o(f,String(I??""),"insertText")}catch{}await Ne(k,x,k.hidden?1:2)}let ne=et(f),ue=ne!==U||!!String(I??"")&&ne.includes(String(I??""));return{success:ue,method:W.method,details:`${W.details};beforeLen=${U.length};afterLen=${ne.length};reverted=${V===U};fallback=${j}`,allowFallback:ue?void 0:!0}}return{success:!1,method:"type",details:"target not editable",allowFallback:!0}}async function Yn(f,w,E,I,y){let b=Z(f,w),k=se(b,E),x=await qt(f,b,k,I,y);if(!x.success)return x;let q=wp(f);return{success:!0,method:"type+enter",details:`${x.details};enter=${q.method}`}}async function sn(f,w,E,I){let y=Z(f,w),b=se(y,E),k=b.Event||Event;if(ft(f,y,b),Vn(f,b)||or(f,b)){let q=rt(f),U=Ep(f,y,b);if(await Ne(y,b,y.hidden?1:2),rt(f)===q&&q.length>0){try{Li(f,""),$o(f,"","deleteByCut")}catch{}await Ne(y,b,y.hidden?1:2)}let j=rt(f),ne=j.length===0||j!==q;return{success:U.success,method:U.method,details:U.details,allowFallback:!U.success}}if(f.isContentEditable===!0||F(f,I).role==="textbox"&&!("value"in f)){let q=Ip(f,y,b);return await Ne(y,b,y.hidden?1:2),{success:q.success,method:q.method,details:q.details,allowFallback:!q.success}}if("value"in f){try{f.value=""}catch{}return f.dispatchEvent(new k("input",{bubbles:!0,composed:!0})),f.dispatchEvent(new k("change",{bubbles:!0,composed:!0})),{success:!0,method:"clear-generic-value"}}return{success:!1,method:"clear",details:"target not clearable",allowFallback:!0}}function En(f,w,E){try{let I=Z(f,w),y=se(I,E),b=y.FocusEvent||FocusEvent;return ft(f,I,y),f.focus?.({preventScroll:!0}),f.dispatchEvent(new b("focus",{bubbles:!0})),f.dispatchEvent(new b("focusin",{bubbles:!0})),{success:!0,method:"focus"}}catch(I){return{success:!1,method:"focus",details:I.message,allowFallback:!0}}}function dt(f,w,E,I,y){try{let b=Z(f,w),k=se(b,E),x=k.Event||Event;if(!vf(f,k))return{success:!1,method:"select",details:"target not select",allowFallback:!0};ft(f,b,k),f.focus?.({preventScroll:!0});let q=Array.from(f.options).find(j=>j.value===I||j.text.trim()===I.trim());if(!q)return{success:!1,method:"select",details:`Option not found: ${I}`,allowFallback:!0};q.selected=!0;let U=Object.getPrototypeOf(f),W=Object.getOwnPropertyDescriptor(U,"value");if(W?.set?W.set.call(f,q.value):f.value=q.value,f.dispatchEvent(new x("input",{bubbles:!0,composed:!0})),f.dispatchEvent(new x("change",{bubbles:!0,composed:!0})),F(f,y).fws.has("react")){let j=Cn(f);if(j){let ne=Qt(j);if(ne.onChange){let ue=$n("change",f,b,k);ue.target.value=q.value,ne.onChange(ue)}}}return{success:!0,method:"select"}}catch(b){return{success:!1,method:"select",details:b.message,allowFallback:!0}}}function Yt(f,w,E,I,y){try{let b=Z(f,w),k=se(b,E),x=k.Event||Event;if(!Vn(f,k))return{success:!1,method:"slider",details:"target not input",allowFallback:!0};ft(f,b,k),f.focus?.({preventScroll:!0});let q=Object.getPrototypeOf(f),U=Object.getOwnPropertyDescriptor(q,"value");if(U?.set?U.set.call(f,String(I)):f.value=String(I),f.dispatchEvent(new x("input",{bubbles:!0,composed:!0})),f.dispatchEvent(new x("change",{bubbles:!0,composed:!0})),F(f,y).fws.has("react")){let V=Cn(f);if(V){let j=Qt(V);if(j.onChange){let ne=$n("change",f,b,k);ne.target.value=String(I),j.onChange(ne)}}}return{success:!0,method:"slider"}}catch(b){return{success:!1,method:"slider",details:b.message,allowFallback:!0}}}function Wt(f,w,E){try{let I=f.checkValidity?.()??!0;return I||f.reportValidity?.(),{success:I,method:"check-validity",details:I?void 0:f.validationMessage}}catch(I){return{success:!1,method:"check-validity",details:I.message,allowFallback:!0}}}function Mr(f,w,E,I,y){try{let b=Z(f,w),k=se(b,E);if("setSelectionRange"in f){let U=f;U.focus?.();let W=U.value?.length??0;return U.setSelectionRange(I??0,y??W),{success:!0,method:"select-range"}}let x=k.getSelection();if(!x)return{success:!1,method:"select-range",allowFallback:!0};let q=b.createRange();return q.selectNodeContents(f),x.removeAllRanges(),x.addRange(q),{success:!0,method:"select-range-node"}}catch(b){return{success:!1,method:"select-range",details:b.message,allowFallback:!0}}}function gr(f,w,E,I,y){let b=zo((f&&Z(f))??w),k=f||b,x=Z(k,w),q=se(x,E),U=k===x.documentElement||k===x.body||k===b;if(I===vt.TOP||I===vt.BOTTOM){let W=k.scrollHeight,V=U?q.innerHeight:k.clientHeight,j=Math.max(0,W-V);return k.scrollTop=I===vt.TOP?0:j,{success:!0,scrollTop:k.scrollTop}}return dc(k,x,q,I,y)}async function mi(f,w,E,I){let y=I.direction,b=I.amount,k=Z(f,w),x=se(k,E),q=!k.hidden,U=q?"smooth":"auto";try{if(f){let V=Nr(f,k,x),j=gr(V,k,x,y,b);return j?.success?{success:!0,method:"direct-element-scroll",details:JSON.stringify(j)}:{success:!1,method:"direct-element-scroll",details:j?.error||"direct scroll failed",allowFallback:!0}}if(y===vt.TOP||y===vt.BOTTOM){let V=await A(x,{action:"scrollTo",direction:y,options:{behavior:U,isTabActive:q}},{doc:k,timeoutMs:k.hidden?5200:2800});return{success:!0,method:"detector-scrollTo",details:JSON.stringify(V)}}let W=await A(x,{action:"scrollBy",direction:y,options:{amount:b,behavior:U,isTabActive:q}},{doc:k,timeoutMs:k.hidden?5200:2800});return{success:!0,method:"detector-scrollBy",details:JSON.stringify(W)}}catch(W){let V=k?gr(zo(k),k,x,y,b):void 0;return V?.success?{success:!0,method:"direct-primary-scroll-fallback",details:JSON.stringify(V)}:{success:!1,method:"scroll-page-failed",details:W?.message||V?.error||"scroll_page failed",allowFallback:!0}}}async function Hn(f,w,E,I){let y=Z(f,w),b=se(y,E),k=!y.hidden,x=k?"smooth":"auto",q=Up(I.position),U=As(f,y);if(!U){let W=pu(f,y,b,q);return{success:W.success,method:"direct-scrollElement-no-selector",details:W.error,allowFallback:!W.success}}try{let W=await A(b,{action:"scrollElement",selector:U,position:q,options:{behavior:x,isTabActive:k}},{doc:y,timeoutMs:y.hidden?5600:3e3});return{success:!0,method:"detector-scrollElement",details:JSON.stringify(W)}}catch(W){let V=pu(f,y,b,q);return V.success?{success:!0,method:"direct-scrollElement-fallback",details:JSON.stringify(V)}:{success:!1,method:"scroll-to-element-failed",details:W?.message||V.error||"scroll_to_element failed",allowFallback:!0}}}function In(f,w,E,I,y){try{let b=Z(f,w),k=se(b,E),x=k.WheelEvent||WheelEvent;ft(f,b,k);let q=Nr(f,b,k);return q.dispatchEvent(new x("wheel",{bubbles:!0,cancelable:!0,composed:!0,view:k,deltaX:I||0,deltaY:y||0,deltaMode:x.DOM_DELTA_PIXEL})),q.scrollBy({left:I||0,top:y||0,behavior:"auto"}),{success:!0,method:"wheel"}}catch(b){return{success:!1,method:"wheel",details:b.message,allowFallback:!0}}}function Nr(f,w,E){let I=Z(f,w),y=se(I,E),b=I.scrollingElement||I.documentElement||I.body,k=f;for(;k&&k!==I.body&&k!==I.documentElement;){let q=y.getComputedStyle(k).overflowY;if((q==="auto"||q==="scroll"||q==="overlay")&&k.scrollHeight>k.clientHeight+5)return k;k=k.parentElement}return b}async function He(f,w,E,I,y){try{let b=Z(f,w),k=se(b,E),x=k.PointerEvent||PointerEvent,q=k.MouseEvent||MouseEvent,U=k.DragEvent||DragEvent,W=k.DataTransfer||DataTransfer;ft(f,b,k);let V=re(f,b,k),j=At(V.hit,k)?V.hit:f,ne=f.getBoundingClientRect(),ue=Number.isFinite(Number(I?.distance))?Number(I.distance):160,Ee=0,ce=0;switch(String(I?.direction||"").toUpperCase()){case"UP":ce=-ue;break;case"DOWN":ce=ue;break;case"LEFT":Ee=-ue;break;case"RIGHT":Ee=ue;break;default:Ee=Number(I?.delta_x)||0,ce=Number(I?.delta_y)||0}let de=(te,le)=>({x:Math.max(2,Math.min(te,k.innerWidth-3)),y:Math.max(2,Math.min(le,k.innerHeight-3))}),he=de(V.x,V.y),De=de(V.x+Ee,V.y+ce),it=500+Date.now()%1e4,be=Math.max(12,Math.min(36,Number(I?.steps)||18)),Re=(te,le)=>({bubbles:!0,cancelable:!0,composed:!0,view:k,clientX:te,clientY:le,pageX:te+(k.scrollX||0),pageY:le+(k.scrollY||0)}),Ae=(te,le,Ue)=>({...Re(te,le),pointerId:it,pointerType:"mouse",isPrimary:!0,width:1,height:1,pressure:Ue?.5:0,buttons:Ue,button:0}),qe=(te,le,Ue)=>({...Re(te,le),buttons:Ue,button:0});j.dispatchEvent(new x("pointerdown",Ae(he.x,he.y,1))),j.dispatchEvent(new q("mousedown",qe(he.x,he.y,1)));try{j.setPointerCapture?.(it)}catch{}let Ye=null;try{(f.draggable||F(f,y).sourcesByType.has("dragstart"))&&(Ye=new W)}catch{Ye=null}if(Ye)try{f.dispatchEvent(new U("dragstart",{bubbles:!0,cancelable:!0,clientX:he.x,clientY:he.y,dataTransfer:Ye}))}catch{}let je=null;for(let te=1;te<=be;te++){let le=he.x+(De.x-he.x)*te/be,Ue=he.y+(De.y-he.y)*te/be,pt=b.elementFromPoint(le,Ue)||f;if(pt.dispatchEvent(new x("pointermove",Ae(le,Ue,1))),pt.dispatchEvent(new q("mousemove",qe(le,Ue,1))),Ye)try{je&&je!==pt&&je.dispatchEvent(new U("dragleave",{bubbles:!0,cancelable:!0,clientX:le,clientY:Ue,dataTransfer:Ye})),pt.dispatchEvent(new U("dragover",{bubbles:!0,cancelable:!0,clientX:le,clientY:Ue,dataTransfer:Ye})),je=pt}catch{}te%3===0&&await An()}let oe=b.elementFromPoint(De.x,De.y)||f;if(oe.dispatchEvent(new x("pointerup",Ae(De.x,De.y,0))),oe.dispatchEvent(new q("mouseup",qe(De.x,De.y,0))),Ye)try{f.dispatchEvent(new U("dragend",{bubbles:!0,cancelable:!0,clientX:De.x,clientY:De.y,dataTransfer:Ye}))}catch{}return{success:!0,method:"drag",details:`dx=${Ee};dy=${ce};steps=${be};hitOk=${V.ok}`}}catch(b){return{success:!1,method:"drag",details:b?.message||"drag failed",allowFallback:!0}}}async function mn(f,w,E,I){try{let y=Z(w,E),b=se(y,I),k=b.PointerEvent||PointerEvent,x=b.MouseEvent||MouseEvent,q=b.DragEvent||DragEvent,U=b.DataTransfer||DataTransfer,W=f?.source_element_id??f?.element_id,V=(W?ar(y,String(W)):null)||w;if(!V)return{success:!1,method:"drag-drop",details:"source missing",allowFallback:!0};let j=null,ne=Number(f?.target_x),ue=Number(f?.target_y);if(f?.target_element_id){if(j=ar(y,String(f.target_element_id)),!j)return{success:!1,method:"drag-drop",details:"target missing",allowFallback:!0};let oe=j.getBoundingClientRect();ne=oe.left+oe.width/2,ue=oe.top+oe.height/2}if((!Number.isFinite(ne)||!Number.isFinite(ue))&&!j)return{success:!1,method:"drag-drop",details:"missing target coords",allowFallback:!0};ft(V,y,b),j&&ft(j,y,b);let Ee=(oe,te)=>({x:Math.max(2,Math.min(oe,b.innerWidth-3)),y:Math.max(2,Math.min(te,b.innerHeight-3))}),ce=V.getBoundingClientRect(),de=Ee(ce.left+ce.width/2,ce.top+ce.height/2),he=Ee(Number(ne),Number(ue)),De=600+Date.now()%1e4,it=Math.max(14,Math.min(42,Number(f?.steps)||22)),be=(oe,te)=>({bubbles:!0,cancelable:!0,composed:!0,view:b,clientX:oe,clientY:te,pageX:oe+(b.scrollX||0),pageY:te+(b.scrollY||0)}),Re=(oe,te,le)=>({...be(oe,te),pointerId:De,pointerType:"mouse",isPrimary:!0,width:1,height:1,pressure:le?.5:0,buttons:le,button:0}),Ae=(oe,te,le)=>({...be(oe,te),buttons:le,button:0}),qe=null;try{qe=new U}catch{qe=null}V.dispatchEvent(new k("pointerdown",Re(de.x,de.y,1))),V.dispatchEvent(new x("mousedown",Ae(de.x,de.y,1)));try{V.setPointerCapture?.(De)}catch{}if(qe)try{V.dispatchEvent(new q("dragstart",{bubbles:!0,cancelable:!0,clientX:de.x,clientY:de.y,dataTransfer:qe}))}catch{}let Ye=null;for(let oe=1;oe<=it;oe++){let te=de.x+(he.x-de.x)*oe/it,le=de.y+(he.y-de.y)*oe/it,Ue=y.elementFromPoint(te,le)||j||y.body;if(Ue.dispatchEvent(new k("pointermove",Re(te,le,1))),Ue.dispatchEvent(new x("mousemove",Ae(te,le,1))),qe)try{Ye&&Ye!==Ue&&Ye.dispatchEvent(new q("dragleave",{bubbles:!0,cancelable:!0,clientX:te,clientY:le,dataTransfer:qe})),Ue.dispatchEvent(new q("dragenter",{bubbles:!0,cancelable:!0,clientX:te,clientY:le,dataTransfer:qe})),Ue.dispatchEvent(new q("dragover",{bubbles:!0,cancelable:!0,clientX:te,clientY:le,dataTransfer:qe})),Ye=Ue}catch{}oe%3===0&&await An()}let je=j||y.elementFromPoint(he.x,he.y)||y.body;if(qe)try{je.dispatchEvent(new q("drop",{bubbles:!0,cancelable:!0,clientX:he.x,clientY:he.y,dataTransfer:qe}))}catch{}if(je.dispatchEvent(new k("pointerup",Re(he.x,he.y,0))),je.dispatchEvent(new x("mouseup",Ae(he.x,he.y,0))),qe)try{V.dispatchEvent(new q("dragend",{bubbles:!0,cancelable:!0,clientX:he.x,clientY:he.y,dataTransfer:qe}))}catch{}return{success:!0,method:"html5+pointer-dragdrop",details:`steps=${it};source=${String(W)}`}}catch(y){return{success:!1,method:"drag-drop",details:y?.message||"drag-drop failed",allowFallback:!0}}}async function Lr(f,w,E,I){try{let y=Z(f,w),b=se(y,E),k=b.PointerEvent||PointerEvent,x=b.MouseEvent||MouseEvent;ft(f,y,b);let q=re(f,y,b),U={x:q.x,y:q.y},W=f.getBoundingClientRect(),V=Number.isFinite(Number(I?.distance))?Number(I.distance):Math.min(Math.max(80,Math.min(W.width,W.height)),220),j=String(I?.direction||"RIGHT").toUpperCase(),ne=U.x,ue=U.y;j==="LEFT"&&(ne-=V),j==="RIGHT"&&(ne+=V),j==="UP"&&(ue-=V),j==="DOWN"&&(ue+=V);let Ee=(te,le)=>({x:Math.max(2,Math.min(te,b.innerWidth-3)),y:Math.max(2,Math.min(le,b.innerHeight-3))}),ce=Ee(U.x,U.y),de=Ee(ne,ue),he=700+Date.now()%1e4,De=Math.max(10,Math.min(28,Number(I?.steps)||16)),it=(te,le)=>({bubbles:!0,cancelable:!0,composed:!0,view:b,clientX:te,clientY:le,pageX:te+(b.scrollX||0),pageY:le+(b.scrollY||0)}),be=(te,le,Ue)=>({...it(te,le),pointerId:he,pointerType:"touch",isPrimary:!0,width:1,height:1,pressure:Ue?.5:0,buttons:Ue,button:0}),Re=(te,le,Ue)=>({...it(te,le),buttons:Ue,button:0}),Ae=y.elementFromPoint(ce.x,ce.y)||f;Ae.dispatchEvent(new k("pointerdown",be(ce.x,ce.y,1))),Ae.dispatchEvent(new x("mousedown",Re(ce.x,ce.y,1)));let qe=b.Touch,Ye=b.TouchEvent,je=!!qe&&!!Ye;if(je)try{let te=new qe({identifier:he,target:Ae,clientX:ce.x,clientY:ce.y,pageX:ce.x,pageY:ce.y,screenX:ce.x,screenY:ce.y,radiusX:1,radiusY:1,rotationAngle:0,force:1});Ae.dispatchEvent(new Ye("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[te],targetTouches:[te],changedTouches:[te]}))}catch{}for(let te=1;te<=De;te++){let le=ce.x+(de.x-ce.x)*te/De,Ue=ce.y+(de.y-ce.y)*te/De,pt=y.elementFromPoint(le,Ue)||f;if(pt.dispatchEvent(new k("pointermove",be(le,Ue,1))),pt.dispatchEvent(new x("mousemove",Re(le,Ue,1))),je)try{let nt=new qe({identifier:he,target:pt,clientX:le,clientY:Ue,pageX:le,pageY:Ue,screenX:le,screenY:Ue,radiusX:1,radiusY:1,rotationAngle:0,force:1});pt.dispatchEvent(new Ye("touchmove",{bubbles:!0,cancelable:!0,composed:!0,touches:[nt],targetTouches:[nt],changedTouches:[nt]}))}catch{}te%3===0&&await An()}let oe=y.elementFromPoint(de.x,de.y)||f;if(oe.dispatchEvent(new k("pointerup",be(de.x,de.y,0))),oe.dispatchEvent(new x("mouseup",Re(de.x,de.y,0))),je)try{let te=new qe({identifier:he,target:oe,clientX:de.x,clientY:de.y,pageX:de.x,pageY:de.y,screenX:de.x,screenY:de.y,radiusX:1,radiusY:1,rotationAngle:0,force:0});oe.dispatchEvent(new Ye("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[te]}))}catch{}return{success:!0,method:"swipe",details:`dir=${j};dist=${V};steps=${De};hitOk=${q.ok}`}}catch(y){return{success:!1,method:"swipe",details:y?.message||"swipe failed",allowFallback:!0}}}async function qn(f,w,E,I){try{let y=f||w.body,b=Z(y,w),k=se(b,E),x=k.PointerEvent||PointerEvent,q=k.WheelEvent||WheelEvent;ft(y,b,k);let U=Number.isFinite(Number(I?.scale))?Number(I.scale):1.2,W=y.getBoundingClientRect(),V=W.left+W.width/2,j=W.top+W.height/2,ne=24,ue=Math.max(6,Math.min(200,ne*U)),Ee=Math.max(6,Math.min(18,Number(I?.steps)||10)),ce=k.Touch,de=k.TouchEvent;if(!!ce&&!!de)try{let be=(je,oe)=>new ce({identifier:je,target:y,clientX:oe,clientY:j,pageX:oe,pageY:j,screenX:oe,screenY:j,radiusX:1,radiusY:1,rotationAngle:0,force:1}),Re=be(911,V-ne),Ae=be(912,V+ne);y.dispatchEvent(new de("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[Re,Ae],targetTouches:[Re,Ae],changedTouches:[Re,Ae]}));for(let je=1;je<=Ee;je++){let oe=ne+(ue-ne)*je/Ee,te=be(911,V-oe),le=be(912,V+oe);y.dispatchEvent(new de("touchmove",{bubbles:!0,cancelable:!0,composed:!0,touches:[te,le],targetTouches:[te,le],changedTouches:[te,le]})),je%2===0&&await An()}let qe=be(911,V-ue),Ye=be(912,V+ue);y.dispatchEvent(new de("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[qe,Ye]}))}catch{}try{let be=(Re,Ae,qe)=>({bubbles:!0,cancelable:!0,composed:!0,view:k,clientX:Ae,clientY:j,pointerId:Re,pointerType:"touch",isPrimary:Re===821,width:1,height:1,pressure:qe?.5:0,buttons:qe,button:0});y.dispatchEvent(new x("pointerdown",be(821,V-ne,1))),y.dispatchEvent(new x("pointerdown",be(822,V+ne,1)));for(let Re=1;Re<=Ee;Re++){let Ae=ne+(ue-ne)*Re/Ee;y.dispatchEvent(new x("pointermove",be(821,V-Ae,1))),y.dispatchEvent(new x("pointermove",be(822,V+Ae,1))),Re%2===0&&await An()}y.dispatchEvent(new x("pointerup",be(821,V-ue,0))),y.dispatchEvent(new x("pointerup",be(822,V+ue,0)))}catch{}try{let De=U>=1?-120:120;y.dispatchEvent(new q("wheel",{bubbles:!0,cancelable:!0,composed:!0,view:k,clientX:V,clientY:j,ctrlKey:!0,deltaY:De,deltaMode:q.DOM_DELTA_PIXEL}))}catch{}return{success:!0,method:"pinch-zoom",details:`scale=${U};steps=${Ee}`}}catch(y){return{success:!1,method:"pinch-zoom",details:y?.message||"pinch-zoom failed",allowFallback:!0}}}async function hn(f,w,E,I=800){try{let y=Z(f,w),b=se(y,E),k=b.PointerEvent||PointerEvent,x=b.MouseEvent||MouseEvent,q=b.FocusEvent||FocusEvent;ft(f,y,b);let U=re(f,y,b),W=f;!U.ok&&At(U.hit,b)?W=U.hit.closest?.('a,button,input,select,textarea,summary,[role="button"],[role="link"],[onclick]')||U.hit:At(U.hit,b)&&(W=U.hit);let V=Sn(W,y,b),j=U.x,ne=U.y,ue=1+Date.now()%1e4,Ee={bubbles:!0,cancelable:!0,composed:!0,view:b,clientX:j,clientY:ne,pageX:j+(b.scrollX||0),pageY:ne+(b.scrollY||0),screenX:j+(b.screenX||0),screenY:ne+(b.screenY||0)},ce={...Ee,pointerId:ue,pointerType:"touch",isPrimary:!0,width:1,height:1,pressure:0,buttons:0,button:0};try{W.dispatchEvent(new k("pointerover",ce)),W.dispatchEvent(new k("pointerenter",{...ce,bubbles:!1}))}catch{}try{W.dispatchEvent(new x("mouseover",Ee)),W.dispatchEvent(new x("mouseenter",{...Ee,bubbles:!1}))}catch{}try{W.focus?.({preventScroll:!0}),W.dispatchEvent(new q("focus",{bubbles:!0,composed:!0})),W.dispatchEvent(new q("focusin",{bubbles:!0,composed:!0}))}catch{}try{W.dispatchEvent(new k("pointerdown",{...ce,buttons:1,pressure:.5}))}catch{}try{W.dispatchEvent(new x("mousedown",{...Ee,buttons:1,button:0}))}catch{}try{let be=b.Touch,Re=b.TouchEvent;if(typeof be<"u"&&typeof Re<"u"){let Ae=new be({identifier:ue,target:W,clientX:j,clientY:ne,pageX:j+(b.scrollX||0),pageY:ne+(b.scrollY||0),screenX:j+(b.screenX||0),screenY:ne+(b.screenY||0),radiusX:1,radiusY:1,rotationAngle:0,force:1});W.dispatchEvent(new Re("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[Ae],targetTouches:[Ae],changedTouches:[Ae]}))}}catch{}let de=Number(I),he=Number.isFinite(de)&&de>0?de:800,De=y.hidden?Math.max(he,1200):he;await Pt(De,y);try{W.dispatchEvent(new x("contextmenu",{...Ee,button:2,buttons:2}))}catch{}try{W.dispatchEvent(new k("pointerup",{...ce,buttons:0,pressure:0}))}catch{}try{W.dispatchEvent(new x("mouseup",{...Ee,buttons:0,button:0}))}catch{}try{let be=b.Touch,Re=b.TouchEvent;if(typeof be<"u"&&typeof Re<"u"){let Ae=new be({identifier:ue,target:W,clientX:j,clientY:ne,pageX:j+(b.scrollX||0),pageY:ne+(b.scrollY||0),screenX:j+(b.screenX||0),screenY:ne+(b.screenY||0),radiusX:1,radiusY:1,rotationAngle:0,force:0});W.dispatchEvent(new Re("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[Ae]}))}}catch{}let it=await Jn(W,y,b,V);return{success:!0,method:"long-press",details:`holdMs=${De};verified=${it};hitOk=${U.ok};target=${W.tagName.toLowerCase()}`}}catch(y){return{success:!1,method:"long-press",details:y?.message||"long-press failed",allowFallback:!0}}}function st(f,w,E,I,y){try{let b=Z(E,I),x=se(b,y).KeyboardEvent||KeyboardEvent,q=E||b.activeElement||b.body||b.documentElement;q.focus?.();let U={key:f,code:Pr(f),bubbles:!0,cancelable:!0,ctrlKey:w?.includes("CTRL"),altKey:w?.includes("ALT"),shiftKey:w?.includes("SHIFT"),metaKey:w?.includes("META")},W=q.dispatchEvent(new x("keydown",U)),V=q.dispatchEvent(new x("keypress",U)),j=q.dispatchEvent(new x("keyup",U));if(f==="Enter"&&!!(W&&V&&j)){let ue=q.form||q.closest?.("form");ue?.requestSubmit?ue.requestSubmit():ue?.submit?.()}return{success:!0,method:"press-key"}}catch(b){return{success:!1,method:"press-key",details:b.message,allowFallback:!0}}}async function an(f,w,E){try{let I=f.innerText||f.value||"";if(!I)return{success:!1,method:"copy",details:"nothing to copy",allowFallback:!0};let y=Z(f,w),b=se(y,E);if(b.navigator?.clipboard?.writeText)return await b.navigator.clipboard.writeText(I),{success:!0,method:"clipboard-copy"};let k=y.createRange();k.selectNodeContents(f);let x=b.getSelection?.()||(y.defaultView||window).getSelection?.();x?.removeAllRanges(),x?.addRange(k);let q=y.execCommand?.("copy")??!1;return x?.removeAllRanges(),{success:!!q,method:"execCommand-copy",allowFallback:!q}}catch(I){return{success:!1,method:"clipboard-copy",details:I.message,allowFallback:!0}}}async function xn(f,w,E,I){try{f.focus?.();let y=Z(f,w),b=se(y,E);if(b.navigator?.clipboard?.readText){let x=await b.navigator.clipboard.readText();if(x)return await qt(f,y,b,x,I)}return y.execCommand?.("paste")??!1?{success:!0,method:"execCommand-paste"}:{success:!1,method:"paste",details:"clipboard empty or denied",allowFallback:!0}}catch(y){return{success:!1,method:"paste",details:y.message,allowFallback:!0}}}function Qn(f){return`${(f/1024).toFixed(1)}KB`}function br(f,w){if(f instanceof w.defaultView.HTMLInputElement){let k=f;if((k.type||"").toLowerCase()==="file")return k}let E=f.closest?.("label"),I=E?.htmlFor||f.htmlFor||"";if(I){let k=w.getElementById(I);if(k&&(k.type||"").toLowerCase()==="file")return k}if(E){let k=E.querySelector?.('input[type="file"]');if(k)return k}let y=f.closest?.("form");if(y){let k=y.querySelector?.('input[type="file"]');if(k)return k}let b=f.closest?.("div,section,main,article")||f.parentElement;if(b){let k=b.querySelector?.('input[type="file"]');if(k)return k}return null}function Jr(f,w,E){try{let I=E.HTMLInputElement?.prototype,y=I?Object.getOwnPropertyDescriptor(I,"files")?.set:void 0;if(!y){let b=Object.getPrototypeOf(f);for(;b&&!y;)y=Object.getOwnPropertyDescriptor(b,"files")?.set,b=Object.getPrototypeOf(b)}return y?(y.call(f,w),!0):(f.files=w,!0)}catch{try{return f.files=w,!0}catch{return!1}}}async function Dr(f,w,E,I,y,b){try{let{file_url:k,element_id:x,file_name:q}=f,U=null;if(y&&(U=br(y,w)),!U&&x!==void 0&&(U=w.querySelector(`input[type="file"][${Zt}*="[id=${x}]"]`)),!U){let oe=w.querySelectorAll('input[type="file"]');for(let te of oe){if(te.disabled)continue;let le=te.getBoundingClientRect();if(le.width>0&&le.height>0){U=te;break}}}if(!U)return{success:!1,method:"upload-file",details:"No file input found",allowFallback:!0};if(U.disabled)return{success:!1,method:"upload-file",details:"File input is disabled",allowFallback:!0};let W=Z(U,w),V=se(W,E);if(!(I?.kind==="upload_file"&&typeof I.byteLength=="number"&&I.byteLength>=0&&typeof I.mimeType=="string"&&(typeof I.inlineB64=="string"||typeof I.token=="string")))return{success:!1,method:"upload-file",details:"Missing upload payload (need inlineB64 or token)",allowFallback:!0};let ne=Number(I.byteLength),ue=(I.mimeType||"application/octet-stream").split(";")[0].trim()||"application/octet-stream",Ee;if(I.inlineB64&&typeof I.inlineB64=="string"){let oe=Dp(I.inlineB64);if(oe.byteLength!==ne)return{success:!1,method:"upload-file",details:`Inline bytes length mismatch: got=${oe.byteLength} expected=${ne}`,allowFallback:!0};Ee=oe.buffer}else{let oe=String(I.token);Ee=await h(V,oe,ne,9e4)}let ce=V.Blob||Blob,de=new ce([Ee],{type:ue}),he=q||I?.fileName;!he&&k&&typeof k=="string"&&(he=du(k,V)),he=Lp(he||"upload");let De=V.File||File,it=new De([de],he,{type:ue,lastModified:Date.now()}),be=V.Event||Event,Re=V.DataTransfer||DataTransfer;if(!Re)return{success:!1,method:"upload-file",details:"DataTransfer unavailable in this context",allowFallback:!0};let Ae=new Re;if(Ae.items.add(it),!Jr(U,Ae.files,V))return{success:!1,method:"upload-file",details:"Failed to set input.files",allowFallback:!0};U.dispatchEvent(new be("input",{bubbles:!0,composed:!0,cancelable:!0})),U.dispatchEvent(new be("change",{bubbles:!0,composed:!0,cancelable:!0}));let Ye=Cn(U);if(Ye){let oe=Qt(Ye);if(oe.onChange){let te=$n("change",U,W,V);te.target.files=Ae.files,oe.onChange(te)}}let je=eo(U);if(je){let oe=Mn(je);if(oe.change){let te=new be("change",{bubbles:!0});te.target=U,te.target.files=Ae.files,oe.change(te)}}try{let oe=V.jQuery||V.$;oe&&typeof oe=="function"&&oe(U).triggerHandler?.("change")}catch{}return U.focus?.({preventScroll:!0}),await Ne(W,V,2),{success:!0,method:"upload-file",details:`Uploaded ${he} (${Qn(de.size)}) [token]`}}catch(k){return{success:!1,method:"upload-file",details:k?.message||"Upload failed",allowFallback:!0}}}async function Wn(f,w,E){let I=Array.isArray(f.path)?f.path:[];if(!I.length)return{success:!1,method:"dispatch_pointer_path",details:"Empty path",allowFallback:!0};let y=E.PointerEvent||PointerEvent,b=E.MouseEvent||MouseEvent,k=16;for(let x=0;x<I.length;x++){let q=I[x],U=Number(q.x)||0,W=Number(q.y)||0,V=Number(q.pressure)||(x===0||x===I.length-1?0:.5),j=w.elementFromPoint(U,W)||w.documentElement,ne={bubbles:!0,cancelable:!0,clientX:U,clientY:W,screenX:U,screenY:W,view:E};if(x===0?(j.dispatchEvent(new y("pointerdown",{...ne,pressure:V,pointerId:1,pointerType:"mouse"})),j.dispatchEvent(new b("mousedown",{...ne,button:0,buttons:1}))):(j.dispatchEvent(new y("pointermove",{...ne,pressure:V,pointerId:1,pointerType:"mouse"})),j.dispatchEvent(new b("mousemove",{...ne,button:0,buttons:1}))),x===I.length-1&&(j.dispatchEvent(new y("pointerup",{...ne,pressure:0,pointerId:1,pointerType:"mouse"})),j.dispatchEvent(new b("mouseup",{...ne,button:0,buttons:0}))),x<I.length-1){let ue=Number(q.timestamp)||0,Ee=Number(I[x+1].timestamp)||0,ce=ue&&Ee?Math.max(0,Math.min(Ee-ue,1e3)):k;ce>0&&await Pt(ce,w)}}return{success:!0,method:"dispatch_pointer_path",details:`Dispatched ${I.length} point(s)`}}function Or(f,w,E){let I=Z(f,w),y=se(I,E),b=y.MouseEvent||MouseEvent;ft(f,I,y),Q(f,I,y),Q(f,I,y);let k=f.getBoundingClientRect();return f.dispatchEvent(new b("dblclick",{bubbles:!0,cancelable:!0,clientX:k.left+k.width/2,clientY:k.top+k.height/2,detail:2,view:y})),{success:!0,method:"dblclick"}}function gn(f,w,E){let I=Z(f,w),y=se(I,E),b=y.PointerEvent||PointerEvent,k=y.MouseEvent||MouseEvent;ft(f,I,y);let x=f.getBoundingClientRect(),q=x.left+x.width/2,U=x.top+x.height/2,W={bubbles:!0,cancelable:!0,composed:!0,view:y,clientX:q,clientY:U,button:2,buttons:2};return f.dispatchEvent(new b("pointerdown",W)),f.dispatchEvent(new k("mousedown",W)),f.dispatchEvent(new b("pointerup",{...W,buttons:0})),f.dispatchEvent(new k("mouseup",{...W,buttons:0})),f.dispatchEvent(new k("contextmenu",W)),{success:!0,method:"contextmenu"}}function Sn(f,w,E){let I=Z(f,w),y=se(I,E),b=f,k=f.getBoundingClientRect();return{href:String(y.location.href),hash:String(y.location.hash),ariaExpanded:f.getAttribute("aria-expanded"),ariaPressed:f.getAttribute("aria-pressed"),ariaDisabled:f.getAttribute("aria-disabled"),disabled:!!b.disabled,open:typeof b.open<"u"?b.open:void 0,checked:typeof b.checked<"u"?b.checked:void 0,value:typeof b.value<"u"?b.value:void 0,active:ac(I),rect:{w:k.width,h:k.height}}}function Le(f,w){let E=Math.abs(f.rect.w-w.rect.w)>2||Math.abs(f.rect.h-w.rect.h)>2;return f.href!==w.href||f.hash!==w.hash||f.ariaExpanded!==w.ariaExpanded||f.ariaPressed!==w.ariaPressed||f.ariaDisabled!==w.ariaDisabled||f.disabled!==w.disabled||f.open!==w.open||f.checked!==w.checked||f.value!==w.value||f.active!==w.active||E}async function Jn(f,w,E,I){await Promise.resolve();let y=Z(f,w),b=se(y,E);w.hidden||await An();let k=Sn(f,y,b);return Le(I,k)}function Rn(f,w,E){f.focus?.({preventScroll:!0});let I=Z(f,w),y=se(I,E),x=f.getAttribute("role")==="button"||Tf(f,y)||f.tagName.toLowerCase()==="button"?[" ","Enter"]:["Enter"],q=y.KeyboardEvent||KeyboardEvent;for(let U of x){let W={key:U,code:U===" "?"Space":"Enter",bubbles:!0,cancelable:!0,composed:!0};f.dispatchEvent(new q("keydown",W)),f.dispatchEvent(new q("keypress",W)),f.dispatchEvent(new q("keyup",W))}return{success:!0,method:"keyboard-activate"}}async function xt(f,w,E,...I){let y=null;for(let b of I){let k=Z(f,w),x=se(k,E),q=Sn(f,k,x),U=b();if(!U||!U.success)continue;if(await Jn(f,k,x,q))return{...U,details:(U.details?U.details+";":"")+"verified=true"};y=U}return y?{...y,details:(y.details?y.details+";":"")+"verified=false"}:{success:!1,method:"all-strategies-unverified",details:"no verified effect",allowFallback:!0}}function Zn(...f){for(let w of f)try{let E=w();if(E&&E.success)return E}catch{}return{success:!1,method:"all-strategies-failed",allowFallback:!0}}function ft(f,w,E){let I=Z(f,w),y=se(I,E),b=f.getBoundingClientRect();b.top>=0&&b.left>=0&&b.bottom<=y.innerHeight&&b.right<=y.innerWidth||(f.scrollIntoView({behavior:"auto",block:"center",inline:"center"}),f.offsetHeight)}function Co(f,w,E,I){let y=Z(f,w),k=se(y,E).KeyboardEvent||KeyboardEvent;for(let x of I){let q=String(x??""),U="";/^[a-z]$/i.test(q)?U=`Key${q.toUpperCase()}`:/^[0-9]$/.test(q)?U=`Digit${q}`:q===" "&&(U="Space");let W=q.length===1?q.charCodeAt(0):0,V={key:q,code:U,bubbles:!0,cancelable:!0,composed:!0,keyCode:W,which:W};f.dispatchEvent(new k("keydown",V)),f.dispatchEvent(new k("keypress",V)),f.dispatchEvent(new k("keyup",V))}}function cn(f,w,E){let I=Z(f,w),b=se(I,E).KeyboardEvent||KeyboardEvent,k={key:"Enter",code:"Enter",keyCode:13,which:13,bubbles:!0,cancelable:!0,composed:!0},x=f.dispatchEvent(new b("keydown",k)),q=f.dispatchEvent(new b("keypress",k)),U=f.dispatchEvent(new b("keyup",k));if(!!(x&&q&&U)){let V=f.form||f.closest?.("form");V?.requestSubmit?.()??V?.submit?.()}}function Pr(f){return{Enter:"Enter",Tab:"Tab",Escape:"Escape",Space:"Space"," ":"Space",ArrowUp:"ArrowUp",ArrowDown:"ArrowDown",ArrowLeft:"ArrowLeft",ArrowRight:"ArrowRight",Backspace:"Backspace",Delete:"Delete",Home:"Home",End:"End",PageUp:"PageUp",PageDown:"PageDown",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F11",F12:"F12"}[f]||`Key${f.toUpperCase()}`}let er=new MessageChannel,Br=[];er.port1.onmessage=()=>{let f=Br.shift();f&&f()};function An(){return new Promise(f=>{Br.push(f),er.port2.postMessage(0)})}function Cn(f){let w=I=>{if(!I)return null;let y=Object.keys(I);for(let b of y)if(b.startsWith("__reactFiber")||b.startsWith("__reactInternalInstance")||b.includes("reactFiber")||b.includes("reactProps")||b.includes("reactEventHandlers")||/^__r\d+/.test(b))return I[b];return null},E=f;for(let I=0;I<4&&E;I++){let y=w(E);if(y)return y;E=E.parentElement}return null}function Qt(f){let w={},E=f,I=0;for(;E&&I++<10;){let y=[E.memoizedProps,E.pendingProps,E.stateNode?.props,E._memoizedProps,E._pendingProps,E.alternate?.memoizedProps].filter(Boolean);for(let b of y)if(!(!b||typeof b!="object"))for(let k in b)k.startsWith("on")&&typeof b[k]=="function"&&(w[k]=b[k]);if(Object.keys(w).length)break;E=E.return||E.alternate}return w}function Zr(f,w){let E=f;for(;E;){if(E._reactRootContainer||E.__reactContainer||E.hasAttribute("data-reactroot")||E.hasAttribute("data-react-root")||["root","app","__next"].includes(E.id))return E;E=E.parentElement}return Z(f,w).querySelector("#root,#app,#__next,[data-reactroot],[data-react-root]")}function $n(f,w,E,I){let y=Z(w,E),b=se(y,I),k=b.MouseEvent||MouseEvent,x=w.getBoundingClientRect(),q=new k(f,{bubbles:!0,cancelable:!0,view:b,clientX:x.left+x.width/2,clientY:x.top+x.height/2});return{type:f,target:w,currentTarget:w,bubbles:!0,cancelable:!0,nativeEvent:q,isTrusted:!0,preventDefault(){q.preventDefault()},stopPropagation(){q.stopPropagation()}}}function eo(f){let w=f;if(w.__vue__)return w.__vue__;if(w.__vueParentComponent)return w.__vueParentComponent;if(w._vnode)return w._vnode;let E=f.parentElement;for(let I=0;I<3&&E;I++){let y=E;if(y.__vue__||y.__vueParentComponent||y._vnode)return y.__vue__||y.__vueParentComponent||y._vnode;E=E.parentElement}return null}function Mn(f){let w={};if(f?.$listeners&&Object.assign(w,f.$listeners),f?._events)for(let E in f._events){let I=f._events[E];w[E]=Array.isArray(I)?I[0]:I}if(f?.props)for(let E in f.props)E.startsWith("on")&&typeof f.props[E]=="function"&&(w[E.substring(2).toLowerCase()]=f.props[E]);if(f?.vnode?.props)for(let E in f.vnode.props)E.startsWith("on")&&typeof f.vnode.props[E]=="function"&&(w[E.substring(2).toLowerCase()]=f.vnode.props[E]);return w}})();function qp(){let e=window,t=e.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__";e[t]?.actions?.execute}async function Wp(e){let t=window,n=t.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",o=t[n]?.actions?.execute;if(typeof o!="function")throw new Error("Rover main-world action executor not initialized");return o(e)}function Di(e,t,n={}){let{rootNodes:r,semanticNodes:o}=nu(e,{includeFrameContents:n.includeFrames??!0,clearIframes:n.includeFrames??!0,frameContextLabel:n.frameContextLabel??null,signalProvider:t.signalProvider,disableDomAnnotations:n.disableDomAnnotations??!0}),s={};for(let i of Object.keys(o)){let a=Number(i);if(!Number.isFinite(a))continue;let c=Ai(a);c&&(s[a]=t.getFrameworkMetadata(c))}return{rootNodes:r,semanticNodes:o,elementMeta:s}}(()=>{let e="__rtrvr_scroll_detector",t="__RTRVR_SCROLL_API__",n="__RTRVR_INTERNAL__";if(window[e])return;class r{doc;win;viewport;lastDetectedPrimary=null;detectionCache=new Map;lastDetectionTime=0;CACHE_TTL=5e3;constructor(p=document,u=window){this.doc=p,this.win=u,this.viewport={width:u.innerWidth,height:u.innerHeight},this.updateViewport()}getValidPrimary(){return this.lastDetectedPrimary&&!this.doc.contains(this.lastDetectedPrimary)&&(this.lastDetectedPrimary=null),this.lastDetectedPrimary}async handleCommand(p){switch(p.action){case"detectPrimary":{let u=this.detectPrimaryScrollable();if(!u)return null;let{target:v,isRoot:h}=this.getScrollContext(u.element),g=v.scrollHeight,_=vr(),A=h&&_?_.innerHeight:v.clientHeight,R=Math.max(0,g-A),B=v.scrollTop;return{selector:u.selector,score:u.score,type:u.type,metrics:{scrollTop:B,scrollHeight:g,clientHeight:A,isAtTop:B<=5,isAtBottom:B>=R-5}}}case"scrollTo":if(!p.direction)throw new Error("scrollTo requires direction");return this.scrollToDirection(p.direction,p.options);case"scrollBy":if(!p.direction)throw new Error("scrollBy requires direction");return this.scrollByAmount(p.direction,p.options);case"scrollElement":if(!p.selector)throw new Error("scrollElement requires selector");return this.scrollElementIntoView(p.selector,p.position,p.options);case"getMetrics":return this.getScrollMetrics();default:throw new Error(`Unknown command: ${p.action}`)}}updateViewport(){this.viewport={width:this.win.innerWidth,height:this.win.innerHeight}}async execute(p){return this.handleCommand(p)}detectPrimaryScrollable(){if(Date.now()-this.lastDetectionTime<this.CACHE_TTL&&this.detectionCache.size>0){let h=Array.from(this.detectionCache.values()).sort((g,_)=>_.score-g.score)[0];if(h)return this.lastDetectedPrimary=h.element,h}this.updateViewport();let p=this.collectScrollableCandidates();if(p.length===0){let h=this.doc.scrollingElement||this.doc.documentElement||this.doc.body;if(!h)return null;let g=this.buildFeatures(h),_=Z(h,this.doc),A={element:h,selector:As(h,_),score:.5,features:g,type:"document"};return this.detectionCache.clear(),this.detectionCache.set(A.selector,A),this.lastDetectionTime=Date.now(),this.lastDetectedPrimary=h,A}let u=this.scoreCandidates(p);if(u.length===0)return null;this.detectionCache.clear();for(let h of u)this.detectionCache.set(h.selector,h);this.lastDetectionTime=Date.now();let v=u[0];return v&&(this.lastDetectedPrimary=v.element),v||null}collectAllElementsDeep(p,u=15e4){let v=[],h=[],g=p.body||p.documentElement;g&&h.push(g);let _=0,A=R=>{try{let B=this.win.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",F=this.win[B]?.shadow?.getRoot;if(typeof F=="function"){let C=F(R);if(C)return C}}catch{}try{return R.shadowRoot||null}catch{return null}};for(;h.length&&!(++_>u);){let R=h.pop();if(Dn(R)){let F=R.children;for(let C=F.length-1;C>=0;C--)h.push(F[C]);continue}let B=R,D=ye(B);At(B,D)&&v.push(B);try{let F=A(B);F&&h.push(F)}catch{}for(let F=B.lastElementChild;F;F=F.previousElementSibling)h.push(F)}return v}collectScrollableCandidates(){let p=[],u=new WeakSet,v=[this.doc.scrollingElement,this.doc.documentElement,this.doc.body];for(let g of v){if(!g||u.has(g))continue;let _=this.isScrollable(g);(_.vertical||_.horizontal)&&(p.push(g),u.add(g))}let h=this.collectAllElementsDeep(this.doc);for(let g of Array.from(h)){if(u.has(g))continue;let _=g.getBoundingClientRect(),A=this.win.getComputedStyle(g);if(!this.isElementRendered(g,_,A)||!this.isScrollable(g).vertical)continue;let B=40,D=this.viewport.width*.15;if(_.height<B||_.width<D){let F=(g.className||"").toLowerCase().includes("scroll"),C=A.overflowY==="auto"||A.overflowY==="scroll"||A.overflow==="auto"||A.overflow==="scroll";if(!F&&!C)continue}p.push(g),u.add(g)}return p}isElementRendered(p,u,v){if(v.display==="none"||v.visibility==="hidden")return!1;let h=parseFloat(v.opacity||"1");return!(!Number.isNaN(h)&&h<.01||u.width<=1||u.height<=1)}isScrollable(p){let u=this.win.getComputedStyle(p),v=u.overflowY,h=u.overflowX,g=this.doc.scrollingElement,_=p===this.doc.documentElement||p===this.doc.body||!!g&&p===g,A=p.scrollHeight,R=p.clientHeight,B=p.scrollWidth,D=p.clientWidth;if(_){let ge=this.doc.documentElement,Se=this.doc.body;A=Math.max(ge?ge.scrollHeight:0,Se?Se.scrollHeight:0),R=this.win.innerHeight}let F=A-R>8,C=B-D>8,Q=v==="auto"||v==="scroll"||v==="overlay",ae=h==="auto"||h==="scroll"||h==="overlay";return{vertical:_?F:F&&Q,horizontal:_?C:C&&ae,byOverflow:Q||ae}}calculateVisibleIntersection(p){let u=Math.max(0,p.left),v=Math.max(0,p.top),h=Math.min(this.viewport.width,p.right),g=Math.min(this.viewport.height,p.bottom),_=Math.max(0,h-u),A=Math.max(0,g-v);return{width:_,height:A,area:_*A}}analyzeTextContent(p,u=2e3){let v=0,h=0,g=p.ownerDocument||this.doc,A=(g.defaultView||this.win).NodeFilter||NodeFilter,R=g.createTreeWalker(p,A.SHOW_ELEMENT|A.SHOW_TEXT,null),B=0,D=R.currentNode,F=[];for(;D&&B<u;){if(D.nodeType===Node.TEXT_NODE){let pe=(D.textContent||"").replace(/\s+/g,"").length;if(pe>0){v+=pe;let xe=D.parentElement;xe&&xe.closest("a")&&(h+=pe)}}else D.nodeType===Node.ELEMENT_NODE&&F.push(D);B++,D=R.nextNode()}let C=F.length||1,Q=v/C,ae=v>0?h/v:0;return{textChars:v,linkChars:h,textDensity:Q,linkDensity:ae}}calculateRepetitionScore(p){let u=Array.from(p.children);if(u.length<3)return 0;let v=u.slice(0,50),h=new Map,g=new Map,_=new Map;for(let re of v){let pe=ye(re);if(!At(re,pe))continue;let xe=re.getBoundingClientRect();if(xe.height<5||xe.width<this.viewport.width*.1)continue;let ge=Math.round(xe.height/10)*10,Se=Math.round(xe.width/10)*10;h.set(ge,(h.get(ge)||0)+1),g.set(Se,(g.get(Se)||0)+1);let We=(re.className||re.tagName).toString();_.set(We,(_.get(We)||0)+1)}let A=v.length||1,R=Math.max(0,...h.values()),B=Math.max(0,...g.values()),D=Math.max(0,..._.values()),F=R/A,C=B/A,Q=D/A,ae=.4*F+.3*C+.3*Q;return Math.min(1,Math.max(0,ae))}calculateSemanticScore(p){let u=0,v=null,h=!1,g=(p.getAttribute("role")||"").toLowerCase(),_=p.tagName.toLowerCase(),A=(p.id||"").toLowerCase(),R=(p.className||"").toLowerCase(),B=`${g} ${_} ${A} ${R}`;return(_==="main"||g==="main")&&(u+=1.2,v="article"),_==="article"&&(u+=1,v=v||"article"),(g==="feed"||B.includes("feed"))&&(u+=1,v="feed"),(g==="log"||B.includes("chat")||B.includes("messages"))&&(u+=1,v="chat"),B.includes("content")&&(u+=.5),(B.includes("results")||B.includes("list"))&&(u+=.4),(B.includes("job")||B.includes("jobs"))&&(u+=.4),(_==="nav"||g==="navigation"||B.includes("sidebar"))&&(u-=1,h=!0),(_==="aside"||g==="complementary")&&(u-=.7,h=!0),(_==="footer"||g==="contentinfo"||B.includes("footer"))&&(u-=.8,h=!0),B.includes("header")&&(u-=.6),u=Math.max(-1,Math.min(1,u)),{semanticScore:u,typeHint:v,navLike:h}}detectScrollListeners(p){return[p.querySelector('[class*="infinite"]'),p.querySelector('[class*="load-more"]'),p.querySelector("[data-infinite]"),p.querySelector('[loading="lazy"]'),p.querySelector(".observer-target"),p.querySelector("[data-scroll]")].some(v=>v!==null)}buildFeatures(p){let u=p.getBoundingClientRect(),v=this.win.getComputedStyle(p),h=this.calculateVisibleIntersection(u),g=this.viewport.width*this.viewport.height||1,_=h.area/g,A=this.viewport.width>0?h.width/this.viewport.width:0,R=u.top+u.height/2,B=this.viewport.height/2||1,D=Math.min(1,Math.abs(R-B)/B),F=this.isScrollable(p),C=this.doc.scrollingElement,Q=p===this.doc.documentElement||p===this.doc.body||!!C&&p===C,ae=p.scrollHeight,re=p.clientHeight;if(Q){let et=this.doc.documentElement,Xt=this.doc.body;ae=Math.max(et?et.scrollHeight:0,Xt?Xt.scrollHeight:0),re=this.win.innerHeight}let pe=Math.max(0,ae-re),xe=pe*h.width,ge=this.analyzeTextContent(p),Se=this.calculateRepetitionScore(p),We=this.calculateSemanticScore(p),Lt=p.contains(this.doc.activeElement),Ne=this.detectScrollListeners(p),Dt=parseInt(v.zIndex||"0",10),rt=Number.isFinite(Dt)?Dt:0;return{geometry:{viewportCoverage:_,widthProminence:A,centerDistance:D,scrollCapacity:pe,scrollSurface:xe,zIndex:rt},content:{textDensity:ge.textDensity,linkDensity:ge.linkDensity,repetitionScore:Se,semanticScore:We.semanticScore},interaction:{hasScrollListeners:Ne,hasFocus:Lt,recentActivity:Lt?1:0}}}inferElementType(p,u,v,h){if(v)return v;let g=(p.getAttribute("role")||"").toLowerCase(),_=(p.className||"").toLowerCase(),A=p.tagName.toLowerCase(),R=u.geometry,B=u.content;if(g==="log"||_.includes("chat")||_.includes("messages"))return"chat";let D=this.win.getComputedStyle(p);if((D.position==="fixed"||D.position==="absolute")&&R.zIndex>100&&R.viewportCoverage>.2&&R.centerDistance<.4)return"modal";if(g==="feed"||B.repetitionScore>.3&&R.scrollCapacity>400&&R.widthProminence>=.25)return"feed";if(A==="article"||B.textDensity>40&&B.linkDensity<.4&&R.widthProminence>.4)return"article";if(h||R.widthProminence<.3&&B.linkDensity>.3)return"sidebar";let C=this.doc.scrollingElement;return p===this.doc.documentElement||p===this.doc.body||C&&p===C?"document":"unknown"}scoreCandidates(p){let u=[],v=[],h=[],g=[],_=[],A=[];for(let Q of p){let ae=this.buildFeatures(Q),re=ae.content.semanticScore,pe=this.calculateSemanticScore(Q),xe=this.inferElementType(Q,ae,pe.typeHint,pe.navLike);A.push({element:Q,features:{geometry:{...ae.geometry},content:{...ae.content,semanticScore:pe.semanticScore},interaction:ae.interaction},type:xe,navLike:pe.navLike,semanticScore:pe.semanticScore}),v.push(ae.geometry.scrollSurface),h.push(ae.content.textDensity),g.push(Math.abs(pe.semanticScore)),_.push(ae.content.repetitionScore)}let R=Math.max(0,...v),B=Math.max(0,...h),D=Math.max(0,...g),F=Math.max(0,..._),C=-1/0;for(let Q of A){let{element:ae,features:re,type:pe,navLike:xe,semanticScore:ge}=Q,Se=re.geometry,We=re.content,Lt=re.interaction,Ne=R>0?Se.scrollSurface/R:0,Dt=B>0?We.textDensity/B:0,rt=D>0?(ge/D+1)/2:.5,et=pe==="feed"||We.repetitionScore>.3&&Se.scrollCapacity>400,Xt=We.linkDensity>.5?(We.linkDensity-.5)/.5:0,qt=et?0:Xt,Yn=(et?1:.5)*We.repetitionScore*Math.min(1,Se.scrollCapacity/4e3),En={feed:.2,chat:.2,article:.08,modal:.08,document:.05,sidebar:-.12,unknown:0}[pe]||0,dt=0;dt+=Se.viewportCoverage*.18,dt+=Se.widthProminence*.15,dt+=(1-Se.centerDistance)*.07,dt+=Ne*.22,dt+=Yn*.18,dt+=Dt*.08,dt+=(F>0?We.repetitionScore/F:0)*.05,dt+=rt*.07,dt-=qt*.05,Lt.hasFocus&&(dt+=.05),Lt.hasScrollListeners&&(dt+=.05),dt+=En,xe&&(dt-=.05);let Yt=Math.max(0,Math.min(1,dt));Yt>C&&(C=Yt),u.push({element:ae,selector:As(ae,Z(ae)),score:Yt,features:re,type:pe})}if(u.sort((Q,ae)=>ae.score-Q.score),u.length>=2){let Q=u[0],ae=u[1];Math.abs(Q.score-ae.score)<.08&&Q.type==="article"&&ae.type==="feed"&&(u[0]=ae,u[1]=Q)}return u}getScrollContext(p){let u=document.scrollingElement;return p===document.documentElement||p===document.body||!!u&&p===u?{target:u||document.documentElement||document.body,isRoot:!0}:{target:p,isRoot:!1}}async scrollToDirection(p,u){let v=this.getValidPrimary()||this.detectPrimaryScrollable()?.element;if(!v)return{success:!1,error:"No scrollable element found"};let{target:h,isRoot:g}=this.getScrollContext(v),_=Z(h),A=se(_),R=u?.isTabActive??!_.hidden,B=u?.behavior,D=R&&B==="smooth",F=g?Math.max(_.documentElement?_.documentElement.scrollHeight:0,_.body?_.body.scrollHeight:0):h.scrollHeight,C=g?A.innerHeight:h.clientHeight,Q=Math.max(0,F-C),ae=()=>g?A.scrollY:h.scrollTop,re=pe=>{if(D)try{g?A.scrollTo({top:pe,behavior:"smooth"}):h.scrollTo({top:pe,behavior:"smooth"})}catch{g?(_.scrollingElement||_.documentElement||_.body).scrollTop=pe:h.scrollTop=pe}else if(g){let xe=_.scrollingElement||_.documentElement||_.body;xe.scrollTop=pe}else h.scrollTop=pe};switch(p){case vt.TOP:return re(0),{success:!0,scrollTop:0,isAtTop:!0};case vt.BOTTOM:return re(Q),{success:!0,scrollTop:Q,isAtBottom:!0};default:return{success:!1,error:`Unknown direction: ${p}`}}}async scrollByAmount(p,u){let v=this.getValidPrimary()||this.detectPrimaryScrollable()?.element;if(!v)return{success:!1,error:"No scrollable element found"};let{target:h,isRoot:g}=this.getScrollContext(v),_=u?.isTabActive??!document.hidden,A=u?.behavior,R=_&&A==="smooth",B=vr(),D=g&&B?B.innerHeight:h.clientHeight,F=g&&B?B.innerWidth:h.clientWidth,C=u?.amount??D*.8,Q=g?Math.max(document.documentElement?document.documentElement.scrollHeight:0,document.body?document.body.scrollHeight:0):h.scrollHeight,ae=g&&B?B.innerHeight:h.clientHeight,re=Math.max(0,Q-ae),pe=ge=>{if(R)try{g?B?.scrollTo({top:ge,behavior:"smooth"}):h.scrollTo({top:ge,behavior:"smooth"})}catch{let Se=document.scrollingElement||document.documentElement||document.body;Se.scrollTop=ge}else{let Se=g?document.scrollingElement||document.documentElement||document.body:h;Se.scrollTop=ge}},xe=ge=>{if(R)try{h.scrollBy({left:ge,behavior:"smooth"})}catch{h.scrollLeft+=ge}else h.scrollLeft+=ge};switch(p){case vt.DOWN:{let Se=(g&&B?B.scrollY:h.scrollTop)+C;pe(Se);let We=g&&B?B.scrollY:h.scrollTop;return{success:!0,scrollTop:We,isAtTop:We<=5,isAtBottom:We>=re-5}}case vt.UP:{let ge=g&&B?B.scrollY:h.scrollTop,Se=Math.max(0,ge-C);pe(Se);let We=g&&B?B.scrollY:h.scrollTop;return{success:!0,scrollTop:We,isAtTop:We<=5,isAtBottom:We>=re-5}}case vt.LEFT:{let ge=-(u?.amount??F*.8);return xe(ge),{success:!0,scrollLeft:h.scrollLeft}}case vt.RIGHT:{let ge=u?.amount??F*.8;return xe(ge),{success:!0,scrollLeft:h.scrollLeft}}default:return{success:!1,error:`Unknown direction: ${p}`}}}normalizeScrollPosition(p){switch(p){case Gt.START:return"start";case Gt.END:return"end";case Gt.NEAREST:return"nearest";case Gt.CENTER:default:return"center"}}getScrollContainerForElement(p){let u=document.scrollingElement,v=p;for(;v&&v!==document.body&&v!==document.documentElement;){let _=getComputedStyle(v).overflowY,A=_==="auto"||_==="scroll"||_==="overlay",R=v.scrollHeight-v.clientHeight>8;if(A&&R)return{container:v,isRoot:!1};v=v.parentElement}return{container:u||document.documentElement||document.body,isRoot:!0}}scrollElementIntoView(p,u,v){let h=document.querySelector(p);if(!h)return{success:!1,error:`Element not found for selector: ${p}`};let{container:g,isRoot:_}=this.getScrollContainerForElement(h),A=ye(g),R=A?.DOMRect||DOMRect,B=_?new R(0,0,A.innerWidth??0,A.innerHeight??0):g.getBoundingClientRect(),D=h.getBoundingClientRect(),F=24,C=D.top>=B.top+F&&D.bottom<=B.bottom-F,Q=v?.isTabActive??!document.hidden,ae=v?.behavior,re=Q&&ae==="smooth",pe=this.normalizeScrollPosition(u);if(u===Gt.NEAREST&&C)return{success:!0,alreadyVisible:!0,...this.getScrollMetricsForContainer(g,_)};try{h.scrollIntoView({behavior:re?"smooth":"auto",block:pe,inline:"nearest"})}catch{h.scrollIntoView()}let xe=this.getScrollMetricsForContainer(g,_);return{success:!0,position:pe,...xe}}getScrollMetricsForContainer(p,u){let v=u?Math.max(document.documentElement?document.documentElement.scrollHeight:0,document.body?document.body.scrollHeight:0):p.scrollHeight,h=Z(p),g=ye(p),_=u&&g?g.innerHeight:p.clientHeight,A=Math.max(0,v-_),B=(u?h.scrollingElement||h.documentElement||h.body:p).scrollTop;return{scrollTop:B,scrollHeight:v,clientHeight:_,maxScroll:A,isAtTop:B<=5,isAtBottom:B>=A-5,scrollPercentage:A>0?B/A*100:0}}getScrollMetrics(){let p=this.getValidPrimary()||this.detectPrimaryScrollable()?.element;if(!p)return null;let{target:u,isRoot:v}=this.getScrollContext(p),h=Z(u),g=se(h),_=v?Math.max(h.documentElement?h.documentElement.scrollHeight:0,h.body?h.body.scrollHeight:0):u.scrollHeight,A=v?g.innerHeight:u.clientHeight,R=Math.max(0,_-A),D=(v?h.scrollingElement||h.documentElement||h.body:u).scrollTop;return{element:As(u,h),scrollTop:D,scrollHeight:_,clientHeight:A,maxScroll:R,isAtTop:D<=5,isAtBottom:D>=R-5,scrollPercentage:R>0?D/R*100:0}}}let o=new r;window[e]=o;let s={execute:d=>o.execute(d)};try{Object.defineProperty(window,t,{value:s,writable:!1,configurable:!1,enumerable:!1})}catch{try{window[t]=s}catch{}}let i=window.__RTRVR_INTERNAL_KEY__||n,a=window[i],c=a&&typeof a=="object"?a:null;if(c){try{c.scroll=c.scroll||s}catch{}try{c.scroll||Object.defineProperty(c,"scroll",{value:s,writable:!1,configurable:!1,enumerable:!1})}catch{}}if(i!==n)try{!window[n]&&c&&Object.defineProperty(window,n,{value:c,writable:!1,configurable:!1,enumerable:!1})}catch{}})();var hy=/\[id=(\d+)\]/,Nt;(function(e){e.HTML="html",e.PDF="pdf",e.GOOGLE_DOC="google_doc",e.GOOGLE_SHEET="google_sheet",e.PLAIN_TEXT="plain_text"})(Nt||(Nt={}));var gy=20,Cs=new Map;function by(e,t){if(Cs.size>=gy&&!Cs.has(e)){let n=Cs.keys().next().value;n!==void 0&&Cs.delete(n)}Cs.set(e,t)}var vy=24,yy=220,Ty=0,_y=250,ky=2,wy=300,Ey=new Set(["BODY","DIV","SPAN","IMG","PICTURE","SVG"]),Iy=new Set(["A","BUTTON","INPUT","SELECT","TEXTAREA","H1","H2","H3","H4","H5","H6","MAIN","NAV","HEADER","FOOTER","ARTICLE","SECTION","ASIDE"]);function xy(e){let t={};for(let n of Object.keys(e)){let r=e[Number(n)],o=r?.preservedAttributes?.[yn["rtrvr-label"]],s=r?.resourceLocator;if(typeof o=="string"&&typeof s=="string"){let i=o.match(hy);if(i?.[1]){let a=Number(i[1]);Number.isFinite(a)&&(t[a]=s)}}}return t}async function Yp(e,t,n={}){let r=e.ownerDocument||document,o=n.pageConfig||Is,s=String(r.contentType||"").trim().toLowerCase(),i=My(s,r),a=Cy(i.documentType,s),c={url:r.URL,title:r.title,contentType:a},d=Ay(o),p=Sy(o);if(i.documentType!==Nt.HTML){let ae=Number(o?.pageDataTimeoutMs),re=Number.isFinite(ae)?Math.max(200,Math.floor(ae)):9e3,pe=Math.max(200,Math.min(re,Mt(d))),xe=Oy(r,i.documentType,o,d),ge=await Rs(xe,pe,r);if(!ge.ok)return{...c,content:"",error:`non_html_timeout:${a}`,metadata:{extractionMethod:"timeout"}};let Se=ge.value||{},We=i.documentType===Nt.GOOGLE_SHEET?dT(r):void 0;return{...c,...Se,contentType:Se.contentType||c.contentType,sheetInfo:Se.sheetInfo||We}}if(o?.onlyTextContent)return{...c,contentType:xs,content:Oi(r)};let u=Math.max(0,Math.min(1e3,Mt(d))),v=performance.now(),h=!1;if(!o?.disableAutoScroll&&u>80){let ae=r.hidden?200:400,re=Math.min(ae,u);re>80&&(h=await cT(r,{profile:"light",timeBudgetMs:re,delayMs:r.hidden?0:160,finalWaitMs:r.hidden?0:200}))}let g=Math.max(0,u-(performance.now()-v));g>60&&await $p(r,{...p,deadlineEpochMs:d,totalBudgetMs:g});let _=Math.max(0,u-(performance.now()-v));_>80&&await uT(r,{mode:"full",totalBudgetMs:Math.min(r.hidden?300:400,_),budgetMs:Math.min(r.hidden?200:300,_),maxPasses:r.hidden?1:2});let A=Di(e,t,{includeFrames:n.includeFrames??!0,disableDomAnnotations:n.disableDomAnnotations??!0}),R="normal",B=0,D=0,F=[],C=Math.max(0,p.sparseTreeRetryMaxAttempts)>0,Q=zp(r,A.rootNodes,A.semanticNodes);if(Q.needsStabilization){F=[...Q.reasons],R="suspicious_unrecovered";let ae=C?Math.max(0,Math.min(wy,Mt(d)-20)):0;if(ae>20){let re=Date.now();await $p(r,{...p,retries:0,deadlineEpochMs:d,totalBudgetMs:ae}),D=Date.now()-re,B=1,A=Di(e,t,{includeFrames:n.includeFrames??!0,disableDomAnnotations:n.disableDomAnnotations??!0});let pe=zp(r,A.rootNodes,A.semanticNodes);pe.reasons.length>0&&(F=[...pe.reasons]),!pe.needsStabilization&&!Vp(A.rootNodes,A.semanticNodes)&&(R="suspicious_recovered")}}return Vp(A.rootNodes,A.semanticNodes)?{...c,contentType:xs,content:Oi(r),metadata:{scrollingPerformed:h,extractionMethod:"empty_tree_fallback",treeCapture:{status:R,attempts:B,waitedMs:D,reasons:F}}}:{...c,contentType:xs,roots:A.rootNodes,nodes:A.semanticNodes,elementLinkRecord:xy(A.semanticNodes),metadata:{scrollingPerformed:h,extractionMethod:R!=="normal"?R:void 0,treeCapture:{status:R,attempts:B,waitedMs:D,reasons:F}}}}function Sy(e){let t=Number(e?.adaptiveSettleDebounceMs),n=Number(e?.adaptiveSettleMaxWaitMs),r=Number(e?.adaptiveSettleRetries),o=Number(e?.sparseTreeRetryDelayMs),s=Number(e?.sparseTreeRetryMaxAttempts);return{debounceMs:Number.isFinite(t)?Math.max(8,Math.min(500,Math.floor(t))):vy,maxWaitMs:Number.isFinite(n)?Math.max(80,Math.min(5e3,Math.floor(n))):yy,retries:Number.isFinite(r)?Math.max(0,Math.min(6,Math.floor(r))):Ty,sparseTreeRetryDelayMs:Number.isFinite(o)?Math.max(20,Math.min(1e3,Math.floor(o))):_y,sparseTreeRetryMaxAttempts:Number.isFinite(s)?Math.max(0,Math.min(4,Math.floor(s))):ky}}async function $p(e,t){let n=Mt(t.deadlineEpochMs);if(n<=20)return;let r=Math.max(20,Math.min(Math.floor(t.totalBudgetMs),n)),o=Date.now()+r,s=0;for(;s<=t.retries&&Mt(o)>20;){let i=Math.max(40,Math.min(t.maxWaitMs,Mt(o)));if(await Ry(e,{debounceMs:t.debounceMs,windowBudgetMs:i,deadlineEpochMs:o}))return;s+=1}}async function Ry(e,t){let n=e.documentElement;if(!n||typeof MutationObserver>"u")return!0;let r=Date.now(),o=new MutationObserver(()=>{r=Date.now()});try{o.observe(n,{subtree:!0,childList:!0,attributes:!0,characterData:!0})}catch{return!0}let s=Date.now()+Math.max(40,Math.floor(t.windowBudgetMs));try{for(;Mt(t.deadlineEpochMs)>20&&Mt(s)>20;){let i=Date.now()-r;if(i>=t.debounceMs)return!0;let a=Math.max(10,Math.min(60,t.debounceMs-i,Mt(t.deadlineEpochMs),Mt(s)));await Pt(a,e)}}finally{o.disconnect()}return!1}function Ay(e){let t=Number(e?.deadlineEpochMs);if(Number.isFinite(t)&&t>0)return t;let n=Number(e?.totalBudgetMs),r=Number.isFinite(n)?Math.max(1500,Math.floor(n)):9e3;return Date.now()+r}function Cy(e,t){switch(e){case Nt.PDF:return su;case Nt.GOOGLE_DOC:return cu;case Nt.GOOGLE_SHEET:return iu;case Nt.PLAIN_TEXT:return lc;case Nt.HTML:default:return t||xs}}function My(e,t){let n=e||String(t.contentType||"").toLowerCase();return Mp(n)?{documentType:Nt.PDF}:Ny(t)&&(Dy(t)||Ly(t.URL))?{documentType:Nt.PDF}:Gy(t)?{documentType:Nt.GOOGLE_DOC}:Ky(t)?{documentType:Nt.GOOGLE_SHEET}:n.includes(lc)?{documentType:Nt.PLAIN_TEXT}:{documentType:Nt.HTML}}function Ny(e){try{let t=Hy(e);return lu(t)?!0:!!t.querySelector?.('object[type="application/pdf"],object[type="application/x-google-chrome-pdf"]')}catch{return!1}}function Ly(e){try{return e?e.toLowerCase().includes(".pdf")?!0:(new URL(e).searchParams.get("file")||"").toLowerCase().includes(".pdf"):!1}catch{return String(e||"").toLowerCase().includes(".pdf")}}function Dy(e){try{let t=e.body;return!t||t.querySelectorAll('embed[type="application/pdf"],embed[type="application/x-google-chrome-pdf"],object[type="application/pdf"],object[type="application/x-google-chrome-pdf"]').length===0||(t.innerText||"").trim().length>40?!1:Array.from(t.children).filter(s=>!["SCRIPT","STYLE"].includes(String(s.tagName).toUpperCase())).length<=3}catch{return!1}}async function Oy(e,t,n,r){switch(t){case Nt.PDF:return Py(e,n,r);case Nt.GOOGLE_DOC:return By(e);case Nt.GOOGLE_SHEET:return sT(e,n);case Nt.PLAIN_TEXT:return{content:Oi(e),contentType:lc};case Nt.HTML:default:return{content:Oi(e),contentType:xs}}}async function Py(e,t,n){Mt(n)>ou+50&&await Np(ou,e,n);let o=(()=>{let p=Number(t?.pdfTextSelectionTimeoutMs),u=Is.pdfTextSelectionTimeoutMs;return Number.isFinite(p)?Math.max(150,Math.floor(p)):u})(),s=Mt(n),a=Number.isFinite(s)?Math.max(150,Math.min(o,Math.max(0,s-150))):o,c=await Wy(e,a),d=!!c.success&&!!(c.data||"").trim();return{content:d&&c.data||"",contentType:su,error:d?void 0:`pdf_extraction_failed:${c.reason||"unknown"}`}}async function By(e){return{content:oT(),contentType:cu}}function Vp(e,t){return!Array.isArray(e)||e.length===0||!t||Object.keys(t).length===0}function Uy(e){return!!(e.documentElement?.hasAttribute(Po)||e.body?.hasAttribute(Po)||e.body?.getAttribute?.("aria-busy")==="true")}function Fy(e,t,n){let r=Array.isArray(t)?t.length:0,o=n&&typeof n=="object"?Object.keys(n).length:0,s=o?Object.values(n):[],i=0,a=0;for(let c of s){let d=String(c?.elementName||c?.elementTag||"").trim().toUpperCase();(String(c?.textContent||c?.computedName||c?.computedDescription||"").trim().length>=2||Iy.has(d))&&(a+=1),Ey.has(d)&&(i+=1)}return{rootsCount:r,semanticCount:o,meaningfulNodeCount:a,genericNodeRatio:o>0?i/o:1,visibleTextLength:0,isDocumentComplete:e.readyState==="complete",busy:Uy(e)}}function zp(e,t,n){let r=Fy(e,t,n),o=0;!(r.rootsCount>0&&r.semanticCount>0&&r.isDocumentComplete&&!r.busy&&r.meaningfulNodeCount>=2)&&r.semanticCount>0&&r.semanticCount<=6&&(r.meaningfulNodeCount>=1||r.genericNodeRatio>=.8)&&(o=Oi(e).trim().length);let a={...r,visibleTextLength:o},c=a.rootsCount>0&&a.semanticCount>0&&a.isDocumentComplete&&!a.busy&&(a.meaningfulNodeCount>=2||a.semanticCount<=6&&a.meaningfulNodeCount>=1&&a.visibleTextLength<160),d=[];return(a.rootsCount===0||a.semanticCount===0)&&d.push("empty_tree"),a.semanticCount>0&&a.semanticCount<=4&&a.meaningfulNodeCount===0&&d.push("generic_shell"),a.semanticCount<=6&&a.meaningfulNodeCount<=1&&a.genericNodeRatio>=.8&&a.visibleTextLength>=80&&(d.includes("generic_shell")||d.push("generic_shell"),d.push("text_semantic_mismatch")),(!a.isDocumentComplete||a.busy)&&a.semanticCount<=8&&a.meaningfulNodeCount<=1&&d.push("dom_not_ready"),{proceedImmediately:c,needsStabilization:!c&&d.length>0,reasons:d,signals:a}}function Oi(e){return e.body?.innerText||e.body?.textContent||e.documentElement?.innerText||e.documentElement?.textContent||""}function Hy(e){try{let t=e.defaultView||window,n=t.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",o=t[n]?.shadow?.getRoot;if(typeof o=="function"){let s=o(e.body||e.documentElement);if(s)return s}}catch{}return e}function qy(e){let t=e.URL||"";try{let n=new URL(t),r=n.searchParams.get("file")||n.searchParams.get("src")||"";return r||t}catch{return t}}async function Wy(e,t){let n=Number.isFinite(t)&&t>0?Math.floor(t):Is.pdfTextSelectionTimeoutMs,r=qy(e),o=Cs.get(r)??"";if(o.trim().length>0)return{success:!0,data:o,reason:"ok"};let s=await $y(e,n);return s.success&&s.data.trim()&&by(r,s.data),s}async function $y(e,t){let n=e.defaultView||window,r=Vy(e);if(!r||typeof r.postMessage!="function")return{success:!1,data:"",reason:"no_viewer"};let o=globalThis.crypto&&"randomUUID"in globalThis.crypto?globalThis.crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`,s=!1,i="",a=p=>{if(s||!zy(String(p.origin||""),e))return;let u=p.data;jy(u,o)&&typeof u.selectedText=="string"&&u.selectedText.trim().length>0&&(i=u.selectedText,s=!0)};n.addEventListener("message",a);try{r.postMessage({type:"selectAll",requestId:o},"*")}catch{}let c=Date.now();for(;!s&&Date.now()-c<t;){try{r.postMessage({type:"getSelectedText",requestId:o},"*")}catch{}if(await Pt(200,e),i.trim()){s=!0;break}}return n.removeEventListener("message",a),i.trim()?{success:!0,data:i,reason:"ok"}:{success:!1,data:"",reason:Date.now()-c>=t?"timeout":"no_response"}}function Vy(e){let t=lu(e)||e.querySelector?.('object[type="application/pdf"],object[type="application/x-google-chrome-pdf"]');if(t&&typeof t.postMessage=="function")return t;let n=e.querySelector?.('iframe[type="application/pdf"]');return n?.contentWindow?n.contentWindow:null}function zy(e,t){let n=(e||"").toLowerCase();if(!n||n==="null"||n.startsWith("chrome-extension://")||n.startsWith("chrome://")||n.startsWith("chrome-untrusted://"))return!0;try{let r=new URL(t.URL||"").origin.toLowerCase();if(r&&n===r)return!0}catch{}return!1}function jy(e,t){return!(!e||typeof e!="object"||e.type!=="getSelectedTextReply"||typeof e.selectedText!="string"||e.requestId&&e.requestId!==t)}function Gy(e){try{let t=e.defaultView||vr();if(t?.location.hostname==="docs.google.com"&&t?.location.pathname.startsWith("/document/d/"))return!0}catch{}try{if(e.querySelector('iframe[src^="https://docs.google.com/document/d/"]'))return!0}catch{}return Ms(e)!==null}function Ky(e){let n=(e.defaultView||vr())?.location.href??"";return/^https:\/\/docs\.google\.com\/spreadsheets\/(?:u\/\d+\/)?d\/[a-zA-Z0-9_-]+/.test(n)}function Xy(e){try{return e.defaultView?.top?.document??e}catch{return e}}function hc(e){let t=[e],n=Xy(e);return n!==e&&t.push(n),t}var Yy=".docs-texteventtarget-iframe",Qy=".kix-cursor",Jy=".docos-replyview-body",Zy=".docos-replyview",eT=".docos-author",Qp="\u200B",tT="\xA0";function Ms(e){for(let t of hc(e)){let n=t.querySelector(Yy);if(n)return n}return null}function nT(e){for(let t of hc(e)){let n=t.querySelector(Qy);if(n)return n}return null}function fc(e){let t=nT(e);return t?(t.ownerDocument?.defaultView?.getComputedStyle(t).display??t.style.display)==="none":!1}function pc(e,t){let n=Ms(e);if(!n)return;let r=t?"ArrowUp":"ArrowDown",s={key:r,keyCode:t?38:40,altKey:!0,shiftKey:!0,code:r,bubbles:!0,cancelable:!0},i=n.contentDocument,a=n.contentWindow;if(!i)return;let c=a?.KeyboardEvent||KeyboardEvent;i.dispatchEvent(new c("keydown",s))}function jp(e){let t=Ms(e);if(!t)return;let n={key:"ArrowLeft",keyCode:37,code:"ArrowLeft",bubbles:!0,cancelable:!0},r=t.contentDocument,o=t.contentWindow;if(!r)return;let s=o?.KeyboardEvent||KeyboardEvent;r.dispatchEvent(new s("keydown",n))}function rT(e){let t=Ms(e);if(!t)return;let r=(typeof navigator<"u"?String(navigator.platform||""):"").toUpperCase().indexOf("MAC")>=0,o={key:"a",code:"KeyA",ctrlKey:!r,metaKey:r,bubbles:!0,cancelable:!0},s=t.contentDocument,i=t.contentWindow;if(!s)return;let a=i?.KeyboardEvent||KeyboardEvent;s.dispatchEvent(new a("keydown",o))}function mc(e){let t=Ms(e);if(!t)return"";let n=t.contentDocument,r=t.contentWindow,o=n?.body;if(!n||!o)return"";try{let a=r?.ClipboardEvent||ClipboardEvent,c=new a("copy",{bubbles:!0,cancelable:!0});o.firstChild?.dispatchEvent?.(c),o.firstChild?.dispatchEvent||o.dispatchEvent(c)}catch{}let s=o.innerText||o.textContent||"";return String(s).replace(new RegExp(Qp,"g"),"")??""}function mu(e){let t=`
|
|
2
2
|
|
|
3
|
-
Comments: `,n=new Set,r=[];for(let s of
|
|
3
|
+
Comments: `,n=new Set,r=[];for(let s of hc(e))try{let i=Array.from(s.querySelectorAll(Jy));for(let a of i)n.has(a)||(n.add(a),r.push(a))}catch{}let o=r.filter(s=>s.textContent);if(o.length===0)return"";for(let s of o){let i=s.closest(Zy);if(!i)continue;let a=i.querySelector(eT);a&&a.textContent&&(t+=`
|
|
4
4
|
Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
5
|
-
`)}return t.trim()}function
|
|
5
|
+
`)}return t.trim()}function oT(){let e=gt()||document,t=Ms(e),n=t?.contentDocument,r=t?.contentWindow,o=()=>{let s=n?.body,i=gt(),a=s?.innerText||s?.textContent||""||i?.body?.innerText||i?.body?.textContent||"";return String(a).replace(new RegExp(Qp,"g"),"")+mu(e)};try{try{r?.focus(),n?.body?.focus?.()}catch{}if(rT(e),fc(e)){let c=mc(e);if(c.trim()!==""){let d=mu(e).trim();return c+d}else jp(e)}let s="";if(pc(e,!0),fc(e)){let c=mc(e);c.endsWith(`
|
|
6
6
|
|
|
7
|
-
`)||(s+=c.trimEnd())}if(
|
|
8
|
-
`)&&
|
|
9
|
-
`)&&(s+=c)}Cf(e);let i=hl(e).trim(),a=s.trim()+i;return a.trim()?a:o()}catch{return o()}}async function Xb(e,t){let n="",r;Pf(e,e.defaultView||window);let o=It(t?.deadlineEpochMs);try{let s=Math.max(250,Math.min(1500,Math.floor(o*.45))),i=await is(Kb(e),s,e);if(!(i.ok&&i.value))throw new Error("google_sheet_copy_failed");let c=It(t?.deadlineEpochMs),l=Math.max(250,Math.min(2500,Math.floor(c*.55)));if(n=await Yb(l,e),!n.trim())throw new Error("google_sheet_empty_clipboard")}catch(s){r=s instanceof Error?s.message:String(s)}return{content:n,contentType:al,error:r}}function Pf(e,t){try{t?.focus?.()}catch{}try{e?.body?.focus?.()}catch{}}function gl(e,t){let r=e.defaultView?.KeyboardEvent||KeyboardEvent,o=new r("keydown",{bubbles:!0,cancelable:!0,...t}),s=e.activeElement;(s&&s.ownerDocument===e?s:e).dispatchEvent(o)}async function Kb(e){try{if(Pf(e,e.defaultView||window),e.hidden||!e.hasFocus())return!1;gl(e,{key:"Escape",code:"Escape"}),await Rt(150,e);let t=e.querySelector(".grid-container")||Mf(e,".grid-container"),n=e.querySelector(".grid4-inner-container:last-child")||Mf(e,".grid4-inner-container:last-child");if(n){try{n.focus()}catch{}await Rt(100,e)}else if(t){try{t.focus?.()}catch{}await Rt(80,e)}let o=(typeof navigator<"u"?String(navigator.platform||""):"").toUpperCase().indexOf("MAC")>=0;gl(e,{key:"a",code:"KeyA",ctrlKey:!o,metaKey:o}),await Rt(200,e),gl(e,{key:"c",code:"KeyC",ctrlKey:!o,metaKey:o}),await Rt(200,e);try{e.execCommand("copy")}catch{}return!0}catch{return!1}}async function Yb(e,t){let n=Math.max(250,Math.min(5e3,Math.floor(e)));if(navigator?.clipboard?.readText){let s=await is(navigator.clipboard.readText(),n,t);if(s.ok)return s.value||""}let r=t.createElement("textarea");r.style.position="fixed",r.style.opacity="0",r.style.pointerEvents="none",r.style.left="-9999px",r.style.top="0",t.body?.appendChild(r),r.focus();try{t.execCommand("paste")}catch{}let o=r.value||"";return r.remove(),o}function Mf(e,t){let n=Ia(e);for(let a of n)try{let c=a.querySelector(t);if(c)return c}catch{}let r=1e5,o=0,s=(a,c)=>{if(!c)return;let l=c.children;if(l)for(let d=0;d<l.length;d++)a.push(l[d])},i=[];for(let a of n)try{s(i,a.documentElement??a.body??null)}catch{}for(;i.length&&o<r;){let a=i.pop();o++;try{if(a.matches(t))return a}catch{}s(i,a);let c=a.shadowRoot;if(c&&s(i,c),String(a.tagName).toUpperCase()==="IFRAME")try{let d=a.contentDocument;d&&s(i,d.documentElement??d.body??null)}catch{}}return null}async function Qb(e,t){let n=t?.profile??"light",r=!e.hidden,o=Math.max(0,Math.min(t?.timeBudgetMs??(n==="light"?1600:2800),3e3));if(o<=0)return!1;let s=Date.now(),i=()=>o-(Date.now()-s),a=t?.delayMs??(n==="light"?220:280),c=t?.finalWaitMs??(n==="light"?350:900),l=r?a:0,d=r?c:0,p=t?.amount,v=t?.maxSteps??(n==="light"?8:18),m=t?.maxDistancePx??(n==="light"?12e3:3e4),g=null;try{let A=await Nf(e,{action:"detectPrimary"});if(A?.selector){let F=Jb(e,A.selector);F&&(g=F)}let S=A?.metrics;if(S&&typeof S.scrollHeight=="number"&&typeof S.clientHeight=="number"){let F=Math.max(0,S.scrollHeight-S.clientHeight);m=Math.min(m,F||m),F<1500?v=Math.min(v,2):F<4e3?v=Math.min(v,4):F<1e4&&(v=Math.min(v,6))}}catch{}if(g||(g=e.scrollingElement||e.documentElement||e.body),!g)return!1;let T=0,D=null,N=0;for(let A=0;A<v&&!(i()<=0);A++){let S=null;try{S=await Nf(e,{action:"scrollBy",direction:pt.DOWN,options:{amount:p,behavior:"auto",isTabActive:r}})}catch{}if(!S||!S.success){let $=e.defaultView||window;S=ka(g,e,$,pt.DOWN,p),N=2}if(!S?.success)break;let F=S.scrollTop??D??0;if(D!==null){let $=Math.max(0,F-D);T+=$,N=$===0?N+1:0}if(D=F,S.isAtBottom||N>=2||T>=m)break;if(l>0&&A<v-1){let $=Math.min(l,Math.max(0,i()));if($<=0)break;await Rt($,e)}}if(d>0){let A=Math.min(d,Math.max(0,i()));A>0&&await Rt(A,e)}if(i()>80)try{let A=e.scrollingElement||e.documentElement||e.body,S=e.defaultView||window,F=g===e.documentElement||g===e.body||g===A?A:g;if(F){let $=F===A?S.innerHeight:F.clientHeight||S.innerHeight,Q=Math.max(0,F.scrollHeight-$);F.scrollTop=Q}}catch{}return!0}function Jb(e,t){try{return e.querySelector(t)}catch{return null}}async function Nf(e,t){let n=e.defaultView||window,r=n.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",i=(n[r]?.scroll||n.__RTRVR_SCROLL_API__)?.execute;return typeof i!="function"?null:i(t)}async function Zb(e,t){let n=e.defaultView||window,r=n.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",s=n[r]?.flushScan;if(typeof s!="function"){try{n.rtrvrAIMarkInteractiveElements?.()}catch{}return}let i=Date.now()+Math.max(100,Math.floor(t.totalBudgetMs)),a=0;for(;a<t.maxPasses&&It(i)>0;){let c=Math.max(50,Math.min(t.budgetMs,It(i)));try{await s({mode:t.mode??"full",includeShadow:!0,includeSameOriginIframes:!0,budgetMs:c,deadlineEpochMs:i})}catch{break}if(Lf(e)===0)break;a++}if(Lf(e)>0&&It(i)>50){let c=Math.min(120,It(i));try{await s({mode:"priority",includeShadow:!0,includeSameOriginIframes:!0,budgetMs:c,deadlineEpochMs:i})}catch{}}}function Lf(e){let t=e.documentElement;if(!t)return 0;let n=t.getAttribute(ko);if(!n)return 0;let r=Number.parseInt(n,10);return Number.isFinite(r)&&r>0?r:0}function ey(e){let t=ty(e.URL||"");if(!t?.sheetId)return;let n=ny(e),r=n?.title||"Sheet1";return{sheetId:t.sheetId,sheetTitle:e.title||n?.title||void 0,sheetTab:r,sheetTabId:t.sheetTabId??n?.id,sheetTabs:void 0}}function ty(e){if(!e)return null;try{let t=new URL(e);if(t.hostname!=="docs.google.com")return null;let n=t.pathname.split("/"),r=n.indexOf("spreadsheets"),o=n.indexOf("d");if(r===-1||o===-1||o!==r+1||n.length<=o+1)return null;let s=n[o+1];if(!s||!/^[a-zA-Z0-9_-]+$/.test(s))return null;let i;return t.hash&&t.hash.includes("gid=")&&(i=new URLSearchParams(t.hash.substring(1)).get("gid")??void 0),!i&&t.searchParams.has("gid")&&(i=t.searchParams.get("gid")??void 0),i&&!/^\\d+$/.test(i)&&(i=void 0),{sheetId:s,sheetTabId:i?parseInt(i,10):0}}catch{return null}}function ny(e){try{let t=e.querySelector('[role="tab"][aria-selected="true"]')||e.querySelector(".docs-sheet-tab-active")||e.querySelector('.docs-sheet-tab[aria-selected="true"]');if(!t)return null;let n=t.getAttribute("aria-label")||t.textContent?.trim()||void 0,r=t.getAttribute("data-sheet-id")||t.getAttribute("data-tab-id")||void 0,o=r&&/^\d+$/.test(r)?Number(r):void 0;return{title:n,id:o}}catch{return null}}var Rn;(function(e){e[e.Native=1]="Native",e[e.Inline=2]="Inline",e[e.React=4]="React",e[e.Vue=8]="Vue",e[e.Angular=16]="Angular",e[e.Svelte=32]="Svelte",e[e.JQuery=64]="JQuery",e[e.Delegated=128]="Delegated",e[e.Other=256]="Other",e[e.Inferred=512]="Inferred"})(Rn||(Rn={}));var ry={native:Rn.Native,inline:Rn.Inline,react:Rn.React,vue:Rn.Vue,angular:Rn.Angular,svelte:Rn.Svelte,jquery:Rn.JQuery,delegated:Rn.Delegated,other:Rn.Other};(()=>{let e=window,t="__RTRVR_MAIN_WORLD_INITIALIZED__",n=new WeakMap,r={frameworks:new Set,reactRoots:new WeakSet,vueRoots:new WeakSet,angularRoots:new WeakSet,svelteRoots:new WeakSet,jqueryRoots:new WeakSet},o=new WeakMap,s=new WeakMap,i=new Set,a=100,c=50,l=0,d=0,p=new WeakSet,v="__RTRVR_ET_HOOKED__",m="__RTRVR_ATTACH_SHADOW_HOOKED__";function g(h){if(h&&!p.has(h)){p.add(h);try{T(h)}catch{}try{D(h)}catch{}}}function T(h){try{let I=h.EventTarget;if(!I?.prototype||I.prototype[v])return;I.prototype[v]=!0;let M=I.prototype.addEventListener,O=I.prototype.removeEventListener;I.prototype.addEventListener=function(q,K,ce){try{jr(K)||En(this,q,ce)}catch{}return M.call(this,q,K,ce)},I.prototype.removeEventListener=function(q,K,ce){try{Gr(this,q,ce)}catch{}return O.call(this,q,K,ce)};try{let q=Function.prototype.toString;I.prototype.addEventListener.toString=()=>q.call(M),I.prototype.removeEventListener.toString=()=>q.call(O)}catch{}}catch{}}function D(h){try{let I=h.Element;if(!I?.prototype?.attachShadow||I.prototype[m])return;I.prototype[m]=!0;let M=I.prototype.attachShadow;I.prototype.attachShadow=function(O){let q=M.call(this,O);try{Us.set(this,q)}catch{}try{We(q)}catch{}return q};try{let O=Function.prototype.toString;I.prototype.attachShadow.toString=()=>O.call(M)}catch{}}catch{}}function N(h){let M=n.get(h)?.listenerTypeMasks;if(M&&M.size){let O=[];for(let q of M.keys()){let K=Mr[q];K&&O.push(K)}return O}return qs(h)}let A=["onclick","ondblclick","ondoubleclick","onmousedown","onmouseup","role","contenteditable","draggable","tabindex","disabled","type","aria-haspopup","aria-expanded","data-click","data-action","data-handler","data-toggle","data-target"],S=0,F=new Set,$=null,Q=!1,oe=6,me=["click","input","change","keydown","keyup","pointerdown","pointerup","submit","focus","blur"],fe=["mouseenter","mouseleave","mouseover","mouseout","mousedown","mouseup","wheel","scroll","dragstart","drop","touchstart","touchend"];if(e[t]){typeof e.rtrvrAIMarkInteractiveElements=="function"&&e.rtrvrAIMarkInteractiveElements(),typeof e.rtrvrAISetObserverPaused!="function"&&(e.rtrvrAISetObserverPaused=()=>!1),typeof e.rtrvrAIClearObserverPause!="function"&&(e.rtrvrAIClearObserverPause=()=>!1),typeof e.rtrvrAIIsObserverPaused!="function"&&(e.rtrvrAIIsObserverPaused=()=>!!dt()?.hidden);return}e[t]=!0;let _e={onclick:"click",ondblclick:"dblclick",ondoubleclick:"doubleclick",onmousedown:"mousedown",onmouseup:"mouseup",onmouseenter:"mouseenter",onmouseleave:"mouseleave",onmousemove:"mousemove",onmouseover:"mouseover",onmouseout:"mouseout",oncontextmenu:"contextmenu",onauxclick:"auxclick",onkeydown:"keydown",onkeyup:"keyup",onkeypress:"keypress",oninput:"input",onchange:"change",onsubmit:"submit",onreset:"reset",onselect:"select",onsearch:"search",oninvalid:"invalid",onbeforeinput:"beforeinput",onfocus:"focus",onblur:"blur",onfocusin:"focusin",onfocusout:"focusout",ontouchstart:"touchstart",ontouchend:"touchend",ontouchmove:"touchmove",ontouchcancel:"touchcancel",onpointerdown:"pointerdown",onpointerup:"pointerup",onpointermove:"pointermove",onpointerenter:"pointerenter",onpointerleave:"pointerleave",onpointercancel:"pointercancel",onpointerover:"pointerover",ondragstart:"dragstart",ondragend:"dragend",ondrag:"drag",ondragenter:"dragenter",ondragleave:"dragleave",ondragover:"dragover",ondrop:"drop",oncopy:"copy",oncut:"cut",onpaste:"paste",onscroll:"scroll",onwheel:"wheel",onplay:"play",onpause:"pause",onended:"ended",onvolumechange:"volumechange",onseeking:"seeking",onseeked:"seeked",onanimationstart:"animationstart",onanimationend:"animationend",ontransitionend:"transitionend",ontransitionstart:"transitionstart",onresize:"resize",ontoggle:"toggle",onfullscreenchange:"fullscreenchange",onload:"load",onerror:"error",onabort:"abort",onbeforeunload:"beforeunload",onunload:"unload",onhashchange:"hashchange",onpopstate:"popstate",onstorage:"storage",onmessage:"message"};function ge(h){return h?String(h).split(".")[0].toLowerCase():""}let Le=["data-click","data-action","data-event","data-handler","data-on-click","data-onclick","data-tap","data-press","data-toggle","data-target"],Se=0,ut=null,Re=new MessageChannel,Nt=[];Re.port1.onmessage=()=>{let h=Nt.shift();h&&h()};function gt(){return Date.now()}function at(h){return!h||!Number.isFinite(h)?Number.POSITIVE_INFINITY:Math.max(0,h-gt())}let Lt=8,$n=new MessageChannel,Mn=!1;function ln(){if(!Mn){Mn=!0;try{$n.port2.postMessage(0)}catch{}}}function bt(h){let I=h.values().next();if(I.done)return null;let M=I.value;return h.delete(M),M}function Qe(){return new Promise(h=>{Nt.push(h),Re.port2.postMessage(0)})}let Zt=!1;function Ir(){if(!Zt)try{let h=e.jQuery;h&&h.fn&&(fn(h),Zt=!0,Ot("jquery"))}catch{}}function xr(h,I){for(let M=I.lastElementChild;M;M=M.previousElementSibling)h.push(M)}function Tn(h,I,M){if(M)try{let O=Xr(I);O&&h.push(O)}catch{}}function ho(h,I,M){if(M&&Hs(I))try{let O=I.contentWindow||null;O&&g(O);let q=O?.document?.documentElement;q&&h.push(q)}catch{}}let Je=new WeakSet;function Vn(h){h&&(typeof h=="function"||typeof h=="object")&&Je.add(h)}function jr(h){return!!h&&(typeof h=="function"||typeof h=="object")&&Je.has(h)}$n.port1.onmessage=()=>{if(Pt()){F.clear(),i.clear(),S=0,yt(),Mn=!1;return}Mn=!1,dn(500);let h=performance.now();for(;F.size&&performance.now()-h<Lt;){let I=bt(F);if(!I)break;try{se(I)}catch{}finally{S=Math.max(0,S-1)}}for(;i.size&&performance.now()-h<Lt;){let I=bt(i);if(!I)break;try{en(I)}catch{}}yt(),(F.size||i.size)&&ln()};function yt(){try{let h=dt()?.documentElement;if(!h)return;h.setAttribute(ko,String(S))}catch{}}function un(h){let I=n.get(h);return I||(I={frameworks:new Set,listeners:new Map},n.set(h,I)),I}function Nn(h){Pt()||(i.add(h),i.size>2e3&&dn(1500),ln())}function Dt(h){Pt()||F.has(h)||(F.add(h),S++,yt(),ln(),F.size>2e3&&dn(1500))}function dn(h=1500){let I=0;for(let M of F){if(I>=h)break;I++,M.isConnected||(F.delete(M),S=Math.max(0,S-1))}I=0;for(let M of i){if(I>=h)break;I++,M.isConnected||i.delete(M)}yt()}let rt=null;function Sr(h,I,M){return`${h}|${I?1:0}|${M?1:0}`}function cr(h){let I=h.tagName;if(I==="A"||I==="BUTTON"||I==="INPUT"||I==="SELECT"||I==="TEXTAREA"||I==="SUMMARY"||h.hasAttribute("role")||h.hasAttribute("tabindex")||h.hasAttribute("contenteditable")||h.hasAttribute("onclick")||h.getAttributeNames().some(M=>M.startsWith("on")))return!0;for(let M of Le)if(h.hasAttribute(M))return!0;return!!(h.hasAttribute("aria-haspopup")||h.hasAttribute("aria-expanded"))}function zn(h){let I=be(h);if(!Et(h,I))return!1;let M=h.tagName;if(M!=="DIV"&&M!=="SPAN"&&M!=="LI"&&M!=="SECTION"&&M!=="ARTICLE"&&M!=="P")return!1;let O=h;if(O.__ngContext__||O.__svelte__||O.__vue__||O._vnode||O.__reactFiber$||O.__reactProps$)return!0;let q=0;for(let K in O){if(++q>30)break;if(K.startsWith("__react")||K.includes("reactFiber")||K.includes("reactProps"))return!0}return!1}function Ln(){let h=dt()?.documentElement;return h?r.frameworks.size>0||h.hasAttribute("rtrvr-react")||h.hasAttribute("rtrvr-vue")||h.hasAttribute("rtrvr-angular")||h.hasAttribute("rtrvr-svelte")||h.hasAttribute("rtrvr-jquery"):!1}function go(h){if(Pt())return;let I=performance.now();for(;F.size&&performance.now()-I<h;){let M=bt(F);if(!M)break;try{se(M)}catch{}finally{S=Math.max(0,S-1)}}for(;i.size&&performance.now()-I<h;){let M=bt(i);if(!M)break;try{en(M)}catch{}}}async function jn(h={}){if(Pt())return F.clear(),i.clear(),S=0,yt(),{revision:++Se,scanned:0,durationMs:0,done:!0,remaining:0};dn(3e3),Ir(),nn();let I=h.mode??"full",M=h.includeShadow??!0,O=h.includeSameOriginIframes??!0,q=Math.max(50,Math.min(h.budgetMs??2500,15e3)),K=h.deadlineEpochMs,ce=Math.max(0,Math.min(q,at(K))),pe=Sr(I,M,O);if(ce<=0){let jt=(rt?.stack?.length??0)+F.size+i.size;return{revision:++Se,scanned:0,durationMs:0,done:jt===0,remaining:jt}}if((!rt||rt.optsKey!==pe)&&at(K)>30&&await ke({budgetMs:18,deadlineEpochMs:K}),I==="priority"){let jt=performance.now(),tt=0;for(;F.size&&performance.now()-jt<=ce&&!(K&&at(K)<=0);){let ct=bt(F);if(!ct)break;try{se(ct)}catch{}tt++,S=Math.max(0,S-1)}for(;i.size&&performance.now()-jt<=ce&&!(K&&at(K)<=0);){let ct=bt(i);if(!ct)break;try{en(ct)}catch{}}return yt(),{revision:++Se,scanned:tt,durationMs:performance.now()-jt,done:F.size===0&&i.size===0,remaining:F.size+i.size}}if(!rt||rt.optsKey!==pe){let jt=dt()?.documentElement;rt={optsKey:pe,stack:jt?[jt]:[],scannedTotal:0}}let Fe=performance.now(),$e=0;for(S++,yt();rt.stack.length&&!(K&&at(K)<=0);){let jt=rt.stack.pop();if(xn(jt)){let ct=jt.children;for(let dr=ct.length-1;dr>=0;dr--)rt.stack.push(ct[dr]);continue}let tt=jt;if(!(!tt||tt.nodeType!==1)&&!(tt.tagName==="SCRIPT"||tt.tagName==="STYLE"||tt.tagName==="META"||tt.tagName==="NOSCRIPT")){try{(cr(tt)||Ln()&&zn(tt))&&se(tt)}catch{}try{en(tt)}catch{}if(F.delete(tt)&&(S=Math.max(0,S-1)),i.delete(tt),$e++,rt.scannedTotal++,M)try{let ct=Xr(tt);ct&&(We(ct),rt.stack.push(ct))}catch{}if(O&&Hs(tt))try{let ct=tt.contentWindow||null;ct&&g(ct);let dr=ct?.document,fr=dr?.documentElement;dr&&fr&&(ee(dr),rt.stack.push(fr))}catch{}for(let ct=tt.lastElementChild;ct;ct=ct.previousElementSibling)rt.stack.push(ct);$e%800===0&&at(K)>20&&await Qe()}}let Ye=Math.max(0,ce-(performance.now()-Fe)),Bt=at(K);go(Math.min(250,Ye,Bt)),S=Math.max(0,S-1),yt();let Ht=rt.stack.length===0,Cr=rt.stack.length;return Ht&&(rt=null),{revision:++Se,scanned:$e,durationMs:performance.now()-Fe,done:Ht,remaining:Cr}}async function lr(h={}){return ut||(ut=jn(h).finally(()=>{ut=null}),ut)}e.rtrvrAIFlushScan=lr;let ur="__RTRVR_INTERNAL__";Object(window).__RTRVR_INTERNAL_KEY__=ur;let kn=e[ur],_n=kn&&typeof kn=="object"?kn:{};if(!kn)try{Object.defineProperty(e,ur,{value:_n,writable:!1,configurable:!1,enumerable:!1})}catch{}try{Object.defineProperty(_n,"flushScan",{value:lr,writable:!1,configurable:!1,enumerable:!1})}catch{}function Ee(h,I){let M=un(h),O=ge(I.type);if(!O)return;let q=!1,K=M.listeners.get(O);K||(K=[],M.listeners.set(O,K),q=!0);let ce=K.find(Ie=>Ie.source===I.source&&!!Ie.inferred==!!I.inferred);if(ce){let Ie=!!ce.capture,Fe=!!ce.passive,$e=!!ce.once;ce.capture=ce.capture||I.capture,ce.passive=ce.passive||I.passive,ce.once=ce.once||I.once,(Ie!==!!ce.capture||Fe!==!!ce.passive||$e!==!!ce.once)&&(q=!0)}else K.push({...I,type:O}),q=!0;let pe=He[O];if(pe!==void 0){M.listenerTypeMasks||(M.listenerTypeMasks=new Map);let Ie=0,Fe=ry[I.source];Ie|=Fe!==void 0?Fe:Rn.Other,I.inferred&&(Ie|=Rn.Inferred);let $e=M.listenerTypeMasks.get(pe)||0,Ye=$e|Ie;Ye!==$e&&(M.listenerTypeMasks.set(pe,Ye),q=!0)}q&&(M.role=void 0,Nn(h))}function Rr(h){let I=h.listenerTypeMasks;return!I||I.size===0?null:[...I.entries()].sort((O,q)=>O[0]-q[0]).map(([O,q])=>`${O}~${(q||0).toString(36)}`).join(",")}function Dn(h,I){let M=un(h);M.frameworks.has(I)||(M.frameworks.add(I),Nn(h))}function Ot(h){r.frameworks.has(h)||(r.frameworks.add(h),dt()?.documentElement?.setAttribute(`rtrvr-${h}`,"1"))}function en(h){let I=n.get(h);if(!I)return;i.delete(h);let M=Rr(I);M?M!==I.lastListenersSerialized&&(h.setAttribute(Kr,M),I.lastListenersSerialized=M):I.lastListenersSerialized&&(h.removeAttribute(Kr),I.lastListenersSerialized=void 0);let O=be(h);if(Et(h,O))if(I.role===void 0&&(I.role=On(h)),I.role){let q=Qo[I.role],K=typeof q=="number"?String(q):`s:${I.role}`;K!==I.lastRoleSerialized&&(h.setAttribute(Lr,K),I.lastRoleSerialized=K)}else(I.lastRoleSerialized||h.hasAttribute(Lr))&&(h.removeAttribute(Lr),I.lastRoleSerialized=void 0)}function ot(h){let I=[],M=h;for(;M;)I.push(M),M=M.parentNode||M.host;return I}function Go(h){let I=h.tagName.toLowerCase(),M=h.getAttribute("role"),O=M?M.toLowerCase().trim():"";if(O&&Nr.has(O)||I==="button"||(I==="a"||I==="area")&&h.hasAttribute("href"))return!0;if(I==="input")return h.type?.toLowerCase()!=="hidden";if(I==="select"||I==="textarea"||(I==="video"||I==="audio")&&h.hasAttribute("controls")||h.isContentEditable||h.hasAttribute("contenteditable"))return!0;let q=h.getAttribute("tabindex");return!!(q!==null&&!Number.isNaN(Number.parseInt(q,10))&&(N(h).some(pe=>ra.has(pe))||h.getAttributeNames().some(pe=>pe.startsWith("on"))))}function qi(h,I=10){let M=[];for(let O=0;O<h.children.length;O++)M.push({node:h.children[O],depth:1});for(;M.length;){let{node:O,depth:q}=M.pop();if(Go(O))return!0;if(!(q>=I))for(let K=0;K<O.children.length;K++)M.push({node:O.children[K],depth:q+1})}return!1}function On(h){let I=h.tagName.toLowerCase(),M=h.getAttribute("role"),O=M?M.toLowerCase().trim():"",q=h.type?.toLowerCase();if(O&&Nr.has(O))return O;if(O&&Ws.has(O))return null;if(I==="a"&&h.hasAttribute("href"))return"link";if(I==="button")return"button";if(I==="input")return q==="hidden"?null:q==="checkbox"?"checkbox":q==="radio"?"radio":q==="range"?"slider":q==="number"?"spinbutton":q==="search"?"searchbox":["button","submit","reset","image","file"].includes(q)?"button":h.hasAttribute("list")?"combobox":"textbox";if(I==="textarea")return"textbox";if(I==="select"){let Ye=h;return Ye.multiple||Ye.size&&Ye.size>1?"listbox":"combobox"}if(I==="option")return"option";if(I==="form")return"form";if(I==="video"||I==="audio"){let Ye=qs(h);return h.hasAttribute("controls")||Ye.length>0?"media":null}if(h.isContentEditable||h.hasAttribute("contenteditable"))return"textbox";let K=N(h);if(!K.length)return null;let ce=!1,pe=!1,Ie=!1;for(let Ye=0;Ye<K.length;Ye++){let Bt=K[Ye];!ce&&ra.has(Bt)&&(ce=!0),!pe&&Vc.has(Bt)&&(pe=!0),!Ie&&zc.has(Bt)&&(Ie=!0)}if(!ce&&!pe&&!Ie)return null;let Fe=h.getAttribute("tabindex"),$e=Fe!==null&&!Number.isNaN(Number.parseInt(Fe,10));if(ce&&(el(h)||h.getAttribute("href")||h.closest("a[href]")))return"link";if(pe){if(h.isContentEditable||h.hasAttribute("contenteditable"))return"textbox";if(O==="textbox"||O==="searchbox"||O==="combobox"||O==="spinbutton")return O;if(!ce&&$e)return"textbox"}if(ce){let Ye=h.getAttribute("aria-checked"),Bt=h.getAttribute("aria-pressed");if(Ye!==null||Bt!==null){if(O==="radio")return"radio";if(O==="menuitemradio")return"menuitemradio";if(O==="menuitemcheckbox")return"menuitemcheckbox";if(Bt!==null)return"button";if(Ye!==null)return"checkbox"}if(($e||O==="button")&&!qi(h))return"button"}return Ie?"application":null}let Ar=EventTarget.prototype.addEventListener,Pn=EventTarget.prototype.removeEventListener;function tn(h){let I=!1,M,O;return typeof h=="boolean"?I=h:h&&typeof h=="object"&&(I=!!h.capture,M=h.passive,O=h.once),{capture:I,passive:M,once:O}}function Gn(h){try{let I=h;if(I?.nodeType===9&&I?.documentElement)return I;let M=I?.document;if(M&&M.nodeType===9&&M.documentElement)return M}catch{}return null}function En(h,I,M){let O=ge(I);if(!O)return;let{capture:q,passive:K,once:ce}=tn(M),pe=o.get(h);pe||(pe=new Map,o.set(h,pe));let Ie=pe.get(O);if(Ie?(Ie.count+=1,Ie.capture=Ie.capture||q,Ie.passive=Ie.passive||K):pe.set(O,{count:1,capture:q,passive:K}),vo(h))try{Ee(h,{type:O,source:"native",capture:q,passive:K,once:ce})}catch{}let Fe=Gn(h);if(Fe&&(O==="click"||O==="input"||O==="keydown"))try{Fe.documentElement?.setAttribute(`rtrvr-gl-${O}`,"1")}catch{}}function Gr(h,I,M){let O=ge(I);if(!O)return;let q=o.get(h);if(!q)return;let K=q.get(O);K&&(K.count-=1,K.count<=0&&q.delete(O),q.size===0&&o.delete(h))}g(window);function fn(h){if(!h||!h.fn)return;let I=h.fn.on,M=h.fn.off;function O(K){if(!K)return[];if(typeof K=="string")return K.split(/\s/).map(ce=>ge(ce)).filter(Boolean);if(typeof K=="object")try{return Object.keys(K).map(ce=>ge(ce)).filter(Boolean)}catch{return[]}return[]}function q(K){try{if(!K)return null;if(vo(K))return K;let ce=be(K);return Ji(K,ce)||null}catch{}return null}h.fn.on=function(K,ce){let pe=O(K),Ie=typeof ce=="string"&&!!ce;return this.each(function(){let Fe=q(this);if(Fe){if(Ie){let $e=s.get(Fe);$e||($e=[],s.set(Fe,$e));for(let Ye of pe){let Bt=`${Ye}::${ce}`;$e.some(Ht=>`${Ht.type}::${Ht.selector}`===Bt)||($e.push({type:Ye,selector:ce}),$e.length>400&&$e.shift())}}else for(let $e of pe)Ee(Fe,{type:$e,source:"jquery"});Dn(Fe,"jquery"),Ot("jquery"),r.jqueryRoots.add(Fe)}}),I.apply(this,arguments)},h.fn.off=function(){return M.apply(this,arguments)},Ot("jquery")}function Ze(h){Le.some(M=>h.hasAttribute(M))&&(Ee(h,{type:"click",source:"other",inferred:!0}),(h.tagName==="INPUT"||h.tagName==="TEXTAREA")&&(Ee(h,{type:"input",source:"other",inferred:!0}),Ee(h,{type:"change",source:"other",inferred:!0})))}function bo(h){let I=be(h),M=Et(h,I),O=h.getAttributeNames().some(Ie=>Ie.startsWith("on")),q=/^(button|a|input|select|textarea|summary)$/i.test(h.tagName),K=h,ce=M&&(aa(h)||!!K.isContentEditable||h.hasAttribute("contenteditable")),pe=M&&!!K.draggable;if(!O&&!q&&!ce&&!pe){Ze(h);return}for(let[Ie,Fe]of Object.entries(_e))typeof h[Ie]=="function"&&Ee(h,{type:Fe,source:"inline"});ce&&(Ee(h,{type:"input",source:"other",inferred:!0}),Ee(h,{type:"keydown",source:"other",inferred:!0}),Ee(h,{type:"keyup",source:"other",inferred:!0}),Ee(h,{type:"paste",source:"other",inferred:!0})),pe&&(Ee(h,{type:"dragstart",source:"other",inferred:!0}),Ee(h,{type:"dragend",source:"other",inferred:!0})),Ze(h)}function f(h){if(!h.startsWith("on")||h.length<=2)return null;if(h.endsWith("Capture")){let M=h.substring(2,h.length-7);return M?{type:M.toLowerCase(),capture:!0}:null}let I=h.substring(2);return I?{type:I.toLowerCase(),capture:!1}:null}function w(h){let I=null;if(h){for(let M in h)if(M.startsWith("__react")||M.startsWith("_react")||M.includes("reactFiber")||M.includes("reactProps")||M.includes("reactInternalInstance")){I=M;break}if(I)try{let M=h[I],O=M?.memoizedProps||M?.pendingProps;if(O&&typeof O=="object"){for(let q in O){if(typeof O[q]!="function")continue;let ce=f(q);ce&&Ee(h,{type:ce.type,source:"react",capture:ce.capture})}vo(M?.stateNode)&&r.reactRoots.add(M.stateNode),Dn(h,"react"),Ot("react")}}catch{}}}function E(h){let I=h,M=!1;if(I.__vue__){M=!0;let O=I.__vue__;O.$listeners&&Object.keys(O.$listeners).forEach(q=>Ee(h,{type:q,source:"vue"})),O._events&&Object.keys(O._events).forEach(q=>Ee(h,{type:q,source:"vue"})),O.$options?._parentListeners&&Object.keys(O.$options._parentListeners).forEach(q=>Ee(h,{type:q,source:"vue"})),r.vueRoots.add(h)}if(I._vnode?.props){M=!0;let O=I._vnode.props;Object.keys(O).forEach(q=>{q.startsWith("on")&&q.length>2&&Ee(h,{type:q.substring(2).toLowerCase(),source:"vue"})}),r.vueRoots.add(h)}M&&(Dn(h,"vue"),Ot("vue"))}function _(h){let I=h,M=!1;if(I.__ngContext__||h.hasAttribute("_ngcontent")||h.hasAttribute("ng-version")){M=!0,Array.from(h.attributes).forEach(O=>{if(O.name.startsWith("(")&&O.name.endsWith(")")){let q=O.name.slice(1,-1).split(".")[0];q&&Ee(h,{type:q,source:"angular"})}if(O.name.startsWith("on-")){let q=O.name.substring(3);q&&Ee(h,{type:q,source:"angular"})}if(O.name.includes(".")){let q=O.name.match(/\(([^.)]+)/);q?.[1]&&Ee(h,{type:q[1],source:"angular"})}});try{if(e.ng?.getComponent){let O=e.ng.getComponent(h);O&&Object.keys(O).forEach(q=>{(q.endsWith("Output")||q.endsWith("Emitter"))&&Ee(h,{type:q.replace(/(Output|Emitter)$/,"").toLowerCase(),source:"angular"})})}}catch{}}M&&(Dn(h,"angular"),Ot("angular"),r.angularRoots.add(h))}function y(h){let I=h,M=!1;if(I.__svelte__){M=!0,Array.from(h.attributes).forEach(O=>{if(O.name.startsWith("on:")){let q=O.name.substring(3);q&&Ee(h,{type:q,source:"svelte"})}});try{let O=I.__svelte__?.$$?.callbacks;O&&typeof O=="object"&&Object.keys(O).forEach(q=>Ee(h,{type:q,source:"svelte"}))}catch{}r.svelteRoots.add(h)}M&&(Dn(h,"svelte"),Ot("svelte"))}function b(h,I){return h?!!o.get(h)?.has(I):!1}function k(h,I,M=96){let O=ge(I);if(!O)return!1;let q=Y(h),K=ne(q);if(b(q,O)||b(K,O))return!0;let ce=0,pe=h;for(;pe&&ce<M;){if(pe.parentElement)pe=pe.parentElement;else{let Ie=pe.getRootNode?.();if(xn(Ie)){if(b(Ie,O)||b(Ie.host,O))return!0;pe=Ie.host}else break}if(pe&&b(pe,O))return!0}return!1}function x(h,I,M=128){let O=0,q=h;for(;q&&O<M;){if(I(q),q.parentElement){q=q.parentElement;continue}let K=q.getRootNode?.();if(xn(K)){q=K.host;continue}break}}function B(h){let I=be(h);if(!Et(h,I))return;let M=un(h);M.role=M.role||On(h);let O=k(h,"click"),q=k(h,"input"),K=k(h,"keydown"),pe=Y(h).documentElement;if(r.frameworks.size>0||pe.hasAttribute("rtrvr-react")||pe.hasAttribute("rtrvr-vue")||pe.hasAttribute("rtrvr-angular")||pe.hasAttribute("rtrvr-svelte")||pe.hasAttribute("rtrvr-jquery")||O||q||K){let Fe=M.role||"other";O&&["button","link","checkbox","radio","switch","menuitem","menuitemcheckbox","menuitemradio","tab","option","treeitem","gridcell","cell","img","figure"].includes(Fe)&&Ee(h,{type:"click",source:"delegated",inferred:!0}),["textbox","searchbox","spinbutton","code"].includes(Fe)&&(q&&(Ee(h,{type:"input",source:"delegated",inferred:!0}),Ee(h,{type:"change",source:"delegated",inferred:!0})),K&&Ee(h,{type:"keydown",source:"delegated",inferred:!0})),["combobox","listbox"].includes(Fe)&&(O&&Ee(h,{type:"click",source:"delegated",inferred:!0}),q&&Ee(h,{type:"change",source:"delegated",inferred:!0})),["slider","scrollbar","progressbar","meter"].includes(Fe)&&q&&Ee(h,{type:"input",source:"delegated",inferred:!0})}x(h,Fe=>{let $e=s.get(Fe);if($e?.length)for(let{type:Ye,selector:Bt}of $e)try{h.matches(Bt)&&(Ee(h,{type:Ye,source:"jquery",inferred:!0}),Dn(h,"jquery"),Ot("jquery"))}catch{}})}function P(h){let I=M=>{if(Pt())return;let O=M,q=O.composedPath&&O.composedPath()||ot(M.target),ce=h==="mousemove"||h==="pointermove"||h==="scroll"||h==="wheel"?1:Math.min(q.length,oe);for(let pe=0;pe<ce;pe++){let Ie=q[pe];vo(Ie)&&Ee(Ie,{type:h,source:"delegated",inferred:!0})}};Vn(I);try{Ar.call(document,h,I,{capture:!0,passive:!0})}catch{}}let H=!1,W=!1,z=null;function te(){if(W)return;W=!0,me.forEach(P);let h=dt()?.documentElement;if(!h)return;let I=()=>{if(H)return;let M=h.hasAttribute("rtrvr-react")||h.hasAttribute("rtrvr-vue")||h.hasAttribute("rtrvr-angular")||h.hasAttribute("rtrvr-svelte"),O=h.hasAttribute("rtrvr-gl-click")||h.hasAttribute("rtrvr-gl-input")||h.hasAttribute("rtrvr-gl-keydown");(M||O)&&(H=!0,fe.forEach(P))};I();try{z=new MutationObserver(()=>I()),z.observe(h,{attributes:!0,attributeFilter:Ue})}catch{}}function se(h){if(h.nodeType!==1)return;let I=be(h);if(Et(h,I)){let M=un(h);M.role=void 0}bo(h),w(h),E(h),_(h),y(h),B(h),Nn(h)}function we(){if(Pt())return;let h=["a[href]","button","input","select","textarea","summary","details > summary",...Array.from(Nr).map(I=>`[role="${I}"]`),"[onclick]","[ondblclick]","[ondoubleclick]","[onmousedown]","[tabindex]","[contenteditable]",'[draggable="true"]',"[aria-haspopup]","[aria-expanded]","[data-click]","[data-action]","[data-handler]","[data-toggle]","[data-target]",".clickable",".interactive",".btn",".button"];S++,yt();try{let I=h.join(",");dt()?.querySelectorAll(I).forEach(M=>{try{se(M)}catch{}})}finally{S=Math.max(0,S-1),yt()}}let le=!1,ie=[],ue=200;function Me(h){if(!Pt()){for(let I of h)ie.push(I);le||(le=!0,queueMicrotask(je))}}function je(){le=!1;let h=ie;if(ie=[],Pt())return;let I=0;for(let M of h){if(I>=ue)break;for(let O of Array.from(M.addedNodes)){if(I>=ue)break;if(O.nodeType!==1)continue;let q=O;Dt(q),I++;let K=q.querySelectorAll?.('a,button,input,select,textarea,summary,[role],[onclick],[ondblclick],[ondoubleclick],[contenteditable],[draggable="true"],[tabindex]');if(K){let ce=Math.min(K.length,50);for(let pe=0;pe<ce;pe++)Dt(K[pe]),I++}}if(M.type==="attributes"&&M.target.nodeType===1){let O=M.target;M.attributeName==="class"?cr(O)&&Dt(O):Dt(O)}}}async function ke(h={}){if(Pt())return;let I=dt(),M=I?.documentElement;if(!M||!(M.hasAttribute("rtrvr-react")||M.hasAttribute("rtrvr-vue")||M.hasAttribute("rtrvr-angular")||M.hasAttribute("rtrvr-svelte")))return;let q=h.deadlineEpochMs,K=Math.max(5,Math.min(h.budgetMs??12,50));if(Math.max(0,Math.min(K,at(q)))<=0)return;let pe=performance.now();S++,yt();try{let Ie=0,Fe=["div","span","li","section","article","p"];for(let $e of Fe){let Ye=I.getElementsByTagName($e)??[];for(let Bt=0;Bt<Ye.length;Bt++){if(q&&at(q)<=0)return;Ie++;let Ht=Ye[Bt],Cr=Ht;(Cr.__ngContext__||Cr.__svelte__||Cr.__vue__||Cr._vnode||zn(Ht))&&se(Ht),Ie%250===0&&at(q)>20&&await Qe()}}}finally{S=Math.max(0,S-1),yt()}}let ve=new MutationObserver(Me),Pe=new WeakMap,Ne=new Set;function We(h){let I=Pe.get(h);if(I){if(Ne.add(I),!Q)try{I.observe(h,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...A,"class"]})}catch{}return}if(!(l>=a))try{let M=ne(h.ownerDocument).MutationObserver||MutationObserver,O=new M(Me);Pe.set(h,O),Ne.add(O),l++,Q||O.observe(h,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...A,"class"]})}catch{}}let Ke=new WeakMap,ae=new Set;function ee(h){let I=Ke.get(h);if(I){if(ae.add(I),!Q)try{let M=h.documentElement;M&&I.observe(M,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...A,"class"]})}catch{}return}if(!(d>=c))try{g(h.defaultView||null);let M=h.documentElement;if(!M)return;let O=ne(h).MutationObserver||MutationObserver,q=new O(Me);Ke.set(h,q),ae.add(q),d++,Q||q.observe(M,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...A,"class"]})}catch{}}function de(){let h=dt()?.documentElement;h&&ve.observe(h,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...A,"class"]})}let Ue=["rtrvr-react","rtrvr-vue","rtrvr-angular","rtrvr-svelte","rtrvr-gl-click","rtrvr-gl-input","rtrvr-gl-keydown"];function zt(){return $??!!dt()?.hidden}function Pt(){return Q}function Bs(h){let I=!!h;if(Q===I)return;if(Q=I,Q){try{ve.disconnect()}catch{}try{z?.disconnect()}catch{}for(let O of Ne)try{O.disconnect()}catch{}for(let O of ae)try{O.disconnect()}catch{}Ne.clear(),ae.clear(),F.clear(),i.clear(),S=0,yt();return}de();let M=dt()?.documentElement;if(M&&z)try{z.observe(M,{attributes:!0,attributeFilter:Ue})}catch{}we()}function Xo(h){return $=typeof h=="boolean"?h:null,Bs(zt()),!0}let Us=new WeakMap;function Xr(h){return h.shadowRoot||Us.get(h)||null}try{Object.defineProperty(_n,"shadow",{value:Object.freeze({getRoot:h=>Xr(h)}),writable:!1,configurable:!1,enumerable:!1})}catch{}function nn(){try{(e.React||e.__REACT_DEVTOOLS_GLOBAL_HOOK__)&&Ot("react"),e.Vue&&Ot("vue"),e.ng&&Ot("angular"),e.jQuery&&Ot("jquery"),Ir()}catch{}}e.rtrvrAISetObserverPaused=function(h){return Xo(!!h)},e.rtrvrAIClearObserverPause=function(){return Xo(null)},e.rtrvrAIIsObserverPaused=function(){return Pt()},e.rtrvrAIMarkInteractiveElements=function(){return dt()?.body?(we(),!0):!1};function Oc(){let h=dt();Ir(),nn(),te();let I=()=>{$==null&&Bs(zt())};h?.addEventListener("visibilitychange",I,{passive:!0}),Bs(zt());let M=()=>{Ir(),nn(),Pt()||(de(),e.rtrvrAIMarkInteractiveElements?.(),ke({budgetMs:20})),h?.documentElement.setAttribute(qc,"1")};h?.readyState==="loading"?h.addEventListener("DOMContentLoaded",M,{once:!0}):M()}Oc()})();var xa=null;function bl(e){try{return e.getAttribute(Kr)}catch{return null}}function Bf(e){let t=bl(e);return To(t)?.entries??[]}function Uf(e){try{let t=e.getAttribute(Lr);return t&&t.trim()?t:null}catch{return null}}function oy(e){let t=e?.ownerDocument?.defaultView,n=t?.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",o=t?.[n]?.shadow?.getRoot;if(typeof o=="function")try{return o(e)||null}catch{}return e.shadowRoot||null}function sy(e){let t=new Set;for(let n of e){let r=zi(n.mask);for(let o of r)(o==="react"||o==="vue"||o==="angular"||o==="svelte"||o==="jquery")&&t.add(o)}return t}function iy(e){let t=new Set,n=e;return(n.__reactFiber||n.__reactProps||n.__reactInternalInstance||n.__reactRootContainer)&&t.add("react"),(n.__vue__||n.__vueParentComponent||n.__vnode||n.__vue_app__)&&t.add("vue"),n.__ngContext__&&t.add("angular"),(n.__svelte||n.__svelte_meta)&&t.add("svelte"),(n.__jquery||n.jQuery)&&t.add("jquery"),t}function ay(e){let t=Bf(e),n=sy(t),r=iy(e);for(let o of r)n.add(o);return{frameworks:[...n],listenersRaw:bl(e)||"",role:Uf(e)??(e.getAttribute?.("role")||null)}}function cy(){return{getEventHandlerIds:e=>Bf(e).map(t=>t.id),getRoleHint:Uf,getShadowRoot:oy}}function Ff(e={}){if(xa)return xa;if(typeof window<"u")try{window.rtrvrAIMarkInteractiveElements?.()}catch{}return xa={signalProvider:cy(),getFrameworkMetadata:ay,getListenerEncoding:bl,dispose:()=>{}},xa}var ly=new Set(["co.uk","org.uk","gov.uk","ac.uk","com.au","net.au","org.au","co.jp","com.br","com.mx","com.sg","co.in"]);function Sa(e,t,n){let r=Array.isArray(e)?e:typeof e=="string"&&e.trim()?[e]:[],o=new Set;for(let s of r){let i=uy(Hf(String(s||"")),n);i&&o.add(i)}if(!o.size){let s=fy(t,n);s&&o.add(s)}return Array.from(o)}function uy(e,t){return e?t!=="host_only"||e==="*"||e.startsWith("=")||e.startsWith("*.")?e:`=${e}`:""}function dy(e){let t=String(e||"").trim().toLowerCase();if(!t)return"";try{if(t.includes("://"))return new URL(t).hostname.toLowerCase();if(t.startsWith("//"))return new URL(`https:${t}`).hostname.toLowerCase()}catch{}return t.replace(/:\d+$/,"").replace(/[^a-z0-9.-]/g,"").replace(/^\.+/,"").replace(/\.+$/,"")}function Hf(e){let t=String(e||"").trim().toLowerCase();if(!t)return"";if(t==="*")return"*";let n=t.startsWith("="),r=!n&&t.startsWith("*."),o=n?t.slice(1):r?t.slice(2):t,s=dy(o);return s?n?`=${s}`:r?`*.${s}`:s:""}function fy(e,t){let n=String(e||"").trim().toLowerCase();if(!n)return"";if(n==="localhost"||/^\d+\.\d+\.\d+\.\d+$/.test(n))return`=${n}`;if(t==="host_only")return`=${n}`;let r=n.split(".").filter(Boolean);if(r.length<2)return n;let o=`${r[r.length-2]}.${r[r.length-1]}`;return r.length>=3&&ly.has(o)?`${r[r.length-3]}.${o}`:o}function Pr(e,t){let n=us(e);if(!n)return!1;if(!t.length)return!0;for(let r of t)if(py(n,r))return!0;return!1}function us(e){try{return new URL(e).hostname.toLowerCase()}catch{return null}}function py(e,t){let n=Hf(t);if(!n)return!1;if(n==="*")return!0;if(n.startsWith("=")){let r=n.slice(1);return!!r&&e===r}if(n.startsWith("*.")){let r=n.slice(2);return r?e===r||e.endsWith(`.${r}`):!1}return e===n?!0:e.endsWith(`.${n}`)}var Ca=class e{root;includeFrames;disableDomAnnotations;allowActions;runtimeId;domainScopeMode;allowedDomains;externalNavigationPolicy;crossHostPolicy;registerOpenedTab;listKnownTabs;switchToLogicalTab;onNavigationGuardrail;onBeforeAgentNavigation;onBeforeCrossHostNavigation;instrumentation;highlightEl=null;clientTools=new Map;navigationDelayMs;domSettleDebounceMs;domSettleMaxWaitMs;domSettleRetries;sparseTreeRetryDelayMs;sparseTreeRetryMaxAttempts;uploadStore=new Map;uploadProviderInstalled=!1;actionGateContext={};static NAV_PREFLIGHT_TIMEOUT_MS=1500;constructor(t={}){this.root=t.root??document.body??document.documentElement,this.includeFrames=t.includeFrames??!0,this.disableDomAnnotations=t.disableDomAnnotations??!0,this.allowActions=t.allowActions??!0,this.runtimeId=t.runtimeId,this.domainScopeMode=qf(t.domainScopeMode),this.allowedDomains=Sa(t.allowedDomains,window.location.hostname,this.domainScopeMode),this.externalNavigationPolicy=Wf(t.externalNavigationPolicy),this.crossHostPolicy=$f(t.crossHostPolicy),this.registerOpenedTab=t.registerOpenedTab,this.listKnownTabs=t.listKnownTabs,this.switchToLogicalTab=t.switchToLogicalTab,this.onNavigationGuardrail=t.onNavigationGuardrail,this.onBeforeAgentNavigation=t.onBeforeAgentNavigation,this.onBeforeCrossHostNavigation=t.onBeforeCrossHostNavigation,this.navigationDelayMs=t.navigationDelayMs??80,this.domSettleDebounceMs=ni(t.domSettle?.debounceMs,24,8,500),this.domSettleMaxWaitMs=ni(t.domSettle?.maxWaitMs,220,80,5e3),this.domSettleRetries=ni(t.domSettle?.retries,0,0,6),this.sparseTreeRetryDelayMs=ni(t.domSettle?.sparseTreeRetryDelayMs,35,20,1e3),this.sparseTreeRetryMaxAttempts=ni(t.domSettle?.sparseTreeRetryMaxAttempts,1,0,4),this.instrumentation=t.instrumentation??Ff({includeIframes:!0,scanInlineHandlers:!0,observeInlineMutations:!0,...t.instrumentationOptions||{}}),If(),t.uploadBytesProvider&&this.setUploadBytesProvider(t.uploadBytesProvider)}setAllowActions(t){this.allowActions=!!t}setActionGateContext(t){let n={};(t?.mode==="controller"||t?.mode==="observer")&&(n.mode=t.mode),typeof t?.controllerRuntimeId=="string"&&t.controllerRuntimeId.trim()&&(n.controllerRuntimeId=t.controllerRuntimeId.trim()),Number.isFinite(Number(t?.activeLogicalTabId))&&Number(t?.activeLogicalTabId)>0&&(n.activeLogicalTabId=Number(t?.activeLogicalTabId)),Number.isFinite(Number(t?.localLogicalTabId))&&Number(t?.localLogicalTabId)>0&&(n.localLogicalTabId=Number(t?.localLogicalTabId)),typeof t?.reason=="string"&&t.reason.trim()&&(n.reason=t.reason.trim().slice(0,240)),this.actionGateContext=n}setNavigationPolicy(t){t.domainScopeMode&&(this.domainScopeMode=qf(t.domainScopeMode),t.allowedDomains||(this.allowedDomains=Sa(void 0,window.location.hostname,this.domainScopeMode))),t.allowedDomains&&(this.allowedDomains=Sa(t.allowedDomains,window.location.hostname,this.domainScopeMode)),t.externalNavigationPolicy&&(this.externalNavigationPolicy=Wf(t.externalNavigationPolicy)),t.crossHostPolicy&&(this.crossHostPolicy=$f(t.crossHostPolicy))}async getSnapshot(){return await jf(this.root),ei(this.root,this.instrumentation,{includeFrames:this.includeFrames,disableDomAnnotations:this.disableDomAnnotations})}async getPageData(t){await jf(this.root);let n=Ta(t?.pageConfig),r={...n||{},adaptiveSettleDebounceMs:typeof n?.adaptiveSettleDebounceMs=="number"?n.adaptiveSettleDebounceMs:this.domSettleDebounceMs,adaptiveSettleMaxWaitMs:typeof n?.adaptiveSettleMaxWaitMs=="number"?n.adaptiveSettleMaxWaitMs:this.domSettleMaxWaitMs,adaptiveSettleRetries:typeof n?.adaptiveSettleRetries=="number"?n.adaptiveSettleRetries:this.domSettleRetries,sparseTreeRetryDelayMs:typeof n?.sparseTreeRetryDelayMs=="number"?n.sparseTreeRetryDelayMs:this.sparseTreeRetryDelayMs,sparseTreeRetryMaxAttempts:typeof n?.sparseTreeRetryMaxAttempts=="number"?n.sparseTreeRetryMaxAttempts:this.sparseTreeRetryMaxAttempts};return await Df(this.root,this.instrumentation,{includeFrames:this.includeFrames,disableDomAnnotations:this.disableDomAnnotations,pageConfig:r})}async executeTool(t,n){let r=my(t?.name);if(!r)return{success:!1,error:`Unknown tool: ${String(t?.name)}`,allowFallback:!1};if(this.shouldBlockForOutOfScopeContext(r))return this.domainScopeBlockedResponse(window.location.href,"Current tab is outside the allowed navigation scope.",{fromCurrentContext:!0});if(!this.allowActions&&!zf.has(r))return{success:!1,error:"Actions disabled by configuration",allowFallback:!1,output:{reason:this.actionGateContext.mode==="observer"?"Actions are disabled because this tab is currently in observer mode.":this.actionGateContext.reason||"Actions disabled by configuration",actionGate:this.actionGateContext}};let o=await this.handleNavigationTools(r,t?.args||{});if(o)return o;if(r===U.wait_action){let g=Number(t?.args?.duration??1e3);return await new Promise(T=>setTimeout(T,Math.max(0,Math.min(g,6e4)))),{success:!0}}if(r===U.wait_for_element)return this.waitForElement(t?.args||{});if(r===U.answer_task)return{success:!0};if(r===U.solve_captcha)return Aa("CAPTCHA solving requires human intervention in embed mode.","HUMAN_INTERVENTION_REQUIRED");if(r===U.network_run_recipe)return Aa("network_run_recipe is not supported in embed mode.","CAPABILITY_UNAVAILABLE");let s=t?.args||{},i=yy(s),a=ss(document,s.iframe_id);if(s.iframe_id!=null&&a.unresolvedPath.length>0&&!i)return this.iframeContextUnavailableResponse(s.iframe_id,a);if(r===U.click_element&&s?.open_in_new_tab)return this.openElementInNewTab(s);if(r===U.click_element){let g=this.getInterceptedClickTarget(s);if(g?.targetUrl){if(g.forceOpenInNewTab)return this.openUrlInNewTab(g.targetUrl,{policyBlocked:!0,reason:g.reason,decisionReason:"open_new_tab"});let D=g.reason;return this.externalNavigationPolicy==="open_new_tab_notice"?this.openUrlInNewTab(g.targetUrl,{policyBlocked:!0,reason:D,decisionReason:"open_new_tab"}):this.domainScopeBlockedResponse(g.targetUrl,D,{decisionReason:"policy_blocked"})}let T=this.getClickTargetUrl(s);if(T){let D=this.buildNavigationIntent(T);if(D.isCrossHost){let N=await this.resolveAgentNavigationDecision(D,this.getNavigationFallbackDecision(T));if(N.decision==="block")return this.domainScopeBlockedResponse(T,N.reason||"Navigation blocked by policy.",{decisionReason:N.decisionReason||"policy_blocked"});if(N.decision==="open_new_tab")return this.openUrlInNewTab(T,{policyBlocked:!0,reason:N.reason||"Navigation policy requires opening a new tab.",decisionReason:N.decisionReason||"open_new_tab"});this.notifyCrossHostNavigation(D)}else{let N=await this.resolveAgentNavigationDecision(D,"allow_same_tab");if(N.decision==="block")return this.domainScopeBlockedResponse(T,N.reason||"Navigation blocked by policy.",{decisionReason:N.decisionReason||"policy_blocked"});if(N.decision==="open_new_tab")return this.openUrlInNewTab(T,{policyBlocked:!0,reason:N.reason||"Navigation policy requires opening a new tab.",decisionReason:N.decisionReason||"open_new_tab"})}}}if(r===U.describe_images)return this.describeImages(t?.args||{});if(!(r in Vi))return{success:!1,error:`Unknown tool: ${String(t?.name)}`,allowFallback:!1};let{doc:c}=a,l=yl(s),d=l?Jn(c,l):null,p;if(d){let g=this.instrumentation.getFrameworkMetadata(d),T=by(g.listenersRaw||"",r),D=s?.value??s?.text??null;p=gy({...g,pattern:T,value:D})}let v=Vi[r];return r===U.upload_file&&!n&&(n=await this.buildUploadPayload(s).catch(()=>{})),xf({opcode:v,call:{name:r,args:s},elementData:p,tabIndex:0,payload:n})}iframeContextUnavailableResponse(t,n){let o=`iframe_id unresolved: remaining=${n.unresolvedPath.join(">")||"(none)"} (cross-origin, not-ready, or not found)`;return{success:!1,error:o,allowFallback:!1,output:{success:!1,error:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:o,retryable:!1},iframe_context:{requested_iframe_id:t,requested_path:n.iframePath,resolved_path:n.resolvedPath,unresolved_path:n.unresolvedPath}},errorDetails:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:o,retryable:!1,details:{requested_iframe_id:t,requested_path:n.iframePath,resolved_path:n.resolvedPath,unresolved_path:n.unresolvedPath}}}}highlight(t){let n=Jn(document,t);if(!n)return;let r=n.getBoundingClientRect();if(!this.highlightEl){let o=document.createElement("div");o.style.position="fixed",o.style.pointerEvents="none",o.style.border="2px solid #ff7a59",o.style.boxShadow="0 0 0 2px rgba(255, 122, 89, 0.2)",o.style.borderRadius="6px",o.style.zIndex="2147483647",this.highlightEl=o,document.body.appendChild(o)}this.highlightEl.style.left=`${r.left}px`,this.highlightEl.style.top=`${r.top}px`,this.highlightEl.style.width=`${Math.max(0,r.width)}px`,this.highlightEl.style.height=`${Math.max(0,r.height)}px`,this.highlightEl.style.display="block"}clearHighlight(){this.highlightEl&&(this.highlightEl.style.display="none")}setUploadBytesProvider(t){window.__ROVER_UPLOAD_BYTES__=t}registerTool(t,n){let r=typeof t=="string"?{name:t}:t;!r?.name||typeof n!="function"||this.clientTools.set(r.name,{handler:n,def:r})}async executeClientTool(t,n){let r=this.clientTools.get(t);if(!r)throw new Error(`Unknown client tool: ${t}`);return r.handler(n)}listClientTools(){return Array.from(this.clientTools.values()).map(t=>t.def)}async handleNavigationTools(t,n){switch(t){case U.goto_url:{let r=String(n.url||"").trim();if(!r)return{success:!1,error:"goto_url: missing url",allowFallback:!0};let o=Ra(r,window.location.href);if(!o)return{success:!1,error:`goto_url: invalid url "${r}"`,allowFallback:!0};if(this.shouldPreserveHostRuntime(o)){let a=this.buildNavigationIntent(o),c=await this.resolveAgentNavigationDecision(a,this.getNavigationFallbackDecision(o)),l=this.externalNavigationPolicy==="block"?"block":"open_new_tab";return(c.decision==="allow_same_tab"?l:c.decision)==="block"?this.domainScopeBlockedResponse(o,c.reason||"Navigation blocked by policy.",{decisionReason:c.decisionReason}):await this.openUrlInNewTab(o,{policyBlocked:!0,reason:c.reason||"Opened in a new tab to preserve Rover runtime continuity across hostnames.",decisionReason:c.decisionReason||"open_new_tab"})}if(this.shouldGuardExternalNavigation(o)){let a="Navigation blocked by domain policy.";return this.externalNavigationPolicy==="open_new_tab_notice"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:a}):this.domainScopeBlockedResponse(o,a)}let s=this.buildNavigationIntent(o);if(s.isCrossHost){let a=await this.resolveAgentNavigationDecision(s,this.getNavigationFallbackDecision(o));return a.decision==="block"?this.domainScopeBlockedResponse(o,a.reason||"Navigation blocked by policy.",{decisionReason:a.decisionReason}):a.decision==="open_new_tab"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:a.reason||"Navigation policy requires opening a new tab.",decisionReason:a.decisionReason||"open_new_tab"}):this.scheduleSameTabNavigation(o,s,{decisionReason:a.decisionReason||"allow_same_tab",reason:a.reason||"Navigation allowed."})}let i=await this.resolveAgentNavigationDecision(s,"allow_same_tab");return i.decision==="block"?this.domainScopeBlockedResponse(o,i.reason||"Navigation blocked by policy.",{decisionReason:i.decisionReason||"policy_blocked"}):i.decision==="open_new_tab"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:i.reason||"Navigation policy requires opening a new tab.",decisionReason:i.decisionReason||"open_new_tab"}):this.scheduleSameTabNavigation(o,s,{decisionReason:i.decisionReason||"allow_same_tab",reason:i.reason||"Navigation allowed."})}case U.google_search:{let r=String(n.query||"").trim();if(!r)return{success:!1,error:"google_search: missing query",allowFallback:!0};let o=`https://www.google.com/search?q=${encodeURIComponent(r)}`;if(this.shouldPreserveHostRuntime(o)){let a=this.buildNavigationIntent(o),c=await this.resolveAgentNavigationDecision(a,this.getNavigationFallbackDecision(o)),l=this.externalNavigationPolicy==="block"?"block":"open_new_tab";return(c.decision==="allow_same_tab"?l:c.decision)==="block"?this.domainScopeBlockedResponse(o,c.reason||"Navigation blocked by policy.",{decisionReason:c.decisionReason}):await this.openUrlInNewTab(o,{policyBlocked:!0,reason:c.reason||"Opened in a new tab to preserve Rover runtime continuity across hostnames.",decisionReason:c.decisionReason||"open_new_tab"})}if(this.shouldGuardExternalNavigation(o)){let a="Google search opens outside the allowed navigation scope.";return this.externalNavigationPolicy==="open_new_tab_notice"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:a}):this.domainScopeBlockedResponse(o,a)}let s=this.buildNavigationIntent(o);if(s.isCrossHost){let a=await this.resolveAgentNavigationDecision(s,this.getNavigationFallbackDecision(o));return a.decision==="block"?this.domainScopeBlockedResponse(o,a.reason||"Navigation blocked by policy.",{decisionReason:a.decisionReason}):a.decision==="open_new_tab"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:a.reason||"Navigation policy requires opening a new tab.",decisionReason:a.decisionReason||"open_new_tab"}):this.scheduleSameTabNavigation(o,s,{decisionReason:a.decisionReason||"allow_same_tab",reason:a.reason||"Navigation allowed."})}let i=await this.resolveAgentNavigationDecision(s,"allow_same_tab");return i.decision==="block"?this.domainScopeBlockedResponse(o,i.reason||"Navigation blocked by policy.",{decisionReason:i.decisionReason||"policy_blocked"}):i.decision==="open_new_tab"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:i.reason||"Navigation policy requires opening a new tab.",decisionReason:i.decisionReason||"open_new_tab"}):this.scheduleSameTabNavigation(o,s,{decisionReason:i.decisionReason||"allow_same_tab",reason:i.reason||"Navigation allowed."})}case U.go_back:{let r=this.buildNavigationIntent(window.location.href,{isCrossHost:!1});return await this.resolveAgentNavigationDecision(r,"allow_same_tab"),this.scheduleHistoryNavigation("back"),{success:!0,output:{navigation:"same_tab",navigationOutcome:"same_host_navigated",navigationPending:!1,decisionReason:"allow_same_tab"}}}case U.go_forward:{let r=this.buildNavigationIntent(window.location.href,{isCrossHost:!1});return await this.resolveAgentNavigationDecision(r,"allow_same_tab"),this.scheduleHistoryNavigation("forward"),{success:!0,output:{navigation:"same_tab",navigationOutcome:"same_host_navigated",navigationPending:!1,decisionReason:"allow_same_tab"}}}case U.refresh_page:{let r=this.buildNavigationIntent(window.location.href,{isCrossHost:!1});return await this.resolveAgentNavigationDecision(r,"allow_same_tab"),this.scheduleHistoryNavigation("reload"),{success:!0,output:{navigation:"same_tab",navigationOutcome:"same_host_navigated",navigationPending:!1,decisionReason:"allow_same_tab"}}}case U.open_new_tab:{let r=String(n.url||"").trim();if(!r)return{success:!1,error:"open_new_tab: missing url",allowFallback:!0};let o=Ra(r,window.location.href);if(!o)return{success:!1,error:`open_new_tab: invalid url "${r}"`,allowFallback:!0};let s=this.buildNavigationIntent(o),i=await this.resolveAgentNavigationDecision(s,"open_new_tab");return i.decision==="block"?this.domainScopeBlockedResponse(o,i.reason||"Navigation blocked by policy.",{decisionReason:i.decisionReason}):await this.openUrlInNewTab(o,{policyBlocked:!1,reason:i.reason,decisionReason:i.decisionReason||"open_new_tab"})}case U.switch_tab:{let r=Number(n.logical_tab_id??n.tab_id);if(!Number.isFinite(r)||r<=0)return{success:!1,error:(typeof n._tab_id_mapping_error=="string"?String(n._tab_id_mapping_error).trim():"")||"switch_tab: missing/invalid logical_tab_id",allowFallback:!0};if(this.externalNavigationPolicy!=="allow"&&this.listKnownTabs){let o=this.listKnownTabs().find(s=>Number(s.logicalTabId)===r);if(o?.external)return this.domainScopeBlockedResponse(o.url||`logical_tab_id:${r}`,`Tab ${r} is out of scope. Direct actions are blocked for this tab.`)}if(!this.switchToLogicalTab)return Aa("switch_tab requires session coordinator support.","CAPABILITY_UNAVAILABLE");try{let o=await this.switchToLogicalTab(r);return o?.ok?{success:!0,output:{logicalTabId:r,delegated:!!o.delegated,mode:o.delegated?"delegated":"local"}}:{success:!1,error:o?.reason||`switch_tab failed for logical tab ${r}`,allowFallback:!0}}catch(o){return{success:!1,error:o?.message||"switch_tab failed",allowFallback:!0}}}case U.close_tab:try{return window.close(),{success:!0}}catch{return Aa("close_tab failed in embed mode.","CAPABILITY_UNAVAILABLE")}default:return null}}shouldGuardExternalNavigation(t){return this.externalNavigationPolicy==="allow"?!1:!Pr(t,this.allowedDomains)}shouldPreserveHostRuntime(t){return this.externalNavigationPolicy==="allow"?!1:!Pr(t,this.allowedDomains)}getNavigationFallbackDecision(t){return t?Pr(t,this.allowedDomains)?this.crossHostPolicy==="open_new_tab"&&this.isCrossHostNavigation(t)?"open_new_tab":"allow_same_tab":this.externalNavigationPolicy==="block"?"block":this.externalNavigationPolicy==="open_new_tab_notice"?"open_new_tab":"allow_same_tab":"allow_same_tab"}isCrossHostNavigation(t){let n=us(window.location.href),r=us(t);return!n||!r?!1:n!==r}buildNavigationIntent(t,n){let r="";try{r=crypto.randomUUID()}catch{r=`handoff_${Date.now()}_${Math.floor(Math.random()*1e5)}`}return{handoffId:r,targetUrl:t,sourceRuntimeId:this.runtimeId,sourceLogicalTabId:this.actionGateContext.localLogicalTabId,runId:n?.runId,isCrossHost:n?.isCrossHost??this.isCrossHostNavigation(t),ts:Date.now()}}async resolveAgentNavigationDecision(t,n){let r={decision:n,decisionReason:n==="block"?"policy_blocked":n==="open_new_tab"?"open_new_tab":"allow_same_tab"};if(!this.onBeforeAgentNavigation)return r;try{let o=this.onBeforeAgentNavigation(t),s=await this.awaitWithTimeout(o,e.NAV_PREFLIGHT_TIMEOUT_MS);if(!s||typeof s!="object")return r;let i=String(s.decision||"").trim();return{decision:i==="allow_same_tab"||i==="open_new_tab"||i==="block"?i:i==="stale_run"?n:r.decision,reason:String(s.reason||"").trim()||void 0,decisionReason:String(s.decisionReason||"").trim()||r.decisionReason}}catch{return r}}async awaitWithTimeout(t,n){let r=t;return!r||typeof r.then!="function"?t:await Promise.race([r,new Promise(o=>{window.setTimeout(()=>o(void 0),Math.max(0,n))})])}scheduleHistoryNavigation(t){window.setTimeout(()=>{t==="back"?window.history.back():t==="forward"?window.history.forward():window.location.reload()},this.navigationDelayMs)}scheduleSameTabNavigation(t,n,r){let o=n.isCrossHost===!0,s=Pr(t,this.allowedDomains);return o&&this.notifyCrossHostNavigation(n),s?(window.setTimeout(()=>{try{window.location.href=t}catch{window.location.assign(t)}},this.navigationDelayMs),{success:!0,output:{url:t,navigation:"same_tab",navigationOutcome:o?"subdomain_navigated":"same_host_navigated",navigationPending:!1,decisionReason:r?.decisionReason||"allow_same_tab",reason:r?.reason,...r?.convertedFrom?{convertedFrom:r.convertedFrom}:{}}}):(window.setTimeout(()=>{try{window.location.href=t}catch{window.location.assign(t)}},Math.max(this.navigationDelayMs,200)),{success:!0,output:{url:t,navigation:"same_tab",navigationOutcome:"same_tab_scheduled",navigationPending:!0,decisionReason:r?.decisionReason||"allow_same_tab",reason:r?.reason,...r?.convertedFrom?{convertedFrom:r.convertedFrom}:{}}})}notifyCrossHostNavigation(t){if(t.isCrossHost)try{this.onBeforeCrossHostNavigation?.(t)}catch{}}shouldBlockForOutOfScopeContext(t){return this.externalNavigationPolicy==="allow"||zf.has(t)||hy.has(t)?!1:!Pr(window.location.href,this.allowedDomains)}getInterceptedClickTarget(t){let n=this.getClickTargetUrl(t);return n?this.shouldPreserveHostRuntime(n)?!Pr(n,this.allowedDomains)&&this.externalNavigationPolicy==="block"?{targetUrl:n,reason:"Blocked same-tab navigation to an out-of-scope destination.",forceOpenInNewTab:!1}:{targetUrl:n,reason:"Opened in a new tab to preserve Rover runtime continuity outside allowed domains.",forceOpenInNewTab:!0}:this.externalNavigationPolicy==="allow"||Pr(n,this.allowedDomains)?null:{targetUrl:n,reason:"Blocked same-tab navigation to an out-of-scope destination.",forceOpenInNewTab:!1}:null}getClickTargetUrl(t){let n=yl(t);if(!n)return null;let{doc:r}=ss(document,t.iframe_id),o=Jn(r,n);if(!o)return null;let s=Vf(o),i=s?.href||s?.getAttribute("href")||"";return Ra(i,window.location.href)}domainScopeBlockedResponse(t,n,r){let o=this.externalNavigationPolicy==="block"?"block":"open_new_tab_notice";this.emitNavigationGuardrail({blockedUrl:t,currentUrl:window.location.href,policyAction:o,reason:n,allowedDomains:this.allowedDomains,openedInNewTab:!1});let s;try{s=new URL(t).hostname}catch{}return{success:!1,error:n,allowFallback:!0,output:{success:!1,error:{code:"DOMAIN_SCOPE_BLOCKED",message:n,missing:[],next_action:o==="block"?"This domain is blocked. Do NOT retry. Acknowledge and proceed with the task using available resources.":"Use open_new_tab to access external pages without losing context.",retryable:!1},blocked_url:t,current_url:window.location.href,policy_action:o,blockedDomainStatus:"blocked",navigationOutcome:"blocked",decisionReason:r?.decisionReason||"policy_blocked",from_current_context:!!r?.fromCurrentContext,agentInstruction:`Navigation to ${s||t} is blocked by domain policy. Do NOT retry this URL. Acknowledge to user and proceed with the next step.`,blockedDomain:s||t,pageContext:{url:t,title:`[Blocked] ${s||t}`,contentText:`Access to ${s||t} is restricted by navigation policy. The page content is not available. Continue the task without this resource or use /scrape endpoint if external context is needed.`,accessible:!1}},errorDetails:{code:"DOMAIN_SCOPE_BLOCKED",message:n,retryable:!1,details:{blockedUrl:t,currentUrl:window.location.href,policyAction:o,blockedDomain:s}}}}emitNavigationGuardrail(t){try{this.onNavigationGuardrail?.(t)}catch{}}async openUrlInNewTab(t,n){let r=!Pr(t,this.allowedDomains),o=this.snapshotKnownTabIds(),s=this.openVerifiedPopup(t),i;if(s.opened&&this.registerOpenedTab)try{i=(await this.registerOpenedTab({url:t,title:void 0,external:r,openerRuntimeId:this.runtimeId}))?.logicalTabId}catch{}if(s.opened&&!i&&(i=await this.reconcileOpenedTab(t,o)),!s.opened){let d=await this.reconcileOpenedTab(t,o);d&&(s={opened:!0,verified:!1},i=i||d)}let a=s.opened&&!i&&!!this.registerOpenedTab;if(!s.opened){let d="Browser popup settings blocked opening a new tab.";return n?.policyBlocked&&this.emitNavigationGuardrail({blockedUrl:t,currentUrl:window.location.href,policyAction:"open_new_tab_notice",reason:n.reason||d,allowedDomains:this.allowedDomains,openedInNewTab:!1}),{success:!1,error:"open_new_tab blocked by browser popup settings",allowFallback:!0,output:{url:t,external:r,logicalTabId:i,navigationOutcome:"blocked",decisionReason:n?.decisionReason||"policy_blocked"},errorDetails:{code:"POPUP_BLOCKED",message:d,retryable:!0,next_action:"Allow popups for this site and try again."}}}let c=n?.policyBlocked?n.reason||"Opened in a new tab due to domain policy.":void 0;n?.policyBlocked&&this.emitNavigationGuardrail({blockedUrl:t,currentUrl:window.location.href,policyAction:"open_new_tab_notice",reason:c||"Opened in new tab due to domain policy.",allowedDomains:this.allowedDomains,openedInNewTab:!0});let l=[];return a&&l.push("Tab opened but registration failed; tab may not be targetable."),s.verified||l.push("Tab open was triggered, but browser did not return a popup handle."),{success:!0,output:{url:t,external:r,logicalTabId:i,openedInNewTab:!0,navigationOutcome:"new_tab_opened",navigationPending:!0,decisionReason:n?.decisionReason||"open_new_tab",openVerification:s.verified?"verified":"unverified",policyBlocked:!!n?.policyBlocked,message:c,...l.length?{warning:l.join(" ")}:{}},allowFallback:!0}}openVerifiedPopup(t){let n=window.open("about:blank","_blank");if(n){try{n.opener=null}catch{}try{n.location.href=t}catch{}return{opened:!0,verified:!0}}try{let r=window.open(t,"_blank");if(r){try{r.opener=null}catch{}return{opened:!0,verified:!0}}}catch{}try{let r=window.open(t,"_blank","noopener,noreferrer");if(r){try{r.opener=null}catch{}return{opened:!0,verified:!0}}return{opened:!0,verified:!1}}catch{}try{let r=document.createElement("a");return r.href=t,r.target="_blank",r.rel="noopener noreferrer",r.style.display="none",document.body.appendChild(r),r.click(),r.remove(),{opened:!0,verified:!1}}catch{return{opened:!1,verified:!1}}}snapshotKnownTabIds(){let t=new Set;if(!this.listKnownTabs)return t;try{let n=this.listKnownTabs();for(let r of n){let o=Number(r?.logicalTabId);!Number.isFinite(o)||o<=0||t.add(o)}}catch{return t}return t}async reconcileOpenedTab(t,n){if(!this.listKnownTabs)return;let r=us(t),o=Date.now()+2e3;for(;Date.now()<o;){try{let s=this.listKnownTabs();for(let i of s){let a=Number(i?.logicalTabId);if(!Number.isFinite(a)||a<=0||n.has(a))continue;let c=String(i?.url||"").trim();if(!c)return a;let l=us(c);if(!r||!l||l===r)return a}}catch{}await new Promise(s=>setTimeout(s,120))}}async openElementInNewTab(t){let n=yl(t);if(!n)return{success:!1,error:"click_element with open_in_new_tab requires element_id.",allowFallback:!0};let{doc:r}=ss(document,t.iframe_id),o=Jn(r,n);if(!o)return{success:!1,error:`click_element: element_id ${String(n)} not found.`,allowFallback:!0};let s=Vf(o),i=s?.href||s?.getAttribute("href")||"",a=Ra(i,window.location.href);return a?await this.openUrlInNewTab(a,{policyBlocked:!1}):{success:!1,error:"click_element open_in_new_tab only works when target resolves to a valid link URL.",allowFallback:!0}}async waitForElement(t){let n=String(t.selector||"").trim(),r=Math.max(0,Math.min(Number(t.timeout??5e3),3e4));if(!n)return{success:!1,error:"wait_for_element: missing selector",allowFallback:!0};let o=Date.now(),s=document;for(;Date.now()-o<r;){let i=null;try{i=s.querySelector(n)}catch{i=null}if(i||(i=vy(s,n)),i)return{success:!0};await new Promise(a=>setTimeout(a,200))}return{success:!1,error:`wait_for_element: not found (${n})`,allowFallback:!0}}async describeImages(t){let n=Gu(t);if(!n.length)return{success:!1,error:"describe_images: element_ids is empty",allowFallback:!1};let r=[],o=[];for(let s of n){let i=Jn(document,s);if(!i){o.push(`element_id ${s} not found`);continue}try{let a=await Ty(i);if(!a?.data||!a?.mimeType){o.push(`element_id ${s}: unsupported image`);continue}r.push({element_id:s,...a})}catch(a){o.push(`element_id ${s}: ${a?.message||String(a)}`)}}return r.length?{success:!0,output:{images:r,errors:o.length?o:void 0}}:{success:!1,error:o[0]||"describe_images failed",output:{images:[],errors:o}}}ensureUploadProvider(){this.uploadProviderInstalled||(this.uploadProviderInstalled=!0,this.setUploadBytesProvider(async({token:t,byteLength:n})=>{this.pruneUploadStore();let r=this.uploadStore.get(t);if(!r)throw new Error("upload bytes token not found");if(r.bytes.byteLength!==n)throw new Error("upload bytes size mismatch");return r.bytes}))}pruneUploadStore(){let t=Date.now()-6e5;for(let[n,r]of this.uploadStore.entries())r.createdAt<t&&this.uploadStore.delete(n)}async buildUploadPayload(t){let n=String(t.file_url||"").trim();if(n)try{let r=await vf(0,n,document?.referrer||null),o=r.bytes,s=o.byteLength,i=r.mimeType||t.mime_type||"application/octet-stream",a=t.file_name||r.fileName,c=1024*1024;if(s<=c)return{kind:"upload_file",inlineB64:Kf(o),byteLength:s,mimeType:i,fileName:a};this.ensureUploadProvider();let l=crypto.randomUUID();return this.uploadStore.set(l,{bytes:o,createdAt:Date.now()}),{kind:"upload_file",token:l,byteLength:s,mimeType:i,fileName:a,durable:!1}}catch{return}}};function my(e){return e==="open_url_new_tab"?U.open_new_tab:String(e||"").trim()}function qf(e){return e==="host_only"?"host_only":"registrable_domain"}function Wf(e){return e==="allow"||e==="block"||e==="open_new_tab_notice"?e:"open_new_tab_notice"}function $f(e){return e==="open_new_tab"||e==="same_tab"?e:"same_tab"}function ni(e,t,n,r){let o=Number(e);return Number.isFinite(o)?Math.max(n,Math.min(r,Math.floor(o))):t}function Ra(e,t){let n=String(e||"").trim();if(!n)return null;try{return new URL(n,t).toString()}catch{return null}}function Vf(e){if(e instanceof HTMLAnchorElement&&e.href)return e;let t=e.closest?.("a[href]");return t instanceof HTMLAnchorElement&&t.href?t:null}function Aa(e,t="CAPABILITY_UNAVAILABLE"){return{success:!1,error:e,allowFallback:!0,errorDetails:{code:t,message:e,retryable:!1}}}var zf=new Set([U.describe_images,U.wait_action,U.wait_for_element,U.answer_task,U.solve_captcha,U.network_run_recipe]),hy=new Set([U.goto_url,U.google_search,U.go_back,U.go_forward,U.refresh_page,U.open_new_tab,U.switch_tab,U.close_tab]);function gy(e){return{frameworks:(e.frameworks||[]).filter(n=>n in Bc).map(n=>Bc[n]),listenersRaw:e.listenersRaw??"",role:e.role??null,pattern:e.pattern,value:e.value??null}}async function jf(e){try{let n=(e.ownerDocument||document).defaultView||window,r=n.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",s=n[r]?.flushScan;if(typeof s=="function"){await s({mode:"priority",includeShadow:!0,includeSameOriginIframes:!0,budgetMs:400});return}n.rtrvrAIMarkInteractiveElements?.()}catch{}}function by(e,t){if(t!==U.click_element)return"standard";let n=To(e||"");if(!n)return"standard";let r=new Set(n.entries.map(c=>Mr[c.id]).filter(c=>typeof c=="string")),o=r.has("click")||r.has("mousedown")||r.has("mouseup")||r.has("pointerdown")||r.has("pointerup")||r.has("touchend");if((r.has("mouseenter")||r.has("mouseover")||r.has("pointerenter"))&&o)return"hover-activate";let i=r.has("touchstart"),a=r.has("touchend");return i&&a?"touch-sequence":"standard"}function Kf(e){let t=new Uint8Array(e),n="",r=32768;for(let o=0;o<t.length;o+=r)n+=String.fromCharCode(...t.subarray(o,o+r));return btoa(n)}function Gf(e){let t=Number(e);if(!Number.isFinite(t))return null;let n=Math.trunc(t);return n>0?n:null}function Yf(e){let t=[];for(let n of $i){let r=e?.[n];if(r==null)continue;if(Array.isArray(r)){for(let s of r){let i=Gf(s);i!=null&&t.push(i)}continue}let o=Gf(r);o!=null&&t.push(o)}return Array.from(new Set(t))}function yy(e){return Yf(e).length>0}function yl(e){let t=Yf(e);return t.length?t[0]:null}function vy(e,t){let n=t.toLowerCase(),r=["button","a","input","textarea","select","label","[role]","div","span"],o=e.querySelectorAll(r.join(","));for(let s of Array.from(o))if((s.textContent||"").trim().toLowerCase().includes(n)||(s.getAttribute("aria-label")||"").toLowerCase().includes(n))return s;return null}async function Ty(e){if(e instanceof HTMLCanvasElement){let o=e.toDataURL(),s=Qf(o);if(!s)throw new Error("canvas toDataURL failed");return s}if(e instanceof SVGElement){let o=new XMLSerializer().serializeToString(e);return{data:btoa(unescape(encodeURIComponent(o))),mimeType:"image/svg+xml",displayName:"svg"}}if(e instanceof HTMLImageElement){let o=e.currentSrc||e.src;return await Xf(o,e.alt||e.getAttribute("aria-label")||void 0)}let n=window.getComputedStyle(e).backgroundImage||"",r=/url\\((['\"]?)(.*?)\\1\\)/.exec(n);if(r?.[2])return await Xf(r[2],e.getAttribute("aria-label")||void 0);throw new Error("unsupported element")}function Qf(e){let t=/^data:([^;]+);base64,(.*)$/.exec(e);return t?{mimeType:t[1],data:t[2]}:null}async function Xf(e,t){if(!e)throw new Error("missing src");if(e.startsWith("data:")){let a=Qf(e);if(!a)throw new Error("invalid data url");return{...a,displayName:t}}let n=await fetch(e,{mode:"cors"});if(!n.ok)throw new Error(`fetch failed (${n.status})`);let r=await n.blob(),o=await r.arrayBuffer(),s=Kf(o),i=r.type||"image/png";return{data:s,mimeType:i,displayName:t}}function Jf(e,t){e.onmessage=async n=>{let r=n.data;if(!r||r.t!=="req")return;let{id:o,method:s,params:i}=r;try{let a=t[s];if(!a)throw new Error(`No handler for ${s}`);let c=await a(i);e.postMessage({t:"res",id:o,ok:!0,result:c})}catch(a){e.postMessage({t:"res",id:o,ok:!1,error:{message:a?.message||String(a)}})}}}var ky="Rover",_y="https://www.rtrvr.ai/rover/mascot.mp4",Ey="https://www.rtrvr.ai/rover/mascot.webm";function Zf(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function vl(e){try{return new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return""}}function wy(e){return e.status?e.status:e.kind==="tool_start"||e.kind==="plan"||e.kind==="thought"?"pending":e.kind==="tool_result"?"success":e.kind==="error"?"error":"info"}function Iy(e){let t=String(e.title||"").trim().toLowerCase();return t.startsWith("running ")?`tool:${t.replace(/^running\s+/,"").trim()}`:t.endsWith(" completed")?`tool:${t.replace(/\s+completed$/,"").trim()}`:t==="run started"||t==="run resumed"||t==="run completed"?"run":e.kind==="status"?`status:${t||"status"}`:e.id||Zf("trace")}function Ft(e){return String(e||"").trim()}function xy(e){let t=String(e||"").trim();return t?t.slice(0,64):ky}function Sy(e){let t=String(e||"").trim();return t?t[0].toUpperCase():"R"}function Ry(e){return String(e||"").replace(/[^a-zA-Z0-9]/g,"").slice(0,3).toUpperCase()||"RVR"}function ep(e){let t=Ft(e),n=/^(Analyze|Route|Execute|Verify|Complete):\s*(.*)$/i.exec(t);if(!n)return{plainTitle:t};let r=n[1].toLowerCase(),o=Ft(n[2]||t);return{stage:r,plainTitle:o||t}}function Ay(e){let t=(e.title||"").toLowerCase();if(t==="run started"||t==="run resumed"||t==="run completed"||t==="started new task"||t==="execution completed")return"detail";if(e.kind==="status"){let n=ep(e.title||"");if(n.stage==="analyze"||n.stage==="route"||n.stage==="complete")return"detail"}return"primary"}function Tl(e,t){let n=/\[([^\]]+)\]\((https?:\/\/[^\s)]+)\)|\*\*(.+?)\*\*/g,r=0,o;for(;(o=n.exec(t))!==null;){if(o.index>r&&e.appendChild(document.createTextNode(t.slice(r,o.index))),o[1]&&o[2]){let s=document.createElement("a");s.className="rvLink",s.href=o[2],s.target="_blank",s.rel="noopener noreferrer",s.textContent=o[1],e.appendChild(s)}else if(o[3]){let s=document.createElement("strong");s.textContent=o[3],e.appendChild(s)}r=o.index+o[0].length}r<t.length&&e.appendChild(document.createTextNode(t.slice(r)))}function Jr(e){let t=document.createDocumentFragment(),n=e.split(`
|
|
10
|
-
`),r=null;for(let o of n){let s=o.trim();if(!s){r&&(t.appendChild(r),r=null);continue}if(s==="---"){r&&(t.appendChild(r),r=null);let c=document.createElement("hr");c.className="rvSep",t.appendChild(c);continue}if(s.startsWith("- ")){r||(r=document.createElement("ul"),r.className="rvList");let c=document.createElement("li");
|
|
11
|
-
`),o=0,s=0;for(let
|
|
7
|
+
`)||(s+=c.trimEnd())}if(pc(e,!1),fc(e)?mc(e).endsWith(tT+`
|
|
8
|
+
`)&&pc(e,!1):pc(e,!1),fc(e)){let c=mc(e);c.trim()!==""&&!c.startsWith(`
|
|
9
|
+
`)&&(s+=c)}jp(e);let i=mu(e).trim(),a=s.trim()+i;return a.trim()?a:o()}catch{return o()}}async function sT(e,t){let n="",r;Jp(e,e.defaultView||window);let o=Mt(t?.deadlineEpochMs);try{let s=Math.max(250,Math.min(1500,Math.floor(o*.45))),i=await Rs(iT(e),s,e);if(!(i.ok&&i.value))throw new Error("google_sheet_copy_failed");let c=Mt(t?.deadlineEpochMs),d=Math.max(250,Math.min(2500,Math.floor(c*.55)));if(n=await aT(d,e),!n.trim())throw new Error("google_sheet_empty_clipboard")}catch(s){r=s instanceof Error?s.message:String(s)}return{content:n,contentType:iu,error:r}}function Jp(e,t){try{t?.focus?.()}catch{}try{e?.body?.focus?.()}catch{}}function hu(e,t){let r=e.defaultView?.KeyboardEvent||KeyboardEvent,o=new r("keydown",{bubbles:!0,cancelable:!0,...t}),s=e.activeElement;(s&&s.ownerDocument===e?s:e).dispatchEvent(o)}async function iT(e){try{if(Jp(e,e.defaultView||window),e.hidden||!e.hasFocus())return!1;hu(e,{key:"Escape",code:"Escape"}),await Pt(150,e);let t=e.querySelector(".grid-container")||Gp(e,".grid-container"),n=e.querySelector(".grid4-inner-container:last-child")||Gp(e,".grid4-inner-container:last-child");if(n){try{n.focus()}catch{}await Pt(100,e)}else if(t){try{t.focus?.()}catch{}await Pt(80,e)}let o=(typeof navigator<"u"?String(navigator.platform||""):"").toUpperCase().indexOf("MAC")>=0;hu(e,{key:"a",code:"KeyA",ctrlKey:!o,metaKey:o}),await Pt(200,e),hu(e,{key:"c",code:"KeyC",ctrlKey:!o,metaKey:o}),await Pt(200,e);try{e.execCommand("copy")}catch{}return!0}catch{return!1}}async function aT(e,t){let n=Math.max(250,Math.min(5e3,Math.floor(e)));if(navigator?.clipboard?.readText){let s=await Rs(navigator.clipboard.readText(),n,t);if(s.ok)return s.value||""}let r=t.createElement("textarea");r.style.position="fixed",r.style.opacity="0",r.style.pointerEvents="none",r.style.left="-9999px",r.style.top="0",t.body?.appendChild(r),r.focus();try{t.execCommand("paste")}catch{}let o=r.value||"";return r.remove(),o}function Gp(e,t){let n=hc(e);for(let a of n)try{let c=a.querySelector(t);if(c)return c}catch{}let r=1e5,o=0,s=(a,c)=>{if(!c)return;let d=c.children;if(d)for(let p=0;p<d.length;p++)a.push(d[p])},i=[];for(let a of n)try{s(i,a.documentElement??a.body??null)}catch{}for(;i.length&&o<r;){let a=i.pop();o++;try{if(a.matches(t))return a}catch{}s(i,a);let c=a.shadowRoot;if(c&&s(i,c),String(a.tagName).toUpperCase()==="IFRAME")try{let p=a.contentDocument;p&&s(i,p.documentElement??p.body??null)}catch{}}return null}async function cT(e,t){let n=t?.profile??"light",r=!e.hidden,o=Math.max(0,Math.min(t?.timeBudgetMs??(n==="light"?1600:2800),3e3));if(o<=0)return!1;let s=Date.now(),i=()=>o-(Date.now()-s),a=t?.delayMs??(n==="light"?220:280),c=t?.finalWaitMs??(n==="light"?350:900),d=r?a:0,p=r?c:0,u=t?.amount,v=t?.maxSteps??(n==="light"?8:18),h=t?.maxDistancePx??(n==="light"?12e3:3e4),g=null;try{let B=await Kp(e,{action:"detectPrimary"});if(B?.selector){let F=lT(e,B.selector);F&&(g=F)}let D=B?.metrics;if(D&&typeof D.scrollHeight=="number"&&typeof D.clientHeight=="number"){let F=Math.max(0,D.scrollHeight-D.clientHeight);h=Math.min(h,F||h),F<1500?v=Math.min(v,2):F<4e3?v=Math.min(v,4):F<1e4&&(v=Math.min(v,6))}}catch{}if(g||(g=e.scrollingElement||e.documentElement||e.body),!g)return!1;let _=0,A=null,R=0;for(let B=0;B<v&&!(i()<=0);B++){let D=null;try{D=await Kp(e,{action:"scrollBy",direction:vt.DOWN,options:{amount:u,behavior:"auto",isTabActive:r}})}catch{}if(!D||!D.success){let C=e.defaultView||window;D=dc(g,e,C,vt.DOWN,u),R=2}if(!D?.success)break;let F=D.scrollTop??A??0;if(A!==null){let C=Math.max(0,F-A);_+=C,R=C===0?R+1:0}if(A=F,D.isAtBottom||R>=2||_>=h)break;if(d>0&&B<v-1){let C=Math.min(d,Math.max(0,i()));if(C<=0)break;await Pt(C,e)}}if(p>0){let B=Math.min(p,Math.max(0,i()));B>0&&await Pt(B,e)}if(i()>80)try{let B=e.scrollingElement||e.documentElement||e.body,D=e.defaultView||window,F=g===e.documentElement||g===e.body||g===B?B:g;if(F){let C=F===B?D.innerHeight:F.clientHeight||D.innerHeight,Q=Math.max(0,F.scrollHeight-C);F.scrollTop=Q}}catch{}return!0}function lT(e,t){try{return e.querySelector(t)}catch{return null}}async function Kp(e,t){let n=e.defaultView||window,r=n.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",i=(n[r]?.scroll||n.__RTRVR_SCROLL_API__)?.execute;return typeof i!="function"?null:i(t)}async function uT(e,t){let n=e.defaultView||window,r=n.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",s=n[r]?.flushScan;if(typeof s!="function"){try{n.rtrvrAIMarkInteractiveElements?.()}catch{}return}let i=Date.now()+Math.max(100,Math.floor(t.totalBudgetMs)),a=0;for(;a<t.maxPasses&&Mt(i)>0;){let c=Math.max(50,Math.min(t.budgetMs,Mt(i)));try{await s({mode:t.mode??"full",includeShadow:!0,includeSameOriginIframes:!0,budgetMs:c,deadlineEpochMs:i})}catch{break}if(Xp(e)===0)break;a++}if(Xp(e)>0&&Mt(i)>50){let c=Math.min(120,Mt(i));try{await s({mode:"priority",includeShadow:!0,includeSameOriginIframes:!0,budgetMs:c,deadlineEpochMs:i})}catch{}}}function Xp(e){let t=e.documentElement;if(!t)return 0;let n=t.getAttribute(Po);if(!n)return 0;let r=Number.parseInt(n,10);return Number.isFinite(r)&&r>0?r:0}function dT(e){let t=fT(e.URL||"");if(!t?.sheetId)return;let n=pT(e),r=n?.title||"Sheet1";return{sheetId:t.sheetId,sheetTitle:e.title||n?.title||void 0,sheetTab:r,sheetTabId:t.sheetTabId??n?.id,sheetTabs:void 0}}function fT(e){if(!e)return null;try{let t=new URL(e);if(t.hostname!=="docs.google.com")return null;let n=t.pathname.split("/"),r=n.indexOf("spreadsheets"),o=n.indexOf("d");if(r===-1||o===-1||o!==r+1||n.length<=o+1)return null;let s=n[o+1];if(!s||!/^[a-zA-Z0-9_-]+$/.test(s))return null;let i;return t.hash&&t.hash.includes("gid=")&&(i=new URLSearchParams(t.hash.substring(1)).get("gid")??void 0),!i&&t.searchParams.has("gid")&&(i=t.searchParams.get("gid")??void 0),i&&!/^\\d+$/.test(i)&&(i=void 0),{sheetId:s,sheetTabId:i?parseInt(i,10):0}}catch{return null}}function pT(e){try{let t=e.querySelector('[role="tab"][aria-selected="true"]')||e.querySelector(".docs-sheet-tab-active")||e.querySelector('.docs-sheet-tab[aria-selected="true"]');if(!t)return null;let n=t.getAttribute("aria-label")||t.textContent?.trim()||void 0,r=t.getAttribute("data-sheet-id")||t.getAttribute("data-tab-id")||void 0,o=r&&/^\d+$/.test(r)?Number(r):void 0;return{title:n,id:o}}catch{return null}}var Pn;(function(e){e[e.Native=1]="Native",e[e.Inline=2]="Inline",e[e.React=4]="React",e[e.Vue=8]="Vue",e[e.Angular=16]="Angular",e[e.Svelte=32]="Svelte",e[e.JQuery=64]="JQuery",e[e.Delegated=128]="Delegated",e[e.Other=256]="Other",e[e.Inferred=512]="Inferred"})(Pn||(Pn={}));var mT={native:Pn.Native,inline:Pn.Inline,react:Pn.React,vue:Pn.Vue,angular:Pn.Angular,svelte:Pn.Svelte,jquery:Pn.JQuery,delegated:Pn.Delegated,other:Pn.Other};(()=>{let e=window,t="__RTRVR_MAIN_WORLD_INITIALIZED__",n=new WeakMap,r={frameworks:new Set,reactRoots:new WeakSet,vueRoots:new WeakSet,angularRoots:new WeakSet,svelteRoots:new WeakSet,jqueryRoots:new WeakSet},o=new WeakMap,s=new WeakMap,i=new Set,a=100,c=50,d=0,p=0,u=new WeakSet,v="__RTRVR_ET_HOOKED__",h="__RTRVR_ATTACH_SHADOW_HOOKED__";function g(m){if(m&&!u.has(m)){u.add(m);try{_(m)}catch{}try{A(m)}catch{}}}function _(m){try{let S=m.EventTarget;if(!S?.prototype||S.prototype[v])return;S.prototype[v]=!0;let L=S.prototype.addEventListener,P=S.prototype.removeEventListener;S.prototype.addEventListener=function($,K,ee){try{Nr(K)||Qt(this,$,ee)}catch{}return L.call(this,$,K,ee)},S.prototype.removeEventListener=function($,K,ee){try{Zr(this,$,ee)}catch{}return P.call(this,$,K,ee)};try{let $=Function.prototype.toString;S.prototype.addEventListener.toString=()=>$.call(L),S.prototype.removeEventListener.toString=()=>$.call(P)}catch{}}catch{}}function A(m){try{let S=m.Element;if(!S?.prototype?.attachShadow||S.prototype[h])return;S.prototype[h]=!0;let L=S.prototype.attachShadow;S.prototype.attachShadow=function(P){let $=L.call(this,P);try{Mo.set(this,$)}catch{}try{Ye($)}catch{}return $};try{let P=Function.prototype.toString;S.prototype.attachShadow.toString=()=>P.call(L)}catch{}}catch{}}function R(m){let L=n.get(m)?.listenerTypeMasks;if(L&&L.size){let P=[];for(let $ of L.keys()){let K=Ur[$];K&&P.push(K)}return P}return _i(m)}let B=["onclick","ondblclick","ondoubleclick","onmousedown","onmouseup","role","contenteditable","draggable","tabindex","disabled","type","aria-haspopup","aria-expanded","data-click","data-action","data-handler","data-toggle","data-target"],D=0,F=new Set,C=null,Q=!1,ae=6,re=["click","input","change","keydown","keyup","pointerdown","pointerup","submit","focus","blur"],pe=["mouseenter","mouseleave","mouseover","mouseout","mousedown","mouseup","wheel","scroll","dragstart","drop","touchstart","touchend"];if(e[t]){typeof e.rtrvrAIMarkInteractiveElements=="function"&&e.rtrvrAIMarkInteractiveElements(),typeof e.rtrvrAISetObserverPaused!="function"&&(e.rtrvrAISetObserverPaused=()=>!1),typeof e.rtrvrAIClearObserverPause!="function"&&(e.rtrvrAIClearObserverPause=()=>!1),typeof e.rtrvrAIIsObserverPaused!="function"&&(e.rtrvrAIIsObserverPaused=()=>!!gt()?.hidden);return}e[t]=!0;let xe={onclick:"click",ondblclick:"dblclick",ondoubleclick:"doubleclick",onmousedown:"mousedown",onmouseup:"mouseup",onmouseenter:"mouseenter",onmouseleave:"mouseleave",onmousemove:"mousemove",onmouseover:"mouseover",onmouseout:"mouseout",oncontextmenu:"contextmenu",onauxclick:"auxclick",onkeydown:"keydown",onkeyup:"keyup",onkeypress:"keypress",oninput:"input",onchange:"change",onsubmit:"submit",onreset:"reset",onselect:"select",onsearch:"search",oninvalid:"invalid",onbeforeinput:"beforeinput",onfocus:"focus",onblur:"blur",onfocusin:"focusin",onfocusout:"focusout",ontouchstart:"touchstart",ontouchend:"touchend",ontouchmove:"touchmove",ontouchcancel:"touchcancel",onpointerdown:"pointerdown",onpointerup:"pointerup",onpointermove:"pointermove",onpointerenter:"pointerenter",onpointerleave:"pointerleave",onpointercancel:"pointercancel",onpointerover:"pointerover",ondragstart:"dragstart",ondragend:"dragend",ondrag:"drag",ondragenter:"dragenter",ondragleave:"dragleave",ondragover:"dragover",ondrop:"drop",oncopy:"copy",oncut:"cut",onpaste:"paste",onscroll:"scroll",onwheel:"wheel",onplay:"play",onpause:"pause",onended:"ended",onvolumechange:"volumechange",onseeking:"seeking",onseeked:"seeked",onanimationstart:"animationstart",onanimationend:"animationend",ontransitionend:"transitionend",ontransitionstart:"transitionstart",onresize:"resize",ontoggle:"toggle",onfullscreenchange:"fullscreenchange",onload:"load",onerror:"error",onabort:"abort",onbeforeunload:"beforeunload",onunload:"unload",onhashchange:"hashchange",onpopstate:"popstate",onstorage:"storage",onmessage:"message"};function ge(m){return m?String(m).split(".")[0].toLowerCase():""}let Se=["data-click","data-action","data-event","data-handler","data-on-click","data-onclick","data-tap","data-press","data-toggle","data-target"],We=0,Lt=null,Ne=new MessageChannel,Dt=[];Ne.port1.onmessage=()=>{let m=Dt.shift();m&&m()};function rt(){return Date.now()}function et(m){return!m||!Number.isFinite(m)?Number.POSITIVE_INFINITY:Math.max(0,m-rt())}let Xt=8,qt=new MessageChannel,Yn=!1;function sn(){if(!Yn){Yn=!0;try{qt.port2.postMessage(0)}catch{}}}function En(m){let S=m.values().next();if(S.done)return null;let L=S.value;return m.delete(L),L}function dt(){return new Promise(m=>{Dt.push(m),Ne.port2.postMessage(0)})}let Yt=!1;function Wt(){if(!Yt)try{let m=e.jQuery;m&&m.fn&&($n(m),Yt=!0,xt("jquery"))}catch{}}function Mr(m,S){for(let L=S.lastElementChild;L;L=L.previousElementSibling)m.push(L)}function gr(m,S,L){if(L)try{let P=to(S);P&&m.push(P)}catch{}}function mi(m,S,L){if(L&&Ti(S))try{let P=S.contentWindow||null;P&&g(P);let $=P?.document?.documentElement;$&&m.push($)}catch{}}let Hn=new WeakSet;function In(m){m&&(typeof m=="function"||typeof m=="object")&&Hn.add(m)}function Nr(m){return!!m&&(typeof m=="function"||typeof m=="object")&&Hn.has(m)}qt.port1.onmessage=()=>{if(nt()){F.clear(),i.clear(),D=0,He(),Yn=!1;return}Yn=!1,hn(500);let m=performance.now();for(;F.size&&performance.now()-m<Xt;){let S=En(F);if(!S)break;try{ue(S)}catch{}finally{D=Math.max(0,D-1)}}for(;i.size&&performance.now()-m<Xt;){let S=En(i);if(!S)break;try{Zn(S)}catch{}}He(),(F.size||i.size)&&sn()};function He(){try{let m=gt()?.documentElement;if(!m)return;m.setAttribute(Po,String(D))}catch{}}function mn(m){let S=n.get(m);return S||(S={frameworks:new Set,listeners:new Map},n.set(m,S)),S}function Lr(m){nt()||(i.add(m),i.size>2e3&&hn(1500),sn())}function qn(m){nt()||F.has(m)||(F.add(m),D++,He(),sn(),F.size>2e3&&hn(1500))}function hn(m=1500){let S=0;for(let L of F){if(S>=m)break;S++,L.isConnected||(F.delete(L),D=Math.max(0,D-1))}S=0;for(let L of i){if(S>=m)break;S++,L.isConnected||i.delete(L)}He()}let st=null;function an(m,S,L){return`${m}|${S?1:0}|${L?1:0}`}function xn(m){let S=m.tagName;if(S==="A"||S==="BUTTON"||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"||S==="SUMMARY"||m.hasAttribute("role")||m.hasAttribute("tabindex")||m.hasAttribute("contenteditable")||m.hasAttribute("onclick")||m.getAttributeNames().some(L=>L.startsWith("on")))return!0;for(let L of Se)if(m.hasAttribute(L))return!0;return!!(m.hasAttribute("aria-haspopup")||m.hasAttribute("aria-expanded"))}function Qn(m){let S=ye(m);if(!At(m,S))return!1;let L=m.tagName;if(L!=="DIV"&&L!=="SPAN"&&L!=="LI"&&L!=="SECTION"&&L!=="ARTICLE"&&L!=="P")return!1;let P=m;if(P.__ngContext__||P.__svelte__||P.__vue__||P._vnode||P.__reactFiber$||P.__reactProps$)return!0;let $=0;for(let K in P){if(++$>30)break;if(K.startsWith("__react")||K.includes("reactFiber")||K.includes("reactProps"))return!0}return!1}function br(){let m=gt()?.documentElement;return m?r.frameworks.size>0||m.hasAttribute("rtrvr-react")||m.hasAttribute("rtrvr-vue")||m.hasAttribute("rtrvr-angular")||m.hasAttribute("rtrvr-svelte")||m.hasAttribute("rtrvr-jquery"):!1}function Jr(m){if(nt())return;let S=performance.now();for(;F.size&&performance.now()-S<m;){let L=En(F);if(!L)break;try{ue(L)}catch{}finally{D=Math.max(0,D-1)}}for(;i.size&&performance.now()-S<m;){let L=En(i);if(!L)break;try{Zn(L)}catch{}}}async function Dr(m={}){if(nt())return F.clear(),i.clear(),D=0,He(),{revision:++We,scanned:0,durationMs:0,done:!0,remaining:0};hn(3e3),Wt(),no();let S=m.mode??"full",L=m.includeShadow??!0,P=m.includeSameOriginIframes??!0,$=Math.max(50,Math.min(m.budgetMs??2500,15e3)),K=m.deadlineEpochMs,ee=Math.max(0,Math.min($,et(K))),fe=an(S,L,P);if(ee<=0){let Vt=(st?.stack?.length??0)+F.size+i.size;return{revision:++We,scanned:0,durationMs:0,done:Vt===0,remaining:Vt}}if((!st||st.optsKey!==fe)&&et(K)>30&&await be({budgetMs:18,deadlineEpochMs:K}),S==="priority"){let Vt=performance.now(),Pe=0;for(;F.size&&performance.now()-Vt<=ee&&!(K&&et(K)<=0);){let Ke=En(F);if(!Ke)break;try{ue(Ke)}catch{}Pe++,D=Math.max(0,D-1)}for(;i.size&&performance.now()-Vt<=ee&&!(K&&et(K)<=0);){let Ke=En(i);if(!Ke)break;try{Zn(Ke)}catch{}}return He(),{revision:++We,scanned:Pe,durationMs:performance.now()-Vt,done:F.size===0&&i.size===0,remaining:F.size+i.size}}if(!st||st.optsKey!==fe){let Vt=gt()?.documentElement;st={optsKey:fe,stack:Vt?[Vt]:[],scannedTotal:0}}let ve=performance.now(),Ge=0;for(D++,He();st.stack.length&&!(K&&et(K)<=0);){let Vt=st.stack.pop();if(Dn(Vt)){let Ke=Vt.children;for(let zt=Ke.length-1;zt>=0;zt--)st.stack.push(Ke[zt]);continue}let Pe=Vt;if(!(!Pe||Pe.nodeType!==1)&&!(Pe.tagName==="SCRIPT"||Pe.tagName==="STYLE"||Pe.tagName==="META"||Pe.tagName==="NOSCRIPT")){try{(xn(Pe)||br()&&Qn(Pe))&&ue(Pe)}catch{}try{Zn(Pe)}catch{}if(F.delete(Pe)&&(D=Math.max(0,D-1)),i.delete(Pe),Ge++,st.scannedTotal++,L)try{let Ke=to(Pe);Ke&&(Ye(Ke),st.stack.push(Ke))}catch{}if(P&&Ti(Pe))try{let Ke=Pe.contentWindow||null;Ke&&g(Ke);let zt=Ke?.document,mt=zt?.documentElement;zt&&mt&&(te(zt),st.stack.push(mt))}catch{}for(let Ke=Pe.lastElementChild;Ke;Ke=Ke.previousElementSibling)st.stack.push(Ke);Ge%800===0&&et(K)>20&&await dt()}}let Qe=Math.max(0,ee-(performance.now()-ve)),St=et(K);Jr(Math.min(250,Qe,St)),D=Math.max(0,D-1),He();let _t=st.stack.length===0,Ve=st.stack.length;return _t&&(st=null),{revision:++We,scanned:Ge,durationMs:performance.now()-ve,done:_t,remaining:Ve}}async function Wn(m={}){return Lt||(Lt=Dr(m).finally(()=>{Lt=null}),Lt)}e.rtrvrAIFlushScan=Wn;let Or="__RTRVR_INTERNAL__";Object(window).__RTRVR_INTERNAL_KEY__=Or;let gn=e[Or],Sn=gn&&typeof gn=="object"?gn:{};if(!gn)try{Object.defineProperty(e,Or,{value:Sn,writable:!1,configurable:!1,enumerable:!1})}catch{}try{Object.defineProperty(Sn,"flushScan",{value:Wn,writable:!1,configurable:!1,enumerable:!1})}catch{}function Le(m,S){let L=mn(m),P=ge(S.type);if(!P)return;let $=!1,K=L.listeners.get(P);K||(K=[],L.listeners.set(P,K),$=!0);let ee=K.find(ke=>ke.source===S.source&&!!ke.inferred==!!S.inferred);if(ee){let ke=!!ee.capture,ve=!!ee.passive,Ge=!!ee.once;ee.capture=ee.capture||S.capture,ee.passive=ee.passive||S.passive,ee.once=ee.once||S.once,(ke!==!!ee.capture||ve!==!!ee.passive||Ge!==!!ee.once)&&($=!0)}else K.push({...S,type:P}),$=!0;let fe=$e[P];if(fe!==void 0){L.listenerTypeMasks||(L.listenerTypeMasks=new Map);let ke=0,ve=mT[S.source];ke|=ve!==void 0?ve:Pn.Other,S.inferred&&(ke|=Pn.Inferred);let Ge=L.listenerTypeMasks.get(fe)||0,Qe=Ge|ke;Qe!==Ge&&(L.listenerTypeMasks.set(fe,Qe),$=!0)}$&&(L.role=void 0,Lr(m))}function Jn(m){let S=m.listenerTypeMasks;return!S||S.size===0?null:[...S.entries()].sort((P,$)=>P[0]-$[0]).map(([P,$])=>`${P}~${($||0).toString(36)}`).join(",")}function Rn(m,S){let L=mn(m);L.frameworks.has(S)||(L.frameworks.add(S),Lr(m))}function xt(m){r.frameworks.has(m)||(r.frameworks.add(m),gt()?.documentElement?.setAttribute(`rtrvr-${m}`,"1"))}function Zn(m){let S=n.get(m);if(!S)return;i.delete(m);let L=Jn(S);L?L!==S.lastListenersSerialized&&(m.setAttribute(co,L),S.lastListenersSerialized=L):S.lastListenersSerialized&&(m.removeAttribute(co),S.lastListenersSerialized=void 0);let P=ye(m);if(At(m,P))if(S.role===void 0&&(S.role=Pr(m)),S.role){let $=ys[S.role],K=typeof $=="number"?String($):`s:${S.role}`;K!==S.lastRoleSerialized&&(m.setAttribute(Hr,K),S.lastRoleSerialized=K)}else(S.lastRoleSerialized||m.hasAttribute(Hr))&&(m.removeAttribute(Hr),S.lastRoleSerialized=void 0)}function ft(m){let S=[],L=m;for(;L;)S.push(L),L=L.parentNode||L.host;return S}function Co(m){let S=m.tagName.toLowerCase(),L=m.getAttribute("role"),P=L?L.toLowerCase().trim():"";if(P&&Fr.has(P)||S==="button"||(S==="a"||S==="area")&&m.hasAttribute("href"))return!0;if(S==="input")return m.type?.toLowerCase()!=="hidden";if(S==="select"||S==="textarea"||(S==="video"||S==="audio")&&m.hasAttribute("controls")||m.isContentEditable||m.hasAttribute("contenteditable"))return!0;let $=m.getAttribute("tabindex");return!!($!==null&&!Number.isNaN(Number.parseInt($,10))&&(R(m).some(fe=>Ga.has(fe))||m.getAttributeNames().some(fe=>fe.startsWith("on"))))}function cn(m,S=10){let L=[];for(let P=0;P<m.children.length;P++)L.push({node:m.children[P],depth:1});for(;L.length;){let{node:P,depth:$}=L.pop();if(Co(P))return!0;if(!($>=S))for(let K=0;K<P.children.length;K++)L.push({node:P.children[K],depth:$+1})}return!1}function Pr(m){let S=m.tagName.toLowerCase(),L=m.getAttribute("role"),P=L?L.toLowerCase().trim():"",$=m.type?.toLowerCase();if(P&&Fr.has(P))return P;if(P&&ki.has(P))return null;if(S==="a"&&m.hasAttribute("href"))return"link";if(S==="button")return"button";if(S==="input")return $==="hidden"?null:$==="checkbox"?"checkbox":$==="radio"?"radio":$==="range"?"slider":$==="number"?"spinbutton":$==="search"?"searchbox":["button","submit","reset","image","file"].includes($)?"button":m.hasAttribute("list")?"combobox":"textbox";if(S==="textarea")return"textbox";if(S==="select"){let Qe=m;return Qe.multiple||Qe.size&&Qe.size>1?"listbox":"combobox"}if(S==="option")return"option";if(S==="form")return"form";if(S==="video"||S==="audio"){let Qe=_i(m);return m.hasAttribute("controls")||Qe.length>0?"media":null}if(m.isContentEditable||m.hasAttribute("contenteditable"))return"textbox";let K=R(m);if(!K.length)return null;let ee=!1,fe=!1,ke=!1;for(let Qe=0;Qe<K.length;Qe++){let St=K[Qe];!ee&&Ga.has(St)&&(ee=!0),!fe&&$l.has(St)&&(fe=!0),!ke&&Vl.has(St)&&(ke=!0)}if(!ee&&!fe&&!ke)return null;let ve=m.getAttribute("tabindex"),Ge=ve!==null&&!Number.isNaN(Number.parseInt(ve,10));if(ee&&(Zl(m)||m.getAttribute("href")||m.closest("a[href]")))return"link";if(fe){if(m.isContentEditable||m.hasAttribute("contenteditable"))return"textbox";if(P==="textbox"||P==="searchbox"||P==="combobox"||P==="spinbutton")return P;if(!ee&&Ge)return"textbox"}if(ee){let Qe=m.getAttribute("aria-checked"),St=m.getAttribute("aria-pressed");if(Qe!==null||St!==null){if(P==="radio")return"radio";if(P==="menuitemradio")return"menuitemradio";if(P==="menuitemcheckbox")return"menuitemcheckbox";if(St!==null)return"button";if(Qe!==null)return"checkbox"}if((Ge||P==="button")&&!cn(m))return"button"}return ke?"application":null}let er=EventTarget.prototype.addEventListener,Br=EventTarget.prototype.removeEventListener;function An(m){let S=!1,L,P;return typeof m=="boolean"?S=m:m&&typeof m=="object"&&(S=!!m.capture,L=m.passive,P=m.once),{capture:S,passive:L,once:P}}function Cn(m){try{let S=m;if(S?.nodeType===9&&S?.documentElement)return S;let L=S?.document;if(L&&L.nodeType===9&&L.documentElement)return L}catch{}return null}function Qt(m,S,L){let P=ge(S);if(!P)return;let{capture:$,passive:K,once:ee}=An(L),fe=o.get(m);fe||(fe=new Map,o.set(m,fe));let ke=fe.get(P);if(ke?(ke.count+=1,ke.capture=ke.capture||$,ke.passive=ke.passive||K):fe.set(P,{count:1,capture:$,passive:K}),Do(m))try{Le(m,{type:P,source:"native",capture:$,passive:K,once:ee})}catch{}let ve=Cn(m);if(ve&&(P==="click"||P==="input"||P==="keydown"))try{ve.documentElement?.setAttribute(`rtrvr-gl-${P}`,"1")}catch{}}function Zr(m,S,L){let P=ge(S);if(!P)return;let $=o.get(m);if(!$)return;let K=$.get(P);K&&(K.count-=1,K.count<=0&&$.delete(P),$.size===0&&o.delete(m))}g(window);function $n(m){if(!m||!m.fn)return;let S=m.fn.on,L=m.fn.off;function P(K){if(!K)return[];if(typeof K=="string")return K.split(/\s/).map(ee=>ge(ee)).filter(Boolean);if(typeof K=="object")try{return Object.keys(K).map(ee=>ge(ee)).filter(Boolean)}catch{return[]}return[]}function $(K){try{if(!K)return null;if(Do(K))return K;let ee=ye(K);return Wa(K,ee)||null}catch{}return null}m.fn.on=function(K,ee){let fe=P(K),ke=typeof ee=="string"&&!!ee;return this.each(function(){let ve=$(this);if(ve){if(ke){let Ge=s.get(ve);Ge||(Ge=[],s.set(ve,Ge));for(let Qe of fe){let St=`${Qe}::${ee}`;Ge.some(_t=>`${_t.type}::${_t.selector}`===St)||(Ge.push({type:Qe,selector:ee}),Ge.length>400&&Ge.shift())}}else for(let Ge of fe)Le(ve,{type:Ge,source:"jquery"});Rn(ve,"jquery"),xt("jquery"),r.jqueryRoots.add(ve)}}),S.apply(this,arguments)},m.fn.off=function(){return L.apply(this,arguments)},xt("jquery")}function eo(m){Se.some(L=>m.hasAttribute(L))&&(Le(m,{type:"click",source:"other",inferred:!0}),(m.tagName==="INPUT"||m.tagName==="TEXTAREA")&&(Le(m,{type:"input",source:"other",inferred:!0}),Le(m,{type:"change",source:"other",inferred:!0})))}function Mn(m){let S=ye(m),L=At(m,S),P=m.getAttributeNames().some(ke=>ke.startsWith("on")),$=/^(button|a|input|select|textarea|summary)$/i.test(m.tagName),K=m,ee=L&&(Qa(m)||!!K.isContentEditable||m.hasAttribute("contenteditable")),fe=L&&!!K.draggable;if(!P&&!$&&!ee&&!fe){eo(m);return}for(let[ke,ve]of Object.entries(xe))typeof m[ke]=="function"&&Le(m,{type:ve,source:"inline"});ee&&(Le(m,{type:"input",source:"other",inferred:!0}),Le(m,{type:"keydown",source:"other",inferred:!0}),Le(m,{type:"keyup",source:"other",inferred:!0}),Le(m,{type:"paste",source:"other",inferred:!0})),fe&&(Le(m,{type:"dragstart",source:"other",inferred:!0}),Le(m,{type:"dragend",source:"other",inferred:!0})),eo(m)}function f(m){if(!m.startsWith("on")||m.length<=2)return null;if(m.endsWith("Capture")){let L=m.substring(2,m.length-7);return L?{type:L.toLowerCase(),capture:!0}:null}let S=m.substring(2);return S?{type:S.toLowerCase(),capture:!1}:null}function w(m){let S=null;if(m){for(let L in m)if(L.startsWith("__react")||L.startsWith("_react")||L.includes("reactFiber")||L.includes("reactProps")||L.includes("reactInternalInstance")){S=L;break}if(S)try{let L=m[S],P=L?.memoizedProps||L?.pendingProps;if(P&&typeof P=="object"){for(let $ in P){if(typeof P[$]!="function")continue;let ee=f($);ee&&Le(m,{type:ee.type,source:"react",capture:ee.capture})}Do(L?.stateNode)&&r.reactRoots.add(L.stateNode),Rn(m,"react"),xt("react")}}catch{}}}function E(m){let S=m,L=!1;if(S.__vue__){L=!0;let P=S.__vue__;P.$listeners&&Object.keys(P.$listeners).forEach($=>Le(m,{type:$,source:"vue"})),P._events&&Object.keys(P._events).forEach($=>Le(m,{type:$,source:"vue"})),P.$options?._parentListeners&&Object.keys(P.$options._parentListeners).forEach($=>Le(m,{type:$,source:"vue"})),r.vueRoots.add(m)}if(S._vnode?.props){L=!0;let P=S._vnode.props;Object.keys(P).forEach($=>{$.startsWith("on")&&$.length>2&&Le(m,{type:$.substring(2).toLowerCase(),source:"vue"})}),r.vueRoots.add(m)}L&&(Rn(m,"vue"),xt("vue"))}function I(m){let S=m,L=!1;if(S.__ngContext__||m.hasAttribute("_ngcontent")||m.hasAttribute("ng-version")){L=!0,Array.from(m.attributes).forEach(P=>{if(P.name.startsWith("(")&&P.name.endsWith(")")){let $=P.name.slice(1,-1).split(".")[0];$&&Le(m,{type:$,source:"angular"})}if(P.name.startsWith("on-")){let $=P.name.substring(3);$&&Le(m,{type:$,source:"angular"})}if(P.name.includes(".")){let $=P.name.match(/\(([^.)]+)/);$?.[1]&&Le(m,{type:$[1],source:"angular"})}});try{if(e.ng?.getComponent){let P=e.ng.getComponent(m);P&&Object.keys(P).forEach($=>{($.endsWith("Output")||$.endsWith("Emitter"))&&Le(m,{type:$.replace(/(Output|Emitter)$/,"").toLowerCase(),source:"angular"})})}}catch{}}L&&(Rn(m,"angular"),xt("angular"),r.angularRoots.add(m))}function y(m){let S=m,L=!1;if(S.__svelte__){L=!0,Array.from(m.attributes).forEach(P=>{if(P.name.startsWith("on:")){let $=P.name.substring(3);$&&Le(m,{type:$,source:"svelte"})}});try{let P=S.__svelte__?.$$?.callbacks;P&&typeof P=="object"&&Object.keys(P).forEach($=>Le(m,{type:$,source:"svelte"}))}catch{}r.svelteRoots.add(m)}L&&(Rn(m,"svelte"),xt("svelte"))}function b(m,S){return m?!!o.get(m)?.has(S):!1}function k(m,S,L=96){let P=ge(S);if(!P)return!1;let $=Z(m),K=se($);if(b($,P)||b(K,P))return!0;let ee=0,fe=m;for(;fe&&ee<L;){if(fe.parentElement)fe=fe.parentElement;else{let ke=fe.getRootNode?.();if(Dn(ke)){if(b(ke,P)||b(ke.host,P))return!0;fe=ke.host}else break}if(fe&&b(fe,P))return!0}return!1}function x(m,S,L=128){let P=0,$=m;for(;$&&P<L;){if(S($),$.parentElement){$=$.parentElement;continue}let K=$.getRootNode?.();if(Dn(K)){$=K.host;continue}break}}function q(m){let S=ye(m);if(!At(m,S))return;let L=mn(m);L.role=L.role||Pr(m);let P=k(m,"click"),$=k(m,"input"),K=k(m,"keydown"),fe=Z(m).documentElement;if(r.frameworks.size>0||fe.hasAttribute("rtrvr-react")||fe.hasAttribute("rtrvr-vue")||fe.hasAttribute("rtrvr-angular")||fe.hasAttribute("rtrvr-svelte")||fe.hasAttribute("rtrvr-jquery")||P||$||K){let ve=L.role||"other";P&&["button","link","checkbox","radio","switch","menuitem","menuitemcheckbox","menuitemradio","tab","option","treeitem","gridcell","cell","img","figure"].includes(ve)&&Le(m,{type:"click",source:"delegated",inferred:!0}),["textbox","searchbox","spinbutton","code"].includes(ve)&&($&&(Le(m,{type:"input",source:"delegated",inferred:!0}),Le(m,{type:"change",source:"delegated",inferred:!0})),K&&Le(m,{type:"keydown",source:"delegated",inferred:!0})),["combobox","listbox"].includes(ve)&&(P&&Le(m,{type:"click",source:"delegated",inferred:!0}),$&&Le(m,{type:"change",source:"delegated",inferred:!0})),["slider","scrollbar","progressbar","meter"].includes(ve)&&$&&Le(m,{type:"input",source:"delegated",inferred:!0})}x(m,ve=>{let Ge=s.get(ve);if(Ge?.length)for(let{type:Qe,selector:St}of Ge)try{m.matches(St)&&(Le(m,{type:Qe,source:"jquery",inferred:!0}),Rn(m,"jquery"),xt("jquery"))}catch{}})}function U(m){let S=L=>{if(nt())return;let P=L,$=P.composedPath&&P.composedPath()||ft(L.target),ee=m==="mousemove"||m==="pointermove"||m==="scroll"||m==="wheel"?1:Math.min($.length,ae);for(let fe=0;fe<ee;fe++){let ke=$[fe];Do(ke)&&Le(ke,{type:m,source:"delegated",inferred:!0})}};In(S);try{er.call(document,m,S,{capture:!0,passive:!0})}catch{}}let W=!1,V=!1,j=null;function ne(){if(V)return;V=!0,re.forEach(U);let m=gt()?.documentElement;if(!m)return;let S=()=>{if(W)return;let L=m.hasAttribute("rtrvr-react")||m.hasAttribute("rtrvr-vue")||m.hasAttribute("rtrvr-angular")||m.hasAttribute("rtrvr-svelte"),P=m.hasAttribute("rtrvr-gl-click")||m.hasAttribute("rtrvr-gl-input")||m.hasAttribute("rtrvr-gl-keydown");(L||P)&&(W=!0,pe.forEach(U))};S();try{j=new MutationObserver(()=>S()),j.observe(m,{attributes:!0,attributeFilter:Ue})}catch{}}function ue(m){if(m.nodeType!==1)return;let S=ye(m);if(At(m,S)){let L=mn(m);L.role=void 0}Mn(m),w(m),E(m),I(m),y(m),q(m),Lr(m)}function Ee(){if(nt())return;let m=["a[href]","button","input","select","textarea","summary","details > summary",...Array.from(Fr).map(S=>`[role="${S}"]`),"[onclick]","[ondblclick]","[ondoubleclick]","[onmousedown]","[tabindex]","[contenteditable]",'[draggable="true"]',"[aria-haspopup]","[aria-expanded]","[data-click]","[data-action]","[data-handler]","[data-toggle]","[data-target]",".clickable",".interactive",".btn",".button"];D++,He();try{let S=m.join(",");gt()?.querySelectorAll(S).forEach(L=>{try{ue(L)}catch{}})}finally{D=Math.max(0,D-1),He()}}let ce=!1,de=[],he=200;function De(m){if(!nt()){for(let S of m)de.push(S);ce||(ce=!0,queueMicrotask(it))}}function it(){ce=!1;let m=de;if(de=[],nt())return;let S=0;for(let L of m){if(S>=he)break;for(let P of Array.from(L.addedNodes)){if(S>=he)break;if(P.nodeType!==1)continue;let $=P;qn($),S++;let K=$.querySelectorAll?.('a,button,input,select,textarea,summary,[role],[onclick],[ondblclick],[ondoubleclick],[contenteditable],[draggable="true"],[tabindex]');if(K){let ee=Math.min(K.length,50);for(let fe=0;fe<ee;fe++)qn(K[fe]),S++}}if(L.type==="attributes"&&L.target.nodeType===1){let P=L.target;L.attributeName==="class"?xn(P)&&qn(P):qn(P)}}}async function be(m={}){if(nt())return;let S=gt(),L=S?.documentElement;if(!L||!(L.hasAttribute("rtrvr-react")||L.hasAttribute("rtrvr-vue")||L.hasAttribute("rtrvr-angular")||L.hasAttribute("rtrvr-svelte")))return;let $=m.deadlineEpochMs,K=Math.max(5,Math.min(m.budgetMs??12,50));if(Math.max(0,Math.min(K,et($)))<=0)return;let fe=performance.now();D++,He();try{let ke=0,ve=["div","span","li","section","article","p"];for(let Ge of ve){let Qe=S.getElementsByTagName(Ge)??[];for(let St=0;St<Qe.length;St++){if($&&et($)<=0)return;ke++;let _t=Qe[St],Ve=_t;(Ve.__ngContext__||Ve.__svelte__||Ve.__vue__||Ve._vnode||Qn(_t))&&ue(_t),ke%250===0&&et($)>20&&await dt()}}}finally{D=Math.max(0,D-1),He()}}let Re=new MutationObserver(De),Ae=new WeakMap,qe=new Set;function Ye(m){let S=Ae.get(m);if(S){if(qe.add(S),!Q)try{S.observe(m,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...B,"class"]})}catch{}return}if(!(d>=a))try{let L=se(m.ownerDocument).MutationObserver||MutationObserver,P=new L(De);Ae.set(m,P),qe.add(P),d++,Q||P.observe(m,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...B,"class"]})}catch{}}let je=new WeakMap,oe=new Set;function te(m){let S=je.get(m);if(S){if(oe.add(S),!Q)try{let L=m.documentElement;L&&S.observe(L,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...B,"class"]})}catch{}return}if(!(p>=c))try{g(m.defaultView||null);let L=m.documentElement;if(!L)return;let P=se(m).MutationObserver||MutationObserver,$=new P(De);je.set(m,$),oe.add($),p++,Q||$.observe(L,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...B,"class"]})}catch{}}function le(){let m=gt()?.documentElement;m&&Re.observe(m,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...B,"class"]})}let Ue=["rtrvr-react","rtrvr-vue","rtrvr-angular","rtrvr-svelte","rtrvr-gl-click","rtrvr-gl-input","rtrvr-gl-keydown"];function pt(){return C??!!gt()?.hidden}function nt(){return Q}function Oe(m){let S=!!m;if(Q===S)return;if(Q=S,Q){try{Re.disconnect()}catch{}try{j?.disconnect()}catch{}for(let P of qe)try{P.disconnect()}catch{}for(let P of oe)try{P.disconnect()}catch{}qe.clear(),oe.clear(),F.clear(),i.clear(),D=0,He();return}le();let L=gt()?.documentElement;if(L&&j)try{j.observe(L,{attributes:!0,attributeFilter:Ue})}catch{}Ee()}function $t(m){return C=typeof m=="boolean"?m:null,Oe(pt()),!0}let Mo=new WeakMap;function to(m){return m.shadowRoot||Mo.get(m)||null}try{Object.defineProperty(Sn,"shadow",{value:Object.freeze({getRoot:m=>to(m)}),writable:!1,configurable:!1,enumerable:!1})}catch{}function no(){try{(e.React||e.__REACT_DEVTOOLS_GLOBAL_HOOK__)&&xt("react"),e.Vue&&xt("vue"),e.ng&&xt("angular"),e.jQuery&&xt("jquery"),Wt()}catch{}}e.rtrvrAISetObserverPaused=function(m){return $t(!!m)},e.rtrvrAIClearObserverPause=function(){return $t(null)},e.rtrvrAIIsObserverPaused=function(){return nt()},e.rtrvrAIMarkInteractiveElements=function(){return gt()?.body?(Ee(),!0):!1};function ro(){let m=gt();Wt(),no(),ne();let S=()=>{C==null&&Oe(pt())};m?.addEventListener("visibilitychange",S,{passive:!0}),Oe(pt());let L=()=>{Wt(),no(),nt()||(le(),e.rtrvrAIMarkInteractiveElements?.(),be({budgetMs:20})),m?.documentElement.setAttribute(Hl,"1")};m?.readyState==="loading"?m.addEventListener("DOMContentLoaded",L,{once:!0}):L()}ro()})();var gc=null;function gu(e){try{return e.getAttribute(co)}catch{return null}}function Zp(e){let t=gu(e);return Oo(t)?.entries??[]}function em(e){try{let t=e.getAttribute(Hr);return t&&t.trim()?t:null}catch{return null}}function hT(e){let t=e?.ownerDocument?.defaultView,n=t?.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",o=t?.[n]?.shadow?.getRoot;if(typeof o=="function")try{return o(e)||null}catch{}return e.shadowRoot||null}function gT(e){let t=new Set;for(let n of e){let r=Oa(n.mask);for(let o of r)(o==="react"||o==="vue"||o==="angular"||o==="svelte"||o==="jquery")&&t.add(o)}return t}function bT(e){let t=new Set,n=e;return(n.__reactFiber||n.__reactProps||n.__reactInternalInstance||n.__reactRootContainer)&&t.add("react"),(n.__vue__||n.__vueParentComponent||n.__vnode||n.__vue_app__)&&t.add("vue"),n.__ngContext__&&t.add("angular"),(n.__svelte||n.__svelte_meta)&&t.add("svelte"),(n.__jquery||n.jQuery)&&t.add("jquery"),t}function vT(e){let t=Zp(e),n=gT(t),r=bT(e);for(let o of r)n.add(o);return{frameworks:[...n],listenersRaw:gu(e)||"",role:em(e)??(e.getAttribute?.("role")||null)}}function yT(){return{getEventHandlerIds:e=>Zp(e).map(t=>t.id),getRoleHint:em,getShadowRoot:hT}}function tm(e={}){if(gc)return gc;if(typeof window<"u")try{window.rtrvrAIMarkInteractiveElements?.()}catch{}return gc={signalProvider:yT(),getFrameworkMetadata:vT,getListenerEncoding:gu,dispose:()=>{}},gc}var TT=new Set(["co.uk","org.uk","gov.uk","ac.uk","com.au","net.au","org.au","co.jp","com.br","com.mx","com.sg","co.in"]);function bc(e,t,n){let r=Array.isArray(e)?e:typeof e=="string"&&e.trim()?[e]:[],o=new Set;for(let s of r){let i=_T(nm(String(s||"")),n);i&&o.add(i)}if(!o.size){let s=wT(t,n);s&&o.add(s)}return Array.from(o)}function _T(e,t){return e?t!=="host_only"||e==="*"||e.startsWith("=")||e.startsWith("*.")?e:`=${e}`:""}function kT(e){let t=String(e||"").trim().toLowerCase();if(!t)return"";try{if(t.includes("://"))return new URL(t).hostname.toLowerCase();if(t.startsWith("//"))return new URL(`https:${t}`).hostname.toLowerCase()}catch{}return t.replace(/:\d+$/,"").replace(/[^a-z0-9.-]/g,"").replace(/^\.+/,"").replace(/\.+$/,"")}function nm(e){let t=String(e||"").trim().toLowerCase();if(!t)return"";if(t==="*")return"*";let n=t.startsWith("="),r=!n&&t.startsWith("*."),o=n?t.slice(1):r?t.slice(2):t,s=kT(o);return s?n?`=${s}`:r?`*.${s}`:s:""}function wT(e,t){let n=String(e||"").trim().toLowerCase();if(!n)return"";if(n==="localhost"||/^\d+\.\d+\.\d+\.\d+$/.test(n))return`=${n}`;if(t==="host_only")return`=${n}`;let r=n.split(".").filter(Boolean);if(r.length<2)return n;let o=`${r[r.length-2]}.${r[r.length-1]}`;return r.length>=3&&TT.has(o)?`${r[r.length-3]}.${o}`:o}function $r(e,t){let n=Ns(e);if(!n)return!1;if(!t.length)return!0;for(let r of t)if(ET(n,r))return!0;return!1}function Ns(e){try{return new URL(e).hostname.toLowerCase()}catch{return null}}function ET(e,t){let n=nm(t);if(!n)return!1;if(n==="*")return!0;if(n.startsWith("=")){let r=n.slice(1);return!!r&&e===r}if(n.startsWith("*.")){let r=n.slice(2);return r?e===r||e.endsWith(`.${r}`):!1}return e===n?!0:e.endsWith(`.${n}`)}var Tc=class e{root;includeFrames;disableDomAnnotations;allowActions;runtimeId;domainScopeMode;allowedDomains;externalNavigationPolicy;crossHostPolicy;registerOpenedTab;listKnownTabs;switchToLogicalTab;onNavigationGuardrail;onBeforeAgentNavigation;onBeforeCrossHostNavigation;instrumentation;highlightEl=null;clientTools=new Map;navigationDelayMs;domSettleDebounceMs;domSettleMaxWaitMs;domSettleRetries;sparseTreeRetryDelayMs;sparseTreeRetryMaxAttempts;uploadStore=new Map;uploadProviderInstalled=!1;actionGateContext={};static NAV_PREFLIGHT_TIMEOUT_MS=1500;constructor(t={}){this.root=t.root??document.body??document.documentElement,this.includeFrames=t.includeFrames??!0,this.disableDomAnnotations=t.disableDomAnnotations??!0,this.allowActions=t.allowActions??!0,this.runtimeId=t.runtimeId,this.domainScopeMode=rm(t.domainScopeMode),this.allowedDomains=bc(t.allowedDomains,window.location.hostname,this.domainScopeMode),this.externalNavigationPolicy=om(t.externalNavigationPolicy),this.crossHostPolicy=sm(t.crossHostPolicy),this.registerOpenedTab=t.registerOpenedTab,this.listKnownTabs=t.listKnownTabs,this.switchToLogicalTab=t.switchToLogicalTab,this.onNavigationGuardrail=t.onNavigationGuardrail,this.onBeforeAgentNavigation=t.onBeforeAgentNavigation,this.onBeforeCrossHostNavigation=t.onBeforeCrossHostNavigation,this.navigationDelayMs=t.navigationDelayMs??80,this.domSettleDebounceMs=Pi(t.domSettle?.debounceMs,24,8,500),this.domSettleMaxWaitMs=Pi(t.domSettle?.maxWaitMs,220,80,5e3),this.domSettleRetries=Pi(t.domSettle?.retries,0,0,6),this.sparseTreeRetryDelayMs=Pi(t.domSettle?.sparseTreeRetryDelayMs,35,20,1e3),this.sparseTreeRetryMaxAttempts=Pi(t.domSettle?.sparseTreeRetryMaxAttempts,1,0,4),this.instrumentation=t.instrumentation??tm({includeIframes:!0,scanInlineHandlers:!0,observeInlineMutations:!0,...t.instrumentationOptions||{}}),qp(),t.uploadBytesProvider&&this.setUploadBytesProvider(t.uploadBytesProvider)}setAllowActions(t){this.allowActions=!!t}setActionGateContext(t){let n={};(t?.mode==="controller"||t?.mode==="observer")&&(n.mode=t.mode),typeof t?.controllerRuntimeId=="string"&&t.controllerRuntimeId.trim()&&(n.controllerRuntimeId=t.controllerRuntimeId.trim()),Number.isFinite(Number(t?.activeLogicalTabId))&&Number(t?.activeLogicalTabId)>0&&(n.activeLogicalTabId=Number(t?.activeLogicalTabId)),Number.isFinite(Number(t?.localLogicalTabId))&&Number(t?.localLogicalTabId)>0&&(n.localLogicalTabId=Number(t?.localLogicalTabId)),typeof t?.reason=="string"&&t.reason.trim()&&(n.reason=t.reason.trim().slice(0,240)),this.actionGateContext=n}setNavigationPolicy(t){t.domainScopeMode&&(this.domainScopeMode=rm(t.domainScopeMode),t.allowedDomains||(this.allowedDomains=bc(void 0,window.location.hostname,this.domainScopeMode))),t.allowedDomains&&(this.allowedDomains=bc(t.allowedDomains,window.location.hostname,this.domainScopeMode)),t.externalNavigationPolicy&&(this.externalNavigationPolicy=om(t.externalNavigationPolicy)),t.crossHostPolicy&&(this.crossHostPolicy=sm(t.crossHostPolicy))}async getSnapshot(){return await cm(this.root),Di(this.root,this.instrumentation,{includeFrames:this.includeFrames,disableDomAnnotations:this.disableDomAnnotations})}async getPageData(t){await cm(this.root);let n=uc(t?.pageConfig),r={...n||{},adaptiveSettleDebounceMs:typeof n?.adaptiveSettleDebounceMs=="number"?n.adaptiveSettleDebounceMs:this.domSettleDebounceMs,adaptiveSettleMaxWaitMs:typeof n?.adaptiveSettleMaxWaitMs=="number"?n.adaptiveSettleMaxWaitMs:this.domSettleMaxWaitMs,adaptiveSettleRetries:typeof n?.adaptiveSettleRetries=="number"?n.adaptiveSettleRetries:this.domSettleRetries,sparseTreeRetryDelayMs:typeof n?.sparseTreeRetryDelayMs=="number"?n.sparseTreeRetryDelayMs:this.sparseTreeRetryDelayMs,sparseTreeRetryMaxAttempts:typeof n?.sparseTreeRetryMaxAttempts=="number"?n.sparseTreeRetryMaxAttempts:this.sparseTreeRetryMaxAttempts};return await Yp(this.root,this.instrumentation,{includeFrames:this.includeFrames,disableDomAnnotations:this.disableDomAnnotations,pageConfig:r})}async executeTool(t,n){let r=IT(t?.name);if(!r)return{success:!1,error:`Unknown tool: ${String(t?.name)}`,allowFallback:!1};if(this.shouldBlockForOutOfScopeContext(r))return this.domainScopeBlockedResponse(window.location.href,"Current tab is outside the allowed navigation scope.",{fromCurrentContext:!0});if(!this.allowActions&&!am.has(r))return{success:!1,error:"Actions disabled by configuration",allowFallback:!1,output:{reason:this.actionGateContext.mode==="observer"?"Actions are disabled because this tab is currently in observer mode.":this.actionGateContext.reason||"Actions disabled by configuration",actionGate:this.actionGateContext}};let o=await this.handleNavigationTools(r,t?.args||{});if(o)return o;if(r===H.wait_action){let g=Number(t?.args?.duration??1e3);return await new Promise(_=>setTimeout(_,Math.max(0,Math.min(g,6e4)))),{success:!0}}if(r===H.wait_for_element)return this.waitForElement(t?.args||{});if(r===H.answer_task)return{success:!0};if(r===H.solve_captcha)return yc("CAPTCHA solving requires human intervention in embed mode.","HUMAN_INTERVENTION_REQUIRED");if(r===H.network_run_recipe)return yc("network_run_recipe is not supported in embed mode.","CAPABILITY_UNAVAILABLE");let s=t?.args||{},i=AT(s),a=Ss(document,s.iframe_id);if(s.iframe_id!=null&&a.unresolvedPath.length>0&&!i)return this.iframeContextUnavailableResponse(s.iframe_id,a);if(r===H.click_element&&s?.open_in_new_tab)return this.openElementInNewTab(s);if(r===H.click_element){let g=this.getInterceptedClickTarget(s);if(g?.targetUrl){if(g.forceOpenInNewTab)return this.openUrlInNewTab(g.targetUrl,{policyBlocked:!0,reason:g.reason,decisionReason:"open_new_tab"});let A=g.reason;return this.externalNavigationPolicy==="open_new_tab_notice"?this.openUrlInNewTab(g.targetUrl,{policyBlocked:!0,reason:A,decisionReason:"open_new_tab"}):this.domainScopeBlockedResponse(g.targetUrl,A,{decisionReason:"policy_blocked"})}let _=this.getClickTargetUrl(s);if(_){let A=this.buildNavigationIntent(_);if(A.isCrossHost){let R=await this.resolveAgentNavigationDecision(A,this.getNavigationFallbackDecision(_));if(R.decision==="block")return this.domainScopeBlockedResponse(_,R.reason||"Navigation blocked by policy.",{decisionReason:R.decisionReason||"policy_blocked"});if(R.decision==="open_new_tab")return this.openUrlInNewTab(_,{policyBlocked:!0,reason:R.reason||"Navigation policy requires opening a new tab.",decisionReason:R.decisionReason||"open_new_tab"});this.notifyCrossHostNavigation(A)}else{let R=await this.resolveAgentNavigationDecision(A,"allow_same_tab");if(R.decision==="block")return this.domainScopeBlockedResponse(_,R.reason||"Navigation blocked by policy.",{decisionReason:R.decisionReason||"policy_blocked"});if(R.decision==="open_new_tab")return this.openUrlInNewTab(_,{policyBlocked:!0,reason:R.reason||"Navigation policy requires opening a new tab.",decisionReason:R.decisionReason||"open_new_tab"})}}}if(r===H.describe_images)return this.describeImages(t?.args||{});if(!(r in Da))return{success:!1,error:`Unknown tool: ${String(t?.name)}`,allowFallback:!1};let{doc:c}=a,d=bu(s),p=d?ar(c,d):null,u;if(p){let g=this.instrumentation.getFrameworkMetadata(p),_=RT(g.listenersRaw||"",r),A=s?.value??s?.text??null;u=ST({...g,pattern:_,value:A})}let v=Da[r];return r===H.upload_file&&!n&&(n=await this.buildUploadPayload(s).catch(()=>{})),Wp({opcode:v,call:{name:r,args:s},elementData:u,tabIndex:0,payload:n})}iframeContextUnavailableResponse(t,n){let o=`iframe_id unresolved: remaining=${n.unresolvedPath.join(">")||"(none)"} (cross-origin, not-ready, or not found)`;return{success:!1,error:o,allowFallback:!1,output:{success:!1,error:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:o,retryable:!1},iframe_context:{requested_iframe_id:t,requested_path:n.iframePath,resolved_path:n.resolvedPath,unresolved_path:n.unresolvedPath}},errorDetails:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:o,retryable:!1,details:{requested_iframe_id:t,requested_path:n.iframePath,resolved_path:n.resolvedPath,unresolved_path:n.unresolvedPath}}}}highlight(t){let n=ar(document,t);if(!n)return;let r=n.getBoundingClientRect();if(!this.highlightEl){let o=document.createElement("div");o.style.position="fixed",o.style.pointerEvents="none",o.style.border="2px solid #ff7a59",o.style.boxShadow="0 0 0 2px rgba(255, 122, 89, 0.2)",o.style.borderRadius="6px",o.style.zIndex="2147483647",this.highlightEl=o,document.body.appendChild(o)}this.highlightEl.style.left=`${r.left}px`,this.highlightEl.style.top=`${r.top}px`,this.highlightEl.style.width=`${Math.max(0,r.width)}px`,this.highlightEl.style.height=`${Math.max(0,r.height)}px`,this.highlightEl.style.display="block"}clearHighlight(){this.highlightEl&&(this.highlightEl.style.display="none")}setUploadBytesProvider(t){window.__ROVER_UPLOAD_BYTES__=t}registerTool(t,n){let r=typeof t=="string"?{name:t}:t;!r?.name||typeof n!="function"||this.clientTools.set(r.name,{handler:n,def:r})}async executeClientTool(t,n){let r=this.clientTools.get(t);if(!r)throw new Error(`Unknown client tool: ${t}`);return r.handler(n)}listClientTools(){return Array.from(this.clientTools.values()).map(t=>t.def)}async handleNavigationTools(t,n){switch(t){case H.goto_url:{let r=String(n.url||"").trim();if(!r)return{success:!1,error:"goto_url: missing url",allowFallback:!0};let o=vc(r,window.location.href);if(!o)return{success:!1,error:`goto_url: invalid url "${r}"`,allowFallback:!0};if(this.shouldPreserveHostRuntime(o)){let a=this.buildNavigationIntent(o),c=await this.resolveAgentNavigationDecision(a,this.getNavigationFallbackDecision(o)),d=this.externalNavigationPolicy==="block"?"block":"open_new_tab";return(c.decision==="allow_same_tab"?d:c.decision)==="block"?this.domainScopeBlockedResponse(o,c.reason||"Navigation blocked by policy.",{decisionReason:c.decisionReason}):await this.openUrlInNewTab(o,{policyBlocked:!0,reason:c.reason||"Opened in a new tab to preserve Rover runtime continuity across hostnames.",decisionReason:c.decisionReason||"open_new_tab"})}if(this.shouldGuardExternalNavigation(o)){let a="Navigation blocked by domain policy.";return this.externalNavigationPolicy==="open_new_tab_notice"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:a}):this.domainScopeBlockedResponse(o,a)}let s=this.buildNavigationIntent(o);if(s.isCrossHost){let a=await this.resolveAgentNavigationDecision(s,this.getNavigationFallbackDecision(o));return a.decision==="block"?this.domainScopeBlockedResponse(o,a.reason||"Navigation blocked by policy.",{decisionReason:a.decisionReason}):a.decision==="open_new_tab"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:a.reason||"Navigation policy requires opening a new tab.",decisionReason:a.decisionReason||"open_new_tab"}):this.scheduleSameTabNavigation(o,s,{decisionReason:a.decisionReason||"allow_same_tab",reason:a.reason||"Navigation allowed."})}let i=await this.resolveAgentNavigationDecision(s,"allow_same_tab");return i.decision==="block"?this.domainScopeBlockedResponse(o,i.reason||"Navigation blocked by policy.",{decisionReason:i.decisionReason||"policy_blocked"}):i.decision==="open_new_tab"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:i.reason||"Navigation policy requires opening a new tab.",decisionReason:i.decisionReason||"open_new_tab"}):this.scheduleSameTabNavigation(o,s,{decisionReason:i.decisionReason||"allow_same_tab",reason:i.reason||"Navigation allowed."})}case H.google_search:{let r=String(n.query||"").trim();if(!r)return{success:!1,error:"google_search: missing query",allowFallback:!0};let o=`https://www.google.com/search?q=${encodeURIComponent(r)}`;if(this.shouldPreserveHostRuntime(o)){let a=this.buildNavigationIntent(o),c=await this.resolveAgentNavigationDecision(a,this.getNavigationFallbackDecision(o)),d=this.externalNavigationPolicy==="block"?"block":"open_new_tab";return(c.decision==="allow_same_tab"?d:c.decision)==="block"?this.domainScopeBlockedResponse(o,c.reason||"Navigation blocked by policy.",{decisionReason:c.decisionReason}):await this.openUrlInNewTab(o,{policyBlocked:!0,reason:c.reason||"Opened in a new tab to preserve Rover runtime continuity across hostnames.",decisionReason:c.decisionReason||"open_new_tab"})}if(this.shouldGuardExternalNavigation(o)){let a="Google search opens outside the allowed navigation scope.";return this.externalNavigationPolicy==="open_new_tab_notice"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:a}):this.domainScopeBlockedResponse(o,a)}let s=this.buildNavigationIntent(o);if(s.isCrossHost){let a=await this.resolveAgentNavigationDecision(s,this.getNavigationFallbackDecision(o));return a.decision==="block"?this.domainScopeBlockedResponse(o,a.reason||"Navigation blocked by policy.",{decisionReason:a.decisionReason}):a.decision==="open_new_tab"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:a.reason||"Navigation policy requires opening a new tab.",decisionReason:a.decisionReason||"open_new_tab"}):this.scheduleSameTabNavigation(o,s,{decisionReason:a.decisionReason||"allow_same_tab",reason:a.reason||"Navigation allowed."})}let i=await this.resolveAgentNavigationDecision(s,"allow_same_tab");return i.decision==="block"?this.domainScopeBlockedResponse(o,i.reason||"Navigation blocked by policy.",{decisionReason:i.decisionReason||"policy_blocked"}):i.decision==="open_new_tab"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:i.reason||"Navigation policy requires opening a new tab.",decisionReason:i.decisionReason||"open_new_tab"}):this.scheduleSameTabNavigation(o,s,{decisionReason:i.decisionReason||"allow_same_tab",reason:i.reason||"Navigation allowed."})}case H.go_back:{let r=this.buildNavigationIntent(window.location.href,{isCrossHost:!1});return await this.resolveAgentNavigationDecision(r,"allow_same_tab"),this.scheduleHistoryNavigation("back"),{success:!0,output:{navigation:"same_tab",navigationOutcome:"same_host_navigated",navigationPending:!1,decisionReason:"allow_same_tab"}}}case H.go_forward:{let r=this.buildNavigationIntent(window.location.href,{isCrossHost:!1});return await this.resolveAgentNavigationDecision(r,"allow_same_tab"),this.scheduleHistoryNavigation("forward"),{success:!0,output:{navigation:"same_tab",navigationOutcome:"same_host_navigated",navigationPending:!1,decisionReason:"allow_same_tab"}}}case H.refresh_page:{let r=this.buildNavigationIntent(window.location.href,{isCrossHost:!1});return await this.resolveAgentNavigationDecision(r,"allow_same_tab"),this.scheduleHistoryNavigation("reload"),{success:!0,output:{navigation:"same_tab",navigationOutcome:"same_host_navigated",navigationPending:!1,decisionReason:"allow_same_tab"}}}case H.open_new_tab:{let r=String(n.url||"").trim();if(!r)return{success:!1,error:"open_new_tab: missing url",allowFallback:!0};let o=vc(r,window.location.href);if(!o)return{success:!1,error:`open_new_tab: invalid url "${r}"`,allowFallback:!0};let s=this.buildNavigationIntent(o),i=await this.resolveAgentNavigationDecision(s,"open_new_tab");return i.decision==="block"?this.domainScopeBlockedResponse(o,i.reason||"Navigation blocked by policy.",{decisionReason:i.decisionReason}):await this.openUrlInNewTab(o,{policyBlocked:!1,reason:i.reason,decisionReason:i.decisionReason||"open_new_tab"})}case H.switch_tab:{let r=Number(n.logical_tab_id??n.tab_id);if(!Number.isFinite(r)||r<=0)return{success:!1,error:(typeof n._tab_id_mapping_error=="string"?String(n._tab_id_mapping_error).trim():"")||"switch_tab: missing/invalid logical_tab_id",allowFallback:!0};if(this.externalNavigationPolicy!=="allow"&&this.listKnownTabs){let o=this.listKnownTabs().find(s=>Number(s.logicalTabId)===r);if(o?.external)return this.domainScopeBlockedResponse(o.url||`logical_tab_id:${r}`,`Tab ${r} is out of scope. Direct actions are blocked for this tab.`)}if(!this.switchToLogicalTab)return yc("switch_tab requires session coordinator support.","CAPABILITY_UNAVAILABLE");try{let o=await this.switchToLogicalTab(r);return o?.ok?{success:!0,output:{logicalTabId:r,delegated:!!o.delegated,mode:o.delegated?"delegated":"local"}}:{success:!1,error:o?.reason||`switch_tab failed for logical tab ${r}`,allowFallback:!0}}catch(o){return{success:!1,error:o?.message||"switch_tab failed",allowFallback:!0}}}case H.close_tab:try{return window.close(),{success:!0}}catch{return yc("close_tab failed in embed mode.","CAPABILITY_UNAVAILABLE")}default:return null}}shouldGuardExternalNavigation(t){return this.externalNavigationPolicy==="allow"?!1:!$r(t,this.allowedDomains)}shouldPreserveHostRuntime(t){return this.externalNavigationPolicy==="allow"?!1:!$r(t,this.allowedDomains)}getNavigationFallbackDecision(t){return t?$r(t,this.allowedDomains)?this.crossHostPolicy==="open_new_tab"&&this.isCrossHostNavigation(t)?"open_new_tab":"allow_same_tab":this.externalNavigationPolicy==="block"?"block":this.externalNavigationPolicy==="open_new_tab_notice"?"open_new_tab":"allow_same_tab":"allow_same_tab"}isCrossHostNavigation(t){let n=Ns(window.location.href),r=Ns(t);return!n||!r?!1:n!==r}buildNavigationIntent(t,n){let r="";try{r=crypto.randomUUID()}catch{r=`handoff_${Date.now()}_${Math.floor(Math.random()*1e5)}`}return{handoffId:r,targetUrl:t,sourceRuntimeId:this.runtimeId,sourceLogicalTabId:this.actionGateContext.localLogicalTabId,runId:n?.runId,isCrossHost:n?.isCrossHost??this.isCrossHostNavigation(t),ts:Date.now()}}async resolveAgentNavigationDecision(t,n){let r={decision:n,decisionReason:n==="block"?"policy_blocked":n==="open_new_tab"?"open_new_tab":"allow_same_tab"};if(!this.onBeforeAgentNavigation)return r;try{let o=this.onBeforeAgentNavigation(t),s=await this.awaitWithTimeout(o,e.NAV_PREFLIGHT_TIMEOUT_MS);if(!s||typeof s!="object")return r;let i=String(s.decision||"").trim();return{decision:i==="allow_same_tab"||i==="open_new_tab"||i==="block"?i:i==="stale_run"?n:r.decision,reason:String(s.reason||"").trim()||void 0,decisionReason:String(s.decisionReason||"").trim()||r.decisionReason}}catch{return r}}async awaitWithTimeout(t,n){let r=t;return!r||typeof r.then!="function"?t:await Promise.race([r,new Promise(o=>{window.setTimeout(()=>o(void 0),Math.max(0,n))})])}scheduleHistoryNavigation(t){window.setTimeout(()=>{t==="back"?window.history.back():t==="forward"?window.history.forward():window.location.reload()},this.navigationDelayMs)}scheduleSameTabNavigation(t,n,r){let o=n.isCrossHost===!0,s=$r(t,this.allowedDomains);return o&&this.notifyCrossHostNavigation(n),s?(window.setTimeout(()=>{try{window.location.href=t}catch{window.location.assign(t)}},this.navigationDelayMs),{success:!0,output:{url:t,navigation:"same_tab",navigationOutcome:o?"subdomain_navigated":"same_host_navigated",navigationPending:!1,decisionReason:r?.decisionReason||"allow_same_tab",reason:r?.reason,...r?.convertedFrom?{convertedFrom:r.convertedFrom}:{}}}):(window.setTimeout(()=>{try{window.location.href=t}catch{window.location.assign(t)}},Math.max(this.navigationDelayMs,200)),{success:!0,output:{url:t,navigation:"same_tab",navigationOutcome:"same_tab_scheduled",navigationPending:!0,decisionReason:r?.decisionReason||"allow_same_tab",reason:r?.reason,...r?.convertedFrom?{convertedFrom:r.convertedFrom}:{}}})}notifyCrossHostNavigation(t){if(t.isCrossHost)try{this.onBeforeCrossHostNavigation?.(t)}catch{}}shouldBlockForOutOfScopeContext(t){return this.externalNavigationPolicy==="allow"||am.has(t)||xT.has(t)?!1:!$r(window.location.href,this.allowedDomains)}getInterceptedClickTarget(t){let n=this.getClickTargetUrl(t);return n?this.shouldPreserveHostRuntime(n)?!$r(n,this.allowedDomains)&&this.externalNavigationPolicy==="block"?{targetUrl:n,reason:"Blocked same-tab navigation to an out-of-scope destination.",forceOpenInNewTab:!1}:{targetUrl:n,reason:"Opened in a new tab to preserve Rover runtime continuity outside allowed domains.",forceOpenInNewTab:!0}:this.externalNavigationPolicy==="allow"||$r(n,this.allowedDomains)?null:{targetUrl:n,reason:"Blocked same-tab navigation to an out-of-scope destination.",forceOpenInNewTab:!1}:null}getClickTargetUrl(t){let n=bu(t);if(!n)return null;let{doc:r}=Ss(document,t.iframe_id),o=ar(r,n);if(!o)return null;let s=im(o),i=s?.href||s?.getAttribute("href")||"";return vc(i,window.location.href)}domainScopeBlockedResponse(t,n,r){let o=this.externalNavigationPolicy==="block"?"block":"open_new_tab_notice";this.emitNavigationGuardrail({blockedUrl:t,currentUrl:window.location.href,policyAction:o,reason:n,allowedDomains:this.allowedDomains,openedInNewTab:!1});let s;try{s=new URL(t).hostname}catch{}return{success:!1,error:n,allowFallback:!0,output:{success:!1,error:{code:"DOMAIN_SCOPE_BLOCKED",message:n,missing:[],next_action:o==="block"?"This domain is blocked. Do NOT retry. Acknowledge and proceed with the task using available resources.":"Use open_new_tab to access external pages without losing context.",retryable:!1},blocked_url:t,current_url:window.location.href,policy_action:o,blockedDomainStatus:"blocked",navigationOutcome:"blocked",decisionReason:r?.decisionReason||"policy_blocked",from_current_context:!!r?.fromCurrentContext,agentInstruction:`Navigation to ${s||t} is blocked by domain policy. Do NOT retry this URL. Acknowledge to user and proceed with the next step.`,blockedDomain:s||t,pageContext:{url:t,title:`[Blocked] ${s||t}`,contentText:`Access to ${s||t} is restricted by navigation policy. The page content is not available. Continue the task without this resource or use /scrape endpoint if external context is needed.`,accessible:!1}},errorDetails:{code:"DOMAIN_SCOPE_BLOCKED",message:n,retryable:!1,details:{blockedUrl:t,currentUrl:window.location.href,policyAction:o,blockedDomain:s}}}}emitNavigationGuardrail(t){try{this.onNavigationGuardrail?.(t)}catch{}}async openUrlInNewTab(t,n){let r=!$r(t,this.allowedDomains),o=this.snapshotKnownTabIds(),s=this.openVerifiedPopup(t),i;if(s.opened&&this.registerOpenedTab)try{i=(await this.registerOpenedTab({url:t,title:void 0,external:r,openerRuntimeId:this.runtimeId}))?.logicalTabId}catch{}if(s.opened&&!i&&(i=await this.reconcileOpenedTab(t,o)),!s.opened){let p=await this.reconcileOpenedTab(t,o);p&&(s={opened:!0,verified:!1},i=i||p)}let a=s.opened&&!i&&!!this.registerOpenedTab;if(!s.opened){let p="Browser popup settings blocked opening a new tab.";return n?.policyBlocked&&this.emitNavigationGuardrail({blockedUrl:t,currentUrl:window.location.href,policyAction:"open_new_tab_notice",reason:n.reason||p,allowedDomains:this.allowedDomains,openedInNewTab:!1}),{success:!1,error:"open_new_tab blocked by browser popup settings",allowFallback:!0,output:{url:t,external:r,logicalTabId:i,navigationOutcome:"blocked",decisionReason:n?.decisionReason||"policy_blocked"},errorDetails:{code:"POPUP_BLOCKED",message:p,retryable:!0,next_action:"Allow popups for this site and try again."}}}let c=n?.policyBlocked?n.reason||"Opened in a new tab due to domain policy.":void 0;n?.policyBlocked&&this.emitNavigationGuardrail({blockedUrl:t,currentUrl:window.location.href,policyAction:"open_new_tab_notice",reason:c||"Opened in new tab due to domain policy.",allowedDomains:this.allowedDomains,openedInNewTab:!0});let d=[];return a&&d.push("Tab opened but registration failed; tab may not be targetable."),s.verified||d.push("Tab open was triggered, but browser did not return a popup handle."),{success:!0,output:{url:t,external:r,logicalTabId:i,openedInNewTab:!0,navigationOutcome:"new_tab_opened",navigationPending:!0,decisionReason:n?.decisionReason||"open_new_tab",openVerification:s.verified?"verified":"unverified",policyBlocked:!!n?.policyBlocked,message:c,...d.length?{warning:d.join(" ")}:{}},allowFallback:!0}}openVerifiedPopup(t){let n=window.open("about:blank","_blank");if(n){try{n.opener=null}catch{}try{n.location.href=t}catch{}return{opened:!0,verified:!0}}try{let r=window.open(t,"_blank");if(r){try{r.opener=null}catch{}return{opened:!0,verified:!0}}}catch{}try{let r=window.open(t,"_blank","noopener,noreferrer");if(r){try{r.opener=null}catch{}return{opened:!0,verified:!0}}return{opened:!0,verified:!1}}catch{}try{let r=document.createElement("a");return r.href=t,r.target="_blank",r.rel="noopener noreferrer",r.style.display="none",document.body.appendChild(r),r.click(),r.remove(),{opened:!0,verified:!1}}catch{return{opened:!1,verified:!1}}}snapshotKnownTabIds(){let t=new Set;if(!this.listKnownTabs)return t;try{let n=this.listKnownTabs();for(let r of n){let o=Number(r?.logicalTabId);!Number.isFinite(o)||o<=0||t.add(o)}}catch{return t}return t}async reconcileOpenedTab(t,n){if(!this.listKnownTabs)return;let r=Ns(t),o=Date.now()+2e3;for(;Date.now()<o;){try{let s=this.listKnownTabs();for(let i of s){let a=Number(i?.logicalTabId);if(!Number.isFinite(a)||a<=0||n.has(a))continue;let c=String(i?.url||"").trim();if(!c)return a;let d=Ns(c);if(!r||!d||d===r)return a}}catch{}await new Promise(s=>setTimeout(s,120))}}async openElementInNewTab(t){let n=bu(t);if(!n)return{success:!1,error:"click_element with open_in_new_tab requires element_id.",allowFallback:!0};let{doc:r}=Ss(document,t.iframe_id),o=ar(r,n);if(!o)return{success:!1,error:`click_element: element_id ${String(n)} not found.`,allowFallback:!0};let s=im(o),i=s?.href||s?.getAttribute("href")||"",a=vc(i,window.location.href);return a?await this.openUrlInNewTab(a,{policyBlocked:!1}):{success:!1,error:"click_element open_in_new_tab only works when target resolves to a valid link URL.",allowFallback:!0}}async waitForElement(t){let n=String(t.selector||"").trim(),r=Math.max(0,Math.min(Number(t.timeout??5e3),3e4));if(!n)return{success:!1,error:"wait_for_element: missing selector",allowFallback:!0};let o=Date.now(),s=document;for(;Date.now()-o<r;){let i=null;try{i=s.querySelector(n)}catch{i=null}if(i||(i=CT(s,n)),i)return{success:!0};await new Promise(a=>setTimeout(a,200))}return{success:!1,error:`wait_for_element: not found (${n})`,allowFallback:!0}}async describeImages(t){let n=uf(t);if(!n.length)return{success:!1,error:"describe_images: element_ids is empty",allowFallback:!1};let r=[],o=[];for(let s of n){let i=ar(document,s);if(!i){o.push(`element_id ${s} not found`);continue}try{let a=await MT(i);if(!a?.data||!a?.mimeType){o.push(`element_id ${s}: unsupported image`);continue}r.push({element_id:s,...a})}catch(a){o.push(`element_id ${s}: ${a?.message||String(a)}`)}}return r.length?{success:!0,output:{images:r,errors:o.length?o:void 0}}:{success:!1,error:o[0]||"describe_images failed",output:{images:[],errors:o}}}ensureUploadProvider(){this.uploadProviderInstalled||(this.uploadProviderInstalled=!0,this.setUploadBytesProvider(async({token:t,byteLength:n})=>{this.pruneUploadStore();let r=this.uploadStore.get(t);if(!r)throw new Error("upload bytes token not found");if(r.bytes.byteLength!==n)throw new Error("upload bytes size mismatch");return r.bytes}))}pruneUploadStore(){let t=Date.now()-6e5;for(let[n,r]of this.uploadStore.entries())r.createdAt<t&&this.uploadStore.delete(n)}async buildUploadPayload(t){let n=String(t.file_url||"").trim();if(n)try{let r=await Op(0,n,document?.referrer||null),o=r.bytes,s=o.byteLength,i=r.mimeType||t.mime_type||"application/octet-stream",a=t.file_name||r.fileName,c=1024*1024;if(s<=c)return{kind:"upload_file",inlineB64:dm(o),byteLength:s,mimeType:i,fileName:a};this.ensureUploadProvider();let d=crypto.randomUUID();return this.uploadStore.set(d,{bytes:o,createdAt:Date.now()}),{kind:"upload_file",token:d,byteLength:s,mimeType:i,fileName:a,durable:!1}}catch{return}}};function IT(e){return e==="open_url_new_tab"?H.open_new_tab:String(e||"").trim()}function rm(e){return e==="host_only"?"host_only":"registrable_domain"}function om(e){return e==="allow"||e==="block"||e==="open_new_tab_notice"?e:"open_new_tab_notice"}function sm(e){return e==="open_new_tab"||e==="same_tab"?e:"same_tab"}function Pi(e,t,n,r){let o=Number(e);return Number.isFinite(o)?Math.max(n,Math.min(r,Math.floor(o))):t}function vc(e,t){let n=String(e||"").trim();if(!n)return null;try{return new URL(n,t).toString()}catch{return null}}function im(e){if(e instanceof HTMLAnchorElement&&e.href)return e;let t=e.closest?.("a[href]");return t instanceof HTMLAnchorElement&&t.href?t:null}function yc(e,t="CAPABILITY_UNAVAILABLE"){return{success:!1,error:e,allowFallback:!0,errorDetails:{code:t,message:e,retryable:!1}}}var am=new Set([H.describe_images,H.wait_action,H.wait_for_element,H.answer_task,H.solve_captcha,H.network_run_recipe]),xT=new Set([H.goto_url,H.google_search,H.go_back,H.go_forward,H.refresh_page,H.open_new_tab,H.switch_tab,H.close_tab]);function ST(e){return{frameworks:(e.frameworks||[]).filter(n=>n in Pl).map(n=>Pl[n]),listenersRaw:e.listenersRaw??"",role:e.role??null,pattern:e.pattern,value:e.value??null}}async function cm(e){try{let n=(e.ownerDocument||document).defaultView||window,r=n.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",s=n[r]?.flushScan;if(typeof s=="function"){await s({mode:"priority",includeShadow:!0,includeSameOriginIframes:!0,budgetMs:400});return}n.rtrvrAIMarkInteractiveElements?.()}catch{}}function RT(e,t){if(t!==H.click_element)return"standard";let n=Oo(e||"");if(!n)return"standard";let r=new Set(n.entries.map(c=>Ur[c.id]).filter(c=>typeof c=="string")),o=r.has("click")||r.has("mousedown")||r.has("mouseup")||r.has("pointerdown")||r.has("pointerup")||r.has("touchend");if((r.has("mouseenter")||r.has("mouseover")||r.has("pointerenter"))&&o)return"hover-activate";let i=r.has("touchstart"),a=r.has("touchend");return i&&a?"touch-sequence":"standard"}function dm(e){let t=new Uint8Array(e),n="",r=32768;for(let o=0;o<t.length;o+=r)n+=String.fromCharCode(...t.subarray(o,o+r));return btoa(n)}function lm(e){let t=Number(e);if(!Number.isFinite(t))return null;let n=Math.trunc(t);return n>0?n:null}function fm(e){let t=[];for(let n of La){let r=e?.[n];if(r==null)continue;if(Array.isArray(r)){for(let s of r){let i=lm(s);i!=null&&t.push(i)}continue}let o=lm(r);o!=null&&t.push(o)}return Array.from(new Set(t))}function AT(e){return fm(e).length>0}function bu(e){let t=fm(e);return t.length?t[0]:null}function CT(e,t){let n=t.toLowerCase(),r=["button","a","input","textarea","select","label","[role]","div","span"],o=e.querySelectorAll(r.join(","));for(let s of Array.from(o))if((s.textContent||"").trim().toLowerCase().includes(n)||(s.getAttribute("aria-label")||"").toLowerCase().includes(n))return s;return null}async function MT(e){if(e instanceof HTMLCanvasElement){let o=e.toDataURL(),s=pm(o);if(!s)throw new Error("canvas toDataURL failed");return s}if(e instanceof SVGElement){let o=new XMLSerializer().serializeToString(e);return{data:btoa(unescape(encodeURIComponent(o))),mimeType:"image/svg+xml",displayName:"svg"}}if(e instanceof HTMLImageElement){let o=e.currentSrc||e.src;return await um(o,e.alt||e.getAttribute("aria-label")||void 0)}let n=window.getComputedStyle(e).backgroundImage||"",r=/url\\((['\"]?)(.*?)\\1\\)/.exec(n);if(r?.[2])return await um(r[2],e.getAttribute("aria-label")||void 0);throw new Error("unsupported element")}function pm(e){let t=/^data:([^;]+);base64,(.*)$/.exec(e);return t?{mimeType:t[1],data:t[2]}:null}async function um(e,t){if(!e)throw new Error("missing src");if(e.startsWith("data:")){let a=pm(e);if(!a)throw new Error("invalid data url");return{...a,displayName:t}}let n=await fetch(e,{mode:"cors"});if(!n.ok)throw new Error(`fetch failed (${n.status})`);let r=await n.blob(),o=await r.arrayBuffer(),s=dm(o),i=r.type||"image/png";return{data:s,mimeType:i,displayName:t}}function mm(e,t){e.onmessage=async n=>{let r=n.data;if(!r||r.t!=="req")return;let{id:o,method:s,params:i}=r;try{let a=t[s];if(!a)throw new Error(`No handler for ${s}`);let c=await a(i);e.postMessage({t:"res",id:o,ok:!0,result:c})}catch(a){e.postMessage({t:"res",id:o,ok:!1,error:{message:a?.message||String(a)}})}}}function hm(){let e=window;return e.SpeechRecognition||e.webkitSpeechRecognition}function vu(e){return String(e||"").replace(/\s+/g," ").trim()}function NT(e){let t=e.results;if(!t||typeof t.length!="number")return{finalTranscript:"",interimTranscript:""};let n=[],r=[];for(let o=0;o<t.length;o+=1){let s=t[o];if(!s||typeof s.length!="number")continue;let i=vu(String(s[0]?.transcript||""));i&&(s.isFinal?n.push(i):r.push(i))}return{finalTranscript:vu(n.join(" ")),interimTranscript:vu(r.join(" "))}}function gm(e){let t=typeof e?.error=="string"?String(e.error||"").trim().toLowerCase():"",n=typeof e?.message=="string"?String(e.message||"").trim():"";return t==="not-allowed"||t==="service-not-allowed"?{code:"permission_denied",message:"Microphone access was blocked. Allow microphone access and try again.",recoverable:!1}:t==="audio-capture"?{code:"audio_capture",message:"No working microphone was found for voice dictation.",recoverable:!0}:t==="network"?{code:"network",message:"Network issues interrupted browser dictation.",recoverable:!0}:t==="no-speech"?{code:"no_speech",message:"No speech was detected.",recoverable:!0}:t==="aborted"?{code:"aborted",message:"Voice dictation was interrupted.",recoverable:!0}:{code:"unknown",message:n||"Voice dictation stopped unexpectedly.",recoverable:!0}}function bm(e={}){let t=null,n=!1,r=!1;function o(){t&&(t.onstart=null,t.onresult=null,t.onerror=null,t.onend=null,t.onspeechstart=null,t.onspeechend=null,t=null)}function s(i){let a=hm();if(!a)return null;let c=new a;return c.continuous=!0,c.interimResults=!0,c.maxAlternatives=1,c.lang=String(i||navigator.language||"en-US").trim()||"en-US",c.onstart=()=>{e.onStart?.()},c.onresult=d=>{e.onResult?.(NT(d))},c.onspeechstart=()=>{e.onSpeechStart?.()},c.onspeechend=()=>{e.onSpeechEnd?.()},c.onerror=d=>{e.onError?.(gm(d))},c.onend=()=>{let d=r;r=!1,o(),e.onEnd?.({requested:d})},c}return{isSupported(){return!!hm()},start(i){if(n||t)return;let a=s(i?.language);if(!a){e.onError?.({code:"unsupported",message:"Voice dictation is not available in this browser.",recoverable:!1});return}t=a,r=!1;try{t.start()}catch(c){o(),e.onError?.(gm(c)),e.onEnd?.({requested:!1})}},stop(){if(t){r=!0;try{t.stop()}catch{o(),e.onEnd?.({requested:!0})}}},dispose(){if(n=!0,r=!0,!t)return;let i=t;o();try{i.abort?.()}catch{}}}}var LT="Rover",DT="https://www.rtrvr.ai/rover/mascot.mp4",OT="https://www.rtrvr.ai/rover/mascot.webm",Ps=1200,PT=1200,BT=1200,Fi=25,UT=4,vm=12,FT=800,HT=2600,qT=800,WT=5e3,ym=5e3,Tm=6e4,$T=3,VT=160,zT=460,jT=680,Ds=360,Os=520,_c=720,jo=16,Rm=8,Am=16,GT=16,KT=16,XT=[.52,.72,1],YT=[.56,.72,.88],QT=280,JT=360;function Cm(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function yu(e){try{return new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return""}}function ZT(e){return e.status?e.status:e.kind==="tool_start"||e.kind==="plan"||e.kind==="thought"?"pending":e.kind==="tool_result"?"success":e.kind==="error"?"error":"info"}function e_(e){let t=String(e.title||"").trim().toLowerCase();return t.startsWith("running ")?`tool:${t.replace(/^running\s+/,"").trim()}`:t.endsWith(" completed")?`tool:${t.replace(/\s+completed$/,"").trim()}`:t==="run started"||t==="run resumed"||t==="run completed"?"run":e.kind==="status"?`status:${t||"status"}`:e.id||Cm("trace")}function wt(e){return String(e||"").trim()}function t_(e){return String(e||"").trim().replace(/[^a-zA-Z0-9-]/g,"").slice(0,48)||void 0}function Mm(e){let t=Number(e);return Number.isFinite(t)?Math.max(qT,Math.min(WT,Math.trunc(t))):HT}function _m(e){if(!e||typeof e!="object")return;let t={};typeof e.enabled=="boolean"&&(t.enabled=e.enabled);let n=t_(e.language);return n&&(t.language=n),e.autoStopMs!==void 0&&(t.autoStopMs=Mm(e.autoStopMs)),Object.keys(t).length?t:void 0}function Bi(){return{code:"no_speech",message:"No speech was detected.",recoverable:!0}}function km(e){return String(e||"").replace(/\s+/g," ").trim()}function n_(e,t,n){return[String(e||"").trim(),km(t),km(n)].filter(Boolean).join(" ")}function fo(e,t,n){return Math.max(t,Math.min(n,e))}function r_(){return`rover:panel-layout:${String(window.location.hostname||"default").trim().replace(/[^a-zA-Z0-9:_-]/g,"").slice(0,96)||"default"}`}function o_(e){try{let t=localStorage.getItem(e);if(!t)return{};let n=JSON.parse(t);return!n||typeof n!="object"?{}:n}catch{return{}}}function wm(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}function Em(){let e=document.documentElement,t=window.visualViewport,n=Math.max(320,Math.round(t?.width??window.innerWidth??e.clientWidth??0)),r=Math.max(320,Math.round(t?.height??window.innerHeight??e.clientHeight??0)),o=n>=r?"landscape":"portrait",s=n<=640?"phone":n<=1023?"tablet":"desktop",i=s==="desktop"?"desktop":`${s}-${o}`,a=t?Math.max(0,Math.round((window.innerHeight||r)-(t.height+t.offsetTop))):0;return{width:n,height:r,layout:s,orientation:o,storageKey:i,keyboardInset:a}}function Ui(e,t){let n=Math.max(Ds,Math.min(_c,t.width-jo)),r=Math.max(Os,t.height-jo);return{width:fo(Math.round(e.width),Ds,n),height:fo(Math.round(e.height),Os,r)}}function Ls(e){return Ui({width:zT,height:jT},e)}function Im(e,t){if(!e||typeof e!="object")return;let n=Number(e.width),r=Number(e.height);if(!(!Number.isFinite(n)||!Number.isFinite(r)))return Ui({width:n,height:r},t)}function xm(e){let t=Number(e);if(Number.isInteger(t)&&!(t<0||t>2))return t}function Sm(e){let t=e.layout==="tablet"?YT:XT,n=e.layout==="tablet"?JT:QT,r=e.layout==="tablet"?Am:Rm,o=e.layout==="tablet"?KT:GT,s=Math.max(n,Math.round(e.height-r-o));return t.map((i,a)=>a===t.length-1?s:fo(Math.round((e.height-r)*i),Math.min(n,s),s))}function s_(e,t){let n=0,r=Number.POSITIVE_INFINITY;for(let o=0;o<t.length;o+=1){let s=Math.abs(t[o]-e);s<r&&(n=o,r=s)}return n}function i_(e){let t=String(e||"").trim();return t?t.slice(0,64):LT}function a_(e){let t=String(e||"").trim();return t?t[0].toUpperCase():"R"}function c_(e){return String(e||"").replace(/[^a-zA-Z0-9]/g,"").slice(0,3).toUpperCase()||"RVR"}function Nm(e){let t=wt(e),n=/^(Analyze|Route|Execute|Verify|Complete):\s*(.*)$/i.exec(t);if(!n)return{plainTitle:t};let r=n[1].toLowerCase(),o=wt(n[2]||t);return{stage:r,plainTitle:o||t}}function l_(e){let t=(e.title||"").toLowerCase();if(t==="run started"||t==="run resumed"||t==="run completed"||t==="started new task"||t==="execution completed")return"detail";if(e.kind==="status"){let n=Nm(e.title||"");if(n.stage==="analyze"||n.stage==="route"||n.stage==="complete")return"detail"}return"primary"}function Tu(e,t){let n=/\[([^\]]+)\]\((https?:\/\/[^\s)]+)\)|\*\*(.+?)\*\*/g,r=0,o;for(;(o=n.exec(t))!==null;){if(o.index>r&&e.appendChild(document.createTextNode(t.slice(r,o.index))),o[1]&&o[2]){let s=document.createElement("a");s.className="rvLink",s.href=o[2],s.target="_blank",s.rel="noopener noreferrer",s.textContent=o[1],e.appendChild(s)}else if(o[3]){let s=document.createElement("strong");s.textContent=o[3],e.appendChild(s)}r=o.index+o[0].length}r<t.length&&e.appendChild(document.createTextNode(t.slice(r)))}function po(e){let t=document.createDocumentFragment(),n=e.split(`
|
|
10
|
+
`),r=null;for(let o of n){let s=o.trim();if(!s){r&&(t.appendChild(r),r=null);continue}if(s==="---"){r&&(t.appendChild(r),r=null);let c=document.createElement("hr");c.className="rvSep",t.appendChild(c);continue}if(s.startsWith("- ")){r||(r=document.createElement("ul"),r.className="rvList");let c=document.createElement("li");Tu(c,s.slice(2)),r.appendChild(c);continue}if(r&&(t.appendChild(r),r=null),/^Step \d+/i.test(s)){let c=document.createElement("div");c.className="rvStepHeader",c.textContent=s,t.appendChild(c);continue}if(s.startsWith("[error] ")){let c=document.createElement("div");c.className="rvError",c.textContent=s.slice(8),t.appendChild(c);continue}if(s.startsWith("[next] ")){let c=document.createElement("div");c.className="rvNext",c.textContent=s.slice(7),t.appendChild(c);continue}let i=s.match(/^\*\*(.+?):\*\*\s*(.*)$/);if(i){let c=document.createElement("div");c.className="rvKv";let d=document.createElement("span");d.className="rvKvLabel",d.textContent=i[1];let p=document.createElement("span");p.className="rvKvValue",Tu(p,i[2]),c.appendChild(d),c.appendChild(p),t.appendChild(c);continue}let a=document.createElement("div");a.className="rvLine",Tu(a,s),t.appendChild(a)}return r&&t.appendChild(r),t}function wc(e,t){let n=document.createElement("div");if(n.className="expandableWrap",e.length<=t)return n.appendChild(po(e)),n;let r=e.split(`
|
|
11
|
+
`),o=0,s=0;for(let d=0;d<r.length;d++)if(o+=r[d].length+1,o>=t){s=d+1;break}s===0&&(s=1);let i=r.slice(0,s).join(`
|
|
12
12
|
`),a=r.slice(s).join(`
|
|
13
|
-
`),c=document.createElement("div");if(c.className="expandPreview",c.appendChild(
|
|
13
|
+
`),c=document.createElement("div");if(c.className="expandPreview",c.appendChild(po(i)),n.appendChild(c),a.trim()){let d=document.createElement("div");d.className="expandRest",d.appendChild(po(a)),d.style.display="none",n.appendChild(d);let p=document.createElement("button");p.type="button",p.className="expandToggle",p.textContent="See more",p.addEventListener("click",u=>{u.stopPropagation();let v=d.style.display==="none";d.style.display=v?"block":"none",p.textContent=v?"See less":"See more"}),n.appendChild(p)}return n}function Ec(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function kc(e){if(e==null)return"null";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);if(Array.isArray(e))return`[${e.length} item${e.length===1?"":"s"}]`;if(Ec(e)){let t=Object.keys(e);return t.length?`{ ${t.slice(0,4).join(", ")}${t.length>4?", ...":""} }`:"{}"}try{return String(e)}catch{return"value"}}function u_(e){try{let t=new WeakSet;return JSON.stringify(e,(n,r)=>!r||typeof r!="object"?r:t.has(r)?"[Circular]":(t.add(r),r),2)||"null"}catch{return kc(e)}}function Lm(e){let t=document.createElement("button");return t.type="button",t.className="rvStructuredMore",t.textContent=`Show ${Math.min(Fi,e.total-e.shown)} more (${e.total-e.shown} left)`,t.addEventListener("click",n=>{n.stopPropagation(),e.onLoadMore()}),t}function d_(e){let t=document.createElement("div");t.className="rvRawToggleWrap";let n=document.createElement("button");n.type="button",n.className="rvRawToggle",n.textContent="View raw JSON";let r=document.createElement("pre");return r.className="rvRawJson",r.textContent=u_(e),r.style.display="none",n.addEventListener("click",o=>{o.stopPropagation();let s=r.style.display==="none";r.style.display=s?"block":"none",n.textContent=s?"Hide raw JSON":"View raw JSON"}),t.appendChild(n),t.appendChild(r),t}function f_(e){let t=document.createElement("div");if(t.className="rvStructuredPrimitive",e===null)return t.textContent="null",t.classList.add("isNull"),t;if(typeof e=="string"){let n=wt(e);return n?(n.length>Ps?t.appendChild(wc(n,Ps)):t.appendChild(po(n)),t):(t.textContent='""',t)}return t.textContent=String(e),t}function p_(e){let t=e.slice(0,25);if(!t.length)return;let n=[];for(let r of t){if(!Ec(r))return;for(let o of Object.keys(r))n.includes(o)||n.push(o);if(n.length>8)return}for(let r of t){let o=r;for(let s of n){let i=o[s];if(i!=null&&!(typeof i=="string"||typeof i=="number"||typeof i=="boolean"))return}}return n.length?n:void 0}function m_(e,t,n){let r=document.createElement("div");if(r.className="rvStructuredArray",!e.length){let d=document.createElement("div");return d.className="rvStructuredEmpty",d.textContent="No items",r.appendChild(d),r}let o=p_(e),s=Math.min(Fi,e.length),i=document.createElement("div");i.className=o?"rvStructuredTable":"rvStructuredList",r.appendChild(i);let a=document.createElement("div");a.className="rvStructuredControls",r.appendChild(a);let c=()=>{if(i.innerHTML="",o){let d=document.createElement("table");d.className="rvTable";let p=document.createElement("thead"),u=document.createElement("tr"),v=document.createElement("th");v.textContent="#",u.appendChild(v);for(let g of o){let _=document.createElement("th");_.textContent=g,u.appendChild(_)}p.appendChild(u),d.appendChild(p);let h=document.createElement("tbody");for(let g=0;g<s;g+=1){let _=document.createElement("tr"),A=document.createElement("td");A.textContent=String(g+1),_.appendChild(A);let R=e[g]||{};for(let B of o){let D=document.createElement("td"),F=R[B];F==null?D.textContent="\u2014":D.textContent=kc(F),_.appendChild(D)}h.appendChild(_)}d.appendChild(h),i.appendChild(d)}else for(let d=0;d<s;d+=1){let p=e[d],u=document.createElement("div");u.className="rvStructuredItem";let v=document.createElement("div");v.className="rvStructuredItemLabel",v.textContent=`#${d+1}`,u.appendChild(v);let h=document.createElement("div");h.className="rvStructuredItemBody",h.appendChild(n(p,t+1)),u.appendChild(h),i.appendChild(u)}a.innerHTML="",s<e.length&&a.appendChild(Lm({total:e.length,shown:s,onLoadMore:()=>{s=Math.min(e.length,s+Fi),c()}}))};return c(),r}function h_(e,t,n){let r=document.createElement("div");r.className="rvStructuredObject";let o=Object.entries(e);if(!o.length){let d=document.createElement("div");return d.className="rvStructuredEmpty",d.textContent="No fields",r.appendChild(d),r}let s=Math.min(Fi,o.length),i=document.createElement("div");i.className="rvStructuredObjectRows",r.appendChild(i);let a=document.createElement("div");a.className="rvStructuredControls",r.appendChild(a);let c=()=>{i.innerHTML="";for(let d=0;d<s;d+=1){let[p,u]=o[d],v=document.createElement("div");v.className="rvStructuredRow";let h=document.createElement("div");h.className="rvStructuredKey",h.textContent=p;let g=document.createElement("div");g.className="rvStructuredValue",g.appendChild(n(u,t+1)),v.appendChild(h),v.appendChild(g),i.appendChild(v)}a.innerHTML="",s<o.length&&a.appendChild(Lm({total:o.length,shown:s,onLoadMore:()=>{s=Math.min(o.length,s+Fi),c()}}))};return c(),r}function _u(e,t=0){if(t>=UT){let r=document.createElement("div");return r.className="rvStructuredCapped",r.textContent=kc(e),r}if(e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean")return f_(e);if(Array.isArray(e))return m_(e,t,_u);if(Ec(e))return h_(e,t,_u);let n=document.createElement("div");return n.className="rvStructuredPrimitive",n.textContent=kc(e),n}function Dm(e){if(e.type==="text"){let i=wt(e.text);return i?wc(i,Ps):void 0}let t=document.createElement("section");t.className="rvStructuredCard";let n=document.createElement("div");n.className="rvStructuredHeader";let r=document.createElement("span");r.className="rvStructuredLabel",r.textContent=wt(e.label||(e.type==="tool_output"?e.toolName?`${e.toolName} output`:"Tool output":"JSON output")),n.appendChild(r);let o=document.createElement("span");o.className="rvStructuredType",Array.isArray(e.data)?o.textContent=`array \xB7 ${e.data.length}`:Ec(e.data)?o.textContent=`object \xB7 ${Object.keys(e.data).length}`:o.textContent=typeof e.data,n.appendChild(o),t.appendChild(n);let s=document.createElement("div");return s.className="rvStructuredBody",s.appendChild(_u(e.data)),t.appendChild(s),t.appendChild(d_(e.data)),t}function g_(e,t){let n=document.createDocumentFragment(),r=Array.isArray(t)?t:[],o=!1;for(let a of r){let c=Dm(a);c&&(o=!0,n.appendChild(c))}if(!o){let a=wt(e);return a&&(a.length>Ps?n.appendChild(wc(a,Ps)):n.appendChild(po(a))),n}let s=wt(e),i=r.some(a=>a.type==="text"&&wt(a.text)===s);if(s&&!i){let a=document.createElement("div");a.className="rvLine",a.appendChild(po(s)),n.insertBefore(a,n.firstChild)}return n}function Om(e){let t=i_(e.agent?.name),n=a_(t),r=c_(t),o=e.visitorName,s=e.panel?.resizable!==!1,i=r_(),a=document.createElement("div");a.id="rover-widget-root",(document.body||document.documentElement).appendChild(a);let c=a.attachShadow({mode:"closed"}),d=document.createElement("style");d.textContent=`
|
|
14
14
|
@font-face {
|
|
15
15
|
font-family: 'Manrope';
|
|
16
16
|
font-style: normal;
|
|
@@ -18,7 +18,7 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
18
18
|
font-display: swap;
|
|
19
19
|
src: url('https://rover.rtrvr.ai/rover/fonts/manrope-latin.woff2') format('woff2');
|
|
20
20
|
}
|
|
21
|
-
`,document.head.appendChild(
|
|
21
|
+
`,document.head.appendChild(d);let p=document.createElement("style");p.textContent=`
|
|
22
22
|
/* \u2500\u2500 Step 2: Self-hosted font \u2500\u2500 */
|
|
23
23
|
@font-face {
|
|
24
24
|
font-family: 'Manrope';
|
|
@@ -110,8 +110,8 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
110
110
|
/* \u2500\u2500 Step 4: Launcher Enhancement \u2500\u2500 */
|
|
111
111
|
.launcher {
|
|
112
112
|
position: fixed;
|
|
113
|
-
right: 20px;
|
|
114
|
-
bottom: 20px;
|
|
113
|
+
right: calc(20px + env(safe-area-inset-right));
|
|
114
|
+
bottom: calc(20px + env(safe-area-inset-bottom));
|
|
115
115
|
width: 58px;
|
|
116
116
|
height: 58px;
|
|
117
117
|
border-radius: 18px;
|
|
@@ -188,10 +188,10 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
188
188
|
position: fixed;
|
|
189
189
|
right: 20px;
|
|
190
190
|
bottom: 90px;
|
|
191
|
-
width:
|
|
192
|
-
height:
|
|
193
|
-
min-width:
|
|
194
|
-
min-height:
|
|
191
|
+
width: 460px;
|
|
192
|
+
height: 680px;
|
|
193
|
+
min-width: 360px;
|
|
194
|
+
min-height: 520px;
|
|
195
195
|
max-width: min(720px, calc(100vw - 16px));
|
|
196
196
|
max-height: calc(100vh - 16px);
|
|
197
197
|
background:
|
|
@@ -210,6 +210,11 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
210
210
|
transform-origin: bottom right;
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
+
.panel[data-layout="tablet"],
|
|
214
|
+
.panel[data-layout="phone"] {
|
|
215
|
+
transform-origin: bottom center;
|
|
216
|
+
}
|
|
217
|
+
|
|
213
218
|
.panel.open {
|
|
214
219
|
display: flex;
|
|
215
220
|
animation: panelOpen 300ms var(--rv-ease-spring) forwards;
|
|
@@ -303,6 +308,25 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
303
308
|
margin-left: auto;
|
|
304
309
|
}
|
|
305
310
|
|
|
311
|
+
.sizeBtn,
|
|
312
|
+
.overflowBtn,
|
|
313
|
+
.closeBtn {
|
|
314
|
+
width: 32px;
|
|
315
|
+
height: 32px;
|
|
316
|
+
border-radius: var(--rv-radius-sm);
|
|
317
|
+
border: 1px solid var(--rv-border);
|
|
318
|
+
background: var(--rv-surface);
|
|
319
|
+
cursor: pointer;
|
|
320
|
+
display: grid;
|
|
321
|
+
place-items: center;
|
|
322
|
+
color: var(--rv-text-secondary);
|
|
323
|
+
font-size: 16px;
|
|
324
|
+
line-height: 1;
|
|
325
|
+
transition: background 150ms ease, border-color 150ms ease, color 150ms ease;
|
|
326
|
+
flex: 0 0 auto;
|
|
327
|
+
padding: 0;
|
|
328
|
+
}
|
|
329
|
+
|
|
306
330
|
.modeLabel {
|
|
307
331
|
font-size: 10px;
|
|
308
332
|
font-weight: 700;
|
|
@@ -356,23 +380,19 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
356
380
|
background: var(--rv-error);
|
|
357
381
|
}
|
|
358
382
|
|
|
359
|
-
.
|
|
360
|
-
|
|
361
|
-
width: 32px;
|
|
362
|
-
height: 32px;
|
|
363
|
-
border-radius: var(--rv-radius-sm);
|
|
364
|
-
border: 1px solid var(--rv-border);
|
|
365
|
-
background: var(--rv-surface);
|
|
366
|
-
cursor: pointer;
|
|
367
|
-
display: grid;
|
|
368
|
-
place-items: center;
|
|
369
|
-
color: var(--rv-text-secondary);
|
|
370
|
-
font-size: 16px;
|
|
371
|
-
line-height: 1;
|
|
372
|
-
transition: background 150ms ease, border-color 150ms ease, color 150ms ease;
|
|
373
|
-
flex: 0 0 auto;
|
|
383
|
+
.sizeBtn {
|
|
384
|
+
font-size: 14px;
|
|
374
385
|
}
|
|
375
386
|
|
|
387
|
+
.sizeBtn svg {
|
|
388
|
+
width: 16px;
|
|
389
|
+
height: 16px;
|
|
390
|
+
stroke: currentColor;
|
|
391
|
+
fill: none;
|
|
392
|
+
stroke-width: 2;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
.sizeBtn:hover,
|
|
376
396
|
.overflowBtn:hover,
|
|
377
397
|
.closeBtn:hover {
|
|
378
398
|
background: var(--rv-bg-alt);
|
|
@@ -380,6 +400,10 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
380
400
|
color: var(--rv-text);
|
|
381
401
|
}
|
|
382
402
|
|
|
403
|
+
.sizeBtn.hidden {
|
|
404
|
+
display: none;
|
|
405
|
+
}
|
|
406
|
+
|
|
383
407
|
.closeBtn {
|
|
384
408
|
font-size: 18px;
|
|
385
409
|
}
|
|
@@ -556,6 +580,10 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
556
580
|
}
|
|
557
581
|
|
|
558
582
|
.entry.message { max-width: 90%; }
|
|
583
|
+
.panel[data-layout="phone"] .entry.message,
|
|
584
|
+
.panel[data-layout="tablet"] .entry.message {
|
|
585
|
+
max-width: 100%;
|
|
586
|
+
}
|
|
559
587
|
.entry.message.user { align-self: flex-end; }
|
|
560
588
|
.entry.message.assistant,
|
|
561
589
|
.entry.message.system { align-self: flex-start; }
|
|
@@ -1175,8 +1203,8 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1175
1203
|
/* \u2500\u2500 Step 10: Composer Enhancement \u2500\u2500 */
|
|
1176
1204
|
.composer {
|
|
1177
1205
|
display: flex;
|
|
1178
|
-
|
|
1179
|
-
gap:
|
|
1206
|
+
flex-direction: column;
|
|
1207
|
+
gap: 6px;
|
|
1180
1208
|
border-top: 1px solid var(--rv-border);
|
|
1181
1209
|
padding: 12px 14px;
|
|
1182
1210
|
background: rgba(255, 255, 255, 0.85);
|
|
@@ -1184,6 +1212,12 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1184
1212
|
-webkit-backdrop-filter: blur(12px);
|
|
1185
1213
|
}
|
|
1186
1214
|
|
|
1215
|
+
.composerRow {
|
|
1216
|
+
display: flex;
|
|
1217
|
+
align-items: flex-end;
|
|
1218
|
+
gap: 8px;
|
|
1219
|
+
}
|
|
1220
|
+
|
|
1187
1221
|
.composer textarea {
|
|
1188
1222
|
flex: 1;
|
|
1189
1223
|
resize: none;
|
|
@@ -1216,6 +1250,65 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1216
1250
|
cursor: not-allowed;
|
|
1217
1251
|
}
|
|
1218
1252
|
|
|
1253
|
+
.composerActions {
|
|
1254
|
+
display: flex;
|
|
1255
|
+
align-items: center;
|
|
1256
|
+
gap: 8px;
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1259
|
+
.voiceBtn {
|
|
1260
|
+
border: 1.5px solid var(--rv-border-strong);
|
|
1261
|
+
background: rgba(255, 255, 255, 0.9);
|
|
1262
|
+
color: var(--rv-accent);
|
|
1263
|
+
border-radius: var(--rv-radius-md);
|
|
1264
|
+
height: 44px;
|
|
1265
|
+
width: 44px;
|
|
1266
|
+
min-width: 44px;
|
|
1267
|
+
padding: 0;
|
|
1268
|
+
cursor: pointer;
|
|
1269
|
+
display: none;
|
|
1270
|
+
place-items: center;
|
|
1271
|
+
transition: transform 200ms var(--rv-ease-spring), box-shadow 200ms ease, border-color 150ms ease, background 150ms ease;
|
|
1272
|
+
box-shadow: 0 3px 10px rgba(19, 30, 43, 0.08);
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
.voiceBtn.visible {
|
|
1276
|
+
display: grid;
|
|
1277
|
+
}
|
|
1278
|
+
|
|
1279
|
+
.voiceBtn:hover {
|
|
1280
|
+
transform: translateY(-1px);
|
|
1281
|
+
box-shadow: 0 5px 14px rgba(19, 30, 43, 0.12);
|
|
1282
|
+
border-color: var(--rv-accent-border);
|
|
1283
|
+
}
|
|
1284
|
+
|
|
1285
|
+
.voiceBtn:active {
|
|
1286
|
+
transform: scale(0.96);
|
|
1287
|
+
}
|
|
1288
|
+
|
|
1289
|
+
.voiceBtn.active {
|
|
1290
|
+
background: var(--rv-accent-soft);
|
|
1291
|
+
border-color: var(--rv-accent-border);
|
|
1292
|
+
box-shadow: 0 0 0 3px var(--rv-accent-glow);
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1295
|
+
.voiceBtn:disabled {
|
|
1296
|
+
opacity: 0.5;
|
|
1297
|
+
cursor: not-allowed;
|
|
1298
|
+
transform: none;
|
|
1299
|
+
box-shadow: none;
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1302
|
+
.voiceBtn svg {
|
|
1303
|
+
width: 18px;
|
|
1304
|
+
height: 18px;
|
|
1305
|
+
fill: none;
|
|
1306
|
+
stroke: currentColor;
|
|
1307
|
+
stroke-width: 2;
|
|
1308
|
+
stroke-linecap: round;
|
|
1309
|
+
stroke-linejoin: round;
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1219
1312
|
.sendBtn {
|
|
1220
1313
|
border: none;
|
|
1221
1314
|
background: linear-gradient(145deg, var(--rv-accent), #FF7A39);
|
|
@@ -1251,23 +1344,79 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1251
1344
|
stroke-linejoin: round;
|
|
1252
1345
|
}
|
|
1253
1346
|
|
|
1347
|
+
.composerStatus {
|
|
1348
|
+
display: none;
|
|
1349
|
+
min-height: 16px;
|
|
1350
|
+
font-size: 11.5px;
|
|
1351
|
+
line-height: 1.35;
|
|
1352
|
+
color: var(--rv-text-secondary);
|
|
1353
|
+
padding: 0 2px;
|
|
1354
|
+
}
|
|
1355
|
+
|
|
1356
|
+
.composerStatus.visible {
|
|
1357
|
+
display: block;
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1360
|
+
.composerStatus.error {
|
|
1361
|
+
color: #c2410c;
|
|
1362
|
+
}
|
|
1363
|
+
|
|
1364
|
+
.panelGrabber {
|
|
1365
|
+
display: none;
|
|
1366
|
+
align-items: center;
|
|
1367
|
+
justify-content: center;
|
|
1368
|
+
height: 26px;
|
|
1369
|
+
border: none;
|
|
1370
|
+
padding: 0;
|
|
1371
|
+
margin: 0;
|
|
1372
|
+
background: transparent;
|
|
1373
|
+
cursor: ns-resize;
|
|
1374
|
+
touch-action: none;
|
|
1375
|
+
}
|
|
1376
|
+
|
|
1377
|
+
.panel[data-resizable="true"][data-layout="phone"] .panelGrabber,
|
|
1378
|
+
.panel[data-resizable="true"][data-layout="tablet"] .panelGrabber {
|
|
1379
|
+
display: flex;
|
|
1380
|
+
}
|
|
1381
|
+
|
|
1382
|
+
.panelGrabberHandle {
|
|
1383
|
+
width: 56px;
|
|
1384
|
+
height: 5px;
|
|
1385
|
+
border-radius: 999px;
|
|
1386
|
+
background: rgba(0, 0, 0, 0.14);
|
|
1387
|
+
transition: background 150ms ease, transform 150ms ease;
|
|
1388
|
+
pointer-events: none;
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
.panelGrabber:hover .panelGrabberHandle,
|
|
1392
|
+
.panelGrabber:focus-visible .panelGrabberHandle {
|
|
1393
|
+
background: rgba(255, 76, 0, 0.38);
|
|
1394
|
+
transform: scaleX(1.04);
|
|
1395
|
+
}
|
|
1396
|
+
|
|
1397
|
+
.panelGrabber:focus-visible {
|
|
1398
|
+
outline: none;
|
|
1399
|
+
}
|
|
1400
|
+
|
|
1254
1401
|
/* \u2500\u2500 Step 13: Resize Handle \u2500\u2500 */
|
|
1255
1402
|
.resizeHandle {
|
|
1256
1403
|
position: absolute;
|
|
1257
1404
|
left: 8px;
|
|
1258
1405
|
bottom: 8px;
|
|
1259
|
-
width:
|
|
1260
|
-
height:
|
|
1261
|
-
border-left:
|
|
1262
|
-
border-bottom:
|
|
1406
|
+
width: 20px;
|
|
1407
|
+
height: 20px;
|
|
1408
|
+
border-left: 2.5px solid var(--rv-border-strong);
|
|
1409
|
+
border-bottom: 2.5px solid var(--rv-border-strong);
|
|
1263
1410
|
border-radius: 2px;
|
|
1264
1411
|
cursor: nwse-resize;
|
|
1265
|
-
opacity: 0;
|
|
1266
|
-
transition: opacity 200ms ease;
|
|
1412
|
+
opacity: 0.72;
|
|
1413
|
+
transition: opacity 200ms ease, border-color 200ms ease;
|
|
1414
|
+
display: none;
|
|
1415
|
+
touch-action: none;
|
|
1267
1416
|
}
|
|
1268
1417
|
|
|
1269
|
-
.panel
|
|
1270
|
-
|
|
1418
|
+
.panel[data-resizable="true"][data-layout="desktop"] .resizeHandle {
|
|
1419
|
+
display: block;
|
|
1271
1420
|
}
|
|
1272
1421
|
|
|
1273
1422
|
.resizeHandle:hover {
|
|
@@ -1590,20 +1739,16 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1590
1739
|
/* \u2500\u2500 Step 14: Mobile Responsive \u2500\u2500 */
|
|
1591
1740
|
@media (max-width: 640px) {
|
|
1592
1741
|
.launcher {
|
|
1593
|
-
right: 14px;
|
|
1594
|
-
bottom: 14px;
|
|
1742
|
+
right: calc(14px + env(safe-area-inset-right));
|
|
1743
|
+
bottom: calc(14px + env(safe-area-inset-bottom));
|
|
1595
1744
|
width: 52px;
|
|
1596
1745
|
height: 52px;
|
|
1597
1746
|
border-radius: var(--rv-radius-lg);
|
|
1598
1747
|
}
|
|
1599
1748
|
|
|
1600
1749
|
.panel {
|
|
1601
|
-
right: 8px;
|
|
1602
|
-
left: 8px;
|
|
1603
|
-
bottom: 74px;
|
|
1604
|
-
width: auto;
|
|
1605
1750
|
min-width: 0;
|
|
1606
|
-
height:
|
|
1751
|
+
min-height: 0;
|
|
1607
1752
|
border-radius: var(--rv-radius-xl);
|
|
1608
1753
|
}
|
|
1609
1754
|
|
|
@@ -1626,6 +1771,7 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1626
1771
|
font-size: 11px;
|
|
1627
1772
|
}
|
|
1628
1773
|
|
|
1774
|
+
.sizeBtn,
|
|
1629
1775
|
.overflowBtn,
|
|
1630
1776
|
.closeBtn {
|
|
1631
1777
|
width: 36px;
|
|
@@ -1658,10 +1804,6 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1658
1804
|
min-width: 40px;
|
|
1659
1805
|
}
|
|
1660
1806
|
|
|
1661
|
-
.resizeHandle {
|
|
1662
|
-
display: none;
|
|
1663
|
-
}
|
|
1664
|
-
|
|
1665
1807
|
.feed {
|
|
1666
1808
|
padding: 12px 12px 8px;
|
|
1667
1809
|
gap: 8px;
|
|
@@ -1696,8 +1838,8 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1696
1838
|
}
|
|
1697
1839
|
|
|
1698
1840
|
.greetingBubble {
|
|
1699
|
-
right: 14px;
|
|
1700
|
-
bottom: 76px;
|
|
1841
|
+
right: calc(14px + env(safe-area-inset-right));
|
|
1842
|
+
bottom: calc(76px + env(safe-area-inset-bottom));
|
|
1701
1843
|
max-width: 190px;
|
|
1702
1844
|
padding: 8px 22px 8px 10px;
|
|
1703
1845
|
}
|
|
@@ -1942,15 +2084,15 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1942
2084
|
border-color: var(--rv-border-strong);
|
|
1943
2085
|
color: var(--rv-text);
|
|
1944
2086
|
}
|
|
1945
|
-
`;let
|
|
2087
|
+
`;let u=document.createElement("div");u.className="rover",u.dataset.mood="idle";let v=document.createElement("button");v.className="launcher",v.setAttribute("aria-label",`Open ${t} assistant`);let h=e.mascot?.disabled===!0,g=null;if(!h){g=document.createElement("video"),g.autoplay=!0,g.muted=!0,g.loop=!0,g.playsInline=!0,g.preload="metadata";let T=document.createElement("source");T.src=e.mascot?.mp4Url||DT,T.type="video/mp4";let O=document.createElement("source");O.src=e.mascot?.webmUrl||OT,O.type="video/webm",g.appendChild(T),g.appendChild(O),v.appendChild(g)}let _=document.createElement("span");_.className="launcherFallback",_.textContent=r;let A=document.createElement("div");A.className="launcherShine",v.appendChild(_),v.appendChild(A);let R=document.createElement("div");R.className="greetingBubble";let B=document.createElement("span");B.className="greetingText";let D=document.createElement("button");D.type="button",D.className="greetingClose",D.textContent="\xD7",D.setAttribute("aria-label","Dismiss");let F=document.createElement("div");F.className="greetingDots";for(let T=0;T<3;T++){let O=document.createElement("span");O.className="greetingDot",F.appendChild(O)}R.appendChild(F),R.appendChild(B),R.appendChild(D);let C=document.createElement("div");C.className="panel";let Q=document.createElement("div");Q.className="header";let ae=document.createElement("div");ae.className="avatar";let re=null;!h&&g&&(re=g.cloneNode(!0),ae.appendChild(re));let pe=document.createElement("span");pe.className="avatarFallback",pe.textContent=n,ae.appendChild(pe);let xe=document.createElement("div");xe.className="meta";let ge=document.createElement("div");ge.className="title",ge.textContent=t;let Se=document.createElement("div");Se.className="status";let We=document.createElement("span");We.className="statusDot";let Lt=document.createElement("span");Lt.textContent="ready";let Ne=document.createElement("span");Ne.className="modeLabel controller",Ne.textContent="active",Se.appendChild(We),Se.appendChild(Lt),Se.appendChild(Ne),xe.appendChild(ge),xe.appendChild(Se);let Dt=document.createElement("div");Dt.className="headerActions";let rt=document.createElement("button");rt.type="button",rt.className="sizeBtn",rt.setAttribute("aria-label","Resize Rover panel"),rt.innerHTML='<svg viewBox="0 0 24 24"><path d="M8 4H4v4"></path><path d="M4 4l6 6"></path><path d="M16 20h4v-4"></path><path d="M20 20l-6-6"></path><path d="M20 8V4h-4"></path><path d="M20 4l-6 6"></path><path d="M8 20H4v-4"></path><path d="M4 20l6-6"></path></svg>';let et=document.createElement("button");et.type="button",et.className="overflowBtn",et.setAttribute("aria-label","More options"),et.innerHTML="⋯";let Xt=document.createElement("button");Xt.type="button",Xt.className="closeBtn",Xt.setAttribute("aria-label","Close Rover panel"),Xt.textContent="\xD7";let qt=e.muted??!0;try{let T=localStorage.getItem("rover:muted");T!==null&&(qt=T!=="false")}catch{}function Yn(){g&&(g.muted=qt),re&&(re.muted=qt)}Yn();let sn=document.createElement("button");sn.type="button",sn.className="cancelPill",sn.setAttribute("aria-label","Cancel task");let En=document.createElement("span");En.className="cancelIcon",sn.appendChild(En),sn.appendChild(document.createTextNode(" Cancel"));let dt=document.createElement("div");dt.className="executionBar";let Yt=document.createElement("button");Yt.type="button",Yt.className="conversationListBtn",Yt.setAttribute("aria-label","Conversations"),Yt.innerHTML='<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>',s||rt.classList.add("hidden"),Dt.appendChild(rt),Dt.appendChild(Yt),Dt.appendChild(et),Dt.appendChild(sn),Dt.appendChild(Xt);let Wt=document.createElement("div");Wt.className="overflowMenu";let Mr=document.createElement("button");Mr.type="button",Mr.className="menuItem",Mr.textContent="New task";let gr=document.createElement("button");gr.type="button",gr.className="menuItem danger",gr.textContent="End task";let mi=document.createElement("div");mi.className="menuDivider";let Hn=document.createElement("button");Hn.type="button",Hn.className="menuItem",Hn.textContent=qt?"Unmute sounds":"Mute sounds",Hn.addEventListener("click",()=>{ps(),qt=!qt;try{localStorage.setItem("rover:muted",String(qt))}catch{}Yn(),Hn.textContent=qt?"Unmute sounds":"Mute sounds"});let In=document.createElement("button");In.type="button",In.className="menuItem",In.textContent="Take control",In.style.display="none",Wt.appendChild(Mr),Wt.appendChild(gr),Wt.appendChild(mi),Wt.appendChild(Hn),Wt.appendChild(In),e.showTaskControls===!1&&(Mr.style.display="none",gr.style.display="none"),Q.appendChild(ae),Q.appendChild(xe),Q.appendChild(Dt),Q.appendChild(Wt),Q.appendChild(dt);let Nr=document.createElement("div");Nr.style.cssText="position:relative;flex:1;min-height:0;display:flex;flex-direction:column;";let He=document.createElement("div");He.className="feed";let mn=document.createElement("div");mn.className="traceToggleBar";let Lr=document.createElement("span");Lr.className="traceToggleLabel",Lr.textContent="Execution Log";let qn=document.createElement("span");qn.className="traceToggleCount",qn.textContent="0 steps";let hn=document.createElement("button");hn.type="button",hn.className="traceToggleBtn",hn.textContent="Show all",mn.appendChild(Lr),mn.appendChild(qn),mn.appendChild(hn),He.appendChild(mn);let st=document.createElement("div");st.className="typingIndicator";for(let T=0;T<3;T++){let O=document.createElement("span");O.className="typingDot",st.appendChild(O)}He.appendChild(st);let an=document.createElement("button");an.type="button",an.className="scrollBtn",an.setAttribute("aria-label","Scroll to bottom"),an.innerHTML='<svg viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"></polyline></svg>',Nr.appendChild(He),Nr.appendChild(an);let xn=document.createElement("div");xn.className="taskSuggestion",xn.innerHTML=`
|
|
1946
2088
|
<div class="taskSuggestionText"></div>
|
|
1947
2089
|
<div class="taskSuggestionActions">
|
|
1948
2090
|
<button type="button" class="taskSuggestionBtn primary">Start new</button>
|
|
1949
2091
|
<button type="button" class="taskSuggestionBtn secondary">Continue</button>
|
|
1950
2092
|
</div>
|
|
1951
|
-
`;let rt=document.createElement("div");rt.className="shortcutsEmptyState";let Sr=document.createElement("div");Sr.className="shortcutsHeading",Sr.textContent=o?`Hey ${o}! What can I help with?`:`What can ${t} help you with?`;let cr=document.createElement("div");cr.className="shortcutsGrid",rt.appendChild(Sr),rt.appendChild(cr),Je.appendChild(rt);let zn=document.createElement("div");zn.className="shortcutsBar";let Ln=document.createElement("div");Ln.className="questionPrompt";let go=document.createElement("div");go.className="questionPromptTitle",go.textContent="Need a bit more info";let jn=document.createElement("form");jn.className="questionPromptForm";let lr=document.createElement("div");lr.className="questionPromptList",jn.appendChild(lr);let ur=document.createElement("div");ur.className="questionPromptActions";let kn=document.createElement("button");kn.type="button",kn.className="questionPromptCancel",kn.textContent="Cancel",ur.appendChild(kn);let _n=document.createElement("button");_n.type="submit",_n.className="questionPromptSubmit",_n.textContent="Continue",ur.appendChild(_n),jn.appendChild(ur),Ln.appendChild(go),Ln.appendChild(jn);let Ee=document.createElement("form");Ee.className="composer";let Rr=document.createElement("textarea");Rr.rows=1,Rr.placeholder=`Ask ${t} to act on this website...`,Ee.appendChild(Rr);let Dn=document.createElement("button");Dn.type="submit",Dn.className="sendBtn",Dn.innerHTML='<svg viewBox="0 0 24 24"><line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon></svg>',Ee.appendChild(Dn);let Ot=document.createElement("div");Ot.className="resizeHandle",Ot.setAttribute("aria-hidden","true");let en=document.createElement("div");en.className="roverConversationPill",en.setAttribute("role","button"),en.setAttribute("tabindex","0");let ot=document.createElement("span");ot.className="roverConversationPillLabel",ot.textContent="Current task";let Go=document.createElement("span");Go.className="roverConversationPillArrow",Go.textContent="\u25BE",en.appendChild(ot),en.appendChild(Go),en.addEventListener("click",()=>{Pn.classList.toggle("open")});let qi=document.createElement("div");qi.className="roverTabBar";let On=document.createElement("div");On.className="pausedTaskBanner";let Ar="",Pn=document.createElement("div");Pn.className="conversationDrawer";let tn=document.createElement("div");tn.className="conversationDrawerHeader";let Gn=document.createElement("span");Gn.className="conversationDrawerTitle",Gn.textContent="Conversations";let En=document.createElement("button");En.type="button",En.className="conversationDrawerClose",En.textContent="\xD7",tn.appendChild(Gn),tn.appendChild(En);let Gr=document.createElement("div");Gr.className="conversationList";let fn=document.createElement("button");fn.type="button",fn.className="conversationNewBtn",fn.textContent="New conversation",Pn.appendChild(tn),Pn.appendChild(Gr),Pn.appendChild(fn),S.appendChild(F),S.appendChild(en),S.appendChild(On),S.appendChild(ho),S.appendChild(dn),S.appendChild(zn),S.appendChild(Ln),S.appendChild(Ee),S.appendChild(Ot),S.appendChild(Pn),l.appendChild(d),l.appendChild(T),l.appendChild(S),i.appendChild(c),i.appendChild(l);let Ze=Rr,bo=dn.querySelector(".taskSuggestionText"),f=dn.querySelector(".taskSuggestionBtn.primary"),w=dn.querySelector(".taskSuggestionBtn.secondary"),E=new Set,_=new Map,y=[],b="controller",k=!1,x=!1,B=!1,P=e.shortcuts?.slice(0,12)||[],H=null,W=!1,z=null,te=!1,se=!1,we=0,le=!1,ie=null,ue=null,Me=!1,je=null,ke=null,ve={};function Pe(){te=!te,bt.classList.toggle("visible",te)}function Ne(){te=!1,bt.classList.remove("visible")}let We="";function Ke(L){let V=L.filter(j=>j&&j.enabled!==!1).slice(0,12),Z=V.map(j=>`${j.id||j.label}|${j.label}|${j.description||""}|${j.icon||""}`).join(";;");if(Z!==We){We=Z,P=V,cr.innerHTML="";for(let j of P){let J=document.createElement("button");if(J.type="button",J.className="shortcutCard",j.icon){let he=document.createElement("span");he.className="shortcutCardIcon",he.textContent=j.icon,J.appendChild(he)}let De=document.createElement("span");if(De.className="shortcutCardLabel",De.textContent=j.label,J.appendChild(De),j.description){let he=document.createElement("span");he.className="shortcutCardDesc",he.textContent=j.description,J.appendChild(he)}J.addEventListener("click",()=>e.onShortcutClick?.(j)),cr.appendChild(J)}zn.innerHTML="";for(let j of P){let J=document.createElement("button");if(J.type="button",J.className="shortcutChip",j.icon){let he=document.createElement("span");he.className="shortcutChipIcon",he.textContent=j.icon,J.appendChild(he)}let De=document.createTextNode(j.label);J.appendChild(De),J.addEventListener("click",()=>e.onShortcutClick?.(j)),zn.appendChild(J)}ae()}}function ae(){let L=P.length>0,V=!!je?.questions?.length,Z=L&&!B&&!x,j=L&&B&&!x&&!V;rt.classList.toggle("visible",Z),zn.classList.toggle("visible",j)}function ee(L){let V=Ft(L);if(V){if(D.textContent=V,T.classList.contains("visible")){T.classList.add("textVisible");return}le||S.classList.contains("open")||(le=!0,T.classList.remove("dismissing","textVisible"),T.classList.add("visible"),ue&&(clearTimeout(ue),ue=null),ue=setTimeout(()=>{ue=null,T.classList.add("textVisible")},800))}}function de(){if(ue&&(clearTimeout(ue),ue=null),!T.classList.contains("visible"))return;T.classList.add("dismissing");let L=()=>{T.classList.remove("visible","dismissing"),T.removeEventListener("animationend",L)};T.addEventListener("animationend",L),ie&&(clearTimeout(ie),ie=null)}function Ue(L){o=L||void 0,o?Sr.textContent=`Hey ${o}! What can I help with?`:Sr.textContent=`What can ${t} help you with?`}function zt(L){if(!L||!Array.isArray(L.questions))return[];let V=[],Z=new Set;for(let j=0;j<L.questions.length;j+=1){let J=L.questions[j];if(!J||typeof J!="object")continue;let De=String(J.key||J.id||"").trim()||`clarification_${j+1}`,he=String(J.query||J.question||"").trim();if(!he)continue;let Ge=typeof J.required=="boolean",vt=typeof J.optional=="boolean",nt=Ge?!!J.required:vt?!J.optional:!0;Z.has(De)||(Z.add(De),V.push({key:De,query:he,...typeof J.id=="string"&&J.id.trim()?{id:J.id.trim()}:{},...typeof J.question=="string"&&J.question.trim()?{question:J.question.trim()}:{},...Array.isArray(J.choices)?{choices:J.choices}:{},required:nt}))}return V.slice(0,6)}function Pt(L){return L.map(V=>{let Z=Array.isArray(V.choices)?V.choices.map(J=>Ft(String(J||""))).filter(Boolean).join("|"):"",j=V.required===!1?"optional":"required";return`${V.key}::${Ft(V.query)}::${Z}::${j}`}).join("||")}function Bs(L){let V=Ft(L.query||L.question||"");if(!V)return`Answer for ${L.key}`;let Z=V.replace(/\s+/g," ").replace(/[?.!:\s]+$/,"").slice(0,72);return Z?`Answer: ${Z}`:`Answer for ${L.key}`}function Xo(L){for(let V of Array.from(jn.querySelectorAll(".questionPromptInput"))){let Z=V;if(Z.dataset.key===L)return Z}return null}function Us(L){let V=zt(L),Z=document.activeElement,j=Z instanceof HTMLInputElement&&Z.classList.contains("questionPromptInput")&&Ln.contains(Z)?Z:null,J=j?.dataset.key,De=j?.selectionStart??null,he=j?.selectionEnd??null;if(!V.length){je=null,ke=null,ve={},lr.innerHTML="",Ln.classList.remove("visible"),ae();return}let Ge=Pt(V),vt=Ge!==ke||!je;if(je={questions:V},vt){let nt=ve;ve={},lr.innerHTML="";for(let lt of je.questions){let Ut=document.createElement("label");Ut.className="questionPromptItem";let pn=document.createElement("span");pn.className="questionPromptLabel",pn.textContent=lt.required===!1?`${lt.query} (optional)`:lt.query,Ut.appendChild(pn);let mn=document.createElement("input");mn.type="text",mn.className="questionPromptInput",mn.dataset.key=lt.key,mn.placeholder=Bs(lt),mn.required=lt.required!==!1;let Xn=String(nt[lt.key]||"");ve[lt.key]=Xn,mn.value=Xn,mn.addEventListener("input",()=>{ve[lt.key]=mn.value,mn.classList.remove("invalid")}),Ut.appendChild(mn),lr.appendChild(Ut)}ke=Ge}if(Ln.classList.add("visible"),I(),ae(),J){let nt=Xo(J);if(nt){if(nt.focus(),De!==null||he!==null){let lt=De??nt.value.length,Ut=he??lt;try{nt.setSelectionRange(lt,Ut)}catch{}}return}}if(vt){let lt=je.questions.find(mn=>!Ft(ve[mn.key]||""))?.key||je.questions[0]?.key;if(!lt)return;let Ut=Xo(lt),pn=!Z||Z===document.body||!S.contains(Z);Ut&&pn&&Ut.focus()}}function Xr(){x&&Me?(Nn.classList.add("visible"),Je.appendChild(Nn),h()):Nn.classList.remove("visible")}function nn(L,V=0){l.dataset.mood=L,z!=null&&(window.clearTimeout(z),z=null),V>0&&L!=="idle"&&(z=window.setTimeout(()=>{l.dataset.mood="idle",Xr(),z=null},V))}function Oc(){return Je.scrollHeight-Je.scrollTop-Je.clientHeight<60}function h(){se?Dt.classList.add("visible"):(requestAnimationFrame(()=>{Je.scrollTo({top:Je.scrollHeight,behavior:"smooth"}),we=Date.now()}),Dt.classList.remove("visible"))}Je.addEventListener("scroll",()=>{Date.now()-we<200||(Oc()?(se=!1,Dt.classList.remove("visible")):(se=!0,Dt.classList.add("visible")))},{passive:!0}),Dt.addEventListener("click",()=>{se=!1,we=Date.now(),Je.scrollTo({top:Je.scrollHeight,behavior:"smooth"}),Dt.classList.remove("visible")});function I(){let L=b==="observer"&&!k;Ze.disabled=L,kn.disabled=L,_n.disabled=L;for(let V of Array.from(jn.querySelectorAll(".questionPromptInput")))V.disabled=L}function M(L){if(W=L,l.dataset.showDetails=L?"true":"false",un.textContent=W?"Collapse":`Show all (${y.length})`,W)for(let V of y){V.style.display="";let Z=V.dataset.status,j=Z==="success"||Z==="error"||Z==="info";V.classList.toggle("compact",!1)}else for(let V=0;V<y.length;V++){let Z=y[V],j=V>=y.length-2;Z.style.display=j?"":"none";let J=Z.dataset.status,De=J==="success"||J==="error"||J==="info";Z.classList.toggle("compact",De)}}function O(){l.style.display="",S.classList.remove("closing"),S.classList.add("open"),de(),nn("idle"),e.onOpen?.(),Ze.disabled||Ze.focus()}function q(){if(Ne(),!S.classList.contains("open")){e.onClose?.();return}S.classList.remove("open"),S.classList.add("closing"),nn("idle");let L=()=>{S.classList.remove("closing"),S.removeEventListener("animationend",L)};S.addEventListener("animationend",L),e.onClose?.()}function K(){l.style.display=""}function ce(){q(),l.style.display="none"}function pe(L,V,Z){let j=Ft(V),J=Z?.blocks;if(!j&&(!J||J.length===0))return;let De=document.createElement("div");De.className=`entry message ${L}`;let he=document.createElement("div");he.className="bubble",L==="assistant"?he.appendChild(Py(j,J)):he.textContent=j;let Ge=document.createElement("div");Ge.className="stamp",Ge.textContent=vl(Date.now()),De.appendChild(he),De.appendChild(Ge),Je.appendChild(De),L==="assistant"&&x&&Me&&(Me=!1,Xr()),B=!0,ae(),L==="user"?nn("typing",1200):L==="assistant"?nn("success",1400):nn("running",900),h()}function Ie(){for(let L of Array.from(Je.querySelectorAll(".entry.message")))L.remove();B=!1,Us(void 0),ae()}function Fe(L){let V=_.get(L);if(V)return V;let Z=document.createElement("div");Z.className="entry trace pending";let j=document.createElement("div");j.className="traceTop";let J=document.createElement("div");J.className="traceMeta";let De=document.createElement("span");De.className="traceStage",De.textContent="step";let he=document.createElement("div");he.className="traceTitle";let Ge=document.createElement("div");Ge.className="traceTs",J.appendChild(De),J.appendChild(he),j.appendChild(J),j.appendChild(Ge);let vt=document.createElement("div");return vt.className="traceDetail",Z.appendChild(j),Z.appendChild(vt),_.set(L,Z),y.push(Z),Je.appendChild(Z),Z}function $e(L,V){let Z=Number(V.ts)||Date.now(),j=wy(V),J=L.querySelector(".traceTop"),he=J.querySelector(".traceMeta").querySelector(".traceStage"),Ge=J.querySelector(".traceTitle"),vt=J.querySelector(".traceTs"),nt=L.querySelector(".traceDetail"),lt=ep(V.title||"");Ge.textContent=lt.plainTitle||"Step",he.textContent=lt.stage||V.kind||"step",he.style.display=lt.stage||V.kind==="status"||V.kind==="plan"||V.kind==="thought"?"":"none",vt.textContent=vl(Z),nt.innerHTML="";let Ut=Array.isArray(V.detailBlocks)?V.detailBlocks:[],pn=Ft(V.detail||"");if(Ut.length>0){for(let Xn of Ut){let ju=np(Xn);ju&&nt.appendChild(ju)}if(pn){let Xn=document.createElement("div");Xn.className="rvLine",Xn.appendChild(Jr(pn)),nt.insertBefore(Xn,nt.firstChild)}nt.style.display=""}else if(pn){let Xn=(V.kind==="thought"||V.kind==="tool_start"||V.kind==="tool_result",1200);pn.length>Xn?nt.appendChild(Na(pn,Xn)):nt.appendChild(Jr(pn)),nt.style.display=""}else nt.style.display="none";L.classList.remove("pending","success","error","info"),L.classList.add(j),L.dataset.status=j,L.dataset.kind=V.kind,L.dataset.visibility=Ay(V);let mn=j==="success"||j==="error"||j==="info";L.classList.toggle("compact",!W&&mn),j==="error"?nn("error",2200):j==="success"?nn("success",1200):j==="pending"&&nn("running",800)}function Ye(L){let V=Ft(L.title||"");if(!V||V.toLowerCase()==="assistant update")return;let Z=L.id||Zf("timeline");if(L.id&&E.has(Z))return;E.add(Z);let j=Iy(L),J=j==="run"||j.startsWith("tool:")||L.kind==="tool_result"||L.kind==="status"&&_.has(j),De=Fe(J?j:`${j}:${Z}`);$e(De,{...L,title:V}),L.kind==="thought"&&x&&Me&&(Me=!1,Xr()),V.toLowerCase()==="run completed"&&M(!1);let he=y.length;if(yt.textContent=`${he} step${he!==1?"s":""}`,Vn.classList.toggle("visible",he>0),!W){un.textContent=`Show all (${he})`;for(let Ge=0;Ge<y.length;Ge++){let vt=y[Ge],nt=Ge>=y.length-2;vt.style.display=nt?"":"none"}}h()}function Bt(){E.clear(),_.clear(),y.length=0;for(let L of Array.from(Je.querySelectorAll(".entry.trace")))L.remove();Vn.classList.remove("visible"),yt.textContent="0 steps"}function Ht(L){let V=!!L?.visible;dn.classList.toggle("visible",V),bo.textContent=L?.text||"Looks like a new request. Start a new task?",f.textContent=L?.primaryLabel||"Start new",w.textContent=L?.secondaryLabel||"Continue"}function Cr(L){let V=String(L||"ready");Le.textContent=V;let Z=V.toLowerCase();Z.includes("error")||Z.includes("failed")?nn("error",1800):Z==="ready"||Z.includes("complete")?nn("idle"):nn("running",1e3)}function jt(L){x=L,L?Me=!0:Me=!1,Xr(),Lt.classList.toggle("visible",L),ln.style.display=L?"none":"",Re.style.display=L?"none":"",Mn.classList.toggle("active",L),ae()}function tt(L,V){b=L,k=L==="observer"?V?.canComposeInObserver===!0:!0,I(),Se.classList.remove("controller","observer"),Se.classList.add(L),L==="controller"?(Se.textContent="active",Tn.style.display="none",Ze.placeholder=`Ask ${t} to act on this website...`):(Se.textContent="observer",V?.canTakeControl!==!1?Tn.style.display="":Tn.style.display="none",V?.note?Ze.placeholder=V.note:k?Ze.placeholder="Send to take control and run here.":V?.activeLogicalTabId&&V?.localLogicalTabId&&V.activeLogicalTabId!==V.localLogicalTabId?Ze.placeholder=`Observing: ${t} is acting in tab #${V.activeLogicalTabId}`:Ze.placeholder="Observer mode. Take control to run actions here.")}function ct(){z!=null&&(window.clearTimeout(z),z=null),ue&&(window.clearTimeout(ue),ue=null),ie&&(window.clearTimeout(ie),ie=null),document.removeEventListener("keydown",dr),a.remove(),s.remove()}d.addEventListener("click",()=>{S.classList.contains("open")?q():O()}),N.addEventListener("click",L=>{L.stopPropagation(),de()}),T.addEventListener("click",()=>{de(),O()}),Nt.addEventListener("click",()=>q()),Re.addEventListener("click",L=>{L.stopPropagation(),Pe()}),l.addEventListener("click",L=>{te&&!bt.contains(L.target)&&L.target!==Re&&Ne()}),Qe.addEventListener("click",()=>{Ne(),x&&e.onCancelRun?(H="new_task",Ht({visible:!0,text:"A task is in progress. Cancel it and start new?",primaryLabel:"Cancel & start new",secondaryLabel:"Keep running"})):e.onNewTask?.()}),Zt.addEventListener("click",()=>{Ne(),x&&e.onCancelRun?(H="end_task",Ht({visible:!0,text:"A task is in progress. Cancel and end it?",primaryLabel:"Cancel & end",secondaryLabel:"Keep running"})):e.onEndTask?.()}),Tn.addEventListener("click",()=>{Ne(),e.onRequestControl?.()}),Lt.addEventListener("click",()=>{e.onCancelRun?.()}),un.addEventListener("click",()=>{M(!W)}),f.addEventListener("click",()=>{if(H){let L=H;H=null,Ht({visible:!1}),e.onCancelRun?.(),L==="new_task"?e.onNewTask?.():L==="end_task"&&e.onEndTask?.();return}e.onTaskSuggestionPrimary?.()}),w.addEventListener("click",()=>{if(H){H=null,Ht({visible:!1});return}e.onTaskSuggestionSecondary?.()}),Ze.addEventListener("input",()=>{Ze.style.height="auto",Ze.style.height=`${Math.min(96,Math.max(44,Ze.scrollHeight))}px`}),jn.addEventListener("submit",L=>{if(L.preventDefault(),Ze.disabled||!je?.questions?.length)return;let V={},Z=[],j=null;for(let he of je.questions){let Ge=Xo(he.key);if(!Ge)continue;let vt=Ft(Ge.value),nt=he.required!==!1;if(!vt&&nt){Ge.classList.add("invalid"),j||(j=Ge);continue}if(!vt){Ge.classList.remove("invalid"),delete ve[he.key],Z.push(`${he.key}: (no answer provided)`);continue}Ge.classList.remove("invalid"),ve[he.key]=vt,V[he.key]=vt,Z.push(`${he.key}: ${vt}`)}if(j){j.focus();return}let J=je.questions.map(he=>he.key),De=Z.length?Z.join(`
|
|
1952
|
-
`):J.map(
|
|
1953
|
-
`);e.onSend(De,{askUserAnswers:{answersByKey:V,rawText:De,keys:J}})}),kn.addEventListener("click",()=>{if(!Ze.disabled){if(e.onCancelQuestionFlow){e.onCancelQuestionFlow();return}e.onCancelRun?.()}}),Ze.addEventListener("keydown",L=>{L.key==="Enter"&&!L.shiftKey&&!L.isComposing&&(L.preventDefault(),Ee.requestSubmit())}),Ee.addEventListener("submit",L=>{if(L.preventDefault(),Ze.disabled)return;let V=Ft(Ze.value);V&&(Ht({visible:!1}),e.onSend(V),Ze.value="",Ze.style.height="44px")}),i.addEventListener("keydown",L=>{let V=L;V.key==="Escape"&&S.classList.contains("open")&&(V.stopPropagation(),q())});let dr=L=>{L.code==="Period"&&L.shiftKey&&(L.metaKey||L.ctrlKey)&&(L.preventDefault(),L.stopPropagation(),S.classList.contains("open")?q():O())};document.addEventListener("keydown",dr);let fr=null,$u=L=>{if(!fr)return;let V=fr.startX-L.clientX,Z=L.clientY-fr.startY,j=Math.max(320,Math.min(window.innerWidth-16,fr.startW+V)),J=Math.max(460,Math.min(window.innerHeight-16,fr.startH+Z));S.style.width=`${j}px`,S.style.height=`${J}px`},Vu=()=>{fr=null,window.removeEventListener("pointermove",$u),window.removeEventListener("pointerup",Vu)};if(Ot.addEventListener("pointerdown",L=>{window.matchMedia("(max-width: 640px)").matches||(L.preventDefault(),fr={startX:L.clientX,startY:L.clientY,startW:S.getBoundingClientRect().width,startH:S.getBoundingClientRect().height},window.addEventListener("pointermove",$u),window.addEventListener("pointerup",Vu))}),v){let L=()=>{v.style.display="none",m.style.display="grid"};v.addEventListener("error",L,{once:!0}),m.style.display="none"}if(Q){let L=()=>{Q.style.display="none",oe.style.display="grid"};Q.addEventListener("error",L,{once:!0}),oe.style.display="none"}tt("controller"),M(!1),P.length>0&&Ke(P);let Hk="",qk=new Map;function fh(L){}let Pc=!1;function ph(){Pc=!0,Pn.classList.add("open")}function Wi(){Pc=!1,Pn.classList.remove("open")}ln.addEventListener("click",L=>{L.stopPropagation(),Pc?Wi():ph()}),En.addEventListener("click",()=>Wi()),fn.addEventListener("click",()=>{Wi(),e.onNewTask?.()});let zu="";function mh(L){let V=L.map(j=>`${j.id}|${j.summary}|${j.status}|${j.updatedAt}|${j.isActive}`).join(";;");if(V===zu)return;zu=V;let Z=L.find(j=>j.isActive);if(Z){let j=Z.summary.length>40?Z.summary.slice(0,40)+"...":Z.summary;ot.textContent=j||"Current task"}else ot.textContent="Current task";en.style.display=L.length>1?"flex":"none",Gr.innerHTML="";for(let j of L){let J=document.createElement("div");J.className=`conversationItem ${j.status}${j.isActive?" active":""}`,J.dataset.id=j.id;let De=document.createElement("span");De.className="conversationDot";let he=document.createElement("div");he.className="conversationContent";let Ge=document.createElement("div");Ge.className="conversationSummary",Ge.textContent=j.summary.length>60?j.summary.slice(0,60)+"...":j.summary;let vt=document.createElement("div");vt.className="conversationMeta";let nt=j.status==="running"?"Running":j.status==="paused"?"Paused":j.status==="completed"?"Done":j.status;vt.textContent=`${nt} \xB7 ${vl(j.updatedAt)}`,he.appendChild(Ge),he.appendChild(vt);let lt=document.createElement("div");lt.className="conversationActions";let Ut=document.createElement("button");Ut.type="button",Ut.className="conversationDeleteBtn",Ut.textContent="\xD7",Ut.addEventListener("click",pn=>{pn.stopPropagation(),e.onDeleteConversation?.(j.id)}),lt.appendChild(Ut),J.appendChild(De),J.appendChild(he),J.appendChild(lt),J.addEventListener("click",()=>{Wi(),e.onSwitchConversation?.(j.id)}),Gr.appendChild(J)}}function hh(L){Gr.querySelectorAll(".conversationItem").forEach(Z=>{Z.dataset.id===L?Z.classList.add("active"):Z.classList.remove("active")})}function gh(L){Ar=L.taskId;let V=L.rootUserInput.length>50?L.rootUserInput.slice(0,50)+"...":L.rootUserInput;On.innerHTML="";let Z=document.createElement("span");Z.className="pausedTaskText",Z.textContent=`Paused: "${V}"`;let j=document.createElement("div");j.className="pausedTaskActions";let J=document.createElement("button");J.type="button",J.className="pausedTaskResumeBtn",J.textContent="Resume",J.addEventListener("click",()=>e.onResumeTask?.(Ar));let De=document.createElement("button");De.type="button",De.className="pausedTaskCancelBtn",De.textContent="Cancel",De.addEventListener("click",()=>e.onCancelPausedTask?.(Ar)),j.appendChild(J),j.appendChild(De),On.appendChild(Z),On.appendChild(j),On.classList.add("visible")}function bh(){Ar="",On.classList.remove("visible")}function yh(){return Je.scrollTop}function vh(L){requestAnimationFrame(()=>{Je.scrollTop=L})}return{addMessage:pe,setQuestionPrompt:Us,clearMessages:Ie,addTimelineEvent:Ye,clearTimeline:Bt,setTaskSuggestion:Ht,setStatus:Cr,setRunning:jt,setExecutionMode:tt,setShortcuts:Ke,showGreeting:ee,dismissGreeting:de,setVisitorName:Ue,open:O,close:q,show:K,hide:ce,destroy:ct,setTabs:fh,setConversations:mh,setActiveConversationId:hh,getScrollPosition:yh,setScrollPosition:vh,showPausedTaskBanner:gh,hidePausedTaskBanner:bh}}var ip=3,By="rover:shared:",Uy="rover:channel:",_l=2*6e4,op=9e4,El=45e3,wl=2e4,Fy=45e3;function re(){return Date.now()}function gr(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function Da(e){let t=String(e||"").trim();if(!t)return"";try{return new URL(t,window.location.href).toString()}catch{return t}}function ap(e){if(!e||typeof e!="object")return;let t=typeof e.taskId=="string"?e.taskId.trim():"";if(!t)return;let n=e.status==="completed"||e.status==="cancelled"||e.status==="failed"||e.status==="ended"||e.status==="running"?e.status:"running";return{taskId:t,status:n,startedAt:Number(e.startedAt)||re(),lastUserAt:Number(e.lastUserAt)||void 0,lastAssistantAt:Number(e.lastAssistantAt)||void 0,boundaryReason:typeof e.boundaryReason=="string"?e.boundaryReason:void 0,endedAt:Number(e.endedAt)||void 0}}function cp(e){return e==="completed"?"completed":e==="cancelled"||e==="ended"?"cancelled":e==="failed"?"failed":"running"}function Pa(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-4)){let r=n?.role==="user"?"user":n?.role==="model"?"model":void 0;if(!r)continue;let o=String(n?.message||"").replace(/\s+/g," ").trim();if(!o)continue;let s=t[t.length-1];s&&s.role===r&&s.message===o||t.push({role:r,message:o})}return t}function ri(e,t){if(!e)return;let n=typeof e=="string"?e:e?.text,r=String(n||"").trim();if(!r)return;let o=typeof e?.runId=="string"&&e.runId.trim()?e.runId.trim():typeof t?.runId=="string"&&t.runId.trim()?t.runId.trim():void 0,s=typeof e?.taskId=="string"&&e.taskId.trim()?e.taskId.trim():typeof t?.taskId=="string"&&t.taskId.trim()?t.taskId.trim():void 0;return{text:r,ts:Number(e?.ts)||re(),runId:o,taskId:s,stage:typeof e?.stage=="string"&&e.stage.trim()?e.stage.trim():void 0}}function lp(e){return Array.isArray(e)?e.slice(-ft.uiMessages).map(t=>({id:String(t?.id||gr("msg")),role:t?.role==="user"||t?.role==="assistant"||t?.role==="system"?t.role:"system",text:String(t?.text||""),blocks:fs(t?.blocks),ts:Number(t?.ts)||re(),sourceRuntimeId:typeof t?.sourceRuntimeId=="string"?t.sourceRuntimeId:void 0})).filter(t=>!!t.text||!!t.blocks?.length):[]}function up(e){return Array.isArray(e)?e.slice(-ft.timelineEvents).map(t=>({id:String(t?.id||gr("timeline")),kind:String(t?.kind||"status"),title:String(t?.title||"Step"),detail:typeof t?.detail=="string"?t.detail:void 0,detailBlocks:fs(t?.detailBlocks),status:t?.status==="pending"||t?.status==="success"||t?.status==="error"||t?.status==="info"?t.status:void 0,ts:Number(t?.ts)||re(),sourceRuntimeId:typeof t?.sourceRuntimeId=="string"?t.sourceRuntimeId:void 0})).filter(t=>!!t.title):[]}var Hy=new Set(["idle","running","awaiting_user","paused","blocked","completed","failed","cancelled"]);function qy(e){if(!e||typeof e!="object")return;let t=typeof e.taskId=="string"?e.taskId.trim():"";if(!t)return;let n=Hy.has(e.state)?e.state:"running";return{taskId:t,state:n,startedAt:Number(e.startedAt)||re(),endedAt:Number(e.endedAt)||void 0,activeRun:e.activeRun&&typeof e.activeRun=="object"&&e.activeRun.runId?{runId:String(e.activeRun.runId),text:String(e.activeRun.text||""),runtimeId:String(e.activeRun.runtimeId||""),startedAt:Number(e.activeRun.startedAt)||re(),updatedAt:Number(e.activeRun.updatedAt)||re()}:void 0,workerContext:Ba(e.workerContext),uiMessages:Array.isArray(e.uiMessages)?e.uiMessages.slice(-ft.uiMessages).map(r=>({id:String(r?.id||gr("msg")),role:r?.role==="user"||r?.role==="assistant"||r?.role==="system"?r.role:"system",text:String(r?.text||""),blocks:fs(r?.blocks),ts:Number(r?.ts)||re(),sourceRuntimeId:typeof r?.sourceRuntimeId=="string"?r.sourceRuntimeId:void 0})).filter(r=>!!r.text||!!r.blocks?.length):[],timeline:Array.isArray(e.timeline)?e.timeline.slice(-ft.timelineEvents).map(r=>({id:String(r?.id||gr("timeline")),kind:String(r?.kind||"status"),title:String(r?.title||"Step"),detail:typeof r?.detail=="string"?r.detail:void 0,detailBlocks:fs(r?.detailBlocks),status:r?.status==="pending"||r?.status==="success"||r?.status==="error"||r?.status==="info"?r.status:void 0,ts:Number(r?.ts)||re(),sourceRuntimeId:typeof r?.sourceRuntimeId=="string"?r.sourceRuntimeId:void 0})).filter(r=>!!r.title):[],rootUserInput:typeof e.rootUserInput=="string"?e.rootUserInput:void 0,summary:typeof e.summary=="string"?e.summary:void 0,seedChatLog:Pa(e.seedChatLog),transientStatus:ri(e.transientStatus,{runId:e.activeRun?.runId,taskId:t})}}function Wy(e){if(!e||typeof e!="object")return;let t={},n=0;for(let r of Object.keys(e)){if(n>=20)break;let o=qy(e[r]);o&&(t[o.taskId]=o,n++)}return Object.keys(t).length>0?t:void 0}function dp(e){if(e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean")return e;try{return structuredClone(e)}catch{try{return JSON.parse(JSON.stringify(e))}catch{return}}}function fs(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!n||typeof n!="object")continue;let r=n.type;if(r==="text"){let o=String(n.text||"");if(!o)continue;t.push({type:"text",text:o});continue}if(r==="tool_output"||r==="json"){let o=dp(n.data);t.push({type:r,data:o,label:typeof n.label=="string"?n.label:void 0,toolName:typeof n.toolName=="string"?n.toolName:void 0})}}return t.length?t:void 0}function sp(e,t){if(!Array.isArray(e))return[];let n=e.length<=t?e:[e[0],...e.slice(-(t-1))],r=[];for(let o of n){let s=dp(o);s!==void 0&&r.push(s)}return r}function Ba(e){if(!e||typeof e!="object")return;let t=Array.isArray(e.pendingAskUser?.questions)?e.pendingAskUser.questions.map((l,d)=>{let p=String(l?.key||l?.id||"").trim()||`clarification_${d+1}`,v=String(l?.query||l?.question||"").trim();if(v)return{key:p,query:v,id:typeof l?.id=="string"?l.id:void 0,question:typeof l?.question=="string"?l.question:void 0,choices:Array.isArray(l?.choices)?l.choices:void 0}}).filter(l=>!!l).slice(0,6):[],n=e.pendingAskUser?.stepRef,r=n&&Number.isFinite(Number(n.stepIndex))&&Number(n.stepIndex)>=0&&Number.isFinite(Number(n.functionIndex))&&Number(n.functionIndex)>=0?{stepIndex:Number(n.stepIndex),functionIndex:Number(n.functionIndex),...typeof n.accTreeId=="string"&&n.accTreeId.trim()?{accTreeId:n.accTreeId.trim()}:{}}:void 0,o=l=>l.slice(-ft.uiMessages).map(d=>({role:typeof d?.role=="string"?d.role:"assistant",content:typeof d?.content=="string"?d.content:""})).filter(d=>!!d.content),s=Array.isArray(e.history)?o(e.history):[],i=sp(e.plannerHistory,ft.plannerHistory),a=sp(e.agentPrevSteps,ft.prevSteps),c=typeof e.rootUserInput=="string"?e.rootUserInput.trim():"";return{trajectoryId:typeof e.trajectoryId=="string"?e.trajectoryId:void 0,taskBoundaryId:typeof e.taskBoundaryId=="string"&&e.taskBoundaryId.trim()?e.taskBoundaryId.trim():void 0,rootUserInput:c||void 0,seedChatLog:Pa(e.seedChatLog),history:s,plannerHistory:i,agentPrevSteps:a,pendingAskUser:t.length?{questions:t,source:e.pendingAskUser?.source==="planner"?"planner":"act",askedAt:Number(e.pendingAskUser?.askedAt)||re(),boundaryId:typeof e.pendingAskUser?.boundaryId=="string"&&e.pendingAskUser.boundaryId.trim()?e.pendingAskUser.boundaryId.trim():void 0,...r?{stepRef:r}:{}}:void 0,updatedAt:Number(e.updatedAt)||re()}}function Il(e,t){return{version:ip,siteId:e,sessionId:t,seq:1,updatedAt:re(),lease:void 0,tabs:[],nextLogicalTabId:1,activeLogicalTabId:void 0,uiMessages:[],timeline:[],uiStatus:void 0,transientStatus:void 0,activeRun:void 0,taskEpoch:1,task:void 0,workerContext:void 0,workflowLock:void 0,tasks:void 0,activeTaskId:void 0}}function ds(e,t,n){let r=Il(t,n);if(!e||typeof e!="object")return r;let o={...r,version:ip,siteId:t,sessionId:n,seq:Math.max(1,Number(e.seq)||1),updatedAt:Number(e.updatedAt)||re(),tabs:Array.isArray(e.tabs)?e.tabs.map(a=>({logicalTabId:Math.max(1,Number(a?.logicalTabId)||0),runtimeId:typeof a?.runtimeId=="string"?a.runtimeId:void 0,url:String(a?.url||""),title:typeof a?.title=="string"?a.title:void 0,openedAt:Number(a?.openedAt)||re(),updatedAt:Number(a?.updatedAt)||re(),external:!!a?.external,openerRuntimeId:typeof a?.openerRuntimeId=="string"?a.openerRuntimeId:void 0,detachedAt:Number(a?.detachedAt)||void 0,detachedReason:a?.detachedReason==="navigation_handoff"||a?.detachedReason==="tab_close"||a?.detachedReason==="opened_pending_attach"||a?.detachedReason==="unknown"?a.detachedReason:void 0,handoffId:typeof a?.handoffId=="string"?a.handoffId:void 0,handoffRunId:typeof a?.handoffRunId=="string"?a.handoffRunId:void 0,handoffTargetUrl:typeof a?.handoffTargetUrl=="string"?a.handoffTargetUrl:void 0,handoffCreatedAt:Number(a?.handoffCreatedAt)||void 0})).filter(a=>!!a.logicalTabId):[],nextLogicalTabId:Math.max(1,Number(e.nextLogicalTabId)||1),activeLogicalTabId:Number(e.activeLogicalTabId)||void 0,uiMessages:lp(e.uiMessages),timeline:up(e.timeline),taskEpoch:Math.max(1,Number(e.taskEpoch)||1),task:ap(e.task),workerContext:Ba(e.workerContext),uiStatus:typeof e.uiStatus=="string"?e.uiStatus:void 0,transientStatus:ri(e.transientStatus??e.uiStatus,{runId:e.activeRun?.runId,taskId:e.task?.taskId}),activeRun:e.activeRun&&typeof e.activeRun=="object"?{runId:String(e.activeRun.runId||""),text:String(e.activeRun.text||""),runtimeId:String(e.activeRun.runtimeId||""),startedAt:Number(e.activeRun.startedAt)||re(),updatedAt:Number(e.activeRun.updatedAt)||re()}:void 0,lease:e.lease&&typeof e.lease=="object"&&e.lease.holderRuntimeId?{holderRuntimeId:String(e.lease.holderRuntimeId),expiresAt:Number(e.lease.expiresAt)||0,updatedAt:Number(e.lease.updatedAt)||re()}:void 0,workflowLock:e.workflowLock&&typeof e.workflowLock=="object"&&e.workflowLock.runtimeId&&e.workflowLock.runId?{runtimeId:String(e.workflowLock.runtimeId),runId:String(e.workflowLock.runId),lockedAt:Number(e.workflowLock.lockedAt)||re(),expiresAt:Number(e.workflowLock.expiresAt)||0}:void 0,tasks:e.tasks&&typeof e.tasks=="object"?Wy(e.tasks):void 0,activeTaskId:typeof e.activeTaskId=="string"?e.activeTaskId:void 0},s=o.tabs.length,i=new Set;return o.tabs=o.tabs.filter(a=>i.has(a.logicalTabId)?!1:(i.add(a.logicalTabId),!0)),o.nextLogicalTabId<=(o.tabs.at(-1)?.logicalTabId??0)&&(o.nextLogicalTabId=o.tabs.reduce((a,c)=>Math.max(a,c.logicalTabId),0)+1),s>0&&o.tabs.length<s&&console.warn(`[rover] sanitizeSharedState: dropped ${s-o.tabs.length} invalid/duplicate tab entries`),gn(o),o}function $y(e){let t=String(e.task?.taskId||e.activeTaskId||"").trim();if(!t)return;let n=Number(e.task?.startedAt)||re();e.tasks||(e.tasks={});let r=e.tasks[t];if(r)return e.activeTaskId=t,r;let o={taskId:t,state:cp(e.task?.status),startedAt:n,endedAt:e.task?.endedAt,activeRun:e.activeRun,workerContext:e.workerContext,uiMessages:[...e.uiMessages],timeline:[...e.timeline],rootUserInput:e.workerContext?.rootUserInput,summary:void 0,seedChatLog:Pa(e.workerContext?.seedChatLog),transientStatus:ri(e.transientStatus??e.uiStatus,{runId:e.activeRun?.runId,taskId:t})};return e.tasks[t]=o,e.activeTaskId=t,o}function gn(e){let t=$y(e);if(!t)return;t.state=cp(e.task?.status),t.startedAt=Number(e.task?.startedAt)||t.startedAt||re(),t.endedAt=Number(e.task?.endedAt)||void 0,t.activeRun=e.activeRun,t.workerContext=Ba(e.workerContext),t.uiMessages=lp(e.uiMessages),t.timeline=up(e.timeline),t.rootUserInput=e.workerContext?.rootUserInput||t.rootUserInput;let n=[...t.uiMessages].reverse().find(r=>r.role==="assistant");t.summary=n?.text||t.summary,t.seedChatLog=Pa(e.workerContext?.seedChatLog),t.transientStatus=ri(e.transientStatus??e.uiStatus,{runId:e.activeRun?.runId,taskId:t.taskId})}var Oa=class e{siteId;sessionId;runtimeId;leaseMs;workflowLockMs;heartbeatMs;maxMessages;maxTimeline;onRoleChange;onStateChange;onSwitchRequested;onTaskTabsExhausted;key;channelName;state;taskTabMapping=new Map;channel=null;heartbeatTimer=null;storageHandler=null;localLogicalTabId;closing=!1;started=!1;heartbeatCount=0;lastNotifiedStateHash="";static LS_HEARTBEAT_DIVISOR=5;pendingRpcRequests=new Map;rpcRequestHandler;lastNotifiedRole;roleChangeTimer=null;probeTimers=[];static ROLE_CHANGE_DEBOUNCE_MS=200;onSessionTokenReceived;onProjectionReceived;tabFreshnessTs(t){return Math.max(Number(t.updatedAt)||0,Number(t.openedAt)||0,Number(t.detachedAt)||0)}isBetterTabCandidate(t,n){if(!n)return!0;let r=this.tabFreshnessTs(t),o=this.tabFreshnessTs(n);return r!==o?r>o:!!t.runtimeId!=!!n.runtimeId?!!t.runtimeId:t.logicalTabId<n.logicalTabId}isRuntimeTabFresh(t,n){return t.runtimeId?t.runtimeId===this.runtimeId?!0:n-this.tabFreshnessTs(t)<=Fy:!1}isTabVisibleInScope(t,n,r){return t.runtimeId?this.isRuntimeTabFresh(t,n):t.external?n-this.tabFreshnessTs(t)<=_l:t.detachedReason==="opened_pending_attach"?n-this.tabFreshnessTs(t)<=wl:r==="context"?!1:t.detachedReason==="navigation_handoff"?n-this.tabFreshnessTs(t)<=El:n-this.tabFreshnessTs(t)<=op}normalizeDraftTabs(t){let n=new Map;for(let m of t.tabs){if(!Number.isFinite(Number(m.logicalTabId))||Number(m.logicalTabId)<=0)continue;let g=n.get(m.logicalTabId);this.isBetterTabCandidate(m,g)&&n.set(m.logicalTabId,m)}let r=[],o=new Set;for(let m of t.tabs){if(o.has(m.logicalTabId))continue;let g=n.get(m.logicalTabId);g&&g===m&&(r.push(g),o.add(g.logicalTabId))}for(let[m,g]of n.entries())o.has(m)||(r.push(g),o.add(m));let s=new Map;for(let m of r){if(!m.runtimeId)continue;let g=s.get(m.runtimeId);this.isBetterTabCandidate(m,g)&&s.set(m.runtimeId,m)}if(t.tabs=r.filter(m=>!m.runtimeId||s.get(m.runtimeId)===m).sort((m,g)=>m.logicalTabId-g.logicalTabId),!t.tabs.length){t.activeLogicalTabId=void 0,t.nextLogicalTabId=1;return}let i=re(),a=t.activeLogicalTabId?t.tabs.find(m=>m.logicalTabId===t.activeLogicalTabId):void 0,c=t.tabs.find(m=>m.runtimeId===this.runtimeId),d=[...t.tabs.filter(m=>this.isRuntimeTabFresh(m,i))].sort((m,g)=>this.tabFreshnessTs(g)-this.tabFreshnessTs(m))[0],p=a?.logicalTabId;a?(!a.runtimeId||!this.isRuntimeTabFresh(a,i))&&(p=c?.logicalTabId||d?.logicalTabId||a.logicalTabId):p=c?.logicalTabId||d?.logicalTabId||t.tabs[0]?.logicalTabId,t.activeLogicalTabId=p;let v=t.tabs.reduce((m,g)=>Math.max(m,g.logicalTabId),0);t.nextLogicalTabId=Math.max(Number(t.nextLogicalTabId)||1,v+1)}setTaskTabMapping(t){this.taskTabMapping=t}pruneDetachedTabs(t,n){let r=!!n?.dropRuntimeDetached,o=!!n?.dropAllDetachedExternal,s=!!n?.keepOnlyActiveLiveTab,i=!!n?.keepRecentExternalPlaceholders,a=re(),c=new Map;if(this.onTaskTabsExhausted&&this.taskTabMapping.size>0)for(let l of t.tabs){let d=this.taskTabMapping.get(l.logicalTabId);if(d){let p=c.get(d);p||(p=new Set,c.set(d,p)),p.add(l.logicalTabId)}}if(t.tabs=t.tabs.filter(l=>{if(l.runtimeId)return this.isRuntimeTabFresh(l,a);if(r&&!l.external&&l.openerRuntimeId===this.runtimeId)return!1;if(l.external)return o?!1:a-this.tabFreshnessTs(l)<=_l;let d=a-this.tabFreshnessTs(l);return l.detachedReason==="navigation_handoff"?d<=El:l.detachedReason==="opened_pending_attach"?d<=wl:d<=op}),s){this.normalizeDraftTabs(t);let l=t.tabs.filter(g=>this.isRuntimeTabFresh(g,a)),d=l.find(g=>g.logicalTabId===t.activeLogicalTabId),p=l.find(g=>g.runtimeId===this.runtimeId),v=[...l].sort((g,T)=>this.tabFreshnessTs(T)-this.tabFreshnessTs(g))[0],m=d?.logicalTabId||p?.logicalTabId||v?.logicalTabId;t.tabs=t.tabs.filter(g=>g.runtimeId?!!m&&g.logicalTabId===m:g.external?i&&a-this.tabFreshnessTs(g)<=_l:!1),t.activeLogicalTabId=m||t.tabs.find(g=>g.runtimeId)?.logicalTabId||t.tabs[0]?.logicalTabId}if(this.normalizeDraftTabs(t),this.onTaskTabsExhausted&&c.size>0){let l=new Set(t.tabs.map(d=>d.logicalTabId));for(let[d,p]of c){let v=!1;for(let m of p)if(l.has(m)){v=!0;break}v||this.onTaskTabsExhausted(d)}}}resetDraftToSingleCurrentTab(t,n,r){let o=re(),s=Da(n),i=t.tabs.find(c=>c.runtimeId===this.runtimeId),a=Number(i?.openedAt)||o;t.tabs=[{logicalTabId:1,runtimeId:this.runtimeId,url:s||i?.url||"",title:r||i?.title,openedAt:a,updatedAt:o,external:!1,detachedAt:void 0,detachedReason:void 0}],t.activeLogicalTabId=1,t.nextLogicalTabId=2,t.lease={holderRuntimeId:this.runtimeId,expiresAt:o+this.leaseMs,updatedAt:o}}constructor(t){this.siteId=t.siteId,this.sessionId=t.sessionId,this.runtimeId=t.runtimeId,this.leaseMs=Math.max(4e3,Number(t.leaseMs)||12e3),this.workflowLockMs=Math.max(3e4,Number(t.workflowLockMs)||18e4),this.heartbeatMs=Math.max(800,Number(t.heartbeatMs)||2e3),this.maxMessages=Math.max(20,Number(t.maxMessages)||ft.uiMessages),this.maxTimeline=Math.max(20,Number(t.maxTimeline)||ft.timelineEvents),this.onRoleChange=t.onRoleChange,this.onStateChange=t.onStateChange,this.onSwitchRequested=t.onSwitchRequested,this.onTaskTabsExhausted=t.onTaskTabsExhausted,this.key=`${By}${this.siteId}:${this.sessionId}`,this.channelName=`${Uy}${this.siteId}:${this.sessionId}`,this.state=this.loadState(),this.normalizeDraftTabs(this.state)}start(t){this.started||(this.started=!0,this.mutate("local",n=>{this.pruneDetachedTabs(n,{dropRuntimeDetached:!0})}),this.registerCurrentTab(window.location.href,document.title||void 0,t),this.claimLease(!1),typeof BroadcastChannel<"u"&&(this.channel=new BroadcastChannel(this.channelName),this.channel.onmessage=n=>{let r=n.data;if(!(!r||typeof r!="object")){if(r.type==="state"&&r.state){let o=ds(r.state,this.siteId,this.sessionId);this.applyIncomingState(o)}r.type==="switch_request"&&r.targetRuntimeId===this.runtimeId&&this.onSwitchRequested?.(Number(r.logicalTabId)||0),r.type==="rpc_request"&&r.targetRuntimeId===this.runtimeId&&this.handleInboundRpcRequest(r),r.type==="rpc_response"&&r.targetRuntimeId===this.runtimeId&&this.handleInboundRpcResponse(r),r.type==="tab_navigated"&&r.runtimeId&&r.runtimeId!==this.runtimeId&&this.handleRemoteNavigation(r),r.type==="tab_closing"&&r.runtimeId&&r.runtimeId!==this.runtimeId&&this.handleRemoteTabClosing(r),r.type==="session_token"&&r.runtimeId!==this.runtimeId&&this.onSessionTokenReceived?.(r.token,r.expiresAt),r.type==="projection"&&r.runtimeId!==this.runtimeId&&this.onProjectionReceived?.(r.projection)}}),this.storageHandler=n=>{if(!(n.key!==this.key||!n.newValue))try{let r=ds(JSON.parse(n.newValue),this.siteId,this.sessionId);this.applyIncomingState(r)}catch{}},window.addEventListener("storage",this.storageHandler),this.heartbeatTimer=window.setInterval(()=>{this.heartbeat()},this.heartbeatMs),typeof this.heartbeatTimer?.unref=="function"&&this.heartbeatTimer.unref(),this.notifyRoleChange(),this.onStateChange?.(this.state,"local"))}stop(){this.heartbeatCount=0,this.heartbeatTimer!=null&&(window.clearInterval(this.heartbeatTimer),this.heartbeatTimer=null),this.roleChangeTimer!=null&&(window.clearTimeout(this.roleChangeTimer),this.roleChangeTimer=null),this.storageHandler&&(window.removeEventListener("storage",this.storageHandler),this.storageHandler=null),this.channel&&(this.channel.close(),this.channel=null);for(let[,t]of this.pendingRpcRequests)window.clearTimeout(t.timer),t.reject(new Error("SessionCoordinator stopped"));this.pendingRpcRequests.clear();for(let t of this.probeTimers)clearTimeout(t);this.probeTimers=[],this.started&&(this.started=!1,this.mutate("local",t=>{t.tabs=t.tabs.filter(n=>n.runtimeId!==this.runtimeId),t.lease?.holderRuntimeId===this.runtimeId&&(t.lease=void 0),t.activeLogicalTabId&&!t.tabs.some(n=>n.logicalTabId===t.activeLogicalTabId)&&(t.activeLogicalTabId=void 0)}))}isController(){let t=this.state.lease;return!t||t.expiresAt<=re()?!1:t.holderRuntimeId===this.runtimeId}getRole(){return this.isController()?"controller":"observer"}getLocalLogicalTabId(){return this.localLogicalTabId}getActiveLogicalTabId(){return this.state.activeLogicalTabId}getCurrentHolderRuntimeId(){return this.state.lease?.holderRuntimeId}getState(){return this.state}getTaskEpoch(){return this.state.taskEpoch}getTask(){return this.state.task}getWorkerContext(){return this.state.workerContext}syncTask(t,n){this.mutate("local",r=>{n&&Number.isFinite(n)&&n>r.taskEpoch&&(r.taskEpoch=Math.max(1,Math.trunc(n))),t&&(r.task=ap(t)||r.task,gn(r))})}hydrateExternalState(t){let n=ds(t,this.siteId,this.sessionId);this.pruneDetachedTabs(n,{dropRuntimeDetached:!0});let r=this.state.seq,o=this.state.updatedAt;this.applyIncomingState(n);let s=this.state.seq!==r||this.state.updatedAt!==o;if(!s&&this.state.tabs.some(a=>a.runtimeId?!1:a.external?!0:a.openerRuntimeId===this.runtimeId)){let a=this.state.tabs.length;this.mutate("local",c=>{this.pruneDetachedTabs(c,{dropRuntimeDetached:!0})}),s=this.state.tabs.length!==a}return s?(this.persistState(),this.localLogicalTabId||this.registerCurrentTab(window.location.href,document.title||void 0),!0):!1}listTabs(t){let n=t?.scope==="all"?"all":"context",r=re();return this.state.tabs.filter(o=>this.isTabVisibleInScope(o,r,n))}pruneTabs(t){this.mutate("local",n=>{this.pruneDetachedTabs(n,t)})}resetTabsToCurrent(t,n){return this.mutate("local",r=>{this.resetDraftToSingleCurrentTab(r,t,n)}),this.notifyRoleChange(),this.localLogicalTabId||1}startNewTask(t){let n=Number(t.startedAt)||re(),r={taskId:String(t.taskId||gr("task")),status:t.status==="completed"||t.status==="cancelled"||t.status==="failed"||t.status==="ended"?t.status:"running",startedAt:n,lastUserAt:Number(t.lastUserAt)||n,lastAssistantAt:Number(t.lastAssistantAt)||void 0,boundaryReason:t.boundaryReason,endedAt:void 0};return this.mutate("local",o=>{o.taskEpoch=Math.max(1,Number(o.taskEpoch)||1)+1,o.task=r,o.uiMessages=[],o.timeline=[],o.uiStatus=void 0,o.transientStatus=void 0,o.activeRun=void 0,o.workerContext=void 0,this.resetDraftToSingleCurrentTab(o,window.location.href,document.title||void 0),gn(o)}),r}endTask(t){let n;return this.mutate("local",r=>{r.task&&(r.task={...r.task,status:"ended",boundaryReason:t||r.task.boundaryReason,endedAt:re()},r.activeRun=void 0,r.transientStatus=void 0,r.uiStatus=void 0,gn(r),n=r.task)}),n}markTaskActivity(t,n=re()){t!=="system"&&this.mutate("local",r=>{if(!r.task){r.task={taskId:gr("task"),status:"running",startedAt:n,boundaryReason:"implicit",lastUserAt:t==="user"?n:void 0,lastAssistantAt:t==="assistant"?n:void 0};return}r.task.status==="running"&&(t==="user"&&(r.task.lastUserAt=n),t==="assistant"&&(r.task.lastAssistantAt=n),gn(r))})}setWorkerContext(t){this.mutate("local",n=>{if(!t){n.workerContext=void 0,gn(n);return}n.workerContext=Ba(t),gn(n)})}setStatus(t){this.mutate("local",n=>{let r=ri(t,{runId:n.activeRun?.runId,taskId:n.task?.taskId});n.uiStatus=r?.text,n.transientStatus=r,gn(n)})}appendMessage(t){let n={id:t.id||gr("msg"),role:t.role,text:String(t.text||""),blocks:fs(t.blocks),ts:Number(t.ts)||re(),sourceRuntimeId:this.runtimeId};return this.mutate("local",r=>{r.uiMessages.push(n),r.uiMessages.length>this.maxMessages&&(r.uiMessages=r.uiMessages.slice(-this.maxMessages)),r.task||(r.task={taskId:gr("task"),status:"running",startedAt:n.ts,boundaryReason:"implicit"}),n.role==="user"?r.task.lastUserAt=n.ts:n.role==="assistant"&&(r.task.lastAssistantAt=n.ts),gn(r)}),n}appendTimeline(t){let n={id:t.id||gr("timeline"),kind:String(t.kind||"status"),title:String(t.title||"Step"),detail:t.detail?String(t.detail):void 0,detailBlocks:fs(t.detailBlocks),status:t.status,ts:Number(t.ts)||re(),sourceRuntimeId:this.runtimeId};return this.mutate("local",r=>{r.timeline.push(n),r.timeline.length>this.maxTimeline&&(r.timeline=r.timeline.slice(-this.maxTimeline)),gn(r)}),n}clearTimeline(){this.mutate("local",t=>{t.timeline=[],gn(t)})}setActiveRun(t){this.mutate("local",n=>{if(!t){n.activeRun=void 0,n.transientStatus=void 0,n.uiStatus=void 0,gn(n);return}if(n.task&&n.task.status!=="running"){n.activeRun=void 0,gn(n);return}n.activeRun={runId:t.runId,text:t.text,runtimeId:this.runtimeId,startedAt:n.activeRun?.runId===t.runId?n.activeRun.startedAt:re(),updatedAt:re()},gn(n)})}requestControl(){return this.claimLease(!0)}registerCurrentTab(t,n,r){let o=Da(t),s=typeof r?.handoffId=="string"?r.handoffId.trim():"",i=Number(r?.sourceLogicalTabId),a;return this.mutate("local",c=>{let l=re(),p=!!(c.lease&&c.lease.expiresAt>l)?c.lease?.holderRuntimeId:void 0,v=c.workflowLock&&c.workflowLock.runtimeId&&c.workflowLock.runtimeId!==this.runtimeId&&c.workflowLock.expiresAt>l?c.workflowLock:void 0,m=v?c.tabs.find(N=>N.runtimeId===v.runtimeId&&N.updatedAt>l-2*this.heartbeatMs):void 0,g=!m&&(!p||p===this.runtimeId),T=c.tabs.find(N=>N.runtimeId===this.runtimeId);if(T)T.url=o||T.url,T.title=n||T.title,T.updatedAt=l,T.detachedAt=void 0,T.detachedReason=void 0,T.handoffId=void 0,T.handoffRunId=void 0,T.handoffTargetUrl=void 0,T.handoffCreatedAt=void 0,a=T.logicalTabId;else{let N;if(s&&(N=c.tabs.find(A=>{if(A.runtimeId||String(A.handoffId||"").trim()!==s||Number.isFinite(i)&&i>0&&A.logicalTabId!==i)return!1;let S=l-Number(A.handoffCreatedAt||A.updatedAt||A.openedAt||0);return S>=0&&S<=3e4})),N||(N=c.tabs.find(A=>!A.runtimeId&&!A.external&&A.url===o&&l-A.openedAt<18e4)),N)N.runtimeId=this.runtimeId,N.url=o||N.url,N.title=n||N.title,N.updatedAt=l,N.detachedAt=void 0,N.detachedReason=void 0,N.handoffId=void 0,N.handoffRunId=void 0,N.handoffTargetUrl=void 0,N.handoffCreatedAt=void 0,a=N.logicalTabId;else{let A=c.nextLogicalTabId++;c.tabs.push({logicalTabId:A,runtimeId:this.runtimeId,url:o,title:n,openedAt:l,updatedAt:l,external:!1,detachedAt:void 0,detachedReason:void 0}),a=A}}a&&(c.tabs=c.tabs.filter(N=>{if(N.logicalTabId===a||N.runtimeId||N.external)return!0;if(s&&String(N.handoffId||"").trim()===s)return!1;let A=l-this.tabFreshnessTs(N);return!(!String(N.url||"").trim()&&A>wl||o&&N.url===o&&A<=El)}));let D=c.activeLogicalTabId?c.tabs.find(N=>N.logicalTabId===c.activeLogicalTabId):void 0;m?c.activeLogicalTabId=m.logicalTabId:(!D||!D.runtimeId||D.logicalTabId===a||g)&&(c.activeLogicalTabId=a)}),this.notifyRoleChange(),this.localLogicalTabId||a||1}registerOpenedTab(t){let n=Da(t.url),r=0;return this.mutate("local",o=>{let s=re(),i=o.tabs.find(a=>!a.runtimeId&&!!a.external==!!t.external&&a.url===n);if(i){i.title=t.title||i.title,i.updatedAt=s,i.openerRuntimeId=t.openerRuntimeId||i.openerRuntimeId,i.detachedAt=i.detachedAt||s,i.detachedReason="opened_pending_attach",r=i.logicalTabId;return}r=o.nextLogicalTabId++,o.tabs.push({logicalTabId:r,runtimeId:void 0,url:n,title:t.title,openedAt:s,updatedAt:s,external:!!t.external,openerRuntimeId:t.openerRuntimeId,detachedAt:s,detachedReason:"opened_pending_attach"})}),t.external&&this.probeRoverAvailability(r),{logicalTabId:r}}probeRoverAvailability(t){let r=setTimeout(()=>{let o=this.state.tabs.find(s=>s.logicalTabId===t);o&&!o.runtimeId&&this.mutate("local",s=>{let i=s.tabs.find(a=>a.logicalTabId===t);i&&(i.roverAvailability="not_available")})},5e3);typeof r?.unref=="function"&&r.unref(),this.probeTimers.push(r)}switchToLogicalTab(t){let n={ok:!1,reason:"Unknown tab"};return this.mutate("local",r=>{let o=r.tabs.find(s=>s.logicalTabId===t);if(!o){n={ok:!1,reason:`Tab ${t} not found`};return}if(r.activeLogicalTabId=t,o.runtimeId&&o.runtimeId!==this.runtimeId){r.lease={holderRuntimeId:o.runtimeId,expiresAt:re()+this.leaseMs,updatedAt:re()},this.channel&&this.channel.postMessage({type:"switch_request",logicalTabId:t,targetRuntimeId:o.runtimeId,sourceRuntimeId:this.runtimeId}),n={ok:!0,delegated:!0};return}if(!o.runtimeId){n={ok:!1,reason:`Tab ${t} is not attached to an active Rover runtime yet`};return}r.lease={holderRuntimeId:this.runtimeId,expiresAt:re()+this.leaseMs,updatedAt:re()},n={ok:!0,delegated:!1}}),this.notifyRoleChange(),n}sendCrossTabRpc(t,n,r,o=15e3){return new Promise((s,i)=>{if(!this.channel){i(new Error("BroadcastChannel not available"));return}let a=gr("rpc"),c=window.setTimeout(()=>{this.pendingRpcRequests.delete(a),i(new Error(`Cross-tab RPC timed out after ${o}ms (method=${n}, target=${t})`))},o);typeof c?.unref=="function"&&c.unref(),this.pendingRpcRequests.set(a,{resolve:s,reject:i,timer:c}),this.channel.postMessage({type:"rpc_request",requestId:a,sourceRuntimeId:this.runtimeId,targetRuntimeId:t,method:n,params:r,timeoutMs:o,createdAt:re()})})}setRpcRequestHandler(t){this.rpcRequestHandler=t}broadcastNavigation(t,n){this.channel&&this.channel.postMessage({type:"tab_navigated",runtimeId:this.runtimeId,logicalTabId:this.localLogicalTabId,url:t,title:n})}broadcastClosing(t){this.closing=!0,this.mutate("local",n=>{let r=re(),o=n.tabs.find(s=>s.runtimeId===this.runtimeId);o&&(o.runtimeId=void 0,o.updatedAt=r,o.detachedAt=r,o.detachedReason=t?"navigation_handoff":"tab_close",o.handoffId=typeof t?.handoffId=="string"?t.handoffId:void 0,o.handoffRunId=typeof t?.runId=="string"?t.runId:void 0,o.handoffTargetUrl=typeof t?.targetUrl=="string"?t.targetUrl:void 0,o.handoffCreatedAt=Number(t?.ts)||r),n.lease?.holderRuntimeId===this.runtimeId&&(n.lease=void 0)}),this.channel&&this.channel.postMessage({type:"tab_closing",runtimeId:this.runtimeId,logicalTabId:this.localLogicalTabId,handoff:t})}isTabAlive(t){let n=this.state.tabs.find(r=>r.logicalTabId===t);return n?n.updatedAt>re()-2*this.heartbeatMs:!1}broadcastSessionToken(t,n){this.channel&&this.channel.postMessage({type:"session_token",runtimeId:this.runtimeId,token:t,expiresAt:n})}broadcastProjection(t){this.channel&&this.channel.postMessage({type:"projection",runtimeId:this.runtimeId,projection:t})}acquireWorkflowLock(t,n){let r=!1;return this.mutate("local",o=>{let s=o.workflowLock;if(!n?.force&&s&&s.runtimeId!==this.runtimeId&&s.expiresAt>re()){let i=o.tabs.find(c=>c.runtimeId===s.runtimeId);if(i&&i.updatedAt>re()-2*this.heartbeatMs){r=!1;return}}o.workflowLock={runtimeId:this.runtimeId,runId:t,lockedAt:re(),expiresAt:re()+this.workflowLockMs},r=!0}),r}releaseWorkflowLock(t){this.mutate("local",n=>{n.workflowLock&&n.workflowLock.runId===t&&(n.workflowLock=void 0)})}isWorkflowLocked(){let t=this.state.workflowLock;return!t||t.runtimeId===this.runtimeId?!1:t.expiresAt>re()}getWorkflowLockInfo(){let t=this.state.workflowLock;return!t||t.expiresAt<=re()?{locked:!1}:{locked:!0,holderRuntimeId:t.runtimeId,runId:t.runId}}async handleInboundRpcRequest(t){let{requestId:n,sourceRuntimeId:r,method:o,params:s}=t;if(!this.rpcRequestHandler){this.channel?.postMessage({type:"rpc_response",requestId:n,sourceRuntimeId:this.runtimeId,targetRuntimeId:r,ok:!1,error:{message:"No RPC handler registered",code:"NO_HANDLER"}});return}try{let i=await this.rpcRequestHandler({method:o,params:s});this.channel?.postMessage({type:"rpc_response",requestId:n,sourceRuntimeId:this.runtimeId,targetRuntimeId:r,ok:!0,result:i})}catch(i){this.channel?.postMessage({type:"rpc_response",requestId:n,sourceRuntimeId:this.runtimeId,targetRuntimeId:r,ok:!1,error:{message:i?.message||String(i)}})}}handleInboundRpcResponse(t){let{requestId:n,ok:r,result:o,error:s}=t,i=this.pendingRpcRequests.get(n);i&&(this.pendingRpcRequests.delete(n),window.clearTimeout(i.timer),r?i.resolve(o):i.reject(new Error(s?.message||"Cross-tab RPC failed")))}handleRemoteNavigation(t){let{runtimeId:n,url:r,title:o}=t;this.mutate("local",s=>{let i=s.tabs.find(a=>a.runtimeId===n);i&&(i.url=r||i.url,i.title=o||i.title,i.updatedAt=re())})}handleRemoteTabClosing(t){let{runtimeId:n}=t,r=t?.handoff,o=typeof r?.handoffId=="string"&&r.handoffId.trim()?r.handoffId.trim():void 0,s=typeof r?.runId=="string"&&r.runId.trim()?r.runId.trim():void 0,i=typeof r?.targetUrl=="string"&&r.targetUrl.trim()?r.targetUrl.trim():void 0,a=Number(r?.ts)||re();this.mutate("local",c=>{let l=re(),d=c.tabs.find(p=>p.runtimeId===n);d&&(d.runtimeId=void 0,d.updatedAt=l,d.detachedAt=l,d.detachedReason=o?"navigation_handoff":"tab_close",d.handoffId=o,d.handoffRunId=s,d.handoffTargetUrl=i,d.handoffCreatedAt=a),c.lease?.holderRuntimeId===n&&(c.lease=void 0),c.workflowLock?.runtimeId===n&&(c.workflowLock=void 0),c.activeRun?.runtimeId===n&&(c.activeRun=void 0),c.activeLogicalTabId&&!c.tabs.some(p=>p.logicalTabId===c.activeLogicalTabId)&&(c.activeLogicalTabId=this.localLogicalTabId||c.tabs[0]?.logicalTabId)}),this.notifyRoleChange()}lastFullHeartbeatAt=0;heartbeat(){if(this.closing)return;this.heartbeatCount++;let t=Da(window.location.href),n=document.title||void 0,r=re(),o=this.state.lease,s=o&&o.holderRuntimeId===this.runtimeId&&o.expiresAt>r,i=r-this.lastFullHeartbeatAt<5e3,a=this.state.tabs.find(l=>l.runtimeId===this.runtimeId);if(s&&i&&a){a.url=t||a.url,a.title=n||a.title,a.updatedAt=r,a.detachedAt=void 0,a.detachedReason=void 0,this.state.updatedAt=r;return}this.lastFullHeartbeatAt=r;let c=this.heartbeatCount%e.LS_HEARTBEAT_DIVISOR!==0;this.mutate("local",l=>{let d=l.tabs.find(Q=>Q.runtimeId===this.runtimeId);if(d)d.url=t||d.url,d.title=n||d.title,d.updatedAt=re(),d.detachedAt=void 0,d.detachedReason=void 0;else{let Q=re(),oe=l.nextLogicalTabId++;l.tabs.push({logicalTabId:oe,runtimeId:this.runtimeId,url:t,title:n,openedAt:Q,updatedAt:Q,external:!1,detachedAt:void 0,detachedReason:void 0})}let p=l.lease,v=!p||p.expiresAt<=re(),m=p&&p.holderRuntimeId!==this.runtimeId&&p.expiresAt>re()?p.holderRuntimeId:void 0,g=m?l.tabs.find(Q=>Q.runtimeId===m):void 0,T=!!(g&&g.updatedAt>re()-2*this.heartbeatMs),D=l.workflowLock?.runtimeId,N=D?l.tabs.find(Q=>Q.runtimeId===D):void 0,A=!!(N&&N.runtimeId&&N.runtimeId!==this.runtimeId&&N.updatedAt>re()-2*this.heartbeatMs);if(l.workflowLock&&l.workflowLock.runtimeId!==this.runtimeId&&(l.workflowLock.expiresAt<=re()||!A)&&(l.workflowLock=void 0),l.workflowLock&&l.workflowLock.runtimeId!==this.runtimeId&&A&&N&&(l.activeLogicalTabId=N.logicalTabId),l.activeRun?.runtimeId&&l.activeRun.runtimeId!==this.runtimeId){let Q=l.tabs.find(me=>me.runtimeId===l.activeRun?.runtimeId);Q&&Q.updatedAt>re()-2*this.heartbeatMs||(l.activeRun=void 0)}let S=!!(l.activeRun?.runtimeId&&l.activeRun.runtimeId!==this.runtimeId),F=!!(l.workflowLock&&l.workflowLock.runtimeId!==this.runtimeId&&l.workflowLock.expiresAt>re()),$=!!(m&&!T&&!S&&!F);(v||p?.holderRuntimeId===this.runtimeId||$)&&(l.lease={holderRuntimeId:this.runtimeId,expiresAt:re()+this.leaseMs,updatedAt:re()},!l.activeLogicalTabId&&this.localLogicalTabId&&(l.activeLogicalTabId=this.localLogicalTabId)),l.workflowLock?.runtimeId===this.runtimeId&&(l.workflowLock.expiresAt=re()+this.workflowLockMs),this.pruneDetachedTabs(l)},{skipPersist:c}),this.notifyRoleChange()}reloadFromStorage(){let t=this.loadState();return this.normalizeDraftTabs(t),(t.seq>this.state.seq||t.seq===this.state.seq&&t.updatedAt>this.state.updatedAt)&&(this.state=t,this.syncLocalLogicalTabId(),this.onStateChange?.(this.state,"remote")),this.closing=!1,this.state}claimLease(t){let n=!1;return this.mutate("local",r=>{let o=r.lease,s=!o||o.expiresAt<=re();(t||s||o?.holderRuntimeId===this.runtimeId)&&(r.lease={holderRuntimeId:this.runtimeId,expiresAt:re()+this.leaseMs,updatedAt:re()},!r.activeLogicalTabId&&this.localLogicalTabId&&(r.activeLogicalTabId=this.localLogicalTabId),n=!0)}),this.notifyRoleChange(),n}notifyRoleChange(){this.getRole()!==this.lastNotifiedRole&&(this.roleChangeTimer!=null&&window.clearTimeout(this.roleChangeTimer),this.roleChangeTimer=window.setTimeout(()=>{this.roleChangeTimer=null;let n=this.getRole();n!==this.lastNotifiedRole&&(this.lastNotifiedRole=n,this.onRoleChange?.(n,{localLogicalTabId:this.localLogicalTabId,activeLogicalTabId:this.state.activeLogicalTabId,holderRuntimeId:this.state.lease?.holderRuntimeId}))},e.ROLE_CHANGE_DEBOUNCE_MS),typeof this.roleChangeTimer?.unref=="function"&&this.roleChangeTimer.unref())}syncLocalLogicalTabId(){let t=this.state.tabs.find(n=>n.runtimeId===this.runtimeId);this.localLogicalTabId=t?.logicalTabId}mutate(t,n,r){if(t==="local")try{let i=window.localStorage.getItem(this.key);if(i){let a=ds(JSON.parse(i),this.siteId,this.sessionId);(a.seq>this.state.seq||a.seq===this.state.seq&&a.updatedAt>this.state.updatedAt)&&(this.state=a)}}catch{}let o=ds(this.state,this.siteId,this.sessionId);n(o),this.normalizeDraftTabs(o),o.seq=Math.max(1,Number(o.seq)||1)+(t==="local"?1:0),o.updatedAt=re(),this.state=o,this.syncLocalLogicalTabId(),t==="local"&&(r?.skipPersist||this.persistState(),this.channel&&this.channel.postMessage({type:"state",sourceRuntimeId:this.runtimeId,state:this.state}));let s=this.computeStateHash(this.state);s!==this.lastNotifiedStateHash&&(this.lastNotifiedStateHash=s,this.onStateChange?.(this.state,t))}computeStateHash(t){let n=t.tabs;return`${n.length}:${n.map(r=>`${r.logicalTabId}|${r.runtimeId||""}|${r.url}|${r.title||""}|${!!r.detachedAt}`).join(";")}:${t.activeLogicalTabId??""}:${t.lease?.holderRuntimeId??""}:${t.activeRun?.runId??""}:${t.activeRun?.runtimeId??""}:${t.workflowLock?.runtimeId??""}:${t.taskEpoch??""}:${t.uiMessages?.length??0}:${t.timeline?.length??0}:${t.transientStatus?.text??t.uiStatus??""}`}applyIncomingState(t){t&&(t.seq<this.state.seq||t.seq===this.state.seq&&t.updatedAt<=this.state.updatedAt||(this.pruneDetachedTabs(t),this.normalizeDraftTabs(t),this.state=t,this.syncLocalLogicalTabId(),this.onStateChange?.(this.state,"remote"),this.notifyRoleChange()))}loadState(){try{let t=window.localStorage.getItem(this.key);if(!t)return Il(this.siteId,this.sessionId);let n=JSON.parse(t);return ds(n,this.siteId,this.sessionId)}catch(t){return console.warn("[rover] Failed to load shared state from localStorage:",t),Il(this.siteId,this.sessionId)}}persistState(){try{window.localStorage.setItem(this.key,JSON.stringify(this.state))}catch{}}};var hp="https://extensionrouter.rtrvr.ai",fp="rvrsess_";function ps(e,t){let n=Number(e);return Number.isFinite(n)?n:t}function Vy(e,t=8e3){let n=String(e??"");return n.length<=t?n:`${n.slice(0,t)}\u2026`}function zy(e){let t=String(e||"").trim();if(!t)return"";try{let n=new URL(t);return n.hash="",`${n.origin}${n.pathname}${n.search}`}catch{return t}}function xl(e){return e==null?"null":typeof e=="number"?Number.isFinite(e)?String(e):JSON.stringify(String(e)):typeof e=="boolean"?e?"true":"false":typeof e=="string"?JSON.stringify(e):Array.isArray(e)?`[${e.map(t=>xl(t)).join(",")}]`:typeof e=="object"?`{${Object.entries(e).filter(([n])=>n!=="updatedAt"&&n!=="ts"&&n!=="timestamp").sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>`${JSON.stringify(n)}:${xl(r)}`).join(",")}}`:JSON.stringify(String(e))}function jy(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return`sd:${(t>>>0).toString(16)}`}function pp(e){let t=Array.isArray(e.sharedState?.tabs)?e.sharedState.tabs:[],n=e.runtimeState?.workerState||{},r=e.runtimeState?.taskTabScope||{},o=e.sharedState?.activeRun||{},s=e.runtimeState?.pendingRun||{},i=Array.isArray(n.plannerHistory)?n.plannerHistory:[],a=Array.isArray(n.agentPrevSteps)?n.agentPrevSteps:[],c=i.length?i[i.length-1]:void 0,l=a.length?a[a.length-1]:void 0,d=i.map(m=>String(m?.id||m?.toolCall?.name||m?.toolName||m?.name||"")),p=a.map(m=>String(m?.id||m?.toolCall?.name||m?.toolName||m?.name||"")),v={sessionId:String(e.sessionId||""),shared:{taskEpoch:Number(e.sharedState?.taskEpoch||0),taskId:String(e.sharedState?.task?.taskId||""),taskStatus:String(e.sharedState?.task?.status||""),activeRunId:String(o.runId||""),activeRunStatus:String(o.status||""),tabs:t.map(m=>({logicalTabId:Number(m?.logicalTabId)||0,scope:String(m?.scope||""),status:String(m?.status||""),url:zy(m?.url),external:!!m?.external}))},runtime:{taskEpoch:Number(e.runtimeState?.taskEpoch||0),activeTaskId:String(e.runtimeState?.activeTask?.taskId||""),activeTaskStatus:String(e.runtimeState?.activeTask?.status||""),pendingRunId:String(s.id||""),pendingRunStatus:String(s.status||""),pendingResumeRequired:s.resumeRequired===!0,worker:{taskBoundaryId:String(n.taskBoundaryId||""),trajectoryId:String(n.trajectoryId||""),pendingAskBoundaryId:String(n.pendingAskUser?.boundaryId||""),plannerHistoryCount:i.length,agentPrevStepsCount:a.length,lastPlannerStepId:String(c?.id||""),lastAgentStepId:String(l?.id||""),plannerStepMarkers:d,agentStepMarkers:p},continuity:{boundaryId:String(r.boundaryId||""),seedTabId:Number(r.seedTabId||0),touchedTabIds:Array.isArray(r.touchedTabIds)?r.touchedTabIds.map(m=>Number(m)||0).filter(m=>m>0):[]}}};return jy(xl(v))}function Gy(e){let t=hp,n=String(e||t).trim().replace(/\/+$/,"");if(!n)return t;if(n.endsWith("/extensionRouter/v2/rover"))return n.slice(0,-25);if(n.endsWith("/v2/rover"))return n.slice(0,-9);let r=n.match(/\/v\d+\/rover$/);return r?.[0]?n.slice(0,-r[0].length):n.endsWith("/extensionRouter")?n.slice(0,-16):n}function mp(e){let t=new Set,n=[];for(let r of e){let o=String(r||"").trim().replace(/\/+$/,"");!o||t.has(o)||(t.add(o),n.push(o))}return n}function Xy(e){let t=Gy(e),n=String(e||"").trim().replace(/\/+$/,"");return n.endsWith("/v2/rover")||n.endsWith("/extensionRouter/v2/rover")?mp([n.replace("/extensionRouter/v2/rover","/v2/rover"),`${t}/v2/rover`]):mp([`${t}/v2/rover`])}function Mo(e,t){let n=new Error(e);return n.details=t,n}function Ky(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}var Ua=class{endpoint;endpointCandidates;endpointIndex=0;getToken;siteId;visitorId;ttlHours;flushIntervalMs;pullIntervalMs;minFlushIntervalMs;maxSnapshotBytes;shouldSync;shouldWrite;buildCheckpoint;onCheckpoint;onStateChange;onError;idlePullIntervalMs;started=!1;idleMode=!1;dirty=!1;flushTimer=null;pullTimer=null;lastFlushAt=0;lastPullAt=0;lastUploadedRevision="";lastAppliedRemoteUpdatedAt=0;lastAppliedRemoteDigest="";pushInFlight=!1;pullInFlight=!1;state="active";visibilityListener=null;constructor(t){let n=String(t.authToken||"").trim(),r=t.getSessionToken,o=r?String(r()||"").trim():n;if(!o||!o.startsWith(fp))throw Mo("Rover cloud checkpoint requires a session token (rvrsess_...).");this.endpointCandidates=Xy(t.apiBase),this.endpoint=this.endpointCandidates[0]||`${hp}/v2/rover`,this.getToken=()=>{let s=r?String(r()||"").trim():n;if(!s||!s.startsWith(fp))throw Mo("Rover cloud checkpoint requires an active session token.");return s},this.siteId=t.siteId,this.visitorId=t.visitorId,this.ttlHours=Math.max(1,Math.min(168,Math.floor(ps(t.ttlHours,1)))),this.flushIntervalMs=Math.max(2e3,Math.floor(ps(t.flushIntervalMs,3e4))),this.pullIntervalMs=Math.max(2e3,Math.floor(ps(t.pullIntervalMs,3e4))),this.idlePullIntervalMs=12e4,this.minFlushIntervalMs=Math.max(1e3,Math.floor(ps(t.minFlushIntervalMs,2500))),this.maxSnapshotBytes=Math.max(64e3,Math.min(1048576,Math.floor(ps(t.maxSnapshotBytes,262144)))),this.shouldSync=t.shouldSync||(()=>!0),this.shouldWrite=t.shouldWrite||(()=>!0),this.buildCheckpoint=t.buildCheckpoint,this.onCheckpoint=t.onCheckpoint,this.onStateChange=t.onStateChange,this.onError=t.onError}start(){this.started||(this.started=!0,this.setState("active"),typeof document<"u"&&!this.visibilityListener&&(this.visibilityListener=()=>{if(this.started){if(document.hidden){this.enterIdleMode();return}this.enterActiveMode(),this.shouldSync()&&(this.pull(!0),this.dirty&&this.flush(!0))}},document.addEventListener("visibilitychange",this.visibilityListener)),this.flushTimer=window.setInterval(()=>{this.shouldSync()&&this.flush(!1)},this.flushIntervalMs),this.pullTimer=window.setInterval(()=>{this.shouldSync()&&this.pull(!1)},this.pullIntervalMs),this.pull(!0))}stop(){this.started&&(this.started=!1,this.idleMode=!1,this.flushTimer!=null&&(window.clearInterval(this.flushTimer),this.flushTimer=null),this.pullTimer!=null&&(window.clearInterval(this.pullTimer),this.pullTimer=null),this.visibilityListener&&typeof document<"u"&&(document.removeEventListener("visibilitychange",this.visibilityListener),this.visibilityListener=null),this.flush(!0))}markDirty(){this.dirty=!0}syncNow(t){let n=t?.push!==!1,r=t?.pull!==!1;n&&this.flush(!0),r&&this.pull(!0)}syncPullFirst(){(async()=>(await this.pull(!0),await this.flush(!0)))()}pullNow(t=!0){this.pull(!!t)}enterIdleMode(){this.idleMode||(this.idleMode=!0,this.flushTimer!=null&&(window.clearInterval(this.flushTimer),this.flushTimer=null),this.pullTimer!=null&&(window.clearInterval(this.pullTimer),this.pullTimer=null),this.started&&(this.pullTimer=window.setInterval(()=>{this.shouldSync()&&this.pull(!1)},this.idlePullIntervalMs)))}enterActiveMode(){this.idleMode&&(this.idleMode=!1,this.started&&(this.flushTimer==null&&(this.flushTimer=window.setInterval(()=>{this.shouldSync()&&this.flush(!1)},this.flushIntervalMs)),this.pullTimer==null&&(this.pullTimer=window.setInterval(()=>{this.shouldSync()&&this.pull(!1)},this.pullIntervalMs))))}getActiveEndpoint(){return this.endpointCandidates.length?this.endpointCandidates[this.endpointIndex]||this.endpoint:this.endpoint}rotateEndpoint(){this.endpointCandidates.length<=1||(this.endpointIndex=(this.endpointIndex+1)%this.endpointCandidates.length,this.endpoint=this.endpointCandidates[this.endpointIndex]||this.endpoint)}async requestJson(t,n){let r=Math.max(1,this.endpointCandidates.length||1),o;for(let s=0;s<r;s+=1){let i=(this.endpointIndex+s)%r,a=this.endpointCandidates[i]||this.endpoint;try{let c=await fetch(`${a}${t}`,n),l=await c.json().catch(()=>{});if(c.status===404||c.status===405){o=Mo(`Checkpoint endpoint unavailable at ${a}${t}`,{status:c.status,payload:l});continue}return this.endpointIndex=i,this.endpoint=a,{response:c,payload:l}}catch(c){o=c}}throw o instanceof Error?o:Mo(`Checkpoint request failed for ${t}`)}async flush(t){if(this.pushInFlight||this.idleMode||this.state==="paused_auth"||!t&&!this.shouldSync()||!this.dirty&&!t||!this.shouldWrite()||!t&&Date.now()-this.lastFlushAt<this.minFlushIntervalMs)return;let n=this.buildCheckpoint();if(!n)return;let r=pp(n);if(n.digest=r,!t&&r===this.lastUploadedRevision){this.dirty=!1;return}this.pushInFlight=!0;try{let o=await this.callCheckpointApi("session_snapshot_upsert",{siteId:this.siteId,visitorId:this.visitorId,sessionId:n.sessionId,ttlHours:this.ttlHours,updatedAt:n.updatedAt,checkpoint:n});this.lastFlushAt=Date.now(),o?.saved&&(this.dirty=!1,this.lastUploadedRevision=r),o?.stale&&o?.checkpoint&&typeof o.checkpoint=="object"&&(this.applyRemoteCheckpoint(o.checkpoint,"push_stale"),this.dirty=!1),this.setState("active")}catch(o){this.handleCheckpointError(o,"session_snapshot_upsert")}finally{this.pushInFlight=!1}}async pull(t){if(!this.pullInFlight&&this.state!=="paused_auth"&&!(!t&&!this.shouldSync())&&!(!t&&Date.now()-this.lastPullAt<this.pullIntervalMs)){this.pullInFlight=!0;try{let n=await this.callCheckpointApi("session_projection_get",{siteId:this.siteId,visitorId:this.visitorId,sessionId:this.buildCheckpoint()?.sessionId});if(this.lastPullAt=Date.now(),!n?.found||!n?.checkpoint||typeof n.checkpoint!="object")return;this.applyRemoteCheckpoint(n.checkpoint,"pull"),this.setState("active")}catch(n){this.handleCheckpointError(n,"session_projection_get")}finally{this.pullInFlight=!1}}}applyRemoteCheckpoint(t,n){let r=Math.max(0,Math.floor(ps(t?.updatedAt,0))),o=String(t?.digest||"").trim()||pp(t);r<=this.lastAppliedRemoteUpdatedAt&&(!o||o===this.lastAppliedRemoteDigest)||(this.lastAppliedRemoteUpdatedAt=r,o&&(this.lastAppliedRemoteDigest=o),this.onCheckpoint(t,n))}async callCheckpointApi(t,n){return this.callRoverV2(t,n)}async callRoverV2(t,n){let r=this.getToken();if(t==="session_snapshot_upsert"){let c=JSON.stringify({requestNonce:Ky(),sessionToken:r,sessionId:n?.sessionId,visitorId:n?.visitorId,ttlHours:n?.ttlHours,updatedAt:n?.updatedAt,version:n?.checkpoint?.version||n?.version||1,checkpoint:n?.checkpoint});if(c.length>this.maxSnapshotBytes)throw Mo("Checkpoint snapshot exceeds maxSnapshotBytes limit.",{action:t,size:c.length,maxSnapshotBytes:this.maxSnapshotBytes,code:"SNAPSHOT_TOO_LARGE"});let l=c.length<6e4,{response:d,payload:p}=await this.requestJson("/snapshot",{method:"POST",headers:{"Content-Type":"text/plain"},keepalive:l,body:c});if(!d.ok||!p?.success)throw Mo(`Checkpoint HTTP ${d.status}`,{action:t,status:d.status,payload:p});return{saved:!!p?.data?.saved,stale:p?.data?.stale===!0,checkpoint:p?.data?.checkpoint,updatedAt:Number(p?.data?.updatedAt)||void 0}}let o=new URLSearchParams({sessionId:String(n?.sessionId||""),sessionToken:r,includeSnapshot:"true"}),{response:s,payload:i}=await this.requestJson(`/state?${o.toString()}`,{method:"GET"});if(!s.ok||!i?.success)throw Mo(`Checkpoint HTTP ${s.status}`,{action:t,status:s.status,payload:i});let a=i?.data?.projection?.snapshot??i?.data?.snapshot;return{found:!!a,checkpoint:a}}setState(t,n){this.state!==t&&(this.state=t,this.onStateChange?.(t,n||{}))}handleCheckpointError(t,n){let r=this.normalizeCheckpointError(t),o=this.isAuthFailure(r);o&&this.setState("paused_auth",{reason:"auth_failed",action:n,code:r.code,message:r.message}),this.onError?.(t,{action:n,state:this.state,code:r.code,message:r.message,status:r.status,paused:o})}normalizeCheckpointError(t){let n=t,r=n?.details,o=r?.payload||r?.response||r,s=o?.errorCode||o?.errorDetails?.code||o?.error?.code||o?.code,i=o?.error||o?.errorDetails?.message||o?.error?.message||n?.message||"Checkpoint request failed",a=Number(r?.status);return{code:typeof s=="string"?s:void 0,message:Vy(i,1e3),status:Number.isFinite(a)?a:void 0}}isAuthFailure(t){let n=String(t.code||"").toUpperCase();return n==="INVALID_API_KEY"||n==="MISSING_API_KEY"||n==="UNAUTHENTICATED"||n==="PERMISSION_DENIED"?!0:t.status===401||t.status===403}};var Yy="rover-runtime-state-db",Fa="runtime-state",Sl=class{read(t){try{let n=window.sessionStorage.getItem(t);return n?JSON.parse(n):null}catch{return null}}write(t,n){try{window.sessionStorage.setItem(t,JSON.stringify(n))}catch{}}remove(t){try{window.sessionStorage.removeItem(t)}catch{}}},Rl=class{dbPromise=null;openDb(){return this.dbPromise?this.dbPromise:(this.dbPromise=new Promise((t,n)=>{if(typeof indexedDB>"u"){n(new Error("indexedDB unavailable"));return}let r=indexedDB.open(Yy,1);r.onupgradeneeded=()=>{let o=r.result;o.objectStoreNames.contains(Fa)||o.createObjectStore(Fa)},r.onsuccess=()=>{t(r.result)},r.onerror=()=>{n(r.error||new Error("indexedDB open failed"))}}).catch(t=>{throw this.dbPromise=null,t}),this.dbPromise)}async withStore(t,n){let r=await this.openDb();return new Promise((o,s)=>{let i=r.transaction(Fa,t),a=i.objectStore(Fa);n(a,o,s),i.onerror=()=>{s(i.error||new Error("indexedDB transaction failed"))}})}async read(t){try{return await this.withStore("readonly",(n,r,o)=>{let s=n.get(t);s.onsuccess=()=>{let i=s.result;r(i??null)},s.onerror=()=>{o(s.error||new Error("indexedDB read failed"))}})}catch{return null}}async write(t,n){await this.withStore("readwrite",(r,o,s)=>{let i=r.put(n,t);i.onsuccess=()=>o(),i.onerror=()=>{s(i.error||new Error("indexedDB write failed"))}}).catch(()=>{})}async remove(t){await this.withStore("readwrite",(n,r,o)=>{let s=n.delete(t);s.onsuccess=()=>r(),s.onerror=()=>{o(s.error||new Error("indexedDB delete failed"))}}).catch(()=>{})}};function gp(){let e=new Sl,t=new Rl;return{readSync:n=>e.read(n),readSyncAny:n=>{for(let r of n){if(!r)continue;let o=e.read(r);if(o)return o}return null},readAsync:async n=>t.read(n),readAsyncAny:async n=>{for(let r of n){if(!r)continue;let o=await t.read(r);if(o)return o}return null},write:(n,r)=>{e.write(n,r),t.write(n,r)},remove:n=>{e.remove(n),t.remove(n)}}}var Qy="rover_xdr_";var Jy=new Set(["co.uk","org.uk","gov.uk","ac.uk","com.au","net.au","org.au","co.jp","com.br","com.mx","com.sg","co.in"]);function yp(e){let t=String(e||"").trim().toLowerCase();if(!t)return"";if(t==="localhost"||/^\d+\.\d+\.\d+\.\d+$/.test(t))return t;let n=t.split(".").filter(Boolean);if(n.length<2)return t;let r=`${n[n.length-2]}.${n[n.length-1]}`;return n.length>=3&&Jy.has(r)?`${n[n.length-3]}.${r}`:r}function Al(e){return`${Qy}${e.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,40)}`}function Ha(e){let t=String(e||"").trim();if(!t)return"";try{let n=new URL(t,window.location.href);return n.hash="",n.toString()}catch{return t}}function bp(e){let t=String(e||"").trim();return!t||t==="/"?"/":t.replace(/\/\/+/g,"/").replace(/\/+$/,"")||"/"}function Zy(e,t){let n=new Set;for(let[r]of e.entries())n.add(r);for(let r of n){let o=e.getAll(r);if(!o.length)continue;let s=t.getAll(r);if(!s.length)return!1;let i=new Map;for(let a of s)i.set(a,(i.get(a)||0)+1);for(let a of o){let c=i.get(a)||0;if(c<=0)return!1;i.set(a,c-1)}}return!0}function Cl(e,t){let n=Ha(e),r=Ha(t);if(!n||!r)return!1;try{let o=new URL(n,window.location.href),s=new URL(r,window.location.href);return o.origin.toLowerCase()!==s.origin.toLowerCase()||bp(o.pathname)!==bp(s.pathname)?!1:Zy(o.searchParams,s.searchParams)}catch{return n===r}}function vp(e,t){try{let n=Al(e),r=yp(window.location.hostname),o=encodeURIComponent(JSON.stringify(t)),s=window.location.protocol==="https:",i=[`${n}=${o}`,"path=/","max-age=300","SameSite=Lax"];r&&r!=="localhost"&&!/^\d+\.\d+\.\d+\.\d+$/.test(r)&&i.push(`domain=.${r}`),s&&i.push("Secure"),document.cookie=i.join("; ")}catch{}}function Ml(e,t){try{let n=Al(e),r=document.cookie.split(";"),o=Math.max(1e3,Number(t?.maxAgeMs)||300*1e3),s=Ha(t?.currentUrl||window.location.href),i=String(t?.currentHost||window.location.hostname||"").trim().toLowerCase(),a=String(t?.expectedHandoffId||"").trim(),c=t?.requireTargetMatch!==!1;for(let l of r){let[d,...p]=l.trim().split("=");if(d===n){let v=p.join("="),m=JSON.parse(decodeURIComponent(v));if(!m.timestamp||Date.now()-m.timestamp>=o)continue;let g=String(m.handoffId||m.handoff?.handoffId||"").trim();if(!g||a&&g!==a)continue;if(c){let T=Ha(m.targetUrl||m.handoff?.targetUrl||"");if(!T||!s||!Cl(T,s))continue}if(m.sourceHost){let T=String(m.sourceHost||"").trim().toLowerCase();if(T&&i&&T===i&&!a)continue}if(m.sessionId&&typeof m.sessionId=="string")return m}}}catch{}return null}function oi(e){try{let t=Al(e),n=yp(window.location.hostname),r=window.location.protocol==="https:",o=[`${t}=`,"path=/","max-age=0","SameSite=Lax"];n&&n!=="localhost"&&!/^\d+\.\d+\.\d+\.\d+$/.test(n)&&o.push(`domain=.${n}`),r&&o.push("Secure"),document.cookie=o.join("; ")}catch{}}function Ae(e){return String(e||"").trim()||void 0}function ev(e){let t=Ae(e.incomingBoundaryId),n=Ae(e.currentBoundaryId);return!t||t===n?!1:n?e.taskEpochAdvanced===!0&&e.hasPendingRun!==!0:e.allowBootstrapAdoption!==!1}function Tp(e){let t=Ae(e.incomingBoundaryId),n=Ae(e.currentBoundaryId);return t&&n&&t===n?{accept:!0,reason:"match"}:t?ev(e)?{accept:!0,adoptedBoundaryId:t,reason:n?"epoch_adopt":"bootstrap_adopt"}:{accept:!1,reason:"mismatch"}:!n&&e.allowBootstrapAdoption!==!1?{accept:!0,reason:"bootstrap_adopt"}:{accept:!1,reason:"missing_incoming"}}function tv(){return[{kind:"create_task"},{kind:"rotate_boundary"},{kind:"assign_worker"}]}function Nl(){return[{kind:"release_worker"},{kind:"clear_run"}]}function qa(){return[{kind:"release_worker"},{kind:"clear_run"}]}function No(){return[{kind:"archive_task"},{kind:"clear_run"},{kind:"clear_worker_state"}]}var nv={idle:{START:{to:"running",sideEffects:()=>tv()}},running:{AGENT_PROGRESS:{to:"running",sideEffects:()=>[{kind:"update_timestamps",ts:Date.now()}]},NAVIGATION_STARTED:{to:"running",sideEffects:e=>[{kind:"record_navigation",targetUrl:e.targetUrl,isCrossHost:e.isCrossHost},{kind:"update_timestamps",ts:Date.now()}]},NAVIGATION_COMPLETED:{to:"running",sideEffects:()=>[{kind:"clear_navigation"},{kind:"update_timestamps",ts:Date.now()}]},ASK_USER:{to:"awaiting_user",sideEffects:e=>[{kind:"set_pending_questions",questions:e.questions||[]}]},PAUSE:{to:"paused",sideEffects:()=>[{kind:"snapshot_worker_state"},{kind:"release_worker"}]},BLOCK:{to:"blocked",sideEffects:e=>[{kind:"record_block_reason",reason:e.reason},{kind:"notify_agent_blocked"}]},COMPLETE:{to:"completed",sideEffects:()=>Nl()},FAIL:{to:"failed",sideEffects:e=>[...Nl(),{kind:"emit_error",error:e.error}]},CANCEL:{to:"cancelled",sideEffects:()=>qa()},RESET:{to:"idle",sideEffects:()=>No()}},awaiting_user:{USER_RESPONDED:{to:"running",sideEffects:()=>[{kind:"clear_questions"}]},PAUSE:{to:"paused",sideEffects:()=>[{kind:"snapshot_worker_state"},{kind:"release_worker"}]},CANCEL:{to:"cancelled",sideEffects:()=>qa()},RESET:{to:"idle",sideEffects:()=>No()}},paused:{RESUME:{to:"running",sideEffects:()=>[{kind:"restore_snapshot"},{kind:"assign_worker"}]},CANCEL:{to:"cancelled",sideEffects:()=>qa()},RESET:{to:"idle",sideEffects:()=>No()}},blocked:{UNBLOCK:{to:"running",sideEffects:()=>[{kind:"resume_from_block"}]},CANCEL:{to:"cancelled",sideEffects:()=>qa()},FAIL:{to:"failed",sideEffects:e=>[...Nl(),{kind:"emit_error",error:e.error}]},RESET:{to:"idle",sideEffects:()=>No()}},completed:{RESET:{to:"idle",sideEffects:()=>No()}},failed:{RESET:{to:"idle",sideEffects:()=>No()}},cancelled:{RESET:{to:"idle",sideEffects:()=>No()}}};function rv(e,t,n){let o=nv[e]?.[t.type];if(!o)return{next:e,rejected:!0,rejectedReason:`Invalid transition: ${e} + ${t.type}`,sideEffects:[]};let s=o.to;return e==="paused"&&t.type==="RESUME"&&n?.prePauseState==="awaiting_user"&&(s="awaiting_user"),{next:s,rejected:!1,sideEffects:o.sideEffects(t,n)}}function si(e){return e==="completed"||e==="failed"||e==="cancelled"}function kp(e){switch(e){case"idle":return"running";case"running":return"running";case"awaiting_user":return"running";case"paused":return"running";case"blocked":return"running";case"completed":return"completed";case"failed":return"failed";case"cancelled":return"cancelled";default:return"running"}}function ii(e,t){if(!e)return"idle";switch(e){case"running":{let n=String(t||"").trim().toLowerCase();return n.includes("waiting_for_input")||n.includes("awaiting_user")?"awaiting_user":"running"}case"completed":return"completed";case"cancelled":return"cancelled";case"failed":return"failed";case"ended":return"cancelled";default:return"idle"}}function _p(e,t){let n=rv(e.state,t,e);if(n.rejected)return{record:e,result:n};let r=Date.now(),o={...e,state:n.next};if(n.next==="paused"&&!o.pausedAt&&(o.pausedAt=r,o.prePauseState=e.state==="awaiting_user"?"awaiting_user":"running"),n.next==="blocked"){o.blockedAt=r;let s=t;o.blockReason=s.reason}return n.next==="running"&&e.state==="paused"&&(o.pausedAt=void 0,o.prePauseState=void 0),n.next==="running"&&e.state==="blocked"&&(o.blockedAt=void 0,o.blockReason=void 0),n.next==="running"&&e.state==="awaiting_user"&&(o.pausedAt=void 0,o.prePauseState=void 0),si(n.next)&&(o.endedAt=r),t.type==="COMPLETE"&&t.summary&&(o.summary=t.summary),t.type==="RESET"&&(o.pausedAt=void 0,o.prePauseState=void 0,o.blockedAt=void 0,o.blockReason=void 0,o.endedAt=void 0),{record:o,result:n}}function Ll(e){let t=Date.now(),n=e?.taskId||ov(),r=e?.boundaryId||sv();return{taskId:n,state:"idle",boundaryId:r,startedAt:t,uiMessages:[],timeline:[],seedChatLog:[],tabIds:[],...e}}function ov(){return`task_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function sv(){return`bnd_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function Wa(e){return e==="running"}function Ep(e){return e.resumeRequired?e.hasLiveRemoteController?"defer_remote_owner":e.policy==="never"?"cancel_resume":e.policy==="confirm"?"prompt_resume":"auto_resume":"noop"}function wp(e){let t=String(e.serverRunId||"").trim();if(!t||e.ignoredRunIds?.has(t))return!1;let n=String(e.localPendingRunId||"").trim();return!n||n!==t}function Ip(e){let t=String(e.serverRunId||"").trim();if(!t||!e.ignoredRunIds?.has(t))return!1;let n=String(e.runStatus||"").trim().toLowerCase();return!(n==="completed"||n==="cancelled"||n==="failed"||n==="ended")}function xp(e){return!(e.taskStatus!=="running"||!e.activeRunId||!e.activeRunText||e.hasPendingRun||e.ignoredRunIds?.has(e.activeRunId))}function Dl(e){return!!(e.localTaskStatus!=="running"||e.remoteTaskStatus&&e.remoteTaskStatus!=="running"||e.mode==="observer"&&!e.hasRemoteActiveRun)}function Sp(e){let{type:t,messageRunId:n,messageTaskBoundaryId:r,currentTaskBoundaryId:o,pendingRunId:s,sharedActiveRunId:i,authoritativeActiveRunId:a,taskStatus:c,ignoredRunIds:l}=e,d=Ae(o),p=Ae(r),v=t==="run_state_transition"||t==="run_completed";if((t==="run_started"||t==="run_resumed"||v)&&d&&(!p||p!==d)&&!(v&&!!n&&!!s&&n===s&&c==="running"))return!0;if(!n&&t!=="run_started"&&t!=="run_resumed")return!1;if(n&&l?.has(n))return!0;let g=a||i;return t==="run_started"||t==="run_resumed"?!n||g&&g===n?!1:s?s!==n&&(!g||g!==n):!0:n?t==="run_completed"||t==="run_state_transition"?c!=="running"?!0:s?s!==n&&(!g||g!==n):!(g&&g===n):s?s!==n:!0:!1}function iv(e){return Math.max(1,Number(e)||1)}function av(e){if(!e)return"idle";if(e.status!=="running")return"terminal";let t=String(e.boundaryReason||"").trim().toLowerCase();return t.includes("waiting_for_input")||t.includes("awaiting_user")?"awaiting_user":"running"}function Ol(e){return e==="completed"||e==="cancelled"||e==="failed"||e==="ended"}function Rp(e,t,n){let r=Number(t.at)||Date.now(),o=String(t.reason||"kernel").trim()||"kernel",s=iv(e.taskEpoch),i=e.task||n.createTask(o,r,t.taskId);if(t.type==="new_task")return{task:n.createTask(o,r,t.taskId),taskEpoch:s+1,lifecycle:"running",rotateBoundary:!0,clearPendingRun:!0,clearWorkerState:!0};if(t.type==="terminal"){let l=t.terminal;return{task:{...i,status:l,boundaryReason:o,endedAt:r},taskEpoch:s,lifecycle:"terminal",rotateBoundary:!1,clearPendingRun:!0,clearWorkerState:!0}}let c={...i,status:"running",boundaryReason:o,endedAt:void 0};return!c.lastUserAt&&!c.lastAssistantAt&&(c.lastAssistantAt=r),{task:c,taskEpoch:s,lifecycle:t.type==="awaiting_user"?"awaiting_user":av(c),rotateBoundary:!1,clearPendingRun:!1,clearWorkerState:!1}}function cv(e,t){let n=Number(e);return Number.isFinite(n)?n:t}function Mp(e){let t="https://extensionrouter.rtrvr.ai",n=String(e||t).trim().replace(/\/+$/,"");if(!n)return t;if(n.endsWith("/extensionRouter/v2/rover"))return n.slice(0,-25);let r=n.match(/\/v\d+\/rover$/);return r?.[0]?n.slice(0,-r[0].length):n.endsWith("/extensionRouter")?n.slice(0,-16):n.endsWith("/v2/rover")?n.slice(0,-9):n}function Ap(e){let t=new Set,n=[];for(let r of e){let o=li(r);!o||t.has(o)||(t.add(o),n.push(o))}return n}function lv(e){let n=`${Mp(e)}/v2/rover`,r=li(String(e||"").trim()),o=r.replace("/extensionRouter/v2/rover","/v2/rover");return r.endsWith("/v2/rover")||r.endsWith("/extensionRouter/v2/rover")?Ap([o,n]):Ap([n])}function Np(e){return lv(e)}function uv(e){return Np(e)[0]||`${Mp(e)}/v2/rover`}function ci(e){return Np(e)}function $a(e){return uv(e)}function li(e){return String(e||"").replace(/\/+$/,"")}function Cp(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}function Lo(e){return!!e&&typeof e=="object"&&typeof e.sessionId=="string"&&Number.isFinite(Number(e.epoch))}function Va(e){let t=Number(e);return Number.isFinite(t)?t:void 0}function dv(e){if(!e||typeof e!="object")return;let t=String(e?.error||"").trim().toLowerCase(),n=e?.data&&typeof e.data=="object"?e.data:{},r=n?.conflict&&typeof n.conflict=="object"?n.conflict:{},o=String(r?.type||t||"").trim().toLowerCase(),s=o==="stale_seq"||o==="stale_epoch"||o==="active_run_exists"?o:void 0;if(!s)return;let i=Va(n?.currentSeq??r?.currentSeq),a=Va(n?.currentEpoch??n?.sessionEpoch??r?.currentEpoch),c=typeof r?.retryable=="boolean"?r.retryable:s==="stale_seq"||s==="stale_epoch";return{type:s,currentSeq:i,currentEpoch:a,retryable:c,decisionHint:typeof n?.decisionHint=="string"?n.decisionHint:void 0,decisionReason:typeof n?.decisionReason=="string"?n.decisionReason:void 0,runId:typeof n?.runId=="string"?n.runId:void 0,sessionId:typeof n?.sessionId=="string"?n.sessionId:void 0,clientEventId:typeof n?.clientEventId=="string"?n.clientEventId:void 0}}function ai(e){return String(e?.error||e?.data?.code||e?.code||"").trim().toUpperCase()}async function fv(e){try{return await e.json()}catch{let t=await e.text().catch(()=>"");return t?{error:t}:void 0}}var za=class e{options;base;baseCandidates;baseIndex=0;sessionToken;sessionTokenExpiresAt=0;sessionId;epoch=1;eventSource=null;pollTimer=null;reconnectTimer=null;sseReconnectAttempts=0;static SSE_BASE_DELAY_MS=2e3;static SSE_MAX_DELAY_MS=6e4;static SSE_MAX_JITTER_MS=3e3;static SSE_MAX_RECONNECT_ATTEMPTS=10;started=!1;lastSeq=0;lastRunId="";lastSnapshotDigest="";activeRunId;visibilityListener=null;pollIntervalMs=2e3;commandInFlight=!1;commandQueue=Promise.resolve();constructor(t){this.options=t,this.baseCandidates=ci(t.apiBase),this.base=this.baseCandidates[0]||$a(t.apiBase),this.sessionId=t.getSessionId()}getSessionToken(){return this.sessionToken}getSessionTokenExpiresAt(){return this.sessionTokenExpiresAt}getEpoch(){return Math.max(1,this.epoch)}getLastSeq(){return Math.max(0,this.lastSeq)}getActiveRunId(){return this.activeRunId}setApiBase(t){this.baseCandidates=ci(t),this.baseIndex=0,this.base=this.baseCandidates[0]||$a(t)}stop(){this.started=!1,this.pauseBackgroundTransport(),this.visibilityListener&&typeof document<"u"&&(document.removeEventListener("visibilitychange",this.visibilityListener),this.visibilityListener=null),this.sseReconnectAttempts=0,this.lastSeq=0,this.lastRunId="",this.lastSnapshotDigest="",this.activeRunId=void 0}async start(){if(this.started=!0,typeof document<"u"&&!this.visibilityListener&&(this.visibilityListener=()=>{this.handleVisibilityChange()},document.addEventListener("visibilitychange",this.visibilityListener)),await this.ensureSession(!1),!this.shouldKeepTransportActive()){this.pauseBackgroundTransport();return}this.startProjectionStream()}reportError(t){this.options.onError?.(t)}withCommandLock(t){let n=async()=>{this.commandInFlight=!0;try{return await t()}finally{this.commandInFlight=!1}},r=this.commandQueue.then(n,n);return this.commandQueue=r.then(()=>{},()=>{}),r}isDocumentHidden(){return typeof document<"u"&&document.visibilityState==="hidden"}hasOwnershipTransportAllowance(){if(typeof this.options.shouldKeepTransportActive=="function")try{return!!this.options.shouldKeepTransportActive()}catch{return!1}return!!this.activeRunId}shouldKeepTransportActive(){return!this.isDocumentHidden()||this.hasOwnershipTransportAllowance()}pauseBackgroundTransport(){this.eventSource&&(this.eventSource.close(),this.eventSource=null),this.pollTimer!=null&&(window.clearTimeout(this.pollTimer),this.pollTimer=null),this.pollIntervalMs=2e3,this.reconnectTimer!=null&&(window.clearTimeout(this.reconnectTimer),this.reconnectTimer=null)}handleVisibilityChange(){if(this.started){if(!this.shouldKeepTransportActive()){this.pauseBackgroundTransport();return}this.ensureSession(!1).catch(t=>this.reportError(t)).finally(()=>{this.startProjectionStream(),this.eventSource||this.startProjectionPolling(),this.fetchProjection().catch(t=>this.reportError(t))})}}getActiveBase(){return this.baseCandidates.length?li(this.baseCandidates[this.baseIndex]||this.base):li(this.base)}rotateBaseCandidate(){this.baseCandidates.length<=1||(this.baseIndex=(this.baseIndex+1)%this.baseCandidates.length,this.base=this.baseCandidates[this.baseIndex]||this.base)}async requestJson(t,n){this.baseCandidates.length||(this.baseCandidates=ci(this.base),this.base=this.baseCandidates[0]||this.base,this.baseIndex=0);let r,o=Math.max(1,this.baseCandidates.length);for(let s=0;s<o;s+=1){let i=(this.baseIndex+s)%o,a=li(this.baseCandidates[i]||this.base);try{let c=await fetch(`${a}${t}`,n),l=await fv(c);if(c.status===404||c.status===405){r=new Error(`Rover endpoint not found at ${a}${t}`);continue}return this.baseIndex=i,this.base=a,{response:c,json:l}}catch(c){r=c}}throw r instanceof Error?r:new Error(`Rover request failed for ${t}`)}applySessionData(t){t.sessionId&&(this.sessionId=t.sessionId),t.sessionToken&&(this.sessionToken=t.sessionToken,this.sessionTokenExpiresAt=cv(t.sessionTokenExpiresAt,Date.now()+8*6e4)),Number.isFinite(Number(t.epoch))&&(this.epoch=Math.max(1,Number(t.epoch))),t.projection&&Lo(t.projection)&&this.applyProjection(t.projection),this.options.onSession?.(t)}applyProjection(t){let n=this.epoch,r=this.lastRunId,o=this.lastSeq,s=this.lastSnapshotDigest;this.sessionId=t.sessionId||this.sessionId,this.epoch=Math.max(1,Number(t.epoch||this.epoch));let i=String(t.activeRunId||"");this.activeRunId=i||void 0,i!==this.lastRunId&&(this.lastRunId=i,this.lastSeq=0);let a=Array.isArray(t.events)?t.events:[];if(a.length){let d=Number(a[a.length-1]?.seq||0);Number.isFinite(d)&&d>this.lastSeq&&(this.lastSeq=d)}let c=String(t.snapshotMeta?.digest||"").trim()||(Number.isFinite(Number(t.snapshotMeta?.updatedAt))?`u:${Math.max(0,Number(t.snapshotMeta?.updatedAt||0))}`:Number.isFinite(Number(t.snapshotUpdatedAt))?`u:${Math.max(0,Number(t.snapshotUpdatedAt||0))}`:"");c&&(this.lastSnapshotDigest=c),this.isDocumentHidden()&&!this.shouldKeepTransportActive()&&this.pauseBackgroundTransport(),(this.epoch!==n||i!==r||this.lastSeq!==o||t.snapshot||c&&c!==s)&&this.options.onProjection?.(t)}shouldRefreshSessionToken(){return this.sessionToken?Date.now()+6e4>=this.sessionTokenExpiresAt:!0}async ensureSession(t=!1){if(this.sessionId=this.options.getSessionId()||this.sessionId,!t&&!this.shouldRefreshSessionToken())return null;let n=this.options.getBootstrapToken(),r={siteId:this.options.siteId,sessionId:this.sessionId,requestedSessionId:this.sessionId,host:this.options.getHost(),url:this.options.getPageUrl(),pageUrl:this.options.getPageUrl()},o=!t&&!!this.sessionToken,s={...r,...o?{sessionToken:this.sessionToken}:{},...n?{bootstrapToken:n}:{}};if(!s.sessionToken&&!s.bootstrapToken)return null;let i=async d=>this.requestJson("/session/open",{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify(d)}),{response:a,json:c}=await i(s);if(a.status===401&&o&&n&&(ai(c)==="SESSION_TOKEN_EXPIRED"||ai(c)==="SESSION_TOKEN_INVALID"||ai(c)==="BOOTSTRAP_REQUIRED")&&(this.sessionToken=void 0,this.sessionTokenExpiresAt=0,{response:a,json:c}=await i({...r,bootstrapToken:n})),!a.ok||!c?.success||!c?.data){let d=ai(c),p=c?.data?.message||c?.error||`session/open failed (${a.status})`,v=new Error(String(p));throw v.code=d||void 0,v}let l=c.data;return this.applySessionData(l),l}syncCursorFromPayload(t){if(!t||typeof t!="object")return;let n=Va(t?.currentEpoch??t?.sessionEpoch);n!==void 0&&(this.epoch=Math.max(1,n));let r=Va(t?.currentSeq);r!==void 0&&r>=0&&(this.lastSeq=Math.max(this.lastSeq,r))}async postJson(t,n,r){await this.ensureSession(!1);let o={...n,requestNonce:Cp(),sessionToken:this.sessionToken,sessionId:n.sessionId||this.sessionId},{response:s,json:i}=await this.requestJson(t,{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify(o)}),a=Math.max(0,Number(r?.authRetryCount||0));if(s.status===401&&a<1){let c=ai(i);if(c==="SESSION_TOKEN_EXPIRED"||c==="SESSION_TOKEN_INVALID"||c==="BOOTSTRAP_REQUIRED")return this.sessionToken=void 0,this.sessionTokenExpiresAt=0,await this.ensureSession(!0),this.postJson(t,n,{authRetryCount:a+1})}if(s.status===409)return this.syncCursorFromPayload(i?.data),{ok:!1,data:i?.data||null,conflict:dv(i),raw:i};if(!s.ok||!i?.success){let c=i?.error||`request failed (${s.status})`,l=new Error(String(c));throw l.status=s.status,l.code=String(i?.error||i?.data?.code||"").trim()||void 0,l.details=i?.data||i,l}return this.syncCursorFromPayload(i?.data),{ok:!0,data:i?.data||null,raw:i}}async submitRunInput(t){return this.withCommandLock(async()=>{let n=String(t.clientEventId||"").trim()||(typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():void 0);for(let r=0;r<2;r+=1){let o=await this.postJson("/command",{type:"RUN_INPUT",commandId:n,expectedEpoch:this.epoch,expectedSeq:this.lastSeq,payload:{runId:t.runId,message:t.message,continueRun:!!t.continueRun,forceNewRun:!!t.forceNewRun,requestedMode:t.requestedMode,taskBoundaryId:this.options.getTaskBoundaryId?.()}});if(!o.ok){let l=(o.data||null)?.data||null;Lo(l?.projection)&&this.applyProjection(l.projection);let d=String(o.conflict?.type||"").trim(),p=o.conflict?.retryable!==!1&&(d==="stale_seq"||d==="stale_epoch");if(r===0&&p)continue;return l}let s=o.data||{},i=s?.data||null,a=String(s?.runId||i?.runId||"").trim();return a&&(this.activeRunId=a,this.lastRunId=a,Number(s?.seq||i?.seq||0)===0&&this.lastSeq>0&&(this.lastSeq=0)),Number.isFinite(Number(s?.epoch))&&(this.epoch=Math.max(1,Number(s?.epoch))),Number.isFinite(Number(s?.seq))&&(this.lastSeq=Math.max(0,Number(s?.seq||0))),i}return null})}async controlRun(t){return this.withCommandLock(async()=>{let n=String(t.clientEventId||"").trim()||(typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():void 0);for(let r=0;r<2;r++){let o=await this.postJson("/command",{type:"RUN_CONTROL",commandId:n,expectedEpoch:this.epoch,expectedSeq:this.lastSeq,payload:{action:t.action,runId:t.runId,reason:t.reason}});if(!o.ok){if(r===0&&o.conflict?.retryable!==!1)continue;return o.data?.data||null}let s=o.data||{},i=s?.data||null;return Number.isFinite(Number(s?.seq))&&(this.lastSeq=Math.max(0,Number(s.seq||0))),Lo(i?.projection)&&this.applyProjection(i.projection),i}return null})}async fetchExternalContext(t){return this.withCommandLock(async()=>{let n=String(t.runId||this.activeRunId||this.lastRunId||"").trim()||void 0,r=typeof t.tabId=="string"&&t.tabId.trim()?t.tabId.trim():Number.isFinite(Number(t.tabId))&&Number(t.tabId)>0?String(Math.trunc(Number(t.tabId))):void 0,o=t.intent==="act"||t.intent==="open_only"||t.intent==="read_context"?t.intent:"read_context",s=t.source==="google_search"?"google_search":"direct_url";for(let i=0;i<2;i+=1){let a=await this.postJson("/context/external",{runId:n,logicalTabId:r,url:t.url,intent:o,source:s,message:t.message,adversarialScore:Number.isFinite(Number(t.adversarialScore))?Number(t.adversarialScore):void 0,expectedEpoch:this.epoch,expectedSeq:this.lastSeq});if(!a.ok){let c=String(a.conflict?.type||"").trim(),l=a.conflict?.retryable!==!1&&(c==="stale_seq"||c==="stale_epoch");if(i===0&&l)continue;return a.data||null}return a.data||null}return null})}async sendTabEvent(t){return this.withCommandLock(async()=>{let n=Cp(),r={runId:t.runId,currentUrl:t.currentUrl,targetUrl:t.targetUrl,logicalTabId:t.logicalTabId,message:t.message,adversarialScore:t.adversarialScore,currentHost:t.currentHost,targetHost:t.targetHost,isCrossHost:t.isCrossHost,navigationClass:t.navigationClass,clientEventId:n},o=await this.postJson("/command",{type:"TAB_EVENT",commandId:n,expectedEpoch:this.epoch,expectedSeq:this.lastSeq,payload:r});if(o.ok){let c=o.data||{},l=c?.data||null;return Number.isFinite(Number(c?.epoch))&&(this.epoch=Math.max(1,Number(c?.epoch||this.epoch))),Number.isFinite(Number(c?.seq))&&(this.lastSeq=Math.max(0,Number(c?.seq||0))),l?{...l,clientEventId:n,retryAttempted:!1,retryExhausted:!1}:null}let s=o.conflict;if(s?.retryable&&(s.type==="stale_seq"||s.type==="stale_epoch")){let c=await this.postJson("/command",{type:"TAB_EVENT",commandId:n,expectedEpoch:this.epoch,expectedSeq:this.lastSeq,payload:r});if(c.ok){let p=c.data||{},v=p?.data||null;return Number.isFinite(Number(p?.epoch))&&(this.epoch=Math.max(1,Number(p?.epoch||this.epoch))),Number.isFinite(Number(p?.seq))&&(this.lastSeq=Math.max(0,Number(p?.seq||0))),v?{...v,clientEventId:n,retryAttempted:!0,retryExhausted:!1}:{clientEventId:n,retryAttempted:!0,retryExhausted:!1}}let l=c.conflict||s,d=(c.data||o.data||null)?.data||null;return this.fetchProjection().catch(()=>{}),{...d||{},clientEventId:n,retryAttempted:!0,retryExhausted:!0,decisionReason:d?.decisionReason||l?.decisionReason||(l?.type==="stale_epoch"?"stale_epoch_retryable":"stale_seq_retryable"),conflict:l?{type:l.type,currentSeq:l.currentSeq,currentEpoch:l.currentEpoch,retryable:!!l.retryable}:void 0}}let a=(o.data||null)?.data||null;return s?.type&&this.fetchProjection().catch(()=>{}),{...a||{},clientEventId:n,retryAttempted:!1,retryExhausted:!!s,conflict:s?{type:s.type,currentSeq:s.currentSeq,currentEpoch:s.currentEpoch,retryable:!!s.retryable}:a?.conflict}})}async fetchProjection(){if(await this.ensureSession(!1),!this.sessionToken||!this.sessionId)return null;let t=new URLSearchParams({sessionId:this.sessionId,seqAfter:String(this.lastSeq),sessionToken:this.sessionToken}),{response:n,json:r}=await this.requestJson(`/state?${t.toString()}`,{method:"GET"}),o=r?.data&&typeof r.data=="object"&&Lo(r.data?.projection)?r.data.projection:r?.data;if(!n.ok||!r?.success||!Lo(o))return null;let s=o;return this.applyProjection(s),s}async saveSnapshot(t){return this.withCommandLock(async()=>!!(await this.postJson("/snapshot",{checkpoint:t.checkpoint,updatedAt:t.updatedAt,version:t.version,seq:t.seq,chatSummary:t.chatSummary,compactedPrevSteps:t.compactedPrevSteps,ttlHours:t.ttlHours,visitorId:t.visitorId}))?.ok)}async sendBatch(t){if(!t.length)return[];let r=t.slice(0,5);return(await this.postJson("/batch",{requests:r.map(s=>({path:s.path,body:s.body}))}))?.data?.results||[]}scheduleProjectionPoll(t){this.pollTimer!=null&&(window.clearTimeout(this.pollTimer),this.pollTimer=null),this.pollTimer=window.setTimeout(async()=>{if(this.pollTimer=null,!this.started||!this.shouldKeepTransportActive())return;let n=this.epoch,r=this.lastSeq,o=this.lastSnapshotDigest;try{await this.fetchProjection()}catch(i){this.reportError(i)}this.epoch!==n||this.lastSeq!==r||this.lastSnapshotDigest!==o?this.pollIntervalMs=2e3:this.pollIntervalMs=Math.min(15e3,Math.round(this.pollIntervalMs*1.4)),this.started&&this.shouldKeepTransportActive()&&!this.eventSource&&this.scheduleProjectionPoll(this.pollIntervalMs)},t)}startProjectionPolling(){this.pollTimer==null&&(this.pollIntervalMs=2e3,this.scheduleProjectionPoll(this.pollIntervalMs))}scheduleSseReconnect(){if(!this.started||!this.shouldKeepTransportActive()||this.reconnectTimer!=null)return;if(this.sseReconnectAttempts>=e.SSE_MAX_RECONNECT_ATTEMPTS){this.sseReconnectAttempts=0;return}let t=e.SSE_BASE_DELAY_MS,n=Math.min(t*Math.pow(2,this.sseReconnectAttempts),e.SSE_MAX_DELAY_MS),r=Math.random()*e.SSE_MAX_JITTER_MS,o=Math.round(n+r);this.sseReconnectAttempts++,this.reconnectTimer=window.setTimeout(()=>{this.reconnectTimer=null,this.startProjectionStream()},o)}startProjectionStream(){if(!this.started)return;if(!this.shouldKeepTransportActive()){this.pauseBackgroundTransport();return}if(!this.sessionToken||!this.sessionId){this.startProjectionPolling();return}if(this.eventSource)return;if(typeof EventSource>"u"){this.startProjectionPolling();return}let t=new URLSearchParams({sessionId:this.sessionId,cursor:String(this.lastSeq),sessionToken:this.sessionToken}),n=`${this.getActiveBase()}/stream?${t.toString()}`,r=new EventSource(n,{withCredentials:!1});this.eventSource=r;let o=s=>{try{let i=JSON.parse(s||"{}"),a=i&&typeof i=="object"&&Lo(i.projection)?i.projection:i;Lo(a)&&this.applyProjection(a)}catch(i){this.reportError(i)}};r.addEventListener("projection",s=>{o(s.data||"{}")}),r.addEventListener("projection_delta",s=>{o(s.data||"{}")}),r.onerror=()=>{this.eventSource&&(this.eventSource.close(),this.eventSource=null),this.ensureSession(!0).catch(s=>this.reportError(s)).finally(()=>{if(this.rotateBaseCandidate(),!this.shouldKeepTransportActive()){this.pauseBackgroundTransport();return}this.pollTimer==null&&this.startProjectionPolling(),this.scheduleSseReconnect()})},r.onopen=()=>{if(!this.shouldKeepTransportActive()){this.pauseBackgroundTransport();return}this.sseReconnectAttempts=0,this.pollTimer!=null&&(window.clearTimeout(this.pollTimer),this.pollTimer=null,this.pollIntervalMs=2e3)}}};function ui(e){return Array.isArray(e)?e.length:0}function Pl(e){return String(e||"").trim()||void 0}function Lp(e){return String(e||"").trim()||void 0}function Dp(e){if(!e)return 0;let t=0;String(e.pendingRun?.id||"").trim()&&(t+=4,e.pendingRun?.resumeRequired&&(t+=1),Pl(e.pendingRun?.taskBoundaryId)&&(t+=1)),e.activeTask?.status==="running"&&(t+=2);let r=e.workerState;return r&&(t+=1,String(r.rootUserInput||"").trim()&&(t+=1),t+=Math.min(3,ui(r.history)),t+=Math.min(3,ui(r.plannerHistory)),t+=Math.min(4,ui(r.agentPrevSteps)),ui(r.pendingAskUser?.questions)>0&&(t+=3)),ui(e.taskTabScope?.touchedTabIds)>0&&(t+=1),t}function Bl(e){let t=Lp(e.localState.pendingRun?.id),n=Lp(e.incomingState.pendingRun?.id),r=Pl(e.localState.pendingRun?.taskBoundaryId||e.localState.workerState?.taskBoundaryId),o=Pl(e.incomingState.pendingRun?.taskBoundaryId||e.incomingState.workerState?.taskBoundaryId);return{localRunId:t,incomingRunId:n,exactRunMatch:!!(t&&n&&t===n),localBoundaryId:r,incomingBoundaryId:o,exactBoundaryMatch:!!(r&&o&&r===o),localScore:Dp(e.localState),incomingScore:Dp(e.incomingState)}}function Ul(e){let t=Math.max(0,Number(e.clockSkewMs)||200);if(e.incomingUpdatedAt>e.localUpdatedAt+t)return!0;if(!e.crossDomainResumeActive)return!1;let n=Bl({localState:e.localState,incomingState:e.incomingState});if(n.incomingScore<=n.localScore)return!1;if(n.localBoundaryId&&n.incomingBoundaryId&&n.localBoundaryId!==n.incomingBoundaryId){let o=Math.max(1,Number(e.localState.taskEpoch)||1);if(Math.max(1,Number(e.incomingState.taskEpoch)||1)<o)return!1}return!!(n.exactRunMatch||n.exactBoundaryMatch||!!!(n.localRunId||n.localBoundaryId))}function br(e){return String(e||"").trim()||void 0}function Fl(e){return e==="preserve_if_running"}function Op(e,t){let n=br(t.boundaryId),r=br(t.runId),o=br(t.taskId),s=Array.from(e);if(n){let i=s.find(a=>br(a.boundaryId)===n);if(i)return i}if(r){let i=s.find(a=>br(a.pendingRun?.id)===r);if(i)return i}if(o){let i=s.find(a=>br(a.taskId)===o);if(i)return i}}function Pp(e){let t=br(e.localPendingRunId);if(t)return t;let n=br(e.sharedActiveRunId);if(!n)return;let r=br(e.sharedTaskId),o=br(e.activeTaskId);if(!(r&&o&&r!==o))return n}var ja=class{maxWorkers;maxQueue;activeWorkers=new Map;queue=[];onWorkerFreed;constructor(t){this.maxWorkers=Math.min(Math.max(1,Number(t?.maxWorkers)||1),2),this.maxQueue=Math.max(1,Number(t?.maxQueue)||3),this.onWorkerFreed=t?.onWorkerFreed}acquire(t,n){if(this.activeWorkers.has(t))return this.activeWorkers.get(t);if(this.removeFromQueue(t),this.activeWorkers.size<this.maxWorkers){let r=new Worker(n.workerUrl,n.workerOptions);return this.activeWorkers.set(t,r),r}return this.queue.length>=this.maxQueue&&this.queue.shift(),this.queue.push(t),null}release(t){let n=this.activeWorkers.get(t);if(n){try{n.terminate()}catch{}this.activeWorkers.delete(t)}this.removeFromQueue(t),this.dequeueNext()}getWorker(t){return this.activeWorkers.get(t)}getActiveCount(){return this.activeWorkers.size}isQueued(t){return this.queue.includes(t)}getQueuedTasks(){return[...this.queue]}getActiveTasks(){return Array.from(this.activeWorkers.keys())}shutdown(){for(let[,t]of this.activeWorkers)try{t.terminate()}catch{}this.activeWorkers.clear(),this.queue=[]}removeFromQueue(t){let n=this.queue.indexOf(t);n>=0&&this.queue.splice(n,1)}dequeueNext(){if(this.queue.length===0||this.activeWorkers.size>=this.maxWorkers)return;let t=this.queue.shift();t&&this.onWorkerFreed&&this.onWorkerFreed(t)}};var pv=10,mv=8,hv=12,Bp=40,Up=60,gv=5*6e4,bv=5,ms=class e{tasks=new Map;activeTaskId;taskOrder=[];workerPool;maxArchivedTasks;tabToTask=new Map;constructor(t){this.workerPool=new ja({maxWorkers:t?.maxConcurrentWorkers,maxQueue:t?.maxQueuedTasks,onWorkerFreed:n=>this.onWorkerSlotFreed(n)}),this.maxArchivedTasks=Math.max(1,Number(t?.maxArchivedTasks)||pv)}createTask(t,n){let r=Ll(n);return this.tasks.set(r.taskId,r),this.taskOrder.push(r.taskId),r}dispatch(t,n){let r=this.tasks.get(t);if(!r)return{accepted:!1,task:Ll({taskId:t}),sideEffects:[],rejectedReason:`Task ${t} not found`};let{record:o,result:s}=_p(r,n);return s.rejected||this.tasks.set(t,o),{accepted:!s.rejected,task:s.rejected?r:o,sideEffects:s.sideEffects,rejectedReason:s.rejectedReason}}switchActiveTask(t){let n=this.tasks.get(t);if(!n)return;let r=this.getActiveTask();return this.activeTaskId=t,n}getActiveTask(){if(this.activeTaskId)return this.tasks.get(this.activeTaskId)}getActiveTaskId(){return this.activeTaskId}listTasks(){return this.taskOrder.map(t=>this.tasks.get(t)).filter(t=>!!t)}getTask(t){return this.tasks.get(t)}hasTask(t){return this.tasks.has(t)}getTaskCount(){return this.tasks.size}updateTask(t,n){let r=this.tasks.get(t);if(!r)return;let o=n(r);return this.tasks.set(t,o),o}updateScrollPosition(t,n){let r=this.tasks.get(t);r&&this.tasks.set(t,{...r,scrollPosition:n})}assignWorker(t,n){let r=this.workerPool.acquire(t,n);if(r){let o=this.tasks.get(t);o&&this.tasks.set(t,{...o,workerId:t})}return r}releaseWorker(t){this.workerPool.release(t);let n=this.tasks.get(t);n&&this.tasks.set(t,{...n,workerId:void 0})}getWorker(t){return this.workerPool.getWorker(t)}getQueuedTasks(){return this.workerPool.getQueuedTasks()}isTaskQueued(t){return this.workerPool.isQueued(t)}onWorkerSlotFreed(t){}mapTabToTask(t,n){this.tabToTask.set(t,n);let r=this.tasks.get(n);r&&!r.tabIds.includes(t)&&this.tasks.set(n,{...r,tabIds:[...r.tabIds,t]})}getTaskForTab(t){let n=this.tabToTask.get(t);if(n)return this.tasks.get(n)}getTaskByBoundaryId(t){for(let n of this.tasks.values())if(n.boundaryId===t)return n}archiveTask(t){let n=this.tasks.get(t);if(!n)return;let r={...n,uiMessages:n.uiMessages.slice(-mv),timeline:n.timeline.slice(-hv),transientStatus:void 0,workerState:void 0,pendingRun:void 0};this.tasks.set(t,r),this.workerPool.release(t)}pruneArchivedTasks(){let t=[];for(let n of this.taskOrder){let r=this.tasks.get(n);r&&si(r.state)&&t.push(n)}for(;t.length>this.maxArchivedTasks;){let n=t.shift();this.tasks.delete(n),this.taskOrder=this.taskOrder.filter(r=>r!==n);for(let[r,o]of this.tabToTask)o===n&&this.tabToTask.delete(r)}}deleteTask(t){if(!this.tasks.has(t))return!1;this.workerPool.release(t),this.tasks.delete(t),this.taskOrder=this.taskOrder.filter(n=>n!==t);for(let[n,r]of this.tabToTask)r===t&&this.tabToTask.delete(n);return this.activeTaskId===t&&(this.activeTaskId=this.taskOrder.length>0?this.taskOrder[this.taskOrder.length-1]:void 0),!0}toPersistedState(){let t={};for(let[n,r]of this.tasks)t[n]=r;return{tasks:t,activeTaskId:this.activeTaskId,taskOrder:[...this.taskOrder]}}static fromPersistedState(t,n){let r=new e(n);if(t.tasks&&typeof t.tasks=="object"){for(let[o,s]of Object.entries(t.tasks))if(s&&typeof s=="object"&&s.taskId&&(r.tasks.set(o,s),Array.isArray(s.tabIds)))for(let i of s.tabIds)r.tabToTask.set(i,o)}return r.taskOrder=Array.isArray(t.taskOrder)?t.taskOrder.filter(o=>r.tasks.has(o)):Array.from(r.tasks.keys()),r.activeTaskId=t.activeTaskId&&r.tasks.has(t.activeTaskId)?t.activeTaskId:r.taskOrder.length>0?r.taskOrder[r.taskOrder.length-1]:void 0,r}static fromV1State(t,n){let r=new e(n);if(t.activeTask){let o=ii(t.activeTask.status,t.activeTask.boundaryReason),s={taskId:t.activeTask.taskId,state:o,boundaryId:t.workerState?.taskBoundaryId||t.pendingRun?.taskBoundaryId||`bnd_migrated_${Date.now().toString(36)}`,startedAt:t.activeTask.startedAt,endedAt:t.activeTask.endedAt,lastUserAt:t.activeTask.lastUserAt,lastAssistantAt:t.activeTask.lastAssistantAt,uiMessages:Array.isArray(t.uiMessages)?[...t.uiMessages]:[],timeline:Array.isArray(t.timeline)?[...t.timeline]:[],workerState:t.workerState?{...t.workerState}:void 0,pendingRun:t.pendingRun?{...t.pendingRun}:void 0,tabScope:t.taskTabScope?{...t.taskTabScope}:void 0,rootUserInput:t.workerState?.rootUserInput,seedChatLog:t.workerState?.seedChatLog?[...t.workerState.seedChatLog]:[],transientStatus:t.transientStatus?{...t.transientStatus}:void 0,tabIds:t.taskTabScope?.touchedTabIds?[...t.taskTabScope.touchedTabIds]:[]};r.tasks.set(s.taskId,s),r.taskOrder.push(s.taskId),r.activeTaskId=s.taskId;for(let i of s.tabIds)r.tabToTask.set(i,s.taskId)}return r}enforceMemoryCaps(){for(let[,t]of this.tasks)si(t.state)||(t.uiMessages.length>Bp&&(t.uiMessages=t.uiMessages.slice(-Bp)),t.timeline.length>Up&&(t.timeline=t.timeline.slice(-Up)))}terminateInactiveWorkers(){let t=Date.now(),n=[];for(let[r,o]of this.tasks){if(o.state!=="paused")continue;t-(o.pausedAt||t)>gv&&this.workerPool.getWorker(r)&&(this.workerPool.release(r),n.push(r))}return n}canCreateNewTask(t){if(t>bv)return{allowed:!1,reason:`Too many Rover tabs open (${t}). Close some tabs to create new tasks.`};let n=this.workerPool.getActiveCount(),r=this.workerPool.getQueuedTasks().length;return n>=2&&r>=3?{allowed:!1,reason:"Maximum parallel tasks reached. Complete or cancel a task first."}:{allowed:!0}}shutdown(){this.workerPool.shutdown(),this.tasks.clear(),this.taskOrder=[],this.tabToTask.clear(),this.activeTaskId=void 0}};var yv=[/\/login/i,/\/signin/i,/\/auth/i,/\/oauth/i,/\/password/i,/\/reset/i,/\/verify/i,/\/confirm/i,/\/account/i,/\/security/i,/\/2fa/i,/\/mfa/i],vv=[/data:/i,/javascript:/i,/vbscript:/i,/blob:/i],Tv=[/token/i,/secret/i,/password/i,/apikey/i,/api_key/i,/access_token/i,/refresh_token/i,/session/i,/cookie/i,/credential/i],kv=/^(\d{1,3}\.){3}\d{1,3}$/;function Hl(e,t){let n=0,r=[],o;try{o=new URL(e)}catch{return{score:1,blocked:!1,reasons:["invalid_url"]}}for(let d of vv)if(d.test(e)){n+=3,r.push("exfiltration_scheme");break}kv.test(o.hostname)&&(n+=2,r.push("ip_address_host")),o.hostname.split(".").length>4&&(n+=1,r.push("excessive_subdomains"));let i=yv.filter(d=>d.test(o.pathname)).length;i>=2?(n+=2,r.push("multiple_credential_paths")):i===1&&(n+=1,r.push("credential_path"));let c=Array.from(o.searchParams.keys()).filter(d=>Tv.some(p=>p.test(d))).length;return c>0&&(n+=Math.min(2,c),r.push("sensitive_query_params")),e.length>2e3&&(n+=1,r.push("excessive_url_length")),(e.match(/%[0-9A-Fa-f]{2}/g)||[]).length>20&&(n+=1,r.push("excessive_encoding")),o.port&&o.port!=="80"&&o.port!=="443"&&(n+=1,r.push("non_standard_port")),{score:n,blocked:n>=3,reasons:r}}function Fp(e,t){return Hl(e,t).blocked}var gs,Ga=null,di=!1,Un=32,hs=4,_v="#6b6bff";function Ev(){return document.querySelector('link[rel="icon"], link[rel="shortcut icon"]')}function Hp(){let e=document.createElement("link");return e.rel="icon",e.type="image/png",document.head.appendChild(e),e}function qp(e=_v){if(di)return!0;try{let t=Ev();t&&(gs=t.href,Ga=t);let n=document.createElement("canvas");n.width=Un,n.height=Un;let r=n.getContext("2d");if(!r)return!1;let o=new Image;return o.crossOrigin="anonymous",o.onload=()=>{r.drawImage(o,0,0,Un,Un),r.beginPath(),r.arc(Un-hs-1,Un-hs-1,hs,0,Math.PI*2),r.fillStyle=e,r.fill(),r.strokeStyle="#1a1a2e",r.lineWidth=1,r.stroke();let s=n.toDataURL("image/png"),i=t||Hp();i.href=s,di=!0},o.onerror=()=>{r.fillStyle="#1a1a2e",r.fillRect(0,0,Un,Un),r.fillStyle="#fff",r.font="bold 20px sans-serif",r.textAlign="center",r.textBaseline="middle",r.fillText("R",Un/2,Un/2),r.beginPath(),r.arc(Un-hs-1,Un-hs-1,hs,0,Math.PI*2),r.fillStyle=e,r.fill();let s=n.toDataURL("image/png"),i=t||Hp();i.href=s,di=!0},gs?o.src=gs:o.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEAAAAALAAAAAABAAEAAAIBAAA=",!0}catch{return!1}}function Wp(){if(di){di=!1;try{Ga&&gs&&(Ga.href=gs),gs=void 0,Ga=null}catch{}}}function $p(e){if(e.crossRegistrableDomain&&!e.serverAvailable)return{decision:e.fallbackDecision,decisionReason:"preflight_unavailable_fallback",failSafeBlocked:!1};let t=e.serverDecision==="stale_run"?e.fallbackDecision:e.serverDecision||e.fallbackDecision;return{decision:t,decisionReason:t,failSafeBlocked:!1}}function Vp(e){let t=String(e.pendingRunText||"").trim();if(t)return t;let n=String(e.activeRunText||"").trim();if(n)return n;let r=String(e.rootWorkerInput||"").trim();if(r)return r;let o=String(e.lastUserInputText||"").trim();return o||String(e.fallback||"navigation request").trim()||"navigation request"}var wv=new Set(["co.uk","org.uk","gov.uk","ac.uk","com.au","net.au","org.au","co.jp","com.br","com.mx","com.sg","co.in"]);function fi(e){let t=String(e||"").trim().toLowerCase();if(!t)return"";if(t==="localhost"||/^\d+\.\d+\.\d+\.\d+$/.test(t))return t;let n=t.split(".").filter(Boolean);if(n.length<2)return t;let r=`${n[n.length-2]}.${n[n.length-1]}`;return n.length>=3&&wv.has(r)?`${n[n.length-3]}.${r}`:r}function ql(e){let t=String(e||"").trim().toLowerCase();if(!t)return"";try{if(t.includes("://"))return new URL(t).hostname.toLowerCase();if(t.startsWith("//"))return new URL(`https:${t}`).hostname.toLowerCase()}catch{}return t.replace(/:\d+$/,"").replace(/[^a-z0-9.-]/g,"").replace(/^\.+/,"").replace(/\.+$/,"")}function zp(e){let t=String(e||"").trim().toLowerCase();if(!t)return"";if(t==="*")return"*";let n=t.startsWith("="),r=!n&&t.startsWith("*."),o=n?t.slice(1):r?t.slice(2):t,s=ql(o);return s?n?`=${s}`:r?`*.${s}`:s:""}function Iv(e,t){return e?t!=="host_only"||e==="*"||e.startsWith("=")||e.startsWith("*.")?e:`=${e}`:""}function xv(e,t){let n=zp(t);if(!n)return!1;if(n==="*")return!0;if(n.startsWith("=")){let r=n.slice(1);return!!r&&e===r}if(n.startsWith("*.")){let r=n.slice(2);return r?e===r||e.endsWith(`.${r}`):!1}return e===n?!0:e.endsWith(`.${n}`)}function jp(e){let t=ql(e.host||"");if(!t)return!1;let n=Array.isArray(e.allowedDomains)?e.allowedDomains.map(o=>zp(o)).map(o=>Iv(o,e.domainScopeMode)).filter(Boolean):[];if(n.length>0)return n.some(o=>xv(t,o));let r=ql(e.currentHost||"");return r?e.domainScopeMode==="host_only"?t===r:fi(t)===fi(r):!0}function pi(e,t="tab_not_accessible"){let n=Number(e?.logicalTabId)||void 0,r=e?.url||"",o=e?.title||(e?.external?"External Tab (Inaccessible)":"Detached Runtime Tab (Unavailable)"),s=String(t||"").trim(),i=s?` Reason: ${s}.`:"",a=e?.external?`This external tab is tracked in virtual mode only. Live DOM control and accessibility-tree access are unavailable here.${i}`:`This tab is a detached runtime placeholder and is not attached to an active Rover runtime. Switch to an attached tab or reopen the page.${i}`;return{url:r,title:o,contentType:"text/html",content:a,metadata:{inaccessible:!0,external:!!e?.external,accessMode:e?.external?"external_placeholder":"detached_runtime_placeholder",roverAvailability:e?.roverAvailability||"unknown",reason:t,logicalTabId:n}}}function mi(e,t,n="tab_not_accessible"){let r=Number(t?.logicalTabId)||0,o=t?.url||"",s=t?.external?`Tab ${r} is external to the active runtime and cannot be controlled directly.`:`Tab ${r} is not attached to an active Rover runtime.`,i=t?.external?"DOMAIN_SCOPE_BLOCKED":"TAB_NOT_ACCESSIBLE";return{success:!1,error:s,allowFallback:!0,output:{success:!1,error:{code:i,message:s,missing:[],next_action:t?.external?"Use open_new_tab for external context or continue on an in-scope tab.":"Switch to an active tab and retry.",retryable:!1},blocked_url:o||void 0,logical_tab_id:r||void 0,external:!!t?.external,policy_action:t?.external?e.externalNavigationPolicy||"open_new_tab_notice":void 0,reason:n},errorDetails:{code:i,message:s,retryable:!1,details:{logicalTabId:r,blockedUrl:o,external:!!t?.external,reason:n}}}}function Sv(e){if(e.startNewTask||!e.hasAskUserAnswers||e.taskStatus!=="running")return!1;let t=Ae(e.pendingAskUserBoundaryId),n=Ae(e.currentTaskBoundaryId);return t&&n&&t!==n?!1:(Math.max(0,Number(e.pendingAskUserQuestionCount)||0)<=0,!0)}function Gp(e){return!Sv(e)}var Rv=new Set(["a","an","and","are","as","at","be","by","for","from","how","i","in","is","it","of","on","or","that","the","this","to","was","what","when","where","who","why","with","you","your"]);function Wl(e){return String(e||"").replace(/\s+/g," ").trim().slice(0,2e3)}function Av(e){if(!Array.isArray(e)||e.length===0)return[];let t=[];for(let n of e){if(!n||n.role!=="user"&&n.role!=="assistant")continue;let r=Wl(n.text);if(!r)continue;if(n.role==="user"){t.push({user:r,ts:Number(n.ts)||0});continue}if(!t.length)continue;let o=t[t.length-1];o.assistant||(o.assistant=r,o.ts=Math.max(o.ts,Number(n.ts)||0))}return t}function Xp(e){let t=String(e||"").toLowerCase().split(/[^a-z0-9]+/g).map(n=>n.trim()).filter(n=>n.length>=2&&!Rv.has(n));return new Set(t)}function Cv(e,t){let n=Xp(e),r=Xp(t);if(!n.size||!r.size)return 0;let o=0;for(let i of n)r.has(i)&&(o+=1);let s=n.size+r.size-o;return s<=0?0:o/s}function Kp(e){if(e.mode!=="heuristic_same_window")return{reason:"mode_disabled",overlap:0};let t=e.previousTaskStatus;if(t!=="completed"&&t!=="ended"&&t!=="cancelled")return{reason:"status_ineligible",overlap:0};let n=Av(e.previousTaskMessages),r=Wl(e.previousTaskUserInput),o=Wl(e.previousTaskAssistantOutput),s=n.length?n:r&&o?[{user:r,assistant:o,ts:Number(e.previousTaskCompletedAt)||0}]:[];if(!s.some(m=>m.user))return{reason:"missing_previous_intent",overlap:0};if(!s.some(m=>m.assistant))return{reason:"missing_previous_output",overlap:0};let i=Math.max(0,Number(e.previousTaskCompletedAt)||0),a=Math.max(i,Number(e.now)||Date.now()),c=Math.max(1e3,Number(e.ttlMs)||0);if(!i||a-i>c)return{reason:"ttl_expired",overlap:0};let l=Math.max(0,Math.min(1,Number(e.minLexicalOverlap)||0)),d=s.map((m,g)=>{let T=Cv(m.user,e.currentPrompt),D=s.length>1?g/(s.length-1)*.05:.05;return{...m,overlap:T,score:T+D,index:g}}).filter(m=>!!m.assistant);if(!d.length)return{reason:"missing_previous_output",overlap:0};let p=d.filter(m=>m.overlap>=l).sort((m,g)=>g.score!==m.score?g.score-m.score:g.index-m.index).slice(0,2).sort((m,g)=>m.index-g.index),v=d.reduce((m,g)=>Math.max(m,g.overlap),0);return p.length?{reason:"attached",overlap:v,chatLog:p.flatMap(m=>[{role:"user",message:m.user},{role:"model",message:m.assistant||""}])}:{reason:"low_lexical_overlap",overlap:v}}var hu=2,kc="rover:runtime:",Mv="rover:runtime-id:",cm="rover:visitor-id:",ic=ft.uiMessages,ac=ft.timelineEvents,gu=ft.uiMessages,Nv=4,bu=ft.plannerHistory,yu=ft.prevSteps,Lv=8e3,Dv=12,Ov=15*6e4,Pv=2,Bv=12e4,Uv=.18,Fv=30,Hv=3600*24*365,lm=1,qv=3e3,Wv=4500,$v=12e3,Vv=30,cc=240,Yp=5*6e4,lc=100,uc=12,zv=80,jv=200,Gv=700,Xv=8,Kv=240,Yv="rover:handoff-bootstrap:",um=3e4,Qv=12e4,Jv=2500,Zv=2*6e4,eT=45e3,tT=2e4,Si=400,nT=15e3,rT=7,oT=80,no=null,Xe=null,Be=null,X=null,C=null,on=null,Br=null,u=null,Fr=null,Ve="",R=null,mt=null,Ja=null,bn=[],Za=!1,vs=!1,dm=0,Gl=0,Xl=0,dc=0,ki=!1,Hr=null,sT=1500,iT=5e3,Qp=1e4,Jp=1200,fm=new Set(["error","navigation_guardrail","checkpoint_error","tab_event_conflict_exhausted"]),aT=new Set(["ready","error","auth_required","navigation_guardrail","checkpoint_error","tab_event_conflict_exhausted"]),Ct,Tr,ao=!1,Uo=!1,_i=null,Ei=null,Wr=null,Kl="",Ss=!1,ys="",it="controller",Wn=!1,Rs=!1,Zn=!0,or=!1,Yt=!1,an=!1,vr=!1,Do=[],cT=3,Zp=1e4,Ce="",ht=null,st=null,sn=0,to=null,ec=!1,Yl=!1,Ql=!1,Jl=!1,oo=[],Ts=null,ks=null;function tc(e,t,n,r){e.addEventListener(t,n,r),oo.push({target:e,event:t,handler:n,options:r}),oo.length>100&&oo.length%50===0&&lT()}function lT(){for(let e=oo.length-1;e>=0;e--){let t=oo[e],n=t.target;if(n&&"isConnected"in n&&n.isConnected===!1){try{t.target.removeEventListener(t.event,t.handler,t.options)}catch{}oo.splice(e,1)}}}var fc=null,vi=0,so=null,_s,Xa="",$t,wi,Ii=!1,Es=null,Ho,qo,As=0,uT=50,dT=100,fT=20,pT=3e5;function pm(e,t){for(;e.size>t;){let n=e.keys().next();if(n.done)break;e.delete(n.value)}}function mT(e,t){let n=e.values();for(;e.size>t;){let r=n.next();if(r.done)break;e.delete(r.value)}}var Zr=new Map,er=new Set,ye=null,Qt,kr=0,Ur=1,Li,pc="",G=null,hT=new Set(["run_started","run_state_transition","run_completed","assistant","status","tool_start","tool_result","runtime_tabs_diagnostics","auth_required","navigation_guardrail","error"]),Zl={read:"rover_external_read_context",act:"rover_external_act_context"},nc=[],rc=new Map,Kt=new Map;function qe(e,t){Vt(e,t);let n=rc.get(e);if(n)for(let r of n)try{r(t)}catch{}}function mm(e,t){rc.has(e)||rc.set(e,new Set);let n=rc.get(e);return n.add(t),()=>{n.delete(t)}}function gT(e){return typeof e=="string"?{name:e}:e}function $r(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function sr(){return $r("task-boundary")}function zr(e){if(!e||typeof e!="object")return;let t=typeof e.handoffId=="string"?e.handoffId.trim():"",n=typeof e.targetUrl=="string"?e.targetUrl.trim():"";if(!t||!n)return;let r=Number(e.sourceLogicalTabId);return{handoffId:t,targetUrl:n,sourceLogicalTabId:Number.isFinite(r)&&r>0?r:void 0,runId:typeof e.runId=="string"&&e.runId.trim()?e.runId.trim():void 0,createdAt:Number(e.createdAt)||Date.now(),consumed:e.consumed===!0}}function hm(e){if(e)return{handoffId:e.handoffId,targetUrl:e.targetUrl,sourceLogicalTabId:e.sourceLogicalTabId,runId:e.runId,ts:e.createdAt}}function $l(e){return{handoffId:e.handoffId,targetUrl:e.targetUrl,sourceLogicalTabId:e.sourceLogicalTabId,runId:e.runId,createdAt:Number(e.ts)||Date.now(),consumed:!1}}function Wo(e){let t=typeof e?.pendingRun?.taskBoundaryId=="string"?e.pendingRun.taskBoundaryId:void 0;if(t)return Ae(t);let n=typeof e?.workerState?.taskBoundaryId=="string"?e.workerState.taskBoundaryId:void 0;if(n)return Ae(n)}function bT(e){let t=Wo(e);return t||sr()}function yn(){return Ae(Ce)||Wo(u)}function Fo(e){let t=Tp({source:e.source,incomingBoundaryId:e.incomingBoundaryId,currentBoundaryId:yn(),taskEpochAdvanced:e.taskEpochAdvanced,hasPendingRun:!!u?.pendingRun,taskStatus:u?.activeTask?.status,allowBootstrapAdoption:e.allowBootstrapAdoption});return t.accept?(t.adoptedBoundaryId&&(Ce=t.adoptedBoundaryId),!0):!1}function vu(e=12e4){let t=zr(u?.lastNavigationHandoff);if(!t||t.consumed===!0)return;let n=Date.now()-Number(t.createdAt||0);if(!(!Number.isFinite(n)||n<-5e3||n>e))return t}function gm(e){return e==="agent_navigation"||e==="cross_host_navigation"||e==="handoff"||e==="worker_interrupted"||e==="page_reload"}function yT(e){if(!u||!gm(e.resumeReason))return!1;let t=zr(u.lastNavigationHandoff);if(!t?.targetUrl)return!1;let n=Date.now()-Number(t.createdAt||0);return!Number.isFinite(n)||n<-5e3||n>12e4?!1:Cl(t.targetUrl,window.location.href)}function vT(e){if(!vr||!gm(e.resumeReason))return!1;let t=zr(u?.lastNavigationHandoff);if(!t)return!1;let n=Date.now()-Number(t.createdAt||0);return Number.isFinite(n)&&n>=-5e3&&n<=um}function Cs(e){let t=ze(u?.pendingRun)?.taskBoundaryId;if(t){Ce=t;return}let n=Mt(u?.workerState)?.taskBoundaryId;if(n){Ce=n;return}(!Ce||e?.rotateIfMissing)&&(Ce=sr())}function TT(e){let t=`${Mv}${e}`;try{let n=window.sessionStorage.getItem(t);if(n&&n.trim())return n.trim();let r=$r("runtime");return window.sessionStorage.setItem(t,r),r}catch{return $r("runtime")}}function Ri(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function Ka(e){return String(e||"").trim().replace(/[^a-zA-Z0-9._:-]/g,"").slice(0,180)}function bm(e){try{let t=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`));return t?decodeURIComponent(t[1]||""):void 0}catch{return}}function em(e,t,n){try{let r=n?`; domain=${n}`:"";return document.cookie=`${e}=${encodeURIComponent(t)}; path=/; max-age=${Hv}; samesite=lax${r}`,bm(e)===t}catch{return!1}}function kT(e){let t=String(e||"").trim().toLowerCase();if(!t||t==="localhost"||/^\d{1,3}(\.\d{1,3}){3}$/.test(t))return[];let n=t.split(".").filter(Boolean);if(n.length<2)return[];let r=[];for(let o=n.length-2;o>=0;o-=1)r.push(`.${n.slice(o).join(".")}`);return r}function _T(e,t){let n=`rover_vid_${Ri(e)}`;for(let r of kT(window.location.hostname))if(em(n,t,r))return;em(n,t)}function Ya(e,t){let n=`${cm}${e}`;try{window.localStorage.setItem(n,t)}catch{}try{window.sessionStorage.setItem(n,t)}catch{}_T(e,t)}function ym(e,t){u&&(u.visitor=t,xe());try{localStorage.setItem(`rover:visitor:${e}`,JSON.stringify(t))}catch{}}function ET(e){if(u?.visitor?.name||u?.visitor?.email)return u.visitor;try{let t=localStorage.getItem(`rover:visitor:${e}`);return t?JSON.parse(t):void 0}catch{return}}function vm(e){let t=Ka(e.visitorId||"");if(t)return t;if(e.checkpointing?.autoVisitorId===!1)return;let n=`${cm}${e.siteId}`,r=`rover_vid_${Ri(e.siteId)}`,o=Ka(bm(r)||"");if(o)return Ya(e.siteId,o),o;try{let i=Ka(window.localStorage.getItem(n)||"");if(i)return Ya(e.siteId,i),i}catch{}try{let i=Ka(window.sessionStorage.getItem(n)||"");if(i)return Ya(e.siteId,i),i}catch{}let s=`v_${Ri(`${e.siteId}:${$r("visitor")}`)}_${Date.now().toString(36)}`;return Ya(e.siteId,s),s}function tm(e,t){return`visitor-${Ri(`${e}:${t}`)}`}function Tm(e){!Xe||!Be||(Xe.registerTool(e.def,e.handler),Be.postMessage({type:"register_tool",tool:e.def}))}function ws(e){return`${kc}${e}`}function oc(e,t){let n=String(t||"").trim();return n?`${kc}${e}:${Ri(n)}`:ws(e)}function eu(e){return`${kc}${e}:latest_key`}function wT(e){try{let t=String(sessionStorage.getItem(eu(e))||"").trim();return!t||!t.startsWith(kc)?void 0:t}catch{return}}function tu(e,t){if(e)try{if(!t){sessionStorage.removeItem(eu(e));return}sessionStorage.setItem(eu(e),t)}catch{}}function Tu(e){return`${Yv}${e}`}function IT(e,t){try{sessionStorage.setItem(Tu(e),JSON.stringify(t))}catch{}}function xT(e){try{let t=Tu(e),n=sessionStorage.getItem(t);if(!n)return;sessionStorage.removeItem(t);let r=JSON.parse(n),o=Number(r?.ts)||0;return!r?.runId||!o||Date.now()-o>um?void 0:{runId:String(r.runId),text:typeof r.text=="string"?r.text:void 0,taskBoundaryId:typeof r.taskBoundaryId=="string"&&r.taskBoundaryId.trim()?r.taskBoundaryId.trim():void 0,resumeReason:r.resumeReason==="cross_host_navigation"||r.resumeReason==="agent_navigation"||r.resumeReason==="handoff"||r.resumeReason==="page_reload"?r.resumeReason:void 0,handoffId:typeof r.handoffId=="string"?r.handoffId:void 0,openIntent:r.openIntent==="preserve_if_running"?"preserve_if_running":void 0,ts:o}}catch{return}}function km(e){if(e)try{sessionStorage.removeItem(Tu(e))}catch{}}function nm(e){let t=typeof e?.runId=="string"&&e.runId.trim()?e.runId.trim():void 0,n=typeof e?.taskId=="string"&&e.taskId.trim()?e.taskId.trim():void 0;if(!t&&!n){_s=void 0;return}_s={runId:t,taskId:n,expiresAt:Date.now()+Math.max(1e3,Number(e?.ttlMs)||Qv)}}function $o(){_s=void 0}function ku(e){let t=_s;if(!t)return!1;if(t.expiresAt<=Date.now())return _s=void 0,!1;let n=String(e?.activeTask?.status||"").trim();if(n&&n!=="running")return _s=void 0,!1;let r=String(t.runId||"").trim(),o=String(t.taskId||"").trim(),s=String(e?.pendingRun?.id||"").trim(),i=String(e?.activeTask?.taskId||"").trim();return!(r&&s&&r!==s&&(!o||!i||o!==i)||o&&i&&o!==i)}function Di(e){e&&ku(e)&&(e.uiHidden=!1,e.uiOpen=!0)}function cn(e="session_start",t=Date.now(),n){return{taskId:n||$r("task"),status:"running",startedAt:t,lastUserAt:void 0,lastAssistantAt:void 0,boundaryReason:e,endedAt:void 0}}function nu(e,t){return{version:hu,sessionId:e,runtimeId:t,uiOpen:!1,uiHidden:!1,uiStatus:void 0,transientStatus:void 0,uiMessages:[],timeline:[],executionMode:"controller",workerState:void 0,pendingRun:void 0,lastNavigationHandoff:void 0,taskEpoch:1,activeTask:cn(),taskTabScope:void 0,lastRoutingDecision:void 0,updatedAt:Date.now(),tasks:{},activeTaskId:void 0,taskOrder:[]}}function Jt(e,t=Lv){return e.length<=t?e:`${e.slice(0,t)}\u2026`}function sc(e){if(e!=null){if(typeof e=="string")return Jt(e,1200);try{return Jt(JSON.stringify(e),1200)}catch{try{return Jt(String(e),1200)}catch{return}}}}function _c(e){let t=e?.telemetry,n=Number(t?.sampleRate),r=Number.isFinite(n)?Math.min(1,Math.max(0,n)):1,o=Number(t?.flushIntervalMs),s=Number.isFinite(o)?Math.min(6e4,Math.max(2e3,Math.floor(o))):$v,i=Number(t?.maxBatchSize),a=Number.isFinite(i)?Math.min(80,Math.max(1,Math.floor(i))):Vv;return{enabled:t?.enabled!==!1,sampleRate:r,flushIntervalMs:s,maxBatchSize:a,includePayloads:t?.includePayloads===!0}}function Ec(e){return e==="same_tab"||e==="open_new_tab"?e:"same_tab"}function Ai(e){return e==="host_only"?"host_only":"registrable_domain"}function Oi(e,t){return e==="observer"?"This tab is in observer mode because another tab currently holds Rover action control.":t?"Controller tab ready for actions.":"Actions are disabled by configuration (allowActions=false)."}function _u(e){return e==="auto"||e==="confirm"||e==="never"?e:"confirm"}function _m(e){return"host_session"}function Em(e){return"task_touched_only"}function Eu(e){return"crash_only"}function mc(e){let t=Number(e);return Number.isFinite(t)?Math.max(6e4,Math.min(30*6e4,Math.floor(t))):Ov}function wu(e){return"read_only"}function wm(e){return"heuristic_same_window"}function Iu(e){let t=Number(e);return Number.isFinite(t)?Math.max(1e4,Math.min(10*6e4,Math.floor(t))):Bv}function xu(e){let t=Number(e);return Number.isFinite(t)?Math.max(.05,Math.min(.9,t)):Uv}function Im(e){return"empty"}function xm(e){return"deterministic_cues"}function Sm(e){let t=Number(e);return Number.isFinite(t)?Math.max(1,Math.min(4,Math.floor(t))):Pv}function Rm(e){return"auto"}function Am(e){return!1}function Cm(e){return"pre_tool_block"}function ST(){return Vp({pendingRunText:u?.pendingRun?.text,activeRunText:R?.getState()?.activeRun?.text,rootWorkerInput:u?.workerState?.rootUserInput,lastUserInputText:$t,fallback:"navigation request"})}function Mm(e){return e!==!1}function At(e,t,n){let r=Number(e);if(Number.isFinite(r))return Math.max(t,Math.min(n,Math.floor(r)))}function Su(e){return"on_demand"}function Ru(e){let t=Number(e);return Number.isFinite(t)?Math.max(5e3,Math.min(12e4,Math.floor(t))):Tf.idleCloseMs}function Ms(e,t){let n=Number(e);return Number.isFinite(n)?Math.max(32768,Math.min(2097152,Math.floor(n))):t}function Au(e){return!(!e||!_c(e).enabled||!ir(e))}function rm(e){if(e!=null){if(typeof e=="string")return Jt(e,260);if(typeof e=="number"||typeof e=="boolean")return e;if(Array.isArray(e))return{type:"array",length:e.length};if(typeof e=="object"){let n={type:"object",keys:Object.keys(e).slice(0,20)},r=["code","message","stage","status","reason","taskId","runId","policyAction"];for(let o of r){let s=e?.[o];s!=null&&(typeof s=="string"?n[o]=Jt(s,180):(typeof s=="number"||typeof s=="boolean")&&(n[o]=s))}return n}}}function RT(e,t){if(!t)return rm(e);let n=Nu(e);if(n!=null)return typeof n=="string"?Jt(n,1e3):typeof n=="number"||typeof n=="boolean"?n:Array.isArray(n)?{type:"array",length:n.length}:typeof n=="object"?n:rm(e)}function Cu(){Ja&&(clearInterval(Ja),Ja=null),Hr&&(clearTimeout(Hr),Hr=null),ki=!1}function AT(e){return`${$a(e.apiBase)}/telemetry/ingest`}function ru(e){let t=e||C,n=String(t?.publicKey||"").trim();if(n.startsWith("pk_site_"))return n;let r=String(t?.authToken||"").trim();return r.startsWith("pk_site_")?r:""}function ir(e){if(Qt&&kr>Date.now()+2e3)return Qt;try{let r=C?.siteId||e?.siteId||"";if(r){let o=sessionStorage.getItem(`rover:sess:${r}`);if(o){let{t:s,e:i}=JSON.parse(o);if(s&&typeof s=="string"&&s.startsWith("rvrsess_")&&Number(i)>Date.now()+2e3)return Qt=s,kr=Number(i),s}}}catch{}let t=e||C,n=String(t?.sessionToken||t?.authToken||"").trim();return n.startsWith("rvrsess_")?n:""}function hc(e,t){let n=String(e||"").trim();Qt=n||void 0,kr=Number(t)>0?Number(t):0;try{let r=C?.siteId||"";n&&kr>Date.now()?sessionStorage.setItem(`rover:sess:${r}`,JSON.stringify({t:n,e:kr})):sessionStorage.removeItem(`rover:sess:${r}`)}catch{}}function CT(e){!e||!C||(C.externalNavigationPolicy=e.externalNavigationPolicy||C.externalNavigationPolicy,e.domainScopeMode&&(C.domainScopeMode=Ai(e.domainScopeMode)),(e.crossHostPolicy==="open_new_tab"||e.crossHostPolicy==="same_tab")&&(C.navigation={...C.navigation||{},crossHostPolicy:Ec(e.crossHostPolicy)}),C.tools||(C.tools={}),C.tools.web||(C.tools.web={}),C.tools.web.enableExternalWebContext=e.enableExternalWebContext??C.tools.web.enableExternalWebContext,C.tools.web.scrapeMode=e.externalScrapeMode??C.tools.web.scrapeMode,Array.isArray(e.externalAllowDomains)&&(C.tools.web.allowDomains=e.externalAllowDomains),Array.isArray(e.externalDenyDomains)&&(C.tools.web.denyDomains=e.externalDenyDomains))}function ou(e){if(!u||!e)return;Ur=Math.max(1,Number(e.epoch||Ur));let t=typeof e.activeRunId=="string"?e.activeRunId:"",n=String(e.runStatus||"").trim().toLowerCase();Ip({serverRunId:t,runStatus:n,ignoredRunIds:er})&&co(t,"projection_ignored_active_run",{attemptImmediately:!0}),io(t||void 0);let r=u.pendingRun,o=r?.id||"";!t&&o?(n==="completed"||n==="cancelled"||n==="failed"||n==="ended"||u.activeTask?.status!=="running")&&(fo(o),kt(void 0),R?.setActiveRun(void 0)):t&&!wr()&&Pi(it)!=="observer"&&wp({serverRunId:t,localPendingRunId:o,ignoredRunIds:er})?kt({id:t,text:r?.text||"",startedAt:r?.startedAt||Date.now(),attempts:r?.attempts||0,autoResume:!0,taskBoundaryId:r?.taskBoundaryId||Ce,resumeRequired:r?.resumeRequired===!0,resumeReason:r?.resumeReason}):t&&er.has(t)&&o===t&&(R?.releaseWorkflowLock(t),kt(void 0),R?.setActiveRun(void 0));let s=String(e.snapshotMeta?.digest||"").trim()||(Number.isFinite(Number(e.snapshotMeta?.updatedAt))?`u:${Math.max(0,Number(e.snapshotMeta?.updatedAt||0))}`:Number.isFinite(Number(e.snapshotUpdatedAt))?`u:${Math.max(0,Number(e.snapshotUpdatedAt||0))}`:""),i=s?`${e.sessionId}:${s}`:"";if(e.snapshot&&typeof e.snapshot=="object"&&(!i||i!==pc)){let c=e.snapshot?.runtimeState,l=e.snapshot?.sharedState;if(c&&typeof c=="object"){Ss=!0;try{th({version:lm,siteId:C?.siteId||u.sessionId,visitorId:Ct||"server_projection",sessionId:u.sessionId,updatedAt:Number(e.snapshot?.updatedAt)||Date.now(),runtimeState:c,sharedState:l})}finally{Ss=!1}i&&(pc=i)}}let a=String(u?.pendingRun?.id||"").trim();a&&er.has(a)&&(R?.releaseWorkflowLock(a),kt(void 0),R?.setActiveRun(void 0)),gc()}async function Mu(e){if(!(!u||!e.apiBase&&!e.publicKey&&!e.authToken&&!e.sessionToken||!ru(e)&&!Qt)){ye?ye.setApiBase(e.apiBase):ye=new za({apiBase:e.apiBase,siteId:e.siteId,getSessionId:()=>u?.sessionId,getBootstrapToken:()=>ru(C),getHost:()=>window.location.hostname,getPageUrl:()=>window.location.href,getTaskBoundaryId:()=>Ce,shouldKeepTransportActive:()=>!Ns(),onSession:n=>{if(hc(n.sessionToken,n.sessionTokenExpiresAt),Zn&&R?.broadcastSessionToken(n.sessionToken||"",n.sessionTokenExpiresAt||0),Ur=Math.max(1,Number(n.epoch||Ur)),u&&n.sessionId&&u.sessionId!==n.sessionId&&(u.sessionId=n.sessionId,pc="",xe()),CT(n.policy),n.siteConfig&&typeof n.siteConfig=="object"&&C){let r={shortcuts:uo(n.siteConfig.shortcuts),greeting:Os(n.siteConfig.greeting),limits:Mc(n.siteConfig.limits),pageConfig:qr(n.siteConfig.pageConfig),version:n.siteConfig.version!=null?String(n.siteConfig.version):void 0};Wr=r,nh(C.siteId,r),vc(C)}n.projection&&ou(n.projection),Be&&Be.postMessage({type:"update_config",config:{...jo(),pageConfig:Mi(C),publicKey:void 0,sessionToken:Qt,authToken:ir(C),sessionId:u?.sessionId,activeRunId:u?.pendingRun?.id,sessionEpoch:ye?.getEpoch?.()??Ur,sessionSeq:ye?.getLastSeq?.()??0}}),Xe&&Xe.setNavigationPolicy({allowedDomains:C?.allowedDomains,domainScopeMode:C?.domainScopeMode,externalNavigationPolicy:C?.externalNavigationPolicy,crossHostPolicy:C?.navigation?.crossHostPolicy}),C&&(Fu(C),wc(C)),Rs=!0,_r(),gc()},onProjection:n=>{ou(n),Zn&&R?.broadcastProjection(n),gc(),Be&&Be.postMessage({type:"update_config",config:{...jo(),pageConfig:Mi(C),sessionToken:Qt,authToken:ir(C),sessionId:u?.sessionId,activeRunId:u?.pendingRun?.id,sessionEpoch:ye?.getEpoch?.()??Ur,sessionSeq:ye?.getLastSeq?.()??0}})},onError:n=>{Vt("error",{message:n?.message||"server runtime sync failed",scope:"server_runtime"})}});try{await ye.start()}catch(n){C?.apiMode!==!1&&qe("error",{message:n?.message||"server runtime sync failed",scope:"server_runtime_start"})}}}async function Bo(e=!1){if(Za||vs)return;if(!C||!Au(C)){bn=[];return}if(!e&&Ns()||!bn.length)return;let t=_c(C),n=ir(C);if(!n)return;let r=bn.splice(0,t.maxBatchSize);if(r.length){Za=!0,dc=Date.now();try{let o=await fetch(AT(C),{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify({sessionToken:n,sessionId:u?.sessionId,runId:u?.pendingRun?.id,siteId:C.siteId,runtimeId:Ve,visitorId:Ct,flushReason:e?"manual":"interval",sdkVersion:"rover_sdk_v1",pageUrl:window.location.href,userAgent:navigator.userAgent,sampleRate:t.sampleRate,events:r})});if(!o.ok){o.status===401||o.status===403?vs=!0:bn=[...r,...bn].slice(-cc);return}let s=await o.json().catch(()=>{});if(s?.success===!1){let i=String(s?.errorCode||s?.errorDetails?.code||"").toUpperCase();(i==="INVALID_API_KEY"||i==="MISSING_API_KEY"||i==="UNAUTHENTICATED"||i==="PERMISSION_DENIED")&&(vs=!0);return}}catch{bn=[...r,...bn].slice(-cc)}finally{Za=!1}}}function wc(e){if(Cu(),vs=!1,!Au(e)){bn=[];return}let t=_c(e);Ja=setInterval(()=>{Bo(!1)},t.flushIntervalMs)}function Vt(e,t){if(!Au(C)||vs||Ns()&&!aT.has(e))return;let n=_c(C);if(n.sampleRate<1&&Math.random()>n.sampleRate)return;let r=Date.now();if(e==="status"){if(r-Gl<sT)return;Gl=r}else if(e==="checkpoint_state"){if(r-Xl<iT)return;Xl=r}let o={name:e,ts:r,seq:++dm,payload:RT(t,n.includePayloads)};if(bn.push(o),bn.length>cc&&(bn=bn.slice(-cc)),fm.has(e)){let i=Date.now()-dc;if(i>=Jp){Bo(!1);return}Hr||(Hr=setTimeout(()=>{Hr=null,Bo(!1)},Jp-i));return}if(bn.length>=n.maxBatchSize){let i=Date.now()-dc;i>=Qp?Bo(!1):ki||(ki=!0,setTimeout(()=>{ki=!1,Bo(!1)},Qp-i))}}function MT(e){if(e==="analyze"||e==="route"||e==="execute"||e==="verify"||e==="complete")return e}function NT(e){return e?e==="analyze"?"Analyze":e==="route"?"Route":e==="execute"?"Execute":e==="verify"?"Verify":e==="complete"?"Complete":"Status":"Status"}function LT(e,t,n){return[String(t||""),String(e||"").trim().toLowerCase(),String(n||"").trim().toLowerCase()].join("|")}function DT(e,t){if(!e)return!0;let n=e.trim();return!!(t&&n.toLowerCase()===t.trim().toLowerCase()||/^complexity score\b/i.test(n)||/\btool loop$/i.test(n)||/^calling \w[\w\s]*(workflow|sub-agent)$/i.test(n))}function OT(){return u?.pendingRun?.id}function io(e){Li=String(e||"").trim()||void 0}function om(){let e=u?.pendingRun?.id;if(!e)return;if(!ye)return e;let t=ye.getActiveRunId(),n=String(t||Li||"").trim();if(n)return n===e?e:void 0}function fo(e){e&&(er.add(e),mT(er,dT))}function su(e){e&&er.delete(e)}function iu(e){let t=Math.max(0,Math.floor(e)),n=Si*2**t;return Math.max(120,Math.min(nT,n))}function PT(){if(!Kt.size)return null;let e=Number.POSITIVE_INFINITY;for(let t of Kt.values())e=Math.min(e,Number(t.nextAttemptAt)||Number.POSITIVE_INFINITY);return Number.isFinite(e)?Math.max(120,Math.floor(e-Date.now())):null}function au(e=Si){to&&(clearTimeout(to),to=null);let t=Math.max(80,Math.floor(e));to=setTimeout(()=>{to=null,gc()},t)}function co(e,t="local_run_abandoned",n){let r=String(e||"").trim();if(!r)return;let o=Date.now(),s=Kt.get(r),i=n?.attemptImmediately===!0?o:s?.nextAttemptAt&&s.nextAttemptAt>o?s.nextAttemptAt:o+iu(s?.attempts||0);for(Kt.set(r,{runId:r,reason:String(t||s?.reason||"local_run_abandoned").trim()||"local_run_abandoned",attempts:s?.attempts||0,nextAttemptAt:i,createdAt:s?.createdAt||o,lastError:s?.lastError});Kt.size>oT;){let a=Array.from(Kt.values()).sort((c,l)=>Number(c.createdAt)-Number(l.createdAt))[0];if(!a?.runId)break;Kt.delete(a.runId)}au(n?.attemptImmediately?50:Si)}async function gc(){if(ec||!Kt.size)return;if(!(!!ye&&!!Rs&&!!ir(C))){au(Si);return}ec=!0;try{let t=Date.now(),n=Array.from(Kt.values()).sort((r,o)=>Number(r.nextAttemptAt)-Number(o.nextAttemptAt));for(let r of n){if(r.nextAttemptAt>t)break;if(!Kt.has(r.runId))continue;if(Pu(r.runId)){Kt.set(r.runId,{...r,nextAttemptAt:Date.now()+iu(Math.max(1,r.attempts))});continue}let o=ye;if(!o){Kt.set(r.runId,{...r,nextAttemptAt:Date.now()+Si});continue}try{if(await o.controlRun({action:"cancel",runId:r.runId,reason:r.reason})){Kt.delete(r.runId);continue}throw new Error("cancel_control_no_response")}catch(s){let i=Math.max(0,Number(r.attempts||0))+1;if(i>=rT){Kt.delete(r.runId),qe("error",{message:`Failed to cancel stale run ${r.runId} after retries.`,scope:"run_cancel_repair",code:"RUN_CANCEL_REPAIR_FAILED",runId:r.runId});continue}Kt.set(r.runId,{...r,attempts:i,lastError:String(s?.message||"cancel_control_failed"),nextAttemptAt:Date.now()+iu(i)})}}}finally{ec=!1;let t=PT();t!=null&&au(t)}}function eo(){return u?.activeTask?.status==="running"}function Nm(){mt&&(eo()||cu()?mt.enterActiveMode():mt.enterIdleMode())}function BT(){return typeof document<"u"&&document.visibilityState==="hidden"}function cu(){return!!u?.pendingRun?.id}function UT(){let e=R?.getState()?.activeRun;if(!e)return!1;if(e.runtimeId)return e.runtimeId===Ve;let t=String(u?.pendingRun?.id||"").trim();return!!(t&&e.runId===t)}function FT(){let e=R?.getWorkflowLockInfo();return!!(e?.locked&&e.holderRuntimeId===Ve)}function Lm(){return R?FT()||UT()?!0:cu()&&!wr():eo()||cu()}function HT(){return Su(C?.transport?.activation)!=="on_demand"?!0:!!(u?.uiOpen||Lm()||Dm()||Om())}function Ns(){if(!Zn)return!0;if(HT())vi=0;else{let t=Ru(C?.transport?.idleCloseMs);return vi<=0&&(vi=Date.now()+t),!(Date.now()<vi)}return BT()?!Lm()&&!u?.uiOpen:!1}function ar(e=!1){if(typeof window>"u")return;let t=Ns();if(!(!e&&fc===t)){fc=t;try{let n=window.rtrvrAISetObserverPaused;typeof n=="function"&&n(t)}catch{}}}function Dm(){let e=R?.getState()?.activeRun;return!!(e&&e.runtimeId&&e.runtimeId!==Ve)}function Om(){let e=R;if(!e?.isWorkflowLocked())return!1;let t=e.getWorkflowLockInfo();if(!t.locked||!t.holderRuntimeId||t.holderRuntimeId===Ve)return!1;let n=e.listTabs({scope:"all"}).find(r=>r.runtimeId===t.holderRuntimeId);return n?Number(n.updatedAt)>Date.now()-5e3:!1}function wr(){return Om()}function Pi(e){return wr()?"observer":e==="observer"?"controller":e}function Pm(){return wu(C?.task?.observerInput)==="read_only"?!wr():!Dm()}function Bm(e){if(e==="observer")return wr()?"Observing active run in another tab...":"Send to take control and run here."}function qT(){if(!R)return!1;let e=R.getState(),t=e?.activeRun,n=String(t?.runId||"").trim(),r=String(t?.text||"").trim();if(!R.requestControl())return!1;if(!n)return!0;if(!R.acquireWorkflowLock(n,{force:!0}))return!1;if(!u)return!0;let i=tr(Mt(e?.workerContext),yn());return i&&(u.workerState=i,Cs(),R.setWorkerContext(Ui(u.workerState)),Wn&&Be&&(qn(),Be.postMessage({type:"hydrate_state",state:u.workerState}),qe("context_restored",{source:"controller_handoff",ts:Date.now()}))),e?.task&&(u.activeTask=qm(e.task,u.activeTask||cn("handoff"))),u.uiHidden=!1,u.uiOpen=!0,(r||n)&&(kt(ze({id:n,text:r||u.pendingRun?.text||$t||"Continue task",startedAt:t?.startedAt||u.pendingRun?.startedAt||Date.now(),attempts:u.pendingRun?.id===n&&u.pendingRun.attempts||0,autoResume:!0,taskBoundaryId:u.pendingRun?.taskBoundaryId||u.workerState?.taskBoundaryId||Ce,resumeRequired:!0,resumeReason:"handoff"})),R.setActiveRun({runId:n,text:r||u.pendingRun?.text||"Continue task"})),xe(),_r({overridePolicyAction:"auto_resume"}),!0}function WT(e){let t=typeof e?.type=="string"?e.type:"";if(!hT.has(t))return!1;let n=typeof e?.runId=="string"&&e.runId?e.runId:void 0,r=typeof e?.taskBoundaryId=="string"&&e.taskBoundaryId?e.taskBoundaryId:void 0,o=String(ye?.getActiveRunId()||Li||"").trim()||void 0;return Sp({type:t,messageRunId:n,messageTaskBoundaryId:r,currentTaskBoundaryId:yn(),pendingRunId:OT(),sharedActiveRunId:R?.getState()?.activeRun?.runId,authoritativeActiveRunId:o,taskStatus:u?.activeTask?.status,ignoredRunIds:er})}function Vr(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r=0;r<e.length;r+=1){let o=e[r];if(!o||typeof o!="object")continue;let s=String(o.key||o.id||"").trim()||`clarification_${r+1}`,i=String(o.query||o.question||"").trim();if(!i)continue;let a=typeof o.required=="boolean",c=typeof o.optional=="boolean",l=a?!!o.required:c?!o.optional:!0,d=`${s}::${i}`.toLowerCase();if(n.has(d))continue;n.add(d);let p={key:s,query:i,...typeof o.id=="string"&&o.id.trim()?{id:o.id.trim()}:{},...typeof o.question=="string"&&o.question.trim()?{question:o.question.trim()}:{},...Array.isArray(o.choices)?{choices:o.choices}:{}};l||(p.required=!1),t.push(p)}return t.slice(0,6)}function $T(e,t){let n=String(e||"").trim();if(n)return n;if(!t||typeof t!="object")return"";let r=t.answersByKey&&typeof t.answersByKey=="object"?t.answersByKey:{},o=Vr(u?.workerState?.pendingAskUser?.questions),i=(Array.isArray(t.keys)?t.keys:[]).map(l=>String(l||"").trim()).filter(Boolean);if(i.length===0)for(let l of o){let d=String(l.key||"").trim();d&&i.push(d)}if(i.length===0)for(let l of Object.keys(r)){let d=String(l||"").trim();d&&i.push(d)}let a=[],c=new Set;for(let l of i){let d=String(l||"").trim();if(!d||c.has(d))continue;c.add(d);let p=String(r[d]||"").trim();a.push(`${d}: ${p||"(no answer provided)"}`)}return a.length>0?a.join(`
|
|
1954
|
-
`):String(t.rawText||"").trim()}function
|
|
2093
|
+
`;let Qn=document.createElement("div");Qn.className="shortcutsEmptyState";let br=document.createElement("div");br.className="shortcutsHeading",br.textContent=o?`Hey ${o}! What can I help with?`:`What can ${t} help you with?`;let Jr=document.createElement("div");Jr.className="shortcutsGrid",Qn.appendChild(br),Qn.appendChild(Jr),He.appendChild(Qn);let Dr=document.createElement("div");Dr.className="shortcutsBar";let Wn=document.createElement("div");Wn.className="questionPrompt";let Or=document.createElement("div");Or.className="questionPromptTitle",Or.textContent="Need a bit more info";let gn=document.createElement("form");gn.className="questionPromptForm";let Sn=document.createElement("div");Sn.className="questionPromptList",gn.appendChild(Sn);let Le=document.createElement("div");Le.className="questionPromptActions";let Jn=document.createElement("button");Jn.type="button",Jn.className="questionPromptCancel",Jn.textContent="Cancel",Le.appendChild(Jn);let Rn=document.createElement("button");Rn.type="submit",Rn.className="questionPromptSubmit",Rn.textContent="Continue",Le.appendChild(Rn),gn.appendChild(Le),Wn.appendChild(Or),Wn.appendChild(gn);let xt=document.createElement("form");xt.className="composer";let Zn=document.createElement("div");Zn.className="composerRow";let ft=document.createElement("textarea");ft.rows=1,ft.placeholder=`Ask ${t} to act on this website...`,Zn.appendChild(ft);let Co=document.createElement("div");Co.className="composerActions";let cn=document.createElement("button");cn.type="button",cn.className="voiceBtn",cn.setAttribute("aria-label","Start voice dictation"),cn.innerHTML='<svg viewBox="0 0 24 24"><path d="M12 3a3 3 0 0 0-3 3v5a3 3 0 1 0 6 0V6a3 3 0 0 0-3-3Z"></path><path d="M19 11a7 7 0 0 1-14 0"></path><path d="M12 18v3"></path><path d="M8 21h8"></path></svg>',Co.appendChild(cn);let Pr=document.createElement("button");Pr.type="submit",Pr.className="sendBtn",Pr.innerHTML='<svg viewBox="0 0 24 24"><line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon></svg>',Co.appendChild(Pr),Zn.appendChild(Co),xt.appendChild(Zn);let er=document.createElement("div");er.className="composerStatus",er.setAttribute("aria-live","polite"),xt.appendChild(er);let Br=document.createElement("div");Br.className="panelGrabber",Br.setAttribute("aria-hidden","true");let An=document.createElement("span");An.className="panelGrabberHandle",Br.appendChild(An);let Cn=document.createElement("div");Cn.className="resizeHandle",Cn.setAttribute("aria-hidden","true");let Qt=document.createElement("div");Qt.className="roverConversationPill",Qt.setAttribute("role","button"),Qt.setAttribute("tabindex","0");let Zr=document.createElement("span");Zr.className="roverConversationPillLabel",Zr.textContent="Current task";let $n=document.createElement("span");$n.className="roverConversationPillArrow",$n.textContent="\u25BE",Qt.appendChild(Zr),Qt.appendChild($n),Qt.addEventListener("click",()=>{w.classList.toggle("open")});let eo=document.createElement("div");eo.className="roverTabBar";let Mn=document.createElement("div");Mn.className="pausedTaskBanner";let f="",w=document.createElement("div");w.className="conversationDrawer";let E=document.createElement("div");E.className="conversationDrawerHeader";let I=document.createElement("span");I.className="conversationDrawerTitle",I.textContent="Conversations";let y=document.createElement("button");y.type="button",y.className="conversationDrawerClose",y.textContent="\xD7",E.appendChild(I),E.appendChild(y);let b=document.createElement("div");b.className="conversationList";let k=document.createElement("button");k.type="button",k.className="conversationNewBtn",k.textContent="New conversation",w.appendChild(E),w.appendChild(b),w.appendChild(k),C.appendChild(Br),C.appendChild(Q),C.appendChild(Qt),C.appendChild(Mn),C.appendChild(Nr),C.appendChild(xn),C.appendChild(Dr),C.appendChild(Wn),C.appendChild(xt),C.appendChild(Cn),C.appendChild(w),u.appendChild(v),u.appendChild(R),u.appendChild(C),c.appendChild(p),c.appendChild(u);let x=ft,q=xn.querySelector(".taskSuggestionText"),U=xn.querySelector(".taskSuggestionBtn.primary"),W=xn.querySelector(".taskSuggestionBtn.secondary"),V=new Set,j=new Map,ne=[],ue="controller",Ee=!1,ce=!1,de=!1,he=e.shortcuts?.slice(0,vm)||[],De=null,it=!1,be=null,Re=!1,Ae=!1,qe=0,Ye=!1,je=null,oe=null,te=!1,le=null,Ue=null,pt={},nt=_m(e.voice),Oe="idle",$t="",Mo="",to="",no="",ro=!1,m=null,S=null,L=null,P=null,$=null,K=0,ee=!1,fe=!1,ke=0,ve=null,Ge=!1,Qe=!1,St="",_t=s?o_(i):{},Ve=Em(),Vt=Ve.storageKey,Pe=s&&Im(_t.desktop,Ve)||Ls(Ve),Ke=s?xm(_t[Ve.storageKey]?.preset)??1:1,zt=null,mt=null;function Sl(T){s&&(Pe=Ui(T,Ve),_t={..._t,desktop:Pe},wm(i,_t))}function Jg(T){return s?xm(_t[T]?.preset)??1:1}function $d(T,O){s&&(_t={..._t,[T]:{preset:O}},wm(i,_t))}function Vd(T){return Ui({width:_c,height:T.height-jo},T)}function zd(T,O){return Math.abs(T.width-O.width)<=6&&Math.abs(T.height-O.height)<=6}function Zg(T){return T===0?"compact":T===2?"large":"medium"}function jd(){if(u.dataset.layout=Ve.layout,u.dataset.orientation=Ve.orientation,C.dataset.layout=Ve.layout,C.dataset.orientation=Ve.orientation,C.dataset.resizable=s?"true":"false",!s){rt.classList.add("hidden");return}if(rt.classList.remove("hidden"),Ve.layout==="desktop"){let T=Vd(Ve),O=zd(Pe,T);rt.setAttribute("aria-label",O?"Reset Rover panel size":"Expand Rover panel"),rt.title=O?"Reset panel size":"Expand panel"}else{let T=Zg(Ke);rt.setAttribute("aria-label",`Change Rover panel size. Current ${T}.`),rt.title=`Panel size: ${T}`}}function oo(){let T=Em(),O=T.storageKey!==Vt;if(Ve=T,Vt=T.storageKey,T.layout==="desktop")s?O?Pe=Im(_t.desktop,T)||Ls(T):Pe=Ui(Pe,T):Pe=Ls(T),C.style.left="",C.style.right="20px",C.style.bottom="90px",C.style.width=`${Pe.width}px`,C.style.height=`${Pe.height}px`,C.style.minWidth=`${Ds}px`,C.style.minHeight=`${Os}px`,C.style.maxWidth=`${Math.max(Ds,Math.min(_c,T.width-jo))}px`,C.style.maxHeight=`${Math.max(Os,T.height-jo)}px`,zt=null;else{let Y=Sm(T),J=(T.layout==="tablet"?Am:Rm)+T.keyboardInset,Te=Jg(T.storageKey);Ke=s?O?Te:fo(Ke,0,2):1;let me=fo(Math.round(zt??Y[Ke]),Math.min(...Y),Math.max(...Y));if(T.layout==="tablet"){let Xe=Math.max(360,Math.min(520,T.width-24));C.style.left="",C.style.right="calc(16px + env(safe-area-inset-right))",C.style.width=`${Math.round(Xe)}px`,C.style.minWidth="320px"}else C.style.left="calc(8px + env(safe-area-inset-left))",C.style.right="calc(8px + env(safe-area-inset-right))",C.style.width="auto",C.style.minWidth="0px";C.style.bottom=`calc(${J}px + env(safe-area-inset-bottom))`,C.style.height=`${me}px`,C.style.minHeight="0px",C.style.maxWidth=`${Math.max(320,T.width-16)}px`,C.style.maxHeight=`${Math.max(...Y)}px`}jd()}function eb(){Pe=Ls(Ve),Sl(Pe),oo()}function tb(){if(s){if(Ve.layout==="desktop"){let T=Vd(Ve);Pe=zd(Pe,T)?Ls(Ve):T,Sl(Pe),oo();return}Ke=(Ke+1)%3,zt=null,$d(Ve.storageKey,Ke),oo()}}function so(){mt?.kind==="sheet"&&(zt=null),oo()}function ds(T,O){e.onVoiceTelemetry?.(T,O)}function Gd(T){x.value=T,x.style.height="auto",x.style.height=`${Math.min(96,Math.max(44,x.scrollHeight))}px`}function Ia(T="",O="info"){let Y=wt(T);er.textContent=Y,er.classList.toggle("visible",!!Y),er.classList.toggle("error",O==="error"&&!!Y)}function io(){S&&(clearTimeout(S),S=null)}function No(){L&&(clearTimeout(L),L=null)}function xa(){P&&(clearTimeout(P),P=null)}function hi(){$&&(clearTimeout($),$=null)}function gi(){Mo="",to="",no=""}function bi(){io(),No(),xa(),hi(),K=0,ee=!1,fe=!1,ke=0,ve=null,Ge=!1,Qe=!1}function Kd(){return n_(Mo,to,no)}function nb(){Gd(Kd())}function Rl(){return Mm(nt?.autoStopMs)}function Sa(){return K?Math.max(0,Date.now()-K):0}function vi(T){return{hadSpeech:ee,restartCount:ke,durationMs:Sa(),autoStopMs:Rl(),...T||{}}}function fs(T){Ge||(ds("voice_error",vi({code:T.code,recoverable:T.recoverable})),Ge=!0),T.code==="permission_denied"&&ds("voice_permission_denied",vi({code:T.code}))}function Xd(){if(nt?.enabled!==!0){St="";return}let T=tr.isSupported(),O=`${T?"browser":"unsupported"}|${nt.language||""}|${Rl()}`;St!==O&&(St=O,ds("voice_provider_selected",{provider:T?"browser":"unsupported",supported:T}))}function Jt(){let T=nt?.enabled===!0,O=tr.isSupported();if(cn.classList.toggle("visible",T&&O),cn.classList.toggle("active",Oe==="listening"),cn.disabled=x.disabled,cn.setAttribute("aria-pressed",Oe==="listening"?"true":"false"),cn.setAttribute("aria-label",Oe==="listening"?"Stop voice dictation":"Start voice dictation"),Oe==="error"&&$t){Ia($t,"error");return}if(Oe==="listening"){Ia(ee?"Listening. Pause briefly when you're done.":"Listening. Start speaking when you're ready.");return}if(T&&!O){Ia("Voice dictation is not available in this browser.");return}Ia("")}function ao(T,O){if(Oe!=="listening"){O?.resetDraftBase&&(gi(),bi());return}io(),No(),xa(),hi(),m=T,tr.stop(),O?.resetDraftBase&&gi()}function Yd(T){if(Oe!=="listening"||ee||m||ke>=$T)return!1;let O=Sa();return O>=ym||O>=Tm?!1:T?T.code==="no_speech"||T.code==="aborted"||T.code==="unknown":!0}function Al(){if(Oe!=="listening"||ee||!K)return;No();let T=ym-Sa();if(T<=0){let O=ve&&ve.code==="no_speech"?ve:Bi();m="no_speech",Oe="error",$t=O.message,fs(O),Jt(),tr.stop();return}L=setTimeout(()=>{if(Oe!=="listening"||ee)return;let O=Bi();ve=O,m="no_speech",Oe="error",$t=O.message,fs(O),Jt(),tr.stop()},T)}function Cl(){if(Oe!=="listening"||!K)return;xa();let T=Tm-Sa();if(T<=0){if(ee)ao("silence");else{let O=Bi();ve=O,m="no_speech",Oe="error",$t=O.message,fs(O),Jt(),tr.stop()}return}P=setTimeout(()=>{if(Oe!=="listening")return;if(ee){ao("silence");return}let O=Bi();ve=O,m="no_speech",Oe="error",$t=O.message,fs(O),Jt(),tr.stop()},T)}function Qd(){Oe!=="listening"||!ee||fe||(io(),S=setTimeout(()=>{Oe==="listening"&&ao("silence")},Rl()))}function rb(){Yd(ve)&&(hi(),ke+=1,ve=null,Al(),Cl(),$=setTimeout(()=>{$=null,!(Oe!=="listening"||ee||m)&&tr.start({language:nt?.language})},VT))}function ob(T){ve=T,!(m&&(T.code==="aborted"||T.code==="no_speech"||T.code==="unknown"))&&(T.code==="aborted"||T.code==="no_speech"||T.code==="unknown"||(io(),No(),hi(),Oe="error",$t=T.message,m="error",Jt(),fs(T)))}function Jd(){if(x.disabled)return;let T=wt(x.value);T&&(gs({visible:!1}),e.onSend(T),Gd(""),$t="",Oe="idle",gi(),bi(),ro=!1,m=null,Jt())}function sb(){if(!x.disabled&&nt?.enabled){if(!tr.isSupported()){Oe="error",$t="Voice dictation is not available in this browser.",Jt();return}Xd(),$t="",Oe="listening",ro=!1,m=null,Mo=x.value,to="",no="",bi(),K=Date.now(),Qe=!0,Al(),Cl(),Jt(),tr.start({language:nt.language})}}function Zd(T){let O=_m(T),Y=JSON.stringify(nt||null),z=JSON.stringify(O||null);if(Y===z){Jt();return}nt=O,$t="",ro=!1,Oe==="listening"?ao("config"):(gi(),bi(),Oe="idle"),Xd(),Jt()}let tr=bm({onStart:()=>{Oe="listening",$t="",ve=null,Al(),Cl(),Qe&&(ds("voice_started",vi({provider:"browser"})),Qe=!1),Jt()},onSpeechStart:()=>{Oe==="listening"&&(ee=!0,fe=!0,ve=null,No(),io(),Jt())},onSpeechEnd:()=>{Oe==="listening"&&(fe=!1,ee&&Qd(),Jt())},onResult:({finalTranscript:T,interimTranscript:O})=>{(T||O)&&(ee=!0,fe=O.length>0,ve=null,No(),io()),to=T,no=O,nb(),ee&&!fe&&Qd(),Jt()},onEnd:({requested:T})=>{if(hi(),!T&&Yd(ve)){rb();return}let O=wt(Kd()),Y=wt(Mo).length>0,z=ve,J=m||(T?"manual":"silence");if(io(),No(),xa(),!ee&&!T&&Oe!=="error"){let me=z&&z.code==="no_speech"?z:Bi();Oe="error",$t=me.message,m="no_speech",J="no_speech",fs(me)}else!T&&!m&&ee?J="silence":m&&(J=m);Oe!=="error"&&(Oe="idle",$t=""),O&&ds("voice_transcript_ready",vi({chars:O.length,hadExistingDraft:Y})),ds("voice_stopped",vi({reason:J,stopReason:J,requested:T,errorCode:z?.code}));let Te=ro;ro=!1,m=null,gi(),bi(),Jt(),Te&&Jd()},onError:ob});function ib(){Re=!Re,Wt.classList.toggle("visible",Re)}function ps(){Re=!1,Wt.classList.remove("visible")}let ef="";function tf(T){let O=T.filter(z=>z&&z.enabled!==!1).slice(0,vm),Y=O.map(z=>`${z.id||z.label}|${z.label}|${z.description||""}|${z.icon||""}`).join(";;");if(Y!==ef){ef=Y,he=O,Jr.innerHTML="";for(let z of he){let J=document.createElement("button");if(J.type="button",J.className="shortcutCard",z.icon){let me=document.createElement("span");me.className="shortcutCardIcon",me.textContent=z.icon,J.appendChild(me)}let Te=document.createElement("span");if(Te.className="shortcutCardLabel",Te.textContent=z.label,J.appendChild(Te),z.description){let me=document.createElement("span");me.className="shortcutCardDesc",me.textContent=z.description,J.appendChild(me)}J.addEventListener("click",()=>e.onShortcutClick?.(z)),Jr.appendChild(J)}Dr.innerHTML="";for(let z of he){let J=document.createElement("button");if(J.type="button",J.className="shortcutChip",z.icon){let me=document.createElement("span");me.className="shortcutChipIcon",me.textContent=z.icon,J.appendChild(me)}let Te=document.createTextNode(z.label);J.appendChild(Te),J.addEventListener("click",()=>e.onShortcutClick?.(z)),Dr.appendChild(J)}ms()}}function ms(){let T=he.length>0,O=!!le?.questions?.length,Y=T&&!de&&!ce,z=T&&de&&!ce&&!O;Qn.classList.toggle("visible",Y),Dr.classList.toggle("visible",z)}function ab(T){let O=wt(T);if(O){if(B.textContent=O,R.classList.contains("visible")){R.classList.add("textVisible");return}Ye||C.classList.contains("open")||(Ye=!0,R.classList.remove("dismissing","textVisible"),R.classList.add("visible"),oe&&(clearTimeout(oe),oe=null),oe=setTimeout(()=>{oe=null,R.classList.add("textVisible")},FT))}}function Ra(){if(oe&&(clearTimeout(oe),oe=null),!R.classList.contains("visible"))return;R.classList.add("dismissing");let T=()=>{R.classList.remove("visible","dismissing"),R.removeEventListener("animationend",T)};R.addEventListener("animationend",T),je&&(clearTimeout(je),je=null)}function cb(T){o=T||void 0,o?br.textContent=`Hey ${o}! What can I help with?`:br.textContent=`What can ${t} help you with?`}function lb(T){if(!T||!Array.isArray(T.questions))return[];let O=[],Y=new Set;for(let z=0;z<T.questions.length;z+=1){let J=T.questions[z];if(!J||typeof J!="object")continue;let Te=String(J.key||J.id||"").trim()||`clarification_${z+1}`,me=String(J.query||J.question||"").trim();if(!me)continue;let Xe=typeof J.required=="boolean",kt=typeof J.optional=="boolean",at=Xe?!!J.required:kt?!J.optional:!0;Y.has(Te)||(Y.add(Te),O.push({key:Te,query:me,...typeof J.id=="string"&&J.id.trim()?{id:J.id.trim()}:{},...typeof J.question=="string"&&J.question.trim()?{question:J.question.trim()}:{},...Array.isArray(J.choices)?{choices:J.choices}:{},required:at}))}return O.slice(0,6)}function ub(T){return T.map(O=>{let Y=Array.isArray(O.choices)?O.choices.map(J=>wt(String(J||""))).filter(Boolean).join("|"):"",z=O.required===!1?"optional":"required";return`${O.key}::${wt(O.query)}::${Y}::${z}`}).join("||")}function db(T){let O=wt(T.query||T.question||"");if(!O)return`Answer for ${T.key}`;let Y=O.replace(/\s+/g," ").replace(/[?.!:\s]+$/,"").slice(0,72);return Y?`Answer: ${Y}`:`Answer for ${T.key}`}function Ml(T){for(let O of Array.from(gn.querySelectorAll(".questionPromptInput"))){let Y=O;if(Y.dataset.key===T)return Y}return null}function nf(T){let O=lb(T),Y=document.activeElement,z=Y instanceof HTMLInputElement&&Y.classList.contains("questionPromptInput")&&Wn.contains(Y)?Y:null,J=z?.dataset.key,Te=z?.selectionStart??null,me=z?.selectionEnd??null;if(!O.length){le=null,Ue=null,pt={},Sn.innerHTML="",Wn.classList.remove("visible"),ms();return}let Xe=ub(O),kt=Xe!==Ue||!le;if(le={questions:O},kt){let at=pt;pt={},Sn.innerHTML="";for(let ht of le.questions){let Ht=document.createElement("label");Ht.className="questionPromptItem";let bn=document.createElement("span");bn.className="questionPromptLabel",bn.textContent=ht.required===!1?`${ht.query} (optional)`:ht.query,Ht.appendChild(bn);let vn=document.createElement("input");vn.type="text",vn.className="questionPromptInput",vn.dataset.key=ht.key,vn.placeholder=db(ht),vn.required=ht.required!==!1;let rr=String(at[ht.key]||"");pt[ht.key]=rr,vn.value=rr,vn.addEventListener("input",()=>{pt[ht.key]=vn.value,vn.classList.remove("invalid")}),Ht.appendChild(vn),Sn.appendChild(Ht)}Ue=Xe}if(Wn.classList.add("visible"),rf(),ms(),J){let at=Ml(J);if(at){if(at.focus(),Te!==null||me!==null){let ht=Te??at.value.length,Ht=me??ht;try{at.setSelectionRange(ht,Ht)}catch{}}return}}if(kt){let ht=le.questions.find(vn=>!wt(pt[vn.key]||""))?.key||le.questions[0]?.key;if(!ht)return;let Ht=Ml(ht),bn=!Y||Y===document.body||!C.contains(Y);Ht&&bn&&Ht.focus()}}function Aa(){ce&&te?(st.classList.add("visible"),He.appendChild(st),Nl()):st.classList.remove("visible")}function nr(T,O=0){u.dataset.mood=T,be!=null&&(window.clearTimeout(be),be=null),O>0&&T!=="idle"&&(be=window.setTimeout(()=>{u.dataset.mood="idle",Aa(),be=null},O))}function fb(){return He.scrollHeight-He.scrollTop-He.clientHeight<60}function Nl(){Ae?an.classList.add("visible"):(requestAnimationFrame(()=>{He.scrollTo({top:He.scrollHeight,behavior:"smooth"}),qe=Date.now()}),an.classList.remove("visible"))}He.addEventListener("scroll",()=>{Date.now()-qe<200||(fb()?(Ae=!1,an.classList.remove("visible")):(Ae=!0,an.classList.add("visible")))},{passive:!0}),an.addEventListener("click",()=>{Ae=!1,qe=Date.now(),He.scrollTo({top:He.scrollHeight,behavior:"smooth"}),an.classList.remove("visible")});function rf(){let T=ue==="observer"&&!Ee;x.disabled=T,cn.disabled=T,Jn.disabled=T,Rn.disabled=T;for(let O of Array.from(gn.querySelectorAll(".questionPromptInput")))O.disabled=T;T&&Oe==="listening"&&ao("disabled"),Jt()}function Ll(T){if(it=T,u.dataset.showDetails=T?"true":"false",hn.textContent=it?"Collapse":`Show all (${ne.length})`,it)for(let O of ne){O.style.display="";let Y=O.dataset.status,z=Y==="success"||Y==="error"||Y==="info";O.classList.toggle("compact",!1)}else for(let O=0;O<ne.length;O++){let Y=ne[O],z=O>=ne.length-2;Y.style.display=z?"":"none";let J=Y.dataset.status,Te=J==="success"||J==="error"||J==="info";Y.classList.toggle("compact",Te)}}function Ca(){oo(),u.style.display="",C.classList.remove("closing"),C.classList.add("open"),Ra(),nr("idle"),e.onOpen?.(),x.disabled||x.focus()}function hs(){if(ps(),!C.classList.contains("open")){e.onClose?.();return}C.classList.remove("open"),C.classList.add("closing"),nr("idle");let T=()=>{C.classList.remove("closing"),C.removeEventListener("animationend",T)};C.addEventListener("animationend",T),e.onClose?.()}function pb(){oo(),u.style.display=""}function mb(){hs(),u.style.display="none"}function hb(T,O,Y){let z=wt(O),J=Y?.blocks;if(!z&&(!J||J.length===0))return;let Te=document.createElement("div");Te.className=`entry message ${T}`;let me=document.createElement("div");me.className="bubble",T==="assistant"?me.appendChild(g_(z,J)):me.textContent=z;let Xe=document.createElement("div");Xe.className="stamp",Xe.textContent=yu(Date.now()),Te.appendChild(me),Te.appendChild(Xe),He.appendChild(Te),T==="assistant"&&ce&&te&&(te=!1,Aa()),de=!0,ms(),T==="user"?nr("typing",1200):T==="assistant"?nr("success",1400):nr("running",900),Nl()}function gb(){for(let T of Array.from(He.querySelectorAll(".entry.message")))T.remove();de=!1,nf(void 0),ms()}function of(T){let O=j.get(T);if(O)return O;let Y=document.createElement("div");Y.className="entry trace pending";let z=document.createElement("div");z.className="traceTop";let J=document.createElement("div");J.className="traceMeta";let Te=document.createElement("span");Te.className="traceStage",Te.textContent="step";let me=document.createElement("div");me.className="traceTitle";let Xe=document.createElement("div");Xe.className="traceTs",J.appendChild(Te),J.appendChild(me),z.appendChild(J),z.appendChild(Xe);let kt=document.createElement("div");return kt.className="traceDetail",Y.appendChild(z),Y.appendChild(kt),j.set(T,Y),ne.push(Y),He.appendChild(Y),Y}function bb(T,O){let Y=Number(O.ts)||Date.now(),z=ZT(O),J=T.querySelector(".traceTop"),me=J.querySelector(".traceMeta").querySelector(".traceStage"),Xe=J.querySelector(".traceTitle"),kt=J.querySelector(".traceTs"),at=T.querySelector(".traceDetail"),ht=Nm(O.title||"");Xe.textContent=ht.plainTitle||"Step",me.textContent=ht.stage||O.kind||"step",me.style.display=ht.stage||O.kind==="status"||O.kind==="plan"||O.kind==="thought"?"":"none",kt.textContent=yu(Y),at.innerHTML="";let Ht=Array.isArray(O.detailBlocks)?O.detailBlocks:[],bn=wt(O.detail||"");if(Ht.length>0){for(let rr of Ht){let lf=Dm(rr);lf&&at.appendChild(lf)}if(bn){let rr=document.createElement("div");rr.className="rvLine",rr.appendChild(po(bn)),at.insertBefore(rr,at.firstChild)}at.style.display=""}else if(bn){let rr=O.kind==="thought"?PT:O.kind==="tool_start"||O.kind==="tool_result"?BT:Ps;bn.length>rr?at.appendChild(wc(bn,rr)):at.appendChild(po(bn)),at.style.display=""}else at.style.display="none";T.classList.remove("pending","success","error","info"),T.classList.add(z),T.dataset.status=z,T.dataset.kind=O.kind,T.dataset.visibility=l_(O);let vn=z==="success"||z==="error"||z==="info";T.classList.toggle("compact",!it&&vn),z==="error"?nr("error",2200):z==="success"?nr("success",1200):z==="pending"&&nr("running",800)}function vb(T){let O=wt(T.title||"");if(!O||O.toLowerCase()==="assistant update")return;let Y=T.id||Cm("timeline");if(T.id&&V.has(Y))return;V.add(Y);let z=e_(T),J=z==="run"||z.startsWith("tool:")||T.kind==="tool_result"||T.kind==="status"&&j.has(z),Te=of(J?z:`${z}:${Y}`);bb(Te,{...T,title:O}),T.kind==="thought"&&ce&&te&&(te=!1,Aa()),O.toLowerCase()==="run completed"&&Ll(!1);let me=ne.length;if(qn.textContent=`${me} step${me!==1?"s":""}`,mn.classList.toggle("visible",me>0),!it){hn.textContent=`Show all (${me})`;for(let Xe=0;Xe<ne.length;Xe++){let kt=ne[Xe],at=Xe>=ne.length-2;kt.style.display=at?"":"none"}}Nl()}function yb(){V.clear(),j.clear(),ne.length=0;for(let T of Array.from(He.querySelectorAll(".entry.trace")))T.remove();mn.classList.remove("visible"),qn.textContent="0 steps"}function gs(T){let O=!!T?.visible;xn.classList.toggle("visible",O),q.textContent=T?.text||"Looks like a new request. Start a new task?",U.textContent=T?.primaryLabel||"Start new",W.textContent=T?.secondaryLabel||"Continue"}function Tb(T){let O=String(T||"ready");Lt.textContent=O;let Y=O.toLowerCase();Y.includes("error")||Y.includes("failed")?nr("error",1800):Y==="ready"||Y.includes("complete")?nr("idle"):nr("running",1e3)}function _b(T){ce=T,T?te=!0:te=!1,Aa(),sn.classList.toggle("visible",T),Yt.style.display=T?"none":"",et.style.display=T?"none":"",dt.classList.toggle("active",T),ms()}function sf(T,O){ue=T,Ee=T==="observer"?O?.canComposeInObserver===!0:!0,rf(),Ne.classList.remove("controller","observer"),Ne.classList.add(T),T==="controller"?(Ne.textContent="active",In.style.display="none",x.placeholder=`Ask ${t} to act on this website...`):(Ne.textContent="observer",O?.canTakeControl!==!1?In.style.display="":In.style.display="none",O?.note?x.placeholder=O.note:Ee?x.placeholder="Send to take control and run here.":O?.activeLogicalTabId&&O?.localLogicalTabId&&O.activeLogicalTabId!==O.localLogicalTabId?x.placeholder=`Observing: ${t} is acting in tab #${O.activeLogicalTabId}`:x.placeholder="Observer mode. Take control to run actions here.")}function kb(){be!=null&&(window.clearTimeout(be),be=null),io(),tr.dispose(),oe&&(window.clearTimeout(oe),oe=null),je&&(window.clearTimeout(je),je=null),Ma(),window.removeEventListener("resize",so),window.removeEventListener("orientationchange",so),window.visualViewport?.removeEventListener("resize",so),window.visualViewport?.removeEventListener("scroll",so),document.removeEventListener("keydown",af),d.remove(),a.remove()}v.addEventListener("click",()=>{C.classList.contains("open")?hs():Ca()}),D.addEventListener("click",T=>{T.stopPropagation(),Ra()}),R.addEventListener("click",()=>{Ra(),Ca()}),Xt.addEventListener("click",()=>hs()),rt.addEventListener("click",()=>{tb()}),et.addEventListener("click",T=>{T.stopPropagation(),ib()}),u.addEventListener("click",T=>{Re&&!Wt.contains(T.target)&&T.target!==et&&ps()}),Mr.addEventListener("click",()=>{ps(),ce&&e.onCancelRun?(De="new_task",gs({visible:!0,text:"A task is in progress. Cancel it and start new?",primaryLabel:"Cancel & start new",secondaryLabel:"Keep running"})):e.onNewTask?.()}),gr.addEventListener("click",()=>{ps(),ce&&e.onCancelRun?(De="end_task",gs({visible:!0,text:"A task is in progress. Cancel and end it?",primaryLabel:"Cancel & end",secondaryLabel:"Keep running"})):e.onEndTask?.()}),In.addEventListener("click",()=>{ps(),e.onRequestControl?.()}),sn.addEventListener("click",()=>{e.onCancelRun?.()}),hn.addEventListener("click",()=>{Ll(!it)}),U.addEventListener("click",()=>{if(De){let T=De;De=null,gs({visible:!1}),e.onCancelRun?.(),T==="new_task"?e.onNewTask?.():T==="end_task"&&e.onEndTask?.();return}e.onTaskSuggestionPrimary?.()}),W.addEventListener("click",()=>{if(De){De=null,gs({visible:!1});return}e.onTaskSuggestionSecondary?.()}),x.addEventListener("input",()=>{Oe==="listening"&&ao("typed"),x.style.height="auto",x.style.height=`${Math.min(96,Math.max(44,x.scrollHeight))}px`}),cn.addEventListener("click",()=>{if(!x.disabled){if(Oe==="listening"){ao("manual");return}sb()}}),gn.addEventListener("submit",T=>{if(T.preventDefault(),x.disabled||!le?.questions?.length)return;let O={},Y=[],z=null;for(let me of le.questions){let Xe=Ml(me.key);if(!Xe)continue;let kt=wt(Xe.value),at=me.required!==!1;if(!kt&&at){Xe.classList.add("invalid"),z||(z=Xe);continue}if(!kt){Xe.classList.remove("invalid"),delete pt[me.key],Y.push(`${me.key}: (no answer provided)`);continue}Xe.classList.remove("invalid"),pt[me.key]=kt,O[me.key]=kt,Y.push(`${me.key}: ${kt}`)}if(z){z.focus();return}let J=le.questions.map(me=>me.key),Te=Y.length?Y.join(`
|
|
2094
|
+
`):J.map(me=>`${me}: (no answer provided)`).join(`
|
|
2095
|
+
`);e.onSend(Te,{askUserAnswers:{answersByKey:O,rawText:Te,keys:J}})}),Jn.addEventListener("click",()=>{if(!x.disabled){if(e.onCancelQuestionFlow){e.onCancelQuestionFlow();return}e.onCancelRun?.()}}),x.addEventListener("keydown",T=>{T.key==="Enter"&&!T.shiftKey&&!T.isComposing&&(T.preventDefault(),xt.requestSubmit())}),xt.addEventListener("submit",T=>{if(T.preventDefault(),!x.disabled){if(Oe==="listening"){ro=!0,ao("submit");return}Jd()}}),c.addEventListener("keydown",T=>{let O=T;O.key==="Escape"&&C.classList.contains("open")&&(O.stopPropagation(),hs())});let af=T=>{T.code==="Period"&&T.shiftKey&&(T.metaKey||T.ctrlKey)&&(T.preventDefault(),T.stopPropagation(),C.classList.contains("open")?hs():Ca())};document.addEventListener("keydown",af);let Dl=T=>{if(!mt||!s)return;if(mt.kind==="desktop"){let Y=mt.startX-T.clientX,z=T.clientY-mt.startY,J=fo(Math.round(mt.startW+Y),Ds,mt.maxW),Te=fo(Math.round(mt.startH+z),Os,mt.maxH);Pe={width:J,height:Te},C.style.width=`${J}px`,C.style.height=`${Te}px`,jd();return}let O=fo(Math.round(mt.startHeight+(mt.startY-T.clientY)),Math.min(...mt.presets),Math.max(...mt.presets));zt=O,C.style.height=`${O}px`};function Ma(){if(mt?.kind==="desktop")Sl(Pe);else if(mt?.kind==="sheet"){let T=zt??mt.startHeight;Ke=s_(T,mt.presets),$d(Ve.storageKey,Ke),zt=null}mt=null,window.removeEventListener("pointermove",Dl),window.removeEventListener("pointerup",Ma),oo()}if(Cn.addEventListener("pointerdown",T=>{!s||Ve.layout!=="desktop"||(T.preventDefault(),mt={kind:"desktop",startX:T.clientX,startY:T.clientY,startW:C.getBoundingClientRect().width,startH:C.getBoundingClientRect().height,maxW:Math.max(Ds,Math.min(_c,Ve.width-jo)),maxH:Math.max(Os,Ve.height-jo)},window.addEventListener("pointermove",Dl),window.addEventListener("pointerup",Ma))}),Cn.addEventListener("dblclick",T=>{!s||Ve.layout!=="desktop"||(T.preventDefault(),eb())}),Br.addEventListener("pointerdown",T=>{if(!s||Ve.layout==="desktop")return;T.preventDefault();let O=Sm(Ve);zt=O[Ke],mt={kind:"sheet",startY:T.clientY,startHeight:zt,presets:O},window.addEventListener("pointermove",Dl),window.addEventListener("pointerup",Ma)}),window.addEventListener("resize",so),window.addEventListener("orientationchange",so),window.visualViewport?.addEventListener("resize",so),window.visualViewport?.addEventListener("scroll",so),g){let T=()=>{g.style.display="none",_.style.display="grid"};g.addEventListener("error",T,{once:!0}),_.style.display="none"}if(re){let T=()=>{re.style.display="none",pe.style.display="grid"};re.addEventListener("error",T,{once:!0}),pe.style.display="none"}oo(),sf("controller"),Zd(nt),Ll(!1),he.length>0&&tf(he);let NE="",LE=new Map;function wb(T){}let Ol=!1;function Eb(){Ol=!0,w.classList.add("open")}function Na(){Ol=!1,w.classList.remove("open")}Yt.addEventListener("click",T=>{T.stopPropagation(),Ol?Na():Eb()}),y.addEventListener("click",()=>Na()),k.addEventListener("click",()=>{Na(),e.onNewTask?.()});let cf="";function Ib(T){let O=T.map(z=>`${z.id}|${z.summary}|${z.status}|${z.updatedAt}|${z.isActive}`).join(";;");if(O===cf)return;cf=O;let Y=T.find(z=>z.isActive);if(Y){let z=Y.summary.length>40?Y.summary.slice(0,40)+"...":Y.summary;Zr.textContent=z||"Current task"}else Zr.textContent="Current task";Qt.style.display=T.length>1?"flex":"none",b.innerHTML="";for(let z of T){let J=document.createElement("div");J.className=`conversationItem ${z.status}${z.isActive?" active":""}`,J.dataset.id=z.id;let Te=document.createElement("span");Te.className="conversationDot";let me=document.createElement("div");me.className="conversationContent";let Xe=document.createElement("div");Xe.className="conversationSummary",Xe.textContent=z.summary.length>60?z.summary.slice(0,60)+"...":z.summary;let kt=document.createElement("div");kt.className="conversationMeta";let at=z.status==="running"?"Running":z.status==="paused"?"Paused":z.status==="completed"?"Done":z.status;kt.textContent=`${at} \xB7 ${yu(z.updatedAt)}`,me.appendChild(Xe),me.appendChild(kt);let ht=document.createElement("div");ht.className="conversationActions";let Ht=document.createElement("button");Ht.type="button",Ht.className="conversationDeleteBtn",Ht.textContent="\xD7",Ht.addEventListener("click",bn=>{bn.stopPropagation(),e.onDeleteConversation?.(z.id)}),ht.appendChild(Ht),J.appendChild(Te),J.appendChild(me),J.appendChild(ht),J.addEventListener("click",()=>{Na(),e.onSwitchConversation?.(z.id)}),b.appendChild(J)}}function xb(T){b.querySelectorAll(".conversationItem").forEach(Y=>{Y.dataset.id===T?Y.classList.add("active"):Y.classList.remove("active")})}function Sb(T){f=T.taskId;let O=T.rootUserInput.length>50?T.rootUserInput.slice(0,50)+"...":T.rootUserInput;Mn.innerHTML="";let Y=document.createElement("span");Y.className="pausedTaskText",Y.textContent=`Paused: "${O}"`;let z=document.createElement("div");z.className="pausedTaskActions";let J=document.createElement("button");J.type="button",J.className="pausedTaskResumeBtn",J.textContent="Resume",J.addEventListener("click",()=>e.onResumeTask?.(f));let Te=document.createElement("button");Te.type="button",Te.className="pausedTaskCancelBtn",Te.textContent="Cancel",Te.addEventListener("click",()=>e.onCancelPausedTask?.(f)),z.appendChild(J),z.appendChild(Te),Mn.appendChild(Y),Mn.appendChild(z),Mn.classList.add("visible")}function Rb(){f="",Mn.classList.remove("visible")}function Ab(){return He.scrollTop}function Cb(T){requestAnimationFrame(()=>{He.scrollTop=T})}return{addMessage:hb,setQuestionPrompt:nf,clearMessages:gb,addTimelineEvent:vb,clearTimeline:yb,setTaskSuggestion:gs,setStatus:Tb,setRunning:_b,setExecutionMode:sf,setShortcuts:tf,showGreeting:ab,dismissGreeting:Ra,setVisitorName:cb,setVoiceConfig:Zd,open:Ca,close:hs,show:pb,hide:mb,destroy:kb,setTabs:wb,setConversations:Ib,setActiveConversationId:xb,getScrollPosition:Ab,setScrollPosition:Cb,showPausedTaskBanner:Sb,hidePausedTaskBanner:Rb}}var Um=3,b_="rover:shared:",v_="rover:channel:",ku=2*6e4,Pm=9e4,wu=45e3,Eu=2e4,y_=45e3;function ie(){return Date.now()}function _r(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function Ic(e){let t=String(e||"").trim();if(!t)return"";try{return new URL(t,window.location.href).toString()}catch{return t}}function Fm(e){if(!e||typeof e!="object")return;let t=typeof e.taskId=="string"?e.taskId.trim():"";if(!t)return;let n=e.status==="completed"||e.status==="cancelled"||e.status==="failed"||e.status==="ended"||e.status==="running"?e.status:"running";return{taskId:t,status:n,startedAt:Number(e.startedAt)||ie(),lastUserAt:Number(e.lastUserAt)||void 0,lastAssistantAt:Number(e.lastAssistantAt)||void 0,boundaryReason:typeof e.boundaryReason=="string"?e.boundaryReason:void 0,endedAt:Number(e.endedAt)||void 0}}function Hm(e){return e==="completed"?"completed":e==="cancelled"||e==="ended"?"cancelled":e==="failed"?"failed":"running"}function Sc(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-4)){let r=n?.role==="user"?"user":n?.role==="model"?"model":void 0;if(!r)continue;let o=String(n?.message||"").replace(/\s+/g," ").trim();if(!o)continue;let s=t[t.length-1];s&&s.role===r&&s.message===o||t.push({role:r,message:o})}return t}function Hi(e,t){if(!e)return;let n=typeof e=="string"?e:e?.text,r=String(n||"").trim();if(!r)return;let o=typeof e?.runId=="string"&&e.runId.trim()?e.runId.trim():typeof t?.runId=="string"&&t.runId.trim()?t.runId.trim():void 0,s=typeof e?.taskId=="string"&&e.taskId.trim()?e.taskId.trim():typeof t?.taskId=="string"&&t.taskId.trim()?t.taskId.trim():void 0;return{text:r,ts:Number(e?.ts)||ie(),runId:o,taskId:s,stage:typeof e?.stage=="string"&&e.stage.trim()?e.stage.trim():void 0}}function qm(e){return Array.isArray(e)?e.slice(-bt.uiMessages).map(t=>({id:String(t?.id||_r("msg")),role:t?.role==="user"||t?.role==="assistant"||t?.role==="system"?t.role:"system",text:String(t?.text||""),blocks:Us(t?.blocks),ts:Number(t?.ts)||ie(),sourceRuntimeId:typeof t?.sourceRuntimeId=="string"?t.sourceRuntimeId:void 0})).filter(t=>!!t.text||!!t.blocks?.length):[]}function Wm(e){return Array.isArray(e)?e.slice(-bt.timelineEvents).map(t=>({id:String(t?.id||_r("timeline")),kind:String(t?.kind||"status"),title:String(t?.title||"Step"),detail:typeof t?.detail=="string"?t.detail:void 0,detailBlocks:Us(t?.detailBlocks),status:t?.status==="pending"||t?.status==="success"||t?.status==="error"||t?.status==="info"?t.status:void 0,ts:Number(t?.ts)||ie(),sourceRuntimeId:typeof t?.sourceRuntimeId=="string"?t.sourceRuntimeId:void 0})).filter(t=>!!t.title):[]}var T_=new Set(["idle","running","awaiting_user","paused","blocked","completed","failed","cancelled"]);function __(e){if(!e||typeof e!="object")return;let t=typeof e.taskId=="string"?e.taskId.trim():"";if(!t)return;let n=T_.has(e.state)?e.state:"running";return{taskId:t,state:n,startedAt:Number(e.startedAt)||ie(),endedAt:Number(e.endedAt)||void 0,activeRun:e.activeRun&&typeof e.activeRun=="object"&&e.activeRun.runId?{runId:String(e.activeRun.runId),text:String(e.activeRun.text||""),runtimeId:String(e.activeRun.runtimeId||""),startedAt:Number(e.activeRun.startedAt)||ie(),updatedAt:Number(e.activeRun.updatedAt)||ie()}:void 0,workerContext:Rc(e.workerContext),uiMessages:Array.isArray(e.uiMessages)?e.uiMessages.slice(-bt.uiMessages).map(r=>({id:String(r?.id||_r("msg")),role:r?.role==="user"||r?.role==="assistant"||r?.role==="system"?r.role:"system",text:String(r?.text||""),blocks:Us(r?.blocks),ts:Number(r?.ts)||ie(),sourceRuntimeId:typeof r?.sourceRuntimeId=="string"?r.sourceRuntimeId:void 0})).filter(r=>!!r.text||!!r.blocks?.length):[],timeline:Array.isArray(e.timeline)?e.timeline.slice(-bt.timelineEvents).map(r=>({id:String(r?.id||_r("timeline")),kind:String(r?.kind||"status"),title:String(r?.title||"Step"),detail:typeof r?.detail=="string"?r.detail:void 0,detailBlocks:Us(r?.detailBlocks),status:r?.status==="pending"||r?.status==="success"||r?.status==="error"||r?.status==="info"?r.status:void 0,ts:Number(r?.ts)||ie(),sourceRuntimeId:typeof r?.sourceRuntimeId=="string"?r.sourceRuntimeId:void 0})).filter(r=>!!r.title):[],rootUserInput:typeof e.rootUserInput=="string"?e.rootUserInput:void 0,summary:typeof e.summary=="string"?e.summary:void 0,seedChatLog:Sc(e.seedChatLog),transientStatus:Hi(e.transientStatus,{runId:e.activeRun?.runId,taskId:t})}}function k_(e){if(!e||typeof e!="object")return;let t={},n=0;for(let r of Object.keys(e)){if(n>=20)break;let o=__(e[r]);o&&(t[o.taskId]=o,n++)}return Object.keys(t).length>0?t:void 0}function $m(e){if(e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean")return e;try{return structuredClone(e)}catch{try{return JSON.parse(JSON.stringify(e))}catch{return}}}function Us(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!n||typeof n!="object")continue;let r=n.type;if(r==="text"){let o=String(n.text||"");if(!o)continue;t.push({type:"text",text:o});continue}if(r==="tool_output"||r==="json"){let o=$m(n.data);t.push({type:r,data:o,label:typeof n.label=="string"?n.label:void 0,toolName:typeof n.toolName=="string"?n.toolName:void 0})}}return t.length?t:void 0}function Bm(e,t){if(!Array.isArray(e))return[];let n=e.length<=t?e:[e[0],...e.slice(-(t-1))],r=[];for(let o of n){let s=$m(o);s!==void 0&&r.push(s)}return r}function Rc(e){if(!e||typeof e!="object")return;let t=Array.isArray(e.pendingAskUser?.questions)?e.pendingAskUser.questions.map((d,p)=>{let u=String(d?.key||d?.id||"").trim()||`clarification_${p+1}`,v=String(d?.query||d?.question||"").trim();if(v)return{key:u,query:v,id:typeof d?.id=="string"?d.id:void 0,question:typeof d?.question=="string"?d.question:void 0,choices:Array.isArray(d?.choices)?d.choices:void 0}}).filter(d=>!!d).slice(0,6):[],n=e.pendingAskUser?.stepRef,r=n&&Number.isFinite(Number(n.stepIndex))&&Number(n.stepIndex)>=0&&Number.isFinite(Number(n.functionIndex))&&Number(n.functionIndex)>=0?{stepIndex:Number(n.stepIndex),functionIndex:Number(n.functionIndex),...typeof n.accTreeId=="string"&&n.accTreeId.trim()?{accTreeId:n.accTreeId.trim()}:{}}:void 0,o=d=>d.slice(-bt.uiMessages).map(p=>({role:typeof p?.role=="string"?p.role:"assistant",content:typeof p?.content=="string"?p.content:""})).filter(p=>!!p.content),s=Array.isArray(e.history)?o(e.history):[],i=Bm(e.plannerHistory,bt.plannerHistory),a=Bm(e.agentPrevSteps,bt.prevSteps),c=typeof e.rootUserInput=="string"?e.rootUserInput.trim():"";return{trajectoryId:typeof e.trajectoryId=="string"?e.trajectoryId:void 0,taskBoundaryId:typeof e.taskBoundaryId=="string"&&e.taskBoundaryId.trim()?e.taskBoundaryId.trim():void 0,rootUserInput:c||void 0,seedChatLog:Sc(e.seedChatLog),history:s,plannerHistory:i,agentPrevSteps:a,pendingAskUser:t.length?{questions:t,source:e.pendingAskUser?.source==="planner"?"planner":"act",askedAt:Number(e.pendingAskUser?.askedAt)||ie(),boundaryId:typeof e.pendingAskUser?.boundaryId=="string"&&e.pendingAskUser.boundaryId.trim()?e.pendingAskUser.boundaryId.trim():void 0,...r?{stepRef:r}:{}}:void 0,updatedAt:Number(e.updatedAt)||ie()}}function Iu(e,t){return{version:Um,siteId:e,sessionId:t,seq:1,updatedAt:ie(),lease:void 0,tabs:[],nextLogicalTabId:1,activeLogicalTabId:void 0,uiMessages:[],timeline:[],uiStatus:void 0,transientStatus:void 0,activeRun:void 0,taskEpoch:1,task:void 0,workerContext:void 0,workflowLock:void 0,tasks:void 0,activeTaskId:void 0}}function Bs(e,t,n){let r=Iu(t,n);if(!e||typeof e!="object")return r;let o={...r,version:Um,siteId:t,sessionId:n,seq:Math.max(1,Number(e.seq)||1),updatedAt:Number(e.updatedAt)||ie(),tabs:Array.isArray(e.tabs)?e.tabs.map(a=>({logicalTabId:Math.max(1,Number(a?.logicalTabId)||0),runtimeId:typeof a?.runtimeId=="string"?a.runtimeId:void 0,url:String(a?.url||""),title:typeof a?.title=="string"?a.title:void 0,openedAt:Number(a?.openedAt)||ie(),updatedAt:Number(a?.updatedAt)||ie(),external:!!a?.external,openerRuntimeId:typeof a?.openerRuntimeId=="string"?a.openerRuntimeId:void 0,detachedAt:Number(a?.detachedAt)||void 0,detachedReason:a?.detachedReason==="navigation_handoff"||a?.detachedReason==="tab_close"||a?.detachedReason==="opened_pending_attach"||a?.detachedReason==="unknown"?a.detachedReason:void 0,handoffId:typeof a?.handoffId=="string"?a.handoffId:void 0,handoffRunId:typeof a?.handoffRunId=="string"?a.handoffRunId:void 0,handoffTargetUrl:typeof a?.handoffTargetUrl=="string"?a.handoffTargetUrl:void 0,handoffCreatedAt:Number(a?.handoffCreatedAt)||void 0})).filter(a=>!!a.logicalTabId):[],nextLogicalTabId:Math.max(1,Number(e.nextLogicalTabId)||1),activeLogicalTabId:Number(e.activeLogicalTabId)||void 0,uiMessages:qm(e.uiMessages),timeline:Wm(e.timeline),taskEpoch:Math.max(1,Number(e.taskEpoch)||1),task:Fm(e.task),workerContext:Rc(e.workerContext),uiStatus:typeof e.uiStatus=="string"?e.uiStatus:void 0,transientStatus:Hi(e.transientStatus??e.uiStatus,{runId:e.activeRun?.runId,taskId:e.task?.taskId}),activeRun:e.activeRun&&typeof e.activeRun=="object"?{runId:String(e.activeRun.runId||""),text:String(e.activeRun.text||""),runtimeId:String(e.activeRun.runtimeId||""),startedAt:Number(e.activeRun.startedAt)||ie(),updatedAt:Number(e.activeRun.updatedAt)||ie()}:void 0,lease:e.lease&&typeof e.lease=="object"&&e.lease.holderRuntimeId?{holderRuntimeId:String(e.lease.holderRuntimeId),expiresAt:Number(e.lease.expiresAt)||0,updatedAt:Number(e.lease.updatedAt)||ie()}:void 0,workflowLock:e.workflowLock&&typeof e.workflowLock=="object"&&e.workflowLock.runtimeId&&e.workflowLock.runId?{runtimeId:String(e.workflowLock.runtimeId),runId:String(e.workflowLock.runId),lockedAt:Number(e.workflowLock.lockedAt)||ie(),expiresAt:Number(e.workflowLock.expiresAt)||0}:void 0,tasks:e.tasks&&typeof e.tasks=="object"?k_(e.tasks):void 0,activeTaskId:typeof e.activeTaskId=="string"?e.activeTaskId:void 0},s=o.tabs.length,i=new Set;return o.tabs=o.tabs.filter(a=>i.has(a.logicalTabId)?!1:(i.add(a.logicalTabId),!0)),o.nextLogicalTabId<=(o.tabs.at(-1)?.logicalTabId??0)&&(o.nextLogicalTabId=o.tabs.reduce((a,c)=>Math.max(a,c.logicalTabId),0)+1),s>0&&o.tabs.length<s&&console.warn(`[rover] sanitizeSharedState: dropped ${s-o.tabs.length} invalid/duplicate tab entries`),Tn(o),o}function w_(e){let t=String(e.task?.taskId||e.activeTaskId||"").trim();if(!t)return;let n=Number(e.task?.startedAt)||ie();e.tasks||(e.tasks={});let r=e.tasks[t];if(r)return e.activeTaskId=t,r;let o={taskId:t,state:Hm(e.task?.status),startedAt:n,endedAt:e.task?.endedAt,activeRun:e.activeRun,workerContext:e.workerContext,uiMessages:[...e.uiMessages],timeline:[...e.timeline],rootUserInput:e.workerContext?.rootUserInput,summary:void 0,seedChatLog:Sc(e.workerContext?.seedChatLog),transientStatus:Hi(e.transientStatus??e.uiStatus,{runId:e.activeRun?.runId,taskId:t})};return e.tasks[t]=o,e.activeTaskId=t,o}function Tn(e){let t=w_(e);if(!t)return;t.state=Hm(e.task?.status),t.startedAt=Number(e.task?.startedAt)||t.startedAt||ie(),t.endedAt=Number(e.task?.endedAt)||void 0,t.activeRun=e.activeRun,t.workerContext=Rc(e.workerContext),t.uiMessages=qm(e.uiMessages),t.timeline=Wm(e.timeline),t.rootUserInput=e.workerContext?.rootUserInput||t.rootUserInput;let n=[...t.uiMessages].reverse().find(r=>r.role==="assistant");t.summary=n?.text||t.summary,t.seedChatLog=Sc(e.workerContext?.seedChatLog),t.transientStatus=Hi(e.transientStatus??e.uiStatus,{runId:e.activeRun?.runId,taskId:t.taskId})}var xc=class e{siteId;sessionId;runtimeId;leaseMs;workflowLockMs;heartbeatMs;maxMessages;maxTimeline;onRoleChange;onStateChange;onSwitchRequested;onTaskTabsExhausted;key;channelName;state;taskTabMapping=new Map;channel=null;heartbeatTimer=null;storageHandler=null;localLogicalTabId;closing=!1;started=!1;heartbeatCount=0;lastNotifiedStateHash="";static LS_HEARTBEAT_DIVISOR=5;pendingRpcRequests=new Map;rpcRequestHandler;lastNotifiedRole;roleChangeTimer=null;probeTimers=[];static ROLE_CHANGE_DEBOUNCE_MS=200;onSessionTokenReceived;onProjectionReceived;tabFreshnessTs(t){return Math.max(Number(t.updatedAt)||0,Number(t.openedAt)||0,Number(t.detachedAt)||0)}isBetterTabCandidate(t,n){if(!n)return!0;let r=this.tabFreshnessTs(t),o=this.tabFreshnessTs(n);return r!==o?r>o:!!t.runtimeId!=!!n.runtimeId?!!t.runtimeId:t.logicalTabId<n.logicalTabId}isRuntimeTabFresh(t,n){return t.runtimeId?t.runtimeId===this.runtimeId?!0:n-this.tabFreshnessTs(t)<=y_:!1}isTabVisibleInScope(t,n,r){return t.runtimeId?this.isRuntimeTabFresh(t,n):t.external?n-this.tabFreshnessTs(t)<=ku:t.detachedReason==="opened_pending_attach"?n-this.tabFreshnessTs(t)<=Eu:r==="context"?!1:t.detachedReason==="navigation_handoff"?n-this.tabFreshnessTs(t)<=wu:n-this.tabFreshnessTs(t)<=Pm}normalizeDraftTabs(t){let n=new Map;for(let h of t.tabs){if(!Number.isFinite(Number(h.logicalTabId))||Number(h.logicalTabId)<=0)continue;let g=n.get(h.logicalTabId);this.isBetterTabCandidate(h,g)&&n.set(h.logicalTabId,h)}let r=[],o=new Set;for(let h of t.tabs){if(o.has(h.logicalTabId))continue;let g=n.get(h.logicalTabId);g&&g===h&&(r.push(g),o.add(g.logicalTabId))}for(let[h,g]of n.entries())o.has(h)||(r.push(g),o.add(h));let s=new Map;for(let h of r){if(!h.runtimeId)continue;let g=s.get(h.runtimeId);this.isBetterTabCandidate(h,g)&&s.set(h.runtimeId,h)}if(t.tabs=r.filter(h=>!h.runtimeId||s.get(h.runtimeId)===h).sort((h,g)=>h.logicalTabId-g.logicalTabId),!t.tabs.length){t.activeLogicalTabId=void 0,t.nextLogicalTabId=1;return}let i=ie(),a=t.activeLogicalTabId?t.tabs.find(h=>h.logicalTabId===t.activeLogicalTabId):void 0,c=t.tabs.find(h=>h.runtimeId===this.runtimeId),p=[...t.tabs.filter(h=>this.isRuntimeTabFresh(h,i))].sort((h,g)=>this.tabFreshnessTs(g)-this.tabFreshnessTs(h))[0],u=a?.logicalTabId;a?(!a.runtimeId||!this.isRuntimeTabFresh(a,i))&&(u=c?.logicalTabId||p?.logicalTabId||a.logicalTabId):u=c?.logicalTabId||p?.logicalTabId||t.tabs[0]?.logicalTabId,t.activeLogicalTabId=u;let v=t.tabs.reduce((h,g)=>Math.max(h,g.logicalTabId),0);t.nextLogicalTabId=Math.max(Number(t.nextLogicalTabId)||1,v+1)}setTaskTabMapping(t){this.taskTabMapping=t}pruneDetachedTabs(t,n){let r=!!n?.dropRuntimeDetached,o=!!n?.dropAllDetachedExternal,s=!!n?.keepOnlyActiveLiveTab,i=!!n?.keepRecentExternalPlaceholders,a=ie(),c=new Map;if(this.onTaskTabsExhausted&&this.taskTabMapping.size>0)for(let d of t.tabs){let p=this.taskTabMapping.get(d.logicalTabId);if(p){let u=c.get(p);u||(u=new Set,c.set(p,u)),u.add(d.logicalTabId)}}if(t.tabs=t.tabs.filter(d=>{if(d.runtimeId)return this.isRuntimeTabFresh(d,a);if(r&&!d.external&&d.openerRuntimeId===this.runtimeId)return!1;if(d.external)return o?!1:a-this.tabFreshnessTs(d)<=ku;let p=a-this.tabFreshnessTs(d);return d.detachedReason==="navigation_handoff"?p<=wu:d.detachedReason==="opened_pending_attach"?p<=Eu:p<=Pm}),s){this.normalizeDraftTabs(t);let d=t.tabs.filter(g=>this.isRuntimeTabFresh(g,a)),p=d.find(g=>g.logicalTabId===t.activeLogicalTabId),u=d.find(g=>g.runtimeId===this.runtimeId),v=[...d].sort((g,_)=>this.tabFreshnessTs(_)-this.tabFreshnessTs(g))[0],h=p?.logicalTabId||u?.logicalTabId||v?.logicalTabId;t.tabs=t.tabs.filter(g=>g.runtimeId?!!h&&g.logicalTabId===h:g.external?i&&a-this.tabFreshnessTs(g)<=ku:!1),t.activeLogicalTabId=h||t.tabs.find(g=>g.runtimeId)?.logicalTabId||t.tabs[0]?.logicalTabId}if(this.normalizeDraftTabs(t),this.onTaskTabsExhausted&&c.size>0){let d=new Set(t.tabs.map(p=>p.logicalTabId));for(let[p,u]of c){let v=!1;for(let h of u)if(d.has(h)){v=!0;break}v||this.onTaskTabsExhausted(p)}}}resetDraftToSingleCurrentTab(t,n,r){let o=ie(),s=Ic(n),i=t.tabs.find(c=>c.runtimeId===this.runtimeId),a=Number(i?.openedAt)||o;t.tabs=[{logicalTabId:1,runtimeId:this.runtimeId,url:s||i?.url||"",title:r||i?.title,openedAt:a,updatedAt:o,external:!1,detachedAt:void 0,detachedReason:void 0}],t.activeLogicalTabId=1,t.nextLogicalTabId=2,t.lease={holderRuntimeId:this.runtimeId,expiresAt:o+this.leaseMs,updatedAt:o}}constructor(t){this.siteId=t.siteId,this.sessionId=t.sessionId,this.runtimeId=t.runtimeId,this.leaseMs=Math.max(4e3,Number(t.leaseMs)||12e3),this.workflowLockMs=Math.max(3e4,Number(t.workflowLockMs)||18e4),this.heartbeatMs=Math.max(800,Number(t.heartbeatMs)||2e3),this.maxMessages=Math.max(20,Number(t.maxMessages)||bt.uiMessages),this.maxTimeline=Math.max(20,Number(t.maxTimeline)||bt.timelineEvents),this.onRoleChange=t.onRoleChange,this.onStateChange=t.onStateChange,this.onSwitchRequested=t.onSwitchRequested,this.onTaskTabsExhausted=t.onTaskTabsExhausted,this.key=`${b_}${this.siteId}:${this.sessionId}`,this.channelName=`${v_}${this.siteId}:${this.sessionId}`,this.state=this.loadState(),this.normalizeDraftTabs(this.state)}start(t){this.started||(this.started=!0,this.mutate("local",n=>{this.pruneDetachedTabs(n,{dropRuntimeDetached:!0})}),this.registerCurrentTab(window.location.href,document.title||void 0,t),this.claimLease(!1),typeof BroadcastChannel<"u"&&(this.channel=new BroadcastChannel(this.channelName),this.channel.onmessage=n=>{let r=n.data;if(!(!r||typeof r!="object")){if(r.type==="state"&&r.state){let o=Bs(r.state,this.siteId,this.sessionId);this.applyIncomingState(o)}r.type==="switch_request"&&r.targetRuntimeId===this.runtimeId&&this.onSwitchRequested?.(Number(r.logicalTabId)||0),r.type==="rpc_request"&&r.targetRuntimeId===this.runtimeId&&this.handleInboundRpcRequest(r),r.type==="rpc_response"&&r.targetRuntimeId===this.runtimeId&&this.handleInboundRpcResponse(r),r.type==="tab_navigated"&&r.runtimeId&&r.runtimeId!==this.runtimeId&&this.handleRemoteNavigation(r),r.type==="tab_closing"&&r.runtimeId&&r.runtimeId!==this.runtimeId&&this.handleRemoteTabClosing(r),r.type==="session_token"&&r.runtimeId!==this.runtimeId&&this.onSessionTokenReceived?.(r.token,r.expiresAt),r.type==="projection"&&r.runtimeId!==this.runtimeId&&this.onProjectionReceived?.(r.projection)}}),this.storageHandler=n=>{if(!(n.key!==this.key||!n.newValue))try{let r=Bs(JSON.parse(n.newValue),this.siteId,this.sessionId);this.applyIncomingState(r)}catch{}},window.addEventListener("storage",this.storageHandler),this.heartbeatTimer=window.setInterval(()=>{this.heartbeat()},this.heartbeatMs),typeof this.heartbeatTimer?.unref=="function"&&this.heartbeatTimer.unref(),this.notifyRoleChange(),this.onStateChange?.(this.state,"local"))}stop(){this.heartbeatCount=0,this.heartbeatTimer!=null&&(window.clearInterval(this.heartbeatTimer),this.heartbeatTimer=null),this.roleChangeTimer!=null&&(window.clearTimeout(this.roleChangeTimer),this.roleChangeTimer=null),this.storageHandler&&(window.removeEventListener("storage",this.storageHandler),this.storageHandler=null),this.channel&&(this.channel.close(),this.channel=null);for(let[,t]of this.pendingRpcRequests)window.clearTimeout(t.timer),t.reject(new Error("SessionCoordinator stopped"));this.pendingRpcRequests.clear();for(let t of this.probeTimers)clearTimeout(t);this.probeTimers=[],this.started&&(this.started=!1,this.mutate("local",t=>{t.tabs=t.tabs.filter(n=>n.runtimeId!==this.runtimeId),t.lease?.holderRuntimeId===this.runtimeId&&(t.lease=void 0),t.activeLogicalTabId&&!t.tabs.some(n=>n.logicalTabId===t.activeLogicalTabId)&&(t.activeLogicalTabId=void 0)}))}isController(){let t=this.state.lease;return!t||t.expiresAt<=ie()?!1:t.holderRuntimeId===this.runtimeId}getRole(){return this.isController()?"controller":"observer"}getLocalLogicalTabId(){return this.localLogicalTabId}getActiveLogicalTabId(){return this.state.activeLogicalTabId}getCurrentHolderRuntimeId(){return this.state.lease?.holderRuntimeId}getState(){return this.state}getTaskEpoch(){return this.state.taskEpoch}getTask(){return this.state.task}getWorkerContext(){return this.state.workerContext}syncTask(t,n){this.mutate("local",r=>{n&&Number.isFinite(n)&&n>r.taskEpoch&&(r.taskEpoch=Math.max(1,Math.trunc(n))),t&&(r.task=Fm(t)||r.task,Tn(r))})}hydrateExternalState(t){let n=Bs(t,this.siteId,this.sessionId);this.pruneDetachedTabs(n,{dropRuntimeDetached:!0});let r=this.state.seq,o=this.state.updatedAt;this.applyIncomingState(n);let s=this.state.seq!==r||this.state.updatedAt!==o;if(!s&&this.state.tabs.some(a=>a.runtimeId?!1:a.external?!0:a.openerRuntimeId===this.runtimeId)){let a=this.state.tabs.length;this.mutate("local",c=>{this.pruneDetachedTabs(c,{dropRuntimeDetached:!0})}),s=this.state.tabs.length!==a}return s?(this.persistState(),this.localLogicalTabId||this.registerCurrentTab(window.location.href,document.title||void 0),!0):!1}listTabs(t){let n=t?.scope==="all"?"all":"context",r=ie();return this.state.tabs.filter(o=>this.isTabVisibleInScope(o,r,n))}pruneTabs(t){this.mutate("local",n=>{this.pruneDetachedTabs(n,t)})}resetTabsToCurrent(t,n){return this.mutate("local",r=>{this.resetDraftToSingleCurrentTab(r,t,n)}),this.notifyRoleChange(),this.localLogicalTabId||1}startNewTask(t){let n=Number(t.startedAt)||ie(),r={taskId:String(t.taskId||_r("task")),status:t.status==="completed"||t.status==="cancelled"||t.status==="failed"||t.status==="ended"?t.status:"running",startedAt:n,lastUserAt:Number(t.lastUserAt)||n,lastAssistantAt:Number(t.lastAssistantAt)||void 0,boundaryReason:t.boundaryReason,endedAt:void 0};return this.mutate("local",o=>{o.taskEpoch=Math.max(1,Number(o.taskEpoch)||1)+1,o.task=r,o.uiMessages=[],o.timeline=[],o.uiStatus=void 0,o.transientStatus=void 0,o.activeRun=void 0,o.workerContext=void 0,this.resetDraftToSingleCurrentTab(o,window.location.href,document.title||void 0),Tn(o)}),r}endTask(t){let n;return this.mutate("local",r=>{r.task&&(r.task={...r.task,status:"ended",boundaryReason:t||r.task.boundaryReason,endedAt:ie()},r.activeRun=void 0,r.transientStatus=void 0,r.uiStatus=void 0,Tn(r),n=r.task)}),n}markTaskActivity(t,n=ie()){t!=="system"&&this.mutate("local",r=>{if(!r.task){r.task={taskId:_r("task"),status:"running",startedAt:n,boundaryReason:"implicit",lastUserAt:t==="user"?n:void 0,lastAssistantAt:t==="assistant"?n:void 0};return}r.task.status==="running"&&(t==="user"&&(r.task.lastUserAt=n),t==="assistant"&&(r.task.lastAssistantAt=n),Tn(r))})}setWorkerContext(t){this.mutate("local",n=>{if(!t){n.workerContext=void 0,Tn(n);return}n.workerContext=Rc(t),Tn(n)})}setStatus(t){this.mutate("local",n=>{let r=Hi(t,{runId:n.activeRun?.runId,taskId:n.task?.taskId});n.uiStatus=r?.text,n.transientStatus=r,Tn(n)})}appendMessage(t){let n={id:t.id||_r("msg"),role:t.role,text:String(t.text||""),blocks:Us(t.blocks),ts:Number(t.ts)||ie(),sourceRuntimeId:this.runtimeId};return this.mutate("local",r=>{r.uiMessages.push(n),r.uiMessages.length>this.maxMessages&&(r.uiMessages=r.uiMessages.slice(-this.maxMessages)),r.task||(r.task={taskId:_r("task"),status:"running",startedAt:n.ts,boundaryReason:"implicit"}),n.role==="user"?r.task.lastUserAt=n.ts:n.role==="assistant"&&(r.task.lastAssistantAt=n.ts),Tn(r)}),n}appendTimeline(t){let n={id:t.id||_r("timeline"),kind:String(t.kind||"status"),title:String(t.title||"Step"),detail:t.detail?String(t.detail):void 0,detailBlocks:Us(t.detailBlocks),status:t.status,ts:Number(t.ts)||ie(),sourceRuntimeId:this.runtimeId};return this.mutate("local",r=>{r.timeline.push(n),r.timeline.length>this.maxTimeline&&(r.timeline=r.timeline.slice(-this.maxTimeline)),Tn(r)}),n}clearTimeline(){this.mutate("local",t=>{t.timeline=[],Tn(t)})}setActiveRun(t){this.mutate("local",n=>{if(!t){n.activeRun=void 0,n.transientStatus=void 0,n.uiStatus=void 0,Tn(n);return}if(n.task&&n.task.status!=="running"){n.activeRun=void 0,Tn(n);return}n.activeRun={runId:t.runId,text:t.text,runtimeId:this.runtimeId,startedAt:n.activeRun?.runId===t.runId?n.activeRun.startedAt:ie(),updatedAt:ie()},Tn(n)})}requestControl(){return this.claimLease(!0)}registerCurrentTab(t,n,r){let o=Ic(t),s=typeof r?.handoffId=="string"?r.handoffId.trim():"",i=Number(r?.sourceLogicalTabId),a;return this.mutate("local",c=>{let d=ie(),u=!!(c.lease&&c.lease.expiresAt>d)?c.lease?.holderRuntimeId:void 0,v=c.workflowLock&&c.workflowLock.runtimeId&&c.workflowLock.runtimeId!==this.runtimeId&&c.workflowLock.expiresAt>d?c.workflowLock:void 0,h=v?c.tabs.find(R=>R.runtimeId===v.runtimeId&&R.updatedAt>d-2*this.heartbeatMs):void 0,g=!h&&(!u||u===this.runtimeId),_=c.tabs.find(R=>R.runtimeId===this.runtimeId);if(_)_.url=o||_.url,_.title=n||_.title,_.updatedAt=d,_.detachedAt=void 0,_.detachedReason=void 0,_.handoffId=void 0,_.handoffRunId=void 0,_.handoffTargetUrl=void 0,_.handoffCreatedAt=void 0,a=_.logicalTabId;else{let R;if(s&&(R=c.tabs.find(B=>{if(B.runtimeId||String(B.handoffId||"").trim()!==s||Number.isFinite(i)&&i>0&&B.logicalTabId!==i)return!1;let D=d-Number(B.handoffCreatedAt||B.updatedAt||B.openedAt||0);return D>=0&&D<=3e4})),R||(R=c.tabs.find(B=>!B.runtimeId&&!B.external&&B.url===o&&d-B.openedAt<18e4)),R)R.runtimeId=this.runtimeId,R.url=o||R.url,R.title=n||R.title,R.updatedAt=d,R.detachedAt=void 0,R.detachedReason=void 0,R.handoffId=void 0,R.handoffRunId=void 0,R.handoffTargetUrl=void 0,R.handoffCreatedAt=void 0,a=R.logicalTabId;else{let B=c.nextLogicalTabId++;c.tabs.push({logicalTabId:B,runtimeId:this.runtimeId,url:o,title:n,openedAt:d,updatedAt:d,external:!1,detachedAt:void 0,detachedReason:void 0}),a=B}}a&&(c.tabs=c.tabs.filter(R=>{if(R.logicalTabId===a||R.runtimeId||R.external)return!0;if(s&&String(R.handoffId||"").trim()===s)return!1;let B=d-this.tabFreshnessTs(R);return!(!String(R.url||"").trim()&&B>Eu||o&&R.url===o&&B<=wu)}));let A=c.activeLogicalTabId?c.tabs.find(R=>R.logicalTabId===c.activeLogicalTabId):void 0;h?c.activeLogicalTabId=h.logicalTabId:(!A||!A.runtimeId||A.logicalTabId===a||g)&&(c.activeLogicalTabId=a)}),this.notifyRoleChange(),this.localLogicalTabId||a||1}registerOpenedTab(t){let n=Ic(t.url),r=0;return this.mutate("local",o=>{let s=ie(),i=o.tabs.find(a=>!a.runtimeId&&!!a.external==!!t.external&&a.url===n);if(i){i.title=t.title||i.title,i.updatedAt=s,i.openerRuntimeId=t.openerRuntimeId||i.openerRuntimeId,i.detachedAt=i.detachedAt||s,i.detachedReason="opened_pending_attach",r=i.logicalTabId;return}r=o.nextLogicalTabId++,o.tabs.push({logicalTabId:r,runtimeId:void 0,url:n,title:t.title,openedAt:s,updatedAt:s,external:!!t.external,openerRuntimeId:t.openerRuntimeId,detachedAt:s,detachedReason:"opened_pending_attach"})}),t.external&&this.probeRoverAvailability(r),{logicalTabId:r}}probeRoverAvailability(t){let r=setTimeout(()=>{let o=this.state.tabs.find(s=>s.logicalTabId===t);o&&!o.runtimeId&&this.mutate("local",s=>{let i=s.tabs.find(a=>a.logicalTabId===t);i&&(i.roverAvailability="not_available")})},5e3);typeof r?.unref=="function"&&r.unref(),this.probeTimers.push(r)}switchToLogicalTab(t){let n={ok:!1,reason:"Unknown tab"};return this.mutate("local",r=>{let o=r.tabs.find(s=>s.logicalTabId===t);if(!o){n={ok:!1,reason:`Tab ${t} not found`};return}if(r.activeLogicalTabId=t,o.runtimeId&&o.runtimeId!==this.runtimeId){r.lease={holderRuntimeId:o.runtimeId,expiresAt:ie()+this.leaseMs,updatedAt:ie()},this.channel&&this.channel.postMessage({type:"switch_request",logicalTabId:t,targetRuntimeId:o.runtimeId,sourceRuntimeId:this.runtimeId}),n={ok:!0,delegated:!0};return}if(!o.runtimeId){n={ok:!1,reason:`Tab ${t} is not attached to an active Rover runtime yet`};return}r.lease={holderRuntimeId:this.runtimeId,expiresAt:ie()+this.leaseMs,updatedAt:ie()},n={ok:!0,delegated:!1}}),this.notifyRoleChange(),n}sendCrossTabRpc(t,n,r,o=15e3){return new Promise((s,i)=>{if(!this.channel){i(new Error("BroadcastChannel not available"));return}let a=_r("rpc"),c=window.setTimeout(()=>{this.pendingRpcRequests.delete(a),i(new Error(`Cross-tab RPC timed out after ${o}ms (method=${n}, target=${t})`))},o);typeof c?.unref=="function"&&c.unref(),this.pendingRpcRequests.set(a,{resolve:s,reject:i,timer:c}),this.channel.postMessage({type:"rpc_request",requestId:a,sourceRuntimeId:this.runtimeId,targetRuntimeId:t,method:n,params:r,timeoutMs:o,createdAt:ie()})})}setRpcRequestHandler(t){this.rpcRequestHandler=t}broadcastNavigation(t,n){this.channel&&this.channel.postMessage({type:"tab_navigated",runtimeId:this.runtimeId,logicalTabId:this.localLogicalTabId,url:t,title:n})}broadcastClosing(t){this.closing=!0,this.mutate("local",n=>{let r=ie(),o=n.tabs.find(s=>s.runtimeId===this.runtimeId);o&&(o.runtimeId=void 0,o.updatedAt=r,o.detachedAt=r,o.detachedReason=t?"navigation_handoff":"tab_close",o.handoffId=typeof t?.handoffId=="string"?t.handoffId:void 0,o.handoffRunId=typeof t?.runId=="string"?t.runId:void 0,o.handoffTargetUrl=typeof t?.targetUrl=="string"?t.targetUrl:void 0,o.handoffCreatedAt=Number(t?.ts)||r),n.lease?.holderRuntimeId===this.runtimeId&&(n.lease=void 0)}),this.channel&&this.channel.postMessage({type:"tab_closing",runtimeId:this.runtimeId,logicalTabId:this.localLogicalTabId,handoff:t})}isTabAlive(t){let n=this.state.tabs.find(r=>r.logicalTabId===t);return n?n.updatedAt>ie()-2*this.heartbeatMs:!1}broadcastSessionToken(t,n){this.channel&&this.channel.postMessage({type:"session_token",runtimeId:this.runtimeId,token:t,expiresAt:n})}broadcastProjection(t){this.channel&&this.channel.postMessage({type:"projection",runtimeId:this.runtimeId,projection:t})}acquireWorkflowLock(t,n){let r=!1;return this.mutate("local",o=>{let s=o.workflowLock;if(!n?.force&&s&&s.runtimeId!==this.runtimeId&&s.expiresAt>ie()){let i=o.tabs.find(c=>c.runtimeId===s.runtimeId);if(i&&i.updatedAt>ie()-2*this.heartbeatMs){r=!1;return}}o.workflowLock={runtimeId:this.runtimeId,runId:t,lockedAt:ie(),expiresAt:ie()+this.workflowLockMs},r=!0}),r}releaseWorkflowLock(t){this.mutate("local",n=>{n.workflowLock&&n.workflowLock.runId===t&&(n.workflowLock=void 0)})}isWorkflowLocked(){let t=this.state.workflowLock;return!t||t.runtimeId===this.runtimeId?!1:t.expiresAt>ie()}getWorkflowLockInfo(){let t=this.state.workflowLock;return!t||t.expiresAt<=ie()?{locked:!1}:{locked:!0,holderRuntimeId:t.runtimeId,runId:t.runId}}async handleInboundRpcRequest(t){let{requestId:n,sourceRuntimeId:r,method:o,params:s}=t;if(!this.rpcRequestHandler){this.channel?.postMessage({type:"rpc_response",requestId:n,sourceRuntimeId:this.runtimeId,targetRuntimeId:r,ok:!1,error:{message:"No RPC handler registered",code:"NO_HANDLER"}});return}try{let i=await this.rpcRequestHandler({method:o,params:s});this.channel?.postMessage({type:"rpc_response",requestId:n,sourceRuntimeId:this.runtimeId,targetRuntimeId:r,ok:!0,result:i})}catch(i){this.channel?.postMessage({type:"rpc_response",requestId:n,sourceRuntimeId:this.runtimeId,targetRuntimeId:r,ok:!1,error:{message:i?.message||String(i)}})}}handleInboundRpcResponse(t){let{requestId:n,ok:r,result:o,error:s}=t,i=this.pendingRpcRequests.get(n);i&&(this.pendingRpcRequests.delete(n),window.clearTimeout(i.timer),r?i.resolve(o):i.reject(new Error(s?.message||"Cross-tab RPC failed")))}handleRemoteNavigation(t){let{runtimeId:n,url:r,title:o}=t;this.mutate("local",s=>{let i=s.tabs.find(a=>a.runtimeId===n);i&&(i.url=r||i.url,i.title=o||i.title,i.updatedAt=ie())})}handleRemoteTabClosing(t){let{runtimeId:n}=t,r=t?.handoff,o=typeof r?.handoffId=="string"&&r.handoffId.trim()?r.handoffId.trim():void 0,s=typeof r?.runId=="string"&&r.runId.trim()?r.runId.trim():void 0,i=typeof r?.targetUrl=="string"&&r.targetUrl.trim()?r.targetUrl.trim():void 0,a=Number(r?.ts)||ie();this.mutate("local",c=>{let d=ie(),p=c.tabs.find(u=>u.runtimeId===n);p&&(p.runtimeId=void 0,p.updatedAt=d,p.detachedAt=d,p.detachedReason=o?"navigation_handoff":"tab_close",p.handoffId=o,p.handoffRunId=s,p.handoffTargetUrl=i,p.handoffCreatedAt=a),c.lease?.holderRuntimeId===n&&(c.lease=void 0),c.workflowLock?.runtimeId===n&&(c.workflowLock=void 0),c.activeRun?.runtimeId===n&&(c.activeRun=void 0),c.activeLogicalTabId&&!c.tabs.some(u=>u.logicalTabId===c.activeLogicalTabId)&&(c.activeLogicalTabId=this.localLogicalTabId||c.tabs[0]?.logicalTabId)}),this.notifyRoleChange()}lastFullHeartbeatAt=0;heartbeat(){if(this.closing)return;this.heartbeatCount++;let t=Ic(window.location.href),n=document.title||void 0,r=ie(),o=this.state.lease,s=o&&o.holderRuntimeId===this.runtimeId&&o.expiresAt>r,i=r-this.lastFullHeartbeatAt<5e3,a=this.state.tabs.find(d=>d.runtimeId===this.runtimeId);if(s&&i&&a){a.url=t||a.url,a.title=n||a.title,a.updatedAt=r,a.detachedAt=void 0,a.detachedReason=void 0,this.state.updatedAt=r;return}this.lastFullHeartbeatAt=r;let c=this.heartbeatCount%e.LS_HEARTBEAT_DIVISOR!==0;this.mutate("local",d=>{let p=d.tabs.find(Q=>Q.runtimeId===this.runtimeId);if(p)p.url=t||p.url,p.title=n||p.title,p.updatedAt=ie(),p.detachedAt=void 0,p.detachedReason=void 0;else{let Q=ie(),ae=d.nextLogicalTabId++;d.tabs.push({logicalTabId:ae,runtimeId:this.runtimeId,url:t,title:n,openedAt:Q,updatedAt:Q,external:!1,detachedAt:void 0,detachedReason:void 0})}let u=d.lease,v=!u||u.expiresAt<=ie(),h=u&&u.holderRuntimeId!==this.runtimeId&&u.expiresAt>ie()?u.holderRuntimeId:void 0,g=h?d.tabs.find(Q=>Q.runtimeId===h):void 0,_=!!(g&&g.updatedAt>ie()-2*this.heartbeatMs),A=d.workflowLock?.runtimeId,R=A?d.tabs.find(Q=>Q.runtimeId===A):void 0,B=!!(R&&R.runtimeId&&R.runtimeId!==this.runtimeId&&R.updatedAt>ie()-2*this.heartbeatMs);if(d.workflowLock&&d.workflowLock.runtimeId!==this.runtimeId&&(d.workflowLock.expiresAt<=ie()||!B)&&(d.workflowLock=void 0),d.workflowLock&&d.workflowLock.runtimeId!==this.runtimeId&&B&&R&&(d.activeLogicalTabId=R.logicalTabId),d.activeRun?.runtimeId&&d.activeRun.runtimeId!==this.runtimeId){let Q=d.tabs.find(re=>re.runtimeId===d.activeRun?.runtimeId);Q&&Q.updatedAt>ie()-2*this.heartbeatMs||(d.activeRun=void 0)}let D=!!(d.activeRun?.runtimeId&&d.activeRun.runtimeId!==this.runtimeId),F=!!(d.workflowLock&&d.workflowLock.runtimeId!==this.runtimeId&&d.workflowLock.expiresAt>ie()),C=!!(h&&!_&&!D&&!F);(v||u?.holderRuntimeId===this.runtimeId||C)&&(d.lease={holderRuntimeId:this.runtimeId,expiresAt:ie()+this.leaseMs,updatedAt:ie()},!d.activeLogicalTabId&&this.localLogicalTabId&&(d.activeLogicalTabId=this.localLogicalTabId)),d.workflowLock?.runtimeId===this.runtimeId&&(d.workflowLock.expiresAt=ie()+this.workflowLockMs),this.pruneDetachedTabs(d)},{skipPersist:c}),this.notifyRoleChange()}reloadFromStorage(){let t=this.loadState();return this.normalizeDraftTabs(t),(t.seq>this.state.seq||t.seq===this.state.seq&&t.updatedAt>this.state.updatedAt)&&(this.state=t,this.syncLocalLogicalTabId(),this.onStateChange?.(this.state,"remote")),this.closing=!1,this.state}claimLease(t){let n=!1;return this.mutate("local",r=>{let o=r.lease,s=!o||o.expiresAt<=ie();(t||s||o?.holderRuntimeId===this.runtimeId)&&(r.lease={holderRuntimeId:this.runtimeId,expiresAt:ie()+this.leaseMs,updatedAt:ie()},!r.activeLogicalTabId&&this.localLogicalTabId&&(r.activeLogicalTabId=this.localLogicalTabId),n=!0)}),this.notifyRoleChange(),n}notifyRoleChange(){this.getRole()!==this.lastNotifiedRole&&(this.roleChangeTimer!=null&&window.clearTimeout(this.roleChangeTimer),this.roleChangeTimer=window.setTimeout(()=>{this.roleChangeTimer=null;let n=this.getRole();n!==this.lastNotifiedRole&&(this.lastNotifiedRole=n,this.onRoleChange?.(n,{localLogicalTabId:this.localLogicalTabId,activeLogicalTabId:this.state.activeLogicalTabId,holderRuntimeId:this.state.lease?.holderRuntimeId}))},e.ROLE_CHANGE_DEBOUNCE_MS),typeof this.roleChangeTimer?.unref=="function"&&this.roleChangeTimer.unref())}syncLocalLogicalTabId(){let t=this.state.tabs.find(n=>n.runtimeId===this.runtimeId);this.localLogicalTabId=t?.logicalTabId}mutate(t,n,r){if(t==="local")try{let i=window.localStorage.getItem(this.key);if(i){let a=Bs(JSON.parse(i),this.siteId,this.sessionId);(a.seq>this.state.seq||a.seq===this.state.seq&&a.updatedAt>this.state.updatedAt)&&(this.state=a)}}catch{}let o=Bs(this.state,this.siteId,this.sessionId);n(o),this.normalizeDraftTabs(o),o.seq=Math.max(1,Number(o.seq)||1)+(t==="local"?1:0),o.updatedAt=ie(),this.state=o,this.syncLocalLogicalTabId(),t==="local"&&(r?.skipPersist||this.persistState(),this.channel&&this.channel.postMessage({type:"state",sourceRuntimeId:this.runtimeId,state:this.state}));let s=this.computeStateHash(this.state);s!==this.lastNotifiedStateHash&&(this.lastNotifiedStateHash=s,this.onStateChange?.(this.state,t))}computeStateHash(t){let n=t.tabs;return`${n.length}:${n.map(r=>`${r.logicalTabId}|${r.runtimeId||""}|${r.url}|${r.title||""}|${!!r.detachedAt}`).join(";")}:${t.activeLogicalTabId??""}:${t.lease?.holderRuntimeId??""}:${t.activeRun?.runId??""}:${t.activeRun?.runtimeId??""}:${t.workflowLock?.runtimeId??""}:${t.taskEpoch??""}:${t.uiMessages?.length??0}:${t.timeline?.length??0}:${t.transientStatus?.text??t.uiStatus??""}`}applyIncomingState(t){t&&(t.seq<this.state.seq||t.seq===this.state.seq&&t.updatedAt<=this.state.updatedAt||(this.pruneDetachedTabs(t),this.normalizeDraftTabs(t),this.state=t,this.syncLocalLogicalTabId(),this.onStateChange?.(this.state,"remote"),this.notifyRoleChange()))}loadState(){try{let t=window.localStorage.getItem(this.key);if(!t)return Iu(this.siteId,this.sessionId);let n=JSON.parse(t);return Bs(n,this.siteId,this.sessionId)}catch(t){return console.warn("[rover] Failed to load shared state from localStorage:",t),Iu(this.siteId,this.sessionId)}}persistState(){try{window.localStorage.setItem(this.key,JSON.stringify(this.state))}catch{}}};var Vm="rover",Ac="rover_shortcut";function zm(e,t){return String(e||"").trim().replace(/^[?#&]+/,"").slice(0,64)||t}function Gm(e){return e instanceof URL?new URL(e.toString()):new URL(String(e||""),"https://rover.local")}function jm(e,t){let n=e.getAll(t);for(let r=n.length-1;r>=0;r-=1){let o=String(n[r]||"").trim();if(o)return o}return""}function Fs(e){let t=zm(e?.promptParam,Vm),n=zm(e?.shortcutParam,Ac);return n===t&&(n=n===Ac?`${Ac}_id`:Ac,n===t&&(t=Vm)),{enabled:e?.enabled===!0,promptParam:t,shortcutParam:n,consume:e?.consume!==!1}}function Km(e,t){let n=Fs(t),r=Gm(e),o=jm(r.searchParams,n.shortcutParam);if(o)return{kind:"shortcut",paramName:n.shortcutParam,value:o,signature:`shortcut:${n.shortcutParam}:${o}`};let s=jm(r.searchParams,n.promptParam);return s?{kind:"prompt",paramName:n.promptParam,value:s,signature:`prompt:${n.promptParam}:${s}`}:null}function Xm(e,t){let n=Fs(t),r=Gm(e);r.searchParams.delete(n.promptParam),r.searchParams.delete(n.shortcutParam);let o=r.searchParams.toString();return`${r.pathname}${o?`?${o}`:""}${r.hash}`}var Zm="https://extensionrouter.rtrvr.ai",Ym="rvrsess_";function Hs(e,t){let n=Number(e);return Number.isFinite(n)?n:t}function E_(e,t=8e3){let n=String(e??"");return n.length<=t?n:`${n.slice(0,t)}\u2026`}function I_(e){let t=String(e||"").trim();if(!t)return"";try{let n=new URL(t);return n.hash="",`${n.origin}${n.pathname}${n.search}`}catch{return t}}function xu(e){return e==null?"null":typeof e=="number"?Number.isFinite(e)?String(e):JSON.stringify(String(e)):typeof e=="boolean"?e?"true":"false":typeof e=="string"?JSON.stringify(e):Array.isArray(e)?`[${e.map(t=>xu(t)).join(",")}]`:typeof e=="object"?`{${Object.entries(e).filter(([n])=>n!=="updatedAt"&&n!=="ts"&&n!=="timestamp").sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>`${JSON.stringify(n)}:${xu(r)}`).join(",")}}`:JSON.stringify(String(e))}function x_(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return`sd:${(t>>>0).toString(16)}`}function Qm(e){let t=Array.isArray(e.sharedState?.tabs)?e.sharedState.tabs:[],n=e.runtimeState?.workerState||{},r=e.runtimeState?.taskTabScope||{},o=e.sharedState?.activeRun||{},s=e.runtimeState?.pendingRun||{},i=Array.isArray(n.plannerHistory)?n.plannerHistory:[],a=Array.isArray(n.agentPrevSteps)?n.agentPrevSteps:[],c=i.length?i[i.length-1]:void 0,d=a.length?a[a.length-1]:void 0,p=i.map(h=>String(h?.id||h?.toolCall?.name||h?.toolName||h?.name||"")),u=a.map(h=>String(h?.id||h?.toolCall?.name||h?.toolName||h?.name||"")),v={sessionId:String(e.sessionId||""),shared:{taskEpoch:Number(e.sharedState?.taskEpoch||0),taskId:String(e.sharedState?.task?.taskId||""),taskStatus:String(e.sharedState?.task?.status||""),activeRunId:String(o.runId||""),activeRunStatus:String(o.status||""),tabs:t.map(h=>({logicalTabId:Number(h?.logicalTabId)||0,scope:String(h?.scope||""),status:String(h?.status||""),url:I_(h?.url),external:!!h?.external}))},runtime:{taskEpoch:Number(e.runtimeState?.taskEpoch||0),activeTaskId:String(e.runtimeState?.activeTask?.taskId||""),activeTaskStatus:String(e.runtimeState?.activeTask?.status||""),pendingRunId:String(s.id||""),pendingRunStatus:String(s.status||""),pendingResumeRequired:s.resumeRequired===!0,worker:{taskBoundaryId:String(n.taskBoundaryId||""),trajectoryId:String(n.trajectoryId||""),pendingAskBoundaryId:String(n.pendingAskUser?.boundaryId||""),plannerHistoryCount:i.length,agentPrevStepsCount:a.length,lastPlannerStepId:String(c?.id||""),lastAgentStepId:String(d?.id||""),plannerStepMarkers:p,agentStepMarkers:u},continuity:{boundaryId:String(r.boundaryId||""),seedTabId:Number(r.seedTabId||0),touchedTabIds:Array.isArray(r.touchedTabIds)?r.touchedTabIds.map(h=>Number(h)||0).filter(h=>h>0):[]}}};return x_(xu(v))}function S_(e){let t=Zm,n=String(e||t).trim().replace(/\/+$/,"");if(!n)return t;if(n.endsWith("/extensionRouter/v2/rover"))return n.slice(0,-25);if(n.endsWith("/v2/rover"))return n.slice(0,-9);let r=n.match(/\/v\d+\/rover$/);return r?.[0]?n.slice(0,-r[0].length):n.endsWith("/extensionRouter")?n.slice(0,-16):n}function Jm(e){let t=new Set,n=[];for(let r of e){let o=String(r||"").trim().replace(/\/+$/,"");!o||t.has(o)||(t.add(o),n.push(o))}return n}function R_(e){let t=S_(e),n=String(e||"").trim().replace(/\/+$/,"");return n.endsWith("/v2/rover")||n.endsWith("/extensionRouter/v2/rover")?Jm([n.replace("/extensionRouter/v2/rover","/v2/rover"),`${t}/v2/rover`]):Jm([`${t}/v2/rover`])}function Go(e,t){let n=new Error(e);return n.details=t,n}function A_(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}var Cc=class{endpoint;endpointCandidates;endpointIndex=0;getToken;siteId;visitorId;ttlHours;flushIntervalMs;pullIntervalMs;minFlushIntervalMs;maxSnapshotBytes;shouldSync;shouldWrite;buildCheckpoint;onCheckpoint;onStateChange;onError;idlePullIntervalMs;started=!1;idleMode=!1;dirty=!1;flushTimer=null;pullTimer=null;lastFlushAt=0;lastPullAt=0;lastUploadedRevision="";lastAppliedRemoteUpdatedAt=0;lastAppliedRemoteDigest="";pushInFlight=!1;pullInFlight=!1;state="active";visibilityListener=null;constructor(t){let n=String(t.authToken||"").trim(),r=t.getSessionToken,o=r?String(r()||"").trim():n;if(!o||!o.startsWith(Ym))throw Go("Rover cloud checkpoint requires a session token (rvrsess_...).");this.endpointCandidates=R_(t.apiBase),this.endpoint=this.endpointCandidates[0]||`${Zm}/v2/rover`,this.getToken=()=>{let s=r?String(r()||"").trim():n;if(!s||!s.startsWith(Ym))throw Go("Rover cloud checkpoint requires an active session token.");return s},this.siteId=t.siteId,this.visitorId=t.visitorId,this.ttlHours=Math.max(1,Math.min(168,Math.floor(Hs(t.ttlHours,1)))),this.flushIntervalMs=Math.max(2e3,Math.floor(Hs(t.flushIntervalMs,3e4))),this.pullIntervalMs=Math.max(2e3,Math.floor(Hs(t.pullIntervalMs,3e4))),this.idlePullIntervalMs=12e4,this.minFlushIntervalMs=Math.max(1e3,Math.floor(Hs(t.minFlushIntervalMs,2500))),this.maxSnapshotBytes=Math.max(64e3,Math.min(1048576,Math.floor(Hs(t.maxSnapshotBytes,262144)))),this.shouldSync=t.shouldSync||(()=>!0),this.shouldWrite=t.shouldWrite||(()=>!0),this.buildCheckpoint=t.buildCheckpoint,this.onCheckpoint=t.onCheckpoint,this.onStateChange=t.onStateChange,this.onError=t.onError}start(){this.started||(this.started=!0,this.setState("active"),typeof document<"u"&&!this.visibilityListener&&(this.visibilityListener=()=>{if(this.started){if(document.hidden){this.enterIdleMode();return}this.enterActiveMode(),this.shouldSync()&&(this.pull(!0),this.dirty&&this.flush(!0))}},document.addEventListener("visibilitychange",this.visibilityListener)),this.flushTimer=window.setInterval(()=>{this.shouldSync()&&this.flush(!1)},this.flushIntervalMs),this.pullTimer=window.setInterval(()=>{this.shouldSync()&&this.pull(!1)},this.pullIntervalMs),this.pull(!0))}stop(){this.started&&(this.started=!1,this.idleMode=!1,this.flushTimer!=null&&(window.clearInterval(this.flushTimer),this.flushTimer=null),this.pullTimer!=null&&(window.clearInterval(this.pullTimer),this.pullTimer=null),this.visibilityListener&&typeof document<"u"&&(document.removeEventListener("visibilitychange",this.visibilityListener),this.visibilityListener=null),this.flush(!0))}markDirty(){this.dirty=!0}syncNow(t){let n=t?.push!==!1,r=t?.pull!==!1;n&&this.flush(!0),r&&this.pull(!0)}syncPullFirst(){(async()=>(await this.pull(!0),await this.flush(!0)))()}pullNow(t=!0){this.pull(!!t)}enterIdleMode(){this.idleMode||(this.idleMode=!0,this.flushTimer!=null&&(window.clearInterval(this.flushTimer),this.flushTimer=null),this.pullTimer!=null&&(window.clearInterval(this.pullTimer),this.pullTimer=null),this.started&&(this.pullTimer=window.setInterval(()=>{this.shouldSync()&&this.pull(!1)},this.idlePullIntervalMs)))}enterActiveMode(){this.idleMode&&(this.idleMode=!1,this.started&&(this.flushTimer==null&&(this.flushTimer=window.setInterval(()=>{this.shouldSync()&&this.flush(!1)},this.flushIntervalMs)),this.pullTimer==null&&(this.pullTimer=window.setInterval(()=>{this.shouldSync()&&this.pull(!1)},this.pullIntervalMs))))}getActiveEndpoint(){return this.endpointCandidates.length?this.endpointCandidates[this.endpointIndex]||this.endpoint:this.endpoint}rotateEndpoint(){this.endpointCandidates.length<=1||(this.endpointIndex=(this.endpointIndex+1)%this.endpointCandidates.length,this.endpoint=this.endpointCandidates[this.endpointIndex]||this.endpoint)}async requestJson(t,n){let r=Math.max(1,this.endpointCandidates.length||1),o;for(let s=0;s<r;s+=1){let i=(this.endpointIndex+s)%r,a=this.endpointCandidates[i]||this.endpoint;try{let c=await fetch(`${a}${t}`,n),d=await c.json().catch(()=>{});if(c.status===404||c.status===405){o=Go(`Checkpoint endpoint unavailable at ${a}${t}`,{status:c.status,payload:d});continue}return this.endpointIndex=i,this.endpoint=a,{response:c,payload:d}}catch(c){o=c}}throw o instanceof Error?o:Go(`Checkpoint request failed for ${t}`)}async flush(t){if(this.pushInFlight||this.idleMode||this.state==="paused_auth"||!t&&!this.shouldSync()||!this.dirty&&!t||!this.shouldWrite()||!t&&Date.now()-this.lastFlushAt<this.minFlushIntervalMs)return;let n=this.buildCheckpoint();if(!n)return;let r=Qm(n);if(n.digest=r,!t&&r===this.lastUploadedRevision){this.dirty=!1;return}this.pushInFlight=!0;try{let o=await this.callCheckpointApi("session_snapshot_upsert",{siteId:this.siteId,visitorId:this.visitorId,sessionId:n.sessionId,ttlHours:this.ttlHours,updatedAt:n.updatedAt,checkpoint:n});this.lastFlushAt=Date.now(),o?.saved&&(this.dirty=!1,this.lastUploadedRevision=r),o?.stale&&o?.checkpoint&&typeof o.checkpoint=="object"&&(this.applyRemoteCheckpoint(o.checkpoint,"push_stale"),this.dirty=!1),this.setState("active")}catch(o){this.handleCheckpointError(o,"session_snapshot_upsert")}finally{this.pushInFlight=!1}}async pull(t){if(!this.pullInFlight&&this.state!=="paused_auth"&&!(!t&&!this.shouldSync())&&!(!t&&Date.now()-this.lastPullAt<this.pullIntervalMs)){this.pullInFlight=!0;try{let n=await this.callCheckpointApi("session_projection_get",{siteId:this.siteId,visitorId:this.visitorId,sessionId:this.buildCheckpoint()?.sessionId});if(this.lastPullAt=Date.now(),!n?.found||!n?.checkpoint||typeof n.checkpoint!="object")return;this.applyRemoteCheckpoint(n.checkpoint,"pull"),this.setState("active")}catch(n){this.handleCheckpointError(n,"session_projection_get")}finally{this.pullInFlight=!1}}}applyRemoteCheckpoint(t,n){let r=Math.max(0,Math.floor(Hs(t?.updatedAt,0))),o=String(t?.digest||"").trim()||Qm(t);r<=this.lastAppliedRemoteUpdatedAt&&(!o||o===this.lastAppliedRemoteDigest)||(this.lastAppliedRemoteUpdatedAt=r,o&&(this.lastAppliedRemoteDigest=o),this.onCheckpoint(t,n))}async callCheckpointApi(t,n){return this.callRoverV2(t,n)}async callRoverV2(t,n){let r=this.getToken();if(t==="session_snapshot_upsert"){let c=JSON.stringify({requestNonce:A_(),sessionToken:r,sessionId:n?.sessionId,visitorId:n?.visitorId,ttlHours:n?.ttlHours,updatedAt:n?.updatedAt,version:n?.checkpoint?.version||n?.version||1,checkpoint:n?.checkpoint});if(c.length>this.maxSnapshotBytes)throw Go("Checkpoint snapshot exceeds maxSnapshotBytes limit.",{action:t,size:c.length,maxSnapshotBytes:this.maxSnapshotBytes,code:"SNAPSHOT_TOO_LARGE"});let d=c.length<6e4,{response:p,payload:u}=await this.requestJson("/snapshot",{method:"POST",headers:{"Content-Type":"text/plain"},keepalive:d,body:c});if(!p.ok||!u?.success)throw Go(`Checkpoint HTTP ${p.status}`,{action:t,status:p.status,payload:u});return{saved:!!u?.data?.saved,stale:u?.data?.stale===!0,checkpoint:u?.data?.checkpoint,updatedAt:Number(u?.data?.updatedAt)||void 0}}let o=new URLSearchParams({sessionId:String(n?.sessionId||""),sessionToken:r,includeSnapshot:"true"}),{response:s,payload:i}=await this.requestJson(`/state?${o.toString()}`,{method:"GET"});if(!s.ok||!i?.success)throw Go(`Checkpoint HTTP ${s.status}`,{action:t,status:s.status,payload:i});let a=i?.data?.projection?.snapshot??i?.data?.snapshot;return{found:!!a,checkpoint:a}}setState(t,n){this.state!==t&&(this.state=t,this.onStateChange?.(t,n||{}))}handleCheckpointError(t,n){let r=this.normalizeCheckpointError(t),o=this.isAuthFailure(r);o&&this.setState("paused_auth",{reason:"auth_failed",action:n,code:r.code,message:r.message}),this.onError?.(t,{action:n,state:this.state,code:r.code,message:r.message,status:r.status,paused:o})}normalizeCheckpointError(t){let n=t,r=n?.details,o=r?.payload||r?.response||r,s=o?.errorCode||o?.errorDetails?.code||o?.error?.code||o?.code,i=o?.error||o?.errorDetails?.message||o?.error?.message||n?.message||"Checkpoint request failed",a=Number(r?.status);return{code:typeof s=="string"?s:void 0,message:E_(i,1e3),status:Number.isFinite(a)?a:void 0}}isAuthFailure(t){let n=String(t.code||"").toUpperCase();return n==="INVALID_API_KEY"||n==="MISSING_API_KEY"||n==="UNAUTHENTICATED"||n==="PERMISSION_DENIED"?!0:t.status===401||t.status===403}};var C_="rover-runtime-state-db",Mc="runtime-state",Su=class{read(t){try{let n=window.sessionStorage.getItem(t);return n?JSON.parse(n):null}catch{return null}}write(t,n){try{window.sessionStorage.setItem(t,JSON.stringify(n))}catch{}}remove(t){try{window.sessionStorage.removeItem(t)}catch{}}},Ru=class{dbPromise=null;openDb(){return this.dbPromise?this.dbPromise:(this.dbPromise=new Promise((t,n)=>{if(typeof indexedDB>"u"){n(new Error("indexedDB unavailable"));return}let r=indexedDB.open(C_,1);r.onupgradeneeded=()=>{let o=r.result;o.objectStoreNames.contains(Mc)||o.createObjectStore(Mc)},r.onsuccess=()=>{t(r.result)},r.onerror=()=>{n(r.error||new Error("indexedDB open failed"))}}).catch(t=>{throw this.dbPromise=null,t}),this.dbPromise)}async withStore(t,n){let r=await this.openDb();return new Promise((o,s)=>{let i=r.transaction(Mc,t),a=i.objectStore(Mc);n(a,o,s),i.onerror=()=>{s(i.error||new Error("indexedDB transaction failed"))}})}async read(t){try{return await this.withStore("readonly",(n,r,o)=>{let s=n.get(t);s.onsuccess=()=>{let i=s.result;r(i??null)},s.onerror=()=>{o(s.error||new Error("indexedDB read failed"))}})}catch{return null}}async write(t,n){await this.withStore("readwrite",(r,o,s)=>{let i=r.put(n,t);i.onsuccess=()=>o(),i.onerror=()=>{s(i.error||new Error("indexedDB write failed"))}}).catch(()=>{})}async remove(t){await this.withStore("readwrite",(n,r,o)=>{let s=n.delete(t);s.onsuccess=()=>r(),s.onerror=()=>{o(s.error||new Error("indexedDB delete failed"))}}).catch(()=>{})}};function eh(){let e=new Su,t=new Ru;return{readSync:n=>e.read(n),readSyncAny:n=>{for(let r of n){if(!r)continue;let o=e.read(r);if(o)return o}return null},readAsync:async n=>t.read(n),readAsyncAny:async n=>{for(let r of n){if(!r)continue;let o=await t.read(r);if(o)return o}return null},write:(n,r)=>{e.write(n,r),t.write(n,r)},remove:n=>{e.remove(n),t.remove(n)}}}var M_="rover_xdr_";var N_=new Set(["co.uk","org.uk","gov.uk","ac.uk","com.au","net.au","org.au","co.jp","com.br","com.mx","com.sg","co.in"]);function nh(e){let t=String(e||"").trim().toLowerCase();if(!t)return"";if(t==="localhost"||/^\d+\.\d+\.\d+\.\d+$/.test(t))return t;let n=t.split(".").filter(Boolean);if(n.length<2)return t;let r=`${n[n.length-2]}.${n[n.length-1]}`;return n.length>=3&&N_.has(r)?`${n[n.length-3]}.${r}`:r}function Au(e){return`${M_}${e.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,40)}`}function Nc(e){let t=String(e||"").trim();if(!t)return"";try{let n=new URL(t,window.location.href);return n.hash="",n.toString()}catch{return t}}function th(e){let t=String(e||"").trim();return!t||t==="/"?"/":t.replace(/\/\/+/g,"/").replace(/\/+$/,"")||"/"}function L_(e,t){let n=new Set;for(let[r]of e.entries())n.add(r);for(let r of n){let o=e.getAll(r);if(!o.length)continue;let s=t.getAll(r);if(!s.length)return!1;let i=new Map;for(let a of s)i.set(a,(i.get(a)||0)+1);for(let a of o){let c=i.get(a)||0;if(c<=0)return!1;i.set(a,c-1)}}return!0}function Cu(e,t){let n=Nc(e),r=Nc(t);if(!n||!r)return!1;try{let o=new URL(n,window.location.href),s=new URL(r,window.location.href);return o.origin.toLowerCase()!==s.origin.toLowerCase()||th(o.pathname)!==th(s.pathname)?!1:L_(o.searchParams,s.searchParams)}catch{return n===r}}function rh(e,t){try{let n=Au(e),r=nh(window.location.hostname),o=encodeURIComponent(JSON.stringify(t)),s=window.location.protocol==="https:",i=[`${n}=${o}`,"path=/","max-age=300","SameSite=Lax"];r&&r!=="localhost"&&!/^\d+\.\d+\.\d+\.\d+$/.test(r)&&i.push(`domain=.${r}`),s&&i.push("Secure"),document.cookie=i.join("; ")}catch{}}function Mu(e,t){try{let n=Au(e),r=document.cookie.split(";"),o=Math.max(1e3,Number(t?.maxAgeMs)||300*1e3),s=Nc(t?.currentUrl||window.location.href),i=String(t?.currentHost||window.location.hostname||"").trim().toLowerCase(),a=String(t?.expectedHandoffId||"").trim(),c=t?.requireTargetMatch!==!1;for(let d of r){let[p,...u]=d.trim().split("=");if(p===n){let v=u.join("="),h=JSON.parse(decodeURIComponent(v));if(!h.timestamp||Date.now()-h.timestamp>=o)continue;let g=String(h.handoffId||h.handoff?.handoffId||"").trim();if(!g||a&&g!==a)continue;if(c){let _=Nc(h.targetUrl||h.handoff?.targetUrl||"");if(!_||!s||!Cu(_,s))continue}if(h.sourceHost){let _=String(h.sourceHost||"").trim().toLowerCase();if(_&&i&&_===i&&!a)continue}if(h.sessionId&&typeof h.sessionId=="string")return h}}}catch{}return null}function qi(e){try{let t=Au(e),n=nh(window.location.hostname),r=window.location.protocol==="https:",o=[`${t}=`,"path=/","max-age=0","SameSite=Lax"];n&&n!=="localhost"&&!/^\d+\.\d+\.\d+\.\d+$/.test(n)&&o.push(`domain=.${n}`),r&&o.push("Secure"),document.cookie=o.join("; ")}catch{}}function Ce(e){return String(e||"").trim()||void 0}function D_(e){let t=Ce(e.incomingBoundaryId),n=Ce(e.currentBoundaryId);return!t||t===n?!1:n?e.taskEpochAdvanced===!0&&e.hasPendingRun!==!0:e.allowBootstrapAdoption!==!1}function oh(e){let t=Ce(e.incomingBoundaryId),n=Ce(e.currentBoundaryId);return t&&n&&t===n?{accept:!0,reason:"match"}:t?D_(e)?{accept:!0,adoptedBoundaryId:t,reason:n?"epoch_adopt":"bootstrap_adopt"}:{accept:!1,reason:"mismatch"}:!n&&e.allowBootstrapAdoption!==!1?{accept:!0,reason:"bootstrap_adopt"}:{accept:!1,reason:"missing_incoming"}}function O_(){return[{kind:"create_task"},{kind:"rotate_boundary"},{kind:"assign_worker"}]}function Nu(){return[{kind:"release_worker"},{kind:"clear_run"}]}function Lc(){return[{kind:"release_worker"},{kind:"clear_run"}]}function Ko(){return[{kind:"archive_task"},{kind:"clear_run"},{kind:"clear_worker_state"}]}var P_={idle:{START:{to:"running",sideEffects:()=>O_()}},running:{AGENT_PROGRESS:{to:"running",sideEffects:()=>[{kind:"update_timestamps",ts:Date.now()}]},NAVIGATION_STARTED:{to:"running",sideEffects:e=>[{kind:"record_navigation",targetUrl:e.targetUrl,isCrossHost:e.isCrossHost},{kind:"update_timestamps",ts:Date.now()}]},NAVIGATION_COMPLETED:{to:"running",sideEffects:()=>[{kind:"clear_navigation"},{kind:"update_timestamps",ts:Date.now()}]},ASK_USER:{to:"awaiting_user",sideEffects:e=>[{kind:"set_pending_questions",questions:e.questions||[]}]},PAUSE:{to:"paused",sideEffects:()=>[{kind:"snapshot_worker_state"},{kind:"release_worker"}]},BLOCK:{to:"blocked",sideEffects:e=>[{kind:"record_block_reason",reason:e.reason},{kind:"notify_agent_blocked"}]},COMPLETE:{to:"completed",sideEffects:()=>Nu()},FAIL:{to:"failed",sideEffects:e=>[...Nu(),{kind:"emit_error",error:e.error}]},CANCEL:{to:"cancelled",sideEffects:()=>Lc()},RESET:{to:"idle",sideEffects:()=>Ko()}},awaiting_user:{USER_RESPONDED:{to:"running",sideEffects:()=>[{kind:"clear_questions"}]},PAUSE:{to:"paused",sideEffects:()=>[{kind:"snapshot_worker_state"},{kind:"release_worker"}]},CANCEL:{to:"cancelled",sideEffects:()=>Lc()},RESET:{to:"idle",sideEffects:()=>Ko()}},paused:{RESUME:{to:"running",sideEffects:()=>[{kind:"restore_snapshot"},{kind:"assign_worker"}]},CANCEL:{to:"cancelled",sideEffects:()=>Lc()},RESET:{to:"idle",sideEffects:()=>Ko()}},blocked:{UNBLOCK:{to:"running",sideEffects:()=>[{kind:"resume_from_block"}]},CANCEL:{to:"cancelled",sideEffects:()=>Lc()},FAIL:{to:"failed",sideEffects:e=>[...Nu(),{kind:"emit_error",error:e.error}]},RESET:{to:"idle",sideEffects:()=>Ko()}},completed:{RESET:{to:"idle",sideEffects:()=>Ko()}},failed:{RESET:{to:"idle",sideEffects:()=>Ko()}},cancelled:{RESET:{to:"idle",sideEffects:()=>Ko()}}};function B_(e,t,n){let o=P_[e]?.[t.type];if(!o)return{next:e,rejected:!0,rejectedReason:`Invalid transition: ${e} + ${t.type}`,sideEffects:[]};let s=o.to;return e==="paused"&&t.type==="RESUME"&&n?.prePauseState==="awaiting_user"&&(s="awaiting_user"),{next:s,rejected:!1,sideEffects:o.sideEffects(t,n)}}function Wi(e){return e==="completed"||e==="failed"||e==="cancelled"}function sh(e){switch(e){case"idle":return"running";case"running":return"running";case"awaiting_user":return"running";case"paused":return"running";case"blocked":return"running";case"completed":return"completed";case"failed":return"failed";case"cancelled":return"cancelled";default:return"running"}}function $i(e,t){if(!e)return"idle";switch(e){case"running":{let n=String(t||"").trim().toLowerCase();return n.includes("waiting_for_input")||n.includes("awaiting_user")?"awaiting_user":"running"}case"completed":return"completed";case"cancelled":return"cancelled";case"failed":return"failed";case"ended":return"cancelled";default:return"idle"}}function ih(e,t){let n=B_(e.state,t,e);if(n.rejected)return{record:e,result:n};let r=Date.now(),o={...e,state:n.next};if(n.next==="paused"&&!o.pausedAt&&(o.pausedAt=r,o.prePauseState=e.state==="awaiting_user"?"awaiting_user":"running"),n.next==="blocked"){o.blockedAt=r;let s=t;o.blockReason=s.reason}return n.next==="running"&&e.state==="paused"&&(o.pausedAt=void 0,o.prePauseState=void 0),n.next==="running"&&e.state==="blocked"&&(o.blockedAt=void 0,o.blockReason=void 0),n.next==="running"&&e.state==="awaiting_user"&&(o.pausedAt=void 0,o.prePauseState=void 0),Wi(n.next)&&(o.endedAt=r),t.type==="COMPLETE"&&t.summary&&(o.summary=t.summary),t.type==="RESET"&&(o.pausedAt=void 0,o.prePauseState=void 0,o.blockedAt=void 0,o.blockReason=void 0,o.endedAt=void 0),{record:o,result:n}}function Lu(e){let t=Date.now(),n=e?.taskId||U_(),r=e?.boundaryId||F_();return{taskId:n,state:"idle",boundaryId:r,startedAt:t,uiMessages:[],timeline:[],seedChatLog:[],tabIds:[],...e}}function U_(){return`task_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function F_(){return`bnd_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function Dc(e){return e==="running"}function ah(e){return e.resumeRequired?e.hasLiveRemoteController?"defer_remote_owner":e.policy==="never"?"cancel_resume":e.policy==="confirm"?"prompt_resume":"auto_resume":"noop"}function ch(e){let t=String(e.serverRunId||"").trim();if(!t||e.ignoredRunIds?.has(t))return!1;let n=String(e.localPendingRunId||"").trim();return!n||n!==t}function lh(e){let t=String(e.serverRunId||"").trim();if(!t||!e.ignoredRunIds?.has(t))return!1;let n=String(e.runStatus||"").trim().toLowerCase();return!(n==="completed"||n==="cancelled"||n==="failed"||n==="ended")}function uh(e){return!(e.taskStatus!=="running"||!e.activeRunId||!e.activeRunText||e.hasPendingRun||e.ignoredRunIds?.has(e.activeRunId))}function Du(e){return!!(e.localTaskStatus!=="running"||e.remoteTaskStatus&&e.remoteTaskStatus!=="running"||e.mode==="observer"&&!e.hasRemoteActiveRun)}function dh(e){let{type:t,messageRunId:n,messageTaskBoundaryId:r,currentTaskBoundaryId:o,pendingRunId:s,sharedActiveRunId:i,authoritativeActiveRunId:a,taskStatus:c,ignoredRunIds:d}=e,p=Ce(o),u=Ce(r),v=t==="run_state_transition"||t==="run_completed";if((t==="run_started"||t==="run_resumed"||v)&&p&&(!u||u!==p)&&!(v&&!!n&&!!s&&n===s&&c==="running"))return!0;if(!n&&t!=="run_started"&&t!=="run_resumed")return!1;if(n&&d?.has(n))return!0;let g=a||i;return t==="run_started"||t==="run_resumed"?!n||g&&g===n?!1:s?s!==n&&(!g||g!==n):!0:n?t==="run_completed"||t==="run_state_transition"?c!=="running"?!0:s?s!==n&&(!g||g!==n):!(g&&g===n):s?s!==n:!0:!1}function H_(e){return Math.max(1,Number(e)||1)}function q_(e){if(!e)return"idle";if(e.status!=="running")return"terminal";let t=String(e.boundaryReason||"").trim().toLowerCase();return t.includes("waiting_for_input")||t.includes("awaiting_user")?"awaiting_user":"running"}function Ou(e){return e==="completed"||e==="cancelled"||e==="failed"||e==="ended"}function fh(e,t,n){let r=Number(t.at)||Date.now(),o=String(t.reason||"kernel").trim()||"kernel",s=H_(e.taskEpoch),i=e.task||n.createTask(o,r,t.taskId);if(t.type==="new_task")return{task:n.createTask(o,r,t.taskId),taskEpoch:s+1,lifecycle:"running",rotateBoundary:!0,clearPendingRun:!0,clearWorkerState:!0};if(t.type==="terminal"){let d=t.terminal;return{task:{...i,status:d,boundaryReason:o,endedAt:r},taskEpoch:s,lifecycle:"terminal",rotateBoundary:!1,clearPendingRun:!0,clearWorkerState:!0}}let c={...i,status:"running",boundaryReason:o,endedAt:void 0};return!c.lastUserAt&&!c.lastAssistantAt&&(c.lastAssistantAt=r),{task:c,taskEpoch:s,lifecycle:t.type==="awaiting_user"?"awaiting_user":q_(c),rotateBoundary:!1,clearPendingRun:!1,clearWorkerState:!1}}function W_(e,t){let n=Number(e);return Number.isFinite(n)?n:t}function hh(e){let t="https://extensionrouter.rtrvr.ai",n=String(e||t).trim().replace(/\/+$/,"");if(!n)return t;if(n.endsWith("/extensionRouter/v2/rover"))return n.slice(0,-25);let r=n.match(/\/v\d+\/rover$/);return r?.[0]?n.slice(0,-r[0].length):n.endsWith("/extensionRouter")?n.slice(0,-16):n.endsWith("/v2/rover")?n.slice(0,-9):n}function ph(e){let t=new Set,n=[];for(let r of e){let o=ji(r);!o||t.has(o)||(t.add(o),n.push(o))}return n}function $_(e){let n=`${hh(e)}/v2/rover`,r=ji(String(e||"").trim()),o=r.replace("/extensionRouter/v2/rover","/v2/rover");return r.endsWith("/v2/rover")||r.endsWith("/extensionRouter/v2/rover")?ph([o,n]):ph([n])}function gh(e){return $_(e)}function V_(e){return gh(e)[0]||`${hh(e)}/v2/rover`}function zi(e){return gh(e)}function Oc(e){return V_(e)}function ji(e){return String(e||"").replace(/\/+$/,"")}function mh(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}function Xo(e){return!!e&&typeof e=="object"&&typeof e.sessionId=="string"&&Number.isFinite(Number(e.epoch))}function Pc(e){let t=Number(e);return Number.isFinite(t)?t:void 0}function z_(e){if(!e||typeof e!="object")return;let t=String(e?.error||"").trim().toLowerCase(),n=e?.data&&typeof e.data=="object"?e.data:{},r=n?.conflict&&typeof n.conflict=="object"?n.conflict:{},o=String(r?.type||t||"").trim().toLowerCase(),s=o==="stale_seq"||o==="stale_epoch"||o==="active_run_exists"?o:void 0;if(!s)return;let i=Pc(n?.currentSeq??r?.currentSeq),a=Pc(n?.currentEpoch??n?.sessionEpoch??r?.currentEpoch),c=typeof r?.retryable=="boolean"?r.retryable:s==="stale_seq"||s==="stale_epoch";return{type:s,currentSeq:i,currentEpoch:a,retryable:c,decisionHint:typeof n?.decisionHint=="string"?n.decisionHint:void 0,decisionReason:typeof n?.decisionReason=="string"?n.decisionReason:void 0,runId:typeof n?.runId=="string"?n.runId:void 0,sessionId:typeof n?.sessionId=="string"?n.sessionId:void 0,clientEventId:typeof n?.clientEventId=="string"?n.clientEventId:void 0}}function Vi(e){return String(e?.error||e?.data?.code||e?.code||"").trim().toUpperCase()}async function j_(e){try{return await e.json()}catch{let t=await e.text().catch(()=>"");return t?{error:t}:void 0}}var Bc=class e{options;base;baseCandidates;baseIndex=0;sessionToken;sessionTokenExpiresAt=0;sessionId;epoch=1;eventSource=null;pollTimer=null;reconnectTimer=null;sseReconnectAttempts=0;static SSE_BASE_DELAY_MS=2e3;static SSE_MAX_DELAY_MS=6e4;static SSE_MAX_JITTER_MS=3e3;static SSE_MAX_RECONNECT_ATTEMPTS=10;started=!1;lastSeq=0;lastRunId="";lastSnapshotDigest="";activeRunId;visibilityListener=null;pollIntervalMs=2e3;commandInFlight=!1;commandQueue=Promise.resolve();constructor(t){this.options=t,this.baseCandidates=zi(t.apiBase),this.base=this.baseCandidates[0]||Oc(t.apiBase),this.sessionId=t.getSessionId()}getSessionToken(){return this.sessionToken}getSessionTokenExpiresAt(){return this.sessionTokenExpiresAt}getEpoch(){return Math.max(1,this.epoch)}getLastSeq(){return Math.max(0,this.lastSeq)}getActiveRunId(){return this.activeRunId}setApiBase(t){this.baseCandidates=zi(t),this.baseIndex=0,this.base=this.baseCandidates[0]||Oc(t)}stop(){this.started=!1,this.pauseBackgroundTransport(),this.visibilityListener&&typeof document<"u"&&(document.removeEventListener("visibilitychange",this.visibilityListener),this.visibilityListener=null),this.sseReconnectAttempts=0,this.lastSeq=0,this.lastRunId="",this.lastSnapshotDigest="",this.activeRunId=void 0}async start(){if(this.started=!0,typeof document<"u"&&!this.visibilityListener&&(this.visibilityListener=()=>{this.handleVisibilityChange()},document.addEventListener("visibilitychange",this.visibilityListener)),await this.ensureSession(!1),!this.shouldKeepTransportActive()){this.pauseBackgroundTransport();return}this.startProjectionStream()}reportError(t){this.options.onError?.(t)}withCommandLock(t){let n=async()=>{this.commandInFlight=!0;try{return await t()}finally{this.commandInFlight=!1}},r=this.commandQueue.then(n,n);return this.commandQueue=r.then(()=>{},()=>{}),r}isDocumentHidden(){return typeof document<"u"&&document.visibilityState==="hidden"}hasOwnershipTransportAllowance(){if(typeof this.options.shouldKeepTransportActive=="function")try{return!!this.options.shouldKeepTransportActive()}catch{return!1}return!!this.activeRunId}shouldKeepTransportActive(){return!this.isDocumentHidden()||this.hasOwnershipTransportAllowance()}pauseBackgroundTransport(){this.eventSource&&(this.eventSource.close(),this.eventSource=null),this.pollTimer!=null&&(window.clearTimeout(this.pollTimer),this.pollTimer=null),this.pollIntervalMs=2e3,this.reconnectTimer!=null&&(window.clearTimeout(this.reconnectTimer),this.reconnectTimer=null)}handleVisibilityChange(){if(this.started){if(!this.shouldKeepTransportActive()){this.pauseBackgroundTransport();return}this.ensureSession(!1).catch(t=>this.reportError(t)).finally(()=>{this.startProjectionStream(),this.eventSource||this.startProjectionPolling(),this.fetchProjection().catch(t=>this.reportError(t))})}}getActiveBase(){return this.baseCandidates.length?ji(this.baseCandidates[this.baseIndex]||this.base):ji(this.base)}rotateBaseCandidate(){this.baseCandidates.length<=1||(this.baseIndex=(this.baseIndex+1)%this.baseCandidates.length,this.base=this.baseCandidates[this.baseIndex]||this.base)}async requestJson(t,n){this.baseCandidates.length||(this.baseCandidates=zi(this.base),this.base=this.baseCandidates[0]||this.base,this.baseIndex=0);let r,o=Math.max(1,this.baseCandidates.length);for(let s=0;s<o;s+=1){let i=(this.baseIndex+s)%o,a=ji(this.baseCandidates[i]||this.base);try{let c=await fetch(`${a}${t}`,n),d=await j_(c);if(c.status===404||c.status===405){r=new Error(`Rover endpoint not found at ${a}${t}`);continue}return this.baseIndex=i,this.base=a,{response:c,json:d}}catch(c){r=c}}throw r instanceof Error?r:new Error(`Rover request failed for ${t}`)}applySessionData(t){t.sessionId&&(this.sessionId=t.sessionId),t.sessionToken&&(this.sessionToken=t.sessionToken,this.sessionTokenExpiresAt=W_(t.sessionTokenExpiresAt,Date.now()+8*6e4)),Number.isFinite(Number(t.epoch))&&(this.epoch=Math.max(1,Number(t.epoch))),t.projection&&Xo(t.projection)&&this.applyProjection(t.projection),this.options.onSession?.(t)}applyProjection(t){let n=this.epoch,r=this.lastRunId,o=this.lastSeq,s=this.lastSnapshotDigest;this.sessionId=t.sessionId||this.sessionId,this.epoch=Math.max(1,Number(t.epoch||this.epoch));let i=String(t.activeRunId||"");this.activeRunId=i||void 0,i!==this.lastRunId&&(this.lastRunId=i,this.lastSeq=0);let a=Array.isArray(t.events)?t.events:[];if(a.length){let p=Number(a[a.length-1]?.seq||0);Number.isFinite(p)&&p>this.lastSeq&&(this.lastSeq=p)}let c=String(t.snapshotMeta?.digest||"").trim()||(Number.isFinite(Number(t.snapshotMeta?.updatedAt))?`u:${Math.max(0,Number(t.snapshotMeta?.updatedAt||0))}`:Number.isFinite(Number(t.snapshotUpdatedAt))?`u:${Math.max(0,Number(t.snapshotUpdatedAt||0))}`:"");c&&(this.lastSnapshotDigest=c),this.isDocumentHidden()&&!this.shouldKeepTransportActive()&&this.pauseBackgroundTransport(),(this.epoch!==n||i!==r||this.lastSeq!==o||t.snapshot||c&&c!==s)&&this.options.onProjection?.(t)}shouldRefreshSessionToken(){return this.sessionToken?Date.now()+6e4>=this.sessionTokenExpiresAt:!0}async ensureSession(t=!1){if(this.sessionId=this.options.getSessionId()||this.sessionId,!t&&!this.shouldRefreshSessionToken())return null;let n=this.options.getBootstrapToken(),r={siteId:this.options.siteId,sessionId:this.sessionId,requestedSessionId:this.sessionId,host:this.options.getHost(),url:this.options.getPageUrl(),pageUrl:this.options.getPageUrl()},o=!t&&!!this.sessionToken,s={...r,...o?{sessionToken:this.sessionToken}:{},...n?{bootstrapToken:n}:{}};if(!s.sessionToken&&!s.bootstrapToken)return null;let i=async p=>this.requestJson("/session/open",{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify(p)}),{response:a,json:c}=await i(s);if(a.status===401&&o&&n&&(Vi(c)==="SESSION_TOKEN_EXPIRED"||Vi(c)==="SESSION_TOKEN_INVALID"||Vi(c)==="BOOTSTRAP_REQUIRED")&&(this.sessionToken=void 0,this.sessionTokenExpiresAt=0,{response:a,json:c}=await i({...r,bootstrapToken:n})),!a.ok||!c?.success||!c?.data){let p=Vi(c),u=c?.data?.message||c?.error||`session/open failed (${a.status})`,v=new Error(String(u));throw v.code=p||void 0,v}let d=c.data;return this.applySessionData(d),d}syncCursorFromPayload(t){if(!t||typeof t!="object")return;let n=Pc(t?.currentEpoch??t?.sessionEpoch);n!==void 0&&(this.epoch=Math.max(1,n));let r=Pc(t?.currentSeq);r!==void 0&&r>=0&&(this.lastSeq=Math.max(this.lastSeq,r))}async postJson(t,n,r){await this.ensureSession(!1);let o={...n,requestNonce:mh(),sessionToken:this.sessionToken,sessionId:n.sessionId||this.sessionId},{response:s,json:i}=await this.requestJson(t,{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify(o)}),a=Math.max(0,Number(r?.authRetryCount||0));if(s.status===401&&a<1){let c=Vi(i);if(c==="SESSION_TOKEN_EXPIRED"||c==="SESSION_TOKEN_INVALID"||c==="BOOTSTRAP_REQUIRED")return this.sessionToken=void 0,this.sessionTokenExpiresAt=0,await this.ensureSession(!0),this.postJson(t,n,{authRetryCount:a+1})}if(s.status===409)return this.syncCursorFromPayload(i?.data),{ok:!1,data:i?.data||null,conflict:z_(i),raw:i};if(!s.ok||!i?.success){let c=i?.error||`request failed (${s.status})`,d=new Error(String(c));throw d.status=s.status,d.code=String(i?.error||i?.data?.code||"").trim()||void 0,d.details=i?.data||i,d}return this.syncCursorFromPayload(i?.data),{ok:!0,data:i?.data||null,raw:i}}async submitRunInput(t){return this.withCommandLock(async()=>{let n=String(t.clientEventId||"").trim()||(typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():void 0);for(let r=0;r<2;r+=1){let o=await this.postJson("/command",{type:"RUN_INPUT",commandId:n,expectedEpoch:this.epoch,expectedSeq:this.lastSeq,payload:{runId:t.runId,message:t.message,continueRun:!!t.continueRun,forceNewRun:!!t.forceNewRun,requestedMode:t.requestedMode,taskBoundaryId:this.options.getTaskBoundaryId?.()}});if(!o.ok){let d=(o.data||null)?.data||null;Xo(d?.projection)&&this.applyProjection(d.projection);let p=String(o.conflict?.type||"").trim(),u=o.conflict?.retryable!==!1&&(p==="stale_seq"||p==="stale_epoch");if(r===0&&u)continue;return d}let s=o.data||{},i=s?.data||null,a=String(s?.runId||i?.runId||"").trim();return a&&(this.activeRunId=a,this.lastRunId=a,Number(s?.seq||i?.seq||0)===0&&this.lastSeq>0&&(this.lastSeq=0)),Number.isFinite(Number(s?.epoch))&&(this.epoch=Math.max(1,Number(s?.epoch))),Number.isFinite(Number(s?.seq))&&(this.lastSeq=Math.max(0,Number(s?.seq||0))),i}return null})}async controlRun(t){return this.withCommandLock(async()=>{let n=String(t.clientEventId||"").trim()||(typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():void 0);for(let r=0;r<2;r++){let o=await this.postJson("/command",{type:"RUN_CONTROL",commandId:n,expectedEpoch:this.epoch,expectedSeq:this.lastSeq,payload:{action:t.action,runId:t.runId,reason:t.reason}});if(!o.ok){if(r===0&&o.conflict?.retryable!==!1)continue;return o.data?.data||null}let s=o.data||{},i=s?.data||null;return Number.isFinite(Number(s?.seq))&&(this.lastSeq=Math.max(0,Number(s.seq||0))),Xo(i?.projection)&&this.applyProjection(i.projection),i}return null})}async fetchExternalContext(t){return this.withCommandLock(async()=>{let n=String(t.runId||this.activeRunId||this.lastRunId||"").trim()||void 0,r=typeof t.tabId=="string"&&t.tabId.trim()?t.tabId.trim():Number.isFinite(Number(t.tabId))&&Number(t.tabId)>0?String(Math.trunc(Number(t.tabId))):void 0,o=t.intent==="act"||t.intent==="open_only"||t.intent==="read_context"?t.intent:"read_context",s=t.source==="google_search"?"google_search":"direct_url";for(let i=0;i<2;i+=1){let a=await this.postJson("/context/external",{runId:n,logicalTabId:r,url:t.url,intent:o,source:s,message:t.message,adversarialScore:Number.isFinite(Number(t.adversarialScore))?Number(t.adversarialScore):void 0,expectedEpoch:this.epoch,expectedSeq:this.lastSeq});if(!a.ok){let c=String(a.conflict?.type||"").trim(),d=a.conflict?.retryable!==!1&&(c==="stale_seq"||c==="stale_epoch");if(i===0&&d)continue;return a.data||null}return a.data||null}return null})}async sendTabEvent(t){return this.withCommandLock(async()=>{let n=mh(),r={runId:t.runId,currentUrl:t.currentUrl,targetUrl:t.targetUrl,logicalTabId:t.logicalTabId,message:t.message,adversarialScore:t.adversarialScore,currentHost:t.currentHost,targetHost:t.targetHost,isCrossHost:t.isCrossHost,navigationClass:t.navigationClass,clientEventId:n},o=await this.postJson("/command",{type:"TAB_EVENT",commandId:n,expectedEpoch:this.epoch,expectedSeq:this.lastSeq,payload:r});if(o.ok){let c=o.data||{},d=c?.data||null;return Number.isFinite(Number(c?.epoch))&&(this.epoch=Math.max(1,Number(c?.epoch||this.epoch))),Number.isFinite(Number(c?.seq))&&(this.lastSeq=Math.max(0,Number(c?.seq||0))),d?{...d,clientEventId:n,retryAttempted:!1,retryExhausted:!1}:null}let s=o.conflict;if(s?.retryable&&(s.type==="stale_seq"||s.type==="stale_epoch")){let c=await this.postJson("/command",{type:"TAB_EVENT",commandId:n,expectedEpoch:this.epoch,expectedSeq:this.lastSeq,payload:r});if(c.ok){let u=c.data||{},v=u?.data||null;return Number.isFinite(Number(u?.epoch))&&(this.epoch=Math.max(1,Number(u?.epoch||this.epoch))),Number.isFinite(Number(u?.seq))&&(this.lastSeq=Math.max(0,Number(u?.seq||0))),v?{...v,clientEventId:n,retryAttempted:!0,retryExhausted:!1}:{clientEventId:n,retryAttempted:!0,retryExhausted:!1}}let d=c.conflict||s,p=(c.data||o.data||null)?.data||null;return this.fetchProjection().catch(()=>{}),{...p||{},clientEventId:n,retryAttempted:!0,retryExhausted:!0,decisionReason:p?.decisionReason||d?.decisionReason||(d?.type==="stale_epoch"?"stale_epoch_retryable":"stale_seq_retryable"),conflict:d?{type:d.type,currentSeq:d.currentSeq,currentEpoch:d.currentEpoch,retryable:!!d.retryable}:void 0}}let a=(o.data||null)?.data||null;return s?.type&&this.fetchProjection().catch(()=>{}),{...a||{},clientEventId:n,retryAttempted:!1,retryExhausted:!!s,conflict:s?{type:s.type,currentSeq:s.currentSeq,currentEpoch:s.currentEpoch,retryable:!!s.retryable}:a?.conflict}})}async fetchProjection(){if(await this.ensureSession(!1),!this.sessionToken||!this.sessionId)return null;let t=new URLSearchParams({sessionId:this.sessionId,seqAfter:String(this.lastSeq),sessionToken:this.sessionToken}),{response:n,json:r}=await this.requestJson(`/state?${t.toString()}`,{method:"GET"}),o=r?.data&&typeof r.data=="object"&&Xo(r.data?.projection)?r.data.projection:r?.data;if(!n.ok||!r?.success||!Xo(o))return null;let s=o;return this.applyProjection(s),s}async saveSnapshot(t){return this.withCommandLock(async()=>!!(await this.postJson("/snapshot",{checkpoint:t.checkpoint,updatedAt:t.updatedAt,version:t.version,seq:t.seq,chatSummary:t.chatSummary,compactedPrevSteps:t.compactedPrevSteps,ttlHours:t.ttlHours,visitorId:t.visitorId}))?.ok)}async sendBatch(t){if(!t.length)return[];let r=t.slice(0,5);return(await this.postJson("/batch",{requests:r.map(s=>({path:s.path,body:s.body}))}))?.data?.results||[]}scheduleProjectionPoll(t){this.pollTimer!=null&&(window.clearTimeout(this.pollTimer),this.pollTimer=null),this.pollTimer=window.setTimeout(async()=>{if(this.pollTimer=null,!this.started||!this.shouldKeepTransportActive())return;let n=this.epoch,r=this.lastSeq,o=this.lastSnapshotDigest;try{await this.fetchProjection()}catch(i){this.reportError(i)}this.epoch!==n||this.lastSeq!==r||this.lastSnapshotDigest!==o?this.pollIntervalMs=2e3:this.pollIntervalMs=Math.min(15e3,Math.round(this.pollIntervalMs*1.4)),this.started&&this.shouldKeepTransportActive()&&!this.eventSource&&this.scheduleProjectionPoll(this.pollIntervalMs)},t)}startProjectionPolling(){this.pollTimer==null&&(this.pollIntervalMs=2e3,this.scheduleProjectionPoll(this.pollIntervalMs))}scheduleSseReconnect(){if(!this.started||!this.shouldKeepTransportActive()||this.reconnectTimer!=null)return;if(this.sseReconnectAttempts>=e.SSE_MAX_RECONNECT_ATTEMPTS){this.sseReconnectAttempts=0;return}let t=e.SSE_BASE_DELAY_MS,n=Math.min(t*Math.pow(2,this.sseReconnectAttempts),e.SSE_MAX_DELAY_MS),r=Math.random()*e.SSE_MAX_JITTER_MS,o=Math.round(n+r);this.sseReconnectAttempts++,this.reconnectTimer=window.setTimeout(()=>{this.reconnectTimer=null,this.startProjectionStream()},o)}startProjectionStream(){if(!this.started)return;if(!this.shouldKeepTransportActive()){this.pauseBackgroundTransport();return}if(!this.sessionToken||!this.sessionId){this.startProjectionPolling();return}if(this.eventSource)return;if(typeof EventSource>"u"){this.startProjectionPolling();return}let t=new URLSearchParams({sessionId:this.sessionId,cursor:String(this.lastSeq),sessionToken:this.sessionToken}),n=`${this.getActiveBase()}/stream?${t.toString()}`,r=new EventSource(n,{withCredentials:!1});this.eventSource=r;let o=s=>{try{let i=JSON.parse(s||"{}"),a=i&&typeof i=="object"&&Xo(i.projection)?i.projection:i;Xo(a)&&this.applyProjection(a)}catch(i){this.reportError(i)}};r.addEventListener("projection",s=>{o(s.data||"{}")}),r.addEventListener("projection_delta",s=>{o(s.data||"{}")}),r.onerror=()=>{this.eventSource&&(this.eventSource.close(),this.eventSource=null),this.ensureSession(!0).catch(s=>this.reportError(s)).finally(()=>{if(this.rotateBaseCandidate(),!this.shouldKeepTransportActive()){this.pauseBackgroundTransport();return}this.pollTimer==null&&this.startProjectionPolling(),this.scheduleSseReconnect()})},r.onopen=()=>{if(!this.shouldKeepTransportActive()){this.pauseBackgroundTransport();return}this.sseReconnectAttempts=0,this.pollTimer!=null&&(window.clearTimeout(this.pollTimer),this.pollTimer=null,this.pollIntervalMs=2e3)}}};function Gi(e){return Array.isArray(e)?e.length:0}function Pu(e){return String(e||"").trim()||void 0}function bh(e){return String(e||"").trim()||void 0}function vh(e){if(!e)return 0;let t=0;String(e.pendingRun?.id||"").trim()&&(t+=4,e.pendingRun?.resumeRequired&&(t+=1),Pu(e.pendingRun?.taskBoundaryId)&&(t+=1)),e.activeTask?.status==="running"&&(t+=2);let r=e.workerState;return r&&(t+=1,String(r.rootUserInput||"").trim()&&(t+=1),t+=Math.min(3,Gi(r.history)),t+=Math.min(3,Gi(r.plannerHistory)),t+=Math.min(4,Gi(r.agentPrevSteps)),Gi(r.pendingAskUser?.questions)>0&&(t+=3)),Gi(e.taskTabScope?.touchedTabIds)>0&&(t+=1),t}function Bu(e){let t=bh(e.localState.pendingRun?.id),n=bh(e.incomingState.pendingRun?.id),r=Pu(e.localState.pendingRun?.taskBoundaryId||e.localState.workerState?.taskBoundaryId),o=Pu(e.incomingState.pendingRun?.taskBoundaryId||e.incomingState.workerState?.taskBoundaryId);return{localRunId:t,incomingRunId:n,exactRunMatch:!!(t&&n&&t===n),localBoundaryId:r,incomingBoundaryId:o,exactBoundaryMatch:!!(r&&o&&r===o),localScore:vh(e.localState),incomingScore:vh(e.incomingState)}}function Uu(e){let t=Math.max(0,Number(e.clockSkewMs)||200);if(e.incomingUpdatedAt>e.localUpdatedAt+t)return!0;if(!e.crossDomainResumeActive)return!1;let n=Bu({localState:e.localState,incomingState:e.incomingState});if(n.incomingScore<=n.localScore)return!1;if(n.localBoundaryId&&n.incomingBoundaryId&&n.localBoundaryId!==n.incomingBoundaryId){let o=Math.max(1,Number(e.localState.taskEpoch)||1);if(Math.max(1,Number(e.incomingState.taskEpoch)||1)<o)return!1}return!!(n.exactRunMatch||n.exactBoundaryMatch||!!!(n.localRunId||n.localBoundaryId))}function kr(e){return String(e||"").trim()||void 0}function Fu(e){return e==="preserve_if_running"}function yh(e,t){let n=kr(t.boundaryId),r=kr(t.runId),o=kr(t.taskId),s=Array.from(e);if(n){let i=s.find(a=>kr(a.boundaryId)===n);if(i)return i}if(r){let i=s.find(a=>kr(a.pendingRun?.id)===r);if(i)return i}if(o){let i=s.find(a=>kr(a.taskId)===o);if(i)return i}}function Th(e){let t=kr(e.localPendingRunId);if(t)return t;let n=kr(e.sharedActiveRunId);if(!n)return;let r=kr(e.sharedTaskId),o=kr(e.activeTaskId);if(!(r&&o&&r!==o))return n}var Uc=class{maxWorkers;maxQueue;activeWorkers=new Map;queue=[];onWorkerFreed;constructor(t){this.maxWorkers=Math.min(Math.max(1,Number(t?.maxWorkers)||1),2),this.maxQueue=Math.max(1,Number(t?.maxQueue)||3),this.onWorkerFreed=t?.onWorkerFreed}acquire(t,n){if(this.activeWorkers.has(t))return this.activeWorkers.get(t);if(this.removeFromQueue(t),this.activeWorkers.size<this.maxWorkers){let r=new Worker(n.workerUrl,n.workerOptions);return this.activeWorkers.set(t,r),r}return this.queue.length>=this.maxQueue&&this.queue.shift(),this.queue.push(t),null}release(t){let n=this.activeWorkers.get(t);if(n){try{n.terminate()}catch{}this.activeWorkers.delete(t)}this.removeFromQueue(t),this.dequeueNext()}getWorker(t){return this.activeWorkers.get(t)}getActiveCount(){return this.activeWorkers.size}isQueued(t){return this.queue.includes(t)}getQueuedTasks(){return[...this.queue]}getActiveTasks(){return Array.from(this.activeWorkers.keys())}shutdown(){for(let[,t]of this.activeWorkers)try{t.terminate()}catch{}this.activeWorkers.clear(),this.queue=[]}removeFromQueue(t){let n=this.queue.indexOf(t);n>=0&&this.queue.splice(n,1)}dequeueNext(){if(this.queue.length===0||this.activeWorkers.size>=this.maxWorkers)return;let t=this.queue.shift();t&&this.onWorkerFreed&&this.onWorkerFreed(t)}};var G_=10,K_=8,X_=12,_h=40,kh=60,Y_=5*6e4,Q_=5,qs=class e{tasks=new Map;activeTaskId;taskOrder=[];workerPool;maxArchivedTasks;tabToTask=new Map;constructor(t){this.workerPool=new Uc({maxWorkers:t?.maxConcurrentWorkers,maxQueue:t?.maxQueuedTasks,onWorkerFreed:n=>this.onWorkerSlotFreed(n)}),this.maxArchivedTasks=Math.max(1,Number(t?.maxArchivedTasks)||G_)}createTask(t,n){let r=Lu(n);return this.tasks.set(r.taskId,r),this.taskOrder.push(r.taskId),r}dispatch(t,n){let r=this.tasks.get(t);if(!r)return{accepted:!1,task:Lu({taskId:t}),sideEffects:[],rejectedReason:`Task ${t} not found`};let{record:o,result:s}=ih(r,n);return s.rejected||this.tasks.set(t,o),{accepted:!s.rejected,task:s.rejected?r:o,sideEffects:s.sideEffects,rejectedReason:s.rejectedReason}}switchActiveTask(t){let n=this.tasks.get(t);if(!n)return;let r=this.getActiveTask();return this.activeTaskId=t,n}getActiveTask(){if(this.activeTaskId)return this.tasks.get(this.activeTaskId)}getActiveTaskId(){return this.activeTaskId}listTasks(){return this.taskOrder.map(t=>this.tasks.get(t)).filter(t=>!!t)}getTask(t){return this.tasks.get(t)}hasTask(t){return this.tasks.has(t)}getTaskCount(){return this.tasks.size}updateTask(t,n){let r=this.tasks.get(t);if(!r)return;let o=n(r);return this.tasks.set(t,o),o}updateScrollPosition(t,n){let r=this.tasks.get(t);r&&this.tasks.set(t,{...r,scrollPosition:n})}assignWorker(t,n){let r=this.workerPool.acquire(t,n);if(r){let o=this.tasks.get(t);o&&this.tasks.set(t,{...o,workerId:t})}return r}releaseWorker(t){this.workerPool.release(t);let n=this.tasks.get(t);n&&this.tasks.set(t,{...n,workerId:void 0})}getWorker(t){return this.workerPool.getWorker(t)}getQueuedTasks(){return this.workerPool.getQueuedTasks()}isTaskQueued(t){return this.workerPool.isQueued(t)}onWorkerSlotFreed(t){}mapTabToTask(t,n){this.tabToTask.set(t,n);let r=this.tasks.get(n);r&&!r.tabIds.includes(t)&&this.tasks.set(n,{...r,tabIds:[...r.tabIds,t]})}getTaskForTab(t){let n=this.tabToTask.get(t);if(n)return this.tasks.get(n)}getTaskByBoundaryId(t){for(let n of this.tasks.values())if(n.boundaryId===t)return n}archiveTask(t){let n=this.tasks.get(t);if(!n)return;let r={...n,uiMessages:n.uiMessages.slice(-K_),timeline:n.timeline.slice(-X_),transientStatus:void 0,workerState:void 0,pendingRun:void 0};this.tasks.set(t,r),this.workerPool.release(t)}pruneArchivedTasks(){let t=[];for(let n of this.taskOrder){let r=this.tasks.get(n);r&&Wi(r.state)&&t.push(n)}for(;t.length>this.maxArchivedTasks;){let n=t.shift();this.tasks.delete(n),this.taskOrder=this.taskOrder.filter(r=>r!==n);for(let[r,o]of this.tabToTask)o===n&&this.tabToTask.delete(r)}}deleteTask(t){if(!this.tasks.has(t))return!1;this.workerPool.release(t),this.tasks.delete(t),this.taskOrder=this.taskOrder.filter(n=>n!==t);for(let[n,r]of this.tabToTask)r===t&&this.tabToTask.delete(n);return this.activeTaskId===t&&(this.activeTaskId=this.taskOrder.length>0?this.taskOrder[this.taskOrder.length-1]:void 0),!0}toPersistedState(){let t={};for(let[n,r]of this.tasks)t[n]=r;return{tasks:t,activeTaskId:this.activeTaskId,taskOrder:[...this.taskOrder]}}static fromPersistedState(t,n){let r=new e(n);if(t.tasks&&typeof t.tasks=="object"){for(let[o,s]of Object.entries(t.tasks))if(s&&typeof s=="object"&&s.taskId&&(r.tasks.set(o,s),Array.isArray(s.tabIds)))for(let i of s.tabIds)r.tabToTask.set(i,o)}return r.taskOrder=Array.isArray(t.taskOrder)?t.taskOrder.filter(o=>r.tasks.has(o)):Array.from(r.tasks.keys()),r.activeTaskId=t.activeTaskId&&r.tasks.has(t.activeTaskId)?t.activeTaskId:r.taskOrder.length>0?r.taskOrder[r.taskOrder.length-1]:void 0,r}static fromV1State(t,n){let r=new e(n);if(t.activeTask){let o=$i(t.activeTask.status,t.activeTask.boundaryReason),s={taskId:t.activeTask.taskId,state:o,boundaryId:t.workerState?.taskBoundaryId||t.pendingRun?.taskBoundaryId||`bnd_migrated_${Date.now().toString(36)}`,startedAt:t.activeTask.startedAt,endedAt:t.activeTask.endedAt,lastUserAt:t.activeTask.lastUserAt,lastAssistantAt:t.activeTask.lastAssistantAt,uiMessages:Array.isArray(t.uiMessages)?[...t.uiMessages]:[],timeline:Array.isArray(t.timeline)?[...t.timeline]:[],workerState:t.workerState?{...t.workerState}:void 0,pendingRun:t.pendingRun?{...t.pendingRun}:void 0,tabScope:t.taskTabScope?{...t.taskTabScope}:void 0,rootUserInput:t.workerState?.rootUserInput,seedChatLog:t.workerState?.seedChatLog?[...t.workerState.seedChatLog]:[],transientStatus:t.transientStatus?{...t.transientStatus}:void 0,tabIds:t.taskTabScope?.touchedTabIds?[...t.taskTabScope.touchedTabIds]:[]};r.tasks.set(s.taskId,s),r.taskOrder.push(s.taskId),r.activeTaskId=s.taskId;for(let i of s.tabIds)r.tabToTask.set(i,s.taskId)}return r}enforceMemoryCaps(){for(let[,t]of this.tasks)Wi(t.state)||(t.uiMessages.length>_h&&(t.uiMessages=t.uiMessages.slice(-_h)),t.timeline.length>kh&&(t.timeline=t.timeline.slice(-kh)))}terminateInactiveWorkers(){let t=Date.now(),n=[];for(let[r,o]of this.tasks){if(o.state!=="paused")continue;t-(o.pausedAt||t)>Y_&&this.workerPool.getWorker(r)&&(this.workerPool.release(r),n.push(r))}return n}canCreateNewTask(t){if(t>Q_)return{allowed:!1,reason:`Too many Rover tabs open (${t}). Close some tabs to create new tasks.`};let n=this.workerPool.getActiveCount(),r=this.workerPool.getQueuedTasks().length;return n>=2&&r>=3?{allowed:!1,reason:"Maximum parallel tasks reached. Complete or cancel a task first."}:{allowed:!0}}shutdown(){this.workerPool.shutdown(),this.tasks.clear(),this.taskOrder=[],this.tabToTask.clear(),this.activeTaskId=void 0}};var J_=[/\/login/i,/\/signin/i,/\/auth/i,/\/oauth/i,/\/password/i,/\/reset/i,/\/verify/i,/\/confirm/i,/\/account/i,/\/security/i,/\/2fa/i,/\/mfa/i],Z_=[/data:/i,/javascript:/i,/vbscript:/i,/blob:/i],ek=[/token/i,/secret/i,/password/i,/apikey/i,/api_key/i,/access_token/i,/refresh_token/i,/session/i,/cookie/i,/credential/i],tk=/^(\d{1,3}\.){3}\d{1,3}$/;function Hu(e,t){let n=0,r=[],o;try{o=new URL(e)}catch{return{score:1,blocked:!1,reasons:["invalid_url"]}}for(let p of Z_)if(p.test(e)){n+=3,r.push("exfiltration_scheme");break}tk.test(o.hostname)&&(n+=2,r.push("ip_address_host")),o.hostname.split(".").length>4&&(n+=1,r.push("excessive_subdomains"));let i=J_.filter(p=>p.test(o.pathname)).length;i>=2?(n+=2,r.push("multiple_credential_paths")):i===1&&(n+=1,r.push("credential_path"));let c=Array.from(o.searchParams.keys()).filter(p=>ek.some(u=>u.test(p))).length;return c>0&&(n+=Math.min(2,c),r.push("sensitive_query_params")),e.length>2e3&&(n+=1,r.push("excessive_url_length")),(e.match(/%[0-9A-Fa-f]{2}/g)||[]).length>20&&(n+=1,r.push("excessive_encoding")),o.port&&o.port!=="80"&&o.port!=="443"&&(n+=1,r.push("non_standard_port")),{score:n,blocked:n>=3,reasons:r}}function wh(e,t){return Hu(e,t).blocked}var $s,Fc=null,Ki=!1,zn=32,Ws=4,nk="#6b6bff";function rk(){return document.querySelector('link[rel="icon"], link[rel="shortcut icon"]')}function Eh(){let e=document.createElement("link");return e.rel="icon",e.type="image/png",document.head.appendChild(e),e}function Ih(e=nk){if(Ki)return!0;try{let t=rk();t&&($s=t.href,Fc=t);let n=document.createElement("canvas");n.width=zn,n.height=zn;let r=n.getContext("2d");if(!r)return!1;let o=new Image;return o.crossOrigin="anonymous",o.onload=()=>{r.drawImage(o,0,0,zn,zn),r.beginPath(),r.arc(zn-Ws-1,zn-Ws-1,Ws,0,Math.PI*2),r.fillStyle=e,r.fill(),r.strokeStyle="#1a1a2e",r.lineWidth=1,r.stroke();let s=n.toDataURL("image/png"),i=t||Eh();i.href=s,Ki=!0},o.onerror=()=>{r.fillStyle="#1a1a2e",r.fillRect(0,0,zn,zn),r.fillStyle="#fff",r.font="bold 20px sans-serif",r.textAlign="center",r.textBaseline="middle",r.fillText("R",zn/2,zn/2),r.beginPath(),r.arc(zn-Ws-1,zn-Ws-1,Ws,0,Math.PI*2),r.fillStyle=e,r.fill();let s=n.toDataURL("image/png"),i=t||Eh();i.href=s,Ki=!0},$s?o.src=$s:o.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEAAAAALAAAAAABAAEAAAIBAAA=",!0}catch{return!1}}function xh(){if(Ki){Ki=!1;try{Fc&&$s&&(Fc.href=$s),$s=void 0,Fc=null}catch{}}}function Sh(e){if(e.crossRegistrableDomain&&!e.serverAvailable)return{decision:e.fallbackDecision,decisionReason:"preflight_unavailable_fallback",failSafeBlocked:!1};let t=e.serverDecision==="stale_run"?e.fallbackDecision:e.serverDecision||e.fallbackDecision;return{decision:t,decisionReason:t,failSafeBlocked:!1}}function Rh(e){let t=String(e.pendingRunText||"").trim();if(t)return t;let n=String(e.activeRunText||"").trim();if(n)return n;let r=String(e.rootWorkerInput||"").trim();if(r)return r;let o=String(e.lastUserInputText||"").trim();return o||String(e.fallback||"navigation request").trim()||"navigation request"}var ok=new Set(["co.uk","org.uk","gov.uk","ac.uk","com.au","net.au","org.au","co.jp","com.br","com.mx","com.sg","co.in"]);function Xi(e){let t=String(e||"").trim().toLowerCase();if(!t)return"";if(t==="localhost"||/^\d+\.\d+\.\d+\.\d+$/.test(t))return t;let n=t.split(".").filter(Boolean);if(n.length<2)return t;let r=`${n[n.length-2]}.${n[n.length-1]}`;return n.length>=3&&ok.has(r)?`${n[n.length-3]}.${r}`:r}function qu(e){let t=String(e||"").trim().toLowerCase();if(!t)return"";try{if(t.includes("://"))return new URL(t).hostname.toLowerCase();if(t.startsWith("//"))return new URL(`https:${t}`).hostname.toLowerCase()}catch{}return t.replace(/:\d+$/,"").replace(/[^a-z0-9.-]/g,"").replace(/^\.+/,"").replace(/\.+$/,"")}function Ah(e){let t=String(e||"").trim().toLowerCase();if(!t)return"";if(t==="*")return"*";let n=t.startsWith("="),r=!n&&t.startsWith("*."),o=n?t.slice(1):r?t.slice(2):t,s=qu(o);return s?n?`=${s}`:r?`*.${s}`:s:""}function sk(e,t){return e?t!=="host_only"||e==="*"||e.startsWith("=")||e.startsWith("*.")?e:`=${e}`:""}function ik(e,t){let n=Ah(t);if(!n)return!1;if(n==="*")return!0;if(n.startsWith("=")){let r=n.slice(1);return!!r&&e===r}if(n.startsWith("*.")){let r=n.slice(2);return r?e===r||e.endsWith(`.${r}`):!1}return e===n?!0:e.endsWith(`.${n}`)}function Ch(e){let t=qu(e.host||"");if(!t)return!1;let n=Array.isArray(e.allowedDomains)?e.allowedDomains.map(o=>Ah(o)).map(o=>sk(o,e.domainScopeMode)).filter(Boolean):[];if(n.length>0)return n.some(o=>ik(t,o));let r=qu(e.currentHost||"");return r?e.domainScopeMode==="host_only"?t===r:Xi(t)===Xi(r):!0}function Yi(e,t="tab_not_accessible"){let n=Number(e?.logicalTabId)||void 0,r=e?.url||"",o=e?.title||(e?.external?"External Tab (Inaccessible)":"Detached Runtime Tab (Unavailable)"),s=String(t||"").trim(),i=s?` Reason: ${s}.`:"",a=e?.external?`This external tab is tracked in virtual mode only. Live DOM control and accessibility-tree access are unavailable here.${i}`:`This tab is a detached runtime placeholder and is not attached to an active Rover runtime. Switch to an attached tab or reopen the page.${i}`;return{url:r,title:o,contentType:"text/html",content:a,metadata:{inaccessible:!0,external:!!e?.external,accessMode:e?.external?"external_placeholder":"detached_runtime_placeholder",roverAvailability:e?.roverAvailability||"unknown",reason:t,logicalTabId:n}}}function Qi(e,t,n="tab_not_accessible"){let r=Number(t?.logicalTabId)||0,o=t?.url||"",s=t?.external?`Tab ${r} is external to the active runtime and cannot be controlled directly.`:`Tab ${r} is not attached to an active Rover runtime.`,i=t?.external?"DOMAIN_SCOPE_BLOCKED":"TAB_NOT_ACCESSIBLE";return{success:!1,error:s,allowFallback:!0,output:{success:!1,error:{code:i,message:s,missing:[],next_action:t?.external?"Use open_new_tab for external context or continue on an in-scope tab.":"Switch to an active tab and retry.",retryable:!1},blocked_url:o||void 0,logical_tab_id:r||void 0,external:!!t?.external,policy_action:t?.external?e.externalNavigationPolicy||"open_new_tab_notice":void 0,reason:n},errorDetails:{code:i,message:s,retryable:!1,details:{logicalTabId:r,blockedUrl:o,external:!!t?.external,reason:n}}}}function ak(e){if(e.startNewTask||!e.hasAskUserAnswers||e.taskStatus!=="running")return!1;let t=Ce(e.pendingAskUserBoundaryId),n=Ce(e.currentTaskBoundaryId);return t&&n&&t!==n?!1:(Math.max(0,Number(e.pendingAskUserQuestionCount)||0)<=0,!0)}function Mh(e){return!ak(e)}var ck=new Set(["a","an","and","are","as","at","be","by","for","from","how","i","in","is","it","of","on","or","that","the","this","to","was","what","when","where","who","why","with","you","your"]);function Wu(e){return String(e||"").replace(/\s+/g," ").trim().slice(0,2e3)}function lk(e){if(!Array.isArray(e)||e.length===0)return[];let t=[];for(let n of e){if(!n||n.role!=="user"&&n.role!=="assistant")continue;let r=Wu(n.text);if(!r)continue;if(n.role==="user"){t.push({user:r,ts:Number(n.ts)||0});continue}if(!t.length)continue;let o=t[t.length-1];o.assistant||(o.assistant=r,o.ts=Math.max(o.ts,Number(n.ts)||0))}return t}function Nh(e){let t=String(e||"").toLowerCase().split(/[^a-z0-9]+/g).map(n=>n.trim()).filter(n=>n.length>=2&&!ck.has(n));return new Set(t)}function uk(e,t){let n=Nh(e),r=Nh(t);if(!n.size||!r.size)return 0;let o=0;for(let i of n)r.has(i)&&(o+=1);let s=n.size+r.size-o;return s<=0?0:o/s}function Lh(e){if(e.mode!=="heuristic_same_window")return{reason:"mode_disabled",overlap:0};let t=e.previousTaskStatus;if(t!=="completed"&&t!=="ended"&&t!=="cancelled")return{reason:"status_ineligible",overlap:0};let n=lk(e.previousTaskMessages),r=Wu(e.previousTaskUserInput),o=Wu(e.previousTaskAssistantOutput),s=n.length?n:r&&o?[{user:r,assistant:o,ts:Number(e.previousTaskCompletedAt)||0}]:[];if(!s.some(h=>h.user))return{reason:"missing_previous_intent",overlap:0};if(!s.some(h=>h.assistant))return{reason:"missing_previous_output",overlap:0};let i=Math.max(0,Number(e.previousTaskCompletedAt)||0),a=Math.max(i,Number(e.now)||Date.now()),c=Math.max(1e3,Number(e.ttlMs)||0);if(!i||a-i>c)return{reason:"ttl_expired",overlap:0};let d=Math.max(0,Math.min(1,Number(e.minLexicalOverlap)||0)),p=s.map((h,g)=>{let _=uk(h.user,e.currentPrompt),A=s.length>1?g/(s.length-1)*.05:.05;return{...h,overlap:_,score:_+A,index:g}}).filter(h=>!!h.assistant);if(!p.length)return{reason:"missing_previous_output",overlap:0};let u=p.filter(h=>h.overlap>=d).sort((h,g)=>g.score!==h.score?g.score-h.score:g.index-h.index).slice(0,2).sort((h,g)=>h.index-g.index),v=p.reduce((h,g)=>Math.max(h,g.overlap),0);return u.length?{reason:"attached",overlap:v,chatLog:u.flatMap(h=>[{role:"user",message:h.user},{role:"model",message:h.assistant||""}])}:{reason:"low_lexical_overlap",overlap:v}}var hd=2,ml="rover:runtime:",dk="rover:runtime-id:",jh="rover:visitor-id:",Jc=bt.uiMessages,Zc=bt.timelineEvents,gd=bt.uiMessages,fk=4,bd=bt.plannerHistory,vd=bt.prevSteps,pk=8e3,mk=12,hk=15*6e4,gk=2,bk=12e4,vk=.18,yk=30,Tk=3600*24*365,Gh=1,_k=3e3,kk=4500,wk=12e3,Ek=30,el=240,Dh=5*6e4,tl=100,nl=12,Ik=80,xk=200,Sk=700,Rk=8,Ak=240,Ck=48,Mk=2600,Nk=800,Lk=5e3,Dk="rover:handoff-bootstrap:",Kh=3e4,Ok=12e4,Pk=2500,Bk=2*6e4,Uk=45e3,Fk=2e4,ua=400,Hk=15e3,qk=7,Wk=80,$k=2500,Vk=250,vo=null,tt=null,Fe=null,X=null,M=null,un=null,Vr=null,l=null,jr=null,Je="",N=null,yt=null,Vc=null,_n=[],zc=!1,Ks=!1,Xh=0,Gu=0,Ku=0,rl=0,oa=!1,Gr=null,zk=1500,jk=5e3,Oh=1e4,Ph=1200,Yh=new Set(["error","navigation_guardrail","checkpoint_error","tab_event_conflict_exhausted","voice_error","voice_permission_denied"]),Gk=new Set(["ready","error","auth_required","navigation_guardrail","checkpoint_error","tab_event_conflict_exhausted","voice_error","voice_permission_denied"]),Ut,Ir,wo=!1,ts=!1,sa=null,ia=null,Rr=null,Xu="",ri=!1,zs="",lt="controller",Kn=!1,oi=!1,cr=!0,pr=!1,nn=!1,fn=!1,Er=!1,Yo=[],Kk=3,Bh=1e4,Me="",Tt=null,ct=null,dn=0,go=null,jc=!1,Yu=!1,Qu=!1,Ju=!1,To=[],Xs=null,Ys=null,js="",na="",bo=null,Qs=null;function Gc(e,t,n,r){e.addEventListener(t,n,r),To.push({target:e,event:t,handler:n,options:r}),To.length>100&&To.length%50===0&&Xk()}function Xk(){for(let e=To.length-1;e>=0;e--){let t=To[e],n=t.target;if(n&&"isConnected"in n&&n.isConnected===!1){try{t.target.removeEventListener(t.event,t.handler,t.options)}catch{}To.splice(e,1)}}}var ol=null,ra=0,_o=null,Js,Hc="",Kt,aa,ca=!1,Zs=null,rs,os,si=0,Yk=50,Qk=100,Jk=20,Zk=3e5;function Qh(e,t){for(;e.size>t;){let n=e.keys().next();if(n.done)break;e.delete(n.value)}}function ew(e,t){let n=e.values();for(;e.size>t;){let r=n.next();if(r.done)break;e.delete(r.value)}}var mo=new Map,lr=new Set,_e=null,rn,xr=0,zr=1,ga,sl="",G=null,tw=new Set(["run_started","run_state_transition","run_completed","assistant","status","tool_start","tool_result","runtime_tabs_diagnostics","auth_required","navigation_guardrail","error"]),Zu={read:"rover_external_read_context",act:"rover_external_act_context"},Kc=[],Xc=new Map,tn=new Map;function ze(e,t){ut(e,t);let n=Xc.get(e);if(n)for(let r of n)try{r(t)}catch{}}function Jh(e,t){Xc.has(e)||Xc.set(e,new Set);let n=Xc.get(e);return n.add(t),()=>{n.delete(t)}}function nw(e){return typeof e=="string"?{name:e}:e}function Xr(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function mr(){return Xr("task-boundary")}function Qr(e){if(!e||typeof e!="object")return;let t=typeof e.handoffId=="string"?e.handoffId.trim():"",n=typeof e.targetUrl=="string"?e.targetUrl.trim():"";if(!t||!n)return;let r=Number(e.sourceLogicalTabId);return{handoffId:t,targetUrl:n,sourceLogicalTabId:Number.isFinite(r)&&r>0?r:void 0,runId:typeof e.runId=="string"&&e.runId.trim()?e.runId.trim():void 0,createdAt:Number(e.createdAt)||Date.now(),consumed:e.consumed===!0}}function Zh(e){if(e)return{handoffId:e.handoffId,targetUrl:e.targetUrl,sourceLogicalTabId:e.sourceLogicalTabId,runId:e.runId,ts:e.createdAt}}function $u(e){return{handoffId:e.handoffId,targetUrl:e.targetUrl,sourceLogicalTabId:e.sourceLogicalTabId,runId:e.runId,createdAt:Number(e.ts)||Date.now(),consumed:!1}}function ss(e){let t=typeof e?.pendingRun?.taskBoundaryId=="string"?e.pendingRun.taskBoundaryId:void 0;if(t)return Ce(t);let n=typeof e?.workerState?.taskBoundaryId=="string"?e.workerState.taskBoundaryId:void 0;if(n)return Ce(n)}function rw(e){let t=ss(e);return t||mr()}function kn(){return Ce(Me)||ss(l)}function ns(e){let t=oh({source:e.source,incomingBoundaryId:e.incomingBoundaryId,currentBoundaryId:kn(),taskEpochAdvanced:e.taskEpochAdvanced,hasPendingRun:!!l?.pendingRun,taskStatus:l?.activeTask?.status,allowBootstrapAdoption:e.allowBootstrapAdoption});return t.accept?(t.adoptedBoundaryId&&(Me=t.adoptedBoundaryId),!0):!1}function yd(e=12e4){let t=Qr(l?.lastNavigationHandoff);if(!t||t.consumed===!0)return;let n=Date.now()-Number(t.createdAt||0);if(!(!Number.isFinite(n)||n<-5e3||n>e))return t}function eg(e){return e==="agent_navigation"||e==="cross_host_navigation"||e==="handoff"||e==="worker_interrupted"||e==="page_reload"}function ow(e){if(!l||!eg(e.resumeReason))return!1;let t=Qr(l.lastNavigationHandoff);if(!t?.targetUrl)return!1;let n=Date.now()-Number(t.createdAt||0);return!Number.isFinite(n)||n<-5e3||n>12e4?!1:Cu(t.targetUrl,window.location.href)}function sw(e){if(!Er||!eg(e.resumeReason))return!1;let t=Qr(l?.lastNavigationHandoff);if(!t)return!1;let n=Date.now()-Number(t.createdAt||0);return Number.isFinite(n)&&n>=-5e3&&n<=Kh}function ii(e){let t=Ze(l?.pendingRun)?.taskBoundaryId;if(t){Me=t;return}let n=Ft(l?.workerState)?.taskBoundaryId;if(n){Me=n;return}(!Me||e?.rotateIfMissing)&&(Me=mr())}function iw(e){let t=`${dk}${e}`;try{let n=window.sessionStorage.getItem(t);if(n&&n.trim())return n.trim();let r=Xr("runtime");return window.sessionStorage.setItem(t,r),r}catch{return Xr("runtime")}}function da(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function qc(e){return String(e||"").trim().replace(/[^a-zA-Z0-9._:-]/g,"").slice(0,180)}function tg(e){try{let t=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`));return t?decodeURIComponent(t[1]||""):void 0}catch{return}}function Uh(e,t,n){try{let r=n?`; domain=${n}`:"";return document.cookie=`${e}=${encodeURIComponent(t)}; path=/; max-age=${Tk}; samesite=lax${r}`,tg(e)===t}catch{return!1}}function aw(e){let t=String(e||"").trim().toLowerCase();if(!t||t==="localhost"||/^\d{1,3}(\.\d{1,3}){3}$/.test(t))return[];let n=t.split(".").filter(Boolean);if(n.length<2)return[];let r=[];for(let o=n.length-2;o>=0;o-=1)r.push(`.${n.slice(o).join(".")}`);return r}function cw(e,t){let n=`rover_vid_${da(e)}`;for(let r of aw(window.location.hostname))if(Uh(n,t,r))return;Uh(n,t)}function Wc(e,t){let n=`${jh}${e}`;try{window.localStorage.setItem(n,t)}catch{}try{window.sessionStorage.setItem(n,t)}catch{}cw(e,t)}function ng(e,t){l&&(l.visitor=t,Ie());try{localStorage.setItem(`rover:visitor:${e}`,JSON.stringify(t))}catch{}}function lw(e){if(l?.visitor?.name||l?.visitor?.email)return l.visitor;try{let t=localStorage.getItem(`rover:visitor:${e}`);return t?JSON.parse(t):void 0}catch{return}}function rg(e){let t=qc(e.visitorId||"");if(t)return t;if(e.checkpointing?.autoVisitorId===!1)return;let n=`${jh}${e.siteId}`,r=`rover_vid_${da(e.siteId)}`,o=qc(tg(r)||"");if(o)return Wc(e.siteId,o),o;try{let i=qc(window.localStorage.getItem(n)||"");if(i)return Wc(e.siteId,i),i}catch{}try{let i=qc(window.sessionStorage.getItem(n)||"");if(i)return Wc(e.siteId,i),i}catch{}let s=`v_${da(`${e.siteId}:${Xr("visitor")}`)}_${Date.now().toString(36)}`;return Wc(e.siteId,s),s}function Fh(e,t){return`visitor-${da(`${e}:${t}`)}`}function og(e){!tt||!Fe||(tt.registerTool(e.def,e.handler),Fe.postMessage({type:"register_tool",tool:e.def}))}function ei(e){return`${ml}${e}`}function Yc(e,t){let n=String(t||"").trim();return n?`${ml}${e}:${da(n)}`:ei(e)}function ed(e){return`${ml}${e}:latest_key`}function uw(e){try{let t=String(sessionStorage.getItem(ed(e))||"").trim();return!t||!t.startsWith(ml)?void 0:t}catch{return}}function td(e,t){if(e)try{if(!t){sessionStorage.removeItem(ed(e));return}sessionStorage.setItem(ed(e),t)}catch{}}function Td(e){return`${Dk}${e}`}function dw(e,t){try{sessionStorage.setItem(Td(e),JSON.stringify(t))}catch{}}function fw(e){try{let t=Td(e),n=sessionStorage.getItem(t);if(!n)return;sessionStorage.removeItem(t);let r=JSON.parse(n),o=Number(r?.ts)||0;return!r?.runId||!o||Date.now()-o>Kh?void 0:{runId:String(r.runId),text:typeof r.text=="string"?r.text:void 0,taskBoundaryId:typeof r.taskBoundaryId=="string"&&r.taskBoundaryId.trim()?r.taskBoundaryId.trim():void 0,resumeReason:r.resumeReason==="cross_host_navigation"||r.resumeReason==="agent_navigation"||r.resumeReason==="handoff"||r.resumeReason==="page_reload"?r.resumeReason:void 0,handoffId:typeof r.handoffId=="string"?r.handoffId:void 0,openIntent:r.openIntent==="preserve_if_running"?"preserve_if_running":void 0,ts:o}}catch{return}}function sg(e){if(e)try{sessionStorage.removeItem(Td(e))}catch{}}function Hh(e){let t=typeof e?.runId=="string"&&e.runId.trim()?e.runId.trim():void 0,n=typeof e?.taskId=="string"&&e.taskId.trim()?e.taskId.trim():void 0;if(!t&&!n){Js=void 0;return}Js={runId:t,taskId:n,expiresAt:Date.now()+Math.max(1e3,Number(e?.ttlMs)||Ok)}}function is(){Js=void 0}function _d(e){let t=Js;if(!t)return!1;if(t.expiresAt<=Date.now())return Js=void 0,!1;let n=String(e?.activeTask?.status||"").trim();if(n&&n!=="running")return Js=void 0,!1;let r=String(t.runId||"").trim(),o=String(t.taskId||"").trim(),s=String(e?.pendingRun?.id||"").trim(),i=String(e?.activeTask?.taskId||"").trim();return!(r&&s&&r!==s&&(!o||!i||o!==i)||o&&i&&o!==i)}function ba(e){e&&_d(e)&&(e.uiHidden=!1,e.uiOpen=!0)}function pn(e="session_start",t=Date.now(),n){return{taskId:n||Xr("task"),status:"running",startedAt:t,lastUserAt:void 0,lastAssistantAt:void 0,boundaryReason:e,endedAt:void 0}}function nd(e,t){return{version:hd,sessionId:e,runtimeId:t,uiOpen:!1,uiHidden:!1,uiStatus:void 0,transientStatus:void 0,uiMessages:[],timeline:[],executionMode:"controller",workerState:void 0,pendingRun:void 0,lastNavigationHandoff:void 0,taskEpoch:1,activeTask:pn(),taskTabScope:void 0,lastRoutingDecision:void 0,updatedAt:Date.now(),tasks:{},activeTaskId:void 0,taskOrder:[]}}function on(e,t=pk){return e.length<=t?e:`${e.slice(0,t)}\u2026`}function Qc(e){if(e!=null){if(typeof e=="string")return on(e,1200);try{return on(JSON.stringify(e),1200)}catch{try{return on(String(e),1200)}catch{return}}}}function hl(e){let t=e?.telemetry,n=Number(t?.sampleRate),r=Number.isFinite(n)?Math.min(1,Math.max(0,n)):1,o=Number(t?.flushIntervalMs),s=Number.isFinite(o)?Math.min(6e4,Math.max(2e3,Math.floor(o))):wk,i=Number(t?.maxBatchSize),a=Number.isFinite(i)?Math.min(80,Math.max(1,Math.floor(i))):Ek;return{enabled:t?.enabled!==!1,sampleRate:r,flushIntervalMs:s,maxBatchSize:a,includePayloads:t?.includePayloads===!0}}function gl(e){return e==="same_tab"||e==="open_new_tab"?e:"same_tab"}function fa(e){return e==="host_only"?"host_only":"registrable_domain"}function va(e,t){return e==="observer"?"This tab is in observer mode because another tab currently holds Rover action control.":t?"Controller tab ready for actions.":"Actions are disabled by configuration (allowActions=false)."}function kd(e){return e==="auto"||e==="confirm"||e==="never"?e:"confirm"}function ig(e){return"host_session"}function ag(e){return"task_touched_only"}function wd(e){return"crash_only"}function il(e){let t=Number(e);return Number.isFinite(t)?Math.max(6e4,Math.min(30*6e4,Math.floor(t))):hk}function Ed(e){return"read_only"}function cg(e){return"heuristic_same_window"}function Id(e){let t=Number(e);return Number.isFinite(t)?Math.max(1e4,Math.min(10*6e4,Math.floor(t))):bk}function xd(e){let t=Number(e);return Number.isFinite(t)?Math.max(.05,Math.min(.9,t)):vk}function lg(e){return"empty"}function ug(e){return"deterministic_cues"}function dg(e){let t=Number(e);return Number.isFinite(t)?Math.max(1,Math.min(4,Math.floor(t))):gk}function fg(e){return"auto"}function pg(e){return!1}function mg(e){return"pre_tool_block"}function pw(){return Rh({pendingRunText:l?.pendingRun?.text,activeRunText:N?.getState()?.activeRun?.text,rootWorkerInput:l?.workerState?.rootUserInput,lastUserInputText:Kt,fallback:"navigation request"})}function hg(e){return e!==!1}function Bt(e,t,n){let r=Number(e);if(Number.isFinite(r))return Math.max(t,Math.min(n,Math.floor(r)))}function Sd(e){return"on_demand"}function Rd(e){let t=Number(e);return Number.isFinite(t)?Math.max(5e3,Math.min(12e4,Math.floor(t))):Pp.idleCloseMs}function ai(e,t){let n=Number(e);return Number.isFinite(n)?Math.max(32768,Math.min(2097152,Math.floor(n))):t}function Ad(e){return!(!e||!hl(e).enabled||!Xn(e))}function qh(e){if(e!=null){if(typeof e=="string")return on(e,260);if(typeof e=="number"||typeof e=="boolean")return e;if(Array.isArray(e))return{type:"array",length:e.length};if(typeof e=="object"){let n={type:"object",keys:Object.keys(e).slice(0,20)},r=["code","message","stage","status","reason","taskId","runId","policyAction"];for(let o of r){let s=e?.[o];s!=null&&(typeof s=="string"?n[o]=on(s,180):(typeof s=="number"||typeof s=="boolean")&&(n[o]=s))}return n}}}function mw(e,t){if(!t)return qh(e);let n=Nd(e);if(n!=null)return typeof n=="string"?on(n,1e3):typeof n=="number"||typeof n=="boolean"?n:Array.isArray(n)?{type:"array",length:n.length}:typeof n=="object"?n:qh(e)}function Cd(){Vc&&(clearInterval(Vc),Vc=null),Gr&&(clearTimeout(Gr),Gr=null),oa=!1}function hw(e){return`${Oc(e.apiBase)}/telemetry/ingest`}function al(e){let t=e||M,n=String(t?.publicKey||"").trim();if(n.startsWith("pk_site_"))return n;let r=String(t?.authToken||"").trim();return r.startsWith("pk_site_")?r:""}function Xn(e){if(rn&&xr>Date.now()+2e3)return rn;try{let r=M?.siteId||e?.siteId||"";if(r){let o=sessionStorage.getItem(`rover:sess:${r}`);if(o){let{t:s,e:i}=JSON.parse(o);if(s&&typeof s=="string"&&s.startsWith("rvrsess_")&&Number(i)>Date.now()+2e3)return rn=s,xr=Number(i),s}}}catch{}let t=e||M,n=String(t?.sessionToken||t?.authToken||"").trim();return n.startsWith("rvrsess_")?n:""}function cl(e,t){let n=String(e||"").trim();rn=n||void 0,xr=Number(t)>0?Number(t):0;try{let r=M?.siteId||"";n&&xr>Date.now()?sessionStorage.setItem(`rover:sess:${r}`,JSON.stringify({t:n,e:xr})):sessionStorage.removeItem(`rover:sess:${r}`)}catch{}}function gw(e){!e||!M||(M.externalNavigationPolicy=e.externalNavigationPolicy||M.externalNavigationPolicy,e.domainScopeMode&&(M.domainScopeMode=fa(e.domainScopeMode)),(e.crossHostPolicy==="open_new_tab"||e.crossHostPolicy==="same_tab")&&(M.navigation={...M.navigation||{},crossHostPolicy:gl(e.crossHostPolicy)}),M.tools||(M.tools={}),M.tools.web||(M.tools.web={}),M.tools.web.enableExternalWebContext=e.enableExternalWebContext??M.tools.web.enableExternalWebContext,M.tools.web.scrapeMode=e.externalScrapeMode??M.tools.web.scrapeMode,Array.isArray(e.externalAllowDomains)&&(M.tools.web.allowDomains=e.externalAllowDomains),Array.isArray(e.externalDenyDomains)&&(M.tools.web.denyDomains=e.externalDenyDomains))}function rd(e){if(!l||!e)return;zr=Math.max(1,Number(e.epoch||zr));let t=typeof e.activeRunId=="string"?e.activeRunId:"",n=String(e.runStatus||"").trim().toLowerCase();lh({serverRunId:t,runStatus:n,ignoredRunIds:lr})&&Eo(t,"projection_ignored_active_run",{attemptImmediately:!0}),ko(t||void 0);let r=l.pendingRun,o=r?.id||"";!t&&o?(n==="completed"||n==="cancelled"||n==="failed"||n==="ended"||l.activeTask?.status!=="running")&&(So(o),It(void 0),N?.setActiveRun(void 0)):t&&!Cr()&&ya(lt)!=="observer"&&ch({serverRunId:t,localPendingRunId:o,ignoredRunIds:lr})?It({id:t,text:r?.text||"",startedAt:r?.startedAt||Date.now(),attempts:r?.attempts||0,autoResume:!0,taskBoundaryId:r?.taskBoundaryId||Me,resumeRequired:r?.resumeRequired===!0,resumeReason:r?.resumeReason}):t&&lr.has(t)&&o===t&&(N?.releaseWorkflowLock(t),It(void 0),N?.setActiveRun(void 0));let s=String(e.snapshotMeta?.digest||"").trim()||(Number.isFinite(Number(e.snapshotMeta?.updatedAt))?`u:${Math.max(0,Number(e.snapshotMeta?.updatedAt||0))}`:Number.isFinite(Number(e.snapshotUpdatedAt))?`u:${Math.max(0,Number(e.snapshotUpdatedAt||0))}`:""),i=s?`${e.sessionId}:${s}`:"";if(e.snapshot&&typeof e.snapshot=="object"&&(!i||i!==sl)){let c=e.snapshot?.runtimeState,d=e.snapshot?.sharedState;if(c&&typeof c=="object"){ri=!0;try{Fg({version:Gh,siteId:M?.siteId||l.sessionId,visitorId:Ut||"server_projection",sessionId:l.sessionId,updatedAt:Number(e.snapshot?.updatedAt)||Date.now(),runtimeState:c,sharedState:d})}finally{ri=!1}i&&(sl=i)}}let a=String(l?.pendingRun?.id||"").trim();a&&lr.has(a)&&(N?.releaseWorkflowLock(a),It(void 0),N?.setActiveRun(void 0)),ll()}async function Md(e){if(!(!l||!e.apiBase&&!e.publicKey&&!e.authToken&&!e.sessionToken||!al(e)&&!rn)){_e?_e.setApiBase(e.apiBase):_e=new Bc({apiBase:e.apiBase,siteId:e.siteId,getSessionId:()=>l?.sessionId,getBootstrapToken:()=>al(M),getHost:()=>window.location.hostname,getPageUrl:()=>window.location.href,getTaskBoundaryId:()=>Me,shouldKeepTransportActive:()=>!ci(),onSession:n=>{if(cl(n.sessionToken,n.sessionTokenExpiresAt),cr&&N?.broadcastSessionToken(n.sessionToken||"",n.sessionTokenExpiresAt||0),zr=Math.max(1,Number(n.epoch||zr)),l&&n.sessionId&&l.sessionId!==n.sessionId&&(l.sessionId=n.sessionId,sl="",Ie()),gw(n.policy),n.siteConfig&&typeof n.siteConfig=="object"&&M){let r={shortcuts:xo(n.siteConfig.shortcuts),greeting:fi(n.siteConfig.greeting),voice:di(n.siteConfig.voice),limits:El(n.siteConfig.limits),pageConfig:Kr(n.siteConfig.pageConfig),version:n.siteConfig.version!=null?String(n.siteConfig.version):void 0};Rr=r,Hg(M.siteId,r),fl(M)}n.projection&&rd(n.projection),Fe&&Fe.postMessage({type:"update_config",config:{...ls(),pageConfig:ma(M),publicKey:void 0,sessionToken:rn,authToken:Xn(M),sessionId:l?.sessionId,activeRunId:l?.pendingRun?.id,sessionEpoch:_e?.getEpoch?.()??zr,sessionSeq:_e?.getLastSeq?.()??0}}),tt&&tt.setNavigationPolicy({allowedDomains:M?.allowedDomains,domainScopeMode:M?.domainScopeMode,externalNavigationPolicy:M?.externalNavigationPolicy,crossHostPolicy:M?.navigation?.crossHostPolicy}),M&&(Fd(M),bl(M)),oi=!0,Sr(),ll()},onProjection:n=>{rd(n),cr&&N?.broadcastProjection(n),ll(),Fe&&Fe.postMessage({type:"update_config",config:{...ls(),pageConfig:ma(M),sessionToken:rn,authToken:Xn(M),sessionId:l?.sessionId,activeRunId:l?.pendingRun?.id,sessionEpoch:_e?.getEpoch?.()??zr,sessionSeq:_e?.getLastSeq?.()??0}})},onError:n=>{ut("error",{message:n?.message||"server runtime sync failed",scope:"server_runtime"})}});try{await _e.start()}catch(n){M?.apiMode!==!1&&ze("error",{message:n?.message||"server runtime sync failed",scope:"server_runtime_start"})}}}async function Zo(e=!1){if(zc||Ks)return;if(!M||!Ad(M)){_n=[];return}if(!e&&ci()||!_n.length)return;let t=hl(M),n=Xn(M);if(!n)return;let r=_n.splice(0,t.maxBatchSize);if(r.length){zc=!0,rl=Date.now();try{let o=await fetch(hw(M),{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify({sessionToken:n,sessionId:l?.sessionId,runId:l?.pendingRun?.id,siteId:M.siteId,runtimeId:Je,visitorId:Ut,flushReason:e?"manual":"interval",sdkVersion:"rover_sdk_v1",pageUrl:window.location.href,userAgent:navigator.userAgent,sampleRate:t.sampleRate,events:r})});if(!o.ok){o.status===401||o.status===403?Ks=!0:_n=[...r,..._n].slice(-el);return}let s=await o.json().catch(()=>{});if(s?.success===!1){let i=String(s?.errorCode||s?.errorDetails?.code||"").toUpperCase();(i==="INVALID_API_KEY"||i==="MISSING_API_KEY"||i==="UNAUTHENTICATED"||i==="PERMISSION_DENIED")&&(Ks=!0);return}}catch{_n=[...r,..._n].slice(-el)}finally{zc=!1}}}function bl(e){if(Cd(),Ks=!1,!Ad(e)){_n=[];return}let t=hl(e);Vc=setInterval(()=>{Zo(!1)},t.flushIntervalMs)}function ut(e,t){if(!Ad(M)||Ks||ci()&&!Gk.has(e))return;let n=hl(M);if(n.sampleRate<1&&Math.random()>n.sampleRate)return;let r=Date.now();if(e==="status"){if(!String(t?.event||"").trim().startsWith("deep_link_")){if(r-Gu<zk)return;Gu=r}}else if(e==="checkpoint_state"){if(r-Ku<jk)return;Ku=r}let o={name:e,ts:r,seq:++Xh,payload:mw(t,n.includePayloads)};if(_n.push(o),_n.length>el&&(_n=_n.slice(-el)),Yh.has(e)){let i=Date.now()-rl;if(i>=Ph){Zo(!1);return}Gr||(Gr=setTimeout(()=>{Gr=null,Zo(!1)},Ph-i));return}if(_n.length>=n.maxBatchSize){let i=Date.now()-rl;i>=Oh?Zo(!1):oa||(oa=!0,setTimeout(()=>{oa=!1,Zo(!1)},Oh-i))}}function bw(e,t){ut(e,t)}function vw(e){if(e==="analyze"||e==="route"||e==="execute"||e==="verify"||e==="complete")return e}function yw(e){return e?e==="analyze"?"Analyze":e==="route"?"Route":e==="execute"?"Execute":e==="verify"?"Verify":e==="complete"?"Complete":"Status":"Status"}function Tw(e,t,n){return[String(t||""),String(e||"").trim().toLowerCase(),String(n||"").trim().toLowerCase()].join("|")}function _w(e,t){if(!e)return!0;let n=e.trim();return!!(t&&n.toLowerCase()===t.trim().toLowerCase()||/^complexity score\b/i.test(n)||/\btool loop$/i.test(n)||/^calling \w[\w\s]*(workflow|sub-agent)$/i.test(n))}function kw(){return l?.pendingRun?.id}function ko(e){ga=String(e||"").trim()||void 0}function Wh(){let e=l?.pendingRun?.id;if(!e)return;if(!_e)return e;let t=_e.getActiveRunId(),n=String(t||ga||"").trim();if(n)return n===e?e:void 0}function So(e){e&&(lr.add(e),ew(lr,Qk))}function od(e){e&&lr.delete(e)}function sd(e){let t=Math.max(0,Math.floor(e)),n=ua*2**t;return Math.max(120,Math.min(Hk,n))}function ww(){if(!tn.size)return null;let e=Number.POSITIVE_INFINITY;for(let t of tn.values())e=Math.min(e,Number(t.nextAttemptAt)||Number.POSITIVE_INFINITY);return Number.isFinite(e)?Math.max(120,Math.floor(e-Date.now())):null}function id(e=ua){go&&(clearTimeout(go),go=null);let t=Math.max(80,Math.floor(e));go=setTimeout(()=>{go=null,ll()},t)}function Eo(e,t="local_run_abandoned",n){let r=String(e||"").trim();if(!r)return;let o=Date.now(),s=tn.get(r),i=n?.attemptImmediately===!0?o:s?.nextAttemptAt&&s.nextAttemptAt>o?s.nextAttemptAt:o+sd(s?.attempts||0);for(tn.set(r,{runId:r,reason:String(t||s?.reason||"local_run_abandoned").trim()||"local_run_abandoned",attempts:s?.attempts||0,nextAttemptAt:i,createdAt:s?.createdAt||o,lastError:s?.lastError});tn.size>Wk;){let a=Array.from(tn.values()).sort((c,d)=>Number(c.createdAt)-Number(d.createdAt))[0];if(!a?.runId)break;tn.delete(a.runId)}id(n?.attemptImmediately?50:ua)}async function ll(){if(jc||!tn.size)return;if(!(!!_e&&!!oi&&!!Xn(M))){id(ua);return}jc=!0;try{let t=Date.now(),n=Array.from(tn.values()).sort((r,o)=>Number(r.nextAttemptAt)-Number(o.nextAttemptAt));for(let r of n){if(r.nextAttemptAt>t)break;if(!tn.has(r.runId))continue;if(Pd(r.runId)){tn.set(r.runId,{...r,nextAttemptAt:Date.now()+sd(Math.max(1,r.attempts))});continue}let o=_e;if(!o){tn.set(r.runId,{...r,nextAttemptAt:Date.now()+ua});continue}try{if(await o.controlRun({action:"cancel",runId:r.runId,reason:r.reason})){tn.delete(r.runId);continue}throw new Error("cancel_control_no_response")}catch(s){let i=Math.max(0,Number(r.attempts||0))+1;if(i>=qk){tn.delete(r.runId),ze("error",{message:`Failed to cancel stale run ${r.runId} after retries.`,scope:"run_cancel_repair",code:"RUN_CANCEL_REPAIR_FAILED",runId:r.runId});continue}tn.set(r.runId,{...r,attempts:i,lastError:String(s?.message||"cancel_control_failed"),nextAttemptAt:Date.now()+sd(i)})}}}finally{jc=!1;let t=ww();t!=null&&id(t)}}function ho(){return l?.activeTask?.status==="running"}function gg(){yt&&(ho()||ad()?yt.enterActiveMode():yt.enterIdleMode())}function Ew(){return typeof document<"u"&&document.visibilityState==="hidden"}function ad(){return!!l?.pendingRun?.id}function Iw(){let e=N?.getState()?.activeRun;if(!e)return!1;if(e.runtimeId)return e.runtimeId===Je;let t=String(l?.pendingRun?.id||"").trim();return!!(t&&e.runId===t)}function xw(){let e=N?.getWorkflowLockInfo();return!!(e?.locked&&e.holderRuntimeId===Je)}function bg(){return N?xw()||Iw()?!0:ad()&&!Cr():ho()||ad()}function Sw(){return Sd(M?.transport?.activation)!=="on_demand"?!0:!!(l?.uiOpen||bg()||vg()||yg())}function ci(){if(!cr)return!0;if(Sw())ra=0;else{let t=Rd(M?.transport?.idleCloseMs);return ra<=0&&(ra=Date.now()+t),!(Date.now()<ra)}return Ew()?!bg()&&!l?.uiOpen:!1}function hr(e=!1){if(typeof window>"u")return;let t=ci();if(!(!e&&ol===t)){ol=t;try{let n=window.rtrvrAISetObserverPaused;typeof n=="function"&&n(t)}catch{}}}function vg(){let e=N?.getState()?.activeRun;return!!(e&&e.runtimeId&&e.runtimeId!==Je)}function yg(){let e=N;if(!e?.isWorkflowLocked())return!1;let t=e.getWorkflowLockInfo();if(!t.locked||!t.holderRuntimeId||t.holderRuntimeId===Je)return!1;let n=e.listTabs({scope:"all"}).find(r=>r.runtimeId===t.holderRuntimeId);return n?Number(n.updatedAt)>Date.now()-5e3:!1}function Cr(){return yg()}function ya(e){return Cr()?"observer":e==="observer"?"controller":e}function Tg(){return Ed(M?.task?.observerInput)==="read_only"?!Cr():!vg()}function _g(e){if(e==="observer")return Cr()?"Observing active run in another tab...":"Send to take control and run here."}function Rw(){if(!N)return!1;let e=N.getState(),t=e?.activeRun,n=String(t?.runId||"").trim(),r=String(t?.text||"").trim();if(!N.requestControl())return!1;if(!n)return!0;if(!N.acquireWorkflowLock(n,{force:!0}))return!1;if(!l)return!0;let i=ur(Ft(e?.workerContext),kn());return i&&(l.workerState=i,ii(),N.setWorkerContext(_a(l.workerState)),Kn&&Fe&&(Gn(),Fe.postMessage({type:"hydrate_state",state:l.workerState}),ze("context_restored",{source:"controller_handoff",ts:Date.now()}))),e?.task&&(l.activeTask=Ig(e.task,l.activeTask||pn("handoff"))),l.uiHidden=!1,l.uiOpen=!0,(r||n)&&(It(Ze({id:n,text:r||l.pendingRun?.text||Kt||"Continue task",startedAt:t?.startedAt||l.pendingRun?.startedAt||Date.now(),attempts:l.pendingRun?.id===n&&l.pendingRun.attempts||0,autoResume:!0,taskBoundaryId:l.pendingRun?.taskBoundaryId||l.workerState?.taskBoundaryId||Me,resumeRequired:!0,resumeReason:"handoff"})),N.setActiveRun({runId:n,text:r||l.pendingRun?.text||"Continue task"})),Ie(),Sr({overridePolicyAction:"auto_resume"}),!0}function Aw(e){let t=typeof e?.type=="string"?e.type:"";if(!tw.has(t))return!1;let n=typeof e?.runId=="string"&&e.runId?e.runId:void 0,r=typeof e?.taskBoundaryId=="string"&&e.taskBoundaryId?e.taskBoundaryId:void 0,o=String(_e?.getActiveRunId()||ga||"").trim()||void 0;return dh({type:t,messageRunId:n,messageTaskBoundaryId:r,currentTaskBoundaryId:kn(),pendingRunId:kw(),sharedActiveRunId:N?.getState()?.activeRun?.runId,authoritativeActiveRunId:o,taskStatus:l?.activeTask?.status,ignoredRunIds:lr})}function Yr(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r=0;r<e.length;r+=1){let o=e[r];if(!o||typeof o!="object")continue;let s=String(o.key||o.id||"").trim()||`clarification_${r+1}`,i=String(o.query||o.question||"").trim();if(!i)continue;let a=typeof o.required=="boolean",c=typeof o.optional=="boolean",d=a?!!o.required:c?!o.optional:!0,p=`${s}::${i}`.toLowerCase();if(n.has(p))continue;n.add(p);let u={key:s,query:i,...typeof o.id=="string"&&o.id.trim()?{id:o.id.trim()}:{},...typeof o.question=="string"&&o.question.trim()?{question:o.question.trim()}:{},...Array.isArray(o.choices)?{choices:o.choices}:{}};d||(u.required=!1),t.push(u)}return t.slice(0,6)}function Cw(e,t){let n=String(e||"").trim();if(n)return n;if(!t||typeof t!="object")return"";let r=t.answersByKey&&typeof t.answersByKey=="object"?t.answersByKey:{},o=Yr(l?.workerState?.pendingAskUser?.questions),i=(Array.isArray(t.keys)?t.keys:[]).map(d=>String(d||"").trim()).filter(Boolean);if(i.length===0)for(let d of o){let p=String(d.key||"").trim();p&&i.push(p)}if(i.length===0)for(let d of Object.keys(r)){let p=String(d||"").trim();p&&i.push(p)}let a=[],c=new Set;for(let d of i){let p=String(d||"").trim();if(!p||c.has(p))continue;c.add(p);let u=String(r[p]||"").trim();a.push(`${p}: ${u||"(no answer provided)"}`)}return a.length>0?a.join(`
|
|
2096
|
+
`):String(t.rawText||"").trim()}function Mw(e){let t=String(G?.getActiveTask()?.rootUserInput||"").trim();if(t)return t;let n=String(l?.workerState?.rootUserInput||"").trim();if(n)return n;let r=l?.pendingRun,o=r&&r.id===e?String(r.text||"").trim():"";if(o)return o;let s=String(r?.text||"").trim();return s||String(Kt||"").trim()||void 0}function Nw(e){if(!e||typeof e!="object")return{taskComplete:!1,needsUserInput:!1,terminalState:"in_progress",contextResetRecommended:!1};let t=String(e.terminalState||"").trim().toLowerCase(),n=e.needsUserInput===!0,r=t==="waiting_input"||t==="in_progress"||t==="completed"||t==="failed"?t:n?"waiting_input":e.taskComplete===!0?"completed":e.ok===!1?"failed":"in_progress",o=r==="completed"||e.taskComplete===!0&&r!=="waiting_input",s=Yr(e.questions),i=String(e.continuationReason||"").trim().toLowerCase(),a=i==="loop_continue"||i==="same_tab_navigation_handoff"||i==="awaiting_user"?i:r==="waiting_input"?"awaiting_user":r==="in_progress"?"loop_continue":void 0;return{taskComplete:o,needsUserInput:r==="waiting_input"||n,terminalState:r,contextResetRecommended:e.contextResetRecommended===!0||r==="completed",continuationReason:a,...s.length?{questions:s}:{}}}function Lw(e){return jr?jr.readSync(e):null}function Nd(e){if(e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean")return e;try{return structuredClone(e)}catch{try{return JSON.parse(JSON.stringify(e))}catch{return}}}function Io(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!n||typeof n!="object")continue;let r=n.type;if(r==="text"){let o=String(n.text||"");if(!o)continue;t.push({type:"text",text:o});continue}(r==="tool_output"||r==="json")&&t.push({type:r,data:Nd(n.data),label:typeof n.label=="string"?n.label:void 0,toolName:typeof n.toolName=="string"?n.toolName:void 0})}return t.length?t:void 0}function $h(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=Object.entries(e).filter(([,s])=>s!=null);if(t.length!==1)return!1;let[n,r]=t[0];return typeof r!="string"||!r.trim()?!1:new Set(["response","message","summary","text","content","result","description"]).has(n)}function Dw(e,t){if(e==null)return!1;if(typeof e=="string"){let n=e.trim();return n?!t||n!==t.trim():!1}if(Array.isArray(e)){let n=e.filter(r=>r!=null);if(n.length===1){let r=n[0];if(typeof r=="string"||typeof r=="number"||typeof r=="boolean"||$h(r))return!1}return!0}return!$h(e)}function kg(e){if(!Array.isArray(e)||!e.length)return;let t=e.filter(r=>r.type==="text").map(r=>String(r.text||"").trim()).filter(Boolean);if(t.length)return t.join(`
|
|
1955
2097
|
|
|
1956
|
-
`);let n=e.find(r=>r.type==="tool_output"||r.type==="json");if(n){if(typeof n.data=="string"&&n.data.trim())return n.data.trim();if(typeof n.data=="number"||typeof n.data=="boolean")return String(n.data)}}function XT(e){if(e==null)return;let t=typeof e=="object"&&e!==null?e:void 0,n=t?.output??t?.generatedContentRef??t?.schemaHeaderSheetInfo??e,r=Um(lo([{type:"tool_output",data:n}]));if(GT(n,r))return lo([{type:"tool_output",label:typeof t?.name=="string"?`${t.name} output`:"Tool output",data:n}])}function Fn(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t}function KT(e){if(!e||typeof e!="object")return[];let t=e,n=[Fn(t.tab_id),Fn(t.logical_tab_id),Fn(t.tabId),Fn(t.logicalTabId)].filter(r=>!!r);return An(n)}function YT(e){if(!e||typeof e!="object")return[];let t=e,n=t.output&&typeof t.output=="object"?t.output:void 0,r=[Fn(t.tab_id),Fn(t.logical_tab_id),Fn(t.tabId),Fn(t.logicalTabId),Fn(n?.tab_id),Fn(n?.logical_tab_id),Fn(n?.tabId),Fn(n?.logicalTabId)].filter(o=>!!o);return An(r)}function QT(e){if(!e||typeof e!="object")return!1;let t=e,n=t.output&&typeof t.output=="object"?t.output:void 0,r=String(t.status||t.taskStatus||n?.status||n?.taskStatus||"").trim().toLowerCase();return!!(r==="failure"||r==="failed"||r==="error"||t.success===!1||n?.success===!1||t.error||n?.error)}function Fm(e){if(!e||typeof e!="object")return null;let t=e.role,n=e.content;return typeof t!="string"||typeof n!="string"||!n?null:{role:t,content:n}}function Ls(e,t){if(!Array.isArray(e))return[];let n=e.length<=t?e:[e[0],...e.slice(-(t-1))],r=[];for(let o of n){let s=Nu(o);s!==void 0&&r.push(s)}return r}function Hm(e){if(!Array.isArray(e)||e.length===0)return[];let t=[...e],n=[];for(let o=0;o<t.length;o+=1){let s=t[o]?.accTreeId;typeof s=="string"&&s.trim()&&n.push(o)}if(n.length<=3)return t;let r=new Set([n[0],...n.slice(-2)]);for(let o of n)r.has(o)||t[o]&&typeof t[o]=="object"&&delete t[o].accTreeId;return t}async function JT(e,t){if(!Fr)return null;try{let n=await Fr.readAsync(e);if(n)return n;for(let r of t||[]){if(!r||r===e)continue;let o=await Fr.readAsync(r);if(o)return o}return null}catch{return null}}function nr(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-ic)){let r=n?.role;r!=="user"&&r!=="assistant"&&r!=="system"||t.push({id:typeof n?.id=="string"&&n.id?n.id:$r("msg"),role:r,text:String(n?.text||""),blocks:lo(n?.blocks),ts:Number(n?.ts)||Date.now(),sourceRuntimeId:typeof n?.sourceRuntimeId=="string"?n.sourceRuntimeId:void 0})}return t.filter(n=>!!n.text||!!n.blocks?.length)}function rr(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-ac)){let r=Jt(String(n?.title||""),400);if(!r)continue;let o=String(n?.kind||"status"),s=n?.status;t.push({id:typeof n?.id=="string"&&n.id?n.id:$r("timeline"),kind:o,title:r,detail:n?.detail?String(n.detail):void 0,detailBlocks:lo(n?.detailBlocks),status:s==="pending"||s==="success"||s==="error"||s==="info"?s:void 0,ts:Number(n?.ts)||Date.now(),sourceRuntimeId:typeof n?.sourceRuntimeId=="string"?n.sourceRuntimeId:void 0})}return t}function Er(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-Nv)){let r=n?.role==="user"?"user":n?.role==="model"?"model":void 0;if(!r)continue;let o=Jt(String(n?.message||"").replace(/\s+/g," ").trim(),1500);if(!o)continue;let s=t[t.length-1];s&&s.role===r&&s.message===o||t.push({role:r,message:o})}return t}function Bi(e,t){if(!e)return;let n=typeof e=="string"?e:e?.text,r=Jt(String(n||"").trim(),300);if(!r)return;let o=typeof e?.runId=="string"&&e.runId.trim()?e.runId.trim():typeof t?.runId=="string"&&t.runId.trim()?t.runId.trim():void 0,s=typeof e?.taskId=="string"&&e.taskId.trim()?e.taskId.trim():typeof t?.taskId=="string"&&t.taskId.trim()?t.taskId.trim():void 0,i=typeof e?.stage=="string"&&e.stage.trim()?Jt(e.stage.trim(),40):void 0;return{text:r,ts:Number(e?.ts)||Date.now(),runId:o,taskId:s,stage:i}}function ZT(e,t){let n=Number(e.ts)||0,r=Number(t.ts)||0;if(n!==r)return n-r;let o=Array.isArray(e.blocks)?e.blocks.length:0,s=Array.isArray(t.blocks)?t.blocks.length:0;return o!==s?o-s:String(e.text||"").length-String(t.text||"").length}function ek(e,t){let n=new Map;for(let r of nr(e))n.set(r.id,r);for(let r of nr(t)){let o=n.get(r.id);(!o||ZT(r,o)>0)&&n.set(r.id,r)}return nr([...n.values()].sort((r,o)=>{let s=(Number(r.ts)||0)-(Number(o.ts)||0);return s!==0?s:r.id.localeCompare(o.id)}))}function tk(e,t){let n=Number(e.ts)||0,r=Number(t.ts)||0;if(n!==r)return n-r;let o=Array.isArray(e.detailBlocks)?e.detailBlocks.length:0,s=Array.isArray(t.detailBlocks)?t.detailBlocks.length:0;return o!==s?o-s:String(e.detail||"").length-String(t.detail||"").length}function nk(e,t){let n=new Map;for(let r of rr(e))n.set(r.id,r);for(let r of rr(t)){let o=n.get(r.id);(!o||tk(r,o)>0)&&n.set(r.id,r)}return rr([...n.values()].sort((r,o)=>{let s=(Number(r.ts)||0)-(Number(o.ts)||0);return s!==0?s:r.id.localeCompare(o.id)}))}function Mt(e){if(!e||typeof e!="object")return;let t=String(e.taskBoundaryId||"").trim(),n=Array.isArray(e.history)?e.history:[],r=Array.isArray(e.plannerHistory)?e.plannerHistory:[],o=Array.isArray(e.agentPrevSteps)?e.agentPrevSteps:Array.isArray(e.lastToolPreviousSteps)?e.lastToolPreviousSteps:[],s=n.slice(-gu).map(T=>Fm(T)).filter(T=>!!T),i=Ls(r,bu),a=Ls(Hm(o),yu),c=Vr(e?.pendingAskUser?.questions),l=e?.pendingAskUser?.stepRef,d=l&&Number.isFinite(Number(l.stepIndex))&&Number(l.stepIndex)>=0&&Number.isFinite(Number(l.functionIndex))&&Number(l.functionIndex)>=0?{stepIndex:Number(l.stepIndex),functionIndex:Number(l.functionIndex),...typeof l.accTreeId=="string"&&l.accTreeId.trim()?{accTreeId:l.accTreeId.trim()}:{}}:void 0,p=c.length?{questions:c,source:e?.pendingAskUser?.source==="planner"?"planner":"act",askedAt:Number(e?.pendingAskUser?.askedAt)||Date.now(),boundaryId:typeof e?.pendingAskUser?.boundaryId=="string"&&e.pendingAskUser.boundaryId.trim()?e.pendingAskUser.boundaryId.trim():void 0,...d?{stepRef:d}:{}}:void 0,v=Ae(t||void 0),m=Ae(p?.boundaryId||v);p&&v&&m&&m!==v&&(p=void 0);let g=typeof e.rootUserInput=="string"?e.rootUserInput.trim():"";return{trajectoryId:typeof e.trajectoryId=="string"?e.trajectoryId:void 0,taskBoundaryId:t||void 0,rootUserInput:g||void 0,seedChatLog:Er(e.seedChatLog),history:s,plannerHistory:i,agentPrevSteps:a,lastToolPreviousSteps:a,pendingAskUser:p,updatedAt:Number(e.updatedAt)||Date.now()}}function Ci(e,t,n){if(!e||typeof e!="object")return nu(t,n);let r=cn(),o=po(e.activeTask,r),s=ze(e.pendingRun),i=o.status==="running"?s:void 0,a=i?.taskBoundaryId&&String(i.taskBoundaryId).trim()||(typeof e?.workerState?.taskBoundaryId=="string"?String(e.workerState.taskBoundaryId).trim():"")||void 0,c=Ps(e.taskTabScope,a),l={version:hu,sessionId:typeof e.sessionId=="string"&&e.sessionId?e.sessionId:t,runtimeId:typeof e.runtimeId=="string"&&e.runtimeId?e.runtimeId:n,uiOpen:!!e.uiOpen,uiHidden:!!e.uiHidden,uiStatus:typeof e.uiStatus=="string"?Jt(e.uiStatus,300):void 0,transientStatus:Bi(e.transientStatus??e.uiStatus,{runId:s?.id,taskId:o?.taskId}),uiMessages:nr(e.uiMessages),timeline:rr(e.timeline),executionMode:e.executionMode==="observer"||e.executionMode==="controller"?e.executionMode:"controller",workerState:Mt(e.workerState),pendingRun:i,taskTabScope:c,lastNavigationHandoff:zr(e.lastNavigationHandoff),taskEpoch:Math.max(1,Number(e.taskEpoch)||1),activeTask:o,lastRoutingDecision:e.lastRoutingDecision&&(e.lastRoutingDecision.mode==="act"||e.lastRoutingDecision.mode==="planner")?{mode:e.lastRoutingDecision.mode,score:Number(e.lastRoutingDecision.score)||void 0,reason:typeof e.lastRoutingDecision.reason=="string"?Jt(e.lastRoutingDecision.reason,200):void 0,ts:Number(e.lastRoutingDecision.ts)||Date.now()}:void 0,updatedAt:Number(e.updatedAt)||Date.now(),tasks:e.tasks&&typeof e.tasks=="object"?e.tasks:{},activeTaskId:typeof e.activeTaskId=="string"?e.activeTaskId:void 0,taskOrder:Array.isArray(e.taskOrder)?e.taskOrder:[]};if((Number(e.version)||1)<2&&o&&o.taskId){let p=ms.fromV1State(l),{tasks:v,activeTaskId:m,taskOrder:g}=p.toPersistedState();l.tasks=v,l.activeTaskId=m,l.taskOrder=g,p.shutdown()}return l}function po(e,t){if(!e||typeof e!="object")return t;let n=typeof e.taskId=="string"&&e.taskId.trim()?e.taskId.trim():t.taskId,r=e.status==="ended"||e.status==="completed"||e.status==="cancelled"||e.status==="failed"||e.status==="running"?e.status:"running";return{taskId:n,status:r,startedAt:Number(e.startedAt)||t.startedAt,lastUserAt:Number(e.lastUserAt)||void 0,lastAssistantAt:Number(e.lastAssistantAt)||void 0,boundaryReason:typeof e.boundaryReason=="string"?Jt(e.boundaryReason,120):t.boundaryReason,endedAt:Number(e.endedAt)||void 0}}function qm(e,t){return po(e,t)}function Ui(e){if(!e)return;let t=Vr(e.pendingAskUser?.questions);return{trajectoryId:e.trajectoryId,taskBoundaryId:typeof e.taskBoundaryId=="string"?e.taskBoundaryId:void 0,rootUserInput:typeof e.rootUserInput=="string"?e.rootUserInput:void 0,seedChatLog:Er(e.seedChatLog),history:Array.isArray(e.history)?e.history.slice(-gu).map(n=>Fm(n)).filter(n=>!!n):[],plannerHistory:Ls(e.plannerHistory,bu),agentPrevSteps:Ls(Hm(e.agentPrevSteps),yu),pendingAskUser:t.length?{questions:t,source:e.pendingAskUser?.source==="planner"?"planner":"act",askedAt:Number(e.pendingAskUser?.askedAt)||Date.now(),boundaryId:typeof e.pendingAskUser?.boundaryId=="string"&&e.pendingAskUser.boundaryId.trim()?e.pendingAskUser.boundaryId.trim():void 0,...e.pendingAskUser?.stepRef&&Number.isFinite(Number(e.pendingAskUser.stepRef.stepIndex))&&Number(e.pendingAskUser.stepRef.stepIndex)>=0&&Number.isFinite(Number(e.pendingAskUser.stepRef.functionIndex))&&Number(e.pendingAskUser.stepRef.functionIndex)>=0?{stepRef:{stepIndex:Number(e.pendingAskUser.stepRef.stepIndex),functionIndex:Number(e.pendingAskUser.stepRef.functionIndex),...typeof e.pendingAskUser.stepRef.accTreeId=="string"&&e.pendingAskUser.stepRef.accTreeId.trim()?{accTreeId:e.pendingAskUser.stepRef.accTreeId.trim()}:{}}}:{}}:void 0,updatedAt:Number(e.updatedAt)||Date.now()}}function An(e){if(!Array.isArray(e))return[];let t=new Set,n=[];for(let r of e){let o=Number(r);!Number.isFinite(o)||o<=0||t.has(o)||(t.add(o),n.push(o))}return n}function Ps(e,t){if(!e||typeof e!="object")return;let n=typeof e.boundaryId=="string"&&e.boundaryId.trim()?e.boundaryId.trim():typeof t=="string"&&t.trim()?t.trim():void 0;if(!n)return;let r=Number(e.seedTabId);if(!Number.isFinite(r)||r<=0)return;let o=An(e.touchedTabIds);return o.includes(r)||o.unshift(r),{boundaryId:n,seedTabId:r,touchedTabIds:o.slice(0,24),updatedAt:Number(e.updatedAt)||Date.now()}}function ze(e){if(!e||typeof e!="object")return;let t=typeof e.id=="string"&&e.id.trim()?e.id.trim():void 0,n=typeof e.text=="string"?e.text.trim():"",r=typeof e.lastUserInputText=="string"&&e.lastUserInputText.trim()?e.lastUserInputText.trim():typeof $t=="string"&&$t.trim()?$t.trim():"Continue task",o=n||r,s=typeof e.taskBoundaryId=="string"&&e.taskBoundaryId.trim()?e.taskBoundaryId.trim():void 0;if(t)return{id:t,text:o,startedAt:Number(e.startedAt)||Date.now(),attempts:Math.max(0,Number(e.attempts)||0),autoResume:e.autoResume!==!1,taskBoundaryId:s,resumeRequired:e.resumeRequired===!0,resumeReason:e.resumeReason==="cross_host_navigation"||e.resumeReason==="agent_navigation"||e.resumeReason==="handoff"||e.resumeReason==="page_reload"?e.resumeReason:void 0}}function rk(){return Ms(C?.stability?.maxPersistBytes,ft.localPersistBytes)}function ok(e,t){let n={...e,uiMessages:nr(e.uiMessages).slice(-ic),timeline:rr(e.timeline).slice(-ac),workerState:Mt(e.workerState)};n.workerState&&(n.workerState={...n.workerState,history:Array.isArray(n.workerState.history)?n.workerState.history.slice(-gu):[],plannerHistory:Ls(n.workerState.plannerHistory,bu),agentPrevSteps:Ls(n.workerState.agentPrevSteps,yu)});let r="";try{r=JSON.stringify(n)}catch{return e}if(r.length<=t)return n;let o={...n,uiMessages:[],timeline:[],workerState:void 0};try{if(JSON.stringify(o).length<=t)return o}catch{return o}return{...o,pendingRun:void 0,activeTask:cn("persist_trim")}}function Is(e){if(!(!u||!on))try{if(G){Ic(),G.enforceMemoryCaps();let{tasks:r,activeTaskId:o,taskOrder:s}=G.toPersistedState();u.tasks=r,u.activeTaskId=o,u.taskOrder=s}let t=rk();u=ok(u,t);let n=JSON.stringify({s:u.sessionId,p:u.pendingRun?.id,pa:u.pendingRun?.autoResume,t:u.activeTask?.status,te:u.taskEpoch,m:u.uiMessages?.length,tl:u.timeline?.length,o:u.uiOpen,h:u.uiHidden,e:u.executionMode,at:u.activeTaskId});if(n===lu&&!e?.markCheckpointDirty)return;lu=n,u.updatedAt=Date.now(),Fr?.write(on,u),Br&&Br!==on&&(Fr?.remove(Br),Br=null),!Ss&&e?.markCheckpointDirty!==!1&&mt?.markDirty()}catch{}}var Oo=!1,Po=!1,lu="",hi=0,bs=0,uu=2e3,Wm=2e3;function xs(e){Is({markCheckpointDirty:!0}),mt?.syncNow({push:!0,pull:!1}),Vt("checkpoint_state",{event:"critical_flush",reason:e})}function xe(e){e?.markCheckpointDirty!==!1&&(Po=!0);let t=Date.now();if(!Oo)bs=t;else if(bs>0&&t-bs>=Wm){Oo=!1,bs=0;let n=Po;Po=!1,hi=t,Is({markCheckpointDirty:n});return}Oo||(Oo=!0,setTimeout(()=>{Oo=!1,bs=0;let n=Po;Po=!1;let r=Date.now();if(r-hi<uu){Oo=!0,setTimeout(()=>{Oo=!1,bs=0,hi=Date.now(),Is({markCheckpointDirty:Po||n}),Po=!1},uu-(r-hi));return}hi=r,Is({markCheckpointDirty:n})},0))}function sk(){if(Yl)return;Yl=!0,Ql||(Ql=!0,tc(document,"visibilitychange",()=>{ar()},{passive:!0})),tc(window,"pagehide",()=>{if(Qt&&C?.siteId)try{sessionStorage.setItem(`rover:sess:${C.siteId}`,JSON.stringify({t:Qt,e:kr}))}catch{}if(u?.pendingRun?.autoResume){let r=u.pendingRun.resumeReason||(vr?"agent_navigation":"page_reload"),o=ze({...u.pendingRun,resumeRequired:!0,resumeReason:r});if(u.pendingRun=o,o&&C?.siteId){let s=zr(u?.lastNavigationHandoff);IT(C.siteId,{runId:o.id,text:o.text,taskBoundaryId:o.taskBoundaryId||Ce,resumeReason:r,handoffId:s?.handoffId,openIntent:u.uiOpen?"preserve_if_running":void 0,ts:Date.now()})}}let n=vu();R?.broadcastClosing(hm(n)),u?.pendingRun&&R?.releaseWorkflowLock(u.pendingRun.id),Is(),Bo(!0),Cu(),mt?.markDirty(),mt?.syncNow({push:!0,pull:!1}),mt?.stop(),R?.stop()},{capture:!0}),tc(window,"pageshow",n=>{n.persisted&&(R&&(R.reloadFromStorage(),R.registerCurrentTab(window.location.href,document.title||void 0),R.claimLease(!1)),or=!1,sn=0,C&&wc(C),ar(!0))})}function ik(e="implicit"){if(u)return u.activeTask||(u.activeTask=cn(e),u.taskEpoch=Math.max(1,Number(u.taskEpoch)||1)),u.activeTask}function mo(e,t){if(!u)return;let n=u.activeTask?.status,r=Ae(Ce),o=Rp({task:u.activeTask,taskEpoch:u.taskEpoch},e,{createTask:(s,i,a)=>cn(s,i,a)});if(u.activeTask=o.task,u.taskEpoch=o.taskEpoch,o.rotateBoundary&&t?.rotateBoundary!==!1?(Ce=sr(),Cn({forceReset:!0,persist:!1})):Cn({persist:!1,appendSeed:!1}),o.clearPendingRun&&u.pendingRun&&kt(void 0),o.clearWorkerState&&u.workerState&&(u.workerState=void 0,R?.setWorkerContext(void 0)),o.lifecycle==="terminal"&&(st&&(clearTimeout(st),st=null),Fi()),t?.syncShared!==!1&&R?.syncTask({...o.task},u.taskEpoch),t?.persist!==!1){let s=Ae(Ce);n!==o.task.status?xs("run_status_transition"):!!s&&s!==r?xs("task_boundary_transition"):xe()}if(ar(),Nm(),G){let s=G.toPersistedState();u.tasks=s.tasks,u.activeTaskId=s.activeTaskId,u.taskOrder=s.taskOrder}return o.task}function ro(){if(!G||!X)return;Ic();let e=G.listTasks(),t=G.getActiveTask()?.taskId;X.setConversations(e.map(n=>({id:n.taskId,summary:n.rootUserInput||n.taskId.slice(0,8),status:n.state,updatedAt:n.endedAt||n.lastAssistantAt||n.lastUserAt||n.startedAt,isActive:n.taskId===t}))),t&&X.setActiveConversationId(t)}function bc(){if(G)return G.getActiveTask()}function ak(e=u,t){let n=String(t||e?.activeTaskId||e?.activeTask?.taskId||"").trim()||void 0,r=Ae(Wo(e)),o=String(ze(e?.pendingRun)?.id||"").trim()||void 0;return{taskId:n,boundaryId:r,runId:o}}function ck(){let e=Er(bc()?.seedChatLog);return e.length?e:Er(u?.workerState?.seedChatLog)}function lk(e,t){let n=t||cn("task_record_sync");return po({taskId:e.taskId,status:kp(e.state),startedAt:e.startedAt,lastUserAt:e.lastUserAt,lastAssistantAt:e.lastAssistantAt,boundaryReason:e.blockReason||n.boundaryReason,endedAt:e.endedAt},n)}function $m(e,t){if(!u)return;let n=Ae(e.boundaryId)||Ae(e.pendingRun?.taskBoundaryId)||Ae(e.workerState?.taskBoundaryId)||yn()||sr(),r=Er(e.seedChatLog??e.workerState?.seedChatLog),o=tr(Mt(e.workerState||r.length||e.rootUserInput?{...e.workerState||{},...e.rootUserInput?{rootUserInput:e.rootUserInput}:{},...r.length?{seedChatLog:r}:{},taskBoundaryId:e.workerState?.taskBoundaryId||n}:void 0),n),s=ze(e.pendingRun),i=Bi(e.transientStatus,{runId:s?.id,taskId:e.taskId});u.activeTaskId=e.taskId,u.activeTask=lk(e,u.activeTask),u.uiMessages=nr(e.uiMessages),u.timeline=rr(e.timeline),u.workerState=o,u.pendingRun=s,u.taskTabScope=Ps(e.tabScope,n),u.uiStatus=i?.text,u.transientStatus=i,Ce=n,e.rootUserInput?.trim()&&($t=e.rootUserInput.trim()),t?.replayUi!==!1&&(Du(),u.uiMessages.length&&Sc(u.uiMessages),u.timeline.length&&Rc(u.timeline),Ac(u),Ds(),X?.setRunning(!!u.pendingRun&&u.activeTask?.status==="running"),e.state==="paused"?X?.showPausedTaskBanner({taskId:e.taskId,rootUserInput:e.rootUserInput||"Task"}):X?.hidePausedTaskBanner())}function Vm(e){let t=Er(e),n=bc();n&&G&&G.updateTask(n.taskId,r=>({...r,seedChatLog:t})),u?.workerState&&(u.workerState=Mt({...u.workerState,seedChatLog:t,updatedAt:Date.now()}),R?.setWorkerContext(Ui(u.workerState)))}function Ic(){if(!u||!G)return;let e=G.getActiveTask();if(!e)return;let t=ii(u.activeTask?.status||"running",u.activeTask?.boundaryReason),n=nr(u.uiMessages),r=rr(u.timeline),o=[...n].reverse().find(p=>p.role==="assistant"),s=Mt(u.workerState),i=ze(u.pendingRun),a=Ae(i?.taskBoundaryId)||Ae(s?.taskBoundaryId)||Ae(e.boundaryId)||yn()||sr(),c=Ps(u.taskTabScope,a),l=Bi(u.transientStatus,{runId:i?.id,taskId:e.taskId}),d=Er(e.seedChatLog?.length?e.seedChatLog:s?.seedChatLog);G.updateTask(e.taskId,p=>({...p,state:t,boundaryId:a,startedAt:Number(u?.activeTask?.startedAt)||p.startedAt,endedAt:Number(u?.activeTask?.endedAt)||void 0,lastUserAt:Number(u?.activeTask?.lastUserAt)||p.lastUserAt,lastAssistantAt:Number(u?.activeTask?.lastAssistantAt)||p.lastAssistantAt,uiMessages:n,timeline:r,workerState:s,pendingRun:i,tabScope:c,rootUserInput:s?.rootUserInput||i?.text||p.rootUserInput||$t,summary:o?.text||p.summary,seedChatLog:d,transientStatus:l}))}function Lu(e){if(!u||!G)return;let t=ak(u,e?.preferredTaskId),n=Op(G.listTasks(),t);if(!n&&e?.allowCreate!==!1){let o=t.boundaryId||sr(),s=ii(u.activeTask?.status||"running",u.activeTask?.boundaryReason);n=G.createTask("adopted_continuation",{taskId:t.taskId,state:s,boundaryId:o,startedAt:Number(u.activeTask?.startedAt)||Date.now(),endedAt:Number(u.activeTask?.endedAt)||void 0,lastUserAt:Number(u.activeTask?.lastUserAt)||void 0,lastAssistantAt:Number(u.activeTask?.lastAssistantAt)||void 0,rootUserInput:Mt(u.workerState)?.rootUserInput||ze(u.pendingRun)?.text||$t,seedChatLog:Er(u.workerState?.seedChatLog),tabIds:Ps(u.taskTabScope,o)?.touchedTabIds||[]})}if(!n)return;e?.makeActive!==!1&&G.getActiveTaskId()!==n.taskId&&G.switchActiveTask(n.taskId),u.activeTaskId=G.getActiveTaskId()||n.taskId,u.activeTask=po({...u.activeTask||cn("adopted_continuation"),taskId:u.activeTaskId},cn("adopted_continuation",Date.now(),u.activeTaskId)),Ic();let r=G.toPersistedState();return u.tasks=r.tasks,u.activeTaskId=r.activeTaskId,u.taskOrder=r.taskOrder,ro(),G.getTask(u.activeTaskId||n.taskId)}function uk(e,t=Date.now()){if(!u||e==="system")return;let n=ik("implicit");n&&n.status==="running"&&(e==="user"&&(n.lastUserAt=t),e==="assistant"&&(n.lastAssistantAt=t))}var Vl="[Rover]";function dk(e){if(!(C?.ui?.tabIndicator?.titlePrefix!==!1))return;let n=e||"[Rover: Running]",r=Ii;r||(wi=document.title),Ii=!0,Vl=n;let o=r?document.title.replace(/^\[Rover[^\]]*\]\s*/,"")||wi||"":document.title;if(document.title=`${n} ${o}`,!Es){let s=document.querySelector("title");s&&(Es=new MutationObserver(()=>{if(Ii&&!document.title.startsWith(Vl)){let i=document.title.replace(/^\[Rover[^\]]*\]\s*/,"");document.title=`${Vl} ${i}`}}),Es.observe(s,{childList:!0,characterData:!0,subtree:!0}))}C?.ui?.tabIndicator?.faviconBadge===!0&&qp()}function xc(){Ii&&(Ii=!1,Es&&(Es.disconnect(),Es=null),wi!==void 0?(document.title=wi,wi=void 0):document.title.startsWith("[Rover] ")&&(document.title=document.title.slice(8)),Wp())}function zm(e="worker_task_active",t=Date.now()){if(G){let n=G.getActiveTask();n&&G.dispatch(n.taskId,{type:"START",reason:e})}mo({type:"ensure_running",reason:e,at:t}),dk()}function fk(e="worker_task_complete",t=Date.now()){if(G){let n=G.getActiveTask();n&&G.dispatch(n.taskId,{type:"COMPLETE"})}mo({type:"terminal",terminal:"completed",reason:e,at:t}),xc()}function Qa(e="worker_task_failed",t=Date.now()){if(G){let n=G.getActiveTask();n&&G.dispatch(n.taskId,{type:"FAIL",error:e})}mo({type:"terminal",terminal:"failed",reason:e,at:t}),xc()}function pk(e="worker_task_ended",t=Date.now()){if(G){let n=G.getActiveTask();n&&G.dispatch(n.taskId,{type:"CANCEL",reason:"ended"})}mo({type:"terminal",terminal:"ended",reason:e,at:t}),xc()}function jm(e="worker_task_cancelled",t=Date.now()){if(G){let n=G.getActiveTask();n&&G.dispatch(n.taskId,{type:"CANCEL",reason:e})}mo({type:"terminal",terminal:"cancelled",reason:e,at:t}),xc()}function vn(){so=null,X?.setTaskSuggestion({visible:!1})}function mk(e){let t=String(e?.id||"").trim();if(!t||wr())return!1;let n=String(e?.text||"").trim()||"Continue task";return so?.kind==="resume_run"&&so.runId===t?!1:(so={kind:"resume_run",runId:t,text:n,createdAt:Date.now()},X?.setTaskSuggestion({visible:!0,text:"Resume your interrupted task or cancel it?",primaryLabel:"Resume",secondaryLabel:"Cancel"}),!0)}function Fi(){Yt=!1,an=!1,$o(),C?.siteId&&(oi(C.siteId),km(C.siteId)),mt?.markDirty(),mt?.syncNow({push:!0,pull:!1})}function Du(){X?.clearMessages(),X?.clearTimeline(),X?.setQuestionPrompt(void 0),vn()}function Ou(e){if(!u)return;st&&(clearTimeout(st),st=null),or=!1,sn=0,Yt=!1,an=!1,ht&&(clearTimeout(ht),ht=null);let t=ze(u.pendingRun),n=String(e.runId||t?.id||"").trim();n&&(fo(n),R?.releaseWorkflowLock(n),Pu(n)||co(n,e.cancelReason||e.reason,{attemptImmediately:!0})),kt(void 0),R?.setActiveRun(void 0),X?.setRunning(!1),X?.setQuestionPrompt(void 0),vn(),u.activeTask?.status==="running"?jm(e.reason):Fi(),Tt(void 0),Vt("status",{event:"local_run_abandoned",reason:e.reason,runId:n||void 0}),e.timelineTitle&&et({kind:e.timelineStatus==="error"?"error":"info",title:e.timelineTitle,detail:e.timelineDetail,status:e.timelineStatus||"info"}),e.emitError?.message&&qe("error",{message:e.emitError.message,scope:e.emitError.scope||"resume",code:e.emitError.code,runId:n||void 0})}function hk(e){if(e)return Ae(e.pendingAskUser?.boundaryId||e.taskBoundaryId)}function tr(e,t){if(!e)return;let n=Ae(t);if(!n)return e;let r=Ae(e.taskBoundaryId);if(r&&r!==n)return;let o=Ae(e.pendingAskUser?.boundaryId);if(!(o&&o!==n))return e}function Ds(){if(u?.activeTask?.status!=="running"){ys="",X?.setQuestionPrompt(void 0);return}let e=yn(),t=hk(u?.workerState);if(e&&t&&t!==Ae(e)){ys="",X?.setQuestionPrompt(void 0);return}let n=Vr(u?.workerState?.pendingAskUser?.questions);if(!n.length){ys="",X?.setQuestionPrompt(void 0);return}let r=`${Ae(t||e)||""}:${n.map(o=>`${o.key}:${o.query}`).join("|")}`;r!==ys&&(ys=r,xs("question_prompt_boundary")),X?.setQuestionPrompt({questions:n})}function gk(){let e=u?.pendingRun;if(!e)return!1;if(!R)return!0;let t=R?.getState()?.activeRun;if(t?.runId&&t.runId===e.id||t?.runtimeId&&t.runtimeId!==Ve)return!0;let n=Date.now()-Number(e.startedAt||0);return n>=0&&n<=qv}function bk(){if(!u?.pendingRun||gk()||!R)return;let e=u.pendingRun;if(e.resumeRequired===!0&&Wa(u.activeTask?.status))return;let t=String(ye?.getActiveRunId()||"").trim();if(t&&t===e.id||wr())return;let n=Date.now()-Number(e.startedAt||0);!Number.isFinite(n)||n<Wv||(fo(e.id),co(e.id,"stale_pending_cleanup",{attemptImmediately:!0}),kt(void 0),R?.releaseWorkflowLock(e.id),R?.setActiveRun(void 0),st&&(clearTimeout(st),st=null))}function Hn(e,t,n=!0,r){let o=String(t||""),s=lo(r?.blocks);if(!o&&(!s||s.length===0))return;let i={id:r?.id||$r("msg"),role:e,text:o,blocks:s,ts:r?.ts||Date.now(),sourceRuntimeId:r?.sourceRuntimeId};return X?.addMessage(i.role,i.text,{blocks:i.blocks}),u&&n&&(u.uiMessages.push(i),u.uiMessages.length>ic&&(u.uiMessages=u.uiMessages.slice(-ic)),uk(i.role,i.ts),xe()),R&&r?.publishShared!==!1&&(R.appendMessage({id:i.id,role:i.role,text:i.text,blocks:i.blocks,ts:i.ts}),R.markTaskActivity(i.role,i.ts)),i}function Sc(e){for(let t of e)Hn(t.role,t.text,!1,{id:t.id,ts:t.ts,sourceRuntimeId:t.sourceRuntimeId,publishShared:!1,blocks:t.blocks})}function et(e,t=!0){let n={id:e.id||$r("timeline"),kind:e.kind,title:Jt(e.title,400),detail:e.detail?String(e.detail):void 0,detailBlocks:lo(e.detailBlocks),status:e.status,ts:e.ts||Date.now(),sourceRuntimeId:e.sourceRuntimeId};return X?.addTimelineEvent(n),u&&t&&(u.timeline.push(n),u.timeline.length>ac&&(u.timeline=u.timeline.slice(-ac)),xe({markCheckpointDirty:!1})),R&&e.publishShared!==!1&&R.appendTimeline({id:n.id,kind:n.kind,title:n.title,detail:n.detail,detailBlocks:n.detailBlocks,status:n.status,ts:n.ts}),n}function Rc(e){X?.clearTimeline();for(let t of e)et({id:t.id,kind:t.kind,title:t.title,detail:t.detail,detailBlocks:t.detailBlocks,status:t.status,ts:t.ts,sourceRuntimeId:t.sourceRuntimeId,publishShared:!1},!1)}function Gm(e,t){if(!e?.text||t?.taskStatus&&t.taskStatus!=="running")return;let n=String(t?.activeRunId||"").trim(),r=String(e.runId||"").trim(),o=String(t?.activeTaskId||"").trim(),s=String(e.taskId||"").trim();if(!(r&&!n)&&!(r&&n&&r!==n)&&!(s&&o&&s!==o))return e.text}function Xm(e=u){let t=R?.getState();return Pp({localPendingRunId:e?.pendingRun?.id,sharedActiveRunId:t?.activeRun?.runId,sharedTaskId:t?.task?.taskId||t?.activeTaskId,activeTaskId:e?.activeTask?.taskId||e?.activeTaskId})}function Tt(e,t){let n=Bi(e?{text:e,runId:t?.runId||u?.pendingRun?.id,taskId:t?.taskId||u?.activeTask?.taskId||bc()?.taskId,stage:t?.stage,ts:Date.now()}:void 0,{runId:t?.runId||u?.pendingRun?.id,taskId:t?.taskId||u?.activeTask?.taskId||bc()?.taskId}),r=Gm(n,{activeRunId:Xm(u),activeTaskId:u?.activeTask?.taskId,taskStatus:u?.activeTask?.status});r?X?.setStatus(r):X?.setStatus?.(void 0),u&&(u.uiStatus=n?.text,u.transientStatus=n,Ic(),xe({markCheckpointDirty:!1})),R&&t?.publishShared!==!1&&R.setStatus(n)}function Ac(e=u){let t=Gm(e?.transientStatus,{activeRunId:Xm(e),activeTaskId:e?.activeTask?.taskId,taskStatus:e?.activeTask?.status});t?X?.setStatus(t):X?.setStatus?.(void 0)}function Vo(e,t){let n=Pi(e);it=n;let r=t?.localLogicalTabId??R?.getLocalLogicalTabId(),o=t?.activeLogicalTabId??R?.getActiveLogicalTabId(),s=t?.holderRuntimeId??R?.getCurrentHolderRuntimeId(),i=n==="controller"&&!!(C?.allowActions??!0);Xe?.setAllowActions(i),Xe?.setActionGateContext?.({mode:n,controllerRuntimeId:s,activeLogicalTabId:o,localLogicalTabId:r,reason:Oi(n,i)}),u&&(u.executionMode=n,xe()),ar(),X?.setExecutionMode(n,{controllerRuntimeId:s,localLogicalTabId:r,activeLogicalTabId:o,canTakeControl:!0,canComposeInObserver:Pm(),note:Bm(n)}),qe("mode_change",{mode:n,rawMode:e,...t})}function kt(e){u&&(e?u.pendingRun=ze({...e,taskBoundaryId:e.taskBoundaryId||Ce}):(u.pendingRun=void 0,u.uiStatus=void 0,u.transientStatus=void 0,io(void 0),ku(u)||$o()),Di(u),ar(),xe())}function zl(e){u&&(u.lastNavigationHandoff=zr(e),xe())}function Cc(){let e=Number(R?.getLocalLogicalTabId()||R?.getActiveLogicalTabId()||1);return!Number.isFinite(e)||e<=0?1:e}function Cn(e){if(!u)return;let t=Ae(Ce)||sr();Ce||(Ce=t);let n=Cc(),r=e?.appendSeed!==!1,o=Ps(u.taskTabScope,t);if(!!e?.forceReset||!o||Ae(o.boundaryId)!==t){let c={boundaryId:t,seedTabId:n,touchedTabIds:[n],updatedAt:Date.now()};return u.taskTabScope=c,e?.persist!==!1&&xe(),c}let i=An(o.touchedTabIds);r&&!i.includes(n)&&i.unshift(n);let a={...o,seedTabId:Number.isFinite(Number(o.seedTabId))&&Number(o.seedTabId)>0?Number(o.seedTabId):n,touchedTabIds:i.slice(0,24),updatedAt:Date.now()};return u.taskTabScope=a,e?.persist&&xe(),a}function Km(e,t){if(!u)return;let n=Cn({persist:!1});if(!n)return;let r=An([n.seedTabId,...n.touchedTabIds||[],...e]),o={...n,touchedTabIds:r.slice(0,24),updatedAt:Date.now()};return u.taskTabScope=o,t?.persist!==!1&&xe(),o}function yk(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function zo(e){if(!u)return;let t=Cn({persist:!1,appendSeed:!1});if(!t||!R)return t;let n=Date.now(),r=Array.isArray(R.getState()?.tabs)?R.getState().tabs:[],o=new Set;for(let T of r){let D=Number(T?.logicalTabId);if(!Number.isFinite(D)||D<=0)continue;let N=Math.max(Number(T?.updatedAt)||0,Number(T?.openedAt)||0,Number(T?.detachedAt)||0),A=n-N;if(T.runtimeId){o.add(D);continue}if(T.external){A<=Zv&&o.add(D);continue}if(T.detachedReason==="navigation_handoff"){A<=eT&&o.add(D);continue}if(T.detachedReason==="opened_pending_attach"){A<=tT&&o.add(D);continue}}let s=Number(R.getLocalLogicalTabId()),i=Number(R.getActiveLogicalTabId()),a=Number(t.seedTabId)>0?Number(t.seedTabId):Cc();Number.isFinite(s)&&s>0&&o.add(s),Number.isFinite(i)&&i>0&&o.add(i),o.size===0&&Number.isFinite(a)&&a>0&&o.add(a);let c=An(t.touchedTabIds),l=c.filter(T=>o.has(T)),d=o.has(t.seedTabId)?t.seedTabId:Number.isFinite(s)&&s>0?s:Number.isFinite(i)&&i>0?i:a;l.includes(d)||l.unshift(d);let p=An(l).slice(0,24);if(!(d!==t.seedTabId||!yk(p,c)))return t;let m=c.filter(T=>!p.includes(T)),g={...t,seedTabId:d,touchedTabIds:p.length?p:[d],updatedAt:Date.now()};return u.taskTabScope=g,e?.persist!==!1&&xe(),Vt("status",{event:"scoped_tab_reconciled",removedTabIds:m,scopedTabIds:g.touchedTabIds,seedTabId:g.seedTabId}),g}function xi(){let e=zo({persist:!1})||Cn({persist:!1,appendSeed:!1});if(!e)return[Cc()];let t=An(e.touchedTabIds);return t.length?t:[e.seedTabId]}function Ym(){let e=zo({persist:!1})||Cn({persist:!1,appendSeed:!1});if(e)return{boundaryId:e.boundaryId,seedTabId:e.seedTabId,touchedTabIds:An(e.touchedTabIds)}}function vk(e,t){let n=Ho,r=qo,o=As,s,i=t;if(G){let l=G.listTasks(),d=G.getActiveTask()?.taskId,p=R?.getLocalLogicalTabId(),v=l.filter(T=>T.taskId!==d&&(T.state==="completed"||T.state==="cancelled")&&!!T.endedAt).sort((T,D)=>(Number(D.endedAt)||0)-(Number(T.endedAt)||0)),g=(Number.isFinite(Number(p))&&Number(p)>0?v.filter(T=>Array.isArray(T.tabIds)&&T.tabIds.includes(Number(p))):v)[0];g&&(n=g.rootUserInput||n,r=g.summary||r,o=g.endedAt||o,s=g.uiMessages.map(T=>({role:T.role,text:T.text,ts:T.ts})),i=g.state)}let a=C?.task?.followup,c=Kp({mode:a?.mode,previousTaskStatus:i,previousTaskMessages:s,previousTaskUserInput:n,previousTaskAssistantOutput:r,previousTaskCompletedAt:o,currentPrompt:e,ttlMs:Iu(a?.ttlMs),minLexicalOverlap:xu(a?.minLexicalOverlap)});return{chatLog:c.chatLog,reason:c.reason,overlap:c.overlap}}var yr=new Map,du=pT;async function Tk(e){if(yr.has(e)){let o=yr.get(e);if(Date.now()-o.ts<du)return;yr.delete(e)}let t=Date.now();for(let[o,s]of yr)t-s.ts>=du&&yr.delete(o);let n=u?.pendingRun?.id;if(!n||!ye)return;let r=await ye.fetchExternalContext({runId:n,url:e,source:"direct_url"});r&&(yr.set(e,{data:r,ts:Date.now()}),pm(yr,fT))}function kk(e){let t=yr.get(e);if(t){if(Date.now()-t.ts>=du){yr.delete(e);return}return t.data}}function _k(e){let t=String(e||"").trim();return t===Zl.read||t===Zl.act}function gi(e){let t=String(e.code||"EXTERNAL_CONTEXT_FAILED").trim()||"EXTERNAL_CONTEXT_FAILED",n=String(e.message||"External context request failed").trim()||"External context request failed";return{success:!1,error:`${t}: ${n}`,allowFallback:e.retryable!==!1,output:{success:!1,error:{code:t,message:n,retryable:e.retryable===!0,status:Number.isFinite(Number(e.status))?Number(e.status):void 0},details:e.details}}}async function Ek(e){let t=String(e.call?.name||"").trim(),n=e.call?.args&&typeof e.call.args=="object"?e.call.args:{},r=t===Zl.act?"act":"read_context",o=Number(n.tab_id),s=Number.isFinite(o)&&o>0?Math.trunc(o):Number.isFinite(Number(e.routeTabId))&&Number(e.routeTabId)>0?Math.trunc(Number(e.routeTabId)):void 0,i=R?.listTabs({scope:"all"})||[],a=s?i.find(m=>m.logicalTabId===s):void 0,l=String(n.url||"").trim()||String(a?.url||"").trim(),d=String(n.message||n.user_input||"").trim()||void 0,p=String(n.source||"").trim().toLowerCase()==="google_search"?"google_search":"direct_url";if(!l)return gi({code:"MISSING_URL",message:"External context tools require a target url or tab with a url.",retryable:!1});if(!ye)return gi({code:"RUNTIME_UNAVAILABLE",message:"Rover server runtime is not initialized.",retryable:!0});let v=String(u?.pendingRun?.id||ye.getActiveRunId()||Li||"").trim()||void 0;if(!v)return gi({code:"NO_ACTIVE_RUN",message:"External context tools can only run during an active run.",retryable:!1});try{let m=kk(l);if(m)return m;let g=await ye.fetchExternalContext({runId:v,tabId:s,url:l,intent:r,message:d,source:p});if(!g)return gi({code:"EMPTY_RESPONSE",message:"Server returned no external context response.",retryable:!0});let D=(g.pageData&&typeof g.pageData=="object"?g.pageData:void 0)||g;return{success:!0,output:{...D,metadata:{...D&&typeof D=="object"?D.metadata||{}:{},external:!0,accessMode:"external_scraped",logicalTabId:s,sourceTool:t},intent:r}}}catch(m){let g=String(m?.code||"").trim().toUpperCase()||"EXTERNAL_CONTEXT_FAILED",T=Number(m?.status),D=T>=500||g==="STALE_SEQ"||g==="STALE_EPOCH";return gi({code:g,message:String(m?.message||"External context request failed"),retryable:D,status:Number.isFinite(T)?T:void 0,details:m?.details})}}function jo(e){let t=xi();return{taskBoundaryId:Ce,taskTabScope:Ym(),scopedTabIds:t,...e||{}}}var im="";function qn(e){if(!Be)return;let t=jo(e),n=JSON.stringify(t);n!==im&&(im=n,Be.postMessage({type:"update_config",config:t}))}function Qm(e,t){let n=String(e||"").trim();if(!n||!Be)return;if(it==="observer"){if(wr()){Hn("system","This tab is read-only while another tab is actively running Rover.",!0),et({kind:"info",title:"Observer mode",detail:"Input is disabled while the active run is controlled by another tab.",status:"info"});return}if(!(R?.requestControl()??!1)){Hn("system","Unable to take control right now because another tab is still running Rover actions.",!0),et({kind:"info",title:"Observer mode",detail:"Action execution is currently owned by another tab runtime.",status:"info"});return}let g=R?.getLocalLogicalTabId(),T=R?.getActiveLogicalTabId(),D=R?.getCurrentHolderRuntimeId()||Ve;Vo("controller",{localLogicalTabId:g,activeLogicalTabId:T,holderRuntimeId:D});let N=!!(C?.allowActions??!0);Xe?.setAllowActions(N),Xe?.setActionGateContext?.({mode:"controller",controllerRuntimeId:D,activeLogicalTabId:T,localLogicalTabId:g,reason:Oi("controller",N)})}let r=t?.runId||crypto.randomUUID(),o=!!t?.resume,s=t?.appendUserMessage!==!1,a=(t?.askUserAnswers?VT(r):void 0)||n;su(r),s&&Hn("user",n,!0);let c=u?.pendingRun?.id===r?u.pendingRun.attempts:0,l=u?.pendingRun?.id===r&&u.pendingRun.taskBoundaryId||Ce;Km([Cc()],{persist:!0});let d=xi(),p=Er(Array.isArray(t?.seedChatLog)?t.seedChatLog:ck());vr=!1,kt({id:r,text:a,startedAt:Date.now(),attempts:o?c+1:0,autoResume:t?.autoResume!==!1,taskBoundaryId:l,resumeRequired:!1,resumeReason:void 0}),zm(o?"worker_task_resumed":"worker_task_active"),$t=a,u&&(u.workerState=Mt({...u.workerState||{},taskBoundaryId:l,rootUserInput:u.workerState?.rootUserInput||a,seedChatLog:p,history:u.workerState?.history||[],plannerHistory:u.workerState?.plannerHistory||[],agentPrevSteps:u.workerState?.agentPrevSteps||[],updatedAt:Date.now()}),R?.setWorkerContext(Ui(u.workerState))),Vm(p),R?.acquireWorkflowLock(r),R?.setActiveRun({runId:r,text:a}),Be.postMessage({type:"run",text:n,runId:r,trajectoryId:u?.workerState?.trajectoryId,resume:o,preserveHistory:!!t?.preserveHistory,seedChatLog:p,routing:t?.routing,askUserAnswers:t?.askUserAnswers,scopedTabIds:d,taskTabScope:Ym()}),ht&&clearTimeout(ht);let v=r;ht=setTimeout(()=>{u?.pendingRun?.id===v&&(Ou({reason:"run_timeout_terminal",statusText:"Task timed out.",runId:v,cancelReason:"run_timeout_terminal",timelineTitle:"Run timed out",timelineDetail:"Task timed out after 5 minutes with no response.",timelineStatus:"error",emitError:{message:"Run safety timeout",scope:"run_timeout",code:"RUN_TIMEOUT"}}),Hn("system","Task timed out after 5 minutes with no response.",!0)),ht=null},5*6e4)}async function wk(e,t){let n=$T(e,t?.askUserAnswers);if(!n)return;bk();let r=u?.activeTask?.status,o=Vr(u?.workerState?.pendingAskUser?.questions).length,s=u?.workerState?.pendingAskUser?.boundaryId,i=Gp({startNewTask:!!t?.startNewTask,taskStatus:r,pendingAskUserQuestionCount:o,hasAskUserAnswers:!!t?.askUserAnswers,pendingAskUserBoundaryId:s,currentTaskBoundaryId:Ce}),a=!i,c=a?t?.continueRunId||u?.pendingRun?.id||ye?.getActiveRunId():void 0,l=i?vk(n,r):{reason:"mode_disabled",overlap:0},d=Er(l.chatLog);if(Vt("status",{event:"task_boundary_decision",startFreshTask:i,askUserContinuation:a,pendingAskUserQuestionCount:o,activeTaskStatus:r||"none"}),Vt("status",{event:"followup_chat_cue",attached:d.length>0,reason:l.reason,overlap:l.overlap}),R?.pruneTabs(i?{dropRuntimeDetached:!0,keepOnlyActiveLiveTab:!0,keepRecentExternalPlaceholders:!0}:{dropRuntimeDetached:!0}),i){let m=!!u?.pendingRun,g=t?.reason||(r==="completed"?"auto_after_task_complete":r==="running"?"auto_new_prompt_boundary":"auto_after_task_end");if(Vt("status",{event:"task_boundary_reset",reason:g,hadActiveRun:m}),G&&r==="running"){let T=G.getActiveTask();T&&(T.uiMessages=u?.uiMessages||[],T.timeline=u?.timeline||[],T.rootUserInput=T.rootUserInput||$t)}if(Dc({reason:g,clearUi:!0}),G){let T=G.getActiveTask();T&&(T.rootUserInput=n,T.seedChatLog=d),ro()}m&&ye&&await new Promise(T=>setTimeout(T,50))}vn();let p=c,v=t?.routing;if(ye&&C)try{let m=await ye.submitRunInput({message:n,clientEventId:crypto.randomUUID(),continueRun:a,forceNewRun:i,runId:a?c:void 0,requestedMode:t?.routing||C.taskRouting?.mode||"act"});if(!m)throw new Error("Server run/input returned no data; run was not accepted.");Number.isFinite(Number(m.epoch||m.currentEpoch))&&(Ur=Math.max(1,Number(m.epoch||m.currentEpoch)));let g=typeof m.runId=="string"&&m.runId.trim()?m.runId.trim():"";if(!g){let T=String(m?.conflict?.type||"").trim();if(T==="active_run_exists"&&ye&&i){let D=m?.conflict?.runId||m.runId;if(D){await ye.controlRun({action:"cancel",runId:D,reason:"stale_run_cleanup"});let N=await ye.submitRunInput({message:n,clientEventId:crypto.randomUUID(),continueRun:!1,forceNewRun:!0,requestedMode:t?.routing||C.taskRouting?.mode||"act"});N?.runId&&(p=N.runId.trim(),io(p),(N.acceptedMode==="act"||N.acceptedMode==="planner")&&(v=N.acceptedMode))}}if(!p){let D=String(m.decisionReason||T||m.message||"run_not_accepted").trim();throw new Error(`Server did not accept this run (${D}).`)}}p||(p=g),io(p),(m.acceptedMode==="act"||m.acceptedMode==="planner")&&(v=m.acceptedMode)}catch(m){let g=String(m?.message||"server run submission failed");io(void 0),et({kind:"error",title:"Run start failed",detail:g,status:"error"}),Hn("system",`Unable to start task: ${g}`,!0),Tt(`Task could not start (${g})`),qe("error",{message:g,scope:"run_input"});return}Qm(n,{runId:p,appendUserMessage:!0,resume:!1,preserveHistory:!1,seedChatLog:d,autoResume:!0,routing:v,askUserAnswers:t?.askUserAnswers})}function Ti(e,t){wk(e,t)}function bi(e,t){Ou({reason:e,statusText:t||e,cancelReason:e})}function Pu(e){let t=String(e||"").trim();if(!t)return!1;let n=R?.getWorkflowLockInfo();if(!n?.locked||!n.holderRuntimeId||n.holderRuntimeId===Ve||n.runId!==t)return!1;let r=R?.listTabs({scope:"all"}).find(o=>o.runtimeId===n.holderRuntimeId);return r?Number(r.updatedAt)>Date.now()-5e3:!1}function yi(e=450,t){st||(st=setTimeout(()=>{st=null,_r(t)},Math.max(120,e)))}function Ik(e,t){or=!0,Yt=!1,an=!1,vn(),Tt("Resuming interrupted task...");let n=e.text?.trim()||u?.workerState?.rootUserInput?.trim()||$t?.trim()||"Continue the current task on this page";Vt("status",{event:"resume_dispatch",source:t,runId:e.id}),Qm(n,{runId:e.id,resume:!0,appendUserMessage:!1,autoResume:!0})}function _r(e){if(!u?.pendingRun){st&&(clearTimeout(st),st=null),sn=0;return}let t=ze(u.pendingRun);if(!t||(it==="observer"&&!wr()&&Vo("controller",{localLogicalTabId:R?.getLocalLogicalTabId(),activeLogicalTabId:R?.getActiveLogicalTabId(),holderRuntimeId:R?.getCurrentHolderRuntimeId()}),it==="observer")||or)return;if(!Wn||!Be){yi(250,e);return}let n=u.activeTask?.status;if(Ol(n)){bi("terminal_task","Previous task already ended.");return}if(!Wa(n)||!t.autoResume)return;if(Eu(C?.task?.resume?.mode)!=="crash_only"){bi("unsupported_resume_mode","Previous task dismissed.");return}if(t.resumeRequired!==!0){let l=Date.now()-Number(t.startedAt||0),d=mc(C?.task?.resume?.ttlMs);if(Number.isFinite(l)&&l>=0&&l<d)t.resumeRequired=!0,t.resumeReason=t.resumeReason||"worker_interrupted",kt(t);else{st&&(clearTimeout(st),st=null),sn=0,vn();return}}let o=_u(C?.task?.autoResumePolicy),s=Pu(t.id),i=Ep({policy:o,resumeRequired:t.resumeRequired===!0,hasLiveRemoteController:s});if(i==="prompt_resume"&&(t.resumeReason==="agent_navigation"||t.resumeReason==="cross_host_navigation"||t.resumeReason==="worker_interrupted"||t.resumeReason==="page_reload")&&(i="auto_resume"),e?.overridePolicyAction&&i!=="defer_remote_owner"&&i!=="noop"&&(i=e.overridePolicyAction),i==="defer_remote_owner"){yi(650,e);return}if(i==="cancel_resume"){bi("resume_policy_never","Previous task cancelled by resume policy."),et({kind:"info",title:"Resume cancelled",detail:"Auto-resume policy is set to never, so the interrupted run was cancelled.",status:"info"});return}if(!an&&yT(t)&&(an=!0),!an&&(t.resumeReason==="worker_interrupted"||t.resumeReason==="agent_navigation"||t.resumeReason==="page_reload")&&(an=!0),!an&&vT(t)){yi(320,e);return}if(an||(an=!0),s){yi(650,e);return}if(st&&(clearTimeout(st),st=null),!Rs&&!e?.overridePolicyAction){if(sn+=1,Vt("status",{event:"resume_blocked_no_session",reason:"session_not_ready",attempt:sn,runId:t.id}),sn<Fv){Tt("Preparing secure resume...");let l=Math.min(2e3,240+sn*160);yi(l,e);return}sn=0,Yt=!1,Rs=!0}sn=0;let a=mc(C?.task?.resume?.ttlMs),c=Date.now()-Number(t.startedAt||0);if(!Number.isFinite(c)||c<0||c>a){bi("resume_ttl_expired","Previous task expired.");return}if(t.attempts>=Dv){bi("resume_attempt_limit","Previous task dismissed.");return}if(i==="prompt_resume"){mk(t)&&(Tt("Resume available. Choose Resume or Cancel."),Vt("status",{event:"resume_prompt_shown",runId:t.id}));return}Ik(t,e?.overridePolicyAction==="auto_resume"?"manual_resume_confirm":`policy_${o}`)}function Jm(e){if(!Ul({localUpdatedAt:Number(e.localState.updatedAt)||0,incomingUpdatedAt:Number(e.incomingState.updatedAt)||0,localState:e.localState,incomingState:e.incomingState,crossDomainResumeActive:!!e.allowRicherIncomingOnResume&&Yt}))return!1;if(!e.allowRicherIncomingOnResume||!Yt)return!0;let n=Bl({localState:e.localState,incomingState:e.incomingState});return n.exactRunMatch||n.exactBoundaryMatch?!0:!(n.localRunId||n.localBoundaryId)}function am(e,t,n,r,o){return{pendingRun:o?.includePendingIdentity!==!1&&t?{id:t.id,resumeRequired:t.resumeRequired,taskBoundaryId:t.taskBoundaryId}:void 0,activeTask:n?{status:n}:void 0,workerState:e,taskEpoch:r}}function Zm(e){return e.incomingWorkerState?e.localWorkerState?Ul({localUpdatedAt:Number(e.localUpdatedAt)||Number(e.localWorkerState.updatedAt)||0,incomingUpdatedAt:Number(e.incomingUpdatedAt)||Number(e.incomingWorkerState.updatedAt)||0,localState:am(e.localWorkerState,e.fallbackPendingRun,e.taskStatus,e.taskEpoch,{includePendingIdentity:!0}),incomingState:am(e.incomingWorkerState,void 0,e.taskStatus,e.taskEpoch,{includePendingIdentity:!1}),crossDomainResumeActive:!!e.allowRicherIncomingOnResume&&Yt}):!0:!1}function eh(e){if(po(e.localState.activeTask,cn("compat_local")).status!=="running")return!0;let n=Math.max(1,Number(e.localState.taskEpoch)||1),r=Math.max(1,Number(e.incomingState.taskEpoch)||1);if(r<n)return!1;if(r>n)return!0;let o=Ae(Wo(e.localState)),s=Ae(Wo(e.incomingState));return o&&s?o===s:!(o&&!s||!o&&s)}async function xk(e,t){if(!u)return;let n=await JT(e,t);if(!n||!u)return;let r=Ci({...n,sessionId:u.sessionId,runtimeId:Ve},u.sessionId,Ve);if(!Jm({localState:u,incomingState:r,allowRicherIncomingOnResume:!0})||!eh({localState:u,incomingState:r}))return;let o=Math.max(1,Number(u.taskEpoch)||1),s=Math.max(1,Number(r.taskEpoch)||1),i=Wo(r);Fo({source:"indexeddb_checkpoint",incomingBoundaryId:i,taskEpochAdvanced:s>o,allowBootstrapAdoption:!0})&&(u=Ci({...u,...r,sessionId:u.sessionId,runtimeId:Ve},u.sessionId,Ve),Di(u),Cs({rotateIfMissing:!Ce}),zo({persist:!1}),Lu({preferredTaskId:r.activeTaskId||r.activeTask?.taskId}),xe(),X&&(X.clearMessages(),Sc(u.uiMessages),Rc(u.timeline),Ac(u),Ds(),u.uiHidden?X.hide():(X.show(),u.uiOpen?X.open():X.close())),Wn&&Be&&qn(),Wn&&Be&&u.workerState&&it==="controller"&&(Be.postMessage({type:"hydrate_state",state:u.workerState}),qe("context_restored",{source:"indexeddb_checkpoint",ts:Date.now()})))}var jl=!1;function Bu(e,t){if(u&&!jl){jl=!0;try{if(t==="remote"){let r=Math.max(1,Number(u.taskEpoch)||1),o=Math.max(1,Number(e.taskEpoch)||1),s=o>r;u.taskEpoch=Math.max(r,o);let i=u.activeTask||cn("shared_sync");u.activeTask=qm(e.task,i),s&&(u.uiMessages=[],u.timeline=[],Du(),kt(void 0),u.workerState=void 0,Ce=sr(),u.taskTabScope=void 0,Cn({forceReset:!0,persist:!1}),qn(),vn());let a=nr(e.uiMessages),c=new Set(a.map(S=>S.id)),l=u.uiMessages,d=u.uiMessages.filter(S=>S.role==="user"&&S.sourceRuntimeId===Ve&&!c.has(S.id)).length;d>0&&Vt("status",{event:"local_message_preserved",count:d});let p=ek(l,a);(p.length!==l.length||p.some((S,F)=>{let $=l[F];return $?$.id!==S.id||$.ts!==S.ts||$.role!==S.role||$.text!==S.text:!0}))&&(u.uiMessages=p,X?.clearMessages(),Sc(u.uiMessages));let m=rr(e.timeline),g=u.timeline,T=nk(g,m);(T.length!==g.length||T.some((S,F)=>{let $=g[F];return $?$.id!==S.id||$.ts!==S.ts||$.kind!==S.kind||$.title!==S.title||$.detail!==S.detail:!0}))&&(u.timeline=T,Rc(u.timeline)),Tt(typeof e.transientStatus?.text=="string"?String(e.transientStatus.text):typeof e.uiStatus=="string"?e.uiStatus:void 0,{publishShared:!1,runId:e.transientStatus?.runId||e.activeRun?.runId,taskId:e.transientStatus?.taskId||e.task?.taskId,stage:e.transientStatus?.stage});let N=u.activeTask?.status,A=e.task?.status;if(e.activeRun&&e.activeRun.runtimeId!==Ve&&!Dl({localTaskStatus:N,remoteTaskStatus:A,mode:it,hasRemoteActiveRun:!0}))if(String(e.activeRun.runtimeId||"").trim()!==""||wr()||Pi(it)==="observer")kt(void 0);else{let $=ze(u.pendingRun),Q=Ae(e.workerContext?.taskBoundaryId),oe=$?.id===e.activeRun.runId&&(!$?.taskBoundaryId||Ae($.taskBoundaryId)===(Q||Ae(Ce))),me=oe?$?.resumeRequired===!0:String(e.activeRun.runtimeId||"").trim()==="";kt(ze({id:e.activeRun.runId,text:e.activeRun.text,startedAt:e.activeRun.startedAt,attempts:oe&&$?.attempts||0,autoResume:!0,taskBoundaryId:(oe?$?.taskBoundaryId:void 0)||Q||$?.taskBoundaryId||Ce,resumeRequired:me,resumeReason:oe?$?.resumeReason:me?"agent_navigation":void 0}))}else{let S=Dl({localTaskStatus:N,remoteTaskStatus:A,mode:it,hasRemoteActiveRun:!!e.activeRun}),$=ze(u.pendingRun)?.resumeRequired===!0&&Wa(N);S&&!$&&(u.pendingRun?.id&&fo(u.pendingRun.id),kt(void 0),A&&A!=="running"&&Fi())}if(it==="observer"&&Vo("observer",{localLogicalTabId:R?.getLocalLogicalTabId(),activeLogicalTabId:R?.getActiveLogicalTabId(),holderRuntimeId:R?.getCurrentHolderRuntimeId()}),e.workerContext){let S=Mt(e.workerContext),F=Number(u.workerState?.updatedAt)||0,$=Number(S?.updatedAt)||0;S&&Zm({localWorkerState:u.workerState,incomingWorkerState:S,fallbackPendingRun:ze(u.pendingRun),taskStatus:u.activeTask?.status,taskEpoch:u.taskEpoch,localUpdatedAt:F,incomingUpdatedAt:$,allowRicherIncomingOnResume:!0})&&Fo({source:"shared_worker_context",incomingBoundaryId:S.taskBoundaryId,taskEpochAdvanced:s,allowBootstrapAdoption:!0})&&(u.workerState=tr(S,yn()),Cs(),Wn&&Be&&it==="controller"&&(qn(),Be.postMessage({type:"hydrate_state",state:u.workerState}),qe("context_restored",{source:"shared_session",ts:Date.now()})))}}if(u.uiMessages=nr(u.uiMessages),u.timeline=rr(u.timeline),u.workerState=tr(Mt(u.workerState),yn()),Di(u),Cs(),zo({persist:!1}),Wn&&Be&&it==="controller"&&qn(),ar(),Ds(),u.activeTask=po(u.activeTask,cn("implicit")),Lu(),R&&G){let r=new Map;for(let o of G.listTasks())for(let s of o.tabIds)r.set(s,o.taskId);R.setTaskTabMapping(r)}let n=C?.ui?.tabIndicator?.widgetTabBar!==!1;if(X&&e.tabs&&n){let r=R?.getLocalLogicalTabId(),o=R?.getActiveLogicalTabId(),s=(e.tabs||[]).filter(i=>i&&typeof i.logicalTabId=="number").map(i=>({logicalTabId:i.logicalTabId,url:String(i.url||""),title:typeof i.title=="string"?i.title:void 0,isActive:i.logicalTabId===o,isCurrent:i.logicalTabId===r,external:!!i.external,taskId:G?.getTaskForTab(i.logicalTabId)?.taskId}));s.length>1?X.setTabs(s):X.setTabs([])}else X&&X.setTabs([]);if(t==="local")return;xe()}finally{jl=!1}}}function Uu(e){let t=cn("checkpoint_clone");return{version:hu,sessionId:e.sessionId,runtimeId:e.runtimeId,uiOpen:!!e.uiOpen,uiHidden:!!e.uiHidden,uiStatus:typeof e.uiStatus=="string"?Jt(e.uiStatus,300):void 0,transientStatus:Bi(e.transientStatus??e.uiStatus,{runId:e.pendingRun?.id,taskId:e.activeTask?.taskId}),uiMessages:nr(e.uiMessages),timeline:rr(e.timeline),executionMode:e.executionMode==="observer"||e.executionMode==="controller"?e.executionMode:"controller",workerState:Mt(e.workerState),pendingRun:ze(e.pendingRun),taskTabScope:Ps(e.taskTabScope,ze(e.pendingRun)?.taskBoundaryId||Mt(e.workerState)?.taskBoundaryId),lastNavigationHandoff:zr(e.lastNavigationHandoff),tasks:e.tasks?{...e.tasks}:{},activeTaskId:e.activeTaskId,taskOrder:e.taskOrder?[...e.taskOrder]:[],taskEpoch:Math.max(1,Number(e.taskEpoch)||1),activeTask:po(e.activeTask,t),lastRoutingDecision:e.lastRoutingDecision&&(e.lastRoutingDecision.mode==="act"||e.lastRoutingDecision.mode==="planner")?{mode:e.lastRoutingDecision.mode,score:Number(e.lastRoutingDecision.score)||void 0,reason:e.lastRoutingDecision.reason,ts:Number(e.lastRoutingDecision.ts)||Date.now()}:void 0,updatedAt:Number(e.updatedAt)||Date.now()}}function Sk(e){return!(e.sessionScope==="tab"||e.checkpointing?.enabled===!1||!ir(e)||!Ct)}function Rk(){if(!u||!C||!Ct)return null;let e=R?.getState(),t=Uu(u),n=Math.max(Number(e?.updatedAt||0),Number(t.updatedAt||0)),r=n>0?n:Date.now();return{version:lm,siteId:C.siteId,visitorId:Ct,sessionId:u.sessionId,updatedAt:r,sharedState:e,runtimeState:t}}function th(e){if(!e||typeof e!="object"||!u||!C||e.siteId&&e.siteId!==C.siteId||Ct&&e.visitorId&&e.visitorId!==Ct)return;let t=typeof e.sessionId=="string"&&e.sessionId.trim()?e.sessionId.trim():u.sessionId;Ss=!0;try{if(t&&u.sessionId!==t&&(u.sessionId=t,C={...C,sessionId:t},yc(C),qn({sessionId:t})),e.sharedState&&R&&R.hydrateExternalState(e.sharedState)&&(Bu(R.getState(),"remote"),Vo(R.getRole(),{localLogicalTabId:R.getLocalLogicalTabId(),activeLogicalTabId:R.getActiveLogicalTabId(),holderRuntimeId:R.getCurrentHolderRuntimeId()})),e.runtimeState&&typeof e.runtimeState=="object"){let n=Ci({...e.runtimeState,sessionId:t,runtimeId:Ve},t,Ve);if(Jm({localState:u,incomingState:n,allowRicherIncomingOnResume:!0})){if(!eh({localState:u,incomingState:n}))return;let r=Math.max(1,Number(u.taskEpoch)||1),o=Math.max(1,Number(n.taskEpoch)||1),s=Wo(n);if(!Fo({source:"cloud_checkpoint",incomingBoundaryId:s,taskEpochAdvanced:o>r,allowBootstrapAdoption:!0}))return;u=Ci({...u,...n,sessionId:t,runtimeId:Ve},t,Ve),Di(u),Cs(),u.workerState=tr(u.workerState,yn()),zo({persist:!1}),Lu({preferredTaskId:n.activeTaskId||n.activeTask?.taskId}),xe(),Ac(u),u.uiHidden?X?.hide():(X?.show(),u.uiOpen?X?.open():X?.close()),Wn&&qn(),Wn&&u.workerState&&(Be?.postMessage({type:"hydrate_state",state:u.workerState}),qe("context_restored",{source:"cloud_checkpoint",ts:Date.now()})),it==="controller"&&_r(),Yt=!1}}}finally{Ss=!1}}function Fu(e){if(mt?.stop(),mt=null,!Sk(e)||!Ct)return;let t=ir(e);if(!t){qe("checkpoint_token_missing",{reason:"missing_or_invalid_session_token",expectedPrefix:"rvrsess_",action:"disabled_cloud_checkpoint_client"});return}try{let n=r=>{qe("checkpoint_state",r),e.checkpointing?.onStateChange?.(r)};mt=new Ua({apiBase:e.apiBase,authToken:t,getSessionToken:()=>ir(C),shouldSync:()=>it==="controller"&&!Yt&&!Ns(),siteId:e.siteId,visitorId:Ct,ttlHours:e.checkpointing?.ttlHours??1,flushIntervalMs:e.checkpointing?.flushIntervalMs,pullIntervalMs:e.checkpointing?.pullIntervalMs,minFlushIntervalMs:e.checkpointing?.minFlushIntervalMs,maxSnapshotBytes:Ms(e.stability?.maxSnapshotBytes,ft.snapshotBytes),shouldWrite:()=>it==="controller"&&!Yt&&!Ns(),buildCheckpoint:()=>Rk(),onCheckpoint:r=>{th(r)},onStateChange:(r,o)=>{n({state:r,reason:o.reason,action:o.action,code:o.code,message:o.message}),r==="paused_auth"&&qe("checkpoint_error",{action:o.action,code:o.code||"INVALID_API_KEY",message:o.message||"Checkpoint sync paused due to auth failure.",disabled:!0,reason:o.reason||"auth_failed"})},onError:(r,o)=>{e.checkpointing?.onError?.(o),o.paused||qe("checkpoint_error",{action:o.action,code:o.code,message:o.message,status:o.status,disabled:!1,reason:"transient_failure"})}}),mt.start(),mt.markDirty(),Nm()}catch{mt=null}}function yc(e){if(!u)return;if(R?.stop(),R=null,e.sessionScope==="tab"){Vo("controller");return}R=new Oa({siteId:e.siteId,sessionId:u.sessionId,runtimeId:Ve,leaseMs:e.tabPolicy?.actionLeaseMs,onRoleChange:(r,o)=>{let s=Pi(r);Vo(s,o);let i=Zn;Zn=s==="controller",i!==Zn&&(Zn?(ar(!0),C&&Mu(C)):ar(!0));let a=s==="controller"&&(C?.allowActions??!0);if(Xe?.setAllowActions(a),Xe?.setActionGateContext?.({mode:s,controllerRuntimeId:o?.holderRuntimeId??R?.getCurrentHolderRuntimeId(),activeLogicalTabId:o?.activeLogicalTabId??R?.getActiveLogicalTabId(),localLogicalTabId:o?.localLogicalTabId??R?.getLocalLogicalTabId(),reason:Oi(s,a)}),s==="controller"){Cn({persist:!0,appendSeed:!1}),zo({persist:!0});let c=R?.getWorkerContext();if(c){let l=Mt(c),d=Number(u?.workerState?.updatedAt)||0,p=Number(l?.updatedAt)||0;l&&p>d+100&&Fo({source:"controller_handoff",incomingBoundaryId:l.taskBoundaryId,allowBootstrapAdoption:!0})&&(u&&(u.workerState=tr(l,yn()),Cs(),xe()),Wn&&Be&&(qn(),Be.postMessage({type:"hydrate_state",state:u?.workerState}),qe("context_restored",{source:"controller_handoff",ts:Date.now()})))}_r()}},onStateChange:(r,o)=>{Bu(r,o)},onSwitchRequested:r=>{r>0&&(Lc(),et({kind:"status",title:`Switched to tab #${r}`,status:"info"}))},onTaskTabsExhausted:r=>{G&&(G.dispatch(r,{type:"PAUSE",reason:"all_tabs_closed"}),ro(),xe(),X?.showPausedTaskBanner({taskId:r,rootUserInput:G.getTask(r)?.rootUserInput||"Task"}))}}),R.onSessionTokenReceived=(r,o)=>{Zn||hc(r,o)},R.onProjectionReceived=r=>{!Zn&&r&&ou(r)};let t=vu();R.start(hm(t)),Cn({persist:!0,appendSeed:!1}),zo({persist:!0}),ze(u?.pendingRun)?.resumeRequired===!0&&R.requestControl(),u?.lastNavigationHandoff&&t&&(u.lastNavigationHandoff=zr({...u.lastNavigationHandoff,consumed:!0}),xe()),R.setRpcRequestHandler(async r=>{if(!Xe)throw new Error("Bridge not available");if(r.method==="getPageData")return Xe.getPageData(r.params);if(r.method==="executeTool")return Xe.executeTool(r.params.call,r.params.payload);throw new Error(`Unknown RPC method: ${r.method}`)}),u?.activeTask&&R.syncTask({...u.activeTask,taskId:u.activeTask.taskId},u.taskEpoch),u?.workerState&&R.setWorkerContext(Ui(u.workerState))}function Ak(e){e&&Zr.delete(e),X?.clearTimeline(),u&&(u.timeline=[]),R?.clearTimeline()}function Ck(e){if(!(!e||typeof e!="object")&&!WT(e)){if(e.type==="assistant"){let t=lo(e.blocks),n=String(e.text||Um(t)||"");typeof e.runId=="string"&&e.runId&&(Zr.set(e.runId,n),pm(Zr,uT)),Hn("assistant",n,!0,{blocks:t}),et({kind:"tool_result",title:"Assistant update",detail:n,detailBlocks:t,status:"success"});return}if(e.type==="status"){let t=MT(e.stage),n=e.message?String(e.message):void 0,r=e.compactThought?String(e.compactThought):void 0,o=LT(n,t,r);if(n&&Tt(n,{runId:typeof e.runId=="string"?e.runId:u?.pendingRun?.id,taskId:u?.activeTask?.taskId,stage:t}),o&&o!==Xa&&(Xa=o,n)){let s=!!(e.thought||r),i=r||(e.thought?String(e.thought):"");if(s&&t!=="analyze"&&t!=="route"&&t!=="complete"&&!DT(i,$t))et({kind:"thought",title:i,detail:e.thought?String(e.thought):r,status:"pending"});else{let c=t?`${NT(t)}: ${n}`:n;et({kind:"status",title:c,detail:r||(e.thought?String(e.thought):void 0),status:t==="complete"?"success":"info"})}}qe("status",e);return}if(e.type==="runtime_tabs_diagnostics"){let t=e?.diagnostics&&typeof e.diagnostics=="object"?e.diagnostics:{},n=An(t.keptScopedTabIds||[]),r=An(t.listedTabIds||[]),o=An(t.resolvedTabOrder||[]),s=n.filter(i=>!r.includes(i));s.length>0&&(et({kind:"status",title:"Scoped tab placeholder retained",detail:`missing_in_listing=${s.join(",")}; resolved_order=${o.join(",")||"none"}`,status:"info"}),Vt("status",{event:"scoped_tab_missing_from_listing",missingScopedTabIds:s,listedTabIds:r,resolvedTabOrder:o}));return}if(e.type==="tool_start"){et({kind:"tool_start",title:`Running ${e.call?.name||"tool"}`,detail:sc(e.call?.args),status:"pending"}),qe("tool_start",e);return}if(e.type==="tool_result"){if(!QT(e.result)){let n=An([...KT(e.call?.args),...YT(e.result)]);n.length&&(Km(n,{persist:!0}),qn())}let t=lo(e.detailBlocks)||XT(e.result);et({kind:"tool_result",title:`${e.call?.name||"tool"} completed`,detail:sc(e.result),detailBlocks:t,status:e?.result?.success===!1?"error":"success"}),qe("tool_result",e);return}if(e.type==="auth_required"){qe("auth_required",e.error),e.error?.message&&(Hn("system",`Auth required: ${e.error.message}`,!0),et({kind:"error",title:"Auth required",detail:String(e.error.message),status:"error"}));return}if(e.type==="navigation_guardrail"){qe("navigation_guardrail",e),et({kind:"status",title:"Navigation guardrail",detail:sc(e),status:"info"});return}if(e.type==="error"){Hn("system",`Error: ${e.message||"unknown"}`,!0),et({kind:"error",title:"Execution error",detail:String(e.message||"unknown"),status:"error"}),qe("error",e);return}if(e.type==="state_snapshot"){if(u){let t=Mt({...e.state||{},updatedAt:Date.now()});if(!t||!Fo({source:"worker_snapshot",incomingBoundaryId:t.taskBoundaryId,allowBootstrapAdoption:!0}))return;u.workerState=tr(t,yn());let n=typeof e?.activeRun?.runId=="string"&&e.activeRun.runId?e.activeRun.runId:void 0,r=typeof e?.activeRun?.text=="string"?e.activeRun.text:void 0,o=xp({taskStatus:u.activeTask?.status,hasPendingRun:!!u.pendingRun,activeRunId:n,activeRunText:r,ignoredRunIds:er});if(o&&(u.pendingRun=ze({id:n,text:r,startedAt:e.activeRun.startedAt,attempts:0,autoResume:!0})),n&&r&&o?R?.setActiveRun({runId:n,text:r}):n&&(!eo()||er.has(n))&&R?.setActiveRun(void 0),!eo()&&u.pendingRun&&kt(void 0),u.workerState&&R?.setWorkerContext(Ui(u.workerState)),G&&t?.taskBoundaryId){let s=G.getTaskByBoundaryId(t.taskBoundaryId);s&&(s.workerState=u.workerState,n&&(s.pendingRun=u.pendingRun))}Ds(),xe()}return}if(e.type==="task_started"){qe("task_started",{taskId:e.taskId,reason:"worker"});return}if(e.type==="run_started"){if(Xa="",vn(),typeof e.runId=="string"&&e.runId&&Zr.delete(e.runId),!eo()){R?.setActiveRun(void 0);return}let t=u?.pendingRun,n=typeof e?.taskBoundaryId=="string"?Ae(e.taskBoundaryId):void 0;typeof e.runId=="string"&&e.runId&&su(e.runId),kt(ze({id:e.runId,text:e.text,startedAt:t?.startedAt||Date.now(),attempts:t?.attempts||0,autoResume:t?.autoResume!==!1,taskBoundaryId:n||t?.taskBoundaryId||Ce,resumeReason:t?.resumeReason,resumeRequired:t?.resumeRequired})),R?.setActiveRun({runId:e.runId,text:String(e.text||"")}),X?.setRunning(!0),X?.setQuestionPrompt(void 0);let r=`run:${String(e.runId||"")}:start`;if(u?.timeline.some(o=>o.id===r)||et({id:r,kind:"plan",title:e.resume?"Run resumed":"Run started",detail:String(e.text||""),status:"pending"}),G&&n){let o=G.getTaskByBoundaryId(n);o&&(o.pendingRun=u?.pendingRun,G.dispatch(o.taskId,{type:"START"}))}return}if(e.type==="run_completed"||e.type==="run_state_transition"){Xa="",or=!1,sn=0;let t=zT(e),n=t.terminalState,r=t.continuationReason,o=e?.ok===!1||n==="completed"||n==="failed",s=!o&&n==="in_progress"&&r!=="awaiting_user";X?.setRunning(s),ht&&(clearTimeout(ht),ht=null);let i=typeof e.runId=="string"&&e.runId?e.runId:void 0,a=typeof e?.taskBoundaryId=="string"?Ae(e.taskBoundaryId):void 0;if(o){let c=ze(u?.pendingRun),l=String(c?.text||$t||"").trim(),d=String((i?Zr.get(i):"")||"").trim();Ho=l||Ho,qo=d||qo,As=Date.now(),c?.id&&R?.releaseWorkflowLock(c.id),i&&R?.releaseWorkflowLock(i),kt(void 0),io(void 0),R?.setActiveRun(void 0),vn(),i&&fo(i)}else if(eo()&&i){su(i),io(i);let c=u?.pendingRun,l=c?.id===i&&c?.text?c.text:$t||c?.text||"Continue task";kt(ze({id:i,text:l,startedAt:c?.startedAt||Date.now(),attempts:c?.attempts||0,autoResume:c?.autoResume!==!1,taskBoundaryId:a||c?.taskBoundaryId||Ce,resumeRequired:n==="in_progress"&&r==="same_tab_navigation_handoff",resumeReason:n==="in_progress"&&r==="same_tab_navigation_handoff"?c?.resumeReason||"agent_navigation":void 0})),R?.setActiveRun({runId:i,text:l})}if(u&&e?.route&&(e.route.mode==="act"||e.route.mode==="planner")&&(u.lastRoutingDecision={mode:e.route.mode,score:Number(e.route.score)||void 0,reason:typeof e.route.reason=="string"?Jt(e.route.reason,200):void 0,ts:Date.now()},xe()),!e.ok&&e.error){if(i&&Zr.delete(i),i&&(co(i,"worker_run_failed",{attemptImmediately:!0}),ye?.controlRun({action:"cancel",runId:i,reason:"worker_run_failed"})),!eo())return;X?.setQuestionPrompt(void 0),t.contextResetRecommended?(Qa("worker_run_failed_terminal"),R?.resetTabsToCurrent(window.location.href,document.title||void 0),Tt(void 0)):(Qa("worker_run_failed_terminal"),Tt(void 0)),i&&Zr.delete(i),et({kind:"error",title:"Run failed",detail:String(e.error),status:"error"})}else if(e.ok){if(!eo())return;let c=t.taskComplete,l=t.needsUserInput,d=t.questions||Vr(e.questions),p=Vr(u?.workerState?.pendingAskUser?.questions),v=d.length?d:l?p:[];if(n==="failed")i&&(co(i,"worker_terminal_failed",{attemptImmediately:!0}),ye?.controlRun({action:"cancel",runId:i,reason:"worker_terminal_failed"})),X?.setQuestionPrompt(void 0),t.contextResetRecommended?(Qa("worker_run_failed_terminal"),R?.resetTabsToCurrent(window.location.href,document.title||void 0),Tt(void 0)):(Qa("worker_run_failed_terminal"),Tt(void 0)),et({kind:"error",title:"Run failed",detail:typeof e.error=="string"?e.error:"Run reported failure state.",status:"error"});else if(c||n==="completed")i&&ye?.controlRun({action:"end_task",runId:i,reason:"worker_task_complete"}),X?.setQuestionPrompt(void 0),fk("worker_task_complete"),R?.resetTabsToCurrent(window.location.href,document.title||void 0),Tt(void 0),Ak(typeof e.runId=="string"?e.runId:void 0);else{let m=l?"worker_waiting_for_input":r==="same_tab_navigation_handoff"?"worker_navigation_handoff":n==="in_progress"?"worker_loop_continue":"worker_task_active";if(l){if(G){let g=G.getActiveTask();g&&G.dispatch(g.taskId,{type:"ASK_USER"})}mo({type:"awaiting_user",reason:m,at:Date.now()})}else zm(m);l&&v.length>0?X?.setQuestionPrompt({questions:v}):l?Ds():X?.setQuestionPrompt(void 0),l?(Tt(void 0),et({kind:"status",title:"Waiting for your input",detail:v.length?`Please answer: ${v.map(g=>`${g.key} (${g.query})`).join("; ")}`:"Planner requested more information before marking the task complete.",status:"info"})):r==="same_tab_navigation_handoff"?(Tt("Navigating to continue task..."),et({kind:"status",title:"Navigation handoff",detail:"Rover will resume after same-tab navigation completes.",status:"pending"})):Tt("Working...")}}if(G&&a){let c=G.getTaskByBoundaryId(a);if(c)if(o){let l=n==="completed"?{type:"COMPLETE"}:{type:"FAIL",error:typeof e.error=="string"?e.error:void 0};G.dispatch(c.taskId,l),G.releaseWorker(c.taskId)}else t.continuationReason==="awaiting_user"&&G.dispatch(c.taskId,{type:"ASK_USER"})}ro();return}if(e.type==="ready"){Wn=!0,Tt(void 0),qe("ready"),C&&oh(C);let t=R?.getWorkerContext(),n=tr(Mt(t),yn()),r=n&&Fo({source:"ready_hydrate",incomingBoundaryId:n.taskBoundaryId,allowBootstrapAdoption:!0})?n:void 0,o=tr(Mt(u?.workerState),yn()),s=o&&Fo({source:"ready_hydrate",incomingBoundaryId:o.taskBoundaryId,allowBootstrapAdoption:!0})?o:void 0,i=Number(s?.updatedAt)||0,a=Number(r?.updatedAt)||0,c=r&&Zm({localWorkerState:s,incomingWorkerState:r,fallbackPendingRun:ze(u?.pendingRun),taskStatus:u?.activeTask?.status,taskEpoch:u?.taskEpoch,localUpdatedAt:i,incomingUpdatedAt:a,allowRicherIncomingOnResume:!0})?r:s;u&&(c&&c!==u.workerState?(u.workerState=tr(c,yn()),xe()):!c&&u.workerState&&(u.workerState=void 0,xe())),c?(Be?.postMessage({type:"hydrate_state",state:c}),qe("context_restored",{source:"runtime_start",ts:Date.now()}),setTimeout(()=>{or||_r()},500)):Yt&&mt?(Vt("status",{event:"checkpoint_pull_first"}),mt.syncPullFirst()):_r();return}if(e.type==="hydrated"){_r();return}e.type==="updated"&&qe("updated")}}function fu(e,t){let n=Number(e);return Number.isFinite(n)?Math.max(t.min,Math.min(t.max,Math.floor(n))):t.fallback}function Mc(e){if(!e||typeof e!="object")return;let t=fu(e.shortcutMaxStored,{min:1,max:lc,fallback:lc}),n=fu(e.shortcutMaxRendered,{min:1,max:uc,fallback:uc});return{shortcutMaxStored:t,shortcutMaxRendered:n}}function qr(e){return Ta(e)}function Mi(e){if(!e)return;let t=qr(Wr?.pageConfig),n=qr(e.pageConfig);return qr({...t||{},...n||{}})}function Mk(e){if(!Be||!e)return;let t=Mi(e),n=JSON.stringify(t||null);n!==Kl&&(Kl=n,Be.postMessage({type:"update_config",config:{...jo(),pageConfig:t}}))}function Hi(){_i&&(clearTimeout(_i),_i=null),Ei&&(clearTimeout(Ei),Ei=null)}function Nk(e){try{let t=localStorage.getItem(`rover:site-config:${e}`);if(t){let n=JSON.parse(t);return!n||typeof n.ts!="number"||typeof n.data!="object"||!n.data||Date.now()-n.ts>Yp?null:{shortcuts:uo(n.data.shortcuts),greeting:Os(n.data.greeting),limits:Mc(n.data.limits),pageConfig:qr(n.data.pageConfig),version:typeof n.version=="string"?n.version:void 0}}}catch{}try{let t=localStorage.getItem(`rover:shortcuts:${e}`);if(!t)return null;let n=JSON.parse(t);return!n||typeof n.ts!="number"||!Array.isArray(n.data)||Date.now()-n.ts>Yp?null:{shortcuts:uo(n.data)}}catch{return null}}function nh(e,t){try{localStorage.setItem(`rover:site-config:${e}`,JSON.stringify({ts:Date.now(),version:t.version,data:{shortcuts:uo(t.shortcuts),greeting:Os(t.greeting),limits:Mc(t.limits),pageConfig:qr(t.pageConfig)}}))}catch{}}function Os(e){if(!e||typeof e!="object")return;let t={},n=String(e.text||"").trim();n&&(t.text=n.slice(0,Kv));let r=Number(e.delay);Number.isFinite(r)&&(t.delay=Math.max(0,Math.min(6e4,Math.floor(r))));let o=Number(e.duration);return Number.isFinite(o)&&(t.duration=Math.max(1200,Math.min(6e4,Math.floor(o)))),typeof e.disabled=="boolean"&&(t.disabled=e.disabled),Object.keys(t).length?t:void 0}function Lk(e){if(!e||typeof e!="object")return null;let t=String(e.id||"").trim().slice(0,80),n=String(e.label||"").trim().slice(0,zv),r=String(e.prompt||"").trim().slice(0,Gv);if(!t||!n||!r)return null;let o={id:t,label:n,prompt:r,enabled:e.enabled!==!1};e.description&&(o.description=String(e.description).trim().slice(0,jv)),e.icon&&(o.icon=String(e.icon).trim().slice(0,Xv)),(e.routing==="auto"||e.routing==="act"||e.routing==="planner")&&(o.routing=e.routing);let s=Number(e.order);return Number.isFinite(s)&&(o.order=Math.trunc(s)),o}function uo(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(t.length>=lc)break;let o=Lk(r);!o||n.has(o.id)||(n.add(o.id),t.push(o))}return t}function Dk(e){return e.map((t,n)=>({item:t,index:n})).sort((t,n)=>{let r=Number.isFinite(t.item.order),o=Number.isFinite(n.item.order);return r&&o?Number(t.item.order)-Number(n.item.order):r?-1:o?1:t.index-n.index}).map(t=>t.item)}function Ok(e,t){let n=new Map;for(let r of t)n.set(r.id,r);for(let r of e){let o=n.get(r.id);n.set(r.id,o?{...o,...r}:r)}return Dk(Array.from(n.values())).slice(0,lc)}function rh(e){let t=fu(Wr?.limits?.shortcutMaxRendered,{min:1,max:uc,fallback:uc});return e.filter(n=>n.enabled!==!1).slice(0,t)}function Nc(e){if(!e)return;let t=Os(Wr?.greeting),n=Os(e.ui?.greeting);if(!(!t&&!n))return{...t||{},...n||{}}}function Hu(e){let t=Tr?.name,n=e?.text;return n?n.replace(/\{name\}/g,t||"").trim()||(t?`Hey ${t}! Need any help?`:"Hey! Need any help?"):t?`Hey ${t}! Need any help?`:"Hey! Need any help?"}function Ni(){if(ao||!X||!C||u?.uiOpen)return;let e=Nc(C);if(e?.disabled===!0)return;let t=`rover:greeting-shown:${C.siteId}`;try{if(sessionStorage.getItem(t)){Uo=!0;return}}catch{}if(Uo)return;Hi();let n=e?.delay??3e3,r=e?.duration??8e3,o=Hu(e);_i=setTimeout(()=>{if(_i=null,!(ao||u?.uiOpen)){X?.showGreeting(o),Uo=!0;try{sessionStorage.setItem(t,"1")}catch{}Ei=setTimeout(()=>{Ei=null,X?.dismissGreeting()},r)}},n)}function vc(e){let t=uo(e.ui?.shortcuts||[]),n=uo(Wr?.shortcuts||[]),r=Ok(t,n);X?.setShortcuts(rh(r)),Mk(e)}async function Pk(e){let t=null,n=ru(e)||ir(e);if(!n)return null;let r={siteId:e.siteId,sessionId:u?.sessionId||e.sessionId,requestedSessionId:u?.sessionId||e.sessionId,host:window.location.hostname,url:window.location.href,pageUrl:window.location.href};n.startsWith("rvrsess_")?r.sessionToken=n:r.bootstrapToken=n;let o=ci(e.apiBase);for(let s of o)try{let i=await fetch(`${s}/session/open`,{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify(r)}),a=await i.json().catch(()=>{});if(!i.ok||!a?.success)continue;if(t=a?.data?.siteConfig||null,t)break}catch{}return t?{shortcuts:uo(t.shortcuts),greeting:Os(t.greeting),limits:Mc(t.limits),pageConfig:qr(t.pageConfig),version:t.version!=null?String(t.version):void 0}:null}function oh(e){let t=Nk(e.siteId);t&&(Wr=t),vc(e),Ni(),Pk(e).then(n=>{if(n&&(Wr=n,nh(e.siteId,n),vc(e),!ao)){let r=Nc(e);Uo&&!u?.uiOpen?X?.showGreeting(Hu(r)):Ni()}}).catch(()=>{})}function sh(e){if(!C)return;let t={...Tr,...e};t.name&&(t.name=String(t.name).trim().slice(0,120)),t.email&&(t.email=String(t.email).trim().slice(0,240)),Tr=t,ym(C.siteId,Tr),X?.setVisitorName(Tr.name||""),ao||(Uo&&!u?.uiOpen?X?.showGreeting(Hu(Nc(C))):Ni())}function Bk(e){if(yc(e),R){let c=Pi(R.getRole());it=c,Zn=c==="controller",u&&(u.executionMode=c)}Fu(e),wc(e),ar(!0);let t=(e.allowActions??!0)&&(R?R.isController():!0),n=c=>{if(!u)return;let l=ze(u.pendingRun);if(l){let g=ze({...l,taskBoundaryId:l.taskBoundaryId||Ce,resumeRequired:!0,resumeReason:c});return u.pendingRun=g,g&&R?.setActiveRun({runId:g.id,text:g.text}),g}let d=R?.getState().activeRun,p=String(ye?.getActiveRunId()||Li||d?.runId||"").trim();if(!p)return;let v=String(d?.text||$t||"Continue task").trim()||"Continue task",m=ze({id:p,text:v,startedAt:Date.now(),attempts:0,autoResume:!0,taskBoundaryId:Ce,resumeRequired:!0,resumeReason:c});return u.pendingRun=m,m&&R?.setActiveRun({runId:m.id,text:m.text}),m};Xe=new Ca({allowActions:t,runtimeId:Ve,allowedDomains:e.allowedDomains,domainScopeMode:Ai(e.domainScopeMode),externalNavigationPolicy:e.externalNavigationPolicy,crossHostPolicy:Ec(e.navigation?.crossHostPolicy),navigationDelayMs:e.timing?.navigationDelayMs,domSettle:{debounceMs:At(e.timing?.domSettleDebounceMs,8,500),maxWaitMs:At(e.timing?.domSettleMaxWaitMs,80,5e3),retries:At(e.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:At(e.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:At(e.timing?.sparseTreeRetryMaxAttempts,0,4)},registerOpenedTab:c=>R?.registerOpenedTab(c),switchToLogicalTab:c=>R?.switchToLogicalTab(c)||{ok:!1,reason:"No session coordinator"},listKnownTabs:()=>(R?.listTabs()||[]).map(c=>({logicalTabId:c.logicalTabId,runtimeId:c.runtimeId,url:c.url,title:c.title,external:!!c.external})),onNavigationGuardrail:c=>{if(qe("navigation_guardrail",c),et({kind:"status",title:"Navigation guardrail",detail:sc(c),status:"info"}),ye&&c?.blockedUrl){let l=om();if(!l)return;let d=String(window.location.hostname||"").toLowerCase(),p=(()=>{try{return new URL(String(c.blockedUrl)).hostname.toLowerCase()}catch{return}})();ye.sendTabEvent({runId:l,currentUrl:String(c.currentUrl||window.location.href),targetUrl:String(c.blockedUrl),message:String(c.reason||""),currentHost:d||void 0,targetHost:p,isCrossHost:!!p&&!!d&&p!==d}).then(v=>{v&&(v.retryAttempted&&qe("tab_event_conflict_retry",{runId:v.runId||l,decisionReason:v.decisionReason,conflict:v.conflict}),v.retryExhausted&&qe("tab_event_conflict_exhausted",{runId:v.runId||l,decisionReason:v.decisionReason,conflict:v.conflict}))}).catch(()=>{})}},onBeforeAgentNavigation:async c=>{let l=om(),d=String(window.location.hostname||"").toLowerCase();if(c?.targetUrl&&Fp(c.targetUrl,d)){let $=Hl(c.targetUrl,d);return Vt("navigation_guardrail",{event:"adversarial_blocked",targetUrl:c.targetUrl,score:$.score,reasons:$.reasons}),{decision:"block",reason:`Navigation blocked: suspicious URL detected (adversarial score ${$.score}).`,decisionReason:"adversarial_block"}}if(c?.isCrossHost){let $=Date.now();for(Do.push($);Do.length>0&&Do[0]<$-Zp;)Do.shift();if(Do.length>cT)return Vt("navigation_guardrail",{event:"rapid_cross_origin_blocked",targetUrl:c.targetUrl,count:Do.length}),{decision:"block",reason:`Navigation blocked: too many cross-origin navigations (${Do.length} in ${Zp/1e3}s).`,decisionReason:"rapid_cross_origin_block"}}let p=(()=>{try{return new URL(String(c?.targetUrl||"")).hostname.toLowerCase()}catch{return}})(),v=!!d&&!!p&&fi(d)!==fi(p),m=!!d&&!!p&&d!==p,T=jp({host:p,currentHost:d,allowedDomains:C?.allowedDomains,domainScopeMode:C?.domainScopeMode})?m&&C?.navigation?.crossHostPolicy==="open_new_tab"?"open_new_tab":"allow_same_tab":C?.externalNavigationPolicy==="block"?"block":C?.externalNavigationPolicy==="allow"?"allow_same_tab":"open_new_tab",D=ST(),N=T==="allow_same_tab";if(N&&u){if(vr=!0,zl($l(c)),n(c.isCrossHost?"cross_host_navigation":"agent_navigation"),Qt&&C?.siteId)try{sessionStorage.setItem(`rover:sess:${C.siteId}`,JSON.stringify({t:Qt,e:kr}))}catch{}if(G){let $=G.getActiveTask();$&&G.dispatch($.taskId,{type:"NAVIGATION_STARTED",targetUrl:c.targetUrl,isCrossHost:c.isCrossHost})}xs("same_tab_navigation_handoff_early")}let A=null;if(c?.targetUrl&&ye&&l){let $=!!p&&!!d&&p!==d;A=await ye.sendTabEvent({runId:l,currentUrl:window.location.href,targetUrl:c.targetUrl,message:D,currentHost:d||void 0,targetHost:p,isCrossHost:$}).catch(()=>null),A?.retryAttempted&&qe("tab_event_conflict_retry",{runId:A.runId||l,decisionReason:A.decisionReason,conflict:A.conflict,targetUrl:c.targetUrl}),A?.retryExhausted&&qe("tab_event_conflict_exhausted",{runId:A.runId||l,decisionReason:A.decisionReason,conflict:A.conflict,targetUrl:c.targetUrl})}let S=$p({crossRegistrableDomain:v,fallbackDecision:T,serverDecision:A?.decision,serverAvailable:!!A}),F=S.decision;if(F==="block")return N&&(vr=!1),{decision:"block",reason:S.failSafeBlocked?"Cross-domain navigation blocked because preflight policy check is unavailable.":A?.reason||"Navigation blocked by policy.",decisionReason:S.failSafeBlocked?"preflight_unavailable_block":A?.decisionReason||"policy_blocked"};if(F==="open_new_tab"){N&&(vr=!1),C?.tools?.web?.scrapeMode==="on_demand"&&ye&&c?.targetUrl&&Tk(c.targetUrl).catch(()=>{});let Q=S.decisionReason==="preflight_unavailable_fallback"&&!A;return{decision:"open_new_tab",reason:A?.reason||(Q?"Preflight is unavailable; using local policy to open in a new tab and preserve runtime continuity.":"Open in new tab to preserve runtime continuity."),decisionReason:A?.decisionReason||S.decisionReason||"open_new_tab"}}return!N&&u?(vr=!0,zl($l(c)),n(c.isCrossHost?"cross_host_navigation":"agent_navigation"),xs("same_tab_navigation_handoff")):N||(vr=!0),{decision:"allow_same_tab",reason:A?.reason||(S.decisionReason==="preflight_unavailable_fallback"&&!A?"Preflight is unavailable; allowing navigation using local policy.":"Navigation allowed."),decisionReason:A?.decisionReason||S.decisionReason||"allow_same_tab"}},onBeforeCrossHostNavigation:c=>{if(vr=!0,!u||!C)return;zl($l(c));let l=vu(),d=n("cross_host_navigation");vp(C.siteId,{sessionId:u.sessionId,sessionToken:Qt,sessionTokenExpiresAt:kr,openIntent:u.uiOpen?"preserve_if_running":void 0,targetUrl:String(c?.targetUrl||"").trim()||void 0,sourceHost:String(window.location.hostname||"").trim().toLowerCase()||void 0,handoffId:l?.handoffId||c?.handoffId,pendingRun:d?{id:d.id,text:d.text,startedAt:d.startedAt,attempts:d.attempts,taskBoundaryId:d.taskBoundaryId||Ce}:void 0,handoff:l?{handoffId:l.handoffId,sourceLogicalTabId:l.sourceLogicalTabId,runId:l.runId,targetUrl:l.targetUrl,createdAt:l.createdAt}:void 0,activeTask:u.activeTask?{taskId:u.activeTask.taskId,status:u.activeTask.status}:void 0,taskEpoch:u.taskEpoch,timestamp:Date.now()}),xs("cross_domain_handoff_pre_navigation")},instrumentationOptions:e.mode==="safe"?{observeInlineMutations:!1}:void 0});let r=it==="observer"?"observer":"controller";Xe?.setActionGateContext?.({mode:r,controllerRuntimeId:R?.getCurrentHolderRuntimeId(),activeLogicalTabId:R?.getActiveLogicalTabId(),localLogicalTabId:R?.getLocalLogicalTabId(),reason:Oi(r,t)});let o=new MessageChannel;Jf(o.port1,{getSnapshot:()=>Xe.getSnapshot(),getPageData:async c=>{let l=C||e,d=Number(c?.tabId),p=R?.getLocalLogicalTabId();if(!Number.isFinite(d)||d<=0||d===p||!R)return Xe.getPageData(c);let m=R.listTabs().find(g=>g.logicalTabId===d);if(!m){let g=xi().includes(d);return pi({logicalTabId:d,external:!1},g?"detached_runtime_placeholder":"target_tab_missing")}if(m.runtimeId===Ve)return Xe.getPageData(c);if(m.external&&l.externalNavigationPolicy!=="allow")return pi(m,"external_domain_inaccessible");if(!m.runtimeId||!R.isTabAlive(d))return pi(m,"target_tab_inactive");try{return await R.sendCrossTabRpc(m.runtimeId,"getPageData",c,15e3)}catch{return pi(m,"cross_tab_rpc_failed")}},executeTool:async c=>{let l=C||e,d=c?.payload?.forceLocal===!0,p=String(c?.call?.name||"").trim(),v=Number(c?.call?.args?.tab_id),m=R?.getActiveLogicalTabId(),g=Number.isFinite(v)&&v>0?v:m;if(_k(p)){let A=c?.call?.serverResult;return A?A.success?{success:!0,output:A.data}:{success:!1,error:A.error||"Server-side execution failed"}:Ek({call:c?.call,routeTabId:Number.isFinite(Number(g))?Number(g):void 0,runtimeCfg:l})}if(d)return Xe.executeTool(c.call,c.payload);let T=R?.getLocalLogicalTabId();if(!g||g===T||!R)return Xe.executeTool(c.call,c.payload);let N=R.listTabs().find(A=>A.logicalTabId===g);if(!N){let A=xi().includes(g);return mi(l,{logicalTabId:g,external:!1},A?"detached_runtime_placeholder":"target_tab_missing")}if(N.external&&l.externalNavigationPolicy!=="allow")return mi(l,N,"external_tab_action_blocked");if(N.runtimeId===Ve)return Xe.executeTool(c.call,c.payload);if(!N.runtimeId||!R.isTabAlive(g))return mi(l,N,"target_tab_inactive");try{return await R.sendCrossTabRpc(N.runtimeId,"executeTool",c,2e4)}catch{return mi(l,N,"cross_tab_execute_failed")}},executeClientTool:c=>Xe.executeClientTool(c.name,c.args),listClientTools:()=>Xe.listClientTools(),getTabContext:()=>{let c=R?.getLocalLogicalTabId(),l=R?.getActiveLogicalTabId();return{id:c||1,logicalTabId:c||1,activeLogicalTabId:l||c||1,runtimeId:Ve,mode:it,url:window.location.href,title:document.title}},listSessionTabs:()=>{if(!R)return[];let c=R.listTabs({scope:"all"}),l=Array.isArray(R.getState()?.tabs)?R.getState().tabs:[],d=new Set(xi()),p=new Map,v=m=>{let g=Number(m?.logicalTabId||m?.id);!Number.isFinite(g)||g<=0||p.set(g,{...p.get(g)||{},...m,logicalTabId:g,id:g})};for(let m of c)v(m);for(let m of l){let g=Number(m?.logicalTabId);!Number.isFinite(g)||g<=0||(m.runtimeId||m.external||d.has(g))&&v(m)}return[...p.values()].sort((m,g)=>Number(m.logicalTabId)-Number(g.logicalTabId))}}),o.port1.start?.();let s=e.workerUrl?e.workerUrl:new URL("./worker/worker.js",import.meta.url).toString(),i=s;try{let c=window.location.origin,l=new URL(s).origin;if(c!==l){let d=new Blob([`import '${s}';`],{type:"application/javascript"});i=URL.createObjectURL(d)}}catch{}Be=new Worker(i,{type:"module"}),Be.postMessage({type:"init",config:{...e,...jo(),pageConfig:Mi(C),publicKey:void 0,authToken:ir(e),sessionToken:Qt,sessionId:u?.sessionId,activeRunId:u?.pendingRun?.id},port:o.port2},[o.port2]);let a=(c="manual_cancel_task")=>{if(!u)return;let l=u.pendingRun;if(l){fo(l.id),Be?.postMessage({type:"cancel_run",runId:l.id}),co(l.id,c,{attemptImmediately:!0}),ye?.controlRun({action:"cancel",runId:l.id,reason:c}).catch(()=>{}),R?.releaseWorkflowLock(l.id),R?.setActiveRun(void 0),kt(void 0),u.workerState=void 0,R?.setWorkerContext(void 0),Ce=sr(),u.taskTabScope=void 0,Cn({forceReset:!0,persist:!1}),qn(),ht&&(clearTimeout(ht),ht=null),X?.setRunning(!1),X?.setQuestionPrompt(void 0),jm(c),Tt(void 0),Hn("system","Task cancelled.",!0),Ho=void 0,qo=void 0,As=0,et({kind:"info",title:"Run cancelled",status:"info"}),xe();return}let d=Vr(u.workerState?.pendingAskUser?.questions).length>0,p=u.activeTask?.status;!d&&p!=="running"||(Ce=sr(),u.workerState=void 0,u.taskTabScope=void 0,Cn({forceReset:!0,persist:!1}),qn(),ht&&(clearTimeout(ht),ht=null),X?.setRunning(!1),X?.setQuestionPrompt(void 0),vn(),kt(void 0),pk(c),R?.endTask(c),R?.setActiveRun(void 0),R?.setWorkerContext(void 0),Tt(void 0),Ho=void 0,qo=void 0,As=0,et({kind:"info",title:c==="question_prompt_cancel"?"Input request cancelled":"Task cancelled",status:"info"}),xe())};if(X=rp({shortcuts:rh(uo(e.ui?.shortcuts||[])),greeting:Nc(e),visitorName:Tr?.name,onShortcutClick:c=>{let l=String(c.prompt||"").trim();l&&Ti(l,{routing:c.routing})},onSend:(c,l)=>{Ti(c,{askUserAnswers:l?.askUserAnswers})},onRequestControl:()=>{qT()?et({kind:"status",title:"Control requested",detail:"This tab is now the active Rover controller for the current task.",status:"info"}):Hn("system","Unable to acquire control right now. Try again in a moment.",!0)},onCancelRun:()=>{a("manual_cancel_task")},onCancelQuestionFlow:()=>{a("question_prompt_cancel")},onNewTask:()=>{Dc({reason:"manual_new_task",clearUi:!0})},onEndTask:()=>{Wu({reason:"manual_end_task"})},onTaskSuggestionPrimary:()=>{let c=so;if(c){if(c.kind==="resume_run"){let l=ze(u?.pendingRun);if(vn(),!l||l.id!==c.runId){Tt("Previous task is no longer resumable.");return}_r({overridePolicyAction:"auto_resume"});return}Ti(c.text,{bypassSuggestion:!0,startNewTask:!0,reason:c.reason})}},onTaskSuggestionSecondary:()=>{let c=so;if(c){if(c.kind==="resume_run"){let l=String(u?.pendingRun?.id||"").trim();if(vn(),!l||l!==c.runId)return;Ou({reason:"resume_declined_by_user",statusText:"Resume cancelled. Start a new task when you are ready.",runId:c.runId,cancelReason:"resume_declined_by_user",timelineTitle:"Resume cancelled",timelineDetail:"Interrupted run was cancelled by user action.",timelineStatus:"info"});return}Ti(c.text,{bypassSuggestion:!0})}},onSwitchConversation:c=>{if(!G||!u)return;let l=G.getActiveTask();l&&X&&(l.scrollPosition=X.getScrollPosition());let d=String(R?.getState()?.activeRun?.runId||"").trim(),v=!!(String(u.pendingRun?.id||"").trim()||d);if(l&&l.taskId!==c&&v){Hn("system","Finish the active run before switching conversations.",!0);return}let m=G.switchActiveTask(c);m&&($m(m,{replayUi:!0}),u.activeTaskId=c,X&&(requestAnimationFrame(()=>{m.scrollPosition!=null&&X.setScrollPosition(m.scrollPosition)}),X.setActiveConversationId(c)),ro(),xe())},onDeleteConversation:c=>{G&&(G.deleteTask(c),ro(),xe())},onResumeTask:c=>{if(!G)return;G.dispatch(c,{type:"RESUME"}).accepted&&(X?.hidePausedTaskBanner(),G.assignWorker(c,{}),ro(),xe())},onCancelPausedTask:c=>{if(!G)return;G.dispatch(c,{type:"CANCEL",reason:"user_cancelled_paused_task"}).accepted&&(X?.hidePausedTaskBanner(),G.archiveTask(c),ro(),xe())},onTabClick:c=>{R?.switchToLogicalTab(c)},showTaskControls:e.ui?.showTaskControls!==!1,muted:e.ui?.muted,agent:{name:e.ui?.agent?.name},mascot:{disabled:e.ui?.mascot?.disabled,mp4Url:e.ui?.mascot?.mp4Url,webmUrl:e.ui?.mascot?.webmUrl},onOpen:()=>{ao=!0,Hi(),u&&(u.uiOpen=!0,u.uiHidden=!1,xe()),qe("open")},onClose:()=>{u&&(u.uiOpen=!1,xe()),qe("close")}}),vn(),u?.uiMessages?.length&&Sc(u.uiMessages),u?.timeline?.length&&Rc(u.timeline),Ac(u),Ds(),u?.executionMode&&X.setExecutionMode(u.executionMode,{localLogicalTabId:R?.getLocalLogicalTabId(),activeLogicalTabId:R?.getActiveLogicalTabId(),controllerRuntimeId:R?.getCurrentHolderRuntimeId(),canTakeControl:!0,canComposeInObserver:Pm(),note:Bm(u.executionMode)}),Be.onmessage=c=>{Ck(c.data||{})},R){let c=()=>{R?.registerCurrentTab(window.location.href,document.title),R?.broadcastNavigation(window.location.href,document.title)};Ts||(Ts=History.prototype.pushState),ks||(ks=History.prototype.replaceState);let l=Ts.bind(history),d=ks.bind(history);history.pushState=function(...p){let v=l(...p);return setTimeout(c,0),v},history.replaceState=function(...p){let v=d(...p);return setTimeout(c,0),v},tc(window,"popstate",c)}u?.uiHidden?X.hide():(X.show(),u?.uiOpen??!!e.openOnInit?X.open():X.close()),u&&(u.uiHidden=!!u.uiHidden,u.uiOpen=!!u.uiOpen,xe()),R&&(Bu(R.getState(),"remote"),Vo(R.getRole(),{localLogicalTabId:R.getLocalLogicalTabId(),activeLogicalTabId:R.getActiveLogicalTabId(),holderRuntimeId:R.getCurrentHolderRuntimeId()})),Ni()}function Tc(e){if(no)return pu(e),no;Jl&&mu(),Jl=!0,Fr=gp(),Ve=TT(e.siteId),Ct=vm(e),Tr=e.visitor||ET(e.siteId),ao=!1,Uo=!1,Hi(),$o(),Wr=null,an=!1;let t=e.sessionId?.trim(),n=wT(e.siteId),r=!t&&e.sessionScope!=="tab"&&Ct?tm(e.siteId,Ct):void 0,o=oc(e.siteId,t||r),s=ws(e.siteId),i=Array.from(new Set([t?o:n,o,n,r?oc(e.siteId,r):void 0,s].filter(S=>!!S))),a=null,c=null;for(let S of i){let F=jT(S);if(F){a=F,c=S;break}}on=c||o,Br=s!==on?s:null;let l=i.filter(S=>S!==on);tu(e.siteId,on);let d=a?null:Ml(e.siteId,{currentUrl:window.location.href,currentHost:window.location.hostname,requireTargetMatch:!0});!a&&!d&&Ml(e.siteId,{currentHost:window.location.hostname,requireTargetMatch:!1})&&(Vt("status",{event:"resume_cookie_rejected",reason:"target_or_host_mismatch"}),oi(e.siteId)),d&&(oi(e.siteId),Yt=!0,an=!0,d.openIntent==="preserve_if_running"&&nm({runId:d.pendingRun?.id,taskId:d.activeTask?.taskId}),d.sessionToken&&hc(d.sessionToken,d.sessionTokenExpiresAt));let p=e.sessionId?.trim(),v=!p&&!a?.sessionId&&!d?.sessionId&&e.sessionScope!=="tab"&&Ct?tm(e.siteId,Ct):void 0,m=p||a?.sessionId||d?.sessionId||v||crypto.randomUUID(),g=a;if(!a&&d){let S=nu(d.sessionId,Ve),F=String(d.activeTask?.status||"").trim().toLowerCase(),$=!F||F==="running";d.pendingRun&&$&&(S.pendingRun=ze({...d.pendingRun,autoResume:!0,taskBoundaryId:d.pendingRun.taskBoundaryId,resumeRequired:!0,resumeReason:"cross_host_navigation"})),d.handoff&&(S.lastNavigationHandoff=zr({...d.handoff,createdAt:d.handoff.createdAt})),d.activeTask&&(S.activeTask={...cn("cross_domain_resume"),taskId:d.activeTask.taskId,status:d.activeTask.status}),S.taskEpoch=d.taskEpoch||1,Fl(d.openIntent)&&(S.uiHidden=!1,S.uiOpen=!0),g=S}u=Ci(g,m,Ve),p&&u.sessionId!==p&&(u=nu(p,Ve));let T=xT(e.siteId);Ce=bT(u),T&&u.activeTask?.status==="running"&&(an=!0,Fl(T.openIntent)&&(u.uiHidden=!1,u.uiOpen=!0,nm({runId:T.runId,taskId:u.activeTask?.taskId})),u.pendingRun=ze({...u.pendingRun||{},id:u.pendingRun?.id||T.runId,text:u.pendingRun?.text||T.text||$t||"Continue task",startedAt:u.pendingRun?.startedAt||Date.now(),attempts:u.pendingRun?.attempts||0,autoResume:!0,taskBoundaryId:u.pendingRun?.taskBoundaryId||T.taskBoundaryId||Ce,resumeRequired:!0,resumeReason:T.resumeReason||u.pendingRun?.resumeReason||"agent_navigation"})),u.pendingRun&&!u.pendingRun.taskBoundaryId&&(u.pendingRun=ze({...u.pendingRun,taskBoundaryId:Ce})),u.workerState&&!u.workerState.taskBoundaryId&&(u.workerState=tr(Mt({...u.workerState,taskBoundaryId:Ce}),Ce)),Di(u),C={...e,pageConfig:qr(e.pageConfig),visitorId:Ct||e.visitorId,sessionId:p||u.sessionId,domainScopeMode:Ai(e.domainScopeMode),taskRouting:{mode:e.taskRouting?.mode||"act",actHeuristicThreshold:e.taskRouting?.actHeuristicThreshold,plannerOnActError:e.taskRouting?.plannerOnActError},navigation:{crossHostPolicy:Ec(e.navigation?.crossHostPolicy)},timing:{navigationDelayMs:At(e.timing?.navigationDelayMs,0,3e3),actionTimeoutMs:At(e.timing?.actionTimeoutMs,5e3,12e4),domSettleDebounceMs:At(e.timing?.domSettleDebounceMs,8,500),domSettleMaxWaitMs:At(e.timing?.domSettleMaxWaitMs,80,5e3),domSettleRetries:At(e.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:At(e.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:At(e.timing?.sparseTreeRetryMaxAttempts,0,4)},transport:{activation:Su(e.transport?.activation),idleCloseMs:Ru(e.transport?.idleCloseMs)},stability:{maxPersistBytes:Ms(e.stability?.maxPersistBytes,ft.localPersistBytes),maxSnapshotBytes:Ms(e.stability?.maxSnapshotBytes,ft.snapshotBytes)},task:{singleActiveScope:_m(e.task?.singleActiveScope),tabScope:Em(e.task?.tabScope),resume:{mode:Eu(e.task?.resume?.mode),ttlMs:mc(e.task?.resume?.ttlMs)},followup:{mode:wm(e.task?.followup?.mode),ttlMs:Iu(e.task?.followup?.ttlMs),minLexicalOverlap:xu(e.task?.followup?.minLexicalOverlap)},observerInput:wu(e.task?.observerInput),autoResumePolicy:_u(e.task?.autoResumePolicy)},chat:{inRun:Im(e.chat?.inRun),resumeFollowup:{mode:xm(e.chat?.resumeFollowup?.mode),maxTurns:Sm(e.chat?.resumeFollowup?.maxTurns)}},external:{intentSelection:Rm(e.external?.intentSelection),requireUserConfirm:Am(e.external?.requireUserConfirm),adversarialGate:Cm(e.external?.adversarialGate)},taskContext:{...e.taskContext},features:{rover_v2_kernel_runtime:Mm(e.features?.rover_v2_kernel_runtime)}},u.sessionId=C.sessionId,u.runtimeId=Ve,on=oc(e.siteId,u.sessionId),Br=on!==ws(e.siteId)?ws(e.siteId):null,tu(e.siteId,on),u.executionMode=u.executionMode||"controller",u.timeline=rr(u.timeline),u.uiMessages=nr(u.uiMessages),u.activeTask=po(u.activeTask,cn("boot")),Ol(u.activeTask?.status)&&(u.pendingRun=void 0,u.workerState=void 0,Yt=!1,an=!1,$o(),oi(e.siteId),km(e.siteId)),u.taskEpoch=Math.max(1,Number(u.taskEpoch)||1),it=u.executionMode,Tr&&ym(e.siteId,Tr);let D={maxConcurrentWorkers:e.task?.maxConcurrentWorkers??2,maxQueuedTasks:e.task?.maxQueuedTasks??5,maxArchivedTasks:e.task?.maxArchivedTasks??10};if(u.tasks&&Object.keys(u.tasks).length>0)G=ms.fromPersistedState({tasks:u.tasks,activeTaskId:u.activeTaskId,taskOrder:u.taskOrder},D);else{G=ms.fromV1State(u,D);let{tasks:S,activeTaskId:F,taskOrder:$}=G.toPersistedState();u.tasks=S,u.activeTaskId=F,u.taskOrder=$}let N=G.getActiveTask();N&&$m(N,{replayUi:!1}),xe();try{sessionStorage.setItem(`rover:tab-alive:${e.siteId}`,"1")}catch{}Wn=!1,Rs=!1,or=!1,sn=0,fc=null;try{let S=sessionStorage.getItem(`rover:sess:${e.siteId}`);if(S){let{t:F,e:$}=JSON.parse(S);F&&typeof F=="string"&&F.startsWith("rvrsess_")&&Number($)>Date.now()+2e3&&hc(F,Number($))}}catch{}Bk(C),Mu(C);let A=!!(Qt&&kr>Date.now()+2e3);if((!ye||A)&&(Rs=!0),on&&xk(on,l.length?l:Br?[Br]:void 0),sk(),ar(!0),Yt&&setTimeout(()=>{Yt&&!or&&(Yt=!1,_r())},Jv),no={boot:Tc,init:ih,update:pu,shutdown:mu,open:Lc,close:qu,show:ah,hide:ch,send:lh,newTask:Dc,endTask:Wu,getState:uh,registerTool:dh,identify:sh,on:mm},nc.length){for(let S of nc)Tm(S);nc.length=0}return no}function ih(e){return Tc(e)}function pu(e){if(!no||!Be||!C)return;C={...C,...e,pageConfig:e.pageConfig!==void 0?qr(e.pageConfig):C.pageConfig,domainScopeMode:Ai(e.domainScopeMode??C.domainScopeMode),taskRouting:{...C.taskRouting,...e.taskRouting},navigation:{...C.navigation,...e.navigation,crossHostPolicy:Ec(e.navigation?.crossHostPolicy??C.navigation?.crossHostPolicy)},timing:{...C.timing,...e.timing,navigationDelayMs:At(e.timing?.navigationDelayMs??C.timing?.navigationDelayMs,0,3e3),actionTimeoutMs:At(e.timing?.actionTimeoutMs??C.timing?.actionTimeoutMs,5e3,12e4),domSettleDebounceMs:At(e.timing?.domSettleDebounceMs??C.timing?.domSettleDebounceMs,8,500),domSettleMaxWaitMs:At(e.timing?.domSettleMaxWaitMs??C.timing?.domSettleMaxWaitMs,80,5e3),domSettleRetries:At(e.timing?.domSettleRetries??C.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:At(e.timing?.sparseTreeRetryDelayMs??C.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:At(e.timing?.sparseTreeRetryMaxAttempts??C.timing?.sparseTreeRetryMaxAttempts,0,4)},transport:{...C.transport,...e.transport,activation:Su(e.transport?.activation??C.transport?.activation),idleCloseMs:Ru(e.transport?.idleCloseMs??C.transport?.idleCloseMs)},stability:{...C.stability,...e.stability,maxPersistBytes:Ms(e.stability?.maxPersistBytes??C.stability?.maxPersistBytes,ft.localPersistBytes),maxSnapshotBytes:Ms(e.stability?.maxSnapshotBytes??C.stability?.maxSnapshotBytes,ft.snapshotBytes)},task:{...C.task,...e.task,singleActiveScope:_m(e.task?.singleActiveScope??C.task?.singleActiveScope),tabScope:Em(e.task?.tabScope??C.task?.tabScope),resume:{mode:Eu(e.task?.resume?.mode??C.task?.resume?.mode),ttlMs:mc(e.task?.resume?.ttlMs??C.task?.resume?.ttlMs)},followup:{mode:wm(e.task?.followup?.mode??C.task?.followup?.mode),ttlMs:Iu(e.task?.followup?.ttlMs??C.task?.followup?.ttlMs),minLexicalOverlap:xu(e.task?.followup?.minLexicalOverlap??C.task?.followup?.minLexicalOverlap)},observerInput:wu(e.task?.observerInput??C.task?.observerInput),autoResumePolicy:_u(e.task?.autoResumePolicy??C.task?.autoResumePolicy)},chat:{...C.chat,...e.chat,inRun:Im(e.chat?.inRun??C.chat?.inRun),resumeFollowup:{mode:xm(e.chat?.resumeFollowup?.mode??C.chat?.resumeFollowup?.mode),maxTurns:Sm(e.chat?.resumeFollowup?.maxTurns??C.chat?.resumeFollowup?.maxTurns)}},external:{...C.external,...e.external,intentSelection:Rm(e.external?.intentSelection??C.external?.intentSelection),requireUserConfirm:Am(e.external?.requireUserConfirm??C.external?.requireUserConfirm),adversarialGate:Cm(e.external?.adversarialGate??C.external?.adversarialGate)},taskContext:{...C.taskContext,...e.taskContext},features:{...C.features,...e.features,rover_v2_kernel_runtime:Mm(e.features?.rover_v2_kernel_runtime??C.features?.rover_v2_kernel_runtime)},ui:{...C.ui,...e.ui,agent:{...C.ui?.agent,...e.ui?.agent},panel:{...C.ui?.panel,...e.ui?.panel}},tools:{...C.tools,...e.tools,client:e.tools?.client??C.tools?.client,web:{...C.tools?.web,...e.tools?.web}}},Ct=vm(C),Ct&&(C.visitorId=Ct),e.sessionId&&u?(u.sessionId=e.sessionId,on=oc(C.siteId,u.sessionId),Br=on!==ws(C.siteId)?ws(C.siteId):null,tu(C.siteId,on),xe(),yc(C)):(e.sessionScope||e.tabPolicy)&&yc(C),Fu(C),wc(C),Mu(C);let t=e.apiBase!==void 0||e.publicKey!==void 0||e.authToken!==void 0||e.sessionToken!==void 0||e.siteId!==void 0||e.siteKeyId!==void 0||e.ui?.shortcuts!==void 0||e.ui?.greeting!==void 0;if(Xe){typeof e.allowActions=="boolean"&&Xe.setAllowActions(e.allowActions&&it==="controller");let n=it==="controller"&&(C?.allowActions??!0),r=it==="observer"?"observer":"controller";Xe?.setActionGateContext?.({mode:r,controllerRuntimeId:R?.getCurrentHolderRuntimeId(),activeLogicalTabId:R?.getActiveLogicalTabId(),localLogicalTabId:R?.getLocalLogicalTabId(),reason:Oi(r,n)}),(e.allowedDomains||e.domainScopeMode||e.externalNavigationPolicy||e.navigation?.crossHostPolicy)&&Xe.setNavigationPolicy({allowedDomains:e.allowedDomains,domainScopeMode:Ai(e.domainScopeMode??C.domainScopeMode),externalNavigationPolicy:e.externalNavigationPolicy,crossHostPolicy:e.navigation?.crossHostPolicy})}Be.postMessage({type:"update_config",config:{...e,...jo(),pageConfig:Mi(C),publicKey:void 0,authToken:ir(C),sessionToken:Qt,sessionId:u?.sessionId,activeRunId:u?.pendingRun?.id,sessionEpoch:ye?.getEpoch?.()??Ur,sessionSeq:ye?.getLastSeq?.()??0}}),vc(C),t?oh(C):Ni(),e.visitor&&sh(e.visitor),typeof e.openOnInit=="boolean"&&(e.openOnInit||ku(u)?Lc():qu()),ar()}function mu(){$o(),vn(),Is(),Bo(!0),Cu(),mt?.markDirty(),mt?.syncNow({push:!0,pull:!1}),mt?.stop(),mt=null,ye?.stop(),ye=null,Qt=void 0,kr=0,Ur=1,io(void 0),pc="",R?.stop(),R=null,G?.shutdown(),G=null,Be?.terminate(),Be=null,X?.destroy(),X=null,Xe=null,C=null,Wn=!1,or=!1,sn=0,st&&(clearTimeout(st),st=null),to&&(clearTimeout(to),to=null),ec=!1,Kt.clear(),Zr.clear(),er.clear(),yr.clear(),vr=!1,Ce="",Ve="",Ct=void 0,Tr=void 0,ao=!1,Uo=!1,Hi(),Wr=null,Kl="",Ss=!1,Za=!1,vs=!1,bn=[],dm=0,Gl=0,Xl=0,dc=0,ki=!1,Hr&&(clearTimeout(Hr),Hr=null),lu="",ys="",it="controller",Zn=!0,so=null,Fr=null,fc=null,vi=0;try{let e=window.rtrvrAIClearObserverPause;typeof e=="function"&&e()}catch{}no=null;for(let e of oo)try{e.target.removeEventListener(e.event,e.handler,e.options)}catch{}if(oo.length=0,Ts){try{History.prototype.pushState=Ts}catch{}Ts=null}if(ks){try{History.prototype.replaceState=ks}catch{}ks=null}Yl=!1,Ql=!1,Jl=!1}function Lc(){ao=!0,Hi(),X?.show(),X?.open(),u&&(u.uiHidden=!1,u.uiOpen=!0,xe())}function qu(){X?.close(),$o(),u&&(u.uiOpen=!1,xe())}function ah(){X?.show(),u&&(u.uiHidden=!1,xe())}function ch(){X?.hide(),$o(),u&&(u.uiHidden=!0,u.uiOpen=!1,xe())}function lh(e){e?.trim()&&Ti(e)}function Dc(e){if(!u)return;let t=e?.reason||"manual_new_task",n=e?.clearUi!==!1;if(Ho=void 0,qo=void 0,As=0,u.pendingRun&&(fo(u.pendingRun.id),Be?.postMessage({type:"cancel_run",runId:u.pendingRun.id}),co(u.pendingRun.id,t,{attemptImmediately:!0}),ye?.controlRun({action:"cancel",runId:u.pendingRun.id,reason:t}),R?.releaseWorkflowLock(u.pendingRun.id)),ht&&(clearTimeout(ht),ht=null),X?.setRunning(!1),X?.setQuestionPrompt(void 0),or=!1,sn=0,Fi(),G){let s=G.createTask(t);G.switchActiveTask(s.taskId),G.dispatch(s.taskId,{type:"START",reason:t})}let r=mo({type:"new_task",reason:t,at:Date.now()},{syncShared:!1,persist:!1});if(!r)return;let o=Math.max(1,Number(u.taskEpoch)||1);n&&(u.uiMessages=[],u.timeline=[],u.uiStatus=void 0,u.transientStatus=void 0,Du()),R?.startNewTask({taskId:r.taskId,startedAt:r.startedAt,boundaryReason:t,status:"running",lastUserAt:void 0,lastAssistantAt:void 0}),Cn({forceReset:!0,persist:!1}),R?.setActiveRun(void 0),R?.setWorkerContext(void 0),Vm([]),Tt(void 0),xe(),Be?.postMessage({type:"start_new_task",taskId:r.taskId,...jo()}),ye?.controlRun({action:"new_task",reason:t}),qe("task_started",{taskId:r.taskId,reason:t,taskEpoch:o})}function Wu(e){if(!u)return;let t=e?.reason||"manual_end_task";if(Ho=void 0,qo=void 0,As=0,or=!1,sn=0,an=!1,Fi(),G){let o=G.getActiveTask();o&&G.dispatch(o.taskId,{type:"CANCEL",reason:t})}let n=u.pendingRun?.id,r=mo({type:"terminal",terminal:"ended",reason:t,at:Date.now()},{syncShared:!1,persist:!1,rotateBoundary:!1});r&&(n&&(fo(n),Be?.postMessage({type:"cancel_run",runId:n}),co(n,t,{attemptImmediately:!0}),ye?.controlRun({action:"cancel",runId:n,reason:t}),R?.releaseWorkflowLock(n)),kt(void 0),Ce=sr(),u.workerState=void 0,u.taskTabScope=void 0,Cn({forceReset:!0,persist:!1}),qn(),ht&&(clearTimeout(ht),ht=null),X?.setRunning(!1),X?.setQuestionPrompt(void 0),vn(),Tt(void 0),ye?.controlRun({action:"end_task",runId:n,reason:t}),R?.endTask(t),R?.setActiveRun(void 0),R?.setWorkerContext(void 0),xe(),et({kind:"info",title:"Task ended",detail:"Start a new task when you are ready.",status:"info"}),qe("task_ended",{taskId:r.taskId,reason:t,endedAt:r.endedAt}))}function uh(){return{mode:it,runtimeId:Ve,runtimeState:u?Uu(u):null,sharedState:R?.getState()||null,pendingTaskSuggestion:so}}function dh(e,t){let n=gT(e);if(!no||!Xe||!Be){nc.push({def:n,handler:t});return}Tm({def:n,handler:t})}function Uk(e){if(!e)return;let t=String(e);if(t==="init")return"init";if(t==="boot")return"boot";if(t==="update")return"update";if(t==="shutdown")return"shutdown";if(t==="open")return"open";if(t==="close")return"close";if(t==="show")return"show";if(t==="hide")return"hide";if(t==="send")return"send";if(t==="newTask")return"newTask";if(t==="endTask")return"endTask";if(t==="getState")return"getState";if(t==="registerTool")return"registerTool";if(t==="on")return"on"}var AI={sanitizeWorkerState:Mt,cloneRuntimeStateForCheckpoint:Uu,getPersistGovernorConfig:()=>({minPersistIntervalMs:uu,maxCoalesceDelayMs:Wm}),getTelemetryFastLaneEvents:()=>Array.from(fm.values())};function Fk(){let e=window,t=e.rover,n=((r,...o)=>{let s=Uk(r),i=s?n[s]:void 0;if(typeof i=="function")return i(...o)});if(n.boot=Tc,n.init=ih,n.update=pu,n.shutdown=mu,n.open=Lc,n.close=qu,n.show=ah,n.hide=ch,n.send=lh,n.newTask=Dc,n.endTask=Wu,n.getState=uh,n.registerTool=dh,n.on=mm,e.rover=n,typeof t=="function"&&Array.isArray(t.q))for(let r of t.q){let[o,...s]=Array.isArray(r)?r:Array.from(r);typeof o=="string"&&n(o,...s)}if(!no){let r=typeof globalThis.__ROVER_SCRIPT_EL__<"u"?globalThis.__ROVER_SCRIPT_EL__:null;if(r){let o=r.getAttribute("data-site-id"),s=r.getAttribute("data-public-key");if(o&&s){let i={siteId:o,publicKey:s},a=r.getAttribute("data-allowed-domains");a&&(i.allowedDomains=a.split(",").map(p=>p.trim()).filter(Boolean));let c=r.getAttribute("data-domain-scope-mode");(c==="host_only"||c==="registrable_domain")&&(i.domainScopeMode=c);let l=r.getAttribute("data-site-key-id");l&&(i.siteKeyId=l);let d=r.getAttribute("data-worker-url");d&&(i.workerUrl=d),Tc(i)}}}}Fk();export{AI as __roverInternalsForTests,Tc as boot,qu as close,Wu as endTask,uh as getState,ch as hide,sh as identify,ih as init,Fk as installGlobal,Dc as newTask,Lc as open,dh as registerTool,lh as send,ah as show,mu as shutdown,pu as update};
|
|
2098
|
+
`);let n=e.find(r=>r.type==="tool_output"||r.type==="json");if(n){if(typeof n.data=="string"&&n.data.trim())return n.data.trim();if(typeof n.data=="number"||typeof n.data=="boolean")return String(n.data)}}function Ow(e){if(e==null)return;let t=typeof e=="object"&&e!==null?e:void 0,n=t?.output??t?.generatedContentRef??t?.schemaHeaderSheetInfo??e,r=kg(Io([{type:"tool_output",data:n}]));if(Dw(n,r))return Io([{type:"tool_output",label:typeof t?.name=="string"?`${t.name} output`:"Tool output",data:n}])}function jn(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t}function Pw(e){if(!e||typeof e!="object")return[];let t=e,n=[jn(t.tab_id),jn(t.logical_tab_id),jn(t.tabId),jn(t.logicalTabId)].filter(r=>!!r);return Bn(n)}function Bw(e){if(!e||typeof e!="object")return[];let t=e,n=t.output&&typeof t.output=="object"?t.output:void 0,r=[jn(t.tab_id),jn(t.logical_tab_id),jn(t.tabId),jn(t.logicalTabId),jn(n?.tab_id),jn(n?.logical_tab_id),jn(n?.tabId),jn(n?.logicalTabId)].filter(o=>!!o);return Bn(r)}function Uw(e){if(!e||typeof e!="object")return!1;let t=e,n=t.output&&typeof t.output=="object"?t.output:void 0,r=String(t.status||t.taskStatus||n?.status||n?.taskStatus||"").trim().toLowerCase();return!!(r==="failure"||r==="failed"||r==="error"||t.success===!1||n?.success===!1||t.error||n?.error)}function wg(e){if(!e||typeof e!="object")return null;let t=e.role,n=e.content;return typeof t!="string"||typeof n!="string"||!n?null:{role:t,content:n}}function li(e,t){if(!Array.isArray(e))return[];let n=e.length<=t?e:[e[0],...e.slice(-(t-1))],r=[];for(let o of n){let s=Nd(o);s!==void 0&&r.push(s)}return r}function Eg(e){if(!Array.isArray(e)||e.length===0)return[];let t=[...e],n=[];for(let o=0;o<t.length;o+=1){let s=t[o]?.accTreeId;typeof s=="string"&&s.trim()&&n.push(o)}if(n.length<=3)return t;let r=new Set([n[0],...n.slice(-2)]);for(let o of n)r.has(o)||t[o]&&typeof t[o]=="object"&&delete t[o].accTreeId;return t}async function Fw(e,t){if(!jr)return null;try{let n=await jr.readAsync(e);if(n)return n;for(let r of t||[]){if(!r||r===e)continue;let o=await jr.readAsync(r);if(o)return o}return null}catch{return null}}function dr(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-Jc)){let r=n?.role;r!=="user"&&r!=="assistant"&&r!=="system"||t.push({id:typeof n?.id=="string"&&n.id?n.id:Xr("msg"),role:r,text:String(n?.text||""),blocks:Io(n?.blocks),ts:Number(n?.ts)||Date.now(),sourceRuntimeId:typeof n?.sourceRuntimeId=="string"?n.sourceRuntimeId:void 0})}return t.filter(n=>!!n.text||!!n.blocks?.length)}function fr(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-Zc)){let r=on(String(n?.title||""),400);if(!r)continue;let o=String(n?.kind||"status"),s=n?.status;t.push({id:typeof n?.id=="string"&&n.id?n.id:Xr("timeline"),kind:o,title:r,detail:n?.detail?String(n.detail):void 0,detailBlocks:Io(n?.detailBlocks),status:s==="pending"||s==="success"||s==="error"||s==="info"?s:void 0,ts:Number(n?.ts)||Date.now(),sourceRuntimeId:typeof n?.sourceRuntimeId=="string"?n.sourceRuntimeId:void 0})}return t}function Ar(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-fk)){let r=n?.role==="user"?"user":n?.role==="model"?"model":void 0;if(!r)continue;let o=on(String(n?.message||"").replace(/\s+/g," ").trim(),1500);if(!o)continue;let s=t[t.length-1];s&&s.role===r&&s.message===o||t.push({role:r,message:o})}return t}function Ta(e,t){if(!e)return;let n=typeof e=="string"?e:e?.text,r=on(String(n||"").trim(),300);if(!r)return;let o=typeof e?.runId=="string"&&e.runId.trim()?e.runId.trim():typeof t?.runId=="string"&&t.runId.trim()?t.runId.trim():void 0,s=typeof e?.taskId=="string"&&e.taskId.trim()?e.taskId.trim():typeof t?.taskId=="string"&&t.taskId.trim()?t.taskId.trim():void 0,i=typeof e?.stage=="string"&&e.stage.trim()?on(e.stage.trim(),40):void 0;return{text:r,ts:Number(e?.ts)||Date.now(),runId:o,taskId:s,stage:i}}function Hw(e,t){let n=Number(e.ts)||0,r=Number(t.ts)||0;if(n!==r)return n-r;let o=Array.isArray(e.blocks)?e.blocks.length:0,s=Array.isArray(t.blocks)?t.blocks.length:0;return o!==s?o-s:String(e.text||"").length-String(t.text||"").length}function qw(e,t){let n=new Map;for(let r of dr(e))n.set(r.id,r);for(let r of dr(t)){let o=n.get(r.id);(!o||Hw(r,o)>0)&&n.set(r.id,r)}return dr([...n.values()].sort((r,o)=>{let s=(Number(r.ts)||0)-(Number(o.ts)||0);return s!==0?s:r.id.localeCompare(o.id)}))}function Ww(e,t){let n=Number(e.ts)||0,r=Number(t.ts)||0;if(n!==r)return n-r;let o=Array.isArray(e.detailBlocks)?e.detailBlocks.length:0,s=Array.isArray(t.detailBlocks)?t.detailBlocks.length:0;return o!==s?o-s:String(e.detail||"").length-String(t.detail||"").length}function $w(e,t){let n=new Map;for(let r of fr(e))n.set(r.id,r);for(let r of fr(t)){let o=n.get(r.id);(!o||Ww(r,o)>0)&&n.set(r.id,r)}return fr([...n.values()].sort((r,o)=>{let s=(Number(r.ts)||0)-(Number(o.ts)||0);return s!==0?s:r.id.localeCompare(o.id)}))}function Ft(e){if(!e||typeof e!="object")return;let t=String(e.taskBoundaryId||"").trim(),n=Array.isArray(e.history)?e.history:[],r=Array.isArray(e.plannerHistory)?e.plannerHistory:[],o=Array.isArray(e.agentPrevSteps)?e.agentPrevSteps:Array.isArray(e.lastToolPreviousSteps)?e.lastToolPreviousSteps:[],s=n.slice(-gd).map(_=>wg(_)).filter(_=>!!_),i=li(r,bd),a=li(Eg(o),vd),c=Yr(e?.pendingAskUser?.questions),d=e?.pendingAskUser?.stepRef,p=d&&Number.isFinite(Number(d.stepIndex))&&Number(d.stepIndex)>=0&&Number.isFinite(Number(d.functionIndex))&&Number(d.functionIndex)>=0?{stepIndex:Number(d.stepIndex),functionIndex:Number(d.functionIndex),...typeof d.accTreeId=="string"&&d.accTreeId.trim()?{accTreeId:d.accTreeId.trim()}:{}}:void 0,u=c.length?{questions:c,source:e?.pendingAskUser?.source==="planner"?"planner":"act",askedAt:Number(e?.pendingAskUser?.askedAt)||Date.now(),boundaryId:typeof e?.pendingAskUser?.boundaryId=="string"&&e.pendingAskUser.boundaryId.trim()?e.pendingAskUser.boundaryId.trim():void 0,...p?{stepRef:p}:{}}:void 0,v=Ce(t||void 0),h=Ce(u?.boundaryId||v);u&&v&&h&&h!==v&&(u=void 0);let g=typeof e.rootUserInput=="string"?e.rootUserInput.trim():"";return{trajectoryId:typeof e.trajectoryId=="string"?e.trajectoryId:void 0,taskBoundaryId:t||void 0,rootUserInput:g||void 0,seedChatLog:Ar(e.seedChatLog),history:s,plannerHistory:i,agentPrevSteps:a,lastToolPreviousSteps:a,pendingAskUser:u,updatedAt:Number(e.updatedAt)||Date.now()}}function pa(e,t,n){if(!e||typeof e!="object")return nd(t,n);let r=pn(),o=Ro(e.activeTask,r),s=Ze(e.pendingRun),i=o.status==="running"?s:void 0,a=i?.taskBoundaryId&&String(i.taskBoundaryId).trim()||(typeof e?.workerState?.taskBoundaryId=="string"?String(e.workerState.taskBoundaryId).trim():"")||void 0,c=pi(e.taskTabScope,a),d={version:hd,sessionId:typeof e.sessionId=="string"&&e.sessionId?e.sessionId:t,runtimeId:typeof e.runtimeId=="string"&&e.runtimeId?e.runtimeId:n,uiOpen:!!e.uiOpen,uiHidden:!!e.uiHidden,uiStatus:typeof e.uiStatus=="string"?on(e.uiStatus,300):void 0,transientStatus:Ta(e.transientStatus??e.uiStatus,{runId:s?.id,taskId:o?.taskId}),uiMessages:dr(e.uiMessages),timeline:fr(e.timeline),executionMode:e.executionMode==="observer"||e.executionMode==="controller"?e.executionMode:"controller",workerState:Ft(e.workerState),pendingRun:i,taskTabScope:c,lastNavigationHandoff:Qr(e.lastNavigationHandoff),taskEpoch:Math.max(1,Number(e.taskEpoch)||1),activeTask:o,lastRoutingDecision:e.lastRoutingDecision&&(e.lastRoutingDecision.mode==="act"||e.lastRoutingDecision.mode==="planner")?{mode:e.lastRoutingDecision.mode,score:Number(e.lastRoutingDecision.score)||void 0,reason:typeof e.lastRoutingDecision.reason=="string"?on(e.lastRoutingDecision.reason,200):void 0,ts:Number(e.lastRoutingDecision.ts)||Date.now()}:void 0,updatedAt:Number(e.updatedAt)||Date.now(),tasks:e.tasks&&typeof e.tasks=="object"?e.tasks:{},activeTaskId:typeof e.activeTaskId=="string"?e.activeTaskId:void 0,taskOrder:Array.isArray(e.taskOrder)?e.taskOrder:[]};if((Number(e.version)||1)<2&&o&&o.taskId){let u=qs.fromV1State(d),{tasks:v,activeTaskId:h,taskOrder:g}=u.toPersistedState();d.tasks=v,d.activeTaskId=h,d.taskOrder=g,u.shutdown()}return d}function Ro(e,t){if(!e||typeof e!="object")return t;let n=typeof e.taskId=="string"&&e.taskId.trim()?e.taskId.trim():t.taskId,r=e.status==="ended"||e.status==="completed"||e.status==="cancelled"||e.status==="failed"||e.status==="running"?e.status:"running";return{taskId:n,status:r,startedAt:Number(e.startedAt)||t.startedAt,lastUserAt:Number(e.lastUserAt)||void 0,lastAssistantAt:Number(e.lastAssistantAt)||void 0,boundaryReason:typeof e.boundaryReason=="string"?on(e.boundaryReason,120):t.boundaryReason,endedAt:Number(e.endedAt)||void 0}}function Ig(e,t){return Ro(e,t)}function _a(e){if(!e)return;let t=Yr(e.pendingAskUser?.questions);return{trajectoryId:e.trajectoryId,taskBoundaryId:typeof e.taskBoundaryId=="string"?e.taskBoundaryId:void 0,rootUserInput:typeof e.rootUserInput=="string"?e.rootUserInput:void 0,seedChatLog:Ar(e.seedChatLog),history:Array.isArray(e.history)?e.history.slice(-gd).map(n=>wg(n)).filter(n=>!!n):[],plannerHistory:li(e.plannerHistory,bd),agentPrevSteps:li(Eg(e.agentPrevSteps),vd),pendingAskUser:t.length?{questions:t,source:e.pendingAskUser?.source==="planner"?"planner":"act",askedAt:Number(e.pendingAskUser?.askedAt)||Date.now(),boundaryId:typeof e.pendingAskUser?.boundaryId=="string"&&e.pendingAskUser.boundaryId.trim()?e.pendingAskUser.boundaryId.trim():void 0,...e.pendingAskUser?.stepRef&&Number.isFinite(Number(e.pendingAskUser.stepRef.stepIndex))&&Number(e.pendingAskUser.stepRef.stepIndex)>=0&&Number.isFinite(Number(e.pendingAskUser.stepRef.functionIndex))&&Number(e.pendingAskUser.stepRef.functionIndex)>=0?{stepRef:{stepIndex:Number(e.pendingAskUser.stepRef.stepIndex),functionIndex:Number(e.pendingAskUser.stepRef.functionIndex),...typeof e.pendingAskUser.stepRef.accTreeId=="string"&&e.pendingAskUser.stepRef.accTreeId.trim()?{accTreeId:e.pendingAskUser.stepRef.accTreeId.trim()}:{}}}:{}}:void 0,updatedAt:Number(e.updatedAt)||Date.now()}}function Bn(e){if(!Array.isArray(e))return[];let t=new Set,n=[];for(let r of e){let o=Number(r);!Number.isFinite(o)||o<=0||t.has(o)||(t.add(o),n.push(o))}return n}function pi(e,t){if(!e||typeof e!="object")return;let n=typeof e.boundaryId=="string"&&e.boundaryId.trim()?e.boundaryId.trim():typeof t=="string"&&t.trim()?t.trim():void 0;if(!n)return;let r=Number(e.seedTabId);if(!Number.isFinite(r)||r<=0)return;let o=Bn(e.touchedTabIds);return o.includes(r)||o.unshift(r),{boundaryId:n,seedTabId:r,touchedTabIds:o.slice(0,24),updatedAt:Number(e.updatedAt)||Date.now()}}function Ze(e){if(!e||typeof e!="object")return;let t=typeof e.id=="string"&&e.id.trim()?e.id.trim():void 0,n=typeof e.text=="string"?e.text.trim():"",r=typeof e.lastUserInputText=="string"&&e.lastUserInputText.trim()?e.lastUserInputText.trim():typeof Kt=="string"&&Kt.trim()?Kt.trim():"Continue task",o=n||r,s=typeof e.taskBoundaryId=="string"&&e.taskBoundaryId.trim()?e.taskBoundaryId.trim():void 0;if(t)return{id:t,text:o,startedAt:Number(e.startedAt)||Date.now(),attempts:Math.max(0,Number(e.attempts)||0),autoResume:e.autoResume!==!1,taskBoundaryId:s,resumeRequired:e.resumeRequired===!0,resumeReason:e.resumeReason==="cross_host_navigation"||e.resumeReason==="agent_navigation"||e.resumeReason==="handoff"||e.resumeReason==="page_reload"?e.resumeReason:void 0}}function Vw(){return ai(M?.stability?.maxPersistBytes,bt.localPersistBytes)}function zw(e,t){let n={...e,uiMessages:dr(e.uiMessages).slice(-Jc),timeline:fr(e.timeline).slice(-Zc),workerState:Ft(e.workerState)};n.workerState&&(n.workerState={...n.workerState,history:Array.isArray(n.workerState.history)?n.workerState.history.slice(-gd):[],plannerHistory:li(n.workerState.plannerHistory,bd),agentPrevSteps:li(n.workerState.agentPrevSteps,vd)});let r="";try{r=JSON.stringify(n)}catch{return e}if(r.length<=t)return n;let o={...n,uiMessages:[],timeline:[],workerState:void 0};try{if(JSON.stringify(o).length<=t)return o}catch{return o}return{...o,pendingRun:void 0,activeTask:pn("persist_trim")}}function ti(e){if(!(!l||!un))try{if(G){vl(),G.enforceMemoryCaps();let{tasks:r,activeTaskId:o,taskOrder:s}=G.toPersistedState();l.tasks=r,l.activeTaskId=o,l.taskOrder=s}let t=Vw();l=zw(l,t);let n=JSON.stringify({s:l.sessionId,p:l.pendingRun?.id,pa:l.pendingRun?.autoResume,t:l.activeTask?.status,te:l.taskEpoch,m:l.uiMessages?.length,tl:l.timeline?.length,o:l.uiOpen,h:l.uiHidden,e:l.executionMode,at:l.activeTaskId});if(n===cd&&!e?.markCheckpointDirty)return;cd=n,l.updatedAt=Date.now(),jr?.write(un,l),Vr&&Vr!==un&&(jr?.remove(Vr),Vr=null),!ri&&e?.markCheckpointDirty!==!1&&yt?.markDirty()}catch{}}var Qo=!1,Jo=!1,cd="",Ji=0,Vs=0,ld=2e3,xg=2e3;function ni(e){ti({markCheckpointDirty:!0}),yt?.syncNow({push:!0,pull:!1}),ut("checkpoint_state",{event:"critical_flush",reason:e})}function Ie(e){e?.markCheckpointDirty!==!1&&(Jo=!0);let t=Date.now();if(!Qo)Vs=t;else if(Vs>0&&t-Vs>=xg){Qo=!1,Vs=0;let n=Jo;Jo=!1,Ji=t,ti({markCheckpointDirty:n});return}Qo||(Qo=!0,setTimeout(()=>{Qo=!1,Vs=0;let n=Jo;Jo=!1;let r=Date.now();if(r-Ji<ld){Qo=!0,setTimeout(()=>{Qo=!1,Vs=0,Ji=Date.now(),ti({markCheckpointDirty:Jo||n}),Jo=!1},ld-(r-Ji));return}Ji=r,ti({markCheckpointDirty:n})},0))}function jw(){if(Yu)return;Yu=!0,Qu||(Qu=!0,Gc(document,"visibilitychange",()=>{hr()},{passive:!0})),Gc(window,"pagehide",()=>{if(rn&&M?.siteId)try{sessionStorage.setItem(`rover:sess:${M.siteId}`,JSON.stringify({t:rn,e:xr}))}catch{}if(l?.pendingRun?.autoResume){let r=l.pendingRun.resumeReason||(Er?"agent_navigation":"page_reload"),o=Ze({...l.pendingRun,resumeRequired:!0,resumeReason:r});if(l.pendingRun=o,o&&M?.siteId){let s=Qr(l?.lastNavigationHandoff);dw(M.siteId,{runId:o.id,text:o.text,taskBoundaryId:o.taskBoundaryId||Me,resumeReason:r,handoffId:s?.handoffId,openIntent:l.uiOpen?"preserve_if_running":void 0,ts:Date.now()})}}let n=yd();N?.broadcastClosing(Zh(n)),l?.pendingRun&&N?.releaseWorkflowLock(l.pendingRun.id),ti(),Zo(!0),Cd(),yt?.markDirty(),yt?.syncNow({push:!0,pull:!1}),yt?.stop(),N?.stop()},{capture:!0}),Gc(window,"pageshow",n=>{n.persisted&&(N&&(N.reloadFromStorage(),N.registerCurrentTab(window.location.href,document.title||void 0),N.claimLease(!1)),pr=!1,dn=0,M&&bl(M),hr(!0))})}function Gw(e="implicit"){if(l)return l.activeTask||(l.activeTask=pn(e),l.taskEpoch=Math.max(1,Number(l.taskEpoch)||1)),l.activeTask}function Ao(e,t){if(!l)return;let n=l.activeTask?.status,r=Ce(Me),o=fh({task:l.activeTask,taskEpoch:l.taskEpoch},e,{createTask:(s,i,a)=>pn(s,i,a)});if(l.activeTask=o.task,l.taskEpoch=o.taskEpoch,o.rotateBoundary&&t?.rotateBoundary!==!1?(Me=mr(),Fn({forceReset:!0,persist:!1})):Fn({persist:!1,appendSeed:!1}),o.clearPendingRun&&l.pendingRun&&It(void 0),o.clearWorkerState&&l.workerState&&(l.workerState=void 0,N?.setWorkerContext(void 0)),o.lifecycle==="terminal"&&(ct&&(clearTimeout(ct),ct=null),ka()),t?.syncShared!==!1&&N?.syncTask({...o.task},l.taskEpoch),t?.persist!==!1){let s=Ce(Me);n!==o.task.status?ni("run_status_transition"):!!s&&s!==r?ni("task_boundary_transition"):Ie()}if(hr(),gg(),G){let s=G.toPersistedState();l.tasks=s.tasks,l.activeTaskId=s.activeTaskId,l.taskOrder=s.taskOrder}return o.task}function yo(){if(!G||!X)return;vl();let e=G.listTasks(),t=G.getActiveTask()?.taskId;X.setConversations(e.map(n=>({id:n.taskId,summary:n.rootUserInput||n.taskId.slice(0,8),status:n.state,updatedAt:n.endedAt||n.lastAssistantAt||n.lastUserAt||n.startedAt,isActive:n.taskId===t}))),t&&X.setActiveConversationId(t)}function ul(){if(G)return G.getActiveTask()}function Kw(e=l,t){let n=String(t||e?.activeTaskId||e?.activeTask?.taskId||"").trim()||void 0,r=Ce(ss(e)),o=String(Ze(e?.pendingRun)?.id||"").trim()||void 0;return{taskId:n,boundaryId:r,runId:o}}function Xw(){let e=Ar(ul()?.seedChatLog);return e.length?e:Ar(l?.workerState?.seedChatLog)}function Yw(e,t){let n=t||pn("task_record_sync");return Ro({taskId:e.taskId,status:sh(e.state),startedAt:e.startedAt,lastUserAt:e.lastUserAt,lastAssistantAt:e.lastAssistantAt,boundaryReason:e.blockReason||n.boundaryReason,endedAt:e.endedAt},n)}function Sg(e,t){if(!l)return;let n=Ce(e.boundaryId)||Ce(e.pendingRun?.taskBoundaryId)||Ce(e.workerState?.taskBoundaryId)||kn()||mr(),r=Ar(e.seedChatLog??e.workerState?.seedChatLog),o=ur(Ft(e.workerState||r.length||e.rootUserInput?{...e.workerState||{},...e.rootUserInput?{rootUserInput:e.rootUserInput}:{},...r.length?{seedChatLog:r}:{},taskBoundaryId:e.workerState?.taskBoundaryId||n}:void 0),n),s=Ze(e.pendingRun),i=Ta(e.transientStatus,{runId:s?.id,taskId:e.taskId});l.activeTaskId=e.taskId,l.activeTask=Yw(e,l.activeTask),l.uiMessages=dr(e.uiMessages),l.timeline=fr(e.timeline),l.workerState=o,l.pendingRun=s,l.taskTabScope=pi(e.tabScope,n),l.uiStatus=i?.text,l.transientStatus=i,Me=n,e.rootUserInput?.trim()&&(Kt=e.rootUserInput.trim()),t?.replayUi!==!1&&(Dd(),l.uiMessages.length&&Tl(l.uiMessages),l.timeline.length&&_l(l.timeline),kl(l),ui(),X?.setRunning(!!l.pendingRun&&l.activeTask?.status==="running"),e.state==="paused"?X?.showPausedTaskBanner({taskId:e.taskId,rootUserInput:e.rootUserInput||"Task"}):X?.hidePausedTaskBanner())}function Rg(e){let t=Ar(e),n=ul();n&&G&&G.updateTask(n.taskId,r=>({...r,seedChatLog:t})),l?.workerState&&(l.workerState=Ft({...l.workerState,seedChatLog:t,updatedAt:Date.now()}),N?.setWorkerContext(_a(l.workerState)))}function vl(){if(!l||!G)return;let e=G.getActiveTask();if(!e)return;let t=$i(l.activeTask?.status||"running",l.activeTask?.boundaryReason),n=dr(l.uiMessages),r=fr(l.timeline),o=[...n].reverse().find(u=>u.role==="assistant"),s=Ft(l.workerState),i=Ze(l.pendingRun),a=Ce(i?.taskBoundaryId)||Ce(s?.taskBoundaryId)||Ce(e.boundaryId)||kn()||mr(),c=pi(l.taskTabScope,a),d=Ta(l.transientStatus,{runId:i?.id,taskId:e.taskId}),p=Ar(e.seedChatLog?.length?e.seedChatLog:s?.seedChatLog);G.updateTask(e.taskId,u=>({...u,state:t,boundaryId:a,startedAt:Number(l?.activeTask?.startedAt)||u.startedAt,endedAt:Number(l?.activeTask?.endedAt)||void 0,lastUserAt:Number(l?.activeTask?.lastUserAt)||u.lastUserAt,lastAssistantAt:Number(l?.activeTask?.lastAssistantAt)||u.lastAssistantAt,uiMessages:n,timeline:r,workerState:s,pendingRun:i,tabScope:c,rootUserInput:s?.rootUserInput||i?.text||u.rootUserInput||Kt,summary:o?.text||u.summary,seedChatLog:p,transientStatus:d}))}function Ld(e){if(!l||!G)return;let t=Kw(l,e?.preferredTaskId),n=yh(G.listTasks(),t);if(!n&&e?.allowCreate!==!1){let o=t.boundaryId||mr(),s=$i(l.activeTask?.status||"running",l.activeTask?.boundaryReason);n=G.createTask("adopted_continuation",{taskId:t.taskId,state:s,boundaryId:o,startedAt:Number(l.activeTask?.startedAt)||Date.now(),endedAt:Number(l.activeTask?.endedAt)||void 0,lastUserAt:Number(l.activeTask?.lastUserAt)||void 0,lastAssistantAt:Number(l.activeTask?.lastAssistantAt)||void 0,rootUserInput:Ft(l.workerState)?.rootUserInput||Ze(l.pendingRun)?.text||Kt,seedChatLog:Ar(l.workerState?.seedChatLog),tabIds:pi(l.taskTabScope,o)?.touchedTabIds||[]})}if(!n)return;e?.makeActive!==!1&&G.getActiveTaskId()!==n.taskId&&G.switchActiveTask(n.taskId),l.activeTaskId=G.getActiveTaskId()||n.taskId,l.activeTask=Ro({...l.activeTask||pn("adopted_continuation"),taskId:l.activeTaskId},pn("adopted_continuation",Date.now(),l.activeTaskId)),vl();let r=G.toPersistedState();return l.tasks=r.tasks,l.activeTaskId=r.activeTaskId,l.taskOrder=r.taskOrder,yo(),G.getTask(l.activeTaskId||n.taskId)}function Qw(e,t=Date.now()){if(!l||e==="system")return;let n=Gw("implicit");n&&n.status==="running"&&(e==="user"&&(n.lastUserAt=t),e==="assistant"&&(n.lastAssistantAt=t))}var Vu="[Rover]";function Jw(e){if(!(M?.ui?.tabIndicator?.titlePrefix!==!1))return;let n=e||"[Rover: Running]",r=ca;r||(aa=document.title),ca=!0,Vu=n;let o=r?document.title.replace(/^\[Rover[^\]]*\]\s*/,"")||aa||"":document.title;if(document.title=`${n} ${o}`,!Zs){let s=document.querySelector("title");s&&(Zs=new MutationObserver(()=>{if(ca&&!document.title.startsWith(Vu)){let i=document.title.replace(/^\[Rover[^\]]*\]\s*/,"");document.title=`${Vu} ${i}`}}),Zs.observe(s,{childList:!0,characterData:!0,subtree:!0}))}M?.ui?.tabIndicator?.faviconBadge===!0&&Ih()}function yl(){ca&&(ca=!1,Zs&&(Zs.disconnect(),Zs=null),aa!==void 0?(document.title=aa,aa=void 0):document.title.startsWith("[Rover] ")&&(document.title=document.title.slice(8)),xh())}function Ag(e="worker_task_active",t=Date.now()){if(G){let n=G.getActiveTask();n&&G.dispatch(n.taskId,{type:"START",reason:e})}Ao({type:"ensure_running",reason:e,at:t}),Jw()}function Zw(e="worker_task_complete",t=Date.now()){if(G){let n=G.getActiveTask();n&&G.dispatch(n.taskId,{type:"COMPLETE"})}Ao({type:"terminal",terminal:"completed",reason:e,at:t}),yl()}function $c(e="worker_task_failed",t=Date.now()){if(G){let n=G.getActiveTask();n&&G.dispatch(n.taskId,{type:"FAIL",error:e})}Ao({type:"terminal",terminal:"failed",reason:e,at:t}),yl()}function eE(e="worker_task_ended",t=Date.now()){if(G){let n=G.getActiveTask();n&&G.dispatch(n.taskId,{type:"CANCEL",reason:"ended"})}Ao({type:"terminal",terminal:"ended",reason:e,at:t}),yl()}function Cg(e="worker_task_cancelled",t=Date.now()){if(G){let n=G.getActiveTask();n&&G.dispatch(n.taskId,{type:"CANCEL",reason:e})}Ao({type:"terminal",terminal:"cancelled",reason:e,at:t}),yl()}function wn(){_o=null,X?.setTaskSuggestion({visible:!1})}function tE(e){let t=String(e?.id||"").trim();if(!t||Cr())return!1;let n=String(e?.text||"").trim()||"Continue task";return _o?.kind==="resume_run"&&_o.runId===t?!1:(_o={kind:"resume_run",runId:t,text:n,createdAt:Date.now()},X?.setTaskSuggestion({visible:!0,text:"Resume your interrupted task or cancel it?",primaryLabel:"Resume",secondaryLabel:"Cancel"}),!0)}function ka(){nn=!1,fn=!1,is(),M?.siteId&&(qi(M.siteId),sg(M.siteId)),yt?.markDirty(),yt?.syncNow({push:!0,pull:!1})}function Dd(){X?.clearMessages(),X?.clearTimeline(),X?.setQuestionPrompt(void 0),wn()}function Od(e){if(!l)return;ct&&(clearTimeout(ct),ct=null),pr=!1,dn=0,nn=!1,fn=!1,Tt&&(clearTimeout(Tt),Tt=null);let t=Ze(l.pendingRun),n=String(e.runId||t?.id||"").trim();n&&(So(n),N?.releaseWorkflowLock(n),Pd(n)||Eo(n,e.cancelReason||e.reason,{attemptImmediately:!0})),It(void 0),N?.setActiveRun(void 0),X?.setRunning(!1),X?.setQuestionPrompt(void 0),wn(),l.activeTask?.status==="running"?Cg(e.reason):ka(),Et(void 0),ut("status",{event:"local_run_abandoned",reason:e.reason,runId:n||void 0}),e.timelineTitle&&ot({kind:e.timelineStatus==="error"?"error":"info",title:e.timelineTitle,detail:e.timelineDetail,status:e.timelineStatus||"info"}),e.emitError?.message&&ze("error",{message:e.emitError.message,scope:e.emitError.scope||"resume",code:e.emitError.code,runId:n||void 0})}function nE(e){if(e)return Ce(e.pendingAskUser?.boundaryId||e.taskBoundaryId)}function ur(e,t){if(!e)return;let n=Ce(t);if(!n)return e;let r=Ce(e.taskBoundaryId);if(r&&r!==n)return;let o=Ce(e.pendingAskUser?.boundaryId);if(!(o&&o!==n))return e}function ui(){if(l?.activeTask?.status!=="running"){zs="",X?.setQuestionPrompt(void 0);return}let e=kn(),t=nE(l?.workerState);if(e&&t&&t!==Ce(e)){zs="",X?.setQuestionPrompt(void 0);return}let n=Yr(l?.workerState?.pendingAskUser?.questions);if(!n.length){zs="",X?.setQuestionPrompt(void 0);return}let r=`${Ce(t||e)||""}:${n.map(o=>`${o.key}:${o.query}`).join("|")}`;r!==zs&&(zs=r,ni("question_prompt_boundary")),X?.setQuestionPrompt({questions:n})}function rE(){let e=l?.pendingRun;if(!e)return!1;if(!N)return!0;let t=N?.getState()?.activeRun;if(t?.runId&&t.runId===e.id||t?.runtimeId&&t.runtimeId!==Je)return!0;let n=Date.now()-Number(e.startedAt||0);return n>=0&&n<=_k}function oE(){if(!l?.pendingRun||rE()||!N)return;let e=l.pendingRun;if(e.resumeRequired===!0&&Dc(l.activeTask?.status))return;let t=String(_e?.getActiveRunId()||"").trim();if(t&&t===e.id||Cr())return;let n=Date.now()-Number(e.startedAt||0);!Number.isFinite(n)||n<kk||(So(e.id),Eo(e.id,"stale_pending_cleanup",{attemptImmediately:!0}),It(void 0),N?.releaseWorkflowLock(e.id),N?.setActiveRun(void 0),ct&&(clearTimeout(ct),ct=null))}function Un(e,t,n=!0,r){let o=String(t||""),s=Io(r?.blocks);if(!o&&(!s||s.length===0))return;let i={id:r?.id||Xr("msg"),role:e,text:o,blocks:s,ts:r?.ts||Date.now(),sourceRuntimeId:r?.sourceRuntimeId};return X?.addMessage(i.role,i.text,{blocks:i.blocks}),l&&n&&(l.uiMessages.push(i),l.uiMessages.length>Jc&&(l.uiMessages=l.uiMessages.slice(-Jc)),Qw(i.role,i.ts),Ie()),N&&r?.publishShared!==!1&&(N.appendMessage({id:i.id,role:i.role,text:i.text,blocks:i.blocks,ts:i.ts}),N.markTaskActivity(i.role,i.ts)),i}function Tl(e){for(let t of e)Un(t.role,t.text,!1,{id:t.id,ts:t.ts,sourceRuntimeId:t.sourceRuntimeId,publishShared:!1,blocks:t.blocks})}function ot(e,t=!0){let n={id:e.id||Xr("timeline"),kind:e.kind,title:on(e.title,400),detail:e.detail?String(e.detail):void 0,detailBlocks:Io(e.detailBlocks),status:e.status,ts:e.ts||Date.now(),sourceRuntimeId:e.sourceRuntimeId};return X?.addTimelineEvent(n),l&&t&&(l.timeline.push(n),l.timeline.length>Zc&&(l.timeline=l.timeline.slice(-Zc)),Ie({markCheckpointDirty:!1})),N&&e.publishShared!==!1&&N.appendTimeline({id:n.id,kind:n.kind,title:n.title,detail:n.detail,detailBlocks:n.detailBlocks,status:n.status,ts:n.ts}),n}function _l(e){X?.clearTimeline();for(let t of e)ot({id:t.id,kind:t.kind,title:t.title,detail:t.detail,detailBlocks:t.detailBlocks,status:t.status,ts:t.ts,sourceRuntimeId:t.sourceRuntimeId,publishShared:!1},!1)}function Mg(e,t){if(!e?.text||t?.taskStatus&&t.taskStatus!=="running")return;let n=String(t?.activeRunId||"").trim(),r=String(e.runId||"").trim(),o=String(t?.activeTaskId||"").trim(),s=String(e.taskId||"").trim();if(!(r&&!n)&&!(r&&n&&r!==n)&&!(s&&o&&s!==o))return e.text}function Ng(e=l){let t=N?.getState();return Th({localPendingRunId:e?.pendingRun?.id,sharedActiveRunId:t?.activeRun?.runId,sharedTaskId:t?.task?.taskId||t?.activeTaskId,activeTaskId:e?.activeTask?.taskId||e?.activeTaskId})}function Et(e,t){let n=Ta(e?{text:e,runId:t?.runId||l?.pendingRun?.id,taskId:t?.taskId||l?.activeTask?.taskId||ul()?.taskId,stage:t?.stage,ts:Date.now()}:void 0,{runId:t?.runId||l?.pendingRun?.id,taskId:t?.taskId||l?.activeTask?.taskId||ul()?.taskId}),r=Mg(n,{activeRunId:Ng(l),activeTaskId:l?.activeTask?.taskId,taskStatus:l?.activeTask?.status});r?X?.setStatus(r):X?.setStatus?.(void 0),l&&(l.uiStatus=n?.text,l.transientStatus=n,vl(),Ie({markCheckpointDirty:!1})),N&&t?.publishShared!==!1&&N.setStatus(n)}function kl(e=l){let t=Mg(e?.transientStatus,{activeRunId:Ng(e),activeTaskId:e?.activeTask?.taskId,taskStatus:e?.activeTask?.status});t?X?.setStatus(t):X?.setStatus?.(void 0)}function as(e,t){let n=ya(e);lt=n;let r=t?.localLogicalTabId??N?.getLocalLogicalTabId(),o=t?.activeLogicalTabId??N?.getActiveLogicalTabId(),s=t?.holderRuntimeId??N?.getCurrentHolderRuntimeId(),i=n==="controller"&&!!(M?.allowActions??!0);tt?.setAllowActions(i),tt?.setActionGateContext?.({mode:n,controllerRuntimeId:s,activeLogicalTabId:o,localLogicalTabId:r,reason:va(n,i)}),l&&(l.executionMode=n,Ie()),hr(),X?.setExecutionMode(n,{controllerRuntimeId:s,localLogicalTabId:r,activeLogicalTabId:o,canTakeControl:!0,canComposeInObserver:Tg(),note:_g(n)}),ze("mode_change",{mode:n,rawMode:e,...t})}function It(e){l&&(e?l.pendingRun=Ze({...e,taskBoundaryId:e.taskBoundaryId||Me}):(l.pendingRun=void 0,l.uiStatus=void 0,l.transientStatus=void 0,ko(void 0),_d(l)||is()),ba(l),hr(),Ie())}function zu(e){l&&(l.lastNavigationHandoff=Qr(e),Ie())}function wl(){let e=Number(N?.getLocalLogicalTabId()||N?.getActiveLogicalTabId()||1);return!Number.isFinite(e)||e<=0?1:e}function Fn(e){if(!l)return;let t=Ce(Me)||mr();Me||(Me=t);let n=wl(),r=e?.appendSeed!==!1,o=pi(l.taskTabScope,t);if(!!e?.forceReset||!o||Ce(o.boundaryId)!==t){let c={boundaryId:t,seedTabId:n,touchedTabIds:[n],updatedAt:Date.now()};return l.taskTabScope=c,e?.persist!==!1&&Ie(),c}let i=Bn(o.touchedTabIds);r&&!i.includes(n)&&i.unshift(n);let a={...o,seedTabId:Number.isFinite(Number(o.seedTabId))&&Number(o.seedTabId)>0?Number(o.seedTabId):n,touchedTabIds:i.slice(0,24),updatedAt:Date.now()};return l.taskTabScope=a,e?.persist&&Ie(),a}function Lg(e,t){if(!l)return;let n=Fn({persist:!1});if(!n)return;let r=Bn([n.seedTabId,...n.touchedTabIds||[],...e]),o={...n,touchedTabIds:r.slice(0,24),updatedAt:Date.now()};return l.taskTabScope=o,t?.persist!==!1&&Ie(),o}function sE(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function cs(e){if(!l)return;let t=Fn({persist:!1,appendSeed:!1});if(!t||!N)return t;let n=Date.now(),r=Array.isArray(N.getState()?.tabs)?N.getState().tabs:[],o=new Set;for(let _ of r){let A=Number(_?.logicalTabId);if(!Number.isFinite(A)||A<=0)continue;let R=Math.max(Number(_?.updatedAt)||0,Number(_?.openedAt)||0,Number(_?.detachedAt)||0),B=n-R;if(_.runtimeId){o.add(A);continue}if(_.external){B<=Bk&&o.add(A);continue}if(_.detachedReason==="navigation_handoff"){B<=Uk&&o.add(A);continue}if(_.detachedReason==="opened_pending_attach"){B<=Fk&&o.add(A);continue}}let s=Number(N.getLocalLogicalTabId()),i=Number(N.getActiveLogicalTabId()),a=Number(t.seedTabId)>0?Number(t.seedTabId):wl();Number.isFinite(s)&&s>0&&o.add(s),Number.isFinite(i)&&i>0&&o.add(i),o.size===0&&Number.isFinite(a)&&a>0&&o.add(a);let c=Bn(t.touchedTabIds),d=c.filter(_=>o.has(_)),p=o.has(t.seedTabId)?t.seedTabId:Number.isFinite(s)&&s>0?s:Number.isFinite(i)&&i>0?i:a;d.includes(p)||d.unshift(p);let u=Bn(d).slice(0,24);if(!(p!==t.seedTabId||!sE(u,c)))return t;let h=c.filter(_=>!u.includes(_)),g={...t,seedTabId:p,touchedTabIds:u.length?u:[p],updatedAt:Date.now()};return l.taskTabScope=g,e?.persist!==!1&&Ie(),ut("status",{event:"scoped_tab_reconciled",removedTabIds:h,scopedTabIds:g.touchedTabIds,seedTabId:g.seedTabId}),g}function la(){let e=cs({persist:!1})||Fn({persist:!1,appendSeed:!1});if(!e)return[wl()];let t=Bn(e.touchedTabIds);return t.length?t:[e.seedTabId]}function Dg(){let e=cs({persist:!1})||Fn({persist:!1,appendSeed:!1});if(e)return{boundaryId:e.boundaryId,seedTabId:e.seedTabId,touchedTabIds:Bn(e.touchedTabIds)}}function iE(e,t){let n=rs,r=os,o=si,s,i=t;if(G){let d=G.listTasks(),p=G.getActiveTask()?.taskId,u=N?.getLocalLogicalTabId(),v=d.filter(_=>_.taskId!==p&&(_.state==="completed"||_.state==="cancelled")&&!!_.endedAt).sort((_,A)=>(Number(A.endedAt)||0)-(Number(_.endedAt)||0)),g=(Number.isFinite(Number(u))&&Number(u)>0?v.filter(_=>Array.isArray(_.tabIds)&&_.tabIds.includes(Number(u))):v)[0];g&&(n=g.rootUserInput||n,r=g.summary||r,o=g.endedAt||o,s=g.uiMessages.map(_=>({role:_.role,text:_.text,ts:_.ts})),i=g.state)}let a=M?.task?.followup,c=Lh({mode:a?.mode,previousTaskStatus:i,previousTaskMessages:s,previousTaskUserInput:n,previousTaskAssistantOutput:r,previousTaskCompletedAt:o,currentPrompt:e,ttlMs:Id(a?.ttlMs),minLexicalOverlap:xd(a?.minLexicalOverlap)});return{chatLog:c.chatLog,reason:c.reason,overlap:c.overlap}}var wr=new Map,ud=Zk;async function aE(e){if(wr.has(e)){let o=wr.get(e);if(Date.now()-o.ts<ud)return;wr.delete(e)}let t=Date.now();for(let[o,s]of wr)t-s.ts>=ud&&wr.delete(o);let n=l?.pendingRun?.id;if(!n||!_e)return;let r=await _e.fetchExternalContext({runId:n,url:e,source:"direct_url"});r&&(wr.set(e,{data:r,ts:Date.now()}),Qh(wr,Jk))}function cE(e){let t=wr.get(e);if(t){if(Date.now()-t.ts>=ud){wr.delete(e);return}return t.data}}function lE(e){let t=String(e||"").trim();return t===Zu.read||t===Zu.act}function Zi(e){let t=String(e.code||"EXTERNAL_CONTEXT_FAILED").trim()||"EXTERNAL_CONTEXT_FAILED",n=String(e.message||"External context request failed").trim()||"External context request failed";return{success:!1,error:`${t}: ${n}`,allowFallback:e.retryable!==!1,output:{success:!1,error:{code:t,message:n,retryable:e.retryable===!0,status:Number.isFinite(Number(e.status))?Number(e.status):void 0},details:e.details}}}async function uE(e){let t=String(e.call?.name||"").trim(),n=e.call?.args&&typeof e.call.args=="object"?e.call.args:{},r=t===Zu.act?"act":"read_context",o=Number(n.tab_id),s=Number.isFinite(o)&&o>0?Math.trunc(o):Number.isFinite(Number(e.routeTabId))&&Number(e.routeTabId)>0?Math.trunc(Number(e.routeTabId)):void 0,i=N?.listTabs({scope:"all"})||[],a=s?i.find(h=>h.logicalTabId===s):void 0,d=String(n.url||"").trim()||String(a?.url||"").trim(),p=String(n.message||n.user_input||"").trim()||void 0,u=String(n.source||"").trim().toLowerCase()==="google_search"?"google_search":"direct_url";if(!d)return Zi({code:"MISSING_URL",message:"External context tools require a target url or tab with a url.",retryable:!1});if(!_e)return Zi({code:"RUNTIME_UNAVAILABLE",message:"Rover server runtime is not initialized.",retryable:!0});let v=String(l?.pendingRun?.id||_e.getActiveRunId()||ga||"").trim()||void 0;if(!v)return Zi({code:"NO_ACTIVE_RUN",message:"External context tools can only run during an active run.",retryable:!1});try{let h=cE(d);if(h)return h;let g=await _e.fetchExternalContext({runId:v,tabId:s,url:d,intent:r,message:p,source:u});if(!g)return Zi({code:"EMPTY_RESPONSE",message:"Server returned no external context response.",retryable:!0});let A=(g.pageData&&typeof g.pageData=="object"?g.pageData:void 0)||g;return{success:!0,output:{...A,metadata:{...A&&typeof A=="object"?A.metadata||{}:{},external:!0,accessMode:"external_scraped",logicalTabId:s,sourceTool:t},intent:r}}}catch(h){let g=String(h?.code||"").trim().toUpperCase()||"EXTERNAL_CONTEXT_FAILED",_=Number(h?.status),A=_>=500||g==="STALE_SEQ"||g==="STALE_EPOCH";return Zi({code:g,message:String(h?.message||"External context request failed"),retryable:A,status:Number.isFinite(_)?_:void 0,details:h?.details})}}function ls(e){let t=la();return{taskBoundaryId:Me,taskTabScope:Dg(),scopedTabIds:t,...e||{}}}var Vh="";function Gn(e){if(!Fe)return;let t=ls(e),n=JSON.stringify(t);n!==Vh&&(Vh=n,Fe.postMessage({type:"update_config",config:t}))}function Og(e,t){let n=String(e||"").trim();if(!n||!Fe)return;if(lt==="observer"){if(Cr()){Un("system","This tab is read-only while another tab is actively running Rover.",!0),ot({kind:"info",title:"Observer mode",detail:"Input is disabled while the active run is controlled by another tab.",status:"info"});return}if(!(N?.requestControl()??!1)){Un("system","Unable to take control right now because another tab is still running Rover actions.",!0),ot({kind:"info",title:"Observer mode",detail:"Action execution is currently owned by another tab runtime.",status:"info"});return}let g=N?.getLocalLogicalTabId(),_=N?.getActiveLogicalTabId(),A=N?.getCurrentHolderRuntimeId()||Je;as("controller",{localLogicalTabId:g,activeLogicalTabId:_,holderRuntimeId:A});let R=!!(M?.allowActions??!0);tt?.setAllowActions(R),tt?.setActionGateContext?.({mode:"controller",controllerRuntimeId:A,activeLogicalTabId:_,localLogicalTabId:g,reason:va("controller",R)})}let r=t?.runId||crypto.randomUUID(),o=!!t?.resume,s=t?.appendUserMessage!==!1,a=(t?.askUserAnswers?Mw(r):void 0)||n;od(r),s&&Un("user",n,!0);let c=l?.pendingRun?.id===r?l.pendingRun.attempts:0,d=l?.pendingRun?.id===r&&l.pendingRun.taskBoundaryId||Me;Lg([wl()],{persist:!0});let p=la(),u=Ar(Array.isArray(t?.seedChatLog)?t.seedChatLog:Xw());Er=!1,It({id:r,text:a,startedAt:Date.now(),attempts:o?c+1:0,autoResume:t?.autoResume!==!1,taskBoundaryId:d,resumeRequired:!1,resumeReason:void 0}),Ag(o?"worker_task_resumed":"worker_task_active"),Kt=a,l&&(l.workerState=Ft({...l.workerState||{},taskBoundaryId:d,rootUserInput:l.workerState?.rootUserInput||a,seedChatLog:u,history:l.workerState?.history||[],plannerHistory:l.workerState?.plannerHistory||[],agentPrevSteps:l.workerState?.agentPrevSteps||[],updatedAt:Date.now()}),N?.setWorkerContext(_a(l.workerState))),Rg(u),N?.acquireWorkflowLock(r),N?.setActiveRun({runId:r,text:a}),Fe.postMessage({type:"run",text:n,runId:r,trajectoryId:l?.workerState?.trajectoryId,resume:o,preserveHistory:!!t?.preserveHistory,seedChatLog:u,routing:t?.routing,askUserAnswers:t?.askUserAnswers,scopedTabIds:p,taskTabScope:Dg()}),Tt&&clearTimeout(Tt);let v=r;Tt=setTimeout(()=>{l?.pendingRun?.id===v&&(Od({reason:"run_timeout_terminal",statusText:"Task timed out.",runId:v,cancelReason:"run_timeout_terminal",timelineTitle:"Run timed out",timelineDetail:"Task timed out after 5 minutes with no response.",timelineStatus:"error",emitError:{message:"Run safety timeout",scope:"run_timeout",code:"RUN_TIMEOUT"}}),Un("system","Task timed out after 5 minutes with no response.",!0)),Tt=null},5*6e4)}async function dE(e,t){let n=Cw(e,t?.askUserAnswers);if(!n)return;oE();let r=l?.activeTask?.status,o=Yr(l?.workerState?.pendingAskUser?.questions).length,s=l?.workerState?.pendingAskUser?.boundaryId,i=Mh({startNewTask:!!t?.startNewTask,taskStatus:r,pendingAskUserQuestionCount:o,hasAskUserAnswers:!!t?.askUserAnswers,pendingAskUserBoundaryId:s,currentTaskBoundaryId:Me}),a=!i,c=a?t?.continueRunId||l?.pendingRun?.id||_e?.getActiveRunId():void 0,d=i?iE(n,r):{reason:"mode_disabled",overlap:0},p=Ar(d.chatLog);if(ut("status",{event:"task_boundary_decision",startFreshTask:i,askUserContinuation:a,pendingAskUserQuestionCount:o,activeTaskStatus:r||"none"}),ut("status",{event:"followup_chat_cue",attached:p.length>0,reason:d.reason,overlap:d.overlap}),N?.pruneTabs(i?{dropRuntimeDetached:!0,keepOnlyActiveLiveTab:!0,keepRecentExternalPlaceholders:!0}:{dropRuntimeDetached:!0}),i){let h=!!l?.pendingRun,g=t?.reason||(r==="completed"?"auto_after_task_complete":r==="running"?"auto_new_prompt_boundary":"auto_after_task_end");if(ut("status",{event:"task_boundary_reset",reason:g,hadActiveRun:h}),G&&r==="running"){let _=G.getActiveTask();_&&(_.uiMessages=l?.uiMessages||[],_.timeline=l?.timeline||[],_.rootUserInput=_.rootUserInput||Kt)}if(xl({reason:g,clearUi:!0}),G){let _=G.getActiveTask();_&&(_.rootUserInput=n,_.seedChatLog=p),yo()}h&&_e&&await new Promise(_=>setTimeout(_,50))}wn();let u=c,v=t?.routing;if(_e&&M)try{let h=await _e.submitRunInput({message:n,clientEventId:crypto.randomUUID(),continueRun:a,forceNewRun:i,runId:a?c:void 0,requestedMode:t?.routing||M.taskRouting?.mode||"act"});if(!h)throw new Error("Server run/input returned no data; run was not accepted.");Number.isFinite(Number(h.epoch||h.currentEpoch))&&(zr=Math.max(1,Number(h.epoch||h.currentEpoch)));let g=typeof h.runId=="string"&&h.runId.trim()?h.runId.trim():"";if(!g){let _=String(h?.conflict?.type||"").trim();if(_==="active_run_exists"&&_e&&i){let A=h?.conflict?.runId||h.runId;if(A){await _e.controlRun({action:"cancel",runId:A,reason:"stale_run_cleanup"});let R=await _e.submitRunInput({message:n,clientEventId:crypto.randomUUID(),continueRun:!1,forceNewRun:!0,requestedMode:t?.routing||M.taskRouting?.mode||"act"});R?.runId&&(u=R.runId.trim(),ko(u),(R.acceptedMode==="act"||R.acceptedMode==="planner")&&(v=R.acceptedMode))}}if(!u){let A=String(h.decisionReason||_||h.message||"run_not_accepted").trim();throw new Error(`Server did not accept this run (${A}).`)}}u||(u=g),ko(u),(h.acceptedMode==="act"||h.acceptedMode==="planner")&&(v=h.acceptedMode)}catch(h){let g=String(h?.message||"server run submission failed");ko(void 0),ot({kind:"error",title:"Run start failed",detail:g,status:"error"}),Un("system",`Unable to start task: ${g}`,!0),Et(`Task could not start (${g})`),ze("error",{message:g,scope:"run_input"});return}Og(n,{runId:u,appendUserMessage:!0,resume:!1,preserveHistory:!1,seedChatLog:p,autoResume:!0,routing:v,askUserAnswers:t?.askUserAnswers})}function es(e,t){dE(e,t)}function ea(e,t){Od({reason:e,statusText:t||e,cancelReason:e})}function Pd(e){let t=String(e||"").trim();if(!t)return!1;let n=N?.getWorkflowLockInfo();if(!n?.locked||!n.holderRuntimeId||n.holderRuntimeId===Je||n.runId!==t)return!1;let r=N?.listTabs({scope:"all"}).find(o=>o.runtimeId===n.holderRuntimeId);return r?Number(r.updatedAt)>Date.now()-5e3:!1}function ta(e=450,t){ct||(ct=setTimeout(()=>{ct=null,Sr(t)},Math.max(120,e)))}function fE(e,t){pr=!0,nn=!1,fn=!1,wn(),Et("Resuming interrupted task...");let n=e.text?.trim()||l?.workerState?.rootUserInput?.trim()||Kt?.trim()||"Continue the current task on this page";ut("status",{event:"resume_dispatch",source:t,runId:e.id}),Og(n,{runId:e.id,resume:!0,appendUserMessage:!1,autoResume:!0})}function Sr(e){if(!l?.pendingRun){ct&&(clearTimeout(ct),ct=null),dn=0;return}let t=Ze(l.pendingRun);if(!t||(lt==="observer"&&!Cr()&&as("controller",{localLogicalTabId:N?.getLocalLogicalTabId(),activeLogicalTabId:N?.getActiveLogicalTabId(),holderRuntimeId:N?.getCurrentHolderRuntimeId()}),lt==="observer")||pr)return;if(!Kn||!Fe){ta(250,e);return}let n=l.activeTask?.status;if(Ou(n)){ea("terminal_task","Previous task already ended.");return}if(!Dc(n)||!t.autoResume)return;if(wd(M?.task?.resume?.mode)!=="crash_only"){ea("unsupported_resume_mode","Previous task dismissed.");return}if(t.resumeRequired!==!0){let d=Date.now()-Number(t.startedAt||0),p=il(M?.task?.resume?.ttlMs);if(Number.isFinite(d)&&d>=0&&d<p)t.resumeRequired=!0,t.resumeReason=t.resumeReason||"worker_interrupted",It(t);else{ct&&(clearTimeout(ct),ct=null),dn=0,wn();return}}let o=kd(M?.task?.autoResumePolicy),s=Pd(t.id),i=ah({policy:o,resumeRequired:t.resumeRequired===!0,hasLiveRemoteController:s});if(i==="prompt_resume"&&(t.resumeReason==="agent_navigation"||t.resumeReason==="cross_host_navigation"||t.resumeReason==="worker_interrupted"||t.resumeReason==="page_reload")&&(i="auto_resume"),e?.overridePolicyAction&&i!=="defer_remote_owner"&&i!=="noop"&&(i=e.overridePolicyAction),i==="defer_remote_owner"){ta(650,e);return}if(i==="cancel_resume"){ea("resume_policy_never","Previous task cancelled by resume policy."),ot({kind:"info",title:"Resume cancelled",detail:"Auto-resume policy is set to never, so the interrupted run was cancelled.",status:"info"});return}if(!fn&&ow(t)&&(fn=!0),!fn&&(t.resumeReason==="worker_interrupted"||t.resumeReason==="agent_navigation"||t.resumeReason==="page_reload")&&(fn=!0),!fn&&sw(t)){ta(320,e);return}if(fn||(fn=!0),s){ta(650,e);return}if(ct&&(clearTimeout(ct),ct=null),!oi&&!e?.overridePolicyAction){if(dn+=1,ut("status",{event:"resume_blocked_no_session",reason:"session_not_ready",attempt:dn,runId:t.id}),dn<yk){Et("Preparing secure resume...");let d=Math.min(2e3,240+dn*160);ta(d,e);return}dn=0,nn=!1,oi=!0}dn=0;let a=il(M?.task?.resume?.ttlMs),c=Date.now()-Number(t.startedAt||0);if(!Number.isFinite(c)||c<0||c>a){ea("resume_ttl_expired","Previous task expired.");return}if(t.attempts>=mk){ea("resume_attempt_limit","Previous task dismissed.");return}if(i==="prompt_resume"){tE(t)&&(Et("Resume available. Choose Resume or Cancel."),ut("status",{event:"resume_prompt_shown",runId:t.id}));return}fE(t,e?.overridePolicyAction==="auto_resume"?"manual_resume_confirm":`policy_${o}`)}function Pg(e){if(!Uu({localUpdatedAt:Number(e.localState.updatedAt)||0,incomingUpdatedAt:Number(e.incomingState.updatedAt)||0,localState:e.localState,incomingState:e.incomingState,crossDomainResumeActive:!!e.allowRicherIncomingOnResume&&nn}))return!1;if(!e.allowRicherIncomingOnResume||!nn)return!0;let n=Bu({localState:e.localState,incomingState:e.incomingState});return n.exactRunMatch||n.exactBoundaryMatch?!0:!(n.localRunId||n.localBoundaryId)}function zh(e,t,n,r,o){return{pendingRun:o?.includePendingIdentity!==!1&&t?{id:t.id,resumeRequired:t.resumeRequired,taskBoundaryId:t.taskBoundaryId}:void 0,activeTask:n?{status:n}:void 0,workerState:e,taskEpoch:r}}function Bg(e){return e.incomingWorkerState?e.localWorkerState?Uu({localUpdatedAt:Number(e.localUpdatedAt)||Number(e.localWorkerState.updatedAt)||0,incomingUpdatedAt:Number(e.incomingUpdatedAt)||Number(e.incomingWorkerState.updatedAt)||0,localState:zh(e.localWorkerState,e.fallbackPendingRun,e.taskStatus,e.taskEpoch,{includePendingIdentity:!0}),incomingState:zh(e.incomingWorkerState,void 0,e.taskStatus,e.taskEpoch,{includePendingIdentity:!1}),crossDomainResumeActive:!!e.allowRicherIncomingOnResume&&nn}):!0:!1}function Ug(e){if(Ro(e.localState.activeTask,pn("compat_local")).status!=="running")return!0;let n=Math.max(1,Number(e.localState.taskEpoch)||1),r=Math.max(1,Number(e.incomingState.taskEpoch)||1);if(r<n)return!1;if(r>n)return!0;let o=Ce(ss(e.localState)),s=Ce(ss(e.incomingState));return o&&s?o===s:!(o&&!s||!o&&s)}async function pE(e,t){if(!l)return;let n=await Fw(e,t);if(!n||!l)return;let r=pa({...n,sessionId:l.sessionId,runtimeId:Je},l.sessionId,Je);if(!Pg({localState:l,incomingState:r,allowRicherIncomingOnResume:!0})||!Ug({localState:l,incomingState:r}))return;let o=Math.max(1,Number(l.taskEpoch)||1),s=Math.max(1,Number(r.taskEpoch)||1),i=ss(r);ns({source:"indexeddb_checkpoint",incomingBoundaryId:i,taskEpochAdvanced:s>o,allowBootstrapAdoption:!0})&&(l=pa({...l,...r,sessionId:l.sessionId,runtimeId:Je},l.sessionId,Je),ba(l),ii({rotateIfMissing:!Me}),cs({persist:!1}),Ld({preferredTaskId:r.activeTaskId||r.activeTask?.taskId}),Ie(),X&&(X.clearMessages(),Tl(l.uiMessages),_l(l.timeline),kl(l),ui(),l.uiHidden?X.hide():(X.show(),l.uiOpen?X.open():X.close())),Kn&&Fe&&Gn(),Kn&&Fe&&l.workerState&<==="controller"&&(Fe.postMessage({type:"hydrate_state",state:l.workerState}),ze("context_restored",{source:"indexeddb_checkpoint",ts:Date.now()})))}var ju=!1;function Bd(e,t){if(l&&!ju){ju=!0;try{if(t==="remote"){let r=Math.max(1,Number(l.taskEpoch)||1),o=Math.max(1,Number(e.taskEpoch)||1),s=o>r;l.taskEpoch=Math.max(r,o);let i=l.activeTask||pn("shared_sync");l.activeTask=Ig(e.task,i),s&&(l.uiMessages=[],l.timeline=[],Dd(),It(void 0),l.workerState=void 0,Me=mr(),l.taskTabScope=void 0,Fn({forceReset:!0,persist:!1}),Gn(),wn());let a=dr(e.uiMessages),c=new Set(a.map(D=>D.id)),d=l.uiMessages,p=l.uiMessages.filter(D=>D.role==="user"&&D.sourceRuntimeId===Je&&!c.has(D.id)).length;p>0&&ut("status",{event:"local_message_preserved",count:p});let u=qw(d,a);(u.length!==d.length||u.some((D,F)=>{let C=d[F];return C?C.id!==D.id||C.ts!==D.ts||C.role!==D.role||C.text!==D.text:!0}))&&(l.uiMessages=u,X?.clearMessages(),Tl(l.uiMessages));let h=fr(e.timeline),g=l.timeline,_=$w(g,h);(_.length!==g.length||_.some((D,F)=>{let C=g[F];return C?C.id!==D.id||C.ts!==D.ts||C.kind!==D.kind||C.title!==D.title||C.detail!==D.detail:!0}))&&(l.timeline=_,_l(l.timeline)),Et(typeof e.transientStatus?.text=="string"?String(e.transientStatus.text):typeof e.uiStatus=="string"?e.uiStatus:void 0,{publishShared:!1,runId:e.transientStatus?.runId||e.activeRun?.runId,taskId:e.transientStatus?.taskId||e.task?.taskId,stage:e.transientStatus?.stage});let R=l.activeTask?.status,B=e.task?.status;if(e.activeRun&&e.activeRun.runtimeId!==Je&&!Du({localTaskStatus:R,remoteTaskStatus:B,mode:lt,hasRemoteActiveRun:!0}))if(String(e.activeRun.runtimeId||"").trim()!==""||Cr()||ya(lt)==="observer")It(void 0);else{let C=Ze(l.pendingRun),Q=Ce(e.workerContext?.taskBoundaryId),ae=C?.id===e.activeRun.runId&&(!C?.taskBoundaryId||Ce(C.taskBoundaryId)===(Q||Ce(Me))),re=ae?C?.resumeRequired===!0:String(e.activeRun.runtimeId||"").trim()==="";It(Ze({id:e.activeRun.runId,text:e.activeRun.text,startedAt:e.activeRun.startedAt,attempts:ae&&C?.attempts||0,autoResume:!0,taskBoundaryId:(ae?C?.taskBoundaryId:void 0)||Q||C?.taskBoundaryId||Me,resumeRequired:re,resumeReason:ae?C?.resumeReason:re?"agent_navigation":void 0}))}else{let D=Du({localTaskStatus:R,remoteTaskStatus:B,mode:lt,hasRemoteActiveRun:!!e.activeRun}),C=Ze(l.pendingRun)?.resumeRequired===!0&&Dc(R);D&&!C&&(l.pendingRun?.id&&So(l.pendingRun.id),It(void 0),B&&B!=="running"&&ka())}if(lt==="observer"&&as("observer",{localLogicalTabId:N?.getLocalLogicalTabId(),activeLogicalTabId:N?.getActiveLogicalTabId(),holderRuntimeId:N?.getCurrentHolderRuntimeId()}),e.workerContext){let D=Ft(e.workerContext),F=Number(l.workerState?.updatedAt)||0,C=Number(D?.updatedAt)||0;D&&Bg({localWorkerState:l.workerState,incomingWorkerState:D,fallbackPendingRun:Ze(l.pendingRun),taskStatus:l.activeTask?.status,taskEpoch:l.taskEpoch,localUpdatedAt:F,incomingUpdatedAt:C,allowRicherIncomingOnResume:!0})&&ns({source:"shared_worker_context",incomingBoundaryId:D.taskBoundaryId,taskEpochAdvanced:s,allowBootstrapAdoption:!0})&&(l.workerState=ur(D,kn()),ii(),Kn&&Fe&<==="controller"&&(Gn(),Fe.postMessage({type:"hydrate_state",state:l.workerState}),ze("context_restored",{source:"shared_session",ts:Date.now()})))}}if(l.uiMessages=dr(l.uiMessages),l.timeline=fr(l.timeline),l.workerState=ur(Ft(l.workerState),kn()),ba(l),ii(),cs({persist:!1}),Kn&&Fe&<==="controller"&&Gn(),hr(),ui(),l.activeTask=Ro(l.activeTask,pn("implicit")),Ld(),N&&G){let r=new Map;for(let o of G.listTasks())for(let s of o.tabIds)r.set(s,o.taskId);N.setTaskTabMapping(r)}let n=M?.ui?.tabIndicator?.widgetTabBar!==!1;if(X&&e.tabs&&n){let r=N?.getLocalLogicalTabId(),o=N?.getActiveLogicalTabId(),s=(e.tabs||[]).filter(i=>i&&typeof i.logicalTabId=="number").map(i=>({logicalTabId:i.logicalTabId,url:String(i.url||""),title:typeof i.title=="string"?i.title:void 0,isActive:i.logicalTabId===o,isCurrent:i.logicalTabId===r,external:!!i.external,taskId:G?.getTaskForTab(i.logicalTabId)?.taskId}));s.length>1?X.setTabs(s):X.setTabs([])}else X&&X.setTabs([]);if(t==="local")return;Ie()}finally{ju=!1}}}function Ud(e){let t=pn("checkpoint_clone");return{version:hd,sessionId:e.sessionId,runtimeId:e.runtimeId,uiOpen:!!e.uiOpen,uiHidden:!!e.uiHidden,uiStatus:typeof e.uiStatus=="string"?on(e.uiStatus,300):void 0,transientStatus:Ta(e.transientStatus??e.uiStatus,{runId:e.pendingRun?.id,taskId:e.activeTask?.taskId}),uiMessages:dr(e.uiMessages),timeline:fr(e.timeline),executionMode:e.executionMode==="observer"||e.executionMode==="controller"?e.executionMode:"controller",workerState:Ft(e.workerState),pendingRun:Ze(e.pendingRun),taskTabScope:pi(e.taskTabScope,Ze(e.pendingRun)?.taskBoundaryId||Ft(e.workerState)?.taskBoundaryId),lastNavigationHandoff:Qr(e.lastNavigationHandoff),tasks:e.tasks?{...e.tasks}:{},activeTaskId:e.activeTaskId,taskOrder:e.taskOrder?[...e.taskOrder]:[],taskEpoch:Math.max(1,Number(e.taskEpoch)||1),activeTask:Ro(e.activeTask,t),lastRoutingDecision:e.lastRoutingDecision&&(e.lastRoutingDecision.mode==="act"||e.lastRoutingDecision.mode==="planner")?{mode:e.lastRoutingDecision.mode,score:Number(e.lastRoutingDecision.score)||void 0,reason:e.lastRoutingDecision.reason,ts:Number(e.lastRoutingDecision.ts)||Date.now()}:void 0,updatedAt:Number(e.updatedAt)||Date.now()}}function mE(e){return!(e.sessionScope==="tab"||e.checkpointing?.enabled===!1||!Xn(e)||!Ut)}function hE(){if(!l||!M||!Ut)return null;let e=N?.getState(),t=Ud(l),n=Math.max(Number(e?.updatedAt||0),Number(t.updatedAt||0)),r=n>0?n:Date.now();return{version:Gh,siteId:M.siteId,visitorId:Ut,sessionId:l.sessionId,updatedAt:r,sharedState:e,runtimeState:t}}function Fg(e){if(!e||typeof e!="object"||!l||!M||e.siteId&&e.siteId!==M.siteId||Ut&&e.visitorId&&e.visitorId!==Ut)return;let t=typeof e.sessionId=="string"&&e.sessionId.trim()?e.sessionId.trim():l.sessionId;ri=!0;try{if(t&&l.sessionId!==t&&(l.sessionId=t,M={...M,sessionId:t},dl(M),Gn({sessionId:t})),e.sharedState&&N&&N.hydrateExternalState(e.sharedState)&&(Bd(N.getState(),"remote"),as(N.getRole(),{localLogicalTabId:N.getLocalLogicalTabId(),activeLogicalTabId:N.getActiveLogicalTabId(),holderRuntimeId:N.getCurrentHolderRuntimeId()})),e.runtimeState&&typeof e.runtimeState=="object"){let n=pa({...e.runtimeState,sessionId:t,runtimeId:Je},t,Je);if(Pg({localState:l,incomingState:n,allowRicherIncomingOnResume:!0})){if(!Ug({localState:l,incomingState:n}))return;let r=Math.max(1,Number(l.taskEpoch)||1),o=Math.max(1,Number(n.taskEpoch)||1),s=ss(n);if(!ns({source:"cloud_checkpoint",incomingBoundaryId:s,taskEpochAdvanced:o>r,allowBootstrapAdoption:!0}))return;l=pa({...l,...n,sessionId:t,runtimeId:Je},t,Je),ba(l),ii(),l.workerState=ur(l.workerState,kn()),cs({persist:!1}),Ld({preferredTaskId:n.activeTaskId||n.activeTask?.taskId}),Ie(),kl(l),l.uiHidden?X?.hide():(X?.show(),l.uiOpen?X?.open():X?.close()),Kn&&Gn(),Kn&&l.workerState&&(Fe?.postMessage({type:"hydrate_state",state:l.workerState}),ze("context_restored",{source:"cloud_checkpoint",ts:Date.now()})),lt==="controller"&&Sr(),nn=!1}}}finally{ri=!1}}function Fd(e){if(yt?.stop(),yt=null,!mE(e)||!Ut)return;let t=Xn(e);if(!t){ze("checkpoint_token_missing",{reason:"missing_or_invalid_session_token",expectedPrefix:"rvrsess_",action:"disabled_cloud_checkpoint_client"});return}try{let n=r=>{ze("checkpoint_state",r),e.checkpointing?.onStateChange?.(r)};yt=new Cc({apiBase:e.apiBase,authToken:t,getSessionToken:()=>Xn(M),shouldSync:()=>lt==="controller"&&!nn&&!ci(),siteId:e.siteId,visitorId:Ut,ttlHours:e.checkpointing?.ttlHours??1,flushIntervalMs:e.checkpointing?.flushIntervalMs,pullIntervalMs:e.checkpointing?.pullIntervalMs,minFlushIntervalMs:e.checkpointing?.minFlushIntervalMs,maxSnapshotBytes:ai(e.stability?.maxSnapshotBytes,bt.snapshotBytes),shouldWrite:()=>lt==="controller"&&!nn&&!ci(),buildCheckpoint:()=>hE(),onCheckpoint:r=>{Fg(r)},onStateChange:(r,o)=>{n({state:r,reason:o.reason,action:o.action,code:o.code,message:o.message}),r==="paused_auth"&&ze("checkpoint_error",{action:o.action,code:o.code||"INVALID_API_KEY",message:o.message||"Checkpoint sync paused due to auth failure.",disabled:!0,reason:o.reason||"auth_failed"})},onError:(r,o)=>{e.checkpointing?.onError?.(o),o.paused||ze("checkpoint_error",{action:o.action,code:o.code,message:o.message,status:o.status,disabled:!1,reason:"transient_failure"})}}),yt.start(),yt.markDirty(),gg()}catch{yt=null}}function dl(e){if(!l)return;if(N?.stop(),N=null,e.sessionScope==="tab"){as("controller");return}N=new xc({siteId:e.siteId,sessionId:l.sessionId,runtimeId:Je,leaseMs:e.tabPolicy?.actionLeaseMs,onRoleChange:(r,o)=>{let s=ya(r);as(s,o);let i=cr;cr=s==="controller",i!==cr&&(cr?(hr(!0),M&&Md(M)):hr(!0));let a=s==="controller"&&(M?.allowActions??!0);if(tt?.setAllowActions(a),tt?.setActionGateContext?.({mode:s,controllerRuntimeId:o?.holderRuntimeId??N?.getCurrentHolderRuntimeId(),activeLogicalTabId:o?.activeLogicalTabId??N?.getActiveLogicalTabId(),localLogicalTabId:o?.localLogicalTabId??N?.getLocalLogicalTabId(),reason:va(s,a)}),s==="controller"){Fn({persist:!0,appendSeed:!1}),cs({persist:!0});let c=N?.getWorkerContext();if(c){let d=Ft(c),p=Number(l?.workerState?.updatedAt)||0,u=Number(d?.updatedAt)||0;d&&u>p+100&&ns({source:"controller_handoff",incomingBoundaryId:d.taskBoundaryId,allowBootstrapAdoption:!0})&&(l&&(l.workerState=ur(d,kn()),ii(),Ie()),Kn&&Fe&&(Gn(),Fe.postMessage({type:"hydrate_state",state:l?.workerState}),ze("context_restored",{source:"controller_handoff",ts:Date.now()})))}Sr()}},onStateChange:(r,o)=>{Bd(r,o)},onSwitchRequested:r=>{r>0&&(us(),ot({kind:"status",title:`Switched to tab #${r}`,status:"info"}))},onTaskTabsExhausted:r=>{G&&(G.dispatch(r,{type:"PAUSE",reason:"all_tabs_closed"}),yo(),Ie(),X?.showPausedTaskBanner({taskId:r,rootUserInput:G.getTask(r)?.rootUserInput||"Task"}))}}),N.onSessionTokenReceived=(r,o)=>{cr||cl(r,o)},N.onProjectionReceived=r=>{!cr&&r&&rd(r)};let t=yd();N.start(Zh(t)),Fn({persist:!0,appendSeed:!1}),cs({persist:!0}),Ze(l?.pendingRun)?.resumeRequired===!0&&N.requestControl(),l?.lastNavigationHandoff&&t&&(l.lastNavigationHandoff=Qr({...l.lastNavigationHandoff,consumed:!0}),Ie()),N.setRpcRequestHandler(async r=>{if(!tt)throw new Error("Bridge not available");if(r.method==="getPageData")return tt.getPageData(r.params);if(r.method==="executeTool")return tt.executeTool(r.params.call,r.params.payload);throw new Error(`Unknown RPC method: ${r.method}`)}),l?.activeTask&&N.syncTask({...l.activeTask,taskId:l.activeTask.taskId},l.taskEpoch),l?.workerState&&N.setWorkerContext(_a(l.workerState))}function gE(e){e&&mo.delete(e),X?.clearTimeline(),l&&(l.timeline=[]),N?.clearTimeline()}function bE(e){if(!(!e||typeof e!="object")&&!Aw(e)){if(e.type==="assistant"){let t=Io(e.blocks),n=String(e.text||kg(t)||"");typeof e.runId=="string"&&e.runId&&(mo.set(e.runId,n),Qh(mo,Yk)),Un("assistant",n,!0,{blocks:t}),ot({kind:"tool_result",title:"Assistant update",detail:n,detailBlocks:t,status:"success"});return}if(e.type==="status"){let t=vw(e.stage),n=e.message?String(e.message):void 0,r=e.compactThought?String(e.compactThought):void 0,o=Tw(n,t,r);if(n&&Et(n,{runId:typeof e.runId=="string"?e.runId:l?.pendingRun?.id,taskId:l?.activeTask?.taskId,stage:t}),o&&o!==Hc&&(Hc=o,n)){let s=!!(e.thought||r),i=r||(e.thought?String(e.thought):"");if(s&&t!=="analyze"&&t!=="route"&&t!=="complete"&&!_w(i,Kt))ot({kind:"thought",title:i,detail:e.thought?String(e.thought):r,status:"pending"});else{let c=t?`${yw(t)}: ${n}`:n;ot({kind:"status",title:c,detail:r||(e.thought?String(e.thought):void 0),status:t==="complete"?"success":"info"})}}ze("status",e);return}if(e.type==="runtime_tabs_diagnostics"){let t=e?.diagnostics&&typeof e.diagnostics=="object"?e.diagnostics:{},n=Bn(t.keptScopedTabIds||[]),r=Bn(t.listedTabIds||[]),o=Bn(t.resolvedTabOrder||[]),s=n.filter(i=>!r.includes(i));s.length>0&&(ot({kind:"status",title:"Scoped tab placeholder retained",detail:`missing_in_listing=${s.join(",")}; resolved_order=${o.join(",")||"none"}`,status:"info"}),ut("status",{event:"scoped_tab_missing_from_listing",missingScopedTabIds:s,listedTabIds:r,resolvedTabOrder:o}));return}if(e.type==="tool_start"){ot({kind:"tool_start",title:`Running ${e.call?.name||"tool"}`,detail:Qc(e.call?.args),status:"pending"}),ze("tool_start",e);return}if(e.type==="tool_result"){if(!Uw(e.result)){let n=Bn([...Pw(e.call?.args),...Bw(e.result)]);n.length&&(Lg(n,{persist:!0}),Gn())}let t=Io(e.detailBlocks)||Ow(e.result);ot({kind:"tool_result",title:`${e.call?.name||"tool"} completed`,detail:Qc(e.result),detailBlocks:t,status:e?.result?.success===!1?"error":"success"}),ze("tool_result",e);return}if(e.type==="auth_required"){ze("auth_required",e.error),e.error?.message&&(Un("system",`Auth required: ${e.error.message}`,!0),ot({kind:"error",title:"Auth required",detail:String(e.error.message),status:"error"}));return}if(e.type==="navigation_guardrail"){ze("navigation_guardrail",e),ot({kind:"status",title:"Navigation guardrail",detail:Qc(e),status:"info"});return}if(e.type==="error"){Un("system",`Error: ${e.message||"unknown"}`,!0),ot({kind:"error",title:"Execution error",detail:String(e.message||"unknown"),status:"error"}),ze("error",e);return}if(e.type==="state_snapshot"){if(l){let t=Ft({...e.state||{},updatedAt:Date.now()});if(!t||!ns({source:"worker_snapshot",incomingBoundaryId:t.taskBoundaryId,allowBootstrapAdoption:!0}))return;l.workerState=ur(t,kn());let n=typeof e?.activeRun?.runId=="string"&&e.activeRun.runId?e.activeRun.runId:void 0,r=typeof e?.activeRun?.text=="string"?e.activeRun.text:void 0,o=uh({taskStatus:l.activeTask?.status,hasPendingRun:!!l.pendingRun,activeRunId:n,activeRunText:r,ignoredRunIds:lr});if(o&&(l.pendingRun=Ze({id:n,text:r,startedAt:e.activeRun.startedAt,attempts:0,autoResume:!0})),n&&r&&o?N?.setActiveRun({runId:n,text:r}):n&&(!ho()||lr.has(n))&&N?.setActiveRun(void 0),!ho()&&l.pendingRun&&It(void 0),l.workerState&&N?.setWorkerContext(_a(l.workerState)),G&&t?.taskBoundaryId){let s=G.getTaskByBoundaryId(t.taskBoundaryId);s&&(s.workerState=l.workerState,n&&(s.pendingRun=l.pendingRun))}ui(),Ie()}return}if(e.type==="task_started"){ze("task_started",{taskId:e.taskId,reason:"worker"});return}if(e.type==="run_started"){if(Hc="",wn(),typeof e.runId=="string"&&e.runId&&mo.delete(e.runId),!ho()){N?.setActiveRun(void 0);return}let t=l?.pendingRun,n=typeof e?.taskBoundaryId=="string"?Ce(e.taskBoundaryId):void 0;typeof e.runId=="string"&&e.runId&&od(e.runId),It(Ze({id:e.runId,text:e.text,startedAt:t?.startedAt||Date.now(),attempts:t?.attempts||0,autoResume:t?.autoResume!==!1,taskBoundaryId:n||t?.taskBoundaryId||Me,resumeReason:t?.resumeReason,resumeRequired:t?.resumeRequired})),N?.setActiveRun({runId:e.runId,text:String(e.text||"")}),X?.setRunning(!0),X?.setQuestionPrompt(void 0);let r=`run:${String(e.runId||"")}:start`;if(l?.timeline.some(o=>o.id===r)||ot({id:r,kind:"plan",title:e.resume?"Run resumed":"Run started",detail:String(e.text||""),status:"pending"}),G&&n){let o=G.getTaskByBoundaryId(n);o&&(o.pendingRun=l?.pendingRun,G.dispatch(o.taskId,{type:"START"}))}return}if(e.type==="run_completed"||e.type==="run_state_transition"){Hc="",pr=!1,dn=0;let t=Nw(e),n=t.terminalState,r=t.continuationReason,o=e?.ok===!1||n==="completed"||n==="failed",s=!o&&n==="in_progress"&&r!=="awaiting_user";X?.setRunning(s),Tt&&(clearTimeout(Tt),Tt=null);let i=typeof e.runId=="string"&&e.runId?e.runId:void 0,a=typeof e?.taskBoundaryId=="string"?Ce(e.taskBoundaryId):void 0;if(o){let c=Ze(l?.pendingRun),d=String(c?.text||Kt||"").trim(),p=String((i?mo.get(i):"")||"").trim();rs=d||rs,os=p||os,si=Date.now(),c?.id&&N?.releaseWorkflowLock(c.id),i&&N?.releaseWorkflowLock(i),It(void 0),ko(void 0),N?.setActiveRun(void 0),wn(),i&&So(i)}else if(ho()&&i){od(i),ko(i);let c=l?.pendingRun,d=c?.id===i&&c?.text?c.text:Kt||c?.text||"Continue task";It(Ze({id:i,text:d,startedAt:c?.startedAt||Date.now(),attempts:c?.attempts||0,autoResume:c?.autoResume!==!1,taskBoundaryId:a||c?.taskBoundaryId||Me,resumeRequired:n==="in_progress"&&r==="same_tab_navigation_handoff",resumeReason:n==="in_progress"&&r==="same_tab_navigation_handoff"?c?.resumeReason||"agent_navigation":void 0})),N?.setActiveRun({runId:i,text:d})}if(l&&e?.route&&(e.route.mode==="act"||e.route.mode==="planner")&&(l.lastRoutingDecision={mode:e.route.mode,score:Number(e.route.score)||void 0,reason:typeof e.route.reason=="string"?on(e.route.reason,200):void 0,ts:Date.now()},Ie()),!e.ok&&e.error){if(i&&mo.delete(i),i&&(Eo(i,"worker_run_failed",{attemptImmediately:!0}),_e?.controlRun({action:"cancel",runId:i,reason:"worker_run_failed"})),!ho())return;X?.setQuestionPrompt(void 0),t.contextResetRecommended?($c("worker_run_failed_terminal"),N?.resetTabsToCurrent(window.location.href,document.title||void 0),Et(void 0)):($c("worker_run_failed_terminal"),Et(void 0)),i&&mo.delete(i),ot({kind:"error",title:"Run failed",detail:String(e.error),status:"error"})}else if(e.ok){if(!ho())return;let c=t.taskComplete,d=t.needsUserInput,p=t.questions||Yr(e.questions),u=Yr(l?.workerState?.pendingAskUser?.questions),v=p.length?p:d?u:[];if(n==="failed")i&&(Eo(i,"worker_terminal_failed",{attemptImmediately:!0}),_e?.controlRun({action:"cancel",runId:i,reason:"worker_terminal_failed"})),X?.setQuestionPrompt(void 0),t.contextResetRecommended?($c("worker_run_failed_terminal"),N?.resetTabsToCurrent(window.location.href,document.title||void 0),Et(void 0)):($c("worker_run_failed_terminal"),Et(void 0)),ot({kind:"error",title:"Run failed",detail:typeof e.error=="string"?e.error:"Run reported failure state.",status:"error"});else if(c||n==="completed")i&&_e?.controlRun({action:"end_task",runId:i,reason:"worker_task_complete"}),X?.setQuestionPrompt(void 0),Zw("worker_task_complete"),N?.resetTabsToCurrent(window.location.href,document.title||void 0),Et(void 0),gE(typeof e.runId=="string"?e.runId:void 0);else{let h=d?"worker_waiting_for_input":r==="same_tab_navigation_handoff"?"worker_navigation_handoff":n==="in_progress"?"worker_loop_continue":"worker_task_active";if(d){if(G){let g=G.getActiveTask();g&&G.dispatch(g.taskId,{type:"ASK_USER"})}Ao({type:"awaiting_user",reason:h,at:Date.now()})}else Ag(h);d&&v.length>0?X?.setQuestionPrompt({questions:v}):d?ui():X?.setQuestionPrompt(void 0),d?(Et(void 0),ot({kind:"status",title:"Waiting for your input",detail:v.length?`Please answer: ${v.map(g=>`${g.key} (${g.query})`).join("; ")}`:"Planner requested more information before marking the task complete.",status:"info"})):r==="same_tab_navigation_handoff"?(Et("Navigating to continue task..."),ot({kind:"status",title:"Navigation handoff",detail:"Rover will resume after same-tab navigation completes.",status:"pending"})):Et("Working...")}}if(G&&a){let c=G.getTaskByBoundaryId(a);if(c)if(o){let d=n==="completed"?{type:"COMPLETE"}:{type:"FAIL",error:typeof e.error=="string"?e.error:void 0};G.dispatch(c.taskId,d),G.releaseWorker(c.taskId)}else t.continuationReason==="awaiting_user"&&G.dispatch(c.taskId,{type:"ASK_USER"})}yo();return}if(e.type==="ready"){Kn=!0,Et(void 0),ze("ready"),M&&Vg(M);let t=N?.getWorkerContext(),n=ur(Ft(t),kn()),r=n&&ns({source:"ready_hydrate",incomingBoundaryId:n.taskBoundaryId,allowBootstrapAdoption:!0})?n:void 0,o=ur(Ft(l?.workerState),kn()),s=o&&ns({source:"ready_hydrate",incomingBoundaryId:o.taskBoundaryId,allowBootstrapAdoption:!0})?o:void 0,i=Number(s?.updatedAt)||0,a=Number(r?.updatedAt)||0,c=r&&Bg({localWorkerState:s,incomingWorkerState:r,fallbackPendingRun:Ze(l?.pendingRun),taskStatus:l?.activeTask?.status,taskEpoch:l?.taskEpoch,localUpdatedAt:i,incomingUpdatedAt:a,allowRicherIncomingOnResume:!0})?r:s;l&&(c&&c!==l.workerState?(l.workerState=ur(c,kn()),Ie()):!c&&l.workerState&&(l.workerState=void 0,Ie())),c?(Fe?.postMessage({type:"hydrate_state",state:c}),ze("context_restored",{source:"runtime_start",ts:Date.now()}),setTimeout(()=>{pr||Sr()},500)):nn&&yt?(ut("status",{event:"checkpoint_pull_first"}),yt.syncPullFirst()):Sr();return}if(e.type==="hydrated"){Sr();return}e.type==="updated"&&ze("updated")}}function dd(e,t){let n=Number(e);return Number.isFinite(n)?Math.max(t.min,Math.min(t.max,Math.floor(n))):t.fallback}function El(e){if(!e||typeof e!="object")return;let t=dd(e.shortcutMaxStored,{min:1,max:tl,fallback:tl}),n=dd(e.shortcutMaxRendered,{min:1,max:nl,fallback:nl});return{shortcutMaxStored:t,shortcutMaxRendered:n}}function Kr(e){return uc(e)}function vE(e){let t=Number(e);if(Number.isFinite(t))return Math.max(Nk,Math.min(Lk,Math.floor(t)))}function di(e){if(!e||typeof e!="object")return;let t=e,n={};typeof t.enabled=="boolean"&&(n.enabled=t.enabled);let r=String(t.language||"").trim().replace(/[^a-zA-Z0-9-]/g,"").slice(0,Ck);r&&(n.language=r);let o=vE(t.autoStopMs);return o!==void 0&&(n.autoStopMs=o),Object.keys(n).length?n:void 0}function ma(e){if(!e)return;let t=Kr(Rr?.pageConfig),n=Kr(e.pageConfig);return Kr({...t||{},...n||{}})}function yE(e){if(!Fe||!e)return;let t=ma(e),n=JSON.stringify(t||null);n!==Xu&&(Xu=n,Fe.postMessage({type:"update_config",config:{...ls(),pageConfig:t}}))}function wa(){sa&&(clearTimeout(sa),sa=null),ia&&(clearTimeout(ia),ia=null)}function TE(e){try{let t=localStorage.getItem(`rover:site-config:${e}`);if(t){let n=JSON.parse(t);return!n||typeof n.ts!="number"||typeof n.data!="object"||!n.data||Date.now()-n.ts>Dh?null:{shortcuts:xo(n.data.shortcuts),greeting:fi(n.data.greeting),voice:di(n.data.voice),limits:El(n.data.limits),pageConfig:Kr(n.data.pageConfig),version:typeof n.version=="string"?n.version:void 0}}}catch{}try{let t=localStorage.getItem(`rover:shortcuts:${e}`);if(!t)return null;let n=JSON.parse(t);return!n||typeof n.ts!="number"||!Array.isArray(n.data)||Date.now()-n.ts>Dh?null:{shortcuts:xo(n.data)}}catch{return null}}function Hg(e,t){try{localStorage.setItem(`rover:site-config:${e}`,JSON.stringify({ts:Date.now(),version:t.version,data:{shortcuts:xo(t.shortcuts),greeting:fi(t.greeting),voice:di(t.voice),limits:El(t.limits),pageConfig:Kr(t.pageConfig)}}))}catch{}}function fi(e){if(!e||typeof e!="object")return;let t={},n=String(e.text||"").trim();n&&(t.text=n.slice(0,Ak));let r=Number(e.delay);Number.isFinite(r)&&(t.delay=Math.max(0,Math.min(6e4,Math.floor(r))));let o=Number(e.duration);return Number.isFinite(o)&&(t.duration=Math.max(1200,Math.min(6e4,Math.floor(o)))),typeof e.disabled=="boolean"&&(t.disabled=e.disabled),Object.keys(t).length?t:void 0}function _E(e){if(!e||typeof e!="object")return null;let t=String(e.id||"").trim().slice(0,80),n=String(e.label||"").trim().slice(0,Ik),r=String(e.prompt||"").trim().slice(0,Sk);if(!t||!n||!r)return null;let o={id:t,label:n,prompt:r,enabled:e.enabled!==!1};e.description&&(o.description=String(e.description).trim().slice(0,xk)),e.icon&&(o.icon=String(e.icon).trim().slice(0,Rk)),(e.routing==="auto"||e.routing==="act"||e.routing==="planner")&&(o.routing=e.routing);let s=Number(e.order);return Number.isFinite(s)&&(o.order=Math.trunc(s)),o}function xo(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(t.length>=tl)break;let o=_E(r);!o||n.has(o.id)||(n.add(o.id),t.push(o))}return t}function kE(e){return e.map((t,n)=>({item:t,index:n})).sort((t,n)=>{let r=Number.isFinite(t.item.order),o=Number.isFinite(n.item.order);return r&&o?Number(t.item.order)-Number(n.item.order):r?-1:o?1:t.index-n.index}).map(t=>t.item)}function wE(e,t){let n=new Map;for(let r of t)n.set(r.id,r);for(let r of e){let o=n.get(r.id);n.set(r.id,o?{...o,...r}:r)}return kE(Array.from(n.values())).slice(0,tl)}function qg(e){if(!e)return[];let t=xo(e.ui?.shortcuts||[]),n=xo(Rr?.shortcuts||[]);return wE(t,n)}function Wg(e){let t=dd(Rr?.limits?.shortcutMaxRendered,{min:1,max:nl,fallback:nl});return e.filter(n=>n.enabled!==!1).slice(0,t)}function Gs(){bo&&(clearTimeout(bo),bo=null),Qs=null}function EE(e){return`${window.location.href}::${e.signature}`}function IE(e){return e?!!(al(e)||Xn(e)):!1}function fd(e,t){if(!e.consume)return;let n=`${window.location.pathname}${window.location.search}${window.location.hash}`,r=Xm(window.location.href,e);if(r!==n)try{history.replaceState(history.state,document.title,r),ut("status",{event:"deep_link_consumed",kind:t.kind,paramName:t.paramName})}catch{}}function xE(e,t,n){let r=Qs;r?.handleKey===e&&r.deadlineAt===n&&bo||(bo&&clearTimeout(bo),Qs={handleKey:e,request:t,deadlineAt:n},bo=setTimeout(()=>{bo=null,Ea("shortcut_retry")},Vk))}function SE(e,t,n){Gs(),us(),Un("system",`Rover couldn't find shortcut "${e.value}" for this embed. Check the URL or expose that shortcut in the Rover boot config/site config.`,!0),ut("status",{event:"deep_link_shortcut_not_found",shortcutId:e.value,paramName:e.paramName}),js=t,fd(n,e)}function Ea(e){if(!M||typeof window>"u")return;let t=Fs(M.deepLink),n=Km(window.location.href,t);if(!n){Gs(),js="",na="";return}let r=EE(n);if(!t.enabled){Gs(),na!==r&&(ut("status",{event:"deep_link_ignored_disabled",kind:n.kind,paramName:n.paramName,source:e}),na=r);return}if(na="",r===js)return;if(Qs?.handleKey===r||ut("status",{event:"deep_link_detected",kind:n.kind,paramName:n.paramName,source:e}),n.kind==="prompt"){Gs(),us(),es(n.value,{reason:"deep_link_prompt"}),ut("status",{event:"deep_link_dispatched",kind:n.kind,paramName:n.paramName}),js=r,fd(t,n);return}let s=qg(M).find(a=>a.enabled!==!1&&a.id===n.value);if(s){Gs(),us(),es(s.prompt,{reason:"deep_link_shortcut",routing:s.routing}),ut("status",{event:"deep_link_dispatched",kind:n.kind,paramName:n.paramName,shortcutId:s.id,routing:s.routing}),js=r,fd(t,n);return}let i=Qs?.handleKey===r?Qs.deadlineAt:Date.now()+$k;if(Date.now()<i&&IE(M)){xE(r,n,i);return}SE(n,r,t)}function Il(e){if(!e)return;let t=fi(Rr?.greeting),n=fi(e.ui?.greeting);if(!(!t&&!n))return{...t||{},...n||{}}}function $g(e){if(!e)return;let t=di(Rr?.voice),n=di(e.ui?.voice);if(!t&&!n)return;let r={...t||{},...n||{}};return r.enabled===!0&&r.autoStopMs===void 0&&(r.autoStopMs=Mk),r}function Hd(e){let t=Ir?.name,n=e?.text;return n?n.replace(/\{name\}/g,t||"").trim()||(t?`Hey ${t}! Need any help?`:"Hey! Need any help?"):t?`Hey ${t}! Need any help?`:"Hey! Need any help?"}function ha(){if(wo||!X||!M||l?.uiOpen)return;let e=Il(M);if(e?.disabled===!0)return;let t=`rover:greeting-shown:${M.siteId}`;try{if(sessionStorage.getItem(t)){ts=!0;return}}catch{}if(ts)return;wa();let n=e?.delay??3e3,r=e?.duration??8e3,o=Hd(e);sa=setTimeout(()=>{if(sa=null,!(wo||l?.uiOpen)){X?.showGreeting(o),ts=!0;try{sessionStorage.setItem(t,"1")}catch{}ia=setTimeout(()=>{ia=null,X?.dismissGreeting()},r)}},n)}function fl(e){let t=qg(e);X?.setShortcuts(Wg(t)),X?.setVoiceConfig($g(e)),yE(e),Ea("site_config")}async function RE(e){let t=null,n=al(e)||Xn(e);if(!n)return null;let r={siteId:e.siteId,sessionId:l?.sessionId||e.sessionId,requestedSessionId:l?.sessionId||e.sessionId,host:window.location.hostname,url:window.location.href,pageUrl:window.location.href};n.startsWith("rvrsess_")?r.sessionToken=n:r.bootstrapToken=n;let o=zi(e.apiBase);for(let s of o)try{let i=await fetch(`${s}/session/open`,{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify(r)}),a=await i.json().catch(()=>{});if(!i.ok||!a?.success)continue;if(t=a?.data?.siteConfig||null,t)break}catch{}return t?{shortcuts:xo(t.shortcuts),greeting:fi(t.greeting),voice:di(t.voice),limits:El(t.limits),pageConfig:Kr(t.pageConfig),version:t.version!=null?String(t.version):void 0}:null}function Vg(e){let t=TE(e.siteId);t&&(Rr=t),fl(e),ha(),RE(e).then(n=>{if(n&&(Rr=n,Hg(e.siteId,n),fl(e),!wo)){let r=Il(e);ts&&!l?.uiOpen?X?.showGreeting(Hd(r)):ha()}}).catch(()=>{})}function zg(e){if(!M)return;let t={...Ir,...e};t.name&&(t.name=String(t.name).trim().slice(0,120)),t.email&&(t.email=String(t.email).trim().slice(0,240)),Ir=t,ng(M.siteId,Ir),X?.setVisitorName(Ir.name||""),wo||(ts&&!l?.uiOpen?X?.showGreeting(Hd(Il(M))):ha())}function AE(e){if(dl(e),N){let u=ya(N.getRole());lt=u,cr=u==="controller",l&&(l.executionMode=u)}Fd(e),bl(e),hr(!0);let t=(e.allowActions??!0)&&(N?N.isController():!0),n=u=>{if(!l)return;let v=Ze(l.pendingRun);if(v){let R=Ze({...v,taskBoundaryId:v.taskBoundaryId||Me,resumeRequired:!0,resumeReason:u});return l.pendingRun=R,R&&N?.setActiveRun({runId:R.id,text:R.text}),R}let h=N?.getState().activeRun,g=String(_e?.getActiveRunId()||ga||h?.runId||"").trim();if(!g)return;let _=String(h?.text||Kt||"Continue task").trim()||"Continue task",A=Ze({id:g,text:_,startedAt:Date.now(),attempts:0,autoResume:!0,taskBoundaryId:Me,resumeRequired:!0,resumeReason:u});return l.pendingRun=A,A&&N?.setActiveRun({runId:A.id,text:A.text}),A};tt=new Tc({allowActions:t,runtimeId:Je,allowedDomains:e.allowedDomains,domainScopeMode:fa(e.domainScopeMode),externalNavigationPolicy:e.externalNavigationPolicy,crossHostPolicy:gl(e.navigation?.crossHostPolicy),navigationDelayMs:e.timing?.navigationDelayMs,domSettle:{debounceMs:Bt(e.timing?.domSettleDebounceMs,8,500),maxWaitMs:Bt(e.timing?.domSettleMaxWaitMs,80,5e3),retries:Bt(e.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:Bt(e.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:Bt(e.timing?.sparseTreeRetryMaxAttempts,0,4)},registerOpenedTab:u=>N?.registerOpenedTab(u),switchToLogicalTab:u=>N?.switchToLogicalTab(u)||{ok:!1,reason:"No session coordinator"},listKnownTabs:()=>(N?.listTabs()||[]).map(u=>({logicalTabId:u.logicalTabId,runtimeId:u.runtimeId,url:u.url,title:u.title,external:!!u.external})),onNavigationGuardrail:u=>{if(ze("navigation_guardrail",u),ot({kind:"status",title:"Navigation guardrail",detail:Qc(u),status:"info"}),_e&&u?.blockedUrl){let v=Wh();if(!v)return;let h=String(window.location.hostname||"").toLowerCase(),g=(()=>{try{return new URL(String(u.blockedUrl)).hostname.toLowerCase()}catch{return}})();_e.sendTabEvent({runId:v,currentUrl:String(u.currentUrl||window.location.href),targetUrl:String(u.blockedUrl),message:String(u.reason||""),currentHost:h||void 0,targetHost:g,isCrossHost:!!g&&!!h&&g!==h}).then(_=>{_&&(_.retryAttempted&&ze("tab_event_conflict_retry",{runId:_.runId||v,decisionReason:_.decisionReason,conflict:_.conflict}),_.retryExhausted&&ze("tab_event_conflict_exhausted",{runId:_.runId||v,decisionReason:_.decisionReason,conflict:_.conflict}))}).catch(()=>{})}},onBeforeAgentNavigation:async u=>{let v=Wh(),h=String(window.location.hostname||"").toLowerCase();if(u?.targetUrl&&wh(u.targetUrl,h)){let re=Hu(u.targetUrl,h);return ut("navigation_guardrail",{event:"adversarial_blocked",targetUrl:u.targetUrl,score:re.score,reasons:re.reasons}),{decision:"block",reason:`Navigation blocked: suspicious URL detected (adversarial score ${re.score}).`,decisionReason:"adversarial_block"}}if(u?.isCrossHost){let re=Date.now();for(Yo.push(re);Yo.length>0&&Yo[0]<re-Bh;)Yo.shift();if(Yo.length>Kk)return ut("navigation_guardrail",{event:"rapid_cross_origin_blocked",targetUrl:u.targetUrl,count:Yo.length}),{decision:"block",reason:`Navigation blocked: too many cross-origin navigations (${Yo.length} in ${Bh/1e3}s).`,decisionReason:"rapid_cross_origin_block"}}let g=(()=>{try{return new URL(String(u?.targetUrl||"")).hostname.toLowerCase()}catch{return}})(),_=!!h&&!!g&&Xi(h)!==Xi(g),A=!!h&&!!g&&h!==g,B=Ch({host:g,currentHost:h,allowedDomains:M?.allowedDomains,domainScopeMode:M?.domainScopeMode})?A&&M?.navigation?.crossHostPolicy==="open_new_tab"?"open_new_tab":"allow_same_tab":M?.externalNavigationPolicy==="block"?"block":M?.externalNavigationPolicy==="allow"?"allow_same_tab":"open_new_tab",D=pw(),F=B==="allow_same_tab";if(F&&l){if(Er=!0,zu($u(u)),n(u.isCrossHost?"cross_host_navigation":"agent_navigation"),rn&&M?.siteId)try{sessionStorage.setItem(`rover:sess:${M.siteId}`,JSON.stringify({t:rn,e:xr}))}catch{}if(G){let re=G.getActiveTask();re&&G.dispatch(re.taskId,{type:"NAVIGATION_STARTED",targetUrl:u.targetUrl,isCrossHost:u.isCrossHost})}ni("same_tab_navigation_handoff_early")}let C=null;if(u?.targetUrl&&_e&&v){let re=!!g&&!!h&&g!==h;C=await _e.sendTabEvent({runId:v,currentUrl:window.location.href,targetUrl:u.targetUrl,message:D,currentHost:h||void 0,targetHost:g,isCrossHost:re}).catch(()=>null),C?.retryAttempted&&ze("tab_event_conflict_retry",{runId:C.runId||v,decisionReason:C.decisionReason,conflict:C.conflict,targetUrl:u.targetUrl}),C?.retryExhausted&&ze("tab_event_conflict_exhausted",{runId:C.runId||v,decisionReason:C.decisionReason,conflict:C.conflict,targetUrl:u.targetUrl})}let Q=Sh({crossRegistrableDomain:_,fallbackDecision:B,serverDecision:C?.decision,serverAvailable:!!C}),ae=Q.decision;if(ae==="block")return F&&(Er=!1),{decision:"block",reason:Q.failSafeBlocked?"Cross-domain navigation blocked because preflight policy check is unavailable.":C?.reason||"Navigation blocked by policy.",decisionReason:Q.failSafeBlocked?"preflight_unavailable_block":C?.decisionReason||"policy_blocked"};if(ae==="open_new_tab"){F&&(Er=!1),M?.tools?.web?.scrapeMode==="on_demand"&&_e&&u?.targetUrl&&aE(u.targetUrl).catch(()=>{});let pe=Q.decisionReason==="preflight_unavailable_fallback"&&!C;return{decision:"open_new_tab",reason:C?.reason||(pe?"Preflight is unavailable; using local policy to open in a new tab and preserve runtime continuity.":"Open in new tab to preserve runtime continuity."),decisionReason:C?.decisionReason||Q.decisionReason||"open_new_tab"}}return!F&&l?(Er=!0,zu($u(u)),n(u.isCrossHost?"cross_host_navigation":"agent_navigation"),ni("same_tab_navigation_handoff")):F||(Er=!0),{decision:"allow_same_tab",reason:C?.reason||(Q.decisionReason==="preflight_unavailable_fallback"&&!C?"Preflight is unavailable; allowing navigation using local policy.":"Navigation allowed."),decisionReason:C?.decisionReason||Q.decisionReason||"allow_same_tab"}},onBeforeCrossHostNavigation:u=>{if(Er=!0,!l||!M)return;zu($u(u));let v=yd(),h=n("cross_host_navigation");rh(M.siteId,{sessionId:l.sessionId,sessionToken:rn,sessionTokenExpiresAt:xr,openIntent:l.uiOpen?"preserve_if_running":void 0,targetUrl:String(u?.targetUrl||"").trim()||void 0,sourceHost:String(window.location.hostname||"").trim().toLowerCase()||void 0,handoffId:v?.handoffId||u?.handoffId,pendingRun:h?{id:h.id,text:h.text,startedAt:h.startedAt,attempts:h.attempts,taskBoundaryId:h.taskBoundaryId||Me}:void 0,handoff:v?{handoffId:v.handoffId,sourceLogicalTabId:v.sourceLogicalTabId,runId:v.runId,targetUrl:v.targetUrl,createdAt:v.createdAt}:void 0,activeTask:l.activeTask?{taskId:l.activeTask.taskId,status:l.activeTask.status}:void 0,taskEpoch:l.taskEpoch,timestamp:Date.now()}),ni("cross_domain_handoff_pre_navigation")},instrumentationOptions:e.mode==="safe"?{observeInlineMutations:!1}:void 0});let r=lt==="observer"?"observer":"controller";tt?.setActionGateContext?.({mode:r,controllerRuntimeId:N?.getCurrentHolderRuntimeId(),activeLogicalTabId:N?.getActiveLogicalTabId(),localLogicalTabId:N?.getLocalLogicalTabId(),reason:va(r,t)});let o=new MessageChannel;mm(o.port1,{getSnapshot:()=>tt.getSnapshot(),getPageData:async u=>{let v=M||e,h=Number(u?.tabId),g=N?.getLocalLogicalTabId();if(!Number.isFinite(h)||h<=0||h===g||!N)return tt.getPageData(u);let A=N.listTabs().find(R=>R.logicalTabId===h);if(!A){let R=la().includes(h);return Yi({logicalTabId:h,external:!1},R?"detached_runtime_placeholder":"target_tab_missing")}if(A.runtimeId===Je)return tt.getPageData(u);if(A.external&&v.externalNavigationPolicy!=="allow")return Yi(A,"external_domain_inaccessible");if(!A.runtimeId||!N.isTabAlive(h))return Yi(A,"target_tab_inactive");try{return await N.sendCrossTabRpc(A.runtimeId,"getPageData",u,15e3)}catch{return Yi(A,"cross_tab_rpc_failed")}},executeTool:async u=>{let v=M||e,h=u?.payload?.forceLocal===!0,g=String(u?.call?.name||"").trim(),_=Number(u?.call?.args?.tab_id),A=N?.getActiveLogicalTabId(),R=Number.isFinite(_)&&_>0?_:A;if(lE(g)){let C=u?.call?.serverResult;return C?C.success?{success:!0,output:C.data}:{success:!1,error:C.error||"Server-side execution failed"}:uE({call:u?.call,routeTabId:Number.isFinite(Number(R))?Number(R):void 0,runtimeCfg:v})}if(h)return tt.executeTool(u.call,u.payload);let B=N?.getLocalLogicalTabId();if(!R||R===B||!N)return tt.executeTool(u.call,u.payload);let F=N.listTabs().find(C=>C.logicalTabId===R);if(!F){let C=la().includes(R);return Qi(v,{logicalTabId:R,external:!1},C?"detached_runtime_placeholder":"target_tab_missing")}if(F.external&&v.externalNavigationPolicy!=="allow")return Qi(v,F,"external_tab_action_blocked");if(F.runtimeId===Je)return tt.executeTool(u.call,u.payload);if(!F.runtimeId||!N.isTabAlive(R))return Qi(v,F,"target_tab_inactive");try{return await N.sendCrossTabRpc(F.runtimeId,"executeTool",u,2e4)}catch{return Qi(v,F,"cross_tab_execute_failed")}},executeClientTool:u=>tt.executeClientTool(u.name,u.args),listClientTools:()=>tt.listClientTools(),getTabContext:()=>{let u=N?.getLocalLogicalTabId(),v=N?.getActiveLogicalTabId();return{id:u||1,logicalTabId:u||1,activeLogicalTabId:v||u||1,runtimeId:Je,mode:lt,url:window.location.href,title:document.title}},listSessionTabs:()=>{if(!N)return[];let u=N.listTabs({scope:"all"}),v=Array.isArray(N.getState()?.tabs)?N.getState().tabs:[],h=new Set(la()),g=new Map,_=A=>{let R=Number(A?.logicalTabId||A?.id);!Number.isFinite(R)||R<=0||g.set(R,{...g.get(R)||{},...A,logicalTabId:R,id:R})};for(let A of u)_(A);for(let A of v){let R=Number(A?.logicalTabId);!Number.isFinite(R)||R<=0||(A.runtimeId||A.external||h.has(R))&&_(A)}return[...g.values()].sort((A,R)=>Number(A.logicalTabId)-Number(R.logicalTabId))}}),o.port1.start?.();let s=e.workerUrl?e.workerUrl:new URL("./worker/worker.js",import.meta.url).toString(),i=s;try{let u=window.location.origin,v=new URL(s).origin;if(u!==v){let h=new Blob([`import '${s}';`],{type:"application/javascript"});i=URL.createObjectURL(h)}}catch{}Fe=new Worker(i,{type:"module"}),Fe.postMessage({type:"init",config:{...e,...ls(),pageConfig:ma(M),publicKey:void 0,authToken:Xn(e),sessionToken:rn,sessionId:l?.sessionId,activeRunId:l?.pendingRun?.id},port:o.port2},[o.port2]);let a=(u="manual_cancel_task")=>{if(!l)return;let v=l.pendingRun;if(v){So(v.id),Fe?.postMessage({type:"cancel_run",runId:v.id}),Eo(v.id,u,{attemptImmediately:!0}),_e?.controlRun({action:"cancel",runId:v.id,reason:u}).catch(()=>{}),N?.releaseWorkflowLock(v.id),N?.setActiveRun(void 0),It(void 0),l.workerState=void 0,N?.setWorkerContext(void 0),Me=mr(),l.taskTabScope=void 0,Fn({forceReset:!0,persist:!1}),Gn(),Tt&&(clearTimeout(Tt),Tt=null),X?.setRunning(!1),X?.setQuestionPrompt(void 0),Cg(u),Et(void 0),Un("system","Task cancelled.",!0),rs=void 0,os=void 0,si=0,ot({kind:"info",title:"Run cancelled",status:"info"}),Ie();return}let h=Yr(l.workerState?.pendingAskUser?.questions).length>0,g=l.activeTask?.status;!h&&g!=="running"||(Me=mr(),l.workerState=void 0,l.taskTabScope=void 0,Fn({forceReset:!0,persist:!1}),Gn(),Tt&&(clearTimeout(Tt),Tt=null),X?.setRunning(!1),X?.setQuestionPrompt(void 0),wn(),It(void 0),eE(u),N?.endTask(u),N?.setActiveRun(void 0),N?.setWorkerContext(void 0),Et(void 0),rs=void 0,os=void 0,si=0,ot({kind:"info",title:u==="question_prompt_cancel"?"Input request cancelled":"Task cancelled",status:"info"}),Ie())};X=Om({panel:{resizable:e.ui?.panel?.resizable!==!1},shortcuts:Wg(xo(e.ui?.shortcuts||[])),greeting:Il(e),voice:$g(e),visitorName:Ir?.name,onVoiceTelemetry:(u,v)=>{bw(u,v)},onShortcutClick:u=>{let v=String(u.prompt||"").trim();v&&es(v,{routing:u.routing})},onSend:(u,v)=>{es(u,{askUserAnswers:v?.askUserAnswers})},onRequestControl:()=>{Rw()?ot({kind:"status",title:"Control requested",detail:"This tab is now the active Rover controller for the current task.",status:"info"}):Un("system","Unable to acquire control right now. Try again in a moment.",!0)},onCancelRun:()=>{a("manual_cancel_task")},onCancelQuestionFlow:()=>{a("question_prompt_cancel")},onNewTask:()=>{xl({reason:"manual_new_task",clearUi:!0})},onEndTask:()=>{Wd({reason:"manual_end_task"})},onTaskSuggestionPrimary:()=>{let u=_o;if(u){if(u.kind==="resume_run"){let v=Ze(l?.pendingRun);if(wn(),!v||v.id!==u.runId){Et("Previous task is no longer resumable.");return}Sr({overridePolicyAction:"auto_resume"});return}es(u.text,{bypassSuggestion:!0,startNewTask:!0,reason:u.reason})}},onTaskSuggestionSecondary:()=>{let u=_o;if(u){if(u.kind==="resume_run"){let v=String(l?.pendingRun?.id||"").trim();if(wn(),!v||v!==u.runId)return;Od({reason:"resume_declined_by_user",statusText:"Resume cancelled. Start a new task when you are ready.",runId:u.runId,cancelReason:"resume_declined_by_user",timelineTitle:"Resume cancelled",timelineDetail:"Interrupted run was cancelled by user action.",timelineStatus:"info"});return}es(u.text,{bypassSuggestion:!0})}},onSwitchConversation:u=>{if(!G||!l)return;let v=G.getActiveTask();v&&X&&(v.scrollPosition=X.getScrollPosition());let h=String(N?.getState()?.activeRun?.runId||"").trim(),_=!!(String(l.pendingRun?.id||"").trim()||h);if(v&&v.taskId!==u&&_){Un("system","Finish the active run before switching conversations.",!0);return}let A=G.switchActiveTask(u);A&&(Sg(A,{replayUi:!0}),l.activeTaskId=u,X&&(requestAnimationFrame(()=>{A.scrollPosition!=null&&X.setScrollPosition(A.scrollPosition)}),X.setActiveConversationId(u)),yo(),Ie())},onDeleteConversation:u=>{G&&(G.deleteTask(u),yo(),Ie())},onResumeTask:u=>{if(!G)return;G.dispatch(u,{type:"RESUME"}).accepted&&(X?.hidePausedTaskBanner(),G.assignWorker(u,{}),yo(),Ie())},onCancelPausedTask:u=>{if(!G)return;G.dispatch(u,{type:"CANCEL",reason:"user_cancelled_paused_task"}).accepted&&(X?.hidePausedTaskBanner(),G.archiveTask(u),yo(),Ie())},onTabClick:u=>{N?.switchToLogicalTab(u)},showTaskControls:e.ui?.showTaskControls!==!1,muted:e.ui?.muted,agent:{name:e.ui?.agent?.name},mascot:{disabled:e.ui?.mascot?.disabled,mp4Url:e.ui?.mascot?.mp4Url,webmUrl:e.ui?.mascot?.webmUrl},onOpen:()=>{wo=!0,wa(),l&&(l.uiOpen=!0,l.uiHidden=!1,Ie()),ze("open")},onClose:()=>{l&&(l.uiOpen=!1,Ie()),ze("close")}}),wn(),l?.uiMessages?.length&&Tl(l.uiMessages),l?.timeline?.length&&_l(l.timeline),kl(l),ui(),l?.executionMode&&X.setExecutionMode(l.executionMode,{localLogicalTabId:N?.getLocalLogicalTabId(),activeLogicalTabId:N?.getActiveLogicalTabId(),controllerRuntimeId:N?.getCurrentHolderRuntimeId(),canTakeControl:!0,canComposeInObserver:Tg(),note:_g(l.executionMode)}),Fe.onmessage=u=>{bE(u.data||{})};let c=()=>{N?.registerCurrentTab(window.location.href,document.title),N?.broadcastNavigation(window.location.href,document.title),Ea("navigation")};Xs||(Xs=History.prototype.pushState),Ys||(Ys=History.prototype.replaceState);let d=Xs.bind(history),p=Ys.bind(history);history.pushState=function(...u){let v=d(...u);return setTimeout(c,0),v},history.replaceState=function(...u){let v=p(...u);return setTimeout(c,0),v},Gc(window,"popstate",c),l?.uiHidden?X.hide():(X.show(),l?.uiOpen??!!e.openOnInit?X.open():X.close()),l&&(l.uiHidden=!!l.uiHidden,l.uiOpen=!!l.uiOpen,Ie()),N&&(Bd(N.getState(),"remote"),as(N.getRole(),{localLogicalTabId:N.getLocalLogicalTabId(),activeLogicalTabId:N.getActiveLogicalTabId(),holderRuntimeId:N.getCurrentHolderRuntimeId()})),ha()}function pl(e){if(vo)return pd(e),vo;Ju&&md(),Ju=!0,jr=eh(),Je=iw(e.siteId),Ut=rg(e),Ir=e.visitor||lw(e.siteId),wo=!1,ts=!1,wa(),is(),Rr=null,fn=!1;let t=e.sessionId?.trim(),n=uw(e.siteId),r=!t&&e.sessionScope!=="tab"&&Ut?Fh(e.siteId,Ut):void 0,o=Yc(e.siteId,t||r),s=ei(e.siteId),i=Array.from(new Set([t?o:n,o,n,r?Yc(e.siteId,r):void 0,s].filter(D=>!!D))),a=null,c=null;for(let D of i){let F=Lw(D);if(F){a=F,c=D;break}}un=c||o,Vr=s!==un?s:null;let d=i.filter(D=>D!==un);td(e.siteId,un);let p=a?null:Mu(e.siteId,{currentUrl:window.location.href,currentHost:window.location.hostname,requireTargetMatch:!0});!a&&!p&&Mu(e.siteId,{currentHost:window.location.hostname,requireTargetMatch:!1})&&(ut("status",{event:"resume_cookie_rejected",reason:"target_or_host_mismatch"}),qi(e.siteId)),p&&(qi(e.siteId),nn=!0,fn=!0,p.openIntent==="preserve_if_running"&&Hh({runId:p.pendingRun?.id,taskId:p.activeTask?.taskId}),p.sessionToken&&cl(p.sessionToken,p.sessionTokenExpiresAt));let u=e.sessionId?.trim(),v=!u&&!a?.sessionId&&!p?.sessionId&&e.sessionScope!=="tab"&&Ut?Fh(e.siteId,Ut):void 0,h=u||a?.sessionId||p?.sessionId||v||crypto.randomUUID(),g=a;if(!a&&p){let D=nd(p.sessionId,Je),F=String(p.activeTask?.status||"").trim().toLowerCase(),C=!F||F==="running";p.pendingRun&&C&&(D.pendingRun=Ze({...p.pendingRun,autoResume:!0,taskBoundaryId:p.pendingRun.taskBoundaryId,resumeRequired:!0,resumeReason:"cross_host_navigation"})),p.handoff&&(D.lastNavigationHandoff=Qr({...p.handoff,createdAt:p.handoff.createdAt})),p.activeTask&&(D.activeTask={...pn("cross_domain_resume"),taskId:p.activeTask.taskId,status:p.activeTask.status}),D.taskEpoch=p.taskEpoch||1,Fu(p.openIntent)&&(D.uiHidden=!1,D.uiOpen=!0),g=D}l=pa(g,h,Je),u&&l.sessionId!==u&&(l=nd(u,Je));let _=fw(e.siteId);Me=rw(l),_&&l.activeTask?.status==="running"&&(fn=!0,Fu(_.openIntent)&&(l.uiHidden=!1,l.uiOpen=!0,Hh({runId:_.runId,taskId:l.activeTask?.taskId})),l.pendingRun=Ze({...l.pendingRun||{},id:l.pendingRun?.id||_.runId,text:l.pendingRun?.text||_.text||Kt||"Continue task",startedAt:l.pendingRun?.startedAt||Date.now(),attempts:l.pendingRun?.attempts||0,autoResume:!0,taskBoundaryId:l.pendingRun?.taskBoundaryId||_.taskBoundaryId||Me,resumeRequired:!0,resumeReason:_.resumeReason||l.pendingRun?.resumeReason||"agent_navigation"})),l.pendingRun&&!l.pendingRun.taskBoundaryId&&(l.pendingRun=Ze({...l.pendingRun,taskBoundaryId:Me})),l.workerState&&!l.workerState.taskBoundaryId&&(l.workerState=ur(Ft({...l.workerState,taskBoundaryId:Me}),Me)),ba(l),M={...e,deepLink:Fs(e.deepLink),pageConfig:Kr(e.pageConfig),visitorId:Ut||e.visitorId,sessionId:u||l.sessionId,domainScopeMode:fa(e.domainScopeMode),taskRouting:{mode:e.taskRouting?.mode||"act",actHeuristicThreshold:e.taskRouting?.actHeuristicThreshold,plannerOnActError:e.taskRouting?.plannerOnActError},navigation:{crossHostPolicy:gl(e.navigation?.crossHostPolicy)},timing:{navigationDelayMs:Bt(e.timing?.navigationDelayMs,0,3e3),actionTimeoutMs:Bt(e.timing?.actionTimeoutMs,5e3,12e4),domSettleDebounceMs:Bt(e.timing?.domSettleDebounceMs,8,500),domSettleMaxWaitMs:Bt(e.timing?.domSettleMaxWaitMs,80,5e3),domSettleRetries:Bt(e.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:Bt(e.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:Bt(e.timing?.sparseTreeRetryMaxAttempts,0,4)},transport:{activation:Sd(e.transport?.activation),idleCloseMs:Rd(e.transport?.idleCloseMs)},stability:{maxPersistBytes:ai(e.stability?.maxPersistBytes,bt.localPersistBytes),maxSnapshotBytes:ai(e.stability?.maxSnapshotBytes,bt.snapshotBytes)},task:{singleActiveScope:ig(e.task?.singleActiveScope),tabScope:ag(e.task?.tabScope),resume:{mode:wd(e.task?.resume?.mode),ttlMs:il(e.task?.resume?.ttlMs)},followup:{mode:cg(e.task?.followup?.mode),ttlMs:Id(e.task?.followup?.ttlMs),minLexicalOverlap:xd(e.task?.followup?.minLexicalOverlap)},observerInput:Ed(e.task?.observerInput),autoResumePolicy:kd(e.task?.autoResumePolicy)},chat:{inRun:lg(e.chat?.inRun),resumeFollowup:{mode:ug(e.chat?.resumeFollowup?.mode),maxTurns:dg(e.chat?.resumeFollowup?.maxTurns)}},external:{intentSelection:fg(e.external?.intentSelection),requireUserConfirm:pg(e.external?.requireUserConfirm),adversarialGate:mg(e.external?.adversarialGate)},taskContext:{...e.taskContext},features:{rover_v2_kernel_runtime:hg(e.features?.rover_v2_kernel_runtime)}},l.sessionId=M.sessionId,l.runtimeId=Je,un=Yc(e.siteId,l.sessionId),Vr=un!==ei(e.siteId)?ei(e.siteId):null,td(e.siteId,un),l.executionMode=l.executionMode||"controller",l.timeline=fr(l.timeline),l.uiMessages=dr(l.uiMessages),l.activeTask=Ro(l.activeTask,pn("boot")),Ou(l.activeTask?.status)&&(l.pendingRun=void 0,l.workerState=void 0,nn=!1,fn=!1,is(),qi(e.siteId),sg(e.siteId)),l.taskEpoch=Math.max(1,Number(l.taskEpoch)||1),lt=l.executionMode,Ir&&ng(e.siteId,Ir);let A={maxConcurrentWorkers:e.task?.maxConcurrentWorkers??2,maxQueuedTasks:e.task?.maxQueuedTasks??5,maxArchivedTasks:e.task?.maxArchivedTasks??10};if(l.tasks&&Object.keys(l.tasks).length>0)G=qs.fromPersistedState({tasks:l.tasks,activeTaskId:l.activeTaskId,taskOrder:l.taskOrder},A);else{G=qs.fromV1State(l,A);let{tasks:D,activeTaskId:F,taskOrder:C}=G.toPersistedState();l.tasks=D,l.activeTaskId=F,l.taskOrder=C}let R=G.getActiveTask();R&&Sg(R,{replayUi:!1}),Ie();try{sessionStorage.setItem(`rover:tab-alive:${e.siteId}`,"1")}catch{}Kn=!1,oi=!1,pr=!1,dn=0,ol=null;try{let D=sessionStorage.getItem(`rover:sess:${e.siteId}`);if(D){let{t:F,e:C}=JSON.parse(D);F&&typeof F=="string"&&F.startsWith("rvrsess_")&&Number(C)>Date.now()+2e3&&cl(F,Number(C))}}catch{}AE(M),Md(M),Ea("boot");let B=!!(rn&&xr>Date.now()+2e3);if((!_e||B)&&(oi=!0),un&&pE(un,d.length?d:Vr?[Vr]:void 0),jw(),hr(!0),nn&&setTimeout(()=>{nn&&!pr&&(nn=!1,Sr())},Pk),vo={boot:pl,init:jg,update:pd,shutdown:md,open:us,close:qd,show:Gg,hide:Kg,send:Xg,newTask:xl,endTask:Wd,getState:Yg,registerTool:Qg,identify:zg,on:Jh},Kc.length){for(let D of Kc)og(D);Kc.length=0}return vo}function jg(e){return pl(e)}function pd(e){if(!vo||!Fe||!M)return;M={...M,...e,deepLink:Fs({...M.deepLink,...e.deepLink}),pageConfig:e.pageConfig!==void 0?Kr(e.pageConfig):M.pageConfig,domainScopeMode:fa(e.domainScopeMode??M.domainScopeMode),taskRouting:{...M.taskRouting,...e.taskRouting},navigation:{...M.navigation,...e.navigation,crossHostPolicy:gl(e.navigation?.crossHostPolicy??M.navigation?.crossHostPolicy)},timing:{...M.timing,...e.timing,navigationDelayMs:Bt(e.timing?.navigationDelayMs??M.timing?.navigationDelayMs,0,3e3),actionTimeoutMs:Bt(e.timing?.actionTimeoutMs??M.timing?.actionTimeoutMs,5e3,12e4),domSettleDebounceMs:Bt(e.timing?.domSettleDebounceMs??M.timing?.domSettleDebounceMs,8,500),domSettleMaxWaitMs:Bt(e.timing?.domSettleMaxWaitMs??M.timing?.domSettleMaxWaitMs,80,5e3),domSettleRetries:Bt(e.timing?.domSettleRetries??M.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:Bt(e.timing?.sparseTreeRetryDelayMs??M.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:Bt(e.timing?.sparseTreeRetryMaxAttempts??M.timing?.sparseTreeRetryMaxAttempts,0,4)},transport:{...M.transport,...e.transport,activation:Sd(e.transport?.activation??M.transport?.activation),idleCloseMs:Rd(e.transport?.idleCloseMs??M.transport?.idleCloseMs)},stability:{...M.stability,...e.stability,maxPersistBytes:ai(e.stability?.maxPersistBytes??M.stability?.maxPersistBytes,bt.localPersistBytes),maxSnapshotBytes:ai(e.stability?.maxSnapshotBytes??M.stability?.maxSnapshotBytes,bt.snapshotBytes)},task:{...M.task,...e.task,singleActiveScope:ig(e.task?.singleActiveScope??M.task?.singleActiveScope),tabScope:ag(e.task?.tabScope??M.task?.tabScope),resume:{mode:wd(e.task?.resume?.mode??M.task?.resume?.mode),ttlMs:il(e.task?.resume?.ttlMs??M.task?.resume?.ttlMs)},followup:{mode:cg(e.task?.followup?.mode??M.task?.followup?.mode),ttlMs:Id(e.task?.followup?.ttlMs??M.task?.followup?.ttlMs),minLexicalOverlap:xd(e.task?.followup?.minLexicalOverlap??M.task?.followup?.minLexicalOverlap)},observerInput:Ed(e.task?.observerInput??M.task?.observerInput),autoResumePolicy:kd(e.task?.autoResumePolicy??M.task?.autoResumePolicy)},chat:{...M.chat,...e.chat,inRun:lg(e.chat?.inRun??M.chat?.inRun),resumeFollowup:{mode:ug(e.chat?.resumeFollowup?.mode??M.chat?.resumeFollowup?.mode),maxTurns:dg(e.chat?.resumeFollowup?.maxTurns??M.chat?.resumeFollowup?.maxTurns)}},external:{...M.external,...e.external,intentSelection:fg(e.external?.intentSelection??M.external?.intentSelection),requireUserConfirm:pg(e.external?.requireUserConfirm??M.external?.requireUserConfirm),adversarialGate:mg(e.external?.adversarialGate??M.external?.adversarialGate)},taskContext:{...M.taskContext,...e.taskContext},features:{...M.features,...e.features,rover_v2_kernel_runtime:hg(e.features?.rover_v2_kernel_runtime??M.features?.rover_v2_kernel_runtime)},ui:{...M.ui,...e.ui,agent:{...M.ui?.agent,...e.ui?.agent},panel:{...M.ui?.panel,...e.ui?.panel},voice:{...M.ui?.voice,...e.ui?.voice}},tools:{...M.tools,...e.tools,client:e.tools?.client??M.tools?.client,web:{...M.tools?.web,...e.tools?.web}}},Ut=rg(M),Ut&&(M.visitorId=Ut),e.sessionId&&l?(l.sessionId=e.sessionId,un=Yc(M.siteId,l.sessionId),Vr=un!==ei(M.siteId)?ei(M.siteId):null,td(M.siteId,un),Ie(),dl(M)):(e.sessionScope||e.tabPolicy)&&dl(M),Fd(M),bl(M),Md(M);let t=e.apiBase!==void 0||e.publicKey!==void 0||e.authToken!==void 0||e.sessionToken!==void 0||e.siteId!==void 0||e.siteKeyId!==void 0||e.ui?.shortcuts!==void 0||e.ui?.greeting!==void 0;if(tt){typeof e.allowActions=="boolean"&&tt.setAllowActions(e.allowActions&<==="controller");let n=lt==="controller"&&(M?.allowActions??!0),r=lt==="observer"?"observer":"controller";tt?.setActionGateContext?.({mode:r,controllerRuntimeId:N?.getCurrentHolderRuntimeId(),activeLogicalTabId:N?.getActiveLogicalTabId(),localLogicalTabId:N?.getLocalLogicalTabId(),reason:va(r,n)}),(e.allowedDomains||e.domainScopeMode||e.externalNavigationPolicy||e.navigation?.crossHostPolicy)&&tt.setNavigationPolicy({allowedDomains:e.allowedDomains,domainScopeMode:fa(e.domainScopeMode??M.domainScopeMode),externalNavigationPolicy:e.externalNavigationPolicy,crossHostPolicy:e.navigation?.crossHostPolicy})}Fe.postMessage({type:"update_config",config:{...e,...ls(),pageConfig:ma(M),publicKey:void 0,authToken:Xn(M),sessionToken:rn,sessionId:l?.sessionId,activeRunId:l?.pendingRun?.id,sessionEpoch:_e?.getEpoch?.()??zr,sessionSeq:_e?.getLastSeq?.()??0}}),fl(M),t?Vg(M):ha(),e.visitor&&zg(e.visitor),typeof e.openOnInit=="boolean"&&(e.openOnInit||_d(l)?us():qd()),Ea("update"),hr()}function md(){is(),wn(),ti(),Zo(!0),Cd(),yt?.markDirty(),yt?.syncNow({push:!0,pull:!1}),yt?.stop(),yt=null,_e?.stop(),_e=null,rn=void 0,xr=0,zr=1,ko(void 0),sl="",N?.stop(),N=null,G?.shutdown(),G=null,Fe?.terminate(),Fe=null,X?.destroy(),X=null,tt=null,M=null,Kn=!1,pr=!1,dn=0,ct&&(clearTimeout(ct),ct=null),go&&(clearTimeout(go),go=null),jc=!1,tn.clear(),mo.clear(),lr.clear(),wr.clear(),Gs(),js="",na="",Er=!1,Me="",Je="",Ut=void 0,Ir=void 0,wo=!1,ts=!1,wa(),Rr=null,Xu="",ri=!1,zc=!1,Ks=!1,_n=[],Xh=0,Gu=0,Ku=0,rl=0,oa=!1,Gr&&(clearTimeout(Gr),Gr=null),cd="",zs="",lt="controller",cr=!0,_o=null,jr=null,ol=null,ra=0;try{let e=window.rtrvrAIClearObserverPause;typeof e=="function"&&e()}catch{}vo=null;for(let e of To)try{e.target.removeEventListener(e.event,e.handler,e.options)}catch{}if(To.length=0,Xs){try{History.prototype.pushState=Xs}catch{}Xs=null}if(Ys){try{History.prototype.replaceState=Ys}catch{}Ys=null}Yu=!1,Qu=!1,Ju=!1}function us(){wo=!0,wa(),X?.show(),X?.open(),l&&(l.uiHidden=!1,l.uiOpen=!0,Ie())}function qd(){X?.close(),is(),l&&(l.uiOpen=!1,Ie())}function Gg(){X?.show(),l&&(l.uiHidden=!1,Ie())}function Kg(){X?.hide(),is(),l&&(l.uiHidden=!0,l.uiOpen=!1,Ie())}function Xg(e){e?.trim()&&es(e)}function xl(e){if(!l)return;let t=e?.reason||"manual_new_task",n=e?.clearUi!==!1;if(rs=void 0,os=void 0,si=0,l.pendingRun&&(So(l.pendingRun.id),Fe?.postMessage({type:"cancel_run",runId:l.pendingRun.id}),Eo(l.pendingRun.id,t,{attemptImmediately:!0}),_e?.controlRun({action:"cancel",runId:l.pendingRun.id,reason:t}),N?.releaseWorkflowLock(l.pendingRun.id)),Tt&&(clearTimeout(Tt),Tt=null),X?.setRunning(!1),X?.setQuestionPrompt(void 0),pr=!1,dn=0,ka(),G){let s=G.createTask(t);G.switchActiveTask(s.taskId),G.dispatch(s.taskId,{type:"START",reason:t})}let r=Ao({type:"new_task",reason:t,at:Date.now()},{syncShared:!1,persist:!1});if(!r)return;let o=Math.max(1,Number(l.taskEpoch)||1);n&&(l.uiMessages=[],l.timeline=[],l.uiStatus=void 0,l.transientStatus=void 0,Dd()),N?.startNewTask({taskId:r.taskId,startedAt:r.startedAt,boundaryReason:t,status:"running",lastUserAt:void 0,lastAssistantAt:void 0}),Fn({forceReset:!0,persist:!1}),N?.setActiveRun(void 0),N?.setWorkerContext(void 0),Rg([]),Et(void 0),Ie(),Fe?.postMessage({type:"start_new_task",taskId:r.taskId,...ls()}),_e?.controlRun({action:"new_task",reason:t}),ze("task_started",{taskId:r.taskId,reason:t,taskEpoch:o})}function Wd(e){if(!l)return;let t=e?.reason||"manual_end_task";if(rs=void 0,os=void 0,si=0,pr=!1,dn=0,fn=!1,ka(),G){let o=G.getActiveTask();o&&G.dispatch(o.taskId,{type:"CANCEL",reason:t})}let n=l.pendingRun?.id,r=Ao({type:"terminal",terminal:"ended",reason:t,at:Date.now()},{syncShared:!1,persist:!1,rotateBoundary:!1});r&&(n&&(So(n),Fe?.postMessage({type:"cancel_run",runId:n}),Eo(n,t,{attemptImmediately:!0}),_e?.controlRun({action:"cancel",runId:n,reason:t}),N?.releaseWorkflowLock(n)),It(void 0),Me=mr(),l.workerState=void 0,l.taskTabScope=void 0,Fn({forceReset:!0,persist:!1}),Gn(),Tt&&(clearTimeout(Tt),Tt=null),X?.setRunning(!1),X?.setQuestionPrompt(void 0),wn(),Et(void 0),_e?.controlRun({action:"end_task",runId:n,reason:t}),N?.endTask(t),N?.setActiveRun(void 0),N?.setWorkerContext(void 0),Ie(),ot({kind:"info",title:"Task ended",detail:"Start a new task when you are ready.",status:"info"}),ze("task_ended",{taskId:r.taskId,reason:t,endedAt:r.endedAt}))}function Yg(){return{mode:lt,runtimeId:Je,runtimeState:l?Ud(l):null,sharedState:N?.getState()||null,pendingTaskSuggestion:_o}}function Qg(e,t){let n=nw(e);if(!vo||!tt||!Fe){Kc.push({def:n,handler:t});return}og({def:n,handler:t})}function CE(e){if(!e)return;let t=String(e);if(t==="init")return"init";if(t==="boot")return"boot";if(t==="update")return"update";if(t==="shutdown")return"shutdown";if(t==="open")return"open";if(t==="close")return"close";if(t==="show")return"show";if(t==="hide")return"hide";if(t==="send")return"send";if(t==="newTask")return"newTask";if(t==="endTask")return"endTask";if(t==="getState")return"getState";if(t==="registerTool")return"registerTool";if(t==="on")return"on"}var xR={sanitizeWorkerState:Ft,cloneRuntimeStateForCheckpoint:Ud,getPersistGovernorConfig:()=>({minPersistIntervalMs:ld,maxCoalesceDelayMs:xg}),getTelemetryFastLaneEvents:()=>Array.from(Yh.values())};function ME(){let e=window,t=e.rover,n=((r,...o)=>{let s=CE(r),i=s?n[s]:void 0;if(typeof i=="function")return i(...o)});if(n.boot=pl,n.init=jg,n.update=pd,n.shutdown=md,n.open=us,n.close=qd,n.show=Gg,n.hide=Kg,n.send=Xg,n.newTask=xl,n.endTask=Wd,n.getState=Yg,n.registerTool=Qg,n.on=Jh,e.rover=n,typeof t=="function"&&Array.isArray(t.q))for(let r of t.q){let[o,...s]=Array.isArray(r)?r:Array.from(r);typeof o=="string"&&n(o,...s)}if(!vo){let r=typeof globalThis.__ROVER_SCRIPT_EL__<"u"?globalThis.__ROVER_SCRIPT_EL__:null;if(r){let o=r.getAttribute("data-site-id"),s=r.getAttribute("data-public-key");if(o&&s){let i={siteId:o,publicKey:s},a=r.getAttribute("data-allowed-domains");a&&(i.allowedDomains=a.split(",").map(u=>u.trim()).filter(Boolean));let c=r.getAttribute("data-domain-scope-mode");(c==="host_only"||c==="registrable_domain")&&(i.domainScopeMode=c);let d=r.getAttribute("data-site-key-id");d&&(i.siteKeyId=d);let p=r.getAttribute("data-worker-url");p&&(i.workerUrl=p),pl(i)}}}}ME();export{xR as __roverInternalsForTests,pl as boot,qd as close,Wd as endTask,Yg as getState,Kg as hide,zg as identify,jg as init,ME as installGlobal,xl as newTask,us as open,Qg as registerTool,Xg as send,Gg as show,md as shutdown,pd as update};
|