@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/embed.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
var __ROVER_SCRIPT_EL__=document.currentScript||null;var __ROVER_SCRIPT_URL__=(__ROVER_SCRIPT_EL__&&__ROVER_SCRIPT_EL__.src)||'';
|
|
2
|
-
"use strict";var __roverSDK=(()=>{var Ki=Object.defineProperty;var xh=Object.getOwnPropertyDescriptor;var Sh=Object.getOwnPropertyNames;var Rh=Object.prototype.hasOwnProperty;var Ah=(e,t,n)=>t in e?Ki(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Ch=(e,t)=>{for(var n in t)Ki(e,n,{get:t[n],enumerable:!0})},Mh=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Sh(t))!Rh.call(e,o)&&o!==n&&Ki(e,o,{get:()=>t[o],enumerable:!(r=xh(t,o))||r.enumerable});return e};var Nh=e=>Mh(Ki({},"__esModule",{value:!0}),e);var D=(e,t,n)=>Ah(e,typeof t!="symbol"?t+"":t,n);var Zk={};Ch(Zk,{__roverInternalsForTests:()=>Jk,boot:()=>Pi,close:()=>Wc,endTask:()=>$c,getState:()=>Zu,hide:()=>Qu,identify:()=>Xu,init:()=>Ku,installGlobal:()=>bh,newTask:()=>ji,open:()=>zi,registerTool:()=>ed,send:()=>Ju,show:()=>Yu,shutdown:()=>Ac,update:()=>Rc});var F;(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"})(F||(F={}));var r_=new Set(Object.values(F)),Yi=["element_id","source_element_id","target_element_id","center_element_id","element_ids"],Lh=40;function sd(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,Lh)}var In;(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"})(In||(In={}));var id={[In.Unknown]:"unknown",[In.React]:"react",[In.Vue]:"vue",[In.Angular]:"angular",[In.Svelte]:"svelte",[In.JQuery]:"jquery"},jc={react:In.React,vue:In.Vue,angular:In.Angular,svelte:In.Svelte,jquery:In.JQuery},Et;(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"})(Et||(Et={}));var i_={[Et.Other]:"other",[Et.Inline]:"inline",[Et.Delegated]:"delegated",[Et.React]:"react",[Et.Vue]:"vue",[Et.Angular]:"angular",[Et.Svelte]:"svelte",[Et.JQuery]:"jquery",[Et.Native]:"native"},a_={inline:Et.Inline,delegated:Et.Delegated,react:Et.React,vue:Et.Vue,angular:Et.Angular,svelte:Et.Svelte,jquery:Et.JQuery,other:Et.Other,native:Et.Native},ke;(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"})(ke||(ke={}));var Qi={[F.click_element]:ke.click_element,[F.type_into_element]:ke.type_into_element,[F.type_and_enter]:ke.type_and_enter,[F.select_dropdown_value]:ke.select_dropdown_value,[F.clear_element]:ke.clear_element,[F.focus_element]:ke.focus_element,[F.hover_element]:ke.hover_element,[F.right_click_element]:ke.right_click_element,[F.double_click_element]:ke.double_click_element,[F.long_press_element]:ke.long_press_element,[F.drag_element]:ke.drag_element,[F.drag_and_drop]:ke.drag_and_drop,[F.swipe_element]:ke.swipe_element,[F.adjust_slider]:ke.adjust_slider,[F.describe_images]:ke.describe_images,[F.scroll_to_element]:ke.scroll_to_element,[F.paste_text]:ke.paste_text,[F.check_field_validity]:ke.check_field_validity,[F.select_text]:ke.select_text,[F.mouse_wheel]:ke.mouse_wheel,[F.copy_text]:ke.copy_text,[F.upload_file]:ke.upload_file,[F.go_back]:ke.go_back,[F.go_forward]:ke.go_forward,[F.refresh_page]:ke.refresh_page,[F.press_key]:ke.press_key,[F.scroll_page]:ke.scroll_page,[F.wait_action]:ke.wait_action,[F.wait_for_element]:ke.wait_for_element,[F.pinch_zoom]:ke.pinch_zoom,[F.goto_url]:ke.goto_url,[F.google_search]:ke.google_search,[F.open_new_tab]:ke.open_new_tab,[F.switch_tab]:ke.switch_tab,[F.close_tab]:ke.close_tab,[F.solve_captcha]:ke.solve_captcha,[F.answer_task]:ke.answer_task,[F.dispatch_pointer_path]:ke.dispatch_pointer_path,[F.network_run_recipe]:ke.network_run_recipe,[F.rover_external_read_context]:ke.rover_external_read_context,[F.rover_external_act_context]:ke.rover_external_act_context},ad=Object.fromEntries(Object.entries(Qi).map(([e,t])=>[t,e]));function Ji(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 ld={semanticIdStart:1,interactiveIdStart:1,includeFrameContents:!0,clearIframes:!0,frameContextLabel:null,signalProvider:null,disableDomAnnotations:!1},on={...ld},ea=globalThis;function ud(e){on={...ld,...e||{}}}function To(){return on.signalProvider??null}function ft(){try{return typeof ea.document<"u"?ea.document:null}catch{return null}}function mr(){try{return typeof ea.window<"u"?ea.window:null}catch{return null}}function Q(e,t){if(e&&typeof e=="object"){let n=e.ownerDocument;if(n)return n;if(e.nodeType===9)return e}return t??ft()??{}}function ye(e,t){return Q(e,t?t.document:null)?.defaultView??t??mr()??{}}function re(e,t){return e?.defaultView??t??mr()??{}}function ta(e,t){try{return e?.getElementById?.(t)??null}catch{return null}}function na(e,t){try{return e?.querySelector?.(t)??null}catch{return null}}function Gc(e,t){try{return Array.from(e?.querySelectorAll?.(t)??[])}catch{return[]}}function Ws(e){try{return e.contentDocument||(e.contentWindow?.document??null)}catch{return null}}function ra(e,t){let n=e.CSS?.escape;return typeof n=="function"?n(t):t.replace(/([^\w-])/g,"\\$1")}function xn(e,t){try{return e[t]}catch{return}}function hr(e,t){return!!e&&String(e.tagName||"").toUpperCase()===t.toUpperCase()}function dd(e,t){let n=xn(t,"HTMLAnchorElement");return n?e instanceof n:hr(e,"A")}function Un(e,t){let n=xn(t,"HTMLInputElement");return n?e instanceof n:hr(e,"INPUT")}function Yn(e,t){let n=xn(t,"HTMLTextAreaElement");return n?e instanceof n:hr(e,"TEXTAREA")}function fd(e,t){let n=xn(t,"HTMLLabelElement");return n?e instanceof n:hr(e,"LABEL")}function pd(e,t){let n=xn(t,"HTMLSelectElement");return n?e instanceof n:hr(e,"SELECT")}function md(e,t){let n=xn(t,"HTMLSlotElement");return n?e instanceof n:hr(e,"SLOT")}function hd(e,t){let n=xn(t,"HTMLButtonElement");return n?e instanceof n:hr(e,"BUTTON")}function gd(e,t){let n=xn(t,"HTMLImageElement");return n?e instanceof n:hr(e,"IMG")}function bd(e,t){let n=xn(t,"HTMLVideoElement");return n?e instanceof n:hr(e,"VIDEO")}function yd(e,t){let n=xn(t,"HTMLCanvasElement");return n?e instanceof n:hr(e,"CANVAS")}function wt(e,t){if(!e||e.nodeType!==1)return!1;let n=xn(t,"HTMLElement");return n?e instanceof n:typeof e.tagName=="string"}function Sn(e){return!!e&&e.nodeType===11&&typeof e.host=="object"&&typeof e.mode=="string"}function ko(e){if(!e||e.nodeType!==1)return!1;let t=Q(e),r=re(t).Element;return r?e instanceof r:typeof e.tagName=="string"}function $s(e){if(!e||e.nodeType!==1)return!1;let t=Q(e),r=re(t).HTMLIFrameElement;return r&&e instanceof r?!0:String(e.tagName||"").toUpperCase()==="IFRAME"}function Dh(e,t){if(!e)return!1;if(e.nodeType===9)return!0;let n=xn(t,"Document");return n?e instanceof n:!1}function Oh(e,t){if(!e)return!1;let n=xn(t,"Window");if(n)return e instanceof n;try{return e.window===e}catch{return!1}}function oa(e){try{return e.document}catch{return null}}function sa(e,t){if(Dh(e,t))try{return e.documentElement}catch{return null}if(Oh(e,t)){let n=oa(e);if(!n)return null;try{return n.documentElement}catch{return null}}return null}function Zi(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 cd(e,t,n){try{let r=Q(t,n);return new URL(e,r.baseURI).href}catch{return e}}function ia(e,t){let n=e.tagName.includes("-"),r=e.getAttribute("href")||e.getAttribute("src")||e.getAttribute("data")||e.getAttribute("action");if(r){let o=cd(r,e,t);return o.trim().toLowerCase().startsWith("javascript:")?null:o}if(n)return null;try{let o=e,s=Zi(o.href)||Zi(o.src)||Zi(o.data)||Zi(o.action);return s?cd(s,e,t):null}catch{return null}}var vd=["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"],qe={};vd.forEach((e,t)=>{qe[e]=t});var Lr={};vd.forEach((e,t)=>{Lr[t]=e});function _o(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 Ph(e){let t=_o(e);if(t){let n=new Set;for(let{id:r}of t.entries)n.add(r);return[...n]}return[]}function Vs(e){return Qo(e).map(n=>Lr[n]).filter(n=>!!n)}function Qo(e){let t=To();if(t?.getEventHandlerIds)try{let o=t.getEventHandlerIds(e);if(o&&o.length)return o}catch{}let n=e.getAttribute(Qr),r=Ph(n);return!r||r.length===0?[]:r}var Xc=["media"],Td=new Set(Xc),Kc=["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 kd=new Set(Kc),Dr=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"]),zs=new Set(["group","region","section","banner","contentinfo","main","navigation","complementary","form","article","document","presentation","none"]);var _d=["none","presentation"],Pe;(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"})(Pe||(Pe={}));var Ed={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"]},js={heading:{selector:"h6,h1,h3,h2,h5,h4"},checkbox:{conditionalSelectors:[{selector:"input",conditions:[{type:Pe.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:Pe.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"grid"}]},{selector:"td",conditions:[{type:Pe.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"treegrid"}]},{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:Pe.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"treegrid"},{type:Pe.HAS_TABLE_COLUMN_DATA,hasData:!0},{type:Pe.HAS_TABLE_ROW_DATA,hasData:!0}]}]},slider:{conditionalSelectors:[{selector:"input",conditions:[{type:Pe.PROPERTY_VALUE_MATCH,property:"type",values:["range"]}]}]},listitem:{selector:"li"},contentinfo:{conditionalSelectors:[{selector:"footer",conditions:[{type:Pe.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:Pe.PROPERTY_VALUE_MATCH,property:"type",values:["submit","reset","image","button"]}]}]},status:{selector:"output"},form:{conditionalSelectors:[{selector:"form",conditions:[{type:Pe.HAS_ACCESSIBLE_NAME}]}]},article:{selector:"article"},textbox:{selector:"textarea",conditionalSelectors:[{selector:"input:not([list])",conditions:[{type:Pe.PROPERTY_VALUE_MATCH,property:"type",values:["url","text","tel","email"]}]}]},radio:{conditionalSelectors:[{selector:"input",conditions:[{type:Pe.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:Pe.HAS_TABLE_ROW_DATA,hasData:!1}]}]},list:{selector:"ul,ol,menu"},region:{conditionalSelectors:[{selector:"section",conditions:[{type:Pe.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:Pe.PROPERTY_VALUE_MATCH,property:"type",values:["search"]}]}]},cell:{conditionalSelectors:[{selector:"td",conditions:[{type:Pe.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"table"}]},{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:Pe.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"table"},{type:Pe.HAS_TABLE_COLUMN_DATA,hasData:!0},{type:Pe.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:Pe.HAS_TABLE_COLUMN_DATA,hasData:!1},{type:Pe.HAS_TABLE_ROW_DATA,hasData:!0}]}]},dialog:{selector:"dialog"},listbox:{selector:"select[multiple],datalist",conditionalSelectors:[{selector:"select",conditions:[{type:Pe.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:Pe.PROPERTY_VALUE_MATCH,property:"type",values:["number"]}]}]},math:{selector:"math"},combobox:{selector:"select:not([size]):not([multiple])",conditionalSelectors:[{selector:"select:not([multiple])",conditions:[{type:Pe.ATTRIBUTE_LESS_THAN,attribute:"size",value:2}]},{selector:"input[list]",conditions:[{type:Pe.PROPERTY_VALUE_MATCH,property:"type",values:["url","text","tel","search","email"]}]}]},banner:{conditionalSelectors:[{selector:"header",conditions:[{type:Pe.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"}},Qr="rtrvr-ls",Or="rtrvr-ro",Yc="rtrvr-mw-ready",Eo="rtrvr-mw-busy",Qc="rtrvr-mwa-ready",wd=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"]),Id=["BUTTON","INPUT","METER","OUTPUT","PROGRESS","SELECT","TEXTAREA"],xd=["h1","h2","h3","h4","h5","h6"],Sd="http://www.w3.org/1999/xhtml",Rd="http://www.w3.org/2000/svg",Xt="rtrvr-label";var la=new Set(["NOSCRIPT","SCRIPT","STYLE","META"]),wo="CODE",Io="PRE",Ad="aria-hidden",Cd="target";var aa;(function(e){e[e.value=0]="value",e[e.alt=1]="alt",e[e.list=2]="list",e[e.title=3]="title"})(aa||(aa={}));var Jo;(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"})(Jo||(Jo={}));var ca;(function(e){e[e.VALUENOW=0]="VALUENOW",e[e.VALUETEXT=1]="VALUETEXT"})(ca||(ca={}));var Jc=new Set([qe.click,qe.dblclick,qe.doubleclick,qe.contextmenu,qe.auxclick,qe.pointerdown,qe.pointerup,qe.mousedown,qe.mouseup,qe.touchstart,qe.touchend,qe.keydown,qe.keyup,qe.input,qe.beforeinput,qe.change,qe.submit,qe.reset,qe.paste,qe.dragstart,qe.dragend,qe.drop]),Md=new Set([...Jc,qe.scroll,qe.wheel,qe.mouseenter,qe.mouseover,qe.focus,qe.blur,qe.focusin,qe.focusout]),ua=new Set(["click","dblclick","auxclick","contextmenu","mousedown","mouseup","pointerdown","pointerup","touchstart","touchend"]),Zc=new Set(["input","change","beforeinput","keydown","keyup","keypress","paste","compositionstart","compositionend"]),el=new Set(["drag","dragstart","dragend","dragenter","dragleave","dragover","drop"]);var Jr;(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"})(Jr||(Jr={}));var Gs;(function(e){e[e.HTML=0]="HTML",e[e.SVG=1]="SVG"})(Gs||(Gs={}));var da;(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"})(da||(da={}));var fa;(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"})(fa||(fa={}));var gn;(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"})(gn||(gn={}));var Wt;(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"})(Wt||(Wt={}));var Pr;(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"})(Pr||(Pr={}));var Bh=[...Kc,...Object.keys(js),...Xc],Nd=[...new Set(Bh)],Zo={};Nd.forEach((e,t)=>{Zo[e]=t});var Xs={};Nd.forEach((e,t)=>{Xs[t]=e});var pa=class{constructor(t=1){D(this,"currentId");this.currentId=t}generateId(){let t=this.currentId;return this.currentId++,t}initialize(t=1){this.currentId=t}getCurrentValue(){return this.currentId}};function Ks(e){let t=To();if(t?.getRoleHint)try{let o=t.getRoleHint(e);if(o)return o}catch{}let n=e.getAttribute(Or);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=Xs[o];if(s)return s}}return r}function es(e){return Array.from(new Set(e))}function Ld(e,t){if(!e||e.length===0)return es(t);let n=new Set([...e,...t]);return es(Array.from(n))}function Rn(e,t){let r=To()?.getEventHandlerIds?.(e)??Qo(e),o=r.length>0&&r.some(a=>Jc.has(a)),s=ma(e),i=t?zs.has(t):!1;return{element:e,semanticRole:t,eventHandlerIndices:r,isEditableRegion:s,hasNodeWorthyHandlers:o,isLikelyStructuralContainer:i}}var Uh=new Set(["text","search","url","tel","password","email","number","date","datetime-local","time","month","week","color"]);function Fh(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 Hh(e){let t=ye(e);if(!Un(e,t))return!1;let n=(e.type||"text").toLowerCase();return Uh.has(n)?!e.disabled&&!e.readOnly:!1}function qh(e){let t=ye(e);return Yn(e,t)&&!e.disabled&&!e.readOnly}function Wh(e){let t=e;return!(!t.isContentEditable||t.getAttribute("aria-readonly")==="true"||t.getAttribute("aria-disabled")==="true")}function ma(e){return!e||!Fh(e)?!1:!!(Hh(e)||qh(e)||Wh(e))}function Ys(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 Qs(e){let t=String(e??"").replace(/[\n\r\t]/g," ").replace(/\s+/g," ").trim();return t=t.replace(/\[/g,"[").replace(/\]/g,"]"),t}function Dd({element:e,elementID:t,frameContextLabel:n}){let r=!on.disableDomAnnotations,o=[`[id=${t}]`],s=ye(e);if($s(e)){let c=Qs(e.id||e.getAttribute("name")||"unnamed");o.push(`[iframe=${c}]`)}if(n){let c=Qs(n);o.push(`[iframeRoot=${c}]`)}if(gd(e,s)&&o.push(`[size=${e.clientWidth}x${e.clientHeight}]`),(bd(e,s)||yd(e,s))&&o.push(`[size=${e.clientWidth}x${e.clientHeight}]`),Un(e,s)||Yn(e,s)){let c=$h(e);o.push(...c)}e.getAttribute(Ad)==="true"&&o.push("[aria-hidden=true]"),e.disabled&&o.push("[disabled]"),r&&dd(e,s)&&e.setAttribute(Cd,"_self");let a=o.join(" ");return r&&e.setAttribute(Xt,a),a}function $h(e){let t=[],n=ye(e),r=Un(e,n);if(r&&e.type&&e.type!=="text"&&t.push(`[type=${e.type}]`),e.name){let o=Qs(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=Qs(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=Qs(o).replace(/\\/g,"\\\\").replace(/"/g,'\\"');t.push(`[value="${s}"]`)}return t}var xo=new pa,tl=new WeakMap;function Od(){tl=new WeakMap}function ha(e){let t=tl.get(e);if(t)return t;let n=xo.generateId();return tl.set(e,n),n}var ga=new Map,nl=new WeakMap;function Pd(){ga.clear(),nl=new WeakMap}function rl(e,t){try{typeof WeakRef<"u"?ga.set(e,new WeakRef(t)):ga.set(e,t)}catch{}}function Js(e){let t=ga.get(e);if(!t)return null;let n=t instanceof WeakRef?t.deref():t;return!n||n.isConnected===!1?null:n}function Zr(e){let t=null,n=ha(e);if(on.frameContextLabel)t=on.frameContextLabel;else{let o=ft();if(o&&e.ownerDocument!==o)try{let i=e.ownerDocument?.defaultView?.frameElement?.getAttribute(Xt)||"",a=i?Ys(i):null;t=a?String(a):null}catch{t=""}}let r=Dd({element:e,elementID:n,frameContextLabel:t});if(rl(n,e),r)try{nl.set(e,r)}catch{}return r}function Bd(e){return nl.get(e)??null}function ol(e,t){try{e.querySelectorAll?.(`[${Xt}]`)?.forEach(r=>r.removeAttribute(Xt))}catch{}if(t.includeShadow)try{let n=e.querySelectorAll?.("*");if(n)for(let r of Array.from(n))try{let o=r.shadowRoot;o&&ol(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=Ws(r);o?.body&&ol(o.body,t)}catch{}}catch{}}function Ud(e,t={}){if(on.disableDomAnnotations)return;let n=ko(e)?ye(e):re(e)??window,r=sa(e,n)??e;if(r){try{r.removeAttribute?.(Xt)}catch{}ol(r,{includeShadow:t.includeShadow??!0,includeIframes:t.includeIframes??!0})}}var gr={},sl=new WeakMap,ba=new WeakSet;function Fd(){gr={},sl=new WeakMap,ba=new WeakSet,Od()}function Kt({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:s,originatedFromParent:i,elementContext:a}){let c=ha(e);rl(c,e);let l=gr[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),gr[c]=d}}else{if(l&&!l.provisionalFromParent){if((o||ts(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=es(d);v.length>0&&(l.eventHandlers=Ld(l.eventHandlers,v))}p&&(l.isEditable=!0)}return c}if(ba.has(e))return c;ba.add(e);try{gr[c]=Hd({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:s,elementContext:a})}finally{ba.delete(e)}}return c}function Zs(e){let t=sl.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=xo.generateId(),i={textContent:r,nodeCategory:e.nodeType};return o&&o!==r&&(i.rawData=o),gr[s]=i,sl.set(e,s),s}function Wd(e,t){let n=Vd(e),{minY:r,maxY:o}=n.getCellBounds(t);return n.getRows().slice(r,o+1).some(s=>s.some(ei))}function $d(e,t){let n=Vd(e),{minX:r,maxX:o}=n.getCellBounds(t);return n.getRows().some(s=>s.slice(r,o+1).some(ei))}var va=class{constructor(t=[]){D(this,"cells");D(this,"getCellAt",(t,n)=>this.getRowAt(n)[t]);D(this,"setCellAt",(t,n,r)=>{this.getRowAt(n)[t]=r});D(this,"getRowAt",t=>(this.cells[t]===void 0&&(this.cells[t]=[]),this.cells[t]));D(this,"getRows",()=>this.cells);D(this,"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}});D(this,"merge",t=>{this.cells=this.getRows().concat(t.getRows())});this.cells=t}get rowCount(){return this.cells.length}get columnCount(){return Math.max(...this.cells.map(t=>t.length))}};function Vd(e){let n=ye(e).TableGrid||va,r=new n;e.tHead!==null&&r.merge(ya(e.tHead.rows)),Array.from(e.tBodies).forEach(s=>{r.merge(ya(s.rows))});let o=[];for(let s of Array.from(e.children))il(s)&&So(s,"tr")&&o.push(s);return r.merge(ya(o)),e.tFoot!==null&&r.merge(ya(e.tFoot.rows)),r}function ya(e){let t=new va,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];)!ei(t.getCellAt(o,r))&&n[o]&&t.setCellAt(o,r,n[o]),o++;for(let i=o;i<o+s.colSpan;i++){qd(s)===0&&(n[i]=s,t.setCellAt(i,r,s));for(let a=r;a<r+qd(s);a++)ei(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&&!ei(t.getCellAt(s,r))&&t.setCellAt(s,r,i)}}return t}function qd(e){let t=e.getAttribute("rowSpan");if(t===null||t.trim()==="")return 1;let n=Number(t);return isNaN(n)?1:n}function ei(e){return e!==void 0&&So(e,"td")}function Qn(e){let t=e.tagName?.toLowerCase();if(t==="code"||t==="pre"){let r=Jh(e);if(r)return r}let n=zd(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||Qo(e).length>0||e.getAttribute("tabindex")!==null?"img":null}if(Qo(e).length>0){let o=e.tagName.toLowerCase();if(["div","span","li","p","i","em","strong","b"].includes(o))return Vh(e)}}if(t==="td"&&e.getAttribute("role")===null)return"cell";if(n!==null&&t==="th"){let r=e.getAttribute("role");if(r&&jd(r))return r;let o=e;return o.scope==="col"||o.hasAttribute("aria-sort")?"columnheader":o.scope==="row"?"rowheader":"cell"}return n}function Vh(e){return Ks(e)??null}function zd(e){let t=e.getAttribute("role");if(t!==null)return _d.includes(t)||!jd(t)?null:t;let n=e.tagName.toLowerCase();return(Ed[n]??[]).find(o=>zh(e,o))||null}function zh(e,t){let n=js[t],r=n?.selector;if(r&&Ta(e,r))return!0;let o=n?.conditionalSelectors;return o?o.some(i=>Ta(e,i.selector)&&i.conditions.every(c=>Gh(e,c))):!1}function jh(e,t){let n=(t||"").trim().replace(/^#/,"");if(!n)return null;try{let r=e.getRootNode?.();if(Sn(r)){let o=ye(e),s=`#${ra(o,n)}`,i=na(r,s);if(i)return i}}catch{}return ta(Q(e),n)}function Gh(e,t){switch(t.type){case Pe.ATTRIBUTE_GREATER_THAN:{let n=e.getAttribute(t.attribute);return n!==null&&Number(n)>t.value}case Pe.ATTRIBUTE_LESS_THAN:{let n=e.getAttribute(t.attribute);return n!==null&&Number(n)<t.value}case Pe.HAS_ACCESSIBLE_NAME:return e.hasAttribute("aria-label")?!0:(e.getAttribute("aria-labelledby")||"").split(/\s+/).filter(Boolean).some(r=>jh(e,r)!=null);case Pe.FORBIDDEN_ANCESTORS:return Br(e,t.selector)===null;case Pe.BOOLEAN_PROPERTY:return e[t.property]===t.value;case Pe.PROPERTY_VALUE_MATCH:return t.values.some(n=>n===e[t.property]);case Pe.ANCESTOR_ROLE_REQUIRED:{let n=e.parentElement;if(n===null)return!1;let r=Br(n,t.tag);return r!==null&&zd(r)===t.role}case Pe.HAS_TABLE_COLUMN_DATA:{let n=Br(e,"table");return n===null?!1:t.hasData===$d(n,e)}case Pe.HAS_TABLE_ROW_DATA:{let n=Br(e,"table");return n===null?!1:t.hasData===Wd(n,e)}default:return Xh(t),!1}}function Xh(e){throw new Error(`unexpected value ${e}!`)}function jd(e){return Yh(e)||Qh(e)||Kh(e)}function Kh(e){return Td.has(e)}function Yh(e){return kd.has(e)}function Qh(e){return js.hasOwnProperty(e)}function Jh(e){if(e.tagName!==wo&&e.tagName!==Io)return null;if(Vs(e).some(r=>r==="click"||r==="copy"))return"button";let n=e.getAttribute("tabindex");return n!==null&&parseInt(n,10)>=0?"button":e.tagName===Io||e.tagName===wo&&e.closest("pre")?"code":null}var Zh={[Wt.display]:[Wt.beforeDisplay,Wt.afterDisplay],[Wt.content]:[Wt.beforeContent,Wt.afterContent]},al=new Map,eg={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 tg(e,t){if(!al.has(e)){let n=eg[t]||t.replace(/([A-Z])/g,"-$1").toLowerCase();al.set(e,n)}return al.get(e)}var ng={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 Kd(e,t,n){let r=ng[e];return r?r(t,n):t.trim()!==""&&!["initial","inherit","unset"].includes(t)}function Yd(e){let t={},n=ye(e);if(!wt(e,n))return t;let r=n.getComputedStyle(e),o=new Map([[Wt.beforeDisplay,n.getComputedStyle(e,"::before")],[Wt.afterDisplay,n.getComputedStyle(e,"::after")],[Wt.beforeContent,n.getComputedStyle(e,"::before")],[Wt.afterContent,n.getComputedStyle(e,"::after")]]);for(let s in Wt)if(isNaN(Number(s))){let i=Wt[s],a=tg(i,s),c=Zh[i];c?((i===Wt.display||i===Wt.content)&&Gd(r,a,i,s,t,e),Xd(o.get(c[0]),a,c[0],"beforeContent",t),Xd(o.get(c[1]),a,c[1],"afterContent",t)):Gd(r,a,i,s,t,e)}return t}function Gd(e,t,n,r,o,s){if(e){let i=e.getPropertyValue(t);i&&Kd(r,i,s)&&(o[n]=i)}}function Xd(e,t,n,r,o){if(e){let s=e.getPropertyValue(t);(t==="content"&&s&&s!=="none"&&s!=='""'&&s!=="''"||s&&Kd(r,s))&&(o[n]=s)}}function Ro(e,t){let n=ye(e);if(!wt(e,n))return!0;if(t&&Dr.has(t))return!1;if(e.hasAttribute("hidden")||Br(e,"[hidden]")!==null||Br(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 ti(e){return Jn(e)&&e.classList.contains("jasmine_html-reporter")}function rg(e){let t=e.getAttribute("role");return t==="presentation"||t==="none"}function Qd(e){return e?e.split(/\s+/).map(t=>t.trim()).filter(Boolean).map(t=>t.replace(/^#/,"")):[]}function Jd(e,t){let n=(t||"").trim().replace(/^#/,"");if(!n)return null;try{let o=e.getRootNode?.();if(Sn(o)){let s=ye(e),i=`#${ra(s,n)}`,a=na(o,i);if(a)return a}}catch{}let r=Q(e);return ta(r,n)}function cl(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=og(o,s,s+8192),a=cl.apply(null,i);for(let c=0;c<a.length;c++)n.push(a[c])}else n.push(o)}return n}function og(e,t,n){return arguments.length<=2?Array.prototype.slice.call(e,t):Array.prototype.slice.call(e,t,n)}function Zd(e,t){return sg(e,t).concat(ig(e))}function sg(e,t){return cl(ul(e).map(r=>af(r)&&Jn(r)?ef(r,t):r))}function ef(e,t){if(!e||Ro(e,t))return[];if(!rg(e))return[e];let n=Array.from(e.children);return cl(n.map(r=>ef(r,t)))}function tf(e){let t=Qd(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=Jd(e,o);s&&s!==e&&n.push(s)}return n}function ig(e){let t=tf(e);for(let n of t)n["aria-owned-by"]=e;return t}function nf(e){let t=ye(e),n=Q(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)<=ug(e))return!1;let o=ag(e);return!o||!lg(o)||!fg(e)||o.getAttribute("role")==="dialog"||e.getAttribute("role")==="dialog"?!1:dg(e)}function ag(e){return[e.previousElementSibling,e.nextElementSibling,...Array.from(e.children),...e.parentElement?[e.parentElement.previousElementSibling,e.parentElement.nextElementSibling]:[]].filter(n=>n!==null).find(cg)||null}function cg(e){if(Ro(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 lg(e){let t=ye(e),n=e.getBoundingClientRect();return n.top<=0&&n.left<=0&&n.bottom>=t.innerHeight&&n.right>=t.innerWidth}function ug(e){let t=Q(e),n=ye(e),r=n?.getComputedStyle;if(!r)return 0;let o=Gc(t,"*").filter(s=>s!==e&&!Ro(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 dg(e){return e.querySelectorAll('a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])').length>0}function fg(e){let t=e.parentElement;if(!t)return!1;for(let n of Array.from(t.children))if(n!==e&&!Ro(n)&&n.getAttribute("aria-hidden")!=="true")return!1;return!0}function pg(){try{let t=ft()?.querySelector?.("dialog:modal");return'[aria-modal="true"], dialog:modal'}catch{return'[aria-modal="true"]'}}var rf=pg();function mg(e){return e.getAttribute("aria-disabled")==="true"||e.hasAttribute("disabled")}function ll(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=Q(e),r=new URL(t,n.baseURI);return r.protocol==="javascript:"&&(r.pathname.trim()!==""||r.search.trim()!==""||r.hash.trim()!=="")}catch{return!1}}function of(e){return wd.has(e)}function hg(e){let t=e.parentElement,n=Q(e);if(!(!t||t===n.body||t===n.documentElement))return Kt({targetElement:t,originatedFromParent:!0})}function Hd({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:s,elementContext:i}){let a={nodeCategory:e.nodeType},c=t||mg(e),l=hg(e);if(l&&(a.parent=l),n){let Ae=Zo[n];typeof Ae=="number"?a.semanticRole=Ae:a.semanticRole=n}if(c&&(a.isDisabled=!0),i){let{eventHandlerIndices:Ae,isEditableRegion:Lt}=i,bt=es(Ae);bt.length>0&&(a.eventHandlers=bt),Lt&&(a.isEditable=!0)}let d=bg(e);d&&Object.keys(d).length>0&&(a.ariaProperties=d);let p=yg(e);p&&Object.keys(p).length>0&&(a.ariaStates=p);let v=e.nodeName;v&&v.trim()&&(a.elementName=v);let m=Yd(e);m&&Object.keys(m).length>0&&(a.computedStyles=m),Ro(e)&&(a.isInvisible=!0);let g=gg(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 Ae=a.inputType||a.preservedAttributes?.[gn.type];Ae==="submit"||Ae==="reset"||Ae==="clear"||(T.includes("submit")&&(a.preservedAttributes={...a.preservedAttributes||{},[gn.type]:"submit"}),T.includes("clear")&&(a.preservedAttributes={...a.preservedAttributes||{},[gn.type]:"clear"}),T.includes("reset")&&(a.preservedAttributes={...a.preservedAttributes||{},[gn.type]:"reset"}))}let O=wg({element:e});O&&O.length>0&&(a.labelReferences=O);let N=e.tagName;if(N&&(a.elementTag=N),Tg(e)&&(a.hasFocus=!0),!o){let Ae=dl({element:e,semanticRole:n,parentDisabled:c,excludeLabels:r});Ae&&Ae.length>0&&(a.childElements=Ae)}let A=Mg({element:e});A&&A.length>0&&(a.ownedElements=A);let S=ia(e);S&&(a.resourceLocator=S),(o||ts(e))&&(a.isFrameElement=!0),s&&s.length>0&&(a.frameContent=s);let H=e.type;H&&typeof H=="string"&&H.trim()&&(a.inputType=H);let V=e.placeholder;V&&typeof V=="string"&&V.trim()&&(a.placeholderText=V);let J=e.value;J&&typeof J=="string"&&J.trim()&&(a.elementValue=J);let se=Ig({element:e,parentDisabled:t,semanticRole:n});if(se&&se.length>0&&(a.selectedOptions=se),Br(e,"select,datalist")&&(a.nearestSelectList=!0),il(e))a.elementNamespace=Gs.HTML;else if(vg(e)){a.elementNamespace=Gs.SVG,a.svgStructure=kg(e);let Ae=_g(e);Ae&&Object.keys(Ae).length>0&&(a.preservedAttributes?a.preservedAttributes={...a.preservedAttributes,...Ae}:a.preservedAttributes=Ae)}let pe=r?void 0:xg({element:e});pe&&pe.length>0&&(a.associatedLabels=pe);let Ee=e.scope;Ee&&typeof Ee=="string"&&Ee.trim()&&(a.tableScope=Ee);let be=Rg({element:e});be&&(a.tableCaption=be);let De=Ag({element:e});De&&(a.figureCaption=De);let Re=Cg({element:e});return Re&&(a.fieldsetLegend=Re),Br(e,"table")&&(a.nearestTable=!0),a}function gg(e,t){let n={},r=new Set(Object.values(gn).filter(a=>typeof a=="string")),o=new Set(Object.keys(aa).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||!Dr.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=gn[d],g=s.has(d)?"true":l;n[m]=g}}}if(!n[gn[Xt]]){let a=Bd(e);a&&(n[gn[Xt]]=a)}return n}function bg(e){return sf(e,da,ca)}function yg(e){return sf(e,fa,null)}function sf(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"&&xd.includes(e.tagName.toLowerCase()?.trim())&&(r[s]=e.tagName.substring(1))}return r}function Jn(e){return af(e)&&e.nodeType===Jr.ELEMENT}function ka(e){return e.nodeType===Jr.TEXT}function af(e){let t=typeof e;return t=="object"&&e!=null||t=="function"}function il(e){return Jn(e)&&(!e.namespaceURI||e.namespaceURI===Sd)}function vg(e){return Jn(e)&&e.namespaceURI===Rd}function ts(e){return e.tagName==="IFRAME"}function So(e,t){return"tagName"in e?e.tagName?.toLowerCase()===t:e.elementTag?.toLowerCase()===t}function Br(e,t){if(e.closest)return e.closest(t);for(;!Ta(e,t);){if(e.parentElement===null)return null;e=e.parentElement}return e}function Ta(e,t){return e.matches?.(t)??e.msMatchesSelector?.(t)??e.webkitMatchesSelector(t)}function Tg(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 kg(e){let t={},n=Pr.text,r=Pr.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[Pr.viewBox]=i);let a=e.querySelectorAll("path");a.length>0&&(t[Pr.paths]=a.length,t[Pr.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=Pr[l];t[p]=d}}),Object.keys(t).length>0?t:void 0}function _g(e){let t={};if(!e?.hasAttributes())return t;for(let n of Object.values(Jo).filter(r=>typeof r=="number")){let r=Jo[n];if(r){let o=r;if(Jo.hasOwnProperty(o)&&e.hasAttribute(o)){let s=e.getAttribute(o);s?.trim()&&(t[n]=s)}}}return t}function Eg({frameElement:e,parentDisabled:t,excludeLabels:n}){if(!on.includeFrameContents)return[];let r=null;try{r=e.contentWindow?.document?.body||null}catch{return[]}if(!r)return[];let o=[];for(let s of ul(r))if(!(ti(s)||cf(s))){if(Jn(s)){let i=s,a=Qn(i),c=Rn(i,a),{shouldCreate:l,shouldAnnotate:d}=_a(c);if(l){d&&Zr(i);let p=Kt({targetElement:i,parentDisabled:t,semanticRole:a??void 0,excludeLabels:n,elementContext:c});p&&o.push(p)}else{let p=dl({element:i,semanticRole:a??void 0,parentDisabled:t,excludeLabels:n});o.push(...p)}}else if(ka(s)){let i=Zs(s);i&&o.push(i)}}return o}function ul(e){let t=ye(e);if(md(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||To()?.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 dl({element:e,semanticRole:t,parentDisabled:n,excludeLabels:r}){let o=[];for(let s of ul(e))if(!(ti(s)||cf(s))){if(Jn(s)){let i=s,a=Qn(i),c=Rn(i,a);if(ts(i)){Zr(i);let p=Eg({frameElement:i,parentDisabled:n,excludeLabels:r}),v=Kt({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}=_a(c);if(l){d&&Zr(i);let p=Kt({targetElement:i,parentDisabled:n,semanticRole:a??void 0,excludeLabels:r,elementContext:c});p&&o.push(p)}else{let p=dl({element:i,semanticRole:a??void 0,parentDisabled:n,excludeLabels:r});o.push(...p)}}else if(ka(s)){let i=Zs(s);i&&o.push(i)}}return o}function wg({element:e}){let t=Qd(e.getAttribute("aria-labelledby")),n=new Set;for(let r of t){let o=Jd(e,r);if(!(!o||o===e)&&o){let s=Qn(o),i=Kt({targetElement:o,semanticRole:s,elementContext:Rn(o,s)});n.add(i)}}return Array.from(n)}function Ig({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=>Kt({targetElement:o,parentDisabled:t,semanticRole:"option",elementContext:Rn(o,"option")})):So(e,"select")&&(r=Array.from(e.selectedOptions).map(o=>Kt({targetElement:o,parentDisabled:t,semanticRole:"option",elementContext:Rn(o,"option")})))),r}function xg({element:e}){if(Id.includes(e.tagName)){let t=Q(e),n=Gc(t,"label"),r=new Set;return Array.from(n).filter(o=>o!==e&&Sg(o,e)).map(o=>{let s=Qn(o),i=Kt({targetElement:o,semanticRole:s,excludeLabels:!0,elementContext:Rn(o,s)});r.add(i)}),Array.from(r)}}function Sg(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 Rg({element:e}){if(So(e,"table")){let t=e.querySelector("caption");if(t&&t!==e){let n=Qn(t);return Kt({targetElement:t,semanticRole:n,elementContext:Rn(t,n)})}}}function Ag({element:e}){if(So(e,"figure")){let t=e.querySelector("figcaption");if(t&&t!==e){let n=Qn(t);return Kt({targetElement:t,semanticRole:n,elementContext:Rn(t,n)})}}}function Cg({element:e}){if(So(e,"fieldset")){let t=e.querySelector("legend");if(t&&t!==e){let n=Qn(t);return Kt({targetElement:t,semanticRole:n,elementContext:Rn(t,n)})}}}function Mg({element:e}){let t=new Set,n=tf(e);for(let r of n){let o=Qn(r),s=Kt({targetElement:r,semanticRole:o,elementContext:Rn(r,o)});t.add(s)}return Array.from(t)}function _a(e){let{semanticRole:t,eventHandlerIndices:n,isEditableRegion:r,hasNodeWorthyHandlers:o,isLikelyStructuralContainer:s}=e,i=n.length>0&&n.some(p=>Md.has(p)),c=!!t||!s&&(o||r),l=!!t&&Dr.has(t);return{shouldCreate:c,shouldAnnotate:c&&(l||r||i)}}function cf(e){if(!Jn(e))return!1;let t=e,n=t.tagName;return la.has(n)?!0:n===wo||n===Io?Ng(t):!1}function Ng(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 fl(e,t={}){return ud(t),Fd(),Pd(),Ud(e,{includeShadow:!0,includeIframes:on.clearIframes}),xo.initialize(on.semanticIdStart),{rootNodes:lf(e),semanticNodes:gr}}function lf(e){let t=[];try{let n=Q(e),o=Array.from(n.querySelectorAll(rf)).filter(s=>!Ro(s)&&nf(s));if(o.length===0)t=ns({targetElement:e});else if(o.length===1){let s=o[0];s.contains(e)?t=ns({targetElement:e}):e.contains(s)?t=ns({targetElement:s}):t=ns({targetElement:e})}else t=ns({targetElement:e})}catch(n){throw console.error("Error constructing semantic tree",n),n}return t}function ns({targetElement:e,parentNode:t}){if(ti(e)||uf(e))return[];let n=Qn(e),r=Rn(e,n);if(ts(e))return[Dg({frameElement:e,role:n,parentNode:t,elementContext:r})];let o=0,{shouldCreate:s,shouldAnnotate:i}=_a(r);s&&(i&&Zr(e),o=Kt({targetElement:e,parentDisabled:t?.isDisabled,semanticRole:n,elementContext:r}));let a=gr[o],c=Lg(e,n,o?a:t);return o&&c.length>0&&(a.semanticChildren=c),o?[o]:c}function Lg(e,t,n){let r=[],o=Zd(e,t);for(let s of o)if(!(ti(s)||uf(s))){if(Jn(s)){let i=ns({targetElement:s,parentNode:n});r.push(...i)}else if(ka(s)&&Ug(s,n)){let i=Zs(s);i&&r.push(i)}}return r}function Dg({frameElement:e,role:t,parentNode:n,elementContext:r}){Zr(e);let o=Og(e);return Kt({targetElement:e,parentDisabled:n?.isDisabled,semanticRole:t,isFrameNode:!0,frameContentNodes:o,elementContext:r})}function Og(e){if(!on.includeFrameContents)return[];let t=Pg(e);return t.kind==="content"?lf(t.rootElement):Bg(e,t.reason)}function Pg(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 Bg(e,t){let n=xo.generateId(),r=xo.generateId(),o=e.getAttribute("title")?.trim()||e.getAttribute("name")?.trim()||e.id?.trim()||"Embedded frame",s=ia(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 gr[n]={nodeCategory:Jr.ELEMENT,semanticRole:"embedded_document_unavailable",computedName:o,syntheticKind:"embedded_container",frameContent:[r],...s?{resourceLocator:s}:{}},gr[r]={nodeCategory:Jr.TEXT,parent:n,textContent:i,preventTextMerge:!0,syntheticKind:"embedded_unavailable_text"},[n]}function Ug(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"?Xs[t.semanticRole]:t.semanticRole;if(of(r))return!1}return!0}function uf(e){if(!Jn(e))return!1;let t=e,n=t.tagName;return la.has(n)?!0:n===wo||n===Io?Fg(t):!1}function Fg(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 wa(e){let t=e.activeElement;for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}function Hg(e){let t=e.getBoundingClientRect();return{x:t.left+t.width/2,y:t.top+t.height/2}}function os(e,t,n){let r=Q(e,t),o=re(r,n);try{e.focus?.({preventScroll:!0})}catch{}if(wa(r)===e)return!0;try{let{x:s,y:i}=Hg(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||Un(e,o)||Yn(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 wa(r)===e}function ni(e,t){let n=ye(e),r=Yn(e,n)?n.HTMLTextAreaElement.prototype:n.HTMLInputElement.prototype,o=Object.getOwnPropertyDescriptor(r,"value");o?.set?o.set.call(e,t):e.value=t}function Co(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 qg(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 Ao(e){if(!e)return!1;let t=ye(e);if(Yn(e,t))return!e.disabled&&!e.readOnly;if(Un(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 pl(e){let t=ye(e);if(!e||!wt(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 Wg(e,t){let n=e.getRootNode();return Sn(n)?n:Q(e)??t}function $g(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);wt(o,s)&&n.push(o)}return n}function mf(e,t){if(!e)return{kind:"none",el:null,via:"no-root"};if(Ao(e))return{kind:"input",el:e,via:"self-input"};if(pl(e))return{kind:"contenteditable",el:e,via:"self-contenteditable"};let n=Q(e)??t,r=re(n),o=Wg(e,n);if(fd(e,r)){let c=e.control;if(Ao(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(Ao(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 $g(o,s)){if(Ao(c))return{kind:"input",el:c,via:"aria-controls/owns"};if(pl(c))return{kind:"contenteditable",el:c,via:"aria-controls/owns"};let l=c.querySelector?.("input,textarea");if(Ao(l))return{kind:"input",el:l,via:"aria-controls->desc"}}let i=e.querySelector?.("input,textarea");if(Ao(i))return{kind:"input",el:i,via:"descendant"};let a=e.shadowRoot||null;if(a){let c=a.querySelector?.("input,textarea");if(Ao(c))return{kind:"input",el:c,via:"open-shadow-input"};let l=a.querySelector?.('[contenteditable="true"],[contenteditable=""],[role="textbox"]');if(pl(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 rs(e,t,n,r=!1){let o=Q(e,t),i=re(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 Mo(e){return(e.textContent??"").replace(/\u00A0/g," ").trim()}var Ea=e=>String(e??"").replace(/\s+/g," ").trim(),hf=new MessageChannel,gf=[];hf.port1.onmessage=()=>{let e=gf.shift();e&&e()};function df(){return new Promise(e=>{gf.push(e),hf.port2.postMessage(0)})}async function ff(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 df():await new Promise(s=>{try{t.requestAnimationFrame(()=>s())}catch{df().then(s)}})}function Vg(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 pf(e,t,n,r){let o=Q(e,t),i=re(o,n).KeyboardEvent||KeyboardEvent,a=String(r??"");for(let c of a){let{code:l,which:d}=Vg(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 bf(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=Q(e,t),c=re(a,n),l=os(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;ni(e,s),Co(e,s,"insertReplacementText"),m&&pf(e,a,c,s),await ff(a,c,d);let g=String(e.value??""),T=Ea(i),O=Ea(g),N=Ea(s),A=T===N,S=O===N,H=g!==i,V=s.length>0&&!A&&g===i,J=1;if(!A&&!S&&!H){J=2;try{e.focus?.({preventScroll:!0}),e.select?.()}catch{}let be=!1;try{a.execCommand?.("selectAll",!1,void 0),be=!!a.execCommand?.("insertText",!1,s)}catch{be=!1}if(!be)try{ni(e,s)}catch{}try{Co(e,s,"insertReplacementText")}catch{}m&&pf(e,a,c,s),await ff(a,c,d),g=String(e.value??"")}let he=Ea(g)===N,pe=g!==i;V=s.length>0&&!A&&g===i;let Ee=A||he||pe;return{success:Ee,method:"type-native-setter",details:`focus=${l};attempts=${J};settleFrames=${d};beforeLen=${i.length};afterLen=${g.length};changed=${pe};alreadyCorrect=${A};nowCorrect=${he};reverted=${V};keyFallback=${m}`,allowFallback:Ee?void 0:!0}}function zg(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 yf(e,t,n,r){let o=Q(e,n),s=re(o,r),i=s.InputEvent||InputEvent,a=s.Event||Event,c=String(t??""),l=Mo(e),d=os(e,o,s),p=rs(e,o,s,!0),v=zg(e,c,"insertText"),m=!1,g="execCommand",T=!1,O=()=>{T=!0};try{e.addEventListener("input",O,{capture:!0})}catch{}if(v.ok&&!v.defaultPrevented)try{m=!!o.execCommand?.("insertText",!1,c)}catch{}if(!m)try{let S=s.getSelection?.(),H=S&&S.rangeCount?S.getRangeAt(0):null;if(!H||!e.contains(H.commonAncestorContainer)){rs(e,o,s,!0);let V=s.getSelection?.();H=V&&V.rangeCount?V.getRangeAt(0):null}H&&(H.insertNode(o.createTextNode(c)),H.collapse(!1),S?.removeAllRanges(),S?.addRange(H),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",O,{capture:!0})}catch{}let N=Mo(e);return{success:N!==l||!!c&&N.includes(c),method:`type-contenteditable-${g}`,details:`focus=${d};selectedWithin=${p};inserted=${m}`}}function vf(e){let{canceled:t}=qg(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 Tf(e,t,n){if(e.disabled||e.readOnly)return{success:!1,method:"clear-native-setter",details:"disabled_or_readonly",allowFallback:!0};let r=Q(e,t),o=re(r,n),s=String(e.value??""),i=os(e,r,o);ni(e,""),Co(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 kf(e,t,n){let r=Q(e,t),o=re(r,n),s=Mo(e),i=os(e,r,o),a=rs(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))&&rs(e,r,o,!1);let T=o.getSelection?.(),O=T&&T.rangeCount?T.getRangeAt(0):null;O&&(O.deleteContents(),O.collapse(!1),T?.removeAllRanges(),T?.addRange(O),c=!0,l="range")}catch{}if(!c)try{e.textContent="",c=!0,l="textContent"}catch{}Co(e,"","deleteByCut");let d=Mo(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 _f(e,t){if(e===t||e.contains(t))return!0;let n=t;for(;n;){let r=n.getRootNode?.();if(Sn(r)){let o=r.host;if(o===e||e.contains(o))return!0;n=o;continue}n=n.parentNode||null}return!1}var Ia;(function(e){e.FLASH_LITE="Gemini Flash Lite",e.FLASH="Gemini Flash",e.PRO="Gemini Pro"})(Ia||(Ia={}));var Ef;(function(e){e[e.NativeHostConnected=0]="NativeHostConnected",e[e.NativeHostDisconnected=1]="NativeHostDisconnected"})(Ef||(Ef={}));var jg=["image/png","image/jpeg","image/webp"],Gg=["application/pdf","text/plain"],qE=[...jg,...Gg];var Rt;(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"})(Rt||(Rt={}));var It;(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"})(It||(It={}));var WE={[Rt.ACT]:It.AGENTIC_SEEK,[Rt.CRAWL]:It.CRAWL_PAGES,[Rt.EXTRACT]:It.EXTRACT_PAGE,[Rt.SHEETS_WORKFLOW]:It.SHEETS_WORKFLOW,[Rt.INFER_SHEET_DATA]:It.INFER_SHEET_DATA,[Rt.PDF_FILLER]:It.PDF_FILLER,[Rt.CUSTOM_TOOL_GENERATOR]:It.CUSTOM_TOOL_GENERATOR,[Rt.WEBPAGE_GENERATOR]:It.WEBPAGE_GENERATOR,[Rt.GOOGLE_DOC_GENERATOR]:It.GOOGLE_DOC_GENERATOR,[Rt.GOOGLE_SLIDES_GENERATOR]:It.GOOGLE_SLIDES_GENERATOR,[Rt.PROCESS_TEXT]:It.PROCESS_TEXT,[Rt.CREATE_SHEET_FROM_DATA]:It.CREATE_SHEET_FROM_DATA,[Rt.ROVER_EXTERNAL_READ_CONTEXT]:It.ROVER_EXTERNAL_READ_CONTEXT,[Rt.ROVER_EXTERNAL_ACT_CONTEXT]:It.ROVER_EXTERNAL_ACT_CONTEXT,[Rt.EXECUTE_MULTIPLE_TOOLS]:It.EXECUTE_MULTIPLE_TOOLS,[Rt.CONFIGURE_API_KEY]:It.CONFIGURE_API_KEY,[Rt.QUERY_RTRVR_AI_DOCUMENTATION]:It.QUERY_RTRVR_AI_DOCUMENTATION};var ml=200;var Xg=30,Kg=320,Yg=0,Qg=50,Jg=1,$E=Ia.FLASH;var VE=It.PLANNER;var hl="application/pdf",gl="application/gsheet";var zE=20*1024*1024;var ss={maxParallelTabs:4,pageLoadDelay:2e3,disableAutoScroll:!1,makeNewTabsActive:!1,writeRowProcessingTime:!1,totalBudgetMs:25e3,pageDataTimeoutMs:22e3,adaptiveSettleDebounceMs:Xg,adaptiveSettleMaxWaitMs:Kg,adaptiveSettleRetries:Yg,sparseTreeRetryDelayMs:Qg,sparseTreeRetryMaxAttempts:Jg,pdfTextSelectionTimeoutMs:12e3,onlyTextContent:!1};var Zg=1,eb=9,tb=11,yl="application/gdoc",is="text/html",xa="text/plain";function nb(e){return!!e&&typeof e=="object"&&e.nodeType===eb}function wf(e){return!!e&&typeof e=="object"&&e.nodeType===Zg}function rb(e){return!!e&&typeof e=="object"&&e.nodeType===tb&&typeof e.host=="object"&&typeof e.mode=="string"}function If(e){return wf(e)&&String(e.tagName).toUpperCase()==="IFRAME"}function bl(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 ob(e){try{let t=e.shadowRoot;return t||globalThis?.chrome?.dom?.openOrClosedShadowRoot?.(e)||null}catch{return null}}function sb(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(nb(c)){let p=c.documentElement||c.body;p&&i.push(p);continue}if(rb(c)){let p=c.children;if(p&&p.length)for(let v=p.length-1;v>=0;v--)i.push(p[v]);continue}if(!wf(c))continue;let l=c;if(s&&l.ownerDocument!==s)continue;let d=l.getAttribute?.(Xt);if(d&&Ys(d)===t)return l;if(r)try{let p=ob(l);p&&i.push(p)}catch{}if(o&&If(l))try{let p=Ws(l);p&&i.push(p)}catch{}for(let p=l.lastElementChild;p;p=p.previousElementSibling)i.push(p)}return null}function Zn(e,t,n={}){let r=bl(t);if(!r)return null;let o=Js(r);return o&&(!n.requireOwnerDocument||o.ownerDocument===n.requireOwnerDocument)?o:sb(e,r,{requireOwnerDocument:n.requireOwnerDocument,traverseShadow:n.traverseShadow,traverseIframes:n.traverseIframes})}function vl(e=document){return e.querySelector('embed[type="application/pdf"], embed[type="application/x-google-chrome-pdf"]')}function xf(e){if(e==null)return[];if(Array.isArray(e)){let t=[];for(let n of e){let r=bl(n);r&&t.push(r)}return t}if(typeof e=="number"||typeof e=="bigint"){let t=bl(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 xf(t)}return[]}function as(e,t){let n=xf(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=Zn(o,a,{requireOwnerDocument:c?void 0:o,traverseShadow:!0,traverseIframes:c});if(!l||!If(l))return{doc:o,win:o.defaultView||r,iframePath:n,resolvedPath:s,unresolvedPath:n.slice(i)};let d=null;try{d=Ws(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 Sf(e){return e==="application/pdf"||e==="application/x-pdf"||e==="application/x-google-chrome-pdf"}function ib(e){let t={...ss,...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 ab=["disableAutoScroll","onlyTextContent","totalBudgetMs","pageDataTimeoutMs","pdfTextSelectionTimeoutMs","adaptiveSettleDebounceMs","adaptiveSettleMaxWaitMs","adaptiveSettleRetries","sparseTreeRetryDelayMs","sparseTreeRetryMaxAttempts"];function Sa(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=ib(n),s={};for(let i of ab)n[i]!==void 0&&o[i]!==void 0&&(s[i]=o[i]);return Object.keys(s).length?s:void 0}function cb(){return Date.now()}function xt(e){return!e||!Number.isFinite(e)?Number.POSITIVE_INFINITY:Math.max(0,e-cb())}async function Rf(e,t,n){if(!Number.isFinite(e)||e<=0)return;let r=xt(n);r<=0||r<e+40||await At(e,t)}async function cs(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 At(r,n),{ok:!1,reason:"timeout"}))()]):{ok:!1,reason:"timeout"}}var At=(()=>{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 lb=3e4;function Af(e){return(String(e??"").replace(/\\/g,"/").split("/").pop()||"upload").replace(/[\u0000-\u001f\u007f]/g,"").trim()||"upload"}var Tl=class extends Error{constructor(n,r){super(n);D(this,"url");D(this,"status");D(this,"statusText");D(this,"bodySnippet");this.name="FetchFileError",this.url=r.url,this.status=r.status,this.statusText=r.statusText,this.bodySnippet=r.bodySnippet}};function ub(e){return e&&e.split(";")[0].trim()||"application/octet-stream"}function db(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 kl(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 Cf(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 fb(e,t={},n,r=fetch){let o=new AbortController,s=lb,i=!1,a=()=>{};if(n){let l=!1;a=()=>{l=!0},(async()=>{try{if(await At(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 Tl(`Fetch failed (${l.status})`,{url:e,status:l.status,statusText:l.statusText,bodySnippet:m.slice(0,256)})}let d=await l.arrayBuffer(),p=ub(l.headers.get("content-type")),v=db(l.headers.get("content-disposition"))||kl(e);return{bytes:d,mimeType:p,fileName:v}}finally{a()}}async function Mf(e,t,n){return await fb(t,{referrer:n??void 0,referrerPolicy:"strict-origin-when-cross-origin"})}var pt={plannerHistory:16,prevSteps:8,uiMessages:40,timelineEvents:60,localPersistBytes:131072,snapshotBytes:262144};var Nf={activation:"on_demand",idleCloseMs:3e4,fallbackPollMinMs:2e3,fallbackPollMaxMs:15e3,maxInflightCommands:1};var mt;(function(e){e.UP="UP",e.DOWN="DOWN",e.LEFT="LEFT",e.RIGHT="RIGHT",e.TOP="TOP",e.BOTTOM="BOTTOM"})(mt||(mt={}));var $t;(function(e){e.START="START",e.CENTER="CENTER",e.END="END",e.NEAREST="NEAREST"})($t||($t={}));function Df(e){if(!e)return $t.CENTER;let t=typeof e=="string"?e.toUpperCase():String(e).toUpperCase();return $t&&t in $t?$t[t]:$t.CENTER}function _l(e){return globalThis.CSS&&typeof globalThis.CSS.escape=="function"?globalThis.CSS.escape(e):e.replace(/([ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g,"\\$1")}function ls(e,t){if(!e)return"";let n=Q(e,t);if(e===n.documentElement)return"html";if(e===n.body)return"body";if(e.id)return`#${_l(e.id)}`;let r=[],o=e;for(;o&&o!==n.body&&o!==n.documentElement;){let s=o.tagName.toLowerCase();if(o.id){s+=`#${_l(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(_l);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 No(e){return e.scrollingElement||e.documentElement||e.body}function Ra(e,t,n,r,o){let s=Q(e,t),i=re(s,n),a=No(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 mt.DOWN:{l.scrollTop+=v;break}case mt.UP:{l.scrollTop=Math.max(0,l.scrollTop-v);break}case mt.LEFT:return l.scrollLeft=Math.max(0,l.scrollLeft-(o??p*.8)),{success:!0,scrollLeft:l.scrollLeft};case mt.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 pb(e,t,n){let r=Q(e,t),o=re(r,n),s=No(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 Lf(e,t,n){let r=Q(e,t),o=re(r,n),s=No(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 El(e,t,n,r){let o=Q(e,t),s=re(o,n),i=No(o),a=pb(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,O;switch(r){case $t.START:O=T-m;break;case $t.END:O=T+d.height-v+m;break;case $t.NEAREST:{if(d.top>=p.top&&d.bottom<=p.bottom)return{success:!0,scrollTop:l.scrollTop,isAtTop:l.scrollTop<=5,isAtBottom:Lf(l,o,s)};d.top<p.top?O=T-m:O=T+d.height-v+m;break}case $t.CENTER:default:O=T-v/2+d.height/2;break}let N=l.scrollHeight-v;return l.scrollTop=Math.max(0,Math.min(O,N)),{success:!0,scrollTop:l.scrollTop,isAtTop:l.scrollTop<=5,isAtBottom:Lf(l,o,s)}}function Of(e){let t=Number(e);if(!Number.isFinite(t))return null;let n=Math.trunc(t);return n>0?n:null}function Pf(e){let t=[];for(let n of Yi){let r=e?.[n];if(r==null)continue;if(Array.isArray(r)){for(let s of r){let i=Of(s);i!=null&&t.push(i)}continue}let o=Of(r);o!=null&&t.push(o)}return Array.from(new Set(t))}function mb(e){return Pf(e).length>0}function hb(e){let t=Pf(e);return t.length?t[0]:null}var gb=new Set([F.click_element,F.type_into_element,F.type_and_enter,F.hover_element,F.right_click_element,F.double_click_element,F.press_key,F.scroll_page,F.scroll_to_element,F.mouse_wheel,F.drag_element,F.drag_and_drop,F.swipe_element,F.long_press_element,F.adjust_slider,F.select_dropdown_value,F.clear_element,F.focus_element,F.check_field_validity,F.select_text,F.copy_text,F.paste_text,F.pinch_zoom,F.upload_file,F.dispatch_pointer_path]);(()=>{let e="__RTRVR_ACTION_EXECUTOR__";if(window[e])return;window[e]=!0;try{document.documentElement?.setAttribute(Qc,"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=ad[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 U=b.bytes;if(!(U instanceof ArrayBuffer)){x.reject(new Error("Invalid bytes payload (expected ArrayBuffer)"));return}if(typeof x.expectedByteLength=="number"&&U.byteLength!==x.expectedByteLength){x.reject(new Error(`Byte length mismatch: got=${U.byteLength}, expected=${x.expectedByteLength}`));return}x.resolve(U)})}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(B=>{if(B instanceof ArrayBuffer)return B;if(B&&B.buffer instanceof ArrayBuffer)return B.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)),U=oa(f)||document;return new Promise((B,q)=>{let $=!1,j=!1,ne=()=>{j=!0};(async()=>{await At(x,U),!(j||$)&&(b.pending.delete(k),$=!0,q(new Error("Timed out waiting for upload bytes")))})().catch(()=>{}),b.pending.set(k,{cancelTimeout:ne,expectedByteLength:E,resolve:ie=>{$||($=!0,ne(),B(ie))},reject:ie=>{$||($=!0,ne(),q(ie))}}),f.postMessage({type:a,requestId:k,token:w,byteLength:E},"*")})}function g(f){if(f)return{frameworks:f.frameworks?f.frameworks.map(w=>id[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 mr()?.top?.document||document}catch{return document}})(),b=w.args,k=mb(b),x,U,B=[],q=[],$=[];try{({doc:x,win:U,iframePath:B,resolvedPath:q,unresolvedPath:$}=as(y,b.iframe_id))}catch{if(b.iframe_id!=null){let ae=`Cannot access iframe ${b.iframe_id} (cross-origin or not found)`;return[{name:w.name,args:w.args,response:{success:!1,error:ae,allowFallback:!1,output:{success:!1,error:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:ae,retryable:!1},iframe_context:{requested_iframe_id:b.iframe_id}}}}]}x=document,U=re(x)}if(b.iframe_id!=null&&$.length>0&&!k){let de=`iframe_id unresolved: remaining=${$.join(">")||"(none)"} (cross-origin, not-ready, or not found)`;return[{name:w.name,args:w.args,response:{success:!1,error:de,allowFallback:!1,details:`requested=${B.join(">")||"(none)"} resolved=${q.join(">")||"(none)"}`,output:{success:!1,error:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:de,retryable:!1},iframe_context:{requested_iframe_id:b.iframe_id,requested_path:B,resolved_path:q,unresolved_path:$}}}}]}let j=w.name,ne=hb(b),ie=ne?Zn(x,ne):null,Ie=ie?.ownerDocument??null,ue;if(!gb.has(j))ue={success:!1,error:`Tool not promotable to main: ${j}`,allowFallback:!0};else{let ae=Ie??x,de=re(ae,U);ue=await N(j,ie,b,E,ae,de,_)}return[{name:w.name,args:w.args,response:ue}]}async function O(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||oa(f)||document,x=Math.max(250,Math.min(Number(E?.timeoutMs??3500),8e3)),U=await cs(Promise.resolve().then(()=>b(w)),x,k);if(!U.ok)throw new Error("scroll detector timeout");return U.value}catch(_){throw new Error(_?.message||"main-world scroll detector not available")}}async function N(f,w,E,_,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}),U=f===F.press_key||f===F.scroll_page||f===F.drag_and_drop||f===F.pinch_zoom;if(!w&&!U)return x({success:!1,method:"missing-element-race",details:"Target element missing",allowFallback:!0});let B=new Set([F.type_into_element,F.type_and_enter,F.clear_element,F.focus_element,F.select_text,F.check_field_validity]),q=w,$=Q(q,y);if(q&&B.has(f)){let j=mf(q,$);(j.kind==="input"||j.kind==="contenteditable")&&(q=j.el)}try{switch(f){case F.click_element:return x(V(w,y,b,_));case F.double_click_element:return x(dr(w,y,b));case F.right_click_element:return x(_n(w,y,b));case F.hover_element:return x(await dt(w,y,b,_,E.duration));case F.type_into_element:return x(await Vn(q,y,b,E.text,_));case F.type_and_enter:return x(await Nn(q,y,b,E.text,_));case F.clear_element:return x(await un(q,y,b,_));case F.focus_element:return x(yt(q,y,b));case F.select_dropdown_value:return x(Je(w,y,b,E.value,_));case F.adjust_slider:return x(en(w,y,b,_?.value??E.value,_));case F.check_field_validity:return x(Sr(q,y,b));case F.select_text:return x(Rr(q,y,b,E.start_offset,E.end_offset));case F.scroll_page:return x(await bo(w,y,b,E));case F.scroll_to_element:return x(await Ze(w,y,b,E));case F.mouse_wheel:return x(zn(w,y,b,E.delta_x,E.delta_y));case F.drag_element:return x(await vt(w,y,b,E,_));case F.drag_and_drop:return x(await dn(E,w,y,b));case F.swipe_element:return x(await Ln(w,y,b,E));case F.long_press_element:return x(await fn(w,y,b,E.duration));case F.pinch_zoom:return x(await Ot(w,y,b,E));case F.press_key:return x(ot(E.key,E.modifiers,w,y,b));case F.copy_text:return x(await Ar(w,y,b));case F.paste_text:return x(await lr(w,y,b,_));case F.upload_file:return x(await Gn(E,y,b,k,w,_));case F.dispatch_pointer_path:return x(await ur(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 A(f){let w=new Map;if(!f)return w;let E=f.trim();if(!E)return w;let _=_o(E);if(_){for(let{id:y,mask:b}of _.entries){let k=Lr[y];if(!k)continue;let x=new Set(Ji(b)),U=w.get(k);if(U)for(let B of x)U.add(B);else w.set(k,x)}return w}return w}function S(f,...w){return f?w.some(E=>f.has(E)):!1}function H(f,w){let E=A(w?.listenersRaw),_=new Set;for(let[,B]of E)for(let q of B)(q==="react"||q==="vue"||q==="angular"||q==="svelte"||q==="jquery")&&_.add(q);let y=new Set;for(let[B,q]of E)if(["click","input","change","keydown","keyup","pointerdown","pointerup","mousedown","mouseup","submit","dragstart","drop","wheel","scroll"].includes(B))for(let $ of q)y.add($);let b=_.size>0||[...y].some(B=>["react","vue","angular","svelte","jquery"].includes(B)),k=S(E.get("click"),"delegated"),x=S(E.get("input"),"delegated")||S(E.get("change"),"delegated")||S(E.get("keydown"),"delegated"),U=w?.role||Ks(f)||f.getAttribute("role");return{sourcesByType:E,fws:_,isFrameworkElement:b,delegatedClick:k,delegatedInput:x,role:U}}function V(f,w,E,_){let y=H(f,_),b=Q(f,w),k=re(b,E);st(f,b,k),_?.pattern==="hover-activate"&&dt(f,b,k,_,120);let x=y.fws.has("react")||S(y.sourcesByType.get("click"),"react"),U=y.fws.has("vue")||S(y.sourcesByType.get("click"),"vue"),B=y.fws.has("angular")||S(y.sourcesByType.get("click"),"angular"),q=y.fws.has("svelte")||S(y.sourcesByType.get("click"),"svelte"),$=y.fws.has("jquery")||S(y.sourcesByType.get("click"),"jquery");return tn(()=>J(f,b,k),()=>se(f,b,k),()=>x?pe(f,b,k):null,()=>U?Ee(f,b,k):null,()=>B?be(f,b,k):null,()=>q?De(f,b,k):null,()=>$?Re(f,b,k):null)}function J(f,w,E){let _=Q(f,w),y=re(_,E),b=y.PointerEvent||PointerEvent,k=y.MouseEvent||MouseEvent,{x,y:U}=he(f,_,y),B={bubbles:!0,cancelable:!0,composed:!0,view:y,clientX:x,clientY:U,button:0,buttons:1};return f.focus?.({preventScroll:!0}),[new b("pointerover",B),new b("pointerenter",{...B,bubbles:!1}),new k("mouseover",B),new k("mouseenter",{...B,bubbles:!1}),new b("pointerdown",B),new k("mousedown",B),new b("pointerup",{...B,buttons:0}),new k("mouseup",{...B,buttons:0}),new k("click",{...B,buttons:0})].forEach($=>f.dispatchEvent($)),{success:!0,method:"pointer-mouse-click"}}function se(f,w,E){let _=Q(f,w),y=re(_,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 he(f,w,E){let _=Q(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 U=b[x],B=_.elementFromPoint(U.x,U.y);if(x===0&&(k=B),B&&_f(f,B))return{...U,hit:B,ok:!0}}return{...b[0],hit:k,ok:!1}}function pe(f,w,E){let _=Q(f,w),y=re(_,E);try{let b=Xn(f);if(!b)return{success:!1,method:"react-no-fiber"};let k=wn(b),x=k.onClick||k.onClickCapture;return x?(x(pn("click",f,_,y)),{success:!0,method:"react-fiber-onClick"}):{success:!1,method:"react-no-onClick"}}catch{return{success:!1,method:"react-fiber-onClick"}}}function Ee(f,w,E){let _=Q(f,w),b=re(_,E).MouseEvent||MouseEvent;try{let k=et(f);if(!k)return{success:!1,method:"vue-none"};let x=vo(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 be(f,w,E){let _=Q(f,w),y=re(_,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 De(f,w,E){let _=Q(f,w),b=re(_,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 Re(f,w,E){let _=Q(f,w),y=re(_,E);try{return y.jQuery?.(f)?.trigger?.("click"),{success:!0,method:"jquery-trigger"}}catch{return{success:!1,method:"jquery-trigger"}}}async function dt(f,w,E,_,y=500){let b=Math.min(Math.max(0,Number(y)||500),3e4),k=Q(f,w),x=re(k,E),U=H(f,_);st(f,k,x);let B=x.PointerEvent||PointerEvent,q=x.MouseEvent||MouseEvent,$=f.getBoundingClientRect(),j=$.left+$.width/2,ne=$.top+$.height/2;if(U.fws.has("react")){let ue=Xn(f),ae=ue?wn(ue):{};ae.onMouseEnter?.(pn("mouseenter",f,k,x)),ae.onPointerEnter?.(pn("pointerenter",f,k,x))}else if(U.fws.has("vue")){let ue=et(f),ae=ue?vo(ue):{};ae.mouseenter?.(new q("mouseenter",{bubbles:!0})),ae.mouseover?.(new q("mouseover",{bubbles:!0}))}let ie={bubbles:!0,cancelable:!0,composed:!0,view:x,clientX:j,clientY:ne};return[new B("pointerover",ie),new B("pointerenter",{...ie,bubbles:!1}),new q("mouseover",ie),new q("mouseenter",{...ie,bubbles:!1})].forEach(ue=>f.dispatchEvent(ue)),await At(b,k),{success:!0,method:"hover-seq"}}async function Ae(f,w,E=1){await Promise.resolve();for(let _=0;_<E;_++)f.hidden?await nn():await new Promise(y=>{try{w.requestAnimationFrame(()=>y())}catch{nn().then(y)}})}let Lt=f=>String(f??"").replace(/\s+/g," ").trim();function bt(f){try{if("value"in f)return String(f.value??"")}catch{}return""}function ct(f){try{return typeof Mo=="function"?Mo(f):Lt(f.textContent)}catch{return""}}function Dt(f,w){if(!(w.isFrameworkElement||w.delegatedInput))return!1;let E=String(f??"").length;return E>0&&E<=140}async function Vn(f,w,E,_,y){let b=H(f,y),k=Q(f,w),x=re(k,E);if(st(f,k,x),Un(f,x)||Yn(f,x)){let B=Dt(String(_??""),b),q=await bf(f,k,x,_,{settleFrames:k.hidden?1:2,useKeyFallback:B,keyFallbackMaxLen:140});return{success:q.success,method:q.method,details:q.details,allowFallback:!q.success}}if(f.isContentEditable===!0||b.role==="textbox"&&!("value"in f)){let B=ct(f),q=yf(f,_,k,x);await Ae(k,x,k.hidden?1:2);let $=ct(f),j=!1;if(String(_??"").length>0&&$===B){j=!0;try{os(f,k,x),rs(f,k,x,!0);try{k.execCommand?.("insertText",!1,String(_??""))}catch{}Co(f,String(_??""),"insertText")}catch{}await Ae(k,x,k.hidden?1:2)}let ne=ct(f),ie=ne!==B||!!String(_??"")&&ne.includes(String(_??""));return{success:ie,method:q.method,details:`${q.details};beforeLen=${B.length};afterLen=${ne.length};reverted=${$===B};fallback=${j}`,allowFallback:ie?void 0:!0}}return{success:!1,method:"type",details:"target not editable",allowFallback:!0}}async function Nn(f,w,E,_,y){let b=Q(f,w),k=re(b,E),x=await Vn(f,b,k,_,y);if(!x.success)return x;let U=vf(f);return{success:!0,method:"type+enter",details:`${x.details};enter=${U.method}`}}async function un(f,w,E,_){let y=Q(f,w),b=re(y,E),k=b.Event||Event;if(st(f,y,b),Un(f,b)||Yn(f,b)){let U=bt(f),B=Tf(f,y,b);if(await Ae(y,b,y.hidden?1:2),bt(f)===U&&U.length>0){try{ni(f,""),Co(f,"","deleteByCut")}catch{}await Ae(y,b,y.hidden?1:2)}let j=bt(f),ne=j.length===0||j!==U;return{success:B.success,method:B.method,details:B.details,allowFallback:!B.success}}if(f.isContentEditable===!0||H(f,_).role==="textbox"&&!("value"in f)){let U=kf(f,y,b);return await Ae(y,b,y.hidden?1:2),{success:U.success,method:U.method,details:U.details,allowFallback:!U.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 yt(f,w,E){try{let _=Q(f,w),y=re(_,E),b=y.FocusEvent||FocusEvent;return st(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 Je(f,w,E,_,y){try{let b=Q(f,w),k=re(b,E),x=k.Event||Event;if(!pd(f,k))return{success:!1,method:"select",details:"target not select",allowFallback:!0};st(f,b,k),f.focus?.({preventScroll:!0});let U=Array.from(f.options).find(j=>j.value===_||j.text.trim()===_.trim());if(!U)return{success:!1,method:"select",details:`Option not found: ${_}`,allowFallback:!0};U.selected=!0;let B=Object.getPrototypeOf(f),q=Object.getOwnPropertyDescriptor(B,"value");if(q?.set?q.set.call(f,U.value):f.value=U.value,f.dispatchEvent(new x("input",{bubbles:!0,composed:!0})),f.dispatchEvent(new x("change",{bubbles:!0,composed:!0})),H(f,y).fws.has("react")){let j=Xn(f);if(j){let ne=wn(j);if(ne.onChange){let ie=pn("change",f,b,k);ie.target.value=U.value,ne.onChange(ie)}}}return{success:!0,method:"select"}}catch(b){return{success:!1,method:"select",details:b.message,allowFallback:!0}}}function en(f,w,E,_,y){try{let b=Q(f,w),k=re(b,E),x=k.Event||Event;if(!Un(f,k))return{success:!1,method:"slider",details:"target not input",allowFallback:!0};st(f,b,k),f.focus?.({preventScroll:!0});let U=Object.getPrototypeOf(f),B=Object.getOwnPropertyDescriptor(U,"value");if(B?.set?B.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})),H(f,y).fws.has("react")){let $=Xn(f);if($){let j=wn($);if(j.onChange){let ne=pn("change",f,b,k);ne.target.value=String(_),j.onChange(ne)}}}return{success:!0,method:"slider"}}catch(b){return{success:!1,method:"slider",details:b.message,allowFallback:!0}}}function Sr(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 Rr(f,w,E,_,y){try{let b=Q(f,w),k=re(b,E);if("setSelectionRange"in f){let B=f;B.focus?.();let q=B.value?.length??0;return B.setSelectionRange(_??0,y??q),{success:!0,method:"select-range"}}let x=k.getSelection();if(!x)return{success:!1,method:"select-range",allowFallback:!0};let U=b.createRange();return U.selectNodeContents(f),x.removeAllRanges(),x.addRange(U),{success:!0,method:"select-range-node"}}catch(b){return{success:!1,method:"select-range",details:b.message,allowFallback:!0}}}function kn(f,w,E,_,y){let b=No((f&&Q(f))??w),k=f||b,x=Q(k,w),U=re(x,E),B=k===x.documentElement||k===x.body||k===b;if(_===mt.TOP||_===mt.BOTTOM){let q=k.scrollHeight,$=B?U.innerHeight:k.clientHeight,j=Math.max(0,q-$);return k.scrollTop=_===mt.TOP?0:j,{success:!0,scrollTop:k.scrollTop}}return Ra(k,x,U,_,y)}async function bo(f,w,E,_){let y=_.direction,b=_.amount,k=Q(f,w),x=re(k,E),U=!k.hidden,B=U?"smooth":"auto";try{if(f){let $=Xr(f,k,x),j=kn($,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===mt.TOP||y===mt.BOTTOM){let $=await O(x,{action:"scrollTo",direction:y,options:{behavior:B,isTabActive:U}},{doc:k,timeoutMs:k.hidden?5200:2800});return{success:!0,method:"detector-scrollTo",details:JSON.stringify($)}}let q=await O(x,{action:"scrollBy",direction:y,options:{amount:b,behavior:B,isTabActive:U}},{doc:k,timeoutMs:k.hidden?5200:2800});return{success:!0,method:"detector-scrollBy",details:JSON.stringify(q)}}catch(q){let $=k?kn(No(k),k,x,y,b):void 0;return $?.success?{success:!0,method:"direct-primary-scroll-fallback",details:JSON.stringify($)}:{success:!1,method:"scroll-page-failed",details:q?.message||$?.error||"scroll_page failed",allowFallback:!0}}}async function Ze(f,w,E,_){let y=Q(f,w),b=re(y,E),k=!y.hidden,x=k?"smooth":"auto",U=Df(_.position),B=ls(f,y);if(!B){let q=El(f,y,b,U);return{success:q.success,method:"direct-scrollElement-no-selector",details:q.error,allowFallback:!q.success}}try{let q=await O(b,{action:"scrollElement",selector:B,position:U,options:{behavior:x,isTabActive:k}},{doc:y,timeoutMs:y.hidden?5600:3e3});return{success:!0,method:"detector-scrollElement",details:JSON.stringify(q)}}catch(q){let $=El(f,y,b,U);return $.success?{success:!0,method:"direct-scrollElement-fallback",details:JSON.stringify($)}:{success:!1,method:"scroll-to-element-failed",details:q?.message||$.error||"scroll_to_element failed",allowFallback:!0}}}function zn(f,w,E,_,y){try{let b=Q(f,w),k=re(b,E),x=k.WheelEvent||WheelEvent;st(f,b,k);let U=Xr(f,b,k);return U.dispatchEvent(new x("wheel",{bubbles:!0,cancelable:!0,composed:!0,view:k,deltaX:_||0,deltaY:y||0,deltaMode:x.DOM_DELTA_PIXEL})),U.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 Xr(f,w,E){let _=Q(f,w),y=re(_,E),b=_.scrollingElement||_.documentElement||_.body,k=f;for(;k&&k!==_.body&&k!==_.documentElement;){let U=y.getComputedStyle(k).overflowY;if((U==="auto"||U==="scroll"||U==="overlay")&&k.scrollHeight>k.clientHeight+5)return k;k=k.parentElement}return b}async function vt(f,w,E,_,y){try{let b=Q(f,w),k=re(b,E),x=k.PointerEvent||PointerEvent,U=k.MouseEvent||MouseEvent,B=k.DragEvent||DragEvent,q=k.DataTransfer||DataTransfer;st(f,b,k);let $=he(f,b,k),j=wt($.hit,k)?$.hit:f,ne=f.getBoundingClientRect(),ie=Number.isFinite(Number(_?.distance))?Number(_.distance):160,Ie=0,ue=0;switch(String(_?.direction||"").toUpperCase()){case"UP":ue=-ie;break;case"DOWN":ue=ie;break;case"LEFT":Ie=-ie;break;case"RIGHT":Ie=ie;break;default:Ie=Number(_?.delta_x)||0,ue=Number(_?.delta_y)||0}let ae=(te,fe)=>({x:Math.max(2,Math.min(te,k.innerWidth-3)),y:Math.max(2,Math.min(fe,k.innerHeight-3))}),de=ae($.x,$.y),Ne=ae($.x+Ie,$.y+ue),Ge=500+Date.now()%1e4,_e=Math.max(12,Math.min(36,Number(_?.steps)||18)),Te=(te,fe)=>({bubbles:!0,cancelable:!0,composed:!0,view:k,clientX:te,clientY:fe,pageX:te+(k.scrollX||0),pageY:fe+(k.scrollY||0)}),Be=(te,fe,Fe)=>({...Te(te,fe),pointerId:Ge,pointerType:"mouse",isPrimary:!0,width:1,height:1,pressure:Fe?.5:0,buttons:Fe,button:0}),Le=(te,fe,Fe)=>({...Te(te,fe),buttons:Fe,button:0});j.dispatchEvent(new x("pointerdown",Be(de.x,de.y,1))),j.dispatchEvent(new U("mousedown",Le(de.x,de.y,1)));try{j.setPointerCapture?.(Ge)}catch{}let $e=null;try{(f.draggable||H(f,y).sourcesByType.has("dragstart"))&&($e=new q)}catch{$e=null}if($e)try{f.dispatchEvent(new B("dragstart",{bubbles:!0,cancelable:!0,clientX:de.x,clientY:de.y,dataTransfer:$e}))}catch{}let Ye=null;for(let te=1;te<=_e;te++){let fe=de.x+(Ne.x-de.x)*te/_e,Fe=de.y+(Ne.y-de.y)*te/_e,jt=b.elementFromPoint(fe,Fe)||f;if(jt.dispatchEvent(new x("pointermove",Be(fe,Fe,1))),jt.dispatchEvent(new U("mousemove",Le(fe,Fe,1))),$e)try{Ye&&Ye!==jt&&Ye.dispatchEvent(new B("dragleave",{bubbles:!0,cancelable:!0,clientX:fe,clientY:Fe,dataTransfer:$e})),jt.dispatchEvent(new B("dragover",{bubbles:!0,cancelable:!0,clientX:fe,clientY:Fe,dataTransfer:$e})),Ye=jt}catch{}te%3===0&&await nn()}let ce=b.elementFromPoint(Ne.x,Ne.y)||f;if(ce.dispatchEvent(new x("pointerup",Be(Ne.x,Ne.y,0))),ce.dispatchEvent(new U("mouseup",Le(Ne.x,Ne.y,0))),$e)try{f.dispatchEvent(new B("dragend",{bubbles:!0,cancelable:!0,clientX:Ne.x,clientY:Ne.y,dataTransfer:$e}))}catch{}return{success:!0,method:"drag",details:`dx=${Ie};dy=${ue};steps=${_e};hitOk=${$.ok}`}}catch(b){return{success:!1,method:"drag",details:b?.message||"drag failed",allowFallback:!0}}}async function dn(f,w,E,_){try{let y=Q(w,E),b=re(y,_),k=b.PointerEvent||PointerEvent,x=b.MouseEvent||MouseEvent,U=b.DragEvent||DragEvent,B=b.DataTransfer||DataTransfer,q=f?.source_element_id??f?.element_id,$=(q?Zn(y,String(q)):null)||w;if(!$)return{success:!1,method:"drag-drop",details:"source missing",allowFallback:!0};let j=null,ne=Number(f?.target_x),ie=Number(f?.target_y);if(f?.target_element_id){if(j=Zn(y,String(f.target_element_id)),!j)return{success:!1,method:"drag-drop",details:"target missing",allowFallback:!0};let ce=j.getBoundingClientRect();ne=ce.left+ce.width/2,ie=ce.top+ce.height/2}if((!Number.isFinite(ne)||!Number.isFinite(ie))&&!j)return{success:!1,method:"drag-drop",details:"missing target coords",allowFallback:!0};st($,y,b),j&&st(j,y,b);let Ie=(ce,te)=>({x:Math.max(2,Math.min(ce,b.innerWidth-3)),y:Math.max(2,Math.min(te,b.innerHeight-3))}),ue=$.getBoundingClientRect(),ae=Ie(ue.left+ue.width/2,ue.top+ue.height/2),de=Ie(Number(ne),Number(ie)),Ne=600+Date.now()%1e4,Ge=Math.max(14,Math.min(42,Number(f?.steps)||22)),_e=(ce,te)=>({bubbles:!0,cancelable:!0,composed:!0,view:b,clientX:ce,clientY:te,pageX:ce+(b.scrollX||0),pageY:te+(b.scrollY||0)}),Te=(ce,te,fe)=>({..._e(ce,te),pointerId:Ne,pointerType:"mouse",isPrimary:!0,width:1,height:1,pressure:fe?.5:0,buttons:fe,button:0}),Be=(ce,te,fe)=>({..._e(ce,te),buttons:fe,button:0}),Le=null;try{Le=new B}catch{Le=null}$.dispatchEvent(new k("pointerdown",Te(ae.x,ae.y,1))),$.dispatchEvent(new x("mousedown",Be(ae.x,ae.y,1)));try{$.setPointerCapture?.(Ne)}catch{}if(Le)try{$.dispatchEvent(new U("dragstart",{bubbles:!0,cancelable:!0,clientX:ae.x,clientY:ae.y,dataTransfer:Le}))}catch{}let $e=null;for(let ce=1;ce<=Ge;ce++){let te=ae.x+(de.x-ae.x)*ce/Ge,fe=ae.y+(de.y-ae.y)*ce/Ge,Fe=y.elementFromPoint(te,fe)||j||y.body;if(Fe.dispatchEvent(new k("pointermove",Te(te,fe,1))),Fe.dispatchEvent(new x("mousemove",Be(te,fe,1))),Le)try{$e&&$e!==Fe&&$e.dispatchEvent(new U("dragleave",{bubbles:!0,cancelable:!0,clientX:te,clientY:fe,dataTransfer:Le})),Fe.dispatchEvent(new U("dragenter",{bubbles:!0,cancelable:!0,clientX:te,clientY:fe,dataTransfer:Le})),Fe.dispatchEvent(new U("dragover",{bubbles:!0,cancelable:!0,clientX:te,clientY:fe,dataTransfer:Le})),$e=Fe}catch{}ce%3===0&&await nn()}let Ye=j||y.elementFromPoint(de.x,de.y)||y.body;if(Le)try{Ye.dispatchEvent(new U("drop",{bubbles:!0,cancelable:!0,clientX:de.x,clientY:de.y,dataTransfer:Le}))}catch{}if(Ye.dispatchEvent(new k("pointerup",Te(de.x,de.y,0))),Ye.dispatchEvent(new x("mouseup",Be(de.x,de.y,0))),Le)try{$.dispatchEvent(new U("dragend",{bubbles:!0,cancelable:!0,clientX:de.x,clientY:de.y,dataTransfer:Le}))}catch{}return{success:!0,method:"html5+pointer-dragdrop",details:`steps=${Ge};source=${String(q)}`}}catch(y){return{success:!1,method:"drag-drop",details:y?.message||"drag-drop failed",allowFallback:!0}}}async function Ln(f,w,E,_){try{let y=Q(f,w),b=re(y,E),k=b.PointerEvent||PointerEvent,x=b.MouseEvent||MouseEvent;st(f,y,b);let U=he(f,y,b),B={x:U.x,y:U.y},q=f.getBoundingClientRect(),$=Number.isFinite(Number(_?.distance))?Number(_.distance):Math.min(Math.max(80,Math.min(q.width,q.height)),220),j=String(_?.direction||"RIGHT").toUpperCase(),ne=B.x,ie=B.y;j==="LEFT"&&(ne-=$),j==="RIGHT"&&(ne+=$),j==="UP"&&(ie-=$),j==="DOWN"&&(ie+=$);let Ie=(te,fe)=>({x:Math.max(2,Math.min(te,b.innerWidth-3)),y:Math.max(2,Math.min(fe,b.innerHeight-3))}),ue=Ie(B.x,B.y),ae=Ie(ne,ie),de=700+Date.now()%1e4,Ne=Math.max(10,Math.min(28,Number(_?.steps)||16)),Ge=(te,fe)=>({bubbles:!0,cancelable:!0,composed:!0,view:b,clientX:te,clientY:fe,pageX:te+(b.scrollX||0),pageY:fe+(b.scrollY||0)}),_e=(te,fe,Fe)=>({...Ge(te,fe),pointerId:de,pointerType:"touch",isPrimary:!0,width:1,height:1,pressure:Fe?.5:0,buttons:Fe,button:0}),Te=(te,fe,Fe)=>({...Ge(te,fe),buttons:Fe,button:0}),Be=y.elementFromPoint(ue.x,ue.y)||f;Be.dispatchEvent(new k("pointerdown",_e(ue.x,ue.y,1))),Be.dispatchEvent(new x("mousedown",Te(ue.x,ue.y,1)));let Le=b.Touch,$e=b.TouchEvent,Ye=!!Le&&!!$e;if(Ye)try{let te=new Le({identifier:de,target:Be,clientX:ue.x,clientY:ue.y,pageX:ue.x,pageY:ue.y,screenX:ue.x,screenY:ue.y,radiusX:1,radiusY:1,rotationAngle:0,force:1});Be.dispatchEvent(new $e("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[te],targetTouches:[te],changedTouches:[te]}))}catch{}for(let te=1;te<=Ne;te++){let fe=ue.x+(ae.x-ue.x)*te/Ne,Fe=ue.y+(ae.y-ue.y)*te/Ne,jt=y.elementFromPoint(fe,Fe)||f;if(jt.dispatchEvent(new k("pointermove",_e(fe,Fe,1))),jt.dispatchEvent(new x("mousemove",Te(fe,Fe,1))),Ye)try{let Bt=new Le({identifier:de,target:jt,clientX:fe,clientY:Fe,pageX:fe,pageY:Fe,screenX:fe,screenY:Fe,radiusX:1,radiusY:1,rotationAngle:0,force:1});jt.dispatchEvent(new $e("touchmove",{bubbles:!0,cancelable:!0,composed:!0,touches:[Bt],targetTouches:[Bt],changedTouches:[Bt]}))}catch{}te%3===0&&await nn()}let ce=y.elementFromPoint(ae.x,ae.y)||f;if(ce.dispatchEvent(new k("pointerup",_e(ae.x,ae.y,0))),ce.dispatchEvent(new x("mouseup",Te(ae.x,ae.y,0))),Ye)try{let te=new Le({identifier:de,target:ce,clientX:ae.x,clientY:ae.y,pageX:ae.x,pageY:ae.y,screenX:ae.x,screenY:ae.y,radiusX:1,radiusY:1,rotationAngle:0,force:0});ce.dispatchEvent(new $e("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[te]}))}catch{}return{success:!0,method:"swipe",details:`dir=${j};dist=${$};steps=${Ne};hitOk=${U.ok}`}}catch(y){return{success:!1,method:"swipe",details:y?.message||"swipe failed",allowFallback:!0}}}async function Ot(f,w,E,_){try{let y=f||w.body,b=Q(y,w),k=re(b,E),x=k.PointerEvent||PointerEvent,U=k.WheelEvent||WheelEvent;st(y,b,k);let B=Number.isFinite(Number(_?.scale))?Number(_.scale):1.2,q=y.getBoundingClientRect(),$=q.left+q.width/2,j=q.top+q.height/2,ne=24,ie=Math.max(6,Math.min(200,ne*B)),Ie=Math.max(6,Math.min(18,Number(_?.steps)||10)),ue=k.Touch,ae=k.TouchEvent;if(!!ue&&!!ae)try{let _e=(Ye,ce)=>new ue({identifier:Ye,target:y,clientX:ce,clientY:j,pageX:ce,pageY:j,screenX:ce,screenY:j,radiusX:1,radiusY:1,rotationAngle:0,force:1}),Te=_e(911,$-ne),Be=_e(912,$+ne);y.dispatchEvent(new ae("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[Te,Be],targetTouches:[Te,Be],changedTouches:[Te,Be]}));for(let Ye=1;Ye<=Ie;Ye++){let ce=ne+(ie-ne)*Ye/Ie,te=_e(911,$-ce),fe=_e(912,$+ce);y.dispatchEvent(new ae("touchmove",{bubbles:!0,cancelable:!0,composed:!0,touches:[te,fe],targetTouches:[te,fe],changedTouches:[te,fe]})),Ye%2===0&&await nn()}let Le=_e(911,$-ie),$e=_e(912,$+ie);y.dispatchEvent(new ae("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[Le,$e]}))}catch{}try{let _e=(Te,Be,Le)=>({bubbles:!0,cancelable:!0,composed:!0,view:k,clientX:Be,clientY:j,pointerId:Te,pointerType:"touch",isPrimary:Te===821,width:1,height:1,pressure:Le?.5:0,buttons:Le,button:0});y.dispatchEvent(new x("pointerdown",_e(821,$-ne,1))),y.dispatchEvent(new x("pointerdown",_e(822,$+ne,1)));for(let Te=1;Te<=Ie;Te++){let Be=ne+(ie-ne)*Te/Ie;y.dispatchEvent(new x("pointermove",_e(821,$-Be,1))),y.dispatchEvent(new x("pointermove",_e(822,$+Be,1))),Te%2===0&&await nn()}y.dispatchEvent(new x("pointerup",_e(821,$-ie,0))),y.dispatchEvent(new x("pointerup",_e(822,$+ie,0)))}catch{}try{let Ne=B>=1?-120:120;y.dispatchEvent(new U("wheel",{bubbles:!0,cancelable:!0,composed:!0,view:k,clientX:$,clientY:j,ctrlKey:!0,deltaY:Ne,deltaMode:U.DOM_DELTA_PIXEL}))}catch{}return{success:!0,method:"pinch-zoom",details:`scale=${B};steps=${Ie}`}}catch(y){return{success:!1,method:"pinch-zoom",details:y?.message||"pinch-zoom failed",allowFallback:!0}}}async function fn(f,w,E,_=800){try{let y=Q(f,w),b=re(y,E),k=b.PointerEvent||PointerEvent,x=b.MouseEvent||MouseEvent,U=b.FocusEvent||FocusEvent;st(f,y,b);let B=he(f,y,b),q=f;!B.ok&&wt(B.hit,b)?q=B.hit.closest?.('a,button,input,select,textarea,summary,[role="button"],[role="link"],[onclick]')||B.hit:wt(B.hit,b)&&(q=B.hit);let $=En(q,y,b),j=B.x,ne=B.y,ie=1+Date.now()%1e4,Ie={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)},ue={...Ie,pointerId:ie,pointerType:"touch",isPrimary:!0,width:1,height:1,pressure:0,buttons:0,button:0};try{q.dispatchEvent(new k("pointerover",ue)),q.dispatchEvent(new k("pointerenter",{...ue,bubbles:!1}))}catch{}try{q.dispatchEvent(new x("mouseover",Ie)),q.dispatchEvent(new x("mouseenter",{...Ie,bubbles:!1}))}catch{}try{q.focus?.({preventScroll:!0}),q.dispatchEvent(new U("focus",{bubbles:!0,composed:!0})),q.dispatchEvent(new U("focusin",{bubbles:!0,composed:!0}))}catch{}try{q.dispatchEvent(new k("pointerdown",{...ue,buttons:1,pressure:.5}))}catch{}try{q.dispatchEvent(new x("mousedown",{...Ie,buttons:1,button:0}))}catch{}try{let _e=b.Touch,Te=b.TouchEvent;if(typeof _e<"u"&&typeof Te<"u"){let Be=new _e({identifier:ie,target:q,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});q.dispatchEvent(new Te("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[Be],targetTouches:[Be],changedTouches:[Be]}))}}catch{}let ae=Number(_),de=Number.isFinite(ae)&&ae>0?ae:800,Ne=y.hidden?Math.max(de,1200):de;await At(Ne,y);try{q.dispatchEvent(new x("contextmenu",{...Ie,button:2,buttons:2}))}catch{}try{q.dispatchEvent(new k("pointerup",{...ue,buttons:0,pressure:0}))}catch{}try{q.dispatchEvent(new x("mouseup",{...Ie,buttons:0,button:0}))}catch{}try{let _e=b.Touch,Te=b.TouchEvent;if(typeof _e<"u"&&typeof Te<"u"){let Be=new _e({identifier:ie,target:q,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});q.dispatchEvent(new Te("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[Be]}))}}catch{}let Ge=await Cr(q,y,b,$);return{success:!0,method:"long-press",details:`holdMs=${Ne};verified=${Ge};hitOk=${B.ok};target=${q.tagName.toLowerCase()}`}}catch(y){return{success:!1,method:"long-press",details:y?.message||"long-press failed",allowFallback:!0}}}function ot(f,w,E,_,y){try{let b=Q(E,_),x=re(b,y).KeyboardEvent||KeyboardEvent,U=E||b.activeElement||b.body||b.documentElement;U.focus?.();let B={key:f,code:Pn(f),bubbles:!0,cancelable:!0,ctrlKey:w?.includes("CTRL"),altKey:w?.includes("ALT"),shiftKey:w?.includes("SHIFT"),metaKey:w?.includes("META")},q=U.dispatchEvent(new x("keydown",B)),$=U.dispatchEvent(new x("keypress",B)),j=U.dispatchEvent(new x("keyup",B));if(f==="Enter"&&!!(q&&$&&j)){let ie=U.form||U.closest?.("form");ie?.requestSubmit?ie.requestSubmit():ie?.submit?.()}return{success:!0,method:"press-key"}}catch(b){return{success:!1,method:"press-key",details:b.message,allowFallback:!0}}}async function Ar(f,w,E){try{let _=f.innerText||f.value||"";if(!_)return{success:!1,method:"copy",details:"nothing to copy",allowFallback:!0};let y=Q(f,w),b=re(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 U=y.execCommand?.("copy")??!1;return x?.removeAllRanges(),{success:!!U,method:"execCommand-copy",allowFallback:!U}}catch(_){return{success:!1,method:"clipboard-copy",details:_.message,allowFallback:!0}}}async function lr(f,w,E,_){try{f.focus?.();let y=Q(f,w),b=re(y,E);if(b.navigator?.clipboard?.readText){let x=await b.navigator.clipboard.readText();if(x)return await Vn(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 jn(f){return`${(f/1024).toFixed(1)}KB`}function Dn(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 yo(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 Gn(f,w,E,_,y,b){try{let{file_url:k,element_id:x,file_name:U}=f,B=null;if(y&&(B=Dn(y,w)),!B&&x!==void 0&&(B=w.querySelector(`input[type="file"][${Xt}*="[id=${x}]"]`)),!B){let ce=w.querySelectorAll('input[type="file"]');for(let te of ce){if(te.disabled)continue;let fe=te.getBoundingClientRect();if(fe.width>0&&fe.height>0){B=te;break}}}if(!B)return{success:!1,method:"upload-file",details:"No file input found",allowFallback:!0};if(B.disabled)return{success:!1,method:"upload-file",details:"File input is disabled",allowFallback:!0};let q=Q(B,w),$=re(q,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 ne=Number(_.byteLength),ie=(_.mimeType||"application/octet-stream").split(";")[0].trim()||"application/octet-stream",Ie;if(_.inlineB64&&typeof _.inlineB64=="string"){let ce=Cf(_.inlineB64);if(ce.byteLength!==ne)return{success:!1,method:"upload-file",details:`Inline bytes length mismatch: got=${ce.byteLength} expected=${ne}`,allowFallback:!0};Ie=ce.buffer}else{let ce=String(_.token);Ie=await m($,ce,ne,9e4)}let ue=$.Blob||Blob,ae=new ue([Ie],{type:ie}),de=U||_?.fileName;!de&&k&&typeof k=="string"&&(de=kl(k,$)),de=Af(de||"upload");let Ne=$.File||File,Ge=new Ne([ae],de,{type:ie,lastModified:Date.now()}),_e=$.Event||Event,Te=$.DataTransfer||DataTransfer;if(!Te)return{success:!1,method:"upload-file",details:"DataTransfer unavailable in this context",allowFallback:!0};let Be=new Te;if(Be.items.add(Ge),!yo(B,Be.files,$))return{success:!1,method:"upload-file",details:"Failed to set input.files",allowFallback:!0};B.dispatchEvent(new _e("input",{bubbles:!0,composed:!0,cancelable:!0})),B.dispatchEvent(new _e("change",{bubbles:!0,composed:!0,cancelable:!0}));let $e=Xn(B);if($e){let ce=wn($e);if(ce.onChange){let te=pn("change",B,q,$);te.target.files=Be.files,ce.onChange(te)}}let Ye=et(B);if(Ye){let ce=vo(Ye);if(ce.change){let te=new _e("change",{bubbles:!0});te.target=B,te.target.files=Be.files,ce.change(te)}}try{let ce=$.jQuery||$.$;ce&&typeof ce=="function"&&ce(B).triggerHandler?.("change")}catch{}return B.focus?.({preventScroll:!0}),await Ae(q,$,2),{success:!0,method:"upload-file",details:`Uploaded ${de} (${jn(ae.size)}) [token]`}}catch(k){return{success:!1,method:"upload-file",details:k?.message||"Upload failed",allowFallback:!0}}}async function ur(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 U=_[x],B=Number(U.x)||0,q=Number(U.y)||0,$=Number(U.pressure)||(x===0||x===_.length-1?0:.5),j=w.elementFromPoint(B,q)||w.documentElement,ne={bubbles:!0,cancelable:!0,clientX:B,clientY:q,screenX:B,screenY:q,view:E};if(x===0?(j.dispatchEvent(new y("pointerdown",{...ne,pressure:$,pointerId:1,pointerType:"mouse"})),j.dispatchEvent(new b("mousedown",{...ne,button:0,buttons:1}))):(j.dispatchEvent(new y("pointermove",{...ne,pressure:$,pointerId:1,pointerType:"mouse"})),j.dispatchEvent(new b("mousemove",{...ne,button:0,buttons:1}))),x===_.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<_.length-1){let ie=Number(U.timestamp)||0,Ie=Number(_[x+1].timestamp)||0,ue=ie&&Ie?Math.max(0,Math.min(Ie-ie,1e3)):k;ue>0&&await At(ue,w)}}return{success:!0,method:"dispatch_pointer_path",details:`Dispatched ${_.length} point(s)`}}function dr(f,w,E){let _=Q(f,w),y=re(_,E),b=y.MouseEvent||MouseEvent;st(f,_,y),J(f,_,y),J(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 _n(f,w,E){let _=Q(f,w),y=re(_,E),b=y.PointerEvent||PointerEvent,k=y.MouseEvent||MouseEvent;st(f,_,y);let x=f.getBoundingClientRect(),U=x.left+x.width/2,B=x.top+x.height/2,q={bubbles:!0,cancelable:!0,composed:!0,view:y,clientX:U,clientY:B,button:2,buttons:2};return f.dispatchEvent(new b("pointerdown",q)),f.dispatchEvent(new k("mousedown",q)),f.dispatchEvent(new b("pointerup",{...q,buttons:0})),f.dispatchEvent(new k("mouseup",{...q,buttons:0})),f.dispatchEvent(new k("contextmenu",q)),{success:!0,method:"contextmenu"}}function En(f,w,E){let _=Q(f,w),y=re(_,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:wa(_),rect:{w:k.width,h:k.height}}}function we(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 Cr(f,w,E,_){await Promise.resolve();let y=Q(f,w),b=re(y,E);w.hidden||await nn();let k=En(f,y,b);return we(_,k)}function On(f,w,E){f.focus?.({preventScroll:!0});let _=Q(f,w),y=re(_,E),x=f.getAttribute("role")==="button"||hd(f,y)||f.tagName.toLowerCase()==="button"?[" ","Enter"]:["Enter"],U=y.KeyboardEvent||KeyboardEvent;for(let B of x){let q={key:B,code:B===" "?"Space":"Enter",bubbles:!0,cancelable:!0,composed:!0};f.dispatchEvent(new U("keydown",q)),f.dispatchEvent(new U("keypress",q)),f.dispatchEvent(new U("keyup",q))}return{success:!0,method:"keyboard-activate"}}async function Pt(f,w,E,..._){let y=null;for(let b of _){let k=Q(f,w),x=re(k,E),U=En(f,k,x),B=b();if(!B||!B.success)continue;if(await Cr(f,k,x,U))return{...B,details:(B.details?B.details+";":"")+"verified=true"};y=B}return y?{...y,details:(y.details?y.details+";":"")+"verified=false"}:{success:!1,method:"all-strategies-unverified",details:"no verified effect",allowFallback:!0}}function tn(...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 st(f,w,E){let _=Q(f,w),y=re(_,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 Ko(f,w,E,_){let y=Q(f,w),k=re(y,E).KeyboardEvent||KeyboardEvent;for(let x of _){let U=String(x??""),B="";/^[a-z]$/i.test(U)?B=`Key${U.toUpperCase()}`:/^[0-9]$/.test(U)?B=`Digit${U}`:U===" "&&(B="Space");let q=U.length===1?U.charCodeAt(0):0,$={key:U,code:B,bubbles:!0,cancelable:!0,composed:!0,keyCode:q,which:q};f.dispatchEvent(new k("keydown",$)),f.dispatchEvent(new k("keypress",$)),f.dispatchEvent(new k("keyup",$))}}function Gi(f,w,E){let _=Q(f,w),b=re(_,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)),U=f.dispatchEvent(new b("keypress",k)),B=f.dispatchEvent(new b("keyup",k));if(!!(x&&U&&B)){let $=f.form||f.closest?.("form");$?.requestSubmit?.()??$?.submit?.()}}function Pn(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 Mr=new MessageChannel,Bn=[];Mr.port1.onmessage=()=>{let f=Bn.shift();f&&f()};function nn(){return new Promise(f=>{Bn.push(f),Mr.port2.postMessage(0)})}function Xn(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 wn(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 Kr(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 Q(f,w).querySelector("#root,#app,#__next,[data-reactroot],[data-react-root]")}function pn(f,w,E,_){let y=Q(w,E),b=re(y,_),k=b.MouseEvent||MouseEvent,x=w.getBoundingClientRect(),U=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:U,isTrusted:!0,preventDefault(){U.preventDefault()},stopPropagation(){U.stopPropagation()}}}function et(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 vo(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 Bf(){let e=window,t=e.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__";e[t]?.actions?.execute}async function Uf(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 ri(e,t,n={}){let{rootNodes:r,semanticNodes:o}=fl(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=Js(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{constructor(d=document,p=window){D(this,"doc");D(this,"win");D(this,"viewport");D(this,"lastDetectedPrimary",null);D(this,"detectionCache",new Map);D(this,"lastDetectionTime",0);D(this,"CACHE_TTL",5e3);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=mr(),O=m&&T?T.innerHeight:v.clientHeight,N=Math.max(0,g-O),A=v.scrollTop;return{selector:p.selector,score:p.score,type:p.type,metrics:{scrollTop:A,scrollHeight:g,clientHeight:O,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=Q(m,this.doc),O={element:m,selector:ls(m,T),score:.5,features:g,type:"document"};return this.detectionCache.clear(),this.detectionCache.set(O.selector,O),this.lastDetectionTime=Date.now(),this.lastDetectedPrimary=m,O}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,O=N=>{try{let A=this.win.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",H=this.win[A]?.shadow?.getRoot;if(typeof H=="function"){let V=H(N);if(V)return V}}catch{}try{return N.shadowRoot||null}catch{return null}};for(;m.length&&!(++T>p);){let N=m.pop();if(Sn(N)){let H=N.children;for(let V=H.length-1;V>=0;V--)m.push(H[V]);continue}let A=N,S=ye(A);wt(A,S)&&v.push(A);try{let H=O(A);H&&m.push(H)}catch{}for(let H=A.lastElementChild;H;H=H.previousElementSibling)m.push(H)}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(),O=this.win.getComputedStyle(g);if(!this.isElementRendered(g,T,O)||!this.isScrollable(g).vertical)continue;let A=40,S=this.viewport.width*.15;if(T.height<A||T.width<S){let H=(g.className||"").toLowerCase().includes("scroll"),V=O.overflowY==="auto"||O.overflowY==="scroll"||O.overflow==="auto"||O.overflow==="scroll";if(!H&&!V)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,O=d.scrollHeight,N=d.clientHeight,A=d.scrollWidth,S=d.clientWidth;if(T){let be=this.doc.documentElement,De=this.doc.body;O=Math.max(be?be.scrollHeight:0,De?De.scrollHeight:0),N=this.win.innerHeight}let H=O-N>8,V=A-S>8,J=v==="auto"||v==="scroll"||v==="overlay",se=m==="auto"||m==="scroll"||m==="overlay";return{vertical:T?H:H&&J,horizontal:T?V:V&&se,byOverflow:J||se}}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),O=Math.max(0,g-v);return{width:T,height:O,area:T*O}}analyzeTextContent(d,p=2e3){let v=0,m=0,g=d.ownerDocument||this.doc,O=(g.defaultView||this.win).NodeFilter||NodeFilter,N=g.createTreeWalker(d,O.SHOW_ELEMENT|O.SHOW_TEXT,null),A=0,S=N.currentNode,H=[];for(;S&&A<p;){if(S.nodeType===Node.TEXT_NODE){let pe=(S.textContent||"").replace(/\s+/g,"").length;if(pe>0){v+=pe;let Ee=S.parentElement;Ee&&Ee.closest("a")&&(m+=pe)}}else S.nodeType===Node.ELEMENT_NODE&&H.push(S);A++,S=N.nextNode()}let V=H.length||1,J=v/V,se=v>0?m/v:0;return{textChars:v,linkChars:m,textDensity:J,linkDensity:se}}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 he of v){let pe=ye(he);if(!wt(he,pe))continue;let Ee=he.getBoundingClientRect();if(Ee.height<5||Ee.width<this.viewport.width*.1)continue;let be=Math.round(Ee.height/10)*10,De=Math.round(Ee.width/10)*10;m.set(be,(m.get(be)||0)+1),g.set(De,(g.get(De)||0)+1);let Re=(he.className||he.tagName).toString();T.set(Re,(T.get(Re)||0)+1)}let O=v.length||1,N=Math.max(0,...m.values()),A=Math.max(0,...g.values()),S=Math.max(0,...T.values()),H=N/O,V=A/O,J=S/O,se=.4*H+.3*V+.3*J;return Math.min(1,Math.max(0,se))}calculateSemanticScore(d){let p=0,v=null,m=!1,g=(d.getAttribute("role")||"").toLowerCase(),T=d.tagName.toLowerCase(),O=(d.id||"").toLowerCase(),N=(d.className||"").toLowerCase(),A=`${g} ${T} ${O} ${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,O=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),H=this.isScrollable(d),V=this.doc.scrollingElement,J=d===this.doc.documentElement||d===this.doc.body||!!V&&d===V,se=d.scrollHeight,he=d.clientHeight;if(J){let ct=this.doc.documentElement,Dt=this.doc.body;se=Math.max(ct?ct.scrollHeight:0,Dt?Dt.scrollHeight:0),he=this.win.innerHeight}let pe=Math.max(0,se-he),Ee=pe*m.width,be=this.analyzeTextContent(d),De=this.calculateRepetitionScore(d),Re=this.calculateSemanticScore(d),dt=d.contains(this.doc.activeElement),Ae=this.detectScrollListeners(d),Lt=parseInt(v.zIndex||"0",10),bt=Number.isFinite(Lt)?Lt:0;return{geometry:{viewportCoverage:T,widthProminence:O,centerDistance:S,scrollCapacity:pe,scrollSurface:Ee,zIndex:bt},content:{textDensity:be.textDensity,linkDensity:be.linkDensity,repetitionScore:De,semanticScore:Re.semanticScore},interaction:{hasScrollListeners:Ae,hasFocus:dt,recentActivity:dt?1:0}}}inferElementType(d,p,v,m){if(v)return v;let g=(d.getAttribute("role")||"").toLowerCase(),T=(d.className||"").toLowerCase(),O=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(O==="article"||A.textDensity>40&&A.linkDensity<.4&&N.widthProminence>.4)return"article";if(m||N.widthProminence<.3&&A.linkDensity>.3)return"sidebar";let V=this.doc.scrollingElement;return d===this.doc.documentElement||d===this.doc.body||V&&d===V?"document":"unknown"}scoreCandidates(d){let p=[],v=[],m=[],g=[],T=[],O=[];for(let J of d){let se=this.buildFeatures(J),he=se.content.semanticScore,pe=this.calculateSemanticScore(J),Ee=this.inferElementType(J,se,pe.typeHint,pe.navLike);O.push({element:J,features:{geometry:{...se.geometry},content:{...se.content,semanticScore:pe.semanticScore},interaction:se.interaction},type:Ee,navLike:pe.navLike,semanticScore:pe.semanticScore}),v.push(se.geometry.scrollSurface),m.push(se.content.textDensity),g.push(Math.abs(pe.semanticScore)),T.push(se.content.repetitionScore)}let N=Math.max(0,...v),A=Math.max(0,...m),S=Math.max(0,...g),H=Math.max(0,...T),V=-1/0;for(let J of O){let{element:se,features:he,type:pe,navLike:Ee,semanticScore:be}=J,De=he.geometry,Re=he.content,dt=he.interaction,Ae=N>0?De.scrollSurface/N:0,Lt=A>0?Re.textDensity/A:0,bt=S>0?(be/S+1)/2:.5,ct=pe==="feed"||Re.repetitionScore>.3&&De.scrollCapacity>400,Dt=Re.linkDensity>.5?(Re.linkDensity-.5)/.5:0,Vn=ct?0:Dt,Nn=(ct?1:.5)*Re.repetitionScore*Math.min(1,De.scrollCapacity/4e3),yt={feed:.2,chat:.2,article:.08,modal:.08,document:.05,sidebar:-.12,unknown:0}[pe]||0,Je=0;Je+=De.viewportCoverage*.18,Je+=De.widthProminence*.15,Je+=(1-De.centerDistance)*.07,Je+=Ae*.22,Je+=Nn*.18,Je+=Lt*.08,Je+=(H>0?Re.repetitionScore/H:0)*.05,Je+=bt*.07,Je-=Vn*.05,dt.hasFocus&&(Je+=.05),dt.hasScrollListeners&&(Je+=.05),Je+=yt,Ee&&(Je-=.05);let en=Math.max(0,Math.min(1,Je));en>V&&(V=en),p.push({element:se,selector:ls(se,Q(se)),score:en,features:he,type:pe})}if(p.sort((J,se)=>se.score-J.score),p.length>=2){let J=p[0],se=p[1];Math.abs(J.score-se.score)<.08&&J.type==="article"&&se.type==="feed"&&(p[0]=se,p[1]=J)}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=Q(m),O=re(T),N=p?.isTabActive??!T.hidden,A=p?.behavior,S=N&&A==="smooth",H=g?Math.max(T.documentElement?T.documentElement.scrollHeight:0,T.body?T.body.scrollHeight:0):m.scrollHeight,V=g?O.innerHeight:m.clientHeight,J=Math.max(0,H-V),se=()=>g?O.scrollY:m.scrollTop,he=pe=>{if(S)try{g?O.scrollTo({top:pe,behavior:"smooth"}):m.scrollTo({top:pe,behavior:"smooth"})}catch{g?(T.scrollingElement||T.documentElement||T.body).scrollTop=pe:m.scrollTop=pe}else if(g){let Ee=T.scrollingElement||T.documentElement||T.body;Ee.scrollTop=pe}else m.scrollTop=pe};switch(d){case mt.TOP:return he(0),{success:!0,scrollTop:0,isAtTop:!0};case mt.BOTTOM:return he(J),{success:!0,scrollTop:J,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,O=p?.behavior,N=T&&O==="smooth",A=mr(),S=g&&A?A.innerHeight:m.clientHeight,H=g&&A?A.innerWidth:m.clientWidth,V=p?.amount??S*.8,J=g?Math.max(document.documentElement?document.documentElement.scrollHeight:0,document.body?document.body.scrollHeight:0):m.scrollHeight,se=g&&A?A.innerHeight:m.clientHeight,he=Math.max(0,J-se),pe=be=>{if(N)try{g?A?.scrollTo({top:be,behavior:"smooth"}):m.scrollTo({top:be,behavior:"smooth"})}catch{let De=document.scrollingElement||document.documentElement||document.body;De.scrollTop=be}else{let De=g?document.scrollingElement||document.documentElement||document.body:m;De.scrollTop=be}},Ee=be=>{if(N)try{m.scrollBy({left:be,behavior:"smooth"})}catch{m.scrollLeft+=be}else m.scrollLeft+=be};switch(d){case mt.DOWN:{let De=(g&&A?A.scrollY:m.scrollTop)+V;pe(De);let Re=g&&A?A.scrollY:m.scrollTop;return{success:!0,scrollTop:Re,isAtTop:Re<=5,isAtBottom:Re>=he-5}}case mt.UP:{let be=g&&A?A.scrollY:m.scrollTop,De=Math.max(0,be-V);pe(De);let Re=g&&A?A.scrollY:m.scrollTop;return{success:!0,scrollTop:Re,isAtTop:Re<=5,isAtBottom:Re>=he-5}}case mt.LEFT:{let be=-(p?.amount??H*.8);return Ee(be),{success:!0,scrollLeft:m.scrollLeft}}case mt.RIGHT:{let be=p?.amount??H*.8;return Ee(be),{success:!0,scrollLeft:m.scrollLeft}}default:return{success:!1,error:`Unknown direction: ${d}`}}}normalizeScrollPosition(d){switch(d){case $t.START:return"start";case $t.END:return"end";case $t.NEAREST:return"nearest";case $t.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,O=T==="auto"||T==="scroll"||T==="overlay",N=v.scrollHeight-v.clientHeight>8;if(O&&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),O=ye(g),N=O?.DOMRect||DOMRect,A=T?new N(0,0,O.innerWidth??0,O.innerHeight??0):g.getBoundingClientRect(),S=m.getBoundingClientRect(),H=24,V=S.top>=A.top+H&&S.bottom<=A.bottom-H,J=v?.isTabActive??!document.hidden,se=v?.behavior,he=J&&se==="smooth",pe=this.normalizeScrollPosition(p);if(p===$t.NEAREST&&V)return{success:!0,alreadyVisible:!0,...this.getScrollMetricsForContainer(g,T)};try{m.scrollIntoView({behavior:he?"smooth":"auto",block:pe,inline:"nearest"})}catch{m.scrollIntoView()}let Ee=this.getScrollMetricsForContainer(g,T);return{success:!0,position:pe,...Ee}}getScrollMetricsForContainer(d,p){let v=p?Math.max(document.documentElement?document.documentElement.scrollHeight:0,document.body?document.body.scrollHeight:0):d.scrollHeight,m=Q(d),g=ye(d),T=p&&g?g.innerHeight:d.clientHeight,O=Math.max(0,v-T),A=(p?m.scrollingElement||m.documentElement||m.body:d).scrollTop;return{scrollTop:A,scrollHeight:v,clientHeight:T,maxScroll:O,isAtTop:A<=5,isAtBottom:A>=O-5,scrollPercentage:O>0?A/O*100:0}}getScrollMetrics(){let d=this.getValidPrimary()||this.detectPrimaryScrollable()?.element;if(!d)return null;let{target:p,isRoot:v}=this.getScrollContext(d),m=Q(p),g=re(m),T=v?Math.max(m.documentElement?m.documentElement.scrollHeight:0,m.body?m.body.scrollHeight:0):p.scrollHeight,O=v?g.innerHeight:p.clientHeight,N=Math.max(0,T-O),S=(v?m.scrollingElement||m.documentElement||m.body:p).scrollTop;return{element:ls(p,m),scrollTop:S,scrollHeight:T,clientHeight:O,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 bb=/\[id=(\d+)\]/,St;(function(e){e.HTML="html",e.PDF="pdf",e.GOOGLE_DOC="google_doc",e.GOOGLE_SHEET="google_sheet",e.PLAIN_TEXT="plain_text"})(St||(St={}));var yb=20,us=new Map;function vb(e,t){if(us.size>=yb&&!us.has(e)){let n=us.keys().next().value;n!==void 0&&us.delete(n)}us.set(e,t)}var Tb=24,kb=220,_b=0,Eb=250,wb=2,Ib=300,xb=new Set(["BODY","DIV","SPAN","IMG","PICTURE","SVG"]),Sb=new Set(["A","BUTTON","INPUT","SELECT","TEXTAREA","H1","H2","H3","H4","H5","H6","MAIN","NAV","HEADER","FOOTER","ARTICLE","SECTION","ASIDE"]);function Rb(e){let t={};for(let n of Object.keys(e)){let r=e[Number(n)],o=r?.preservedAttributes?.[gn["rtrvr-label"]],s=r?.resourceLocator;if(typeof o=="string"&&typeof s=="string"){let i=o.match(bb);if(i?.[1]){let a=Number(i[1]);Number.isFinite(a)&&(t[a]=s)}}}return t}async function jf(e,t,n={}){let r=e.ownerDocument||document,o=n.pageConfig||ss,s=String(r.contentType||"").trim().toLowerCase(),i=Lb(s,r),a=Nb(i.documentType,s),c={url:r.URL,title:r.title,contentType:a},l=Mb(o),d=Ab(o);if(i.documentType!==St.HTML){let se=Number(o?.pageDataTimeoutMs),he=Number.isFinite(se)?Math.max(200,Math.floor(se)):9e3,pe=Math.max(200,Math.min(he,xt(l))),Ee=Bb(r,i.documentType,o,l),be=await cs(Ee,pe,r);if(!be.ok)return{...c,content:"",error:`non_html_timeout:${a}`,metadata:{extractionMethod:"timeout"}};let De=be.value||{},Re=i.documentType===St.GOOGLE_SHEET?py(r):void 0;return{...c,...De,contentType:De.contentType||c.contentType,sheetInfo:De.sheetInfo||Re}}if(o?.onlyTextContent)return{...c,contentType:is,content:oi(r)};let p=Math.max(0,Math.min(1e3,xt(l))),v=performance.now(),m=!1;if(!o?.disableAutoScroll&&p>80){let se=r.hidden?200:400,he=Math.min(se,p);he>80&&(m=await uy(r,{profile:"light",timeBudgetMs:he,delayMs:r.hidden?0:160,finalWaitMs:r.hidden?0:200}))}let g=Math.max(0,p-(performance.now()-v));g>60&&await Ff(r,{...d,deadlineEpochMs:l,totalBudgetMs:g});let T=Math.max(0,p-(performance.now()-v));T>80&&await fy(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 O=ri(e,t,{includeFrames:n.includeFrames??!0,disableDomAnnotations:n.disableDomAnnotations??!0}),N="normal",A=0,S=0,H=[],V=Math.max(0,d.sparseTreeRetryMaxAttempts)>0,J=qf(r,O.rootNodes,O.semanticNodes);if(J.needsStabilization){H=[...J.reasons],N="suspicious_unrecovered";let se=V?Math.max(0,Math.min(Ib,xt(l)-20)):0;if(se>20){let he=Date.now();await Ff(r,{...d,retries:0,deadlineEpochMs:l,totalBudgetMs:se}),S=Date.now()-he,A=1,O=ri(e,t,{includeFrames:n.includeFrames??!0,disableDomAnnotations:n.disableDomAnnotations??!0});let pe=qf(r,O.rootNodes,O.semanticNodes);pe.reasons.length>0&&(H=[...pe.reasons]),!pe.needsStabilization&&!Hf(O.rootNodes,O.semanticNodes)&&(N="suspicious_recovered")}}return Hf(O.rootNodes,O.semanticNodes)?{...c,contentType:is,content:oi(r),metadata:{scrollingPerformed:m,extractionMethod:"empty_tree_fallback",treeCapture:{status:N,attempts:A,waitedMs:S,reasons:H}}}:{...c,contentType:is,roots:O.rootNodes,nodes:O.semanticNodes,elementLinkRecord:Rb(O.semanticNodes),metadata:{scrollingPerformed:m,extractionMethod:N!=="normal"?N:void 0,treeCapture:{status:N,attempts:A,waitedMs:S,reasons:H}}}}function Ab(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))):Tb,maxWaitMs:Number.isFinite(n)?Math.max(80,Math.min(5e3,Math.floor(n))):kb,retries:Number.isFinite(r)?Math.max(0,Math.min(6,Math.floor(r))):_b,sparseTreeRetryDelayMs:Number.isFinite(o)?Math.max(20,Math.min(1e3,Math.floor(o))):Eb,sparseTreeRetryMaxAttempts:Number.isFinite(s)?Math.max(0,Math.min(4,Math.floor(s))):wb}}async function Ff(e,t){let n=xt(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&&xt(o)>20;){let i=Math.max(40,Math.min(t.maxWaitMs,xt(o)));if(await Cb(e,{debounceMs:t.debounceMs,windowBudgetMs:i,deadlineEpochMs:o}))return;s+=1}}async function Cb(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(;xt(t.deadlineEpochMs)>20&&xt(s)>20;){let i=Date.now()-r;if(i>=t.debounceMs)return!0;let a=Math.max(10,Math.min(60,t.debounceMs-i,xt(t.deadlineEpochMs),xt(s)));await At(a,e)}}finally{o.disconnect()}return!1}function Mb(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 Nb(e,t){switch(e){case St.PDF:return hl;case St.GOOGLE_DOC:return yl;case St.GOOGLE_SHEET:return gl;case St.PLAIN_TEXT:return xa;case St.HTML:default:return t||is}}function Lb(e,t){let n=e||String(t.contentType||"").toLowerCase();return Sf(n)?{documentType:St.PDF}:Db(t)&&(Pb(t)||Ob(t.URL))?{documentType:St.PDF}:Kb(t)?{documentType:St.GOOGLE_DOC}:Yb(t)?{documentType:St.GOOGLE_SHEET}:n.includes(xa)?{documentType:St.PLAIN_TEXT}:{documentType:St.HTML}}function Db(e){try{let t=Wb(e);return vl(t)?!0:!!t.querySelector?.('object[type="application/pdf"],object[type="application/x-google-chrome-pdf"]')}catch{return!1}}function Ob(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 Pb(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 Bb(e,t,n,r){switch(t){case St.PDF:return Ub(e,n,r);case St.GOOGLE_DOC:return Fb(e);case St.GOOGLE_SHEET:return ay(e,n);case St.PLAIN_TEXT:return{content:oi(e),contentType:xa};case St.HTML:default:return{content:oi(e),contentType:is}}}async function Ub(e,t,n){xt(n)>ml+50&&await Rf(ml,e,n);let o=(()=>{let d=Number(t?.pdfTextSelectionTimeoutMs),p=ss.pdfTextSelectionTimeoutMs;return Number.isFinite(d)?Math.max(150,Math.floor(d)):p})(),s=xt(n),a=Number.isFinite(s)?Math.max(150,Math.min(o,Math.max(0,s-150))):o,c=await Vb(e,a),l=!!c.success&&!!(c.data||"").trim();return{content:l&&c.data||"",contentType:hl,error:l?void 0:`pdf_extraction_failed:${c.reason||"unknown"}`}}async function Fb(e){return{content:iy(),contentType:yl}}function Hf(e,t){return!Array.isArray(e)||e.length===0||!t||Object.keys(t).length===0}function Hb(e){return!!(e.documentElement?.hasAttribute(Eo)||e.body?.hasAttribute(Eo)||e.body?.getAttribute?.("aria-busy")==="true")}function qb(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||Sb.has(l))&&(a+=1),xb.has(l)&&(i+=1)}return{rootsCount:r,semanticCount:o,meaningfulNodeCount:a,genericNodeRatio:o>0?i/o:1,visibleTextLength:0,isDocumentComplete:e.readyState==="complete",busy:Hb(e)}}function qf(e,t,n){let r=qb(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),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 oi(e){return e.body?.innerText||e.body?.textContent||e.documentElement?.innerText||e.documentElement?.textContent||""}function Wb(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 $b(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 Vb(e,t){let n=Number.isFinite(t)&&t>0?Math.floor(t):ss.pdfTextSelectionTimeoutMs,r=$b(e),o=us.get(r)??"";if(o.trim().length>0)return{success:!0,data:o,reason:"ok"};let s=await zb(e,n);return s.success&&s.data.trim()&&vb(r,s.data),s}async function zb(e,t){let n=e.defaultView||window,r=jb(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||!Gb(String(d.origin||""),e))return;let p=d.data;Xb(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 At(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 jb(e){let t=vl(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 Gb(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 Xb(e,t){return!(!e||typeof e!="object"||e.type!=="getSelectedTextReply"||typeof e.selectedText!="string"||e.requestId&&e.requestId!==t)}function Kb(e){try{let t=e.defaultView||mr();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 ds(e)!==null}function Yb(e){let n=(e.defaultView||mr())?.location.href??"";return/^https:\/\/docs\.google\.com\/spreadsheets\/(?:u\/\d+\/)?d\/[a-zA-Z0-9_-]+/.test(n)}function Qb(e){try{return e.defaultView?.top?.document??e}catch{return e}}function Na(e){let t=[e],n=Qb(e);return n!==e&&t.push(n),t}var Jb=".docs-texteventtarget-iframe",Zb=".kix-cursor",ey=".docos-replyview-body",ty=".docos-replyview",ny=".docos-author",Gf="\u200B",ry="\xA0";function ds(e){for(let t of Na(e)){let n=t.querySelector(Jb);if(n)return n}return null}function oy(e){for(let t of Na(e)){let n=t.querySelector(Zb);if(n)return n}return null}function Aa(e){let t=oy(e);return t?(t.ownerDocument?.defaultView?.getComputedStyle(t).display??t.style.display)==="none":!1}function Ca(e,t){let n=ds(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 Wf(e){let t=ds(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 sy(e){let t=ds(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 Ma(e){let t=ds(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(Gf,"g"),"")??""}function wl(e){let t=`
|
|
2
|
+
"use strict";var __roverSDK=(()=>{var Ua=Object.defineProperty;var Bb=Object.getOwnPropertyDescriptor;var Ub=Object.getOwnPropertyNames;var Fb=Object.prototype.hasOwnProperty;var Hb=(e,t,n)=>t in e?Ua(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var qb=(e,t)=>{for(var n in t)Ua(e,n,{get:t[n],enumerable:!0})},Wb=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ub(t))!Fb.call(e,o)&&o!==n&&Ua(e,o,{get:()=>t[o],enumerable:!(r=Bb(t,o))||r.enumerable});return e};var $b=e=>Wb(Ua({},"__esModule",{value:!0}),e);var O=(e,t,n)=>Hb(e,typeof t!="symbol"?t+"":t,n);var zE={};qb(zE,{__roverInternalsForTests:()=>VE,boot:()=>ya,close:()=>Dl,endTask:()=>Ol,getState:()=>Zd,hide:()=>Qd,identify:()=>Kd,init:()=>Xd,installGlobal:()=>rb,newTask:()=>Aa,open:()=>Ao,registerTool:()=>ef,send:()=>Jd,show:()=>Yd,shutdown:()=>_l,update:()=>Tl});var q;(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"})(q||(q={}));var XE=new Set(Object.values(q)),Fa=["element_id","source_element_id","target_element_id","center_element_id","element_ids"],Vb=40;function kf(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,Vb)}var Ln;(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"})(Ln||(Ln={}));var wf={[Ln.Unknown]:"unknown",[Ln.React]:"react",[Ln.Vue]:"vue",[Ln.Angular]:"angular",[Ln.Svelte]:"svelte",[Ln.JQuery]:"jquery"},zl={react:Ln.React,vue:Ln.Vue,angular:Ln.Angular,svelte:Ln.Svelte,jquery:Ln.JQuery},At;(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"})(At||(At={}));var JE={[At.Other]:"other",[At.Inline]:"inline",[At.Delegated]:"delegated",[At.React]:"react",[At.Vue]:"vue",[At.Angular]:"angular",[At.Svelte]:"svelte",[At.JQuery]:"jquery",[At.Native]:"native"},ZE={inline:At.Inline,delegated:At.Delegated,react:At.React,vue:At.Vue,angular:At.Angular,svelte:At.Svelte,jquery:At.JQuery,other:At.Other,native:At.Native},Ee;(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"})(Ee||(Ee={}));var Ha={[q.click_element]:Ee.click_element,[q.type_into_element]:Ee.type_into_element,[q.type_and_enter]:Ee.type_and_enter,[q.select_dropdown_value]:Ee.select_dropdown_value,[q.clear_element]:Ee.clear_element,[q.focus_element]:Ee.focus_element,[q.hover_element]:Ee.hover_element,[q.right_click_element]:Ee.right_click_element,[q.double_click_element]:Ee.double_click_element,[q.long_press_element]:Ee.long_press_element,[q.drag_element]:Ee.drag_element,[q.drag_and_drop]:Ee.drag_and_drop,[q.swipe_element]:Ee.swipe_element,[q.adjust_slider]:Ee.adjust_slider,[q.describe_images]:Ee.describe_images,[q.scroll_to_element]:Ee.scroll_to_element,[q.paste_text]:Ee.paste_text,[q.check_field_validity]:Ee.check_field_validity,[q.select_text]:Ee.select_text,[q.mouse_wheel]:Ee.mouse_wheel,[q.copy_text]:Ee.copy_text,[q.upload_file]:Ee.upload_file,[q.go_back]:Ee.go_back,[q.go_forward]:Ee.go_forward,[q.refresh_page]:Ee.refresh_page,[q.press_key]:Ee.press_key,[q.scroll_page]:Ee.scroll_page,[q.wait_action]:Ee.wait_action,[q.wait_for_element]:Ee.wait_for_element,[q.pinch_zoom]:Ee.pinch_zoom,[q.goto_url]:Ee.goto_url,[q.google_search]:Ee.google_search,[q.open_new_tab]:Ee.open_new_tab,[q.switch_tab]:Ee.switch_tab,[q.close_tab]:Ee.close_tab,[q.solve_captcha]:Ee.solve_captcha,[q.answer_task]:Ee.answer_task,[q.dispatch_pointer_path]:Ee.dispatch_pointer_path,[q.network_run_recipe]:Ee.network_run_recipe,[q.rover_external_read_context]:Ee.rover_external_read_context,[q.rover_external_act_context]:Ee.rover_external_act_context},Ef=Object.fromEntries(Object.entries(Ha).map(([e,t])=>[t,e]));function qa(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 xf={semanticIdStart:1,interactiveIdStart:1,includeFrameContents:!0,clearIframes:!0,frameContextLabel:null,signalProvider:null,disableDomAnnotations:!1},un={...xf},$a=globalThis;function Sf(e){un={...xf,...e||{}}}function Po(){return un.signalProvider??null}function bt(){try{return typeof $a.document<"u"?$a.document:null}catch{return null}}function yr(){try{return typeof $a.window<"u"?$a.window:null}catch{return null}}function ee(e,t){if(e&&typeof e=="object"){let n=e.ownerDocument;if(n)return n;if(e.nodeType===9)return e}return t??bt()??{}}function Te(e,t){return ee(e,t?t.document:null)?.defaultView??t??yr()??{}}function ie(e,t){return e?.defaultView??t??yr()??{}}function Va(e,t){try{return e?.getElementById?.(t)??null}catch{return null}}function za(e,t){try{return e?.querySelector?.(t)??null}catch{return null}}function jl(e,t){try{return Array.from(e?.querySelectorAll?.(t)??[])}catch{return[]}}function ki(e){try{return e.contentDocument||(e.contentWindow?.document??null)}catch{return null}}function ja(e,t){let n=e.CSS?.escape;return typeof n=="function"?n(t):t.replace(/([^\w-])/g,"\\$1")}function Dn(e,t){try{return e[t]}catch{return}}function Tr(e,t){return!!e&&String(e.tagName||"").toUpperCase()===t.toUpperCase()}function Rf(e,t){let n=Dn(t,"HTMLAnchorElement");return n?e instanceof n:Tr(e,"A")}function zn(e,t){let n=Dn(t,"HTMLInputElement");return n?e instanceof n:Tr(e,"INPUT")}function sr(e,t){let n=Dn(t,"HTMLTextAreaElement");return n?e instanceof n:Tr(e,"TEXTAREA")}function Af(e,t){let n=Dn(t,"HTMLLabelElement");return n?e instanceof n:Tr(e,"LABEL")}function Cf(e,t){let n=Dn(t,"HTMLSelectElement");return n?e instanceof n:Tr(e,"SELECT")}function Mf(e,t){let n=Dn(t,"HTMLSlotElement");return n?e instanceof n:Tr(e,"SLOT")}function Nf(e,t){let n=Dn(t,"HTMLButtonElement");return n?e instanceof n:Tr(e,"BUTTON")}function Lf(e,t){let n=Dn(t,"HTMLImageElement");return n?e instanceof n:Tr(e,"IMG")}function Df(e,t){let n=Dn(t,"HTMLVideoElement");return n?e instanceof n:Tr(e,"VIDEO")}function Of(e,t){let n=Dn(t,"HTMLCanvasElement");return n?e instanceof n:Tr(e,"CANVAS")}function Ct(e,t){if(!e||e.nodeType!==1)return!1;let n=Dn(t,"HTMLElement");return n?e instanceof n:typeof e.tagName=="string"}function On(e){return!!e&&e.nodeType===11&&typeof e.host=="object"&&typeof e.mode=="string"}function Bo(e){if(!e||e.nodeType!==1)return!1;let t=ee(e),r=ie(t).Element;return r?e instanceof r:typeof e.tagName=="string"}function wi(e){if(!e||e.nodeType!==1)return!1;let t=ee(e),r=ie(t).HTMLIFrameElement;return r&&e instanceof r?!0:String(e.tagName||"").toUpperCase()==="IFRAME"}function zb(e,t){if(!e)return!1;if(e.nodeType===9)return!0;let n=Dn(t,"Document");return n?e instanceof n:!1}function jb(e,t){if(!e)return!1;let n=Dn(t,"Window");if(n)return e instanceof n;try{return e.window===e}catch{return!1}}function Ga(e){try{return e.document}catch{return null}}function Ka(e,t){if(zb(e,t))try{return e.documentElement}catch{return null}if(jb(e,t)){let n=Ga(e);if(!n)return null;try{return n.documentElement}catch{return null}}return null}function Wa(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 If(e,t,n){try{let r=ee(t,n);return new URL(e,r.baseURI).href}catch{return e}}function Xa(e,t){let n=e.tagName.includes("-"),r=e.getAttribute("href")||e.getAttribute("src")||e.getAttribute("data")||e.getAttribute("action");if(r){let o=If(r,e,t);return o.trim().toLowerCase().startsWith("javascript:")?null:o}if(n)return null;try{let o=e,s=Wa(o.href)||Wa(o.src)||Wa(o.data)||Wa(o.action);return s?If(s,e,t):null}catch{return null}}var Pf=["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"],Ve={};Pf.forEach((e,t)=>{Ve[e]=t});var Hr={};Pf.forEach((e,t)=>{Hr[t]=e});function Uo(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 Gb(e){let t=Uo(e);if(t){let n=new Set;for(let{id:r}of t.entries)n.add(r);return[...n]}return[]}function Ei(e){return ys(e).map(n=>Hr[n]).filter(n=>!!n)}function ys(e){let t=Po();if(t?.getEventHandlerIds)try{let o=t.getEventHandlerIds(e);if(o&&o.length)return o}catch{}let n=e.getAttribute(uo),r=Gb(n);return!r||r.length===0?[]:r}var Gl=["media"],Bf=new Set(Gl),Kl=["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 Uf=new Set(Kl),qr=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"]),Ii=new Set(["group","region","section","banner","contentinfo","main","navigation","complementary","form","article","document","presentation","none"]);var Ff=["none","presentation"],Ue;(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"})(Ue||(Ue={}));var Hf={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"]},xi={heading:{selector:"h6,h1,h3,h2,h5,h4"},checkbox:{conditionalSelectors:[{selector:"input",conditions:[{type:Ue.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:Ue.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"grid"}]},{selector:"td",conditions:[{type:Ue.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"treegrid"}]},{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:Ue.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"treegrid"},{type:Ue.HAS_TABLE_COLUMN_DATA,hasData:!0},{type:Ue.HAS_TABLE_ROW_DATA,hasData:!0}]}]},slider:{conditionalSelectors:[{selector:"input",conditions:[{type:Ue.PROPERTY_VALUE_MATCH,property:"type",values:["range"]}]}]},listitem:{selector:"li"},contentinfo:{conditionalSelectors:[{selector:"footer",conditions:[{type:Ue.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:Ue.PROPERTY_VALUE_MATCH,property:"type",values:["submit","reset","image","button"]}]}]},status:{selector:"output"},form:{conditionalSelectors:[{selector:"form",conditions:[{type:Ue.HAS_ACCESSIBLE_NAME}]}]},article:{selector:"article"},textbox:{selector:"textarea",conditionalSelectors:[{selector:"input:not([list])",conditions:[{type:Ue.PROPERTY_VALUE_MATCH,property:"type",values:["url","text","tel","email"]}]}]},radio:{conditionalSelectors:[{selector:"input",conditions:[{type:Ue.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:Ue.HAS_TABLE_ROW_DATA,hasData:!1}]}]},list:{selector:"ul,ol,menu"},region:{conditionalSelectors:[{selector:"section",conditions:[{type:Ue.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:Ue.PROPERTY_VALUE_MATCH,property:"type",values:["search"]}]}]},cell:{conditionalSelectors:[{selector:"td",conditions:[{type:Ue.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"table"}]},{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:Ue.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"table"},{type:Ue.HAS_TABLE_COLUMN_DATA,hasData:!0},{type:Ue.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:Ue.HAS_TABLE_COLUMN_DATA,hasData:!1},{type:Ue.HAS_TABLE_ROW_DATA,hasData:!0}]}]},dialog:{selector:"dialog"},listbox:{selector:"select[multiple],datalist",conditionalSelectors:[{selector:"select",conditions:[{type:Ue.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:Ue.PROPERTY_VALUE_MATCH,property:"type",values:["number"]}]}]},math:{selector:"math"},combobox:{selector:"select:not([size]):not([multiple])",conditionalSelectors:[{selector:"select:not([multiple])",conditions:[{type:Ue.ATTRIBUTE_LESS_THAN,attribute:"size",value:2}]},{selector:"input[list]",conditions:[{type:Ue.PROPERTY_VALUE_MATCH,property:"type",values:["url","text","tel","search","email"]}]}]},banner:{conditionalSelectors:[{selector:"header",conditions:[{type:Ue.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"}},uo="rtrvr-ls",Wr="rtrvr-ro",Xl="rtrvr-mw-ready",Fo="rtrvr-mw-busy",Yl="rtrvr-mwa-ready",qf=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"]),Wf=["BUTTON","INPUT","METER","OUTPUT","PROGRESS","SELECT","TEXTAREA"],$f=["h1","h2","h3","h4","h5","h6"],Vf="http://www.w3.org/1999/xhtml",zf="http://www.w3.org/2000/svg",en="rtrvr-label";var Ja=new Set(["NOSCRIPT","SCRIPT","STYLE","META"]),Ho="CODE",qo="PRE",jf="aria-hidden",Gf="target";var Ya;(function(e){e[e.value=0]="value",e[e.alt=1]="alt",e[e.list=2]="list",e[e.title=3]="title"})(Ya||(Ya={}));var Ts;(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"})(Ts||(Ts={}));var Qa;(function(e){e[e.VALUENOW=0]="VALUENOW",e[e.VALUETEXT=1]="VALUETEXT"})(Qa||(Qa={}));var Ql=new Set([Ve.click,Ve.dblclick,Ve.doubleclick,Ve.contextmenu,Ve.auxclick,Ve.pointerdown,Ve.pointerup,Ve.mousedown,Ve.mouseup,Ve.touchstart,Ve.touchend,Ve.keydown,Ve.keyup,Ve.input,Ve.beforeinput,Ve.change,Ve.submit,Ve.reset,Ve.paste,Ve.dragstart,Ve.dragend,Ve.drop]),Kf=new Set([...Ql,Ve.scroll,Ve.wheel,Ve.mouseenter,Ve.mouseover,Ve.focus,Ve.blur,Ve.focusin,Ve.focusout]),Za=new Set(["click","dblclick","auxclick","contextmenu","mousedown","mouseup","pointerdown","pointerup","touchstart","touchend"]),Jl=new Set(["input","change","beforeinput","keydown","keyup","keypress","paste","compositionstart","compositionend"]),Zl=new Set(["drag","dragstart","dragend","dragenter","dragleave","dragover","drop"]);var fo;(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"})(fo||(fo={}));var Si;(function(e){e[e.HTML=0]="HTML",e[e.SVG=1]="SVG"})(Si||(Si={}));var ec;(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"})(ec||(ec={}));var tc;(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"})(tc||(tc={}));var Tn;(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"})(Tn||(Tn={}));var Gt;(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"})(Gt||(Gt={}));var $r;(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"})($r||($r={}));var Kb=[...Kl,...Object.keys(xi),...Gl],Xf=[...new Set(Kb)],_s={};Xf.forEach((e,t)=>{_s[e]=t});var Ri={};Xf.forEach((e,t)=>{Ri[t]=e});var nc=class{constructor(t=1){O(this,"currentId");this.currentId=t}generateId(){let t=this.currentId;return this.currentId++,t}initialize(t=1){this.currentId=t}getCurrentValue(){return this.currentId}};function Ai(e){let t=Po();if(t?.getRoleHint)try{let o=t.getRoleHint(e);if(o)return o}catch{}let n=e.getAttribute(Wr);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=Ri[o];if(s)return s}}return r}function ks(e){return Array.from(new Set(e))}function Yf(e,t){if(!e||e.length===0)return ks(t);let n=new Set([...e,...t]);return ks(Array.from(n))}function Pn(e,t){let r=Po()?.getEventHandlerIds?.(e)??ys(e),o=r.length>0&&r.some(a=>Ql.has(a)),s=rc(e),i=t?Ii.has(t):!1;return{element:e,semanticRole:t,eventHandlerIndices:r,isEditableRegion:s,hasNodeWorthyHandlers:o,isLikelyStructuralContainer:i}}var Xb=new Set(["text","search","url","tel","password","email","number","date","datetime-local","time","month","week","color"]);function Yb(e){let n=Te(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 Qb(e){let t=Te(e);if(!zn(e,t))return!1;let n=(e.type||"text").toLowerCase();return Xb.has(n)?!e.disabled&&!e.readOnly:!1}function Jb(e){let t=Te(e);return sr(e,t)&&!e.disabled&&!e.readOnly}function Zb(e){let t=e;return!(!t.isContentEditable||t.getAttribute("aria-readonly")==="true"||t.getAttribute("aria-disabled")==="true")}function rc(e){return!e||!Yb(e)?!1:!!(Qb(e)||Jb(e)||Zb(e))}function Ci(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 Mi(e){let t=String(e??"").replace(/[\n\r\t]/g," ").replace(/\s+/g," ").trim();return t=t.replace(/\[/g,"[").replace(/\]/g,"]"),t}function Qf({element:e,elementID:t,frameContextLabel:n}){let r=!un.disableDomAnnotations,o=[`[id=${t}]`],s=Te(e);if(wi(e)){let c=Mi(e.id||e.getAttribute("name")||"unnamed");o.push(`[iframe=${c}]`)}if(n){let c=Mi(n);o.push(`[iframeRoot=${c}]`)}if(Lf(e,s)&&o.push(`[size=${e.clientWidth}x${e.clientHeight}]`),(Df(e,s)||Of(e,s))&&o.push(`[size=${e.clientWidth}x${e.clientHeight}]`),zn(e,s)||sr(e,s)){let c=ev(e);o.push(...c)}e.getAttribute(jf)==="true"&&o.push("[aria-hidden=true]"),e.disabled&&o.push("[disabled]"),r&&Rf(e,s)&&e.setAttribute(Gf,"_self");let a=o.join(" ");return r&&e.setAttribute(en,a),a}function ev(e){let t=[],n=Te(e),r=zn(e,n);if(r&&e.type&&e.type!=="text"&&t.push(`[type=${e.type}]`),e.name){let o=Mi(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=Mi(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=Mi(o).replace(/\\/g,"\\\\").replace(/"/g,'\\"');t.push(`[value="${s}"]`)}return t}var Wo=new nc,eu=new WeakMap;function Jf(){eu=new WeakMap}function oc(e){let t=eu.get(e);if(t)return t;let n=Wo.generateId();return eu.set(e,n),n}var sc=new Map,tu=new WeakMap;function Zf(){sc.clear(),tu=new WeakMap}function nu(e,t){try{typeof WeakRef<"u"?sc.set(e,new WeakRef(t)):sc.set(e,t)}catch{}}function Ni(e){let t=sc.get(e);if(!t)return null;let n=t instanceof WeakRef?t.deref():t;return!n||n.isConnected===!1?null:n}function po(e){let t=null,n=oc(e);if(un.frameContextLabel)t=un.frameContextLabel;else{let o=bt();if(o&&e.ownerDocument!==o)try{let i=e.ownerDocument?.defaultView?.frameElement?.getAttribute(en)||"",a=i?Ci(i):null;t=a?String(a):null}catch{t=""}}let r=Qf({element:e,elementID:n,frameContextLabel:t});if(nu(n,e),r)try{tu.set(e,r)}catch{}return r}function ep(e){return tu.get(e)??null}function ru(e,t){try{e.querySelectorAll?.(`[${en}]`)?.forEach(r=>r.removeAttribute(en))}catch{}if(t.includeShadow)try{let n=e.querySelectorAll?.("*");if(n)for(let r of Array.from(n))try{let o=r.shadowRoot;o&&ru(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=ki(r);o?.body&&ru(o.body,t)}catch{}}catch{}}function tp(e,t={}){if(un.disableDomAnnotations)return;let n=Bo(e)?Te(e):ie(e)??window,r=Ka(e,n)??e;if(r){try{r.removeAttribute?.(en)}catch{}ru(r,{includeShadow:t.includeShadow??!0,includeIframes:t.includeIframes??!0})}}var _r={},ou=new WeakMap,ic=new WeakSet;function np(){_r={},ou=new WeakMap,ic=new WeakSet,Jf()}function tn({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:s,originatedFromParent:i,elementContext:a}){let c=oc(e);nu(c,e);let d=_r[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),_r[c]=p}}else{if(d&&!d.provisionalFromParent){if((o||ws(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=ks(p);v.length>0&&(d.eventHandlers=Yf(d.eventHandlers,v))}u&&(d.isEditable=!0)}return c}if(ic.has(e))return c;ic.add(e);try{_r[c]=rp({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:s,elementContext:a})}finally{ic.delete(e)}}return c}function Li(e){let t=ou.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),_r[s]=i,ou.set(e,s),s}function sp(e,t){let n=ap(e),{minY:r,maxY:o}=n.getCellBounds(t);return n.getRows().slice(r,o+1).some(s=>s.some(Di))}function ip(e,t){let n=ap(e),{minX:r,maxX:o}=n.getCellBounds(t);return n.getRows().some(s=>s.slice(r,o+1).some(Di))}var cc=class{constructor(t=[]){O(this,"cells");O(this,"getCellAt",(t,n)=>this.getRowAt(n)[t]);O(this,"setCellAt",(t,n,r)=>{this.getRowAt(n)[t]=r});O(this,"getRowAt",t=>(this.cells[t]===void 0&&(this.cells[t]=[]),this.cells[t]));O(this,"getRows",()=>this.cells);O(this,"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}});O(this,"merge",t=>{this.cells=this.getRows().concat(t.getRows())});this.cells=t}get rowCount(){return this.cells.length}get columnCount(){return Math.max(...this.cells.map(t=>t.length))}};function ap(e){let n=Te(e).TableGrid||cc,r=new n;e.tHead!==null&&r.merge(ac(e.tHead.rows)),Array.from(e.tBodies).forEach(s=>{r.merge(ac(s.rows))});let o=[];for(let s of Array.from(e.children))su(s)&&$o(s,"tr")&&o.push(s);return r.merge(ac(o)),e.tFoot!==null&&r.merge(ac(e.tFoot.rows)),r}function ac(e){let t=new cc,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];)!Di(t.getCellAt(o,r))&&n[o]&&t.setCellAt(o,r,n[o]),o++;for(let i=o;i<o+s.colSpan;i++){op(s)===0&&(n[i]=s,t.setCellAt(i,r,s));for(let a=r;a<r+op(s);a++)Di(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&&!Di(t.getCellAt(s,r))&&t.setCellAt(s,r,i)}}return t}function op(e){let t=e.getAttribute("rowSpan");if(t===null||t.trim()==="")return 1;let n=Number(t);return isNaN(n)?1:n}function Di(e){return e!==void 0&&$o(e,"td")}function ir(e){let t=e.tagName?.toLowerCase();if(t==="code"||t==="pre"){let r=lv(e);if(r)return r}let n=cp(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||ys(e).length>0||e.getAttribute("tabindex")!==null?"img":null}if(ys(e).length>0){let o=e.tagName.toLowerCase();if(["div","span","li","p","i","em","strong","b"].includes(o))return tv(e)}}if(t==="td"&&e.getAttribute("role")===null)return"cell";if(n!==null&&t==="th"){let r=e.getAttribute("role");if(r&&lp(r))return r;let o=e;return o.scope==="col"||o.hasAttribute("aria-sort")?"columnheader":o.scope==="row"?"rowheader":"cell"}return n}function tv(e){return Ai(e)??null}function cp(e){let t=e.getAttribute("role");if(t!==null)return Ff.includes(t)||!lp(t)?null:t;let n=e.tagName.toLowerCase();return(Hf[n]??[]).find(o=>nv(e,o))||null}function nv(e,t){let n=xi[t],r=n?.selector;if(r&&lc(e,r))return!0;let o=n?.conditionalSelectors;return o?o.some(i=>lc(e,i.selector)&&i.conditions.every(c=>ov(e,c))):!1}function rv(e,t){let n=(t||"").trim().replace(/^#/,"");if(!n)return null;try{let r=e.getRootNode?.();if(On(r)){let o=Te(e),s=`#${ja(o,n)}`,i=za(r,s);if(i)return i}}catch{}return Va(ee(e),n)}function ov(e,t){switch(t.type){case Ue.ATTRIBUTE_GREATER_THAN:{let n=e.getAttribute(t.attribute);return n!==null&&Number(n)>t.value}case Ue.ATTRIBUTE_LESS_THAN:{let n=e.getAttribute(t.attribute);return n!==null&&Number(n)<t.value}case Ue.HAS_ACCESSIBLE_NAME:return e.hasAttribute("aria-label")?!0:(e.getAttribute("aria-labelledby")||"").split(/\s+/).filter(Boolean).some(r=>rv(e,r)!=null);case Ue.FORBIDDEN_ANCESTORS:return Vr(e,t.selector)===null;case Ue.BOOLEAN_PROPERTY:return e[t.property]===t.value;case Ue.PROPERTY_VALUE_MATCH:return t.values.some(n=>n===e[t.property]);case Ue.ANCESTOR_ROLE_REQUIRED:{let n=e.parentElement;if(n===null)return!1;let r=Vr(n,t.tag);return r!==null&&cp(r)===t.role}case Ue.HAS_TABLE_COLUMN_DATA:{let n=Vr(e,"table");return n===null?!1:t.hasData===ip(n,e)}case Ue.HAS_TABLE_ROW_DATA:{let n=Vr(e,"table");return n===null?!1:t.hasData===sp(n,e)}default:return sv(t),!1}}function sv(e){throw new Error(`unexpected value ${e}!`)}function lp(e){return av(e)||cv(e)||iv(e)}function iv(e){return Bf.has(e)}function av(e){return Uf.has(e)}function cv(e){return xi.hasOwnProperty(e)}function lv(e){if(e.tagName!==Ho&&e.tagName!==qo)return null;if(Ei(e).some(r=>r==="click"||r==="copy"))return"button";let n=e.getAttribute("tabindex");return n!==null&&parseInt(n,10)>=0?"button":e.tagName===qo||e.tagName===Ho&&e.closest("pre")?"code":null}var uv={[Gt.display]:[Gt.beforeDisplay,Gt.afterDisplay],[Gt.content]:[Gt.beforeContent,Gt.afterContent]},iu=new Map,dv={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 fv(e,t){if(!iu.has(e)){let n=dv[t]||t.replace(/([A-Z])/g,"-$1").toLowerCase();iu.set(e,n)}return iu.get(e)}var pv={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 fp(e,t,n){let r=pv[e];return r?r(t,n):t.trim()!==""&&!["initial","inherit","unset"].includes(t)}function pp(e){let t={},n=Te(e);if(!Ct(e,n))return t;let r=n.getComputedStyle(e),o=new Map([[Gt.beforeDisplay,n.getComputedStyle(e,"::before")],[Gt.afterDisplay,n.getComputedStyle(e,"::after")],[Gt.beforeContent,n.getComputedStyle(e,"::before")],[Gt.afterContent,n.getComputedStyle(e,"::after")]]);for(let s in Gt)if(isNaN(Number(s))){let i=Gt[s],a=fv(i,s),c=uv[i];c?((i===Gt.display||i===Gt.content)&&up(r,a,i,s,t,e),dp(o.get(c[0]),a,c[0],"beforeContent",t),dp(o.get(c[1]),a,c[1],"afterContent",t)):up(r,a,i,s,t,e)}return t}function up(e,t,n,r,o,s){if(e){let i=e.getPropertyValue(t);i&&fp(r,i,s)&&(o[n]=i)}}function dp(e,t,n,r,o){if(e){let s=e.getPropertyValue(t);(t==="content"&&s&&s!=="none"&&s!=='""'&&s!=="''"||s&&fp(r,s))&&(o[n]=s)}}function Vo(e,t){let n=Te(e);if(!Ct(e,n))return!0;if(t&&qr.has(t))return!1;if(e.hasAttribute("hidden")||Vr(e,"[hidden]")!==null||Vr(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 Oi(e){return ar(e)&&e.classList.contains("jasmine_html-reporter")}function mv(e){let t=e.getAttribute("role");return t==="presentation"||t==="none"}function mp(e){return e?e.split(/\s+/).map(t=>t.trim()).filter(Boolean).map(t=>t.replace(/^#/,"")):[]}function hp(e,t){let n=(t||"").trim().replace(/^#/,"");if(!n)return null;try{let o=e.getRootNode?.();if(On(o)){let s=Te(e),i=`#${ja(s,n)}`,a=za(o,i);if(a)return a}}catch{}let r=ee(e);return Va(r,n)}function au(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=hv(o,s,s+8192),a=au.apply(null,i);for(let c=0;c<a.length;c++)n.push(a[c])}else n.push(o)}return n}function hv(e,t,n){return arguments.length<=2?Array.prototype.slice.call(e,t):Array.prototype.slice.call(e,t,n)}function gp(e,t){return gv(e,t).concat(bv(e))}function gv(e,t){return au(lu(e).map(r=>wp(r)&&ar(r)?bp(r,t):r))}function bp(e,t){if(!e||Vo(e,t))return[];if(!mv(e))return[e];let n=Array.from(e.children);return au(n.map(r=>bp(r,t)))}function vp(e){let t=mp(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=hp(e,o);s&&s!==e&&n.push(s)}return n}function bv(e){let t=vp(e);for(let n of t)n["aria-owned-by"]=e;return t}function yp(e){let t=Te(e),n=ee(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)<=_v(e))return!1;let o=vv(e);return!o||!Tv(o)||!wv(e)||o.getAttribute("role")==="dialog"||e.getAttribute("role")==="dialog"?!1:kv(e)}function vv(e){return[e.previousElementSibling,e.nextElementSibling,...Array.from(e.children),...e.parentElement?[e.parentElement.previousElementSibling,e.parentElement.nextElementSibling]:[]].filter(n=>n!==null).find(yv)||null}function yv(e){if(Vo(e))return!1;let n=Te(e).getComputedStyle(e);return(n?.position==="fixed"||n?.position==="absolute")&&n?.backgroundColor!=="rgba(0, 0, 0, 0)"&&n?.backgroundColor!=="transparent"&&n?.pointerEvents!=="none"}function Tv(e){let t=Te(e),n=e.getBoundingClientRect();return n.top<=0&&n.left<=0&&n.bottom>=t.innerHeight&&n.right>=t.innerWidth}function _v(e){let t=ee(e),n=Te(e),r=n?.getComputedStyle;if(!r)return 0;let o=jl(t,"*").filter(s=>s!==e&&!Vo(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 kv(e){return e.querySelectorAll('a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])').length>0}function wv(e){let t=e.parentElement;if(!t)return!1;for(let n of Array.from(t.children))if(n!==e&&!Vo(n)&&n.getAttribute("aria-hidden")!=="true")return!1;return!0}function Ev(){try{let t=bt()?.querySelector?.("dialog:modal");return'[aria-modal="true"], dialog:modal'}catch{return'[aria-modal="true"]'}}var Tp=Ev();function Iv(e){return e.getAttribute("aria-disabled")==="true"||e.hasAttribute("disabled")}function cu(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=ee(e),r=new URL(t,n.baseURI);return r.protocol==="javascript:"&&(r.pathname.trim()!==""||r.search.trim()!==""||r.hash.trim()!=="")}catch{return!1}}function _p(e){return qf.has(e)}function xv(e){let t=e.parentElement,n=ee(e);if(!(!t||t===n.body||t===n.documentElement))return tn({targetElement:t,originatedFromParent:!0})}function rp({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:s,elementContext:i}){let a={nodeCategory:e.nodeType},c=t||Iv(e),d=xv(e);if(d&&(a.parent=d),n){let Le=_s[n];typeof Le=="number"?a.semanticRole=Le:a.semanticRole=n}if(c&&(a.isDisabled=!0),i){let{eventHandlerIndices:Le,isEditableRegion:Ot}=i,ot=ks(Le);ot.length>0&&(a.eventHandlers=ot),Ot&&(a.isEditable=!0)}let p=Rv(e);p&&Object.keys(p).length>0&&(a.ariaProperties=p);let u=Av(e);u&&Object.keys(u).length>0&&(a.ariaStates=u);let v=e.nodeName;v&&v.trim()&&(a.elementName=v);let h=pp(e);h&&Object.keys(h).length>0&&(a.computedStyles=h),Vo(e)&&(a.isInvisible=!0);let g=Sv(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 Le=a.inputType||a.preservedAttributes?.[Tn.type];Le==="submit"||Le==="reset"||Le==="clear"||(_.includes("submit")&&(a.preservedAttributes={...a.preservedAttributes||{},[Tn.type]:"submit"}),_.includes("clear")&&(a.preservedAttributes={...a.preservedAttributes||{},[Tn.type]:"clear"}),_.includes("reset")&&(a.preservedAttributes={...a.preservedAttributes||{},[Tn.type]:"reset"}))}let A=Ov({element:e});A&&A.length>0&&(a.labelReferences=A);let R=e.tagName;if(R&&(a.elementTag=R),Mv(e)&&(a.hasFocus=!0),!o){let Le=uu({element:e,semanticRole:n,parentDisabled:c,excludeLabels:r});Le&&Le.length>0&&(a.childElements=Le)}let U=Wv({element:e});U&&U.length>0&&(a.ownedElements=U);let D=Xa(e);D&&(a.resourceLocator=D),(o||ws(e))&&(a.isFrameElement=!0),s&&s.length>0&&(a.frameContent=s);let H=e.type;H&&typeof H=="string"&&H.trim()&&(a.inputType=H);let C=e.placeholder;C&&typeof C=="string"&&C.trim()&&(a.placeholderText=C);let J=e.value;J&&typeof J=="string"&&J.trim()&&(a.elementValue=J);let ce=Pv({element:e,parentDisabled:t,semanticRole:n});if(ce&&ce.length>0&&(a.selectedOptions=ce),Vr(e,"select,datalist")&&(a.nearestSelectList=!0),su(e))a.elementNamespace=Si.HTML;else if(Cv(e)){a.elementNamespace=Si.SVG,a.svgStructure=Nv(e);let Le=Lv(e);Le&&Object.keys(Le).length>0&&(a.preservedAttributes?a.preservedAttributes={...a.preservedAttributes,...Le}:a.preservedAttributes=Le)}let me=r?void 0:Bv({element:e});me&&me.length>0&&(a.associatedLabels=me);let Se=e.scope;Se&&typeof Se=="string"&&Se.trim()&&(a.tableScope=Se);let be=Fv({element:e});be&&(a.tableCaption=be);let Re=Hv({element:e});Re&&(a.figureCaption=Re);let $e=qv({element:e});return $e&&(a.fieldsetLegend=$e),Vr(e,"table")&&(a.nearestTable=!0),a}function Sv(e,t){let n={},r=new Set(Object.values(Tn).filter(a=>typeof a=="string")),o=new Set(Object.keys(Ya).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||!qr.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=Tn[p],g=s.has(p)?"true":d;n[h]=g}}}if(!n[Tn[en]]){let a=ep(e);a&&(n[Tn[en]]=a)}return n}function Rv(e){return kp(e,ec,Qa)}function Av(e){return kp(e,tc,null)}function kp(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"&&$f.includes(e.tagName.toLowerCase()?.trim())&&(r[s]=e.tagName.substring(1))}return r}function ar(e){return wp(e)&&e.nodeType===fo.ELEMENT}function uc(e){return e.nodeType===fo.TEXT}function wp(e){let t=typeof e;return t=="object"&&e!=null||t=="function"}function su(e){return ar(e)&&(!e.namespaceURI||e.namespaceURI===Vf)}function Cv(e){return ar(e)&&e.namespaceURI===zf}function ws(e){return e.tagName==="IFRAME"}function $o(e,t){return"tagName"in e?e.tagName?.toLowerCase()===t:e.elementTag?.toLowerCase()===t}function Vr(e,t){if(e.closest)return e.closest(t);for(;!lc(e,t);){if(e.parentElement===null)return null;e=e.parentElement}return e}function lc(e,t){return e.matches?.(t)??e.msMatchesSelector?.(t)??e.webkitMatchesSelector(t)}function Mv(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 Nv(e){let t={},n=$r.text,r=$r.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[$r.viewBox]=i);let a=e.querySelectorAll("path");a.length>0&&(t[$r.paths]=a.length,t[$r.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=$r[d];t[u]=p}}),Object.keys(t).length>0?t:void 0}function Lv(e){let t={};if(!e?.hasAttributes())return t;for(let n of Object.values(Ts).filter(r=>typeof r=="number")){let r=Ts[n];if(r){let o=r;if(Ts.hasOwnProperty(o)&&e.hasAttribute(o)){let s=e.getAttribute(o);s?.trim()&&(t[n]=s)}}}return t}function Dv({frameElement:e,parentDisabled:t,excludeLabels:n}){if(!un.includeFrameContents)return[];let r=null;try{r=e.contentWindow?.document?.body||null}catch{return[]}if(!r)return[];let o=[];for(let s of lu(r))if(!(Oi(s)||Ep(s))){if(ar(s)){let i=s,a=ir(i),c=Pn(i,a),{shouldCreate:d,shouldAnnotate:p}=dc(c);if(d){p&&po(i);let u=tn({targetElement:i,parentDisabled:t,semanticRole:a??void 0,excludeLabels:n,elementContext:c});u&&o.push(u)}else{let u=uu({element:i,semanticRole:a??void 0,parentDisabled:t,excludeLabels:n});o.push(...u)}}else if(uc(s)){let i=Li(s);i&&o.push(i)}}return o}function lu(e){let t=Te(e);if(Mf(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||Po()?.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 uu({element:e,semanticRole:t,parentDisabled:n,excludeLabels:r}){let o=[];for(let s of lu(e))if(!(Oi(s)||Ep(s))){if(ar(s)){let i=s,a=ir(i),c=Pn(i,a);if(ws(i)){po(i);let u=Dv({frameElement:i,parentDisabled:n,excludeLabels:r}),v=tn({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}=dc(c);if(d){p&&po(i);let u=tn({targetElement:i,parentDisabled:n,semanticRole:a??void 0,excludeLabels:r,elementContext:c});u&&o.push(u)}else{let u=uu({element:i,semanticRole:a??void 0,parentDisabled:n,excludeLabels:r});o.push(...u)}}else if(uc(s)){let i=Li(s);i&&o.push(i)}}return o}function Ov({element:e}){let t=mp(e.getAttribute("aria-labelledby")),n=new Set;for(let r of t){let o=hp(e,r);if(!(!o||o===e)&&o){let s=ir(o),i=tn({targetElement:o,semanticRole:s,elementContext:Pn(o,s)});n.add(i)}}return Array.from(n)}function Pv({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=>tn({targetElement:o,parentDisabled:t,semanticRole:"option",elementContext:Pn(o,"option")})):$o(e,"select")&&(r=Array.from(e.selectedOptions).map(o=>tn({targetElement:o,parentDisabled:t,semanticRole:"option",elementContext:Pn(o,"option")})))),r}function Bv({element:e}){if(Wf.includes(e.tagName)){let t=ee(e),n=jl(t,"label"),r=new Set;return Array.from(n).filter(o=>o!==e&&Uv(o,e)).map(o=>{let s=ir(o),i=tn({targetElement:o,semanticRole:s,excludeLabels:!0,elementContext:Pn(o,s)});r.add(i)}),Array.from(r)}}function Uv(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 Fv({element:e}){if($o(e,"table")){let t=e.querySelector("caption");if(t&&t!==e){let n=ir(t);return tn({targetElement:t,semanticRole:n,elementContext:Pn(t,n)})}}}function Hv({element:e}){if($o(e,"figure")){let t=e.querySelector("figcaption");if(t&&t!==e){let n=ir(t);return tn({targetElement:t,semanticRole:n,elementContext:Pn(t,n)})}}}function qv({element:e}){if($o(e,"fieldset")){let t=e.querySelector("legend");if(t&&t!==e){let n=ir(t);return tn({targetElement:t,semanticRole:n,elementContext:Pn(t,n)})}}}function Wv({element:e}){let t=new Set,n=vp(e);for(let r of n){let o=ir(r),s=tn({targetElement:r,semanticRole:o,elementContext:Pn(r,o)});t.add(s)}return Array.from(t)}function dc(e){let{semanticRole:t,eventHandlerIndices:n,isEditableRegion:r,hasNodeWorthyHandlers:o,isLikelyStructuralContainer:s}=e,i=n.length>0&&n.some(u=>Kf.has(u)),c=!!t||!s&&(o||r),d=!!t&&qr.has(t);return{shouldCreate:c,shouldAnnotate:c&&(d||r||i)}}function Ep(e){if(!ar(e))return!1;let t=e,n=t.tagName;return Ja.has(n)?!0:n===Ho||n===qo?$v(t):!1}function $v(e){let t=Te(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 du(e,t={}){return Sf(t),np(),Zf(),tp(e,{includeShadow:!0,includeIframes:un.clearIframes}),Wo.initialize(un.semanticIdStart),{rootNodes:Ip(e),semanticNodes:_r}}function Ip(e){let t=[];try{let n=ee(e),o=Array.from(n.querySelectorAll(Tp)).filter(s=>!Vo(s)&&yp(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(Oi(e)||xp(e))return[];let n=ir(e),r=Pn(e,n);if(ws(e))return[zv({frameElement:e,role:n,parentNode:t,elementContext:r})];let o=0,{shouldCreate:s,shouldAnnotate:i}=dc(r);s&&(i&&po(e),o=tn({targetElement:e,parentDisabled:t?.isDisabled,semanticRole:n,elementContext:r}));let a=_r[o],c=Vv(e,n,o?a:t);return o&&c.length>0&&(a.semanticChildren=c),o?[o]:c}function Vv(e,t,n){let r=[],o=gp(e,t);for(let s of o)if(!(Oi(s)||xp(s))){if(ar(s)){let i=Es({targetElement:s,parentNode:n});r.push(...i)}else if(uc(s)&&Xv(s,n)){let i=Li(s);i&&r.push(i)}}return r}function zv({frameElement:e,role:t,parentNode:n,elementContext:r}){po(e);let o=jv(e);return tn({targetElement:e,parentDisabled:n?.isDisabled,semanticRole:t,isFrameNode:!0,frameContentNodes:o,elementContext:r})}function jv(e){if(!un.includeFrameContents)return[];let t=Gv(e);return t.kind==="content"?Ip(t.rootElement):Kv(e,t.reason)}function Gv(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 Kv(e,t){let n=Wo.generateId(),r=Wo.generateId(),o=e.getAttribute("title")?.trim()||e.getAttribute("name")?.trim()||e.id?.trim()||"Embedded frame",s=Xa(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 _r[n]={nodeCategory:fo.ELEMENT,semanticRole:"embedded_document_unavailable",computedName:o,syntheticKind:"embedded_container",frameContent:[r],...s?{resourceLocator:s}:{}},_r[r]={nodeCategory:fo.TEXT,parent:n,textContent:i,preventTextMerge:!0,syntheticKind:"embedded_unavailable_text"},[n]}function Xv(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"?Ri[t.semanticRole]:t.semanticRole;if(_p(r))return!1}return!0}function xp(e){if(!ar(e))return!1;let t=e,n=t.tagName;return Ja.has(n)?!0:n===Ho||n===qo?Yv(t):!1}function Yv(e){let t=Te(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 pc(e){let t=e.activeElement;for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}function Qv(e){let t=e.getBoundingClientRect();return{x:t.left+t.width/2,y:t.top+t.height/2}}function xs(e,t,n){let r=ee(e,t),o=ie(r,n);try{e.focus?.({preventScroll:!0})}catch{}if(pc(r)===e)return!0;try{let{x:s,y:i}=Qv(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||zn(e,o)||sr(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 pc(r)===e}function Pi(e,t){let n=Te(e),r=sr(e,n)?n.HTMLTextAreaElement.prototype:n.HTMLInputElement.prototype,o=Object.getOwnPropertyDescriptor(r,"value");o?.set?o.set.call(e,t):e.value=t}function jo(e,t,n="insertText"){let r=Te(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 Jv(e){let n=Te(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 zo(e){if(!e)return!1;let t=Te(e);if(sr(e,t))return!e.disabled&&!e.readOnly;if(zn(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 fu(e){let t=Te(e);if(!e||!Ct(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 Zv(e,t){let n=e.getRootNode();return On(n)?n:ee(e)??t}function ey(e,t){let n=[];for(let r of t.split(/\s+/).filter(Boolean)){let o=e.getElementById?.(r)||e.querySelector?.(`#${CSS.escape(r)}`),s=Te(o);Ct(o,s)&&n.push(o)}return n}function Cp(e,t){if(!e)return{kind:"none",el:null,via:"no-root"};if(zo(e))return{kind:"input",el:e,via:"self-input"};if(fu(e))return{kind:"contenteditable",el:e,via:"self-contenteditable"};let n=ee(e)??t,r=ie(n),o=Zv(e,n);if(Af(e,r)){let c=e.control;if(zo(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(zo(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 ey(o,s)){if(zo(c))return{kind:"input",el:c,via:"aria-controls/owns"};if(fu(c))return{kind:"contenteditable",el:c,via:"aria-controls/owns"};let d=c.querySelector?.("input,textarea");if(zo(d))return{kind:"input",el:d,via:"aria-controls->desc"}}let i=e.querySelector?.("input,textarea");if(zo(i))return{kind:"input",el:i,via:"descendant"};let a=e.shadowRoot||null;if(a){let c=a.querySelector?.("input,textarea");if(zo(c))return{kind:"input",el:c,via:"open-shadow-input"};let d=a.querySelector?.('[contenteditable="true"],[contenteditable=""],[role="textbox"]');if(fu(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 Is(e,t,n,r=!1){let o=ee(e,t),i=ie(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 Go(e){return(e.textContent??"").replace(/\u00A0/g," ").trim()}var fc=e=>String(e??"").replace(/\s+/g," ").trim(),Mp=new MessageChannel,Np=[];Mp.port1.onmessage=()=>{let e=Np.shift();e&&e()};function Sp(){return new Promise(e=>{Np.push(e),Mp.port2.postMessage(0)})}async function Rp(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 Sp():await new Promise(s=>{try{t.requestAnimationFrame(()=>s())}catch{Sp().then(s)}})}function ty(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 Ap(e,t,n,r){let o=ee(e,t),i=ie(o,n).KeyboardEvent||KeyboardEvent,a=String(r??"");for(let c of a){let{code:d,which:p}=ty(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 Lp(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=ee(e,t),c=ie(a,n),d=xs(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;Pi(e,s),jo(e,s,"insertReplacementText"),h&&Ap(e,a,c,s),await Rp(a,c,p);let g=String(e.value??""),_=fc(i),A=fc(g),R=fc(s),U=_===R,D=A===R,H=g!==i,C=s.length>0&&!U&&g===i,J=1;if(!U&&!D&&!H){J=2;try{e.focus?.({preventScroll:!0}),e.select?.()}catch{}let be=!1;try{a.execCommand?.("selectAll",!1,void 0),be=!!a.execCommand?.("insertText",!1,s)}catch{be=!1}if(!be)try{Pi(e,s)}catch{}try{jo(e,s,"insertReplacementText")}catch{}h&&Ap(e,a,c,s),await Rp(a,c,p),g=String(e.value??"")}let oe=fc(g)===R,me=g!==i;C=s.length>0&&!U&&g===i;let Se=U||oe||me;return{success:Se,method:"type-native-setter",details:`focus=${d};attempts=${J};settleFrames=${p};beforeLen=${i.length};afterLen=${g.length};changed=${me};alreadyCorrect=${U};nowCorrect=${oe};reverted=${C};keyFallback=${h}`,allowFallback:Se?void 0:!0}}function ny(e,t,n){let o=Te(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 Dp(e,t,n,r){let o=ee(e,n),s=ie(o,r),i=s.InputEvent||InputEvent,a=s.Event||Event,c=String(t??""),d=Go(e),p=xs(e,o,s),u=Is(e,o,s,!0),v=ny(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?.(),H=D&&D.rangeCount?D.getRangeAt(0):null;if(!H||!e.contains(H.commonAncestorContainer)){Is(e,o,s,!0);let C=s.getSelection?.();H=C&&C.rangeCount?C.getRangeAt(0):null}H&&(H.insertNode(o.createTextNode(c)),H.collapse(!1),D?.removeAllRanges(),D?.addRange(H),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=Go(e);return{success:R!==d||!!c&&R.includes(c),method:`type-contenteditable-${g}`,details:`focus=${p};selectedWithin=${u};inserted=${h}`}}function Op(e){let{canceled:t}=Jv(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 Pp(e,t,n){if(e.disabled||e.readOnly)return{success:!1,method:"clear-native-setter",details:"disabled_or_readonly",allowFallback:!0};let r=ee(e,t),o=ie(r,n),s=String(e.value??""),i=xs(e,r,o);Pi(e,""),jo(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 Bp(e,t,n){let r=ee(e,t),o=ie(r,n),s=Go(e),i=xs(e,r,o),a=Is(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))&&Is(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{}jo(e,"","deleteByCut");let p=Go(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 Up(e,t){if(e===t||e.contains(t))return!0;let n=t;for(;n;){let r=n.getRootNode?.();if(On(r)){let o=r.host;if(o===e||e.contains(o))return!0;n=o;continue}n=n.parentNode||null}return!1}var mc;(function(e){e.FLASH_LITE="Gemini Flash Lite",e.FLASH="Gemini Flash",e.PRO="Gemini Pro"})(mc||(mc={}));var Fp;(function(e){e[e.NativeHostConnected=0]="NativeHostConnected",e[e.NativeHostDisconnected=1]="NativeHostDisconnected"})(Fp||(Fp={}));var ry=["image/png","image/jpeg","image/webp"],oy=["application/pdf","text/plain"],Lx=[...ry,...oy];var Pt;(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"})(Pt||(Pt={}));var Mt;(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"})(Mt||(Mt={}));var Dx={[Pt.ACT]:Mt.AGENTIC_SEEK,[Pt.CRAWL]:Mt.CRAWL_PAGES,[Pt.EXTRACT]:Mt.EXTRACT_PAGE,[Pt.SHEETS_WORKFLOW]:Mt.SHEETS_WORKFLOW,[Pt.INFER_SHEET_DATA]:Mt.INFER_SHEET_DATA,[Pt.PDF_FILLER]:Mt.PDF_FILLER,[Pt.CUSTOM_TOOL_GENERATOR]:Mt.CUSTOM_TOOL_GENERATOR,[Pt.WEBPAGE_GENERATOR]:Mt.WEBPAGE_GENERATOR,[Pt.GOOGLE_DOC_GENERATOR]:Mt.GOOGLE_DOC_GENERATOR,[Pt.GOOGLE_SLIDES_GENERATOR]:Mt.GOOGLE_SLIDES_GENERATOR,[Pt.PROCESS_TEXT]:Mt.PROCESS_TEXT,[Pt.CREATE_SHEET_FROM_DATA]:Mt.CREATE_SHEET_FROM_DATA,[Pt.ROVER_EXTERNAL_READ_CONTEXT]:Mt.ROVER_EXTERNAL_READ_CONTEXT,[Pt.ROVER_EXTERNAL_ACT_CONTEXT]:Mt.ROVER_EXTERNAL_ACT_CONTEXT,[Pt.EXECUTE_MULTIPLE_TOOLS]:Mt.EXECUTE_MULTIPLE_TOOLS,[Pt.CONFIGURE_API_KEY]:Mt.CONFIGURE_API_KEY,[Pt.QUERY_RTRVR_AI_DOCUMENTATION]:Mt.QUERY_RTRVR_AI_DOCUMENTATION};var pu=200;var sy=30,iy=320,ay=0,cy=50,ly=1,Ox=mc.FLASH;var Px=Mt.PLANNER;var mu="application/pdf",hu="application/gsheet";var Bx=20*1024*1024;var Ss={maxParallelTabs:4,pageLoadDelay:2e3,disableAutoScroll:!1,makeNewTabsActive:!1,writeRowProcessingTime:!1,totalBudgetMs:25e3,pageDataTimeoutMs:22e3,adaptiveSettleDebounceMs:sy,adaptiveSettleMaxWaitMs:iy,adaptiveSettleRetries:ay,sparseTreeRetryDelayMs:cy,sparseTreeRetryMaxAttempts:ly,pdfTextSelectionTimeoutMs:12e3,onlyTextContent:!1};var uy=1,dy=9,fy=11,bu="application/gdoc",Rs="text/html",hc="text/plain";function py(e){return!!e&&typeof e=="object"&&e.nodeType===dy}function Hp(e){return!!e&&typeof e=="object"&&e.nodeType===uy}function my(e){return!!e&&typeof e=="object"&&e.nodeType===fy&&typeof e.host=="object"&&typeof e.mode=="string"}function qp(e){return Hp(e)&&String(e.tagName).toUpperCase()==="IFRAME"}function gu(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 hy(e){try{let t=e.shadowRoot;return t||globalThis?.chrome?.dom?.openOrClosedShadowRoot?.(e)||null}catch{return null}}function gy(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(py(c)){let u=c.documentElement||c.body;u&&i.push(u);continue}if(my(c)){let u=c.children;if(u&&u.length)for(let v=u.length-1;v>=0;v--)i.push(u[v]);continue}if(!Hp(c))continue;let d=c;if(s&&d.ownerDocument!==s)continue;let p=d.getAttribute?.(en);if(p&&Ci(p)===t)return d;if(r)try{let u=hy(d);u&&i.push(u)}catch{}if(o&&qp(d))try{let u=ki(d);u&&i.push(u)}catch{}for(let u=d.lastElementChild;u;u=u.previousElementSibling)i.push(u)}return null}function cr(e,t,n={}){let r=gu(t);if(!r)return null;let o=Ni(r);return o&&(!n.requireOwnerDocument||o.ownerDocument===n.requireOwnerDocument)?o:gy(e,r,{requireOwnerDocument:n.requireOwnerDocument,traverseShadow:n.traverseShadow,traverseIframes:n.traverseIframes})}function vu(e=document){return e.querySelector('embed[type="application/pdf"], embed[type="application/x-google-chrome-pdf"]')}function Wp(e){if(e==null)return[];if(Array.isArray(e)){let t=[];for(let n of e){let r=gu(n);r&&t.push(r)}return t}if(typeof e=="number"||typeof e=="bigint"){let t=gu(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 Wp(t)}return[]}function As(e,t){let n=Wp(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=cr(o,a,{requireOwnerDocument:c?void 0:o,traverseShadow:!0,traverseIframes:c});if(!d||!qp(d))return{doc:o,win:o.defaultView||r,iframePath:n,resolvedPath:s,unresolvedPath:n.slice(i)};let p=null;try{p=ki(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 $p(e){return e==="application/pdf"||e==="application/x-pdf"||e==="application/x-google-chrome-pdf"}function by(e){let t={...Ss,...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 vy=["disableAutoScroll","onlyTextContent","totalBudgetMs","pageDataTimeoutMs","pdfTextSelectionTimeoutMs","adaptiveSettleDebounceMs","adaptiveSettleMaxWaitMs","adaptiveSettleRetries","sparseTreeRetryDelayMs","sparseTreeRetryMaxAttempts"];function gc(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=by(n),s={};for(let i of vy)n[i]!==void 0&&o[i]!==void 0&&(s[i]=o[i]);return Object.keys(s).length?s:void 0}function yy(){return Date.now()}function Nt(e){return!e||!Number.isFinite(e)?Number.POSITIVE_INFINITY:Math.max(0,e-yy())}async function Vp(e,t,n){if(!Number.isFinite(e)||e<=0)return;let r=Nt(n);r<=0||r<e+40||await Bt(e,t)}async function Cs(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 Bt(r,n),{ok:!1,reason:"timeout"}))()]):{ok:!1,reason:"timeout"}}var Bt=(()=>{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 Ty=3e4;function zp(e){return(String(e??"").replace(/\\/g,"/").split("/").pop()||"upload").replace(/[\u0000-\u001f\u007f]/g,"").trim()||"upload"}var yu=class extends Error{constructor(n,r){super(n);O(this,"url");O(this,"status");O(this,"statusText");O(this,"bodySnippet");this.name="FetchFileError",this.url=r.url,this.status=r.status,this.statusText=r.statusText,this.bodySnippet=r.bodySnippet}};function _y(e){return e&&e.split(";")[0].trim()||"application/octet-stream"}function ky(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 Tu(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 jp(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 wy(e,t={},n,r=fetch){let o=new AbortController,s=Ty,i=!1,a=()=>{};if(n){let d=!1;a=()=>{d=!0},(async()=>{try{if(await Bt(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 yu(`Fetch failed (${d.status})`,{url:e,status:d.status,statusText:d.statusText,bodySnippet:h.slice(0,256)})}let p=await d.arrayBuffer(),u=_y(d.headers.get("content-type")),v=ky(d.headers.get("content-disposition"))||Tu(e);return{bytes:p,mimeType:u,fileName:v}}finally{a()}}async function Gp(e,t,n){return await wy(t,{referrer:n??void 0,referrerPolicy:"strict-origin-when-cross-origin"})}var vt={plannerHistory:16,prevSteps:8,uiMessages:40,timelineEvents:60,localPersistBytes:131072,snapshotBytes:262144};var Kp={activation:"on_demand",idleCloseMs:3e4,fallbackPollMinMs:2e3,fallbackPollMaxMs:15e3,maxInflightCommands:1};var yt;(function(e){e.UP="UP",e.DOWN="DOWN",e.LEFT="LEFT",e.RIGHT="RIGHT",e.TOP="TOP",e.BOTTOM="BOTTOM"})(yt||(yt={}));var Kt;(function(e){e.START="START",e.CENTER="CENTER",e.END="END",e.NEAREST="NEAREST"})(Kt||(Kt={}));function Yp(e){if(!e)return Kt.CENTER;let t=typeof e=="string"?e.toUpperCase():String(e).toUpperCase();return Kt&&t in Kt?Kt[t]:Kt.CENTER}function _u(e){return globalThis.CSS&&typeof globalThis.CSS.escape=="function"?globalThis.CSS.escape(e):e.replace(/([ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g,"\\$1")}function Ms(e,t){if(!e)return"";let n=ee(e,t);if(e===n.documentElement)return"html";if(e===n.body)return"body";if(e.id)return`#${_u(e.id)}`;let r=[],o=e;for(;o&&o!==n.body&&o!==n.documentElement;){let s=o.tagName.toLowerCase();if(o.id){s+=`#${_u(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(_u);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 Ko(e){return e.scrollingElement||e.documentElement||e.body}function bc(e,t,n,r,o){let s=ee(e,t),i=ie(s,n),a=Ko(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 yt.DOWN:{d.scrollTop+=v;break}case yt.UP:{d.scrollTop=Math.max(0,d.scrollTop-v);break}case yt.LEFT:return d.scrollLeft=Math.max(0,d.scrollLeft-(o??u*.8)),{success:!0,scrollLeft:d.scrollLeft};case yt.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 Ey(e,t,n){let r=ee(e,t),o=ie(r,n),s=Ko(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 Xp(e,t,n){let r=ee(e,t),o=ie(r,n),s=Ko(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 ku(e,t,n,r){let o=ee(e,t),s=ie(o,n),i=Ko(o),a=Ey(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 Kt.START:A=_-h;break;case Kt.END:A=_+p.height-v+h;break;case Kt.NEAREST:{if(p.top>=u.top&&p.bottom<=u.bottom)return{success:!0,scrollTop:d.scrollTop,isAtTop:d.scrollTop<=5,isAtBottom:Xp(d,o,s)};p.top<u.top?A=_-h:A=_+p.height-v+h;break}case Kt.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:Xp(d,o,s)}}function Qp(e){let t=Number(e);if(!Number.isFinite(t))return null;let n=Math.trunc(t);return n>0?n:null}function Jp(e){let t=[];for(let n of Fa){let r=e?.[n];if(r==null)continue;if(Array.isArray(r)){for(let s of r){let i=Qp(s);i!=null&&t.push(i)}continue}let o=Qp(r);o!=null&&t.push(o)}return Array.from(new Set(t))}function Iy(e){return Jp(e).length>0}function xy(e){let t=Jp(e);return t.length?t[0]:null}var Sy=new Set([q.click_element,q.type_into_element,q.type_and_enter,q.hover_element,q.right_click_element,q.double_click_element,q.press_key,q.scroll_page,q.scroll_to_element,q.mouse_wheel,q.drag_element,q.drag_and_drop,q.swipe_element,q.long_press_element,q.adjust_slider,q.select_dropdown_value,q.clear_element,q.focus_element,q.check_field_validity,q.select_text,q.copy_text,q.paste_text,q.pinch_zoom,q.upload_file,q.dispatch_pointer_path]);(()=>{let e="__RTRVR_ACTION_EXECUTOR__";if(window[e])return;window[e]=!0;try{document.documentElement?.setAttribute(Yl,"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=Ef[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 W=b.bytes;if(!(W instanceof ArrayBuffer)){x.reject(new Error("Invalid bytes payload (expected ArrayBuffer)"));return}if(typeof x.expectedByteLength=="number"&&W.byteLength!==x.expectedByteLength){x.reject(new Error(`Byte length mismatch: got=${W.byteLength}, expected=${x.expectedByteLength}`));return}x.resolve(W)})}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(F=>{if(F instanceof ArrayBuffer)return F;if(F&&F.buffer instanceof ArrayBuffer)return F.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)),W=Ga(f)||document;return new Promise((F,$)=>{let z=!1,G=!1,re=()=>{G=!0};(async()=>{await Bt(x,W),!(G||z)&&(b.pending.delete(k),z=!0,$(new Error("Timed out waiting for upload bytes")))})().catch(()=>{}),b.pending.set(k,{cancelTimeout:re,expectedByteLength:E,resolve:de=>{z||(z=!0,re(),F(de))},reject:de=>{z||(z=!0,re(),$(de))}}),f.postMessage({type:a,requestId:k,token:w,byteLength:E},"*")})}function g(f){if(f)return{frameworks:f.frameworks?f.frameworks.map(w=>wf[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 yr()?.top?.document||document}catch{return document}})(),b=w.args,k=Iy(b),x,W,F=[],$=[],z=[];try{({doc:x,win:W,iframePath:F,resolvedPath:$,unresolvedPath:z}=As(y,b.iframe_id))}catch{if(b.iframe_id!=null){let fe=`Cannot access iframe ${b.iframe_id} (cross-origin or not found)`;return[{name:w.name,args:w.args,response:{success:!1,error:fe,allowFallback:!1,output:{success:!1,error:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:fe,retryable:!1},iframe_context:{requested_iframe_id:b.iframe_id}}}}]}x=document,W=ie(x)}if(b.iframe_id!=null&&z.length>0&&!k){let ge=`iframe_id unresolved: remaining=${z.join(">")||"(none)"} (cross-origin, not-ready, or not found)`;return[{name:w.name,args:w.args,response:{success:!1,error:ge,allowFallback:!1,details:`requested=${F.join(">")||"(none)"} resolved=${$.join(">")||"(none)"}`,output:{success:!1,error:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:ge,retryable:!1},iframe_context:{requested_iframe_id:b.iframe_id,requested_path:F,resolved_path:$,unresolved_path:z}}}}]}let G=w.name,re=xy(b),de=re?cr(x,re):null,Ie=de?.ownerDocument??null,le;if(!Sy.has(G))le={success:!1,error:`Tool not promotable to main: ${G}`,allowFallback:!0};else{let fe=Ie??x,ge=ie(fe,W);le=await R(G,de,b,E,fe,ge,I)}return[{name:w.name,args:w.args,response:le}]}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||Ga(f)||document,x=Math.max(250,Math.min(Number(E?.timeoutMs??3500),8e3)),W=await Cs(Promise.resolve().then(()=>b(w)),x,k);if(!W.ok)throw new Error("scroll detector timeout");return W.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=G=>({success:G.success,error:G.success?void 0:G.details||"Action failed",allowFallback:G.success?void 0:G.allowFallback??!0}),W=f===q.press_key||f===q.scroll_page||f===q.drag_and_drop||f===q.pinch_zoom;if(!w&&!W)return x({success:!1,method:"missing-element-race",details:"Target element missing",allowFallback:!0});let F=new Set([q.type_into_element,q.type_and_enter,q.clear_element,q.focus_element,q.select_text,q.check_field_validity]),$=w,z=ee($,y);if($&&F.has(f)){let G=Cp($,z);(G.kind==="input"||G.kind==="contenteditable")&&($=G.el)}try{switch(f){case q.click_element:return x(C(w,y,b,I));case q.double_click_element:return x(Br(w,y,b));case q.right_click_element:return x(bn(w,y,b));case q.hover_element:return x(await Dt(w,y,b,I,E.duration));case q.type_into_element:return x(await Wt($,y,b,E.text,I));case q.type_and_enter:return x(await Qn($,y,b,E.text,I));case q.clear_element:return x(await an($,y,b,I));case q.focus_element:return x(In($,y,b));case q.select_dropdown_value:return x(ft(w,y,b,E.value,I));case q.adjust_slider:return x(Qt(w,y,b,I?.value??E.value,I));case q.check_field_validity:return x($t($,y,b));case q.select_text:return x(Lr($,y,b,E.start_offset,E.end_offset));case q.scroll_page:return x(await bi(w,y,b,E));case q.scroll_to_element:return x(await qn(w,y,b,E));case q.mouse_wheel:return x(xn(w,y,b,E.delta_x,E.delta_y));case q.drag_element:return x(await qe(w,y,b,E,I));case q.drag_and_drop:return x(await hn(E,w,y,b));case q.swipe_element:return x(await Or(w,y,b,E));case q.long_press_element:return x(await gn(w,y,b,E.duration));case q.pinch_zoom:return x(await Wn(w,y,b,E));case q.press_key:return x(it(E.key,E.modifiers,w,y,b));case q.copy_text:return x(await cn(w,y,b));case q.paste_text:return x(await Sn(w,y,b,I));case q.upload_file:return x(await Pr(E,y,b,k,w,I));case q.dispatch_pointer_path:return x(await $n(E,y,b));default:return x({success:!1,method:"unhandled",details:`Unhandled ${f}`,allowFallback:!0})}}catch(G){return x({success:!1,method:"exception",details:G?.message||"exception",allowFallback:!0})}}function U(f){let w=new Map;if(!f)return w;let E=f.trim();if(!E)return w;let I=Uo(E);if(I){for(let{id:y,mask:b}of I.entries){let k=Hr[y];if(!k)continue;let x=new Set(qa(b)),W=w.get(k);if(W)for(let F of x)W.add(F);else w.set(k,x)}return w}return w}function D(f,...w){return f?w.some(E=>f.has(E)):!1}function H(f,w){let E=U(w?.listenersRaw),I=new Set;for(let[,F]of E)for(let $ of F)($==="react"||$==="vue"||$==="angular"||$==="svelte"||$==="jquery")&&I.add($);let y=new Set;for(let[F,$]of E)if(["click","input","change","keydown","keyup","pointerdown","pointerup","mousedown","mouseup","submit","dragstart","drop","wheel","scroll"].includes(F))for(let z of $)y.add(z);let b=I.size>0||[...y].some(F=>["react","vue","angular","svelte","jquery"].includes(F)),k=D(E.get("click"),"delegated"),x=D(E.get("input"),"delegated")||D(E.get("change"),"delegated")||D(E.get("keydown"),"delegated"),W=w?.role||Ai(f)||f.getAttribute("role");return{sourcesByType:E,fws:I,isFrameworkElement:b,delegatedClick:k,delegatedInput:x,role:W}}function C(f,w,E,I){let y=H(f,I),b=ee(f,w),k=ie(b,E);pt(f,b,k),I?.pattern==="hover-activate"&&Dt(f,b,k,I,120);let x=y.fws.has("react")||D(y.sourcesByType.get("click"),"react"),W=y.fws.has("vue")||D(y.sourcesByType.get("click"),"vue"),F=y.fws.has("angular")||D(y.sourcesByType.get("click"),"angular"),$=y.fws.has("svelte")||D(y.sourcesByType.get("click"),"svelte"),z=y.fws.has("jquery")||D(y.sourcesByType.get("click"),"jquery");return er(()=>J(f,b,k),()=>ce(f,b,k),()=>x?me(f,b,k):null,()=>W?Se(f,b,k):null,()=>F?be(f,b,k):null,()=>$?Re(f,b,k):null,()=>z?$e(f,b,k):null)}function J(f,w,E){let I=ee(f,w),y=ie(I,E),b=y.PointerEvent||PointerEvent,k=y.MouseEvent||MouseEvent,{x,y:W}=oe(f,I,y),F={bubbles:!0,cancelable:!0,composed:!0,view:y,clientX:x,clientY:W,button:0,buttons:1};return f.focus?.({preventScroll:!0}),[new b("pointerover",F),new b("pointerenter",{...F,bubbles:!1}),new k("mouseover",F),new k("mouseenter",{...F,bubbles:!1}),new b("pointerdown",F),new k("mousedown",F),new b("pointerup",{...F,buttons:0}),new k("mouseup",{...F,buttons:0}),new k("click",{...F,buttons:0})].forEach(z=>f.dispatchEvent(z)),{success:!0,method:"pointer-mouse-click"}}function ce(f,w,E){let I=ee(f,w),y=ie(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 oe(f,w,E){let I=ee(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 W=b[x],F=I.elementFromPoint(W.x,W.y);if(x===0&&(k=F),F&&Up(f,F))return{...W,hit:F,ok:!0}}return{...b[0],hit:k,ok:!1}}function me(f,w,E){let I=ee(f,w),y=ie(I,E);try{let b=Mn(f);if(!b)return{success:!1,method:"react-no-fiber"};let k=Jt(b),x=k.onClick||k.onClickCapture;return x?(x(Vn("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 Se(f,w,E){let I=ee(f,w),b=ie(I,E).MouseEvent||MouseEvent;try{let k=no(f);if(!k)return{success:!1,method:"vue-none"};let x=Nn(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 be(f,w,E){let I=ee(f,w),y=ie(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 Re(f,w,E){let I=ee(f,w),b=ie(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 $e(f,w,E){let I=ee(f,w),y=ie(I,E);try{return y.jQuery?.(f)?.trigger?.("click"),{success:!0,method:"jquery-trigger"}}catch{return{success:!1,method:"jquery-trigger"}}}async function Dt(f,w,E,I,y=500){let b=Math.min(Math.max(0,Number(y)||500),3e4),k=ee(f,w),x=ie(k,E),W=H(f,I);pt(f,k,x);let F=x.PointerEvent||PointerEvent,$=x.MouseEvent||MouseEvent,z=f.getBoundingClientRect(),G=z.left+z.width/2,re=z.top+z.height/2;if(W.fws.has("react")){let le=Mn(f),fe=le?Jt(le):{};fe.onMouseEnter?.(Vn("mouseenter",f,k,x)),fe.onPointerEnter?.(Vn("pointerenter",f,k,x))}else if(W.fws.has("vue")){let le=no(f),fe=le?Nn(le):{};fe.mouseenter?.(new $("mouseenter",{bubbles:!0})),fe.mouseover?.(new $("mouseover",{bubbles:!0}))}let de={bubbles:!0,cancelable:!0,composed:!0,view:x,clientX:G,clientY:re};return[new F("pointerover",de),new F("pointerenter",{...de,bubbles:!1}),new $("mouseover",de),new $("mouseenter",{...de,bubbles:!1})].forEach(le=>f.dispatchEvent(le)),await Bt(b,k),{success:!0,method:"hover-seq"}}async function Le(f,w,E=1){await Promise.resolve();for(let I=0;I<E;I++)f.hidden?await Cn():await new Promise(y=>{try{w.requestAnimationFrame(()=>y())}catch{Cn().then(y)}})}let Ot=f=>String(f??"").replace(/\s+/g," ").trim();function ot(f){try{if("value"in f)return String(f.value??"")}catch{}return""}function tt(f){try{return typeof Go=="function"?Go(f):Ot(f.textContent)}catch{return""}}function Yt(f,w){if(!(w.isFrameworkElement||w.delegatedInput))return!1;let E=String(f??"").length;return E>0&&E<=140}async function Wt(f,w,E,I,y){let b=H(f,y),k=ee(f,w),x=ie(k,E);if(pt(f,k,x),zn(f,x)||sr(f,x)){let F=Yt(String(I??""),b),$=await Lp(f,k,x,I,{settleFrames:k.hidden?1:2,useKeyFallback:F,keyFallbackMaxLen:140});return{success:$.success,method:$.method,details:$.details,allowFallback:!$.success}}if(f.isContentEditable===!0||b.role==="textbox"&&!("value"in f)){let F=tt(f),$=Dp(f,I,k,x);await Le(k,x,k.hidden?1:2);let z=tt(f),G=!1;if(String(I??"").length>0&&z===F){G=!0;try{xs(f,k,x),Is(f,k,x,!0);try{k.execCommand?.("insertText",!1,String(I??""))}catch{}jo(f,String(I??""),"insertText")}catch{}await Le(k,x,k.hidden?1:2)}let re=tt(f),de=re!==F||!!String(I??"")&&re.includes(String(I??""));return{success:de,method:$.method,details:`${$.details};beforeLen=${F.length};afterLen=${re.length};reverted=${z===F};fallback=${G}`,allowFallback:de?void 0:!0}}return{success:!1,method:"type",details:"target not editable",allowFallback:!0}}async function Qn(f,w,E,I,y){let b=ee(f,w),k=ie(b,E),x=await Wt(f,b,k,I,y);if(!x.success)return x;let W=Op(f);return{success:!0,method:"type+enter",details:`${x.details};enter=${W.method}`}}async function an(f,w,E,I){let y=ee(f,w),b=ie(y,E),k=b.Event||Event;if(pt(f,y,b),zn(f,b)||sr(f,b)){let W=ot(f),F=Pp(f,y,b);if(await Le(y,b,y.hidden?1:2),ot(f)===W&&W.length>0){try{Pi(f,""),jo(f,"","deleteByCut")}catch{}await Le(y,b,y.hidden?1:2)}let G=ot(f),re=G.length===0||G!==W;return{success:F.success,method:F.method,details:F.details,allowFallback:!F.success}}if(f.isContentEditable===!0||H(f,I).role==="textbox"&&!("value"in f)){let W=Bp(f,y,b);return await Le(y,b,y.hidden?1:2),{success:W.success,method:W.method,details:W.details,allowFallback:!W.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 In(f,w,E){try{let I=ee(f,w),y=ie(I,E),b=y.FocusEvent||FocusEvent;return pt(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 ft(f,w,E,I,y){try{let b=ee(f,w),k=ie(b,E),x=k.Event||Event;if(!Cf(f,k))return{success:!1,method:"select",details:"target not select",allowFallback:!0};pt(f,b,k),f.focus?.({preventScroll:!0});let W=Array.from(f.options).find(G=>G.value===I||G.text.trim()===I.trim());if(!W)return{success:!1,method:"select",details:`Option not found: ${I}`,allowFallback:!0};W.selected=!0;let F=Object.getPrototypeOf(f),$=Object.getOwnPropertyDescriptor(F,"value");if($?.set?$.set.call(f,W.value):f.value=W.value,f.dispatchEvent(new x("input",{bubbles:!0,composed:!0})),f.dispatchEvent(new x("change",{bubbles:!0,composed:!0})),H(f,y).fws.has("react")){let G=Mn(f);if(G){let re=Jt(G);if(re.onChange){let de=Vn("change",f,b,k);de.target.value=W.value,re.onChange(de)}}}return{success:!0,method:"select"}}catch(b){return{success:!1,method:"select",details:b.message,allowFallback:!0}}}function Qt(f,w,E,I,y){try{let b=ee(f,w),k=ie(b,E),x=k.Event||Event;if(!zn(f,k))return{success:!1,method:"slider",details:"target not input",allowFallback:!0};pt(f,b,k),f.focus?.({preventScroll:!0});let W=Object.getPrototypeOf(f),F=Object.getOwnPropertyDescriptor(W,"value");if(F?.set?F.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})),H(f,y).fws.has("react")){let z=Mn(f);if(z){let G=Jt(z);if(G.onChange){let re=Vn("change",f,b,k);re.target.value=String(I),G.onChange(re)}}}return{success:!0,method:"slider"}}catch(b){return{success:!1,method:"slider",details:b.message,allowFallback:!0}}}function $t(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 Lr(f,w,E,I,y){try{let b=ee(f,w),k=ie(b,E);if("setSelectionRange"in f){let F=f;F.focus?.();let $=F.value?.length??0;return F.setSelectionRange(I??0,y??$),{success:!0,method:"select-range"}}let x=k.getSelection();if(!x)return{success:!1,method:"select-range",allowFallback:!0};let W=b.createRange();return W.selectNodeContents(f),x.removeAllRanges(),x.addRange(W),{success:!0,method:"select-range-node"}}catch(b){return{success:!1,method:"select-range",details:b.message,allowFallback:!0}}}function br(f,w,E,I,y){let b=Ko((f&&ee(f))??w),k=f||b,x=ee(k,w),W=ie(x,E),F=k===x.documentElement||k===x.body||k===b;if(I===yt.TOP||I===yt.BOTTOM){let $=k.scrollHeight,z=F?W.innerHeight:k.clientHeight,G=Math.max(0,$-z);return k.scrollTop=I===yt.TOP?0:G,{success:!0,scrollTop:k.scrollTop}}return bc(k,x,W,I,y)}async function bi(f,w,E,I){let y=I.direction,b=I.amount,k=ee(f,w),x=ie(k,E),W=!k.hidden,F=W?"smooth":"auto";try{if(f){let z=Dr(f,k,x),G=br(z,k,x,y,b);return G?.success?{success:!0,method:"direct-element-scroll",details:JSON.stringify(G)}:{success:!1,method:"direct-element-scroll",details:G?.error||"direct scroll failed",allowFallback:!0}}if(y===yt.TOP||y===yt.BOTTOM){let z=await A(x,{action:"scrollTo",direction:y,options:{behavior:F,isTabActive:W}},{doc:k,timeoutMs:k.hidden?5200:2800});return{success:!0,method:"detector-scrollTo",details:JSON.stringify(z)}}let $=await A(x,{action:"scrollBy",direction:y,options:{amount:b,behavior:F,isTabActive:W}},{doc:k,timeoutMs:k.hidden?5200:2800});return{success:!0,method:"detector-scrollBy",details:JSON.stringify($)}}catch($){let z=k?br(Ko(k),k,x,y,b):void 0;return z?.success?{success:!0,method:"direct-primary-scroll-fallback",details:JSON.stringify(z)}:{success:!1,method:"scroll-page-failed",details:$?.message||z?.error||"scroll_page failed",allowFallback:!0}}}async function qn(f,w,E,I){let y=ee(f,w),b=ie(y,E),k=!y.hidden,x=k?"smooth":"auto",W=Yp(I.position),F=Ms(f,y);if(!F){let $=ku(f,y,b,W);return{success:$.success,method:"direct-scrollElement-no-selector",details:$.error,allowFallback:!$.success}}try{let $=await A(b,{action:"scrollElement",selector:F,position:W,options:{behavior:x,isTabActive:k}},{doc:y,timeoutMs:y.hidden?5600:3e3});return{success:!0,method:"detector-scrollElement",details:JSON.stringify($)}}catch($){let z=ku(f,y,b,W);return z.success?{success:!0,method:"direct-scrollElement-fallback",details:JSON.stringify(z)}:{success:!1,method:"scroll-to-element-failed",details:$?.message||z.error||"scroll_to_element failed",allowFallback:!0}}}function xn(f,w,E,I,y){try{let b=ee(f,w),k=ie(b,E),x=k.WheelEvent||WheelEvent;pt(f,b,k);let W=Dr(f,b,k);return W.dispatchEvent(new x("wheel",{bubbles:!0,cancelable:!0,composed:!0,view:k,deltaX:I||0,deltaY:y||0,deltaMode:x.DOM_DELTA_PIXEL})),W.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 Dr(f,w,E){let I=ee(f,w),y=ie(I,E),b=I.scrollingElement||I.documentElement||I.body,k=f;for(;k&&k!==I.body&&k!==I.documentElement;){let W=y.getComputedStyle(k).overflowY;if((W==="auto"||W==="scroll"||W==="overlay")&&k.scrollHeight>k.clientHeight+5)return k;k=k.parentElement}return b}async function qe(f,w,E,I,y){try{let b=ee(f,w),k=ie(b,E),x=k.PointerEvent||PointerEvent,W=k.MouseEvent||MouseEvent,F=k.DragEvent||DragEvent,$=k.DataTransfer||DataTransfer;pt(f,b,k);let z=oe(f,b,k),G=Ct(z.hit,k)?z.hit:f,re=f.getBoundingClientRect(),de=Number.isFinite(Number(I?.distance))?Number(I.distance):160,Ie=0,le=0;switch(String(I?.direction||"").toUpperCase()){case"UP":le=-de;break;case"DOWN":le=de;break;case"LEFT":Ie=-de;break;case"RIGHT":Ie=de;break;default:Ie=Number(I?.delta_x)||0,le=Number(I?.delta_y)||0}let fe=(ne,ue)=>({x:Math.max(2,Math.min(ne,k.innerWidth-3)),y:Math.max(2,Math.min(ue,k.innerHeight-3))}),ge=fe(z.x,z.y),Oe=fe(z.x+Ie,z.y+le),at=500+Date.now()%1e4,ve=Math.max(12,Math.min(36,Number(I?.steps)||18)),Ae=(ne,ue)=>({bubbles:!0,cancelable:!0,composed:!0,view:k,clientX:ne,clientY:ue,pageX:ne+(k.scrollX||0),pageY:ue+(k.scrollY||0)}),Ce=(ne,ue,Fe)=>({...Ae(ne,ue),pointerId:at,pointerType:"mouse",isPrimary:!0,width:1,height:1,pressure:Fe?.5:0,buttons:Fe,button:0}),We=(ne,ue,Fe)=>({...Ae(ne,ue),buttons:Fe,button:0});G.dispatchEvent(new x("pointerdown",Ce(ge.x,ge.y,1))),G.dispatchEvent(new W("mousedown",We(ge.x,ge.y,1)));try{G.setPointerCapture?.(at)}catch{}let Qe=null;try{(f.draggable||H(f,y).sourcesByType.has("dragstart"))&&(Qe=new $)}catch{Qe=null}if(Qe)try{f.dispatchEvent(new F("dragstart",{bubbles:!0,cancelable:!0,clientX:ge.x,clientY:ge.y,dataTransfer:Qe}))}catch{}let Ge=null;for(let ne=1;ne<=ve;ne++){let ue=ge.x+(Oe.x-ge.x)*ne/ve,Fe=ge.y+(Oe.y-ge.y)*ne/ve,mt=b.elementFromPoint(ue,Fe)||f;if(mt.dispatchEvent(new x("pointermove",Ce(ue,Fe,1))),mt.dispatchEvent(new W("mousemove",We(ue,Fe,1))),Qe)try{Ge&&Ge!==mt&&Ge.dispatchEvent(new F("dragleave",{bubbles:!0,cancelable:!0,clientX:ue,clientY:Fe,dataTransfer:Qe})),mt.dispatchEvent(new F("dragover",{bubbles:!0,cancelable:!0,clientX:ue,clientY:Fe,dataTransfer:Qe})),Ge=mt}catch{}ne%3===0&&await Cn()}let se=b.elementFromPoint(Oe.x,Oe.y)||f;if(se.dispatchEvent(new x("pointerup",Ce(Oe.x,Oe.y,0))),se.dispatchEvent(new W("mouseup",We(Oe.x,Oe.y,0))),Qe)try{f.dispatchEvent(new F("dragend",{bubbles:!0,cancelable:!0,clientX:Oe.x,clientY:Oe.y,dataTransfer:Qe}))}catch{}return{success:!0,method:"drag",details:`dx=${Ie};dy=${le};steps=${ve};hitOk=${z.ok}`}}catch(b){return{success:!1,method:"drag",details:b?.message||"drag failed",allowFallback:!0}}}async function hn(f,w,E,I){try{let y=ee(w,E),b=ie(y,I),k=b.PointerEvent||PointerEvent,x=b.MouseEvent||MouseEvent,W=b.DragEvent||DragEvent,F=b.DataTransfer||DataTransfer,$=f?.source_element_id??f?.element_id,z=($?cr(y,String($)):null)||w;if(!z)return{success:!1,method:"drag-drop",details:"source missing",allowFallback:!0};let G=null,re=Number(f?.target_x),de=Number(f?.target_y);if(f?.target_element_id){if(G=cr(y,String(f.target_element_id)),!G)return{success:!1,method:"drag-drop",details:"target missing",allowFallback:!0};let se=G.getBoundingClientRect();re=se.left+se.width/2,de=se.top+se.height/2}if((!Number.isFinite(re)||!Number.isFinite(de))&&!G)return{success:!1,method:"drag-drop",details:"missing target coords",allowFallback:!0};pt(z,y,b),G&&pt(G,y,b);let Ie=(se,ne)=>({x:Math.max(2,Math.min(se,b.innerWidth-3)),y:Math.max(2,Math.min(ne,b.innerHeight-3))}),le=z.getBoundingClientRect(),fe=Ie(le.left+le.width/2,le.top+le.height/2),ge=Ie(Number(re),Number(de)),Oe=600+Date.now()%1e4,at=Math.max(14,Math.min(42,Number(f?.steps)||22)),ve=(se,ne)=>({bubbles:!0,cancelable:!0,composed:!0,view:b,clientX:se,clientY:ne,pageX:se+(b.scrollX||0),pageY:ne+(b.scrollY||0)}),Ae=(se,ne,ue)=>({...ve(se,ne),pointerId:Oe,pointerType:"mouse",isPrimary:!0,width:1,height:1,pressure:ue?.5:0,buttons:ue,button:0}),Ce=(se,ne,ue)=>({...ve(se,ne),buttons:ue,button:0}),We=null;try{We=new F}catch{We=null}z.dispatchEvent(new k("pointerdown",Ae(fe.x,fe.y,1))),z.dispatchEvent(new x("mousedown",Ce(fe.x,fe.y,1)));try{z.setPointerCapture?.(Oe)}catch{}if(We)try{z.dispatchEvent(new W("dragstart",{bubbles:!0,cancelable:!0,clientX:fe.x,clientY:fe.y,dataTransfer:We}))}catch{}let Qe=null;for(let se=1;se<=at;se++){let ne=fe.x+(ge.x-fe.x)*se/at,ue=fe.y+(ge.y-fe.y)*se/at,Fe=y.elementFromPoint(ne,ue)||G||y.body;if(Fe.dispatchEvent(new k("pointermove",Ae(ne,ue,1))),Fe.dispatchEvent(new x("mousemove",Ce(ne,ue,1))),We)try{Qe&&Qe!==Fe&&Qe.dispatchEvent(new W("dragleave",{bubbles:!0,cancelable:!0,clientX:ne,clientY:ue,dataTransfer:We})),Fe.dispatchEvent(new W("dragenter",{bubbles:!0,cancelable:!0,clientX:ne,clientY:ue,dataTransfer:We})),Fe.dispatchEvent(new W("dragover",{bubbles:!0,cancelable:!0,clientX:ne,clientY:ue,dataTransfer:We})),Qe=Fe}catch{}se%3===0&&await Cn()}let Ge=G||y.elementFromPoint(ge.x,ge.y)||y.body;if(We)try{Ge.dispatchEvent(new W("drop",{bubbles:!0,cancelable:!0,clientX:ge.x,clientY:ge.y,dataTransfer:We}))}catch{}if(Ge.dispatchEvent(new k("pointerup",Ae(ge.x,ge.y,0))),Ge.dispatchEvent(new x("mouseup",Ce(ge.x,ge.y,0))),We)try{z.dispatchEvent(new W("dragend",{bubbles:!0,cancelable:!0,clientX:ge.x,clientY:ge.y,dataTransfer:We}))}catch{}return{success:!0,method:"html5+pointer-dragdrop",details:`steps=${at};source=${String($)}`}}catch(y){return{success:!1,method:"drag-drop",details:y?.message||"drag-drop failed",allowFallback:!0}}}async function Or(f,w,E,I){try{let y=ee(f,w),b=ie(y,E),k=b.PointerEvent||PointerEvent,x=b.MouseEvent||MouseEvent;pt(f,y,b);let W=oe(f,y,b),F={x:W.x,y:W.y},$=f.getBoundingClientRect(),z=Number.isFinite(Number(I?.distance))?Number(I.distance):Math.min(Math.max(80,Math.min($.width,$.height)),220),G=String(I?.direction||"RIGHT").toUpperCase(),re=F.x,de=F.y;G==="LEFT"&&(re-=z),G==="RIGHT"&&(re+=z),G==="UP"&&(de-=z),G==="DOWN"&&(de+=z);let Ie=(ne,ue)=>({x:Math.max(2,Math.min(ne,b.innerWidth-3)),y:Math.max(2,Math.min(ue,b.innerHeight-3))}),le=Ie(F.x,F.y),fe=Ie(re,de),ge=700+Date.now()%1e4,Oe=Math.max(10,Math.min(28,Number(I?.steps)||16)),at=(ne,ue)=>({bubbles:!0,cancelable:!0,composed:!0,view:b,clientX:ne,clientY:ue,pageX:ne+(b.scrollX||0),pageY:ue+(b.scrollY||0)}),ve=(ne,ue,Fe)=>({...at(ne,ue),pointerId:ge,pointerType:"touch",isPrimary:!0,width:1,height:1,pressure:Fe?.5:0,buttons:Fe,button:0}),Ae=(ne,ue,Fe)=>({...at(ne,ue),buttons:Fe,button:0}),Ce=y.elementFromPoint(le.x,le.y)||f;Ce.dispatchEvent(new k("pointerdown",ve(le.x,le.y,1))),Ce.dispatchEvent(new x("mousedown",Ae(le.x,le.y,1)));let We=b.Touch,Qe=b.TouchEvent,Ge=!!We&&!!Qe;if(Ge)try{let ne=new We({identifier:ge,target:Ce,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});Ce.dispatchEvent(new Qe("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[ne],targetTouches:[ne],changedTouches:[ne]}))}catch{}for(let ne=1;ne<=Oe;ne++){let ue=le.x+(fe.x-le.x)*ne/Oe,Fe=le.y+(fe.y-le.y)*ne/Oe,mt=y.elementFromPoint(ue,Fe)||f;if(mt.dispatchEvent(new k("pointermove",ve(ue,Fe,1))),mt.dispatchEvent(new x("mousemove",Ae(ue,Fe,1))),Ge)try{let rt=new We({identifier:ge,target:mt,clientX:ue,clientY:Fe,pageX:ue,pageY:Fe,screenX:ue,screenY:Fe,radiusX:1,radiusY:1,rotationAngle:0,force:1});mt.dispatchEvent(new Qe("touchmove",{bubbles:!0,cancelable:!0,composed:!0,touches:[rt],targetTouches:[rt],changedTouches:[rt]}))}catch{}ne%3===0&&await Cn()}let se=y.elementFromPoint(fe.x,fe.y)||f;if(se.dispatchEvent(new k("pointerup",ve(fe.x,fe.y,0))),se.dispatchEvent(new x("mouseup",Ae(fe.x,fe.y,0))),Ge)try{let ne=new We({identifier:ge,target:se,clientX:fe.x,clientY:fe.y,pageX:fe.x,pageY:fe.y,screenX:fe.x,screenY:fe.y,radiusX:1,radiusY:1,rotationAngle:0,force:0});se.dispatchEvent(new Qe("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[ne]}))}catch{}return{success:!0,method:"swipe",details:`dir=${G};dist=${z};steps=${Oe};hitOk=${W.ok}`}}catch(y){return{success:!1,method:"swipe",details:y?.message||"swipe failed",allowFallback:!0}}}async function Wn(f,w,E,I){try{let y=f||w.body,b=ee(y,w),k=ie(b,E),x=k.PointerEvent||PointerEvent,W=k.WheelEvent||WheelEvent;pt(y,b,k);let F=Number.isFinite(Number(I?.scale))?Number(I.scale):1.2,$=y.getBoundingClientRect(),z=$.left+$.width/2,G=$.top+$.height/2,re=24,de=Math.max(6,Math.min(200,re*F)),Ie=Math.max(6,Math.min(18,Number(I?.steps)||10)),le=k.Touch,fe=k.TouchEvent;if(!!le&&!!fe)try{let ve=(Ge,se)=>new le({identifier:Ge,target:y,clientX:se,clientY:G,pageX:se,pageY:G,screenX:se,screenY:G,radiusX:1,radiusY:1,rotationAngle:0,force:1}),Ae=ve(911,z-re),Ce=ve(912,z+re);y.dispatchEvent(new fe("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[Ae,Ce],targetTouches:[Ae,Ce],changedTouches:[Ae,Ce]}));for(let Ge=1;Ge<=Ie;Ge++){let se=re+(de-re)*Ge/Ie,ne=ve(911,z-se),ue=ve(912,z+se);y.dispatchEvent(new fe("touchmove",{bubbles:!0,cancelable:!0,composed:!0,touches:[ne,ue],targetTouches:[ne,ue],changedTouches:[ne,ue]})),Ge%2===0&&await Cn()}let We=ve(911,z-de),Qe=ve(912,z+de);y.dispatchEvent(new fe("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[We,Qe]}))}catch{}try{let ve=(Ae,Ce,We)=>({bubbles:!0,cancelable:!0,composed:!0,view:k,clientX:Ce,clientY:G,pointerId:Ae,pointerType:"touch",isPrimary:Ae===821,width:1,height:1,pressure:We?.5:0,buttons:We,button:0});y.dispatchEvent(new x("pointerdown",ve(821,z-re,1))),y.dispatchEvent(new x("pointerdown",ve(822,z+re,1)));for(let Ae=1;Ae<=Ie;Ae++){let Ce=re+(de-re)*Ae/Ie;y.dispatchEvent(new x("pointermove",ve(821,z-Ce,1))),y.dispatchEvent(new x("pointermove",ve(822,z+Ce,1))),Ae%2===0&&await Cn()}y.dispatchEvent(new x("pointerup",ve(821,z-de,0))),y.dispatchEvent(new x("pointerup",ve(822,z+de,0)))}catch{}try{let Oe=F>=1?-120:120;y.dispatchEvent(new W("wheel",{bubbles:!0,cancelable:!0,composed:!0,view:k,clientX:z,clientY:G,ctrlKey:!0,deltaY:Oe,deltaMode:W.DOM_DELTA_PIXEL}))}catch{}return{success:!0,method:"pinch-zoom",details:`scale=${F};steps=${Ie}`}}catch(y){return{success:!1,method:"pinch-zoom",details:y?.message||"pinch-zoom failed",allowFallback:!0}}}async function gn(f,w,E,I=800){try{let y=ee(f,w),b=ie(y,E),k=b.PointerEvent||PointerEvent,x=b.MouseEvent||MouseEvent,W=b.FocusEvent||FocusEvent;pt(f,y,b);let F=oe(f,y,b),$=f;!F.ok&&Ct(F.hit,b)?$=F.hit.closest?.('a,button,input,select,textarea,summary,[role="button"],[role="link"],[onclick]')||F.hit:Ct(F.hit,b)&&($=F.hit);let z=Rn($,y,b),G=F.x,re=F.y,de=1+Date.now()%1e4,Ie={bubbles:!0,cancelable:!0,composed:!0,view:b,clientX:G,clientY:re,pageX:G+(b.scrollX||0),pageY:re+(b.scrollY||0),screenX:G+(b.screenX||0),screenY:re+(b.screenY||0)},le={...Ie,pointerId:de,pointerType:"touch",isPrimary:!0,width:1,height:1,pressure:0,buttons:0,button:0};try{$.dispatchEvent(new k("pointerover",le)),$.dispatchEvent(new k("pointerenter",{...le,bubbles:!1}))}catch{}try{$.dispatchEvent(new x("mouseover",Ie)),$.dispatchEvent(new x("mouseenter",{...Ie,bubbles:!1}))}catch{}try{$.focus?.({preventScroll:!0}),$.dispatchEvent(new W("focus",{bubbles:!0,composed:!0})),$.dispatchEvent(new W("focusin",{bubbles:!0,composed:!0}))}catch{}try{$.dispatchEvent(new k("pointerdown",{...le,buttons:1,pressure:.5}))}catch{}try{$.dispatchEvent(new x("mousedown",{...Ie,buttons:1,button:0}))}catch{}try{let ve=b.Touch,Ae=b.TouchEvent;if(typeof ve<"u"&&typeof Ae<"u"){let Ce=new ve({identifier:de,target:$,clientX:G,clientY:re,pageX:G+(b.scrollX||0),pageY:re+(b.scrollY||0),screenX:G+(b.screenX||0),screenY:re+(b.screenY||0),radiusX:1,radiusY:1,rotationAngle:0,force:1});$.dispatchEvent(new Ae("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[Ce],targetTouches:[Ce],changedTouches:[Ce]}))}}catch{}let fe=Number(I),ge=Number.isFinite(fe)&&fe>0?fe:800,Oe=y.hidden?Math.max(ge,1200):ge;await Bt(Oe,y);try{$.dispatchEvent(new x("contextmenu",{...Ie,button:2,buttons:2}))}catch{}try{$.dispatchEvent(new k("pointerup",{...le,buttons:0,pressure:0}))}catch{}try{$.dispatchEvent(new x("mouseup",{...Ie,buttons:0,button:0}))}catch{}try{let ve=b.Touch,Ae=b.TouchEvent;if(typeof ve<"u"&&typeof Ae<"u"){let Ce=new ve({identifier:de,target:$,clientX:G,clientY:re,pageX:G+(b.scrollX||0),pageY:re+(b.scrollY||0),screenX:G+(b.screenX||0),screenY:re+(b.screenY||0),radiusX:1,radiusY:1,rotationAngle:0,force:0});$.dispatchEvent(new Ae("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[Ce]}))}}catch{}let at=await Zn($,y,b,z);return{success:!0,method:"long-press",details:`holdMs=${Oe};verified=${at};hitOk=${F.ok};target=${$.tagName.toLowerCase()}`}}catch(y){return{success:!1,method:"long-press",details:y?.message||"long-press failed",allowFallback:!0}}}function it(f,w,E,I,y){try{let b=ee(E,I),x=ie(b,y).KeyboardEvent||KeyboardEvent,W=E||b.activeElement||b.body||b.documentElement;W.focus?.();let F={key:f,code:Ur(f),bubbles:!0,cancelable:!0,ctrlKey:w?.includes("CTRL"),altKey:w?.includes("ALT"),shiftKey:w?.includes("SHIFT"),metaKey:w?.includes("META")},$=W.dispatchEvent(new x("keydown",F)),z=W.dispatchEvent(new x("keypress",F)),G=W.dispatchEvent(new x("keyup",F));if(f==="Enter"&&!!($&&z&&G)){let de=W.form||W.closest?.("form");de?.requestSubmit?de.requestSubmit():de?.submit?.()}return{success:!0,method:"press-key"}}catch(b){return{success:!1,method:"press-key",details:b.message,allowFallback:!0}}}async function cn(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=ee(f,w),b=ie(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 W=y.execCommand?.("copy")??!1;return x?.removeAllRanges(),{success:!!W,method:"execCommand-copy",allowFallback:!W}}catch(I){return{success:!1,method:"clipboard-copy",details:I.message,allowFallback:!0}}}async function Sn(f,w,E,I){try{f.focus?.();let y=ee(f,w),b=ie(y,E);if(b.navigator?.clipboard?.readText){let x=await b.navigator.clipboard.readText();if(x)return await Wt(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 Jn(f){return`${(f/1024).toFixed(1)}KB`}function vr(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 eo(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 Pr(f,w,E,I,y,b){try{let{file_url:k,element_id:x,file_name:W}=f,F=null;if(y&&(F=vr(y,w)),!F&&x!==void 0&&(F=w.querySelector(`input[type="file"][${en}*="[id=${x}]"]`)),!F){let se=w.querySelectorAll('input[type="file"]');for(let ne of se){if(ne.disabled)continue;let ue=ne.getBoundingClientRect();if(ue.width>0&&ue.height>0){F=ne;break}}}if(!F)return{success:!1,method:"upload-file",details:"No file input found",allowFallback:!0};if(F.disabled)return{success:!1,method:"upload-file",details:"File input is disabled",allowFallback:!0};let $=ee(F,w),z=ie($,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 re=Number(I.byteLength),de=(I.mimeType||"application/octet-stream").split(";")[0].trim()||"application/octet-stream",Ie;if(I.inlineB64&&typeof I.inlineB64=="string"){let se=jp(I.inlineB64);if(se.byteLength!==re)return{success:!1,method:"upload-file",details:`Inline bytes length mismatch: got=${se.byteLength} expected=${re}`,allowFallback:!0};Ie=se.buffer}else{let se=String(I.token);Ie=await h(z,se,re,9e4)}let le=z.Blob||Blob,fe=new le([Ie],{type:de}),ge=W||I?.fileName;!ge&&k&&typeof k=="string"&&(ge=Tu(k,z)),ge=zp(ge||"upload");let Oe=z.File||File,at=new Oe([fe],ge,{type:de,lastModified:Date.now()}),ve=z.Event||Event,Ae=z.DataTransfer||DataTransfer;if(!Ae)return{success:!1,method:"upload-file",details:"DataTransfer unavailable in this context",allowFallback:!0};let Ce=new Ae;if(Ce.items.add(at),!eo(F,Ce.files,z))return{success:!1,method:"upload-file",details:"Failed to set input.files",allowFallback:!0};F.dispatchEvent(new ve("input",{bubbles:!0,composed:!0,cancelable:!0})),F.dispatchEvent(new ve("change",{bubbles:!0,composed:!0,cancelable:!0}));let Qe=Mn(F);if(Qe){let se=Jt(Qe);if(se.onChange){let ne=Vn("change",F,$,z);ne.target.files=Ce.files,se.onChange(ne)}}let Ge=no(F);if(Ge){let se=Nn(Ge);if(se.change){let ne=new ve("change",{bubbles:!0});ne.target=F,ne.target.files=Ce.files,se.change(ne)}}try{let se=z.jQuery||z.$;se&&typeof se=="function"&&se(F).triggerHandler?.("change")}catch{}return F.focus?.({preventScroll:!0}),await Le($,z,2),{success:!0,method:"upload-file",details:`Uploaded ${ge} (${Jn(fe.size)}) [token]`}}catch(k){return{success:!1,method:"upload-file",details:k?.message||"Upload failed",allowFallback:!0}}}async function $n(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 W=I[x],F=Number(W.x)||0,$=Number(W.y)||0,z=Number(W.pressure)||(x===0||x===I.length-1?0:.5),G=w.elementFromPoint(F,$)||w.documentElement,re={bubbles:!0,cancelable:!0,clientX:F,clientY:$,screenX:F,screenY:$,view:E};if(x===0?(G.dispatchEvent(new y("pointerdown",{...re,pressure:z,pointerId:1,pointerType:"mouse"})),G.dispatchEvent(new b("mousedown",{...re,button:0,buttons:1}))):(G.dispatchEvent(new y("pointermove",{...re,pressure:z,pointerId:1,pointerType:"mouse"})),G.dispatchEvent(new b("mousemove",{...re,button:0,buttons:1}))),x===I.length-1&&(G.dispatchEvent(new y("pointerup",{...re,pressure:0,pointerId:1,pointerType:"mouse"})),G.dispatchEvent(new b("mouseup",{...re,button:0,buttons:0}))),x<I.length-1){let de=Number(W.timestamp)||0,Ie=Number(I[x+1].timestamp)||0,le=de&&Ie?Math.max(0,Math.min(Ie-de,1e3)):k;le>0&&await Bt(le,w)}}return{success:!0,method:"dispatch_pointer_path",details:`Dispatched ${I.length} point(s)`}}function Br(f,w,E){let I=ee(f,w),y=ie(I,E),b=y.MouseEvent||MouseEvent;pt(f,I,y),J(f,I,y),J(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 bn(f,w,E){let I=ee(f,w),y=ie(I,E),b=y.PointerEvent||PointerEvent,k=y.MouseEvent||MouseEvent;pt(f,I,y);let x=f.getBoundingClientRect(),W=x.left+x.width/2,F=x.top+x.height/2,$={bubbles:!0,cancelable:!0,composed:!0,view:y,clientX:W,clientY:F,button:2,buttons:2};return f.dispatchEvent(new b("pointerdown",$)),f.dispatchEvent(new k("mousedown",$)),f.dispatchEvent(new b("pointerup",{...$,buttons:0})),f.dispatchEvent(new k("mouseup",{...$,buttons:0})),f.dispatchEvent(new k("contextmenu",$)),{success:!0,method:"contextmenu"}}function Rn(f,w,E){let I=ee(f,w),y=ie(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:pc(I),rect:{w:k.width,h:k.height}}}function De(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 Zn(f,w,E,I){await Promise.resolve();let y=ee(f,w),b=ie(y,E);w.hidden||await Cn();let k=Rn(f,y,b);return De(I,k)}function An(f,w,E){f.focus?.({preventScroll:!0});let I=ee(f,w),y=ie(I,E),x=f.getAttribute("role")==="button"||Nf(f,y)||f.tagName.toLowerCase()==="button"?[" ","Enter"]:["Enter"],W=y.KeyboardEvent||KeyboardEvent;for(let F of x){let $={key:F,code:F===" "?"Space":"Enter",bubbles:!0,cancelable:!0,composed:!0};f.dispatchEvent(new W("keydown",$)),f.dispatchEvent(new W("keypress",$)),f.dispatchEvent(new W("keyup",$))}return{success:!0,method:"keyboard-activate"}}async function St(f,w,E,...I){let y=null;for(let b of I){let k=ee(f,w),x=ie(k,E),W=Rn(f,k,x),F=b();if(!F||!F.success)continue;if(await Zn(f,k,x,W))return{...F,details:(F.details?F.details+";":"")+"verified=true"};y=F}return y?{...y,details:(y.details?y.details+";":"")+"verified=false"}:{success:!1,method:"all-strategies-unverified",details:"no verified effect",allowFallback:!0}}function er(...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 pt(f,w,E){let I=ee(f,w),y=ie(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 Lo(f,w,E,I){let y=ee(f,w),k=ie(y,E).KeyboardEvent||KeyboardEvent;for(let x of I){let W=String(x??""),F="";/^[a-z]$/i.test(W)?F=`Key${W.toUpperCase()}`:/^[0-9]$/.test(W)?F=`Digit${W}`:W===" "&&(F="Space");let $=W.length===1?W.charCodeAt(0):0,z={key:W,code:F,bubbles:!0,cancelable:!0,composed:!0,keyCode:$,which:$};f.dispatchEvent(new k("keydown",z)),f.dispatchEvent(new k("keypress",z)),f.dispatchEvent(new k("keyup",z))}}function ln(f,w,E){let I=ee(f,w),b=ie(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)),W=f.dispatchEvent(new b("keypress",k)),F=f.dispatchEvent(new b("keyup",k));if(!!(x&&W&&F)){let z=f.form||f.closest?.("form");z?.requestSubmit?.()??z?.submit?.()}}function Ur(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 tr=new MessageChannel,Fr=[];tr.port1.onmessage=()=>{let f=Fr.shift();f&&f()};function Cn(){return new Promise(f=>{Fr.push(f),tr.port2.postMessage(0)})}function Mn(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 Jt(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 to(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 ee(f,w).querySelector("#root,#app,#__next,[data-reactroot],[data-react-root]")}function Vn(f,w,E,I){let y=ee(w,E),b=ie(y,I),k=b.MouseEvent||MouseEvent,x=w.getBoundingClientRect(),W=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:W,isTrusted:!0,preventDefault(){W.preventDefault()},stopPropagation(){W.stopPropagation()}}}function no(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 Nn(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 Zp(){let e=window,t=e.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__";e[t]?.actions?.execute}async function em(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 Bi(e,t,n={}){let{rootNodes:r,semanticNodes:o}=du(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=Ni(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{constructor(p=document,u=window){O(this,"doc");O(this,"win");O(this,"viewport");O(this,"lastDetectedPrimary",null);O(this,"detectionCache",new Map);O(this,"lastDetectionTime",0);O(this,"CACHE_TTL",5e3);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,_=yr(),A=h&&_?_.innerHeight:v.clientHeight,R=Math.max(0,g-A),U=v.scrollTop;return{selector:u.selector,score:u.score,type:u.type,metrics:{scrollTop:U,scrollHeight:g,clientHeight:A,isAtTop:U<=5,isAtBottom:U>=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),_=ee(h,this.doc),A={element:h,selector:Ms(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 U=this.win.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",H=this.win[U]?.shadow?.getRoot;if(typeof H=="function"){let C=H(R);if(C)return C}}catch{}try{return R.shadowRoot||null}catch{return null}};for(;h.length&&!(++_>u);){let R=h.pop();if(On(R)){let H=R.children;for(let C=H.length-1;C>=0;C--)h.push(H[C]);continue}let U=R,D=Te(U);Ct(U,D)&&v.push(U);try{let H=A(U);H&&h.push(H)}catch{}for(let H=U.lastElementChild;H;H=H.previousElementSibling)h.push(H)}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 U=40,D=this.viewport.width*.15;if(_.height<U||_.width<D){let H=(g.className||"").toLowerCase().includes("scroll"),C=A.overflowY==="auto"||A.overflowY==="scroll"||A.overflow==="auto"||A.overflow==="scroll";if(!H&&!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,U=p.scrollWidth,D=p.clientWidth;if(_){let be=this.doc.documentElement,Re=this.doc.body;A=Math.max(be?be.scrollHeight:0,Re?Re.scrollHeight:0),R=this.win.innerHeight}let H=A-R>8,C=U-D>8,J=v==="auto"||v==="scroll"||v==="overlay",ce=h==="auto"||h==="scroll"||h==="overlay";return{vertical:_?H:H&&J,horizontal:_?C:C&&ce,byOverflow:J||ce}}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),U=0,D=R.currentNode,H=[];for(;D&&U<u;){if(D.nodeType===Node.TEXT_NODE){let me=(D.textContent||"").replace(/\s+/g,"").length;if(me>0){v+=me;let Se=D.parentElement;Se&&Se.closest("a")&&(h+=me)}}else D.nodeType===Node.ELEMENT_NODE&&H.push(D);U++,D=R.nextNode()}let C=H.length||1,J=v/C,ce=v>0?h/v:0;return{textChars:v,linkChars:h,textDensity:J,linkDensity:ce}}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 oe of v){let me=Te(oe);if(!Ct(oe,me))continue;let Se=oe.getBoundingClientRect();if(Se.height<5||Se.width<this.viewport.width*.1)continue;let be=Math.round(Se.height/10)*10,Re=Math.round(Se.width/10)*10;h.set(be,(h.get(be)||0)+1),g.set(Re,(g.get(Re)||0)+1);let $e=(oe.className||oe.tagName).toString();_.set($e,(_.get($e)||0)+1)}let A=v.length||1,R=Math.max(0,...h.values()),U=Math.max(0,...g.values()),D=Math.max(0,..._.values()),H=R/A,C=U/A,J=D/A,ce=.4*H+.3*C+.3*J;return Math.min(1,Math.max(0,ce))}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(),U=`${g} ${_} ${A} ${R}`;return(_==="main"||g==="main")&&(u+=1.2,v="article"),_==="article"&&(u+=1,v=v||"article"),(g==="feed"||U.includes("feed"))&&(u+=1,v="feed"),(g==="log"||U.includes("chat")||U.includes("messages"))&&(u+=1,v="chat"),U.includes("content")&&(u+=.5),(U.includes("results")||U.includes("list"))&&(u+=.4),(U.includes("job")||U.includes("jobs"))&&(u+=.4),(_==="nav"||g==="navigation"||U.includes("sidebar"))&&(u-=1,h=!0),(_==="aside"||g==="complementary")&&(u-=.7,h=!0),(_==="footer"||g==="contentinfo"||U.includes("footer"))&&(u-=.8,h=!0),U.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,U=this.viewport.height/2||1,D=Math.min(1,Math.abs(R-U)/U),H=this.isScrollable(p),C=this.doc.scrollingElement,J=p===this.doc.documentElement||p===this.doc.body||!!C&&p===C,ce=p.scrollHeight,oe=p.clientHeight;if(J){let tt=this.doc.documentElement,Yt=this.doc.body;ce=Math.max(tt?tt.scrollHeight:0,Yt?Yt.scrollHeight:0),oe=this.win.innerHeight}let me=Math.max(0,ce-oe),Se=me*h.width,be=this.analyzeTextContent(p),Re=this.calculateRepetitionScore(p),$e=this.calculateSemanticScore(p),Dt=p.contains(this.doc.activeElement),Le=this.detectScrollListeners(p),Ot=parseInt(v.zIndex||"0",10),ot=Number.isFinite(Ot)?Ot:0;return{geometry:{viewportCoverage:_,widthProminence:A,centerDistance:D,scrollCapacity:me,scrollSurface:Se,zIndex:ot},content:{textDensity:be.textDensity,linkDensity:be.linkDensity,repetitionScore:Re,semanticScore:$e.semanticScore},interaction:{hasScrollListeners:Le,hasFocus:Dt,recentActivity:Dt?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,U=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"||U.repetitionScore>.3&&R.scrollCapacity>400&&R.widthProminence>=.25)return"feed";if(A==="article"||U.textDensity>40&&U.linkDensity<.4&&R.widthProminence>.4)return"article";if(h||R.widthProminence<.3&&U.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 J of p){let ce=this.buildFeatures(J),oe=ce.content.semanticScore,me=this.calculateSemanticScore(J),Se=this.inferElementType(J,ce,me.typeHint,me.navLike);A.push({element:J,features:{geometry:{...ce.geometry},content:{...ce.content,semanticScore:me.semanticScore},interaction:ce.interaction},type:Se,navLike:me.navLike,semanticScore:me.semanticScore}),v.push(ce.geometry.scrollSurface),h.push(ce.content.textDensity),g.push(Math.abs(me.semanticScore)),_.push(ce.content.repetitionScore)}let R=Math.max(0,...v),U=Math.max(0,...h),D=Math.max(0,...g),H=Math.max(0,..._),C=-1/0;for(let J of A){let{element:ce,features:oe,type:me,navLike:Se,semanticScore:be}=J,Re=oe.geometry,$e=oe.content,Dt=oe.interaction,Le=R>0?Re.scrollSurface/R:0,Ot=U>0?$e.textDensity/U:0,ot=D>0?(be/D+1)/2:.5,tt=me==="feed"||$e.repetitionScore>.3&&Re.scrollCapacity>400,Yt=$e.linkDensity>.5?($e.linkDensity-.5)/.5:0,Wt=tt?0:Yt,Qn=(tt?1:.5)*$e.repetitionScore*Math.min(1,Re.scrollCapacity/4e3),In={feed:.2,chat:.2,article:.08,modal:.08,document:.05,sidebar:-.12,unknown:0}[me]||0,ft=0;ft+=Re.viewportCoverage*.18,ft+=Re.widthProminence*.15,ft+=(1-Re.centerDistance)*.07,ft+=Le*.22,ft+=Qn*.18,ft+=Ot*.08,ft+=(H>0?$e.repetitionScore/H:0)*.05,ft+=ot*.07,ft-=Wt*.05,Dt.hasFocus&&(ft+=.05),Dt.hasScrollListeners&&(ft+=.05),ft+=In,Se&&(ft-=.05);let Qt=Math.max(0,Math.min(1,ft));Qt>C&&(C=Qt),u.push({element:ce,selector:Ms(ce,ee(ce)),score:Qt,features:oe,type:me})}if(u.sort((J,ce)=>ce.score-J.score),u.length>=2){let J=u[0],ce=u[1];Math.abs(J.score-ce.score)<.08&&J.type==="article"&&ce.type==="feed"&&(u[0]=ce,u[1]=J)}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),_=ee(h),A=ie(_),R=u?.isTabActive??!_.hidden,U=u?.behavior,D=R&&U==="smooth",H=g?Math.max(_.documentElement?_.documentElement.scrollHeight:0,_.body?_.body.scrollHeight:0):h.scrollHeight,C=g?A.innerHeight:h.clientHeight,J=Math.max(0,H-C),ce=()=>g?A.scrollY:h.scrollTop,oe=me=>{if(D)try{g?A.scrollTo({top:me,behavior:"smooth"}):h.scrollTo({top:me,behavior:"smooth"})}catch{g?(_.scrollingElement||_.documentElement||_.body).scrollTop=me:h.scrollTop=me}else if(g){let Se=_.scrollingElement||_.documentElement||_.body;Se.scrollTop=me}else h.scrollTop=me};switch(p){case yt.TOP:return oe(0),{success:!0,scrollTop:0,isAtTop:!0};case yt.BOTTOM:return oe(J),{success:!0,scrollTop:J,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",U=yr(),D=g&&U?U.innerHeight:h.clientHeight,H=g&&U?U.innerWidth:h.clientWidth,C=u?.amount??D*.8,J=g?Math.max(document.documentElement?document.documentElement.scrollHeight:0,document.body?document.body.scrollHeight:0):h.scrollHeight,ce=g&&U?U.innerHeight:h.clientHeight,oe=Math.max(0,J-ce),me=be=>{if(R)try{g?U?.scrollTo({top:be,behavior:"smooth"}):h.scrollTo({top:be,behavior:"smooth"})}catch{let Re=document.scrollingElement||document.documentElement||document.body;Re.scrollTop=be}else{let Re=g?document.scrollingElement||document.documentElement||document.body:h;Re.scrollTop=be}},Se=be=>{if(R)try{h.scrollBy({left:be,behavior:"smooth"})}catch{h.scrollLeft+=be}else h.scrollLeft+=be};switch(p){case yt.DOWN:{let Re=(g&&U?U.scrollY:h.scrollTop)+C;me(Re);let $e=g&&U?U.scrollY:h.scrollTop;return{success:!0,scrollTop:$e,isAtTop:$e<=5,isAtBottom:$e>=oe-5}}case yt.UP:{let be=g&&U?U.scrollY:h.scrollTop,Re=Math.max(0,be-C);me(Re);let $e=g&&U?U.scrollY:h.scrollTop;return{success:!0,scrollTop:$e,isAtTop:$e<=5,isAtBottom:$e>=oe-5}}case yt.LEFT:{let be=-(u?.amount??H*.8);return Se(be),{success:!0,scrollLeft:h.scrollLeft}}case yt.RIGHT:{let be=u?.amount??H*.8;return Se(be),{success:!0,scrollLeft:h.scrollLeft}}default:return{success:!1,error:`Unknown direction: ${p}`}}}normalizeScrollPosition(p){switch(p){case Kt.START:return"start";case Kt.END:return"end";case Kt.NEAREST:return"nearest";case Kt.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=Te(g),R=A?.DOMRect||DOMRect,U=_?new R(0,0,A.innerWidth??0,A.innerHeight??0):g.getBoundingClientRect(),D=h.getBoundingClientRect(),H=24,C=D.top>=U.top+H&&D.bottom<=U.bottom-H,J=v?.isTabActive??!document.hidden,ce=v?.behavior,oe=J&&ce==="smooth",me=this.normalizeScrollPosition(u);if(u===Kt.NEAREST&&C)return{success:!0,alreadyVisible:!0,...this.getScrollMetricsForContainer(g,_)};try{h.scrollIntoView({behavior:oe?"smooth":"auto",block:me,inline:"nearest"})}catch{h.scrollIntoView()}let Se=this.getScrollMetricsForContainer(g,_);return{success:!0,position:me,...Se}}getScrollMetricsForContainer(p,u){let v=u?Math.max(document.documentElement?document.documentElement.scrollHeight:0,document.body?document.body.scrollHeight:0):p.scrollHeight,h=ee(p),g=Te(p),_=u&&g?g.innerHeight:p.clientHeight,A=Math.max(0,v-_),U=(u?h.scrollingElement||h.documentElement||h.body:p).scrollTop;return{scrollTop:U,scrollHeight:v,clientHeight:_,maxScroll:A,isAtTop:U<=5,isAtBottom:U>=A-5,scrollPercentage:A>0?U/A*100:0}}getScrollMetrics(){let p=this.getValidPrimary()||this.detectPrimaryScrollable()?.element;if(!p)return null;let{target:u,isRoot:v}=this.getScrollContext(p),h=ee(u),g=ie(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:Ms(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 Ry=/\[id=(\d+)\]/,Lt;(function(e){e.HTML="html",e.PDF="pdf",e.GOOGLE_DOC="google_doc",e.GOOGLE_SHEET="google_sheet",e.PLAIN_TEXT="plain_text"})(Lt||(Lt={}));var Ay=20,Ns=new Map;function Cy(e,t){if(Ns.size>=Ay&&!Ns.has(e)){let n=Ns.keys().next().value;n!==void 0&&Ns.delete(n)}Ns.set(e,t)}var My=24,Ny=220,Ly=0,Dy=250,Oy=2,Py=300,By=new Set(["BODY","DIV","SPAN","IMG","PICTURE","SVG"]),Uy=new Set(["A","BUTTON","INPUT","SELECT","TEXTAREA","H1","H2","H3","H4","H5","H6","MAIN","NAV","HEADER","FOOTER","ARTICLE","SECTION","ASIDE"]);function Fy(e){let t={};for(let n of Object.keys(e)){let r=e[Number(n)],o=r?.preservedAttributes?.[Tn["rtrvr-label"]],s=r?.resourceLocator;if(typeof o=="string"&&typeof s=="string"){let i=o.match(Ry);if(i?.[1]){let a=Number(i[1]);Number.isFinite(a)&&(t[a]=s)}}}return t}async function cm(e,t,n={}){let r=e.ownerDocument||document,o=n.pageConfig||Ss,s=String(r.contentType||"").trim().toLowerCase(),i=Vy(s,r),a=$y(i.documentType,s),c={url:r.URL,title:r.title,contentType:a},d=Wy(o),p=Hy(o);if(i.documentType!==Lt.HTML){let ce=Number(o?.pageDataTimeoutMs),oe=Number.isFinite(ce)?Math.max(200,Math.floor(ce)):9e3,me=Math.max(200,Math.min(oe,Nt(d))),Se=Ky(r,i.documentType,o,d),be=await Cs(Se,me,r);if(!be.ok)return{...c,content:"",error:`non_html_timeout:${a}`,metadata:{extractionMethod:"timeout"}};let Re=be.value||{},$e=i.documentType===Lt.GOOGLE_SHEET?ET(r):void 0;return{...c,...Re,contentType:Re.contentType||c.contentType,sheetInfo:Re.sheetInfo||$e}}if(o?.onlyTextContent)return{...c,contentType:Rs,content:Ui(r)};let u=Math.max(0,Math.min(1e3,Nt(d))),v=performance.now(),h=!1;if(!o?.disableAutoScroll&&u>80){let ce=r.hidden?200:400,oe=Math.min(ce,u);oe>80&&(h=await _T(r,{profile:"light",timeBudgetMs:oe,delayMs:r.hidden?0:160,finalWaitMs:r.hidden?0:200}))}let g=Math.max(0,u-(performance.now()-v));g>60&&await tm(r,{...p,deadlineEpochMs:d,totalBudgetMs:g});let _=Math.max(0,u-(performance.now()-v));_>80&&await wT(r,{mode:"full",totalBudgetMs:Math.min(r.hidden?300:400,_),budgetMs:Math.min(r.hidden?200:300,_),maxPasses:r.hidden?1:2});let A=Bi(e,t,{includeFrames:n.includeFrames??!0,disableDomAnnotations:n.disableDomAnnotations??!0}),R="normal",U=0,D=0,H=[],C=Math.max(0,p.sparseTreeRetryMaxAttempts)>0,J=rm(r,A.rootNodes,A.semanticNodes);if(J.needsStabilization){H=[...J.reasons],R="suspicious_unrecovered";let ce=C?Math.max(0,Math.min(Py,Nt(d)-20)):0;if(ce>20){let oe=Date.now();await tm(r,{...p,retries:0,deadlineEpochMs:d,totalBudgetMs:ce}),D=Date.now()-oe,U=1,A=Bi(e,t,{includeFrames:n.includeFrames??!0,disableDomAnnotations:n.disableDomAnnotations??!0});let me=rm(r,A.rootNodes,A.semanticNodes);me.reasons.length>0&&(H=[...me.reasons]),!me.needsStabilization&&!nm(A.rootNodes,A.semanticNodes)&&(R="suspicious_recovered")}}return nm(A.rootNodes,A.semanticNodes)?{...c,contentType:Rs,content:Ui(r),metadata:{scrollingPerformed:h,extractionMethod:"empty_tree_fallback",treeCapture:{status:R,attempts:U,waitedMs:D,reasons:H}}}:{...c,contentType:Rs,roots:A.rootNodes,nodes:A.semanticNodes,elementLinkRecord:Fy(A.semanticNodes),metadata:{scrollingPerformed:h,extractionMethod:R!=="normal"?R:void 0,treeCapture:{status:R,attempts:U,waitedMs:D,reasons:H}}}}function Hy(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))):My,maxWaitMs:Number.isFinite(n)?Math.max(80,Math.min(5e3,Math.floor(n))):Ny,retries:Number.isFinite(r)?Math.max(0,Math.min(6,Math.floor(r))):Ly,sparseTreeRetryDelayMs:Number.isFinite(o)?Math.max(20,Math.min(1e3,Math.floor(o))):Dy,sparseTreeRetryMaxAttempts:Number.isFinite(s)?Math.max(0,Math.min(4,Math.floor(s))):Oy}}async function tm(e,t){let n=Nt(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&&Nt(o)>20;){let i=Math.max(40,Math.min(t.maxWaitMs,Nt(o)));if(await qy(e,{debounceMs:t.debounceMs,windowBudgetMs:i,deadlineEpochMs:o}))return;s+=1}}async function qy(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(;Nt(t.deadlineEpochMs)>20&&Nt(s)>20;){let i=Date.now()-r;if(i>=t.debounceMs)return!0;let a=Math.max(10,Math.min(60,t.debounceMs-i,Nt(t.deadlineEpochMs),Nt(s)));await Bt(a,e)}}finally{o.disconnect()}return!1}function Wy(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 $y(e,t){switch(e){case Lt.PDF:return mu;case Lt.GOOGLE_DOC:return bu;case Lt.GOOGLE_SHEET:return hu;case Lt.PLAIN_TEXT:return hc;case Lt.HTML:default:return t||Rs}}function Vy(e,t){let n=e||String(t.contentType||"").toLowerCase();return $p(n)?{documentType:Lt.PDF}:zy(t)&&(Gy(t)||jy(t.URL))?{documentType:Lt.PDF}:iT(t)?{documentType:Lt.GOOGLE_DOC}:aT(t)?{documentType:Lt.GOOGLE_SHEET}:n.includes(hc)?{documentType:Lt.PLAIN_TEXT}:{documentType:Lt.HTML}}function zy(e){try{let t=Zy(e);return vu(t)?!0:!!t.querySelector?.('object[type="application/pdf"],object[type="application/x-google-chrome-pdf"]')}catch{return!1}}function jy(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 Gy(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 Ky(e,t,n,r){switch(t){case Lt.PDF:return Xy(e,n,r);case Lt.GOOGLE_DOC:return Yy(e);case Lt.GOOGLE_SHEET:return vT(e,n);case Lt.PLAIN_TEXT:return{content:Ui(e),contentType:hc};case Lt.HTML:default:return{content:Ui(e),contentType:Rs}}}async function Xy(e,t,n){Nt(n)>pu+50&&await Vp(pu,e,n);let o=(()=>{let p=Number(t?.pdfTextSelectionTimeoutMs),u=Ss.pdfTextSelectionTimeoutMs;return Number.isFinite(p)?Math.max(150,Math.floor(p)):u})(),s=Nt(n),a=Number.isFinite(s)?Math.max(150,Math.min(o,Math.max(0,s-150))):o,c=await tT(e,a),d=!!c.success&&!!(c.data||"").trim();return{content:d&&c.data||"",contentType:mu,error:d?void 0:`pdf_extraction_failed:${c.reason||"unknown"}`}}async function Yy(e){return{content:bT(),contentType:bu}}function nm(e,t){return!Array.isArray(e)||e.length===0||!t||Object.keys(t).length===0}function Qy(e){return!!(e.documentElement?.hasAttribute(Fo)||e.body?.hasAttribute(Fo)||e.body?.getAttribute?.("aria-busy")==="true")}function Jy(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||Uy.has(d))&&(a+=1),By.has(d)&&(i+=1)}return{rootsCount:r,semanticCount:o,meaningfulNodeCount:a,genericNodeRatio:o>0?i/o:1,visibleTextLength:0,isDocumentComplete:e.readyState==="complete",busy:Qy(e)}}function rm(e,t,n){let r=Jy(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=Ui(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 Ui(e){return e.body?.innerText||e.body?.textContent||e.documentElement?.innerText||e.documentElement?.textContent||""}function Zy(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 eT(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 tT(e,t){let n=Number.isFinite(t)&&t>0?Math.floor(t):Ss.pdfTextSelectionTimeoutMs,r=eT(e),o=Ns.get(r)??"";if(o.trim().length>0)return{success:!0,data:o,reason:"ok"};let s=await nT(e,n);return s.success&&s.data.trim()&&Cy(r,s.data),s}async function nT(e,t){let n=e.defaultView||window,r=rT(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||!oT(String(p.origin||""),e))return;let u=p.data;sT(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 Bt(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 rT(e){let t=vu(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 oT(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 sT(e,t){return!(!e||typeof e!="object"||e.type!=="getSelectedTextReply"||typeof e.selectedText!="string"||e.requestId&&e.requestId!==t)}function iT(e){try{let t=e.defaultView||yr();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 aT(e){let n=(e.defaultView||yr())?.location.href??"";return/^https:\/\/docs\.google\.com\/spreadsheets\/(?:u\/\d+\/)?d\/[a-zA-Z0-9_-]+/.test(n)}function cT(e){try{return e.defaultView?.top?.document??e}catch{return e}}function _c(e){let t=[e],n=cT(e);return n!==e&&t.push(n),t}var lT=".docs-texteventtarget-iframe",uT=".kix-cursor",dT=".docos-replyview-body",fT=".docos-replyview",pT=".docos-author",lm="\u200B",mT="\xA0";function Ls(e){for(let t of _c(e)){let n=t.querySelector(lT);if(n)return n}return null}function hT(e){for(let t of _c(e)){let n=t.querySelector(uT);if(n)return n}return null}function vc(e){let t=hT(e);return t?(t.ownerDocument?.defaultView?.getComputedStyle(t).display??t.style.display)==="none":!1}function yc(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 om(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 gT(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 Tc(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(lm,"g"),"")??""}function wu(e){let t=`
|
|
3
3
|
|
|
4
|
-
Comments: `,n=new Set,r=[];for(let s of
|
|
4
|
+
Comments: `,n=new Set,r=[];for(let s of _c(e))try{let i=Array.from(s.querySelectorAll(dT));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(fT);if(!i)continue;let a=i.querySelector(pT);a&&a.textContent&&(t+=`
|
|
5
5
|
Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
6
|
-
`)}return t.trim()}function
|
|
6
|
+
`)}return t.trim()}function bT(){let e=bt()||document,t=Ls(e),n=t?.contentDocument,r=t?.contentWindow,o=()=>{let s=n?.body,i=bt(),a=s?.innerText||s?.textContent||""||i?.body?.innerText||i?.body?.textContent||"";return String(a).replace(new RegExp(lm,"g"),"")+wu(e)};try{try{r?.focus(),n?.body?.focus?.()}catch{}if(gT(e),vc(e)){let c=Tc(e);if(c.trim()!==""){let d=wu(e).trim();return c+d}else om(e)}let s="";if(yc(e,!0),vc(e)){let c=Tc(e);c.endsWith(`
|
|
7
7
|
|
|
8
|
-
`)||(s+=c.trimEnd())}if(
|
|
9
|
-
`)&&
|
|
10
|
-
`)&&(s+=c)}Wf(e);let i=wl(e).trim(),a=s.trim()+i;return a.trim()?a:o()}catch{return o()}}async function ay(e,t){let n="",r;Xf(e,e.defaultView||window);let o=xt(t?.deadlineEpochMs);try{let s=Math.max(250,Math.min(1500,Math.floor(o*.45))),i=await cs(cy(e),s,e);if(!(i.ok&&i.value))throw new Error("google_sheet_copy_failed");let c=xt(t?.deadlineEpochMs),l=Math.max(250,Math.min(2500,Math.floor(c*.55)));if(n=await ly(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:gl,error:r}}function Xf(e,t){try{t?.focus?.()}catch{}try{e?.body?.focus?.()}catch{}}function Il(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 cy(e){try{if(Xf(e,e.defaultView||window),e.hidden||!e.hasFocus())return!1;Il(e,{key:"Escape",code:"Escape"}),await At(150,e);let t=e.querySelector(".grid-container")||$f(e,".grid-container"),n=e.querySelector(".grid4-inner-container:last-child")||$f(e,".grid4-inner-container:last-child");if(n){try{n.focus()}catch{}await At(100,e)}else if(t){try{t.focus?.()}catch{}await At(80,e)}let o=(typeof navigator<"u"?String(navigator.platform||""):"").toUpperCase().indexOf("MAC")>=0;Il(e,{key:"a",code:"KeyA",ctrlKey:!o,metaKey:o}),await At(200,e),Il(e,{key:"c",code:"KeyC",ctrlKey:!o,metaKey:o}),await At(200,e);try{e.execCommand("copy")}catch{}return!0}catch{return!1}}async function ly(e,t){let n=Math.max(250,Math.min(5e3,Math.floor(e)));if(navigator?.clipboard?.readText){let s=await cs(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 $f(e,t){let n=Na(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 uy(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 Vf(e,{action:"detectPrimary"});if(A?.selector){let H=dy(e,A.selector);H&&(g=H)}let S=A?.metrics;if(S&&typeof S.scrollHeight=="number"&&typeof S.clientHeight=="number"){let H=Math.max(0,S.scrollHeight-S.clientHeight);m=Math.min(m,H||m),H<1500?v=Math.min(v,2):H<4e3?v=Math.min(v,4):H<1e4&&(v=Math.min(v,6))}}catch{}if(g||(g=e.scrollingElement||e.documentElement||e.body),!g)return!1;let T=0,O=null,N=0;for(let A=0;A<v&&!(i()<=0);A++){let S=null;try{S=await Vf(e,{action:"scrollBy",direction:mt.DOWN,options:{amount:p,behavior:"auto",isTabActive:r}})}catch{}if(!S||!S.success){let V=e.defaultView||window;S=Ra(g,e,V,mt.DOWN,p),N=2}if(!S?.success)break;let H=S.scrollTop??O??0;if(O!==null){let V=Math.max(0,H-O);T+=V,N=V===0?N+1:0}if(O=H,S.isAtBottom||N>=2||T>=m)break;if(l>0&&A<v-1){let V=Math.min(l,Math.max(0,i()));if(V<=0)break;await At(V,e)}}if(d>0){let A=Math.min(d,Math.max(0,i()));A>0&&await At(A,e)}if(i()>80)try{let A=e.scrollingElement||e.documentElement||e.body,S=e.defaultView||window,H=g===e.documentElement||g===e.body||g===A?A:g;if(H){let V=H===A?S.innerHeight:H.clientHeight||S.innerHeight,J=Math.max(0,H.scrollHeight-V);H.scrollTop=J}}catch{}return!0}function dy(e,t){try{return e.querySelector(t)}catch{return null}}async function Vf(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 fy(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&&xt(i)>0;){let c=Math.max(50,Math.min(t.budgetMs,xt(i)));try{await s({mode:t.mode??"full",includeShadow:!0,includeSameOriginIframes:!0,budgetMs:c,deadlineEpochMs:i})}catch{break}if(zf(e)===0)break;a++}if(zf(e)>0&&xt(i)>50){let c=Math.min(120,xt(i));try{await s({mode:"priority",includeShadow:!0,includeSameOriginIframes:!0,budgetMs:c,deadlineEpochMs:i})}catch{}}}function zf(e){let t=e.documentElement;if(!t)return 0;let n=t.getAttribute(Eo);if(!n)return 0;let r=Number.parseInt(n,10);return Number.isFinite(r)&&r>0?r:0}function py(e){let t=my(e.URL||"");if(!t?.sheetId)return;let n=hy(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 my(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 hy(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 An;(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"})(An||(An={}));var gy={native:An.Native,inline:An.Inline,react:An.React,vue:An.Vue,angular:An.Angular,svelte:An.Svelte,jquery:An.JQuery,delegated:An.Delegated,other:An.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{O(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,P=I.prototype.removeEventListener;I.prototype.addEventListener=function(W,Y,le){try{Xr(Y)||wn(this,W,le)}catch{}return M.call(this,W,Y,le)},I.prototype.removeEventListener=function(W,Y,le){try{Kr(this,W,le)}catch{}return P.call(this,W,Y,le)};try{let W=Function.prototype.toString;I.prototype.addEventListener.toString=()=>W.call(M),I.prototype.removeEventListener.toString=()=>W.call(P)}catch{}}catch{}}function O(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(P){let W=M.call(this,P);try{qs.set(this,W)}catch{}try{$e(W)}catch{}return W};try{let P=Function.prototype.toString;I.prototype.attachShadow.toString=()=>P.call(M)}catch{}}catch{}}function N(h){let M=n.get(h)?.listenerTypeMasks;if(M&&M.size){let P=[];for(let W of M.keys()){let Y=Lr[W];Y&&P.push(Y)}return P}return Vs(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,H=new Set,V=null,J=!1,se=6,he=["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=()=>!!ft()?.hidden);return}e[t]=!0;let Ee={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 be(h){return h?String(h).split(".")[0].toLowerCase():""}let De=["data-click","data-action","data-event","data-handler","data-on-click","data-onclick","data-tap","data-press","data-toggle","data-target"],Re=0,dt=null,Ae=new MessageChannel,Lt=[];Ae.port1.onmessage=()=>{let h=Lt.shift();h&&h()};function bt(){return Date.now()}function ct(h){return!h||!Number.isFinite(h)?Number.POSITIVE_INFINITY:Math.max(0,h-bt())}let Dt=8,Vn=new MessageChannel,Nn=!1;function un(){if(!Nn){Nn=!0;try{Vn.port2.postMessage(0)}catch{}}}function yt(h){let I=h.values().next();if(I.done)return null;let M=I.value;return h.delete(M),M}function Je(){return new Promise(h=>{Lt.push(h),Ae.port2.postMessage(0)})}let en=!1;function Sr(){if(!en)try{let h=e.jQuery;h&&h.fn&&(pn(h),en=!0,Pt("jquery"))}catch{}}function Rr(h,I){for(let M=I.lastElementChild;M;M=M.previousElementSibling)h.push(M)}function kn(h,I,M){if(M)try{let P=Yr(I);P&&h.push(P)}catch{}}function bo(h,I,M){if(M&&$s(I))try{let P=I.contentWindow||null;P&&g(P);let W=P?.document?.documentElement;W&&h.push(W)}catch{}}let Ze=new WeakSet;function zn(h){h&&(typeof h=="function"||typeof h=="object")&&Ze.add(h)}function Xr(h){return!!h&&(typeof h=="function"||typeof h=="object")&&Ze.has(h)}Vn.port1.onmessage=()=>{if(Bt()){H.clear(),i.clear(),S=0,vt(),Nn=!1;return}Nn=!1,fn(500);let h=performance.now();for(;H.size&&performance.now()-h<Dt;){let I=yt(H);if(!I)break;try{ie(I)}catch{}finally{S=Math.max(0,S-1)}}for(;i.size&&performance.now()-h<Dt;){let I=yt(i);if(!I)break;try{tn(I)}catch{}}vt(),(H.size||i.size)&&un()};function vt(){try{let h=ft()?.documentElement;if(!h)return;h.setAttribute(Eo,String(S))}catch{}}function dn(h){let I=n.get(h);return I||(I={frameworks:new Set,listeners:new Map},n.set(h,I)),I}function Ln(h){Bt()||(i.add(h),i.size>2e3&&fn(1500),un())}function Ot(h){Bt()||H.has(h)||(H.add(h),S++,vt(),un(),H.size>2e3&&fn(1500))}function fn(h=1500){let I=0;for(let M of H){if(I>=h)break;I++,M.isConnected||(H.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)}vt()}let ot=null;function Ar(h,I,M){return`${h}|${I?1:0}|${M?1:0}`}function lr(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 De)if(h.hasAttribute(M))return!0;return!!(h.hasAttribute("aria-haspopup")||h.hasAttribute("aria-expanded"))}function jn(h){let I=ye(h);if(!wt(h,I))return!1;let M=h.tagName;if(M!=="DIV"&&M!=="SPAN"&&M!=="LI"&&M!=="SECTION"&&M!=="ARTICLE"&&M!=="P")return!1;let P=h;if(P.__ngContext__||P.__svelte__||P.__vue__||P._vnode||P.__reactFiber$||P.__reactProps$)return!0;let W=0;for(let Y in P){if(++W>30)break;if(Y.startsWith("__react")||Y.includes("reactFiber")||Y.includes("reactProps"))return!0}return!1}function Dn(){let h=ft()?.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 yo(h){if(Bt())return;let I=performance.now();for(;H.size&&performance.now()-I<h;){let M=yt(H);if(!M)break;try{ie(M)}catch{}finally{S=Math.max(0,S-1)}}for(;i.size&&performance.now()-I<h;){let M=yt(i);if(!M)break;try{tn(M)}catch{}}}async function Gn(h={}){if(Bt())return H.clear(),i.clear(),S=0,vt(),{revision:++Re,scanned:0,durationMs:0,done:!0,remaining:0};fn(3e3),Sr(),rn();let I=h.mode??"full",M=h.includeShadow??!0,P=h.includeSameOriginIframes??!0,W=Math.max(50,Math.min(h.budgetMs??2500,15e3)),Y=h.deadlineEpochMs,le=Math.max(0,Math.min(W,ct(Y))),me=Ar(I,M,P);if(le<=0){let Gt=(ot?.stack?.length??0)+H.size+i.size;return{revision:++Re,scanned:0,durationMs:0,done:Gt===0,remaining:Gt}}if((!ot||ot.optsKey!==me)&&ct(Y)>30&&await _e({budgetMs:18,deadlineEpochMs:Y}),I==="priority"){let Gt=performance.now(),nt=0;for(;H.size&&performance.now()-Gt<=le&&!(Y&&ct(Y)<=0);){let lt=yt(H);if(!lt)break;try{ie(lt)}catch{}nt++,S=Math.max(0,S-1)}for(;i.size&&performance.now()-Gt<=le&&!(Y&&ct(Y)<=0);){let lt=yt(i);if(!lt)break;try{tn(lt)}catch{}}return vt(),{revision:++Re,scanned:nt,durationMs:performance.now()-Gt,done:H.size===0&&i.size===0,remaining:H.size+i.size}}if(!ot||ot.optsKey!==me){let Gt=ft()?.documentElement;ot={optsKey:me,stack:Gt?[Gt]:[],scannedTotal:0}}let He=performance.now(),Ve=0;for(S++,vt();ot.stack.length&&!(Y&&ct(Y)<=0);){let Gt=ot.stack.pop();if(Sn(Gt)){let lt=Gt.children;for(let fr=lt.length-1;fr>=0;fr--)ot.stack.push(lt[fr]);continue}let nt=Gt;if(!(!nt||nt.nodeType!==1)&&!(nt.tagName==="SCRIPT"||nt.tagName==="STYLE"||nt.tagName==="META"||nt.tagName==="NOSCRIPT")){try{(lr(nt)||Dn()&&jn(nt))&&ie(nt)}catch{}try{tn(nt)}catch{}if(H.delete(nt)&&(S=Math.max(0,S-1)),i.delete(nt),Ve++,ot.scannedTotal++,M)try{let lt=Yr(nt);lt&&($e(lt),ot.stack.push(lt))}catch{}if(P&&$s(nt))try{let lt=nt.contentWindow||null;lt&&g(lt);let fr=lt?.document,pr=fr?.documentElement;fr&&pr&&(te(fr),ot.stack.push(pr))}catch{}for(let lt=nt.lastElementChild;lt;lt=lt.previousElementSibling)ot.stack.push(lt);Ve%800===0&&ct(Y)>20&&await Je()}}let Qe=Math.max(0,le-(performance.now()-He)),Ut=ct(Y);yo(Math.min(250,Qe,Ut)),S=Math.max(0,S-1),vt();let qt=ot.stack.length===0,Nr=ot.stack.length;return qt&&(ot=null),{revision:++Re,scanned:Ve,durationMs:performance.now()-He,done:qt,remaining:Nr}}async function ur(h={}){return dt||(dt=Gn(h).finally(()=>{dt=null}),dt)}e.rtrvrAIFlushScan=ur;let dr="__RTRVR_INTERNAL__";Object(window).__RTRVR_INTERNAL_KEY__=dr;let _n=e[dr],En=_n&&typeof _n=="object"?_n:{};if(!_n)try{Object.defineProperty(e,dr,{value:En,writable:!1,configurable:!1,enumerable:!1})}catch{}try{Object.defineProperty(En,"flushScan",{value:ur,writable:!1,configurable:!1,enumerable:!1})}catch{}function we(h,I){let M=dn(h),P=be(I.type);if(!P)return;let W=!1,Y=M.listeners.get(P);Y||(Y=[],M.listeners.set(P,Y),W=!0);let le=Y.find(xe=>xe.source===I.source&&!!xe.inferred==!!I.inferred);if(le){let xe=!!le.capture,He=!!le.passive,Ve=!!le.once;le.capture=le.capture||I.capture,le.passive=le.passive||I.passive,le.once=le.once||I.once,(xe!==!!le.capture||He!==!!le.passive||Ve!==!!le.once)&&(W=!0)}else Y.push({...I,type:P}),W=!0;let me=qe[P];if(me!==void 0){M.listenerTypeMasks||(M.listenerTypeMasks=new Map);let xe=0,He=gy[I.source];xe|=He!==void 0?He:An.Other,I.inferred&&(xe|=An.Inferred);let Ve=M.listenerTypeMasks.get(me)||0,Qe=Ve|xe;Qe!==Ve&&(M.listenerTypeMasks.set(me,Qe),W=!0)}W&&(M.role=void 0,Ln(h))}function Cr(h){let I=h.listenerTypeMasks;return!I||I.size===0?null:[...I.entries()].sort((P,W)=>P[0]-W[0]).map(([P,W])=>`${P}~${(W||0).toString(36)}`).join(",")}function On(h,I){let M=dn(h);M.frameworks.has(I)||(M.frameworks.add(I),Ln(h))}function Pt(h){r.frameworks.has(h)||(r.frameworks.add(h),ft()?.documentElement?.setAttribute(`rtrvr-${h}`,"1"))}function tn(h){let I=n.get(h);if(!I)return;i.delete(h);let M=Cr(I);M?M!==I.lastListenersSerialized&&(h.setAttribute(Qr,M),I.lastListenersSerialized=M):I.lastListenersSerialized&&(h.removeAttribute(Qr),I.lastListenersSerialized=void 0);let P=ye(h);if(wt(h,P))if(I.role===void 0&&(I.role=Pn(h)),I.role){let W=Zo[I.role],Y=typeof W=="number"?String(W):`s:${I.role}`;Y!==I.lastRoleSerialized&&(h.setAttribute(Or,Y),I.lastRoleSerialized=Y)}else(I.lastRoleSerialized||h.hasAttribute(Or))&&(h.removeAttribute(Or),I.lastRoleSerialized=void 0)}function st(h){let I=[],M=h;for(;M;)I.push(M),M=M.parentNode||M.host;return I}function Ko(h){let I=h.tagName.toLowerCase(),M=h.getAttribute("role"),P=M?M.toLowerCase().trim():"";if(P&&Dr.has(P)||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 W=h.getAttribute("tabindex");return!!(W!==null&&!Number.isNaN(Number.parseInt(W,10))&&(N(h).some(me=>ua.has(me))||h.getAttributeNames().some(me=>me.startsWith("on"))))}function Gi(h,I=10){let M=[];for(let P=0;P<h.children.length;P++)M.push({node:h.children[P],depth:1});for(;M.length;){let{node:P,depth:W}=M.pop();if(Ko(P))return!0;if(!(W>=I))for(let Y=0;Y<P.children.length;Y++)M.push({node:P.children[Y],depth:W+1})}return!1}function Pn(h){let I=h.tagName.toLowerCase(),M=h.getAttribute("role"),P=M?M.toLowerCase().trim():"",W=h.type?.toLowerCase();if(P&&Dr.has(P))return P;if(P&&zs.has(P))return null;if(I==="a"&&h.hasAttribute("href"))return"link";if(I==="button")return"button";if(I==="input")return W==="hidden"?null:W==="checkbox"?"checkbox":W==="radio"?"radio":W==="range"?"slider":W==="number"?"spinbutton":W==="search"?"searchbox":["button","submit","reset","image","file"].includes(W)?"button":h.hasAttribute("list")?"combobox":"textbox";if(I==="textarea")return"textbox";if(I==="select"){let Qe=h;return Qe.multiple||Qe.size&&Qe.size>1?"listbox":"combobox"}if(I==="option")return"option";if(I==="form")return"form";if(I==="video"||I==="audio"){let Qe=Vs(h);return h.hasAttribute("controls")||Qe.length>0?"media":null}if(h.isContentEditable||h.hasAttribute("contenteditable"))return"textbox";let Y=N(h);if(!Y.length)return null;let le=!1,me=!1,xe=!1;for(let Qe=0;Qe<Y.length;Qe++){let Ut=Y[Qe];!le&&ua.has(Ut)&&(le=!0),!me&&Zc.has(Ut)&&(me=!0),!xe&&el.has(Ut)&&(xe=!0)}if(!le&&!me&&!xe)return null;let He=h.getAttribute("tabindex"),Ve=He!==null&&!Number.isNaN(Number.parseInt(He,10));if(le&&(ll(h)||h.getAttribute("href")||h.closest("a[href]")))return"link";if(me){if(h.isContentEditable||h.hasAttribute("contenteditable"))return"textbox";if(P==="textbox"||P==="searchbox"||P==="combobox"||P==="spinbutton")return P;if(!le&&Ve)return"textbox"}if(le){let Qe=h.getAttribute("aria-checked"),Ut=h.getAttribute("aria-pressed");if(Qe!==null||Ut!==null){if(P==="radio")return"radio";if(P==="menuitemradio")return"menuitemradio";if(P==="menuitemcheckbox")return"menuitemcheckbox";if(Ut!==null)return"button";if(Qe!==null)return"checkbox"}if((Ve||P==="button")&&!Gi(h))return"button"}return xe?"application":null}let Mr=EventTarget.prototype.addEventListener,Bn=EventTarget.prototype.removeEventListener;function nn(h){let I=!1,M,P;return typeof h=="boolean"?I=h:h&&typeof h=="object"&&(I=!!h.capture,M=h.passive,P=h.once),{capture:I,passive:M,once:P}}function Xn(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 wn(h,I,M){let P=be(I);if(!P)return;let{capture:W,passive:Y,once:le}=nn(M),me=o.get(h);me||(me=new Map,o.set(h,me));let xe=me.get(P);if(xe?(xe.count+=1,xe.capture=xe.capture||W,xe.passive=xe.passive||Y):me.set(P,{count:1,capture:W,passive:Y}),ko(h))try{we(h,{type:P,source:"native",capture:W,passive:Y,once:le})}catch{}let He=Xn(h);if(He&&(P==="click"||P==="input"||P==="keydown"))try{He.documentElement?.setAttribute(`rtrvr-gl-${P}`,"1")}catch{}}function Kr(h,I,M){let P=be(I);if(!P)return;let W=o.get(h);if(!W)return;let Y=W.get(P);Y&&(Y.count-=1,Y.count<=0&&W.delete(P),W.size===0&&o.delete(h))}g(window);function pn(h){if(!h||!h.fn)return;let I=h.fn.on,M=h.fn.off;function P(Y){if(!Y)return[];if(typeof Y=="string")return Y.split(/\s/).map(le=>be(le)).filter(Boolean);if(typeof Y=="object")try{return Object.keys(Y).map(le=>be(le)).filter(Boolean)}catch{return[]}return[]}function W(Y){try{if(!Y)return null;if(ko(Y))return Y;let le=ye(Y);return sa(Y,le)||null}catch{}return null}h.fn.on=function(Y,le){let me=P(Y),xe=typeof le=="string"&&!!le;return this.each(function(){let He=W(this);if(He){if(xe){let Ve=s.get(He);Ve||(Ve=[],s.set(He,Ve));for(let Qe of me){let Ut=`${Qe}::${le}`;Ve.some(qt=>`${qt.type}::${qt.selector}`===Ut)||(Ve.push({type:Qe,selector:le}),Ve.length>400&&Ve.shift())}}else for(let Ve of me)we(He,{type:Ve,source:"jquery"});On(He,"jquery"),Pt("jquery"),r.jqueryRoots.add(He)}}),I.apply(this,arguments)},h.fn.off=function(){return M.apply(this,arguments)},Pt("jquery")}function et(h){De.some(M=>h.hasAttribute(M))&&(we(h,{type:"click",source:"other",inferred:!0}),(h.tagName==="INPUT"||h.tagName==="TEXTAREA")&&(we(h,{type:"input",source:"other",inferred:!0}),we(h,{type:"change",source:"other",inferred:!0})))}function vo(h){let I=ye(h),M=wt(h,I),P=h.getAttributeNames().some(xe=>xe.startsWith("on")),W=/^(button|a|input|select|textarea|summary)$/i.test(h.tagName),Y=h,le=M&&(ma(h)||!!Y.isContentEditable||h.hasAttribute("contenteditable")),me=M&&!!Y.draggable;if(!P&&!W&&!le&&!me){et(h);return}for(let[xe,He]of Object.entries(Ee))typeof h[xe]=="function"&&we(h,{type:He,source:"inline"});le&&(we(h,{type:"input",source:"other",inferred:!0}),we(h,{type:"keydown",source:"other",inferred:!0}),we(h,{type:"keyup",source:"other",inferred:!0}),we(h,{type:"paste",source:"other",inferred:!0})),me&&(we(h,{type:"dragstart",source:"other",inferred:!0}),we(h,{type:"dragend",source:"other",inferred:!0})),et(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],P=M?.memoizedProps||M?.pendingProps;if(P&&typeof P=="object"){for(let W in P){if(typeof P[W]!="function")continue;let le=f(W);le&&we(h,{type:le.type,source:"react",capture:le.capture})}ko(M?.stateNode)&&r.reactRoots.add(M.stateNode),On(h,"react"),Pt("react")}}catch{}}}function E(h){let I=h,M=!1;if(I.__vue__){M=!0;let P=I.__vue__;P.$listeners&&Object.keys(P.$listeners).forEach(W=>we(h,{type:W,source:"vue"})),P._events&&Object.keys(P._events).forEach(W=>we(h,{type:W,source:"vue"})),P.$options?._parentListeners&&Object.keys(P.$options._parentListeners).forEach(W=>we(h,{type:W,source:"vue"})),r.vueRoots.add(h)}if(I._vnode?.props){M=!0;let P=I._vnode.props;Object.keys(P).forEach(W=>{W.startsWith("on")&&W.length>2&&we(h,{type:W.substring(2).toLowerCase(),source:"vue"})}),r.vueRoots.add(h)}M&&(On(h,"vue"),Pt("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(P=>{if(P.name.startsWith("(")&&P.name.endsWith(")")){let W=P.name.slice(1,-1).split(".")[0];W&&we(h,{type:W,source:"angular"})}if(P.name.startsWith("on-")){let W=P.name.substring(3);W&&we(h,{type:W,source:"angular"})}if(P.name.includes(".")){let W=P.name.match(/\(([^.)]+)/);W?.[1]&&we(h,{type:W[1],source:"angular"})}});try{if(e.ng?.getComponent){let P=e.ng.getComponent(h);P&&Object.keys(P).forEach(W=>{(W.endsWith("Output")||W.endsWith("Emitter"))&&we(h,{type:W.replace(/(Output|Emitter)$/,"").toLowerCase(),source:"angular"})})}}catch{}}M&&(On(h,"angular"),Pt("angular"),r.angularRoots.add(h))}function y(h){let I=h,M=!1;if(I.__svelte__){M=!0,Array.from(h.attributes).forEach(P=>{if(P.name.startsWith("on:")){let W=P.name.substring(3);W&&we(h,{type:W,source:"svelte"})}});try{let P=I.__svelte__?.$$?.callbacks;P&&typeof P=="object"&&Object.keys(P).forEach(W=>we(h,{type:W,source:"svelte"}))}catch{}r.svelteRoots.add(h)}M&&(On(h,"svelte"),Pt("svelte"))}function b(h,I){return h?!!o.get(h)?.has(I):!1}function k(h,I,M=96){let P=be(I);if(!P)return!1;let W=Q(h),Y=re(W);if(b(W,P)||b(Y,P))return!0;let le=0,me=h;for(;me&&le<M;){if(me.parentElement)me=me.parentElement;else{let xe=me.getRootNode?.();if(Sn(xe)){if(b(xe,P)||b(xe.host,P))return!0;me=xe.host}else break}if(me&&b(me,P))return!0}return!1}function x(h,I,M=128){let P=0,W=h;for(;W&&P<M;){if(I(W),W.parentElement){W=W.parentElement;continue}let Y=W.getRootNode?.();if(Sn(Y)){W=Y.host;continue}break}}function U(h){let I=ye(h);if(!wt(h,I))return;let M=dn(h);M.role=M.role||Pn(h);let P=k(h,"click"),W=k(h,"input"),Y=k(h,"keydown"),me=Q(h).documentElement;if(r.frameworks.size>0||me.hasAttribute("rtrvr-react")||me.hasAttribute("rtrvr-vue")||me.hasAttribute("rtrvr-angular")||me.hasAttribute("rtrvr-svelte")||me.hasAttribute("rtrvr-jquery")||P||W||Y){let He=M.role||"other";P&&["button","link","checkbox","radio","switch","menuitem","menuitemcheckbox","menuitemradio","tab","option","treeitem","gridcell","cell","img","figure"].includes(He)&&we(h,{type:"click",source:"delegated",inferred:!0}),["textbox","searchbox","spinbutton","code"].includes(He)&&(W&&(we(h,{type:"input",source:"delegated",inferred:!0}),we(h,{type:"change",source:"delegated",inferred:!0})),Y&&we(h,{type:"keydown",source:"delegated",inferred:!0})),["combobox","listbox"].includes(He)&&(P&&we(h,{type:"click",source:"delegated",inferred:!0}),W&&we(h,{type:"change",source:"delegated",inferred:!0})),["slider","scrollbar","progressbar","meter"].includes(He)&&W&&we(h,{type:"input",source:"delegated",inferred:!0})}x(h,He=>{let Ve=s.get(He);if(Ve?.length)for(let{type:Qe,selector:Ut}of Ve)try{h.matches(Ut)&&(we(h,{type:Qe,source:"jquery",inferred:!0}),On(h,"jquery"),Pt("jquery"))}catch{}})}function B(h){let I=M=>{if(Bt())return;let P=M,W=P.composedPath&&P.composedPath()||st(M.target),le=h==="mousemove"||h==="pointermove"||h==="scroll"||h==="wheel"?1:Math.min(W.length,se);for(let me=0;me<le;me++){let xe=W[me];ko(xe)&&we(xe,{type:h,source:"delegated",inferred:!0})}};zn(I);try{Mr.call(document,h,I,{capture:!0,passive:!0})}catch{}}let q=!1,$=!1,j=null;function ne(){if($)return;$=!0,he.forEach(B);let h=ft()?.documentElement;if(!h)return;let I=()=>{if(q)return;let M=h.hasAttribute("rtrvr-react")||h.hasAttribute("rtrvr-vue")||h.hasAttribute("rtrvr-angular")||h.hasAttribute("rtrvr-svelte"),P=h.hasAttribute("rtrvr-gl-click")||h.hasAttribute("rtrvr-gl-input")||h.hasAttribute("rtrvr-gl-keydown");(M||P)&&(q=!0,pe.forEach(B))};I();try{j=new MutationObserver(()=>I()),j.observe(h,{attributes:!0,attributeFilter:Fe})}catch{}}function ie(h){if(h.nodeType!==1)return;let I=ye(h);if(wt(h,I)){let M=dn(h);M.role=void 0}vo(h),w(h),E(h),_(h),y(h),U(h),Ln(h)}function Ie(){if(Bt())return;let h=["a[href]","button","input","select","textarea","summary","details > summary",...Array.from(Dr).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++,vt();try{let I=h.join(",");ft()?.querySelectorAll(I).forEach(M=>{try{ie(M)}catch{}})}finally{S=Math.max(0,S-1),vt()}}let ue=!1,ae=[],de=200;function Ne(h){if(!Bt()){for(let I of h)ae.push(I);ue||(ue=!0,queueMicrotask(Ge))}}function Ge(){ue=!1;let h=ae;if(ae=[],Bt())return;let I=0;for(let M of h){if(I>=de)break;for(let P of Array.from(M.addedNodes)){if(I>=de)break;if(P.nodeType!==1)continue;let W=P;Ot(W),I++;let Y=W.querySelectorAll?.('a,button,input,select,textarea,summary,[role],[onclick],[ondblclick],[ondoubleclick],[contenteditable],[draggable="true"],[tabindex]');if(Y){let le=Math.min(Y.length,50);for(let me=0;me<le;me++)Ot(Y[me]),I++}}if(M.type==="attributes"&&M.target.nodeType===1){let P=M.target;M.attributeName==="class"?lr(P)&&Ot(P):Ot(P)}}}async function _e(h={}){if(Bt())return;let I=ft(),M=I?.documentElement;if(!M||!(M.hasAttribute("rtrvr-react")||M.hasAttribute("rtrvr-vue")||M.hasAttribute("rtrvr-angular")||M.hasAttribute("rtrvr-svelte")))return;let W=h.deadlineEpochMs,Y=Math.max(5,Math.min(h.budgetMs??12,50));if(Math.max(0,Math.min(Y,ct(W)))<=0)return;let me=performance.now();S++,vt();try{let xe=0,He=["div","span","li","section","article","p"];for(let Ve of He){let Qe=I.getElementsByTagName(Ve)??[];for(let Ut=0;Ut<Qe.length;Ut++){if(W&&ct(W)<=0)return;xe++;let qt=Qe[Ut],Nr=qt;(Nr.__ngContext__||Nr.__svelte__||Nr.__vue__||Nr._vnode||jn(qt))&&ie(qt),xe%250===0&&ct(W)>20&&await Je()}}}finally{S=Math.max(0,S-1),vt()}}let Te=new MutationObserver(Ne),Be=new WeakMap,Le=new Set;function $e(h){let I=Be.get(h);if(I){if(Le.add(I),!J)try{I.observe(h,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...A,"class"]})}catch{}return}if(!(l>=a))try{let M=re(h.ownerDocument).MutationObserver||MutationObserver,P=new M(Ne);Be.set(h,P),Le.add(P),l++,J||P.observe(h,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...A,"class"]})}catch{}}let Ye=new WeakMap,ce=new Set;function te(h){let I=Ye.get(h);if(I){if(ce.add(I),!J)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 P=re(h).MutationObserver||MutationObserver,W=new P(Ne);Ye.set(h,W),ce.add(W),d++,J||W.observe(M,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...A,"class"]})}catch{}}function fe(){let h=ft()?.documentElement;h&&Te.observe(h,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...A,"class"]})}let Fe=["rtrvr-react","rtrvr-vue","rtrvr-angular","rtrvr-svelte","rtrvr-gl-click","rtrvr-gl-input","rtrvr-gl-keydown"];function jt(){return V??!!ft()?.hidden}function Bt(){return J}function Hs(h){let I=!!h;if(J===I)return;if(J=I,J){try{Te.disconnect()}catch{}try{j?.disconnect()}catch{}for(let P of Le)try{P.disconnect()}catch{}for(let P of ce)try{P.disconnect()}catch{}Le.clear(),ce.clear(),H.clear(),i.clear(),S=0,vt();return}fe();let M=ft()?.documentElement;if(M&&j)try{j.observe(M,{attributes:!0,attributeFilter:Fe})}catch{}Ie()}function Yo(h){return V=typeof h=="boolean"?h:null,Hs(jt()),!0}let qs=new WeakMap;function Yr(h){return h.shadowRoot||qs.get(h)||null}try{Object.defineProperty(En,"shadow",{value:Object.freeze({getRoot:h=>Yr(h)}),writable:!1,configurable:!1,enumerable:!1})}catch{}function rn(){try{(e.React||e.__REACT_DEVTOOLS_GLOBAL_HOOK__)&&Pt("react"),e.Vue&&Pt("vue"),e.ng&&Pt("angular"),e.jQuery&&Pt("jquery"),Sr()}catch{}}e.rtrvrAISetObserverPaused=function(h){return Yo(!!h)},e.rtrvrAIClearObserverPause=function(){return Yo(null)},e.rtrvrAIIsObserverPaused=function(){return Bt()},e.rtrvrAIMarkInteractiveElements=function(){return ft()?.body?(Ie(),!0):!1};function Vc(){let h=ft();Sr(),rn(),ne();let I=()=>{V==null&&Hs(jt())};h?.addEventListener("visibilitychange",I,{passive:!0}),Hs(jt());let M=()=>{Sr(),rn(),Bt()||(fe(),e.rtrvrAIMarkInteractiveElements?.(),_e({budgetMs:20})),h?.documentElement.setAttribute(Yc,"1")};h?.readyState==="loading"?h.addEventListener("DOMContentLoaded",M,{once:!0}):M()}Vc()})();var La=null;function xl(e){try{return e.getAttribute(Qr)}catch{return null}}function Kf(e){let t=xl(e);return _o(t)?.entries??[]}function Yf(e){try{let t=e.getAttribute(Or);return t&&t.trim()?t:null}catch{return null}}function by(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 yy(e){let t=new Set;for(let n of e){let r=Ji(n.mask);for(let o of r)(o==="react"||o==="vue"||o==="angular"||o==="svelte"||o==="jquery")&&t.add(o)}return t}function vy(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 Ty(e){let t=Kf(e),n=yy(t),r=vy(e);for(let o of r)n.add(o);return{frameworks:[...n],listenersRaw:xl(e)||"",role:Yf(e)??(e.getAttribute?.("role")||null)}}function ky(){return{getEventHandlerIds:e=>Kf(e).map(t=>t.id),getRoleHint:Yf,getShadowRoot:by}}function Qf(e={}){if(La)return La;if(typeof window<"u")try{window.rtrvrAIMarkInteractiveElements?.()}catch{}return La={signalProvider:ky(),getFrameworkMetadata:Ty,getListenerEncoding:xl,dispose:()=>{}},La}var _y=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 Da(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=Ey(Jf(String(s||"")),n);i&&o.add(i)}if(!o.size){let s=Iy(t,n);s&&o.add(s)}return Array.from(o)}function Ey(e,t){return e?t!=="host_only"||e==="*"||e.startsWith("=")||e.startsWith("*.")?e:`=${e}`:""}function wy(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 Jf(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=wy(o);return s?n?`=${s}`:r?`*.${s}`:s:""}function Iy(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&&_y.has(o)?`${r[r.length-3]}.${o}`:o}function Ur(e,t){let n=fs(e);if(!n)return!1;if(!t.length)return!0;for(let r of t)if(xy(n,r))return!0;return!1}function fs(e){try{return new URL(e).hostname.toLowerCase()}catch{return null}}function xy(e,t){let n=Jf(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 Ua=class Ua{constructor(t={}){D(this,"root");D(this,"includeFrames");D(this,"disableDomAnnotations");D(this,"allowActions");D(this,"runtimeId");D(this,"domainScopeMode");D(this,"allowedDomains");D(this,"externalNavigationPolicy");D(this,"crossHostPolicy");D(this,"registerOpenedTab");D(this,"listKnownTabs");D(this,"switchToLogicalTab");D(this,"onNavigationGuardrail");D(this,"onBeforeAgentNavigation");D(this,"onBeforeCrossHostNavigation");D(this,"instrumentation");D(this,"highlightEl",null);D(this,"clientTools",new Map);D(this,"navigationDelayMs");D(this,"domSettleDebounceMs");D(this,"domSettleMaxWaitMs");D(this,"domSettleRetries");D(this,"sparseTreeRetryDelayMs");D(this,"sparseTreeRetryMaxAttempts");D(this,"uploadStore",new Map);D(this,"uploadProviderInstalled",!1);D(this,"actionGateContext",{});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=Zf(t.domainScopeMode),this.allowedDomains=Da(t.allowedDomains,window.location.hostname,this.domainScopeMode),this.externalNavigationPolicy=ep(t.externalNavigationPolicy),this.crossHostPolicy=tp(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=si(t.domSettle?.debounceMs,24,8,500),this.domSettleMaxWaitMs=si(t.domSettle?.maxWaitMs,220,80,5e3),this.domSettleRetries=si(t.domSettle?.retries,0,0,6),this.sparseTreeRetryDelayMs=si(t.domSettle?.sparseTreeRetryDelayMs,35,20,1e3),this.sparseTreeRetryMaxAttempts=si(t.domSettle?.sparseTreeRetryMaxAttempts,1,0,4),this.instrumentation=t.instrumentation??Qf({includeIframes:!0,scanInlineHandlers:!0,observeInlineMutations:!0,...t.instrumentationOptions||{}}),Bf(),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=Zf(t.domainScopeMode),t.allowedDomains||(this.allowedDomains=Da(void 0,window.location.hostname,this.domainScopeMode))),t.allowedDomains&&(this.allowedDomains=Da(t.allowedDomains,window.location.hostname,this.domainScopeMode)),t.externalNavigationPolicy&&(this.externalNavigationPolicy=ep(t.externalNavigationPolicy)),t.crossHostPolicy&&(this.crossHostPolicy=tp(t.crossHostPolicy))}async getSnapshot(){return await op(this.root),ri(this.root,this.instrumentation,{includeFrames:this.includeFrames,disableDomAnnotations:this.disableDomAnnotations})}async getPageData(t){await op(this.root);let n=Sa(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 jf(this.root,this.instrumentation,{includeFrames:this.includeFrames,disableDomAnnotations:this.disableDomAnnotations,pageConfig:r})}async executeTool(t,n){let r=Sy(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&&!rp.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===F.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===F.wait_for_element)return this.waitForElement(t?.args||{});if(r===F.answer_task)return{success:!0};if(r===F.solve_captcha)return Pa("CAPTCHA solving requires human intervention in embed mode.","HUMAN_INTERVENTION_REQUIRED");if(r===F.network_run_recipe)return Pa("network_run_recipe is not supported in embed mode.","CAPABILITY_UNAVAILABLE");let s=t?.args||{},i=My(s),a=as(document,s.iframe_id);if(s.iframe_id!=null&&a.unresolvedPath.length>0&&!i)return this.iframeContextUnavailableResponse(s.iframe_id,a);if(r===F.click_element&&s?.open_in_new_tab)return this.openElementInNewTab(s);if(r===F.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 O=g.reason;return this.externalNavigationPolicy==="open_new_tab_notice"?this.openUrlInNewTab(g.targetUrl,{policyBlocked:!0,reason:O,decisionReason:"open_new_tab"}):this.domainScopeBlockedResponse(g.targetUrl,O,{decisionReason:"policy_blocked"})}let T=this.getClickTargetUrl(s);if(T){let O=this.buildNavigationIntent(T);if(O.isCrossHost){let N=await this.resolveAgentNavigationDecision(O,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(O)}else{let N=await this.resolveAgentNavigationDecision(O,"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===F.describe_images)return this.describeImages(t?.args||{});if(!(r in Qi))return{success:!1,error:`Unknown tool: ${String(t?.name)}`,allowFallback:!1};let{doc:c}=a,l=Sl(s),d=l?Zn(c,l):null,p;if(d){let g=this.instrumentation.getFrameworkMetadata(d),T=Cy(g.listenersRaw||"",r),O=s?.value??s?.text??null;p=Ay({...g,pattern:T,value:O})}let v=Qi[r];return r===F.upload_file&&!n&&(n=await this.buildUploadPayload(s).catch(()=>{})),Uf({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=Zn(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 F.goto_url:{let r=String(n.url||"").trim();if(!r)return{success:!1,error:"goto_url: missing url",allowFallback:!0};let o=Oa(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 F.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 F.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 F.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 F.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 F.open_new_tab:{let r=String(n.url||"").trim();if(!r)return{success:!1,error:"open_new_tab: missing url",allowFallback:!0};let o=Oa(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 F.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 Pa("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 F.close_tab:try{return window.close(),{success:!0}}catch{return Pa("close_tab failed in embed mode.","CAPABILITY_UNAVAILABLE")}default:return null}}shouldGuardExternalNavigation(t){return this.externalNavigationPolicy==="allow"?!1:!Ur(t,this.allowedDomains)}shouldPreserveHostRuntime(t){return this.externalNavigationPolicy==="allow"?!1:!Ur(t,this.allowedDomains)}getNavigationFallbackDecision(t){return t?Ur(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=fs(window.location.href),r=fs(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,Ua.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=Ur(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"||rp.has(t)||Ry.has(t)?!1:!Ur(window.location.href,this.allowedDomains)}getInterceptedClickTarget(t){let n=this.getClickTargetUrl(t);return n?this.shouldPreserveHostRuntime(n)?!Ur(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"||Ur(n,this.allowedDomains)?null:{targetUrl:n,reason:"Blocked same-tab navigation to an out-of-scope destination.",forceOpenInNewTab:!1}:null}getClickTargetUrl(t){let n=Sl(t);if(!n)return null;let{doc:r}=as(document,t.iframe_id),o=Zn(r,n);if(!o)return null;let s=np(o),i=s?.href||s?.getAttribute("href")||"";return Oa(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=!Ur(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=fs(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=fs(c);if(!r||!l||l===r)return a}}catch{}await new Promise(s=>setTimeout(s,120))}}async openElementInNewTab(t){let n=Sl(t);if(!n)return{success:!1,error:"click_element with open_in_new_tab requires element_id.",allowFallback:!0};let{doc:r}=as(document,t.iframe_id),o=Zn(r,n);if(!o)return{success:!1,error:`click_element: element_id ${String(n)} not found.`,allowFallback:!0};let s=np(o),i=s?.href||s?.getAttribute("href")||"",a=Oa(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=Ny(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=sd(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=Zn(document,s);if(!i){o.push(`element_id ${s} not found`);continue}try{let a=await Ly(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 Mf(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:ap(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}}};D(Ua,"NAV_PREFLIGHT_TIMEOUT_MS",1500);var Ba=Ua;function Sy(e){return e==="open_url_new_tab"?F.open_new_tab:String(e||"").trim()}function Zf(e){return e==="host_only"?"host_only":"registrable_domain"}function ep(e){return e==="allow"||e==="block"||e==="open_new_tab_notice"?e:"open_new_tab_notice"}function tp(e){return e==="open_new_tab"||e==="same_tab"?e:"same_tab"}function si(e,t,n,r){let o=Number(e);return Number.isFinite(o)?Math.max(n,Math.min(r,Math.floor(o))):t}function Oa(e,t){let n=String(e||"").trim();if(!n)return null;try{return new URL(n,t).toString()}catch{return null}}function np(e){if(e instanceof HTMLAnchorElement&&e.href)return e;let t=e.closest?.("a[href]");return t instanceof HTMLAnchorElement&&t.href?t:null}function Pa(e,t="CAPABILITY_UNAVAILABLE"){return{success:!1,error:e,allowFallback:!0,errorDetails:{code:t,message:e,retryable:!1}}}var rp=new Set([F.describe_images,F.wait_action,F.wait_for_element,F.answer_task,F.solve_captcha,F.network_run_recipe]),Ry=new Set([F.goto_url,F.google_search,F.go_back,F.go_forward,F.refresh_page,F.open_new_tab,F.switch_tab,F.close_tab]);function Ay(e){return{frameworks:(e.frameworks||[]).filter(n=>n in jc).map(n=>jc[n]),listenersRaw:e.listenersRaw??"",role:e.role??null,pattern:e.pattern,value:e.value??null}}async function op(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 Cy(e,t){if(t!==F.click_element)return"standard";let n=_o(e||"");if(!n)return"standard";let r=new Set(n.entries.map(c=>Lr[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 ap(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 sp(e){let t=Number(e);if(!Number.isFinite(t))return null;let n=Math.trunc(t);return n>0?n:null}function cp(e){let t=[];for(let n of Yi){let r=e?.[n];if(r==null)continue;if(Array.isArray(r)){for(let s of r){let i=sp(s);i!=null&&t.push(i)}continue}let o=sp(r);o!=null&&t.push(o)}return Array.from(new Set(t))}function My(e){return cp(e).length>0}function Sl(e){let t=cp(e);return t.length?t[0]:null}function Ny(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 Ly(e){if(e instanceof HTMLCanvasElement){let o=e.toDataURL(),s=lp(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 ip(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 ip(r[2],e.getAttribute("aria-label")||void 0);throw new Error("unsupported element")}function lp(e){let t=/^data:([^;]+);base64,(.*)$/.exec(e);return t?{mimeType:t[1],data:t[2]}:null}async function ip(e,t){if(!e)throw new Error("missing src");if(e.startsWith("data:")){let a=lp(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=ap(o),i=r.type||"image/png";return{data:s,mimeType:i,displayName:t}}function up(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 Dy="Rover",Oy="https://www.rtrvr.ai/rover/mascot.mp4",Py="https://www.rtrvr.ai/rover/mascot.webm";function dp(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function Rl(e){try{return new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return""}}function By(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 Uy(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||dp("trace")}function Ht(e){return String(e||"").trim()}function Fy(e){let t=String(e||"").trim();return t?t.slice(0,64):Dy}function Hy(e){let t=String(e||"").trim();return t?t[0].toUpperCase():"R"}function qy(e){return String(e||"").replace(/[^a-zA-Z0-9]/g,"").slice(0,3).toUpperCase()||"RVR"}function fp(e){let t=Ht(e),n=/^(Analyze|Route|Execute|Verify|Complete):\s*(.*)$/i.exec(t);if(!n)return{plainTitle:t};let r=n[1].toLowerCase(),o=Ht(n[2]||t);return{stage:r,plainTitle:o||t}}function Wy(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=fp(e.title||"");if(n.stage==="analyze"||n.stage==="route"||n.stage==="complete")return"detail"}return"primary"}function Al(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 eo(e){let t=document.createDocumentFragment(),n=e.split(`
|
|
11
|
-
`),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");
|
|
12
|
-
`),o=0,s=0;for(let
|
|
8
|
+
`)||(s+=c.trimEnd())}if(yc(e,!1),vc(e)?Tc(e).endsWith(mT+`
|
|
9
|
+
`)&&yc(e,!1):yc(e,!1),vc(e)){let c=Tc(e);c.trim()!==""&&!c.startsWith(`
|
|
10
|
+
`)&&(s+=c)}om(e);let i=wu(e).trim(),a=s.trim()+i;return a.trim()?a:o()}catch{return o()}}async function vT(e,t){let n="",r;um(e,e.defaultView||window);let o=Nt(t?.deadlineEpochMs);try{let s=Math.max(250,Math.min(1500,Math.floor(o*.45))),i=await Cs(yT(e),s,e);if(!(i.ok&&i.value))throw new Error("google_sheet_copy_failed");let c=Nt(t?.deadlineEpochMs),d=Math.max(250,Math.min(2500,Math.floor(c*.55)));if(n=await TT(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:hu,error:r}}function um(e,t){try{t?.focus?.()}catch{}try{e?.body?.focus?.()}catch{}}function Eu(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 yT(e){try{if(um(e,e.defaultView||window),e.hidden||!e.hasFocus())return!1;Eu(e,{key:"Escape",code:"Escape"}),await Bt(150,e);let t=e.querySelector(".grid-container")||sm(e,".grid-container"),n=e.querySelector(".grid4-inner-container:last-child")||sm(e,".grid4-inner-container:last-child");if(n){try{n.focus()}catch{}await Bt(100,e)}else if(t){try{t.focus?.()}catch{}await Bt(80,e)}let o=(typeof navigator<"u"?String(navigator.platform||""):"").toUpperCase().indexOf("MAC")>=0;Eu(e,{key:"a",code:"KeyA",ctrlKey:!o,metaKey:o}),await Bt(200,e),Eu(e,{key:"c",code:"KeyC",ctrlKey:!o,metaKey:o}),await Bt(200,e);try{e.execCommand("copy")}catch{}return!0}catch{return!1}}async function TT(e,t){let n=Math.max(250,Math.min(5e3,Math.floor(e)));if(navigator?.clipboard?.readText){let s=await Cs(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 sm(e,t){let n=_c(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 _T(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 U=await im(e,{action:"detectPrimary"});if(U?.selector){let H=kT(e,U.selector);H&&(g=H)}let D=U?.metrics;if(D&&typeof D.scrollHeight=="number"&&typeof D.clientHeight=="number"){let H=Math.max(0,D.scrollHeight-D.clientHeight);h=Math.min(h,H||h),H<1500?v=Math.min(v,2):H<4e3?v=Math.min(v,4):H<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 U=0;U<v&&!(i()<=0);U++){let D=null;try{D=await im(e,{action:"scrollBy",direction:yt.DOWN,options:{amount:u,behavior:"auto",isTabActive:r}})}catch{}if(!D||!D.success){let C=e.defaultView||window;D=bc(g,e,C,yt.DOWN,u),R=2}if(!D?.success)break;let H=D.scrollTop??A??0;if(A!==null){let C=Math.max(0,H-A);_+=C,R=C===0?R+1:0}if(A=H,D.isAtBottom||R>=2||_>=h)break;if(d>0&&U<v-1){let C=Math.min(d,Math.max(0,i()));if(C<=0)break;await Bt(C,e)}}if(p>0){let U=Math.min(p,Math.max(0,i()));U>0&&await Bt(U,e)}if(i()>80)try{let U=e.scrollingElement||e.documentElement||e.body,D=e.defaultView||window,H=g===e.documentElement||g===e.body||g===U?U:g;if(H){let C=H===U?D.innerHeight:H.clientHeight||D.innerHeight,J=Math.max(0,H.scrollHeight-C);H.scrollTop=J}}catch{}return!0}function kT(e,t){try{return e.querySelector(t)}catch{return null}}async function im(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 wT(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&&Nt(i)>0;){let c=Math.max(50,Math.min(t.budgetMs,Nt(i)));try{await s({mode:t.mode??"full",includeShadow:!0,includeSameOriginIframes:!0,budgetMs:c,deadlineEpochMs:i})}catch{break}if(am(e)===0)break;a++}if(am(e)>0&&Nt(i)>50){let c=Math.min(120,Nt(i));try{await s({mode:"priority",includeShadow:!0,includeSameOriginIframes:!0,budgetMs:c,deadlineEpochMs:i})}catch{}}}function am(e){let t=e.documentElement;if(!t)return 0;let n=t.getAttribute(Fo);if(!n)return 0;let r=Number.parseInt(n,10);return Number.isFinite(r)&&r>0?r:0}function ET(e){let t=IT(e.URL||"");if(!t?.sheetId)return;let n=xT(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 IT(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 xT(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 Bn;(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"})(Bn||(Bn={}));var ST={native:Bn.Native,inline:Bn.Inline,react:Bn.React,vue:Bn.Vue,angular:Bn.Angular,svelte:Bn.Svelte,jquery:Bn.JQuery,delegated:Bn.Delegated,other:Bn.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,B=S.prototype.removeEventListener;S.prototype.addEventListener=function(V,X,te){try{Dr(X)||Jt(this,V,te)}catch{}return L.call(this,V,X,te)},S.prototype.removeEventListener=function(V,X,te){try{to(this,V,te)}catch{}return B.call(this,V,X,te)};try{let V=Function.prototype.toString;S.prototype.addEventListener.toString=()=>V.call(L),S.prototype.removeEventListener.toString=()=>V.call(B)}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(B){let V=L.call(this,B);try{Do.set(this,V)}catch{}try{Qe(V)}catch{}return V};try{let B=Function.prototype.toString;S.prototype.attachShadow.toString=()=>B.call(L)}catch{}}catch{}}function R(m){let L=n.get(m)?.listenerTypeMasks;if(L&&L.size){let B=[];for(let V of L.keys()){let X=Hr[V];X&&B.push(X)}return B}return Ei(m)}let U=["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,H=new Set,C=null,J=!1,ce=6,oe=["click","input","change","keydown","keyup","pointerdown","pointerup","submit","focus","blur"],me=["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=()=>!!bt()?.hidden);return}e[t]=!0;let Se={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 be(m){return m?String(m).split(".")[0].toLowerCase():""}let Re=["data-click","data-action","data-event","data-handler","data-on-click","data-onclick","data-tap","data-press","data-toggle","data-target"],$e=0,Dt=null,Le=new MessageChannel,Ot=[];Le.port1.onmessage=()=>{let m=Ot.shift();m&&m()};function ot(){return Date.now()}function tt(m){return!m||!Number.isFinite(m)?Number.POSITIVE_INFINITY:Math.max(0,m-ot())}let Yt=8,Wt=new MessageChannel,Qn=!1;function an(){if(!Qn){Qn=!0;try{Wt.port2.postMessage(0)}catch{}}}function In(m){let S=m.values().next();if(S.done)return null;let L=S.value;return m.delete(L),L}function ft(){return new Promise(m=>{Ot.push(m),Le.port2.postMessage(0)})}let Qt=!1;function $t(){if(!Qt)try{let m=e.jQuery;m&&m.fn&&(Vn(m),Qt=!0,St("jquery"))}catch{}}function Lr(m,S){for(let L=S.lastElementChild;L;L=L.previousElementSibling)m.push(L)}function br(m,S,L){if(L)try{let B=ro(S);B&&m.push(B)}catch{}}function bi(m,S,L){if(L&&wi(S))try{let B=S.contentWindow||null;B&&g(B);let V=B?.document?.documentElement;V&&m.push(V)}catch{}}let qn=new WeakSet;function xn(m){m&&(typeof m=="function"||typeof m=="object")&&qn.add(m)}function Dr(m){return!!m&&(typeof m=="function"||typeof m=="object")&&qn.has(m)}Wt.port1.onmessage=()=>{if(rt()){H.clear(),i.clear(),D=0,qe(),Qn=!1;return}Qn=!1,gn(500);let m=performance.now();for(;H.size&&performance.now()-m<Yt;){let S=In(H);if(!S)break;try{de(S)}catch{}finally{D=Math.max(0,D-1)}}for(;i.size&&performance.now()-m<Yt;){let S=In(i);if(!S)break;try{er(S)}catch{}}qe(),(H.size||i.size)&&an()};function qe(){try{let m=bt()?.documentElement;if(!m)return;m.setAttribute(Fo,String(D))}catch{}}function hn(m){let S=n.get(m);return S||(S={frameworks:new Set,listeners:new Map},n.set(m,S)),S}function Or(m){rt()||(i.add(m),i.size>2e3&&gn(1500),an())}function Wn(m){rt()||H.has(m)||(H.add(m),D++,qe(),an(),H.size>2e3&&gn(1500))}function gn(m=1500){let S=0;for(let L of H){if(S>=m)break;S++,L.isConnected||(H.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)}qe()}let it=null;function cn(m,S,L){return`${m}|${S?1:0}|${L?1:0}`}function Sn(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 Re)if(m.hasAttribute(L))return!0;return!!(m.hasAttribute("aria-haspopup")||m.hasAttribute("aria-expanded"))}function Jn(m){let S=Te(m);if(!Ct(m,S))return!1;let L=m.tagName;if(L!=="DIV"&&L!=="SPAN"&&L!=="LI"&&L!=="SECTION"&&L!=="ARTICLE"&&L!=="P")return!1;let B=m;if(B.__ngContext__||B.__svelte__||B.__vue__||B._vnode||B.__reactFiber$||B.__reactProps$)return!0;let V=0;for(let X in B){if(++V>30)break;if(X.startsWith("__react")||X.includes("reactFiber")||X.includes("reactProps"))return!0}return!1}function vr(){let m=bt()?.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 eo(m){if(rt())return;let S=performance.now();for(;H.size&&performance.now()-S<m;){let L=In(H);if(!L)break;try{de(L)}catch{}finally{D=Math.max(0,D-1)}}for(;i.size&&performance.now()-S<m;){let L=In(i);if(!L)break;try{er(L)}catch{}}}async function Pr(m={}){if(rt())return H.clear(),i.clear(),D=0,qe(),{revision:++$e,scanned:0,durationMs:0,done:!0,remaining:0};gn(3e3),$t(),oo();let S=m.mode??"full",L=m.includeShadow??!0,B=m.includeSameOriginIframes??!0,V=Math.max(50,Math.min(m.budgetMs??2500,15e3)),X=m.deadlineEpochMs,te=Math.max(0,Math.min(V,tt(X))),pe=cn(S,L,B);if(te<=0){let zt=(it?.stack?.length??0)+H.size+i.size;return{revision:++$e,scanned:0,durationMs:0,done:zt===0,remaining:zt}}if((!it||it.optsKey!==pe)&&tt(X)>30&&await ve({budgetMs:18,deadlineEpochMs:X}),S==="priority"){let zt=performance.now(),Be=0;for(;H.size&&performance.now()-zt<=te&&!(X&&tt(X)<=0);){let Xe=In(H);if(!Xe)break;try{de(Xe)}catch{}Be++,D=Math.max(0,D-1)}for(;i.size&&performance.now()-zt<=te&&!(X&&tt(X)<=0);){let Xe=In(i);if(!Xe)break;try{er(Xe)}catch{}}return qe(),{revision:++$e,scanned:Be,durationMs:performance.now()-zt,done:H.size===0&&i.size===0,remaining:H.size+i.size}}if(!it||it.optsKey!==pe){let zt=bt()?.documentElement;it={optsKey:pe,stack:zt?[zt]:[],scannedTotal:0}}let ye=performance.now(),Ke=0;for(D++,qe();it.stack.length&&!(X&&tt(X)<=0);){let zt=it.stack.pop();if(On(zt)){let Xe=zt.children;for(let jt=Xe.length-1;jt>=0;jt--)it.stack.push(Xe[jt]);continue}let Be=zt;if(!(!Be||Be.nodeType!==1)&&!(Be.tagName==="SCRIPT"||Be.tagName==="STYLE"||Be.tagName==="META"||Be.tagName==="NOSCRIPT")){try{(Sn(Be)||vr()&&Jn(Be))&&de(Be)}catch{}try{er(Be)}catch{}if(H.delete(Be)&&(D=Math.max(0,D-1)),i.delete(Be),Ke++,it.scannedTotal++,L)try{let Xe=ro(Be);Xe&&(Qe(Xe),it.stack.push(Xe))}catch{}if(B&&wi(Be))try{let Xe=Be.contentWindow||null;Xe&&g(Xe);let jt=Xe?.document,ht=jt?.documentElement;jt&&ht&&(ne(jt),it.stack.push(ht))}catch{}for(let Xe=Be.lastElementChild;Xe;Xe=Xe.previousElementSibling)it.stack.push(Xe);Ke%800===0&&tt(X)>20&&await ft()}}let Je=Math.max(0,te-(performance.now()-ye)),Rt=tt(X);eo(Math.min(250,Je,Rt)),D=Math.max(0,D-1),qe();let kt=it.stack.length===0,ze=it.stack.length;return kt&&(it=null),{revision:++$e,scanned:Ke,durationMs:performance.now()-ye,done:kt,remaining:ze}}async function $n(m={}){return Dt||(Dt=Pr(m).finally(()=>{Dt=null}),Dt)}e.rtrvrAIFlushScan=$n;let Br="__RTRVR_INTERNAL__";Object(window).__RTRVR_INTERNAL_KEY__=Br;let bn=e[Br],Rn=bn&&typeof bn=="object"?bn:{};if(!bn)try{Object.defineProperty(e,Br,{value:Rn,writable:!1,configurable:!1,enumerable:!1})}catch{}try{Object.defineProperty(Rn,"flushScan",{value:$n,writable:!1,configurable:!1,enumerable:!1})}catch{}function De(m,S){let L=hn(m),B=be(S.type);if(!B)return;let V=!1,X=L.listeners.get(B);X||(X=[],L.listeners.set(B,X),V=!0);let te=X.find(we=>we.source===S.source&&!!we.inferred==!!S.inferred);if(te){let we=!!te.capture,ye=!!te.passive,Ke=!!te.once;te.capture=te.capture||S.capture,te.passive=te.passive||S.passive,te.once=te.once||S.once,(we!==!!te.capture||ye!==!!te.passive||Ke!==!!te.once)&&(V=!0)}else X.push({...S,type:B}),V=!0;let pe=Ve[B];if(pe!==void 0){L.listenerTypeMasks||(L.listenerTypeMasks=new Map);let we=0,ye=ST[S.source];we|=ye!==void 0?ye:Bn.Other,S.inferred&&(we|=Bn.Inferred);let Ke=L.listenerTypeMasks.get(pe)||0,Je=Ke|we;Je!==Ke&&(L.listenerTypeMasks.set(pe,Je),V=!0)}V&&(L.role=void 0,Or(m))}function Zn(m){let S=m.listenerTypeMasks;return!S||S.size===0?null:[...S.entries()].sort((B,V)=>B[0]-V[0]).map(([B,V])=>`${B}~${(V||0).toString(36)}`).join(",")}function An(m,S){let L=hn(m);L.frameworks.has(S)||(L.frameworks.add(S),Or(m))}function St(m){r.frameworks.has(m)||(r.frameworks.add(m),bt()?.documentElement?.setAttribute(`rtrvr-${m}`,"1"))}function er(m){let S=n.get(m);if(!S)return;i.delete(m);let L=Zn(S);L?L!==S.lastListenersSerialized&&(m.setAttribute(uo,L),S.lastListenersSerialized=L):S.lastListenersSerialized&&(m.removeAttribute(uo),S.lastListenersSerialized=void 0);let B=Te(m);if(Ct(m,B))if(S.role===void 0&&(S.role=Ur(m)),S.role){let V=_s[S.role],X=typeof V=="number"?String(V):`s:${S.role}`;X!==S.lastRoleSerialized&&(m.setAttribute(Wr,X),S.lastRoleSerialized=X)}else(S.lastRoleSerialized||m.hasAttribute(Wr))&&(m.removeAttribute(Wr),S.lastRoleSerialized=void 0)}function pt(m){let S=[],L=m;for(;L;)S.push(L),L=L.parentNode||L.host;return S}function Lo(m){let S=m.tagName.toLowerCase(),L=m.getAttribute("role"),B=L?L.toLowerCase().trim():"";if(B&&qr.has(B)||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 V=m.getAttribute("tabindex");return!!(V!==null&&!Number.isNaN(Number.parseInt(V,10))&&(R(m).some(pe=>Za.has(pe))||m.getAttributeNames().some(pe=>pe.startsWith("on"))))}function ln(m,S=10){let L=[];for(let B=0;B<m.children.length;B++)L.push({node:m.children[B],depth:1});for(;L.length;){let{node:B,depth:V}=L.pop();if(Lo(B))return!0;if(!(V>=S))for(let X=0;X<B.children.length;X++)L.push({node:B.children[X],depth:V+1})}return!1}function Ur(m){let S=m.tagName.toLowerCase(),L=m.getAttribute("role"),B=L?L.toLowerCase().trim():"",V=m.type?.toLowerCase();if(B&&qr.has(B))return B;if(B&&Ii.has(B))return null;if(S==="a"&&m.hasAttribute("href"))return"link";if(S==="button")return"button";if(S==="input")return V==="hidden"?null:V==="checkbox"?"checkbox":V==="radio"?"radio":V==="range"?"slider":V==="number"?"spinbutton":V==="search"?"searchbox":["button","submit","reset","image","file"].includes(V)?"button":m.hasAttribute("list")?"combobox":"textbox";if(S==="textarea")return"textbox";if(S==="select"){let Je=m;return Je.multiple||Je.size&&Je.size>1?"listbox":"combobox"}if(S==="option")return"option";if(S==="form")return"form";if(S==="video"||S==="audio"){let Je=Ei(m);return m.hasAttribute("controls")||Je.length>0?"media":null}if(m.isContentEditable||m.hasAttribute("contenteditable"))return"textbox";let X=R(m);if(!X.length)return null;let te=!1,pe=!1,we=!1;for(let Je=0;Je<X.length;Je++){let Rt=X[Je];!te&&Za.has(Rt)&&(te=!0),!pe&&Jl.has(Rt)&&(pe=!0),!we&&Zl.has(Rt)&&(we=!0)}if(!te&&!pe&&!we)return null;let ye=m.getAttribute("tabindex"),Ke=ye!==null&&!Number.isNaN(Number.parseInt(ye,10));if(te&&(cu(m)||m.getAttribute("href")||m.closest("a[href]")))return"link";if(pe){if(m.isContentEditable||m.hasAttribute("contenteditable"))return"textbox";if(B==="textbox"||B==="searchbox"||B==="combobox"||B==="spinbutton")return B;if(!te&&Ke)return"textbox"}if(te){let Je=m.getAttribute("aria-checked"),Rt=m.getAttribute("aria-pressed");if(Je!==null||Rt!==null){if(B==="radio")return"radio";if(B==="menuitemradio")return"menuitemradio";if(B==="menuitemcheckbox")return"menuitemcheckbox";if(Rt!==null)return"button";if(Je!==null)return"checkbox"}if((Ke||B==="button")&&!ln(m))return"button"}return we?"application":null}let tr=EventTarget.prototype.addEventListener,Fr=EventTarget.prototype.removeEventListener;function Cn(m){let S=!1,L,B;return typeof m=="boolean"?S=m:m&&typeof m=="object"&&(S=!!m.capture,L=m.passive,B=m.once),{capture:S,passive:L,once:B}}function Mn(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 Jt(m,S,L){let B=be(S);if(!B)return;let{capture:V,passive:X,once:te}=Cn(L),pe=o.get(m);pe||(pe=new Map,o.set(m,pe));let we=pe.get(B);if(we?(we.count+=1,we.capture=we.capture||V,we.passive=we.passive||X):pe.set(B,{count:1,capture:V,passive:X}),Bo(m))try{De(m,{type:B,source:"native",capture:V,passive:X,once:te})}catch{}let ye=Mn(m);if(ye&&(B==="click"||B==="input"||B==="keydown"))try{ye.documentElement?.setAttribute(`rtrvr-gl-${B}`,"1")}catch{}}function to(m,S,L){let B=be(S);if(!B)return;let V=o.get(m);if(!V)return;let X=V.get(B);X&&(X.count-=1,X.count<=0&&V.delete(B),V.size===0&&o.delete(m))}g(window);function Vn(m){if(!m||!m.fn)return;let S=m.fn.on,L=m.fn.off;function B(X){if(!X)return[];if(typeof X=="string")return X.split(/\s/).map(te=>be(te)).filter(Boolean);if(typeof X=="object")try{return Object.keys(X).map(te=>be(te)).filter(Boolean)}catch{return[]}return[]}function V(X){try{if(!X)return null;if(Bo(X))return X;let te=Te(X);return Ka(X,te)||null}catch{}return null}m.fn.on=function(X,te){let pe=B(X),we=typeof te=="string"&&!!te;return this.each(function(){let ye=V(this);if(ye){if(we){let Ke=s.get(ye);Ke||(Ke=[],s.set(ye,Ke));for(let Je of pe){let Rt=`${Je}::${te}`;Ke.some(kt=>`${kt.type}::${kt.selector}`===Rt)||(Ke.push({type:Je,selector:te}),Ke.length>400&&Ke.shift())}}else for(let Ke of pe)De(ye,{type:Ke,source:"jquery"});An(ye,"jquery"),St("jquery"),r.jqueryRoots.add(ye)}}),S.apply(this,arguments)},m.fn.off=function(){return L.apply(this,arguments)},St("jquery")}function no(m){Re.some(L=>m.hasAttribute(L))&&(De(m,{type:"click",source:"other",inferred:!0}),(m.tagName==="INPUT"||m.tagName==="TEXTAREA")&&(De(m,{type:"input",source:"other",inferred:!0}),De(m,{type:"change",source:"other",inferred:!0})))}function Nn(m){let S=Te(m),L=Ct(m,S),B=m.getAttributeNames().some(we=>we.startsWith("on")),V=/^(button|a|input|select|textarea|summary)$/i.test(m.tagName),X=m,te=L&&(rc(m)||!!X.isContentEditable||m.hasAttribute("contenteditable")),pe=L&&!!X.draggable;if(!B&&!V&&!te&&!pe){no(m);return}for(let[we,ye]of Object.entries(Se))typeof m[we]=="function"&&De(m,{type:ye,source:"inline"});te&&(De(m,{type:"input",source:"other",inferred:!0}),De(m,{type:"keydown",source:"other",inferred:!0}),De(m,{type:"keyup",source:"other",inferred:!0}),De(m,{type:"paste",source:"other",inferred:!0})),pe&&(De(m,{type:"dragstart",source:"other",inferred:!0}),De(m,{type:"dragend",source:"other",inferred:!0})),no(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],B=L?.memoizedProps||L?.pendingProps;if(B&&typeof B=="object"){for(let V in B){if(typeof B[V]!="function")continue;let te=f(V);te&&De(m,{type:te.type,source:"react",capture:te.capture})}Bo(L?.stateNode)&&r.reactRoots.add(L.stateNode),An(m,"react"),St("react")}}catch{}}}function E(m){let S=m,L=!1;if(S.__vue__){L=!0;let B=S.__vue__;B.$listeners&&Object.keys(B.$listeners).forEach(V=>De(m,{type:V,source:"vue"})),B._events&&Object.keys(B._events).forEach(V=>De(m,{type:V,source:"vue"})),B.$options?._parentListeners&&Object.keys(B.$options._parentListeners).forEach(V=>De(m,{type:V,source:"vue"})),r.vueRoots.add(m)}if(S._vnode?.props){L=!0;let B=S._vnode.props;Object.keys(B).forEach(V=>{V.startsWith("on")&&V.length>2&&De(m,{type:V.substring(2).toLowerCase(),source:"vue"})}),r.vueRoots.add(m)}L&&(An(m,"vue"),St("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(B=>{if(B.name.startsWith("(")&&B.name.endsWith(")")){let V=B.name.slice(1,-1).split(".")[0];V&&De(m,{type:V,source:"angular"})}if(B.name.startsWith("on-")){let V=B.name.substring(3);V&&De(m,{type:V,source:"angular"})}if(B.name.includes(".")){let V=B.name.match(/\(([^.)]+)/);V?.[1]&&De(m,{type:V[1],source:"angular"})}});try{if(e.ng?.getComponent){let B=e.ng.getComponent(m);B&&Object.keys(B).forEach(V=>{(V.endsWith("Output")||V.endsWith("Emitter"))&&De(m,{type:V.replace(/(Output|Emitter)$/,"").toLowerCase(),source:"angular"})})}}catch{}}L&&(An(m,"angular"),St("angular"),r.angularRoots.add(m))}function y(m){let S=m,L=!1;if(S.__svelte__){L=!0,Array.from(m.attributes).forEach(B=>{if(B.name.startsWith("on:")){let V=B.name.substring(3);V&&De(m,{type:V,source:"svelte"})}});try{let B=S.__svelte__?.$$?.callbacks;B&&typeof B=="object"&&Object.keys(B).forEach(V=>De(m,{type:V,source:"svelte"}))}catch{}r.svelteRoots.add(m)}L&&(An(m,"svelte"),St("svelte"))}function b(m,S){return m?!!o.get(m)?.has(S):!1}function k(m,S,L=96){let B=be(S);if(!B)return!1;let V=ee(m),X=ie(V);if(b(V,B)||b(X,B))return!0;let te=0,pe=m;for(;pe&&te<L;){if(pe.parentElement)pe=pe.parentElement;else{let we=pe.getRootNode?.();if(On(we)){if(b(we,B)||b(we.host,B))return!0;pe=we.host}else break}if(pe&&b(pe,B))return!0}return!1}function x(m,S,L=128){let B=0,V=m;for(;V&&B<L;){if(S(V),V.parentElement){V=V.parentElement;continue}let X=V.getRootNode?.();if(On(X)){V=X.host;continue}break}}function W(m){let S=Te(m);if(!Ct(m,S))return;let L=hn(m);L.role=L.role||Ur(m);let B=k(m,"click"),V=k(m,"input"),X=k(m,"keydown"),pe=ee(m).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")||B||V||X){let ye=L.role||"other";B&&["button","link","checkbox","radio","switch","menuitem","menuitemcheckbox","menuitemradio","tab","option","treeitem","gridcell","cell","img","figure"].includes(ye)&&De(m,{type:"click",source:"delegated",inferred:!0}),["textbox","searchbox","spinbutton","code"].includes(ye)&&(V&&(De(m,{type:"input",source:"delegated",inferred:!0}),De(m,{type:"change",source:"delegated",inferred:!0})),X&&De(m,{type:"keydown",source:"delegated",inferred:!0})),["combobox","listbox"].includes(ye)&&(B&&De(m,{type:"click",source:"delegated",inferred:!0}),V&&De(m,{type:"change",source:"delegated",inferred:!0})),["slider","scrollbar","progressbar","meter"].includes(ye)&&V&&De(m,{type:"input",source:"delegated",inferred:!0})}x(m,ye=>{let Ke=s.get(ye);if(Ke?.length)for(let{type:Je,selector:Rt}of Ke)try{m.matches(Rt)&&(De(m,{type:Je,source:"jquery",inferred:!0}),An(m,"jquery"),St("jquery"))}catch{}})}function F(m){let S=L=>{if(rt())return;let B=L,V=B.composedPath&&B.composedPath()||pt(L.target),te=m==="mousemove"||m==="pointermove"||m==="scroll"||m==="wheel"?1:Math.min(V.length,ce);for(let pe=0;pe<te;pe++){let we=V[pe];Bo(we)&&De(we,{type:m,source:"delegated",inferred:!0})}};xn(S);try{tr.call(document,m,S,{capture:!0,passive:!0})}catch{}}let $=!1,z=!1,G=null;function re(){if(z)return;z=!0,oe.forEach(F);let m=bt()?.documentElement;if(!m)return;let S=()=>{if($)return;let L=m.hasAttribute("rtrvr-react")||m.hasAttribute("rtrvr-vue")||m.hasAttribute("rtrvr-angular")||m.hasAttribute("rtrvr-svelte"),B=m.hasAttribute("rtrvr-gl-click")||m.hasAttribute("rtrvr-gl-input")||m.hasAttribute("rtrvr-gl-keydown");(L||B)&&($=!0,me.forEach(F))};S();try{G=new MutationObserver(()=>S()),G.observe(m,{attributes:!0,attributeFilter:Fe})}catch{}}function de(m){if(m.nodeType!==1)return;let S=Te(m);if(Ct(m,S)){let L=hn(m);L.role=void 0}Nn(m),w(m),E(m),I(m),y(m),W(m),Or(m)}function Ie(){if(rt())return;let m=["a[href]","button","input","select","textarea","summary","details > summary",...Array.from(qr).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++,qe();try{let S=m.join(",");bt()?.querySelectorAll(S).forEach(L=>{try{de(L)}catch{}})}finally{D=Math.max(0,D-1),qe()}}let le=!1,fe=[],ge=200;function Oe(m){if(!rt()){for(let S of m)fe.push(S);le||(le=!0,queueMicrotask(at))}}function at(){le=!1;let m=fe;if(fe=[],rt())return;let S=0;for(let L of m){if(S>=ge)break;for(let B of Array.from(L.addedNodes)){if(S>=ge)break;if(B.nodeType!==1)continue;let V=B;Wn(V),S++;let X=V.querySelectorAll?.('a,button,input,select,textarea,summary,[role],[onclick],[ondblclick],[ondoubleclick],[contenteditable],[draggable="true"],[tabindex]');if(X){let te=Math.min(X.length,50);for(let pe=0;pe<te;pe++)Wn(X[pe]),S++}}if(L.type==="attributes"&&L.target.nodeType===1){let B=L.target;L.attributeName==="class"?Sn(B)&&Wn(B):Wn(B)}}}async function ve(m={}){if(rt())return;let S=bt(),L=S?.documentElement;if(!L||!(L.hasAttribute("rtrvr-react")||L.hasAttribute("rtrvr-vue")||L.hasAttribute("rtrvr-angular")||L.hasAttribute("rtrvr-svelte")))return;let V=m.deadlineEpochMs,X=Math.max(5,Math.min(m.budgetMs??12,50));if(Math.max(0,Math.min(X,tt(V)))<=0)return;let pe=performance.now();D++,qe();try{let we=0,ye=["div","span","li","section","article","p"];for(let Ke of ye){let Je=S.getElementsByTagName(Ke)??[];for(let Rt=0;Rt<Je.length;Rt++){if(V&&tt(V)<=0)return;we++;let kt=Je[Rt],ze=kt;(ze.__ngContext__||ze.__svelte__||ze.__vue__||ze._vnode||Jn(kt))&&de(kt),we%250===0&&tt(V)>20&&await ft()}}}finally{D=Math.max(0,D-1),qe()}}let Ae=new MutationObserver(Oe),Ce=new WeakMap,We=new Set;function Qe(m){let S=Ce.get(m);if(S){if(We.add(S),!J)try{S.observe(m,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...U,"class"]})}catch{}return}if(!(d>=a))try{let L=ie(m.ownerDocument).MutationObserver||MutationObserver,B=new L(Oe);Ce.set(m,B),We.add(B),d++,J||B.observe(m,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...U,"class"]})}catch{}}let Ge=new WeakMap,se=new Set;function ne(m){let S=Ge.get(m);if(S){if(se.add(S),!J)try{let L=m.documentElement;L&&S.observe(L,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...U,"class"]})}catch{}return}if(!(p>=c))try{g(m.defaultView||null);let L=m.documentElement;if(!L)return;let B=ie(m).MutationObserver||MutationObserver,V=new B(Oe);Ge.set(m,V),se.add(V),p++,J||V.observe(L,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...U,"class"]})}catch{}}function ue(){let m=bt()?.documentElement;m&&Ae.observe(m,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...U,"class"]})}let Fe=["rtrvr-react","rtrvr-vue","rtrvr-angular","rtrvr-svelte","rtrvr-gl-click","rtrvr-gl-input","rtrvr-gl-keydown"];function mt(){return C??!!bt()?.hidden}function rt(){return J}function Pe(m){let S=!!m;if(J===S)return;if(J=S,J){try{Ae.disconnect()}catch{}try{G?.disconnect()}catch{}for(let B of We)try{B.disconnect()}catch{}for(let B of se)try{B.disconnect()}catch{}We.clear(),se.clear(),H.clear(),i.clear(),D=0,qe();return}ue();let L=bt()?.documentElement;if(L&&G)try{G.observe(L,{attributes:!0,attributeFilter:Fe})}catch{}Ie()}function Vt(m){return C=typeof m=="boolean"?m:null,Pe(mt()),!0}let Do=new WeakMap;function ro(m){return m.shadowRoot||Do.get(m)||null}try{Object.defineProperty(Rn,"shadow",{value:Object.freeze({getRoot:m=>ro(m)}),writable:!1,configurable:!1,enumerable:!1})}catch{}function oo(){try{(e.React||e.__REACT_DEVTOOLS_GLOBAL_HOOK__)&&St("react"),e.Vue&&St("vue"),e.ng&&St("angular"),e.jQuery&&St("jquery"),$t()}catch{}}e.rtrvrAISetObserverPaused=function(m){return Vt(!!m)},e.rtrvrAIClearObserverPause=function(){return Vt(null)},e.rtrvrAIIsObserverPaused=function(){return rt()},e.rtrvrAIMarkInteractiveElements=function(){return bt()?.body?(Ie(),!0):!1};function so(){let m=bt();$t(),oo(),re();let S=()=>{C==null&&Pe(mt())};m?.addEventListener("visibilitychange",S,{passive:!0}),Pe(mt());let L=()=>{$t(),oo(),rt()||(ue(),e.rtrvrAIMarkInteractiveElements?.(),ve({budgetMs:20})),m?.documentElement.setAttribute(Xl,"1")};m?.readyState==="loading"?m.addEventListener("DOMContentLoaded",L,{once:!0}):L()}so()})();var kc=null;function Iu(e){try{return e.getAttribute(uo)}catch{return null}}function dm(e){let t=Iu(e);return Uo(t)?.entries??[]}function fm(e){try{let t=e.getAttribute(Wr);return t&&t.trim()?t:null}catch{return null}}function RT(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 AT(e){let t=new Set;for(let n of e){let r=qa(n.mask);for(let o of r)(o==="react"||o==="vue"||o==="angular"||o==="svelte"||o==="jquery")&&t.add(o)}return t}function CT(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 MT(e){let t=dm(e),n=AT(t),r=CT(e);for(let o of r)n.add(o);return{frameworks:[...n],listenersRaw:Iu(e)||"",role:fm(e)??(e.getAttribute?.("role")||null)}}function NT(){return{getEventHandlerIds:e=>dm(e).map(t=>t.id),getRoleHint:fm,getShadowRoot:RT}}function pm(e={}){if(kc)return kc;if(typeof window<"u")try{window.rtrvrAIMarkInteractiveElements?.()}catch{}return kc={signalProvider:NT(),getFrameworkMetadata:MT,getListenerEncoding:Iu,dispose:()=>{}},kc}var LT=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 wc(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=DT(mm(String(s||"")),n);i&&o.add(i)}if(!o.size){let s=PT(t,n);s&&o.add(s)}return Array.from(o)}function DT(e,t){return e?t!=="host_only"||e==="*"||e.startsWith("=")||e.startsWith("*.")?e:`=${e}`:""}function OT(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 mm(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=OT(o);return s?n?`=${s}`:r?`*.${s}`:s:""}function PT(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&<.has(o)?`${r[r.length-3]}.${o}`:o}function zr(e,t){let n=Ds(e);if(!n)return!1;if(!t.length)return!0;for(let r of t)if(BT(n,r))return!0;return!1}function Ds(e){try{return new URL(e).hostname.toLowerCase()}catch{return null}}function BT(e,t){let n=mm(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 Sc=class Sc{constructor(t={}){O(this,"root");O(this,"includeFrames");O(this,"disableDomAnnotations");O(this,"allowActions");O(this,"runtimeId");O(this,"domainScopeMode");O(this,"allowedDomains");O(this,"externalNavigationPolicy");O(this,"crossHostPolicy");O(this,"registerOpenedTab");O(this,"listKnownTabs");O(this,"switchToLogicalTab");O(this,"onNavigationGuardrail");O(this,"onBeforeAgentNavigation");O(this,"onBeforeCrossHostNavigation");O(this,"instrumentation");O(this,"highlightEl",null);O(this,"clientTools",new Map);O(this,"navigationDelayMs");O(this,"domSettleDebounceMs");O(this,"domSettleMaxWaitMs");O(this,"domSettleRetries");O(this,"sparseTreeRetryDelayMs");O(this,"sparseTreeRetryMaxAttempts");O(this,"uploadStore",new Map);O(this,"uploadProviderInstalled",!1);O(this,"actionGateContext",{});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=hm(t.domainScopeMode),this.allowedDomains=wc(t.allowedDomains,window.location.hostname,this.domainScopeMode),this.externalNavigationPolicy=gm(t.externalNavigationPolicy),this.crossHostPolicy=bm(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=Fi(t.domSettle?.debounceMs,24,8,500),this.domSettleMaxWaitMs=Fi(t.domSettle?.maxWaitMs,220,80,5e3),this.domSettleRetries=Fi(t.domSettle?.retries,0,0,6),this.sparseTreeRetryDelayMs=Fi(t.domSettle?.sparseTreeRetryDelayMs,35,20,1e3),this.sparseTreeRetryMaxAttempts=Fi(t.domSettle?.sparseTreeRetryMaxAttempts,1,0,4),this.instrumentation=t.instrumentation??pm({includeIframes:!0,scanInlineHandlers:!0,observeInlineMutations:!0,...t.instrumentationOptions||{}}),Zp(),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=hm(t.domainScopeMode),t.allowedDomains||(this.allowedDomains=wc(void 0,window.location.hostname,this.domainScopeMode))),t.allowedDomains&&(this.allowedDomains=wc(t.allowedDomains,window.location.hostname,this.domainScopeMode)),t.externalNavigationPolicy&&(this.externalNavigationPolicy=gm(t.externalNavigationPolicy)),t.crossHostPolicy&&(this.crossHostPolicy=bm(t.crossHostPolicy))}async getSnapshot(){return await Tm(this.root),Bi(this.root,this.instrumentation,{includeFrames:this.includeFrames,disableDomAnnotations:this.disableDomAnnotations})}async getPageData(t){await Tm(this.root);let n=gc(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 cm(this.root,this.instrumentation,{includeFrames:this.includeFrames,disableDomAnnotations:this.disableDomAnnotations,pageConfig:r})}async executeTool(t,n){let r=UT(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&&!ym.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===q.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===q.wait_for_element)return this.waitForElement(t?.args||{});if(r===q.answer_task)return{success:!0};if(r===q.solve_captcha)return Ic("CAPTCHA solving requires human intervention in embed mode.","HUMAN_INTERVENTION_REQUIRED");if(r===q.network_run_recipe)return Ic("network_run_recipe is not supported in embed mode.","CAPABILITY_UNAVAILABLE");let s=t?.args||{},i=WT(s),a=As(document,s.iframe_id);if(s.iframe_id!=null&&a.unresolvedPath.length>0&&!i)return this.iframeContextUnavailableResponse(s.iframe_id,a);if(r===q.click_element&&s?.open_in_new_tab)return this.openElementInNewTab(s);if(r===q.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===q.describe_images)return this.describeImages(t?.args||{});if(!(r in Ha))return{success:!1,error:`Unknown tool: ${String(t?.name)}`,allowFallback:!1};let{doc:c}=a,d=xu(s),p=d?cr(c,d):null,u;if(p){let g=this.instrumentation.getFrameworkMetadata(p),_=qT(g.listenersRaw||"",r),A=s?.value??s?.text??null;u=HT({...g,pattern:_,value:A})}let v=Ha[r];return r===q.upload_file&&!n&&(n=await this.buildUploadPayload(s).catch(()=>{})),em({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=cr(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 q.goto_url:{let r=String(n.url||"").trim();if(!r)return{success:!1,error:"goto_url: missing url",allowFallback:!0};let o=Ec(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 q.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 q.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 q.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 q.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 q.open_new_tab:{let r=String(n.url||"").trim();if(!r)return{success:!1,error:"open_new_tab: missing url",allowFallback:!0};let o=Ec(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 q.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 Ic("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 q.close_tab:try{return window.close(),{success:!0}}catch{return Ic("close_tab failed in embed mode.","CAPABILITY_UNAVAILABLE")}default:return null}}shouldGuardExternalNavigation(t){return this.externalNavigationPolicy==="allow"?!1:!zr(t,this.allowedDomains)}shouldPreserveHostRuntime(t){return this.externalNavigationPolicy==="allow"?!1:!zr(t,this.allowedDomains)}getNavigationFallbackDecision(t){return t?zr(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=Ds(window.location.href),r=Ds(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,Sc.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=zr(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"||ym.has(t)||FT.has(t)?!1:!zr(window.location.href,this.allowedDomains)}getInterceptedClickTarget(t){let n=this.getClickTargetUrl(t);return n?this.shouldPreserveHostRuntime(n)?!zr(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"||zr(n,this.allowedDomains)?null:{targetUrl:n,reason:"Blocked same-tab navigation to an out-of-scope destination.",forceOpenInNewTab:!1}:null}getClickTargetUrl(t){let n=xu(t);if(!n)return null;let{doc:r}=As(document,t.iframe_id),o=cr(r,n);if(!o)return null;let s=vm(o),i=s?.href||s?.getAttribute("href")||"";return Ec(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=!zr(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=Ds(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=Ds(c);if(!r||!d||d===r)return a}}catch{}await new Promise(s=>setTimeout(s,120))}}async openElementInNewTab(t){let n=xu(t);if(!n)return{success:!1,error:"click_element with open_in_new_tab requires element_id.",allowFallback:!0};let{doc:r}=As(document,t.iframe_id),o=cr(r,n);if(!o)return{success:!1,error:`click_element: element_id ${String(n)} not found.`,allowFallback:!0};let s=vm(o),i=s?.href||s?.getAttribute("href")||"",a=Ec(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=$T(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=kf(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=cr(document,s);if(!i){o.push(`element_id ${s} not found`);continue}try{let a=await VT(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 Gp(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:wm(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}}};O(Sc,"NAV_PREFLIGHT_TIMEOUT_MS",1500);var xc=Sc;function UT(e){return e==="open_url_new_tab"?q.open_new_tab:String(e||"").trim()}function hm(e){return e==="host_only"?"host_only":"registrable_domain"}function gm(e){return e==="allow"||e==="block"||e==="open_new_tab_notice"?e:"open_new_tab_notice"}function bm(e){return e==="open_new_tab"||e==="same_tab"?e:"same_tab"}function Fi(e,t,n,r){let o=Number(e);return Number.isFinite(o)?Math.max(n,Math.min(r,Math.floor(o))):t}function Ec(e,t){let n=String(e||"").trim();if(!n)return null;try{return new URL(n,t).toString()}catch{return null}}function vm(e){if(e instanceof HTMLAnchorElement&&e.href)return e;let t=e.closest?.("a[href]");return t instanceof HTMLAnchorElement&&t.href?t:null}function Ic(e,t="CAPABILITY_UNAVAILABLE"){return{success:!1,error:e,allowFallback:!0,errorDetails:{code:t,message:e,retryable:!1}}}var ym=new Set([q.describe_images,q.wait_action,q.wait_for_element,q.answer_task,q.solve_captcha,q.network_run_recipe]),FT=new Set([q.goto_url,q.google_search,q.go_back,q.go_forward,q.refresh_page,q.open_new_tab,q.switch_tab,q.close_tab]);function HT(e){return{frameworks:(e.frameworks||[]).filter(n=>n in zl).map(n=>zl[n]),listenersRaw:e.listenersRaw??"",role:e.role??null,pattern:e.pattern,value:e.value??null}}async function Tm(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 qT(e,t){if(t!==q.click_element)return"standard";let n=Uo(e||"");if(!n)return"standard";let r=new Set(n.entries.map(c=>Hr[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 wm(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 _m(e){let t=Number(e);if(!Number.isFinite(t))return null;let n=Math.trunc(t);return n>0?n:null}function Em(e){let t=[];for(let n of Fa){let r=e?.[n];if(r==null)continue;if(Array.isArray(r)){for(let s of r){let i=_m(s);i!=null&&t.push(i)}continue}let o=_m(r);o!=null&&t.push(o)}return Array.from(new Set(t))}function WT(e){return Em(e).length>0}function xu(e){let t=Em(e);return t.length?t[0]:null}function $T(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 VT(e){if(e instanceof HTMLCanvasElement){let o=e.toDataURL(),s=Im(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 km(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 km(r[2],e.getAttribute("aria-label")||void 0);throw new Error("unsupported element")}function Im(e){let t=/^data:([^;]+);base64,(.*)$/.exec(e);return t?{mimeType:t[1],data:t[2]}:null}async function km(e,t){if(!e)throw new Error("missing src");if(e.startsWith("data:")){let a=Im(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=wm(o),i=r.type||"image/png";return{data:s,mimeType:i,displayName:t}}function xm(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 Sm(){let e=window;return e.SpeechRecognition||e.webkitSpeechRecognition}function Su(e){return String(e||"").replace(/\s+/g," ").trim()}function zT(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=Su(String(s[0]?.transcript||""));i&&(s.isFinal?n.push(i):r.push(i))}return{finalTranscript:Su(n.join(" ")),interimTranscript:Su(r.join(" "))}}function Rm(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 Am(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=Sm();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?.(zT(d))},c.onspeechstart=()=>{e.onSpeechStart?.()},c.onspeechend=()=>{e.onSpeechEnd?.()},c.onerror=d=>{e.onError?.(Rm(d))},c.onend=()=>{let d=r;r=!1,o(),e.onEnd?.({requested:d})},c}return{isSupported(){return!!Sm()},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?.(Rm(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 jT="Rover",GT="https://www.rtrvr.ai/rover/mascot.mp4",KT="https://www.rtrvr.ai/rover/mascot.webm",Us=1200,XT=1200,YT=1200,Wi=25,QT=4,Cm=12,JT=800,ZT=2600,e_=800,t_=5e3,Mm=5e3,Nm=6e4,n_=3,r_=160,o_=460,s_=680,Ps=360,Bs=520,Rc=720,Xo=16,Hm=8,qm=16,i_=16,a_=16,c_=[.52,.72,1],l_=[.56,.72,.88],u_=280,d_=360;function Wm(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function Ru(e){try{return new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return""}}function f_(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 p_(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||Wm("trace")}function Et(e){return String(e||"").trim()}function m_(e){return String(e||"").trim().replace(/[^a-zA-Z0-9-]/g,"").slice(0,48)||void 0}function $m(e){let t=Number(e);return Number.isFinite(t)?Math.max(e_,Math.min(t_,Math.trunc(t))):ZT}function Lm(e){if(!e||typeof e!="object")return;let t={};typeof e.enabled=="boolean"&&(t.enabled=e.enabled);let n=m_(e.language);return n&&(t.language=n),e.autoStopMs!==void 0&&(t.autoStopMs=$m(e.autoStopMs)),Object.keys(t).length?t:void 0}function Hi(){return{code:"no_speech",message:"No speech was detected.",recoverable:!0}}function Dm(e){return String(e||"").replace(/\s+/g," ").trim()}function h_(e,t,n){return[String(e||"").trim(),Dm(t),Dm(n)].filter(Boolean).join(" ")}function mo(e,t,n){return Math.max(t,Math.min(n,e))}function g_(){return`rover:panel-layout:${String(window.location.hostname||"default").trim().replace(/[^a-zA-Z0-9:_-]/g,"").slice(0,96)||"default"}`}function b_(e){try{let t=localStorage.getItem(e);if(!t)return{};let n=JSON.parse(t);return!n||typeof n!="object"?{}:n}catch{return{}}}function Om(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}function Pm(){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 qi(e,t){let n=Math.max(Ps,Math.min(Rc,t.width-Xo)),r=Math.max(Bs,t.height-Xo);return{width:mo(Math.round(e.width),Ps,n),height:mo(Math.round(e.height),Bs,r)}}function Os(e){return qi({width:o_,height:s_},e)}function Bm(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 qi({width:n,height:r},t)}function Um(e){let t=Number(e);if(Number.isInteger(t)&&!(t<0||t>2))return t}function Fm(e){let t=e.layout==="tablet"?l_:c_,n=e.layout==="tablet"?d_:u_,r=e.layout==="tablet"?qm:Hm,o=e.layout==="tablet"?a_:i_,s=Math.max(n,Math.round(e.height-r-o));return t.map((i,a)=>a===t.length-1?s:mo(Math.round((e.height-r)*i),Math.min(n,s),s))}function v_(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 y_(e){let t=String(e||"").trim();return t?t.slice(0,64):jT}function T_(e){let t=String(e||"").trim();return t?t[0].toUpperCase():"R"}function __(e){return String(e||"").replace(/[^a-zA-Z0-9]/g,"").slice(0,3).toUpperCase()||"RVR"}function Vm(e){let t=Et(e),n=/^(Analyze|Route|Execute|Verify|Complete):\s*(.*)$/i.exec(t);if(!n)return{plainTitle:t};let r=n[1].toLowerCase(),o=Et(n[2]||t);return{stage:r,plainTitle:o||t}}function k_(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=Vm(e.title||"");if(n.stage==="analyze"||n.stage==="route"||n.stage==="complete")return"detail"}return"primary"}function Au(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 ho(e){let t=document.createDocumentFragment(),n=e.split(`
|
|
11
|
+
`),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");Au(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",Au(p,i[2]),c.appendChild(d),c.appendChild(p),t.appendChild(c);continue}let a=document.createElement("div");a.className="rvLine",Au(a,s),t.appendChild(a)}return r&&t.appendChild(r),t}function Cc(e,t){let n=document.createElement("div");if(n.className="expandableWrap",e.length<=t)return n.appendChild(ho(e)),n;let r=e.split(`
|
|
12
|
+
`),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(`
|
|
13
13
|
`),a=r.slice(s).join(`
|
|
14
|
-
`),c=document.createElement("div");if(c.className="expandPreview",c.appendChild(
|
|
14
|
+
`),c=document.createElement("div");if(c.className="expandPreview",c.appendChild(ho(i)),n.appendChild(c),a.trim()){let d=document.createElement("div");d.className="expandRest",d.appendChild(ho(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 Mc(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function Ac(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(Mc(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 w_(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 Ac(e)}}function zm(e){let t=document.createElement("button");return t.type="button",t.className="rvStructuredMore",t.textContent=`Show ${Math.min(Wi,e.total-e.shown)} more (${e.total-e.shown} left)`,t.addEventListener("click",n=>{n.stopPropagation(),e.onLoadMore()}),t}function E_(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=w_(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 I_(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=Et(e);return n?(n.length>Us?t.appendChild(Cc(n,Us)):t.appendChild(ho(n)),t):(t.textContent='""',t)}return t.textContent=String(e),t}function x_(e){let t=e.slice(0,25);if(!t.length)return;let n=[];for(let r of t){if(!Mc(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 S_(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=x_(e),s=Math.min(Wi,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 U of o){let D=document.createElement("td"),H=R[U];H==null?D.textContent="\u2014":D.textContent=Ac(H),_.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(zm({total:e.length,shown:s,onLoadMore:()=>{s=Math.min(e.length,s+Wi),c()}}))};return c(),r}function R_(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(Wi,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(zm({total:o.length,shown:s,onLoadMore:()=>{s=Math.min(o.length,s+Wi),c()}}))};return c(),r}function Cu(e,t=0){if(t>=QT){let r=document.createElement("div");return r.className="rvStructuredCapped",r.textContent=Ac(e),r}if(e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean")return I_(e);if(Array.isArray(e))return S_(e,t,Cu);if(Mc(e))return R_(e,t,Cu);let n=document.createElement("div");return n.className="rvStructuredPrimitive",n.textContent=Ac(e),n}function jm(e){if(e.type==="text"){let i=Et(e.text);return i?Cc(i,Us):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=Et(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}`:Mc(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(Cu(e.data)),t.appendChild(s),t.appendChild(E_(e.data)),t}function A_(e,t){let n=document.createDocumentFragment(),r=Array.isArray(t)?t:[],o=!1;for(let a of r){let c=jm(a);c&&(o=!0,n.appendChild(c))}if(!o){let a=Et(e);return a&&(a.length>Us?n.appendChild(Cc(a,Us)):n.appendChild(ho(a))),n}let s=Et(e),i=r.some(a=>a.type==="text"&&Et(a.text)===s);if(s&&!i){let a=document.createElement("div");a.className="rvLine",a.appendChild(ho(s)),n.insertBefore(a,n.firstChild)}return n}function Gm(e){let t=y_(e.agent?.name),n=T_(t),r=__(t),o=e.visitorName,s=e.panel?.resizable!==!1,i=g_(),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=`
|
|
15
15
|
@font-face {
|
|
16
16
|
font-family: 'Manrope';
|
|
17
17
|
font-style: normal;
|
|
@@ -19,7 +19,7 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
19
19
|
font-display: swap;
|
|
20
20
|
src: url('https://rover.rtrvr.ai/rover/fonts/manrope-latin.woff2') format('woff2');
|
|
21
21
|
}
|
|
22
|
-
`,document.head.appendChild(
|
|
22
|
+
`,document.head.appendChild(d);let p=document.createElement("style");p.textContent=`
|
|
23
23
|
/* \u2500\u2500 Step 2: Self-hosted font \u2500\u2500 */
|
|
24
24
|
@font-face {
|
|
25
25
|
font-family: 'Manrope';
|
|
@@ -111,8 +111,8 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
111
111
|
/* \u2500\u2500 Step 4: Launcher Enhancement \u2500\u2500 */
|
|
112
112
|
.launcher {
|
|
113
113
|
position: fixed;
|
|
114
|
-
right: 20px;
|
|
115
|
-
bottom: 20px;
|
|
114
|
+
right: calc(20px + env(safe-area-inset-right));
|
|
115
|
+
bottom: calc(20px + env(safe-area-inset-bottom));
|
|
116
116
|
width: 58px;
|
|
117
117
|
height: 58px;
|
|
118
118
|
border-radius: 18px;
|
|
@@ -189,10 +189,10 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
189
189
|
position: fixed;
|
|
190
190
|
right: 20px;
|
|
191
191
|
bottom: 90px;
|
|
192
|
-
width:
|
|
193
|
-
height:
|
|
194
|
-
min-width:
|
|
195
|
-
min-height:
|
|
192
|
+
width: 460px;
|
|
193
|
+
height: 680px;
|
|
194
|
+
min-width: 360px;
|
|
195
|
+
min-height: 520px;
|
|
196
196
|
max-width: min(720px, calc(100vw - 16px));
|
|
197
197
|
max-height: calc(100vh - 16px);
|
|
198
198
|
background:
|
|
@@ -211,6 +211,11 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
211
211
|
transform-origin: bottom right;
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
+
.panel[data-layout="tablet"],
|
|
215
|
+
.panel[data-layout="phone"] {
|
|
216
|
+
transform-origin: bottom center;
|
|
217
|
+
}
|
|
218
|
+
|
|
214
219
|
.panel.open {
|
|
215
220
|
display: flex;
|
|
216
221
|
animation: panelOpen 300ms var(--rv-ease-spring) forwards;
|
|
@@ -304,6 +309,25 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
304
309
|
margin-left: auto;
|
|
305
310
|
}
|
|
306
311
|
|
|
312
|
+
.sizeBtn,
|
|
313
|
+
.overflowBtn,
|
|
314
|
+
.closeBtn {
|
|
315
|
+
width: 32px;
|
|
316
|
+
height: 32px;
|
|
317
|
+
border-radius: var(--rv-radius-sm);
|
|
318
|
+
border: 1px solid var(--rv-border);
|
|
319
|
+
background: var(--rv-surface);
|
|
320
|
+
cursor: pointer;
|
|
321
|
+
display: grid;
|
|
322
|
+
place-items: center;
|
|
323
|
+
color: var(--rv-text-secondary);
|
|
324
|
+
font-size: 16px;
|
|
325
|
+
line-height: 1;
|
|
326
|
+
transition: background 150ms ease, border-color 150ms ease, color 150ms ease;
|
|
327
|
+
flex: 0 0 auto;
|
|
328
|
+
padding: 0;
|
|
329
|
+
}
|
|
330
|
+
|
|
307
331
|
.modeLabel {
|
|
308
332
|
font-size: 10px;
|
|
309
333
|
font-weight: 700;
|
|
@@ -357,23 +381,19 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
357
381
|
background: var(--rv-error);
|
|
358
382
|
}
|
|
359
383
|
|
|
360
|
-
.
|
|
361
|
-
|
|
362
|
-
width: 32px;
|
|
363
|
-
height: 32px;
|
|
364
|
-
border-radius: var(--rv-radius-sm);
|
|
365
|
-
border: 1px solid var(--rv-border);
|
|
366
|
-
background: var(--rv-surface);
|
|
367
|
-
cursor: pointer;
|
|
368
|
-
display: grid;
|
|
369
|
-
place-items: center;
|
|
370
|
-
color: var(--rv-text-secondary);
|
|
371
|
-
font-size: 16px;
|
|
372
|
-
line-height: 1;
|
|
373
|
-
transition: background 150ms ease, border-color 150ms ease, color 150ms ease;
|
|
374
|
-
flex: 0 0 auto;
|
|
384
|
+
.sizeBtn {
|
|
385
|
+
font-size: 14px;
|
|
375
386
|
}
|
|
376
387
|
|
|
388
|
+
.sizeBtn svg {
|
|
389
|
+
width: 16px;
|
|
390
|
+
height: 16px;
|
|
391
|
+
stroke: currentColor;
|
|
392
|
+
fill: none;
|
|
393
|
+
stroke-width: 2;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
.sizeBtn:hover,
|
|
377
397
|
.overflowBtn:hover,
|
|
378
398
|
.closeBtn:hover {
|
|
379
399
|
background: var(--rv-bg-alt);
|
|
@@ -381,6 +401,10 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
381
401
|
color: var(--rv-text);
|
|
382
402
|
}
|
|
383
403
|
|
|
404
|
+
.sizeBtn.hidden {
|
|
405
|
+
display: none;
|
|
406
|
+
}
|
|
407
|
+
|
|
384
408
|
.closeBtn {
|
|
385
409
|
font-size: 18px;
|
|
386
410
|
}
|
|
@@ -557,6 +581,10 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
557
581
|
}
|
|
558
582
|
|
|
559
583
|
.entry.message { max-width: 90%; }
|
|
584
|
+
.panel[data-layout="phone"] .entry.message,
|
|
585
|
+
.panel[data-layout="tablet"] .entry.message {
|
|
586
|
+
max-width: 100%;
|
|
587
|
+
}
|
|
560
588
|
.entry.message.user { align-self: flex-end; }
|
|
561
589
|
.entry.message.assistant,
|
|
562
590
|
.entry.message.system { align-self: flex-start; }
|
|
@@ -1176,8 +1204,8 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1176
1204
|
/* \u2500\u2500 Step 10: Composer Enhancement \u2500\u2500 */
|
|
1177
1205
|
.composer {
|
|
1178
1206
|
display: flex;
|
|
1179
|
-
|
|
1180
|
-
gap:
|
|
1207
|
+
flex-direction: column;
|
|
1208
|
+
gap: 6px;
|
|
1181
1209
|
border-top: 1px solid var(--rv-border);
|
|
1182
1210
|
padding: 12px 14px;
|
|
1183
1211
|
background: rgba(255, 255, 255, 0.85);
|
|
@@ -1185,6 +1213,12 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1185
1213
|
-webkit-backdrop-filter: blur(12px);
|
|
1186
1214
|
}
|
|
1187
1215
|
|
|
1216
|
+
.composerRow {
|
|
1217
|
+
display: flex;
|
|
1218
|
+
align-items: flex-end;
|
|
1219
|
+
gap: 8px;
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1188
1222
|
.composer textarea {
|
|
1189
1223
|
flex: 1;
|
|
1190
1224
|
resize: none;
|
|
@@ -1217,6 +1251,65 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1217
1251
|
cursor: not-allowed;
|
|
1218
1252
|
}
|
|
1219
1253
|
|
|
1254
|
+
.composerActions {
|
|
1255
|
+
display: flex;
|
|
1256
|
+
align-items: center;
|
|
1257
|
+
gap: 8px;
|
|
1258
|
+
}
|
|
1259
|
+
|
|
1260
|
+
.voiceBtn {
|
|
1261
|
+
border: 1.5px solid var(--rv-border-strong);
|
|
1262
|
+
background: rgba(255, 255, 255, 0.9);
|
|
1263
|
+
color: var(--rv-accent);
|
|
1264
|
+
border-radius: var(--rv-radius-md);
|
|
1265
|
+
height: 44px;
|
|
1266
|
+
width: 44px;
|
|
1267
|
+
min-width: 44px;
|
|
1268
|
+
padding: 0;
|
|
1269
|
+
cursor: pointer;
|
|
1270
|
+
display: none;
|
|
1271
|
+
place-items: center;
|
|
1272
|
+
transition: transform 200ms var(--rv-ease-spring), box-shadow 200ms ease, border-color 150ms ease, background 150ms ease;
|
|
1273
|
+
box-shadow: 0 3px 10px rgba(19, 30, 43, 0.08);
|
|
1274
|
+
}
|
|
1275
|
+
|
|
1276
|
+
.voiceBtn.visible {
|
|
1277
|
+
display: grid;
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
.voiceBtn:hover {
|
|
1281
|
+
transform: translateY(-1px);
|
|
1282
|
+
box-shadow: 0 5px 14px rgba(19, 30, 43, 0.12);
|
|
1283
|
+
border-color: var(--rv-accent-border);
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1286
|
+
.voiceBtn:active {
|
|
1287
|
+
transform: scale(0.96);
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
.voiceBtn.active {
|
|
1291
|
+
background: var(--rv-accent-soft);
|
|
1292
|
+
border-color: var(--rv-accent-border);
|
|
1293
|
+
box-shadow: 0 0 0 3px var(--rv-accent-glow);
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1296
|
+
.voiceBtn:disabled {
|
|
1297
|
+
opacity: 0.5;
|
|
1298
|
+
cursor: not-allowed;
|
|
1299
|
+
transform: none;
|
|
1300
|
+
box-shadow: none;
|
|
1301
|
+
}
|
|
1302
|
+
|
|
1303
|
+
.voiceBtn svg {
|
|
1304
|
+
width: 18px;
|
|
1305
|
+
height: 18px;
|
|
1306
|
+
fill: none;
|
|
1307
|
+
stroke: currentColor;
|
|
1308
|
+
stroke-width: 2;
|
|
1309
|
+
stroke-linecap: round;
|
|
1310
|
+
stroke-linejoin: round;
|
|
1311
|
+
}
|
|
1312
|
+
|
|
1220
1313
|
.sendBtn {
|
|
1221
1314
|
border: none;
|
|
1222
1315
|
background: linear-gradient(145deg, var(--rv-accent), #FF7A39);
|
|
@@ -1252,23 +1345,79 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1252
1345
|
stroke-linejoin: round;
|
|
1253
1346
|
}
|
|
1254
1347
|
|
|
1348
|
+
.composerStatus {
|
|
1349
|
+
display: none;
|
|
1350
|
+
min-height: 16px;
|
|
1351
|
+
font-size: 11.5px;
|
|
1352
|
+
line-height: 1.35;
|
|
1353
|
+
color: var(--rv-text-secondary);
|
|
1354
|
+
padding: 0 2px;
|
|
1355
|
+
}
|
|
1356
|
+
|
|
1357
|
+
.composerStatus.visible {
|
|
1358
|
+
display: block;
|
|
1359
|
+
}
|
|
1360
|
+
|
|
1361
|
+
.composerStatus.error {
|
|
1362
|
+
color: #c2410c;
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1365
|
+
.panelGrabber {
|
|
1366
|
+
display: none;
|
|
1367
|
+
align-items: center;
|
|
1368
|
+
justify-content: center;
|
|
1369
|
+
height: 26px;
|
|
1370
|
+
border: none;
|
|
1371
|
+
padding: 0;
|
|
1372
|
+
margin: 0;
|
|
1373
|
+
background: transparent;
|
|
1374
|
+
cursor: ns-resize;
|
|
1375
|
+
touch-action: none;
|
|
1376
|
+
}
|
|
1377
|
+
|
|
1378
|
+
.panel[data-resizable="true"][data-layout="phone"] .panelGrabber,
|
|
1379
|
+
.panel[data-resizable="true"][data-layout="tablet"] .panelGrabber {
|
|
1380
|
+
display: flex;
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
.panelGrabberHandle {
|
|
1384
|
+
width: 56px;
|
|
1385
|
+
height: 5px;
|
|
1386
|
+
border-radius: 999px;
|
|
1387
|
+
background: rgba(0, 0, 0, 0.14);
|
|
1388
|
+
transition: background 150ms ease, transform 150ms ease;
|
|
1389
|
+
pointer-events: none;
|
|
1390
|
+
}
|
|
1391
|
+
|
|
1392
|
+
.panelGrabber:hover .panelGrabberHandle,
|
|
1393
|
+
.panelGrabber:focus-visible .panelGrabberHandle {
|
|
1394
|
+
background: rgba(255, 76, 0, 0.38);
|
|
1395
|
+
transform: scaleX(1.04);
|
|
1396
|
+
}
|
|
1397
|
+
|
|
1398
|
+
.panelGrabber:focus-visible {
|
|
1399
|
+
outline: none;
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1255
1402
|
/* \u2500\u2500 Step 13: Resize Handle \u2500\u2500 */
|
|
1256
1403
|
.resizeHandle {
|
|
1257
1404
|
position: absolute;
|
|
1258
1405
|
left: 8px;
|
|
1259
1406
|
bottom: 8px;
|
|
1260
|
-
width:
|
|
1261
|
-
height:
|
|
1262
|
-
border-left:
|
|
1263
|
-
border-bottom:
|
|
1407
|
+
width: 20px;
|
|
1408
|
+
height: 20px;
|
|
1409
|
+
border-left: 2.5px solid var(--rv-border-strong);
|
|
1410
|
+
border-bottom: 2.5px solid var(--rv-border-strong);
|
|
1264
1411
|
border-radius: 2px;
|
|
1265
1412
|
cursor: nwse-resize;
|
|
1266
|
-
opacity: 0;
|
|
1267
|
-
transition: opacity 200ms ease;
|
|
1413
|
+
opacity: 0.72;
|
|
1414
|
+
transition: opacity 200ms ease, border-color 200ms ease;
|
|
1415
|
+
display: none;
|
|
1416
|
+
touch-action: none;
|
|
1268
1417
|
}
|
|
1269
1418
|
|
|
1270
|
-
.panel
|
|
1271
|
-
|
|
1419
|
+
.panel[data-resizable="true"][data-layout="desktop"] .resizeHandle {
|
|
1420
|
+
display: block;
|
|
1272
1421
|
}
|
|
1273
1422
|
|
|
1274
1423
|
.resizeHandle:hover {
|
|
@@ -1591,20 +1740,16 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1591
1740
|
/* \u2500\u2500 Step 14: Mobile Responsive \u2500\u2500 */
|
|
1592
1741
|
@media (max-width: 640px) {
|
|
1593
1742
|
.launcher {
|
|
1594
|
-
right: 14px;
|
|
1595
|
-
bottom: 14px;
|
|
1743
|
+
right: calc(14px + env(safe-area-inset-right));
|
|
1744
|
+
bottom: calc(14px + env(safe-area-inset-bottom));
|
|
1596
1745
|
width: 52px;
|
|
1597
1746
|
height: 52px;
|
|
1598
1747
|
border-radius: var(--rv-radius-lg);
|
|
1599
1748
|
}
|
|
1600
1749
|
|
|
1601
1750
|
.panel {
|
|
1602
|
-
right: 8px;
|
|
1603
|
-
left: 8px;
|
|
1604
|
-
bottom: 74px;
|
|
1605
|
-
width: auto;
|
|
1606
1751
|
min-width: 0;
|
|
1607
|
-
height:
|
|
1752
|
+
min-height: 0;
|
|
1608
1753
|
border-radius: var(--rv-radius-xl);
|
|
1609
1754
|
}
|
|
1610
1755
|
|
|
@@ -1627,6 +1772,7 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1627
1772
|
font-size: 11px;
|
|
1628
1773
|
}
|
|
1629
1774
|
|
|
1775
|
+
.sizeBtn,
|
|
1630
1776
|
.overflowBtn,
|
|
1631
1777
|
.closeBtn {
|
|
1632
1778
|
width: 36px;
|
|
@@ -1659,10 +1805,6 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1659
1805
|
min-width: 40px;
|
|
1660
1806
|
}
|
|
1661
1807
|
|
|
1662
|
-
.resizeHandle {
|
|
1663
|
-
display: none;
|
|
1664
|
-
}
|
|
1665
|
-
|
|
1666
1808
|
.feed {
|
|
1667
1809
|
padding: 12px 12px 8px;
|
|
1668
1810
|
gap: 8px;
|
|
@@ -1697,8 +1839,8 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1697
1839
|
}
|
|
1698
1840
|
|
|
1699
1841
|
.greetingBubble {
|
|
1700
|
-
right: 14px;
|
|
1701
|
-
bottom: 76px;
|
|
1842
|
+
right: calc(14px + env(safe-area-inset-right));
|
|
1843
|
+
bottom: calc(76px + env(safe-area-inset-bottom));
|
|
1702
1844
|
max-width: 190px;
|
|
1703
1845
|
padding: 8px 22px 8px 10px;
|
|
1704
1846
|
}
|
|
@@ -1943,15 +2085,15 @@ Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
|
1943
2085
|
border-color: var(--rv-border-strong);
|
|
1944
2086
|
color: var(--rv-text);
|
|
1945
2087
|
}
|
|
1946
|
-
`;let
|
|
2088
|
+
`;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||GT,T.type="video/mp4";let P=document.createElement("source");P.src=e.mascot?.webmUrl||KT,P.type="video/webm",g.appendChild(T),g.appendChild(P),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 U=document.createElement("span");U.className="greetingText";let D=document.createElement("button");D.type="button",D.className="greetingClose",D.textContent="\xD7",D.setAttribute("aria-label","Dismiss");let H=document.createElement("div");H.className="greetingDots";for(let T=0;T<3;T++){let P=document.createElement("span");P.className="greetingDot",H.appendChild(P)}R.appendChild(H),R.appendChild(U),R.appendChild(D);let C=document.createElement("div");C.className="panel";let J=document.createElement("div");J.className="header";let ce=document.createElement("div");ce.className="avatar";let oe=null;!h&&g&&(oe=g.cloneNode(!0),ce.appendChild(oe));let me=document.createElement("span");me.className="avatarFallback",me.textContent=n,ce.appendChild(me);let Se=document.createElement("div");Se.className="meta";let be=document.createElement("div");be.className="title",be.textContent=t;let Re=document.createElement("div");Re.className="status";let $e=document.createElement("span");$e.className="statusDot";let Dt=document.createElement("span");Dt.textContent="ready";let Le=document.createElement("span");Le.className="modeLabel controller",Le.textContent="active",Re.appendChild($e),Re.appendChild(Dt),Re.appendChild(Le),Se.appendChild(be),Se.appendChild(Re);let Ot=document.createElement("div");Ot.className="headerActions";let ot=document.createElement("button");ot.type="button",ot.className="sizeBtn",ot.setAttribute("aria-label","Resize Rover panel"),ot.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 tt=document.createElement("button");tt.type="button",tt.className="overflowBtn",tt.setAttribute("aria-label","More options"),tt.innerHTML="⋯";let Yt=document.createElement("button");Yt.type="button",Yt.className="closeBtn",Yt.setAttribute("aria-label","Close Rover panel"),Yt.textContent="\xD7";let Wt=e.muted??!0;try{let T=localStorage.getItem("rover:muted");T!==null&&(Wt=T!=="false")}catch{}function Qn(){g&&(g.muted=Wt),oe&&(oe.muted=Wt)}Qn();let an=document.createElement("button");an.type="button",an.className="cancelPill",an.setAttribute("aria-label","Cancel task");let In=document.createElement("span");In.className="cancelIcon",an.appendChild(In),an.appendChild(document.createTextNode(" Cancel"));let ft=document.createElement("div");ft.className="executionBar";let Qt=document.createElement("button");Qt.type="button",Qt.className="conversationListBtn",Qt.setAttribute("aria-label","Conversations"),Qt.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||ot.classList.add("hidden"),Ot.appendChild(ot),Ot.appendChild(Qt),Ot.appendChild(tt),Ot.appendChild(an),Ot.appendChild(Yt);let $t=document.createElement("div");$t.className="overflowMenu";let Lr=document.createElement("button");Lr.type="button",Lr.className="menuItem",Lr.textContent="New task";let br=document.createElement("button");br.type="button",br.className="menuItem danger",br.textContent="End task";let bi=document.createElement("div");bi.className="menuDivider";let qn=document.createElement("button");qn.type="button",qn.className="menuItem",qn.textContent=Wt?"Unmute sounds":"Mute sounds",qn.addEventListener("click",()=>{hs(),Wt=!Wt;try{localStorage.setItem("rover:muted",String(Wt))}catch{}Qn(),qn.textContent=Wt?"Unmute sounds":"Mute sounds"});let xn=document.createElement("button");xn.type="button",xn.className="menuItem",xn.textContent="Take control",xn.style.display="none",$t.appendChild(Lr),$t.appendChild(br),$t.appendChild(bi),$t.appendChild(qn),$t.appendChild(xn),e.showTaskControls===!1&&(Lr.style.display="none",br.style.display="none"),J.appendChild(ce),J.appendChild(Se),J.appendChild(Ot),J.appendChild($t),J.appendChild(ft);let Dr=document.createElement("div");Dr.style.cssText="position:relative;flex:1;min-height:0;display:flex;flex-direction:column;";let qe=document.createElement("div");qe.className="feed";let hn=document.createElement("div");hn.className="traceToggleBar";let Or=document.createElement("span");Or.className="traceToggleLabel",Or.textContent="Execution Log";let Wn=document.createElement("span");Wn.className="traceToggleCount",Wn.textContent="0 steps";let gn=document.createElement("button");gn.type="button",gn.className="traceToggleBtn",gn.textContent="Show all",hn.appendChild(Or),hn.appendChild(Wn),hn.appendChild(gn),qe.appendChild(hn);let it=document.createElement("div");it.className="typingIndicator";for(let T=0;T<3;T++){let P=document.createElement("span");P.className="typingDot",it.appendChild(P)}qe.appendChild(it);let cn=document.createElement("button");cn.type="button",cn.className="scrollBtn",cn.setAttribute("aria-label","Scroll to bottom"),cn.innerHTML='<svg viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"></polyline></svg>',Dr.appendChild(qe),Dr.appendChild(cn);let Sn=document.createElement("div");Sn.className="taskSuggestion",Sn.innerHTML=`
|
|
1947
2089
|
<div class="taskSuggestionText"></div>
|
|
1948
2090
|
<div class="taskSuggestionActions">
|
|
1949
2091
|
<button type="button" class="taskSuggestionBtn primary">Start new</button>
|
|
1950
2092
|
<button type="button" class="taskSuggestionBtn secondary">Continue</button>
|
|
1951
2093
|
</div>
|
|
1952
|
-
`;let ot=document.createElement("div");ot.className="shortcutsEmptyState";let Ar=document.createElement("div");Ar.className="shortcutsHeading",Ar.textContent=o?`Hey ${o}! What can I help with?`:`What can ${t} help you with?`;let lr=document.createElement("div");lr.className="shortcutsGrid",ot.appendChild(Ar),ot.appendChild(lr),Ze.appendChild(ot);let jn=document.createElement("div");jn.className="shortcutsBar";let Dn=document.createElement("div");Dn.className="questionPrompt";let yo=document.createElement("div");yo.className="questionPromptTitle",yo.textContent="Need a bit more info";let Gn=document.createElement("form");Gn.className="questionPromptForm";let ur=document.createElement("div");ur.className="questionPromptList",Gn.appendChild(ur);let dr=document.createElement("div");dr.className="questionPromptActions";let _n=document.createElement("button");_n.type="button",_n.className="questionPromptCancel",_n.textContent="Cancel",dr.appendChild(_n);let En=document.createElement("button");En.type="submit",En.className="questionPromptSubmit",En.textContent="Continue",dr.appendChild(En),Gn.appendChild(dr),Dn.appendChild(yo),Dn.appendChild(Gn);let we=document.createElement("form");we.className="composer";let Cr=document.createElement("textarea");Cr.rows=1,Cr.placeholder=`Ask ${t} to act on this website...`,we.appendChild(Cr);let On=document.createElement("button");On.type="submit",On.className="sendBtn",On.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>',we.appendChild(On);let Pt=document.createElement("div");Pt.className="resizeHandle",Pt.setAttribute("aria-hidden","true");let tn=document.createElement("div");tn.className="roverConversationPill",tn.setAttribute("role","button"),tn.setAttribute("tabindex","0");let st=document.createElement("span");st.className="roverConversationPillLabel",st.textContent="Current task";let Ko=document.createElement("span");Ko.className="roverConversationPillArrow",Ko.textContent="\u25BE",tn.appendChild(st),tn.appendChild(Ko),tn.addEventListener("click",()=>{Bn.classList.toggle("open")});let Gi=document.createElement("div");Gi.className="roverTabBar";let Pn=document.createElement("div");Pn.className="pausedTaskBanner";let Mr="",Bn=document.createElement("div");Bn.className="conversationDrawer";let nn=document.createElement("div");nn.className="conversationDrawerHeader";let Xn=document.createElement("span");Xn.className="conversationDrawerTitle",Xn.textContent="Conversations";let wn=document.createElement("button");wn.type="button",wn.className="conversationDrawerClose",wn.textContent="\xD7",nn.appendChild(Xn),nn.appendChild(wn);let Kr=document.createElement("div");Kr.className="conversationList";let pn=document.createElement("button");pn.type="button",pn.className="conversationNewBtn",pn.textContent="New conversation",Bn.appendChild(nn),Bn.appendChild(Kr),Bn.appendChild(pn),S.appendChild(H),S.appendChild(tn),S.appendChild(Pn),S.appendChild(bo),S.appendChild(fn),S.appendChild(jn),S.appendChild(Dn),S.appendChild(we),S.appendChild(Pt),S.appendChild(Bn),l.appendChild(d),l.appendChild(T),l.appendChild(S),i.appendChild(c),i.appendChild(l);let et=Cr,vo=fn.querySelector(".taskSuggestionText"),f=fn.querySelector(".taskSuggestionBtn.primary"),w=fn.querySelector(".taskSuggestionBtn.secondary"),E=new Set,_=new Map,y=[],b="controller",k=!1,x=!1,U=!1,B=e.shortcuts?.slice(0,12)||[],q=null,$=!1,j=null,ne=!1,ie=!1,Ie=0,ue=!1,ae=null,de=null,Ne=!1,Ge=null,_e=null,Te={};function Be(){ne=!ne,yt.classList.toggle("visible",ne)}function Le(){ne=!1,yt.classList.remove("visible")}let $e="";function Ye(L){let z=L.filter(G=>G&&G.enabled!==!1).slice(0,12),ee=z.map(G=>`${G.id||G.label}|${G.label}|${G.description||""}|${G.icon||""}`).join(";;");if(ee!==$e){$e=ee,B=z,lr.innerHTML="";for(let G of B){let Z=document.createElement("button");if(Z.type="button",Z.className="shortcutCard",G.icon){let ge=document.createElement("span");ge.className="shortcutCardIcon",ge.textContent=G.icon,Z.appendChild(ge)}let Oe=document.createElement("span");if(Oe.className="shortcutCardLabel",Oe.textContent=G.label,Z.appendChild(Oe),G.description){let ge=document.createElement("span");ge.className="shortcutCardDesc",ge.textContent=G.description,Z.appendChild(ge)}Z.addEventListener("click",()=>e.onShortcutClick?.(G)),lr.appendChild(Z)}jn.innerHTML="";for(let G of B){let Z=document.createElement("button");if(Z.type="button",Z.className="shortcutChip",G.icon){let ge=document.createElement("span");ge.className="shortcutChipIcon",ge.textContent=G.icon,Z.appendChild(ge)}let Oe=document.createTextNode(G.label);Z.appendChild(Oe),Z.addEventListener("click",()=>e.onShortcutClick?.(G)),jn.appendChild(Z)}ce()}}function ce(){let L=B.length>0,z=!!Ge?.questions?.length,ee=L&&!U&&!x,G=L&&U&&!x&&!z;ot.classList.toggle("visible",ee),jn.classList.toggle("visible",G)}function te(L){let z=Ht(L);if(z){if(O.textContent=z,T.classList.contains("visible")){T.classList.add("textVisible");return}ue||S.classList.contains("open")||(ue=!0,T.classList.remove("dismissing","textVisible"),T.classList.add("visible"),de&&(clearTimeout(de),de=null),de=setTimeout(()=>{de=null,T.classList.add("textVisible")},800))}}function fe(){if(de&&(clearTimeout(de),de=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),ae&&(clearTimeout(ae),ae=null)}function Fe(L){o=L||void 0,o?Ar.textContent=`Hey ${o}! What can I help with?`:Ar.textContent=`What can ${t} help you with?`}function jt(L){if(!L||!Array.isArray(L.questions))return[];let z=[],ee=new Set;for(let G=0;G<L.questions.length;G+=1){let Z=L.questions[G];if(!Z||typeof Z!="object")continue;let Oe=String(Z.key||Z.id||"").trim()||`clarification_${G+1}`,ge=String(Z.query||Z.question||"").trim();if(!ge)continue;let Xe=typeof Z.required=="boolean",Tt=typeof Z.optional=="boolean",rt=Xe?!!Z.required:Tt?!Z.optional:!0;ee.has(Oe)||(ee.add(Oe),z.push({key:Oe,query:ge,...typeof Z.id=="string"&&Z.id.trim()?{id:Z.id.trim()}:{},...typeof Z.question=="string"&&Z.question.trim()?{question:Z.question.trim()}:{},...Array.isArray(Z.choices)?{choices:Z.choices}:{},required:rt}))}return z.slice(0,6)}function Bt(L){return L.map(z=>{let ee=Array.isArray(z.choices)?z.choices.map(Z=>Ht(String(Z||""))).filter(Boolean).join("|"):"",G=z.required===!1?"optional":"required";return`${z.key}::${Ht(z.query)}::${ee}::${G}`}).join("||")}function Hs(L){let z=Ht(L.query||L.question||"");if(!z)return`Answer for ${L.key}`;let ee=z.replace(/\s+/g," ").replace(/[?.!:\s]+$/,"").slice(0,72);return ee?`Answer: ${ee}`:`Answer for ${L.key}`}function Yo(L){for(let z of Array.from(Gn.querySelectorAll(".questionPromptInput"))){let ee=z;if(ee.dataset.key===L)return ee}return null}function qs(L){let z=jt(L),ee=document.activeElement,G=ee instanceof HTMLInputElement&&ee.classList.contains("questionPromptInput")&&Dn.contains(ee)?ee:null,Z=G?.dataset.key,Oe=G?.selectionStart??null,ge=G?.selectionEnd??null;if(!z.length){Ge=null,_e=null,Te={},ur.innerHTML="",Dn.classList.remove("visible"),ce();return}let Xe=Bt(z),Tt=Xe!==_e||!Ge;if(Ge={questions:z},Tt){let rt=Te;Te={},ur.innerHTML="";for(let ut of Ge.questions){let Ft=document.createElement("label");Ft.className="questionPromptItem";let mn=document.createElement("span");mn.className="questionPromptLabel",mn.textContent=ut.required===!1?`${ut.query} (optional)`:ut.query,Ft.appendChild(mn);let hn=document.createElement("input");hn.type="text",hn.className="questionPromptInput",hn.dataset.key=ut.key,hn.placeholder=Hs(ut),hn.required=ut.required!==!1;let Kn=String(rt[ut.key]||"");Te[ut.key]=Kn,hn.value=Kn,hn.addEventListener("input",()=>{Te[ut.key]=hn.value,hn.classList.remove("invalid")}),Ft.appendChild(hn),ur.appendChild(Ft)}_e=Xe}if(Dn.classList.add("visible"),I(),ce(),Z){let rt=Yo(Z);if(rt){if(rt.focus(),Oe!==null||ge!==null){let ut=Oe??rt.value.length,Ft=ge??ut;try{rt.setSelectionRange(ut,Ft)}catch{}}return}}if(Tt){let ut=Ge.questions.find(hn=>!Ht(Te[hn.key]||""))?.key||Ge.questions[0]?.key;if(!ut)return;let Ft=Yo(ut),mn=!ee||ee===document.body||!S.contains(ee);Ft&&mn&&Ft.focus()}}function Yr(){x&&Ne?(Ln.classList.add("visible"),Ze.appendChild(Ln),h()):Ln.classList.remove("visible")}function rn(L,z=0){l.dataset.mood=L,j!=null&&(window.clearTimeout(j),j=null),z>0&&L!=="idle"&&(j=window.setTimeout(()=>{l.dataset.mood="idle",Yr(),j=null},z))}function Vc(){return Ze.scrollHeight-Ze.scrollTop-Ze.clientHeight<60}function h(){ie?Ot.classList.add("visible"):(requestAnimationFrame(()=>{Ze.scrollTo({top:Ze.scrollHeight,behavior:"smooth"}),Ie=Date.now()}),Ot.classList.remove("visible"))}Ze.addEventListener("scroll",()=>{Date.now()-Ie<200||(Vc()?(ie=!1,Ot.classList.remove("visible")):(ie=!0,Ot.classList.add("visible")))},{passive:!0}),Ot.addEventListener("click",()=>{ie=!1,Ie=Date.now(),Ze.scrollTo({top:Ze.scrollHeight,behavior:"smooth"}),Ot.classList.remove("visible")});function I(){let L=b==="observer"&&!k;et.disabled=L,_n.disabled=L,En.disabled=L;for(let z of Array.from(Gn.querySelectorAll(".questionPromptInput")))z.disabled=L}function M(L){if($=L,l.dataset.showDetails=L?"true":"false",dn.textContent=$?"Collapse":`Show all (${y.length})`,$)for(let z of y){z.style.display="";let ee=z.dataset.status,G=ee==="success"||ee==="error"||ee==="info";z.classList.toggle("compact",!1)}else for(let z=0;z<y.length;z++){let ee=y[z],G=z>=y.length-2;ee.style.display=G?"":"none";let Z=ee.dataset.status,Oe=Z==="success"||Z==="error"||Z==="info";ee.classList.toggle("compact",Oe)}}function P(){l.style.display="",S.classList.remove("closing"),S.classList.add("open"),fe(),rn("idle"),e.onOpen?.(),et.disabled||et.focus()}function W(){if(Le(),!S.classList.contains("open")){e.onClose?.();return}S.classList.remove("open"),S.classList.add("closing"),rn("idle");let L=()=>{S.classList.remove("closing"),S.removeEventListener("animationend",L)};S.addEventListener("animationend",L),e.onClose?.()}function Y(){l.style.display=""}function le(){W(),l.style.display="none"}function me(L,z,ee){let G=Ht(z),Z=ee?.blocks;if(!G&&(!Z||Z.length===0))return;let Oe=document.createElement("div");Oe.className=`entry message ${L}`;let ge=document.createElement("div");ge.className="bubble",L==="assistant"?ge.appendChild(Ky(G,Z)):ge.textContent=G;let Xe=document.createElement("div");Xe.className="stamp",Xe.textContent=Rl(Date.now()),Oe.appendChild(ge),Oe.appendChild(Xe),Ze.appendChild(Oe),L==="assistant"&&x&&Ne&&(Ne=!1,Yr()),U=!0,ce(),L==="user"?rn("typing",1200):L==="assistant"?rn("success",1400):rn("running",900),h()}function xe(){for(let L of Array.from(Ze.querySelectorAll(".entry.message")))L.remove();U=!1,qs(void 0),ce()}function He(L){let z=_.get(L);if(z)return z;let ee=document.createElement("div");ee.className="entry trace pending";let G=document.createElement("div");G.className="traceTop";let Z=document.createElement("div");Z.className="traceMeta";let Oe=document.createElement("span");Oe.className="traceStage",Oe.textContent="step";let ge=document.createElement("div");ge.className="traceTitle";let Xe=document.createElement("div");Xe.className="traceTs",Z.appendChild(Oe),Z.appendChild(ge),G.appendChild(Z),G.appendChild(Xe);let Tt=document.createElement("div");return Tt.className="traceDetail",ee.appendChild(G),ee.appendChild(Tt),_.set(L,ee),y.push(ee),Ze.appendChild(ee),ee}function Ve(L,z){let ee=Number(z.ts)||Date.now(),G=By(z),Z=L.querySelector(".traceTop"),ge=Z.querySelector(".traceMeta").querySelector(".traceStage"),Xe=Z.querySelector(".traceTitle"),Tt=Z.querySelector(".traceTs"),rt=L.querySelector(".traceDetail"),ut=fp(z.title||"");Xe.textContent=ut.plainTitle||"Step",ge.textContent=ut.stage||z.kind||"step",ge.style.display=ut.stage||z.kind==="status"||z.kind==="plan"||z.kind==="thought"?"":"none",Tt.textContent=Rl(ee),rt.innerHTML="";let Ft=Array.isArray(z.detailBlocks)?z.detailBlocks:[],mn=Ht(z.detail||"");if(Ft.length>0){for(let Kn of Ft){let od=mp(Kn);od&&rt.appendChild(od)}if(mn){let Kn=document.createElement("div");Kn.className="rvLine",Kn.appendChild(eo(mn)),rt.insertBefore(Kn,rt.firstChild)}rt.style.display=""}else if(mn){let Kn=(z.kind==="thought"||z.kind==="tool_start"||z.kind==="tool_result",1200);mn.length>Kn?rt.appendChild(Ha(mn,Kn)):rt.appendChild(eo(mn)),rt.style.display=""}else rt.style.display="none";L.classList.remove("pending","success","error","info"),L.classList.add(G),L.dataset.status=G,L.dataset.kind=z.kind,L.dataset.visibility=Wy(z);let hn=G==="success"||G==="error"||G==="info";L.classList.toggle("compact",!$&&hn),G==="error"?rn("error",2200):G==="success"?rn("success",1200):G==="pending"&&rn("running",800)}function Qe(L){let z=Ht(L.title||"");if(!z||z.toLowerCase()==="assistant update")return;let ee=L.id||dp("timeline");if(L.id&&E.has(ee))return;E.add(ee);let G=Uy(L),Z=G==="run"||G.startsWith("tool:")||L.kind==="tool_result"||L.kind==="status"&&_.has(G),Oe=He(Z?G:`${G}:${ee}`);Ve(Oe,{...L,title:z}),L.kind==="thought"&&x&&Ne&&(Ne=!1,Yr()),z.toLowerCase()==="run completed"&&M(!1);let ge=y.length;if(vt.textContent=`${ge} step${ge!==1?"s":""}`,zn.classList.toggle("visible",ge>0),!$){dn.textContent=`Show all (${ge})`;for(let Xe=0;Xe<y.length;Xe++){let Tt=y[Xe],rt=Xe>=y.length-2;Tt.style.display=rt?"":"none"}}h()}function Ut(){E.clear(),_.clear(),y.length=0;for(let L of Array.from(Ze.querySelectorAll(".entry.trace")))L.remove();zn.classList.remove("visible"),vt.textContent="0 steps"}function qt(L){let z=!!L?.visible;fn.classList.toggle("visible",z),vo.textContent=L?.text||"Looks like a new request. Start a new task?",f.textContent=L?.primaryLabel||"Start new",w.textContent=L?.secondaryLabel||"Continue"}function Nr(L){let z=String(L||"ready");De.textContent=z;let ee=z.toLowerCase();ee.includes("error")||ee.includes("failed")?rn("error",1800):ee==="ready"||ee.includes("complete")?rn("idle"):rn("running",1e3)}function Gt(L){x=L,L?Ne=!0:Ne=!1,Yr(),Dt.classList.toggle("visible",L),un.style.display=L?"none":"",Ae.style.display=L?"none":"",Nn.classList.toggle("active",L),ce()}function nt(L,z){b=L,k=L==="observer"?z?.canComposeInObserver===!0:!0,I(),Re.classList.remove("controller","observer"),Re.classList.add(L),L==="controller"?(Re.textContent="active",kn.style.display="none",et.placeholder=`Ask ${t} to act on this website...`):(Re.textContent="observer",z?.canTakeControl!==!1?kn.style.display="":kn.style.display="none",z?.note?et.placeholder=z.note:k?et.placeholder="Send to take control and run here.":z?.activeLogicalTabId&&z?.localLogicalTabId&&z.activeLogicalTabId!==z.localLogicalTabId?et.placeholder=`Observing: ${t} is acting in tab #${z.activeLogicalTabId}`:et.placeholder="Observer mode. Take control to run actions here.")}function lt(){j!=null&&(window.clearTimeout(j),j=null),de&&(window.clearTimeout(de),de=null),ae&&(window.clearTimeout(ae),ae=null),document.removeEventListener("keydown",fr),a.remove(),s.remove()}d.addEventListener("click",()=>{S.classList.contains("open")?W():P()}),N.addEventListener("click",L=>{L.stopPropagation(),fe()}),T.addEventListener("click",()=>{fe(),P()}),Lt.addEventListener("click",()=>W()),Ae.addEventListener("click",L=>{L.stopPropagation(),Be()}),l.addEventListener("click",L=>{ne&&!yt.contains(L.target)&&L.target!==Ae&&Le()}),Je.addEventListener("click",()=>{Le(),x&&e.onCancelRun?(q="new_task",qt({visible:!0,text:"A task is in progress. Cancel it and start new?",primaryLabel:"Cancel & start new",secondaryLabel:"Keep running"})):e.onNewTask?.()}),en.addEventListener("click",()=>{Le(),x&&e.onCancelRun?(q="end_task",qt({visible:!0,text:"A task is in progress. Cancel and end it?",primaryLabel:"Cancel & end",secondaryLabel:"Keep running"})):e.onEndTask?.()}),kn.addEventListener("click",()=>{Le(),e.onRequestControl?.()}),Dt.addEventListener("click",()=>{e.onCancelRun?.()}),dn.addEventListener("click",()=>{M(!$)}),f.addEventListener("click",()=>{if(q){let L=q;q=null,qt({visible:!1}),e.onCancelRun?.(),L==="new_task"?e.onNewTask?.():L==="end_task"&&e.onEndTask?.();return}e.onTaskSuggestionPrimary?.()}),w.addEventListener("click",()=>{if(q){q=null,qt({visible:!1});return}e.onTaskSuggestionSecondary?.()}),et.addEventListener("input",()=>{et.style.height="auto",et.style.height=`${Math.min(96,Math.max(44,et.scrollHeight))}px`}),Gn.addEventListener("submit",L=>{if(L.preventDefault(),et.disabled||!Ge?.questions?.length)return;let z={},ee=[],G=null;for(let ge of Ge.questions){let Xe=Yo(ge.key);if(!Xe)continue;let Tt=Ht(Xe.value),rt=ge.required!==!1;if(!Tt&&rt){Xe.classList.add("invalid"),G||(G=Xe);continue}if(!Tt){Xe.classList.remove("invalid"),delete Te[ge.key],ee.push(`${ge.key}: (no answer provided)`);continue}Xe.classList.remove("invalid"),Te[ge.key]=Tt,z[ge.key]=Tt,ee.push(`${ge.key}: ${Tt}`)}if(G){G.focus();return}let Z=Ge.questions.map(ge=>ge.key),Oe=ee.length?ee.join(`
|
|
1953
|
-
`):Z.map(
|
|
1954
|
-
`);e.onSend(Oe,{askUserAnswers:{answersByKey:z,rawText:Oe,keys:Z}})}),_n.addEventListener("click",()=>{if(!et.disabled){if(e.onCancelQuestionFlow){e.onCancelQuestionFlow();return}e.onCancelRun?.()}}),et.addEventListener("keydown",L=>{L.key==="Enter"&&!L.shiftKey&&!L.isComposing&&(L.preventDefault(),we.requestSubmit())}),we.addEventListener("submit",L=>{if(L.preventDefault(),et.disabled)return;let z=Ht(et.value);z&&(qt({visible:!1}),e.onSend(z),et.value="",et.style.height="44px")}),i.addEventListener("keydown",L=>{let z=L;z.key==="Escape"&&S.classList.contains("open")&&(z.stopPropagation(),W())});let fr=L=>{L.code==="Period"&&L.shiftKey&&(L.metaKey||L.ctrlKey)&&(L.preventDefault(),L.stopPropagation(),S.classList.contains("open")?W():P())};document.addEventListener("keydown",fr);let pr=null,td=L=>{if(!pr)return;let z=pr.startX-L.clientX,ee=L.clientY-pr.startY,G=Math.max(320,Math.min(window.innerWidth-16,pr.startW+z)),Z=Math.max(460,Math.min(window.innerHeight-16,pr.startH+ee));S.style.width=`${G}px`,S.style.height=`${Z}px`},nd=()=>{pr=null,window.removeEventListener("pointermove",td),window.removeEventListener("pointerup",nd)};if(Pt.addEventListener("pointerdown",L=>{window.matchMedia("(max-width: 640px)").matches||(L.preventDefault(),pr={startX:L.clientX,startY:L.clientY,startW:S.getBoundingClientRect().width,startH:S.getBoundingClientRect().height},window.addEventListener("pointermove",td),window.addEventListener("pointerup",nd))}),v){let L=()=>{v.style.display="none",m.style.display="grid"};v.addEventListener("error",L,{once:!0}),m.style.display="none"}if(J){let L=()=>{J.style.display="none",se.style.display="grid"};J.addEventListener("error",L,{once:!0}),se.style.display="none"}nt("controller"),M(!1),B.length>0&&Ye(B);let e_="",t_=new Map;function yh(L){}let zc=!1;function vh(){zc=!0,Bn.classList.add("open")}function Xi(){zc=!1,Bn.classList.remove("open")}un.addEventListener("click",L=>{L.stopPropagation(),zc?Xi():vh()}),wn.addEventListener("click",()=>Xi()),pn.addEventListener("click",()=>{Xi(),e.onNewTask?.()});let rd="";function Th(L){let z=L.map(G=>`${G.id}|${G.summary}|${G.status}|${G.updatedAt}|${G.isActive}`).join(";;");if(z===rd)return;rd=z;let ee=L.find(G=>G.isActive);if(ee){let G=ee.summary.length>40?ee.summary.slice(0,40)+"...":ee.summary;st.textContent=G||"Current task"}else st.textContent="Current task";tn.style.display=L.length>1?"flex":"none",Kr.innerHTML="";for(let G of L){let Z=document.createElement("div");Z.className=`conversationItem ${G.status}${G.isActive?" active":""}`,Z.dataset.id=G.id;let Oe=document.createElement("span");Oe.className="conversationDot";let ge=document.createElement("div");ge.className="conversationContent";let Xe=document.createElement("div");Xe.className="conversationSummary",Xe.textContent=G.summary.length>60?G.summary.slice(0,60)+"...":G.summary;let Tt=document.createElement("div");Tt.className="conversationMeta";let rt=G.status==="running"?"Running":G.status==="paused"?"Paused":G.status==="completed"?"Done":G.status;Tt.textContent=`${rt} \xB7 ${Rl(G.updatedAt)}`,ge.appendChild(Xe),ge.appendChild(Tt);let ut=document.createElement("div");ut.className="conversationActions";let Ft=document.createElement("button");Ft.type="button",Ft.className="conversationDeleteBtn",Ft.textContent="\xD7",Ft.addEventListener("click",mn=>{mn.stopPropagation(),e.onDeleteConversation?.(G.id)}),ut.appendChild(Ft),Z.appendChild(Oe),Z.appendChild(ge),Z.appendChild(ut),Z.addEventListener("click",()=>{Xi(),e.onSwitchConversation?.(G.id)}),Kr.appendChild(Z)}}function kh(L){Kr.querySelectorAll(".conversationItem").forEach(ee=>{ee.dataset.id===L?ee.classList.add("active"):ee.classList.remove("active")})}function _h(L){Mr=L.taskId;let z=L.rootUserInput.length>50?L.rootUserInput.slice(0,50)+"...":L.rootUserInput;Pn.innerHTML="";let ee=document.createElement("span");ee.className="pausedTaskText",ee.textContent=`Paused: "${z}"`;let G=document.createElement("div");G.className="pausedTaskActions";let Z=document.createElement("button");Z.type="button",Z.className="pausedTaskResumeBtn",Z.textContent="Resume",Z.addEventListener("click",()=>e.onResumeTask?.(Mr));let Oe=document.createElement("button");Oe.type="button",Oe.className="pausedTaskCancelBtn",Oe.textContent="Cancel",Oe.addEventListener("click",()=>e.onCancelPausedTask?.(Mr)),G.appendChild(Z),G.appendChild(Oe),Pn.appendChild(ee),Pn.appendChild(G),Pn.classList.add("visible")}function Eh(){Mr="",Pn.classList.remove("visible")}function wh(){return Ze.scrollTop}function Ih(L){requestAnimationFrame(()=>{Ze.scrollTop=L})}return{addMessage:me,setQuestionPrompt:qs,clearMessages:xe,addTimelineEvent:Qe,clearTimeline:Ut,setTaskSuggestion:qt,setStatus:Nr,setRunning:Gt,setExecutionMode:nt,setShortcuts:Ye,showGreeting:te,dismissGreeting:fe,setVisitorName:Fe,open:P,close:W,show:Y,hide:le,destroy:lt,setTabs:yh,setConversations:Th,setActiveConversationId:kh,getScrollPosition:wh,setScrollPosition:Ih,showPausedTaskBanner:_h,hidePausedTaskBanner:Eh}}var yp=3,Yy="rover:shared:",Qy="rover:channel:",Ml=2*6e4,gp=9e4,Nl=45e3,Ll=2e4,Jy=45e3;function oe(){return Date.now()}function br(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function Wa(e){let t=String(e||"").trim();if(!t)return"";try{return new URL(t,window.location.href).toString()}catch{return t}}function vp(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)||oe(),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 Tp(e){return e==="completed"?"completed":e==="cancelled"||e==="ended"?"cancelled":e==="failed"?"failed":"running"}function Va(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 ii(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)||oe(),runId:o,taskId:s,stage:typeof e?.stage=="string"&&e.stage.trim()?e.stage.trim():void 0}}function kp(e){return Array.isArray(e)?e.slice(-pt.uiMessages).map(t=>({id:String(t?.id||br("msg")),role:t?.role==="user"||t?.role==="assistant"||t?.role==="system"?t.role:"system",text:String(t?.text||""),blocks:hs(t?.blocks),ts:Number(t?.ts)||oe(),sourceRuntimeId:typeof t?.sourceRuntimeId=="string"?t.sourceRuntimeId:void 0})).filter(t=>!!t.text||!!t.blocks?.length):[]}function _p(e){return Array.isArray(e)?e.slice(-pt.timelineEvents).map(t=>({id:String(t?.id||br("timeline")),kind:String(t?.kind||"status"),title:String(t?.title||"Step"),detail:typeof t?.detail=="string"?t.detail:void 0,detailBlocks:hs(t?.detailBlocks),status:t?.status==="pending"||t?.status==="success"||t?.status==="error"||t?.status==="info"?t.status:void 0,ts:Number(t?.ts)||oe(),sourceRuntimeId:typeof t?.sourceRuntimeId=="string"?t.sourceRuntimeId:void 0})).filter(t=>!!t.title):[]}var Zy=new Set(["idle","running","awaiting_user","paused","blocked","completed","failed","cancelled"]);function ev(e){if(!e||typeof e!="object")return;let t=typeof e.taskId=="string"?e.taskId.trim():"";if(!t)return;let n=Zy.has(e.state)?e.state:"running";return{taskId:t,state:n,startedAt:Number(e.startedAt)||oe(),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)||oe(),updatedAt:Number(e.activeRun.updatedAt)||oe()}:void 0,workerContext:za(e.workerContext),uiMessages:Array.isArray(e.uiMessages)?e.uiMessages.slice(-pt.uiMessages).map(r=>({id:String(r?.id||br("msg")),role:r?.role==="user"||r?.role==="assistant"||r?.role==="system"?r.role:"system",text:String(r?.text||""),blocks:hs(r?.blocks),ts:Number(r?.ts)||oe(),sourceRuntimeId:typeof r?.sourceRuntimeId=="string"?r.sourceRuntimeId:void 0})).filter(r=>!!r.text||!!r.blocks?.length):[],timeline:Array.isArray(e.timeline)?e.timeline.slice(-pt.timelineEvents).map(r=>({id:String(r?.id||br("timeline")),kind:String(r?.kind||"status"),title:String(r?.title||"Step"),detail:typeof r?.detail=="string"?r.detail:void 0,detailBlocks:hs(r?.detailBlocks),status:r?.status==="pending"||r?.status==="success"||r?.status==="error"||r?.status==="info"?r.status:void 0,ts:Number(r?.ts)||oe(),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:Va(e.seedChatLog),transientStatus:ii(e.transientStatus,{runId:e.activeRun?.runId,taskId:t})}}function tv(e){if(!e||typeof e!="object")return;let t={},n=0;for(let r of Object.keys(e)){if(n>=20)break;let o=ev(e[r]);o&&(t[o.taskId]=o,n++)}return Object.keys(t).length>0?t:void 0}function Ep(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 hs(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=Ep(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 bp(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=Ep(o);s!==void 0&&r.push(s)}return r}function za(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(-pt.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=bp(e.plannerHistory,pt.plannerHistory),a=bp(e.agentPrevSteps,pt.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:Va(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)||oe(),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)||oe()}}function Dl(e,t){return{version:yp,siteId:e,sessionId:t,seq:1,updatedAt:oe(),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 ps(e,t,n){let r=Dl(t,n);if(!e||typeof e!="object")return r;let o={...r,version:yp,siteId:t,sessionId:n,seq:Math.max(1,Number(e.seq)||1),updatedAt:Number(e.updatedAt)||oe(),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)||oe(),updatedAt:Number(a?.updatedAt)||oe(),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:kp(e.uiMessages),timeline:_p(e.timeline),taskEpoch:Math.max(1,Number(e.taskEpoch)||1),task:vp(e.task),workerContext:za(e.workerContext),uiStatus:typeof e.uiStatus=="string"?e.uiStatus:void 0,transientStatus:ii(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)||oe(),updatedAt:Number(e.activeRun.updatedAt)||oe()}: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)||oe()}: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)||oe(),expiresAt:Number(e.workflowLock.expiresAt)||0}:void 0,tasks:e.tasks&&typeof e.tasks=="object"?tv(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`),bn(o),o}function nv(e){let t=String(e.task?.taskId||e.activeTaskId||"").trim();if(!t)return;let n=Number(e.task?.startedAt)||oe();e.tasks||(e.tasks={});let r=e.tasks[t];if(r)return e.activeTaskId=t,r;let o={taskId:t,state:Tp(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:Va(e.workerContext?.seedChatLog),transientStatus:ii(e.transientStatus??e.uiStatus,{runId:e.activeRun?.runId,taskId:t})};return e.tasks[t]=o,e.activeTaskId=t,o}function bn(e){let t=nv(e);if(!t)return;t.state=Tp(e.task?.status),t.startedAt=Number(e.task?.startedAt)||t.startedAt||oe(),t.endedAt=Number(e.task?.endedAt)||void 0,t.activeRun=e.activeRun,t.workerContext=za(e.workerContext),t.uiMessages=kp(e.uiMessages),t.timeline=_p(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=Va(e.workerContext?.seedChatLog),t.transientStatus=ii(e.transientStatus??e.uiStatus,{runId:e.activeRun?.runId,taskId:t.taskId})}var ms=class ms{constructor(t){D(this,"siteId");D(this,"sessionId");D(this,"runtimeId");D(this,"leaseMs");D(this,"workflowLockMs");D(this,"heartbeatMs");D(this,"maxMessages");D(this,"maxTimeline");D(this,"onRoleChange");D(this,"onStateChange");D(this,"onSwitchRequested");D(this,"onTaskTabsExhausted");D(this,"key");D(this,"channelName");D(this,"state");D(this,"taskTabMapping",new Map);D(this,"channel",null);D(this,"heartbeatTimer",null);D(this,"storageHandler",null);D(this,"localLogicalTabId");D(this,"closing",!1);D(this,"started",!1);D(this,"heartbeatCount",0);D(this,"lastNotifiedStateHash","");D(this,"pendingRpcRequests",new Map);D(this,"rpcRequestHandler");D(this,"lastNotifiedRole");D(this,"roleChangeTimer",null);D(this,"probeTimers",[]);D(this,"onSessionTokenReceived");D(this,"onProjectionReceived");D(this,"lastFullHeartbeatAt",0);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)||pt.uiMessages),this.maxTimeline=Math.max(20,Number(t.maxTimeline)||pt.timelineEvents),this.onRoleChange=t.onRoleChange,this.onStateChange=t.onStateChange,this.onSwitchRequested=t.onSwitchRequested,this.onTaskTabsExhausted=t.onTaskTabsExhausted,this.key=`${Yy}${this.siteId}:${this.sessionId}`,this.channelName=`${Qy}${this.siteId}:${this.sessionId}`,this.state=this.loadState(),this.normalizeDraftTabs(this.state)}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)<=Jy:!1}isTabVisibleInScope(t,n,r){return t.runtimeId?this.isRuntimeTabFresh(t,n):t.external?n-this.tabFreshnessTs(t)<=Ml:t.detachedReason==="opened_pending_attach"?n-this.tabFreshnessTs(t)<=Ll:r==="context"?!1:t.detachedReason==="navigation_handoff"?n-this.tabFreshnessTs(t)<=Nl:n-this.tabFreshnessTs(t)<=gp}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=oe(),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=oe(),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)<=Ml;let d=a-this.tabFreshnessTs(l);return l.detachedReason==="navigation_handoff"?d<=Nl:l.detachedReason==="opened_pending_attach"?d<=Ll:d<=gp}),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)<=Ml:!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=oe(),s=Wa(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}}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=ps(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=ps(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<=oe()?!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=vp(t)||r.task,bn(r))})}hydrateExternalState(t){let n=ps(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=oe();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)||oe(),r={taskId:String(t.taskId||br("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),bn(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:oe()},r.activeRun=void 0,r.transientStatus=void 0,r.uiStatus=void 0,bn(r),n=r.task)}),n}markTaskActivity(t,n=oe()){t!=="system"&&this.mutate("local",r=>{if(!r.task){r.task={taskId:br("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),bn(r))})}setWorkerContext(t){this.mutate("local",n=>{if(!t){n.workerContext=void 0,bn(n);return}n.workerContext=za(t),bn(n)})}setStatus(t){this.mutate("local",n=>{let r=ii(t,{runId:n.activeRun?.runId,taskId:n.task?.taskId});n.uiStatus=r?.text,n.transientStatus=r,bn(n)})}appendMessage(t){let n={id:t.id||br("msg"),role:t.role,text:String(t.text||""),blocks:hs(t.blocks),ts:Number(t.ts)||oe(),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:br("task"),status:"running",startedAt:n.ts,boundaryReason:"implicit"}),n.role==="user"?r.task.lastUserAt=n.ts:n.role==="assistant"&&(r.task.lastAssistantAt=n.ts),bn(r)}),n}appendTimeline(t){let n={id:t.id||br("timeline"),kind:String(t.kind||"status"),title:String(t.title||"Step"),detail:t.detail?String(t.detail):void 0,detailBlocks:hs(t.detailBlocks),status:t.status,ts:Number(t.ts)||oe(),sourceRuntimeId:this.runtimeId};return this.mutate("local",r=>{r.timeline.push(n),r.timeline.length>this.maxTimeline&&(r.timeline=r.timeline.slice(-this.maxTimeline)),bn(r)}),n}clearTimeline(){this.mutate("local",t=>{t.timeline=[],bn(t)})}setActiveRun(t){this.mutate("local",n=>{if(!t){n.activeRun=void 0,n.transientStatus=void 0,n.uiStatus=void 0,bn(n);return}if(n.task&&n.task.status!=="running"){n.activeRun=void 0,bn(n);return}n.activeRun={runId:t.runId,text:t.text,runtimeId:this.runtimeId,startedAt:n.activeRun?.runId===t.runId?n.activeRun.startedAt:oe(),updatedAt:oe()},bn(n)})}requestControl(){return this.claimLease(!0)}registerCurrentTab(t,n,r){let o=Wa(t),s=typeof r?.handoffId=="string"?r.handoffId.trim():"",i=Number(r?.sourceLogicalTabId),a;return this.mutate("local",c=>{let l=oe(),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>Ll||o&&N.url===o&&A<=Nl)}));let O=c.activeLogicalTabId?c.tabs.find(N=>N.logicalTabId===c.activeLogicalTabId):void 0;m?c.activeLogicalTabId=m.logicalTabId:(!O||!O.runtimeId||O.logicalTabId===a||g)&&(c.activeLogicalTabId=a)}),this.notifyRoleChange(),this.localLogicalTabId||a||1}registerOpenedTab(t){let n=Wa(t.url),r=0;return this.mutate("local",o=>{let s=oe(),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:oe()+this.leaseMs,updatedAt:oe()},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:oe()+this.leaseMs,updatedAt:oe()},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=br("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:oe()})})}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=oe(),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>oe()-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>oe()){let i=o.tabs.find(c=>c.runtimeId===s.runtimeId);if(i&&i.updatedAt>oe()-2*this.heartbeatMs){r=!1;return}}o.workflowLock={runtimeId:this.runtimeId,runId:t,lockedAt:oe(),expiresAt:oe()+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>oe()}getWorkflowLockInfo(){let t=this.state.workflowLock;return!t||t.expiresAt<=oe()?{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=oe())})}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)||oe();this.mutate("local",c=>{let l=oe(),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()}heartbeat(){if(this.closing)return;this.heartbeatCount++;let t=Wa(window.location.href),n=document.title||void 0,r=oe(),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%ms.LS_HEARTBEAT_DIVISOR!==0;this.mutate("local",l=>{let d=l.tabs.find(J=>J.runtimeId===this.runtimeId);if(d)d.url=t||d.url,d.title=n||d.title,d.updatedAt=oe(),d.detachedAt=void 0,d.detachedReason=void 0;else{let J=oe(),se=l.nextLogicalTabId++;l.tabs.push({logicalTabId:se,runtimeId:this.runtimeId,url:t,title:n,openedAt:J,updatedAt:J,external:!1,detachedAt:void 0,detachedReason:void 0})}let p=l.lease,v=!p||p.expiresAt<=oe(),m=p&&p.holderRuntimeId!==this.runtimeId&&p.expiresAt>oe()?p.holderRuntimeId:void 0,g=m?l.tabs.find(J=>J.runtimeId===m):void 0,T=!!(g&&g.updatedAt>oe()-2*this.heartbeatMs),O=l.workflowLock?.runtimeId,N=O?l.tabs.find(J=>J.runtimeId===O):void 0,A=!!(N&&N.runtimeId&&N.runtimeId!==this.runtimeId&&N.updatedAt>oe()-2*this.heartbeatMs);if(l.workflowLock&&l.workflowLock.runtimeId!==this.runtimeId&&(l.workflowLock.expiresAt<=oe()||!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 J=l.tabs.find(he=>he.runtimeId===l.activeRun?.runtimeId);J&&J.updatedAt>oe()-2*this.heartbeatMs||(l.activeRun=void 0)}let S=!!(l.activeRun?.runtimeId&&l.activeRun.runtimeId!==this.runtimeId),H=!!(l.workflowLock&&l.workflowLock.runtimeId!==this.runtimeId&&l.workflowLock.expiresAt>oe()),V=!!(m&&!T&&!S&&!H);(v||p?.holderRuntimeId===this.runtimeId||V)&&(l.lease={holderRuntimeId:this.runtimeId,expiresAt:oe()+this.leaseMs,updatedAt:oe()},!l.activeLogicalTabId&&this.localLogicalTabId&&(l.activeLogicalTabId=this.localLogicalTabId)),l.workflowLock?.runtimeId===this.runtimeId&&(l.workflowLock.expiresAt=oe()+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<=oe();(t||s||o?.holderRuntimeId===this.runtimeId)&&(r.lease={holderRuntimeId:this.runtimeId,expiresAt:oe()+this.leaseMs,updatedAt:oe()},!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}))},ms.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=ps(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=ps(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=oe(),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 Dl(this.siteId,this.sessionId);let n=JSON.parse(t);return ps(n,this.siteId,this.sessionId)}catch(t){return console.warn("[rover] Failed to load shared state from localStorage:",t),Dl(this.siteId,this.sessionId)}}persistState(){try{window.localStorage.setItem(this.key,JSON.stringify(this.state))}catch{}}};D(ms,"LS_HEARTBEAT_DIVISOR",5),D(ms,"ROLE_CHANGE_DEBOUNCE_MS",200);var $a=ms;var Sp="https://extensionrouter.rtrvr.ai",wp="rvrsess_";function gs(e,t){let n=Number(e);return Number.isFinite(n)?n:t}function rv(e,t=8e3){let n=String(e??"");return n.length<=t?n:`${n.slice(0,t)}\u2026`}function ov(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 Ol(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=>Ol(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)}:${Ol(r)}`).join(",")}}`:JSON.stringify(String(e))}function sv(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 Ip(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:ov(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 sv(Ol(v))}function iv(e){let t=Sp,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 xp(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 av(e){let t=iv(e),n=String(e||"").trim().replace(/\/+$/,"");return n.endsWith("/v2/rover")||n.endsWith("/extensionRouter/v2/rover")?xp([n.replace("/extensionRouter/v2/rover","/v2/rover"),`${t}/v2/rover`]):xp([`${t}/v2/rover`])}function Lo(e,t){let n=new Error(e);return n.details=t,n}function cv(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}var ja=class{constructor(t){D(this,"endpoint");D(this,"endpointCandidates");D(this,"endpointIndex",0);D(this,"getToken");D(this,"siteId");D(this,"visitorId");D(this,"ttlHours");D(this,"flushIntervalMs");D(this,"pullIntervalMs");D(this,"minFlushIntervalMs");D(this,"maxSnapshotBytes");D(this,"shouldSync");D(this,"shouldWrite");D(this,"buildCheckpoint");D(this,"onCheckpoint");D(this,"onStateChange");D(this,"onError");D(this,"idlePullIntervalMs");D(this,"started",!1);D(this,"idleMode",!1);D(this,"dirty",!1);D(this,"flushTimer",null);D(this,"pullTimer",null);D(this,"lastFlushAt",0);D(this,"lastPullAt",0);D(this,"lastUploadedRevision","");D(this,"lastAppliedRemoteUpdatedAt",0);D(this,"lastAppliedRemoteDigest","");D(this,"pushInFlight",!1);D(this,"pullInFlight",!1);D(this,"state","active");D(this,"visibilityListener",null);let n=String(t.authToken||"").trim(),r=t.getSessionToken,o=r?String(r()||"").trim():n;if(!o||!o.startsWith(wp))throw Lo("Rover cloud checkpoint requires a session token (rvrsess_...).");this.endpointCandidates=av(t.apiBase),this.endpoint=this.endpointCandidates[0]||`${Sp}/v2/rover`,this.getToken=()=>{let s=r?String(r()||"").trim():n;if(!s||!s.startsWith(wp))throw Lo("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(gs(t.ttlHours,1)))),this.flushIntervalMs=Math.max(2e3,Math.floor(gs(t.flushIntervalMs,3e4))),this.pullIntervalMs=Math.max(2e3,Math.floor(gs(t.pullIntervalMs,3e4))),this.idlePullIntervalMs=12e4,this.minFlushIntervalMs=Math.max(1e3,Math.floor(gs(t.minFlushIntervalMs,2500))),this.maxSnapshotBytes=Math.max(64e3,Math.min(1048576,Math.floor(gs(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=Lo(`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:Lo(`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=Ip(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(gs(t?.updatedAt,0))),o=String(t?.digest||"").trim()||Ip(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:cv(),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 Lo("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 Lo(`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 Lo(`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:rv(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 lv="rover-runtime-state-db",Ga="runtime-state",Pl=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{}}},Bl=class{constructor(){D(this,"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(lv,1);r.onupgradeneeded=()=>{let o=r.result;o.objectStoreNames.contains(Ga)||o.createObjectStore(Ga)},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(Ga,t),a=i.objectStore(Ga);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 Rp(){let e=new Pl,t=new Bl;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 uv="rover_xdr_";var dv=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 Cp(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&&dv.has(r)?`${n[n.length-3]}.${r}`:r}function Ul(e){return`${uv}${e.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,40)}`}function Xa(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 Ap(e){let t=String(e||"").trim();return!t||t==="/"?"/":t.replace(/\/\/+/g,"/").replace(/\/+$/,"")||"/"}function fv(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 Fl(e,t){let n=Xa(e),r=Xa(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()||Ap(o.pathname)!==Ap(s.pathname)?!1:fv(o.searchParams,s.searchParams)}catch{return n===r}}function Mp(e,t){try{let n=Ul(e),r=Cp(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 Hl(e,t){try{let n=Ul(e),r=document.cookie.split(";"),o=Math.max(1e3,Number(t?.maxAgeMs)||300*1e3),s=Xa(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=Xa(m.targetUrl||m.handoff?.targetUrl||"");if(!T||!s||!Fl(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 ai(e){try{let t=Ul(e),n=Cp(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 pv(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 Np(e){let t=Ce(e.incomingBoundaryId),n=Ce(e.currentBoundaryId);return t&&n&&t===n?{accept:!0,reason:"match"}:t?pv(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 mv(){return[{kind:"create_task"},{kind:"rotate_boundary"},{kind:"assign_worker"}]}function ql(){return[{kind:"release_worker"},{kind:"clear_run"}]}function Ka(){return[{kind:"release_worker"},{kind:"clear_run"}]}function Do(){return[{kind:"archive_task"},{kind:"clear_run"},{kind:"clear_worker_state"}]}var hv={idle:{START:{to:"running",sideEffects:()=>mv()}},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:()=>ql()},FAIL:{to:"failed",sideEffects:e=>[...ql(),{kind:"emit_error",error:e.error}]},CANCEL:{to:"cancelled",sideEffects:()=>Ka()},RESET:{to:"idle",sideEffects:()=>Do()}},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:()=>Ka()},RESET:{to:"idle",sideEffects:()=>Do()}},paused:{RESUME:{to:"running",sideEffects:()=>[{kind:"restore_snapshot"},{kind:"assign_worker"}]},CANCEL:{to:"cancelled",sideEffects:()=>Ka()},RESET:{to:"idle",sideEffects:()=>Do()}},blocked:{UNBLOCK:{to:"running",sideEffects:()=>[{kind:"resume_from_block"}]},CANCEL:{to:"cancelled",sideEffects:()=>Ka()},FAIL:{to:"failed",sideEffects:e=>[...ql(),{kind:"emit_error",error:e.error}]},RESET:{to:"idle",sideEffects:()=>Do()}},completed:{RESET:{to:"idle",sideEffects:()=>Do()}},failed:{RESET:{to:"idle",sideEffects:()=>Do()}},cancelled:{RESET:{to:"idle",sideEffects:()=>Do()}}};function gv(e,t,n){let o=hv[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 ci(e){return e==="completed"||e==="failed"||e==="cancelled"}function Lp(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 li(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 Dp(e,t){let n=gv(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),ci(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 Wl(e){let t=Date.now(),n=e?.taskId||bv(),r=e?.boundaryId||yv();return{taskId:n,state:"idle",boundaryId:r,startedAt:t,uiMessages:[],timeline:[],seedChatLog:[],tabIds:[],...e}}function bv(){return`task_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function yv(){return`bnd_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function Ya(e){return e==="running"}function Op(e){return e.resumeRequired?e.hasLiveRemoteController?"defer_remote_owner":e.policy==="never"?"cancel_resume":e.policy==="confirm"?"prompt_resume":"auto_resume":"noop"}function Pp(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 Bp(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 Up(e){return!(e.taskStatus!=="running"||!e.activeRunId||!e.activeRunText||e.hasPendingRun||e.ignoredRunIds?.has(e.activeRunId))}function $l(e){return!!(e.localTaskStatus!=="running"||e.remoteTaskStatus&&e.remoteTaskStatus!=="running"||e.mode==="observer"&&!e.hasRemoteActiveRun)}function Fp(e){let{type:t,messageRunId:n,messageTaskBoundaryId:r,currentTaskBoundaryId:o,pendingRunId:s,sharedActiveRunId:i,authoritativeActiveRunId:a,taskStatus:c,ignoredRunIds:l}=e,d=Ce(o),p=Ce(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 vv(e){return Math.max(1,Number(e)||1)}function Tv(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 Vl(e){return e==="completed"||e==="cancelled"||e==="failed"||e==="ended"}function Hp(e,t,n){let r=Number(t.at)||Date.now(),o=String(t.reason||"kernel").trim()||"kernel",s=vv(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":Tv(c),rotateBoundary:!1,clearPendingRun:!1,clearWorkerState:!1}}function kv(e,t){let n=Number(e);return Number.isFinite(n)?n:t}function $p(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 qp(e){let t=new Set,n=[];for(let r of e){let o=fi(r);!o||t.has(o)||(t.add(o),n.push(o))}return n}function _v(e){let n=`${$p(e)}/v2/rover`,r=fi(String(e||"").trim()),o=r.replace("/extensionRouter/v2/rover","/v2/rover");return r.endsWith("/v2/rover")||r.endsWith("/extensionRouter/v2/rover")?qp([o,n]):qp([n])}function Vp(e){return _v(e)}function Ev(e){return Vp(e)[0]||`${$p(e)}/v2/rover`}function di(e){return Vp(e)}function Qa(e){return Ev(e)}function fi(e){return String(e||"").replace(/\/+$/,"")}function Wp(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}function Oo(e){return!!e&&typeof e=="object"&&typeof e.sessionId=="string"&&Number.isFinite(Number(e.epoch))}function Ja(e){let t=Number(e);return Number.isFinite(t)?t:void 0}function wv(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=Ja(n?.currentSeq??r?.currentSeq),a=Ja(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 ui(e){return String(e?.error||e?.data?.code||e?.code||"").trim().toUpperCase()}async function Iv(e){try{return await e.json()}catch{let t=await e.text().catch(()=>"");return t?{error:t}:void 0}}var yr=class yr{constructor(t){D(this,"options");D(this,"base");D(this,"baseCandidates");D(this,"baseIndex",0);D(this,"sessionToken");D(this,"sessionTokenExpiresAt",0);D(this,"sessionId");D(this,"epoch",1);D(this,"eventSource",null);D(this,"pollTimer",null);D(this,"reconnectTimer",null);D(this,"sseReconnectAttempts",0);D(this,"started",!1);D(this,"lastSeq",0);D(this,"lastRunId","");D(this,"lastSnapshotDigest","");D(this,"activeRunId");D(this,"visibilityListener",null);D(this,"pollIntervalMs",2e3);D(this,"commandInFlight",!1);D(this,"commandQueue",Promise.resolve());this.options=t,this.baseCandidates=di(t.apiBase),this.base=this.baseCandidates[0]||Qa(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=di(t),this.baseIndex=0,this.base=this.baseCandidates[0]||Qa(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?fi(this.baseCandidates[this.baseIndex]||this.base):fi(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=di(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=fi(this.baseCandidates[i]||this.base);try{let c=await fetch(`${a}${t}`,n),l=await Iv(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=kv(t.sessionTokenExpiresAt,Date.now()+8*6e4)),Number.isFinite(Number(t.epoch))&&(this.epoch=Math.max(1,Number(t.epoch))),t.projection&&Oo(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&&(ui(c)==="SESSION_TOKEN_EXPIRED"||ui(c)==="SESSION_TOKEN_INVALID"||ui(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=ui(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=Ja(t?.currentEpoch??t?.sessionEpoch);n!==void 0&&(this.epoch=Math.max(1,n));let r=Ja(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:Wp(),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=ui(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:wv(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;Oo(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))),Oo(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=Wp(),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"&&Oo(r.data?.projection)?r.data.projection:r?.data;if(!n.ok||!r?.success||!Oo(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>=yr.SSE_MAX_RECONNECT_ATTEMPTS){this.sseReconnectAttempts=0;return}let t=yr.SSE_BASE_DELAY_MS,n=Math.min(t*Math.pow(2,this.sseReconnectAttempts),yr.SSE_MAX_DELAY_MS),r=Math.random()*yr.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"&&Oo(i.projection)?i.projection:i;Oo(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)}}};D(yr,"SSE_BASE_DELAY_MS",2e3),D(yr,"SSE_MAX_DELAY_MS",6e4),D(yr,"SSE_MAX_JITTER_MS",3e3),D(yr,"SSE_MAX_RECONNECT_ATTEMPTS",10);var Za=yr;function pi(e){return Array.isArray(e)?e.length:0}function zl(e){return String(e||"").trim()||void 0}function zp(e){return String(e||"").trim()||void 0}function jp(e){if(!e)return 0;let t=0;String(e.pendingRun?.id||"").trim()&&(t+=4,e.pendingRun?.resumeRequired&&(t+=1),zl(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,pi(r.history)),t+=Math.min(3,pi(r.plannerHistory)),t+=Math.min(4,pi(r.agentPrevSteps)),pi(r.pendingAskUser?.questions)>0&&(t+=3)),pi(e.taskTabScope?.touchedTabIds)>0&&(t+=1),t}function jl(e){let t=zp(e.localState.pendingRun?.id),n=zp(e.incomingState.pendingRun?.id),r=zl(e.localState.pendingRun?.taskBoundaryId||e.localState.workerState?.taskBoundaryId),o=zl(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:jp(e.localState),incomingScore:jp(e.incomingState)}}function Gl(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=jl({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 vr(e){return String(e||"").trim()||void 0}function Xl(e){return e==="preserve_if_running"}function Gp(e,t){let n=vr(t.boundaryId),r=vr(t.runId),o=vr(t.taskId),s=Array.from(e);if(n){let i=s.find(a=>vr(a.boundaryId)===n);if(i)return i}if(r){let i=s.find(a=>vr(a.pendingRun?.id)===r);if(i)return i}if(o){let i=s.find(a=>vr(a.taskId)===o);if(i)return i}}function Xp(e){let t=vr(e.localPendingRunId);if(t)return t;let n=vr(e.sharedActiveRunId);if(!n)return;let r=vr(e.sharedTaskId),o=vr(e.activeTaskId);if(!(r&&o&&r!==o))return n}var ec=class{constructor(t){D(this,"maxWorkers");D(this,"maxQueue");D(this,"activeWorkers",new Map);D(this,"queue",[]);D(this,"onWorkerFreed");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 xv=10,Sv=8,Rv=12,Kp=40,Yp=60,Av=5*6e4,Cv=5,bs=class e{constructor(t){D(this,"tasks",new Map);D(this,"activeTaskId");D(this,"taskOrder",[]);D(this,"workerPool");D(this,"maxArchivedTasks");D(this,"tabToTask",new Map);this.workerPool=new ec({maxWorkers:t?.maxConcurrentWorkers,maxQueue:t?.maxQueuedTasks,onWorkerFreed:n=>this.onWorkerSlotFreed(n)}),this.maxArchivedTasks=Math.max(1,Number(t?.maxArchivedTasks)||xv)}createTask(t,n){let r=Wl(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:Wl({taskId:t}),sideEffects:[],rejectedReason:`Task ${t} not found`};let{record:o,result:s}=Dp(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(-Sv),timeline:n.timeline.slice(-Rv),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&&ci(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=li(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)ci(t.state)||(t.uiMessages.length>Kp&&(t.uiMessages=t.uiMessages.slice(-Kp)),t.timeline.length>Yp&&(t.timeline=t.timeline.slice(-Yp)))}terminateInactiveWorkers(){let t=Date.now(),n=[];for(let[r,o]of this.tasks){if(o.state!=="paused")continue;t-(o.pausedAt||t)>Av&&this.workerPool.getWorker(r)&&(this.workerPool.release(r),n.push(r))}return n}canCreateNewTask(t){if(t>Cv)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 Mv=[/\/login/i,/\/signin/i,/\/auth/i,/\/oauth/i,/\/password/i,/\/reset/i,/\/verify/i,/\/confirm/i,/\/account/i,/\/security/i,/\/2fa/i,/\/mfa/i],Nv=[/data:/i,/javascript:/i,/vbscript:/i,/blob:/i],Lv=[/token/i,/secret/i,/password/i,/apikey/i,/api_key/i,/access_token/i,/refresh_token/i,/session/i,/cookie/i,/credential/i],Dv=/^(\d{1,3}\.){3}\d{1,3}$/;function Kl(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 Nv)if(d.test(e)){n+=3,r.push("exfiltration_scheme");break}Dv.test(o.hostname)&&(n+=2,r.push("ip_address_host")),o.hostname.split(".").length>4&&(n+=1,r.push("excessive_subdomains"));let i=Mv.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=>Lv.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 Qp(e,t){return Kl(e,t).blocked}var vs,tc=null,mi=!1,Fn=32,ys=4,Ov="#6b6bff";function Pv(){return document.querySelector('link[rel="icon"], link[rel="shortcut icon"]')}function Jp(){let e=document.createElement("link");return e.rel="icon",e.type="image/png",document.head.appendChild(e),e}function Zp(e=Ov){if(mi)return!0;try{let t=Pv();t&&(vs=t.href,tc=t);let n=document.createElement("canvas");n.width=Fn,n.height=Fn;let r=n.getContext("2d");if(!r)return!1;let o=new Image;return o.crossOrigin="anonymous",o.onload=()=>{r.drawImage(o,0,0,Fn,Fn),r.beginPath(),r.arc(Fn-ys-1,Fn-ys-1,ys,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||Jp();i.href=s,mi=!0},o.onerror=()=>{r.fillStyle="#1a1a2e",r.fillRect(0,0,Fn,Fn),r.fillStyle="#fff",r.font="bold 20px sans-serif",r.textAlign="center",r.textBaseline="middle",r.fillText("R",Fn/2,Fn/2),r.beginPath(),r.arc(Fn-ys-1,Fn-ys-1,ys,0,Math.PI*2),r.fillStyle=e,r.fill();let s=n.toDataURL("image/png"),i=t||Jp();i.href=s,mi=!0},vs?o.src=vs:o.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEAAAAALAAAAAABAAEAAAIBAAA=",!0}catch{return!1}}function em(){if(mi){mi=!1;try{tc&&vs&&(tc.href=vs),vs=void 0,tc=null}catch{}}}function tm(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 nm(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 Bv=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 hi(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&&Bv.has(r)?`${n[n.length-3]}.${r}`:r}function Yl(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 rm(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=Yl(o);return s?n?`=${s}`:r?`*.${s}`:s:""}function Uv(e,t){return e?t!=="host_only"||e==="*"||e.startsWith("=")||e.startsWith("*.")?e:`=${e}`:""}function Fv(e,t){let n=rm(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 om(e){let t=Yl(e.host||"");if(!t)return!1;let n=Array.isArray(e.allowedDomains)?e.allowedDomains.map(o=>rm(o)).map(o=>Uv(o,e.domainScopeMode)).filter(Boolean):[];if(n.length>0)return n.some(o=>Fv(t,o));let r=Yl(e.currentHost||"");return r?e.domainScopeMode==="host_only"?t===r:hi(t)===hi(r):!0}function gi(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 bi(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 Hv(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 sm(e){return!Hv(e)}var qv=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 Ql(e){return String(e||"").replace(/\s+/g," ").trim().slice(0,2e3)}function Wv(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=Ql(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 im(e){let t=String(e||"").toLowerCase().split(/[^a-z0-9]+/g).map(n=>n.trim()).filter(n=>n.length>=2&&!qv.has(n));return new Set(t)}function $v(e,t){let n=im(e),r=im(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 am(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=Wv(e.previousTaskMessages),r=Ql(e.previousTaskUserInput),o=Ql(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=$v(m.user,e.currentPrompt),O=s.length>1?g/(s.length-1)*.05:.05;return{...m,overlap:T,score:T+O,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 _u=2,Cc="rover:runtime:",Vv="rover:runtime-id:",Tm="rover:visitor-id:",mc=pt.uiMessages,hc=pt.timelineEvents,Eu=pt.uiMessages,zv=4,wu=pt.plannerHistory,Iu=pt.prevSteps,jv=8e3,Gv=12,Xv=15*6e4,Kv=2,Yv=12e4,Qv=.18,Jv=30,Zv=3600*24*365,km=1,eT=3e3,tT=4500,nT=12e3,rT=30,gc=240,cm=5*6e4,bc=100,yc=12,oT=80,sT=200,iT=700,aT=8,cT=240,lT="rover:handoff-bootstrap:",_m=3e4,uT=12e4,dT=2500,fT=2*6e4,pT=45e3,mT=2e4,Ci=400,hT=15e3,gT=7,bT=80,oo=null,Ke=null,Ue=null,K=null,C=null,sn=null,Fr=null,u=null,qr=null,ze="",R=null,ht=null,ic=null,yn=[],ac=!1,_s=!1,Em=0,nu=0,ru=0,vc=0,wi=!1,Wr=null,yT=1500,vT=5e3,lm=1e4,um=1200,wm=new Set(["error","navigation_guardrail","checkpoint_error","tab_event_conflict_exhausted"]),TT=new Set(["ready","error","auth_required","navigation_guardrail","checkpoint_error","tab_event_conflict_exhausted"]),Mt,_r,lo=!1,Ho=!1,Ii=null,xi=null,Vr=null,ou="",Cs=!1,ks="",at="controller",$n=!1,Ms=!1,er=!0,sr=!1,Qt=!1,cn=!1,kr=!1,Po=[],kT=3,dm=1e4,Me="",gt=null,it=null,an=0,ro=null,cc=!1,su=!1,iu=!1,au=!1,io=[],Es=null,ws=null;function lc(e,t,n,r){e.addEventListener(t,n,r),io.push({target:e,event:t,handler:n,options:r}),io.length>100&&io.length%50===0&&_T()}function _T(){for(let e=io.length-1;e>=0;e--){let t=io[e],n=t.target;if(n&&"isConnected"in n&&n.isConnected===!1){try{t.target.removeEventListener(t.event,t.handler,t.options)}catch{}io.splice(e,1)}}}var Tc=null,_i=0,ao=null,Is,nc="",Vt,Si,Ri=!1,xs=null,Wo,$o,Ns=0,ET=50,wT=100,IT=20,xT=3e5;function Im(e,t){for(;e.size>t;){let n=e.keys().next();if(n.done)break;e.delete(n.value)}}function ST(e,t){let n=e.values();for(;e.size>t;){let r=n.next();if(r.done)break;e.delete(r.value)}}var to=new Map,tr=new Set,ve=null,Jt,Er=0,Hr=1,Bi,kc="",X=null,RT=new Set(["run_started","run_state_transition","run_completed","assistant","status","tool_start","tool_result","runtime_tabs_diagnostics","auth_required","navigation_guardrail","error"]),cu={read:"rover_external_read_context",act:"rover_external_act_context"},uc=[],dc=new Map,Yt=new Map;function We(e,t){zt(e,t);let n=dc.get(e);if(n)for(let r of n)try{r(t)}catch{}}function xm(e,t){dc.has(e)||dc.set(e,new Set);let n=dc.get(e);return n.add(t),()=>{n.delete(t)}}function AT(e){return typeof e=="string"?{name:e}:e}function zr(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function ir(){return zr("task-boundary")}function Gr(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 Sm(e){if(e)return{handoffId:e.handoffId,targetUrl:e.targetUrl,sourceLogicalTabId:e.sourceLogicalTabId,runId:e.runId,ts:e.createdAt}}function Jl(e){return{handoffId:e.handoffId,targetUrl:e.targetUrl,sourceLogicalTabId:e.sourceLogicalTabId,runId:e.runId,createdAt:Number(e.ts)||Date.now(),consumed:!1}}function Vo(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 CT(e){let t=Vo(e);return t||ir()}function vn(){return Ce(Me)||Vo(u)}function qo(e){let t=Np({source:e.source,incomingBoundaryId:e.incomingBoundaryId,currentBoundaryId:vn(),taskEpochAdvanced:e.taskEpochAdvanced,hasPendingRun:!!u?.pendingRun,taskStatus:u?.activeTask?.status,allowBootstrapAdoption:e.allowBootstrapAdoption});return t.accept?(t.adoptedBoundaryId&&(Me=t.adoptedBoundaryId),!0):!1}function xu(e=12e4){let t=Gr(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 Rm(e){return e==="agent_navigation"||e==="cross_host_navigation"||e==="handoff"||e==="worker_interrupted"||e==="page_reload"}function MT(e){if(!u||!Rm(e.resumeReason))return!1;let t=Gr(u.lastNavigationHandoff);if(!t?.targetUrl)return!1;let n=Date.now()-Number(t.createdAt||0);return!Number.isFinite(n)||n<-5e3||n>12e4?!1:Fl(t.targetUrl,window.location.href)}function NT(e){if(!kr||!Rm(e.resumeReason))return!1;let t=Gr(u?.lastNavigationHandoff);if(!t)return!1;let n=Date.now()-Number(t.createdAt||0);return Number.isFinite(n)&&n>=-5e3&&n<=_m}function Ls(e){let t=je(u?.pendingRun)?.taskBoundaryId;if(t){Me=t;return}let n=Nt(u?.workerState)?.taskBoundaryId;if(n){Me=n;return}(!Me||e?.rotateIfMissing)&&(Me=ir())}function LT(e){let t=`${Vv}${e}`;try{let n=window.sessionStorage.getItem(t);if(n&&n.trim())return n.trim();let r=zr("runtime");return window.sessionStorage.setItem(t,r),r}catch{return zr("runtime")}}function Mi(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 rc(e){return String(e||"").trim().replace(/[^a-zA-Z0-9._:-]/g,"").slice(0,180)}function Am(e){try{let t=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`));return t?decodeURIComponent(t[1]||""):void 0}catch{return}}function fm(e,t,n){try{let r=n?`; domain=${n}`:"";return document.cookie=`${e}=${encodeURIComponent(t)}; path=/; max-age=${Zv}; samesite=lax${r}`,Am(e)===t}catch{return!1}}function DT(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 OT(e,t){let n=`rover_vid_${Mi(e)}`;for(let r of DT(window.location.hostname))if(fm(n,t,r))return;fm(n,t)}function oc(e,t){let n=`${Tm}${e}`;try{window.localStorage.setItem(n,t)}catch{}try{window.sessionStorage.setItem(n,t)}catch{}OT(e,t)}function Cm(e,t){u&&(u.visitor=t,Se());try{localStorage.setItem(`rover:visitor:${e}`,JSON.stringify(t))}catch{}}function PT(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 Mm(e){let t=rc(e.visitorId||"");if(t)return t;if(e.checkpointing?.autoVisitorId===!1)return;let n=`${Tm}${e.siteId}`,r=`rover_vid_${Mi(e.siteId)}`,o=rc(Am(r)||"");if(o)return oc(e.siteId,o),o;try{let i=rc(window.localStorage.getItem(n)||"");if(i)return oc(e.siteId,i),i}catch{}try{let i=rc(window.sessionStorage.getItem(n)||"");if(i)return oc(e.siteId,i),i}catch{}let s=`v_${Mi(`${e.siteId}:${zr("visitor")}`)}_${Date.now().toString(36)}`;return oc(e.siteId,s),s}function pm(e,t){return`visitor-${Mi(`${e}:${t}`)}`}function Nm(e){!Ke||!Ue||(Ke.registerTool(e.def,e.handler),Ue.postMessage({type:"register_tool",tool:e.def}))}function Ss(e){return`${Cc}${e}`}function fc(e,t){let n=String(t||"").trim();return n?`${Cc}${e}:${Mi(n)}`:Ss(e)}function lu(e){return`${Cc}${e}:latest_key`}function BT(e){try{let t=String(sessionStorage.getItem(lu(e))||"").trim();return!t||!t.startsWith(Cc)?void 0:t}catch{return}}function uu(e,t){if(e)try{if(!t){sessionStorage.removeItem(lu(e));return}sessionStorage.setItem(lu(e),t)}catch{}}function Su(e){return`${lT}${e}`}function UT(e,t){try{sessionStorage.setItem(Su(e),JSON.stringify(t))}catch{}}function FT(e){try{let t=Su(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>_m?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 Lm(e){if(e)try{sessionStorage.removeItem(Su(e))}catch{}}function mm(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){Is=void 0;return}Is={runId:t,taskId:n,expiresAt:Date.now()+Math.max(1e3,Number(e?.ttlMs)||uT)}}function zo(){Is=void 0}function Ru(e){let t=Is;if(!t)return!1;if(t.expiresAt<=Date.now())return Is=void 0,!1;let n=String(e?.activeTask?.status||"").trim();if(n&&n!=="running")return Is=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 Ui(e){e&&Ru(e)&&(e.uiHidden=!1,e.uiOpen=!0)}function ln(e="session_start",t=Date.now(),n){return{taskId:n||zr("task"),status:"running",startedAt:t,lastUserAt:void 0,lastAssistantAt:void 0,boundaryReason:e,endedAt:void 0}}function du(e,t){return{version:_u,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:ln(),taskTabScope:void 0,lastRoutingDecision:void 0,updatedAt:Date.now(),tasks:{},activeTaskId:void 0,taskOrder:[]}}function Zt(e,t=jv){return e.length<=t?e:`${e.slice(0,t)}\u2026`}function pc(e){if(e!=null){if(typeof e=="string")return Zt(e,1200);try{return Zt(JSON.stringify(e),1200)}catch{try{return Zt(String(e),1200)}catch{return}}}}function Mc(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))):nT,i=Number(t?.maxBatchSize),a=Number.isFinite(i)?Math.min(80,Math.max(1,Math.floor(i))):rT;return{enabled:t?.enabled!==!1,sampleRate:r,flushIntervalMs:s,maxBatchSize:a,includePayloads:t?.includePayloads===!0}}function Nc(e){return e==="same_tab"||e==="open_new_tab"?e:"same_tab"}function Ni(e){return e==="host_only"?"host_only":"registrable_domain"}function Fi(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 Au(e){return e==="auto"||e==="confirm"||e==="never"?e:"confirm"}function Dm(e){return"host_session"}function Om(e){return"task_touched_only"}function Cu(e){return"crash_only"}function _c(e){let t=Number(e);return Number.isFinite(t)?Math.max(6e4,Math.min(30*6e4,Math.floor(t))):Xv}function Mu(e){return"read_only"}function Pm(e){return"heuristic_same_window"}function Nu(e){let t=Number(e);return Number.isFinite(t)?Math.max(1e4,Math.min(10*6e4,Math.floor(t))):Yv}function Lu(e){let t=Number(e);return Number.isFinite(t)?Math.max(.05,Math.min(.9,t)):Qv}function Bm(e){return"empty"}function Um(e){return"deterministic_cues"}function Fm(e){let t=Number(e);return Number.isFinite(t)?Math.max(1,Math.min(4,Math.floor(t))):Kv}function Hm(e){return"auto"}function qm(e){return!1}function Wm(e){return"pre_tool_block"}function HT(){return nm({pendingRunText:u?.pendingRun?.text,activeRunText:R?.getState()?.activeRun?.text,rootWorkerInput:u?.workerState?.rootUserInput,lastUserInputText:Vt,fallback:"navigation request"})}function $m(e){return e!==!1}function Ct(e,t,n){let r=Number(e);if(Number.isFinite(r))return Math.max(t,Math.min(n,Math.floor(r)))}function Du(e){return"on_demand"}function Ou(e){let t=Number(e);return Number.isFinite(t)?Math.max(5e3,Math.min(12e4,Math.floor(t))):Nf.idleCloseMs}function Ds(e,t){let n=Number(e);return Number.isFinite(n)?Math.max(32768,Math.min(2097152,Math.floor(n))):t}function Pu(e){return!(!e||!Mc(e).enabled||!ar(e))}function hm(e){if(e!=null){if(typeof e=="string")return Zt(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]=Zt(s,180):(typeof s=="number"||typeof s=="boolean")&&(n[o]=s))}return n}}}function qT(e,t){if(!t)return hm(e);let n=Fu(e);if(n!=null)return typeof n=="string"?Zt(n,1e3):typeof n=="number"||typeof n=="boolean"?n:Array.isArray(n)?{type:"array",length:n.length}:typeof n=="object"?n:hm(e)}function Bu(){ic&&(clearInterval(ic),ic=null),Wr&&(clearTimeout(Wr),Wr=null),wi=!1}function WT(e){return`${Qa(e.apiBase)}/telemetry/ingest`}function fu(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 ar(e){if(Jt&&Er>Date.now()+2e3)return Jt;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 Jt=s,Er=Number(i),s}}}catch{}let t=e||C,n=String(t?.sessionToken||t?.authToken||"").trim();return n.startsWith("rvrsess_")?n:""}function Ec(e,t){let n=String(e||"").trim();Jt=n||void 0,Er=Number(t)>0?Number(t):0;try{let r=C?.siteId||"";n&&Er>Date.now()?sessionStorage.setItem(`rover:sess:${r}`,JSON.stringify({t:n,e:Er})):sessionStorage.removeItem(`rover:sess:${r}`)}catch{}}function $T(e){!e||!C||(C.externalNavigationPolicy=e.externalNavigationPolicy||C.externalNavigationPolicy,e.domainScopeMode&&(C.domainScopeMode=Ni(e.domainScopeMode)),(e.crossHostPolicy==="open_new_tab"||e.crossHostPolicy==="same_tab")&&(C.navigation={...C.navigation||{},crossHostPolicy:Nc(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 pu(e){if(!u||!e)return;Hr=Math.max(1,Number(e.epoch||Hr));let t=typeof e.activeRunId=="string"?e.activeRunId:"",n=String(e.runStatus||"").trim().toLowerCase();Bp({serverRunId:t,runStatus:n,ignoredRunIds:tr})&&uo(t,"projection_ignored_active_run",{attemptImmediately:!0}),co(t||void 0);let r=u.pendingRun,o=r?.id||"";!t&&o?(n==="completed"||n==="cancelled"||n==="failed"||n==="ended"||u.activeTask?.status!=="running")&&(mo(o),_t(void 0),R?.setActiveRun(void 0)):t&&!xr()&&Hi(at)!=="observer"&&Pp({serverRunId:t,localPendingRunId:o,ignoredRunIds:tr})?_t({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&&tr.has(t)&&o===t&&(R?.releaseWorkflowLock(t),_t(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!==kc)){let c=e.snapshot?.runtimeState,l=e.snapshot?.sharedState;if(c&&typeof c=="object"){Cs=!0;try{ph({version:km,siteId:C?.siteId||u.sessionId,visitorId:Mt||"server_projection",sessionId:u.sessionId,updatedAt:Number(e.snapshot?.updatedAt)||Date.now(),runtimeState:c,sharedState:l})}finally{Cs=!1}i&&(kc=i)}}let a=String(u?.pendingRun?.id||"").trim();a&&tr.has(a)&&(R?.releaseWorkflowLock(a),_t(void 0),R?.setActiveRun(void 0)),wc()}async function Uu(e){if(!(!u||!e.apiBase&&!e.publicKey&&!e.authToken&&!e.sessionToken||!fu(e)&&!Jt)){ve?ve.setApiBase(e.apiBase):ve=new Za({apiBase:e.apiBase,siteId:e.siteId,getSessionId:()=>u?.sessionId,getBootstrapToken:()=>fu(C),getHost:()=>window.location.hostname,getPageUrl:()=>window.location.href,getTaskBoundaryId:()=>Me,shouldKeepTransportActive:()=>!Os(),onSession:n=>{if(Ec(n.sessionToken,n.sessionTokenExpiresAt),er&&R?.broadcastSessionToken(n.sessionToken||"",n.sessionTokenExpiresAt||0),Hr=Math.max(1,Number(n.epoch||Hr)),u&&n.sessionId&&u.sessionId!==n.sessionId&&(u.sessionId=n.sessionId,kc="",Se()),$T(n.policy),n.siteConfig&&typeof n.siteConfig=="object"&&C){let r={shortcuts:po(n.siteConfig.shortcuts),greeting:Us(n.siteConfig.greeting),limits:Hc(n.siteConfig.limits),pageConfig:$r(n.siteConfig.pageConfig),version:n.siteConfig.version!=null?String(n.siteConfig.version):void 0};Vr=r,mh(C.siteId,r),Sc(C)}n.projection&&pu(n.projection),Ue&&Ue.postMessage({type:"update_config",config:{...Xo(),pageConfig:Di(C),publicKey:void 0,sessionToken:Jt,authToken:ar(C),sessionId:u?.sessionId,activeRunId:u?.pendingRun?.id,sessionEpoch:ve?.getEpoch?.()??Hr,sessionSeq:ve?.getLastSeq?.()??0}}),Ke&&Ke.setNavigationPolicy({allowedDomains:C?.allowedDomains,domainScopeMode:C?.domainScopeMode,externalNavigationPolicy:C?.externalNavigationPolicy,crossHostPolicy:C?.navigation?.crossHostPolicy}),C&&(ju(C),Lc(C)),Ms=!0,wr(),wc()},onProjection:n=>{pu(n),er&&R?.broadcastProjection(n),wc(),Ue&&Ue.postMessage({type:"update_config",config:{...Xo(),pageConfig:Di(C),sessionToken:Jt,authToken:ar(C),sessionId:u?.sessionId,activeRunId:u?.pendingRun?.id,sessionEpoch:ve?.getEpoch?.()??Hr,sessionSeq:ve?.getLastSeq?.()??0}})},onError:n=>{zt("error",{message:n?.message||"server runtime sync failed",scope:"server_runtime"})}});try{await ve.start()}catch(n){C?.apiMode!==!1&&We("error",{message:n?.message||"server runtime sync failed",scope:"server_runtime_start"})}}}async function Fo(e=!1){if(ac||_s)return;if(!C||!Pu(C)){yn=[];return}if(!e&&Os()||!yn.length)return;let t=Mc(C),n=ar(C);if(!n)return;let r=yn.splice(0,t.maxBatchSize);if(r.length){ac=!0,vc=Date.now();try{let o=await fetch(WT(C),{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify({sessionToken:n,sessionId:u?.sessionId,runId:u?.pendingRun?.id,siteId:C.siteId,runtimeId:ze,visitorId:Mt,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?_s=!0:yn=[...r,...yn].slice(-gc);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")&&(_s=!0);return}}catch{yn=[...r,...yn].slice(-gc)}finally{ac=!1}}}function Lc(e){if(Bu(),_s=!1,!Pu(e)){yn=[];return}let t=Mc(e);ic=setInterval(()=>{Fo(!1)},t.flushIntervalMs)}function zt(e,t){if(!Pu(C)||_s||Os()&&!TT.has(e))return;let n=Mc(C);if(n.sampleRate<1&&Math.random()>n.sampleRate)return;let r=Date.now();if(e==="status"){if(r-nu<yT)return;nu=r}else if(e==="checkpoint_state"){if(r-ru<vT)return;ru=r}let o={name:e,ts:r,seq:++Em,payload:qT(t,n.includePayloads)};if(yn.push(o),yn.length>gc&&(yn=yn.slice(-gc)),wm.has(e)){let i=Date.now()-vc;if(i>=um){Fo(!1);return}Wr||(Wr=setTimeout(()=>{Wr=null,Fo(!1)},um-i));return}if(yn.length>=n.maxBatchSize){let i=Date.now()-vc;i>=lm?Fo(!1):wi||(wi=!0,setTimeout(()=>{wi=!1,Fo(!1)},lm-i))}}function VT(e){if(e==="analyze"||e==="route"||e==="execute"||e==="verify"||e==="complete")return e}function zT(e){return e?e==="analyze"?"Analyze":e==="route"?"Route":e==="execute"?"Execute":e==="verify"?"Verify":e==="complete"?"Complete":"Status":"Status"}function jT(e,t,n){return[String(t||""),String(e||"").trim().toLowerCase(),String(n||"").trim().toLowerCase()].join("|")}function GT(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 XT(){return u?.pendingRun?.id}function co(e){Bi=String(e||"").trim()||void 0}function gm(){let e=u?.pendingRun?.id;if(!e)return;if(!ve)return e;let t=ve.getActiveRunId(),n=String(t||Bi||"").trim();if(n)return n===e?e:void 0}function mo(e){e&&(tr.add(e),ST(tr,wT))}function mu(e){e&&tr.delete(e)}function hu(e){let t=Math.max(0,Math.floor(e)),n=Ci*2**t;return Math.max(120,Math.min(hT,n))}function KT(){if(!Yt.size)return null;let e=Number.POSITIVE_INFINITY;for(let t of Yt.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 gu(e=Ci){ro&&(clearTimeout(ro),ro=null);let t=Math.max(80,Math.floor(e));ro=setTimeout(()=>{ro=null,wc()},t)}function uo(e,t="local_run_abandoned",n){let r=String(e||"").trim();if(!r)return;let o=Date.now(),s=Yt.get(r),i=n?.attemptImmediately===!0?o:s?.nextAttemptAt&&s.nextAttemptAt>o?s.nextAttemptAt:o+hu(s?.attempts||0);for(Yt.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});Yt.size>bT;){let a=Array.from(Yt.values()).sort((c,l)=>Number(c.createdAt)-Number(l.createdAt))[0];if(!a?.runId)break;Yt.delete(a.runId)}gu(n?.attemptImmediately?50:Ci)}async function wc(){if(cc||!Yt.size)return;if(!(!!ve&&!!Ms&&!!ar(C))){gu(Ci);return}cc=!0;try{let t=Date.now(),n=Array.from(Yt.values()).sort((r,o)=>Number(r.nextAttemptAt)-Number(o.nextAttemptAt));for(let r of n){if(r.nextAttemptAt>t)break;if(!Yt.has(r.runId))continue;if($u(r.runId)){Yt.set(r.runId,{...r,nextAttemptAt:Date.now()+hu(Math.max(1,r.attempts))});continue}let o=ve;if(!o){Yt.set(r.runId,{...r,nextAttemptAt:Date.now()+Ci});continue}try{if(await o.controlRun({action:"cancel",runId:r.runId,reason:r.reason})){Yt.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>=gT){Yt.delete(r.runId),We("error",{message:`Failed to cancel stale run ${r.runId} after retries.`,scope:"run_cancel_repair",code:"RUN_CANCEL_REPAIR_FAILED",runId:r.runId});continue}Yt.set(r.runId,{...r,attempts:i,lastError:String(s?.message||"cancel_control_failed"),nextAttemptAt:Date.now()+hu(i)})}}}finally{cc=!1;let t=KT();t!=null&&gu(t)}}function no(){return u?.activeTask?.status==="running"}function Vm(){ht&&(no()||bu()?ht.enterActiveMode():ht.enterIdleMode())}function YT(){return typeof document<"u"&&document.visibilityState==="hidden"}function bu(){return!!u?.pendingRun?.id}function QT(){let e=R?.getState()?.activeRun;if(!e)return!1;if(e.runtimeId)return e.runtimeId===ze;let t=String(u?.pendingRun?.id||"").trim();return!!(t&&e.runId===t)}function JT(){let e=R?.getWorkflowLockInfo();return!!(e?.locked&&e.holderRuntimeId===ze)}function zm(){return R?JT()||QT()?!0:bu()&&!xr():no()||bu()}function ZT(){return Du(C?.transport?.activation)!=="on_demand"?!0:!!(u?.uiOpen||zm()||jm()||Gm())}function Os(){if(!er)return!0;if(ZT())_i=0;else{let t=Ou(C?.transport?.idleCloseMs);return _i<=0&&(_i=Date.now()+t),!(Date.now()<_i)}return YT()?!zm()&&!u?.uiOpen:!1}function cr(e=!1){if(typeof window>"u")return;let t=Os();if(!(!e&&Tc===t)){Tc=t;try{let n=window.rtrvrAISetObserverPaused;typeof n=="function"&&n(t)}catch{}}}function jm(){let e=R?.getState()?.activeRun;return!!(e&&e.runtimeId&&e.runtimeId!==ze)}function Gm(){let e=R;if(!e?.isWorkflowLocked())return!1;let t=e.getWorkflowLockInfo();if(!t.locked||!t.holderRuntimeId||t.holderRuntimeId===ze)return!1;let n=e.listTabs({scope:"all"}).find(r=>r.runtimeId===t.holderRuntimeId);return n?Number(n.updatedAt)>Date.now()-5e3:!1}function xr(){return Gm()}function Hi(e){return xr()?"observer":e==="observer"?"controller":e}function Xm(){return Mu(C?.task?.observerInput)==="read_only"?!xr():!jm()}function Km(e){if(e==="observer")return xr()?"Observing active run in another tab...":"Send to take control and run here."}function ek(){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=nr(Nt(e?.workerContext),vn());return i&&(u.workerState=i,Ls(),R.setWorkerContext(Wi(u.workerState)),$n&&Ue&&(Wn(),Ue.postMessage({type:"hydrate_state",state:u.workerState}),We("context_restored",{source:"controller_handoff",ts:Date.now()}))),e?.task&&(u.activeTask=Zm(e.task,u.activeTask||ln("handoff"))),u.uiHidden=!1,u.uiOpen=!0,(r||n)&&(_t(je({id:n,text:r||u.pendingRun?.text||Vt||"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||Me,resumeRequired:!0,resumeReason:"handoff"})),R.setActiveRun({runId:n,text:r||u.pendingRun?.text||"Continue task"})),Se(),wr({overridePolicyAction:"auto_resume"}),!0}function tk(e){let t=typeof e?.type=="string"?e.type:"";if(!RT.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(ve?.getActiveRunId()||Bi||"").trim()||void 0;return Fp({type:t,messageRunId:n,messageTaskBoundaryId:r,currentTaskBoundaryId:vn(),pendingRunId:XT(),sharedActiveRunId:R?.getState()?.activeRun?.runId,authoritativeActiveRunId:o,taskStatus:u?.activeTask?.status,ignoredRunIds:tr})}function jr(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 nk(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=jr(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(`
|
|
1955
|
-
`):String(t.rawText||"").trim()}function
|
|
2094
|
+
`;let Jn=document.createElement("div");Jn.className="shortcutsEmptyState";let vr=document.createElement("div");vr.className="shortcutsHeading",vr.textContent=o?`Hey ${o}! What can I help with?`:`What can ${t} help you with?`;let eo=document.createElement("div");eo.className="shortcutsGrid",Jn.appendChild(vr),Jn.appendChild(eo),qe.appendChild(Jn);let Pr=document.createElement("div");Pr.className="shortcutsBar";let $n=document.createElement("div");$n.className="questionPrompt";let Br=document.createElement("div");Br.className="questionPromptTitle",Br.textContent="Need a bit more info";let bn=document.createElement("form");bn.className="questionPromptForm";let Rn=document.createElement("div");Rn.className="questionPromptList",bn.appendChild(Rn);let De=document.createElement("div");De.className="questionPromptActions";let Zn=document.createElement("button");Zn.type="button",Zn.className="questionPromptCancel",Zn.textContent="Cancel",De.appendChild(Zn);let An=document.createElement("button");An.type="submit",An.className="questionPromptSubmit",An.textContent="Continue",De.appendChild(An),bn.appendChild(De),$n.appendChild(Br),$n.appendChild(bn);let St=document.createElement("form");St.className="composer";let er=document.createElement("div");er.className="composerRow";let pt=document.createElement("textarea");pt.rows=1,pt.placeholder=`Ask ${t} to act on this website...`,er.appendChild(pt);let Lo=document.createElement("div");Lo.className="composerActions";let ln=document.createElement("button");ln.type="button",ln.className="voiceBtn",ln.setAttribute("aria-label","Start voice dictation"),ln.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>',Lo.appendChild(ln);let Ur=document.createElement("button");Ur.type="submit",Ur.className="sendBtn",Ur.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>',Lo.appendChild(Ur),er.appendChild(Lo),St.appendChild(er);let tr=document.createElement("div");tr.className="composerStatus",tr.setAttribute("aria-live","polite"),St.appendChild(tr);let Fr=document.createElement("div");Fr.className="panelGrabber",Fr.setAttribute("aria-hidden","true");let Cn=document.createElement("span");Cn.className="panelGrabberHandle",Fr.appendChild(Cn);let Mn=document.createElement("div");Mn.className="resizeHandle",Mn.setAttribute("aria-hidden","true");let Jt=document.createElement("div");Jt.className="roverConversationPill",Jt.setAttribute("role","button"),Jt.setAttribute("tabindex","0");let to=document.createElement("span");to.className="roverConversationPillLabel",to.textContent="Current task";let Vn=document.createElement("span");Vn.className="roverConversationPillArrow",Vn.textContent="\u25BE",Jt.appendChild(to),Jt.appendChild(Vn),Jt.addEventListener("click",()=>{w.classList.toggle("open")});let no=document.createElement("div");no.className="roverTabBar";let Nn=document.createElement("div");Nn.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(Fr),C.appendChild(J),C.appendChild(Jt),C.appendChild(Nn),C.appendChild(Dr),C.appendChild(Sn),C.appendChild(Pr),C.appendChild($n),C.appendChild(St),C.appendChild(Mn),C.appendChild(w),u.appendChild(v),u.appendChild(R),u.appendChild(C),c.appendChild(p),c.appendChild(u);let x=pt,W=Sn.querySelector(".taskSuggestionText"),F=Sn.querySelector(".taskSuggestionBtn.primary"),$=Sn.querySelector(".taskSuggestionBtn.secondary"),z=new Set,G=new Map,re=[],de="controller",Ie=!1,le=!1,fe=!1,ge=e.shortcuts?.slice(0,Cm)||[],Oe=null,at=!1,ve=null,Ae=!1,Ce=!1,We=0,Qe=!1,Ge=null,se=null,ne=!1,ue=null,Fe=null,mt={},rt=Lm(e.voice),Pe="idle",Vt="",Do="",ro="",oo="",so=!1,m=null,S=null,L=null,B=null,V=null,X=0,te=!1,pe=!1,we=0,ye=null,Ke=!1,Je=!1,Rt="",kt=s?b_(i):{},ze=Pm(),zt=ze.storageKey,Be=s&&Bm(kt.desktop,ze)||Os(ze),Xe=s?Um(kt[ze.storageKey]?.preset)??1:1,jt=null,ht=null;function Pl(T){s&&(Be=qi(T,ze),kt={...kt,desktop:Be},Om(i,kt))}function ob(T){return s?Um(kt[T]?.preset)??1:1}function tf(T,P){s&&(kt={...kt,[T]:{preset:P}},Om(i,kt))}function nf(T){return qi({width:Rc,height:T.height-Xo},T)}function rf(T,P){return Math.abs(T.width-P.width)<=6&&Math.abs(T.height-P.height)<=6}function sb(T){return T===0?"compact":T===2?"large":"medium"}function of(){if(u.dataset.layout=ze.layout,u.dataset.orientation=ze.orientation,C.dataset.layout=ze.layout,C.dataset.orientation=ze.orientation,C.dataset.resizable=s?"true":"false",!s){ot.classList.add("hidden");return}if(ot.classList.remove("hidden"),ze.layout==="desktop"){let T=nf(ze),P=rf(Be,T);ot.setAttribute("aria-label",P?"Reset Rover panel size":"Expand Rover panel"),ot.title=P?"Reset panel size":"Expand panel"}else{let T=sb(Xe);ot.setAttribute("aria-label",`Change Rover panel size. Current ${T}.`),ot.title=`Panel size: ${T}`}}function io(){let T=Pm(),P=T.storageKey!==zt;if(ze=T,zt=T.storageKey,T.layout==="desktop")s?P?Be=Bm(kt.desktop,T)||Os(T):Be=qi(Be,T):Be=Os(T),C.style.left="",C.style.right="20px",C.style.bottom="90px",C.style.width=`${Be.width}px`,C.style.height=`${Be.height}px`,C.style.minWidth=`${Ps}px`,C.style.minHeight=`${Bs}px`,C.style.maxWidth=`${Math.max(Ps,Math.min(Rc,T.width-Xo))}px`,C.style.maxHeight=`${Math.max(Bs,T.height-Xo)}px`,jt=null;else{let Q=Fm(T),Z=(T.layout==="tablet"?qm:Hm)+T.keyboardInset,_e=ob(T.storageKey);Xe=s?P?_e:mo(Xe,0,2):1;let he=mo(Math.round(jt??Q[Xe]),Math.min(...Q),Math.max(...Q));if(T.layout==="tablet"){let Ye=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(Ye)}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(${Z}px + env(safe-area-inset-bottom))`,C.style.height=`${he}px`,C.style.minHeight="0px",C.style.maxWidth=`${Math.max(320,T.width-16)}px`,C.style.maxHeight=`${Math.max(...Q)}px`}of()}function ib(){Be=Os(ze),Pl(Be),io()}function ab(){if(s){if(ze.layout==="desktop"){let T=nf(ze);Be=rf(Be,T)?Os(ze):T,Pl(Be),io();return}Xe=(Xe+1)%3,jt=null,tf(ze.storageKey,Xe),io()}}function ao(){ht?.kind==="sheet"&&(jt=null),io()}function ps(T,P){e.onVoiceTelemetry?.(T,P)}function sf(T){x.value=T,x.style.height="auto",x.style.height=`${Math.min(96,Math.max(44,x.scrollHeight))}px`}function Ca(T="",P="info"){let Q=Et(T);tr.textContent=Q,tr.classList.toggle("visible",!!Q),tr.classList.toggle("error",P==="error"&&!!Q)}function co(){S&&(clearTimeout(S),S=null)}function Oo(){L&&(clearTimeout(L),L=null)}function Ma(){B&&(clearTimeout(B),B=null)}function vi(){V&&(clearTimeout(V),V=null)}function yi(){Do="",ro="",oo=""}function Ti(){co(),Oo(),Ma(),vi(),X=0,te=!1,pe=!1,we=0,ye=null,Ke=!1,Je=!1}function af(){return h_(Do,ro,oo)}function cb(){sf(af())}function Bl(){return $m(rt?.autoStopMs)}function Na(){return X?Math.max(0,Date.now()-X):0}function _i(T){return{hadSpeech:te,restartCount:we,durationMs:Na(),autoStopMs:Bl(),...T||{}}}function ms(T){Ke||(ps("voice_error",_i({code:T.code,recoverable:T.recoverable})),Ke=!0),T.code==="permission_denied"&&ps("voice_permission_denied",_i({code:T.code}))}function cf(){if(rt?.enabled!==!0){Rt="";return}let T=nr.isSupported(),P=`${T?"browser":"unsupported"}|${rt.language||""}|${Bl()}`;Rt!==P&&(Rt=P,ps("voice_provider_selected",{provider:T?"browser":"unsupported",supported:T}))}function Zt(){let T=rt?.enabled===!0,P=nr.isSupported();if(ln.classList.toggle("visible",T&&P),ln.classList.toggle("active",Pe==="listening"),ln.disabled=x.disabled,ln.setAttribute("aria-pressed",Pe==="listening"?"true":"false"),ln.setAttribute("aria-label",Pe==="listening"?"Stop voice dictation":"Start voice dictation"),Pe==="error"&&Vt){Ca(Vt,"error");return}if(Pe==="listening"){Ca(te?"Listening. Pause briefly when you're done.":"Listening. Start speaking when you're ready.");return}if(T&&!P){Ca("Voice dictation is not available in this browser.");return}Ca("")}function lo(T,P){if(Pe!=="listening"){P?.resetDraftBase&&(yi(),Ti());return}co(),Oo(),Ma(),vi(),m=T,nr.stop(),P?.resetDraftBase&&yi()}function lf(T){if(Pe!=="listening"||te||m||we>=n_)return!1;let P=Na();return P>=Mm||P>=Nm?!1:T?T.code==="no_speech"||T.code==="aborted"||T.code==="unknown":!0}function Ul(){if(Pe!=="listening"||te||!X)return;Oo();let T=Mm-Na();if(T<=0){let P=ye&&ye.code==="no_speech"?ye:Hi();m="no_speech",Pe="error",Vt=P.message,ms(P),Zt(),nr.stop();return}L=setTimeout(()=>{if(Pe!=="listening"||te)return;let P=Hi();ye=P,m="no_speech",Pe="error",Vt=P.message,ms(P),Zt(),nr.stop()},T)}function Fl(){if(Pe!=="listening"||!X)return;Ma();let T=Nm-Na();if(T<=0){if(te)lo("silence");else{let P=Hi();ye=P,m="no_speech",Pe="error",Vt=P.message,ms(P),Zt(),nr.stop()}return}B=setTimeout(()=>{if(Pe!=="listening")return;if(te){lo("silence");return}let P=Hi();ye=P,m="no_speech",Pe="error",Vt=P.message,ms(P),Zt(),nr.stop()},T)}function uf(){Pe!=="listening"||!te||pe||(co(),S=setTimeout(()=>{Pe==="listening"&&lo("silence")},Bl()))}function lb(){lf(ye)&&(vi(),we+=1,ye=null,Ul(),Fl(),V=setTimeout(()=>{V=null,!(Pe!=="listening"||te||m)&&nr.start({language:rt?.language})},r_))}function ub(T){ye=T,!(m&&(T.code==="aborted"||T.code==="no_speech"||T.code==="unknown"))&&(T.code==="aborted"||T.code==="no_speech"||T.code==="unknown"||(co(),Oo(),vi(),Pe="error",Vt=T.message,m="error",Zt(),ms(T)))}function df(){if(x.disabled)return;let T=Et(x.value);T&&(vs({visible:!1}),e.onSend(T),sf(""),Vt="",Pe="idle",yi(),Ti(),so=!1,m=null,Zt())}function db(){if(!x.disabled&&rt?.enabled){if(!nr.isSupported()){Pe="error",Vt="Voice dictation is not available in this browser.",Zt();return}cf(),Vt="",Pe="listening",so=!1,m=null,Do=x.value,ro="",oo="",Ti(),X=Date.now(),Je=!0,Ul(),Fl(),Zt(),nr.start({language:rt.language})}}function ff(T){let P=Lm(T),Q=JSON.stringify(rt||null),j=JSON.stringify(P||null);if(Q===j){Zt();return}rt=P,Vt="",so=!1,Pe==="listening"?lo("config"):(yi(),Ti(),Pe="idle"),cf(),Zt()}let nr=Am({onStart:()=>{Pe="listening",Vt="",ye=null,Ul(),Fl(),Je&&(ps("voice_started",_i({provider:"browser"})),Je=!1),Zt()},onSpeechStart:()=>{Pe==="listening"&&(te=!0,pe=!0,ye=null,Oo(),co(),Zt())},onSpeechEnd:()=>{Pe==="listening"&&(pe=!1,te&&uf(),Zt())},onResult:({finalTranscript:T,interimTranscript:P})=>{(T||P)&&(te=!0,pe=P.length>0,ye=null,Oo(),co()),ro=T,oo=P,cb(),te&&!pe&&uf(),Zt()},onEnd:({requested:T})=>{if(vi(),!T&&lf(ye)){lb();return}let P=Et(af()),Q=Et(Do).length>0,j=ye,Z=m||(T?"manual":"silence");if(co(),Oo(),Ma(),!te&&!T&&Pe!=="error"){let he=j&&j.code==="no_speech"?j:Hi();Pe="error",Vt=he.message,m="no_speech",Z="no_speech",ms(he)}else!T&&!m&&te?Z="silence":m&&(Z=m);Pe!=="error"&&(Pe="idle",Vt=""),P&&ps("voice_transcript_ready",_i({chars:P.length,hadExistingDraft:Q})),ps("voice_stopped",_i({reason:Z,stopReason:Z,requested:T,errorCode:j?.code}));let _e=so;so=!1,m=null,yi(),Ti(),Zt(),_e&&df()},onError:ub});function fb(){Ae=!Ae,$t.classList.toggle("visible",Ae)}function hs(){Ae=!1,$t.classList.remove("visible")}let pf="";function mf(T){let P=T.filter(j=>j&&j.enabled!==!1).slice(0,Cm),Q=P.map(j=>`${j.id||j.label}|${j.label}|${j.description||""}|${j.icon||""}`).join(";;");if(Q!==pf){pf=Q,ge=P,eo.innerHTML="";for(let j of ge){let Z=document.createElement("button");if(Z.type="button",Z.className="shortcutCard",j.icon){let he=document.createElement("span");he.className="shortcutCardIcon",he.textContent=j.icon,Z.appendChild(he)}let _e=document.createElement("span");if(_e.className="shortcutCardLabel",_e.textContent=j.label,Z.appendChild(_e),j.description){let he=document.createElement("span");he.className="shortcutCardDesc",he.textContent=j.description,Z.appendChild(he)}Z.addEventListener("click",()=>e.onShortcutClick?.(j)),eo.appendChild(Z)}Pr.innerHTML="";for(let j of ge){let Z=document.createElement("button");if(Z.type="button",Z.className="shortcutChip",j.icon){let he=document.createElement("span");he.className="shortcutChipIcon",he.textContent=j.icon,Z.appendChild(he)}let _e=document.createTextNode(j.label);Z.appendChild(_e),Z.addEventListener("click",()=>e.onShortcutClick?.(j)),Pr.appendChild(Z)}gs()}}function gs(){let T=ge.length>0,P=!!ue?.questions?.length,Q=T&&!fe&&!le,j=T&&fe&&!le&&!P;Jn.classList.toggle("visible",Q),Pr.classList.toggle("visible",j)}function pb(T){let P=Et(T);if(P){if(U.textContent=P,R.classList.contains("visible")){R.classList.add("textVisible");return}Qe||C.classList.contains("open")||(Qe=!0,R.classList.remove("dismissing","textVisible"),R.classList.add("visible"),se&&(clearTimeout(se),se=null),se=setTimeout(()=>{se=null,R.classList.add("textVisible")},JT))}}function La(){if(se&&(clearTimeout(se),se=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),Ge&&(clearTimeout(Ge),Ge=null)}function mb(T){o=T||void 0,o?vr.textContent=`Hey ${o}! What can I help with?`:vr.textContent=`What can ${t} help you with?`}function hb(T){if(!T||!Array.isArray(T.questions))return[];let P=[],Q=new Set;for(let j=0;j<T.questions.length;j+=1){let Z=T.questions[j];if(!Z||typeof Z!="object")continue;let _e=String(Z.key||Z.id||"").trim()||`clarification_${j+1}`,he=String(Z.query||Z.question||"").trim();if(!he)continue;let Ye=typeof Z.required=="boolean",wt=typeof Z.optional=="boolean",ct=Ye?!!Z.required:wt?!Z.optional:!0;Q.has(_e)||(Q.add(_e),P.push({key:_e,query:he,...typeof Z.id=="string"&&Z.id.trim()?{id:Z.id.trim()}:{},...typeof Z.question=="string"&&Z.question.trim()?{question:Z.question.trim()}:{},...Array.isArray(Z.choices)?{choices:Z.choices}:{},required:ct}))}return P.slice(0,6)}function gb(T){return T.map(P=>{let Q=Array.isArray(P.choices)?P.choices.map(Z=>Et(String(Z||""))).filter(Boolean).join("|"):"",j=P.required===!1?"optional":"required";return`${P.key}::${Et(P.query)}::${Q}::${j}`}).join("||")}function bb(T){let P=Et(T.query||T.question||"");if(!P)return`Answer for ${T.key}`;let Q=P.replace(/\s+/g," ").replace(/[?.!:\s]+$/,"").slice(0,72);return Q?`Answer: ${Q}`:`Answer for ${T.key}`}function Hl(T){for(let P of Array.from(bn.querySelectorAll(".questionPromptInput"))){let Q=P;if(Q.dataset.key===T)return Q}return null}function hf(T){let P=hb(T),Q=document.activeElement,j=Q instanceof HTMLInputElement&&Q.classList.contains("questionPromptInput")&&$n.contains(Q)?Q:null,Z=j?.dataset.key,_e=j?.selectionStart??null,he=j?.selectionEnd??null;if(!P.length){ue=null,Fe=null,mt={},Rn.innerHTML="",$n.classList.remove("visible"),gs();return}let Ye=gb(P),wt=Ye!==Fe||!ue;if(ue={questions:P},wt){let ct=mt;mt={},Rn.innerHTML="";for(let gt of ue.questions){let qt=document.createElement("label");qt.className="questionPromptItem";let vn=document.createElement("span");vn.className="questionPromptLabel",vn.textContent=gt.required===!1?`${gt.query} (optional)`:gt.query,qt.appendChild(vn);let yn=document.createElement("input");yn.type="text",yn.className="questionPromptInput",yn.dataset.key=gt.key,yn.placeholder=bb(gt),yn.required=gt.required!==!1;let or=String(ct[gt.key]||"");mt[gt.key]=or,yn.value=or,yn.addEventListener("input",()=>{mt[gt.key]=yn.value,yn.classList.remove("invalid")}),qt.appendChild(yn),Rn.appendChild(qt)}Fe=Ye}if($n.classList.add("visible"),gf(),gs(),Z){let ct=Hl(Z);if(ct){if(ct.focus(),_e!==null||he!==null){let gt=_e??ct.value.length,qt=he??gt;try{ct.setSelectionRange(gt,qt)}catch{}}return}}if(wt){let gt=ue.questions.find(yn=>!Et(mt[yn.key]||""))?.key||ue.questions[0]?.key;if(!gt)return;let qt=Hl(gt),vn=!Q||Q===document.body||!C.contains(Q);qt&&vn&&qt.focus()}}function Da(){le&&ne?(it.classList.add("visible"),qe.appendChild(it),ql()):it.classList.remove("visible")}function rr(T,P=0){u.dataset.mood=T,ve!=null&&(window.clearTimeout(ve),ve=null),P>0&&T!=="idle"&&(ve=window.setTimeout(()=>{u.dataset.mood="idle",Da(),ve=null},P))}function vb(){return qe.scrollHeight-qe.scrollTop-qe.clientHeight<60}function ql(){Ce?cn.classList.add("visible"):(requestAnimationFrame(()=>{qe.scrollTo({top:qe.scrollHeight,behavior:"smooth"}),We=Date.now()}),cn.classList.remove("visible"))}qe.addEventListener("scroll",()=>{Date.now()-We<200||(vb()?(Ce=!1,cn.classList.remove("visible")):(Ce=!0,cn.classList.add("visible")))},{passive:!0}),cn.addEventListener("click",()=>{Ce=!1,We=Date.now(),qe.scrollTo({top:qe.scrollHeight,behavior:"smooth"}),cn.classList.remove("visible")});function gf(){let T=de==="observer"&&!Ie;x.disabled=T,ln.disabled=T,Zn.disabled=T,An.disabled=T;for(let P of Array.from(bn.querySelectorAll(".questionPromptInput")))P.disabled=T;T&&Pe==="listening"&&lo("disabled"),Zt()}function Wl(T){if(at=T,u.dataset.showDetails=T?"true":"false",gn.textContent=at?"Collapse":`Show all (${re.length})`,at)for(let P of re){P.style.display="";let Q=P.dataset.status,j=Q==="success"||Q==="error"||Q==="info";P.classList.toggle("compact",!1)}else for(let P=0;P<re.length;P++){let Q=re[P],j=P>=re.length-2;Q.style.display=j?"":"none";let Z=Q.dataset.status,_e=Z==="success"||Z==="error"||Z==="info";Q.classList.toggle("compact",_e)}}function Oa(){io(),u.style.display="",C.classList.remove("closing"),C.classList.add("open"),La(),rr("idle"),e.onOpen?.(),x.disabled||x.focus()}function bs(){if(hs(),!C.classList.contains("open")){e.onClose?.();return}C.classList.remove("open"),C.classList.add("closing"),rr("idle");let T=()=>{C.classList.remove("closing"),C.removeEventListener("animationend",T)};C.addEventListener("animationend",T),e.onClose?.()}function yb(){io(),u.style.display=""}function Tb(){bs(),u.style.display="none"}function _b(T,P,Q){let j=Et(P),Z=Q?.blocks;if(!j&&(!Z||Z.length===0))return;let _e=document.createElement("div");_e.className=`entry message ${T}`;let he=document.createElement("div");he.className="bubble",T==="assistant"?he.appendChild(A_(j,Z)):he.textContent=j;let Ye=document.createElement("div");Ye.className="stamp",Ye.textContent=Ru(Date.now()),_e.appendChild(he),_e.appendChild(Ye),qe.appendChild(_e),T==="assistant"&&le&&ne&&(ne=!1,Da()),fe=!0,gs(),T==="user"?rr("typing",1200):T==="assistant"?rr("success",1400):rr("running",900),ql()}function kb(){for(let T of Array.from(qe.querySelectorAll(".entry.message")))T.remove();fe=!1,hf(void 0),gs()}function bf(T){let P=G.get(T);if(P)return P;let Q=document.createElement("div");Q.className="entry trace pending";let j=document.createElement("div");j.className="traceTop";let Z=document.createElement("div");Z.className="traceMeta";let _e=document.createElement("span");_e.className="traceStage",_e.textContent="step";let he=document.createElement("div");he.className="traceTitle";let Ye=document.createElement("div");Ye.className="traceTs",Z.appendChild(_e),Z.appendChild(he),j.appendChild(Z),j.appendChild(Ye);let wt=document.createElement("div");return wt.className="traceDetail",Q.appendChild(j),Q.appendChild(wt),G.set(T,Q),re.push(Q),qe.appendChild(Q),Q}function wb(T,P){let Q=Number(P.ts)||Date.now(),j=f_(P),Z=T.querySelector(".traceTop"),he=Z.querySelector(".traceMeta").querySelector(".traceStage"),Ye=Z.querySelector(".traceTitle"),wt=Z.querySelector(".traceTs"),ct=T.querySelector(".traceDetail"),gt=Vm(P.title||"");Ye.textContent=gt.plainTitle||"Step",he.textContent=gt.stage||P.kind||"step",he.style.display=gt.stage||P.kind==="status"||P.kind==="plan"||P.kind==="thought"?"":"none",wt.textContent=Ru(Q),ct.innerHTML="";let qt=Array.isArray(P.detailBlocks)?P.detailBlocks:[],vn=Et(P.detail||"");if(qt.length>0){for(let or of qt){let _f=jm(or);_f&&ct.appendChild(_f)}if(vn){let or=document.createElement("div");or.className="rvLine",or.appendChild(ho(vn)),ct.insertBefore(or,ct.firstChild)}ct.style.display=""}else if(vn){let or=P.kind==="thought"?XT:P.kind==="tool_start"||P.kind==="tool_result"?YT:Us;vn.length>or?ct.appendChild(Cc(vn,or)):ct.appendChild(ho(vn)),ct.style.display=""}else ct.style.display="none";T.classList.remove("pending","success","error","info"),T.classList.add(j),T.dataset.status=j,T.dataset.kind=P.kind,T.dataset.visibility=k_(P);let yn=j==="success"||j==="error"||j==="info";T.classList.toggle("compact",!at&&yn),j==="error"?rr("error",2200):j==="success"?rr("success",1200):j==="pending"&&rr("running",800)}function Eb(T){let P=Et(T.title||"");if(!P||P.toLowerCase()==="assistant update")return;let Q=T.id||Wm("timeline");if(T.id&&z.has(Q))return;z.add(Q);let j=p_(T),Z=j==="run"||j.startsWith("tool:")||T.kind==="tool_result"||T.kind==="status"&&G.has(j),_e=bf(Z?j:`${j}:${Q}`);wb(_e,{...T,title:P}),T.kind==="thought"&&le&&ne&&(ne=!1,Da()),P.toLowerCase()==="run completed"&&Wl(!1);let he=re.length;if(Wn.textContent=`${he} step${he!==1?"s":""}`,hn.classList.toggle("visible",he>0),!at){gn.textContent=`Show all (${he})`;for(let Ye=0;Ye<re.length;Ye++){let wt=re[Ye],ct=Ye>=re.length-2;wt.style.display=ct?"":"none"}}ql()}function Ib(){z.clear(),G.clear(),re.length=0;for(let T of Array.from(qe.querySelectorAll(".entry.trace")))T.remove();hn.classList.remove("visible"),Wn.textContent="0 steps"}function vs(T){let P=!!T?.visible;Sn.classList.toggle("visible",P),W.textContent=T?.text||"Looks like a new request. Start a new task?",F.textContent=T?.primaryLabel||"Start new",$.textContent=T?.secondaryLabel||"Continue"}function xb(T){let P=String(T||"ready");Dt.textContent=P;let Q=P.toLowerCase();Q.includes("error")||Q.includes("failed")?rr("error",1800):Q==="ready"||Q.includes("complete")?rr("idle"):rr("running",1e3)}function Sb(T){le=T,T?ne=!0:ne=!1,Da(),an.classList.toggle("visible",T),Qt.style.display=T?"none":"",tt.style.display=T?"none":"",ft.classList.toggle("active",T),gs()}function vf(T,P){de=T,Ie=T==="observer"?P?.canComposeInObserver===!0:!0,gf(),Le.classList.remove("controller","observer"),Le.classList.add(T),T==="controller"?(Le.textContent="active",xn.style.display="none",x.placeholder=`Ask ${t} to act on this website...`):(Le.textContent="observer",P?.canTakeControl!==!1?xn.style.display="":xn.style.display="none",P?.note?x.placeholder=P.note:Ie?x.placeholder="Send to take control and run here.":P?.activeLogicalTabId&&P?.localLogicalTabId&&P.activeLogicalTabId!==P.localLogicalTabId?x.placeholder=`Observing: ${t} is acting in tab #${P.activeLogicalTabId}`:x.placeholder="Observer mode. Take control to run actions here.")}function Rb(){ve!=null&&(window.clearTimeout(ve),ve=null),co(),nr.dispose(),se&&(window.clearTimeout(se),se=null),Ge&&(window.clearTimeout(Ge),Ge=null),Pa(),window.removeEventListener("resize",ao),window.removeEventListener("orientationchange",ao),window.visualViewport?.removeEventListener("resize",ao),window.visualViewport?.removeEventListener("scroll",ao),document.removeEventListener("keydown",yf),d.remove(),a.remove()}v.addEventListener("click",()=>{C.classList.contains("open")?bs():Oa()}),D.addEventListener("click",T=>{T.stopPropagation(),La()}),R.addEventListener("click",()=>{La(),Oa()}),Yt.addEventListener("click",()=>bs()),ot.addEventListener("click",()=>{ab()}),tt.addEventListener("click",T=>{T.stopPropagation(),fb()}),u.addEventListener("click",T=>{Ae&&!$t.contains(T.target)&&T.target!==tt&&hs()}),Lr.addEventListener("click",()=>{hs(),le&&e.onCancelRun?(Oe="new_task",vs({visible:!0,text:"A task is in progress. Cancel it and start new?",primaryLabel:"Cancel & start new",secondaryLabel:"Keep running"})):e.onNewTask?.()}),br.addEventListener("click",()=>{hs(),le&&e.onCancelRun?(Oe="end_task",vs({visible:!0,text:"A task is in progress. Cancel and end it?",primaryLabel:"Cancel & end",secondaryLabel:"Keep running"})):e.onEndTask?.()}),xn.addEventListener("click",()=>{hs(),e.onRequestControl?.()}),an.addEventListener("click",()=>{e.onCancelRun?.()}),gn.addEventListener("click",()=>{Wl(!at)}),F.addEventListener("click",()=>{if(Oe){let T=Oe;Oe=null,vs({visible:!1}),e.onCancelRun?.(),T==="new_task"?e.onNewTask?.():T==="end_task"&&e.onEndTask?.();return}e.onTaskSuggestionPrimary?.()}),$.addEventListener("click",()=>{if(Oe){Oe=null,vs({visible:!1});return}e.onTaskSuggestionSecondary?.()}),x.addEventListener("input",()=>{Pe==="listening"&&lo("typed"),x.style.height="auto",x.style.height=`${Math.min(96,Math.max(44,x.scrollHeight))}px`}),ln.addEventListener("click",()=>{if(!x.disabled){if(Pe==="listening"){lo("manual");return}db()}}),bn.addEventListener("submit",T=>{if(T.preventDefault(),x.disabled||!ue?.questions?.length)return;let P={},Q=[],j=null;for(let he of ue.questions){let Ye=Hl(he.key);if(!Ye)continue;let wt=Et(Ye.value),ct=he.required!==!1;if(!wt&&ct){Ye.classList.add("invalid"),j||(j=Ye);continue}if(!wt){Ye.classList.remove("invalid"),delete mt[he.key],Q.push(`${he.key}: (no answer provided)`);continue}Ye.classList.remove("invalid"),mt[he.key]=wt,P[he.key]=wt,Q.push(`${he.key}: ${wt}`)}if(j){j.focus();return}let Z=ue.questions.map(he=>he.key),_e=Q.length?Q.join(`
|
|
2095
|
+
`):Z.map(he=>`${he}: (no answer provided)`).join(`
|
|
2096
|
+
`);e.onSend(_e,{askUserAnswers:{answersByKey:P,rawText:_e,keys:Z}})}),Zn.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(),St.requestSubmit())}),St.addEventListener("submit",T=>{if(T.preventDefault(),!x.disabled){if(Pe==="listening"){so=!0,lo("submit");return}df()}}),c.addEventListener("keydown",T=>{let P=T;P.key==="Escape"&&C.classList.contains("open")&&(P.stopPropagation(),bs())});let yf=T=>{T.code==="Period"&&T.shiftKey&&(T.metaKey||T.ctrlKey)&&(T.preventDefault(),T.stopPropagation(),C.classList.contains("open")?bs():Oa())};document.addEventListener("keydown",yf);let $l=T=>{if(!ht||!s)return;if(ht.kind==="desktop"){let Q=ht.startX-T.clientX,j=T.clientY-ht.startY,Z=mo(Math.round(ht.startW+Q),Ps,ht.maxW),_e=mo(Math.round(ht.startH+j),Bs,ht.maxH);Be={width:Z,height:_e},C.style.width=`${Z}px`,C.style.height=`${_e}px`,of();return}let P=mo(Math.round(ht.startHeight+(ht.startY-T.clientY)),Math.min(...ht.presets),Math.max(...ht.presets));jt=P,C.style.height=`${P}px`};function Pa(){if(ht?.kind==="desktop")Pl(Be);else if(ht?.kind==="sheet"){let T=jt??ht.startHeight;Xe=v_(T,ht.presets),tf(ze.storageKey,Xe),jt=null}ht=null,window.removeEventListener("pointermove",$l),window.removeEventListener("pointerup",Pa),io()}if(Mn.addEventListener("pointerdown",T=>{!s||ze.layout!=="desktop"||(T.preventDefault(),ht={kind:"desktop",startX:T.clientX,startY:T.clientY,startW:C.getBoundingClientRect().width,startH:C.getBoundingClientRect().height,maxW:Math.max(Ps,Math.min(Rc,ze.width-Xo)),maxH:Math.max(Bs,ze.height-Xo)},window.addEventListener("pointermove",$l),window.addEventListener("pointerup",Pa))}),Mn.addEventListener("dblclick",T=>{!s||ze.layout!=="desktop"||(T.preventDefault(),ib())}),Fr.addEventListener("pointerdown",T=>{if(!s||ze.layout==="desktop")return;T.preventDefault();let P=Fm(ze);jt=P[Xe],ht={kind:"sheet",startY:T.clientY,startHeight:jt,presets:P},window.addEventListener("pointermove",$l),window.addEventListener("pointerup",Pa)}),window.addEventListener("resize",ao),window.addEventListener("orientationchange",ao),window.visualViewport?.addEventListener("resize",ao),window.visualViewport?.addEventListener("scroll",ao),g){let T=()=>{g.style.display="none",_.style.display="grid"};g.addEventListener("error",T,{once:!0}),_.style.display="none"}if(oe){let T=()=>{oe.style.display="none",me.style.display="grid"};oe.addEventListener("error",T,{once:!0}),me.style.display="none"}io(),vf("controller"),ff(rt),Wl(!1),ge.length>0&&mf(ge);let jE="",GE=new Map;function Ab(T){}let Vl=!1;function Cb(){Vl=!0,w.classList.add("open")}function Ba(){Vl=!1,w.classList.remove("open")}Qt.addEventListener("click",T=>{T.stopPropagation(),Vl?Ba():Cb()}),y.addEventListener("click",()=>Ba()),k.addEventListener("click",()=>{Ba(),e.onNewTask?.()});let Tf="";function Mb(T){let P=T.map(j=>`${j.id}|${j.summary}|${j.status}|${j.updatedAt}|${j.isActive}`).join(";;");if(P===Tf)return;Tf=P;let Q=T.find(j=>j.isActive);if(Q){let j=Q.summary.length>40?Q.summary.slice(0,40)+"...":Q.summary;to.textContent=j||"Current task"}else to.textContent="Current task";Jt.style.display=T.length>1?"flex":"none",b.innerHTML="";for(let j of T){let Z=document.createElement("div");Z.className=`conversationItem ${j.status}${j.isActive?" active":""}`,Z.dataset.id=j.id;let _e=document.createElement("span");_e.className="conversationDot";let he=document.createElement("div");he.className="conversationContent";let Ye=document.createElement("div");Ye.className="conversationSummary",Ye.textContent=j.summary.length>60?j.summary.slice(0,60)+"...":j.summary;let wt=document.createElement("div");wt.className="conversationMeta";let ct=j.status==="running"?"Running":j.status==="paused"?"Paused":j.status==="completed"?"Done":j.status;wt.textContent=`${ct} \xB7 ${Ru(j.updatedAt)}`,he.appendChild(Ye),he.appendChild(wt);let gt=document.createElement("div");gt.className="conversationActions";let qt=document.createElement("button");qt.type="button",qt.className="conversationDeleteBtn",qt.textContent="\xD7",qt.addEventListener("click",vn=>{vn.stopPropagation(),e.onDeleteConversation?.(j.id)}),gt.appendChild(qt),Z.appendChild(_e),Z.appendChild(he),Z.appendChild(gt),Z.addEventListener("click",()=>{Ba(),e.onSwitchConversation?.(j.id)}),b.appendChild(Z)}}function Nb(T){b.querySelectorAll(".conversationItem").forEach(Q=>{Q.dataset.id===T?Q.classList.add("active"):Q.classList.remove("active")})}function Lb(T){f=T.taskId;let P=T.rootUserInput.length>50?T.rootUserInput.slice(0,50)+"...":T.rootUserInput;Nn.innerHTML="";let Q=document.createElement("span");Q.className="pausedTaskText",Q.textContent=`Paused: "${P}"`;let j=document.createElement("div");j.className="pausedTaskActions";let Z=document.createElement("button");Z.type="button",Z.className="pausedTaskResumeBtn",Z.textContent="Resume",Z.addEventListener("click",()=>e.onResumeTask?.(f));let _e=document.createElement("button");_e.type="button",_e.className="pausedTaskCancelBtn",_e.textContent="Cancel",_e.addEventListener("click",()=>e.onCancelPausedTask?.(f)),j.appendChild(Z),j.appendChild(_e),Nn.appendChild(Q),Nn.appendChild(j),Nn.classList.add("visible")}function Db(){f="",Nn.classList.remove("visible")}function Ob(){return qe.scrollTop}function Pb(T){requestAnimationFrame(()=>{qe.scrollTop=T})}return{addMessage:_b,setQuestionPrompt:hf,clearMessages:kb,addTimelineEvent:Eb,clearTimeline:Ib,setTaskSuggestion:vs,setStatus:xb,setRunning:Sb,setExecutionMode:vf,setShortcuts:mf,showGreeting:pb,dismissGreeting:La,setVisitorName:mb,setVoiceConfig:ff,open:Oa,close:bs,show:yb,hide:Tb,destroy:Rb,setTabs:Ab,setConversations:Mb,setActiveConversationId:Nb,getScrollPosition:Ob,setScrollPosition:Pb,showPausedTaskBanner:Lb,hidePausedTaskBanner:Db}}var Ym=3,C_="rover:shared:",M_="rover:channel:",Mu=2*6e4,Km=9e4,Nu=45e3,Lu=2e4,N_=45e3;function ae(){return Date.now()}function kr(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function Nc(e){let t=String(e||"").trim();if(!t)return"";try{return new URL(t,window.location.href).toString()}catch{return t}}function Qm(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)||ae(),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 Jm(e){return e==="completed"?"completed":e==="cancelled"||e==="ended"?"cancelled":e==="failed"?"failed":"running"}function Dc(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 $i(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)||ae(),runId:o,taskId:s,stage:typeof e?.stage=="string"&&e.stage.trim()?e.stage.trim():void 0}}function Zm(e){return Array.isArray(e)?e.slice(-vt.uiMessages).map(t=>({id:String(t?.id||kr("msg")),role:t?.role==="user"||t?.role==="assistant"||t?.role==="system"?t.role:"system",text:String(t?.text||""),blocks:qs(t?.blocks),ts:Number(t?.ts)||ae(),sourceRuntimeId:typeof t?.sourceRuntimeId=="string"?t.sourceRuntimeId:void 0})).filter(t=>!!t.text||!!t.blocks?.length):[]}function eh(e){return Array.isArray(e)?e.slice(-vt.timelineEvents).map(t=>({id:String(t?.id||kr("timeline")),kind:String(t?.kind||"status"),title:String(t?.title||"Step"),detail:typeof t?.detail=="string"?t.detail:void 0,detailBlocks:qs(t?.detailBlocks),status:t?.status==="pending"||t?.status==="success"||t?.status==="error"||t?.status==="info"?t.status:void 0,ts:Number(t?.ts)||ae(),sourceRuntimeId:typeof t?.sourceRuntimeId=="string"?t.sourceRuntimeId:void 0})).filter(t=>!!t.title):[]}var L_=new Set(["idle","running","awaiting_user","paused","blocked","completed","failed","cancelled"]);function D_(e){if(!e||typeof e!="object")return;let t=typeof e.taskId=="string"?e.taskId.trim():"";if(!t)return;let n=L_.has(e.state)?e.state:"running";return{taskId:t,state:n,startedAt:Number(e.startedAt)||ae(),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)||ae(),updatedAt:Number(e.activeRun.updatedAt)||ae()}:void 0,workerContext:Oc(e.workerContext),uiMessages:Array.isArray(e.uiMessages)?e.uiMessages.slice(-vt.uiMessages).map(r=>({id:String(r?.id||kr("msg")),role:r?.role==="user"||r?.role==="assistant"||r?.role==="system"?r.role:"system",text:String(r?.text||""),blocks:qs(r?.blocks),ts:Number(r?.ts)||ae(),sourceRuntimeId:typeof r?.sourceRuntimeId=="string"?r.sourceRuntimeId:void 0})).filter(r=>!!r.text||!!r.blocks?.length):[],timeline:Array.isArray(e.timeline)?e.timeline.slice(-vt.timelineEvents).map(r=>({id:String(r?.id||kr("timeline")),kind:String(r?.kind||"status"),title:String(r?.title||"Step"),detail:typeof r?.detail=="string"?r.detail:void 0,detailBlocks:qs(r?.detailBlocks),status:r?.status==="pending"||r?.status==="success"||r?.status==="error"||r?.status==="info"?r.status:void 0,ts:Number(r?.ts)||ae(),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:Dc(e.seedChatLog),transientStatus:$i(e.transientStatus,{runId:e.activeRun?.runId,taskId:t})}}function O_(e){if(!e||typeof e!="object")return;let t={},n=0;for(let r of Object.keys(e)){if(n>=20)break;let o=D_(e[r]);o&&(t[o.taskId]=o,n++)}return Object.keys(t).length>0?t:void 0}function th(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 qs(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=th(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 Xm(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=th(o);s!==void 0&&r.push(s)}return r}function Oc(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(-vt.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=Xm(e.plannerHistory,vt.plannerHistory),a=Xm(e.agentPrevSteps,vt.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:Dc(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)||ae(),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)||ae()}}function Du(e,t){return{version:Ym,siteId:e,sessionId:t,seq:1,updatedAt:ae(),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 Fs(e,t,n){let r=Du(t,n);if(!e||typeof e!="object")return r;let o={...r,version:Ym,siteId:t,sessionId:n,seq:Math.max(1,Number(e.seq)||1),updatedAt:Number(e.updatedAt)||ae(),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)||ae(),updatedAt:Number(a?.updatedAt)||ae(),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:Zm(e.uiMessages),timeline:eh(e.timeline),taskEpoch:Math.max(1,Number(e.taskEpoch)||1),task:Qm(e.task),workerContext:Oc(e.workerContext),uiStatus:typeof e.uiStatus=="string"?e.uiStatus:void 0,transientStatus:$i(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)||ae(),updatedAt:Number(e.activeRun.updatedAt)||ae()}: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)||ae()}: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)||ae(),expiresAt:Number(e.workflowLock.expiresAt)||0}:void 0,tasks:e.tasks&&typeof e.tasks=="object"?O_(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`),_n(o),o}function P_(e){let t=String(e.task?.taskId||e.activeTaskId||"").trim();if(!t)return;let n=Number(e.task?.startedAt)||ae();e.tasks||(e.tasks={});let r=e.tasks[t];if(r)return e.activeTaskId=t,r;let o={taskId:t,state:Jm(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:Dc(e.workerContext?.seedChatLog),transientStatus:$i(e.transientStatus??e.uiStatus,{runId:e.activeRun?.runId,taskId:t})};return e.tasks[t]=o,e.activeTaskId=t,o}function _n(e){let t=P_(e);if(!t)return;t.state=Jm(e.task?.status),t.startedAt=Number(e.task?.startedAt)||t.startedAt||ae(),t.endedAt=Number(e.task?.endedAt)||void 0,t.activeRun=e.activeRun,t.workerContext=Oc(e.workerContext),t.uiMessages=Zm(e.uiMessages),t.timeline=eh(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=Dc(e.workerContext?.seedChatLog),t.transientStatus=$i(e.transientStatus??e.uiStatus,{runId:e.activeRun?.runId,taskId:t.taskId})}var Hs=class Hs{constructor(t){O(this,"siteId");O(this,"sessionId");O(this,"runtimeId");O(this,"leaseMs");O(this,"workflowLockMs");O(this,"heartbeatMs");O(this,"maxMessages");O(this,"maxTimeline");O(this,"onRoleChange");O(this,"onStateChange");O(this,"onSwitchRequested");O(this,"onTaskTabsExhausted");O(this,"key");O(this,"channelName");O(this,"state");O(this,"taskTabMapping",new Map);O(this,"channel",null);O(this,"heartbeatTimer",null);O(this,"storageHandler",null);O(this,"localLogicalTabId");O(this,"closing",!1);O(this,"started",!1);O(this,"heartbeatCount",0);O(this,"lastNotifiedStateHash","");O(this,"pendingRpcRequests",new Map);O(this,"rpcRequestHandler");O(this,"lastNotifiedRole");O(this,"roleChangeTimer",null);O(this,"probeTimers",[]);O(this,"onSessionTokenReceived");O(this,"onProjectionReceived");O(this,"lastFullHeartbeatAt",0);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)||vt.uiMessages),this.maxTimeline=Math.max(20,Number(t.maxTimeline)||vt.timelineEvents),this.onRoleChange=t.onRoleChange,this.onStateChange=t.onStateChange,this.onSwitchRequested=t.onSwitchRequested,this.onTaskTabsExhausted=t.onTaskTabsExhausted,this.key=`${C_}${this.siteId}:${this.sessionId}`,this.channelName=`${M_}${this.siteId}:${this.sessionId}`,this.state=this.loadState(),this.normalizeDraftTabs(this.state)}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)<=N_:!1}isTabVisibleInScope(t,n,r){return t.runtimeId?this.isRuntimeTabFresh(t,n):t.external?n-this.tabFreshnessTs(t)<=Mu:t.detachedReason==="opened_pending_attach"?n-this.tabFreshnessTs(t)<=Lu:r==="context"?!1:t.detachedReason==="navigation_handoff"?n-this.tabFreshnessTs(t)<=Nu:n-this.tabFreshnessTs(t)<=Km}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=ae(),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=ae(),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)<=Mu;let p=a-this.tabFreshnessTs(d);return d.detachedReason==="navigation_handoff"?p<=Nu:d.detachedReason==="opened_pending_attach"?p<=Lu:p<=Km}),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)<=Mu:!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=ae(),s=Nc(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}}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=Fs(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=Fs(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<=ae()?!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=Qm(t)||r.task,_n(r))})}hydrateExternalState(t){let n=Fs(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=ae();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)||ae(),r={taskId:String(t.taskId||kr("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),_n(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:ae()},r.activeRun=void 0,r.transientStatus=void 0,r.uiStatus=void 0,_n(r),n=r.task)}),n}markTaskActivity(t,n=ae()){t!=="system"&&this.mutate("local",r=>{if(!r.task){r.task={taskId:kr("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),_n(r))})}setWorkerContext(t){this.mutate("local",n=>{if(!t){n.workerContext=void 0,_n(n);return}n.workerContext=Oc(t),_n(n)})}setStatus(t){this.mutate("local",n=>{let r=$i(t,{runId:n.activeRun?.runId,taskId:n.task?.taskId});n.uiStatus=r?.text,n.transientStatus=r,_n(n)})}appendMessage(t){let n={id:t.id||kr("msg"),role:t.role,text:String(t.text||""),blocks:qs(t.blocks),ts:Number(t.ts)||ae(),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:kr("task"),status:"running",startedAt:n.ts,boundaryReason:"implicit"}),n.role==="user"?r.task.lastUserAt=n.ts:n.role==="assistant"&&(r.task.lastAssistantAt=n.ts),_n(r)}),n}appendTimeline(t){let n={id:t.id||kr("timeline"),kind:String(t.kind||"status"),title:String(t.title||"Step"),detail:t.detail?String(t.detail):void 0,detailBlocks:qs(t.detailBlocks),status:t.status,ts:Number(t.ts)||ae(),sourceRuntimeId:this.runtimeId};return this.mutate("local",r=>{r.timeline.push(n),r.timeline.length>this.maxTimeline&&(r.timeline=r.timeline.slice(-this.maxTimeline)),_n(r)}),n}clearTimeline(){this.mutate("local",t=>{t.timeline=[],_n(t)})}setActiveRun(t){this.mutate("local",n=>{if(!t){n.activeRun=void 0,n.transientStatus=void 0,n.uiStatus=void 0,_n(n);return}if(n.task&&n.task.status!=="running"){n.activeRun=void 0,_n(n);return}n.activeRun={runId:t.runId,text:t.text,runtimeId:this.runtimeId,startedAt:n.activeRun?.runId===t.runId?n.activeRun.startedAt:ae(),updatedAt:ae()},_n(n)})}requestControl(){return this.claimLease(!0)}registerCurrentTab(t,n,r){let o=Nc(t),s=typeof r?.handoffId=="string"?r.handoffId.trim():"",i=Number(r?.sourceLogicalTabId),a;return this.mutate("local",c=>{let d=ae(),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(U=>{if(U.runtimeId||String(U.handoffId||"").trim()!==s||Number.isFinite(i)&&i>0&&U.logicalTabId!==i)return!1;let D=d-Number(U.handoffCreatedAt||U.updatedAt||U.openedAt||0);return D>=0&&D<=3e4})),R||(R=c.tabs.find(U=>!U.runtimeId&&!U.external&&U.url===o&&d-U.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 U=c.nextLogicalTabId++;c.tabs.push({logicalTabId:U,runtimeId:this.runtimeId,url:o,title:n,openedAt:d,updatedAt:d,external:!1,detachedAt:void 0,detachedReason:void 0}),a=U}}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 U=d-this.tabFreshnessTs(R);return!(!String(R.url||"").trim()&&U>Lu||o&&R.url===o&&U<=Nu)}));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=Nc(t.url),r=0;return this.mutate("local",o=>{let s=ae(),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:ae()+this.leaseMs,updatedAt:ae()},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:ae()+this.leaseMs,updatedAt:ae()},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=kr("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:ae()})})}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=ae(),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>ae()-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>ae()){let i=o.tabs.find(c=>c.runtimeId===s.runtimeId);if(i&&i.updatedAt>ae()-2*this.heartbeatMs){r=!1;return}}o.workflowLock={runtimeId:this.runtimeId,runId:t,lockedAt:ae(),expiresAt:ae()+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>ae()}getWorkflowLockInfo(){let t=this.state.workflowLock;return!t||t.expiresAt<=ae()?{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=ae())})}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)||ae();this.mutate("local",c=>{let d=ae(),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()}heartbeat(){if(this.closing)return;this.heartbeatCount++;let t=Nc(window.location.href),n=document.title||void 0,r=ae(),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%Hs.LS_HEARTBEAT_DIVISOR!==0;this.mutate("local",d=>{let p=d.tabs.find(J=>J.runtimeId===this.runtimeId);if(p)p.url=t||p.url,p.title=n||p.title,p.updatedAt=ae(),p.detachedAt=void 0,p.detachedReason=void 0;else{let J=ae(),ce=d.nextLogicalTabId++;d.tabs.push({logicalTabId:ce,runtimeId:this.runtimeId,url:t,title:n,openedAt:J,updatedAt:J,external:!1,detachedAt:void 0,detachedReason:void 0})}let u=d.lease,v=!u||u.expiresAt<=ae(),h=u&&u.holderRuntimeId!==this.runtimeId&&u.expiresAt>ae()?u.holderRuntimeId:void 0,g=h?d.tabs.find(J=>J.runtimeId===h):void 0,_=!!(g&&g.updatedAt>ae()-2*this.heartbeatMs),A=d.workflowLock?.runtimeId,R=A?d.tabs.find(J=>J.runtimeId===A):void 0,U=!!(R&&R.runtimeId&&R.runtimeId!==this.runtimeId&&R.updatedAt>ae()-2*this.heartbeatMs);if(d.workflowLock&&d.workflowLock.runtimeId!==this.runtimeId&&(d.workflowLock.expiresAt<=ae()||!U)&&(d.workflowLock=void 0),d.workflowLock&&d.workflowLock.runtimeId!==this.runtimeId&&U&&R&&(d.activeLogicalTabId=R.logicalTabId),d.activeRun?.runtimeId&&d.activeRun.runtimeId!==this.runtimeId){let J=d.tabs.find(oe=>oe.runtimeId===d.activeRun?.runtimeId);J&&J.updatedAt>ae()-2*this.heartbeatMs||(d.activeRun=void 0)}let D=!!(d.activeRun?.runtimeId&&d.activeRun.runtimeId!==this.runtimeId),H=!!(d.workflowLock&&d.workflowLock.runtimeId!==this.runtimeId&&d.workflowLock.expiresAt>ae()),C=!!(h&&!_&&!D&&!H);(v||u?.holderRuntimeId===this.runtimeId||C)&&(d.lease={holderRuntimeId:this.runtimeId,expiresAt:ae()+this.leaseMs,updatedAt:ae()},!d.activeLogicalTabId&&this.localLogicalTabId&&(d.activeLogicalTabId=this.localLogicalTabId)),d.workflowLock?.runtimeId===this.runtimeId&&(d.workflowLock.expiresAt=ae()+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<=ae();(t||s||o?.holderRuntimeId===this.runtimeId)&&(r.lease={holderRuntimeId:this.runtimeId,expiresAt:ae()+this.leaseMs,updatedAt:ae()},!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}))},Hs.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=Fs(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=Fs(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=ae(),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 Du(this.siteId,this.sessionId);let n=JSON.parse(t);return Fs(n,this.siteId,this.sessionId)}catch(t){return console.warn("[rover] Failed to load shared state from localStorage:",t),Du(this.siteId,this.sessionId)}}persistState(){try{window.localStorage.setItem(this.key,JSON.stringify(this.state))}catch{}}};O(Hs,"LS_HEARTBEAT_DIVISOR",5),O(Hs,"ROLE_CHANGE_DEBOUNCE_MS",200);var Lc=Hs;var nh="rover",Pc="rover_shortcut";function rh(e,t){return String(e||"").trim().replace(/^[?#&]+/,"").slice(0,64)||t}function sh(e){return e instanceof URL?new URL(e.toString()):new URL(String(e||""),"https://rover.local")}function oh(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 Ws(e){let t=rh(e?.promptParam,nh),n=rh(e?.shortcutParam,Pc);return n===t&&(n=n===Pc?`${Pc}_id`:Pc,n===t&&(t=nh)),{enabled:e?.enabled===!0,promptParam:t,shortcutParam:n,consume:e?.consume!==!1}}function ih(e,t){let n=Ws(t),r=sh(e),o=oh(r.searchParams,n.shortcutParam);if(o)return{kind:"shortcut",paramName:n.shortcutParam,value:o,signature:`shortcut:${n.shortcutParam}:${o}`};let s=oh(r.searchParams,n.promptParam);return s?{kind:"prompt",paramName:n.promptParam,value:s,signature:`prompt:${n.promptParam}:${s}`}:null}function ah(e,t){let n=Ws(t),r=sh(e);r.searchParams.delete(n.promptParam),r.searchParams.delete(n.shortcutParam);let o=r.searchParams.toString();return`${r.pathname}${o?`?${o}`:""}${r.hash}`}var dh="https://extensionrouter.rtrvr.ai",ch="rvrsess_";function $s(e,t){let n=Number(e);return Number.isFinite(n)?n:t}function B_(e,t=8e3){let n=String(e??"");return n.length<=t?n:`${n.slice(0,t)}\u2026`}function U_(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 Ou(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=>Ou(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)}:${Ou(r)}`).join(",")}}`:JSON.stringify(String(e))}function F_(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 lh(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:U_(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 F_(Ou(v))}function H_(e){let t=dh,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 uh(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 q_(e){let t=H_(e),n=String(e||"").trim().replace(/\/+$/,"");return n.endsWith("/v2/rover")||n.endsWith("/extensionRouter/v2/rover")?uh([n.replace("/extensionRouter/v2/rover","/v2/rover"),`${t}/v2/rover`]):uh([`${t}/v2/rover`])}function Yo(e,t){let n=new Error(e);return n.details=t,n}function W_(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}var Bc=class{constructor(t){O(this,"endpoint");O(this,"endpointCandidates");O(this,"endpointIndex",0);O(this,"getToken");O(this,"siteId");O(this,"visitorId");O(this,"ttlHours");O(this,"flushIntervalMs");O(this,"pullIntervalMs");O(this,"minFlushIntervalMs");O(this,"maxSnapshotBytes");O(this,"shouldSync");O(this,"shouldWrite");O(this,"buildCheckpoint");O(this,"onCheckpoint");O(this,"onStateChange");O(this,"onError");O(this,"idlePullIntervalMs");O(this,"started",!1);O(this,"idleMode",!1);O(this,"dirty",!1);O(this,"flushTimer",null);O(this,"pullTimer",null);O(this,"lastFlushAt",0);O(this,"lastPullAt",0);O(this,"lastUploadedRevision","");O(this,"lastAppliedRemoteUpdatedAt",0);O(this,"lastAppliedRemoteDigest","");O(this,"pushInFlight",!1);O(this,"pullInFlight",!1);O(this,"state","active");O(this,"visibilityListener",null);let n=String(t.authToken||"").trim(),r=t.getSessionToken,o=r?String(r()||"").trim():n;if(!o||!o.startsWith(ch))throw Yo("Rover cloud checkpoint requires a session token (rvrsess_...).");this.endpointCandidates=q_(t.apiBase),this.endpoint=this.endpointCandidates[0]||`${dh}/v2/rover`,this.getToken=()=>{let s=r?String(r()||"").trim():n;if(!s||!s.startsWith(ch))throw Yo("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($s(t.ttlHours,1)))),this.flushIntervalMs=Math.max(2e3,Math.floor($s(t.flushIntervalMs,3e4))),this.pullIntervalMs=Math.max(2e3,Math.floor($s(t.pullIntervalMs,3e4))),this.idlePullIntervalMs=12e4,this.minFlushIntervalMs=Math.max(1e3,Math.floor($s(t.minFlushIntervalMs,2500))),this.maxSnapshotBytes=Math.max(64e3,Math.min(1048576,Math.floor($s(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=Yo(`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:Yo(`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=lh(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($s(t?.updatedAt,0))),o=String(t?.digest||"").trim()||lh(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:W_(),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 Yo("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 Yo(`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 Yo(`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:B_(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 $_="rover-runtime-state-db",Uc="runtime-state",Pu=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{}}},Bu=class{constructor(){O(this,"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($_,1);r.onupgradeneeded=()=>{let o=r.result;o.objectStoreNames.contains(Uc)||o.createObjectStore(Uc)},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(Uc,t),a=i.objectStore(Uc);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 fh(){let e=new Pu,t=new Bu;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 V_="rover_xdr_";var z_=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 mh(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&&z_.has(r)?`${n[n.length-3]}.${r}`:r}function Uu(e){return`${V_}${e.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,40)}`}function Fc(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 ph(e){let t=String(e||"").trim();return!t||t==="/"?"/":t.replace(/\/\/+/g,"/").replace(/\/+$/,"")||"/"}function j_(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 Fu(e,t){let n=Fc(e),r=Fc(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()||ph(o.pathname)!==ph(s.pathname)?!1:j_(o.searchParams,s.searchParams)}catch{return n===r}}function hh(e,t){try{let n=Uu(e),r=mh(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 Hu(e,t){try{let n=Uu(e),r=document.cookie.split(";"),o=Math.max(1e3,Number(t?.maxAgeMs)||300*1e3),s=Fc(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 _=Fc(h.targetUrl||h.handoff?.targetUrl||"");if(!_||!s||!Fu(_,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 Vi(e){try{let t=Uu(e),n=mh(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 Me(e){return String(e||"").trim()||void 0}function G_(e){let t=Me(e.incomingBoundaryId),n=Me(e.currentBoundaryId);return!t||t===n?!1:n?e.taskEpochAdvanced===!0&&e.hasPendingRun!==!0:e.allowBootstrapAdoption!==!1}function gh(e){let t=Me(e.incomingBoundaryId),n=Me(e.currentBoundaryId);return t&&n&&t===n?{accept:!0,reason:"match"}:t?G_(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 K_(){return[{kind:"create_task"},{kind:"rotate_boundary"},{kind:"assign_worker"}]}function qu(){return[{kind:"release_worker"},{kind:"clear_run"}]}function Hc(){return[{kind:"release_worker"},{kind:"clear_run"}]}function Qo(){return[{kind:"archive_task"},{kind:"clear_run"},{kind:"clear_worker_state"}]}var X_={idle:{START:{to:"running",sideEffects:()=>K_()}},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:()=>qu()},FAIL:{to:"failed",sideEffects:e=>[...qu(),{kind:"emit_error",error:e.error}]},CANCEL:{to:"cancelled",sideEffects:()=>Hc()},RESET:{to:"idle",sideEffects:()=>Qo()}},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:()=>Hc()},RESET:{to:"idle",sideEffects:()=>Qo()}},paused:{RESUME:{to:"running",sideEffects:()=>[{kind:"restore_snapshot"},{kind:"assign_worker"}]},CANCEL:{to:"cancelled",sideEffects:()=>Hc()},RESET:{to:"idle",sideEffects:()=>Qo()}},blocked:{UNBLOCK:{to:"running",sideEffects:()=>[{kind:"resume_from_block"}]},CANCEL:{to:"cancelled",sideEffects:()=>Hc()},FAIL:{to:"failed",sideEffects:e=>[...qu(),{kind:"emit_error",error:e.error}]},RESET:{to:"idle",sideEffects:()=>Qo()}},completed:{RESET:{to:"idle",sideEffects:()=>Qo()}},failed:{RESET:{to:"idle",sideEffects:()=>Qo()}},cancelled:{RESET:{to:"idle",sideEffects:()=>Qo()}}};function Y_(e,t,n){let o=X_[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 zi(e){return e==="completed"||e==="failed"||e==="cancelled"}function bh(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 ji(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 vh(e,t){let n=Y_(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),zi(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 Wu(e){let t=Date.now(),n=e?.taskId||Q_(),r=e?.boundaryId||J_();return{taskId:n,state:"idle",boundaryId:r,startedAt:t,uiMessages:[],timeline:[],seedChatLog:[],tabIds:[],...e}}function Q_(){return`task_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function J_(){return`bnd_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function qc(e){return e==="running"}function yh(e){return e.resumeRequired?e.hasLiveRemoteController?"defer_remote_owner":e.policy==="never"?"cancel_resume":e.policy==="confirm"?"prompt_resume":"auto_resume":"noop"}function Th(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 _h(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 kh(e){return!(e.taskStatus!=="running"||!e.activeRunId||!e.activeRunText||e.hasPendingRun||e.ignoredRunIds?.has(e.activeRunId))}function $u(e){return!!(e.localTaskStatus!=="running"||e.remoteTaskStatus&&e.remoteTaskStatus!=="running"||e.mode==="observer"&&!e.hasRemoteActiveRun)}function wh(e){let{type:t,messageRunId:n,messageTaskBoundaryId:r,currentTaskBoundaryId:o,pendingRunId:s,sharedActiveRunId:i,authoritativeActiveRunId:a,taskStatus:c,ignoredRunIds:d}=e,p=Me(o),u=Me(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 Z_(e){return Math.max(1,Number(e)||1)}function ek(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 Vu(e){return e==="completed"||e==="cancelled"||e==="failed"||e==="ended"}function Eh(e,t,n){let r=Number(t.at)||Date.now(),o=String(t.reason||"kernel").trim()||"kernel",s=Z_(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":ek(c),rotateBoundary:!1,clearPendingRun:!1,clearWorkerState:!1}}function tk(e,t){let n=Number(e);return Number.isFinite(n)?n:t}function Sh(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 Ih(e){let t=new Set,n=[];for(let r of e){let o=Xi(r);!o||t.has(o)||(t.add(o),n.push(o))}return n}function nk(e){let n=`${Sh(e)}/v2/rover`,r=Xi(String(e||"").trim()),o=r.replace("/extensionRouter/v2/rover","/v2/rover");return r.endsWith("/v2/rover")||r.endsWith("/extensionRouter/v2/rover")?Ih([o,n]):Ih([n])}function Rh(e){return nk(e)}function rk(e){return Rh(e)[0]||`${Sh(e)}/v2/rover`}function Ki(e){return Rh(e)}function Wc(e){return rk(e)}function Xi(e){return String(e||"").replace(/\/+$/,"")}function xh(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}function Jo(e){return!!e&&typeof e=="object"&&typeof e.sessionId=="string"&&Number.isFinite(Number(e.epoch))}function $c(e){let t=Number(e);return Number.isFinite(t)?t:void 0}function ok(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=$c(n?.currentSeq??r?.currentSeq),a=$c(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 Gi(e){return String(e?.error||e?.data?.code||e?.code||"").trim().toUpperCase()}async function sk(e){try{return await e.json()}catch{let t=await e.text().catch(()=>"");return t?{error:t}:void 0}}var wr=class wr{constructor(t){O(this,"options");O(this,"base");O(this,"baseCandidates");O(this,"baseIndex",0);O(this,"sessionToken");O(this,"sessionTokenExpiresAt",0);O(this,"sessionId");O(this,"epoch",1);O(this,"eventSource",null);O(this,"pollTimer",null);O(this,"reconnectTimer",null);O(this,"sseReconnectAttempts",0);O(this,"started",!1);O(this,"lastSeq",0);O(this,"lastRunId","");O(this,"lastSnapshotDigest","");O(this,"activeRunId");O(this,"visibilityListener",null);O(this,"pollIntervalMs",2e3);O(this,"commandInFlight",!1);O(this,"commandQueue",Promise.resolve());this.options=t,this.baseCandidates=Ki(t.apiBase),this.base=this.baseCandidates[0]||Wc(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=Ki(t),this.baseIndex=0,this.base=this.baseCandidates[0]||Wc(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?Xi(this.baseCandidates[this.baseIndex]||this.base):Xi(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=Ki(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=Xi(this.baseCandidates[i]||this.base);try{let c=await fetch(`${a}${t}`,n),d=await sk(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=tk(t.sessionTokenExpiresAt,Date.now()+8*6e4)),Number.isFinite(Number(t.epoch))&&(this.epoch=Math.max(1,Number(t.epoch))),t.projection&&Jo(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&&(Gi(c)==="SESSION_TOKEN_EXPIRED"||Gi(c)==="SESSION_TOKEN_INVALID"||Gi(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=Gi(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=$c(t?.currentEpoch??t?.sessionEpoch);n!==void 0&&(this.epoch=Math.max(1,n));let r=$c(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:xh(),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=Gi(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:ok(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;Jo(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))),Jo(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=xh(),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"&&Jo(r.data?.projection)?r.data.projection:r?.data;if(!n.ok||!r?.success||!Jo(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>=wr.SSE_MAX_RECONNECT_ATTEMPTS){this.sseReconnectAttempts=0;return}let t=wr.SSE_BASE_DELAY_MS,n=Math.min(t*Math.pow(2,this.sseReconnectAttempts),wr.SSE_MAX_DELAY_MS),r=Math.random()*wr.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"&&Jo(i.projection)?i.projection:i;Jo(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)}}};O(wr,"SSE_BASE_DELAY_MS",2e3),O(wr,"SSE_MAX_DELAY_MS",6e4),O(wr,"SSE_MAX_JITTER_MS",3e3),O(wr,"SSE_MAX_RECONNECT_ATTEMPTS",10);var Vc=wr;function Yi(e){return Array.isArray(e)?e.length:0}function zu(e){return String(e||"").trim()||void 0}function Ah(e){return String(e||"").trim()||void 0}function Ch(e){if(!e)return 0;let t=0;String(e.pendingRun?.id||"").trim()&&(t+=4,e.pendingRun?.resumeRequired&&(t+=1),zu(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,Yi(r.history)),t+=Math.min(3,Yi(r.plannerHistory)),t+=Math.min(4,Yi(r.agentPrevSteps)),Yi(r.pendingAskUser?.questions)>0&&(t+=3)),Yi(e.taskTabScope?.touchedTabIds)>0&&(t+=1),t}function ju(e){let t=Ah(e.localState.pendingRun?.id),n=Ah(e.incomingState.pendingRun?.id),r=zu(e.localState.pendingRun?.taskBoundaryId||e.localState.workerState?.taskBoundaryId),o=zu(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:Ch(e.localState),incomingScore:Ch(e.incomingState)}}function Gu(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=ju({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 Er(e){return String(e||"").trim()||void 0}function Ku(e){return e==="preserve_if_running"}function Mh(e,t){let n=Er(t.boundaryId),r=Er(t.runId),o=Er(t.taskId),s=Array.from(e);if(n){let i=s.find(a=>Er(a.boundaryId)===n);if(i)return i}if(r){let i=s.find(a=>Er(a.pendingRun?.id)===r);if(i)return i}if(o){let i=s.find(a=>Er(a.taskId)===o);if(i)return i}}function Nh(e){let t=Er(e.localPendingRunId);if(t)return t;let n=Er(e.sharedActiveRunId);if(!n)return;let r=Er(e.sharedTaskId),o=Er(e.activeTaskId);if(!(r&&o&&r!==o))return n}var zc=class{constructor(t){O(this,"maxWorkers");O(this,"maxQueue");O(this,"activeWorkers",new Map);O(this,"queue",[]);O(this,"onWorkerFreed");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 ik=10,ak=8,ck=12,Lh=40,Dh=60,lk=5*6e4,uk=5,Vs=class e{constructor(t){O(this,"tasks",new Map);O(this,"activeTaskId");O(this,"taskOrder",[]);O(this,"workerPool");O(this,"maxArchivedTasks");O(this,"tabToTask",new Map);this.workerPool=new zc({maxWorkers:t?.maxConcurrentWorkers,maxQueue:t?.maxQueuedTasks,onWorkerFreed:n=>this.onWorkerSlotFreed(n)}),this.maxArchivedTasks=Math.max(1,Number(t?.maxArchivedTasks)||ik)}createTask(t,n){let r=Wu(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:Wu({taskId:t}),sideEffects:[],rejectedReason:`Task ${t} not found`};let{record:o,result:s}=vh(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(-ak),timeline:n.timeline.slice(-ck),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&&zi(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=ji(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)zi(t.state)||(t.uiMessages.length>Lh&&(t.uiMessages=t.uiMessages.slice(-Lh)),t.timeline.length>Dh&&(t.timeline=t.timeline.slice(-Dh)))}terminateInactiveWorkers(){let t=Date.now(),n=[];for(let[r,o]of this.tasks){if(o.state!=="paused")continue;t-(o.pausedAt||t)>lk&&this.workerPool.getWorker(r)&&(this.workerPool.release(r),n.push(r))}return n}canCreateNewTask(t){if(t>uk)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 dk=[/\/login/i,/\/signin/i,/\/auth/i,/\/oauth/i,/\/password/i,/\/reset/i,/\/verify/i,/\/confirm/i,/\/account/i,/\/security/i,/\/2fa/i,/\/mfa/i],fk=[/data:/i,/javascript:/i,/vbscript:/i,/blob:/i],pk=[/token/i,/secret/i,/password/i,/apikey/i,/api_key/i,/access_token/i,/refresh_token/i,/session/i,/cookie/i,/credential/i],mk=/^(\d{1,3}\.){3}\d{1,3}$/;function Xu(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 fk)if(p.test(e)){n+=3,r.push("exfiltration_scheme");break}mk.test(o.hostname)&&(n+=2,r.push("ip_address_host")),o.hostname.split(".").length>4&&(n+=1,r.push("excessive_subdomains"));let i=dk.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=>pk.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 Oh(e,t){return Xu(e,t).blocked}var js,jc=null,Qi=!1,jn=32,zs=4,hk="#6b6bff";function gk(){return document.querySelector('link[rel="icon"], link[rel="shortcut icon"]')}function Ph(){let e=document.createElement("link");return e.rel="icon",e.type="image/png",document.head.appendChild(e),e}function Bh(e=hk){if(Qi)return!0;try{let t=gk();t&&(js=t.href,jc=t);let n=document.createElement("canvas");n.width=jn,n.height=jn;let r=n.getContext("2d");if(!r)return!1;let o=new Image;return o.crossOrigin="anonymous",o.onload=()=>{r.drawImage(o,0,0,jn,jn),r.beginPath(),r.arc(jn-zs-1,jn-zs-1,zs,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||Ph();i.href=s,Qi=!0},o.onerror=()=>{r.fillStyle="#1a1a2e",r.fillRect(0,0,jn,jn),r.fillStyle="#fff",r.font="bold 20px sans-serif",r.textAlign="center",r.textBaseline="middle",r.fillText("R",jn/2,jn/2),r.beginPath(),r.arc(jn-zs-1,jn-zs-1,zs,0,Math.PI*2),r.fillStyle=e,r.fill();let s=n.toDataURL("image/png"),i=t||Ph();i.href=s,Qi=!0},js?o.src=js:o.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEAAAAALAAAAAABAAEAAAIBAAA=",!0}catch{return!1}}function Uh(){if(Qi){Qi=!1;try{jc&&js&&(jc.href=js),js=void 0,jc=null}catch{}}}function Fh(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 Hh(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 bk=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 Ji(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&&bk.has(r)?`${n[n.length-3]}.${r}`:r}function Yu(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 qh(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=Yu(o);return s?n?`=${s}`:r?`*.${s}`:s:""}function vk(e,t){return e?t!=="host_only"||e==="*"||e.startsWith("=")||e.startsWith("*.")?e:`=${e}`:""}function yk(e,t){let n=qh(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 Wh(e){let t=Yu(e.host||"");if(!t)return!1;let n=Array.isArray(e.allowedDomains)?e.allowedDomains.map(o=>qh(o)).map(o=>vk(o,e.domainScopeMode)).filter(Boolean):[];if(n.length>0)return n.some(o=>yk(t,o));let r=Yu(e.currentHost||"");return r?e.domainScopeMode==="host_only"?t===r:Ji(t)===Ji(r):!0}function Zi(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 ea(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 Tk(e){if(e.startNewTask||!e.hasAskUserAnswers||e.taskStatus!=="running")return!1;let t=Me(e.pendingAskUserBoundaryId),n=Me(e.currentTaskBoundaryId);return t&&n&&t!==n?!1:(Math.max(0,Number(e.pendingAskUserQuestionCount)||0)<=0,!0)}function $h(e){return!Tk(e)}var _k=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 Qu(e){return String(e||"").replace(/\s+/g," ").trim().slice(0,2e3)}function kk(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=Qu(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 Vh(e){let t=String(e||"").toLowerCase().split(/[^a-z0-9]+/g).map(n=>n.trim()).filter(n=>n.length>=2&&!_k.has(n));return new Set(t)}function wk(e,t){let n=Vh(e),r=Vh(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 zh(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=kk(e.previousTaskMessages),r=Qu(e.previousTaskUserInput),o=Qu(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 _=wk(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 kd=2,kl="rover:runtime:",Ek="rover:runtime-id:",og="rover:visitor-id:",sl=vt.uiMessages,il=vt.timelineEvents,wd=vt.uiMessages,Ik=4,Ed=vt.plannerHistory,Id=vt.prevSteps,xk=8e3,Sk=12,Rk=15*6e4,Ak=2,Ck=12e4,Mk=.18,Nk=30,Lk=3600*24*365,sg=1,Dk=3e3,Ok=4500,Pk=12e3,Bk=30,al=240,jh=5*6e4,cl=100,ll=12,Uk=80,Fk=200,Hk=700,qk=8,Wk=240,$k=48,Vk=2600,zk=800,jk=5e3,Gk="rover:handoff-bootstrap:",ig=3e4,Kk=12e4,Xk=2500,Yk=2*6e4,Qk=45e3,Jk=2e4,pa=400,Zk=15e3,ew=7,tw=80,nw=2500,rw=250,To=null,nt=null,He=null,Y=null,M=null,dn=null,jr=null,l=null,Kr=null,Ze="",N=null,Tt=null,Qc=null,kn=[],Jc=!1,Qs=!1,ag=0,nd=0,rd=0,ul=0,aa=!1,Xr=null,ow=1500,sw=5e3,Gh=1e4,Kh=1200,cg=new Set(["error","navigation_guardrail","checkpoint_error","tab_event_conflict_exhausted","voice_error","voice_permission_denied"]),iw=new Set(["ready","error","auth_required","navigation_guardrail","checkpoint_error","tab_event_conflict_exhausted","voice_error","voice_permission_denied"]),Ft,Sr,Io=!1,os=!1,ca=null,la=null,Cr=null,od="",ii=!1,Ks="",ut="controller",Xn=!1,ai=!1,lr=!0,mr=!1,rn=!1,pn=!1,xr=!1,Zo=[],aw=3,Xh=1e4,Ne="",_t=null,lt=null,fn=0,vo=null,Zc=!1,sd=!1,id=!1,ad=!1,ko=[],Js=null,Zs=null,Xs="",sa="",yo=null,ei=null;function el(e,t,n,r){e.addEventListener(t,n,r),ko.push({target:e,event:t,handler:n,options:r}),ko.length>100&&ko.length%50===0&&cw()}function cw(){for(let e=ko.length-1;e>=0;e--){let t=ko[e],n=t.target;if(n&&"isConnected"in n&&n.isConnected===!1){try{t.target.removeEventListener(t.event,t.handler,t.options)}catch{}ko.splice(e,1)}}}var dl=null,ia=0,wo=null,ti,Gc="",Xt,ua,da=!1,ni=null,is,as,ci=0,lw=50,uw=100,dw=20,fw=3e5;function lg(e,t){for(;e.size>t;){let n=e.keys().next();if(n.done)break;e.delete(n.value)}}function pw(e,t){let n=e.values();for(;e.size>t;){let r=n.next();if(r.done)break;e.delete(r.value)}}var go=new Map,ur=new Set,ke=null,on,Rr=0,Gr=1,Ta,fl="",K=null,mw=new Set(["run_started","run_state_transition","run_completed","assistant","status","tool_start","tool_result","runtime_tabs_diagnostics","auth_required","navigation_guardrail","error"]),cd={read:"rover_external_read_context",act:"rover_external_act_context"},tl=[],nl=new Map,nn=new Map;function je(e,t){dt(e,t);let n=nl.get(e);if(n)for(let r of n)try{r(t)}catch{}}function ug(e,t){nl.has(e)||nl.set(e,new Set);let n=nl.get(e);return n.add(t),()=>{n.delete(t)}}function hw(e){return typeof e=="string"?{name:e}:e}function Qr(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function hr(){return Qr("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 dg(e){if(e)return{handoffId:e.handoffId,targetUrl:e.targetUrl,sourceLogicalTabId:e.sourceLogicalTabId,runId:e.runId,ts:e.createdAt}}function Ju(e){return{handoffId:e.handoffId,targetUrl:e.targetUrl,sourceLogicalTabId:e.sourceLogicalTabId,runId:e.runId,createdAt:Number(e.ts)||Date.now(),consumed:!1}}function cs(e){let t=typeof e?.pendingRun?.taskBoundaryId=="string"?e.pendingRun.taskBoundaryId:void 0;if(t)return Me(t);let n=typeof e?.workerState?.taskBoundaryId=="string"?e.workerState.taskBoundaryId:void 0;if(n)return Me(n)}function gw(e){let t=cs(e);return t||hr()}function wn(){return Me(Ne)||cs(l)}function ss(e){let t=gh({source:e.source,incomingBoundaryId:e.incomingBoundaryId,currentBoundaryId:wn(),taskEpochAdvanced:e.taskEpochAdvanced,hasPendingRun:!!l?.pendingRun,taskStatus:l?.activeTask?.status,allowBootstrapAdoption:e.allowBootstrapAdoption});return t.accept?(t.adoptedBoundaryId&&(Ne=t.adoptedBoundaryId),!0):!1}function xd(e=12e4){let t=Zr(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 fg(e){return e==="agent_navigation"||e==="cross_host_navigation"||e==="handoff"||e==="worker_interrupted"||e==="page_reload"}function bw(e){if(!l||!fg(e.resumeReason))return!1;let t=Zr(l.lastNavigationHandoff);if(!t?.targetUrl)return!1;let n=Date.now()-Number(t.createdAt||0);return!Number.isFinite(n)||n<-5e3||n>12e4?!1:Fu(t.targetUrl,window.location.href)}function vw(e){if(!xr||!fg(e.resumeReason))return!1;let t=Zr(l?.lastNavigationHandoff);if(!t)return!1;let n=Date.now()-Number(t.createdAt||0);return Number.isFinite(n)&&n>=-5e3&&n<=ig}function li(e){let t=et(l?.pendingRun)?.taskBoundaryId;if(t){Ne=t;return}let n=Ht(l?.workerState)?.taskBoundaryId;if(n){Ne=n;return}(!Ne||e?.rotateIfMissing)&&(Ne=hr())}function yw(e){let t=`${Ek}${e}`;try{let n=window.sessionStorage.getItem(t);if(n&&n.trim())return n.trim();let r=Qr("runtime");return window.sessionStorage.setItem(t,r),r}catch{return Qr("runtime")}}function ma(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 Kc(e){return String(e||"").trim().replace(/[^a-zA-Z0-9._:-]/g,"").slice(0,180)}function pg(e){try{let t=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`));return t?decodeURIComponent(t[1]||""):void 0}catch{return}}function Yh(e,t,n){try{let r=n?`; domain=${n}`:"";return document.cookie=`${e}=${encodeURIComponent(t)}; path=/; max-age=${Lk}; samesite=lax${r}`,pg(e)===t}catch{return!1}}function Tw(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 _w(e,t){let n=`rover_vid_${ma(e)}`;for(let r of Tw(window.location.hostname))if(Yh(n,t,r))return;Yh(n,t)}function Xc(e,t){let n=`${og}${e}`;try{window.localStorage.setItem(n,t)}catch{}try{window.sessionStorage.setItem(n,t)}catch{}_w(e,t)}function mg(e,t){l&&(l.visitor=t,xe());try{localStorage.setItem(`rover:visitor:${e}`,JSON.stringify(t))}catch{}}function kw(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 hg(e){let t=Kc(e.visitorId||"");if(t)return t;if(e.checkpointing?.autoVisitorId===!1)return;let n=`${og}${e.siteId}`,r=`rover_vid_${ma(e.siteId)}`,o=Kc(pg(r)||"");if(o)return Xc(e.siteId,o),o;try{let i=Kc(window.localStorage.getItem(n)||"");if(i)return Xc(e.siteId,i),i}catch{}try{let i=Kc(window.sessionStorage.getItem(n)||"");if(i)return Xc(e.siteId,i),i}catch{}let s=`v_${ma(`${e.siteId}:${Qr("visitor")}`)}_${Date.now().toString(36)}`;return Xc(e.siteId,s),s}function Qh(e,t){return`visitor-${ma(`${e}:${t}`)}`}function gg(e){!nt||!He||(nt.registerTool(e.def,e.handler),He.postMessage({type:"register_tool",tool:e.def}))}function ri(e){return`${kl}${e}`}function rl(e,t){let n=String(t||"").trim();return n?`${kl}${e}:${ma(n)}`:ri(e)}function ld(e){return`${kl}${e}:latest_key`}function ww(e){try{let t=String(sessionStorage.getItem(ld(e))||"").trim();return!t||!t.startsWith(kl)?void 0:t}catch{return}}function ud(e,t){if(e)try{if(!t){sessionStorage.removeItem(ld(e));return}sessionStorage.setItem(ld(e),t)}catch{}}function Sd(e){return`${Gk}${e}`}function Ew(e,t){try{sessionStorage.setItem(Sd(e),JSON.stringify(t))}catch{}}function Iw(e){try{let t=Sd(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>ig?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 bg(e){if(e)try{sessionStorage.removeItem(Sd(e))}catch{}}function Jh(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){ti=void 0;return}ti={runId:t,taskId:n,expiresAt:Date.now()+Math.max(1e3,Number(e?.ttlMs)||Kk)}}function ls(){ti=void 0}function Rd(e){let t=ti;if(!t)return!1;if(t.expiresAt<=Date.now())return ti=void 0,!1;let n=String(e?.activeTask?.status||"").trim();if(n&&n!=="running")return ti=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 _a(e){e&&Rd(e)&&(e.uiHidden=!1,e.uiOpen=!0)}function mn(e="session_start",t=Date.now(),n){return{taskId:n||Qr("task"),status:"running",startedAt:t,lastUserAt:void 0,lastAssistantAt:void 0,boundaryReason:e,endedAt:void 0}}function dd(e,t){return{version:kd,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:mn(),taskTabScope:void 0,lastRoutingDecision:void 0,updatedAt:Date.now(),tasks:{},activeTaskId:void 0,taskOrder:[]}}function sn(e,t=xk){return e.length<=t?e:`${e.slice(0,t)}\u2026`}function ol(e){if(e!=null){if(typeof e=="string")return sn(e,1200);try{return sn(JSON.stringify(e),1200)}catch{try{return sn(String(e),1200)}catch{return}}}}function wl(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))):Pk,i=Number(t?.maxBatchSize),a=Number.isFinite(i)?Math.min(80,Math.max(1,Math.floor(i))):Bk;return{enabled:t?.enabled!==!1,sampleRate:r,flushIntervalMs:s,maxBatchSize:a,includePayloads:t?.includePayloads===!0}}function El(e){return e==="same_tab"||e==="open_new_tab"?e:"same_tab"}function ha(e){return e==="host_only"?"host_only":"registrable_domain"}function ka(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 Ad(e){return e==="auto"||e==="confirm"||e==="never"?e:"confirm"}function vg(e){return"host_session"}function yg(e){return"task_touched_only"}function Cd(e){return"crash_only"}function pl(e){let t=Number(e);return Number.isFinite(t)?Math.max(6e4,Math.min(30*6e4,Math.floor(t))):Rk}function Md(e){return"read_only"}function Tg(e){return"heuristic_same_window"}function Nd(e){let t=Number(e);return Number.isFinite(t)?Math.max(1e4,Math.min(10*6e4,Math.floor(t))):Ck}function Ld(e){let t=Number(e);return Number.isFinite(t)?Math.max(.05,Math.min(.9,t)):Mk}function _g(e){return"empty"}function kg(e){return"deterministic_cues"}function wg(e){let t=Number(e);return Number.isFinite(t)?Math.max(1,Math.min(4,Math.floor(t))):Ak}function Eg(e){return"auto"}function Ig(e){return!1}function xg(e){return"pre_tool_block"}function xw(){return Hh({pendingRunText:l?.pendingRun?.text,activeRunText:N?.getState()?.activeRun?.text,rootWorkerInput:l?.workerState?.rootUserInput,lastUserInputText:Xt,fallback:"navigation request"})}function Sg(e){return e!==!1}function Ut(e,t,n){let r=Number(e);if(Number.isFinite(r))return Math.max(t,Math.min(n,Math.floor(r)))}function Dd(e){return"on_demand"}function Od(e){let t=Number(e);return Number.isFinite(t)?Math.max(5e3,Math.min(12e4,Math.floor(t))):Kp.idleCloseMs}function ui(e,t){let n=Number(e);return Number.isFinite(n)?Math.max(32768,Math.min(2097152,Math.floor(n))):t}function Pd(e){return!(!e||!wl(e).enabled||!Yn(e))}function Zh(e){if(e!=null){if(typeof e=="string")return sn(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]=sn(s,180):(typeof s=="number"||typeof s=="boolean")&&(n[o]=s))}return n}}}function Sw(e,t){if(!t)return Zh(e);let n=Fd(e);if(n!=null)return typeof n=="string"?sn(n,1e3):typeof n=="number"||typeof n=="boolean"?n:Array.isArray(n)?{type:"array",length:n.length}:typeof n=="object"?n:Zh(e)}function Bd(){Qc&&(clearInterval(Qc),Qc=null),Xr&&(clearTimeout(Xr),Xr=null),aa=!1}function Rw(e){return`${Wc(e.apiBase)}/telemetry/ingest`}function ml(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 Yn(e){if(on&&Rr>Date.now()+2e3)return on;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 on=s,Rr=Number(i),s}}}catch{}let t=e||M,n=String(t?.sessionToken||t?.authToken||"").trim();return n.startsWith("rvrsess_")?n:""}function hl(e,t){let n=String(e||"").trim();on=n||void 0,Rr=Number(t)>0?Number(t):0;try{let r=M?.siteId||"";n&&Rr>Date.now()?sessionStorage.setItem(`rover:sess:${r}`,JSON.stringify({t:n,e:Rr})):sessionStorage.removeItem(`rover:sess:${r}`)}catch{}}function Aw(e){!e||!M||(M.externalNavigationPolicy=e.externalNavigationPolicy||M.externalNavigationPolicy,e.domainScopeMode&&(M.domainScopeMode=ha(e.domainScopeMode)),(e.crossHostPolicy==="open_new_tab"||e.crossHostPolicy==="same_tab")&&(M.navigation={...M.navigation||{},crossHostPolicy:El(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 fd(e){if(!l||!e)return;Gr=Math.max(1,Number(e.epoch||Gr));let t=typeof e.activeRunId=="string"?e.activeRunId:"",n=String(e.runStatus||"").trim().toLowerCase();_h({serverRunId:t,runStatus:n,ignoredRunIds:ur})&&xo(t,"projection_ignored_active_run",{attemptImmediately:!0}),Eo(t||void 0);let r=l.pendingRun,o=r?.id||"";!t&&o?(n==="completed"||n==="cancelled"||n==="failed"||n==="ended"||l.activeTask?.status!=="running")&&(Co(o),xt(void 0),N?.setActiveRun(void 0)):t&&!Nr()&&wa(ut)!=="observer"&&Th({serverRunId:t,localPendingRunId:o,ignoredRunIds:ur})?xt({id:t,text:r?.text||"",startedAt:r?.startedAt||Date.now(),attempts:r?.attempts||0,autoResume:!0,taskBoundaryId:r?.taskBoundaryId||Ne,resumeRequired:r?.resumeRequired===!0,resumeReason:r?.resumeReason}):t&&ur.has(t)&&o===t&&(N?.releaseWorkflowLock(t),xt(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!==fl)){let c=e.snapshot?.runtimeState,d=e.snapshot?.sharedState;if(c&&typeof c=="object"){ii=!0;try{Qg({version:sg,siteId:M?.siteId||l.sessionId,visitorId:Ft||"server_projection",sessionId:l.sessionId,updatedAt:Number(e.snapshot?.updatedAt)||Date.now(),runtimeState:c,sharedState:d})}finally{ii=!1}i&&(fl=i)}}let a=String(l?.pendingRun?.id||"").trim();a&&ur.has(a)&&(N?.releaseWorkflowLock(a),xt(void 0),N?.setActiveRun(void 0)),gl()}async function Ud(e){if(!(!l||!e.apiBase&&!e.publicKey&&!e.authToken&&!e.sessionToken||!ml(e)&&!on)){ke?ke.setApiBase(e.apiBase):ke=new Vc({apiBase:e.apiBase,siteId:e.siteId,getSessionId:()=>l?.sessionId,getBootstrapToken:()=>ml(M),getHost:()=>window.location.hostname,getPageUrl:()=>window.location.href,getTaskBoundaryId:()=>Ne,shouldKeepTransportActive:()=>!di(),onSession:n=>{if(hl(n.sessionToken,n.sessionTokenExpiresAt),lr&&N?.broadcastSessionToken(n.sessionToken||"",n.sessionTokenExpiresAt||0),Gr=Math.max(1,Number(n.epoch||Gr)),l&&n.sessionId&&l.sessionId!==n.sessionId&&(l.sessionId=n.sessionId,fl="",xe()),Aw(n.policy),n.siteConfig&&typeof n.siteConfig=="object"&&M){let r={shortcuts:Ro(n.siteConfig.shortcuts),greeting:hi(n.siteConfig.greeting),voice:mi(n.siteConfig.voice),limits:Nl(n.siteConfig.limits),pageConfig:Yr(n.siteConfig.pageConfig),version:n.siteConfig.version!=null?String(n.siteConfig.version):void 0};Cr=r,Jg(M.siteId,r),yl(M)}n.projection&&fd(n.projection),He&&He.postMessage({type:"update_config",config:{...fs(),pageConfig:ba(M),publicKey:void 0,sessionToken:on,authToken:Yn(M),sessionId:l?.sessionId,activeRunId:l?.pendingRun?.id,sessionEpoch:ke?.getEpoch?.()??Gr,sessionSeq:ke?.getLastSeq?.()??0}}),nt&&nt.setNavigationPolicy({allowedDomains:M?.allowedDomains,domainScopeMode:M?.domainScopeMode,externalNavigationPolicy:M?.externalNavigationPolicy,crossHostPolicy:M?.navigation?.crossHostPolicy}),M&&(jd(M),Il(M)),ai=!0,Ar(),gl()},onProjection:n=>{fd(n),lr&&N?.broadcastProjection(n),gl(),He&&He.postMessage({type:"update_config",config:{...fs(),pageConfig:ba(M),sessionToken:on,authToken:Yn(M),sessionId:l?.sessionId,activeRunId:l?.pendingRun?.id,sessionEpoch:ke?.getEpoch?.()??Gr,sessionSeq:ke?.getLastSeq?.()??0}})},onError:n=>{dt("error",{message:n?.message||"server runtime sync failed",scope:"server_runtime"})}});try{await ke.start()}catch(n){M?.apiMode!==!1&&je("error",{message:n?.message||"server runtime sync failed",scope:"server_runtime_start"})}}}async function ns(e=!1){if(Jc||Qs)return;if(!M||!Pd(M)){kn=[];return}if(!e&&di()||!kn.length)return;let t=wl(M),n=Yn(M);if(!n)return;let r=kn.splice(0,t.maxBatchSize);if(r.length){Jc=!0,ul=Date.now();try{let o=await fetch(Rw(M),{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify({sessionToken:n,sessionId:l?.sessionId,runId:l?.pendingRun?.id,siteId:M.siteId,runtimeId:Ze,visitorId:Ft,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?Qs=!0:kn=[...r,...kn].slice(-al);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")&&(Qs=!0);return}}catch{kn=[...r,...kn].slice(-al)}finally{Jc=!1}}}function Il(e){if(Bd(),Qs=!1,!Pd(e)){kn=[];return}let t=wl(e);Qc=setInterval(()=>{ns(!1)},t.flushIntervalMs)}function dt(e,t){if(!Pd(M)||Qs||di()&&!iw.has(e))return;let n=wl(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-nd<ow)return;nd=r}}else if(e==="checkpoint_state"){if(r-rd<sw)return;rd=r}let o={name:e,ts:r,seq:++ag,payload:Sw(t,n.includePayloads)};if(kn.push(o),kn.length>al&&(kn=kn.slice(-al)),cg.has(e)){let i=Date.now()-ul;if(i>=Kh){ns(!1);return}Xr||(Xr=setTimeout(()=>{Xr=null,ns(!1)},Kh-i));return}if(kn.length>=n.maxBatchSize){let i=Date.now()-ul;i>=Gh?ns(!1):aa||(aa=!0,setTimeout(()=>{aa=!1,ns(!1)},Gh-i))}}function Cw(e,t){dt(e,t)}function Mw(e){if(e==="analyze"||e==="route"||e==="execute"||e==="verify"||e==="complete")return e}function Nw(e){return e?e==="analyze"?"Analyze":e==="route"?"Route":e==="execute"?"Execute":e==="verify"?"Verify":e==="complete"?"Complete":"Status":"Status"}function Lw(e,t,n){return[String(t||""),String(e||"").trim().toLowerCase(),String(n||"").trim().toLowerCase()].join("|")}function Dw(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 Ow(){return l?.pendingRun?.id}function Eo(e){Ta=String(e||"").trim()||void 0}function eg(){let e=l?.pendingRun?.id;if(!e)return;if(!ke)return e;let t=ke.getActiveRunId(),n=String(t||Ta||"").trim();if(n)return n===e?e:void 0}function Co(e){e&&(ur.add(e),pw(ur,uw))}function pd(e){e&&ur.delete(e)}function md(e){let t=Math.max(0,Math.floor(e)),n=pa*2**t;return Math.max(120,Math.min(Zk,n))}function Pw(){if(!nn.size)return null;let e=Number.POSITIVE_INFINITY;for(let t of nn.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 hd(e=pa){vo&&(clearTimeout(vo),vo=null);let t=Math.max(80,Math.floor(e));vo=setTimeout(()=>{vo=null,gl()},t)}function xo(e,t="local_run_abandoned",n){let r=String(e||"").trim();if(!r)return;let o=Date.now(),s=nn.get(r),i=n?.attemptImmediately===!0?o:s?.nextAttemptAt&&s.nextAttemptAt>o?s.nextAttemptAt:o+md(s?.attempts||0);for(nn.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});nn.size>tw;){let a=Array.from(nn.values()).sort((c,d)=>Number(c.createdAt)-Number(d.createdAt))[0];if(!a?.runId)break;nn.delete(a.runId)}hd(n?.attemptImmediately?50:pa)}async function gl(){if(Zc||!nn.size)return;if(!(!!ke&&!!ai&&!!Yn(M))){hd(pa);return}Zc=!0;try{let t=Date.now(),n=Array.from(nn.values()).sort((r,o)=>Number(r.nextAttemptAt)-Number(o.nextAttemptAt));for(let r of n){if(r.nextAttemptAt>t)break;if(!nn.has(r.runId))continue;if($d(r.runId)){nn.set(r.runId,{...r,nextAttemptAt:Date.now()+md(Math.max(1,r.attempts))});continue}let o=ke;if(!o){nn.set(r.runId,{...r,nextAttemptAt:Date.now()+pa});continue}try{if(await o.controlRun({action:"cancel",runId:r.runId,reason:r.reason})){nn.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>=ew){nn.delete(r.runId),je("error",{message:`Failed to cancel stale run ${r.runId} after retries.`,scope:"run_cancel_repair",code:"RUN_CANCEL_REPAIR_FAILED",runId:r.runId});continue}nn.set(r.runId,{...r,attempts:i,lastError:String(s?.message||"cancel_control_failed"),nextAttemptAt:Date.now()+md(i)})}}}finally{Zc=!1;let t=Pw();t!=null&&hd(t)}}function bo(){return l?.activeTask?.status==="running"}function Rg(){Tt&&(bo()||gd()?Tt.enterActiveMode():Tt.enterIdleMode())}function Bw(){return typeof document<"u"&&document.visibilityState==="hidden"}function gd(){return!!l?.pendingRun?.id}function Uw(){let e=N?.getState()?.activeRun;if(!e)return!1;if(e.runtimeId)return e.runtimeId===Ze;let t=String(l?.pendingRun?.id||"").trim();return!!(t&&e.runId===t)}function Fw(){let e=N?.getWorkflowLockInfo();return!!(e?.locked&&e.holderRuntimeId===Ze)}function Ag(){return N?Fw()||Uw()?!0:gd()&&!Nr():bo()||gd()}function Hw(){return Dd(M?.transport?.activation)!=="on_demand"?!0:!!(l?.uiOpen||Ag()||Cg()||Mg())}function di(){if(!lr)return!0;if(Hw())ia=0;else{let t=Od(M?.transport?.idleCloseMs);return ia<=0&&(ia=Date.now()+t),!(Date.now()<ia)}return Bw()?!Ag()&&!l?.uiOpen:!1}function gr(e=!1){if(typeof window>"u")return;let t=di();if(!(!e&&dl===t)){dl=t;try{let n=window.rtrvrAISetObserverPaused;typeof n=="function"&&n(t)}catch{}}}function Cg(){let e=N?.getState()?.activeRun;return!!(e&&e.runtimeId&&e.runtimeId!==Ze)}function Mg(){let e=N;if(!e?.isWorkflowLocked())return!1;let t=e.getWorkflowLockInfo();if(!t.locked||!t.holderRuntimeId||t.holderRuntimeId===Ze)return!1;let n=e.listTabs({scope:"all"}).find(r=>r.runtimeId===t.holderRuntimeId);return n?Number(n.updatedAt)>Date.now()-5e3:!1}function Nr(){return Mg()}function wa(e){return Nr()?"observer":e==="observer"?"controller":e}function Ng(){return Md(M?.task?.observerInput)==="read_only"?!Nr():!Cg()}function Lg(e){if(e==="observer")return Nr()?"Observing active run in another tab...":"Send to take control and run here."}function qw(){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=dr(Ht(e?.workerContext),wn());return i&&(l.workerState=i,li(),N.setWorkerContext(Ia(l.workerState)),Xn&&He&&(Kn(),He.postMessage({type:"hydrate_state",state:l.workerState}),je("context_restored",{source:"controller_handoff",ts:Date.now()}))),e?.task&&(l.activeTask=Bg(e.task,l.activeTask||mn("handoff"))),l.uiHidden=!1,l.uiOpen=!0,(r||n)&&(xt(et({id:n,text:r||l.pendingRun?.text||Xt||"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||Ne,resumeRequired:!0,resumeReason:"handoff"})),N.setActiveRun({runId:n,text:r||l.pendingRun?.text||"Continue task"})),xe(),Ar({overridePolicyAction:"auto_resume"}),!0}function Ww(e){let t=typeof e?.type=="string"?e.type:"";if(!mw.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(ke?.getActiveRunId()||Ta||"").trim()||void 0;return wh({type:t,messageRunId:n,messageTaskBoundaryId:r,currentTaskBoundaryId:wn(),pendingRunId:Ow(),sharedActiveRunId:N?.getState()?.activeRun?.runId,authoritativeActiveRunId:o,taskStatus:l?.activeTask?.status,ignoredRunIds:ur})}function Jr(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 $w(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=Jr(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(`
|
|
2097
|
+
`):String(t.rawText||"").trim()}function Vw(e){let t=String(K?.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(Xt||"").trim()||void 0}function zw(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=Jr(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 jw(e){return Kr?Kr.readSync(e):null}function Fd(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 So(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:Fd(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 tg(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 Gw(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"||tg(r))return!1}return!0}return!tg(e)}function Dg(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(`
|
|
1956
2098
|
|
|
1957
|
-
`);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 ak(e){if(e==null)return;let t=typeof e=="object"&&e!==null?e:void 0,n=t?.output??t?.generatedContentRef??t?.schemaHeaderSheetInfo??e,r=Ym(fo([{type:"tool_output",data:n}]));if(ik(n,r))return fo([{type:"tool_output",label:typeof t?.name=="string"?`${t.name} output`:"Tool output",data:n}])}function Hn(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t}function ck(e){if(!e||typeof e!="object")return[];let t=e,n=[Hn(t.tab_id),Hn(t.logical_tab_id),Hn(t.tabId),Hn(t.logicalTabId)].filter(r=>!!r);return Cn(n)}function lk(e){if(!e||typeof e!="object")return[];let t=e,n=t.output&&typeof t.output=="object"?t.output:void 0,r=[Hn(t.tab_id),Hn(t.logical_tab_id),Hn(t.tabId),Hn(t.logicalTabId),Hn(n?.tab_id),Hn(n?.logical_tab_id),Hn(n?.tabId),Hn(n?.logicalTabId)].filter(o=>!!o);return Cn(r)}function uk(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 Qm(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 Ps(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=Fu(o);s!==void 0&&r.push(s)}return r}function Jm(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 dk(e,t){if(!qr)return null;try{let n=await qr.readAsync(e);if(n)return n;for(let r of t||[]){if(!r||r===e)continue;let o=await qr.readAsync(r);if(o)return o}return null}catch{return null}}function rr(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-mc)){let r=n?.role;r!=="user"&&r!=="assistant"&&r!=="system"||t.push({id:typeof n?.id=="string"&&n.id?n.id:zr("msg"),role:r,text:String(n?.text||""),blocks:fo(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 or(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-hc)){let r=Zt(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:zr("timeline"),kind:o,title:r,detail:n?.detail?String(n.detail):void 0,detailBlocks:fo(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 Ir(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-zv)){let r=n?.role==="user"?"user":n?.role==="model"?"model":void 0;if(!r)continue;let o=Zt(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 qi(e,t){if(!e)return;let n=typeof e=="string"?e:e?.text,r=Zt(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()?Zt(e.stage.trim(),40):void 0;return{text:r,ts:Number(e?.ts)||Date.now(),runId:o,taskId:s,stage:i}}function fk(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 pk(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||fk(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 mk(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 hk(e,t){let n=new Map;for(let r of or(e))n.set(r.id,r);for(let r of or(t)){let o=n.get(r.id);(!o||mk(r,o)>0)&&n.set(r.id,r)}return or([...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 Nt(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(-Eu).map(T=>Qm(T)).filter(T=>!!T),i=Ps(r,wu),a=Ps(Jm(o),Iu),c=jr(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=Ce(t||void 0),m=Ce(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:Ir(e.seedChatLog),history:s,plannerHistory:i,agentPrevSteps:a,lastToolPreviousSteps:a,pendingAskUser:p,updatedAt:Number(e.updatedAt)||Date.now()}}function Li(e,t,n){if(!e||typeof e!="object")return du(t,n);let r=ln(),o=ho(e.activeTask,r),s=je(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=Fs(e.taskTabScope,a),l={version:_u,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"?Zt(e.uiStatus,300):void 0,transientStatus:qi(e.transientStatus??e.uiStatus,{runId:s?.id,taskId:o?.taskId}),uiMessages:rr(e.uiMessages),timeline:or(e.timeline),executionMode:e.executionMode==="observer"||e.executionMode==="controller"?e.executionMode:"controller",workerState:Nt(e.workerState),pendingRun:i,taskTabScope:c,lastNavigationHandoff:Gr(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"?Zt(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=bs.fromV1State(l),{tasks:v,activeTaskId:m,taskOrder:g}=p.toPersistedState();l.tasks=v,l.activeTaskId=m,l.taskOrder=g,p.shutdown()}return l}function ho(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"?Zt(e.boundaryReason,120):t.boundaryReason,endedAt:Number(e.endedAt)||void 0}}function Zm(e,t){return ho(e,t)}function Wi(e){if(!e)return;let t=jr(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:Ir(e.seedChatLog),history:Array.isArray(e.history)?e.history.slice(-Eu).map(n=>Qm(n)).filter(n=>!!n):[],plannerHistory:Ps(e.plannerHistory,wu),agentPrevSteps:Ps(Jm(e.agentPrevSteps),Iu),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 Cn(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 Fs(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=Cn(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 je(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 Vt=="string"&&Vt.trim()?Vt.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 gk(){return Ds(C?.stability?.maxPersistBytes,pt.localPersistBytes)}function bk(e,t){let n={...e,uiMessages:rr(e.uiMessages).slice(-mc),timeline:or(e.timeline).slice(-hc),workerState:Nt(e.workerState)};n.workerState&&(n.workerState={...n.workerState,history:Array.isArray(n.workerState.history)?n.workerState.history.slice(-Eu):[],plannerHistory:Ps(n.workerState.plannerHistory,wu),agentPrevSteps:Ps(n.workerState.agentPrevSteps,Iu)});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:ln("persist_trim")}}function Rs(e){if(!(!u||!sn))try{if(X){Dc(),X.enforceMemoryCaps();let{tasks:r,activeTaskId:o,taskOrder:s}=X.toPersistedState();u.tasks=r,u.activeTaskId=o,u.taskOrder=s}let t=gk();u=bk(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===yu&&!e?.markCheckpointDirty)return;yu=n,u.updatedAt=Date.now(),qr?.write(sn,u),Fr&&Fr!==sn&&(qr?.remove(Fr),Fr=null),!Cs&&e?.markCheckpointDirty!==!1&&ht?.markDirty()}catch{}}var Bo=!1,Uo=!1,yu="",yi=0,Ts=0,vu=2e3,eh=2e3;function As(e){Rs({markCheckpointDirty:!0}),ht?.syncNow({push:!0,pull:!1}),zt("checkpoint_state",{event:"critical_flush",reason:e})}function Se(e){e?.markCheckpointDirty!==!1&&(Uo=!0);let t=Date.now();if(!Bo)Ts=t;else if(Ts>0&&t-Ts>=eh){Bo=!1,Ts=0;let n=Uo;Uo=!1,yi=t,Rs({markCheckpointDirty:n});return}Bo||(Bo=!0,setTimeout(()=>{Bo=!1,Ts=0;let n=Uo;Uo=!1;let r=Date.now();if(r-yi<vu){Bo=!0,setTimeout(()=>{Bo=!1,Ts=0,yi=Date.now(),Rs({markCheckpointDirty:Uo||n}),Uo=!1},vu-(r-yi));return}yi=r,Rs({markCheckpointDirty:n})},0))}function yk(){if(su)return;su=!0,iu||(iu=!0,lc(document,"visibilitychange",()=>{cr()},{passive:!0})),lc(window,"pagehide",()=>{if(Jt&&C?.siteId)try{sessionStorage.setItem(`rover:sess:${C.siteId}`,JSON.stringify({t:Jt,e:Er}))}catch{}if(u?.pendingRun?.autoResume){let r=u.pendingRun.resumeReason||(kr?"agent_navigation":"page_reload"),o=je({...u.pendingRun,resumeRequired:!0,resumeReason:r});if(u.pendingRun=o,o&&C?.siteId){let s=Gr(u?.lastNavigationHandoff);UT(C.siteId,{runId:o.id,text:o.text,taskBoundaryId:o.taskBoundaryId||Me,resumeReason:r,handoffId:s?.handoffId,openIntent:u.uiOpen?"preserve_if_running":void 0,ts:Date.now()})}}let n=xu();R?.broadcastClosing(Sm(n)),u?.pendingRun&&R?.releaseWorkflowLock(u.pendingRun.id),Rs(),Fo(!0),Bu(),ht?.markDirty(),ht?.syncNow({push:!0,pull:!1}),ht?.stop(),R?.stop()},{capture:!0}),lc(window,"pageshow",n=>{n.persisted&&(R&&(R.reloadFromStorage(),R.registerCurrentTab(window.location.href,document.title||void 0),R.claimLease(!1)),sr=!1,an=0,C&&Lc(C),cr(!0))})}function vk(e="implicit"){if(u)return u.activeTask||(u.activeTask=ln(e),u.taskEpoch=Math.max(1,Number(u.taskEpoch)||1)),u.activeTask}function go(e,t){if(!u)return;let n=u.activeTask?.status,r=Ce(Me),o=Hp({task:u.activeTask,taskEpoch:u.taskEpoch},e,{createTask:(s,i,a)=>ln(s,i,a)});if(u.activeTask=o.task,u.taskEpoch=o.taskEpoch,o.rotateBoundary&&t?.rotateBoundary!==!1?(Me=ir(),Mn({forceReset:!0,persist:!1})):Mn({persist:!1,appendSeed:!1}),o.clearPendingRun&&u.pendingRun&&_t(void 0),o.clearWorkerState&&u.workerState&&(u.workerState=void 0,R?.setWorkerContext(void 0)),o.lifecycle==="terminal"&&(it&&(clearTimeout(it),it=null),$i()),t?.syncShared!==!1&&R?.syncTask({...o.task},u.taskEpoch),t?.persist!==!1){let s=Ce(Me);n!==o.task.status?As("run_status_transition"):!!s&&s!==r?As("task_boundary_transition"):Se()}if(cr(),Vm(),X){let s=X.toPersistedState();u.tasks=s.tasks,u.activeTaskId=s.activeTaskId,u.taskOrder=s.taskOrder}return o.task}function so(){if(!X||!K)return;Dc();let e=X.listTasks(),t=X.getActiveTask()?.taskId;K.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&&K.setActiveConversationId(t)}function Ic(){if(X)return X.getActiveTask()}function Tk(e=u,t){let n=String(t||e?.activeTaskId||e?.activeTask?.taskId||"").trim()||void 0,r=Ce(Vo(e)),o=String(je(e?.pendingRun)?.id||"").trim()||void 0;return{taskId:n,boundaryId:r,runId:o}}function kk(){let e=Ir(Ic()?.seedChatLog);return e.length?e:Ir(u?.workerState?.seedChatLog)}function _k(e,t){let n=t||ln("task_record_sync");return ho({taskId:e.taskId,status:Lp(e.state),startedAt:e.startedAt,lastUserAt:e.lastUserAt,lastAssistantAt:e.lastAssistantAt,boundaryReason:e.blockReason||n.boundaryReason,endedAt:e.endedAt},n)}function th(e,t){if(!u)return;let n=Ce(e.boundaryId)||Ce(e.pendingRun?.taskBoundaryId)||Ce(e.workerState?.taskBoundaryId)||vn()||ir(),r=Ir(e.seedChatLog??e.workerState?.seedChatLog),o=nr(Nt(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=je(e.pendingRun),i=qi(e.transientStatus,{runId:s?.id,taskId:e.taskId});u.activeTaskId=e.taskId,u.activeTask=_k(e,u.activeTask),u.uiMessages=rr(e.uiMessages),u.timeline=or(e.timeline),u.workerState=o,u.pendingRun=s,u.taskTabScope=Fs(e.tabScope,n),u.uiStatus=i?.text,u.transientStatus=i,Me=n,e.rootUserInput?.trim()&&(Vt=e.rootUserInput.trim()),t?.replayUi!==!1&&(qu(),u.uiMessages.length&&Pc(u.uiMessages),u.timeline.length&&Bc(u.timeline),Uc(u),Bs(),K?.setRunning(!!u.pendingRun&&u.activeTask?.status==="running"),e.state==="paused"?K?.showPausedTaskBanner({taskId:e.taskId,rootUserInput:e.rootUserInput||"Task"}):K?.hidePausedTaskBanner())}function nh(e){let t=Ir(e),n=Ic();n&&X&&X.updateTask(n.taskId,r=>({...r,seedChatLog:t})),u?.workerState&&(u.workerState=Nt({...u.workerState,seedChatLog:t,updatedAt:Date.now()}),R?.setWorkerContext(Wi(u.workerState)))}function Dc(){if(!u||!X)return;let e=X.getActiveTask();if(!e)return;let t=li(u.activeTask?.status||"running",u.activeTask?.boundaryReason),n=rr(u.uiMessages),r=or(u.timeline),o=[...n].reverse().find(p=>p.role==="assistant"),s=Nt(u.workerState),i=je(u.pendingRun),a=Ce(i?.taskBoundaryId)||Ce(s?.taskBoundaryId)||Ce(e.boundaryId)||vn()||ir(),c=Fs(u.taskTabScope,a),l=qi(u.transientStatus,{runId:i?.id,taskId:e.taskId}),d=Ir(e.seedChatLog?.length?e.seedChatLog:s?.seedChatLog);X.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||Vt,summary:o?.text||p.summary,seedChatLog:d,transientStatus:l}))}function Hu(e){if(!u||!X)return;let t=Tk(u,e?.preferredTaskId),n=Gp(X.listTasks(),t);if(!n&&e?.allowCreate!==!1){let o=t.boundaryId||ir(),s=li(u.activeTask?.status||"running",u.activeTask?.boundaryReason);n=X.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:Nt(u.workerState)?.rootUserInput||je(u.pendingRun)?.text||Vt,seedChatLog:Ir(u.workerState?.seedChatLog),tabIds:Fs(u.taskTabScope,o)?.touchedTabIds||[]})}if(!n)return;e?.makeActive!==!1&&X.getActiveTaskId()!==n.taskId&&X.switchActiveTask(n.taskId),u.activeTaskId=X.getActiveTaskId()||n.taskId,u.activeTask=ho({...u.activeTask||ln("adopted_continuation"),taskId:u.activeTaskId},ln("adopted_continuation",Date.now(),u.activeTaskId)),Dc();let r=X.toPersistedState();return u.tasks=r.tasks,u.activeTaskId=r.activeTaskId,u.taskOrder=r.taskOrder,so(),X.getTask(u.activeTaskId||n.taskId)}function Ek(e,t=Date.now()){if(!u||e==="system")return;let n=vk("implicit");n&&n.status==="running"&&(e==="user"&&(n.lastUserAt=t),e==="assistant"&&(n.lastAssistantAt=t))}var Zl="[Rover]";function wk(e){if(!(C?.ui?.tabIndicator?.titlePrefix!==!1))return;let n=e||"[Rover: Running]",r=Ri;r||(Si=document.title),Ri=!0,Zl=n;let o=r?document.title.replace(/^\[Rover[^\]]*\]\s*/,"")||Si||"":document.title;if(document.title=`${n} ${o}`,!xs){let s=document.querySelector("title");s&&(xs=new MutationObserver(()=>{if(Ri&&!document.title.startsWith(Zl)){let i=document.title.replace(/^\[Rover[^\]]*\]\s*/,"");document.title=`${Zl} ${i}`}}),xs.observe(s,{childList:!0,characterData:!0,subtree:!0}))}C?.ui?.tabIndicator?.faviconBadge===!0&&Zp()}function Oc(){Ri&&(Ri=!1,xs&&(xs.disconnect(),xs=null),Si!==void 0?(document.title=Si,Si=void 0):document.title.startsWith("[Rover] ")&&(document.title=document.title.slice(8)),em())}function rh(e="worker_task_active",t=Date.now()){if(X){let n=X.getActiveTask();n&&X.dispatch(n.taskId,{type:"START",reason:e})}go({type:"ensure_running",reason:e,at:t}),wk()}function Ik(e="worker_task_complete",t=Date.now()){if(X){let n=X.getActiveTask();n&&X.dispatch(n.taskId,{type:"COMPLETE"})}go({type:"terminal",terminal:"completed",reason:e,at:t}),Oc()}function sc(e="worker_task_failed",t=Date.now()){if(X){let n=X.getActiveTask();n&&X.dispatch(n.taskId,{type:"FAIL",error:e})}go({type:"terminal",terminal:"failed",reason:e,at:t}),Oc()}function xk(e="worker_task_ended",t=Date.now()){if(X){let n=X.getActiveTask();n&&X.dispatch(n.taskId,{type:"CANCEL",reason:"ended"})}go({type:"terminal",terminal:"ended",reason:e,at:t}),Oc()}function oh(e="worker_task_cancelled",t=Date.now()){if(X){let n=X.getActiveTask();n&&X.dispatch(n.taskId,{type:"CANCEL",reason:e})}go({type:"terminal",terminal:"cancelled",reason:e,at:t}),Oc()}function Tn(){ao=null,K?.setTaskSuggestion({visible:!1})}function Sk(e){let t=String(e?.id||"").trim();if(!t||xr())return!1;let n=String(e?.text||"").trim()||"Continue task";return ao?.kind==="resume_run"&&ao.runId===t?!1:(ao={kind:"resume_run",runId:t,text:n,createdAt:Date.now()},K?.setTaskSuggestion({visible:!0,text:"Resume your interrupted task or cancel it?",primaryLabel:"Resume",secondaryLabel:"Cancel"}),!0)}function $i(){Qt=!1,cn=!1,zo(),C?.siteId&&(ai(C.siteId),Lm(C.siteId)),ht?.markDirty(),ht?.syncNow({push:!0,pull:!1})}function qu(){K?.clearMessages(),K?.clearTimeline(),K?.setQuestionPrompt(void 0),Tn()}function Wu(e){if(!u)return;it&&(clearTimeout(it),it=null),sr=!1,an=0,Qt=!1,cn=!1,gt&&(clearTimeout(gt),gt=null);let t=je(u.pendingRun),n=String(e.runId||t?.id||"").trim();n&&(mo(n),R?.releaseWorkflowLock(n),$u(n)||uo(n,e.cancelReason||e.reason,{attemptImmediately:!0})),_t(void 0),R?.setActiveRun(void 0),K?.setRunning(!1),K?.setQuestionPrompt(void 0),Tn(),u.activeTask?.status==="running"?oh(e.reason):$i(),kt(void 0),zt("status",{event:"local_run_abandoned",reason:e.reason,runId:n||void 0}),e.timelineTitle&&tt({kind:e.timelineStatus==="error"?"error":"info",title:e.timelineTitle,detail:e.timelineDetail,status:e.timelineStatus||"info"}),e.emitError?.message&&We("error",{message:e.emitError.message,scope:e.emitError.scope||"resume",code:e.emitError.code,runId:n||void 0})}function Rk(e){if(e)return Ce(e.pendingAskUser?.boundaryId||e.taskBoundaryId)}function nr(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 Bs(){if(u?.activeTask?.status!=="running"){ks="",K?.setQuestionPrompt(void 0);return}let e=vn(),t=Rk(u?.workerState);if(e&&t&&t!==Ce(e)){ks="",K?.setQuestionPrompt(void 0);return}let n=jr(u?.workerState?.pendingAskUser?.questions);if(!n.length){ks="",K?.setQuestionPrompt(void 0);return}let r=`${Ce(t||e)||""}:${n.map(o=>`${o.key}:${o.query}`).join("|")}`;r!==ks&&(ks=r,As("question_prompt_boundary")),K?.setQuestionPrompt({questions:n})}function Ak(){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!==ze)return!0;let n=Date.now()-Number(e.startedAt||0);return n>=0&&n<=eT}function Ck(){if(!u?.pendingRun||Ak()||!R)return;let e=u.pendingRun;if(e.resumeRequired===!0&&Ya(u.activeTask?.status))return;let t=String(ve?.getActiveRunId()||"").trim();if(t&&t===e.id||xr())return;let n=Date.now()-Number(e.startedAt||0);!Number.isFinite(n)||n<tT||(mo(e.id),uo(e.id,"stale_pending_cleanup",{attemptImmediately:!0}),_t(void 0),R?.releaseWorkflowLock(e.id),R?.setActiveRun(void 0),it&&(clearTimeout(it),it=null))}function qn(e,t,n=!0,r){let o=String(t||""),s=fo(r?.blocks);if(!o&&(!s||s.length===0))return;let i={id:r?.id||zr("msg"),role:e,text:o,blocks:s,ts:r?.ts||Date.now(),sourceRuntimeId:r?.sourceRuntimeId};return K?.addMessage(i.role,i.text,{blocks:i.blocks}),u&&n&&(u.uiMessages.push(i),u.uiMessages.length>mc&&(u.uiMessages=u.uiMessages.slice(-mc)),Ek(i.role,i.ts),Se()),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 Pc(e){for(let t of e)qn(t.role,t.text,!1,{id:t.id,ts:t.ts,sourceRuntimeId:t.sourceRuntimeId,publishShared:!1,blocks:t.blocks})}function tt(e,t=!0){let n={id:e.id||zr("timeline"),kind:e.kind,title:Zt(e.title,400),detail:e.detail?String(e.detail):void 0,detailBlocks:fo(e.detailBlocks),status:e.status,ts:e.ts||Date.now(),sourceRuntimeId:e.sourceRuntimeId};return K?.addTimelineEvent(n),u&&t&&(u.timeline.push(n),u.timeline.length>hc&&(u.timeline=u.timeline.slice(-hc)),Se({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 Bc(e){K?.clearTimeline();for(let t of e)tt({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 sh(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 ih(e=u){let t=R?.getState();return Xp({localPendingRunId:e?.pendingRun?.id,sharedActiveRunId:t?.activeRun?.runId,sharedTaskId:t?.task?.taskId||t?.activeTaskId,activeTaskId:e?.activeTask?.taskId||e?.activeTaskId})}function kt(e,t){let n=qi(e?{text:e,runId:t?.runId||u?.pendingRun?.id,taskId:t?.taskId||u?.activeTask?.taskId||Ic()?.taskId,stage:t?.stage,ts:Date.now()}:void 0,{runId:t?.runId||u?.pendingRun?.id,taskId:t?.taskId||u?.activeTask?.taskId||Ic()?.taskId}),r=sh(n,{activeRunId:ih(u),activeTaskId:u?.activeTask?.taskId,taskStatus:u?.activeTask?.status});r?K?.setStatus(r):K?.setStatus?.(void 0),u&&(u.uiStatus=n?.text,u.transientStatus=n,Dc(),Se({markCheckpointDirty:!1})),R&&t?.publishShared!==!1&&R.setStatus(n)}function Uc(e=u){let t=sh(e?.transientStatus,{activeRunId:ih(e),activeTaskId:e?.activeTask?.taskId,taskStatus:e?.activeTask?.status});t?K?.setStatus(t):K?.setStatus?.(void 0)}function jo(e,t){let n=Hi(e);at=n;let r=t?.localLogicalTabId??R?.getLocalLogicalTabId(),o=t?.activeLogicalTabId??R?.getActiveLogicalTabId(),s=t?.holderRuntimeId??R?.getCurrentHolderRuntimeId(),i=n==="controller"&&!!(C?.allowActions??!0);Ke?.setAllowActions(i),Ke?.setActionGateContext?.({mode:n,controllerRuntimeId:s,activeLogicalTabId:o,localLogicalTabId:r,reason:Fi(n,i)}),u&&(u.executionMode=n,Se()),cr(),K?.setExecutionMode(n,{controllerRuntimeId:s,localLogicalTabId:r,activeLogicalTabId:o,canTakeControl:!0,canComposeInObserver:Xm(),note:Km(n)}),We("mode_change",{mode:n,rawMode:e,...t})}function _t(e){u&&(e?u.pendingRun=je({...e,taskBoundaryId:e.taskBoundaryId||Me}):(u.pendingRun=void 0,u.uiStatus=void 0,u.transientStatus=void 0,co(void 0),Ru(u)||zo()),Ui(u),cr(),Se())}function eu(e){u&&(u.lastNavigationHandoff=Gr(e),Se())}function Fc(){let e=Number(R?.getLocalLogicalTabId()||R?.getActiveLogicalTabId()||1);return!Number.isFinite(e)||e<=0?1:e}function Mn(e){if(!u)return;let t=Ce(Me)||ir();Me||(Me=t);let n=Fc(),r=e?.appendSeed!==!1,o=Fs(u.taskTabScope,t);if(!!e?.forceReset||!o||Ce(o.boundaryId)!==t){let c={boundaryId:t,seedTabId:n,touchedTabIds:[n],updatedAt:Date.now()};return u.taskTabScope=c,e?.persist!==!1&&Se(),c}let i=Cn(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&&Se(),a}function ah(e,t){if(!u)return;let n=Mn({persist:!1});if(!n)return;let r=Cn([n.seedTabId,...n.touchedTabIds||[],...e]),o={...n,touchedTabIds:r.slice(0,24),updatedAt:Date.now()};return u.taskTabScope=o,t?.persist!==!1&&Se(),o}function Mk(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 Go(e){if(!u)return;let t=Mn({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 O=Number(T?.logicalTabId);if(!Number.isFinite(O)||O<=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(O);continue}if(T.external){A<=fT&&o.add(O);continue}if(T.detachedReason==="navigation_handoff"){A<=pT&&o.add(O);continue}if(T.detachedReason==="opened_pending_attach"){A<=mT&&o.add(O);continue}}let s=Number(R.getLocalLogicalTabId()),i=Number(R.getActiveLogicalTabId()),a=Number(t.seedTabId)>0?Number(t.seedTabId):Fc();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=Cn(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=Cn(l).slice(0,24);if(!(d!==t.seedTabId||!Mk(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&&Se(),zt("status",{event:"scoped_tab_reconciled",removedTabIds:m,scopedTabIds:g.touchedTabIds,seedTabId:g.seedTabId}),g}function Ai(){let e=Go({persist:!1})||Mn({persist:!1,appendSeed:!1});if(!e)return[Fc()];let t=Cn(e.touchedTabIds);return t.length?t:[e.seedTabId]}function ch(){let e=Go({persist:!1})||Mn({persist:!1,appendSeed:!1});if(e)return{boundaryId:e.boundaryId,seedTabId:e.seedTabId,touchedTabIds:Cn(e.touchedTabIds)}}function Nk(e,t){let n=Wo,r=$o,o=Ns,s,i=t;if(X){let l=X.listTasks(),d=X.getActiveTask()?.taskId,p=R?.getLocalLogicalTabId(),v=l.filter(T=>T.taskId!==d&&(T.state==="completed"||T.state==="cancelled")&&!!T.endedAt).sort((T,O)=>(Number(O.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=am({mode:a?.mode,previousTaskStatus:i,previousTaskMessages:s,previousTaskUserInput:n,previousTaskAssistantOutput:r,previousTaskCompletedAt:o,currentPrompt:e,ttlMs:Nu(a?.ttlMs),minLexicalOverlap:Lu(a?.minLexicalOverlap)});return{chatLog:c.chatLog,reason:c.reason,overlap:c.overlap}}var Tr=new Map,Tu=xT;async function Lk(e){if(Tr.has(e)){let o=Tr.get(e);if(Date.now()-o.ts<Tu)return;Tr.delete(e)}let t=Date.now();for(let[o,s]of Tr)t-s.ts>=Tu&&Tr.delete(o);let n=u?.pendingRun?.id;if(!n||!ve)return;let r=await ve.fetchExternalContext({runId:n,url:e,source:"direct_url"});r&&(Tr.set(e,{data:r,ts:Date.now()}),Im(Tr,IT))}function Dk(e){let t=Tr.get(e);if(t){if(Date.now()-t.ts>=Tu){Tr.delete(e);return}return t.data}}function Ok(e){let t=String(e||"").trim();return t===cu.read||t===cu.act}function vi(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 Pk(e){let t=String(e.call?.name||"").trim(),n=e.call?.args&&typeof e.call.args=="object"?e.call.args:{},r=t===cu.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 vi({code:"MISSING_URL",message:"External context tools require a target url or tab with a url.",retryable:!1});if(!ve)return vi({code:"RUNTIME_UNAVAILABLE",message:"Rover server runtime is not initialized.",retryable:!0});let v=String(u?.pendingRun?.id||ve.getActiveRunId()||Bi||"").trim()||void 0;if(!v)return vi({code:"NO_ACTIVE_RUN",message:"External context tools can only run during an active run.",retryable:!1});try{let m=Dk(l);if(m)return m;let g=await ve.fetchExternalContext({runId:v,tabId:s,url:l,intent:r,message:d,source:p});if(!g)return vi({code:"EMPTY_RESPONSE",message:"Server returned no external context response.",retryable:!0});let O=(g.pageData&&typeof g.pageData=="object"?g.pageData:void 0)||g;return{success:!0,output:{...O,metadata:{...O&&typeof O=="object"?O.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),O=T>=500||g==="STALE_SEQ"||g==="STALE_EPOCH";return vi({code:g,message:String(m?.message||"External context request failed"),retryable:O,status:Number.isFinite(T)?T:void 0,details:m?.details})}}function Xo(e){let t=Ai();return{taskBoundaryId:Me,taskTabScope:ch(),scopedTabIds:t,...e||{}}}var ym="";function Wn(e){if(!Ue)return;let t=Xo(e),n=JSON.stringify(t);n!==ym&&(ym=n,Ue.postMessage({type:"update_config",config:t}))}function lh(e,t){let n=String(e||"").trim();if(!n||!Ue)return;if(at==="observer"){if(xr()){qn("system","This tab is read-only while another tab is actively running Rover.",!0),tt({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)){qn("system","Unable to take control right now because another tab is still running Rover actions.",!0),tt({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(),O=R?.getCurrentHolderRuntimeId()||ze;jo("controller",{localLogicalTabId:g,activeLogicalTabId:T,holderRuntimeId:O});let N=!!(C?.allowActions??!0);Ke?.setAllowActions(N),Ke?.setActionGateContext?.({mode:"controller",controllerRuntimeId:O,activeLogicalTabId:T,localLogicalTabId:g,reason:Fi("controller",N)})}let r=t?.runId||crypto.randomUUID(),o=!!t?.resume,s=t?.appendUserMessage!==!1,a=(t?.askUserAnswers?rk(r):void 0)||n;mu(r),s&&qn("user",n,!0);let c=u?.pendingRun?.id===r?u.pendingRun.attempts:0,l=u?.pendingRun?.id===r&&u.pendingRun.taskBoundaryId||Me;ah([Fc()],{persist:!0});let d=Ai(),p=Ir(Array.isArray(t?.seedChatLog)?t.seedChatLog:kk());kr=!1,_t({id:r,text:a,startedAt:Date.now(),attempts:o?c+1:0,autoResume:t?.autoResume!==!1,taskBoundaryId:l,resumeRequired:!1,resumeReason:void 0}),rh(o?"worker_task_resumed":"worker_task_active"),Vt=a,u&&(u.workerState=Nt({...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(Wi(u.workerState))),nh(p),R?.acquireWorkflowLock(r),R?.setActiveRun({runId:r,text:a}),Ue.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:ch()}),gt&&clearTimeout(gt);let v=r;gt=setTimeout(()=>{u?.pendingRun?.id===v&&(Wu({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"}}),qn("system","Task timed out after 5 minutes with no response.",!0)),gt=null},5*6e4)}async function Bk(e,t){let n=nk(e,t?.askUserAnswers);if(!n)return;Ck();let r=u?.activeTask?.status,o=jr(u?.workerState?.pendingAskUser?.questions).length,s=u?.workerState?.pendingAskUser?.boundaryId,i=sm({startNewTask:!!t?.startNewTask,taskStatus:r,pendingAskUserQuestionCount:o,hasAskUserAnswers:!!t?.askUserAnswers,pendingAskUserBoundaryId:s,currentTaskBoundaryId:Me}),a=!i,c=a?t?.continueRunId||u?.pendingRun?.id||ve?.getActiveRunId():void 0,l=i?Nk(n,r):{reason:"mode_disabled",overlap:0},d=Ir(l.chatLog);if(zt("status",{event:"task_boundary_decision",startFreshTask:i,askUserContinuation:a,pendingAskUserQuestionCount:o,activeTaskStatus:r||"none"}),zt("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(zt("status",{event:"task_boundary_reset",reason:g,hadActiveRun:m}),X&&r==="running"){let T=X.getActiveTask();T&&(T.uiMessages=u?.uiMessages||[],T.timeline=u?.timeline||[],T.rootUserInput=T.rootUserInput||Vt)}if(ji({reason:g,clearUi:!0}),X){let T=X.getActiveTask();T&&(T.rootUserInput=n,T.seedChatLog=d),so()}m&&ve&&await new Promise(T=>setTimeout(T,50))}Tn();let p=c,v=t?.routing;if(ve&&C)try{let m=await ve.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))&&(Hr=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"&&ve&&i){let O=m?.conflict?.runId||m.runId;if(O){await ve.controlRun({action:"cancel",runId:O,reason:"stale_run_cleanup"});let N=await ve.submitRunInput({message:n,clientEventId:crypto.randomUUID(),continueRun:!1,forceNewRun:!0,requestedMode:t?.routing||C.taskRouting?.mode||"act"});N?.runId&&(p=N.runId.trim(),co(p),(N.acceptedMode==="act"||N.acceptedMode==="planner")&&(v=N.acceptedMode))}}if(!p){let O=String(m.decisionReason||T||m.message||"run_not_accepted").trim();throw new Error(`Server did not accept this run (${O}).`)}}p||(p=g),co(p),(m.acceptedMode==="act"||m.acceptedMode==="planner")&&(v=m.acceptedMode)}catch(m){let g=String(m?.message||"server run submission failed");co(void 0),tt({kind:"error",title:"Run start failed",detail:g,status:"error"}),qn("system",`Unable to start task: ${g}`,!0),kt(`Task could not start (${g})`),We("error",{message:g,scope:"run_input"});return}lh(n,{runId:p,appendUserMessage:!0,resume:!1,preserveHistory:!1,seedChatLog:d,autoResume:!0,routing:v,askUserAnswers:t?.askUserAnswers})}function Ei(e,t){Bk(e,t)}function Ti(e,t){Wu({reason:e,statusText:t||e,cancelReason:e})}function $u(e){let t=String(e||"").trim();if(!t)return!1;let n=R?.getWorkflowLockInfo();if(!n?.locked||!n.holderRuntimeId||n.holderRuntimeId===ze||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 ki(e=450,t){it||(it=setTimeout(()=>{it=null,wr(t)},Math.max(120,e)))}function Uk(e,t){sr=!0,Qt=!1,cn=!1,Tn(),kt("Resuming interrupted task...");let n=e.text?.trim()||u?.workerState?.rootUserInput?.trim()||Vt?.trim()||"Continue the current task on this page";zt("status",{event:"resume_dispatch",source:t,runId:e.id}),lh(n,{runId:e.id,resume:!0,appendUserMessage:!1,autoResume:!0})}function wr(e){if(!u?.pendingRun){it&&(clearTimeout(it),it=null),an=0;return}let t=je(u.pendingRun);if(!t||(at==="observer"&&!xr()&&jo("controller",{localLogicalTabId:R?.getLocalLogicalTabId(),activeLogicalTabId:R?.getActiveLogicalTabId(),holderRuntimeId:R?.getCurrentHolderRuntimeId()}),at==="observer")||sr)return;if(!$n||!Ue){ki(250,e);return}let n=u.activeTask?.status;if(Vl(n)){Ti("terminal_task","Previous task already ended.");return}if(!Ya(n)||!t.autoResume)return;if(Cu(C?.task?.resume?.mode)!=="crash_only"){Ti("unsupported_resume_mode","Previous task dismissed.");return}if(t.resumeRequired!==!0){let l=Date.now()-Number(t.startedAt||0),d=_c(C?.task?.resume?.ttlMs);if(Number.isFinite(l)&&l>=0&&l<d)t.resumeRequired=!0,t.resumeReason=t.resumeReason||"worker_interrupted",_t(t);else{it&&(clearTimeout(it),it=null),an=0,Tn();return}}let o=Au(C?.task?.autoResumePolicy),s=$u(t.id),i=Op({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"){ki(650,e);return}if(i==="cancel_resume"){Ti("resume_policy_never","Previous task cancelled by resume policy."),tt({kind:"info",title:"Resume cancelled",detail:"Auto-resume policy is set to never, so the interrupted run was cancelled.",status:"info"});return}if(!cn&&MT(t)&&(cn=!0),!cn&&(t.resumeReason==="worker_interrupted"||t.resumeReason==="agent_navigation"||t.resumeReason==="page_reload")&&(cn=!0),!cn&&NT(t)){ki(320,e);return}if(cn||(cn=!0),s){ki(650,e);return}if(it&&(clearTimeout(it),it=null),!Ms&&!e?.overridePolicyAction){if(an+=1,zt("status",{event:"resume_blocked_no_session",reason:"session_not_ready",attempt:an,runId:t.id}),an<Jv){kt("Preparing secure resume...");let l=Math.min(2e3,240+an*160);ki(l,e);return}an=0,Qt=!1,Ms=!0}an=0;let a=_c(C?.task?.resume?.ttlMs),c=Date.now()-Number(t.startedAt||0);if(!Number.isFinite(c)||c<0||c>a){Ti("resume_ttl_expired","Previous task expired.");return}if(t.attempts>=Gv){Ti("resume_attempt_limit","Previous task dismissed.");return}if(i==="prompt_resume"){Sk(t)&&(kt("Resume available. Choose Resume or Cancel."),zt("status",{event:"resume_prompt_shown",runId:t.id}));return}Uk(t,e?.overridePolicyAction==="auto_resume"?"manual_resume_confirm":`policy_${o}`)}function uh(e){if(!Gl({localUpdatedAt:Number(e.localState.updatedAt)||0,incomingUpdatedAt:Number(e.incomingState.updatedAt)||0,localState:e.localState,incomingState:e.incomingState,crossDomainResumeActive:!!e.allowRicherIncomingOnResume&&Qt}))return!1;if(!e.allowRicherIncomingOnResume||!Qt)return!0;let n=jl({localState:e.localState,incomingState:e.incomingState});return n.exactRunMatch||n.exactBoundaryMatch?!0:!(n.localRunId||n.localBoundaryId)}function vm(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 dh(e){return e.incomingWorkerState?e.localWorkerState?Gl({localUpdatedAt:Number(e.localUpdatedAt)||Number(e.localWorkerState.updatedAt)||0,incomingUpdatedAt:Number(e.incomingUpdatedAt)||Number(e.incomingWorkerState.updatedAt)||0,localState:vm(e.localWorkerState,e.fallbackPendingRun,e.taskStatus,e.taskEpoch,{includePendingIdentity:!0}),incomingState:vm(e.incomingWorkerState,void 0,e.taskStatus,e.taskEpoch,{includePendingIdentity:!1}),crossDomainResumeActive:!!e.allowRicherIncomingOnResume&&Qt}):!0:!1}function fh(e){if(ho(e.localState.activeTask,ln("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(Vo(e.localState)),s=Ce(Vo(e.incomingState));return o&&s?o===s:!(o&&!s||!o&&s)}async function Fk(e,t){if(!u)return;let n=await dk(e,t);if(!n||!u)return;let r=Li({...n,sessionId:u.sessionId,runtimeId:ze},u.sessionId,ze);if(!uh({localState:u,incomingState:r,allowRicherIncomingOnResume:!0})||!fh({localState:u,incomingState:r}))return;let o=Math.max(1,Number(u.taskEpoch)||1),s=Math.max(1,Number(r.taskEpoch)||1),i=Vo(r);qo({source:"indexeddb_checkpoint",incomingBoundaryId:i,taskEpochAdvanced:s>o,allowBootstrapAdoption:!0})&&(u=Li({...u,...r,sessionId:u.sessionId,runtimeId:ze},u.sessionId,ze),Ui(u),Ls({rotateIfMissing:!Me}),Go({persist:!1}),Hu({preferredTaskId:r.activeTaskId||r.activeTask?.taskId}),Se(),K&&(K.clearMessages(),Pc(u.uiMessages),Bc(u.timeline),Uc(u),Bs(),u.uiHidden?K.hide():(K.show(),u.uiOpen?K.open():K.close())),$n&&Ue&&Wn(),$n&&Ue&&u.workerState&&at==="controller"&&(Ue.postMessage({type:"hydrate_state",state:u.workerState}),We("context_restored",{source:"indexeddb_checkpoint",ts:Date.now()})))}var tu=!1;function Vu(e,t){if(u&&!tu){tu=!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||ln("shared_sync");u.activeTask=Zm(e.task,i),s&&(u.uiMessages=[],u.timeline=[],qu(),_t(void 0),u.workerState=void 0,Me=ir(),u.taskTabScope=void 0,Mn({forceReset:!0,persist:!1}),Wn(),Tn());let a=rr(e.uiMessages),c=new Set(a.map(S=>S.id)),l=u.uiMessages,d=u.uiMessages.filter(S=>S.role==="user"&&S.sourceRuntimeId===ze&&!c.has(S.id)).length;d>0&&zt("status",{event:"local_message_preserved",count:d});let p=pk(l,a);(p.length!==l.length||p.some((S,H)=>{let V=l[H];return V?V.id!==S.id||V.ts!==S.ts||V.role!==S.role||V.text!==S.text:!0}))&&(u.uiMessages=p,K?.clearMessages(),Pc(u.uiMessages));let m=or(e.timeline),g=u.timeline,T=hk(g,m);(T.length!==g.length||T.some((S,H)=>{let V=g[H];return V?V.id!==S.id||V.ts!==S.ts||V.kind!==S.kind||V.title!==S.title||V.detail!==S.detail:!0}))&&(u.timeline=T,Bc(u.timeline)),kt(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!==ze&&!$l({localTaskStatus:N,remoteTaskStatus:A,mode:at,hasRemoteActiveRun:!0}))if(String(e.activeRun.runtimeId||"").trim()!==""||xr()||Hi(at)==="observer")_t(void 0);else{let V=je(u.pendingRun),J=Ce(e.workerContext?.taskBoundaryId),se=V?.id===e.activeRun.runId&&(!V?.taskBoundaryId||Ce(V.taskBoundaryId)===(J||Ce(Me))),he=se?V?.resumeRequired===!0:String(e.activeRun.runtimeId||"").trim()==="";_t(je({id:e.activeRun.runId,text:e.activeRun.text,startedAt:e.activeRun.startedAt,attempts:se&&V?.attempts||0,autoResume:!0,taskBoundaryId:(se?V?.taskBoundaryId:void 0)||J||V?.taskBoundaryId||Me,resumeRequired:he,resumeReason:se?V?.resumeReason:he?"agent_navigation":void 0}))}else{let S=$l({localTaskStatus:N,remoteTaskStatus:A,mode:at,hasRemoteActiveRun:!!e.activeRun}),V=je(u.pendingRun)?.resumeRequired===!0&&Ya(N);S&&!V&&(u.pendingRun?.id&&mo(u.pendingRun.id),_t(void 0),A&&A!=="running"&&$i())}if(at==="observer"&&jo("observer",{localLogicalTabId:R?.getLocalLogicalTabId(),activeLogicalTabId:R?.getActiveLogicalTabId(),holderRuntimeId:R?.getCurrentHolderRuntimeId()}),e.workerContext){let S=Nt(e.workerContext),H=Number(u.workerState?.updatedAt)||0,V=Number(S?.updatedAt)||0;S&&dh({localWorkerState:u.workerState,incomingWorkerState:S,fallbackPendingRun:je(u.pendingRun),taskStatus:u.activeTask?.status,taskEpoch:u.taskEpoch,localUpdatedAt:H,incomingUpdatedAt:V,allowRicherIncomingOnResume:!0})&&qo({source:"shared_worker_context",incomingBoundaryId:S.taskBoundaryId,taskEpochAdvanced:s,allowBootstrapAdoption:!0})&&(u.workerState=nr(S,vn()),Ls(),$n&&Ue&&at==="controller"&&(Wn(),Ue.postMessage({type:"hydrate_state",state:u.workerState}),We("context_restored",{source:"shared_session",ts:Date.now()})))}}if(u.uiMessages=rr(u.uiMessages),u.timeline=or(u.timeline),u.workerState=nr(Nt(u.workerState),vn()),Ui(u),Ls(),Go({persist:!1}),$n&&Ue&&at==="controller"&&Wn(),cr(),Bs(),u.activeTask=ho(u.activeTask,ln("implicit")),Hu(),R&&X){let r=new Map;for(let o of X.listTasks())for(let s of o.tabIds)r.set(s,o.taskId);R.setTaskTabMapping(r)}let n=C?.ui?.tabIndicator?.widgetTabBar!==!1;if(K&&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:X?.getTaskForTab(i.logicalTabId)?.taskId}));s.length>1?K.setTabs(s):K.setTabs([])}else K&&K.setTabs([]);if(t==="local")return;Se()}finally{tu=!1}}}function zu(e){let t=ln("checkpoint_clone");return{version:_u,sessionId:e.sessionId,runtimeId:e.runtimeId,uiOpen:!!e.uiOpen,uiHidden:!!e.uiHidden,uiStatus:typeof e.uiStatus=="string"?Zt(e.uiStatus,300):void 0,transientStatus:qi(e.transientStatus??e.uiStatus,{runId:e.pendingRun?.id,taskId:e.activeTask?.taskId}),uiMessages:rr(e.uiMessages),timeline:or(e.timeline),executionMode:e.executionMode==="observer"||e.executionMode==="controller"?e.executionMode:"controller",workerState:Nt(e.workerState),pendingRun:je(e.pendingRun),taskTabScope:Fs(e.taskTabScope,je(e.pendingRun)?.taskBoundaryId||Nt(e.workerState)?.taskBoundaryId),lastNavigationHandoff:Gr(e.lastNavigationHandoff),tasks:e.tasks?{...e.tasks}:{},activeTaskId:e.activeTaskId,taskOrder:e.taskOrder?[...e.taskOrder]:[],taskEpoch:Math.max(1,Number(e.taskEpoch)||1),activeTask:ho(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 Hk(e){return!(e.sessionScope==="tab"||e.checkpointing?.enabled===!1||!ar(e)||!Mt)}function qk(){if(!u||!C||!Mt)return null;let e=R?.getState(),t=zu(u),n=Math.max(Number(e?.updatedAt||0),Number(t.updatedAt||0)),r=n>0?n:Date.now();return{version:km,siteId:C.siteId,visitorId:Mt,sessionId:u.sessionId,updatedAt:r,sharedState:e,runtimeState:t}}function ph(e){if(!e||typeof e!="object"||!u||!C||e.siteId&&e.siteId!==C.siteId||Mt&&e.visitorId&&e.visitorId!==Mt)return;let t=typeof e.sessionId=="string"&&e.sessionId.trim()?e.sessionId.trim():u.sessionId;Cs=!0;try{if(t&&u.sessionId!==t&&(u.sessionId=t,C={...C,sessionId:t},xc(C),Wn({sessionId:t})),e.sharedState&&R&&R.hydrateExternalState(e.sharedState)&&(Vu(R.getState(),"remote"),jo(R.getRole(),{localLogicalTabId:R.getLocalLogicalTabId(),activeLogicalTabId:R.getActiveLogicalTabId(),holderRuntimeId:R.getCurrentHolderRuntimeId()})),e.runtimeState&&typeof e.runtimeState=="object"){let n=Li({...e.runtimeState,sessionId:t,runtimeId:ze},t,ze);if(uh({localState:u,incomingState:n,allowRicherIncomingOnResume:!0})){if(!fh({localState:u,incomingState:n}))return;let r=Math.max(1,Number(u.taskEpoch)||1),o=Math.max(1,Number(n.taskEpoch)||1),s=Vo(n);if(!qo({source:"cloud_checkpoint",incomingBoundaryId:s,taskEpochAdvanced:o>r,allowBootstrapAdoption:!0}))return;u=Li({...u,...n,sessionId:t,runtimeId:ze},t,ze),Ui(u),Ls(),u.workerState=nr(u.workerState,vn()),Go({persist:!1}),Hu({preferredTaskId:n.activeTaskId||n.activeTask?.taskId}),Se(),Uc(u),u.uiHidden?K?.hide():(K?.show(),u.uiOpen?K?.open():K?.close()),$n&&Wn(),$n&&u.workerState&&(Ue?.postMessage({type:"hydrate_state",state:u.workerState}),We("context_restored",{source:"cloud_checkpoint",ts:Date.now()})),at==="controller"&&wr(),Qt=!1}}}finally{Cs=!1}}function ju(e){if(ht?.stop(),ht=null,!Hk(e)||!Mt)return;let t=ar(e);if(!t){We("checkpoint_token_missing",{reason:"missing_or_invalid_session_token",expectedPrefix:"rvrsess_",action:"disabled_cloud_checkpoint_client"});return}try{let n=r=>{We("checkpoint_state",r),e.checkpointing?.onStateChange?.(r)};ht=new ja({apiBase:e.apiBase,authToken:t,getSessionToken:()=>ar(C),shouldSync:()=>at==="controller"&&!Qt&&!Os(),siteId:e.siteId,visitorId:Mt,ttlHours:e.checkpointing?.ttlHours??1,flushIntervalMs:e.checkpointing?.flushIntervalMs,pullIntervalMs:e.checkpointing?.pullIntervalMs,minFlushIntervalMs:e.checkpointing?.minFlushIntervalMs,maxSnapshotBytes:Ds(e.stability?.maxSnapshotBytes,pt.snapshotBytes),shouldWrite:()=>at==="controller"&&!Qt&&!Os(),buildCheckpoint:()=>qk(),onCheckpoint:r=>{ph(r)},onStateChange:(r,o)=>{n({state:r,reason:o.reason,action:o.action,code:o.code,message:o.message}),r==="paused_auth"&&We("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||We("checkpoint_error",{action:o.action,code:o.code,message:o.message,status:o.status,disabled:!1,reason:"transient_failure"})}}),ht.start(),ht.markDirty(),Vm()}catch{ht=null}}function xc(e){if(!u)return;if(R?.stop(),R=null,e.sessionScope==="tab"){jo("controller");return}R=new $a({siteId:e.siteId,sessionId:u.sessionId,runtimeId:ze,leaseMs:e.tabPolicy?.actionLeaseMs,onRoleChange:(r,o)=>{let s=Hi(r);jo(s,o);let i=er;er=s==="controller",i!==er&&(er?(cr(!0),C&&Uu(C)):cr(!0));let a=s==="controller"&&(C?.allowActions??!0);if(Ke?.setAllowActions(a),Ke?.setActionGateContext?.({mode:s,controllerRuntimeId:o?.holderRuntimeId??R?.getCurrentHolderRuntimeId(),activeLogicalTabId:o?.activeLogicalTabId??R?.getActiveLogicalTabId(),localLogicalTabId:o?.localLogicalTabId??R?.getLocalLogicalTabId(),reason:Fi(s,a)}),s==="controller"){Mn({persist:!0,appendSeed:!1}),Go({persist:!0});let c=R?.getWorkerContext();if(c){let l=Nt(c),d=Number(u?.workerState?.updatedAt)||0,p=Number(l?.updatedAt)||0;l&&p>d+100&&qo({source:"controller_handoff",incomingBoundaryId:l.taskBoundaryId,allowBootstrapAdoption:!0})&&(u&&(u.workerState=nr(l,vn()),Ls(),Se()),$n&&Ue&&(Wn(),Ue.postMessage({type:"hydrate_state",state:u?.workerState}),We("context_restored",{source:"controller_handoff",ts:Date.now()})))}wr()}},onStateChange:(r,o)=>{Vu(r,o)},onSwitchRequested:r=>{r>0&&(zi(),tt({kind:"status",title:`Switched to tab #${r}`,status:"info"}))},onTaskTabsExhausted:r=>{X&&(X.dispatch(r,{type:"PAUSE",reason:"all_tabs_closed"}),so(),Se(),K?.showPausedTaskBanner({taskId:r,rootUserInput:X.getTask(r)?.rootUserInput||"Task"}))}}),R.onSessionTokenReceived=(r,o)=>{er||Ec(r,o)},R.onProjectionReceived=r=>{!er&&r&&pu(r)};let t=xu();R.start(Sm(t)),Mn({persist:!0,appendSeed:!1}),Go({persist:!0}),je(u?.pendingRun)?.resumeRequired===!0&&R.requestControl(),u?.lastNavigationHandoff&&t&&(u.lastNavigationHandoff=Gr({...u.lastNavigationHandoff,consumed:!0}),Se()),R.setRpcRequestHandler(async r=>{if(!Ke)throw new Error("Bridge not available");if(r.method==="getPageData")return Ke.getPageData(r.params);if(r.method==="executeTool")return Ke.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(Wi(u.workerState))}function Wk(e){e&&to.delete(e),K?.clearTimeline(),u&&(u.timeline=[]),R?.clearTimeline()}function $k(e){if(!(!e||typeof e!="object")&&!tk(e)){if(e.type==="assistant"){let t=fo(e.blocks),n=String(e.text||Ym(t)||"");typeof e.runId=="string"&&e.runId&&(to.set(e.runId,n),Im(to,ET)),qn("assistant",n,!0,{blocks:t}),tt({kind:"tool_result",title:"Assistant update",detail:n,detailBlocks:t,status:"success"});return}if(e.type==="status"){let t=VT(e.stage),n=e.message?String(e.message):void 0,r=e.compactThought?String(e.compactThought):void 0,o=jT(n,t,r);if(n&&kt(n,{runId:typeof e.runId=="string"?e.runId:u?.pendingRun?.id,taskId:u?.activeTask?.taskId,stage:t}),o&&o!==nc&&(nc=o,n)){let s=!!(e.thought||r),i=r||(e.thought?String(e.thought):"");if(s&&t!=="analyze"&&t!=="route"&&t!=="complete"&&!GT(i,Vt))tt({kind:"thought",title:i,detail:e.thought?String(e.thought):r,status:"pending"});else{let c=t?`${zT(t)}: ${n}`:n;tt({kind:"status",title:c,detail:r||(e.thought?String(e.thought):void 0),status:t==="complete"?"success":"info"})}}We("status",e);return}if(e.type==="runtime_tabs_diagnostics"){let t=e?.diagnostics&&typeof e.diagnostics=="object"?e.diagnostics:{},n=Cn(t.keptScopedTabIds||[]),r=Cn(t.listedTabIds||[]),o=Cn(t.resolvedTabOrder||[]),s=n.filter(i=>!r.includes(i));s.length>0&&(tt({kind:"status",title:"Scoped tab placeholder retained",detail:`missing_in_listing=${s.join(",")}; resolved_order=${o.join(",")||"none"}`,status:"info"}),zt("status",{event:"scoped_tab_missing_from_listing",missingScopedTabIds:s,listedTabIds:r,resolvedTabOrder:o}));return}if(e.type==="tool_start"){tt({kind:"tool_start",title:`Running ${e.call?.name||"tool"}`,detail:pc(e.call?.args),status:"pending"}),We("tool_start",e);return}if(e.type==="tool_result"){if(!uk(e.result)){let n=Cn([...ck(e.call?.args),...lk(e.result)]);n.length&&(ah(n,{persist:!0}),Wn())}let t=fo(e.detailBlocks)||ak(e.result);tt({kind:"tool_result",title:`${e.call?.name||"tool"} completed`,detail:pc(e.result),detailBlocks:t,status:e?.result?.success===!1?"error":"success"}),We("tool_result",e);return}if(e.type==="auth_required"){We("auth_required",e.error),e.error?.message&&(qn("system",`Auth required: ${e.error.message}`,!0),tt({kind:"error",title:"Auth required",detail:String(e.error.message),status:"error"}));return}if(e.type==="navigation_guardrail"){We("navigation_guardrail",e),tt({kind:"status",title:"Navigation guardrail",detail:pc(e),status:"info"});return}if(e.type==="error"){qn("system",`Error: ${e.message||"unknown"}`,!0),tt({kind:"error",title:"Execution error",detail:String(e.message||"unknown"),status:"error"}),We("error",e);return}if(e.type==="state_snapshot"){if(u){let t=Nt({...e.state||{},updatedAt:Date.now()});if(!t||!qo({source:"worker_snapshot",incomingBoundaryId:t.taskBoundaryId,allowBootstrapAdoption:!0}))return;u.workerState=nr(t,vn());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=Up({taskStatus:u.activeTask?.status,hasPendingRun:!!u.pendingRun,activeRunId:n,activeRunText:r,ignoredRunIds:tr});if(o&&(u.pendingRun=je({id:n,text:r,startedAt:e.activeRun.startedAt,attempts:0,autoResume:!0})),n&&r&&o?R?.setActiveRun({runId:n,text:r}):n&&(!no()||tr.has(n))&&R?.setActiveRun(void 0),!no()&&u.pendingRun&&_t(void 0),u.workerState&&R?.setWorkerContext(Wi(u.workerState)),X&&t?.taskBoundaryId){let s=X.getTaskByBoundaryId(t.taskBoundaryId);s&&(s.workerState=u.workerState,n&&(s.pendingRun=u.pendingRun))}Bs(),Se()}return}if(e.type==="task_started"){We("task_started",{taskId:e.taskId,reason:"worker"});return}if(e.type==="run_started"){if(nc="",Tn(),typeof e.runId=="string"&&e.runId&&to.delete(e.runId),!no()){R?.setActiveRun(void 0);return}let t=u?.pendingRun,n=typeof e?.taskBoundaryId=="string"?Ce(e.taskBoundaryId):void 0;typeof e.runId=="string"&&e.runId&&mu(e.runId),_t(je({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})),R?.setActiveRun({runId:e.runId,text:String(e.text||"")}),K?.setRunning(!0),K?.setQuestionPrompt(void 0);let r=`run:${String(e.runId||"")}:start`;if(u?.timeline.some(o=>o.id===r)||tt({id:r,kind:"plan",title:e.resume?"Run resumed":"Run started",detail:String(e.text||""),status:"pending"}),X&&n){let o=X.getTaskByBoundaryId(n);o&&(o.pendingRun=u?.pendingRun,X.dispatch(o.taskId,{type:"START"}))}return}if(e.type==="run_completed"||e.type==="run_state_transition"){nc="",sr=!1,an=0;let t=ok(e),n=t.terminalState,r=t.continuationReason,o=e?.ok===!1||n==="completed"||n==="failed",s=!o&&n==="in_progress"&&r!=="awaiting_user";K?.setRunning(s),gt&&(clearTimeout(gt),gt=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=je(u?.pendingRun),l=String(c?.text||Vt||"").trim(),d=String((i?to.get(i):"")||"").trim();Wo=l||Wo,$o=d||$o,Ns=Date.now(),c?.id&&R?.releaseWorkflowLock(c.id),i&&R?.releaseWorkflowLock(i),_t(void 0),co(void 0),R?.setActiveRun(void 0),Tn(),i&&mo(i)}else if(no()&&i){mu(i),co(i);let c=u?.pendingRun,l=c?.id===i&&c?.text?c.text:Vt||c?.text||"Continue task";_t(je({id:i,text:l,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})),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"?Zt(e.route.reason,200):void 0,ts:Date.now()},Se()),!e.ok&&e.error){if(i&&to.delete(i),i&&(uo(i,"worker_run_failed",{attemptImmediately:!0}),ve?.controlRun({action:"cancel",runId:i,reason:"worker_run_failed"})),!no())return;K?.setQuestionPrompt(void 0),t.contextResetRecommended?(sc("worker_run_failed_terminal"),R?.resetTabsToCurrent(window.location.href,document.title||void 0),kt(void 0)):(sc("worker_run_failed_terminal"),kt(void 0)),i&&to.delete(i),tt({kind:"error",title:"Run failed",detail:String(e.error),status:"error"})}else if(e.ok){if(!no())return;let c=t.taskComplete,l=t.needsUserInput,d=t.questions||jr(e.questions),p=jr(u?.workerState?.pendingAskUser?.questions),v=d.length?d:l?p:[];if(n==="failed")i&&(uo(i,"worker_terminal_failed",{attemptImmediately:!0}),ve?.controlRun({action:"cancel",runId:i,reason:"worker_terminal_failed"})),K?.setQuestionPrompt(void 0),t.contextResetRecommended?(sc("worker_run_failed_terminal"),R?.resetTabsToCurrent(window.location.href,document.title||void 0),kt(void 0)):(sc("worker_run_failed_terminal"),kt(void 0)),tt({kind:"error",title:"Run failed",detail:typeof e.error=="string"?e.error:"Run reported failure state.",status:"error"});else if(c||n==="completed")i&&ve?.controlRun({action:"end_task",runId:i,reason:"worker_task_complete"}),K?.setQuestionPrompt(void 0),Ik("worker_task_complete"),R?.resetTabsToCurrent(window.location.href,document.title||void 0),kt(void 0),Wk(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(X){let g=X.getActiveTask();g&&X.dispatch(g.taskId,{type:"ASK_USER"})}go({type:"awaiting_user",reason:m,at:Date.now()})}else rh(m);l&&v.length>0?K?.setQuestionPrompt({questions:v}):l?Bs():K?.setQuestionPrompt(void 0),l?(kt(void 0),tt({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"?(kt("Navigating to continue task..."),tt({kind:"status",title:"Navigation handoff",detail:"Rover will resume after same-tab navigation completes.",status:"pending"})):kt("Working...")}}if(X&&a){let c=X.getTaskByBoundaryId(a);if(c)if(o){let l=n==="completed"?{type:"COMPLETE"}:{type:"FAIL",error:typeof e.error=="string"?e.error:void 0};X.dispatch(c.taskId,l),X.releaseWorker(c.taskId)}else t.continuationReason==="awaiting_user"&&X.dispatch(c.taskId,{type:"ASK_USER"})}so();return}if(e.type==="ready"){$n=!0,kt(void 0),We("ready"),C&&gh(C);let t=R?.getWorkerContext(),n=nr(Nt(t),vn()),r=n&&qo({source:"ready_hydrate",incomingBoundaryId:n.taskBoundaryId,allowBootstrapAdoption:!0})?n:void 0,o=nr(Nt(u?.workerState),vn()),s=o&&qo({source:"ready_hydrate",incomingBoundaryId:o.taskBoundaryId,allowBootstrapAdoption:!0})?o:void 0,i=Number(s?.updatedAt)||0,a=Number(r?.updatedAt)||0,c=r&&dh({localWorkerState:s,incomingWorkerState:r,fallbackPendingRun:je(u?.pendingRun),taskStatus:u?.activeTask?.status,taskEpoch:u?.taskEpoch,localUpdatedAt:i,incomingUpdatedAt:a,allowRicherIncomingOnResume:!0})?r:s;u&&(c&&c!==u.workerState?(u.workerState=nr(c,vn()),Se()):!c&&u.workerState&&(u.workerState=void 0,Se())),c?(Ue?.postMessage({type:"hydrate_state",state:c}),We("context_restored",{source:"runtime_start",ts:Date.now()}),setTimeout(()=>{sr||wr()},500)):Qt&&ht?(zt("status",{event:"checkpoint_pull_first"}),ht.syncPullFirst()):wr();return}if(e.type==="hydrated"){wr();return}e.type==="updated"&&We("updated")}}function ku(e,t){let n=Number(e);return Number.isFinite(n)?Math.max(t.min,Math.min(t.max,Math.floor(n))):t.fallback}function Hc(e){if(!e||typeof e!="object")return;let t=ku(e.shortcutMaxStored,{min:1,max:bc,fallback:bc}),n=ku(e.shortcutMaxRendered,{min:1,max:yc,fallback:yc});return{shortcutMaxStored:t,shortcutMaxRendered:n}}function $r(e){return Sa(e)}function Di(e){if(!e)return;let t=$r(Vr?.pageConfig),n=$r(e.pageConfig);return $r({...t||{},...n||{}})}function Vk(e){if(!Ue||!e)return;let t=Di(e),n=JSON.stringify(t||null);n!==ou&&(ou=n,Ue.postMessage({type:"update_config",config:{...Xo(),pageConfig:t}}))}function Vi(){Ii&&(clearTimeout(Ii),Ii=null),xi&&(clearTimeout(xi),xi=null)}function zk(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>cm?null:{shortcuts:po(n.data.shortcuts),greeting:Us(n.data.greeting),limits:Hc(n.data.limits),pageConfig:$r(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>cm?null:{shortcuts:po(n.data)}}catch{return null}}function mh(e,t){try{localStorage.setItem(`rover:site-config:${e}`,JSON.stringify({ts:Date.now(),version:t.version,data:{shortcuts:po(t.shortcuts),greeting:Us(t.greeting),limits:Hc(t.limits),pageConfig:$r(t.pageConfig)}}))}catch{}}function Us(e){if(!e||typeof e!="object")return;let t={},n=String(e.text||"").trim();n&&(t.text=n.slice(0,cT));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 jk(e){if(!e||typeof e!="object")return null;let t=String(e.id||"").trim().slice(0,80),n=String(e.label||"").trim().slice(0,oT),r=String(e.prompt||"").trim().slice(0,iT);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,sT)),e.icon&&(o.icon=String(e.icon).trim().slice(0,aT)),(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 po(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(t.length>=bc)break;let o=jk(r);!o||n.has(o.id)||(n.add(o.id),t.push(o))}return t}function Gk(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 Xk(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 Gk(Array.from(n.values())).slice(0,bc)}function hh(e){let t=ku(Vr?.limits?.shortcutMaxRendered,{min:1,max:yc,fallback:yc});return e.filter(n=>n.enabled!==!1).slice(0,t)}function qc(e){if(!e)return;let t=Us(Vr?.greeting),n=Us(e.ui?.greeting);if(!(!t&&!n))return{...t||{},...n||{}}}function Gu(e){let t=_r?.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 Oi(){if(lo||!K||!C||u?.uiOpen)return;let e=qc(C);if(e?.disabled===!0)return;let t=`rover:greeting-shown:${C.siteId}`;try{if(sessionStorage.getItem(t)){Ho=!0;return}}catch{}if(Ho)return;Vi();let n=e?.delay??3e3,r=e?.duration??8e3,o=Gu(e);Ii=setTimeout(()=>{if(Ii=null,!(lo||u?.uiOpen)){K?.showGreeting(o),Ho=!0;try{sessionStorage.setItem(t,"1")}catch{}xi=setTimeout(()=>{xi=null,K?.dismissGreeting()},r)}},n)}function Sc(e){let t=po(e.ui?.shortcuts||[]),n=po(Vr?.shortcuts||[]),r=Xk(t,n);K?.setShortcuts(hh(r)),Vk(e)}async function Kk(e){let t=null,n=fu(e)||ar(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=di(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:po(t.shortcuts),greeting:Us(t.greeting),limits:Hc(t.limits),pageConfig:$r(t.pageConfig),version:t.version!=null?String(t.version):void 0}:null}function gh(e){let t=zk(e.siteId);t&&(Vr=t),Sc(e),Oi(),Kk(e).then(n=>{if(n&&(Vr=n,mh(e.siteId,n),Sc(e),!lo)){let r=qc(e);Ho&&!u?.uiOpen?K?.showGreeting(Gu(r)):Oi()}}).catch(()=>{})}function Xu(e){if(!C)return;let t={..._r,...e};t.name&&(t.name=String(t.name).trim().slice(0,120)),t.email&&(t.email=String(t.email).trim().slice(0,240)),_r=t,Cm(C.siteId,_r),K?.setVisitorName(_r.name||""),lo||(Ho&&!u?.uiOpen?K?.showGreeting(Gu(qc(C))):Oi())}function Yk(e){if(xc(e),R){let c=Hi(R.getRole());at=c,er=c==="controller",u&&(u.executionMode=c)}ju(e),Lc(e),cr(!0);let t=(e.allowActions??!0)&&(R?R.isController():!0),n=c=>{if(!u)return;let l=je(u.pendingRun);if(l){let g=je({...l,taskBoundaryId:l.taskBoundaryId||Me,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(ve?.getActiveRunId()||Bi||d?.runId||"").trim();if(!p)return;let v=String(d?.text||Vt||"Continue task").trim()||"Continue task",m=je({id:p,text:v,startedAt:Date.now(),attempts:0,autoResume:!0,taskBoundaryId:Me,resumeRequired:!0,resumeReason:c});return u.pendingRun=m,m&&R?.setActiveRun({runId:m.id,text:m.text}),m};Ke=new Ba({allowActions:t,runtimeId:ze,allowedDomains:e.allowedDomains,domainScopeMode:Ni(e.domainScopeMode),externalNavigationPolicy:e.externalNavigationPolicy,crossHostPolicy:Nc(e.navigation?.crossHostPolicy),navigationDelayMs:e.timing?.navigationDelayMs,domSettle:{debounceMs:Ct(e.timing?.domSettleDebounceMs,8,500),maxWaitMs:Ct(e.timing?.domSettleMaxWaitMs,80,5e3),retries:Ct(e.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:Ct(e.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:Ct(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(We("navigation_guardrail",c),tt({kind:"status",title:"Navigation guardrail",detail:pc(c),status:"info"}),ve&&c?.blockedUrl){let l=gm();if(!l)return;let d=String(window.location.hostname||"").toLowerCase(),p=(()=>{try{return new URL(String(c.blockedUrl)).hostname.toLowerCase()}catch{return}})();ve.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&&We("tab_event_conflict_retry",{runId:v.runId||l,decisionReason:v.decisionReason,conflict:v.conflict}),v.retryExhausted&&We("tab_event_conflict_exhausted",{runId:v.runId||l,decisionReason:v.decisionReason,conflict:v.conflict}))}).catch(()=>{})}},onBeforeAgentNavigation:async c=>{let l=gm(),d=String(window.location.hostname||"").toLowerCase();if(c?.targetUrl&&Qp(c.targetUrl,d)){let V=Kl(c.targetUrl,d);return zt("navigation_guardrail",{event:"adversarial_blocked",targetUrl:c.targetUrl,score:V.score,reasons:V.reasons}),{decision:"block",reason:`Navigation blocked: suspicious URL detected (adversarial score ${V.score}).`,decisionReason:"adversarial_block"}}if(c?.isCrossHost){let V=Date.now();for(Po.push(V);Po.length>0&&Po[0]<V-dm;)Po.shift();if(Po.length>kT)return zt("navigation_guardrail",{event:"rapid_cross_origin_blocked",targetUrl:c.targetUrl,count:Po.length}),{decision:"block",reason:`Navigation blocked: too many cross-origin navigations (${Po.length} in ${dm/1e3}s).`,decisionReason:"rapid_cross_origin_block"}}let p=(()=>{try{return new URL(String(c?.targetUrl||"")).hostname.toLowerCase()}catch{return}})(),v=!!d&&!!p&&hi(d)!==hi(p),m=!!d&&!!p&&d!==p,T=om({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",O=HT(),N=T==="allow_same_tab";if(N&&u){if(kr=!0,eu(Jl(c)),n(c.isCrossHost?"cross_host_navigation":"agent_navigation"),Jt&&C?.siteId)try{sessionStorage.setItem(`rover:sess:${C.siteId}`,JSON.stringify({t:Jt,e:Er}))}catch{}if(X){let V=X.getActiveTask();V&&X.dispatch(V.taskId,{type:"NAVIGATION_STARTED",targetUrl:c.targetUrl,isCrossHost:c.isCrossHost})}As("same_tab_navigation_handoff_early")}let A=null;if(c?.targetUrl&&ve&&l){let V=!!p&&!!d&&p!==d;A=await ve.sendTabEvent({runId:l,currentUrl:window.location.href,targetUrl:c.targetUrl,message:O,currentHost:d||void 0,targetHost:p,isCrossHost:V}).catch(()=>null),A?.retryAttempted&&We("tab_event_conflict_retry",{runId:A.runId||l,decisionReason:A.decisionReason,conflict:A.conflict,targetUrl:c.targetUrl}),A?.retryExhausted&&We("tab_event_conflict_exhausted",{runId:A.runId||l,decisionReason:A.decisionReason,conflict:A.conflict,targetUrl:c.targetUrl})}let S=tm({crossRegistrableDomain:v,fallbackDecision:T,serverDecision:A?.decision,serverAvailable:!!A}),H=S.decision;if(H==="block")return N&&(kr=!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(H==="open_new_tab"){N&&(kr=!1),C?.tools?.web?.scrapeMode==="on_demand"&&ve&&c?.targetUrl&&Lk(c.targetUrl).catch(()=>{});let J=S.decisionReason==="preflight_unavailable_fallback"&&!A;return{decision:"open_new_tab",reason:A?.reason||(J?"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?(kr=!0,eu(Jl(c)),n(c.isCrossHost?"cross_host_navigation":"agent_navigation"),As("same_tab_navigation_handoff")):N||(kr=!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(kr=!0,!u||!C)return;eu(Jl(c));let l=xu(),d=n("cross_host_navigation");Mp(C.siteId,{sessionId:u.sessionId,sessionToken:Jt,sessionTokenExpiresAt:Er,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||Me}: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()}),As("cross_domain_handoff_pre_navigation")},instrumentationOptions:e.mode==="safe"?{observeInlineMutations:!1}:void 0});let r=at==="observer"?"observer":"controller";Ke?.setActionGateContext?.({mode:r,controllerRuntimeId:R?.getCurrentHolderRuntimeId(),activeLogicalTabId:R?.getActiveLogicalTabId(),localLogicalTabId:R?.getLocalLogicalTabId(),reason:Fi(r,t)});let o=new MessageChannel;up(o.port1,{getSnapshot:()=>Ke.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 Ke.getPageData(c);let m=R.listTabs().find(g=>g.logicalTabId===d);if(!m){let g=Ai().includes(d);return gi({logicalTabId:d,external:!1},g?"detached_runtime_placeholder":"target_tab_missing")}if(m.runtimeId===ze)return Ke.getPageData(c);if(m.external&&l.externalNavigationPolicy!=="allow")return gi(m,"external_domain_inaccessible");if(!m.runtimeId||!R.isTabAlive(d))return gi(m,"target_tab_inactive");try{return await R.sendCrossTabRpc(m.runtimeId,"getPageData",c,15e3)}catch{return gi(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(Ok(p)){let A=c?.call?.serverResult;return A?A.success?{success:!0,output:A.data}:{success:!1,error:A.error||"Server-side execution failed"}:Pk({call:c?.call,routeTabId:Number.isFinite(Number(g))?Number(g):void 0,runtimeCfg:l})}if(d)return Ke.executeTool(c.call,c.payload);let T=R?.getLocalLogicalTabId();if(!g||g===T||!R)return Ke.executeTool(c.call,c.payload);let N=R.listTabs().find(A=>A.logicalTabId===g);if(!N){let A=Ai().includes(g);return bi(l,{logicalTabId:g,external:!1},A?"detached_runtime_placeholder":"target_tab_missing")}if(N.external&&l.externalNavigationPolicy!=="allow")return bi(l,N,"external_tab_action_blocked");if(N.runtimeId===ze)return Ke.executeTool(c.call,c.payload);if(!N.runtimeId||!R.isTabAlive(g))return bi(l,N,"target_tab_inactive");try{return await R.sendCrossTabRpc(N.runtimeId,"executeTool",c,2e4)}catch{return bi(l,N,"cross_tab_execute_failed")}},executeClientTool:c=>Ke.executeClientTool(c.name,c.args),listClientTools:()=>Ke.listClientTools(),getTabContext:()=>{let c=R?.getLocalLogicalTabId(),l=R?.getActiveLogicalTabId();return{id:c||1,logicalTabId:c||1,activeLogicalTabId:l||c||1,runtimeId:ze,mode:at,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(Ai()),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",__ROVER_SCRIPT_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{}Ue=new Worker(i,{type:"module"}),Ue.postMessage({type:"init",config:{...e,...Xo(),pageConfig:Di(C),publicKey:void 0,authToken:ar(e),sessionToken:Jt,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){mo(l.id),Ue?.postMessage({type:"cancel_run",runId:l.id}),uo(l.id,c,{attemptImmediately:!0}),ve?.controlRun({action:"cancel",runId:l.id,reason:c}).catch(()=>{}),R?.releaseWorkflowLock(l.id),R?.setActiveRun(void 0),_t(void 0),u.workerState=void 0,R?.setWorkerContext(void 0),Me=ir(),u.taskTabScope=void 0,Mn({forceReset:!0,persist:!1}),Wn(),gt&&(clearTimeout(gt),gt=null),K?.setRunning(!1),K?.setQuestionPrompt(void 0),oh(c),kt(void 0),qn("system","Task cancelled.",!0),Wo=void 0,$o=void 0,Ns=0,tt({kind:"info",title:"Run cancelled",status:"info"}),Se();return}let d=jr(u.workerState?.pendingAskUser?.questions).length>0,p=u.activeTask?.status;!d&&p!=="running"||(Me=ir(),u.workerState=void 0,u.taskTabScope=void 0,Mn({forceReset:!0,persist:!1}),Wn(),gt&&(clearTimeout(gt),gt=null),K?.setRunning(!1),K?.setQuestionPrompt(void 0),Tn(),_t(void 0),xk(c),R?.endTask(c),R?.setActiveRun(void 0),R?.setWorkerContext(void 0),kt(void 0),Wo=void 0,$o=void 0,Ns=0,tt({kind:"info",title:c==="question_prompt_cancel"?"Input request cancelled":"Task cancelled",status:"info"}),Se())};if(K=hp({shortcuts:hh(po(e.ui?.shortcuts||[])),greeting:qc(e),visitorName:_r?.name,onShortcutClick:c=>{let l=String(c.prompt||"").trim();l&&Ei(l,{routing:c.routing})},onSend:(c,l)=>{Ei(c,{askUserAnswers:l?.askUserAnswers})},onRequestControl:()=>{ek()?tt({kind:"status",title:"Control requested",detail:"This tab is now the active Rover controller for the current task.",status:"info"}):qn("system","Unable to acquire control right now. Try again in a moment.",!0)},onCancelRun:()=>{a("manual_cancel_task")},onCancelQuestionFlow:()=>{a("question_prompt_cancel")},onNewTask:()=>{ji({reason:"manual_new_task",clearUi:!0})},onEndTask:()=>{$c({reason:"manual_end_task"})},onTaskSuggestionPrimary:()=>{let c=ao;if(c){if(c.kind==="resume_run"){let l=je(u?.pendingRun);if(Tn(),!l||l.id!==c.runId){kt("Previous task is no longer resumable.");return}wr({overridePolicyAction:"auto_resume"});return}Ei(c.text,{bypassSuggestion:!0,startNewTask:!0,reason:c.reason})}},onTaskSuggestionSecondary:()=>{let c=ao;if(c){if(c.kind==="resume_run"){let l=String(u?.pendingRun?.id||"").trim();if(Tn(),!l||l!==c.runId)return;Wu({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}Ei(c.text,{bypassSuggestion:!0})}},onSwitchConversation:c=>{if(!X||!u)return;let l=X.getActiveTask();l&&K&&(l.scrollPosition=K.getScrollPosition());let d=String(R?.getState()?.activeRun?.runId||"").trim(),v=!!(String(u.pendingRun?.id||"").trim()||d);if(l&&l.taskId!==c&&v){qn("system","Finish the active run before switching conversations.",!0);return}let m=X.switchActiveTask(c);m&&(th(m,{replayUi:!0}),u.activeTaskId=c,K&&(requestAnimationFrame(()=>{m.scrollPosition!=null&&K.setScrollPosition(m.scrollPosition)}),K.setActiveConversationId(c)),so(),Se())},onDeleteConversation:c=>{X&&(X.deleteTask(c),so(),Se())},onResumeTask:c=>{if(!X)return;X.dispatch(c,{type:"RESUME"}).accepted&&(K?.hidePausedTaskBanner(),X.assignWorker(c,{}),so(),Se())},onCancelPausedTask:c=>{if(!X)return;X.dispatch(c,{type:"CANCEL",reason:"user_cancelled_paused_task"}).accepted&&(K?.hidePausedTaskBanner(),X.archiveTask(c),so(),Se())},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:()=>{lo=!0,Vi(),u&&(u.uiOpen=!0,u.uiHidden=!1,Se()),We("open")},onClose:()=>{u&&(u.uiOpen=!1,Se()),We("close")}}),Tn(),u?.uiMessages?.length&&Pc(u.uiMessages),u?.timeline?.length&&Bc(u.timeline),Uc(u),Bs(),u?.executionMode&&K.setExecutionMode(u.executionMode,{localLogicalTabId:R?.getLocalLogicalTabId(),activeLogicalTabId:R?.getActiveLogicalTabId(),controllerRuntimeId:R?.getCurrentHolderRuntimeId(),canTakeControl:!0,canComposeInObserver:Xm(),note:Km(u.executionMode)}),Ue.onmessage=c=>{$k(c.data||{})},R){let c=()=>{R?.registerCurrentTab(window.location.href,document.title),R?.broadcastNavigation(window.location.href,document.title)};Es||(Es=History.prototype.pushState),ws||(ws=History.prototype.replaceState);let l=Es.bind(history),d=ws.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},lc(window,"popstate",c)}u?.uiHidden?K.hide():(K.show(),u?.uiOpen??!!e.openOnInit?K.open():K.close()),u&&(u.uiHidden=!!u.uiHidden,u.uiOpen=!!u.uiOpen,Se()),R&&(Vu(R.getState(),"remote"),jo(R.getRole(),{localLogicalTabId:R.getLocalLogicalTabId(),activeLogicalTabId:R.getActiveLogicalTabId(),holderRuntimeId:R.getCurrentHolderRuntimeId()})),Oi()}function Pi(e){if(oo)return Rc(e),oo;au&&Ac(),au=!0,qr=Rp(),ze=LT(e.siteId),Mt=Mm(e),_r=e.visitor||PT(e.siteId),lo=!1,Ho=!1,Vi(),zo(),Vr=null,cn=!1;let t=e.sessionId?.trim(),n=BT(e.siteId),r=!t&&e.sessionScope!=="tab"&&Mt?pm(e.siteId,Mt):void 0,o=fc(e.siteId,t||r),s=Ss(e.siteId),i=Array.from(new Set([t?o:n,o,n,r?fc(e.siteId,r):void 0,s].filter(S=>!!S))),a=null,c=null;for(let S of i){let H=sk(S);if(H){a=H,c=S;break}}sn=c||o,Fr=s!==sn?s:null;let l=i.filter(S=>S!==sn);uu(e.siteId,sn);let d=a?null:Hl(e.siteId,{currentUrl:window.location.href,currentHost:window.location.hostname,requireTargetMatch:!0});!a&&!d&&Hl(e.siteId,{currentHost:window.location.hostname,requireTargetMatch:!1})&&(zt("status",{event:"resume_cookie_rejected",reason:"target_or_host_mismatch"}),ai(e.siteId)),d&&(ai(e.siteId),Qt=!0,cn=!0,d.openIntent==="preserve_if_running"&&mm({runId:d.pendingRun?.id,taskId:d.activeTask?.taskId}),d.sessionToken&&Ec(d.sessionToken,d.sessionTokenExpiresAt));let p=e.sessionId?.trim(),v=!p&&!a?.sessionId&&!d?.sessionId&&e.sessionScope!=="tab"&&Mt?pm(e.siteId,Mt):void 0,m=p||a?.sessionId||d?.sessionId||v||crypto.randomUUID(),g=a;if(!a&&d){let S=du(d.sessionId,ze),H=String(d.activeTask?.status||"").trim().toLowerCase(),V=!H||H==="running";d.pendingRun&&V&&(S.pendingRun=je({...d.pendingRun,autoResume:!0,taskBoundaryId:d.pendingRun.taskBoundaryId,resumeRequired:!0,resumeReason:"cross_host_navigation"})),d.handoff&&(S.lastNavigationHandoff=Gr({...d.handoff,createdAt:d.handoff.createdAt})),d.activeTask&&(S.activeTask={...ln("cross_domain_resume"),taskId:d.activeTask.taskId,status:d.activeTask.status}),S.taskEpoch=d.taskEpoch||1,Xl(d.openIntent)&&(S.uiHidden=!1,S.uiOpen=!0),g=S}u=Li(g,m,ze),p&&u.sessionId!==p&&(u=du(p,ze));let T=FT(e.siteId);Me=CT(u),T&&u.activeTask?.status==="running"&&(cn=!0,Xl(T.openIntent)&&(u.uiHidden=!1,u.uiOpen=!0,mm({runId:T.runId,taskId:u.activeTask?.taskId})),u.pendingRun=je({...u.pendingRun||{},id:u.pendingRun?.id||T.runId,text:u.pendingRun?.text||T.text||Vt||"Continue task",startedAt:u.pendingRun?.startedAt||Date.now(),attempts:u.pendingRun?.attempts||0,autoResume:!0,taskBoundaryId:u.pendingRun?.taskBoundaryId||T.taskBoundaryId||Me,resumeRequired:!0,resumeReason:T.resumeReason||u.pendingRun?.resumeReason||"agent_navigation"})),u.pendingRun&&!u.pendingRun.taskBoundaryId&&(u.pendingRun=je({...u.pendingRun,taskBoundaryId:Me})),u.workerState&&!u.workerState.taskBoundaryId&&(u.workerState=nr(Nt({...u.workerState,taskBoundaryId:Me}),Me)),Ui(u),C={...e,pageConfig:$r(e.pageConfig),visitorId:Mt||e.visitorId,sessionId:p||u.sessionId,domainScopeMode:Ni(e.domainScopeMode),taskRouting:{mode:e.taskRouting?.mode||"act",actHeuristicThreshold:e.taskRouting?.actHeuristicThreshold,plannerOnActError:e.taskRouting?.plannerOnActError},navigation:{crossHostPolicy:Nc(e.navigation?.crossHostPolicy)},timing:{navigationDelayMs:Ct(e.timing?.navigationDelayMs,0,3e3),actionTimeoutMs:Ct(e.timing?.actionTimeoutMs,5e3,12e4),domSettleDebounceMs:Ct(e.timing?.domSettleDebounceMs,8,500),domSettleMaxWaitMs:Ct(e.timing?.domSettleMaxWaitMs,80,5e3),domSettleRetries:Ct(e.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:Ct(e.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:Ct(e.timing?.sparseTreeRetryMaxAttempts,0,4)},transport:{activation:Du(e.transport?.activation),idleCloseMs:Ou(e.transport?.idleCloseMs)},stability:{maxPersistBytes:Ds(e.stability?.maxPersistBytes,pt.localPersistBytes),maxSnapshotBytes:Ds(e.stability?.maxSnapshotBytes,pt.snapshotBytes)},task:{singleActiveScope:Dm(e.task?.singleActiveScope),tabScope:Om(e.task?.tabScope),resume:{mode:Cu(e.task?.resume?.mode),ttlMs:_c(e.task?.resume?.ttlMs)},followup:{mode:Pm(e.task?.followup?.mode),ttlMs:Nu(e.task?.followup?.ttlMs),minLexicalOverlap:Lu(e.task?.followup?.minLexicalOverlap)},observerInput:Mu(e.task?.observerInput),autoResumePolicy:Au(e.task?.autoResumePolicy)},chat:{inRun:Bm(e.chat?.inRun),resumeFollowup:{mode:Um(e.chat?.resumeFollowup?.mode),maxTurns:Fm(e.chat?.resumeFollowup?.maxTurns)}},external:{intentSelection:Hm(e.external?.intentSelection),requireUserConfirm:qm(e.external?.requireUserConfirm),adversarialGate:Wm(e.external?.adversarialGate)},taskContext:{...e.taskContext},features:{rover_v2_kernel_runtime:$m(e.features?.rover_v2_kernel_runtime)}},u.sessionId=C.sessionId,u.runtimeId=ze,sn=fc(e.siteId,u.sessionId),Fr=sn!==Ss(e.siteId)?Ss(e.siteId):null,uu(e.siteId,sn),u.executionMode=u.executionMode||"controller",u.timeline=or(u.timeline),u.uiMessages=rr(u.uiMessages),u.activeTask=ho(u.activeTask,ln("boot")),Vl(u.activeTask?.status)&&(u.pendingRun=void 0,u.workerState=void 0,Qt=!1,cn=!1,zo(),ai(e.siteId),Lm(e.siteId)),u.taskEpoch=Math.max(1,Number(u.taskEpoch)||1),at=u.executionMode,_r&&Cm(e.siteId,_r);let O={maxConcurrentWorkers:e.task?.maxConcurrentWorkers??2,maxQueuedTasks:e.task?.maxQueuedTasks??5,maxArchivedTasks:e.task?.maxArchivedTasks??10};if(u.tasks&&Object.keys(u.tasks).length>0)X=bs.fromPersistedState({tasks:u.tasks,activeTaskId:u.activeTaskId,taskOrder:u.taskOrder},O);else{X=bs.fromV1State(u,O);let{tasks:S,activeTaskId:H,taskOrder:V}=X.toPersistedState();u.tasks=S,u.activeTaskId=H,u.taskOrder=V}let N=X.getActiveTask();N&&th(N,{replayUi:!1}),Se();try{sessionStorage.setItem(`rover:tab-alive:${e.siteId}`,"1")}catch{}$n=!1,Ms=!1,sr=!1,an=0,Tc=null;try{let S=sessionStorage.getItem(`rover:sess:${e.siteId}`);if(S){let{t:H,e:V}=JSON.parse(S);H&&typeof H=="string"&&H.startsWith("rvrsess_")&&Number(V)>Date.now()+2e3&&Ec(H,Number(V))}}catch{}Yk(C),Uu(C);let A=!!(Jt&&Er>Date.now()+2e3);if((!ve||A)&&(Ms=!0),sn&&Fk(sn,l.length?l:Fr?[Fr]:void 0),yk(),cr(!0),Qt&&setTimeout(()=>{Qt&&!sr&&(Qt=!1,wr())},dT),oo={boot:Pi,init:Ku,update:Rc,shutdown:Ac,open:zi,close:Wc,show:Yu,hide:Qu,send:Ju,newTask:ji,endTask:$c,getState:Zu,registerTool:ed,identify:Xu,on:xm},uc.length){for(let S of uc)Nm(S);uc.length=0}return oo}function Ku(e){return Pi(e)}function Rc(e){if(!oo||!Ue||!C)return;C={...C,...e,pageConfig:e.pageConfig!==void 0?$r(e.pageConfig):C.pageConfig,domainScopeMode:Ni(e.domainScopeMode??C.domainScopeMode),taskRouting:{...C.taskRouting,...e.taskRouting},navigation:{...C.navigation,...e.navigation,crossHostPolicy:Nc(e.navigation?.crossHostPolicy??C.navigation?.crossHostPolicy)},timing:{...C.timing,...e.timing,navigationDelayMs:Ct(e.timing?.navigationDelayMs??C.timing?.navigationDelayMs,0,3e3),actionTimeoutMs:Ct(e.timing?.actionTimeoutMs??C.timing?.actionTimeoutMs,5e3,12e4),domSettleDebounceMs:Ct(e.timing?.domSettleDebounceMs??C.timing?.domSettleDebounceMs,8,500),domSettleMaxWaitMs:Ct(e.timing?.domSettleMaxWaitMs??C.timing?.domSettleMaxWaitMs,80,5e3),domSettleRetries:Ct(e.timing?.domSettleRetries??C.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:Ct(e.timing?.sparseTreeRetryDelayMs??C.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:Ct(e.timing?.sparseTreeRetryMaxAttempts??C.timing?.sparseTreeRetryMaxAttempts,0,4)},transport:{...C.transport,...e.transport,activation:Du(e.transport?.activation??C.transport?.activation),idleCloseMs:Ou(e.transport?.idleCloseMs??C.transport?.idleCloseMs)},stability:{...C.stability,...e.stability,maxPersistBytes:Ds(e.stability?.maxPersistBytes??C.stability?.maxPersistBytes,pt.localPersistBytes),maxSnapshotBytes:Ds(e.stability?.maxSnapshotBytes??C.stability?.maxSnapshotBytes,pt.snapshotBytes)},task:{...C.task,...e.task,singleActiveScope:Dm(e.task?.singleActiveScope??C.task?.singleActiveScope),tabScope:Om(e.task?.tabScope??C.task?.tabScope),resume:{mode:Cu(e.task?.resume?.mode??C.task?.resume?.mode),ttlMs:_c(e.task?.resume?.ttlMs??C.task?.resume?.ttlMs)},followup:{mode:Pm(e.task?.followup?.mode??C.task?.followup?.mode),ttlMs:Nu(e.task?.followup?.ttlMs??C.task?.followup?.ttlMs),minLexicalOverlap:Lu(e.task?.followup?.minLexicalOverlap??C.task?.followup?.minLexicalOverlap)},observerInput:Mu(e.task?.observerInput??C.task?.observerInput),autoResumePolicy:Au(e.task?.autoResumePolicy??C.task?.autoResumePolicy)},chat:{...C.chat,...e.chat,inRun:Bm(e.chat?.inRun??C.chat?.inRun),resumeFollowup:{mode:Um(e.chat?.resumeFollowup?.mode??C.chat?.resumeFollowup?.mode),maxTurns:Fm(e.chat?.resumeFollowup?.maxTurns??C.chat?.resumeFollowup?.maxTurns)}},external:{...C.external,...e.external,intentSelection:Hm(e.external?.intentSelection??C.external?.intentSelection),requireUserConfirm:qm(e.external?.requireUserConfirm??C.external?.requireUserConfirm),adversarialGate:Wm(e.external?.adversarialGate??C.external?.adversarialGate)},taskContext:{...C.taskContext,...e.taskContext},features:{...C.features,...e.features,rover_v2_kernel_runtime:$m(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}}},Mt=Mm(C),Mt&&(C.visitorId=Mt),e.sessionId&&u?(u.sessionId=e.sessionId,sn=fc(C.siteId,u.sessionId),Fr=sn!==Ss(C.siteId)?Ss(C.siteId):null,uu(C.siteId,sn),Se(),xc(C)):(e.sessionScope||e.tabPolicy)&&xc(C),ju(C),Lc(C),Uu(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(Ke){typeof e.allowActions=="boolean"&&Ke.setAllowActions(e.allowActions&&at==="controller");let n=at==="controller"&&(C?.allowActions??!0),r=at==="observer"?"observer":"controller";Ke?.setActionGateContext?.({mode:r,controllerRuntimeId:R?.getCurrentHolderRuntimeId(),activeLogicalTabId:R?.getActiveLogicalTabId(),localLogicalTabId:R?.getLocalLogicalTabId(),reason:Fi(r,n)}),(e.allowedDomains||e.domainScopeMode||e.externalNavigationPolicy||e.navigation?.crossHostPolicy)&&Ke.setNavigationPolicy({allowedDomains:e.allowedDomains,domainScopeMode:Ni(e.domainScopeMode??C.domainScopeMode),externalNavigationPolicy:e.externalNavigationPolicy,crossHostPolicy:e.navigation?.crossHostPolicy})}Ue.postMessage({type:"update_config",config:{...e,...Xo(),pageConfig:Di(C),publicKey:void 0,authToken:ar(C),sessionToken:Jt,sessionId:u?.sessionId,activeRunId:u?.pendingRun?.id,sessionEpoch:ve?.getEpoch?.()??Hr,sessionSeq:ve?.getLastSeq?.()??0}}),Sc(C),t?gh(C):Oi(),e.visitor&&Xu(e.visitor),typeof e.openOnInit=="boolean"&&(e.openOnInit||Ru(u)?zi():Wc()),cr()}function Ac(){zo(),Tn(),Rs(),Fo(!0),Bu(),ht?.markDirty(),ht?.syncNow({push:!0,pull:!1}),ht?.stop(),ht=null,ve?.stop(),ve=null,Jt=void 0,Er=0,Hr=1,co(void 0),kc="",R?.stop(),R=null,X?.shutdown(),X=null,Ue?.terminate(),Ue=null,K?.destroy(),K=null,Ke=null,C=null,$n=!1,sr=!1,an=0,it&&(clearTimeout(it),it=null),ro&&(clearTimeout(ro),ro=null),cc=!1,Yt.clear(),to.clear(),tr.clear(),Tr.clear(),kr=!1,Me="",ze="",Mt=void 0,_r=void 0,lo=!1,Ho=!1,Vi(),Vr=null,ou="",Cs=!1,ac=!1,_s=!1,yn=[],Em=0,nu=0,ru=0,vc=0,wi=!1,Wr&&(clearTimeout(Wr),Wr=null),yu="",ks="",at="controller",er=!0,ao=null,qr=null,Tc=null,_i=0;try{let e=window.rtrvrAIClearObserverPause;typeof e=="function"&&e()}catch{}oo=null;for(let e of io)try{e.target.removeEventListener(e.event,e.handler,e.options)}catch{}if(io.length=0,Es){try{History.prototype.pushState=Es}catch{}Es=null}if(ws){try{History.prototype.replaceState=ws}catch{}ws=null}su=!1,iu=!1,au=!1}function zi(){lo=!0,Vi(),K?.show(),K?.open(),u&&(u.uiHidden=!1,u.uiOpen=!0,Se())}function Wc(){K?.close(),zo(),u&&(u.uiOpen=!1,Se())}function Yu(){K?.show(),u&&(u.uiHidden=!1,Se())}function Qu(){K?.hide(),zo(),u&&(u.uiHidden=!0,u.uiOpen=!1,Se())}function Ju(e){e?.trim()&&Ei(e)}function ji(e){if(!u)return;let t=e?.reason||"manual_new_task",n=e?.clearUi!==!1;if(Wo=void 0,$o=void 0,Ns=0,u.pendingRun&&(mo(u.pendingRun.id),Ue?.postMessage({type:"cancel_run",runId:u.pendingRun.id}),uo(u.pendingRun.id,t,{attemptImmediately:!0}),ve?.controlRun({action:"cancel",runId:u.pendingRun.id,reason:t}),R?.releaseWorkflowLock(u.pendingRun.id)),gt&&(clearTimeout(gt),gt=null),K?.setRunning(!1),K?.setQuestionPrompt(void 0),sr=!1,an=0,$i(),X){let s=X.createTask(t);X.switchActiveTask(s.taskId),X.dispatch(s.taskId,{type:"START",reason:t})}let r=go({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,qu()),R?.startNewTask({taskId:r.taskId,startedAt:r.startedAt,boundaryReason:t,status:"running",lastUserAt:void 0,lastAssistantAt:void 0}),Mn({forceReset:!0,persist:!1}),R?.setActiveRun(void 0),R?.setWorkerContext(void 0),nh([]),kt(void 0),Se(),Ue?.postMessage({type:"start_new_task",taskId:r.taskId,...Xo()}),ve?.controlRun({action:"new_task",reason:t}),We("task_started",{taskId:r.taskId,reason:t,taskEpoch:o})}function $c(e){if(!u)return;let t=e?.reason||"manual_end_task";if(Wo=void 0,$o=void 0,Ns=0,sr=!1,an=0,cn=!1,$i(),X){let o=X.getActiveTask();o&&X.dispatch(o.taskId,{type:"CANCEL",reason:t})}let n=u.pendingRun?.id,r=go({type:"terminal",terminal:"ended",reason:t,at:Date.now()},{syncShared:!1,persist:!1,rotateBoundary:!1});r&&(n&&(mo(n),Ue?.postMessage({type:"cancel_run",runId:n}),uo(n,t,{attemptImmediately:!0}),ve?.controlRun({action:"cancel",runId:n,reason:t}),R?.releaseWorkflowLock(n)),_t(void 0),Me=ir(),u.workerState=void 0,u.taskTabScope=void 0,Mn({forceReset:!0,persist:!1}),Wn(),gt&&(clearTimeout(gt),gt=null),K?.setRunning(!1),K?.setQuestionPrompt(void 0),Tn(),kt(void 0),ve?.controlRun({action:"end_task",runId:n,reason:t}),R?.endTask(t),R?.setActiveRun(void 0),R?.setWorkerContext(void 0),Se(),tt({kind:"info",title:"Task ended",detail:"Start a new task when you are ready.",status:"info"}),We("task_ended",{taskId:r.taskId,reason:t,endedAt:r.endedAt}))}function Zu(){return{mode:at,runtimeId:ze,runtimeState:u?zu(u):null,sharedState:R?.getState()||null,pendingTaskSuggestion:ao}}function ed(e,t){let n=AT(e);if(!oo||!Ke||!Ue){uc.push({def:n,handler:t});return}Nm({def:n,handler:t})}function Qk(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 Jk={sanitizeWorkerState:Nt,cloneRuntimeStateForCheckpoint:zu,getPersistGovernorConfig:()=>({minPersistIntervalMs:vu,maxCoalesceDelayMs:eh}),getTelemetryFastLaneEvents:()=>Array.from(wm.values())};function bh(){let e=window,t=e.rover,n=((r,...o)=>{let s=Qk(r),i=s?n[s]:void 0;if(typeof i=="function")return i(...o)});if(n.boot=Pi,n.init=Ku,n.update=Rc,n.shutdown=Ac,n.open=zi,n.close=Wc,n.show=Yu,n.hide=Qu,n.send=Ju,n.newTask=ji,n.endTask=$c,n.getState=Zu,n.registerTool=ed,n.on=xm,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(!oo){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),Pi(i)}}}}bh();return Nh(Zk);})();
|
|
2099
|
+
`);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 Kw(e){if(e==null)return;let t=typeof e=="object"&&e!==null?e:void 0,n=t?.output??t?.generatedContentRef??t?.schemaHeaderSheetInfo??e,r=Dg(So([{type:"tool_output",data:n}]));if(Gw(n,r))return So([{type:"tool_output",label:typeof t?.name=="string"?`${t.name} output`:"Tool output",data:n}])}function Gn(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t}function Xw(e){if(!e||typeof e!="object")return[];let t=e,n=[Gn(t.tab_id),Gn(t.logical_tab_id),Gn(t.tabId),Gn(t.logicalTabId)].filter(r=>!!r);return Un(n)}function Yw(e){if(!e||typeof e!="object")return[];let t=e,n=t.output&&typeof t.output=="object"?t.output:void 0,r=[Gn(t.tab_id),Gn(t.logical_tab_id),Gn(t.tabId),Gn(t.logicalTabId),Gn(n?.tab_id),Gn(n?.logical_tab_id),Gn(n?.tabId),Gn(n?.logicalTabId)].filter(o=>!!o);return Un(r)}function Qw(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 Og(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 fi(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=Fd(o);s!==void 0&&r.push(s)}return r}function Pg(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 Jw(e,t){if(!Kr)return null;try{let n=await Kr.readAsync(e);if(n)return n;for(let r of t||[]){if(!r||r===e)continue;let o=await Kr.readAsync(r);if(o)return o}return null}catch{return null}}function fr(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-sl)){let r=n?.role;r!=="user"&&r!=="assistant"&&r!=="system"||t.push({id:typeof n?.id=="string"&&n.id?n.id:Qr("msg"),role:r,text:String(n?.text||""),blocks:So(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 pr(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-il)){let r=sn(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:Qr("timeline"),kind:o,title:r,detail:n?.detail?String(n.detail):void 0,detailBlocks:So(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 Mr(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-Ik)){let r=n?.role==="user"?"user":n?.role==="model"?"model":void 0;if(!r)continue;let o=sn(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 Ea(e,t){if(!e)return;let n=typeof e=="string"?e:e?.text,r=sn(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()?sn(e.stage.trim(),40):void 0;return{text:r,ts:Number(e?.ts)||Date.now(),runId:o,taskId:s,stage:i}}function Zw(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 eE(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||Zw(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 tE(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 nE(e,t){let n=new Map;for(let r of pr(e))n.set(r.id,r);for(let r of pr(t)){let o=n.get(r.id);(!o||tE(r,o)>0)&&n.set(r.id,r)}return pr([...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 Ht(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(-wd).map(_=>Og(_)).filter(_=>!!_),i=fi(r,Ed),a=fi(Pg(o),Id),c=Jr(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=Me(t||void 0),h=Me(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:Mr(e.seedChatLog),history:s,plannerHistory:i,agentPrevSteps:a,lastToolPreviousSteps:a,pendingAskUser:u,updatedAt:Number(e.updatedAt)||Date.now()}}function ga(e,t,n){if(!e||typeof e!="object")return dd(t,n);let r=mn(),o=Mo(e.activeTask,r),s=et(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=gi(e.taskTabScope,a),d={version:kd,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"?sn(e.uiStatus,300):void 0,transientStatus:Ea(e.transientStatus??e.uiStatus,{runId:s?.id,taskId:o?.taskId}),uiMessages:fr(e.uiMessages),timeline:pr(e.timeline),executionMode:e.executionMode==="observer"||e.executionMode==="controller"?e.executionMode:"controller",workerState:Ht(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"?sn(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=Vs.fromV1State(d),{tasks:v,activeTaskId:h,taskOrder:g}=u.toPersistedState();d.tasks=v,d.activeTaskId=h,d.taskOrder=g,u.shutdown()}return d}function Mo(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"?sn(e.boundaryReason,120):t.boundaryReason,endedAt:Number(e.endedAt)||void 0}}function Bg(e,t){return Mo(e,t)}function Ia(e){if(!e)return;let t=Jr(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:Mr(e.seedChatLog),history:Array.isArray(e.history)?e.history.slice(-wd).map(n=>Og(n)).filter(n=>!!n):[],plannerHistory:fi(e.plannerHistory,Ed),agentPrevSteps:fi(Pg(e.agentPrevSteps),Id),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 Un(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 gi(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=Un(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 et(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 Xt=="string"&&Xt.trim()?Xt.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 rE(){return ui(M?.stability?.maxPersistBytes,vt.localPersistBytes)}function oE(e,t){let n={...e,uiMessages:fr(e.uiMessages).slice(-sl),timeline:pr(e.timeline).slice(-il),workerState:Ht(e.workerState)};n.workerState&&(n.workerState={...n.workerState,history:Array.isArray(n.workerState.history)?n.workerState.history.slice(-wd):[],plannerHistory:fi(n.workerState.plannerHistory,Ed),agentPrevSteps:fi(n.workerState.agentPrevSteps,Id)});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:mn("persist_trim")}}function oi(e){if(!(!l||!dn))try{if(K){xl(),K.enforceMemoryCaps();let{tasks:r,activeTaskId:o,taskOrder:s}=K.toPersistedState();l.tasks=r,l.activeTaskId=o,l.taskOrder=s}let t=rE();l=oE(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===bd&&!e?.markCheckpointDirty)return;bd=n,l.updatedAt=Date.now(),Kr?.write(dn,l),jr&&jr!==dn&&(Kr?.remove(jr),jr=null),!ii&&e?.markCheckpointDirty!==!1&&Tt?.markDirty()}catch{}}var es=!1,ts=!1,bd="",ta=0,Gs=0,vd=2e3,Ug=2e3;function si(e){oi({markCheckpointDirty:!0}),Tt?.syncNow({push:!0,pull:!1}),dt("checkpoint_state",{event:"critical_flush",reason:e})}function xe(e){e?.markCheckpointDirty!==!1&&(ts=!0);let t=Date.now();if(!es)Gs=t;else if(Gs>0&&t-Gs>=Ug){es=!1,Gs=0;let n=ts;ts=!1,ta=t,oi({markCheckpointDirty:n});return}es||(es=!0,setTimeout(()=>{es=!1,Gs=0;let n=ts;ts=!1;let r=Date.now();if(r-ta<vd){es=!0,setTimeout(()=>{es=!1,Gs=0,ta=Date.now(),oi({markCheckpointDirty:ts||n}),ts=!1},vd-(r-ta));return}ta=r,oi({markCheckpointDirty:n})},0))}function sE(){if(sd)return;sd=!0,id||(id=!0,el(document,"visibilitychange",()=>{gr()},{passive:!0})),el(window,"pagehide",()=>{if(on&&M?.siteId)try{sessionStorage.setItem(`rover:sess:${M.siteId}`,JSON.stringify({t:on,e:Rr}))}catch{}if(l?.pendingRun?.autoResume){let r=l.pendingRun.resumeReason||(xr?"agent_navigation":"page_reload"),o=et({...l.pendingRun,resumeRequired:!0,resumeReason:r});if(l.pendingRun=o,o&&M?.siteId){let s=Zr(l?.lastNavigationHandoff);Ew(M.siteId,{runId:o.id,text:o.text,taskBoundaryId:o.taskBoundaryId||Ne,resumeReason:r,handoffId:s?.handoffId,openIntent:l.uiOpen?"preserve_if_running":void 0,ts:Date.now()})}}let n=xd();N?.broadcastClosing(dg(n)),l?.pendingRun&&N?.releaseWorkflowLock(l.pendingRun.id),oi(),ns(!0),Bd(),Tt?.markDirty(),Tt?.syncNow({push:!0,pull:!1}),Tt?.stop(),N?.stop()},{capture:!0}),el(window,"pageshow",n=>{n.persisted&&(N&&(N.reloadFromStorage(),N.registerCurrentTab(window.location.href,document.title||void 0),N.claimLease(!1)),mr=!1,fn=0,M&&Il(M),gr(!0))})}function iE(e="implicit"){if(l)return l.activeTask||(l.activeTask=mn(e),l.taskEpoch=Math.max(1,Number(l.taskEpoch)||1)),l.activeTask}function No(e,t){if(!l)return;let n=l.activeTask?.status,r=Me(Ne),o=Eh({task:l.activeTask,taskEpoch:l.taskEpoch},e,{createTask:(s,i,a)=>mn(s,i,a)});if(l.activeTask=o.task,l.taskEpoch=o.taskEpoch,o.rotateBoundary&&t?.rotateBoundary!==!1?(Ne=hr(),Hn({forceReset:!0,persist:!1})):Hn({persist:!1,appendSeed:!1}),o.clearPendingRun&&l.pendingRun&&xt(void 0),o.clearWorkerState&&l.workerState&&(l.workerState=void 0,N?.setWorkerContext(void 0)),o.lifecycle==="terminal"&&(lt&&(clearTimeout(lt),lt=null),xa()),t?.syncShared!==!1&&N?.syncTask({...o.task},l.taskEpoch),t?.persist!==!1){let s=Me(Ne);n!==o.task.status?si("run_status_transition"):!!s&&s!==r?si("task_boundary_transition"):xe()}if(gr(),Rg(),K){let s=K.toPersistedState();l.tasks=s.tasks,l.activeTaskId=s.activeTaskId,l.taskOrder=s.taskOrder}return o.task}function _o(){if(!K||!Y)return;xl();let e=K.listTasks(),t=K.getActiveTask()?.taskId;Y.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&&Y.setActiveConversationId(t)}function bl(){if(K)return K.getActiveTask()}function aE(e=l,t){let n=String(t||e?.activeTaskId||e?.activeTask?.taskId||"").trim()||void 0,r=Me(cs(e)),o=String(et(e?.pendingRun)?.id||"").trim()||void 0;return{taskId:n,boundaryId:r,runId:o}}function cE(){let e=Mr(bl()?.seedChatLog);return e.length?e:Mr(l?.workerState?.seedChatLog)}function lE(e,t){let n=t||mn("task_record_sync");return Mo({taskId:e.taskId,status:bh(e.state),startedAt:e.startedAt,lastUserAt:e.lastUserAt,lastAssistantAt:e.lastAssistantAt,boundaryReason:e.blockReason||n.boundaryReason,endedAt:e.endedAt},n)}function Fg(e,t){if(!l)return;let n=Me(e.boundaryId)||Me(e.pendingRun?.taskBoundaryId)||Me(e.workerState?.taskBoundaryId)||wn()||hr(),r=Mr(e.seedChatLog??e.workerState?.seedChatLog),o=dr(Ht(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=et(e.pendingRun),i=Ea(e.transientStatus,{runId:s?.id,taskId:e.taskId});l.activeTaskId=e.taskId,l.activeTask=lE(e,l.activeTask),l.uiMessages=fr(e.uiMessages),l.timeline=pr(e.timeline),l.workerState=o,l.pendingRun=s,l.taskTabScope=gi(e.tabScope,n),l.uiStatus=i?.text,l.transientStatus=i,Ne=n,e.rootUserInput?.trim()&&(Xt=e.rootUserInput.trim()),t?.replayUi!==!1&&(qd(),l.uiMessages.length&&Rl(l.uiMessages),l.timeline.length&&Al(l.timeline),Cl(l),pi(),Y?.setRunning(!!l.pendingRun&&l.activeTask?.status==="running"),e.state==="paused"?Y?.showPausedTaskBanner({taskId:e.taskId,rootUserInput:e.rootUserInput||"Task"}):Y?.hidePausedTaskBanner())}function Hg(e){let t=Mr(e),n=bl();n&&K&&K.updateTask(n.taskId,r=>({...r,seedChatLog:t})),l?.workerState&&(l.workerState=Ht({...l.workerState,seedChatLog:t,updatedAt:Date.now()}),N?.setWorkerContext(Ia(l.workerState)))}function xl(){if(!l||!K)return;let e=K.getActiveTask();if(!e)return;let t=ji(l.activeTask?.status||"running",l.activeTask?.boundaryReason),n=fr(l.uiMessages),r=pr(l.timeline),o=[...n].reverse().find(u=>u.role==="assistant"),s=Ht(l.workerState),i=et(l.pendingRun),a=Me(i?.taskBoundaryId)||Me(s?.taskBoundaryId)||Me(e.boundaryId)||wn()||hr(),c=gi(l.taskTabScope,a),d=Ea(l.transientStatus,{runId:i?.id,taskId:e.taskId}),p=Mr(e.seedChatLog?.length?e.seedChatLog:s?.seedChatLog);K.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||Xt,summary:o?.text||u.summary,seedChatLog:p,transientStatus:d}))}function Hd(e){if(!l||!K)return;let t=aE(l,e?.preferredTaskId),n=Mh(K.listTasks(),t);if(!n&&e?.allowCreate!==!1){let o=t.boundaryId||hr(),s=ji(l.activeTask?.status||"running",l.activeTask?.boundaryReason);n=K.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:Ht(l.workerState)?.rootUserInput||et(l.pendingRun)?.text||Xt,seedChatLog:Mr(l.workerState?.seedChatLog),tabIds:gi(l.taskTabScope,o)?.touchedTabIds||[]})}if(!n)return;e?.makeActive!==!1&&K.getActiveTaskId()!==n.taskId&&K.switchActiveTask(n.taskId),l.activeTaskId=K.getActiveTaskId()||n.taskId,l.activeTask=Mo({...l.activeTask||mn("adopted_continuation"),taskId:l.activeTaskId},mn("adopted_continuation",Date.now(),l.activeTaskId)),xl();let r=K.toPersistedState();return l.tasks=r.tasks,l.activeTaskId=r.activeTaskId,l.taskOrder=r.taskOrder,_o(),K.getTask(l.activeTaskId||n.taskId)}function uE(e,t=Date.now()){if(!l||e==="system")return;let n=iE("implicit");n&&n.status==="running"&&(e==="user"&&(n.lastUserAt=t),e==="assistant"&&(n.lastAssistantAt=t))}var Zu="[Rover]";function dE(e){if(!(M?.ui?.tabIndicator?.titlePrefix!==!1))return;let n=e||"[Rover: Running]",r=da;r||(ua=document.title),da=!0,Zu=n;let o=r?document.title.replace(/^\[Rover[^\]]*\]\s*/,"")||ua||"":document.title;if(document.title=`${n} ${o}`,!ni){let s=document.querySelector("title");s&&(ni=new MutationObserver(()=>{if(da&&!document.title.startsWith(Zu)){let i=document.title.replace(/^\[Rover[^\]]*\]\s*/,"");document.title=`${Zu} ${i}`}}),ni.observe(s,{childList:!0,characterData:!0,subtree:!0}))}M?.ui?.tabIndicator?.faviconBadge===!0&&Bh()}function Sl(){da&&(da=!1,ni&&(ni.disconnect(),ni=null),ua!==void 0?(document.title=ua,ua=void 0):document.title.startsWith("[Rover] ")&&(document.title=document.title.slice(8)),Uh())}function qg(e="worker_task_active",t=Date.now()){if(K){let n=K.getActiveTask();n&&K.dispatch(n.taskId,{type:"START",reason:e})}No({type:"ensure_running",reason:e,at:t}),dE()}function fE(e="worker_task_complete",t=Date.now()){if(K){let n=K.getActiveTask();n&&K.dispatch(n.taskId,{type:"COMPLETE"})}No({type:"terminal",terminal:"completed",reason:e,at:t}),Sl()}function Yc(e="worker_task_failed",t=Date.now()){if(K){let n=K.getActiveTask();n&&K.dispatch(n.taskId,{type:"FAIL",error:e})}No({type:"terminal",terminal:"failed",reason:e,at:t}),Sl()}function pE(e="worker_task_ended",t=Date.now()){if(K){let n=K.getActiveTask();n&&K.dispatch(n.taskId,{type:"CANCEL",reason:"ended"})}No({type:"terminal",terminal:"ended",reason:e,at:t}),Sl()}function Wg(e="worker_task_cancelled",t=Date.now()){if(K){let n=K.getActiveTask();n&&K.dispatch(n.taskId,{type:"CANCEL",reason:e})}No({type:"terminal",terminal:"cancelled",reason:e,at:t}),Sl()}function En(){wo=null,Y?.setTaskSuggestion({visible:!1})}function mE(e){let t=String(e?.id||"").trim();if(!t||Nr())return!1;let n=String(e?.text||"").trim()||"Continue task";return wo?.kind==="resume_run"&&wo.runId===t?!1:(wo={kind:"resume_run",runId:t,text:n,createdAt:Date.now()},Y?.setTaskSuggestion({visible:!0,text:"Resume your interrupted task or cancel it?",primaryLabel:"Resume",secondaryLabel:"Cancel"}),!0)}function xa(){rn=!1,pn=!1,ls(),M?.siteId&&(Vi(M.siteId),bg(M.siteId)),Tt?.markDirty(),Tt?.syncNow({push:!0,pull:!1})}function qd(){Y?.clearMessages(),Y?.clearTimeline(),Y?.setQuestionPrompt(void 0),En()}function Wd(e){if(!l)return;lt&&(clearTimeout(lt),lt=null),mr=!1,fn=0,rn=!1,pn=!1,_t&&(clearTimeout(_t),_t=null);let t=et(l.pendingRun),n=String(e.runId||t?.id||"").trim();n&&(Co(n),N?.releaseWorkflowLock(n),$d(n)||xo(n,e.cancelReason||e.reason,{attemptImmediately:!0})),xt(void 0),N?.setActiveRun(void 0),Y?.setRunning(!1),Y?.setQuestionPrompt(void 0),En(),l.activeTask?.status==="running"?Wg(e.reason):xa(),It(void 0),dt("status",{event:"local_run_abandoned",reason:e.reason,runId:n||void 0}),e.timelineTitle&&st({kind:e.timelineStatus==="error"?"error":"info",title:e.timelineTitle,detail:e.timelineDetail,status:e.timelineStatus||"info"}),e.emitError?.message&&je("error",{message:e.emitError.message,scope:e.emitError.scope||"resume",code:e.emitError.code,runId:n||void 0})}function hE(e){if(e)return Me(e.pendingAskUser?.boundaryId||e.taskBoundaryId)}function dr(e,t){if(!e)return;let n=Me(t);if(!n)return e;let r=Me(e.taskBoundaryId);if(r&&r!==n)return;let o=Me(e.pendingAskUser?.boundaryId);if(!(o&&o!==n))return e}function pi(){if(l?.activeTask?.status!=="running"){Ks="",Y?.setQuestionPrompt(void 0);return}let e=wn(),t=hE(l?.workerState);if(e&&t&&t!==Me(e)){Ks="",Y?.setQuestionPrompt(void 0);return}let n=Jr(l?.workerState?.pendingAskUser?.questions);if(!n.length){Ks="",Y?.setQuestionPrompt(void 0);return}let r=`${Me(t||e)||""}:${n.map(o=>`${o.key}:${o.query}`).join("|")}`;r!==Ks&&(Ks=r,si("question_prompt_boundary")),Y?.setQuestionPrompt({questions:n})}function gE(){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!==Ze)return!0;let n=Date.now()-Number(e.startedAt||0);return n>=0&&n<=Dk}function bE(){if(!l?.pendingRun||gE()||!N)return;let e=l.pendingRun;if(e.resumeRequired===!0&&qc(l.activeTask?.status))return;let t=String(ke?.getActiveRunId()||"").trim();if(t&&t===e.id||Nr())return;let n=Date.now()-Number(e.startedAt||0);!Number.isFinite(n)||n<Ok||(Co(e.id),xo(e.id,"stale_pending_cleanup",{attemptImmediately:!0}),xt(void 0),N?.releaseWorkflowLock(e.id),N?.setActiveRun(void 0),lt&&(clearTimeout(lt),lt=null))}function Fn(e,t,n=!0,r){let o=String(t||""),s=So(r?.blocks);if(!o&&(!s||s.length===0))return;let i={id:r?.id||Qr("msg"),role:e,text:o,blocks:s,ts:r?.ts||Date.now(),sourceRuntimeId:r?.sourceRuntimeId};return Y?.addMessage(i.role,i.text,{blocks:i.blocks}),l&&n&&(l.uiMessages.push(i),l.uiMessages.length>sl&&(l.uiMessages=l.uiMessages.slice(-sl)),uE(i.role,i.ts),xe()),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 Rl(e){for(let t of e)Fn(t.role,t.text,!1,{id:t.id,ts:t.ts,sourceRuntimeId:t.sourceRuntimeId,publishShared:!1,blocks:t.blocks})}function st(e,t=!0){let n={id:e.id||Qr("timeline"),kind:e.kind,title:sn(e.title,400),detail:e.detail?String(e.detail):void 0,detailBlocks:So(e.detailBlocks),status:e.status,ts:e.ts||Date.now(),sourceRuntimeId:e.sourceRuntimeId};return Y?.addTimelineEvent(n),l&&t&&(l.timeline.push(n),l.timeline.length>il&&(l.timeline=l.timeline.slice(-il)),xe({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 Al(e){Y?.clearTimeline();for(let t of e)st({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 $g(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 Vg(e=l){let t=N?.getState();return Nh({localPendingRunId:e?.pendingRun?.id,sharedActiveRunId:t?.activeRun?.runId,sharedTaskId:t?.task?.taskId||t?.activeTaskId,activeTaskId:e?.activeTask?.taskId||e?.activeTaskId})}function It(e,t){let n=Ea(e?{text:e,runId:t?.runId||l?.pendingRun?.id,taskId:t?.taskId||l?.activeTask?.taskId||bl()?.taskId,stage:t?.stage,ts:Date.now()}:void 0,{runId:t?.runId||l?.pendingRun?.id,taskId:t?.taskId||l?.activeTask?.taskId||bl()?.taskId}),r=$g(n,{activeRunId:Vg(l),activeTaskId:l?.activeTask?.taskId,taskStatus:l?.activeTask?.status});r?Y?.setStatus(r):Y?.setStatus?.(void 0),l&&(l.uiStatus=n?.text,l.transientStatus=n,xl(),xe({markCheckpointDirty:!1})),N&&t?.publishShared!==!1&&N.setStatus(n)}function Cl(e=l){let t=$g(e?.transientStatus,{activeRunId:Vg(e),activeTaskId:e?.activeTask?.taskId,taskStatus:e?.activeTask?.status});t?Y?.setStatus(t):Y?.setStatus?.(void 0)}function us(e,t){let n=wa(e);ut=n;let r=t?.localLogicalTabId??N?.getLocalLogicalTabId(),o=t?.activeLogicalTabId??N?.getActiveLogicalTabId(),s=t?.holderRuntimeId??N?.getCurrentHolderRuntimeId(),i=n==="controller"&&!!(M?.allowActions??!0);nt?.setAllowActions(i),nt?.setActionGateContext?.({mode:n,controllerRuntimeId:s,activeLogicalTabId:o,localLogicalTabId:r,reason:ka(n,i)}),l&&(l.executionMode=n,xe()),gr(),Y?.setExecutionMode(n,{controllerRuntimeId:s,localLogicalTabId:r,activeLogicalTabId:o,canTakeControl:!0,canComposeInObserver:Ng(),note:Lg(n)}),je("mode_change",{mode:n,rawMode:e,...t})}function xt(e){l&&(e?l.pendingRun=et({...e,taskBoundaryId:e.taskBoundaryId||Ne}):(l.pendingRun=void 0,l.uiStatus=void 0,l.transientStatus=void 0,Eo(void 0),Rd(l)||ls()),_a(l),gr(),xe())}function ed(e){l&&(l.lastNavigationHandoff=Zr(e),xe())}function Ml(){let e=Number(N?.getLocalLogicalTabId()||N?.getActiveLogicalTabId()||1);return!Number.isFinite(e)||e<=0?1:e}function Hn(e){if(!l)return;let t=Me(Ne)||hr();Ne||(Ne=t);let n=Ml(),r=e?.appendSeed!==!1,o=gi(l.taskTabScope,t);if(!!e?.forceReset||!o||Me(o.boundaryId)!==t){let c={boundaryId:t,seedTabId:n,touchedTabIds:[n],updatedAt:Date.now()};return l.taskTabScope=c,e?.persist!==!1&&xe(),c}let i=Un(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&&xe(),a}function zg(e,t){if(!l)return;let n=Hn({persist:!1});if(!n)return;let r=Un([n.seedTabId,...n.touchedTabIds||[],...e]),o={...n,touchedTabIds:r.slice(0,24),updatedAt:Date.now()};return l.taskTabScope=o,t?.persist!==!1&&xe(),o}function vE(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 ds(e){if(!l)return;let t=Hn({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),U=n-R;if(_.runtimeId){o.add(A);continue}if(_.external){U<=Yk&&o.add(A);continue}if(_.detachedReason==="navigation_handoff"){U<=Qk&&o.add(A);continue}if(_.detachedReason==="opened_pending_attach"){U<=Jk&&o.add(A);continue}}let s=Number(N.getLocalLogicalTabId()),i=Number(N.getActiveLogicalTabId()),a=Number(t.seedTabId)>0?Number(t.seedTabId):Ml();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=Un(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=Un(d).slice(0,24);if(!(p!==t.seedTabId||!vE(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&&xe(),dt("status",{event:"scoped_tab_reconciled",removedTabIds:h,scopedTabIds:g.touchedTabIds,seedTabId:g.seedTabId}),g}function fa(){let e=ds({persist:!1})||Hn({persist:!1,appendSeed:!1});if(!e)return[Ml()];let t=Un(e.touchedTabIds);return t.length?t:[e.seedTabId]}function jg(){let e=ds({persist:!1})||Hn({persist:!1,appendSeed:!1});if(e)return{boundaryId:e.boundaryId,seedTabId:e.seedTabId,touchedTabIds:Un(e.touchedTabIds)}}function yE(e,t){let n=is,r=as,o=ci,s,i=t;if(K){let d=K.listTasks(),p=K.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=zh({mode:a?.mode,previousTaskStatus:i,previousTaskMessages:s,previousTaskUserInput:n,previousTaskAssistantOutput:r,previousTaskCompletedAt:o,currentPrompt:e,ttlMs:Nd(a?.ttlMs),minLexicalOverlap:Ld(a?.minLexicalOverlap)});return{chatLog:c.chatLog,reason:c.reason,overlap:c.overlap}}var Ir=new Map,yd=fw;async function TE(e){if(Ir.has(e)){let o=Ir.get(e);if(Date.now()-o.ts<yd)return;Ir.delete(e)}let t=Date.now();for(let[o,s]of Ir)t-s.ts>=yd&&Ir.delete(o);let n=l?.pendingRun?.id;if(!n||!ke)return;let r=await ke.fetchExternalContext({runId:n,url:e,source:"direct_url"});r&&(Ir.set(e,{data:r,ts:Date.now()}),lg(Ir,dw))}function _E(e){let t=Ir.get(e);if(t){if(Date.now()-t.ts>=yd){Ir.delete(e);return}return t.data}}function kE(e){let t=String(e||"").trim();return t===cd.read||t===cd.act}function na(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 wE(e){let t=String(e.call?.name||"").trim(),n=e.call?.args&&typeof e.call.args=="object"?e.call.args:{},r=t===cd.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 na({code:"MISSING_URL",message:"External context tools require a target url or tab with a url.",retryable:!1});if(!ke)return na({code:"RUNTIME_UNAVAILABLE",message:"Rover server runtime is not initialized.",retryable:!0});let v=String(l?.pendingRun?.id||ke.getActiveRunId()||Ta||"").trim()||void 0;if(!v)return na({code:"NO_ACTIVE_RUN",message:"External context tools can only run during an active run.",retryable:!1});try{let h=_E(d);if(h)return h;let g=await ke.fetchExternalContext({runId:v,tabId:s,url:d,intent:r,message:p,source:u});if(!g)return na({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 na({code:g,message:String(h?.message||"External context request failed"),retryable:A,status:Number.isFinite(_)?_:void 0,details:h?.details})}}function fs(e){let t=fa();return{taskBoundaryId:Ne,taskTabScope:jg(),scopedTabIds:t,...e||{}}}var ng="";function Kn(e){if(!He)return;let t=fs(e),n=JSON.stringify(t);n!==ng&&(ng=n,He.postMessage({type:"update_config",config:t}))}function Gg(e,t){let n=String(e||"").trim();if(!n||!He)return;if(ut==="observer"){if(Nr()){Fn("system","This tab is read-only while another tab is actively running Rover.",!0),st({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)){Fn("system","Unable to take control right now because another tab is still running Rover actions.",!0),st({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()||Ze;us("controller",{localLogicalTabId:g,activeLogicalTabId:_,holderRuntimeId:A});let R=!!(M?.allowActions??!0);nt?.setAllowActions(R),nt?.setActionGateContext?.({mode:"controller",controllerRuntimeId:A,activeLogicalTabId:_,localLogicalTabId:g,reason:ka("controller",R)})}let r=t?.runId||crypto.randomUUID(),o=!!t?.resume,s=t?.appendUserMessage!==!1,a=(t?.askUserAnswers?Vw(r):void 0)||n;pd(r),s&&Fn("user",n,!0);let c=l?.pendingRun?.id===r?l.pendingRun.attempts:0,d=l?.pendingRun?.id===r&&l.pendingRun.taskBoundaryId||Ne;zg([Ml()],{persist:!0});let p=fa(),u=Mr(Array.isArray(t?.seedChatLog)?t.seedChatLog:cE());xr=!1,xt({id:r,text:a,startedAt:Date.now(),attempts:o?c+1:0,autoResume:t?.autoResume!==!1,taskBoundaryId:d,resumeRequired:!1,resumeReason:void 0}),qg(o?"worker_task_resumed":"worker_task_active"),Xt=a,l&&(l.workerState=Ht({...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(Ia(l.workerState))),Hg(u),N?.acquireWorkflowLock(r),N?.setActiveRun({runId:r,text:a}),He.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:jg()}),_t&&clearTimeout(_t);let v=r;_t=setTimeout(()=>{l?.pendingRun?.id===v&&(Wd({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"}}),Fn("system","Task timed out after 5 minutes with no response.",!0)),_t=null},5*6e4)}async function EE(e,t){let n=$w(e,t?.askUserAnswers);if(!n)return;bE();let r=l?.activeTask?.status,o=Jr(l?.workerState?.pendingAskUser?.questions).length,s=l?.workerState?.pendingAskUser?.boundaryId,i=$h({startNewTask:!!t?.startNewTask,taskStatus:r,pendingAskUserQuestionCount:o,hasAskUserAnswers:!!t?.askUserAnswers,pendingAskUserBoundaryId:s,currentTaskBoundaryId:Ne}),a=!i,c=a?t?.continueRunId||l?.pendingRun?.id||ke?.getActiveRunId():void 0,d=i?yE(n,r):{reason:"mode_disabled",overlap:0},p=Mr(d.chatLog);if(dt("status",{event:"task_boundary_decision",startFreshTask:i,askUserContinuation:a,pendingAskUserQuestionCount:o,activeTaskStatus:r||"none"}),dt("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(dt("status",{event:"task_boundary_reset",reason:g,hadActiveRun:h}),K&&r==="running"){let _=K.getActiveTask();_&&(_.uiMessages=l?.uiMessages||[],_.timeline=l?.timeline||[],_.rootUserInput=_.rootUserInput||Xt)}if(Aa({reason:g,clearUi:!0}),K){let _=K.getActiveTask();_&&(_.rootUserInput=n,_.seedChatLog=p),_o()}h&&ke&&await new Promise(_=>setTimeout(_,50))}En();let u=c,v=t?.routing;if(ke&&M)try{let h=await ke.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))&&(Gr=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"&&ke&&i){let A=h?.conflict?.runId||h.runId;if(A){await ke.controlRun({action:"cancel",runId:A,reason:"stale_run_cleanup"});let R=await ke.submitRunInput({message:n,clientEventId:crypto.randomUUID(),continueRun:!1,forceNewRun:!0,requestedMode:t?.routing||M.taskRouting?.mode||"act"});R?.runId&&(u=R.runId.trim(),Eo(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),Eo(u),(h.acceptedMode==="act"||h.acceptedMode==="planner")&&(v=h.acceptedMode)}catch(h){let g=String(h?.message||"server run submission failed");Eo(void 0),st({kind:"error",title:"Run start failed",detail:g,status:"error"}),Fn("system",`Unable to start task: ${g}`,!0),It(`Task could not start (${g})`),je("error",{message:g,scope:"run_input"});return}Gg(n,{runId:u,appendUserMessage:!0,resume:!1,preserveHistory:!1,seedChatLog:p,autoResume:!0,routing:v,askUserAnswers:t?.askUserAnswers})}function rs(e,t){EE(e,t)}function ra(e,t){Wd({reason:e,statusText:t||e,cancelReason:e})}function $d(e){let t=String(e||"").trim();if(!t)return!1;let n=N?.getWorkflowLockInfo();if(!n?.locked||!n.holderRuntimeId||n.holderRuntimeId===Ze||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 oa(e=450,t){lt||(lt=setTimeout(()=>{lt=null,Ar(t)},Math.max(120,e)))}function IE(e,t){mr=!0,rn=!1,pn=!1,En(),It("Resuming interrupted task...");let n=e.text?.trim()||l?.workerState?.rootUserInput?.trim()||Xt?.trim()||"Continue the current task on this page";dt("status",{event:"resume_dispatch",source:t,runId:e.id}),Gg(n,{runId:e.id,resume:!0,appendUserMessage:!1,autoResume:!0})}function Ar(e){if(!l?.pendingRun){lt&&(clearTimeout(lt),lt=null),fn=0;return}let t=et(l.pendingRun);if(!t||(ut==="observer"&&!Nr()&&us("controller",{localLogicalTabId:N?.getLocalLogicalTabId(),activeLogicalTabId:N?.getActiveLogicalTabId(),holderRuntimeId:N?.getCurrentHolderRuntimeId()}),ut==="observer")||mr)return;if(!Xn||!He){oa(250,e);return}let n=l.activeTask?.status;if(Vu(n)){ra("terminal_task","Previous task already ended.");return}if(!qc(n)||!t.autoResume)return;if(Cd(M?.task?.resume?.mode)!=="crash_only"){ra("unsupported_resume_mode","Previous task dismissed.");return}if(t.resumeRequired!==!0){let d=Date.now()-Number(t.startedAt||0),p=pl(M?.task?.resume?.ttlMs);if(Number.isFinite(d)&&d>=0&&d<p)t.resumeRequired=!0,t.resumeReason=t.resumeReason||"worker_interrupted",xt(t);else{lt&&(clearTimeout(lt),lt=null),fn=0,En();return}}let o=Ad(M?.task?.autoResumePolicy),s=$d(t.id),i=yh({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"){oa(650,e);return}if(i==="cancel_resume"){ra("resume_policy_never","Previous task cancelled by resume policy."),st({kind:"info",title:"Resume cancelled",detail:"Auto-resume policy is set to never, so the interrupted run was cancelled.",status:"info"});return}if(!pn&&bw(t)&&(pn=!0),!pn&&(t.resumeReason==="worker_interrupted"||t.resumeReason==="agent_navigation"||t.resumeReason==="page_reload")&&(pn=!0),!pn&&vw(t)){oa(320,e);return}if(pn||(pn=!0),s){oa(650,e);return}if(lt&&(clearTimeout(lt),lt=null),!ai&&!e?.overridePolicyAction){if(fn+=1,dt("status",{event:"resume_blocked_no_session",reason:"session_not_ready",attempt:fn,runId:t.id}),fn<Nk){It("Preparing secure resume...");let d=Math.min(2e3,240+fn*160);oa(d,e);return}fn=0,rn=!1,ai=!0}fn=0;let a=pl(M?.task?.resume?.ttlMs),c=Date.now()-Number(t.startedAt||0);if(!Number.isFinite(c)||c<0||c>a){ra("resume_ttl_expired","Previous task expired.");return}if(t.attempts>=Sk){ra("resume_attempt_limit","Previous task dismissed.");return}if(i==="prompt_resume"){mE(t)&&(It("Resume available. Choose Resume or Cancel."),dt("status",{event:"resume_prompt_shown",runId:t.id}));return}IE(t,e?.overridePolicyAction==="auto_resume"?"manual_resume_confirm":`policy_${o}`)}function Kg(e){if(!Gu({localUpdatedAt:Number(e.localState.updatedAt)||0,incomingUpdatedAt:Number(e.incomingState.updatedAt)||0,localState:e.localState,incomingState:e.incomingState,crossDomainResumeActive:!!e.allowRicherIncomingOnResume&&rn}))return!1;if(!e.allowRicherIncomingOnResume||!rn)return!0;let n=ju({localState:e.localState,incomingState:e.incomingState});return n.exactRunMatch||n.exactBoundaryMatch?!0:!(n.localRunId||n.localBoundaryId)}function rg(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 Xg(e){return e.incomingWorkerState?e.localWorkerState?Gu({localUpdatedAt:Number(e.localUpdatedAt)||Number(e.localWorkerState.updatedAt)||0,incomingUpdatedAt:Number(e.incomingUpdatedAt)||Number(e.incomingWorkerState.updatedAt)||0,localState:rg(e.localWorkerState,e.fallbackPendingRun,e.taskStatus,e.taskEpoch,{includePendingIdentity:!0}),incomingState:rg(e.incomingWorkerState,void 0,e.taskStatus,e.taskEpoch,{includePendingIdentity:!1}),crossDomainResumeActive:!!e.allowRicherIncomingOnResume&&rn}):!0:!1}function Yg(e){if(Mo(e.localState.activeTask,mn("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=Me(cs(e.localState)),s=Me(cs(e.incomingState));return o&&s?o===s:!(o&&!s||!o&&s)}async function xE(e,t){if(!l)return;let n=await Jw(e,t);if(!n||!l)return;let r=ga({...n,sessionId:l.sessionId,runtimeId:Ze},l.sessionId,Ze);if(!Kg({localState:l,incomingState:r,allowRicherIncomingOnResume:!0})||!Yg({localState:l,incomingState:r}))return;let o=Math.max(1,Number(l.taskEpoch)||1),s=Math.max(1,Number(r.taskEpoch)||1),i=cs(r);ss({source:"indexeddb_checkpoint",incomingBoundaryId:i,taskEpochAdvanced:s>o,allowBootstrapAdoption:!0})&&(l=ga({...l,...r,sessionId:l.sessionId,runtimeId:Ze},l.sessionId,Ze),_a(l),li({rotateIfMissing:!Ne}),ds({persist:!1}),Hd({preferredTaskId:r.activeTaskId||r.activeTask?.taskId}),xe(),Y&&(Y.clearMessages(),Rl(l.uiMessages),Al(l.timeline),Cl(l),pi(),l.uiHidden?Y.hide():(Y.show(),l.uiOpen?Y.open():Y.close())),Xn&&He&&Kn(),Xn&&He&&l.workerState&&ut==="controller"&&(He.postMessage({type:"hydrate_state",state:l.workerState}),je("context_restored",{source:"indexeddb_checkpoint",ts:Date.now()})))}var td=!1;function Vd(e,t){if(l&&!td){td=!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||mn("shared_sync");l.activeTask=Bg(e.task,i),s&&(l.uiMessages=[],l.timeline=[],qd(),xt(void 0),l.workerState=void 0,Ne=hr(),l.taskTabScope=void 0,Hn({forceReset:!0,persist:!1}),Kn(),En());let a=fr(e.uiMessages),c=new Set(a.map(D=>D.id)),d=l.uiMessages,p=l.uiMessages.filter(D=>D.role==="user"&&D.sourceRuntimeId===Ze&&!c.has(D.id)).length;p>0&&dt("status",{event:"local_message_preserved",count:p});let u=eE(d,a);(u.length!==d.length||u.some((D,H)=>{let C=d[H];return C?C.id!==D.id||C.ts!==D.ts||C.role!==D.role||C.text!==D.text:!0}))&&(l.uiMessages=u,Y?.clearMessages(),Rl(l.uiMessages));let h=pr(e.timeline),g=l.timeline,_=nE(g,h);(_.length!==g.length||_.some((D,H)=>{let C=g[H];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=_,Al(l.timeline)),It(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,U=e.task?.status;if(e.activeRun&&e.activeRun.runtimeId!==Ze&&!$u({localTaskStatus:R,remoteTaskStatus:U,mode:ut,hasRemoteActiveRun:!0}))if(String(e.activeRun.runtimeId||"").trim()!==""||Nr()||wa(ut)==="observer")xt(void 0);else{let C=et(l.pendingRun),J=Me(e.workerContext?.taskBoundaryId),ce=C?.id===e.activeRun.runId&&(!C?.taskBoundaryId||Me(C.taskBoundaryId)===(J||Me(Ne))),oe=ce?C?.resumeRequired===!0:String(e.activeRun.runtimeId||"").trim()==="";xt(et({id:e.activeRun.runId,text:e.activeRun.text,startedAt:e.activeRun.startedAt,attempts:ce&&C?.attempts||0,autoResume:!0,taskBoundaryId:(ce?C?.taskBoundaryId:void 0)||J||C?.taskBoundaryId||Ne,resumeRequired:oe,resumeReason:ce?C?.resumeReason:oe?"agent_navigation":void 0}))}else{let D=$u({localTaskStatus:R,remoteTaskStatus:U,mode:ut,hasRemoteActiveRun:!!e.activeRun}),C=et(l.pendingRun)?.resumeRequired===!0&&qc(R);D&&!C&&(l.pendingRun?.id&&Co(l.pendingRun.id),xt(void 0),U&&U!=="running"&&xa())}if(ut==="observer"&&us("observer",{localLogicalTabId:N?.getLocalLogicalTabId(),activeLogicalTabId:N?.getActiveLogicalTabId(),holderRuntimeId:N?.getCurrentHolderRuntimeId()}),e.workerContext){let D=Ht(e.workerContext),H=Number(l.workerState?.updatedAt)||0,C=Number(D?.updatedAt)||0;D&&Xg({localWorkerState:l.workerState,incomingWorkerState:D,fallbackPendingRun:et(l.pendingRun),taskStatus:l.activeTask?.status,taskEpoch:l.taskEpoch,localUpdatedAt:H,incomingUpdatedAt:C,allowRicherIncomingOnResume:!0})&&ss({source:"shared_worker_context",incomingBoundaryId:D.taskBoundaryId,taskEpochAdvanced:s,allowBootstrapAdoption:!0})&&(l.workerState=dr(D,wn()),li(),Xn&&He&&ut==="controller"&&(Kn(),He.postMessage({type:"hydrate_state",state:l.workerState}),je("context_restored",{source:"shared_session",ts:Date.now()})))}}if(l.uiMessages=fr(l.uiMessages),l.timeline=pr(l.timeline),l.workerState=dr(Ht(l.workerState),wn()),_a(l),li(),ds({persist:!1}),Xn&&He&&ut==="controller"&&Kn(),gr(),pi(),l.activeTask=Mo(l.activeTask,mn("implicit")),Hd(),N&&K){let r=new Map;for(let o of K.listTasks())for(let s of o.tabIds)r.set(s,o.taskId);N.setTaskTabMapping(r)}let n=M?.ui?.tabIndicator?.widgetTabBar!==!1;if(Y&&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:K?.getTaskForTab(i.logicalTabId)?.taskId}));s.length>1?Y.setTabs(s):Y.setTabs([])}else Y&&Y.setTabs([]);if(t==="local")return;xe()}finally{td=!1}}}function zd(e){let t=mn("checkpoint_clone");return{version:kd,sessionId:e.sessionId,runtimeId:e.runtimeId,uiOpen:!!e.uiOpen,uiHidden:!!e.uiHidden,uiStatus:typeof e.uiStatus=="string"?sn(e.uiStatus,300):void 0,transientStatus:Ea(e.transientStatus??e.uiStatus,{runId:e.pendingRun?.id,taskId:e.activeTask?.taskId}),uiMessages:fr(e.uiMessages),timeline:pr(e.timeline),executionMode:e.executionMode==="observer"||e.executionMode==="controller"?e.executionMode:"controller",workerState:Ht(e.workerState),pendingRun:et(e.pendingRun),taskTabScope:gi(e.taskTabScope,et(e.pendingRun)?.taskBoundaryId||Ht(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:Mo(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 SE(e){return!(e.sessionScope==="tab"||e.checkpointing?.enabled===!1||!Yn(e)||!Ft)}function RE(){if(!l||!M||!Ft)return null;let e=N?.getState(),t=zd(l),n=Math.max(Number(e?.updatedAt||0),Number(t.updatedAt||0)),r=n>0?n:Date.now();return{version:sg,siteId:M.siteId,visitorId:Ft,sessionId:l.sessionId,updatedAt:r,sharedState:e,runtimeState:t}}function Qg(e){if(!e||typeof e!="object"||!l||!M||e.siteId&&e.siteId!==M.siteId||Ft&&e.visitorId&&e.visitorId!==Ft)return;let t=typeof e.sessionId=="string"&&e.sessionId.trim()?e.sessionId.trim():l.sessionId;ii=!0;try{if(t&&l.sessionId!==t&&(l.sessionId=t,M={...M,sessionId:t},vl(M),Kn({sessionId:t})),e.sharedState&&N&&N.hydrateExternalState(e.sharedState)&&(Vd(N.getState(),"remote"),us(N.getRole(),{localLogicalTabId:N.getLocalLogicalTabId(),activeLogicalTabId:N.getActiveLogicalTabId(),holderRuntimeId:N.getCurrentHolderRuntimeId()})),e.runtimeState&&typeof e.runtimeState=="object"){let n=ga({...e.runtimeState,sessionId:t,runtimeId:Ze},t,Ze);if(Kg({localState:l,incomingState:n,allowRicherIncomingOnResume:!0})){if(!Yg({localState:l,incomingState:n}))return;let r=Math.max(1,Number(l.taskEpoch)||1),o=Math.max(1,Number(n.taskEpoch)||1),s=cs(n);if(!ss({source:"cloud_checkpoint",incomingBoundaryId:s,taskEpochAdvanced:o>r,allowBootstrapAdoption:!0}))return;l=ga({...l,...n,sessionId:t,runtimeId:Ze},t,Ze),_a(l),li(),l.workerState=dr(l.workerState,wn()),ds({persist:!1}),Hd({preferredTaskId:n.activeTaskId||n.activeTask?.taskId}),xe(),Cl(l),l.uiHidden?Y?.hide():(Y?.show(),l.uiOpen?Y?.open():Y?.close()),Xn&&Kn(),Xn&&l.workerState&&(He?.postMessage({type:"hydrate_state",state:l.workerState}),je("context_restored",{source:"cloud_checkpoint",ts:Date.now()})),ut==="controller"&&Ar(),rn=!1}}}finally{ii=!1}}function jd(e){if(Tt?.stop(),Tt=null,!SE(e)||!Ft)return;let t=Yn(e);if(!t){je("checkpoint_token_missing",{reason:"missing_or_invalid_session_token",expectedPrefix:"rvrsess_",action:"disabled_cloud_checkpoint_client"});return}try{let n=r=>{je("checkpoint_state",r),e.checkpointing?.onStateChange?.(r)};Tt=new Bc({apiBase:e.apiBase,authToken:t,getSessionToken:()=>Yn(M),shouldSync:()=>ut==="controller"&&!rn&&!di(),siteId:e.siteId,visitorId:Ft,ttlHours:e.checkpointing?.ttlHours??1,flushIntervalMs:e.checkpointing?.flushIntervalMs,pullIntervalMs:e.checkpointing?.pullIntervalMs,minFlushIntervalMs:e.checkpointing?.minFlushIntervalMs,maxSnapshotBytes:ui(e.stability?.maxSnapshotBytes,vt.snapshotBytes),shouldWrite:()=>ut==="controller"&&!rn&&!di(),buildCheckpoint:()=>RE(),onCheckpoint:r=>{Qg(r)},onStateChange:(r,o)=>{n({state:r,reason:o.reason,action:o.action,code:o.code,message:o.message}),r==="paused_auth"&&je("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||je("checkpoint_error",{action:o.action,code:o.code,message:o.message,status:o.status,disabled:!1,reason:"transient_failure"})}}),Tt.start(),Tt.markDirty(),Rg()}catch{Tt=null}}function vl(e){if(!l)return;if(N?.stop(),N=null,e.sessionScope==="tab"){us("controller");return}N=new Lc({siteId:e.siteId,sessionId:l.sessionId,runtimeId:Ze,leaseMs:e.tabPolicy?.actionLeaseMs,onRoleChange:(r,o)=>{let s=wa(r);us(s,o);let i=lr;lr=s==="controller",i!==lr&&(lr?(gr(!0),M&&Ud(M)):gr(!0));let a=s==="controller"&&(M?.allowActions??!0);if(nt?.setAllowActions(a),nt?.setActionGateContext?.({mode:s,controllerRuntimeId:o?.holderRuntimeId??N?.getCurrentHolderRuntimeId(),activeLogicalTabId:o?.activeLogicalTabId??N?.getActiveLogicalTabId(),localLogicalTabId:o?.localLogicalTabId??N?.getLocalLogicalTabId(),reason:ka(s,a)}),s==="controller"){Hn({persist:!0,appendSeed:!1}),ds({persist:!0});let c=N?.getWorkerContext();if(c){let d=Ht(c),p=Number(l?.workerState?.updatedAt)||0,u=Number(d?.updatedAt)||0;d&&u>p+100&&ss({source:"controller_handoff",incomingBoundaryId:d.taskBoundaryId,allowBootstrapAdoption:!0})&&(l&&(l.workerState=dr(d,wn()),li(),xe()),Xn&&He&&(Kn(),He.postMessage({type:"hydrate_state",state:l?.workerState}),je("context_restored",{source:"controller_handoff",ts:Date.now()})))}Ar()}},onStateChange:(r,o)=>{Vd(r,o)},onSwitchRequested:r=>{r>0&&(Ao(),st({kind:"status",title:`Switched to tab #${r}`,status:"info"}))},onTaskTabsExhausted:r=>{K&&(K.dispatch(r,{type:"PAUSE",reason:"all_tabs_closed"}),_o(),xe(),Y?.showPausedTaskBanner({taskId:r,rootUserInput:K.getTask(r)?.rootUserInput||"Task"}))}}),N.onSessionTokenReceived=(r,o)=>{lr||hl(r,o)},N.onProjectionReceived=r=>{!lr&&r&&fd(r)};let t=xd();N.start(dg(t)),Hn({persist:!0,appendSeed:!1}),ds({persist:!0}),et(l?.pendingRun)?.resumeRequired===!0&&N.requestControl(),l?.lastNavigationHandoff&&t&&(l.lastNavigationHandoff=Zr({...l.lastNavigationHandoff,consumed:!0}),xe()),N.setRpcRequestHandler(async r=>{if(!nt)throw new Error("Bridge not available");if(r.method==="getPageData")return nt.getPageData(r.params);if(r.method==="executeTool")return nt.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(Ia(l.workerState))}function AE(e){e&&go.delete(e),Y?.clearTimeline(),l&&(l.timeline=[]),N?.clearTimeline()}function CE(e){if(!(!e||typeof e!="object")&&!Ww(e)){if(e.type==="assistant"){let t=So(e.blocks),n=String(e.text||Dg(t)||"");typeof e.runId=="string"&&e.runId&&(go.set(e.runId,n),lg(go,lw)),Fn("assistant",n,!0,{blocks:t}),st({kind:"tool_result",title:"Assistant update",detail:n,detailBlocks:t,status:"success"});return}if(e.type==="status"){let t=Mw(e.stage),n=e.message?String(e.message):void 0,r=e.compactThought?String(e.compactThought):void 0,o=Lw(n,t,r);if(n&&It(n,{runId:typeof e.runId=="string"?e.runId:l?.pendingRun?.id,taskId:l?.activeTask?.taskId,stage:t}),o&&o!==Gc&&(Gc=o,n)){let s=!!(e.thought||r),i=r||(e.thought?String(e.thought):"");if(s&&t!=="analyze"&&t!=="route"&&t!=="complete"&&!Dw(i,Xt))st({kind:"thought",title:i,detail:e.thought?String(e.thought):r,status:"pending"});else{let c=t?`${Nw(t)}: ${n}`:n;st({kind:"status",title:c,detail:r||(e.thought?String(e.thought):void 0),status:t==="complete"?"success":"info"})}}je("status",e);return}if(e.type==="runtime_tabs_diagnostics"){let t=e?.diagnostics&&typeof e.diagnostics=="object"?e.diagnostics:{},n=Un(t.keptScopedTabIds||[]),r=Un(t.listedTabIds||[]),o=Un(t.resolvedTabOrder||[]),s=n.filter(i=>!r.includes(i));s.length>0&&(st({kind:"status",title:"Scoped tab placeholder retained",detail:`missing_in_listing=${s.join(",")}; resolved_order=${o.join(",")||"none"}`,status:"info"}),dt("status",{event:"scoped_tab_missing_from_listing",missingScopedTabIds:s,listedTabIds:r,resolvedTabOrder:o}));return}if(e.type==="tool_start"){st({kind:"tool_start",title:`Running ${e.call?.name||"tool"}`,detail:ol(e.call?.args),status:"pending"}),je("tool_start",e);return}if(e.type==="tool_result"){if(!Qw(e.result)){let n=Un([...Xw(e.call?.args),...Yw(e.result)]);n.length&&(zg(n,{persist:!0}),Kn())}let t=So(e.detailBlocks)||Kw(e.result);st({kind:"tool_result",title:`${e.call?.name||"tool"} completed`,detail:ol(e.result),detailBlocks:t,status:e?.result?.success===!1?"error":"success"}),je("tool_result",e);return}if(e.type==="auth_required"){je("auth_required",e.error),e.error?.message&&(Fn("system",`Auth required: ${e.error.message}`,!0),st({kind:"error",title:"Auth required",detail:String(e.error.message),status:"error"}));return}if(e.type==="navigation_guardrail"){je("navigation_guardrail",e),st({kind:"status",title:"Navigation guardrail",detail:ol(e),status:"info"});return}if(e.type==="error"){Fn("system",`Error: ${e.message||"unknown"}`,!0),st({kind:"error",title:"Execution error",detail:String(e.message||"unknown"),status:"error"}),je("error",e);return}if(e.type==="state_snapshot"){if(l){let t=Ht({...e.state||{},updatedAt:Date.now()});if(!t||!ss({source:"worker_snapshot",incomingBoundaryId:t.taskBoundaryId,allowBootstrapAdoption:!0}))return;l.workerState=dr(t,wn());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=kh({taskStatus:l.activeTask?.status,hasPendingRun:!!l.pendingRun,activeRunId:n,activeRunText:r,ignoredRunIds:ur});if(o&&(l.pendingRun=et({id:n,text:r,startedAt:e.activeRun.startedAt,attempts:0,autoResume:!0})),n&&r&&o?N?.setActiveRun({runId:n,text:r}):n&&(!bo()||ur.has(n))&&N?.setActiveRun(void 0),!bo()&&l.pendingRun&&xt(void 0),l.workerState&&N?.setWorkerContext(Ia(l.workerState)),K&&t?.taskBoundaryId){let s=K.getTaskByBoundaryId(t.taskBoundaryId);s&&(s.workerState=l.workerState,n&&(s.pendingRun=l.pendingRun))}pi(),xe()}return}if(e.type==="task_started"){je("task_started",{taskId:e.taskId,reason:"worker"});return}if(e.type==="run_started"){if(Gc="",En(),typeof e.runId=="string"&&e.runId&&go.delete(e.runId),!bo()){N?.setActiveRun(void 0);return}let t=l?.pendingRun,n=typeof e?.taskBoundaryId=="string"?Me(e.taskBoundaryId):void 0;typeof e.runId=="string"&&e.runId&&pd(e.runId),xt(et({id:e.runId,text:e.text,startedAt:t?.startedAt||Date.now(),attempts:t?.attempts||0,autoResume:t?.autoResume!==!1,taskBoundaryId:n||t?.taskBoundaryId||Ne,resumeReason:t?.resumeReason,resumeRequired:t?.resumeRequired})),N?.setActiveRun({runId:e.runId,text:String(e.text||"")}),Y?.setRunning(!0),Y?.setQuestionPrompt(void 0);let r=`run:${String(e.runId||"")}:start`;if(l?.timeline.some(o=>o.id===r)||st({id:r,kind:"plan",title:e.resume?"Run resumed":"Run started",detail:String(e.text||""),status:"pending"}),K&&n){let o=K.getTaskByBoundaryId(n);o&&(o.pendingRun=l?.pendingRun,K.dispatch(o.taskId,{type:"START"}))}return}if(e.type==="run_completed"||e.type==="run_state_transition"){Gc="",mr=!1,fn=0;let t=zw(e),n=t.terminalState,r=t.continuationReason,o=e?.ok===!1||n==="completed"||n==="failed",s=!o&&n==="in_progress"&&r!=="awaiting_user";Y?.setRunning(s),_t&&(clearTimeout(_t),_t=null);let i=typeof e.runId=="string"&&e.runId?e.runId:void 0,a=typeof e?.taskBoundaryId=="string"?Me(e.taskBoundaryId):void 0;if(o){let c=et(l?.pendingRun),d=String(c?.text||Xt||"").trim(),p=String((i?go.get(i):"")||"").trim();is=d||is,as=p||as,ci=Date.now(),c?.id&&N?.releaseWorkflowLock(c.id),i&&N?.releaseWorkflowLock(i),xt(void 0),Eo(void 0),N?.setActiveRun(void 0),En(),i&&Co(i)}else if(bo()&&i){pd(i),Eo(i);let c=l?.pendingRun,d=c?.id===i&&c?.text?c.text:Xt||c?.text||"Continue task";xt(et({id:i,text:d,startedAt:c?.startedAt||Date.now(),attempts:c?.attempts||0,autoResume:c?.autoResume!==!1,taskBoundaryId:a||c?.taskBoundaryId||Ne,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"?sn(e.route.reason,200):void 0,ts:Date.now()},xe()),!e.ok&&e.error){if(i&&go.delete(i),i&&(xo(i,"worker_run_failed",{attemptImmediately:!0}),ke?.controlRun({action:"cancel",runId:i,reason:"worker_run_failed"})),!bo())return;Y?.setQuestionPrompt(void 0),t.contextResetRecommended?(Yc("worker_run_failed_terminal"),N?.resetTabsToCurrent(window.location.href,document.title||void 0),It(void 0)):(Yc("worker_run_failed_terminal"),It(void 0)),i&&go.delete(i),st({kind:"error",title:"Run failed",detail:String(e.error),status:"error"})}else if(e.ok){if(!bo())return;let c=t.taskComplete,d=t.needsUserInput,p=t.questions||Jr(e.questions),u=Jr(l?.workerState?.pendingAskUser?.questions),v=p.length?p:d?u:[];if(n==="failed")i&&(xo(i,"worker_terminal_failed",{attemptImmediately:!0}),ke?.controlRun({action:"cancel",runId:i,reason:"worker_terminal_failed"})),Y?.setQuestionPrompt(void 0),t.contextResetRecommended?(Yc("worker_run_failed_terminal"),N?.resetTabsToCurrent(window.location.href,document.title||void 0),It(void 0)):(Yc("worker_run_failed_terminal"),It(void 0)),st({kind:"error",title:"Run failed",detail:typeof e.error=="string"?e.error:"Run reported failure state.",status:"error"});else if(c||n==="completed")i&&ke?.controlRun({action:"end_task",runId:i,reason:"worker_task_complete"}),Y?.setQuestionPrompt(void 0),fE("worker_task_complete"),N?.resetTabsToCurrent(window.location.href,document.title||void 0),It(void 0),AE(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(K){let g=K.getActiveTask();g&&K.dispatch(g.taskId,{type:"ASK_USER"})}No({type:"awaiting_user",reason:h,at:Date.now()})}else qg(h);d&&v.length>0?Y?.setQuestionPrompt({questions:v}):d?pi():Y?.setQuestionPrompt(void 0),d?(It(void 0),st({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"?(It("Navigating to continue task..."),st({kind:"status",title:"Navigation handoff",detail:"Rover will resume after same-tab navigation completes.",status:"pending"})):It("Working...")}}if(K&&a){let c=K.getTaskByBoundaryId(a);if(c)if(o){let d=n==="completed"?{type:"COMPLETE"}:{type:"FAIL",error:typeof e.error=="string"?e.error:void 0};K.dispatch(c.taskId,d),K.releaseWorker(c.taskId)}else t.continuationReason==="awaiting_user"&&K.dispatch(c.taskId,{type:"ASK_USER"})}_o();return}if(e.type==="ready"){Xn=!0,It(void 0),je("ready"),M&&nb(M);let t=N?.getWorkerContext(),n=dr(Ht(t),wn()),r=n&&ss({source:"ready_hydrate",incomingBoundaryId:n.taskBoundaryId,allowBootstrapAdoption:!0})?n:void 0,o=dr(Ht(l?.workerState),wn()),s=o&&ss({source:"ready_hydrate",incomingBoundaryId:o.taskBoundaryId,allowBootstrapAdoption:!0})?o:void 0,i=Number(s?.updatedAt)||0,a=Number(r?.updatedAt)||0,c=r&&Xg({localWorkerState:s,incomingWorkerState:r,fallbackPendingRun:et(l?.pendingRun),taskStatus:l?.activeTask?.status,taskEpoch:l?.taskEpoch,localUpdatedAt:i,incomingUpdatedAt:a,allowRicherIncomingOnResume:!0})?r:s;l&&(c&&c!==l.workerState?(l.workerState=dr(c,wn()),xe()):!c&&l.workerState&&(l.workerState=void 0,xe())),c?(He?.postMessage({type:"hydrate_state",state:c}),je("context_restored",{source:"runtime_start",ts:Date.now()}),setTimeout(()=>{mr||Ar()},500)):rn&&Tt?(dt("status",{event:"checkpoint_pull_first"}),Tt.syncPullFirst()):Ar();return}if(e.type==="hydrated"){Ar();return}e.type==="updated"&&je("updated")}}function Td(e,t){let n=Number(e);return Number.isFinite(n)?Math.max(t.min,Math.min(t.max,Math.floor(n))):t.fallback}function Nl(e){if(!e||typeof e!="object")return;let t=Td(e.shortcutMaxStored,{min:1,max:cl,fallback:cl}),n=Td(e.shortcutMaxRendered,{min:1,max:ll,fallback:ll});return{shortcutMaxStored:t,shortcutMaxRendered:n}}function Yr(e){return gc(e)}function ME(e){let t=Number(e);if(Number.isFinite(t))return Math.max(zk,Math.min(jk,Math.floor(t)))}function mi(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,$k);r&&(n.language=r);let o=ME(t.autoStopMs);return o!==void 0&&(n.autoStopMs=o),Object.keys(n).length?n:void 0}function ba(e){if(!e)return;let t=Yr(Cr?.pageConfig),n=Yr(e.pageConfig);return Yr({...t||{},...n||{}})}function NE(e){if(!He||!e)return;let t=ba(e),n=JSON.stringify(t||null);n!==od&&(od=n,He.postMessage({type:"update_config",config:{...fs(),pageConfig:t}}))}function Sa(){ca&&(clearTimeout(ca),ca=null),la&&(clearTimeout(la),la=null)}function LE(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>jh?null:{shortcuts:Ro(n.data.shortcuts),greeting:hi(n.data.greeting),voice:mi(n.data.voice),limits:Nl(n.data.limits),pageConfig:Yr(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>jh?null:{shortcuts:Ro(n.data)}}catch{return null}}function Jg(e,t){try{localStorage.setItem(`rover:site-config:${e}`,JSON.stringify({ts:Date.now(),version:t.version,data:{shortcuts:Ro(t.shortcuts),greeting:hi(t.greeting),voice:mi(t.voice),limits:Nl(t.limits),pageConfig:Yr(t.pageConfig)}}))}catch{}}function hi(e){if(!e||typeof e!="object")return;let t={},n=String(e.text||"").trim();n&&(t.text=n.slice(0,Wk));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 DE(e){if(!e||typeof e!="object")return null;let t=String(e.id||"").trim().slice(0,80),n=String(e.label||"").trim().slice(0,Uk),r=String(e.prompt||"").trim().slice(0,Hk);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,Fk)),e.icon&&(o.icon=String(e.icon).trim().slice(0,qk)),(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 Ro(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(t.length>=cl)break;let o=DE(r);!o||n.has(o.id)||(n.add(o.id),t.push(o))}return t}function OE(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 PE(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 OE(Array.from(n.values())).slice(0,cl)}function Zg(e){if(!e)return[];let t=Ro(e.ui?.shortcuts||[]),n=Ro(Cr?.shortcuts||[]);return PE(t,n)}function eb(e){let t=Td(Cr?.limits?.shortcutMaxRendered,{min:1,max:ll,fallback:ll});return e.filter(n=>n.enabled!==!1).slice(0,t)}function Ys(){yo&&(clearTimeout(yo),yo=null),ei=null}function BE(e){return`${window.location.href}::${e.signature}`}function UE(e){return e?!!(ml(e)||Yn(e)):!1}function _d(e,t){if(!e.consume)return;let n=`${window.location.pathname}${window.location.search}${window.location.hash}`,r=ah(window.location.href,e);if(r!==n)try{history.replaceState(history.state,document.title,r),dt("status",{event:"deep_link_consumed",kind:t.kind,paramName:t.paramName})}catch{}}function FE(e,t,n){let r=ei;r?.handleKey===e&&r.deadlineAt===n&&yo||(yo&&clearTimeout(yo),ei={handleKey:e,request:t,deadlineAt:n},yo=setTimeout(()=>{yo=null,Ra("shortcut_retry")},rw))}function HE(e,t,n){Ys(),Ao(),Fn("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),dt("status",{event:"deep_link_shortcut_not_found",shortcutId:e.value,paramName:e.paramName}),Xs=t,_d(n,e)}function Ra(e){if(!M||typeof window>"u")return;let t=Ws(M.deepLink),n=ih(window.location.href,t);if(!n){Ys(),Xs="",sa="";return}let r=BE(n);if(!t.enabled){Ys(),sa!==r&&(dt("status",{event:"deep_link_ignored_disabled",kind:n.kind,paramName:n.paramName,source:e}),sa=r);return}if(sa="",r===Xs)return;if(ei?.handleKey===r||dt("status",{event:"deep_link_detected",kind:n.kind,paramName:n.paramName,source:e}),n.kind==="prompt"){Ys(),Ao(),rs(n.value,{reason:"deep_link_prompt"}),dt("status",{event:"deep_link_dispatched",kind:n.kind,paramName:n.paramName}),Xs=r,_d(t,n);return}let s=Zg(M).find(a=>a.enabled!==!1&&a.id===n.value);if(s){Ys(),Ao(),rs(s.prompt,{reason:"deep_link_shortcut",routing:s.routing}),dt("status",{event:"deep_link_dispatched",kind:n.kind,paramName:n.paramName,shortcutId:s.id,routing:s.routing}),Xs=r,_d(t,n);return}let i=ei?.handleKey===r?ei.deadlineAt:Date.now()+nw;if(Date.now()<i&&UE(M)){FE(r,n,i);return}HE(n,r,t)}function Ll(e){if(!e)return;let t=hi(Cr?.greeting),n=hi(e.ui?.greeting);if(!(!t&&!n))return{...t||{},...n||{}}}function tb(e){if(!e)return;let t=mi(Cr?.voice),n=mi(e.ui?.voice);if(!t&&!n)return;let r={...t||{},...n||{}};return r.enabled===!0&&r.autoStopMs===void 0&&(r.autoStopMs=Vk),r}function Gd(e){let t=Sr?.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 va(){if(Io||!Y||!M||l?.uiOpen)return;let e=Ll(M);if(e?.disabled===!0)return;let t=`rover:greeting-shown:${M.siteId}`;try{if(sessionStorage.getItem(t)){os=!0;return}}catch{}if(os)return;Sa();let n=e?.delay??3e3,r=e?.duration??8e3,o=Gd(e);ca=setTimeout(()=>{if(ca=null,!(Io||l?.uiOpen)){Y?.showGreeting(o),os=!0;try{sessionStorage.setItem(t,"1")}catch{}la=setTimeout(()=>{la=null,Y?.dismissGreeting()},r)}},n)}function yl(e){let t=Zg(e);Y?.setShortcuts(eb(t)),Y?.setVoiceConfig(tb(e)),NE(e),Ra("site_config")}async function qE(e){let t=null,n=ml(e)||Yn(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=Ki(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:Ro(t.shortcuts),greeting:hi(t.greeting),voice:mi(t.voice),limits:Nl(t.limits),pageConfig:Yr(t.pageConfig),version:t.version!=null?String(t.version):void 0}:null}function nb(e){let t=LE(e.siteId);t&&(Cr=t),yl(e),va(),qE(e).then(n=>{if(n&&(Cr=n,Jg(e.siteId,n),yl(e),!Io)){let r=Ll(e);os&&!l?.uiOpen?Y?.showGreeting(Gd(r)):va()}}).catch(()=>{})}function Kd(e){if(!M)return;let t={...Sr,...e};t.name&&(t.name=String(t.name).trim().slice(0,120)),t.email&&(t.email=String(t.email).trim().slice(0,240)),Sr=t,mg(M.siteId,Sr),Y?.setVisitorName(Sr.name||""),Io||(os&&!l?.uiOpen?Y?.showGreeting(Gd(Ll(M))):va())}function WE(e){if(vl(e),N){let u=wa(N.getRole());ut=u,lr=u==="controller",l&&(l.executionMode=u)}jd(e),Il(e),gr(!0);let t=(e.allowActions??!0)&&(N?N.isController():!0),n=u=>{if(!l)return;let v=et(l.pendingRun);if(v){let R=et({...v,taskBoundaryId:v.taskBoundaryId||Ne,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(ke?.getActiveRunId()||Ta||h?.runId||"").trim();if(!g)return;let _=String(h?.text||Xt||"Continue task").trim()||"Continue task",A=et({id:g,text:_,startedAt:Date.now(),attempts:0,autoResume:!0,taskBoundaryId:Ne,resumeRequired:!0,resumeReason:u});return l.pendingRun=A,A&&N?.setActiveRun({runId:A.id,text:A.text}),A};nt=new xc({allowActions:t,runtimeId:Ze,allowedDomains:e.allowedDomains,domainScopeMode:ha(e.domainScopeMode),externalNavigationPolicy:e.externalNavigationPolicy,crossHostPolicy:El(e.navigation?.crossHostPolicy),navigationDelayMs:e.timing?.navigationDelayMs,domSettle:{debounceMs:Ut(e.timing?.domSettleDebounceMs,8,500),maxWaitMs:Ut(e.timing?.domSettleMaxWaitMs,80,5e3),retries:Ut(e.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:Ut(e.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:Ut(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(je("navigation_guardrail",u),st({kind:"status",title:"Navigation guardrail",detail:ol(u),status:"info"}),ke&&u?.blockedUrl){let v=eg();if(!v)return;let h=String(window.location.hostname||"").toLowerCase(),g=(()=>{try{return new URL(String(u.blockedUrl)).hostname.toLowerCase()}catch{return}})();ke.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&&je("tab_event_conflict_retry",{runId:_.runId||v,decisionReason:_.decisionReason,conflict:_.conflict}),_.retryExhausted&&je("tab_event_conflict_exhausted",{runId:_.runId||v,decisionReason:_.decisionReason,conflict:_.conflict}))}).catch(()=>{})}},onBeforeAgentNavigation:async u=>{let v=eg(),h=String(window.location.hostname||"").toLowerCase();if(u?.targetUrl&&Oh(u.targetUrl,h)){let oe=Xu(u.targetUrl,h);return dt("navigation_guardrail",{event:"adversarial_blocked",targetUrl:u.targetUrl,score:oe.score,reasons:oe.reasons}),{decision:"block",reason:`Navigation blocked: suspicious URL detected (adversarial score ${oe.score}).`,decisionReason:"adversarial_block"}}if(u?.isCrossHost){let oe=Date.now();for(Zo.push(oe);Zo.length>0&&Zo[0]<oe-Xh;)Zo.shift();if(Zo.length>aw)return dt("navigation_guardrail",{event:"rapid_cross_origin_blocked",targetUrl:u.targetUrl,count:Zo.length}),{decision:"block",reason:`Navigation blocked: too many cross-origin navigations (${Zo.length} in ${Xh/1e3}s).`,decisionReason:"rapid_cross_origin_block"}}let g=(()=>{try{return new URL(String(u?.targetUrl||"")).hostname.toLowerCase()}catch{return}})(),_=!!h&&!!g&&Ji(h)!==Ji(g),A=!!h&&!!g&&h!==g,U=Wh({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=xw(),H=U==="allow_same_tab";if(H&&l){if(xr=!0,ed(Ju(u)),n(u.isCrossHost?"cross_host_navigation":"agent_navigation"),on&&M?.siteId)try{sessionStorage.setItem(`rover:sess:${M.siteId}`,JSON.stringify({t:on,e:Rr}))}catch{}if(K){let oe=K.getActiveTask();oe&&K.dispatch(oe.taskId,{type:"NAVIGATION_STARTED",targetUrl:u.targetUrl,isCrossHost:u.isCrossHost})}si("same_tab_navigation_handoff_early")}let C=null;if(u?.targetUrl&&ke&&v){let oe=!!g&&!!h&&g!==h;C=await ke.sendTabEvent({runId:v,currentUrl:window.location.href,targetUrl:u.targetUrl,message:D,currentHost:h||void 0,targetHost:g,isCrossHost:oe}).catch(()=>null),C?.retryAttempted&&je("tab_event_conflict_retry",{runId:C.runId||v,decisionReason:C.decisionReason,conflict:C.conflict,targetUrl:u.targetUrl}),C?.retryExhausted&&je("tab_event_conflict_exhausted",{runId:C.runId||v,decisionReason:C.decisionReason,conflict:C.conflict,targetUrl:u.targetUrl})}let J=Fh({crossRegistrableDomain:_,fallbackDecision:U,serverDecision:C?.decision,serverAvailable:!!C}),ce=J.decision;if(ce==="block")return H&&(xr=!1),{decision:"block",reason:J.failSafeBlocked?"Cross-domain navigation blocked because preflight policy check is unavailable.":C?.reason||"Navigation blocked by policy.",decisionReason:J.failSafeBlocked?"preflight_unavailable_block":C?.decisionReason||"policy_blocked"};if(ce==="open_new_tab"){H&&(xr=!1),M?.tools?.web?.scrapeMode==="on_demand"&&ke&&u?.targetUrl&&TE(u.targetUrl).catch(()=>{});let me=J.decisionReason==="preflight_unavailable_fallback"&&!C;return{decision:"open_new_tab",reason:C?.reason||(me?"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||J.decisionReason||"open_new_tab"}}return!H&&l?(xr=!0,ed(Ju(u)),n(u.isCrossHost?"cross_host_navigation":"agent_navigation"),si("same_tab_navigation_handoff")):H||(xr=!0),{decision:"allow_same_tab",reason:C?.reason||(J.decisionReason==="preflight_unavailable_fallback"&&!C?"Preflight is unavailable; allowing navigation using local policy.":"Navigation allowed."),decisionReason:C?.decisionReason||J.decisionReason||"allow_same_tab"}},onBeforeCrossHostNavigation:u=>{if(xr=!0,!l||!M)return;ed(Ju(u));let v=xd(),h=n("cross_host_navigation");hh(M.siteId,{sessionId:l.sessionId,sessionToken:on,sessionTokenExpiresAt:Rr,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||Ne}: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()}),si("cross_domain_handoff_pre_navigation")},instrumentationOptions:e.mode==="safe"?{observeInlineMutations:!1}:void 0});let r=ut==="observer"?"observer":"controller";nt?.setActionGateContext?.({mode:r,controllerRuntimeId:N?.getCurrentHolderRuntimeId(),activeLogicalTabId:N?.getActiveLogicalTabId(),localLogicalTabId:N?.getLocalLogicalTabId(),reason:ka(r,t)});let o=new MessageChannel;xm(o.port1,{getSnapshot:()=>nt.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 nt.getPageData(u);let A=N.listTabs().find(R=>R.logicalTabId===h);if(!A){let R=fa().includes(h);return Zi({logicalTabId:h,external:!1},R?"detached_runtime_placeholder":"target_tab_missing")}if(A.runtimeId===Ze)return nt.getPageData(u);if(A.external&&v.externalNavigationPolicy!=="allow")return Zi(A,"external_domain_inaccessible");if(!A.runtimeId||!N.isTabAlive(h))return Zi(A,"target_tab_inactive");try{return await N.sendCrossTabRpc(A.runtimeId,"getPageData",u,15e3)}catch{return Zi(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(kE(g)){let C=u?.call?.serverResult;return C?C.success?{success:!0,output:C.data}:{success:!1,error:C.error||"Server-side execution failed"}:wE({call:u?.call,routeTabId:Number.isFinite(Number(R))?Number(R):void 0,runtimeCfg:v})}if(h)return nt.executeTool(u.call,u.payload);let U=N?.getLocalLogicalTabId();if(!R||R===U||!N)return nt.executeTool(u.call,u.payload);let H=N.listTabs().find(C=>C.logicalTabId===R);if(!H){let C=fa().includes(R);return ea(v,{logicalTabId:R,external:!1},C?"detached_runtime_placeholder":"target_tab_missing")}if(H.external&&v.externalNavigationPolicy!=="allow")return ea(v,H,"external_tab_action_blocked");if(H.runtimeId===Ze)return nt.executeTool(u.call,u.payload);if(!H.runtimeId||!N.isTabAlive(R))return ea(v,H,"target_tab_inactive");try{return await N.sendCrossTabRpc(H.runtimeId,"executeTool",u,2e4)}catch{return ea(v,H,"cross_tab_execute_failed")}},executeClientTool:u=>nt.executeClientTool(u.name,u.args),listClientTools:()=>nt.listClientTools(),getTabContext:()=>{let u=N?.getLocalLogicalTabId(),v=N?.getActiveLogicalTabId();return{id:u||1,logicalTabId:u||1,activeLogicalTabId:v||u||1,runtimeId:Ze,mode:ut,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(fa()),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",__ROVER_SCRIPT_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{}He=new Worker(i,{type:"module"}),He.postMessage({type:"init",config:{...e,...fs(),pageConfig:ba(M),publicKey:void 0,authToken:Yn(e),sessionToken:on,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){Co(v.id),He?.postMessage({type:"cancel_run",runId:v.id}),xo(v.id,u,{attemptImmediately:!0}),ke?.controlRun({action:"cancel",runId:v.id,reason:u}).catch(()=>{}),N?.releaseWorkflowLock(v.id),N?.setActiveRun(void 0),xt(void 0),l.workerState=void 0,N?.setWorkerContext(void 0),Ne=hr(),l.taskTabScope=void 0,Hn({forceReset:!0,persist:!1}),Kn(),_t&&(clearTimeout(_t),_t=null),Y?.setRunning(!1),Y?.setQuestionPrompt(void 0),Wg(u),It(void 0),Fn("system","Task cancelled.",!0),is=void 0,as=void 0,ci=0,st({kind:"info",title:"Run cancelled",status:"info"}),xe();return}let h=Jr(l.workerState?.pendingAskUser?.questions).length>0,g=l.activeTask?.status;!h&&g!=="running"||(Ne=hr(),l.workerState=void 0,l.taskTabScope=void 0,Hn({forceReset:!0,persist:!1}),Kn(),_t&&(clearTimeout(_t),_t=null),Y?.setRunning(!1),Y?.setQuestionPrompt(void 0),En(),xt(void 0),pE(u),N?.endTask(u),N?.setActiveRun(void 0),N?.setWorkerContext(void 0),It(void 0),is=void 0,as=void 0,ci=0,st({kind:"info",title:u==="question_prompt_cancel"?"Input request cancelled":"Task cancelled",status:"info"}),xe())};Y=Gm({panel:{resizable:e.ui?.panel?.resizable!==!1},shortcuts:eb(Ro(e.ui?.shortcuts||[])),greeting:Ll(e),voice:tb(e),visitorName:Sr?.name,onVoiceTelemetry:(u,v)=>{Cw(u,v)},onShortcutClick:u=>{let v=String(u.prompt||"").trim();v&&rs(v,{routing:u.routing})},onSend:(u,v)=>{rs(u,{askUserAnswers:v?.askUserAnswers})},onRequestControl:()=>{qw()?st({kind:"status",title:"Control requested",detail:"This tab is now the active Rover controller for the current task.",status:"info"}):Fn("system","Unable to acquire control right now. Try again in a moment.",!0)},onCancelRun:()=>{a("manual_cancel_task")},onCancelQuestionFlow:()=>{a("question_prompt_cancel")},onNewTask:()=>{Aa({reason:"manual_new_task",clearUi:!0})},onEndTask:()=>{Ol({reason:"manual_end_task"})},onTaskSuggestionPrimary:()=>{let u=wo;if(u){if(u.kind==="resume_run"){let v=et(l?.pendingRun);if(En(),!v||v.id!==u.runId){It("Previous task is no longer resumable.");return}Ar({overridePolicyAction:"auto_resume"});return}rs(u.text,{bypassSuggestion:!0,startNewTask:!0,reason:u.reason})}},onTaskSuggestionSecondary:()=>{let u=wo;if(u){if(u.kind==="resume_run"){let v=String(l?.pendingRun?.id||"").trim();if(En(),!v||v!==u.runId)return;Wd({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}rs(u.text,{bypassSuggestion:!0})}},onSwitchConversation:u=>{if(!K||!l)return;let v=K.getActiveTask();v&&Y&&(v.scrollPosition=Y.getScrollPosition());let h=String(N?.getState()?.activeRun?.runId||"").trim(),_=!!(String(l.pendingRun?.id||"").trim()||h);if(v&&v.taskId!==u&&_){Fn("system","Finish the active run before switching conversations.",!0);return}let A=K.switchActiveTask(u);A&&(Fg(A,{replayUi:!0}),l.activeTaskId=u,Y&&(requestAnimationFrame(()=>{A.scrollPosition!=null&&Y.setScrollPosition(A.scrollPosition)}),Y.setActiveConversationId(u)),_o(),xe())},onDeleteConversation:u=>{K&&(K.deleteTask(u),_o(),xe())},onResumeTask:u=>{if(!K)return;K.dispatch(u,{type:"RESUME"}).accepted&&(Y?.hidePausedTaskBanner(),K.assignWorker(u,{}),_o(),xe())},onCancelPausedTask:u=>{if(!K)return;K.dispatch(u,{type:"CANCEL",reason:"user_cancelled_paused_task"}).accepted&&(Y?.hidePausedTaskBanner(),K.archiveTask(u),_o(),xe())},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:()=>{Io=!0,Sa(),l&&(l.uiOpen=!0,l.uiHidden=!1,xe()),je("open")},onClose:()=>{l&&(l.uiOpen=!1,xe()),je("close")}}),En(),l?.uiMessages?.length&&Rl(l.uiMessages),l?.timeline?.length&&Al(l.timeline),Cl(l),pi(),l?.executionMode&&Y.setExecutionMode(l.executionMode,{localLogicalTabId:N?.getLocalLogicalTabId(),activeLogicalTabId:N?.getActiveLogicalTabId(),controllerRuntimeId:N?.getCurrentHolderRuntimeId(),canTakeControl:!0,canComposeInObserver:Ng(),note:Lg(l.executionMode)}),He.onmessage=u=>{CE(u.data||{})};let c=()=>{N?.registerCurrentTab(window.location.href,document.title),N?.broadcastNavigation(window.location.href,document.title),Ra("navigation")};Js||(Js=History.prototype.pushState),Zs||(Zs=History.prototype.replaceState);let d=Js.bind(history),p=Zs.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},el(window,"popstate",c),l?.uiHidden?Y.hide():(Y.show(),l?.uiOpen??!!e.openOnInit?Y.open():Y.close()),l&&(l.uiHidden=!!l.uiHidden,l.uiOpen=!!l.uiOpen,xe()),N&&(Vd(N.getState(),"remote"),us(N.getRole(),{localLogicalTabId:N.getLocalLogicalTabId(),activeLogicalTabId:N.getActiveLogicalTabId(),holderRuntimeId:N.getCurrentHolderRuntimeId()})),va()}function ya(e){if(To)return Tl(e),To;ad&&_l(),ad=!0,Kr=fh(),Ze=yw(e.siteId),Ft=hg(e),Sr=e.visitor||kw(e.siteId),Io=!1,os=!1,Sa(),ls(),Cr=null,pn=!1;let t=e.sessionId?.trim(),n=ww(e.siteId),r=!t&&e.sessionScope!=="tab"&&Ft?Qh(e.siteId,Ft):void 0,o=rl(e.siteId,t||r),s=ri(e.siteId),i=Array.from(new Set([t?o:n,o,n,r?rl(e.siteId,r):void 0,s].filter(D=>!!D))),a=null,c=null;for(let D of i){let H=jw(D);if(H){a=H,c=D;break}}dn=c||o,jr=s!==dn?s:null;let d=i.filter(D=>D!==dn);ud(e.siteId,dn);let p=a?null:Hu(e.siteId,{currentUrl:window.location.href,currentHost:window.location.hostname,requireTargetMatch:!0});!a&&!p&&Hu(e.siteId,{currentHost:window.location.hostname,requireTargetMatch:!1})&&(dt("status",{event:"resume_cookie_rejected",reason:"target_or_host_mismatch"}),Vi(e.siteId)),p&&(Vi(e.siteId),rn=!0,pn=!0,p.openIntent==="preserve_if_running"&&Jh({runId:p.pendingRun?.id,taskId:p.activeTask?.taskId}),p.sessionToken&&hl(p.sessionToken,p.sessionTokenExpiresAt));let u=e.sessionId?.trim(),v=!u&&!a?.sessionId&&!p?.sessionId&&e.sessionScope!=="tab"&&Ft?Qh(e.siteId,Ft):void 0,h=u||a?.sessionId||p?.sessionId||v||crypto.randomUUID(),g=a;if(!a&&p){let D=dd(p.sessionId,Ze),H=String(p.activeTask?.status||"").trim().toLowerCase(),C=!H||H==="running";p.pendingRun&&C&&(D.pendingRun=et({...p.pendingRun,autoResume:!0,taskBoundaryId:p.pendingRun.taskBoundaryId,resumeRequired:!0,resumeReason:"cross_host_navigation"})),p.handoff&&(D.lastNavigationHandoff=Zr({...p.handoff,createdAt:p.handoff.createdAt})),p.activeTask&&(D.activeTask={...mn("cross_domain_resume"),taskId:p.activeTask.taskId,status:p.activeTask.status}),D.taskEpoch=p.taskEpoch||1,Ku(p.openIntent)&&(D.uiHidden=!1,D.uiOpen=!0),g=D}l=ga(g,h,Ze),u&&l.sessionId!==u&&(l=dd(u,Ze));let _=Iw(e.siteId);Ne=gw(l),_&&l.activeTask?.status==="running"&&(pn=!0,Ku(_.openIntent)&&(l.uiHidden=!1,l.uiOpen=!0,Jh({runId:_.runId,taskId:l.activeTask?.taskId})),l.pendingRun=et({...l.pendingRun||{},id:l.pendingRun?.id||_.runId,text:l.pendingRun?.text||_.text||Xt||"Continue task",startedAt:l.pendingRun?.startedAt||Date.now(),attempts:l.pendingRun?.attempts||0,autoResume:!0,taskBoundaryId:l.pendingRun?.taskBoundaryId||_.taskBoundaryId||Ne,resumeRequired:!0,resumeReason:_.resumeReason||l.pendingRun?.resumeReason||"agent_navigation"})),l.pendingRun&&!l.pendingRun.taskBoundaryId&&(l.pendingRun=et({...l.pendingRun,taskBoundaryId:Ne})),l.workerState&&!l.workerState.taskBoundaryId&&(l.workerState=dr(Ht({...l.workerState,taskBoundaryId:Ne}),Ne)),_a(l),M={...e,deepLink:Ws(e.deepLink),pageConfig:Yr(e.pageConfig),visitorId:Ft||e.visitorId,sessionId:u||l.sessionId,domainScopeMode:ha(e.domainScopeMode),taskRouting:{mode:e.taskRouting?.mode||"act",actHeuristicThreshold:e.taskRouting?.actHeuristicThreshold,plannerOnActError:e.taskRouting?.plannerOnActError},navigation:{crossHostPolicy:El(e.navigation?.crossHostPolicy)},timing:{navigationDelayMs:Ut(e.timing?.navigationDelayMs,0,3e3),actionTimeoutMs:Ut(e.timing?.actionTimeoutMs,5e3,12e4),domSettleDebounceMs:Ut(e.timing?.domSettleDebounceMs,8,500),domSettleMaxWaitMs:Ut(e.timing?.domSettleMaxWaitMs,80,5e3),domSettleRetries:Ut(e.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:Ut(e.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:Ut(e.timing?.sparseTreeRetryMaxAttempts,0,4)},transport:{activation:Dd(e.transport?.activation),idleCloseMs:Od(e.transport?.idleCloseMs)},stability:{maxPersistBytes:ui(e.stability?.maxPersistBytes,vt.localPersistBytes),maxSnapshotBytes:ui(e.stability?.maxSnapshotBytes,vt.snapshotBytes)},task:{singleActiveScope:vg(e.task?.singleActiveScope),tabScope:yg(e.task?.tabScope),resume:{mode:Cd(e.task?.resume?.mode),ttlMs:pl(e.task?.resume?.ttlMs)},followup:{mode:Tg(e.task?.followup?.mode),ttlMs:Nd(e.task?.followup?.ttlMs),minLexicalOverlap:Ld(e.task?.followup?.minLexicalOverlap)},observerInput:Md(e.task?.observerInput),autoResumePolicy:Ad(e.task?.autoResumePolicy)},chat:{inRun:_g(e.chat?.inRun),resumeFollowup:{mode:kg(e.chat?.resumeFollowup?.mode),maxTurns:wg(e.chat?.resumeFollowup?.maxTurns)}},external:{intentSelection:Eg(e.external?.intentSelection),requireUserConfirm:Ig(e.external?.requireUserConfirm),adversarialGate:xg(e.external?.adversarialGate)},taskContext:{...e.taskContext},features:{rover_v2_kernel_runtime:Sg(e.features?.rover_v2_kernel_runtime)}},l.sessionId=M.sessionId,l.runtimeId=Ze,dn=rl(e.siteId,l.sessionId),jr=dn!==ri(e.siteId)?ri(e.siteId):null,ud(e.siteId,dn),l.executionMode=l.executionMode||"controller",l.timeline=pr(l.timeline),l.uiMessages=fr(l.uiMessages),l.activeTask=Mo(l.activeTask,mn("boot")),Vu(l.activeTask?.status)&&(l.pendingRun=void 0,l.workerState=void 0,rn=!1,pn=!1,ls(),Vi(e.siteId),bg(e.siteId)),l.taskEpoch=Math.max(1,Number(l.taskEpoch)||1),ut=l.executionMode,Sr&&mg(e.siteId,Sr);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)K=Vs.fromPersistedState({tasks:l.tasks,activeTaskId:l.activeTaskId,taskOrder:l.taskOrder},A);else{K=Vs.fromV1State(l,A);let{tasks:D,activeTaskId:H,taskOrder:C}=K.toPersistedState();l.tasks=D,l.activeTaskId=H,l.taskOrder=C}let R=K.getActiveTask();R&&Fg(R,{replayUi:!1}),xe();try{sessionStorage.setItem(`rover:tab-alive:${e.siteId}`,"1")}catch{}Xn=!1,ai=!1,mr=!1,fn=0,dl=null;try{let D=sessionStorage.getItem(`rover:sess:${e.siteId}`);if(D){let{t:H,e:C}=JSON.parse(D);H&&typeof H=="string"&&H.startsWith("rvrsess_")&&Number(C)>Date.now()+2e3&&hl(H,Number(C))}}catch{}WE(M),Ud(M),Ra("boot");let U=!!(on&&Rr>Date.now()+2e3);if((!ke||U)&&(ai=!0),dn&&xE(dn,d.length?d:jr?[jr]:void 0),sE(),gr(!0),rn&&setTimeout(()=>{rn&&!mr&&(rn=!1,Ar())},Xk),To={boot:ya,init:Xd,update:Tl,shutdown:_l,open:Ao,close:Dl,show:Yd,hide:Qd,send:Jd,newTask:Aa,endTask:Ol,getState:Zd,registerTool:ef,identify:Kd,on:ug},tl.length){for(let D of tl)gg(D);tl.length=0}return To}function Xd(e){return ya(e)}function Tl(e){if(!To||!He||!M)return;M={...M,...e,deepLink:Ws({...M.deepLink,...e.deepLink}),pageConfig:e.pageConfig!==void 0?Yr(e.pageConfig):M.pageConfig,domainScopeMode:ha(e.domainScopeMode??M.domainScopeMode),taskRouting:{...M.taskRouting,...e.taskRouting},navigation:{...M.navigation,...e.navigation,crossHostPolicy:El(e.navigation?.crossHostPolicy??M.navigation?.crossHostPolicy)},timing:{...M.timing,...e.timing,navigationDelayMs:Ut(e.timing?.navigationDelayMs??M.timing?.navigationDelayMs,0,3e3),actionTimeoutMs:Ut(e.timing?.actionTimeoutMs??M.timing?.actionTimeoutMs,5e3,12e4),domSettleDebounceMs:Ut(e.timing?.domSettleDebounceMs??M.timing?.domSettleDebounceMs,8,500),domSettleMaxWaitMs:Ut(e.timing?.domSettleMaxWaitMs??M.timing?.domSettleMaxWaitMs,80,5e3),domSettleRetries:Ut(e.timing?.domSettleRetries??M.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:Ut(e.timing?.sparseTreeRetryDelayMs??M.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:Ut(e.timing?.sparseTreeRetryMaxAttempts??M.timing?.sparseTreeRetryMaxAttempts,0,4)},transport:{...M.transport,...e.transport,activation:Dd(e.transport?.activation??M.transport?.activation),idleCloseMs:Od(e.transport?.idleCloseMs??M.transport?.idleCloseMs)},stability:{...M.stability,...e.stability,maxPersistBytes:ui(e.stability?.maxPersistBytes??M.stability?.maxPersistBytes,vt.localPersistBytes),maxSnapshotBytes:ui(e.stability?.maxSnapshotBytes??M.stability?.maxSnapshotBytes,vt.snapshotBytes)},task:{...M.task,...e.task,singleActiveScope:vg(e.task?.singleActiveScope??M.task?.singleActiveScope),tabScope:yg(e.task?.tabScope??M.task?.tabScope),resume:{mode:Cd(e.task?.resume?.mode??M.task?.resume?.mode),ttlMs:pl(e.task?.resume?.ttlMs??M.task?.resume?.ttlMs)},followup:{mode:Tg(e.task?.followup?.mode??M.task?.followup?.mode),ttlMs:Nd(e.task?.followup?.ttlMs??M.task?.followup?.ttlMs),minLexicalOverlap:Ld(e.task?.followup?.minLexicalOverlap??M.task?.followup?.minLexicalOverlap)},observerInput:Md(e.task?.observerInput??M.task?.observerInput),autoResumePolicy:Ad(e.task?.autoResumePolicy??M.task?.autoResumePolicy)},chat:{...M.chat,...e.chat,inRun:_g(e.chat?.inRun??M.chat?.inRun),resumeFollowup:{mode:kg(e.chat?.resumeFollowup?.mode??M.chat?.resumeFollowup?.mode),maxTurns:wg(e.chat?.resumeFollowup?.maxTurns??M.chat?.resumeFollowup?.maxTurns)}},external:{...M.external,...e.external,intentSelection:Eg(e.external?.intentSelection??M.external?.intentSelection),requireUserConfirm:Ig(e.external?.requireUserConfirm??M.external?.requireUserConfirm),adversarialGate:xg(e.external?.adversarialGate??M.external?.adversarialGate)},taskContext:{...M.taskContext,...e.taskContext},features:{...M.features,...e.features,rover_v2_kernel_runtime:Sg(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}}},Ft=hg(M),Ft&&(M.visitorId=Ft),e.sessionId&&l?(l.sessionId=e.sessionId,dn=rl(M.siteId,l.sessionId),jr=dn!==ri(M.siteId)?ri(M.siteId):null,ud(M.siteId,dn),xe(),vl(M)):(e.sessionScope||e.tabPolicy)&&vl(M),jd(M),Il(M),Ud(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(nt){typeof e.allowActions=="boolean"&&nt.setAllowActions(e.allowActions&&ut==="controller");let n=ut==="controller"&&(M?.allowActions??!0),r=ut==="observer"?"observer":"controller";nt?.setActionGateContext?.({mode:r,controllerRuntimeId:N?.getCurrentHolderRuntimeId(),activeLogicalTabId:N?.getActiveLogicalTabId(),localLogicalTabId:N?.getLocalLogicalTabId(),reason:ka(r,n)}),(e.allowedDomains||e.domainScopeMode||e.externalNavigationPolicy||e.navigation?.crossHostPolicy)&&nt.setNavigationPolicy({allowedDomains:e.allowedDomains,domainScopeMode:ha(e.domainScopeMode??M.domainScopeMode),externalNavigationPolicy:e.externalNavigationPolicy,crossHostPolicy:e.navigation?.crossHostPolicy})}He.postMessage({type:"update_config",config:{...e,...fs(),pageConfig:ba(M),publicKey:void 0,authToken:Yn(M),sessionToken:on,sessionId:l?.sessionId,activeRunId:l?.pendingRun?.id,sessionEpoch:ke?.getEpoch?.()??Gr,sessionSeq:ke?.getLastSeq?.()??0}}),yl(M),t?nb(M):va(),e.visitor&&Kd(e.visitor),typeof e.openOnInit=="boolean"&&(e.openOnInit||Rd(l)?Ao():Dl()),Ra("update"),gr()}function _l(){ls(),En(),oi(),ns(!0),Bd(),Tt?.markDirty(),Tt?.syncNow({push:!0,pull:!1}),Tt?.stop(),Tt=null,ke?.stop(),ke=null,on=void 0,Rr=0,Gr=1,Eo(void 0),fl="",N?.stop(),N=null,K?.shutdown(),K=null,He?.terminate(),He=null,Y?.destroy(),Y=null,nt=null,M=null,Xn=!1,mr=!1,fn=0,lt&&(clearTimeout(lt),lt=null),vo&&(clearTimeout(vo),vo=null),Zc=!1,nn.clear(),go.clear(),ur.clear(),Ir.clear(),Ys(),Xs="",sa="",xr=!1,Ne="",Ze="",Ft=void 0,Sr=void 0,Io=!1,os=!1,Sa(),Cr=null,od="",ii=!1,Jc=!1,Qs=!1,kn=[],ag=0,nd=0,rd=0,ul=0,aa=!1,Xr&&(clearTimeout(Xr),Xr=null),bd="",Ks="",ut="controller",lr=!0,wo=null,Kr=null,dl=null,ia=0;try{let e=window.rtrvrAIClearObserverPause;typeof e=="function"&&e()}catch{}To=null;for(let e of ko)try{e.target.removeEventListener(e.event,e.handler,e.options)}catch{}if(ko.length=0,Js){try{History.prototype.pushState=Js}catch{}Js=null}if(Zs){try{History.prototype.replaceState=Zs}catch{}Zs=null}sd=!1,id=!1,ad=!1}function Ao(){Io=!0,Sa(),Y?.show(),Y?.open(),l&&(l.uiHidden=!1,l.uiOpen=!0,xe())}function Dl(){Y?.close(),ls(),l&&(l.uiOpen=!1,xe())}function Yd(){Y?.show(),l&&(l.uiHidden=!1,xe())}function Qd(){Y?.hide(),ls(),l&&(l.uiHidden=!0,l.uiOpen=!1,xe())}function Jd(e){e?.trim()&&rs(e)}function Aa(e){if(!l)return;let t=e?.reason||"manual_new_task",n=e?.clearUi!==!1;if(is=void 0,as=void 0,ci=0,l.pendingRun&&(Co(l.pendingRun.id),He?.postMessage({type:"cancel_run",runId:l.pendingRun.id}),xo(l.pendingRun.id,t,{attemptImmediately:!0}),ke?.controlRun({action:"cancel",runId:l.pendingRun.id,reason:t}),N?.releaseWorkflowLock(l.pendingRun.id)),_t&&(clearTimeout(_t),_t=null),Y?.setRunning(!1),Y?.setQuestionPrompt(void 0),mr=!1,fn=0,xa(),K){let s=K.createTask(t);K.switchActiveTask(s.taskId),K.dispatch(s.taskId,{type:"START",reason:t})}let r=No({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,qd()),N?.startNewTask({taskId:r.taskId,startedAt:r.startedAt,boundaryReason:t,status:"running",lastUserAt:void 0,lastAssistantAt:void 0}),Hn({forceReset:!0,persist:!1}),N?.setActiveRun(void 0),N?.setWorkerContext(void 0),Hg([]),It(void 0),xe(),He?.postMessage({type:"start_new_task",taskId:r.taskId,...fs()}),ke?.controlRun({action:"new_task",reason:t}),je("task_started",{taskId:r.taskId,reason:t,taskEpoch:o})}function Ol(e){if(!l)return;let t=e?.reason||"manual_end_task";if(is=void 0,as=void 0,ci=0,mr=!1,fn=0,pn=!1,xa(),K){let o=K.getActiveTask();o&&K.dispatch(o.taskId,{type:"CANCEL",reason:t})}let n=l.pendingRun?.id,r=No({type:"terminal",terminal:"ended",reason:t,at:Date.now()},{syncShared:!1,persist:!1,rotateBoundary:!1});r&&(n&&(Co(n),He?.postMessage({type:"cancel_run",runId:n}),xo(n,t,{attemptImmediately:!0}),ke?.controlRun({action:"cancel",runId:n,reason:t}),N?.releaseWorkflowLock(n)),xt(void 0),Ne=hr(),l.workerState=void 0,l.taskTabScope=void 0,Hn({forceReset:!0,persist:!1}),Kn(),_t&&(clearTimeout(_t),_t=null),Y?.setRunning(!1),Y?.setQuestionPrompt(void 0),En(),It(void 0),ke?.controlRun({action:"end_task",runId:n,reason:t}),N?.endTask(t),N?.setActiveRun(void 0),N?.setWorkerContext(void 0),xe(),st({kind:"info",title:"Task ended",detail:"Start a new task when you are ready.",status:"info"}),je("task_ended",{taskId:r.taskId,reason:t,endedAt:r.endedAt}))}function Zd(){return{mode:ut,runtimeId:Ze,runtimeState:l?zd(l):null,sharedState:N?.getState()||null,pendingTaskSuggestion:wo}}function ef(e,t){let n=hw(e);if(!To||!nt||!He){tl.push({def:n,handler:t});return}gg({def:n,handler:t})}function $E(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 VE={sanitizeWorkerState:Ht,cloneRuntimeStateForCheckpoint:zd,getPersistGovernorConfig:()=>({minPersistIntervalMs:vd,maxCoalesceDelayMs:Ug}),getTelemetryFastLaneEvents:()=>Array.from(cg.values())};function rb(){let e=window,t=e.rover,n=((r,...o)=>{let s=$E(r),i=s?n[s]:void 0;if(typeof i=="function")return i(...o)});if(n.boot=ya,n.init=Xd,n.update=Tl,n.shutdown=_l,n.open=Ao,n.close=Dl,n.show=Yd,n.hide=Qd,n.send=Jd,n.newTask=Aa,n.endTask=Ol,n.getState=Zd,n.registerTool=ef,n.on=ug,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(!To){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),ya(i)}}}}rb();return $b(zE);})();
|