@rtrvr-ai/rover 1.3.3 → 2.0.0
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 +19 -18
- package/dist/embed.js +360 -58
- package/dist/index.d.ts +38 -2
- package/dist/rover.js +1671 -24808
- package/dist/worker/rover-worker.js +18 -7412
- package/package.json +1 -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 Ri=Object.defineProperty;var vf=Object.getOwnPropertyDescriptor;var Ef=Object.getOwnPropertyNames;var Tf=Object.prototype.hasOwnProperty;var wf=(e,t,n)=>t in e?Ri(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var _f=(e,t)=>{for(var n in t)Ri(e,n,{get:t[n],enumerable:!0})},xf=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ef(t))!Tf.call(e,o)&&o!==n&&Ri(e,o,{get:()=>t[o],enumerable:!(r=vf(t,o))||r.enumerable});return e};var If=e=>xf(Ri({},"__esModule",{value:!0}),e);var $=(e,t,n)=>wf(e,typeof t!="symbol"?t+"":t,n);var Lb={};_f(Lb,{boot:()=>Ti,close:()=>ra,endTask:()=>oa,getState:()=>Nc,hide:()=>Ac,identify:()=>Ic,init:()=>kc,installGlobal:()=>yf,newTask:()=>Ao,open:()=>ki,registerTool:()=>Mc,send:()=>Cc,show:()=>Sc,shutdown:()=>Rc,update:()=>Ys});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 Ob=new Set(Object.values(F)),Si=["element_id","source_element_id","target_element_id","center_element_id","element_ids"],kf=40;function Dc(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,kf)}var Jt;(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"})(Jt||(Jt={}));var Oc={[Jt.Unknown]:"unknown",[Jt.React]:"react",[Jt.Vue]:"vue",[Jt.Angular]:"angular",[Jt.Svelte]:"svelte",[Jt.JQuery]:"jquery"},ia={react:Jt.React,vue:Jt.Vue,angular:Jt.Angular,svelte:Jt.Svelte,jquery:Jt.JQuery},lt;(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"})(lt||(lt={}));var Bb={[lt.Other]:"other",[lt.Inline]:"inline",[lt.Delegated]:"delegated",[lt.React]:"react",[lt.Vue]:"vue",[lt.Angular]:"angular",[lt.Svelte]:"svelte",[lt.JQuery]:"jquery",[lt.Native]:"native"},Fb={inline:lt.Inline,delegated:lt.Delegated,react:lt.React,vue:lt.Vue,angular:lt.Angular,svelte:lt.Svelte,jquery:lt.JQuery,other:lt.Other,native:lt.Native},he;(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"})(he||(he={}));var Ai={[F.click_element]:he.click_element,[F.type_into_element]:he.type_into_element,[F.type_and_enter]:he.type_and_enter,[F.select_dropdown_value]:he.select_dropdown_value,[F.clear_element]:he.clear_element,[F.focus_element]:he.focus_element,[F.hover_element]:he.hover_element,[F.right_click_element]:he.right_click_element,[F.double_click_element]:he.double_click_element,[F.long_press_element]:he.long_press_element,[F.drag_element]:he.drag_element,[F.drag_and_drop]:he.drag_and_drop,[F.swipe_element]:he.swipe_element,[F.adjust_slider]:he.adjust_slider,[F.describe_images]:he.describe_images,[F.scroll_to_element]:he.scroll_to_element,[F.paste_text]:he.paste_text,[F.check_field_validity]:he.check_field_validity,[F.select_text]:he.select_text,[F.mouse_wheel]:he.mouse_wheel,[F.copy_text]:he.copy_text,[F.upload_file]:he.upload_file,[F.go_back]:he.go_back,[F.go_forward]:he.go_forward,[F.refresh_page]:he.refresh_page,[F.press_key]:he.press_key,[F.scroll_page]:he.scroll_page,[F.wait_action]:he.wait_action,[F.wait_for_element]:he.wait_for_element,[F.pinch_zoom]:he.pinch_zoom,[F.goto_url]:he.goto_url,[F.google_search]:he.google_search,[F.open_new_tab]:he.open_new_tab,[F.switch_tab]:he.switch_tab,[F.close_tab]:he.close_tab,[F.solve_captcha]:he.solve_captcha,[F.answer_task]:he.answer_task,[F.dispatch_pointer_path]:he.dispatch_pointer_path,[F.network_run_recipe]:he.network_run_recipe,[F.rover_external_read_context]:he.rover_external_read_context,[F.rover_external_act_context]:he.rover_external_act_context},Pc=Object.fromEntries(Object.entries(Ai).map(([e,t])=>[t,e]));function Ci(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 Bc={semanticIdStart:1,interactiveIdStart:1,includeFrameContents:!0,clearIframes:!0,frameContextLabel:null,signalProvider:null,disableDomAnnotations:!1},Pt={...Bc},Mi=globalThis;function Fc(e){Pt={...Bc,...e||{}}}function Dr(){return Pt.signalProvider??null}function vt(){try{return typeof Mi.document<"u"?Mi.document:null}catch{return null}}function Pn(){try{return typeof Mi.window<"u"?Mi.window:null}catch{return null}}function X(e,t){if(e&&typeof e=="object"){let n=e.ownerDocument;if(n)return n;if(e.nodeType===9)return e}return t??vt()??{}}function de(e,t){return X(e,t?t.document:null)?.defaultView??t??Pn()??{}}function K(e,t){return e?.defaultView??t??Pn()??{}}function Li(e,t){try{return e?.getElementById?.(t)??null}catch{return null}}function Di(e,t){try{return e?.querySelector?.(t)??null}catch{return null}}function sa(e,t){try{return Array.from(e?.querySelectorAll?.(t)??[])}catch{return[]}}function Po(e){try{return e.contentDocument||(e.contentWindow?.document??null)}catch{return null}}function Oi(e,t){let n=e.CSS?.escape;return typeof n=="function"?n(t):t.replace(/([^\w-])/g,"\\$1")}function Zt(e,t){try{return e[t]}catch{return}}function Un(e,t){return!!e&&String(e.tagName||"").toUpperCase()===t.toUpperCase()}function Hc(e,t){let n=Zt(t,"HTMLAnchorElement");return n?e instanceof n:Un(e,"A")}function fn(e,t){let n=Zt(t,"HTMLInputElement");return n?e instanceof n:Un(e,"INPUT")}function En(e,t){let n=Zt(t,"HTMLTextAreaElement");return n?e instanceof n:Un(e,"TEXTAREA")}function qc(e,t){let n=Zt(t,"HTMLLabelElement");return n?e instanceof n:Un(e,"LABEL")}function Wc(e,t){let n=Zt(t,"HTMLSelectElement");return n?e instanceof n:Un(e,"SELECT")}function $c(e,t){let n=Zt(t,"HTMLSlotElement");return n?e instanceof n:Un(e,"SLOT")}function Vc(e,t){let n=Zt(t,"HTMLButtonElement");return n?e instanceof n:Un(e,"BUTTON")}function Gc(e,t){let n=Zt(t,"HTMLImageElement");return n?e instanceof n:Un(e,"IMG")}function zc(e,t){let n=Zt(t,"HTMLVideoElement");return n?e instanceof n:Un(e,"VIDEO")}function jc(e,t){let n=Zt(t,"HTMLCanvasElement");return n?e instanceof n:Un(e,"CANVAS")}function ut(e,t){if(!e||e.nodeType!==1)return!1;let n=Zt(t,"HTMLElement");return n?e instanceof n:typeof e.tagName=="string"}function en(e){return!!e&&e.nodeType===11&&typeof e.host=="object"&&typeof e.mode=="string"}function Or(e){if(!e||e.nodeType!==1)return!1;let t=X(e),r=K(t).Element;return r?e instanceof r:typeof e.tagName=="string"}function Uo(e){if(!e||e.nodeType!==1)return!1;let t=X(e),r=K(t).HTMLIFrameElement;return r&&e instanceof r?!0:String(e.tagName||"").toUpperCase()==="IFRAME"}function Rf(e,t){if(!e)return!1;if(e.nodeType===9)return!0;let n=Zt(t,"Document");return n?e instanceof n:!1}function Sf(e,t){if(!e)return!1;let n=Zt(t,"Window");if(n)return e instanceof n;try{return e.window===e}catch{return!1}}function Pi(e){try{return e.document}catch{return null}}function Ui(e,t){if(Rf(e,t))try{return e.documentElement}catch{return null}if(Sf(e,t)){let n=Pi(e);if(!n)return null;try{return n.documentElement}catch{return null}}return null}function Ni(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 Uc(e,t,n){try{let r=X(t,n);return new URL(e,r.baseURI).href}catch{return e}}function Bi(e,t){let n=e.tagName.includes("-"),r=e.getAttribute("href")||e.getAttribute("src")||e.getAttribute("data")||e.getAttribute("action");if(r){let o=Uc(r,e,t);return o.trim().toLowerCase().startsWith("javascript:")?null:o}if(n)return null;try{let o=e,i=Ni(o.href)||Ni(o.src)||Ni(o.data)||Ni(o.action);return i?Uc(i,e,t):null}catch{return null}}var Xc=["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"],Ce={};Xc.forEach((e,t)=>{Ce[e]=t});var Zn={};Xc.forEach((e,t)=>{Zn[t]=e});function Pr(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,i]=r.split("~"),s=Number(o);if(!Number.isFinite(s))continue;let c=i&&parseInt(i,36)||0;n.push({id:s,mask:c})}return n.length?{entries:n}:null}function Af(e){let t=Pr(e);if(t){let n=new Set;for(let{id:r}of t.entries)n.add(r);return[...n]}return[]}function Bo(e){return no(e).map(n=>Zn[n]).filter(n=>!!n)}function no(e){let t=Dr();if(t?.getEventHandlerIds)try{let o=t.getEventHandlerIds(e);if(o&&o.length)return o}catch{}let n=e.getAttribute(mr),r=Af(n);return!r||r.length===0?[]:r}var aa=["media"],Yc=new Set(aa),ca=["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 Kc=new Set(ca),er=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"]),Fo=new Set(["group","region","section","banner","contentinfo","main","navigation","complementary","form","article","document","presentation","none"]);var Qc=["none","presentation"],xe;(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"})(xe||(xe={}));var Jc={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"]},Ho={heading:{selector:"h6,h1,h3,h2,h5,h4"},checkbox:{conditionalSelectors:[{selector:"input",conditions:[{type:xe.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:xe.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"grid"}]},{selector:"td",conditions:[{type:xe.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"treegrid"}]},{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:xe.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"treegrid"},{type:xe.HAS_TABLE_COLUMN_DATA,hasData:!0},{type:xe.HAS_TABLE_ROW_DATA,hasData:!0}]}]},slider:{conditionalSelectors:[{selector:"input",conditions:[{type:xe.PROPERTY_VALUE_MATCH,property:"type",values:["range"]}]}]},listitem:{selector:"li"},contentinfo:{conditionalSelectors:[{selector:"footer",conditions:[{type:xe.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:xe.PROPERTY_VALUE_MATCH,property:"type",values:["submit","reset","image","button"]}]}]},status:{selector:"output"},form:{conditionalSelectors:[{selector:"form",conditions:[{type:xe.HAS_ACCESSIBLE_NAME}]}]},article:{selector:"article"},textbox:{selector:"textarea",conditionalSelectors:[{selector:"input:not([list])",conditions:[{type:xe.PROPERTY_VALUE_MATCH,property:"type",values:["url","text","tel","email"]}]}]},radio:{conditionalSelectors:[{selector:"input",conditions:[{type:xe.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:xe.HAS_TABLE_ROW_DATA,hasData:!1}]}]},list:{selector:"ul,ol,menu"},region:{conditionalSelectors:[{selector:"section",conditions:[{type:xe.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:xe.PROPERTY_VALUE_MATCH,property:"type",values:["search"]}]}]},cell:{conditionalSelectors:[{selector:"td",conditions:[{type:xe.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"table"}]},{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:xe.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"table"},{type:xe.HAS_TABLE_COLUMN_DATA,hasData:!0},{type:xe.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:xe.HAS_TABLE_COLUMN_DATA,hasData:!1},{type:xe.HAS_TABLE_ROW_DATA,hasData:!0}]}]},dialog:{selector:"dialog"},listbox:{selector:"select[multiple],datalist",conditionalSelectors:[{selector:"select",conditions:[{type:xe.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:xe.PROPERTY_VALUE_MATCH,property:"type",values:["number"]}]}]},math:{selector:"math"},combobox:{selector:"select:not([size]):not([multiple])",conditionalSelectors:[{selector:"select:not([multiple])",conditions:[{type:xe.ATTRIBUTE_LESS_THAN,attribute:"size",value:2}]},{selector:"input[list]",conditions:[{type:xe.PROPERTY_VALUE_MATCH,property:"type",values:["url","text","tel","search","email"]}]}]},banner:{conditionalSelectors:[{selector:"header",conditions:[{type:xe.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"}},mr="rtrvr-ls",tr="rtrvr-ro",la="rtrvr-mw-ready",qo="rtrvr-mw-busy",ua="rtrvr-mwa-ready",Zc=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"]),el=["BUTTON","INPUT","METER","OUTPUT","PROGRESS","SELECT","TEXTAREA"],tl=["h1","h2","h3","h4","h5","h6"],nl="http://www.w3.org/1999/xhtml",rl="http://www.w3.org/2000/svg",Mt="rtrvr-label";var qi=new Set(["NOSCRIPT","SCRIPT","STYLE","META"]),Ur="CODE",Br="PRE",ol="aria-hidden",il="target";var Fi;(function(e){e[e.value=0]="value",e[e.alt=1]="alt",e[e.list=2]="list",e[e.title=3]="title"})(Fi||(Fi={}));var ro;(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"})(ro||(ro={}));var Hi;(function(e){e[e.VALUENOW=0]="VALUENOW",e[e.VALUETEXT=1]="VALUETEXT"})(Hi||(Hi={}));var da=new Set([Ce.click,Ce.dblclick,Ce.doubleclick,Ce.contextmenu,Ce.auxclick,Ce.pointerdown,Ce.pointerup,Ce.mousedown,Ce.mouseup,Ce.touchstart,Ce.touchend,Ce.keydown,Ce.keyup,Ce.input,Ce.beforeinput,Ce.change,Ce.submit,Ce.reset,Ce.paste,Ce.dragstart,Ce.dragend,Ce.drop]),sl=new Set([...da,Ce.scroll,Ce.wheel,Ce.mouseenter,Ce.mouseover,Ce.focus,Ce.blur,Ce.focusin,Ce.focusout]),Wi=new Set(["click","dblclick","auxclick","contextmenu","mousedown","mouseup","pointerdown","pointerup","touchstart","touchend"]),fa=new Set(["input","change","beforeinput","keydown","keyup","keypress","paste","compositionstart","compositionend"]),pa=new Set(["drag","dragstart","dragend","dragenter","dragleave","dragover","drop"]);var hr;(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"})(hr||(hr={}));var Wo;(function(e){e[e.HTML=0]="HTML",e[e.SVG=1]="SVG"})(Wo||(Wo={}));var $i;(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"})($i||($i={}));var Vi;(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"})(Vi||(Vi={}));var Ft;(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"})(Ft||(Ft={}));var St;(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"})(St||(St={}));var nr;(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"})(nr||(nr={}));var Cf=[...ca,...Object.keys(Ho),...aa],al=[...new Set(Cf)],oo={};al.forEach((e,t)=>{oo[e]=t});var $o={};al.forEach((e,t)=>{$o[t]=e});var Gi=class{constructor(t=1){$(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 Vo(e){let t=Dr();if(t?.getRoleHint)try{let o=t.getRoleHint(e);if(o)return o}catch{}let n=e.getAttribute(tr);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 i=$o[o];if(i)return i}}return r}function io(e){return Array.from(new Set(e))}function cl(e,t){if(!e||e.length===0)return io(t);let n=new Set([...e,...t]);return io(Array.from(n))}function tn(e,t){let r=Dr()?.getEventHandlerIds?.(e)??no(e),o=r.length>0&&r.some(c=>da.has(c)),i=zi(e),s=t?Fo.has(t):!1;return{element:e,semanticRole:t,eventHandlerIndices:r,isEditableRegion:i,hasNodeWorthyHandlers:o,isLikelyStructuralContainer:s}}var Nf=new Set(["text","search","url","tel","password","email","number","date","datetime-local","time","month","week","color"]);function Mf(e){let n=de(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 Lf(e){let t=de(e);if(!fn(e,t))return!1;let n=(e.type||"text").toLowerCase();return Nf.has(n)?!e.disabled&&!e.readOnly:!1}function Df(e){let t=de(e);return En(e,t)&&!e.disabled&&!e.readOnly}function Of(e){let t=e;return!(!t.isContentEditable||t.getAttribute("aria-readonly")==="true"||t.getAttribute("aria-disabled")==="true")}function zi(e){return!e||!Mf(e)?!1:!!(Lf(e)||Df(e)||Of(e))}function Go(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,i=e.slice(Math.max(0,o-30),o);if(/iframeRoot\s*=\s*$/.test(i)||i.includes("iframeRoot="))continue;let s=parseInt(r[1],10);if(Number.isFinite(s))return s}try{let o=e.match(LABEL_ID_PATTERN);if(o?.[1]){let i=parseInt(o[1],10);return Number.isFinite(i)?i:null}}catch{}return null}function zo(e){let t=String(e??"").replace(/[\n\r\t]/g," ").replace(/\s+/g," ").trim();return t=t.replace(/\[/g,"[").replace(/\]/g,"]"),t}function ll({element:e,elementID:t,frameContextLabel:n}){let r=!Pt.disableDomAnnotations,o=[`[id=${t}]`],i=de(e);if(Uo(e)){let a=zo(e.id||e.getAttribute("name")||"unnamed");o.push(`[iframe=${a}]`)}if(n){let a=zo(n);o.push(`[iframeRoot=${a}]`)}if(Gc(e,i)&&o.push(`[size=${e.clientWidth}x${e.clientHeight}]`),(zc(e,i)||jc(e,i))&&o.push(`[size=${e.clientWidth}x${e.clientHeight}]`),fn(e,i)||En(e,i)){let a=Pf(e);o.push(...a)}e.getAttribute(ol)==="true"&&o.push("[aria-hidden=true]"),e.disabled&&o.push("[disabled]"),r&&Hc(e,i)&&e.setAttribute(il,"_self");let c=o.join(" ");return r&&e.setAttribute(Mt,c),c}function Pf(e){let t=[],n=de(e),r=fn(e,n);if(r&&e.type&&e.type!=="text"&&t.push(`[type=${e.type}]`),e.name){let o=zo(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=zo(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 i=zo(o).replace(/\\/g,"\\\\").replace(/"/g,'\\"');t.push(`[value="${i}"]`)}return t}var Fr=new Gi,ma=new WeakMap;function ul(){ma=new WeakMap}function ji(e){let t=ma.get(e);if(t)return t;let n=Fr.generateId();return ma.set(e,n),n}var Xi=new Map,ha=new WeakMap;function dl(){Xi.clear(),ha=new WeakMap}function ga(e,t){try{typeof WeakRef<"u"?Xi.set(e,new WeakRef(t)):Xi.set(e,t)}catch{}}function jo(e){let t=Xi.get(e);if(!t)return null;let n=t instanceof WeakRef?t.deref():t;return!n||n.isConnected===!1?null:n}function gr(e){let t=null,n=ji(e);if(Pt.frameContextLabel)t=Pt.frameContextLabel;else{let o=vt();if(o&&e.ownerDocument!==o)try{let s=e.ownerDocument?.defaultView?.frameElement?.getAttribute(Mt)||"",c=s?Go(s):null;t=c?String(c):null}catch{t=""}}let r=ll({element:e,elementID:n,frameContextLabel:t});if(ga(n,e),r)try{ha.set(e,r)}catch{}return r}function fl(e){return ha.get(e)??null}function ba(e,t){try{e.querySelectorAll?.(`[${Mt}]`)?.forEach(r=>r.removeAttribute(Mt))}catch{}if(t.includeShadow)try{let n=e.querySelectorAll?.("*");if(n)for(let r of Array.from(n))try{let o=r.shadowRoot;o&&ba(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=Po(r);o?.body&&ba(o.body,t)}catch{}}catch{}}function pl(e,t={}){if(Pt.disableDomAnnotations)return;let n=Or(e)?de(e):K(e)??window,r=Ui(e,n)??e;if(r){try{r.removeAttribute?.(Mt)}catch{}ba(r,{includeShadow:t.includeShadow??!0,includeIframes:t.includeIframes??!0})}}var Bn={},ya=new WeakMap,Yi=new WeakSet;function ml(){Bn={},ya=new WeakMap,Yi=new WeakSet,ul()}function Lt({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:i,originatedFromParent:s,elementContext:c}){let a=ji(e);ga(a,e);let u=Bn[a];if(s){if(!u){let d={nodeCategory:e.nodeType,provisionalFromParent:!0},h=e.nodeName;h&&h.trim()&&(d.elementName=h);let E=e.getAttribute("role");E&&(d.preservedAttributes={1:E});let m=e.tagName;m&&(d.elementTag=m),Bn[a]=d}}else{if(u&&!u.provisionalFromParent){if((o||so(e))&&(u.isFrameElement=!0,i&&i.length>0&&(u.frameContent=i)),c){let{eventHandlerIndices:d,isEditableRegion:h}=c;if(d&&d.length>0){let E=io(d);E.length>0&&(u.eventHandlers=cl(u.eventHandlers,E))}h&&(u.isEditable=!0)}return a}if(Yi.has(e))return a;Yi.add(e);try{Bn[a]=hl({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:i,elementContext:c})}finally{Yi.delete(e)}}return a}function Xo(e){let t=ya.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 i=Fr.generateId(),s={textContent:r,nodeCategory:e.nodeType};return o&&o!==r&&(s.rawData=o),Bn[i]=s,ya.set(e,i),i}function bl(e,t){let n=vl(e),{minY:r,maxY:o}=n.getCellBounds(t);return n.getRows().slice(r,o+1).some(i=>i.some(Yo))}function yl(e,t){let n=vl(e),{minX:r,maxX:o}=n.getCellBounds(t);return n.getRows().some(i=>i.slice(r,o+1).some(Yo))}var Qi=class{constructor(t=[]){$(this,"cells");$(this,"getCellAt",(t,n)=>this.getRowAt(n)[t]);$(this,"setCellAt",(t,n,r)=>{this.getRowAt(n)[t]=r});$(this,"getRowAt",t=>(this.cells[t]===void 0&&(this.cells[t]=[]),this.cells[t]));$(this,"getRows",()=>this.cells);$(this,"getCellBounds",t=>{let n=this.columnCount,r=this.rowCount,o=-1,i=-1;for(let s=0;s<this.rowCount;s++){let c=this.getRowAt(s),a=c.indexOf(t);a!==-1&&(o=Math.max(o,c.lastIndexOf(t)),i=Math.max(i,s),n=Math.min(n,a),r=Math.min(r,s))}return{minX:n,minY:r,maxX:o,maxY:i}});$(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 vl(e){let n=de(e).TableGrid||Qi,r=new n;e.tHead!==null&&r.merge(Ki(e.tHead.rows)),Array.from(e.tBodies).forEach(i=>{r.merge(Ki(i.rows))});let o=[];for(let i of Array.from(e.children))va(i)&&Hr(i,"tr")&&o.push(i);return r.merge(Ki(o)),e.tFoot!==null&&r.merge(Ki(e.tFoot.rows)),r}function Ki(e){let t=new Qi,n=[];for(let r=0;r<e.length;r++){let o=0;for(let i of Array.from(e[r].cells)){for(;t.getCellAt(o,r)||n[o];)!Yo(t.getCellAt(o,r))&&n[o]&&t.setCellAt(o,r,n[o]),o++;for(let s=o;s<o+i.colSpan;s++){gl(i)===0&&(n[s]=i,t.setCellAt(s,r,i));for(let c=r;c<r+gl(i);c++)Yo(t.getCellAt(s,c))||t.setCellAt(s,c,i)}o+=i.colSpan}for(let i=o;i<t.columnCount;i++){let s=n[i];s!==void 0&&!Yo(t.getCellAt(i,r))&&t.setCellAt(i,r,s)}}return t}function gl(e){let t=e.getAttribute("rowSpan");if(t===null||t.trim()==="")return 1;let n=Number(t);return isNaN(n)?1:n}function Yo(e){return e!==void 0&&Hr(e,"td")}function Tn(e){let t=e.tagName?.toLowerCase();if(t==="code"||t==="pre"){let r=Gf(e);if(r)return r}let n=El(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"),i=e.querySelector("desc"),s=e.hasAttribute("aria-label"),c=e.hasAttribute("role");return o||i||s||c||no(e).length>0||e.getAttribute("tabindex")!==null?"img":null}if(no(e).length>0){let o=e.tagName.toLowerCase();if(["div","span","li","p","i","em","strong","b"].includes(o))return Uf(e)}}if(t==="td"&&e.getAttribute("role")===null)return"cell";if(n!==null&&t==="th"){let r=e.getAttribute("role");if(r&&Tl(r))return r;let o=e;return o.scope==="col"||o.hasAttribute("aria-sort")?"columnheader":o.scope==="row"?"rowheader":"cell"}return n}function Uf(e){return Vo(e)??null}function El(e){let t=e.getAttribute("role");if(t!==null)return Qc.includes(t)||!Tl(t)?null:t;let n=e.tagName.toLowerCase();return(Jc[n]??[]).find(o=>Bf(e,o))||null}function Bf(e,t){let n=Ho[t],r=n?.selector;if(r&&Ji(e,r))return!0;let o=n?.conditionalSelectors;return o?o.some(s=>Ji(e,s.selector)&&s.conditions.every(a=>Hf(e,a))):!1}function Ff(e,t){let n=(t||"").trim().replace(/^#/,"");if(!n)return null;try{let r=e.getRootNode?.();if(en(r)){let o=de(e),i=`#${Oi(o,n)}`,s=Di(r,i);if(s)return s}}catch{}return Li(X(e),n)}function Hf(e,t){switch(t.type){case xe.ATTRIBUTE_GREATER_THAN:{let n=e.getAttribute(t.attribute);return n!==null&&Number(n)>t.value}case xe.ATTRIBUTE_LESS_THAN:{let n=e.getAttribute(t.attribute);return n!==null&&Number(n)<t.value}case xe.HAS_ACCESSIBLE_NAME:return e.hasAttribute("aria-label")?!0:(e.getAttribute("aria-labelledby")||"").split(/\s+/).filter(Boolean).some(r=>Ff(e,r)!=null);case xe.FORBIDDEN_ANCESTORS:return rr(e,t.selector)===null;case xe.BOOLEAN_PROPERTY:return e[t.property]===t.value;case xe.PROPERTY_VALUE_MATCH:return t.values.some(n=>n===e[t.property]);case xe.ANCESTOR_ROLE_REQUIRED:{let n=e.parentElement;if(n===null)return!1;let r=rr(n,t.tag);return r!==null&&El(r)===t.role}case xe.HAS_TABLE_COLUMN_DATA:{let n=rr(e,"table");return n===null?!1:t.hasData===yl(n,e)}case xe.HAS_TABLE_ROW_DATA:{let n=rr(e,"table");return n===null?!1:t.hasData===bl(n,e)}default:return qf(t),!1}}function qf(e){throw new Error(`unexpected value ${e}!`)}function Tl(e){return $f(e)||Vf(e)||Wf(e)}function Wf(e){return Yc.has(e)}function $f(e){return Kc.has(e)}function Vf(e){return Ho.hasOwnProperty(e)}function Gf(e){if(e.tagName!==Ur&&e.tagName!==Br)return null;if(Bo(e).some(r=>r==="click"||r==="copy"))return"button";let n=e.getAttribute("tabindex");return n!==null&&parseInt(n,10)>=0?"button":e.tagName===Br||e.tagName===Ur&&e.closest("pre")?"code":null}var zf={[St.display]:[St.beforeDisplay,St.afterDisplay],[St.content]:[St.beforeContent,St.afterContent]},Ea=new Map,jf={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 Xf(e,t){if(!Ea.has(e)){let n=jf[t]||t.replace(/([A-Z])/g,"-$1").toLowerCase();Ea.set(e,n)}return Ea.get(e)}var Yf={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 xl(e,t,n){let r=Yf[e];return r?r(t,n):t.trim()!==""&&!["initial","inherit","unset"].includes(t)}function Il(e){let t={},n=de(e);if(!ut(e,n))return t;let r=n.getComputedStyle(e),o=new Map([[St.beforeDisplay,n.getComputedStyle(e,"::before")],[St.afterDisplay,n.getComputedStyle(e,"::after")],[St.beforeContent,n.getComputedStyle(e,"::before")],[St.afterContent,n.getComputedStyle(e,"::after")]]);for(let i in St)if(isNaN(Number(i))){let s=St[i],c=Xf(s,i),a=zf[s];a?((s===St.display||s===St.content)&&wl(r,c,s,i,t,e),_l(o.get(a[0]),c,a[0],"beforeContent",t),_l(o.get(a[1]),c,a[1],"afterContent",t)):wl(r,c,s,i,t,e)}return t}function wl(e,t,n,r,o,i){if(e){let s=e.getPropertyValue(t);s&&xl(r,s,i)&&(o[n]=s)}}function _l(e,t,n,r,o){if(e){let i=e.getPropertyValue(t);(t==="content"&&i&&i!=="none"&&i!=='""'&&i!=="''"||i&&xl(r,i))&&(o[n]=i)}}function qr(e,t){let n=de(e);if(!ut(e,n))return!0;if(t&&er.has(t))return!1;if(e.hasAttribute("hidden")||rr(e,"[hidden]")!==null||rr(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(),i=1e6;return Math.abs(o.left)>i||Math.abs(o.top)>i}function Ko(e){return wn(e)&&e.classList.contains("jasmine_html-reporter")}function Kf(e){let t=e.getAttribute("role");return t==="presentation"||t==="none"}function kl(e){return e?e.split(/\s+/).map(t=>t.trim()).filter(Boolean).map(t=>t.replace(/^#/,"")):[]}function Rl(e,t){let n=(t||"").trim().replace(/^#/,"");if(!n)return null;try{let o=e.getRootNode?.();if(en(o)){let i=de(e),s=`#${Oi(i,n)}`,c=Di(o,s);if(c)return c}}catch{}let r=X(e);return Li(r,n)}function Ta(e){let n=[];for(let r=0;r<arguments.length;r++){let o=arguments[r];if(Array.isArray(o))for(let i=0;i<o.length;i+=8192){let s=Qf(o,i,i+8192),c=Ta.apply(null,s);for(let a=0;a<c.length;a++)n.push(c[a])}else n.push(o)}return n}function Qf(e,t,n){return arguments.length<=2?Array.prototype.slice.call(e,t):Array.prototype.slice.call(e,t,n)}function Sl(e,t){return Jf(e,t).concat(Zf(e))}function Jf(e,t){return Ta(_a(e).map(r=>Ol(r)&&wn(r)?Al(r,t):r))}function Al(e,t){if(!e||qr(e,t))return[];if(!Kf(e))return[e];let n=Array.from(e.children);return Ta(n.map(r=>Al(r,t)))}function Cl(e){let t=kl(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 i=Rl(e,o);i&&i!==e&&n.push(i)}return n}function Zf(e){let t=Cl(e);for(let n of t)n["aria-owned-by"]=e;return t}function Nl(e){let t=de(e),n=X(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)<=rp(e))return!1;let o=ep(e);return!o||!np(o)||!ip(e)||o.getAttribute("role")==="dialog"||e.getAttribute("role")==="dialog"?!1:op(e)}function ep(e){return[e.previousElementSibling,e.nextElementSibling,...Array.from(e.children),...e.parentElement?[e.parentElement.previousElementSibling,e.parentElement.nextElementSibling]:[]].filter(n=>n!==null).find(tp)||null}function tp(e){if(qr(e))return!1;let n=de(e).getComputedStyle(e);return(n?.position==="fixed"||n?.position==="absolute")&&n?.backgroundColor!=="rgba(0, 0, 0, 0)"&&n?.backgroundColor!=="transparent"&&n?.pointerEvents!=="none"}function np(e){let t=de(e),n=e.getBoundingClientRect();return n.top<=0&&n.left<=0&&n.bottom>=t.innerHeight&&n.right>=t.innerWidth}function rp(e){let t=X(e),n=de(e),r=n?.getComputedStyle;if(!r)return 0;let o=sa(t,"*").filter(i=>i!==e&&!qr(i)).map(i=>parseInt(r.call(n,i)?.zIndex,10)).filter(i=>Number.isFinite(i)&&!isNaN(i));return o.length?Math.max(...o):0}function op(e){return e.querySelectorAll('a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])').length>0}function ip(e){let t=e.parentElement;if(!t)return!1;for(let n of Array.from(t.children))if(n!==e&&!qr(n)&&n.getAttribute("aria-hidden")!=="true")return!1;return!0}function sp(){try{let t=vt()?.querySelector?.("dialog:modal");return'[aria-modal="true"], dialog:modal'}catch{return'[aria-modal="true"]'}}var Ml=sp();function ap(e){return e.getAttribute("aria-disabled")==="true"||e.hasAttribute("disabled")}function wa(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=X(e),r=new URL(t,n.baseURI);return r.protocol==="javascript:"&&(r.pathname.trim()!==""||r.search.trim()!==""||r.hash.trim()!=="")}catch{return!1}}function Ll(e){return Zc.has(e)}function cp(e){let t=e.parentElement,n=X(e);if(!(!t||t===n.body||t===n.documentElement))return Lt({targetElement:t,originatedFromParent:!0})}function hl({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:i,elementContext:s}){let c={nodeCategory:e.nodeType},a=t||ap(e),u=cp(e);if(u&&(c.parent=u),n){let _e=oo[n];typeof _e=="number"?c.semanticRole=_e:c.semanticRole=n}if(a&&(c.isDisabled=!0),s){let{eventHandlerIndices:_e,isEditableRegion:Ve}=s,et=io(_e);et.length>0&&(c.eventHandlers=et),Ve&&(c.isEditable=!0)}let d=up(e);d&&Object.keys(d).length>0&&(c.ariaProperties=d);let h=dp(e);h&&Object.keys(h).length>0&&(c.ariaStates=h);let E=e.nodeName;E&&E.trim()&&(c.elementName=E);let m=Il(e);m&&Object.keys(m).length>0&&(c.computedStyles=m),qr(e)&&(c.isInvisible=!0);let y=lp(e,n);y&&Object.keys(y).length>0&&(c.preservedAttributes=y),e.draggable&&(c.isDraggable=!0),e.scrollWidth&&e.clientWidth&&e.scrollWidth>e.clientWidth&&(c.supportsHorizontalSwipe=!0),e.scrollHeight&&e.clientHeight&&e.scrollHeight>e.clientHeight&&(c.supportsVerticalSwipe=!0);let _=e.getAttribute("class");if(_?.trim()){_.includes("handle")&&(c.isDragHandle=!0),c.supportsHorizontalSwipe||(_.includes("horizontal")||_.includes("carousel"))&&(c.supportsHorizontalSwipe=!0),c.supportsVerticalSwipe||(_.includes("vertical")||_.includes("feed"))&&(c.supportsVerticalSwipe=!0),_.includes("dismissible")&&(c.supportsDismissSwipe=!0),(_.includes("long-press")||_.includes("hold")||_.includes("press-hold"))&&(c.supportsLongPress=!0);let _e=c.inputType||c.preservedAttributes?.[Ft.type];_e==="submit"||_e==="reset"||_e==="clear"||(_.includes("submit")&&(c.preservedAttributes={...c.preservedAttributes||{},[Ft.type]:"submit"}),_.includes("clear")&&(c.preservedAttributes={...c.preservedAttributes||{},[Ft.type]:"clear"}),_.includes("reset")&&(c.preservedAttributes={...c.preservedAttributes||{},[Ft.type]:"reset"}))}let N=bp({element:e});N&&N.length>0&&(c.labelReferences=N);let H=e.tagName;if(H&&(c.elementTag=H),pp(e)&&(c.hasFocus=!0),!o){let _e=xa({element:e,semanticRole:n,parentDisabled:a,excludeLabels:r});_e&&_e.length>0&&(c.childElements=_e)}let C=xp({element:e});C&&C.length>0&&(c.ownedElements=C);let L=Bi(e);L&&(c.resourceLocator=L),(o||so(e))&&(c.isFrameElement=!0),i&&i.length>0&&(c.frameContent=i);let W=e.type;W&&typeof W=="string"&&W.trim()&&(c.inputType=W);let Y=e.placeholder;Y&&typeof Y=="string"&&Y.trim()&&(c.placeholderText=Y);let ae=e.value;ae&&typeof ae=="string"&&ae.trim()&&(c.elementValue=ae);let ce=yp({element:e,parentDisabled:t,semanticRole:n});if(ce&&ce.length>0&&(c.selectedOptions=ce),rr(e,"select,datalist")&&(c.nearestSelectList=!0),va(e))c.elementNamespace=Wo.HTML;else if(fp(e)){c.elementNamespace=Wo.SVG,c.svgStructure=mp(e);let _e=hp(e);_e&&Object.keys(_e).length>0&&(c.preservedAttributes?c.preservedAttributes={...c.preservedAttributes,..._e}:c.preservedAttributes=_e)}let oe=r?void 0:vp({element:e});oe&&oe.length>0&&(c.associatedLabels=oe);let ye=e.scope;ye&&typeof ye=="string"&&ye.trim()&&(c.tableScope=ye);let me=Tp({element:e});me&&(c.tableCaption=me);let Ie=wp({element:e});Ie&&(c.figureCaption=Ie);let Re=_p({element:e});return Re&&(c.fieldsetLegend=Re),rr(e,"table")&&(c.nearestTable=!0),c}function lp(e,t){let n={},r=new Set(Object.values(Ft).filter(c=>typeof c=="string")),o=new Set(Object.keys(Fi).filter(c=>isNaN(Number(c)))),i=new Set(["_ngcontent","ng-reflect-*","data-v-*"]),s=e?.attributes?Array.from(e.attributes):[];for(let c of s){let a=c.name,u=c.value;if(a==="id"&&(!t||!er.has(t)))continue;let d;if(r.has(a)?d=a:a.startsWith("data-v-")?d="data-v-*":a.startsWith("ng-reflect-")?d="ng-reflect-*":a.startsWith("_ngcontent")&&(d="_ngcontent"),d){let h=u.trim()!=="",E=o.has(d);if(h||E){let m=Ft[d],y=i.has(d)?"true":u;n[m]=y}}}if(!n[Ft[Mt]]){let c=fl(e);c&&(n[Ft[Mt]]=c)}return n}function up(e){return Dl(e,$i,Hi)}function dp(e){return Dl(e,Vi,null)}function Dl(e,t,n){let r={};for(let o in t)if(isNaN(Number(o))){let i=t[o],c=`aria-${o.toLowerCase().replace(/_/g,"-")}`,a=e.getAttribute(c),u=!1;n!==null&&(u=Object.values(n).filter(h=>typeof h=="number").includes(i)),e.hasAttribute(c)&&u||a?.trim()?r[i]=a:c==="aria-level"&&tl.includes(e.tagName.toLowerCase()?.trim())&&(r[i]=e.tagName.substring(1))}return r}function wn(e){return Ol(e)&&e.nodeType===hr.ELEMENT}function Zi(e){return e.nodeType===hr.TEXT}function Ol(e){let t=typeof e;return t=="object"&&e!=null||t=="function"}function va(e){return wn(e)&&(!e.namespaceURI||e.namespaceURI===nl)}function fp(e){return wn(e)&&e.namespaceURI===rl}function so(e){return e.tagName==="IFRAME"}function Hr(e,t){return"tagName"in e?e.tagName?.toLowerCase()===t:e.elementTag?.toLowerCase()===t}function rr(e,t){if(e.closest)return e.closest(t);for(;!Ji(e,t);){if(e.parentElement===null)return null;e=e.parentElement}return e}function Ji(e,t){return e.matches?.(t)??e.msMatchesSelector?.(t)??e.webkitMatchesSelector(t)}function pp(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 mp(e){let t={},n=nr.text,r=nr.elText;e.textContent?.trim()&&(t[n]=e.textContent);let o=e.querySelector("title"),i=e.querySelector("img");o?.textContent?.trim()?t[r]=o.textContent:i?.alt?.trim()&&(t[r]=i.alt);let s=e.getAttribute("viewBox");s&&(t[nr.viewBox]=s);let c=e.querySelectorAll("path");c.length>0&&(t[nr.paths]=c.length,t[nr.pathData]=Array.from(c).slice(0,3).map(u=>u.getAttribute("d")).filter(Boolean).map(u=>u.substring(0,100)));let a={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(a).forEach(([u,d])=>{if(d>0){let h=nr[u];t[h]=d}}),Object.keys(t).length>0?t:void 0}function hp(e){let t={};if(!e?.hasAttributes())return t;for(let n of Object.values(ro).filter(r=>typeof r=="number")){let r=ro[n];if(r){let o=r;if(ro.hasOwnProperty(o)&&e.hasAttribute(o)){let i=e.getAttribute(o);i?.trim()&&(t[n]=i)}}}return t}function gp({frameElement:e,parentDisabled:t,excludeLabels:n}){if(!Pt.includeFrameContents)return[];let r=null;try{r=e.contentWindow?.document?.body||null}catch{return[]}if(!r)return[];let o=[];for(let i of _a(r))if(!(Ko(i)||Pl(i))){if(wn(i)){let s=i,c=Tn(s),a=tn(s,c),{shouldCreate:u,shouldAnnotate:d}=es(a);if(u){d&&gr(s);let h=Lt({targetElement:s,parentDisabled:t,semanticRole:c??void 0,excludeLabels:n,elementContext:a});h&&o.push(h)}else{let h=xa({element:s,semanticRole:c??void 0,parentDisabled:t,excludeLabels:n});o.push(...h)}}else if(Zi(i)){let s=Xo(i);s&&o.push(s)}}return o}function _a(e){let t=de(e);if($c(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||Dr()?.getShadowRoot?.(e)||null;if(n){let r=Array.from(n.childNodes),o=Array.from(e.childNodes).filter(i=>!i.assignedSlot);return r.concat(o)}}catch{}return Array.from(e.childNodes)}function xa({element:e,semanticRole:t,parentDisabled:n,excludeLabels:r}){let o=[];for(let i of _a(e))if(!(Ko(i)||Pl(i))){if(wn(i)){let s=i,c=Tn(s),a=tn(s,c);if(so(s)){gr(s);let h=gp({frameElement:s,parentDisabled:n,excludeLabels:r}),E=Lt({targetElement:s,parentDisabled:n,semanticRole:c??void 0,excludeLabels:r,isFrameNode:!0,frameContentNodes:h,elementContext:a});E&&o.push(E);continue}let{shouldCreate:u,shouldAnnotate:d}=es(a);if(u){d&&gr(s);let h=Lt({targetElement:s,parentDisabled:n,semanticRole:c??void 0,excludeLabels:r,elementContext:a});h&&o.push(h)}else{let h=xa({element:s,semanticRole:c??void 0,parentDisabled:n,excludeLabels:r});o.push(...h)}}else if(Zi(i)){let s=Xo(i);s&&o.push(s)}}return o}function bp({element:e}){let t=kl(e.getAttribute("aria-labelledby")),n=new Set;for(let r of t){let o=Rl(e,r);if(!(!o||o===e)&&o){let i=Tn(o),s=Lt({targetElement:o,semanticRole:i,elementContext:tn(o,i)});n.add(s)}}return Array.from(n)}function yp({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=>Lt({targetElement:o,parentDisabled:t,semanticRole:"option",elementContext:tn(o,"option")})):Hr(e,"select")&&(r=Array.from(e.selectedOptions).map(o=>Lt({targetElement:o,parentDisabled:t,semanticRole:"option",elementContext:tn(o,"option")})))),r}function vp({element:e}){if(el.includes(e.tagName)){let t=X(e),n=sa(t,"label"),r=new Set;return Array.from(n).filter(o=>o!==e&&Ep(o,e)).map(o=>{let i=Tn(o),s=Lt({targetElement:o,semanticRole:i,excludeLabels:!0,elementContext:tn(o,i)});r.add(s)}),Array.from(r)}}function Ep(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 Tp({element:e}){if(Hr(e,"table")){let t=e.querySelector("caption");if(t&&t!==e){let n=Tn(t);return Lt({targetElement:t,semanticRole:n,elementContext:tn(t,n)})}}}function wp({element:e}){if(Hr(e,"figure")){let t=e.querySelector("figcaption");if(t&&t!==e){let n=Tn(t);return Lt({targetElement:t,semanticRole:n,elementContext:tn(t,n)})}}}function _p({element:e}){if(Hr(e,"fieldset")){let t=e.querySelector("legend");if(t&&t!==e){let n=Tn(t);return Lt({targetElement:t,semanticRole:n,elementContext:tn(t,n)})}}}function xp({element:e}){let t=new Set,n=Cl(e);for(let r of n){let o=Tn(r),i=Lt({targetElement:r,semanticRole:o,elementContext:tn(r,o)});t.add(i)}return Array.from(t)}function es(e){let{semanticRole:t,eventHandlerIndices:n,isEditableRegion:r,hasNodeWorthyHandlers:o,isLikelyStructuralContainer:i}=e,s=n.length>0&&n.some(h=>sl.has(h)),a=!!t||!i&&(o||r),u=!!t&&er.has(t);return{shouldCreate:a,shouldAnnotate:a&&(u||r||s)}}function Pl(e){if(!wn(e))return!1;let t=e,n=t.tagName;return qi.has(n)?!0:n===Ur||n===Br?Ip(t):!1}function Ip(e){let t=de(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 Ia(e,t={}){return Fc(t),ml(),dl(),pl(e,{includeShadow:!0,includeIframes:Pt.clearIframes}),Fr.initialize(Pt.semanticIdStart),{rootNodes:Ul(e),semanticNodes:Bn}}function Ul(e){let t=[];try{let n=X(e),o=Array.from(n.querySelectorAll(Ml)).filter(i=>!qr(i)&&Nl(i));if(o.length===0)t=ao({targetElement:e});else if(o.length===1){let i=o[0];i.contains(e)?t=ao({targetElement:e}):e.contains(i)?t=ao({targetElement:i}):t=ao({targetElement:e})}else t=ao({targetElement:e})}catch(n){throw console.error("Error constructing semantic tree",n),n}return t}function ao({targetElement:e,parentNode:t}){if(Ko(e)||Bl(e))return[];let n=Tn(e),r=tn(e,n);if(so(e))return[Rp({frameElement:e,role:n,parentNode:t,elementContext:r})];let o=0,{shouldCreate:i,shouldAnnotate:s}=es(r);i&&(s&&gr(e),o=Lt({targetElement:e,parentDisabled:t?.isDisabled,semanticRole:n,elementContext:r}));let c=Bn[o],a=kp(e,n,o?c:t);return o&&a.length>0&&(c.semanticChildren=a),o?[o]:a}function kp(e,t,n){let r=[],o=Sl(e,t);for(let i of o)if(!(Ko(i)||Bl(i))){if(wn(i)){let s=ao({targetElement:i,parentNode:n});r.push(...s)}else if(Zi(i)&&Np(i,n)){let s=Xo(i);s&&r.push(s)}}return r}function Rp({frameElement:e,role:t,parentNode:n,elementContext:r}){gr(e);let o=Sp(e);return Lt({targetElement:e,parentDisabled:n?.isDisabled,semanticRole:t,isFrameNode:!0,frameContentNodes:o,elementContext:r})}function Sp(e){if(!Pt.includeFrameContents)return[];let t=Ap(e);return t.kind==="content"?Ul(t.rootElement):Cp(e,t.reason)}function Ap(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 Cp(e,t){let n=Fr.generateId(),r=Fr.generateId(),o=e.getAttribute("title")?.trim()||e.getAttribute("name")?.trim()||e.id?.trim()||"Embedded frame",i=Bi(e)||void 0,s=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 Bn[n]={nodeCategory:hr.ELEMENT,semanticRole:"embedded_document_unavailable",computedName:o,syntheticKind:"embedded_container",frameContent:[r],...i?{resourceLocator:i}:{}},Bn[r]={nodeCategory:hr.TEXT,parent:n,textContent:s,preventTextMerge:!0,syntheticKind:"embedded_unavailable_text"},[n]}function Np(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"?$o[t.semanticRole]:t.semanticRole;if(Ll(r))return!1}return!0}function Bl(e){if(!wn(e))return!1;let t=e,n=t.tagName;return qi.has(n)?!0:n===Ur||n===Br?Mp(t):!1}function Mp(e){let t=de(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 ns(e){let t=e.activeElement;for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}function Lp(e){let t=e.getBoundingClientRect();return{x:t.left+t.width/2,y:t.top+t.height/2}}function lo(e,t,n){let r=X(e,t),o=K(r,n);try{e.focus?.({preventScroll:!0})}catch{}if(ns(r)===e)return!0;try{let{x:i,y:s}=Lp(e),c=o.PointerEvent||PointerEvent,a=o.MouseEvent||MouseEvent;e.dispatchEvent(new c("pointerdown",{bubbles:!0,cancelable:!0,composed:!0,clientX:i,clientY:s,buttons:1,button:0,pointerType:"mouse"})),e.dispatchEvent(new a("mousedown",{bubbles:!0,cancelable:!0,composed:!0,clientX:i,clientY:s,buttons:1,button:0})),e.dispatchEvent(new a("mouseup",{bubbles:!0,cancelable:!0,composed:!0,clientX:i,clientY:s,buttons:0,button:0})),e.dispatchEvent(new c("pointerup",{bubbles:!0,cancelable:!0,composed:!0,clientX:i,clientY:s,buttons:0,button:0,pointerType:"mouse"})),(e.isContentEditable||fn(e,o)||En(e,o)||e.getAttribute("contenteditable")==="true")&&e.dispatchEvent(new a("click",{bubbles:!0,cancelable:!0,composed:!0,clientX:i,clientY:s,button:0}))}catch{}try{e.focus?.({preventScroll:!0})}catch{}return ns(r)===e}function Qo(e,t){let n=de(e),r=En(e,n)?n.HTMLTextAreaElement.prototype:n.HTMLInputElement.prototype,o=Object.getOwnPropertyDescriptor(r,"value");o?.set?o.set.call(e,t):e.value=t}function $r(e,t,n="insertText"){let r=de(e),o=r.InputEvent||(typeof InputEvent<"u"?InputEvent:null),i=r.Event||Event;try{o?e.dispatchEvent(new o("beforeinput",{bubbles:!0,cancelable:!0,composed:!0,data:String(t??""),inputType:n})):e.dispatchEvent(new i("beforeinput",{bubbles:!0,cancelable:!0,composed:!0}))}catch{try{e.dispatchEvent(new i("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 i("input",{bubbles:!0,cancelable:!1,composed:!0}))}catch{try{e.dispatchEvent(new i("input",{bubbles:!0,cancelable:!1,composed:!0}))}catch{}}try{e.dispatchEvent(new i("change",{bubbles:!0,cancelable:!0,composed:!0}))}catch{}}function Dp(e){let n=de(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)),i=e.dispatchEvent(new n("keypress",r)),s=e.dispatchEvent(new n("keyup",r));return{canceled:!(o&&i&&s)}}function Wr(e){if(!e)return!1;let t=de(e);if(En(e,t))return!e.disabled&&!e.readOnly;if(fn(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 ka(e){let t=de(e);if(!e||!ut(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 Op(e,t){let n=e.getRootNode();return en(n)?n:X(e)??t}function Pp(e,t){let n=[];for(let r of t.split(/\s+/).filter(Boolean)){let o=e.getElementById?.(r)||e.querySelector?.(`#${CSS.escape(r)}`),i=de(o);ut(o,i)&&n.push(o)}return n}function Wl(e,t){if(!e)return{kind:"none",el:null,via:"no-root"};if(Wr(e))return{kind:"input",el:e,via:"self-input"};if(ka(e))return{kind:"contenteditable",el:e,via:"self-contenteditable"};let n=X(e)??t,r=K(n),o=Op(e,n);if(qc(e,r)){let a=e.control;if(Wr(a))return{kind:"input",el:a,via:"label.control"};let u=e.htmlFor;if(u){let d=o.getElementById?.(u)||o.querySelector?.(`#${CSS.escape(u)}`);if(Wr(d))return{kind:"input",el:d,via:"label.for"}}}let i=e.getAttribute("aria-controls")||e.getAttribute("aria-owns");if(i)for(let a of Pp(o,i)){if(Wr(a))return{kind:"input",el:a,via:"aria-controls/owns"};if(ka(a))return{kind:"contenteditable",el:a,via:"aria-controls/owns"};let u=a.querySelector?.("input,textarea");if(Wr(u))return{kind:"input",el:u,via:"aria-controls->desc"}}let s=e.querySelector?.("input,textarea");if(Wr(s))return{kind:"input",el:s,via:"descendant"};let c=e.shadowRoot||null;if(c){let a=c.querySelector?.("input,textarea");if(Wr(a))return{kind:"input",el:a,via:"open-shadow-input"};let u=c.querySelector?.('[contenteditable="true"],[contenteditable=""],[role="textbox"]');if(ka(u))return{kind:"contenteditable",el:u,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 co(e,t,n,r=!1){let o=X(e,t),s=K(o,n).getSelection?.();if(!s)return!1;try{let c=o.createRange();return c.selectNodeContents(e),r&&c.collapse(!1),s.removeAllRanges(),s.addRange(c),!0}catch{return!1}}function Vr(e){return(e.textContent??"").replace(/\u00A0/g," ").trim()}var ts=e=>String(e??"").replace(/\s+/g," ").trim(),$l=new MessageChannel,Vl=[];$l.port1.onmessage=()=>{let e=Vl.shift();e&&e()};function Fl(){return new Promise(e=>{Vl.push(e),$l.port2.postMessage(0)})}async function Hl(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 Fl():await new Promise(i=>{try{t.requestAnimationFrame(()=>i())}catch{Fl().then(i)}})}function Up(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 ql(e,t,n,r){let o=X(e,t),s=K(o,n).KeyboardEvent||KeyboardEvent,c=String(r??"");for(let a of c){let{code:u,which:d}=Up(a),h={key:a,code:u,bubbles:!0,cancelable:!0,composed:!0,keyCode:d,which:d};e.dispatchEvent(new s("keydown",h)),e.dispatchEvent(new s("keypress",h)),e.dispatchEvent(new s("keyup",h))}}async function Gl(e,t,n,r,o){let i=String(r??"");if(e.disabled||e.readOnly)return{success:!1,method:"type-native-setter",details:"disabled_or_readonly",allowFallback:!0};let s=String(e.value??""),c=X(e,t),a=K(c,n),u=lo(e,c,a),d=Number.isFinite(Number(o?.settleFrames))?Math.max(0,Math.min(4,Number(o?.settleFrames))):c.hidden?1:2,h=!!o?.useKeyFallback,E=Number.isFinite(Number(o?.keyFallbackMaxLen))?Number(o?.keyFallbackMaxLen):140,m=h&&i.length>0&&i.length<=E;Qo(e,i),$r(e,i,"insertReplacementText"),m&&ql(e,c,a,i),await Hl(c,a,d);let y=String(e.value??""),_=ts(s),N=ts(y),H=ts(i),C=_===H,L=N===H,W=y!==s,Y=i.length>0&&!C&&y===s,ae=1;if(!C&&!L&&!W){ae=2;try{e.focus?.({preventScroll:!0}),e.select?.()}catch{}let me=!1;try{c.execCommand?.("selectAll",!1,void 0),me=!!c.execCommand?.("insertText",!1,i)}catch{me=!1}if(!me)try{Qo(e,i)}catch{}try{$r(e,i,"insertReplacementText")}catch{}m&&ql(e,c,a,i),await Hl(c,a,d),y=String(e.value??"")}let fe=ts(y)===H,oe=y!==s;Y=i.length>0&&!C&&y===s;let ye=C||fe||oe;return{success:ye,method:"type-native-setter",details:`focus=${u};attempts=${ae};settleFrames=${d};beforeLen=${s.length};afterLen=${y.length};changed=${oe};alreadyCorrect=${C};nowCorrect=${fe};reverted=${Y};keyFallback=${m}`,allowFallback:ye?void 0:!0}}function Bp(e,t,n){let o=de(e).InputEvent||InputEvent,i=new o("beforeinput",{bubbles:!0,cancelable:!0,composed:!0,data:t,inputType:n});return{ok:e.dispatchEvent(i),defaultPrevented:i.defaultPrevented}}function zl(e,t,n,r){let o=X(e,n),i=K(o,r),s=i.InputEvent||InputEvent,c=i.Event||Event,a=String(t??""),u=Vr(e),d=lo(e,o,i),h=co(e,o,i,!0),E=Bp(e,a,"insertText"),m=!1,y="execCommand",_=!1,N=()=>{_=!0};try{e.addEventListener("input",N,{capture:!0})}catch{}if(E.ok&&!E.defaultPrevented)try{m=!!o.execCommand?.("insertText",!1,a)}catch{}if(!m)try{let L=i.getSelection?.(),W=L&&L.rangeCount?L.getRangeAt(0):null;if(!W||!e.contains(W.commonAncestorContainer)){co(e,o,i,!0);let Y=i.getSelection?.();W=Y&&Y.rangeCount?Y.getRangeAt(0):null}W&&(W.insertNode(o.createTextNode(a)),W.collapse(!1),L?.removeAllRanges(),L?.addRange(W),m=!0,y="range")}catch{}if(m&&!_){try{e.dispatchEvent(new s("input",{bubbles:!0,cancelable:!1,composed:!0,data:a,inputType:"insertText"}))}catch{try{e.dispatchEvent(new c("input",{bubbles:!0,cancelable:!1,composed:!0}))}catch{}}try{e.dispatchEvent(new c("change",{bubbles:!0,cancelable:!0,composed:!0}))}catch{}}try{e.removeEventListener("input",N,{capture:!0})}catch{}let H=Vr(e);return{success:H!==u||!!a&&H.includes(a),method:`type-contenteditable-${y}`,details:`focus=${d};selectedWithin=${h};inserted=${m}`}}function jl(e){let{canceled:t}=Dp(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 Xl(e,t,n){if(e.disabled||e.readOnly)return{success:!1,method:"clear-native-setter",details:"disabled_or_readonly",allowFallback:!0};let r=X(e,t),o=K(r,n),i=String(e.value??""),s=lo(e,r,o);Qo(e,""),$r(e,"","deleteByCut");let c=String(e.value??""),a=c!==i;return{success:a||c.length===0,method:"clear-native-setter",details:`focus=${s};beforeLen=${i.length};afterLen=${c.length};changed=${a}`}}function Yl(e,t,n){let r=X(e,t),o=K(r,n),i=Vr(e),s=lo(e,r,o),c=co(e,r,o,!1),a=!1,u="execCommand";try{a=!!r.execCommand?.("delete",!1,void 0)}catch{a=!1}if(!a)try{let m=o.getSelection?.(),y=m&&m.rangeCount?m.getRangeAt(0):null;(!y||!e.contains(y.commonAncestorContainer))&&co(e,r,o,!1);let _=o.getSelection?.(),N=_&&_.rangeCount?_.getRangeAt(0):null;N&&(N.deleteContents(),N.collapse(!1),_?.removeAllRanges(),_?.addRange(N),a=!0,u="range")}catch{}if(!a)try{e.textContent="",a=!0,u="textContent"}catch{}$r(e,"","deleteByCut");let d=Vr(e),h=d!==i;return{success:a||h||d.length===0,method:`clear-contenteditable-${u}`,details:`focus=${s};selectedWithin=${c};cleared=${a};changed=${h}`}}function Kl(e,t){if(e===t||e.contains(t))return!0;let n=t;for(;n;){let r=n.getRootNode?.();if(en(r)){let o=r.host;if(o===e||e.contains(o))return!0;n=o;continue}n=n.parentNode||null}return!1}var rs;(function(e){e.FLASH_LITE="Gemini Flash Lite",e.FLASH="Gemini Flash",e.PRO="Gemini Pro"})(rs||(rs={}));var Ql;(function(e){e[e.NativeHostConnected=0]="NativeHostConnected",e[e.NativeHostDisconnected=1]="NativeHostDisconnected"})(Ql||(Ql={}));var Fp=["image/png","image/jpeg","image/webp"],Hp=["application/pdf","text/plain"],vv=[...Fp,...Hp];var Et;(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"})(Et||(Et={}));var dt;(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"})(dt||(dt={}));var Ev={[Et.ACT]:dt.AGENTIC_SEEK,[Et.CRAWL]:dt.CRAWL_PAGES,[Et.EXTRACT]:dt.EXTRACT_PAGE,[Et.SHEETS_WORKFLOW]:dt.SHEETS_WORKFLOW,[Et.INFER_SHEET_DATA]:dt.INFER_SHEET_DATA,[Et.PDF_FILLER]:dt.PDF_FILLER,[Et.CUSTOM_TOOL_GENERATOR]:dt.CUSTOM_TOOL_GENERATOR,[Et.WEBPAGE_GENERATOR]:dt.WEBPAGE_GENERATOR,[Et.GOOGLE_DOC_GENERATOR]:dt.GOOGLE_DOC_GENERATOR,[Et.GOOGLE_SLIDES_GENERATOR]:dt.GOOGLE_SLIDES_GENERATOR,[Et.PROCESS_TEXT]:dt.PROCESS_TEXT,[Et.CREATE_SHEET_FROM_DATA]:dt.CREATE_SHEET_FROM_DATA,[Et.ROVER_EXTERNAL_READ_CONTEXT]:dt.ROVER_EXTERNAL_READ_CONTEXT,[Et.ROVER_EXTERNAL_ACT_CONTEXT]:dt.ROVER_EXTERNAL_ACT_CONTEXT,[Et.EXECUTE_MULTIPLE_TOOLS]:dt.EXECUTE_MULTIPLE_TOOLS,[Et.CONFIGURE_API_KEY]:dt.CONFIGURE_API_KEY,[Et.QUERY_RTRVR_AI_DOCUMENTATION]:dt.QUERY_RTRVR_AI_DOCUMENTATION};var Ra=200;var qp=30,Wp=320,$p=0,Vp=50,Gp=1,Tv=rs.FLASH;var wv=dt.PLANNER;var Sa="application/pdf",Aa="application/gsheet";var _v=20*1024*1024;var os={maxParallelTabs:4,pageLoadDelay:2e3,disableAutoScroll:!1,makeNewTabsActive:!1,writeRowProcessingTime:!1,totalBudgetMs:25e3,pageDataTimeoutMs:22e3,adaptiveSettleDebounceMs:qp,adaptiveSettleMaxWaitMs:Wp,adaptiveSettleRetries:$p,sparseTreeRetryDelayMs:Vp,sparseTreeRetryMaxAttempts:Gp,pdfTextSelectionTimeoutMs:12e3,onlyTextContent:!1};var zp=1,jp=9,Xp=11,Na="application/gdoc",uo="text/html",is="text/plain";function Yp(e){return!!e&&typeof e=="object"&&e.nodeType===jp}function Jl(e){return!!e&&typeof e=="object"&&e.nodeType===zp}function Kp(e){return!!e&&typeof e=="object"&&e.nodeType===Xp&&typeof e.host=="object"&&typeof e.mode=="string"}function Zl(e){return Jl(e)&&String(e.tagName).toUpperCase()==="IFRAME"}function Ca(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 Qp(e){try{let t=e.shadowRoot;return t||globalThis?.chrome?.dom?.openOrClosedShadowRoot?.(e)||null}catch{return null}}function Jp(e,t,n={}){let r=n.traverseShadow!==!1,o=n.traverseIframes!==!1,i=n.requireOwnerDocument,s=[e],c=new WeakSet;for(;s.length;){let a=s.pop();if(a&&typeof a=="object"){if(c.has(a))continue;c.add(a)}if(Yp(a)){let h=a.documentElement||a.body;h&&s.push(h);continue}if(Kp(a)){let h=a.children;if(h&&h.length)for(let E=h.length-1;E>=0;E--)s.push(h[E]);continue}if(!Jl(a))continue;let u=a;if(i&&u.ownerDocument!==i)continue;let d=u.getAttribute?.(Mt);if(d&&Go(d)===t)return u;if(r)try{let h=Qp(u);h&&s.push(h)}catch{}if(o&&Zl(u))try{let h=Po(u);h&&s.push(h)}catch{}for(let h=u.lastElementChild;h;h=h.previousElementSibling)s.push(h)}return null}function _n(e,t,n={}){let r=Ca(t);if(!r)return null;let o=jo(r);return o&&(!n.requireOwnerDocument||o.ownerDocument===n.requireOwnerDocument)?o:Jp(e,r,{requireOwnerDocument:n.requireOwnerDocument,traverseShadow:n.traverseShadow,traverseIframes:n.traverseIframes})}function Ma(e=document){return e.querySelector('embed[type="application/pdf"], embed[type="application/x-google-chrome-pdf"]')}function eu(e){if(e==null)return[];if(Array.isArray(e)){let t=[];for(let n of e){let r=Ca(n);r&&t.push(r)}return t}if(typeof e=="number"||typeof e=="bigint"){let t=Ca(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 eu(t)}return[]}function fo(e,t){let n=eu(t),r=e.defaultView||window;if(!n.length)return{doc:e,win:r,iframePath:n,resolvedPath:[],unresolvedPath:[]};let o=e,i=[];for(let s=0;s<n.length;s++){let c=n[s],a=n.length===1,u=_n(o,c,{requireOwnerDocument:a?void 0:o,traverseShadow:!0,traverseIframes:a});if(!u||!Zl(u))return{doc:o,win:o.defaultView||r,iframePath:n,resolvedPath:i,unresolvedPath:n.slice(s)};let d=null;try{d=Po(u)||null}catch{d=null}if(!d)return{doc:o,win:o.defaultView||r,iframePath:n,resolvedPath:i,unresolvedPath:n.slice(s)};i.push(c),o=d}return{doc:o,win:o.defaultView||r,iframePath:n,resolvedPath:i,unresolvedPath:[]}}function tu(e){return e==="application/pdf"||e==="application/x-pdf"||e==="application/x-google-chrome-pdf"}function Zp(){return Date.now()}function ft(e){return!e||!Number.isFinite(e)?Number.POSITIVE_INFINITY:Math.max(0,e-Zp())}async function nu(e,t,n){if(!Number.isFinite(e)||e<=0)return;let r=ft(n);r<=0||r<e+40||await pt(e,t)}async function po(e,t,n){let r=Math.max(0,Math.floor(t));return r?await Promise.race([e.then(i=>({ok:!0,value:i})),(async()=>(await pt(r,n),{ok:!1,reason:"timeout"}))()]):{ok:!1,reason:"timeout"}}var pt=(()=>{let e=new MessageChannel,t=[];e.port1.onmessage=()=>{let r=t.shift();r&&r()};let n=()=>new Promise(r=>{t.push(r),e.port2.postMessage(0)});return async(r,o)=>{let i=Number(r);if(!Number.isFinite(i)||i<=0)return;if(!o.hidden){let c=o.defaultView||window,a=c.setTimeout?c.setTimeout.bind(c):setTimeout;await new Promise(u=>a(u,i));return}let s=Date.now();for(;Date.now()-s<i;)await n()}})();var em=3e4;function ru(e){return(String(e??"").replace(/\\/g,"/").split("/").pop()||"upload").replace(/[\u0000-\u001f\u007f]/g,"").trim()||"upload"}var La=class extends Error{constructor(n,r){super(n);$(this,"url");$(this,"status");$(this,"statusText");$(this,"bodySnippet");this.name="FetchFileError",this.url=r.url,this.status=r.status,this.statusText=r.statusText,this.bodySnippet=r.bodySnippet}};function tm(e){return e&&e.split(";")[0].trim()||"application/octet-stream"}function nm(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 Da(e,t){try{let r=(t??window).URL||URL,i=new r(e).pathname.match(/\/o\/(.+?)(\?|$)/);if(i?.[1]){let c=decodeURIComponent(i[1]).split("/");return c[c.length-1].replace(/^\d+-/,"")}}catch{}}function ou(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 rm(e,t={},n,r=fetch){let o=new AbortController,i=em,s=!1,c=()=>{};if(n){let u=!1;c=()=>{u=!0},(async()=>{try{if(await pt(i,n),u)return;s=!0,o.abort()}catch{}})().catch(()=>{})}else{let u=setTimeout(()=>{s=!0,o.abort()},i);c=()=>clearTimeout(u)}let a=new Headers(t.headers);a.has("Accept")||a.set("Accept","*/*");try{let u=await r(e,{method:"GET",redirect:t.redirect??"follow",cache:t.cache??"no-store",mode:t.mode??"cors",credentials:t.credentials??"include",...t,headers:a,signal:o.signal});if(!u.ok){let m=await u.text().catch(()=>"");throw new La(`Fetch failed (${u.status})`,{url:e,status:u.status,statusText:u.statusText,bodySnippet:m.slice(0,256)})}let d=await u.arrayBuffer(),h=tm(u.headers.get("content-type")),E=nm(u.headers.get("content-disposition"))||Da(e);return{bytes:d,mimeType:h,fileName:E}}finally{c()}}async function iu(e,t,n){return await rm(t,{referrer:n??void 0,referrerPolicy:"strict-origin-when-cross-origin"})}var Ke;(function(e){e.UP="UP",e.DOWN="DOWN",e.LEFT="LEFT",e.RIGHT="RIGHT",e.TOP="TOP",e.BOTTOM="BOTTOM"})(Ke||(Ke={}));var At;(function(e){e.START="START",e.CENTER="CENTER",e.END="END",e.NEAREST="NEAREST"})(At||(At={}));function au(e){if(!e)return At.CENTER;let t=typeof e=="string"?e.toUpperCase():String(e).toUpperCase();return At&&t in At?At[t]:At.CENTER}function Oa(e){return globalThis.CSS&&typeof globalThis.CSS.escape=="function"?globalThis.CSS.escape(e):e.replace(/([ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g,"\\$1")}function mo(e,t){if(!e)return"";let n=X(e,t);if(e===n.documentElement)return"html";if(e===n.body)return"body";if(e.id)return`#${Oa(e.id)}`;let r=[],o=e;for(;o&&o!==n.body&&o!==n.documentElement;){let i=o.tagName.toLowerCase();if(o.id){i+=`#${Oa(o.id)}`,r.unshift(i);break}let c=(o.classList&&o.classList.length?Array.from(o.classList):(o.className||"").toString().split(/\s+/).filter(Boolean)).filter(a=>a&&a.length<=48).sort((a,u)=>a.length-u.length).slice(0,3).map(Oa);if(c.length)i+="."+c.join(".");else{let a=o.parentElement;if(a){let u=Array.from(a.children).filter(d=>d.tagName===o.tagName);if(u.length>1){let d=u.indexOf(o)+1;i+=`:nth-of-type(${d})`}}}r.unshift(i),o=o.parentElement}return r.join(" > ")}function Gr(e){return e.scrollingElement||e.documentElement||e.body}function ss(e,t,n,r,o){let i=X(e,t),s=K(i,n),c=Gr(i),a=e===i.documentElement||e===i.body||e===c,u=a?c:e,d=a?s.innerHeight:u.clientHeight,h=a?s.innerWidth:u.clientWidth,E=o??d*.8;switch(r){case Ke.DOWN:{u.scrollTop+=E;break}case Ke.UP:{u.scrollTop=Math.max(0,u.scrollTop-E);break}case Ke.LEFT:return u.scrollLeft=Math.max(0,u.scrollLeft-(o??h*.8)),{success:!0,scrollLeft:u.scrollLeft};case Ke.RIGHT:return u.scrollLeft+=o??h*.8,{success:!0,scrollLeft:u.scrollLeft};default:return{success:!1,error:`Unsupported scroll direction: ${String(r)}`}}let m=u.scrollHeight,y=a?s.innerHeight:u.clientHeight,_=m-y;return{success:!0,scrollTop:u.scrollTop,isAtTop:u.scrollTop<=5,isAtBottom:u.scrollTop>=_-5}}function om(e,t,n){let r=X(e,t),o=K(r,n),i=Gr(r),s=e;for(;s&&s!==r.body&&s!==r.documentElement;){let a=o.getComputedStyle(s).overflowY;if((a==="auto"||a==="scroll"||a==="overlay")&&s.scrollHeight>s.clientHeight+5)return s;s=s.parentElement}return i}function su(e,t,n){let r=X(e,t),o=K(r,n),i=Gr(r),s=e===r.documentElement||e===r.body||e===i,c=s?i:e,a=c.scrollHeight,u=s?o.innerHeight:c.clientHeight,d=a-u;return c.scrollTop>=d-5}function Pa(e,t,n,r){let o=X(e,t),i=K(o,n),s=Gr(o),c=om(e,o,i),a=c===o.documentElement||c===o.body||c===s,u=a?s:c,d=e.getBoundingClientRect(),h=a?new(i.DOMRect||DOMRect)(0,0,i.innerWidth,i.innerHeight):c.getBoundingClientRect(),E=a?i.innerHeight:c.clientHeight,m=24,y=d.top-h.top,_=u.scrollTop+y,N;switch(r){case At.START:N=_-m;break;case At.END:N=_+d.height-E+m;break;case At.NEAREST:{if(d.top>=h.top&&d.bottom<=h.bottom)return{success:!0,scrollTop:u.scrollTop,isAtTop:u.scrollTop<=5,isAtBottom:su(u,o,i)};d.top<h.top?N=_-m:N=_+d.height-E+m;break}case At.CENTER:default:N=_-E/2+d.height/2;break}let H=u.scrollHeight-E;return u.scrollTop=Math.max(0,Math.min(N,H)),{success:!0,scrollTop:u.scrollTop,isAtTop:u.scrollTop<=5,isAtBottom:su(u,o,i)}}function cu(e){let t=Number(e);if(!Number.isFinite(t))return null;let n=Math.trunc(t);return n>0?n:null}function lu(e){let t=[];for(let n of Si){let r=e?.[n];if(r==null)continue;if(Array.isArray(r)){for(let i of r){let s=cu(i);s!=null&&t.push(s)}continue}let o=cu(r);o!=null&&t.push(o)}return Array.from(new Set(t))}function im(e){return lu(e).length>0}function sm(e){let t=lu(e);return t.length?t[0]:null}var am=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(ua,"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],i=o&&typeof o=="object"?o:{};if(!o)try{Object.defineProperty(window,r,{value:i,writable:!1,configurable:!1,enumerable:!1})}catch{window[r]=i}async function s(l){let x={};try{let T=Pc[l.opcode];if(!T)throw new Error(`Unknown tool opcode: ${l.opcode}`);let w={...l.call,name:T};x=(await _({tabIndex:l.tabIndex,call:w,elementData:y(l.elementData),payload:l.payload}))[0]?.response??{success:!1,error:"Empty tool response",allowFallback:!0}}catch(T){x={success:!1,error:T?.message||String(T),allowFallback:!0}}return x}try{Object.defineProperty(i,"actions",{value:Object.freeze({execute:s}),writable:!1,configurable:!1,enumerable:!1})}catch{}let c="__RTRVR_UPLOAD_BYTES_REQ__",a="__RTRVR_UPLOAD_BYTES_RES__",u="__RTRVR_UPLOAD_BYTES_BRIDGE__",d="__RTRVR_WINDOW_MESSAGE_MUX__";function h(l){let x=l,T=x[d];if(!T||typeof T!="object"){T={handlers:new Set,installed:!1};try{Object.defineProperty(x,d,{value:T,enumerable:!1,configurable:!1})}catch{x[d]=T}}if(!T.installed){T.installed=!0,l.addEventListener("message",w=>{if(w.source===l)for(let b of Array.from(T.handlers))try{b(w)}catch{}},!0);try{l.addEventListener("pagehide",()=>{let b=l[u]?.pending;if(b)for(let[g,v]of b){try{v.cancelTimeout()}catch{}v.reject(new Error("pagehide: upload bytes request canceled")),b.delete(g)}},!0)}catch{}}return T}function E(l){let x=l,T=x[u];if(!T||typeof T!="object"){T={pending:new Map};try{Object.defineProperty(x,u,{value:T,enumerable:!1,configurable:!1})}catch{x[u]=T}h(l).handlers.add(b=>{let g=b?.data;if(!g||typeof g!="object"||g.type!==a)return;let v=String(g.requestId||"");if(!v)return;let k=T.pending.get(v);if(!k)return;T.pending.delete(v);try{k.cancelTimeout()}catch{}if(!g.ok){k.reject(new Error(g.error||"Failed to get bytes"));return}let P=g.bytes;if(!(P instanceof ArrayBuffer)){k.reject(new Error("Invalid bytes payload (expected ArrayBuffer)"));return}if(typeof k.expectedByteLength=="number"&&P.byteLength!==k.expectedByteLength){k.reject(new Error(`Byte length mismatch: got=${P.byteLength}, expected=${k.expectedByteLength}`));return}k.resolve(P)})}return T}function m(l,x,T,w=9e4){let b=l.__ROVER_UPLOAD_BYTES__||l.rover?.uploadBytes||l.rtrvr?.uploadBytes;if(typeof b=="function")return Promise.resolve().then(()=>b({token:x,byteLength:T,timeoutMs:w})).then(D=>{if(D instanceof ArrayBuffer)return D;if(D&&D.buffer instanceof ArrayBuffer)return D.buffer;throw new Error("Upload bytes provider returned invalid buffer")});let g=E(l),v=globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(16).slice(2)}`,k=Math.max(1e3,Math.min(Number(w)||9e4,18e4)),P=Pi(l)||document;return new Promise((D,B)=>{let V=!1,z=!1,Z=()=>{z=!0};(async()=>{await pt(k,P),!(z||V)&&(g.pending.delete(v),V=!0,B(new Error("Timed out waiting for upload bytes")))})().catch(()=>{}),g.pending.set(v,{cancelTimeout:Z,expectedByteLength:T,resolve:ie=>{V||(V=!0,Z(),D(ie))},reject:ie=>{V||(V=!0,Z(),B(ie))}}),l.postMessage({type:c,requestId:v,token:x,byteLength:T},"*")})}function y(l){if(l)return{frameworks:l.frameworks?l.frameworks.map(x=>Oc[x]).filter(x=>x&&x!=="unknown"):[],listenersRaw:l.listenersRaw??"",role:l.role??void 0,pattern:l.pattern??void 0,value:l.value??void 0}}async function _({tabIndex:l,call:x,elementData:T,payload:w}){let b=(()=>{try{return Pn()?.top?.document||document}catch{return document}})(),g=x.args,v=im(g),k,P,D=[],B=[],V=[];try{({doc:k,win:P,iframePath:D,resolvedPath:B,unresolvedPath:V}=fo(b,g.iframe_id))}catch{if(g.iframe_id!=null){let te=`Cannot access iframe ${g.iframe_id} (cross-origin or not found)`;return[{name:x.name,args:x.args,response:{success:!1,error:te,allowFallback:!1,output:{success:!1,error:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:te,retryable:!1},iframe_context:{requested_iframe_id:g.iframe_id}}}}]}k=document,P=K(k)}if(g.iframe_id!=null&&V.length>0&&!v){let ue=`iframe_id unresolved: remaining=${V.join(">")||"(none)"} (cross-origin, not-ready, or not found)`;return[{name:x.name,args:x.args,response:{success:!1,error:ue,allowFallback:!1,details:`requested=${D.join(">")||"(none)"} resolved=${B.join(">")||"(none)"}`,output:{success:!1,error:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:ue,retryable:!1},iframe_context:{requested_iframe_id:g.iframe_id,requested_path:D,resolved_path:B,unresolved_path:V}}}}]}let z=x.name,Z=sm(g),ie=Z?_n(k,Z):null,Ee=ie?.ownerDocument??null,re;if(!am.has(z))re={success:!1,error:`Tool not promotable to main: ${z}`,allowFallback:!0};else{let te=Ee??k,ue=K(te,P);re=await H(z,ie,g,T,te,ue,w)}return[{name:x.name,args:x.args,response:re}]}async function N(l,x,T){try{let w=l.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",g=l[w]?.scroll?.execute;if(typeof g!="function")throw new Error("main-world scroll detector not available");let v=T?.doc||Pi(l)||document,k=Math.max(250,Math.min(Number(T?.timeoutMs??3500),8e3)),P=await po(Promise.resolve().then(()=>g(x)),k,v);if(!P.ok)throw new Error("scroll detector timeout");return P.value}catch(w){throw new Error(w?.message||"main-world scroll detector not available")}}async function H(l,x,T,w,b,g,v){let k=z=>({success:z.success,error:z.success?void 0:z.details||"Action failed",allowFallback:z.success?void 0:z.allowFallback??!0}),P=l===F.press_key||l===F.scroll_page||l===F.drag_and_drop||l===F.pinch_zoom;if(!x&&!P)return k({success:!1,method:"missing-element-race",details:"Target element missing",allowFallback:!0});let D=new Set([F.type_into_element,F.type_and_enter,F.clear_element,F.focus_element,F.select_text,F.check_field_validity]),B=x,V=X(B,b);if(B&&D.has(l)){let z=Wl(B,V);(z.kind==="input"||z.kind==="contenteditable")&&(B=z.el)}try{switch(l){case F.click_element:return k(Y(x,b,g,w));case F.double_click_element:return k(Mn(x,b,g));case F.right_click_element:return k(ve(x,b,g));case F.hover_element:return k(await Ze(x,b,g,w,T.duration));case F.type_into_element:return k(await hn(B,b,g,T.text,w));case F.type_and_enter:return k(await $t(B,b,g,T.text,w));case F.clear_element:return k(await Vt(B,b,g,w));case F.focus_element:return k(xt(B,b,g));case F.select_dropdown_value:return k(He(x,b,g,T.value,w));case F.adjust_slider:return k(Gt(x,b,g,w?.value??T.value,w));case F.check_field_validity:return k(Mo(B,b,g));case F.select_text:return k(zn(B,b,g,T.start_offset,T.end_offset));case F.scroll_page:return k(await dr(x,b,g,T));case F.scroll_to_element:return k(await nt(x,b,g,T));case F.mouse_wheel:return k(gt(x,b,g,T.delta_x,T.delta_y));case F.drag_element:return k(await zt(x,b,g,T,w));case F.drag_and_drop:return k(await an(T,x,b,g));case F.swipe_element:return k(await gn(x,b,g,T));case F.long_press_element:return k(await jn(x,b,g,T.duration));case F.pinch_zoom:return k(await Xe(x,b,g,T));case F.press_key:return k(jt(T.key,T.modifiers,x,b,g));case F.copy_text:return k(await Xn(x,b,g));case F.paste_text:return k(await Xt(x,b,g,w));case F.upload_file:return k(await yn(T,b,g,v,x,w));case F.dispatch_pointer_path:return k(await Yt(T,b,g));default:return k({success:!1,method:"unhandled",details:`Unhandled ${l}`,allowFallback:!0})}}catch(z){return k({success:!1,method:"exception",details:z?.message||"exception",allowFallback:!0})}}function C(l){let x=new Map;if(!l)return x;let T=l.trim();if(!T)return x;let w=Pr(T);if(w){for(let{id:b,mask:g}of w.entries){let v=Zn[b];if(!v)continue;let k=new Set(Ci(g)),P=x.get(v);if(P)for(let D of k)P.add(D);else x.set(v,k)}return x}return x}function L(l,...x){return l?x.some(T=>l.has(T)):!1}function W(l,x){let T=C(x?.listenersRaw),w=new Set;for(let[,D]of T)for(let B of D)(B==="react"||B==="vue"||B==="angular"||B==="svelte"||B==="jquery")&&w.add(B);let b=new Set;for(let[D,B]of T)if(["click","input","change","keydown","keyup","pointerdown","pointerup","mousedown","mouseup","submit","dragstart","drop","wheel","scroll"].includes(D))for(let V of B)b.add(V);let g=w.size>0||[...b].some(D=>["react","vue","angular","svelte","jquery"].includes(D)),v=L(T.get("click"),"delegated"),k=L(T.get("input"),"delegated")||L(T.get("change"),"delegated")||L(T.get("keydown"),"delegated"),P=x?.role||Vo(l)||l.getAttribute("role");return{sourcesByType:T,fws:w,isFrameworkElement:g,delegatedClick:v,delegatedInput:k,role:P}}function Y(l,x,T,w){let b=W(l,w),g=X(l,x),v=K(g,T);Ye(l,g,v),w?.pattern==="hover-activate"&&Ze(l,g,v,w,120);let k=b.fws.has("react")||L(b.sourcesByType.get("click"),"react"),P=b.fws.has("vue")||L(b.sourcesByType.get("click"),"vue"),D=b.fws.has("angular")||L(b.sourcesByType.get("click"),"angular"),B=b.fws.has("svelte")||L(b.sourcesByType.get("click"),"svelte"),V=b.fws.has("jquery")||L(b.sourcesByType.get("click"),"jquery");return Mr(()=>ae(l,g,v),()=>ce(l,g,v),()=>k?oe(l,g,v):null,()=>P?ye(l,g,v):null,()=>D?me(l,g,v):null,()=>B?Ie(l,g,v):null,()=>V?Re(l,g,v):null)}function ae(l,x,T){let w=X(l,x),b=K(w,T),g=b.PointerEvent||PointerEvent,v=b.MouseEvent||MouseEvent,{x:k,y:P}=fe(l,w,b),D={bubbles:!0,cancelable:!0,composed:!0,view:b,clientX:k,clientY:P,button:0,buttons:1};return l.focus?.({preventScroll:!0}),[new g("pointerover",D),new g("pointerenter",{...D,bubbles:!1}),new v("mouseover",D),new v("mouseenter",{...D,bubbles:!1}),new g("pointerdown",D),new v("mousedown",D),new g("pointerup",{...D,buttons:0}),new v("mouseup",{...D,buttons:0}),new v("click",{...D,buttons:0})].forEach(V=>l.dispatchEvent(V)),{success:!0,method:"pointer-mouse-click"}}function ce(l,x,T){let w=X(l,x),b=K(w,T);try{if(l instanceof HTMLAnchorElement){let g=l.getAttribute("target");try{l.setAttribute("target","_self"),l.click()}finally{g===null?l.removeAttribute("target"):l.setAttribute("target",g)}}else l.click?.();return{success:!0,method:"native-click"}}catch{return{success:!1,method:"native-click"}}}function fe(l,x,T){let w=X(l,x),b=l.getBoundingClientRect(),g=[{x:b.left+b.width/2,y:b.top+b.height/2},{x:b.left+4,y:b.top+4},{x:b.right-4,y:b.top+4},{x:b.left+4,y:b.bottom-4},{x:b.right-4,y:b.bottom-4}],v=null;for(let k=0;k<g.length;k++){let P=g[k],D=w.elementFromPoint(P.x,P.y);if(k===0&&(v=D),D&&Kl(l,D))return{...P,hit:D,ok:!0}}return{...g[0],hit:v,ok:!1}}function oe(l,x,T){let w=X(l,x),b=K(w,T);try{let g=Dt(l);if(!g)return{success:!1,method:"react-no-fiber"};let v=Qt(g),k=v.onClick||v.onClickCapture;return k?(k(Ut("click",l,w,b)),{success:!0,method:"react-fiber-onClick"}):{success:!1,method:"react-no-onClick"}}catch{return{success:!1,method:"react-fiber-onClick"}}}function ye(l,x,T){let w=X(l,x),g=K(w,T).MouseEvent||MouseEvent;try{let v=Dn(l);if(!v)return{success:!1,method:"vue-none"};let k=Qn(v);return k.click?(k.click(new g("click",{bubbles:!0})),{success:!0,method:"vue-handler"}):v.$emit?(v.$emit("click"),{success:!0,method:"vue-emit"}):{success:!1,method:"vue-no-click"}}catch{return{success:!1,method:"vue-handler"}}}function me(l,x,T){let w=X(l,x),b=K(w,T),g=b.MouseEvent||MouseEvent;try{let v=b.ng?.getZone?.()||null;return v?.run?(v.run(()=>l.dispatchEvent(new g("click",{bubbles:!0,cancelable:!0}))),{success:!0,method:"angular-zone-click"}):(l.dispatchEvent(new g("click",{bubbles:!0,cancelable:!0})),l.click?.(),{success:!0,method:"angular-click"})}catch{return{success:!1,method:"angular-click",allowFallback:!0}}}function Ie(l,x,T){let w=X(l,x),g=K(w,T).MouseEvent||MouseEvent;try{let v=l.getBoundingClientRect(),k={bubbles:!0,cancelable:!0,view:l.ownerDocument?.defaultView||window,clientX:v.left+v.width/2,clientY:v.top+v.height/2};return l.dispatchEvent(new g("mousedown",k)),l.dispatchEvent(new g("mouseup",k)),l.dispatchEvent(new g("click",k)),{success:!0,method:"svelte-click"}}catch{return{success:!1,method:"svelte-click"}}}function Re(l,x,T){let w=X(l,x),b=K(w,T);try{return b.jQuery?.(l)?.trigger?.("click"),{success:!0,method:"jquery-trigger"}}catch{return{success:!1,method:"jquery-trigger"}}}async function Ze(l,x,T,w,b=500){let g=Math.min(Math.max(0,Number(b)||500),3e4),v=X(l,x),k=K(v,T),P=W(l,w);Ye(l,v,k);let D=k.PointerEvent||PointerEvent,B=k.MouseEvent||MouseEvent,V=l.getBoundingClientRect(),z=V.left+V.width/2,Z=V.top+V.height/2;if(P.fws.has("react")){let re=Dt(l),te=re?Qt(re):{};te.onMouseEnter?.(Ut("mouseenter",l,v,k)),te.onPointerEnter?.(Ut("pointerenter",l,v,k))}else if(P.fws.has("vue")){let re=Dn(l),te=re?Qn(re):{};te.mouseenter?.(new B("mouseenter",{bubbles:!0})),te.mouseover?.(new B("mouseover",{bubbles:!0}))}let ie={bubbles:!0,cancelable:!0,composed:!0,view:k,clientX:z,clientY:Z};return[new D("pointerover",ie),new D("pointerenter",{...ie,bubbles:!1}),new B("mouseover",ie),new B("mouseenter",{...ie,bubbles:!1})].forEach(re=>l.dispatchEvent(re)),await pt(g,v),{success:!0,method:"hover-seq"}}async function _e(l,x,T=1){await Promise.resolve();for(let w=0;w<T;w++)l.hidden?await kt():await new Promise(b=>{try{x.requestAnimationFrame(()=>b())}catch{kt().then(b)}})}let Ve=l=>String(l??"").replace(/\s+/g," ").trim();function et(l){try{if("value"in l)return String(l.value??"")}catch{}return""}function tt(l){try{return typeof Vr=="function"?Vr(l):Ve(l.textContent)}catch{return""}}function sn(l,x){if(!(x.isFrameworkElement||x.delegatedInput))return!1;let T=String(l??"").length;return T>0&&T<=140}async function hn(l,x,T,w,b){let g=W(l,b),v=X(l,x),k=K(v,T);if(Ye(l,v,k),fn(l,k)||En(l,k)){let D=sn(String(w??""),g),B=await Gl(l,v,k,w,{settleFrames:v.hidden?1:2,useKeyFallback:D,keyFallbackMaxLen:140});return{success:B.success,method:B.method,details:B.details,allowFallback:!B.success}}if(l.isContentEditable===!0||g.role==="textbox"&&!("value"in l)){let D=tt(l),B=zl(l,w,v,k);await _e(v,k,v.hidden?1:2);let V=tt(l),z=!1;if(String(w??"").length>0&&V===D){z=!0;try{lo(l,v,k),co(l,v,k,!0);try{v.execCommand?.("insertText",!1,String(w??""))}catch{}$r(l,String(w??""),"insertText")}catch{}await _e(v,k,v.hidden?1:2)}let Z=tt(l),ie=Z!==D||!!String(w??"")&&Z.includes(String(w??""));return{success:ie,method:B.method,details:`${B.details};beforeLen=${D.length};afterLen=${Z.length};reverted=${V===D};fallback=${z}`,allowFallback:ie?void 0:!0}}return{success:!1,method:"type",details:"target not editable",allowFallback:!0}}async function $t(l,x,T,w,b){let g=X(l,x),v=K(g,T),k=await hn(l,g,v,w,b);if(!k.success)return k;let P=jl(l);return{success:!0,method:"type+enter",details:`${k.details};enter=${P.method}`}}async function Vt(l,x,T,w){let b=X(l,x),g=K(b,T),v=g.Event||Event;if(Ye(l,b,g),fn(l,g)||En(l,g)){let P=et(l),D=Xl(l,b,g);if(await _e(b,g,b.hidden?1:2),et(l)===P&&P.length>0){try{Qo(l,""),$r(l,"","deleteByCut")}catch{}await _e(b,g,b.hidden?1:2)}let z=et(l),Z=z.length===0||z!==P;return{success:D.success,method:D.method,details:D.details,allowFallback:!D.success}}if(l.isContentEditable===!0||W(l,w).role==="textbox"&&!("value"in l)){let P=Yl(l,b,g);return await _e(b,g,b.hidden?1:2),{success:P.success,method:P.method,details:P.details,allowFallback:!P.success}}if("value"in l){try{l.value=""}catch{}return l.dispatchEvent(new v("input",{bubbles:!0,composed:!0})),l.dispatchEvent(new v("change",{bubbles:!0,composed:!0})),{success:!0,method:"clear-generic-value"}}return{success:!1,method:"clear",details:"target not clearable",allowFallback:!0}}function xt(l,x,T){try{let w=X(l,x),b=K(w,T),g=b.FocusEvent||FocusEvent;return Ye(l,w,b),l.focus?.({preventScroll:!0}),l.dispatchEvent(new g("focus",{bubbles:!0})),l.dispatchEvent(new g("focusin",{bubbles:!0})),{success:!0,method:"focus"}}catch(w){return{success:!1,method:"focus",details:w.message,allowFallback:!0}}}function He(l,x,T,w,b){try{let g=X(l,x),v=K(g,T),k=v.Event||Event;if(!Wc(l,v))return{success:!1,method:"select",details:"target not select",allowFallback:!0};Ye(l,g,v),l.focus?.({preventScroll:!0});let P=Array.from(l.options).find(z=>z.value===w||z.text.trim()===w.trim());if(!P)return{success:!1,method:"select",details:`Option not found: ${w}`,allowFallback:!0};P.selected=!0;let D=Object.getPrototypeOf(l),B=Object.getOwnPropertyDescriptor(D,"value");if(B?.set?B.set.call(l,P.value):l.value=P.value,l.dispatchEvent(new k("input",{bubbles:!0,composed:!0})),l.dispatchEvent(new k("change",{bubbles:!0,composed:!0})),W(l,b).fws.has("react")){let z=Dt(l);if(z){let Z=Qt(z);if(Z.onChange){let ie=Ut("change",l,g,v);ie.target.value=P.value,Z.onChange(ie)}}}return{success:!0,method:"select"}}catch(g){return{success:!1,method:"select",details:g.message,allowFallback:!0}}}function Gt(l,x,T,w,b){try{let g=X(l,x),v=K(g,T),k=v.Event||Event;if(!fn(l,v))return{success:!1,method:"slider",details:"target not input",allowFallback:!0};Ye(l,g,v),l.focus?.({preventScroll:!0});let P=Object.getPrototypeOf(l),D=Object.getOwnPropertyDescriptor(P,"value");if(D?.set?D.set.call(l,String(w)):l.value=String(w),l.dispatchEvent(new k("input",{bubbles:!0,composed:!0})),l.dispatchEvent(new k("change",{bubbles:!0,composed:!0})),W(l,b).fws.has("react")){let V=Dt(l);if(V){let z=Qt(V);if(z.onChange){let Z=Ut("change",l,g,v);Z.target.value=String(w),z.onChange(Z)}}}return{success:!0,method:"slider"}}catch(g){return{success:!1,method:"slider",details:g.message,allowFallback:!0}}}function Mo(l,x,T){try{let w=l.checkValidity?.()??!0;return w||l.reportValidity?.(),{success:w,method:"check-validity",details:w?void 0:l.validationMessage}}catch(w){return{success:!1,method:"check-validity",details:w.message,allowFallback:!0}}}function zn(l,x,T,w,b){try{let g=X(l,x),v=K(g,T);if("setSelectionRange"in l){let D=l;D.focus?.();let B=D.value?.length??0;return D.setSelectionRange(w??0,b??B),{success:!0,method:"select-range"}}let k=v.getSelection();if(!k)return{success:!1,method:"select-range",allowFallback:!0};let P=g.createRange();return P.selectNodeContents(l),k.removeAllRanges(),k.addRange(P),{success:!0,method:"select-range-node"}}catch(g){return{success:!1,method:"select-range",details:g.message,allowFallback:!0}}}function Nt(l,x,T,w,b){let g=Gr((l&&X(l))??x),v=l||g,k=X(v,x),P=K(k,T),D=v===k.documentElement||v===k.body||v===g;if(w===Ke.TOP||w===Ke.BOTTOM){let B=v.scrollHeight,V=D?P.innerHeight:v.clientHeight,z=Math.max(0,B-V);return v.scrollTop=w===Ke.TOP?0:z,{success:!0,scrollTop:v.scrollTop}}return ss(v,k,P,w,b)}async function dr(l,x,T,w){let b=w.direction,g=w.amount,v=X(l,x),k=K(v,T),P=!v.hidden,D=P?"smooth":"auto";try{if(l){let V=bt(l,v,k),z=Nt(V,v,k,b,g);return z?.success?{success:!0,method:"direct-element-scroll",details:JSON.stringify(z)}:{success:!1,method:"direct-element-scroll",details:z?.error||"direct scroll failed",allowFallback:!0}}if(b===Ke.TOP||b===Ke.BOTTOM){let V=await N(k,{action:"scrollTo",direction:b,options:{behavior:D,isTabActive:P}},{doc:v,timeoutMs:v.hidden?5200:2800});return{success:!0,method:"detector-scrollTo",details:JSON.stringify(V)}}let B=await N(k,{action:"scrollBy",direction:b,options:{amount:g,behavior:D,isTabActive:P}},{doc:v,timeoutMs:v.hidden?5200:2800});return{success:!0,method:"detector-scrollBy",details:JSON.stringify(B)}}catch(B){let V=v?Nt(Gr(v),v,k,b,g):void 0;return V?.success?{success:!0,method:"direct-primary-scroll-fallback",details:JSON.stringify(V)}:{success:!1,method:"scroll-page-failed",details:B?.message||V?.error||"scroll_page failed",allowFallback:!0}}}async function nt(l,x,T,w){let b=X(l,x),g=K(b,T),v=!b.hidden,k=v?"smooth":"auto",P=au(w.position),D=mo(l,b);if(!D){let B=Pa(l,b,g,P);return{success:B.success,method:"direct-scrollElement-no-selector",details:B.error,allowFallback:!B.success}}try{let B=await N(g,{action:"scrollElement",selector:D,position:P,options:{behavior:k,isTabActive:v}},{doc:b,timeoutMs:b.hidden?5600:3e3});return{success:!0,method:"detector-scrollElement",details:JSON.stringify(B)}}catch(B){let V=Pa(l,b,g,P);return V.success?{success:!0,method:"direct-scrollElement-fallback",details:JSON.stringify(V)}:{success:!1,method:"scroll-to-element-failed",details:B?.message||V.error||"scroll_to_element failed",allowFallback:!0}}}function gt(l,x,T,w,b){try{let g=X(l,x),v=K(g,T),k=v.WheelEvent||WheelEvent;Ye(l,g,v);let P=bt(l,g,v);return P.dispatchEvent(new k("wheel",{bubbles:!0,cancelable:!0,composed:!0,view:v,deltaX:w||0,deltaY:b||0,deltaMode:k.DOM_DELTA_PIXEL})),P.scrollBy({left:w||0,top:b||0,behavior:"auto"}),{success:!0,method:"wheel"}}catch(g){return{success:!1,method:"wheel",details:g.message,allowFallback:!0}}}function bt(l,x,T){let w=X(l,x),b=K(w,T),g=w.scrollingElement||w.documentElement||w.body,v=l;for(;v&&v!==w.body&&v!==w.documentElement;){let P=b.getComputedStyle(v).overflowY;if((P==="auto"||P==="scroll"||P==="overlay")&&v.scrollHeight>v.clientHeight+5)return v;v=v.parentElement}return g}async function zt(l,x,T,w,b){try{let g=X(l,x),v=K(g,T),k=v.PointerEvent||PointerEvent,P=v.MouseEvent||MouseEvent,D=v.DragEvent||DragEvent,B=v.DataTransfer||DataTransfer;Ye(l,g,v);let V=fe(l,g,v),z=ut(V.hit,v)?V.hit:l,Z=l.getBoundingClientRect(),ie=Number.isFinite(Number(w?.distance))?Number(w.distance):160,Ee=0,re=0;switch(String(w?.direction||"").toUpperCase()){case"UP":re=-ie;break;case"DOWN":re=ie;break;case"LEFT":Ee=-ie;break;case"RIGHT":Ee=ie;break;default:Ee=Number(w?.delta_x)||0,re=Number(w?.delta_y)||0}let te=(A,q)=>({x:Math.max(2,Math.min(A,v.innerWidth-3)),y:Math.max(2,Math.min(q,v.innerHeight-3))}),ue=te(V.x,V.y),Ae=te(V.x+Ee,V.y+re),De=500+Date.now()%1e4,ge=Math.max(12,Math.min(36,Number(w?.steps)||18)),Te=(A,q)=>({bubbles:!0,cancelable:!0,composed:!0,view:v,clientX:A,clientY:q,pageX:A+(v.scrollX||0),pageY:q+(v.scrollY||0)}),ke=(A,q,j)=>({...Te(A,q),pointerId:De,pointerType:"mouse",isPrimary:!0,width:1,height:1,pressure:j?.5:0,buttons:j,button:0}),f=(A,q,j)=>({...Te(A,q),buttons:j,button:0});z.dispatchEvent(new k("pointerdown",ke(ue.x,ue.y,1))),z.dispatchEvent(new P("mousedown",f(ue.x,ue.y,1)));try{z.setPointerCapture?.(De)}catch{}let I=null;try{(l.draggable||W(l,b).sourcesByType.has("dragstart"))&&(I=new B)}catch{I=null}if(I)try{l.dispatchEvent(new D("dragstart",{bubbles:!0,cancelable:!0,clientX:ue.x,clientY:ue.y,dataTransfer:I}))}catch{}let S=null;for(let A=1;A<=ge;A++){let q=ue.x+(Ae.x-ue.x)*A/ge,j=ue.y+(Ae.y-ue.y)*A/ge,J=g.elementFromPoint(q,j)||l;if(J.dispatchEvent(new k("pointermove",ke(q,j,1))),J.dispatchEvent(new P("mousemove",f(q,j,1))),I)try{S&&S!==J&&S.dispatchEvent(new D("dragleave",{bubbles:!0,cancelable:!0,clientX:q,clientY:j,dataTransfer:I})),J.dispatchEvent(new D("dragover",{bubbles:!0,cancelable:!0,clientX:q,clientY:j,dataTransfer:I})),S=J}catch{}A%3===0&&await kt()}let R=g.elementFromPoint(Ae.x,Ae.y)||l;if(R.dispatchEvent(new k("pointerup",ke(Ae.x,Ae.y,0))),R.dispatchEvent(new P("mouseup",f(Ae.x,Ae.y,0))),I)try{l.dispatchEvent(new D("dragend",{bubbles:!0,cancelable:!0,clientX:Ae.x,clientY:Ae.y,dataTransfer:I}))}catch{}return{success:!0,method:"drag",details:`dx=${Ee};dy=${re};steps=${ge};hitOk=${V.ok}`}}catch(g){return{success:!1,method:"drag",details:g?.message||"drag failed",allowFallback:!0}}}async function an(l,x,T,w){try{let b=X(x,T),g=K(b,w),v=g.PointerEvent||PointerEvent,k=g.MouseEvent||MouseEvent,P=g.DragEvent||DragEvent,D=g.DataTransfer||DataTransfer,B=l?.source_element_id??l?.element_id,V=(B?_n(b,String(B)):null)||x;if(!V)return{success:!1,method:"drag-drop",details:"source missing",allowFallback:!0};let z=null,Z=Number(l?.target_x),ie=Number(l?.target_y);if(l?.target_element_id){if(z=_n(b,String(l.target_element_id)),!z)return{success:!1,method:"drag-drop",details:"target missing",allowFallback:!0};let R=z.getBoundingClientRect();Z=R.left+R.width/2,ie=R.top+R.height/2}if((!Number.isFinite(Z)||!Number.isFinite(ie))&&!z)return{success:!1,method:"drag-drop",details:"missing target coords",allowFallback:!0};Ye(V,b,g),z&&Ye(z,b,g);let Ee=(R,A)=>({x:Math.max(2,Math.min(R,g.innerWidth-3)),y:Math.max(2,Math.min(A,g.innerHeight-3))}),re=V.getBoundingClientRect(),te=Ee(re.left+re.width/2,re.top+re.height/2),ue=Ee(Number(Z),Number(ie)),Ae=600+Date.now()%1e4,De=Math.max(14,Math.min(42,Number(l?.steps)||22)),ge=(R,A)=>({bubbles:!0,cancelable:!0,composed:!0,view:g,clientX:R,clientY:A,pageX:R+(g.scrollX||0),pageY:A+(g.scrollY||0)}),Te=(R,A,q)=>({...ge(R,A),pointerId:Ae,pointerType:"mouse",isPrimary:!0,width:1,height:1,pressure:q?.5:0,buttons:q,button:0}),ke=(R,A,q)=>({...ge(R,A),buttons:q,button:0}),f=null;try{f=new D}catch{f=null}V.dispatchEvent(new v("pointerdown",Te(te.x,te.y,1))),V.dispatchEvent(new k("mousedown",ke(te.x,te.y,1)));try{V.setPointerCapture?.(Ae)}catch{}if(f)try{V.dispatchEvent(new P("dragstart",{bubbles:!0,cancelable:!0,clientX:te.x,clientY:te.y,dataTransfer:f}))}catch{}let I=null;for(let R=1;R<=De;R++){let A=te.x+(ue.x-te.x)*R/De,q=te.y+(ue.y-te.y)*R/De,j=b.elementFromPoint(A,q)||z||b.body;if(j.dispatchEvent(new v("pointermove",Te(A,q,1))),j.dispatchEvent(new k("mousemove",ke(A,q,1))),f)try{I&&I!==j&&I.dispatchEvent(new P("dragleave",{bubbles:!0,cancelable:!0,clientX:A,clientY:q,dataTransfer:f})),j.dispatchEvent(new P("dragenter",{bubbles:!0,cancelable:!0,clientX:A,clientY:q,dataTransfer:f})),j.dispatchEvent(new P("dragover",{bubbles:!0,cancelable:!0,clientX:A,clientY:q,dataTransfer:f})),I=j}catch{}R%3===0&&await kt()}let S=z||b.elementFromPoint(ue.x,ue.y)||b.body;if(f)try{S.dispatchEvent(new P("drop",{bubbles:!0,cancelable:!0,clientX:ue.x,clientY:ue.y,dataTransfer:f}))}catch{}if(S.dispatchEvent(new v("pointerup",Te(ue.x,ue.y,0))),S.dispatchEvent(new k("mouseup",ke(ue.x,ue.y,0))),f)try{V.dispatchEvent(new P("dragend",{bubbles:!0,cancelable:!0,clientX:ue.x,clientY:ue.y,dataTransfer:f}))}catch{}return{success:!0,method:"html5+pointer-dragdrop",details:`steps=${De};source=${String(B)}`}}catch(b){return{success:!1,method:"drag-drop",details:b?.message||"drag-drop failed",allowFallback:!0}}}async function gn(l,x,T,w){try{let b=X(l,x),g=K(b,T),v=g.PointerEvent||PointerEvent,k=g.MouseEvent||MouseEvent;Ye(l,b,g);let P=fe(l,b,g),D={x:P.x,y:P.y},B=l.getBoundingClientRect(),V=Number.isFinite(Number(w?.distance))?Number(w.distance):Math.min(Math.max(80,Math.min(B.width,B.height)),220),z=String(w?.direction||"RIGHT").toUpperCase(),Z=D.x,ie=D.y;z==="LEFT"&&(Z-=V),z==="RIGHT"&&(Z+=V),z==="UP"&&(ie-=V),z==="DOWN"&&(ie+=V);let Ee=(A,q)=>({x:Math.max(2,Math.min(A,g.innerWidth-3)),y:Math.max(2,Math.min(q,g.innerHeight-3))}),re=Ee(D.x,D.y),te=Ee(Z,ie),ue=700+Date.now()%1e4,Ae=Math.max(10,Math.min(28,Number(w?.steps)||16)),De=(A,q)=>({bubbles:!0,cancelable:!0,composed:!0,view:g,clientX:A,clientY:q,pageX:A+(g.scrollX||0),pageY:q+(g.scrollY||0)}),ge=(A,q,j)=>({...De(A,q),pointerId:ue,pointerType:"touch",isPrimary:!0,width:1,height:1,pressure:j?.5:0,buttons:j,button:0}),Te=(A,q,j)=>({...De(A,q),buttons:j,button:0}),ke=b.elementFromPoint(re.x,re.y)||l;ke.dispatchEvent(new v("pointerdown",ge(re.x,re.y,1))),ke.dispatchEvent(new k("mousedown",Te(re.x,re.y,1)));let f=g.Touch,I=g.TouchEvent,S=!!f&&!!I;if(S)try{let A=new f({identifier:ue,target:ke,clientX:re.x,clientY:re.y,pageX:re.x,pageY:re.y,screenX:re.x,screenY:re.y,radiusX:1,radiusY:1,rotationAngle:0,force:1});ke.dispatchEvent(new I("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[A],targetTouches:[A],changedTouches:[A]}))}catch{}for(let A=1;A<=Ae;A++){let q=re.x+(te.x-re.x)*A/Ae,j=re.y+(te.y-re.y)*A/Ae,J=b.elementFromPoint(q,j)||l;if(J.dispatchEvent(new v("pointermove",ge(q,j,1))),J.dispatchEvent(new k("mousemove",Te(q,j,1))),S)try{let pe=new f({identifier:ue,target:J,clientX:q,clientY:j,pageX:q,pageY:j,screenX:q,screenY:j,radiusX:1,radiusY:1,rotationAngle:0,force:1});J.dispatchEvent(new I("touchmove",{bubbles:!0,cancelable:!0,composed:!0,touches:[pe],targetTouches:[pe],changedTouches:[pe]}))}catch{}A%3===0&&await kt()}let R=b.elementFromPoint(te.x,te.y)||l;if(R.dispatchEvent(new v("pointerup",ge(te.x,te.y,0))),R.dispatchEvent(new k("mouseup",Te(te.x,te.y,0))),S)try{let A=new f({identifier:ue,target:R,clientX:te.x,clientY:te.y,pageX:te.x,pageY:te.y,screenX:te.x,screenY:te.y,radiusX:1,radiusY:1,rotationAngle:0,force:0});R.dispatchEvent(new I("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[A]}))}catch{}return{success:!0,method:"swipe",details:`dir=${z};dist=${V};steps=${Ae};hitOk=${P.ok}`}}catch(b){return{success:!1,method:"swipe",details:b?.message||"swipe failed",allowFallback:!0}}}async function Xe(l,x,T,w){try{let b=l||x.body,g=X(b,x),v=K(g,T),k=v.PointerEvent||PointerEvent,P=v.WheelEvent||WheelEvent;Ye(b,g,v);let D=Number.isFinite(Number(w?.scale))?Number(w.scale):1.2,B=b.getBoundingClientRect(),V=B.left+B.width/2,z=B.top+B.height/2,Z=24,ie=Math.max(6,Math.min(200,Z*D)),Ee=Math.max(6,Math.min(18,Number(w?.steps)||10)),re=v.Touch,te=v.TouchEvent;if(!!re&&!!te)try{let ge=(S,R)=>new re({identifier:S,target:b,clientX:R,clientY:z,pageX:R,pageY:z,screenX:R,screenY:z,radiusX:1,radiusY:1,rotationAngle:0,force:1}),Te=ge(911,V-Z),ke=ge(912,V+Z);b.dispatchEvent(new te("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[Te,ke],targetTouches:[Te,ke],changedTouches:[Te,ke]}));for(let S=1;S<=Ee;S++){let R=Z+(ie-Z)*S/Ee,A=ge(911,V-R),q=ge(912,V+R);b.dispatchEvent(new te("touchmove",{bubbles:!0,cancelable:!0,composed:!0,touches:[A,q],targetTouches:[A,q],changedTouches:[A,q]})),S%2===0&&await kt()}let f=ge(911,V-ie),I=ge(912,V+ie);b.dispatchEvent(new te("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[f,I]}))}catch{}try{let ge=(Te,ke,f)=>({bubbles:!0,cancelable:!0,composed:!0,view:v,clientX:ke,clientY:z,pointerId:Te,pointerType:"touch",isPrimary:Te===821,width:1,height:1,pressure:f?.5:0,buttons:f,button:0});b.dispatchEvent(new k("pointerdown",ge(821,V-Z,1))),b.dispatchEvent(new k("pointerdown",ge(822,V+Z,1)));for(let Te=1;Te<=Ee;Te++){let ke=Z+(ie-Z)*Te/Ee;b.dispatchEvent(new k("pointermove",ge(821,V-ke,1))),b.dispatchEvent(new k("pointermove",ge(822,V+ke,1))),Te%2===0&&await kt()}b.dispatchEvent(new k("pointerup",ge(821,V-ie,0))),b.dispatchEvent(new k("pointerup",ge(822,V+ie,0)))}catch{}try{let Ae=D>=1?-120:120;b.dispatchEvent(new P("wheel",{bubbles:!0,cancelable:!0,composed:!0,view:v,clientX:V,clientY:z,ctrlKey:!0,deltaY:Ae,deltaMode:P.DOM_DELTA_PIXEL}))}catch{}return{success:!0,method:"pinch-zoom",details:`scale=${D};steps=${Ee}`}}catch(b){return{success:!1,method:"pinch-zoom",details:b?.message||"pinch-zoom failed",allowFallback:!0}}}async function jn(l,x,T,w=800){try{let b=X(l,x),g=K(b,T),v=g.PointerEvent||PointerEvent,k=g.MouseEvent||MouseEvent,P=g.FocusEvent||FocusEvent;Ye(l,b,g);let D=fe(l,b,g),B=l;!D.ok&&ut(D.hit,g)?B=D.hit.closest?.('a,button,input,select,textarea,summary,[role="button"],[role="link"],[onclick]')||D.hit:ut(D.hit,g)&&(B=D.hit);let V=Ln(B,b,g),z=D.x,Z=D.y,ie=1+Date.now()%1e4,Ee={bubbles:!0,cancelable:!0,composed:!0,view:g,clientX:z,clientY:Z,pageX:z+(g.scrollX||0),pageY:Z+(g.scrollY||0),screenX:z+(g.screenX||0),screenY:Z+(g.screenY||0)},re={...Ee,pointerId:ie,pointerType:"touch",isPrimary:!0,width:1,height:1,pressure:0,buttons:0,button:0};try{B.dispatchEvent(new v("pointerover",re)),B.dispatchEvent(new v("pointerenter",{...re,bubbles:!1}))}catch{}try{B.dispatchEvent(new k("mouseover",Ee)),B.dispatchEvent(new k("mouseenter",{...Ee,bubbles:!1}))}catch{}try{B.focus?.({preventScroll:!0}),B.dispatchEvent(new P("focus",{bubbles:!0,composed:!0})),B.dispatchEvent(new P("focusin",{bubbles:!0,composed:!0}))}catch{}try{B.dispatchEvent(new v("pointerdown",{...re,buttons:1,pressure:.5}))}catch{}try{B.dispatchEvent(new k("mousedown",{...Ee,buttons:1,button:0}))}catch{}try{let ge=g.Touch,Te=g.TouchEvent;if(typeof ge<"u"&&typeof Te<"u"){let ke=new ge({identifier:ie,target:B,clientX:z,clientY:Z,pageX:z+(g.scrollX||0),pageY:Z+(g.scrollY||0),screenX:z+(g.screenX||0),screenY:Z+(g.screenY||0),radiusX:1,radiusY:1,rotationAngle:0,force:1});B.dispatchEvent(new Te("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[ke],targetTouches:[ke],changedTouches:[ke]}))}}catch{}let te=Number(w),ue=Number.isFinite(te)&&te>0?te:800,Ae=b.hidden?Math.max(ue,1200):ue;await pt(Ae,b);try{B.dispatchEvent(new k("contextmenu",{...Ee,button:2,buttons:2}))}catch{}try{B.dispatchEvent(new v("pointerup",{...re,buttons:0,pressure:0}))}catch{}try{B.dispatchEvent(new k("mouseup",{...Ee,buttons:0,button:0}))}catch{}try{let ge=g.Touch,Te=g.TouchEvent;if(typeof ge<"u"&&typeof Te<"u"){let ke=new ge({identifier:ie,target:B,clientX:z,clientY:Z,pageX:z+(g.scrollX||0),pageY:Z+(g.scrollY||0),screenX:z+(g.screenX||0),screenY:Z+(g.screenY||0),radiusX:1,radiusY:1,rotationAngle:0,force:0});B.dispatchEvent(new Te("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[ke]}))}}catch{}let De=await It(B,b,g,V);return{success:!0,method:"long-press",details:`holdMs=${Ae};verified=${De};hitOk=${D.ok};target=${B.tagName.toLowerCase()}`}}catch(b){return{success:!1,method:"long-press",details:b?.message||"long-press failed",allowFallback:!0}}}function jt(l,x,T,w,b){try{let g=X(T,w),k=K(g,b).KeyboardEvent||KeyboardEvent,P=T||g.activeElement||g.body||g.documentElement;P.focus?.();let D={key:l,code:to(l),bubbles:!0,cancelable:!0,ctrlKey:x?.includes("CTRL"),altKey:x?.includes("ALT"),shiftKey:x?.includes("SHIFT"),metaKey:x?.includes("META")},B=P.dispatchEvent(new k("keydown",D)),V=P.dispatchEvent(new k("keypress",D)),z=P.dispatchEvent(new k("keyup",D));if(l==="Enter"&&!!(B&&V&&z)){let ie=P.form||P.closest?.("form");ie?.requestSubmit?ie.requestSubmit():ie?.submit?.()}return{success:!0,method:"press-key"}}catch(g){return{success:!1,method:"press-key",details:g.message,allowFallback:!0}}}async function Xn(l,x,T){try{let w=l.innerText||l.value||"";if(!w)return{success:!1,method:"copy",details:"nothing to copy",allowFallback:!0};let b=X(l,x),g=K(b,T);if(g.navigator?.clipboard?.writeText)return await g.navigator.clipboard.writeText(w),{success:!0,method:"clipboard-copy"};let v=b.createRange();v.selectNodeContents(l);let k=g.getSelection?.()||(b.defaultView||window).getSelection?.();k?.removeAllRanges(),k?.addRange(v);let P=b.execCommand?.("copy")??!1;return k?.removeAllRanges(),{success:!!P,method:"execCommand-copy",allowFallback:!P}}catch(w){return{success:!1,method:"clipboard-copy",details:w.message,allowFallback:!0}}}async function Xt(l,x,T,w){try{l.focus?.();let b=X(l,x),g=K(b,T);if(g.navigator?.clipboard?.readText){let k=await g.navigator.clipboard.readText();if(k)return await hn(l,b,g,k,w)}return b.execCommand?.("paste")??!1?{success:!0,method:"execCommand-paste"}:{success:!1,method:"paste",details:"clipboard empty or denied",allowFallback:!0}}catch(b){return{success:!1,method:"paste",details:b.message,allowFallback:!0}}}function Yn(l){return`${(l/1024).toFixed(1)}KB`}function fr(l,x){if(l instanceof x.defaultView.HTMLInputElement){let v=l;if((v.type||"").toLowerCase()==="file")return v}let T=l.closest?.("label"),w=T?.htmlFor||l.htmlFor||"";if(w){let v=x.getElementById(w);if(v&&(v.type||"").toLowerCase()==="file")return v}if(T){let v=T.querySelector?.('input[type="file"]');if(v)return v}let b=l.closest?.("form");if(b){let v=b.querySelector?.('input[type="file"]');if(v)return v}let g=l.closest?.("div,section,main,article")||l.parentElement;if(g){let v=g.querySelector?.('input[type="file"]');if(v)return v}return null}function bn(l,x,T){try{let w=T.HTMLInputElement?.prototype,b=w?Object.getOwnPropertyDescriptor(w,"files")?.set:void 0;if(!b){let g=Object.getPrototypeOf(l);for(;g&&!b;)b=Object.getOwnPropertyDescriptor(g,"files")?.set,g=Object.getPrototypeOf(g)}return b?(b.call(l,x),!0):(l.files=x,!0)}catch{try{return l.files=x,!0}catch{return!1}}}async function yn(l,x,T,w,b,g){try{let{file_url:v,element_id:k,file_name:P}=l,D=null;if(b&&(D=fr(b,x)),!D&&k!==void 0&&(D=x.querySelector(`input[type="file"][${Mt}*="[id=${k}]"]`)),!D){let R=x.querySelectorAll('input[type="file"]');for(let A of R){if(A.disabled)continue;let q=A.getBoundingClientRect();if(q.width>0&&q.height>0){D=A;break}}}if(!D)return{success:!1,method:"upload-file",details:"No file input found",allowFallback:!0};if(D.disabled)return{success:!1,method:"upload-file",details:"File input is disabled",allowFallback:!0};let B=X(D,x),V=K(B,T);if(!(w?.kind==="upload_file"&&typeof w.byteLength=="number"&&w.byteLength>=0&&typeof w.mimeType=="string"&&(typeof w.inlineB64=="string"||typeof w.token=="string")))return{success:!1,method:"upload-file",details:"Missing upload payload (need inlineB64 or token)",allowFallback:!0};let Z=Number(w.byteLength),ie=(w.mimeType||"application/octet-stream").split(";")[0].trim()||"application/octet-stream",Ee;if(w.inlineB64&&typeof w.inlineB64=="string"){let R=ou(w.inlineB64);if(R.byteLength!==Z)return{success:!1,method:"upload-file",details:`Inline bytes length mismatch: got=${R.byteLength} expected=${Z}`,allowFallback:!0};Ee=R.buffer}else{let R=String(w.token);Ee=await m(V,R,Z,9e4)}let re=V.Blob||Blob,te=new re([Ee],{type:ie}),ue=P||w?.fileName;!ue&&v&&typeof v=="string"&&(ue=Da(v,V)),ue=ru(ue||"upload");let Ae=V.File||File,De=new Ae([te],ue,{type:ie,lastModified:Date.now()}),ge=V.Event||Event,Te=V.DataTransfer||DataTransfer;if(!Te)return{success:!1,method:"upload-file",details:"DataTransfer unavailable in this context",allowFallback:!0};let ke=new Te;if(ke.items.add(De),!bn(D,ke.files,V))return{success:!1,method:"upload-file",details:"Failed to set input.files",allowFallback:!0};D.dispatchEvent(new ge("input",{bubbles:!0,composed:!0,cancelable:!0})),D.dispatchEvent(new ge("change",{bubbles:!0,composed:!0,cancelable:!0}));let I=Dt(D);if(I){let R=Qt(I);if(R.onChange){let A=Ut("change",D,B,V);A.target.files=ke.files,R.onChange(A)}}let S=Dn(D);if(S){let R=Qn(S);if(R.change){let A=new ge("change",{bubbles:!0});A.target=D,A.target.files=ke.files,R.change(A)}}try{let R=V.jQuery||V.$;R&&typeof R=="function"&&R(D).triggerHandler?.("change")}catch{}return D.focus?.({preventScroll:!0}),await _e(B,V,2),{success:!0,method:"upload-file",details:`Uploaded ${ue} (${Yn(te.size)}) [token]`}}catch(v){return{success:!1,method:"upload-file",details:v?.message||"Upload failed",allowFallback:!0}}}async function Yt(l,x,T){let w=Array.isArray(l.path)?l.path:[];if(!w.length)return{success:!1,method:"dispatch_pointer_path",details:"Empty path",allowFallback:!0};let b=T.PointerEvent||PointerEvent,g=T.MouseEvent||MouseEvent,v=16;for(let k=0;k<w.length;k++){let P=w[k],D=Number(P.x)||0,B=Number(P.y)||0,V=Number(P.pressure)||(k===0||k===w.length-1?0:.5),z=x.elementFromPoint(D,B)||x.documentElement,Z={bubbles:!0,cancelable:!0,clientX:D,clientY:B,screenX:D,screenY:B,view:T};if(k===0?(z.dispatchEvent(new b("pointerdown",{...Z,pressure:V,pointerId:1,pointerType:"mouse"})),z.dispatchEvent(new g("mousedown",{...Z,button:0,buttons:1}))):(z.dispatchEvent(new b("pointermove",{...Z,pressure:V,pointerId:1,pointerType:"mouse"})),z.dispatchEvent(new g("mousemove",{...Z,button:0,buttons:1}))),k===w.length-1&&(z.dispatchEvent(new b("pointerup",{...Z,pressure:0,pointerId:1,pointerType:"mouse"})),z.dispatchEvent(new g("mouseup",{...Z,button:0,buttons:0}))),k<w.length-1){let ie=Number(P.timestamp)||0,Ee=Number(w[k+1].timestamp)||0,re=ie&&Ee?Math.max(0,Math.min(Ee-ie,1e3)):v;re>0&&await pt(re,x)}}return{success:!0,method:"dispatch_pointer_path",details:`Dispatched ${w.length} point(s)`}}function Mn(l,x,T){let w=X(l,x),b=K(w,T),g=b.MouseEvent||MouseEvent;Ye(l,w,b),ae(l,w,b),ae(l,w,b);let v=l.getBoundingClientRect();return l.dispatchEvent(new g("dblclick",{bubbles:!0,cancelable:!0,clientX:v.left+v.width/2,clientY:v.top+v.height/2,detail:2,view:b})),{success:!0,method:"dblclick"}}function ve(l,x,T){let w=X(l,x),b=K(w,T),g=b.PointerEvent||PointerEvent,v=b.MouseEvent||MouseEvent;Ye(l,w,b);let k=l.getBoundingClientRect(),P=k.left+k.width/2,D=k.top+k.height/2,B={bubbles:!0,cancelable:!0,composed:!0,view:b,clientX:P,clientY:D,button:2,buttons:2};return l.dispatchEvent(new g("pointerdown",B)),l.dispatchEvent(new v("mousedown",B)),l.dispatchEvent(new g("pointerup",{...B,buttons:0})),l.dispatchEvent(new v("mouseup",{...B,buttons:0})),l.dispatchEvent(new v("contextmenu",B)),{success:!0,method:"contextmenu"}}function Ln(l,x,T){let w=X(l,x),b=K(w,T),g=l,v=l.getBoundingClientRect();return{href:String(b.location.href),hash:String(b.location.hash),ariaExpanded:l.getAttribute("aria-expanded"),ariaPressed:l.getAttribute("aria-pressed"),ariaDisabled:l.getAttribute("aria-disabled"),disabled:!!g.disabled,open:typeof g.open<"u"?g.open:void 0,checked:typeof g.checked<"u"?g.checked:void 0,value:typeof g.value<"u"?g.value:void 0,active:ns(w),rect:{w:v.width,h:v.height}}}function qe(l,x){let T=Math.abs(l.rect.w-x.rect.w)>2||Math.abs(l.rect.h-x.rect.h)>2;return l.href!==x.href||l.hash!==x.hash||l.ariaExpanded!==x.ariaExpanded||l.ariaPressed!==x.ariaPressed||l.ariaDisabled!==x.ariaDisabled||l.disabled!==x.disabled||l.open!==x.open||l.checked!==x.checked||l.value!==x.value||l.active!==x.active||T}async function It(l,x,T,w){await Promise.resolve();let b=X(l,x),g=K(b,T);x.hidden||await kt();let v=Ln(l,b,g);return qe(w,v)}function pr(l,x,T){l.focus?.({preventScroll:!0});let w=X(l,x),b=K(w,T),k=l.getAttribute("role")==="button"||Vc(l,b)||l.tagName.toLowerCase()==="button"?[" ","Enter"]:["Enter"],P=b.KeyboardEvent||KeyboardEvent;for(let D of k){let B={key:D,code:D===" "?"Space":"Enter",bubbles:!0,cancelable:!0,composed:!0};l.dispatchEvent(new P("keydown",B)),l.dispatchEvent(new P("keypress",B)),l.dispatchEvent(new P("keyup",B))}return{success:!0,method:"keyboard-activate"}}async function Lo(l,x,T,...w){let b=null;for(let g of w){let v=X(l,x),k=K(v,T),P=Ln(l,v,k),D=g();if(!D||!D.success)continue;if(await It(l,v,k,P))return{...D,details:(D.details?D.details+";":"")+"verified=true"};b=D}return b?{...b,details:(b.details?b.details+";":"")+"verified=false"}:{success:!1,method:"all-strategies-unverified",details:"no verified effect",allowFallback:!0}}function Mr(...l){for(let x of l)try{let T=x();if(T&&T.success)return T}catch{}return{success:!1,method:"all-strategies-failed",allowFallback:!0}}function Ye(l,x,T){let w=X(l,x),b=K(w,T),g=l.getBoundingClientRect();g.top>=0&&g.left>=0&&g.bottom<=b.innerHeight&&g.right<=b.innerWidth||(l.scrollIntoView({behavior:"auto",block:"center",inline:"center"}),l.offsetHeight)}function Lr(l,x,T,w){let b=X(l,x),v=K(b,T).KeyboardEvent||KeyboardEvent;for(let k of w){let P=String(k??""),D="";/^[a-z]$/i.test(P)?D=`Key${P.toUpperCase()}`:/^[0-9]$/.test(P)?D=`Digit${P}`:P===" "&&(D="Space");let B=P.length===1?P.charCodeAt(0):0,V={key:P,code:D,bubbles:!0,cancelable:!0,composed:!0,keyCode:B,which:B};l.dispatchEvent(new v("keydown",V)),l.dispatchEvent(new v("keypress",V)),l.dispatchEvent(new v("keyup",V))}}function Do(l,x,T){let w=X(l,x),g=K(w,T).KeyboardEvent||KeyboardEvent,v={key:"Enter",code:"Enter",keyCode:13,which:13,bubbles:!0,cancelable:!0,composed:!0},k=l.dispatchEvent(new g("keydown",v)),P=l.dispatchEvent(new g("keypress",v)),D=l.dispatchEvent(new g("keyup",v));if(!!(k&&P&&D)){let V=l.form||l.closest?.("form");V?.requestSubmit?.()??V?.submit?.()}}function to(l){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"}[l]||`Key${l.toUpperCase()}`}let Kt=new MessageChannel,Kn=[];Kt.port1.onmessage=()=>{let l=Kn.shift();l&&l()};function kt(){return new Promise(l=>{Kn.push(l),Kt.port2.postMessage(0)})}function Dt(l){let x=w=>{if(!w)return null;let b=Object.keys(w);for(let g of b)if(g.startsWith("__reactFiber")||g.startsWith("__reactInternalInstance")||g.includes("reactFiber")||g.includes("reactProps")||g.includes("reactEventHandlers")||/^__r\d+/.test(g))return w[g];return null},T=l;for(let w=0;w<4&&T;w++){let b=x(T);if(b)return b;T=T.parentElement}return null}function Qt(l){let x={},T=l,w=0;for(;T&&w++<10;){let b=[T.memoizedProps,T.pendingProps,T.stateNode?.props,T._memoizedProps,T._pendingProps,T.alternate?.memoizedProps].filter(Boolean);for(let g of b)if(!(!g||typeof g!="object"))for(let v in g)v.startsWith("on")&&typeof g[v]=="function"&&(x[v]=g[v]);if(Object.keys(x).length)break;T=T.return||T.alternate}return x}function cn(l,x){let T=l;for(;T;){if(T._reactRootContainer||T.__reactContainer||T.hasAttribute("data-reactroot")||T.hasAttribute("data-react-root")||["root","app","__next"].includes(T.id))return T;T=T.parentElement}return X(l,x).querySelector("#root,#app,#__next,[data-reactroot],[data-react-root]")}function Ut(l,x,T,w){let b=X(x,T),g=K(b,w),v=g.MouseEvent||MouseEvent,k=x.getBoundingClientRect(),P=new v(l,{bubbles:!0,cancelable:!0,view:g,clientX:k.left+k.width/2,clientY:k.top+k.height/2});return{type:l,target:x,currentTarget:x,bubbles:!0,cancelable:!0,nativeEvent:P,isTrusted:!0,preventDefault(){P.preventDefault()},stopPropagation(){P.stopPropagation()}}}function Dn(l){let x=l;if(x.__vue__)return x.__vue__;if(x.__vueParentComponent)return x.__vueParentComponent;if(x._vnode)return x._vnode;let T=l.parentElement;for(let w=0;w<3&&T;w++){let b=T;if(b.__vue__||b.__vueParentComponent||b._vnode)return b.__vue__||b.__vueParentComponent||b._vnode;T=T.parentElement}return null}function Qn(l){let x={};if(l?.$listeners&&Object.assign(x,l.$listeners),l?._events)for(let T in l._events){let w=l._events[T];x[T]=Array.isArray(w)?w[0]:w}if(l?.props)for(let T in l.props)T.startsWith("on")&&typeof l.props[T]=="function"&&(x[T.substring(2).toLowerCase()]=l.props[T]);if(l?.vnode?.props)for(let T in l.vnode.props)T.startsWith("on")&&typeof l.vnode.props[T]=="function"&&(x[T.substring(2).toLowerCase()]=l.vnode.props[T]);return x}})();function uu(){let e=window,t=e.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__";e[t]?.actions?.execute}async function du(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 Jo(e,t,n={}){let{rootNodes:r,semanticNodes:o}=Ia(e,{includeFrameContents:n.includeFrames??!0,clearIframes:n.includeFrames??!0,frameContextLabel:n.frameContextLabel??null,signalProvider:t.signalProvider,disableDomAnnotations:n.disableDomAnnotations??!0}),i={};for(let s of Object.keys(o)){let c=Number(s);if(!Number.isFinite(c))continue;let a=jo(c);a&&(i[c]=t.getFrameworkMetadata(a))}return{rootNodes:r,semanticNodes:o,elementMeta:i}}(()=>{let e="__rtrvr_scroll_detector",t="__RTRVR_SCROLL_API__",n="__RTRVR_INTERNAL__";if(window[e])return;class r{constructor(d=document,h=window){$(this,"doc");$(this,"win");$(this,"viewport");$(this,"lastDetectedPrimary",null);$(this,"detectionCache",new Map);$(this,"lastDetectionTime",0);$(this,"CACHE_TTL",5e3);this.doc=d,this.win=h,this.viewport={width:h.innerWidth,height:h.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 h=this.detectPrimaryScrollable();if(!h)return null;let{target:E,isRoot:m}=this.getScrollContext(h.element),y=E.scrollHeight,_=Pn(),N=m&&_?_.innerHeight:E.clientHeight,H=Math.max(0,y-N),C=E.scrollTop;return{selector:h.selector,score:h.score,type:h.type,metrics:{scrollTop:C,scrollHeight:y,clientHeight:N,isAtTop:C<=5,isAtBottom:C>=H-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((y,_)=>_.score-y.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 y=this.buildFeatures(m),_=X(m,this.doc),N={element:m,selector:mo(m,_),score:.5,features:y,type:"document"};return this.detectionCache.clear(),this.detectionCache.set(N.selector,N),this.lastDetectionTime=Date.now(),this.lastDetectedPrimary=m,N}let h=this.scoreCandidates(d);if(h.length===0)return null;this.detectionCache.clear();for(let m of h)this.detectionCache.set(m.selector,m);this.lastDetectionTime=Date.now();let E=h[0];return E&&(this.lastDetectedPrimary=E.element),E||null}collectAllElementsDeep(d,h=15e4){let E=[],m=[],y=d.body||d.documentElement;y&&m.push(y);let _=0,N=H=>{try{let C=this.win.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",W=this.win[C]?.shadow?.getRoot;if(typeof W=="function"){let Y=W(H);if(Y)return Y}}catch{}try{return H.shadowRoot||null}catch{return null}};for(;m.length&&!(++_>h);){let H=m.pop();if(en(H)){let W=H.children;for(let Y=W.length-1;Y>=0;Y--)m.push(W[Y]);continue}let C=H,L=de(C);ut(C,L)&&E.push(C);try{let W=N(C);W&&m.push(W)}catch{}for(let W=C.lastElementChild;W;W=W.previousElementSibling)m.push(W)}return E}collectScrollableCandidates(){let d=[],h=new WeakSet,E=[this.doc.scrollingElement,this.doc.documentElement,this.doc.body];for(let y of E){if(!y||h.has(y))continue;let _=this.isScrollable(y);(_.vertical||_.horizontal)&&(d.push(y),h.add(y))}let m=this.collectAllElementsDeep(this.doc);for(let y of Array.from(m)){if(h.has(y))continue;let _=y.getBoundingClientRect(),N=this.win.getComputedStyle(y);if(!this.isElementRendered(y,_,N)||!this.isScrollable(y).vertical)continue;let C=40,L=this.viewport.width*.15;if(_.height<C||_.width<L){let W=(y.className||"").toLowerCase().includes("scroll"),Y=N.overflowY==="auto"||N.overflowY==="scroll"||N.overflow==="auto"||N.overflow==="scroll";if(!W&&!Y)continue}d.push(y),h.add(y)}return d}isElementRendered(d,h,E){if(E.display==="none"||E.visibility==="hidden")return!1;let m=parseFloat(E.opacity||"1");return!(!Number.isNaN(m)&&m<.01||h.width<=1||h.height<=1)}isScrollable(d){let h=this.win.getComputedStyle(d),E=h.overflowY,m=h.overflowX,y=this.doc.scrollingElement,_=d===this.doc.documentElement||d===this.doc.body||!!y&&d===y,N=d.scrollHeight,H=d.clientHeight,C=d.scrollWidth,L=d.clientWidth;if(_){let me=this.doc.documentElement,Ie=this.doc.body;N=Math.max(me?me.scrollHeight:0,Ie?Ie.scrollHeight:0),H=this.win.innerHeight}let W=N-H>8,Y=C-L>8,ae=E==="auto"||E==="scroll"||E==="overlay",ce=m==="auto"||m==="scroll"||m==="overlay";return{vertical:_?W:W&&ae,horizontal:_?Y:Y&&ce,byOverflow:ae||ce}}calculateVisibleIntersection(d){let h=Math.max(0,d.left),E=Math.max(0,d.top),m=Math.min(this.viewport.width,d.right),y=Math.min(this.viewport.height,d.bottom),_=Math.max(0,m-h),N=Math.max(0,y-E);return{width:_,height:N,area:_*N}}analyzeTextContent(d,h=2e3){let E=0,m=0,y=d.ownerDocument||this.doc,N=(y.defaultView||this.win).NodeFilter||NodeFilter,H=y.createTreeWalker(d,N.SHOW_ELEMENT|N.SHOW_TEXT,null),C=0,L=H.currentNode,W=[];for(;L&&C<h;){if(L.nodeType===Node.TEXT_NODE){let oe=(L.textContent||"").replace(/\s+/g,"").length;if(oe>0){E+=oe;let ye=L.parentElement;ye&&ye.closest("a")&&(m+=oe)}}else L.nodeType===Node.ELEMENT_NODE&&W.push(L);C++,L=H.nextNode()}let Y=W.length||1,ae=E/Y,ce=E>0?m/E:0;return{textChars:E,linkChars:m,textDensity:ae,linkDensity:ce}}calculateRepetitionScore(d){let h=Array.from(d.children);if(h.length<3)return 0;let E=h.slice(0,50),m=new Map,y=new Map,_=new Map;for(let fe of E){let oe=de(fe);if(!ut(fe,oe))continue;let ye=fe.getBoundingClientRect();if(ye.height<5||ye.width<this.viewport.width*.1)continue;let me=Math.round(ye.height/10)*10,Ie=Math.round(ye.width/10)*10;m.set(me,(m.get(me)||0)+1),y.set(Ie,(y.get(Ie)||0)+1);let Re=(fe.className||fe.tagName).toString();_.set(Re,(_.get(Re)||0)+1)}let N=E.length||1,H=Math.max(0,...m.values()),C=Math.max(0,...y.values()),L=Math.max(0,..._.values()),W=H/N,Y=C/N,ae=L/N,ce=.4*W+.3*Y+.3*ae;return Math.min(1,Math.max(0,ce))}calculateSemanticScore(d){let h=0,E=null,m=!1,y=(d.getAttribute("role")||"").toLowerCase(),_=d.tagName.toLowerCase(),N=(d.id||"").toLowerCase(),H=(d.className||"").toLowerCase(),C=`${y} ${_} ${N} ${H}`;return(_==="main"||y==="main")&&(h+=1.2,E="article"),_==="article"&&(h+=1,E=E||"article"),(y==="feed"||C.includes("feed"))&&(h+=1,E="feed"),(y==="log"||C.includes("chat")||C.includes("messages"))&&(h+=1,E="chat"),C.includes("content")&&(h+=.5),(C.includes("results")||C.includes("list"))&&(h+=.4),(C.includes("job")||C.includes("jobs"))&&(h+=.4),(_==="nav"||y==="navigation"||C.includes("sidebar"))&&(h-=1,m=!0),(_==="aside"||y==="complementary")&&(h-=.7,m=!0),(_==="footer"||y==="contentinfo"||C.includes("footer"))&&(h-=.8,m=!0),C.includes("header")&&(h-=.6),h=Math.max(-1,Math.min(1,h)),{semanticScore:h,typeHint:E,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(E=>E!==null)}buildFeatures(d){let h=d.getBoundingClientRect(),E=this.win.getComputedStyle(d),m=this.calculateVisibleIntersection(h),y=this.viewport.width*this.viewport.height||1,_=m.area/y,N=this.viewport.width>0?m.width/this.viewport.width:0,H=h.top+h.height/2,C=this.viewport.height/2||1,L=Math.min(1,Math.abs(H-C)/C),W=this.isScrollable(d),Y=this.doc.scrollingElement,ae=d===this.doc.documentElement||d===this.doc.body||!!Y&&d===Y,ce=d.scrollHeight,fe=d.clientHeight;if(ae){let tt=this.doc.documentElement,sn=this.doc.body;ce=Math.max(tt?tt.scrollHeight:0,sn?sn.scrollHeight:0),fe=this.win.innerHeight}let oe=Math.max(0,ce-fe),ye=oe*m.width,me=this.analyzeTextContent(d),Ie=this.calculateRepetitionScore(d),Re=this.calculateSemanticScore(d),Ze=d.contains(this.doc.activeElement),_e=this.detectScrollListeners(d),Ve=parseInt(E.zIndex||"0",10),et=Number.isFinite(Ve)?Ve:0;return{geometry:{viewportCoverage:_,widthProminence:N,centerDistance:L,scrollCapacity:oe,scrollSurface:ye,zIndex:et},content:{textDensity:me.textDensity,linkDensity:me.linkDensity,repetitionScore:Ie,semanticScore:Re.semanticScore},interaction:{hasScrollListeners:_e,hasFocus:Ze,recentActivity:Ze?1:0}}}inferElementType(d,h,E,m){if(E)return E;let y=(d.getAttribute("role")||"").toLowerCase(),_=(d.className||"").toLowerCase(),N=d.tagName.toLowerCase(),H=h.geometry,C=h.content;if(y==="log"||_.includes("chat")||_.includes("messages"))return"chat";let L=this.win.getComputedStyle(d);if((L.position==="fixed"||L.position==="absolute")&&H.zIndex>100&&H.viewportCoverage>.2&&H.centerDistance<.4)return"modal";if(y==="feed"||C.repetitionScore>.3&&H.scrollCapacity>400&&H.widthProminence>=.25)return"feed";if(N==="article"||C.textDensity>40&&C.linkDensity<.4&&H.widthProminence>.4)return"article";if(m||H.widthProminence<.3&&C.linkDensity>.3)return"sidebar";let Y=this.doc.scrollingElement;return d===this.doc.documentElement||d===this.doc.body||Y&&d===Y?"document":"unknown"}scoreCandidates(d){let h=[],E=[],m=[],y=[],_=[],N=[];for(let ae of d){let ce=this.buildFeatures(ae),fe=ce.content.semanticScore,oe=this.calculateSemanticScore(ae),ye=this.inferElementType(ae,ce,oe.typeHint,oe.navLike);N.push({element:ae,features:{geometry:{...ce.geometry},content:{...ce.content,semanticScore:oe.semanticScore},interaction:ce.interaction},type:ye,navLike:oe.navLike,semanticScore:oe.semanticScore}),E.push(ce.geometry.scrollSurface),m.push(ce.content.textDensity),y.push(Math.abs(oe.semanticScore)),_.push(ce.content.repetitionScore)}let H=Math.max(0,...E),C=Math.max(0,...m),L=Math.max(0,...y),W=Math.max(0,..._),Y=-1/0;for(let ae of N){let{element:ce,features:fe,type:oe,navLike:ye,semanticScore:me}=ae,Ie=fe.geometry,Re=fe.content,Ze=fe.interaction,_e=H>0?Ie.scrollSurface/H:0,Ve=C>0?Re.textDensity/C:0,et=L>0?(me/L+1)/2:.5,tt=oe==="feed"||Re.repetitionScore>.3&&Ie.scrollCapacity>400,sn=Re.linkDensity>.5?(Re.linkDensity-.5)/.5:0,hn=tt?0:sn,$t=(tt?1:.5)*Re.repetitionScore*Math.min(1,Ie.scrollCapacity/4e3),xt={feed:.2,chat:.2,article:.08,modal:.08,document:.05,sidebar:-.12,unknown:0}[oe]||0,He=0;He+=Ie.viewportCoverage*.18,He+=Ie.widthProminence*.15,He+=(1-Ie.centerDistance)*.07,He+=_e*.22,He+=$t*.18,He+=Ve*.08,He+=(W>0?Re.repetitionScore/W:0)*.05,He+=et*.07,He-=hn*.05,Ze.hasFocus&&(He+=.05),Ze.hasScrollListeners&&(He+=.05),He+=xt,ye&&(He-=.05);let Gt=Math.max(0,Math.min(1,He));Gt>Y&&(Y=Gt),h.push({element:ce,selector:mo(ce,X(ce)),score:Gt,features:fe,type:oe})}if(h.sort((ae,ce)=>ce.score-ae.score),h.length>=2){let ae=h[0],ce=h[1];Math.abs(ae.score-ce.score)<.08&&ae.type==="article"&&ce.type==="feed"&&(h[0]=ce,h[1]=ae)}return h}getScrollContext(d){let h=document.scrollingElement;return d===document.documentElement||d===document.body||!!h&&d===h?{target:h||document.documentElement||document.body,isRoot:!0}:{target:d,isRoot:!1}}async scrollToDirection(d,h){let E=this.getValidPrimary()||this.detectPrimaryScrollable()?.element;if(!E)return{success:!1,error:"No scrollable element found"};let{target:m,isRoot:y}=this.getScrollContext(E),_=X(m),N=K(_),H=h?.isTabActive??!_.hidden,C=h?.behavior,L=H&&C==="smooth",W=y?Math.max(_.documentElement?_.documentElement.scrollHeight:0,_.body?_.body.scrollHeight:0):m.scrollHeight,Y=y?N.innerHeight:m.clientHeight,ae=Math.max(0,W-Y),ce=()=>y?N.scrollY:m.scrollTop,fe=oe=>{if(L)try{y?N.scrollTo({top:oe,behavior:"smooth"}):m.scrollTo({top:oe,behavior:"smooth"})}catch{y?(_.scrollingElement||_.documentElement||_.body).scrollTop=oe:m.scrollTop=oe}else if(y){let ye=_.scrollingElement||_.documentElement||_.body;ye.scrollTop=oe}else m.scrollTop=oe};switch(d){case Ke.TOP:return fe(0),{success:!0,scrollTop:0,isAtTop:!0};case Ke.BOTTOM:return fe(ae),{success:!0,scrollTop:ae,isAtBottom:!0};default:return{success:!1,error:`Unknown direction: ${d}`}}}async scrollByAmount(d,h){let E=this.getValidPrimary()||this.detectPrimaryScrollable()?.element;if(!E)return{success:!1,error:"No scrollable element found"};let{target:m,isRoot:y}=this.getScrollContext(E),_=h?.isTabActive??!document.hidden,N=h?.behavior,H=_&&N==="smooth",C=Pn(),L=y&&C?C.innerHeight:m.clientHeight,W=y&&C?C.innerWidth:m.clientWidth,Y=h?.amount??L*.8,ae=y?Math.max(document.documentElement?document.documentElement.scrollHeight:0,document.body?document.body.scrollHeight:0):m.scrollHeight,ce=y&&C?C.innerHeight:m.clientHeight,fe=Math.max(0,ae-ce),oe=me=>{if(H)try{y?C?.scrollTo({top:me,behavior:"smooth"}):m.scrollTo({top:me,behavior:"smooth"})}catch{let Ie=document.scrollingElement||document.documentElement||document.body;Ie.scrollTop=me}else{let Ie=y?document.scrollingElement||document.documentElement||document.body:m;Ie.scrollTop=me}},ye=me=>{if(H)try{m.scrollBy({left:me,behavior:"smooth"})}catch{m.scrollLeft+=me}else m.scrollLeft+=me};switch(d){case Ke.DOWN:{let Ie=(y&&C?C.scrollY:m.scrollTop)+Y;oe(Ie);let Re=y&&C?C.scrollY:m.scrollTop;return{success:!0,scrollTop:Re,isAtTop:Re<=5,isAtBottom:Re>=fe-5}}case Ke.UP:{let me=y&&C?C.scrollY:m.scrollTop,Ie=Math.max(0,me-Y);oe(Ie);let Re=y&&C?C.scrollY:m.scrollTop;return{success:!0,scrollTop:Re,isAtTop:Re<=5,isAtBottom:Re>=fe-5}}case Ke.LEFT:{let me=-(h?.amount??W*.8);return ye(me),{success:!0,scrollLeft:m.scrollLeft}}case Ke.RIGHT:{let me=h?.amount??W*.8;return ye(me),{success:!0,scrollLeft:m.scrollLeft}}default:return{success:!1,error:`Unknown direction: ${d}`}}}normalizeScrollPosition(d){switch(d){case At.START:return"start";case At.END:return"end";case At.NEAREST:return"nearest";case At.CENTER:default:return"center"}}getScrollContainerForElement(d){let h=document.scrollingElement,E=d;for(;E&&E!==document.body&&E!==document.documentElement;){let _=getComputedStyle(E).overflowY,N=_==="auto"||_==="scroll"||_==="overlay",H=E.scrollHeight-E.clientHeight>8;if(N&&H)return{container:E,isRoot:!1};E=E.parentElement}return{container:h||document.documentElement||document.body,isRoot:!0}}scrollElementIntoView(d,h,E){let m=document.querySelector(d);if(!m)return{success:!1,error:`Element not found for selector: ${d}`};let{container:y,isRoot:_}=this.getScrollContainerForElement(m),N=de(y),H=N?.DOMRect||DOMRect,C=_?new H(0,0,N.innerWidth??0,N.innerHeight??0):y.getBoundingClientRect(),L=m.getBoundingClientRect(),W=24,Y=L.top>=C.top+W&&L.bottom<=C.bottom-W,ae=E?.isTabActive??!document.hidden,ce=E?.behavior,fe=ae&&ce==="smooth",oe=this.normalizeScrollPosition(h);if(h===At.NEAREST&&Y)return{success:!0,alreadyVisible:!0,...this.getScrollMetricsForContainer(y,_)};try{m.scrollIntoView({behavior:fe?"smooth":"auto",block:oe,inline:"nearest"})}catch{m.scrollIntoView()}let ye=this.getScrollMetricsForContainer(y,_);return{success:!0,position:oe,...ye}}getScrollMetricsForContainer(d,h){let E=h?Math.max(document.documentElement?document.documentElement.scrollHeight:0,document.body?document.body.scrollHeight:0):d.scrollHeight,m=X(d),y=de(d),_=h&&y?y.innerHeight:d.clientHeight,N=Math.max(0,E-_),C=(h?m.scrollingElement||m.documentElement||m.body:d).scrollTop;return{scrollTop:C,scrollHeight:E,clientHeight:_,maxScroll:N,isAtTop:C<=5,isAtBottom:C>=N-5,scrollPercentage:N>0?C/N*100:0}}getScrollMetrics(){let d=this.getValidPrimary()||this.detectPrimaryScrollable()?.element;if(!d)return null;let{target:h,isRoot:E}=this.getScrollContext(d),m=X(h),y=K(m),_=E?Math.max(m.documentElement?m.documentElement.scrollHeight:0,m.body?m.body.scrollHeight:0):h.scrollHeight,N=E?y.innerHeight:h.clientHeight,H=Math.max(0,_-N),L=(E?m.scrollingElement||m.documentElement||m.body:h).scrollTop;return{element:mo(h,m),scrollTop:L,scrollHeight:_,clientHeight:N,maxScroll:H,isAtTop:L<=5,isAtBottom:L>=H-5,scrollPercentage:H>0?L/H*100:0}}}let o=new r;window[e]=o;let i={execute:u=>o.execute(u)};try{Object.defineProperty(window,t,{value:i,writable:!1,configurable:!1,enumerable:!1})}catch{try{window[t]=i}catch{}}let s=window.__RTRVR_INTERNAL_KEY__||n,c=window[s],a=c&&typeof c=="object"?c:null;if(a){try{a.scroll=a.scroll||i}catch{}try{a.scroll||Object.defineProperty(a,"scroll",{value:i,writable:!1,configurable:!1,enumerable:!1})}catch{}}if(s!==n)try{!window[n]&&a&&Object.defineProperty(window,n,{value:a,writable:!1,configurable:!1,enumerable:!1})}catch{}})();var cm=/\[id=(\d+)\]/,mt;(function(e){e.HTML="html",e.PDF="pdf",e.GOOGLE_DOC="google_doc",e.GOOGLE_SHEET="google_sheet",e.PLAIN_TEXT="plain_text"})(mt||(mt={}));var fu=new Map,lm=24,um=220,dm=0,fm=35,pm=1;function mm(e){let t={};for(let n of Object.keys(e)){let r=e[Number(n)],o=r?.preservedAttributes?.[Ft["rtrvr-label"]],i=r?.resourceLocator;if(typeof o=="string"&&typeof i=="string"){let s=o.match(cm);if(s?.[1]){let c=Number(s[1]);Number.isFinite(c)&&(t[c]=i)}}}return t}async function yu(e,t,n={}){let r=e.ownerDocument||document,o=n.pageConfig||os,i=String(r.contentType||"").trim().toLowerCase(),s=vm(i,r),c=ym(s.documentType,i),a={url:r.URL,title:r.title,contentType:c},u=bm(o),d=hm(o);if(s.documentType!==mt.HTML){let L=Number(o?.pageDataTimeoutMs),W=Number.isFinite(L)?Math.max(200,Math.floor(L)):9e3,Y=Math.max(200,Math.min(W,ft(u))),ae=_m(r,s.documentType,o,u),ce=await po(ae,Y,r);if(!ce.ok)return{...a,content:"",error:`non_html_timeout:${c}`,metadata:{extractionMethod:"timeout"}};let fe=ce.value||{},oe=s.documentType===mt.GOOGLE_SHEET?Zm(r):void 0;return{...a,...fe,contentType:fe.contentType||a.contentType,sheetInfo:fe.sheetInfo||oe}}if(o?.onlyTextContent)return{...a,contentType:uo,content:us(r)};let h=Math.max(0,Math.min(3e3,ft(u))),E=performance.now(),m=!1;if(!o?.disableAutoScroll&&h>80){let L=r.hidden?900:1500,W=Math.min(L,h);W>80&&(m=await Km(r,{profile:"light",timeBudgetMs:W,delayMs:r.hidden?0:160,finalWaitMs:r.hidden?0:200}))}let y=Math.max(0,h-(performance.now()-E));y>60&&await pu(r,{...d,deadlineEpochMs:u,totalBudgetMs:y});let _=Math.max(0,h-(performance.now()-E));_>80&&await Jm(r,{mode:"full",totalBudgetMs:Math.min(r.hidden?1400:1200,_),budgetMs:Math.min(r.hidden?650:850,_),maxPasses:r.hidden?1:2});let N=Jo(e,t,{includeFrames:n.includeFrames??!0,disableDomAnnotations:n.disableDomAnnotations??!0}),H=Math.max(0,d.sparseTreeRetryMaxAttempts),C=0;for(;C<H&&Rm(N.rootNodes,N.semanticNodes);){let L=Math.max(10,Math.min(600,d.sparseTreeRetryDelayMs));await pt(L,r);let W=Math.max(20,Math.min(180,ft(u)));W>20&&await pu(r,{...d,deadlineEpochMs:u,totalBudgetMs:W}),N=Jo(e,t,{includeFrames:n.includeFrames??!0,disableDomAnnotations:n.disableDomAnnotations??!0}),C+=1}return km(N.rootNodes,N.semanticNodes)?{...a,contentType:uo,content:us(r),metadata:{scrollingPerformed:m,extractionMethod:C>0?"sparse_tree_fallback":void 0}}:{...a,contentType:uo,roots:N.rootNodes,nodes:N.semanticNodes,elementLinkRecord:mm(N.semanticNodes),metadata:{scrollingPerformed:m,extractionMethod:C>0?"sparse_tree_retry":void 0}}}function hm(e){let t=Number(e?.adaptiveSettleDebounceMs),n=Number(e?.adaptiveSettleMaxWaitMs),r=Number(e?.adaptiveSettleRetries),o=Number(e?.sparseTreeRetryDelayMs),i=Number(e?.sparseTreeRetryMaxAttempts);return{debounceMs:Number.isFinite(t)?Math.max(8,Math.min(500,Math.floor(t))):lm,maxWaitMs:Number.isFinite(n)?Math.max(80,Math.min(5e3,Math.floor(n))):um,retries:Number.isFinite(r)?Math.max(0,Math.min(6,Math.floor(r))):dm,sparseTreeRetryDelayMs:Number.isFinite(o)?Math.max(20,Math.min(1e3,Math.floor(o))):fm,sparseTreeRetryMaxAttempts:Number.isFinite(i)?Math.max(0,Math.min(4,Math.floor(i))):pm}}async function pu(e,t){let n=ft(t.deadlineEpochMs);if(n<=20)return;let r=Math.max(20,Math.min(Math.floor(t.totalBudgetMs),n)),o=Date.now()+r,i=0;for(;i<=t.retries&&ft(o)>20;){let s=Math.max(40,Math.min(t.maxWaitMs,ft(o)));if(await gm(e,{debounceMs:t.debounceMs,windowBudgetMs:s,deadlineEpochMs:o}))return;i+=1}}async function gm(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 i=Date.now()+Math.max(40,Math.floor(t.windowBudgetMs));try{for(;ft(t.deadlineEpochMs)>20&&ft(i)>20;){let s=Date.now()-r;if(s>=t.debounceMs)return!0;let c=Math.max(10,Math.min(60,t.debounceMs-s,ft(t.deadlineEpochMs),ft(i)));await pt(c,e)}}finally{o.disconnect()}return!1}function bm(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 ym(e,t){switch(e){case mt.PDF:return Sa;case mt.GOOGLE_DOC:return Na;case mt.GOOGLE_SHEET:return Aa;case mt.PLAIN_TEXT:return is;case mt.HTML:default:return t||uo}}function vm(e,t){let n=e||String(t.contentType||"").toLowerCase();return tu(n)?{documentType:mt.PDF}:Em(t)&&(wm(t)||Tm(t.URL))?{documentType:mt.PDF}:Om(t)?{documentType:mt.GOOGLE_DOC}:Pm(t)?{documentType:mt.GOOGLE_SHEET}:n.includes(is)?{documentType:mt.PLAIN_TEXT}:{documentType:mt.HTML}}function Em(e){try{let t=Sm(e);return Ma(t)?!0:!!t.querySelector?.('object[type="application/pdf"],object[type="application/x-google-chrome-pdf"]')}catch{return!1}}function Tm(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 wm(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(i=>!["SCRIPT","STYLE"].includes(String(i.tagName).toUpperCase())).length<=3}catch{return!1}}async function _m(e,t,n,r){switch(t){case mt.PDF:return xm(e,n,r);case mt.GOOGLE_DOC:return Im(e);case mt.GOOGLE_SHEET:return jm(e,n);case mt.PLAIN_TEXT:return{content:us(e),contentType:is};case mt.HTML:default:return{content:us(e),contentType:uo}}}async function xm(e,t,n){ft(n)>Ra+50&&await nu(Ra,e,n);let o=(()=>{let d=Number(t?.pdfTextSelectionTimeoutMs),h=os.pdfTextSelectionTimeoutMs;return Number.isFinite(d)?Math.max(150,Math.floor(d)):h})(),i=ft(n),c=Number.isFinite(i)?Math.max(150,Math.min(o,Math.max(0,i-150))):o,a=await Cm(e,c),u=!!a.success&&!!(a.data||"").trim();return{content:u&&a.data||"",contentType:Sa,error:u?void 0:`pdf_extraction_failed:${a.reason||"unknown"}`}}async function Im(e){return{content:zm(),contentType:Na}}function km(e,t){return!Array.isArray(e)||e.length===0||!t||Object.keys(t).length===0}function Rm(e,t){if(!Array.isArray(e)||e.length===0)return!0;let n=t&&typeof t=="object"?Object.keys(t).length:0;if(n===0||e.length===1&&n<=4)return!0;let r=n/Math.max(1,e.length);return e.length<=2&&r<=2}function us(e){return e.body?.innerText||e.body?.textContent||e.documentElement?.innerText||e.documentElement?.textContent||""}function Sm(e){try{let t=e.defaultView||window,n=t.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",o=t[n]?.shadow?.getRoot;if(typeof o=="function"){let i=o(e.body||e.documentElement);if(i)return i}}catch{}return e}function Am(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 Cm(e,t){let n=Number.isFinite(t)&&t>0?Math.floor(t):os.pdfTextSelectionTimeoutMs,r=Am(e),o=fu.get(r)??"";if(o.trim().length>0)return{success:!0,data:o,reason:"ok"};let i=await Nm(e,n);return i.success&&i.data.trim()&&fu.set(r,i.data),i}async function Nm(e,t){let n=e.defaultView||window,r=Mm(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)}`,i=!1,s="",c=d=>{if(i||!Lm(String(d.origin||""),e))return;let h=d.data;Dm(h,o)&&typeof h.selectedText=="string"&&h.selectedText.trim().length>0&&(s=h.selectedText,i=!0)};n.addEventListener("message",c);try{r.postMessage({type:"selectAll",requestId:o},"*")}catch{}let a=Date.now();for(;!i&&Date.now()-a<t;){try{r.postMessage({type:"getSelectedText",requestId:o},"*")}catch{}if(await pt(200,e),s.trim()){i=!0;break}}return n.removeEventListener("message",c),s.trim()?{success:!0,data:s,reason:"ok"}:{success:!1,data:"",reason:Date.now()-a>=t?"timeout":"no_response"}}function Mm(e){let t=Ma(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 Lm(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 Dm(e,t){return!(!e||typeof e!="object"||e.type!=="getSelectedTextReply"||typeof e.selectedText!="string"||e.requestId&&e.requestId!==t)}function Om(e){try{let t=e.defaultView||Pn();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 ho(e)!==null}function Pm(e){let n=(e.defaultView||Pn())?.location.href??"";return/^https:\/\/docs\.google\.com\/spreadsheets\/(?:u\/\d+\/)?d\/[a-zA-Z0-9_-]+/.test(n)}function Um(e){try{return e.defaultView?.top?.document??e}catch{return e}}function ds(e){let t=[e],n=Um(e);return n!==e&&t.push(n),t}var Bm=".docs-texteventtarget-iframe",Fm=".kix-cursor",Hm=".docos-replyview-body",qm=".docos-replyview",Wm=".docos-author",vu="\u200B",$m="\xA0";function ho(e){for(let t of ds(e)){let n=t.querySelector(Bm);if(n)return n}return null}function Vm(e){for(let t of ds(e)){let n=t.querySelector(Fm);if(n)return n}return null}function as(e){let t=Vm(e);return t?(t.ownerDocument?.defaultView?.getComputedStyle(t).display??t.style.display)==="none":!1}function cs(e,t){let n=ho(e);if(!n)return;let r=t?"ArrowUp":"ArrowDown",i={key:r,keyCode:t?38:40,altKey:!0,shiftKey:!0,code:r,bubbles:!0,cancelable:!0},s=n.contentDocument,c=n.contentWindow;if(!s)return;let a=c?.KeyboardEvent||KeyboardEvent;s.dispatchEvent(new a("keydown",i))}function mu(e){let t=ho(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 i=o?.KeyboardEvent||KeyboardEvent;r.dispatchEvent(new i("keydown",n))}function Gm(e){let t=ho(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},i=t.contentDocument,s=t.contentWindow;if(!i)return;let c=s?.KeyboardEvent||KeyboardEvent;i.dispatchEvent(new c("keydown",o))}function ls(e){let t=ho(e);if(!t)return"";let n=t.contentDocument,r=t.contentWindow,o=n?.body;if(!n||!o)return"";try{let c=r?.ClipboardEvent||ClipboardEvent,a=new c("copy",{bubbles:!0,cancelable:!0});o.firstChild?.dispatchEvent?.(a),o.firstChild?.dispatchEvent||o.dispatchEvent(a)}catch{}let i=o.innerText||o.textContent||"";return String(i).replace(new RegExp(vu,"g"),"")??""}function Ua(e){let t=`
|
|
3
|
-
|
|
4
|
-
Comments: `,n=new Set,r=[];for(let
|
|
5
|
-
Author: ${
|
|
6
|
-
`)}return t.trim()}function
|
|
7
|
-
|
|
8
|
-
`)||(
|
|
9
|
-
`)&&
|
|
10
|
-
`)&&(i+=a)}mu(e);let s=Ua(e).trim(),c=i.trim()+s;return c.trim()?c:o()}catch{return o()}}async function jm(e,t){let n="",r;Eu(e,e.defaultView||window);let o=ft(t?.deadlineEpochMs);try{let i=Math.max(250,Math.min(1500,Math.floor(o*.45))),s=await po(Xm(e),i,e);if(!(s.ok&&s.value))throw new Error("google_sheet_copy_failed");let a=ft(t?.deadlineEpochMs),u=Math.max(250,Math.min(2500,Math.floor(a*.55)));if(n=await Ym(u,e),!n.trim())throw new Error("google_sheet_empty_clipboard")}catch(i){r=i instanceof Error?i.message:String(i)}return{content:n,contentType:Aa,error:r}}function Eu(e,t){try{t?.focus?.()}catch{}try{e?.body?.focus?.()}catch{}}function Ba(e,t){let r=e.defaultView?.KeyboardEvent||KeyboardEvent,o=new r("keydown",{bubbles:!0,cancelable:!0,...t}),i=e.activeElement;(i&&i.ownerDocument===e?i:e).dispatchEvent(o)}async function Xm(e){try{if(Eu(e,e.defaultView||window),e.hidden||!e.hasFocus())return!1;Ba(e,{key:"Escape",code:"Escape"}),await pt(150,e);let t=e.querySelector(".grid-container")||hu(e,".grid-container"),n=e.querySelector(".grid4-inner-container:last-child")||hu(e,".grid4-inner-container:last-child");if(n){try{n.focus()}catch{}await pt(100,e)}else if(t){try{t.focus?.()}catch{}await pt(80,e)}let o=(typeof navigator<"u"?String(navigator.platform||""):"").toUpperCase().indexOf("MAC")>=0;Ba(e,{key:"a",code:"KeyA",ctrlKey:!o,metaKey:o}),await pt(200,e),Ba(e,{key:"c",code:"KeyC",ctrlKey:!o,metaKey:o}),await pt(200,e);try{e.execCommand("copy")}catch{}return!0}catch{return!1}}async function Ym(e,t){let n=Math.max(250,Math.min(5e3,Math.floor(e)));if(navigator?.clipboard?.readText){let i=await po(navigator.clipboard.readText(),n,t);if(i.ok)return i.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 hu(e,t){let n=ds(e);for(let c of n)try{let a=c.querySelector(t);if(a)return a}catch{}let r=25e3,o=0,i=(c,a)=>{if(!a)return;let u=a.children;if(u)for(let d=0;d<u.length;d++)c.push(u[d])},s=[];for(let c of n)try{i(s,c.documentElement??c.body??null)}catch{}for(;s.length&&o<r;){let c=s.pop();o++;try{if(c.matches(t))return c}catch{}i(s,c);let a=c.shadowRoot;if(a&&i(s,a),String(c.tagName).toUpperCase()==="IFRAME")try{let d=c.contentDocument;d&&i(s,d.documentElement??d.body??null)}catch{}}return null}async function Km(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 i=Date.now(),s=()=>o-(Date.now()-i),c=t?.delayMs??(n==="light"?220:280),a=t?.finalWaitMs??(n==="light"?350:900),u=r?c:0,d=r?a:0,h=t?.amount,E=t?.maxSteps??(n==="light"?8:18),m=t?.maxDistancePx??(n==="light"?12e3:3e4),y=null;try{let C=await gu(e,{action:"detectPrimary"});if(C?.selector){let W=Qm(e,C.selector);W&&(y=W)}let L=C?.metrics;if(L&&typeof L.scrollHeight=="number"&&typeof L.clientHeight=="number"){let W=Math.max(0,L.scrollHeight-L.clientHeight);m=Math.min(m,W||m),W<1500?E=Math.min(E,2):W<4e3?E=Math.min(E,4):W<1e4&&(E=Math.min(E,6))}}catch{}if(y||(y=e.scrollingElement||e.documentElement||e.body),!y)return!1;let _=0,N=null,H=0;for(let C=0;C<E&&!(s()<=0);C++){let L=null;try{L=await gu(e,{action:"scrollBy",direction:Ke.DOWN,options:{amount:h,behavior:"auto",isTabActive:r}})}catch{}if(!L||!L.success){let Y=e.defaultView||window;L=ss(y,e,Y,Ke.DOWN,h),H=2}if(!L?.success)break;let W=L.scrollTop??N??0;if(N!==null){let Y=Math.max(0,W-N);_+=Y,H=Y===0?H+1:0}if(N=W,L.isAtBottom||H>=2||_>=m)break;if(u>0&&C<E-1){let Y=Math.min(u,Math.max(0,s()));if(Y<=0)break;await pt(Y,e)}}if(d>0){let C=Math.min(d,Math.max(0,s()));C>0&&await pt(C,e)}if(s()>80)try{let C=e.scrollingElement||e.documentElement||e.body,L=e.defaultView||window,W=y===e.documentElement||y===e.body||y===C?C:y;if(W){let Y=W===C?L.innerHeight:W.clientHeight||L.innerHeight,ae=Math.max(0,W.scrollHeight-Y);W.scrollTop=ae}}catch{}return!0}function Qm(e,t){try{return e.querySelector(t)}catch{return null}}async function gu(e,t){let n=e.defaultView||window,r=n.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",s=(n[r]?.scroll||n.__RTRVR_SCROLL_API__)?.execute;return typeof s!="function"?null:s(t)}async function Jm(e,t){let n=e.defaultView||window,r=n.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",i=n[r]?.flushScan;if(typeof i!="function"){try{n.rtrvrAIMarkInteractiveElements?.()}catch{}return}let s=Date.now()+Math.max(100,Math.floor(t.totalBudgetMs)),c=0;for(;c<t.maxPasses&&ft(s)>0;){let a=Math.max(50,Math.min(t.budgetMs,ft(s)));try{await i({mode:t.mode??"full",includeShadow:!0,includeSameOriginIframes:!0,budgetMs:a,deadlineEpochMs:s})}catch{break}if(bu(e)===0)break;c++}if(bu(e)>0&&ft(s)>50){let a=Math.min(120,ft(s));try{await i({mode:"priority",includeShadow:!0,includeSameOriginIframes:!0,budgetMs:a,deadlineEpochMs:s})}catch{}}}function bu(e){let t=e.documentElement;if(!t)return 0;let n=t.getAttribute(qo);if(!n)return 0;let r=Number.parseInt(n,10);return Number.isFinite(r)&&r>0?r:0}function Zm(e){let t=eh(e.URL||"");if(!t?.sheetId)return;let n=th(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 eh(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 i=n[o+1];if(!i||!/^[a-zA-Z0-9_-]+$/.test(i))return null;let s;return t.hash&&t.hash.includes("gid=")&&(s=new URLSearchParams(t.hash.substring(1)).get("gid")??void 0),!s&&t.searchParams.has("gid")&&(s=t.searchParams.get("gid")??void 0),s&&!/^\\d+$/.test(s)&&(s=void 0),{sheetId:i,sheetTabId:s?parseInt(s,10):0}}catch{return null}}function th(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 nn;(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"})(nn||(nn={}));var nh={native:nn.Native,inline:nn.Inline,react:nn.React,vue:nn.Vue,angular:nn.Angular,svelte:nn.Svelte,jquery:nn.JQuery,delegated:nn.Delegated,other:nn.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,i=new WeakMap,s=new Set,c=500,a=200,u=0,d=0,h=new WeakSet,E="__RTRVR_ET_HOOKED__",m="__RTRVR_ATTACH_SHADOW_HOOKED__";function y(f){if(f&&!h.has(f)){h.add(f);try{_(f)}catch{}try{N(f)}catch{}}}function _(f){try{let I=f.EventTarget;if(!I?.prototype||I.prototype[E])return;I.prototype[E]=!0;let S=I.prototype.addEventListener,R=I.prototype.removeEventListener;I.prototype.addEventListener=function(A,q,j){try{nt(q)||kt(this,A,j)}catch{}return S.call(this,A,q,j)},I.prototype.removeEventListener=function(A,q,j){try{Dt(this,A,j)}catch{}return R.call(this,A,q,j)};try{let A=Function.prototype.toString;I.prototype.addEventListener.toString=()=>A.call(S),I.prototype.removeEventListener.toString=()=>A.call(R)}catch{}}catch{}}function N(f){try{let I=f.Element;if(!I?.prototype?.attachShadow||I.prototype[m])return;I.prototype[m]=!0;let S=I.prototype.attachShadow;I.prototype.attachShadow=function(R){let A=S.call(this,R);try{De.set(this,A)}catch{}try{re(A)}catch{}return A};try{let R=Function.prototype.toString;I.prototype.attachShadow.toString=()=>R.call(S)}catch{}}catch{}}function H(f){let S=n.get(f)?.listenerTypeMasks;if(S&&S.size){let R=[];for(let A of S.keys()){let q=Zn[A];q&&R.push(q)}return R}return Bo(f)}let C=["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"],L=0,W=new Set,Y=6,ae=["click","input","change","keydown","keyup","pointerdown","pointerup","submit","focus","blur"],ce=["mouseenter","mouseleave","mouseover","mouseout","mousedown","mouseup","wheel","scroll","dragstart","drop","touchstart","touchend"];if(e[t]){typeof e.rtrvrAIMarkInteractiveElements=="function"&&e.rtrvrAIMarkInteractiveElements();return}e[t]=!0;let fe={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 oe(f){return f?String(f).split(".")[0].toLowerCase():""}let ye=["data-click","data-action","data-event","data-handler","data-on-click","data-onclick","data-tap","data-press","data-toggle","data-target"],me=0,Ie=null,Re=new MessageChannel,Ze=[];Re.port1.onmessage=()=>{let f=Ze.shift();f&&f()};function _e(){return Date.now()}function Ve(f){return!f||!Number.isFinite(f)?Number.POSITIVE_INFINITY:Math.max(0,f-_e())}let et=8,tt=new MessageChannel,sn=!1;function hn(){if(!sn){sn=!0;try{tt.port2.postMessage(0)}catch{}}}function $t(f){let I=f.values().next();if(I.done)return null;let S=I.value;return f.delete(S),S}function Vt(){return new Promise(f=>{Ze.push(f),Re.port2.postMessage(0)})}let xt=!1;function He(){if(!xt)try{let f=e.jQuery;f&&f.fn&&(Qt(f),xt=!0,It("jquery"))}catch{}}function Gt(f,I){for(let S=I.lastElementChild;S;S=S.previousElementSibling)f.push(S)}function Mo(f,I,S){if(S)try{let R=ge(I);R&&f.push(R)}catch{}}function zn(f,I,S){if(S&&Uo(I))try{let R=I.contentWindow||null;R&&y(R);let A=R?.document?.documentElement;A&&f.push(A)}catch{}}let Nt=new WeakSet;function dr(f){f&&(typeof f=="function"||typeof f=="object")&&Nt.add(f)}function nt(f){return!!f&&(typeof f=="function"||typeof f=="object")&&Nt.has(f)}tt.port1.onmessage=()=>{sn=!1,gn(500);let f=performance.now();for(;W.size&&performance.now()-f<et;){let I=$t(W);if(!I)break;try{B(I)}catch{}finally{L=Math.max(0,L-1)}}for(;s.size&&performance.now()-f<et;){let I=$t(s);if(!I)break;try{pr(I)}catch{}}gt(),(W.size||s.size)&&hn()};function gt(){try{let f=vt()?.documentElement;if(!f)return;f.setAttribute(qo,String(L))}catch{}}function bt(f){let I=n.get(f);return I||(I={frameworks:new Set,listeners:new Map},n.set(f,I)),I}function zt(f){s.add(f),hn()}function an(f){W.has(f)||(W.add(f),L++,gt(),hn(),W.size>8e3&&gn(3e3))}function gn(f=2e3){let I=0;for(let S of W){if(I>f)break;S.isConnected||(W.delete(S),L=Math.max(0,L-1))}I=0;for(let S of s){if(I>f)break;S.isConnected||s.delete(S)}gt()}let Xe=null;function jn(f,I,S){return`${f}|${I?1:0}|${S?1:0}`}function jt(f){let I=f.tagName;if(I==="A"||I==="BUTTON"||I==="INPUT"||I==="SELECT"||I==="TEXTAREA"||I==="SUMMARY"||f.hasAttribute("role")||f.hasAttribute("tabindex")||f.hasAttribute("contenteditable")||f.hasAttribute("onclick")||f.getAttributeNames().some(S=>S.startsWith("on")))return!0;for(let S of ye)if(f.hasAttribute(S))return!0;return!!(f.hasAttribute("aria-haspopup")||f.hasAttribute("aria-expanded"))}function Xn(f){let I=de(f);if(!ut(f,I))return!1;let S=f.tagName;if(S!=="DIV"&&S!=="SPAN"&&S!=="LI"&&S!=="SECTION"&&S!=="ARTICLE"&&S!=="P")return!1;let R=f;if(R.__ngContext__||R.__svelte__||R.__vue__||R._vnode||R.__reactFiber$||R.__reactProps$)return!0;let A=0;for(let q in R){if(++A>30)break;if(q.startsWith("__react")||q.includes("reactFiber")||q.includes("reactProps"))return!0}return!1}function Xt(){let f=vt()?.documentElement;return f?r.frameworks.size>0||f.hasAttribute("rtrvr-react")||f.hasAttribute("rtrvr-vue")||f.hasAttribute("rtrvr-angular")||f.hasAttribute("rtrvr-svelte")||f.hasAttribute("rtrvr-jquery"):!1}function Yn(f){let I=performance.now();for(;W.size&&performance.now()-I<f;){let S=$t(W);if(!S)break;try{B(S)}catch{}finally{L=Math.max(0,L-1)}}for(;s.size&&performance.now()-I<f;){let S=$t(s);if(!S)break;try{pr(S)}catch{}}}async function fr(f={}){gn(3e3),He(),Te();let I=f.mode??"full",S=f.includeShadow??!0,R=f.includeSameOriginIframes??!0,A=Math.max(50,Math.min(f.budgetMs??2500,15e3)),q=f.deadlineEpochMs,j=Math.max(0,Math.min(A,Ve(q))),J=jn(I,S,R);if(j<=0){let at=(Xe?.stack?.length??0)+W.size+s.size;return{revision:++me,scanned:0,durationMs:0,done:at===0,remaining:at}}if((!Xe||Xe.optsKey!==J)&&Ve(q)>30&&await Z({budgetMs:18,deadlineEpochMs:q}),I==="priority"){let at=performance.now(),Ge=0;for(;W.size&&performance.now()-at<=j&&!(q&&Ve(q)<=0);){let Be=$t(W);if(!Be)break;try{B(Be)}catch{}Ge++,L=Math.max(0,L-1)}for(;s.size&&performance.now()-at<=j&&!(q&&Ve(q)<=0);){let Be=$t(s);if(!Be)break;try{pr(Be)}catch{}}return gt(),{revision:++me,scanned:Ge,durationMs:performance.now()-at,done:W.size===0&&s.size===0,remaining:W.size+s.size}}if(!Xe||Xe.optsKey!==J){let at=vt()?.documentElement;Xe={optsKey:J,stack:at?[at]:[],scannedTotal:0}}let Ne=performance.now(),Pe=0;for(L++,gt();Xe.stack.length&&!(q&&Ve(q)<=0);){let at=Xe.stack.pop();if(en(at)){let Be=at.children;for(let On=Be.length-1;On>=0;On--)Xe.stack.push(Be[On]);continue}let Ge=at;if(!(!Ge||Ge.nodeType!==1)&&!(Ge.tagName==="SCRIPT"||Ge.tagName==="STYLE"||Ge.tagName==="META"||Ge.tagName==="NOSCRIPT")){try{(jt(Ge)||Xt()&&Xn(Ge))&&B(Ge)}catch{}try{pr(Ge)}catch{}if(W.delete(Ge)&&(L=Math.max(0,L-1)),s.delete(Ge),Pe++,Xe.scannedTotal++,S)try{let Be=ge(Ge);Be&&(re(Be),Xe.stack.push(Be))}catch{}if(R&&Uo(Ge))try{let Be=Ge.contentWindow||null;Be&&y(Be);let On=Be?.document,Oo=On?.documentElement;On&&Oo&&(ue(On),Xe.stack.push(Oo))}catch{}for(let Be=Ge.lastElementChild;Be;Be=Be.previousElementSibling)Xe.stack.push(Be);Pe%800===0&&Ve(q)>20&&await Vt()}}let Oe=Math.max(0,j-(performance.now()-Ne)),Rt=Ve(q);Yn(Math.min(250,Oe,Rt)),L=Math.max(0,L-1),gt();let ln=Xe.stack.length===0,Jn=Xe.stack.length;return ln&&(Xe=null),{revision:++me,scanned:Pe,durationMs:performance.now()-Ne,done:ln,remaining:Jn}}async function bn(f={}){return Ie||(Ie=fr(f).finally(()=>{Ie=null}),Ie)}e.rtrvrAIFlushScan=bn;let yn="__RTRVR_INTERNAL__";Object(window).__RTRVR_INTERNAL_KEY__=yn;let Yt=e[yn],Mn=Yt&&typeof Yt=="object"?Yt:{};if(!Yt)try{Object.defineProperty(e,yn,{value:Mn,writable:!1,configurable:!1,enumerable:!1})}catch{}try{Object.defineProperty(Mn,"flushScan",{value:bn,writable:!1,configurable:!1,enumerable:!1})}catch{}function ve(f,I){let S=bt(f),R=oe(I.type);if(!R)return;let A=!1,q=S.listeners.get(R);q||(q=[],S.listeners.set(R,q),A=!0);let j=q.find(pe=>pe.source===I.source&&!!pe.inferred==!!I.inferred);if(j){let pe=!!j.capture,Ne=!!j.passive,Pe=!!j.once;j.capture=j.capture||I.capture,j.passive=j.passive||I.passive,j.once=j.once||I.once,(pe!==!!j.capture||Ne!==!!j.passive||Pe!==!!j.once)&&(A=!0)}else q.push({...I,type:R}),A=!0;let J=Ce[R];if(J!==void 0){S.listenerTypeMasks||(S.listenerTypeMasks=new Map);let pe=0,Ne=nh[I.source];pe|=Ne!==void 0?Ne:nn.Other,I.inferred&&(pe|=nn.Inferred);let Pe=S.listenerTypeMasks.get(J)||0,Oe=Pe|pe;Oe!==Pe&&(S.listenerTypeMasks.set(J,Oe),A=!0)}A&&(S.role=void 0,zt(f))}function Ln(f){let I=f.listenerTypeMasks;return!I||I.size===0?null:[...I.entries()].sort((R,A)=>R[0]-A[0]).map(([R,A])=>`${R}~${(A||0).toString(36)}`).join(",")}function qe(f,I){let S=bt(f);S.frameworks.has(I)||(S.frameworks.add(I),zt(f))}function It(f){r.frameworks.has(f)||(r.frameworks.add(f),vt()?.documentElement?.setAttribute(`rtrvr-${f}`,"1"))}function pr(f){let I=n.get(f);if(!I)return;s.delete(f);let S=Ln(I);S?S!==I.lastListenersSerialized&&(f.setAttribute(mr,S),I.lastListenersSerialized=S):I.lastListenersSerialized&&(f.removeAttribute(mr),I.lastListenersSerialized=void 0);let R=de(f);if(ut(f,R))if(I.role===void 0&&(I.role=Lr(f)),I.role){let A=oo[I.role],q=typeof A=="number"?String(A):`s:${I.role}`;q!==I.lastRoleSerialized&&(f.setAttribute(tr,q),I.lastRoleSerialized=q)}else(I.lastRoleSerialized||f.hasAttribute(tr))&&(f.removeAttribute(tr),I.lastRoleSerialized=void 0)}function Lo(f){let I=[],S=f;for(;S;)I.push(S),S=S.parentNode||S.host;return I}function Mr(f){let I=f.tagName.toLowerCase(),S=f.getAttribute("role"),R=S?S.toLowerCase().trim():"";if(R&&er.has(R)||I==="button"||(I==="a"||I==="area")&&f.hasAttribute("href"))return!0;if(I==="input")return f.type?.toLowerCase()!=="hidden";if(I==="select"||I==="textarea"||(I==="video"||I==="audio")&&f.hasAttribute("controls")||f.isContentEditable||f.hasAttribute("contenteditable"))return!0;let A=f.getAttribute("tabindex");return!!(A!==null&&!Number.isNaN(Number.parseInt(A,10))&&(H(f).some(J=>Wi.has(J))||f.getAttributeNames().some(J=>J.startsWith("on"))))}function Ye(f,I=10,S=600){let R=[];for(let q=0;q<f.children.length;q++)R.push({node:f.children[q],depth:1});let A=0;for(;R.length;){let{node:q,depth:j}=R.pop();if(++A>S||Mr(q))return!0;if(!(j>=I))for(let J=0;J<q.children.length;J++)R.push({node:q.children[J],depth:j+1})}return!1}function Lr(f){let I=f.tagName.toLowerCase(),S=f.getAttribute("role"),R=S?S.toLowerCase().trim():"",A=f.type?.toLowerCase();if(R&&er.has(R))return R;if(R&&Fo.has(R))return null;if(I==="a"&&f.hasAttribute("href"))return"link";if(I==="button")return"button";if(I==="input")return A==="hidden"?null:A==="checkbox"?"checkbox":A==="radio"?"radio":A==="range"?"slider":A==="number"?"spinbutton":A==="search"?"searchbox":["button","submit","reset","image","file"].includes(A)?"button":f.hasAttribute("list")?"combobox":"textbox";if(I==="textarea")return"textbox";if(I==="select"){let Oe=f;return Oe.multiple||Oe.size&&Oe.size>1?"listbox":"combobox"}if(I==="option")return"option";if(I==="form")return"form";if(I==="video"||I==="audio"){let Oe=Bo(f);return f.hasAttribute("controls")||Oe.length>0?"media":null}if(f.isContentEditable||f.hasAttribute("contenteditable"))return"textbox";let q=H(f);if(!q.length)return null;let j=!1,J=!1,pe=!1;for(let Oe=0;Oe<q.length;Oe++){let Rt=q[Oe];!j&&Wi.has(Rt)&&(j=!0),!J&&fa.has(Rt)&&(J=!0),!pe&&pa.has(Rt)&&(pe=!0)}if(!j&&!J&&!pe)return null;let Ne=f.getAttribute("tabindex"),Pe=Ne!==null&&!Number.isNaN(Number.parseInt(Ne,10));if(j&&(wa(f)||f.getAttribute("href")||f.closest("a[href]")))return"link";if(J){if(f.isContentEditable||f.hasAttribute("contenteditable"))return"textbox";if(R==="textbox"||R==="searchbox"||R==="combobox"||R==="spinbutton")return R;if(!j&&Pe)return"textbox"}if(j){let Oe=f.getAttribute("aria-checked"),Rt=f.getAttribute("aria-pressed");if(Oe!==null||Rt!==null){if(R==="radio")return"radio";if(R==="menuitemradio")return"menuitemradio";if(R==="menuitemcheckbox")return"menuitemcheckbox";if(Rt!==null)return"button";if(Oe!==null)return"checkbox"}if((Pe||R==="button")&&!Ye(f))return"button"}return pe?"application":null}let Do=EventTarget.prototype.addEventListener,to=EventTarget.prototype.removeEventListener;function Kt(f){let I=!1,S,R;return typeof f=="boolean"?I=f:f&&typeof f=="object"&&(I=!!f.capture,S=f.passive,R=f.once),{capture:I,passive:S,once:R}}function Kn(f){try{let I=f;if(I?.nodeType===9&&I?.documentElement)return I;let S=I?.document;if(S&&S.nodeType===9&&S.documentElement)return S}catch{}return null}function kt(f,I,S){let R=oe(I);if(!R)return;let{capture:A,passive:q,once:j}=Kt(S),J=o.get(f);J||(J=new Map,o.set(f,J));let pe=J.get(R);if(pe?(pe.count+=1,pe.capture=pe.capture||A,pe.passive=pe.passive||q):J.set(R,{count:1,capture:A,passive:q}),Or(f))try{ve(f,{type:R,source:"native",capture:A,passive:q,once:j})}catch{}let Ne=Kn(f);if(Ne&&(R==="click"||R==="input"||R==="keydown"))try{Ne.documentElement?.setAttribute(`rtrvr-gl-${R}`,"1")}catch{}}function Dt(f,I,S){let R=oe(I);if(!R)return;let A=o.get(f);if(!A)return;let q=A.get(R);q&&(q.count-=1,q.count<=0&&A.delete(R),A.size===0&&o.delete(f))}y(window);function Qt(f){if(!f||!f.fn)return;let I=f.fn.on,S=f.fn.off;function R(q){if(!q)return[];if(typeof q=="string")return q.split(/\s/).map(j=>oe(j)).filter(Boolean);if(typeof q=="object")try{return Object.keys(q).map(j=>oe(j)).filter(Boolean)}catch{return[]}return[]}function A(q){try{if(!q)return null;if(Or(q))return q;let j=de(q);return Ui(q,j)||null}catch{}return null}f.fn.on=function(q,j){let J=R(q),pe=typeof j=="string"&&!!j;return this.each(function(){let Ne=A(this);if(Ne){if(pe){let Pe=i.get(Ne);Pe||(Pe=[],i.set(Ne,Pe));for(let Oe of J){let Rt=`${Oe}::${j}`;Pe.some(ln=>`${ln.type}::${ln.selector}`===Rt)||(Pe.push({type:Oe,selector:j}),Pe.length>400&&Pe.shift())}}else for(let Pe of J)ve(Ne,{type:Pe,source:"jquery"});qe(Ne,"jquery"),It("jquery"),r.jqueryRoots.add(Ne)}}),I.apply(this,arguments)},f.fn.off=function(){return S.apply(this,arguments)},It("jquery")}function cn(f){ye.some(S=>f.hasAttribute(S))&&(ve(f,{type:"click",source:"other",inferred:!0}),(f.tagName==="INPUT"||f.tagName==="TEXTAREA")&&(ve(f,{type:"input",source:"other",inferred:!0}),ve(f,{type:"change",source:"other",inferred:!0})))}function Ut(f){let I=de(f),S=ut(f,I),R=f.getAttributeNames().some(pe=>pe.startsWith("on")),A=/^(button|a|input|select|textarea|summary)$/i.test(f.tagName),q=f,j=S&&(zi(f)||!!q.isContentEditable||f.hasAttribute("contenteditable")),J=S&&!!q.draggable;if(!R&&!A&&!j&&!J){cn(f);return}for(let[pe,Ne]of Object.entries(fe))typeof f[pe]=="function"&&ve(f,{type:Ne,source:"inline"});j&&(ve(f,{type:"input",source:"other",inferred:!0}),ve(f,{type:"keydown",source:"other",inferred:!0}),ve(f,{type:"keyup",source:"other",inferred:!0}),ve(f,{type:"paste",source:"other",inferred:!0})),J&&(ve(f,{type:"dragstart",source:"other",inferred:!0}),ve(f,{type:"dragend",source:"other",inferred:!0})),cn(f)}function Dn(f){if(!f.startsWith("on")||f.length<=2)return null;if(f.endsWith("Capture")){let S=f.substring(2,f.length-7);return S?{type:S.toLowerCase(),capture:!0}:null}let I=f.substring(2);return I?{type:I.toLowerCase(),capture:!1}:null}function Qn(f){let I=null;if(f){for(let S in f)if(S.startsWith("__react")||S.startsWith("_react")||S.includes("reactFiber")||S.includes("reactProps")||S.includes("reactInternalInstance")){I=S;break}if(I)try{let S=f[I],R=S?.memoizedProps||S?.pendingProps;if(R&&typeof R=="object"){for(let A in R){if(typeof R[A]!="function")continue;let j=Dn(A);j&&ve(f,{type:j.type,source:"react",capture:j.capture})}Or(S?.stateNode)&&r.reactRoots.add(S.stateNode),qe(f,"react"),It("react")}}catch{}}}function l(f){let I=f,S=!1;if(I.__vue__){S=!0;let R=I.__vue__;R.$listeners&&Object.keys(R.$listeners).forEach(A=>ve(f,{type:A,source:"vue"})),R._events&&Object.keys(R._events).forEach(A=>ve(f,{type:A,source:"vue"})),R.$options?._parentListeners&&Object.keys(R.$options._parentListeners).forEach(A=>ve(f,{type:A,source:"vue"})),r.vueRoots.add(f)}if(I._vnode?.props){S=!0;let R=I._vnode.props;Object.keys(R).forEach(A=>{A.startsWith("on")&&A.length>2&&ve(f,{type:A.substring(2).toLowerCase(),source:"vue"})}),r.vueRoots.add(f)}S&&(qe(f,"vue"),It("vue"))}function x(f){let I=f,S=!1;if(I.__ngContext__||f.hasAttribute("_ngcontent")||f.hasAttribute("ng-version")){S=!0,Array.from(f.attributes).forEach(R=>{if(R.name.startsWith("(")&&R.name.endsWith(")")){let A=R.name.slice(1,-1).split(".")[0];A&&ve(f,{type:A,source:"angular"})}if(R.name.startsWith("on-")){let A=R.name.substring(3);A&&ve(f,{type:A,source:"angular"})}if(R.name.includes(".")){let A=R.name.match(/\(([^.)]+)/);A?.[1]&&ve(f,{type:A[1],source:"angular"})}});try{if(e.ng?.getComponent){let R=e.ng.getComponent(f);R&&Object.keys(R).forEach(A=>{(A.endsWith("Output")||A.endsWith("Emitter"))&&ve(f,{type:A.replace(/(Output|Emitter)$/,"").toLowerCase(),source:"angular"})})}}catch{}}S&&(qe(f,"angular"),It("angular"),r.angularRoots.add(f))}function T(f){let I=f,S=!1;if(I.__svelte__){S=!0,Array.from(f.attributes).forEach(R=>{if(R.name.startsWith("on:")){let A=R.name.substring(3);A&&ve(f,{type:A,source:"svelte"})}});try{let R=I.__svelte__?.$$?.callbacks;R&&typeof R=="object"&&Object.keys(R).forEach(A=>ve(f,{type:A,source:"svelte"}))}catch{}r.svelteRoots.add(f)}S&&(qe(f,"svelte"),It("svelte"))}function w(f,I){return f?!!o.get(f)?.has(I):!1}function b(f,I,S=96){let R=oe(I);if(!R)return!1;let A=X(f),q=K(A);if(w(A,R)||w(q,R))return!0;let j=0,J=f;for(;J&&j<S;){if(J.parentElement)J=J.parentElement;else{let pe=J.getRootNode?.();if(en(pe)){if(w(pe,R)||w(pe.host,R))return!0;J=pe.host}else break}if(J&&w(J,R))return!0}return!1}function g(f,I,S=128){let R=0,A=f;for(;A&&R<S;){if(I(A),A.parentElement){A=A.parentElement;continue}let q=A.getRootNode?.();if(en(q)){A=q.host;continue}break}}function v(f){let I=de(f);if(!ut(f,I))return;let S=bt(f);S.role=S.role||Lr(f);let R=b(f,"click"),A=b(f,"input"),q=b(f,"keydown"),J=X(f).documentElement;if(r.frameworks.size>0||J.hasAttribute("rtrvr-react")||J.hasAttribute("rtrvr-vue")||J.hasAttribute("rtrvr-angular")||J.hasAttribute("rtrvr-svelte")||J.hasAttribute("rtrvr-jquery")||R||A||q){let Ne=S.role||"other";R&&["button","link","checkbox","radio","switch","menuitem","menuitemcheckbox","menuitemradio","tab","option","treeitem","gridcell","cell","img","figure"].includes(Ne)&&ve(f,{type:"click",source:"delegated",inferred:!0}),["textbox","searchbox","spinbutton","code"].includes(Ne)&&(A&&(ve(f,{type:"input",source:"delegated",inferred:!0}),ve(f,{type:"change",source:"delegated",inferred:!0})),q&&ve(f,{type:"keydown",source:"delegated",inferred:!0})),["combobox","listbox"].includes(Ne)&&(R&&ve(f,{type:"click",source:"delegated",inferred:!0}),A&&ve(f,{type:"change",source:"delegated",inferred:!0})),["slider","scrollbar","progressbar","meter"].includes(Ne)&&A&&ve(f,{type:"input",source:"delegated",inferred:!0})}g(f,Ne=>{let Pe=i.get(Ne);if(Pe?.length)for(let{type:Oe,selector:Rt}of Pe)try{f.matches(Rt)&&(ve(f,{type:Oe,source:"jquery",inferred:!0}),qe(f,"jquery"),It("jquery"))}catch{}})}function k(f){let I=S=>{let R=S,A=R.composedPath&&R.composedPath()||Lo(S.target),j=f==="mousemove"||f==="pointermove"||f==="scroll"||f==="wheel"?1:Math.min(A.length,Y);for(let J=0;J<j;J++){let pe=A[J];Or(pe)&&ve(pe,{type:f,source:"delegated",inferred:!0})}};dr(I);try{Do.call(document,f,I,{capture:!0,passive:!0})}catch{}}let P=!1;function D(){ae.forEach(k);let f=vt()?.documentElement;if(!f)return;let I=()=>{if(P)return;let S=f.hasAttribute("rtrvr-react")||f.hasAttribute("rtrvr-vue")||f.hasAttribute("rtrvr-angular")||f.hasAttribute("rtrvr-svelte"),R=f.hasAttribute("rtrvr-gl-click")||f.hasAttribute("rtrvr-gl-input")||f.hasAttribute("rtrvr-gl-keydown");(S||R)&&(P=!0,ce.forEach(k))};I();try{new MutationObserver(()=>I()).observe(f,{attributes:!0,attributeFilter:["rtrvr-react","rtrvr-vue","rtrvr-angular","rtrvr-svelte","rtrvr-gl-click","rtrvr-gl-input","rtrvr-gl-keydown"]})}catch{}}function B(f){if(f.nodeType!==1)return;let I=de(f);if(ut(f,I)){let S=bt(f);S.role=void 0}Ut(f),Qn(f),l(f),x(f),T(f),v(f),zt(f)}function V(){let f=["a[href]","button","input","select","textarea","summary","details > summary",...Array.from(er).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"];L++,gt();try{let I=f.join(",");vt()?.querySelectorAll(I).forEach(S=>{try{B(S)}catch{}})}finally{L=Math.max(0,L-1),gt()}}function z(f){for(let I of f){for(let S of Array.from(I.addedNodes)){if(S.nodeType!==1)continue;let R=S;an(R),R.querySelectorAll?.('a,button,input,select,textarea,summary,[role],[onclick],[ondblclick],[ondoubleclick],[contenteditable],[draggable="true"],[tabindex]').forEach(an)}if(I.type==="attributes"&&I.target.nodeType===1){let S=I.target;I.attributeName==="class"?(Xt()||jt(S))&&an(S):an(S)}}}async function Z(f={}){let I=vt(),S=I?.documentElement;if(!S||!(S.hasAttribute("rtrvr-react")||S.hasAttribute("rtrvr-vue")||S.hasAttribute("rtrvr-angular")||S.hasAttribute("rtrvr-svelte")))return;let A=f.deadlineEpochMs,q=Math.max(5,Math.min(f.budgetMs??12,50));if(Math.max(0,Math.min(q,Ve(A)))<=0)return;let J=performance.now();L++,gt();try{let pe=0,Ne=4e3,Pe=["div","span","li","section","article","p"];for(let Oe of Pe){let Rt=I.getElementsByTagName(Oe)??[];for(let ln=0;ln<Rt.length;ln++){if(pe++>=Ne||A&&Ve(A)<=0)return;let Jn=Rt[ln],at=Jn;(at.__ngContext__||at.__svelte__||at.__vue__||at._vnode||Xn(Jn))&&B(Jn),pe%250===0&&Ve(A)>20&&await Vt()}}}finally{L=Math.max(0,L-1),gt()}}let ie=new MutationObserver(z),Ee=new WeakMap;function re(f){if(!Ee.has(f)&&!(u>=c))try{let I=K(f.ownerDocument).MutationObserver||MutationObserver,S=new I(z);Ee.set(f,S),u++,S.observe(f,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...C,"class"]})}catch{}}let te=new WeakMap;function ue(f){if(!te.has(f)&&!(d>=a))try{y(f.defaultView||null);let I=f.documentElement;if(!I)return;let S=K(f).MutationObserver||MutationObserver,R=new S(z);te.set(f,R),d++,R.observe(I,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...C,"class"]})}catch{}}function Ae(){let f=vt()?.documentElement;f&&ie.observe(f,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...C,"class"]})}let De=new WeakMap;function ge(f){return f.shadowRoot||De.get(f)||null}try{Object.defineProperty(Mn,"shadow",{value:Object.freeze({getRoot:f=>ge(f)}),writable:!1,configurable:!1,enumerable:!1})}catch{}function Te(){try{(e.React||e.__REACT_DEVTOOLS_GLOBAL_HOOK__)&&It("react"),e.Vue&&It("vue"),e.ng&&It("angular"),e.jQuery&&It("jquery"),He()}catch{}}e.rtrvrAIMarkInteractiveElements=function(){return vt()?.body?(V(),!0):!1};function ke(){let f=vt();He(),Te(),D();let I=()=>{He(),Te(),Ae(),e.rtrvrAIMarkInteractiveElements?.(),Z({budgetMs:20}),f?.documentElement.setAttribute(la,"1")};f?.readyState==="loading"?f.addEventListener("DOMContentLoaded",I,{once:!0}):I()}ke()})();var fs=null;function Fa(e){try{return e.getAttribute(mr)}catch{return null}}function Tu(e){let t=Fa(e);return Pr(t)?.entries??[]}function wu(e){try{let t=e.getAttribute(tr);return t&&t.trim()?t:null}catch{return null}}function rh(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 oh(e){let t=new Set;for(let n of e){let r=Ci(n.mask);for(let o of r)(o==="react"||o==="vue"||o==="angular"||o==="svelte"||o==="jquery")&&t.add(o)}return t}function ih(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 sh(e){let t=Tu(e),n=oh(t),r=ih(e);for(let o of r)n.add(o);return{frameworks:[...n],listenersRaw:Fa(e)||"",role:wu(e)??(e.getAttribute?.("role")||null)}}function ah(){return{getEventHandlerIds:e=>Tu(e).map(t=>t.id),getRoleHint:wu,getShadowRoot:rh}}function _u(e={}){if(fs)return fs;if(typeof window<"u")try{window.rtrvrAIMarkInteractiveElements?.()}catch{}return fs={signalProvider:ah(),getFrameworkMetadata:sh,getListenerEncoding:Fa,dispose:()=>{}},fs}var ch=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 ps(e,t,n){let r=Array.isArray(e)?e:typeof e=="string"&&e.trim()?[e]:[],o=new Set;for(let i of r){let s=xu(String(i||""));s&&o.add(s)}if(!o.size){let i=uh(t,n);i&&o.add(i)}return Array.from(o)}function lh(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 xu(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,i=lh(o);return i?n?`=${i}`:r?`*.${i}`:i:""}function uh(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&&ch.has(o)?`${r[r.length-3]}.${o}`:o}function Fn(e,t){let n=go(e);if(!n)return!1;if(!t.length)return!0;for(let r of t)if(dh(n,r))return!0;return!1}function go(e){try{return new URL(e).hostname.toLowerCase()}catch{return null}}function dh(e,t){let n=xu(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 bs=class bs{constructor(t={}){$(this,"root");$(this,"includeFrames");$(this,"disableDomAnnotations");$(this,"allowActions");$(this,"runtimeId");$(this,"domainScopeMode");$(this,"allowedDomains");$(this,"externalNavigationPolicy");$(this,"crossHostPolicy");$(this,"registerOpenedTab");$(this,"listKnownTabs");$(this,"switchToLogicalTab");$(this,"onNavigationGuardrail");$(this,"onBeforeAgentNavigation");$(this,"onBeforeCrossHostNavigation");$(this,"instrumentation");$(this,"highlightEl",null);$(this,"clientTools",new Map);$(this,"navigationDelayMs");$(this,"domSettleDebounceMs");$(this,"domSettleMaxWaitMs");$(this,"domSettleRetries");$(this,"sparseTreeRetryDelayMs");$(this,"sparseTreeRetryMaxAttempts");$(this,"uploadStore",new Map);$(this,"uploadProviderInstalled",!1);$(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=Iu(t.domainScopeMode),this.allowedDomains=ps(t.allowedDomains,window.location.hostname,this.domainScopeMode),this.externalNavigationPolicy=ku(t.externalNavigationPolicy),this.crossHostPolicy=Ru(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=Zo(t.domSettle?.debounceMs,24,8,500),this.domSettleMaxWaitMs=Zo(t.domSettle?.maxWaitMs,220,80,5e3),this.domSettleRetries=Zo(t.domSettle?.retries,0,0,6),this.sparseTreeRetryDelayMs=Zo(t.domSettle?.sparseTreeRetryDelayMs,35,20,1e3),this.sparseTreeRetryMaxAttempts=Zo(t.domSettle?.sparseTreeRetryMaxAttempts,1,0,4),this.instrumentation=t.instrumentation??_u({includeIframes:!0,scanInlineHandlers:!0,observeInlineMutations:!0,...t.instrumentationOptions||{}}),uu(),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=Iu(t.domainScopeMode),t.allowedDomains||(this.allowedDomains=ps(void 0,window.location.hostname,this.domainScopeMode))),t.allowedDomains&&(this.allowedDomains=ps(t.allowedDomains,window.location.hostname,this.domainScopeMode)),t.externalNavigationPolicy&&(this.externalNavigationPolicy=ku(t.externalNavigationPolicy)),t.crossHostPolicy&&(this.crossHostPolicy=Ru(t.crossHostPolicy))}async getSnapshot(){return await Cu(this.root),Jo(this.root,this.instrumentation,{includeFrames:this.includeFrames,disableDomAnnotations:this.disableDomAnnotations})}async getPageData(t){await Cu(this.root);let n={...t?.pageConfig||{},adaptiveSettleDebounceMs:Number(t?.pageConfig?.adaptiveSettleDebounceMs)>0?Number(t?.pageConfig?.adaptiveSettleDebounceMs):this.domSettleDebounceMs,adaptiveSettleMaxWaitMs:Number(t?.pageConfig?.adaptiveSettleMaxWaitMs)>0?Number(t?.pageConfig?.adaptiveSettleMaxWaitMs):this.domSettleMaxWaitMs,adaptiveSettleRetries:Number.isFinite(Number(t?.pageConfig?.adaptiveSettleRetries))?Number(t?.pageConfig?.adaptiveSettleRetries):this.domSettleRetries,sparseTreeRetryDelayMs:Number(t?.pageConfig?.sparseTreeRetryDelayMs)>0?Number(t?.pageConfig?.sparseTreeRetryDelayMs):this.sparseTreeRetryDelayMs,sparseTreeRetryMaxAttempts:Number.isFinite(Number(t?.pageConfig?.sparseTreeRetryMaxAttempts))?Number(t?.pageConfig?.sparseTreeRetryMaxAttempts):this.sparseTreeRetryMaxAttempts};return await yu(this.root,this.instrumentation,{includeFrames:this.includeFrames,disableDomAnnotations:this.disableDomAnnotations,pageConfig:n})}async executeTool(t,n){let r=fh(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&&!Au.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 y=Number(t?.args?.duration??1e3);return await new Promise(_=>setTimeout(_,Math.max(0,Math.min(y,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 hs("CAPTCHA solving requires human intervention in embed mode.","HUMAN_INTERVENTION_REQUIRED");if(r===F.network_run_recipe)return hs("network_run_recipe is not supported in embed mode.","CAPABILITY_UNAVAILABLE");let i=t?.args||{},s=gh(i),c=fo(document,i.iframe_id);if(i.iframe_id!=null&&c.unresolvedPath.length>0&&!s)return this.iframeContextUnavailableResponse(i.iframe_id,c);if(r===F.click_element&&i?.open_in_new_tab)return this.openElementInNewTab(i);if(r===F.click_element){let y=this.getInterceptedClickTarget(i);if(y?.targetUrl){if(y.forceOpenInNewTab)return this.openUrlInNewTab(y.targetUrl,{policyBlocked:!0,reason:y.reason,decisionReason:"open_new_tab"});let N=y.reason;return this.externalNavigationPolicy==="open_new_tab_notice"?this.openUrlInNewTab(y.targetUrl,{policyBlocked:!0,reason:N,decisionReason:"open_new_tab"}):this.domainScopeBlockedResponse(y.targetUrl,N,{decisionReason:"policy_blocked"})}let _=this.getClickTargetUrl(i);if(_){let N=this.buildNavigationIntent(_);if(N.isCrossHost){let H=await this.resolveAgentNavigationDecision(N,this.getNavigationFallbackDecision(_));if(H.decision==="block")return this.domainScopeBlockedResponse(_,H.reason||"Navigation blocked by policy.",{decisionReason:H.decisionReason||"policy_blocked"});if(H.decision==="open_new_tab")return this.openUrlInNewTab(_,{policyBlocked:!0,reason:H.reason||"Navigation policy requires opening a new tab.",decisionReason:H.decisionReason||"open_new_tab"});this.notifyCrossHostNavigation(N)}else this.notifyAgentNavigation(N)}}if(r===F.describe_images)return this.describeImages(t?.args||{});if(!(r in Ai))return{success:!1,error:`Unknown tool: ${String(t?.name)}`,allowFallback:!1};let{doc:a}=c,u=Ha(i),d=u?_n(a,u):null,h;if(d){let y=this.instrumentation.getFrameworkMetadata(d),_=hh(y.listenersRaw||"",r),N=i?.value??i?.text??null;h=mh({...y,pattern:_,value:N})}let E=Ai[r];return r===F.upload_file&&!n&&(n=await this.buildUploadPayload(i).catch(()=>{})),du({opcode:E,call:{name:r,args:i},elementData:h,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=_n(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=ms(r,window.location.href);if(!o)return{success:!1,error:`goto_url: invalid url "${r}"`,allowFallback:!0};if(this.shouldPreserveHostRuntime(o)){let s=this.buildNavigationIntent(o);if(!Fn(o,this.allowedDomains)&&this.externalNavigationPolicy==="block")return this.domainScopeBlockedResponse(o,"Navigation blocked by domain policy.");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==="allow_same_tab"?this.scheduleSameTabNavigation(o,s,{decisionReason:a.decisionReason||"allow_same_tab",reason:a.reason||"Navigation allowed."}):await this.openUrlInNewTab(o,{policyBlocked:!0,reason:a.reason||"Opened in a new tab to preserve Rover runtime continuity across hostnames.",decisionReason:a.decisionReason||"open_new_tab"})}if(this.shouldGuardExternalNavigation(o)){let s="Navigation blocked by domain policy.";return this.externalNavigationPolicy==="open_new_tab_notice"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:s}):this.domainScopeBlockedResponse(o,s)}let i=this.buildNavigationIntent(o);if(i.isCrossHost){let s=await this.resolveAgentNavigationDecision(i,this.getNavigationFallbackDecision(o));return s.decision==="block"?this.domainScopeBlockedResponse(o,s.reason||"Navigation blocked by policy.",{decisionReason:s.decisionReason}):s.decision==="open_new_tab"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:s.reason||"Navigation policy requires opening a new tab.",decisionReason:s.decisionReason||"open_new_tab"}):this.scheduleSameTabNavigation(o,i,{decisionReason:s.decisionReason||"allow_same_tab",reason:s.reason||"Navigation allowed."})}return this.notifyAgentNavigation(i),this.scheduleSameTabNavigation(o,i,{decisionReason:"allow_same_tab",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 s=this.buildNavigationIntent(o);if(!Fn(o,this.allowedDomains)&&this.externalNavigationPolicy==="block")return this.domainScopeBlockedResponse(o,"Google search blocked by domain policy.");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==="allow_same_tab"?this.scheduleSameTabNavigation(o,s,{decisionReason:a.decisionReason||"allow_same_tab",reason:a.reason||"Navigation allowed."}):await this.openUrlInNewTab(o,{policyBlocked:!0,reason:a.reason||"Opened in a new tab to preserve Rover runtime continuity across hostnames.",decisionReason:a.decisionReason||"open_new_tab"})}if(this.shouldGuardExternalNavigation(o)){let s="Google search opens outside the allowed navigation scope.";return this.externalNavigationPolicy==="open_new_tab_notice"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:s}):this.domainScopeBlockedResponse(o,s)}let i=this.buildNavigationIntent(o);if(i.isCrossHost){let s=await this.resolveAgentNavigationDecision(i,this.getNavigationFallbackDecision(o));return s.decision==="block"?this.domainScopeBlockedResponse(o,s.reason||"Navigation blocked by policy.",{decisionReason:s.decisionReason}):s.decision==="open_new_tab"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:s.reason||"Navigation policy requires opening a new tab.",decisionReason:s.decisionReason||"open_new_tab"}):this.scheduleSameTabNavigation(o,i,{decisionReason:s.decisionReason||"allow_same_tab",reason:s.reason||"Navigation allowed."})}return this.notifyAgentNavigation(i),this.scheduleSameTabNavigation(o,i,{decisionReason:"allow_same_tab",reason:"Navigation allowed."})}case F.go_back:{let r=this.buildNavigationIntent(window.location.href,{isCrossHost:!1});return this.notifyAgentNavigation(r),this.scheduleHistoryNavigation("back"),{success:!0,output:{navigation:"same_tab",navigationOutcome:"same_tab_scheduled",navigationPending:!0,decisionReason:"allow_same_tab"}}}case F.go_forward:{let r=this.buildNavigationIntent(window.location.href,{isCrossHost:!1});return this.notifyAgentNavigation(r),this.scheduleHistoryNavigation("forward"),{success:!0,output:{navigation:"same_tab",navigationOutcome:"same_tab_scheduled",navigationPending:!0,decisionReason:"allow_same_tab"}}}case F.refresh_page:{let r=this.buildNavigationIntent(window.location.href,{isCrossHost:!1});return this.notifyAgentNavigation(r),this.scheduleHistoryNavigation("reload"),{success:!0,output:{navigation:"same_tab",navigationOutcome:"same_tab_scheduled",navigationPending:!0,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=ms(r,window.location.href);if(!o)return{success:!1,error:`open_new_tab: invalid url "${r}"`,allowFallback:!0};let i=this.buildNavigationIntent(o),s=await this.resolveAgentNavigationDecision(i,"open_new_tab");return s.decision==="block"?this.domainScopeBlockedResponse(o,s.reason||"Navigation blocked by policy.",{decisionReason:s.decisionReason}):await this.openUrlInNewTab(o,{policyBlocked:!1,reason:s.reason,decisionReason:s.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(i=>Number(i.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 hs("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 hs("close_tab failed in embed mode.","CAPABILITY_UNAVAILABLE")}default:return null}}shouldGuardExternalNavigation(t){return this.externalNavigationPolicy==="allow"?!1:!Fn(t,this.allowedDomains)}shouldPreserveHostRuntime(t){return this.externalNavigationPolicy==="allow"?!1:!Fn(t,this.allowedDomains)}getNavigationFallbackDecision(t){return t?Fn(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=go(window.location.href),r=go(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()}}notifyAgentNavigation(t){try{let n=this.onBeforeAgentNavigation?.(t);n&&typeof n?.then=="function"&&n.catch(()=>{})}catch{}}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),i=await this.awaitWithTimeout(o,bs.NAV_PREFLIGHT_TIMEOUT_MS);if(!i||typeof i!="object")return r;let s=String(i.decision||"").trim();return{decision:s==="allow_same_tab"||s==="open_new_tab"||s==="block"?s:s==="stale_run"?n:r.decision,reason:String(i.reason||"").trim()||void 0,decisionReason:String(i.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){return this.notifyCrossHostNavigation(n),window.setTimeout(()=>{try{window.location.href=t}catch{window.location.assign(t)}},this.navigationDelayMs),{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"||Au.has(t)||ph.has(t)?!1:!Fn(window.location.href,this.allowedDomains)}getInterceptedClickTarget(t){let n=this.getClickTargetUrl(t);return n?this.shouldPreserveHostRuntime(n)?!Fn(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"||Fn(n,this.allowedDomains)?null:{targetUrl:n,reason:"Blocked same-tab navigation to an out-of-scope destination.",forceOpenInNewTab:!1}:null}getClickTargetUrl(t){let n=Ha(t);if(!n)return null;let{doc:r}=fo(document,t.iframe_id),o=_n(r,n);if(!o)return null;let i=Su(o),s=i?.href||i?.getAttribute("href")||"";return ms(s,window.location.href)}domainScopeBlockedResponse(t,n,r){let o=this.externalNavigationPolicy==="block"?"block":"open_new_tab_notice";return this.emitNavigationGuardrail({blockedUrl:t,currentUrl:window.location.href,policyAction:o,reason:n,allowedDomains:this.allowedDomains,openedInNewTab:!1}),{success:!1,error:n,allowFallback:!0,output:{success:!1,error:{code:"DOMAIN_SCOPE_BLOCKED",message:n,missing:[],next_action:o==="block"?"Stay on the configured domain or update allowedDomains/domainScopeMode.":"Use open_new_tab to access external pages without losing context.",retryable:!1},blocked_url:t,current_url:window.location.href,policy_action:o,navigationOutcome:"blocked",decisionReason:r?.decisionReason||"policy_blocked",from_current_context:!!r?.fromCurrentContext},errorDetails:{code:"DOMAIN_SCOPE_BLOCKED",message:n,retryable:!1,details:{blockedUrl:t,currentUrl:window.location.href,policyAction:o}}}}emitNavigationGuardrail(t){try{this.onNavigationGuardrail?.(t)}catch{}}async openUrlInNewTab(t,n){let r=!Fn(t,this.allowedDomains),o=this.snapshotKnownTabIds(),i=this.openVerifiedPopup(t),s;if(i.opened&&this.registerOpenedTab)try{s=(await this.registerOpenedTab({url:t,title:void 0,external:r,openerRuntimeId:this.runtimeId}))?.logicalTabId}catch{}if(i.opened&&!s&&(s=await this.reconcileOpenedTab(t,o)),!i.opened){let d=await this.reconcileOpenedTab(t,o);d&&(i={opened:!0,verified:!1},s=s||d)}let c=i.opened&&!s&&!!this.registerOpenedTab;if(!i.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:s,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 a=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:a||"Opened in new tab due to domain policy.",allowedDomains:this.allowedDomains,openedInNewTab:!0});let u=[];return c&&u.push("Tab opened but registration failed; tab may not be targetable."),i.verified||u.push("Tab open was triggered, but browser did not return a popup handle."),{success:!0,output:{url:t,external:r,logicalTabId:s,openedInNewTab:!0,navigationOutcome:"new_tab_opened",navigationPending:!0,decisionReason:n?.decisionReason||"open_new_tab",openVerification:i.verified?"verified":"unverified",policyBlocked:!!n?.policyBlocked,message:a,...u.length?{warning:u.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=go(t),o=Date.now()+2e3;for(;Date.now()<o;){try{let i=this.listKnownTabs();for(let s of i){let c=Number(s?.logicalTabId);if(!Number.isFinite(c)||c<=0||n.has(c))continue;let a=String(s?.url||"").trim();if(!a)return c;let u=go(a);if(!r||!u||u===r)return c}}catch{}await new Promise(i=>setTimeout(i,120))}}async openElementInNewTab(t){let n=Ha(t);if(!n)return{success:!1,error:"click_element with open_in_new_tab requires element_id.",allowFallback:!0};let{doc:r}=fo(document,t.iframe_id),o=_n(r,n);if(!o)return{success:!1,error:`click_element: element_id ${String(n)} not found.`,allowFallback:!0};let i=Su(o),s=i?.href||i?.getAttribute("href")||"",c=ms(s,window.location.href);return c?await this.openUrlInNewTab(c,{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(),i=document;for(;Date.now()-o<r;){let s=null;try{s=i.querySelector(n)}catch{s=null}if(s||(s=bh(i,n)),s)return{success:!0};await new Promise(c=>setTimeout(c,200))}return{success:!1,error:`wait_for_element: not found (${n})`,allowFallback:!0}}async describeImages(t){let n=Dc(t);if(!n.length)return{success:!1,error:"describe_images: element_ids is empty",allowFallback:!1};let r=[],o=[];for(let i of n){let s=_n(document,i);if(!s){o.push(`element_id ${i} not found`);continue}try{let c=await yh(s);if(!c?.data||!c?.mimeType){o.push(`element_id ${i}: unsupported image`);continue}r.push({element_id:i,...c})}catch(c){o.push(`element_id ${i}: ${c?.message||String(c)}`)}}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 iu(0,n,document?.referrer||null),o=r.bytes,i=o.byteLength,s=r.mimeType||t.mime_type||"application/octet-stream",c=t.file_name||r.fileName,a=1024*1024;if(i<=a)return{kind:"upload_file",inlineB64:Lu(o),byteLength:i,mimeType:s,fileName:c};this.ensureUploadProvider();let u=crypto.randomUUID();return this.uploadStore.set(u,{bytes:o,createdAt:Date.now()}),{kind:"upload_file",token:u,byteLength:i,mimeType:s,fileName:c,durable:!1}}catch{return}}};$(bs,"NAV_PREFLIGHT_TIMEOUT_MS",1500);var gs=bs;function fh(e){return e==="open_url_new_tab"?F.open_new_tab:String(e||"").trim()}function Iu(e){return e==="host_only"?"host_only":"registrable_domain"}function ku(e){return e==="allow"||e==="block"||e==="open_new_tab_notice"?e:"open_new_tab_notice"}function Ru(e){return e==="open_new_tab"||e==="same_tab"?e:"same_tab"}function Zo(e,t,n,r){let o=Number(e);return Number.isFinite(o)?Math.max(n,Math.min(r,Math.floor(o))):t}function ms(e,t){let n=String(e||"").trim();if(!n)return null;try{return new URL(n,t).toString()}catch{return null}}function Su(e){if(e instanceof HTMLAnchorElement&&e.href)return e;let t=e.closest?.("a[href]");return t instanceof HTMLAnchorElement&&t.href?t:null}function hs(e,t="CAPABILITY_UNAVAILABLE"){return{success:!1,error:e,allowFallback:!0,errorDetails:{code:t,message:e,retryable:!1}}}var Au=new Set([F.describe_images,F.wait_action,F.wait_for_element,F.answer_task,F.solve_captcha,F.network_run_recipe]),ph=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 mh(e){return{frameworks:(e.frameworks||[]).filter(n=>n in ia).map(n=>ia[n]),listenersRaw:e.listenersRaw??"",role:e.role??null,pattern:e.pattern,value:e.value??null}}async function Cu(e){try{let n=(e.ownerDocument||document).defaultView||window,r=n.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",i=n[r]?.flushScan;if(typeof i=="function"){await i({mode:"priority",includeShadow:!0,includeSameOriginIframes:!0,budgetMs:1500});return}n.rtrvrAIMarkInteractiveElements?.()}catch{}}function hh(e,t){if(t!==F.click_element)return"standard";let n=Pr(e||"");if(!n)return"standard";let r=new Set(n.entries.map(a=>Zn[a.id]).filter(a=>typeof a=="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 s=r.has("touchstart"),c=r.has("touchend");return s&&c?"touch-sequence":"standard"}function Lu(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 Nu(e){let t=Number(e);if(!Number.isFinite(t))return null;let n=Math.trunc(t);return n>0?n:null}function Du(e){let t=[];for(let n of Si){let r=e?.[n];if(r==null)continue;if(Array.isArray(r)){for(let i of r){let s=Nu(i);s!=null&&t.push(s)}continue}let o=Nu(r);o!=null&&t.push(o)}return Array.from(new Set(t))}function gh(e){return Du(e).length>0}function Ha(e){let t=Du(e);return t.length?t[0]:null}function bh(e,t){let n=t.toLowerCase(),r=["button","a","input","textarea","select","label","[role]","div","span"],o=e.querySelectorAll(r.join(","));for(let i of Array.from(o))if((i.textContent||"").trim().toLowerCase().includes(n)||(i.getAttribute("aria-label")||"").toLowerCase().includes(n))return i;return null}async function yh(e){if(e instanceof HTMLCanvasElement){let o=e.toDataURL(),i=Ou(o);if(!i)throw new Error("canvas toDataURL failed");return i}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 Mu(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 Mu(r[2],e.getAttribute("aria-label")||void 0);throw new Error("unsupported element")}function Ou(e){let t=/^data:([^;]+);base64,(.*)$/.exec(e);return t?{mimeType:t[1],data:t[2]}:null}async function Mu(e,t){if(!e)throw new Error("missing src");if(e.startsWith("data:")){let c=Ou(e);if(!c)throw new Error("invalid data url");return{...c,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(),i=Lu(o),s=r.type||"image/png";return{data:i,mimeType:s,displayName:t}}function Pu(e,t){e.onmessage=async n=>{let r=n.data;if(!r||r.t!=="req")return;let{id:o,method:i,params:s}=r;try{let c=t[i];if(!c)throw new Error(`No handler for ${i}`);let a=await c(s);e.postMessage({t:"res",id:o,ok:!0,result:a})}catch(c){e.postMessage({t:"res",id:o,ok:!1,error:{message:c?.message||String(c)}})}}}var vh="Rover",Eh="https://www.rtrvr.ai/rover/mascot.mp4",Th="https://www.rtrvr.ai/rover/mascot.webm";function Bu(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function Uu(e){try{return new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return""}}function wh(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 _h(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||Bu("trace")}function wt(e){return String(e||"").trim()}function xh(e){let t=String(e||"").trim();return t?t.slice(0,64):vh}function Ih(e){let t=String(e||"").trim();return t?t[0].toUpperCase():"R"}function kh(e){return String(e||"").replace(/[^a-zA-Z0-9]/g,"").slice(0,3).toUpperCase()||"RVR"}function Fu(e){let t=wt(e),n=/^(Analyze|Route|Execute|Verify|Complete):\s*(.*)$/i.exec(t);if(!n)return{plainTitle:t};let r=n[1].toLowerCase(),o=wt(n[2]||t);return{stage:r,plainTitle:o||t}}function Rh(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=Fu(e.title||"");if(n.stage==="analyze"||n.stage==="route"||n.stage==="complete")return"detail"}return"primary"}function qa(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 i=document.createElement("a");i.className="rvLink",i.href=o[2],i.target="_blank",i.rel="noopener noreferrer",i.textContent=o[1],e.appendChild(i)}else if(o[3]){let i=document.createElement("strong");i.textContent=o[3],e.appendChild(i)}r=o.index+o[0].length}r<t.length&&e.appendChild(document.createTextNode(t.slice(r)))}function br(e){let t=document.createDocumentFragment(),n=e.split(`
|
|
11
|
-
`),r=null;for(let o of n){let
|
|
12
|
-
`),o=0,
|
|
13
|
-
`),
|
|
14
|
-
`),
|
|
2
|
+
"use strict";var __roverSDK=(()=>{var Li=Object.defineProperty;var zh=Object.getOwnPropertyDescriptor;var jh=Object.getOwnPropertyNames;var Gh=Object.prototype.hasOwnProperty;var Xh=(e,t,n)=>t in e?Li(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Kh=(e,t)=>{for(var n in t)Li(e,n,{get:t[n],enumerable:!0})},Yh=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of jh(t))!Gh.call(e,o)&&o!==n&&Li(e,o,{get:()=>t[o],enumerable:!(r=zh(t,o))||r.enumerable});return e};var Qh=e=>Yh(Li({},"__esModule",{value:!0}),e);var D=(e,t,n)=>Xh(e,typeof t!="symbol"?t+"":t,n);var e_={};Kh(e_,{__roverInternalsForTests:()=>ZT,boot:()=>ki,close:()=>Ec,endTask:()=>wc,getState:()=>Cu,hide:()=>Ru,identify:()=>xu,init:()=>Iu,installGlobal:()=>Ph,newTask:()=>Ci,open:()=>Ai,registerTool:()=>Nu,send:()=>Au,show:()=>Su,shutdown:()=>pc,update:()=>fc});var U;(function(e){e.click_element="click_element",e.type_into_element="type_into_element",e.type_and_enter="type_and_enter",e.select_dropdown_value="select_dropdown_value",e.clear_element="clear_element",e.focus_element="focus_element",e.check_field_validity="check_field_validity",e.select_text="select_text",e.hover_element="hover_element",e.right_click_element="right_click_element",e.double_click_element="double_click_element",e.press_key="press_key",e.mouse_wheel="mouse_wheel",e.dispatch_pointer_path="dispatch_pointer_path",e.drag_element="drag_element",e.drag_and_drop="drag_and_drop",e.adjust_slider="adjust_slider",e.scroll_page="scroll_page",e.scroll_to_element="scroll_to_element",e.swipe_element="swipe_element",e.long_press_element="long_press_element",e.pinch_zoom="pinch_zoom",e.go_back="go_back",e.go_forward="go_forward",e.goto_url="goto_url",e.refresh_page="refresh_page",e.open_new_tab="open_new_tab",e.switch_tab="switch_tab",e.close_tab="close_tab",e.describe_images="describe_images",e.google_search="google_search",e.network_run_recipe="network_run_recipe",e.rover_external_read_context="rover_external_read_context",e.rover_external_act_context="rover_external_act_context",e.copy_text="copy_text",e.paste_text="paste_text",e.wait_action="wait_action",e.wait_for_element="wait_for_element",e.answer_task="answer_task",e.upload_file="upload_file",e.solve_captcha="solve_captcha"})(U||(U={}));var o_=new Set(Object.values(U)),Di=["element_id","source_element_id","target_element_id","center_element_id","element_ids"],Jh=40;function Pu(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,Jh)}var Tn;(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"})(Tn||(Tn={}));var Bu={[Tn.Unknown]:"unknown",[Tn.React]:"react",[Tn.Vue]:"vue",[Tn.Angular]:"angular",[Tn.Svelte]:"svelte",[Tn.JQuery]:"jquery"},Ic={react:Tn.React,vue:Tn.Vue,angular:Tn.Angular,svelte:Tn.Svelte,jquery:Tn.JQuery},wt;(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"})(wt||(wt={}));var a_={[wt.Other]:"other",[wt.Inline]:"inline",[wt.Delegated]:"delegated",[wt.React]:"react",[wt.Vue]:"vue",[wt.Angular]:"angular",[wt.Svelte]:"svelte",[wt.JQuery]:"jquery",[wt.Native]:"native"},c_={inline:wt.Inline,delegated:wt.Delegated,react:wt.React,vue:wt.Vue,angular:wt.Angular,svelte:wt.Svelte,jquery:wt.JQuery,other:wt.Other,native:wt.Native},_e;(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"})(_e||(_e={}));var Oi={[U.click_element]:_e.click_element,[U.type_into_element]:_e.type_into_element,[U.type_and_enter]:_e.type_and_enter,[U.select_dropdown_value]:_e.select_dropdown_value,[U.clear_element]:_e.clear_element,[U.focus_element]:_e.focus_element,[U.hover_element]:_e.hover_element,[U.right_click_element]:_e.right_click_element,[U.double_click_element]:_e.double_click_element,[U.long_press_element]:_e.long_press_element,[U.drag_element]:_e.drag_element,[U.drag_and_drop]:_e.drag_and_drop,[U.swipe_element]:_e.swipe_element,[U.adjust_slider]:_e.adjust_slider,[U.describe_images]:_e.describe_images,[U.scroll_to_element]:_e.scroll_to_element,[U.paste_text]:_e.paste_text,[U.check_field_validity]:_e.check_field_validity,[U.select_text]:_e.select_text,[U.mouse_wheel]:_e.mouse_wheel,[U.copy_text]:_e.copy_text,[U.upload_file]:_e.upload_file,[U.go_back]:_e.go_back,[U.go_forward]:_e.go_forward,[U.refresh_page]:_e.refresh_page,[U.press_key]:_e.press_key,[U.scroll_page]:_e.scroll_page,[U.wait_action]:_e.wait_action,[U.wait_for_element]:_e.wait_for_element,[U.pinch_zoom]:_e.pinch_zoom,[U.goto_url]:_e.goto_url,[U.google_search]:_e.google_search,[U.open_new_tab]:_e.open_new_tab,[U.switch_tab]:_e.switch_tab,[U.close_tab]:_e.close_tab,[U.solve_captcha]:_e.solve_captcha,[U.answer_task]:_e.answer_task,[U.dispatch_pointer_path]:_e.dispatch_pointer_path,[U.network_run_recipe]:_e.network_run_recipe,[U.rover_external_read_context]:_e.rover_external_read_context,[U.rover_external_act_context]:_e.rover_external_act_context},Uu=Object.fromEntries(Object.entries(Oi).map(([e,t])=>[t,e]));function Pi(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 Hu={semanticIdStart:1,interactiveIdStart:1,includeFrameContents:!0,clearIframes:!0,frameContextLabel:null,signalProvider:null,disableDomAnnotations:!1},en={...Hu},Ui=globalThis;function qu(e){en={...Hu,...e||{}}}function po(){return en.signalProvider??null}function dt(){try{return typeof Ui.document<"u"?Ui.document:null}catch{return null}}function lr(){try{return typeof Ui.window<"u"?Ui.window:null}catch{return null}}function K(e,t){if(e&&typeof e=="object"){let n=e.ownerDocument;if(n)return n;if(e.nodeType===9)return e}return t??dt()??{}}function ye(e,t){return K(e,t?t.document:null)?.defaultView??t??lr()??{}}function re(e,t){return e?.defaultView??t??lr()??{}}function Fi(e,t){try{return e?.getElementById?.(t)??null}catch{return null}}function Hi(e,t){try{return e?.querySelector?.(t)??null}catch{return null}}function Sc(e,t){try{return Array.from(e?.querySelectorAll?.(t)??[])}catch{return[]}}function Ms(e){try{return e.contentDocument||(e.contentWindow?.document??null)}catch{return null}}function qi(e,t){let n=e.CSS?.escape;return typeof n=="function"?n(t):t.replace(/([^\w-])/g,"\\$1")}function _n(e,t){try{return e[t]}catch{return}}function ur(e,t){return!!e&&String(e.tagName||"").toUpperCase()===t.toUpperCase()}function $u(e,t){let n=_n(t,"HTMLAnchorElement");return n?e instanceof n:ur(e,"A")}function Dn(e,t){let n=_n(t,"HTMLInputElement");return n?e instanceof n:ur(e,"INPUT")}function Vn(e,t){let n=_n(t,"HTMLTextAreaElement");return n?e instanceof n:ur(e,"TEXTAREA")}function Wu(e,t){let n=_n(t,"HTMLLabelElement");return n?e instanceof n:ur(e,"LABEL")}function Vu(e,t){let n=_n(t,"HTMLSelectElement");return n?e instanceof n:ur(e,"SELECT")}function zu(e,t){let n=_n(t,"HTMLSlotElement");return n?e instanceof n:ur(e,"SLOT")}function ju(e,t){let n=_n(t,"HTMLButtonElement");return n?e instanceof n:ur(e,"BUTTON")}function Gu(e,t){let n=_n(t,"HTMLImageElement");return n?e instanceof n:ur(e,"IMG")}function Xu(e,t){let n=_n(t,"HTMLVideoElement");return n?e instanceof n:ur(e,"VIDEO")}function Ku(e,t){let n=_n(t,"HTMLCanvasElement");return n?e instanceof n:ur(e,"CANVAS")}function kt(e,t){if(!e||e.nodeType!==1)return!1;let n=_n(t,"HTMLElement");return n?e instanceof n:typeof e.tagName=="string"}function En(e){return!!e&&e.nodeType===11&&typeof e.host=="object"&&typeof e.mode=="string"}function ho(e){if(!e||e.nodeType!==1)return!1;let t=K(e),r=re(t).Element;return r?e instanceof r:typeof e.tagName=="string"}function Ls(e){if(!e||e.nodeType!==1)return!1;let t=K(e),r=re(t).HTMLIFrameElement;return r&&e instanceof r?!0:String(e.tagName||"").toUpperCase()==="IFRAME"}function Zh(e,t){if(!e)return!1;if(e.nodeType===9)return!0;let n=_n(t,"Document");return n?e instanceof n:!1}function em(e,t){if(!e)return!1;let n=_n(t,"Window");if(n)return e instanceof n;try{return e.window===e}catch{return!1}}function $i(e){try{return e.document}catch{return null}}function Wi(e,t){if(Zh(e,t))try{return e.documentElement}catch{return null}if(em(e,t)){let n=$i(e);if(!n)return null;try{return n.documentElement}catch{return null}}return null}function Bi(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 Fu(e,t,n){try{let r=K(t,n);return new URL(e,r.baseURI).href}catch{return e}}function Vi(e,t){let n=e.tagName.includes("-"),r=e.getAttribute("href")||e.getAttribute("src")||e.getAttribute("data")||e.getAttribute("action");if(r){let o=Fu(r,e,t);return o.trim().toLowerCase().startsWith("javascript:")?null:o}if(n)return null;try{let o=e,s=Bi(o.href)||Bi(o.src)||Bi(o.data)||Bi(o.action);return s?Fu(s,e,t):null}catch{return null}}var Yu=["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"],Fe={};Yu.forEach((e,t)=>{Fe[e]=t});var kr={};Yu.forEach((e,t)=>{kr[t]=e});function mo(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 tm(e){let t=mo(e);if(t){let n=new Set;for(let{id:r}of t.entries)n.add(r);return[...n]}return[]}function Ds(e){return qo(e).map(n=>kr[n]).filter(n=>!!n)}function qo(e){let t=po();if(t?.getEventHandlerIds)try{let o=t.getEventHandlerIds(e);if(o&&o.length)return o}catch{}let n=e.getAttribute(Vr),r=tm(n);return!r||r.length===0?[]:r}var Rc=["media"],Qu=new Set(Rc),Ac=["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 Ju=new Set(Ac),xr=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"]),Os=new Set(["group","region","section","banner","contentinfo","main","navigation","complementary","form","article","document","presentation","none"]);var Zu=["none","presentation"],Le;(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"})(Le||(Le={}));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"]},Ps={heading:{selector:"h6,h1,h3,h2,h5,h4"},checkbox:{conditionalSelectors:[{selector:"input",conditions:[{type:Le.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:Le.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"grid"}]},{selector:"td",conditions:[{type:Le.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"treegrid"}]},{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:Le.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"treegrid"},{type:Le.HAS_TABLE_COLUMN_DATA,hasData:!0},{type:Le.HAS_TABLE_ROW_DATA,hasData:!0}]}]},slider:{conditionalSelectors:[{selector:"input",conditions:[{type:Le.PROPERTY_VALUE_MATCH,property:"type",values:["range"]}]}]},listitem:{selector:"li"},contentinfo:{conditionalSelectors:[{selector:"footer",conditions:[{type:Le.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:Le.PROPERTY_VALUE_MATCH,property:"type",values:["submit","reset","image","button"]}]}]},status:{selector:"output"},form:{conditionalSelectors:[{selector:"form",conditions:[{type:Le.HAS_ACCESSIBLE_NAME}]}]},article:{selector:"article"},textbox:{selector:"textarea",conditionalSelectors:[{selector:"input:not([list])",conditions:[{type:Le.PROPERTY_VALUE_MATCH,property:"type",values:["url","text","tel","email"]}]}]},radio:{conditionalSelectors:[{selector:"input",conditions:[{type:Le.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:Le.HAS_TABLE_ROW_DATA,hasData:!1}]}]},list:{selector:"ul,ol,menu"},region:{conditionalSelectors:[{selector:"section",conditions:[{type:Le.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:Le.PROPERTY_VALUE_MATCH,property:"type",values:["search"]}]}]},cell:{conditionalSelectors:[{selector:"td",conditions:[{type:Le.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"table"}]},{selector:'th:not([scope="rowgroup"]):not([scope="row"]):not([scope="colgroup"]):not([scope="col"])',conditions:[{type:Le.ANCESTOR_ROLE_REQUIRED,tag:"table",role:"table"},{type:Le.HAS_TABLE_COLUMN_DATA,hasData:!0},{type:Le.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:Le.HAS_TABLE_COLUMN_DATA,hasData:!1},{type:Le.HAS_TABLE_ROW_DATA,hasData:!0}]}]},dialog:{selector:"dialog"},listbox:{selector:"select[multiple],datalist",conditionalSelectors:[{selector:"select",conditions:[{type:Le.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:Le.PROPERTY_VALUE_MATCH,property:"type",values:["number"]}]}]},math:{selector:"math"},combobox:{selector:"select:not([size]):not([multiple])",conditionalSelectors:[{selector:"select:not([multiple])",conditions:[{type:Le.ATTRIBUTE_LESS_THAN,attribute:"size",value:2}]},{selector:"input[list]",conditions:[{type:Le.PROPERTY_VALUE_MATCH,property:"type",values:["url","text","tel","search","email"]}]}]},banner:{conditionalSelectors:[{selector:"header",conditions:[{type:Le.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"}},Vr="rtrvr-ls",Ir="rtrvr-ro",Cc="rtrvr-mw-ready",Bs="rtrvr-mw-busy",Nc="rtrvr-mwa-ready",td=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"]),nd=["BUTTON","INPUT","METER","OUTPUT","PROGRESS","SELECT","TEXTAREA"],rd=["h1","h2","h3","h4","h5","h6"],od="http://www.w3.org/1999/xhtml",sd="http://www.w3.org/2000/svg",jt="rtrvr-label";var Gi=new Set(["NOSCRIPT","SCRIPT","STYLE","META"]),go="CODE",bo="PRE",id="aria-hidden",ad="target";var zi;(function(e){e[e.value=0]="value",e[e.alt=1]="alt",e[e.list=2]="list",e[e.title=3]="title"})(zi||(zi={}));var $o;(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"})($o||($o={}));var ji;(function(e){e[e.VALUENOW=0]="VALUENOW",e[e.VALUETEXT=1]="VALUETEXT"})(ji||(ji={}));var Mc=new Set([Fe.click,Fe.dblclick,Fe.doubleclick,Fe.contextmenu,Fe.auxclick,Fe.pointerdown,Fe.pointerup,Fe.mousedown,Fe.mouseup,Fe.touchstart,Fe.touchend,Fe.keydown,Fe.keyup,Fe.input,Fe.beforeinput,Fe.change,Fe.submit,Fe.reset,Fe.paste,Fe.dragstart,Fe.dragend,Fe.drop]),cd=new Set([...Mc,Fe.scroll,Fe.wheel,Fe.mouseenter,Fe.mouseover,Fe.focus,Fe.blur,Fe.focusin,Fe.focusout]),Xi=new Set(["click","dblclick","auxclick","contextmenu","mousedown","mouseup","pointerdown","pointerup","touchstart","touchend"]),Lc=new Set(["input","change","beforeinput","keydown","keyup","keypress","paste","compositionstart","compositionend"]),Dc=new Set(["drag","dragstart","dragend","dragenter","dragleave","dragover","drop"]);var zr;(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"})(zr||(zr={}));var Us;(function(e){e[e.HTML=0]="HTML",e[e.SVG=1]="SVG"})(Us||(Us={}));var Ki;(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"})(Ki||(Ki={}));var Yi;(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"})(Yi||(Yi={}));var dn;(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"})(dn||(dn={}));var qt;(function(e){e[e.display=0]="display",e[e.content=1]="content",e[e.beforeDisplay=2]="beforeDisplay",e[e.afterDisplay=3]="afterDisplay",e[e.beforeContent=4]="beforeContent",e[e.afterContent=5]="afterContent",e[e.width=6]="width",e[e.height=7]="height",e[e.minWidth=8]="minWidth",e[e.minHeight=9]="minHeight",e[e.position=10]="position",e[e.top=11]="top",e[e.left=12]="left",e[e.right=13]="right",e[e.bottom=14]="bottom",e[e.paddingTop=15]="paddingTop",e[e.paddingRight=16]="paddingRight",e[e.paddingBottom=17]="paddingBottom",e[e.paddingLeft=18]="paddingLeft",e[e.marginTop=19]="marginTop",e[e.marginRight=20]="marginRight",e[e.marginBottom=21]="marginBottom",e[e.marginLeft=22]="marginLeft",e[e.cursor=23]="cursor",e[e.opacity=24]="opacity",e[e.visibility=25]="visibility",e[e.overflowX=26]="overflowX",e[e.overflowY=27]="overflowY",e[e.backgroundColor=28]="backgroundColor",e[e.color=29]="color",e[e.borderWidth=30]="borderWidth",e[e.borderStyle=31]="borderStyle",e[e.boxShadow=32]="boxShadow",e[e.outline=33]="outline"})(qt||(qt={}));var Sr;(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"})(Sr||(Sr={}));var nm=[...Ac,...Object.keys(Ps),...Rc],ld=[...new Set(nm)],Wo={};ld.forEach((e,t)=>{Wo[e]=t});var Fs={};ld.forEach((e,t)=>{Fs[t]=e});var Qi=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 Hs(e){let t=po();if(t?.getRoleHint)try{let o=t.getRoleHint(e);if(o)return o}catch{}let n=e.getAttribute(Ir);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=Fs[o];if(s)return s}}return r}function Vo(e){return Array.from(new Set(e))}function ud(e,t){if(!e||e.length===0)return Vo(t);let n=new Set([...e,...t]);return Vo(Array.from(n))}function wn(e,t){let r=po()?.getEventHandlerIds?.(e)??qo(e),o=r.length>0&&r.some(a=>Mc.has(a)),s=Ji(e),i=t?Os.has(t):!1;return{element:e,semanticRole:t,eventHandlerIndices:r,isEditableRegion:s,hasNodeWorthyHandlers:o,isLikelyStructuralContainer:i}}var rm=new Set(["text","search","url","tel","password","email","number","date","datetime-local","time","month","week","color"]);function om(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 sm(e){let t=ye(e);if(!Dn(e,t))return!1;let n=(e.type||"text").toLowerCase();return rm.has(n)?!e.disabled&&!e.readOnly:!1}function im(e){let t=ye(e);return Vn(e,t)&&!e.disabled&&!e.readOnly}function am(e){let t=e;return!(!t.isContentEditable||t.getAttribute("aria-readonly")==="true"||t.getAttribute("aria-disabled")==="true")}function Ji(e){return!e||!om(e)?!1:!!(sm(e)||im(e)||am(e))}function qs(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 $s(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=!en.disableDomAnnotations,o=[`[id=${t}]`],s=ye(e);if(Ls(e)){let c=$s(e.id||e.getAttribute("name")||"unnamed");o.push(`[iframe=${c}]`)}if(n){let c=$s(n);o.push(`[iframeRoot=${c}]`)}if(Gu(e,s)&&o.push(`[size=${e.clientWidth}x${e.clientHeight}]`),(Xu(e,s)||Ku(e,s))&&o.push(`[size=${e.clientWidth}x${e.clientHeight}]`),Dn(e,s)||Vn(e,s)){let c=cm(e);o.push(...c)}e.getAttribute(id)==="true"&&o.push("[aria-hidden=true]"),e.disabled&&o.push("[disabled]"),r&&$u(e,s)&&e.setAttribute(ad,"_self");let a=o.join(" ");return r&&e.setAttribute(jt,a),a}function cm(e){let t=[],n=ye(e),r=Dn(e,n);if(r&&e.type&&e.type!=="text"&&t.push(`[type=${e.type}]`),e.name){let o=$s(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=$s(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=$s(o).replace(/\\/g,"\\\\").replace(/"/g,'\\"');t.push(`[value="${s}"]`)}return t}var yo=new Qi,Oc=new WeakMap;function fd(){Oc=new WeakMap}function Zi(e){let t=Oc.get(e);if(t)return t;let n=yo.generateId();return Oc.set(e,n),n}var ea=new Map,Pc=new WeakMap;function pd(){ea.clear(),Pc=new WeakMap}function Bc(e,t){try{typeof WeakRef<"u"?ea.set(e,new WeakRef(t)):ea.set(e,t)}catch{}}function Ws(e){let t=ea.get(e);if(!t)return null;let n=t instanceof WeakRef?t.deref():t;return!n||n.isConnected===!1?null:n}function jr(e){let t=null,n=Zi(e);if(en.frameContextLabel)t=en.frameContextLabel;else{let o=dt();if(o&&e.ownerDocument!==o)try{let i=e.ownerDocument?.defaultView?.frameElement?.getAttribute(jt)||"",a=i?qs(i):null;t=a?String(a):null}catch{t=""}}let r=dd({element:e,elementID:n,frameContextLabel:t});if(Bc(n,e),r)try{Pc.set(e,r)}catch{}return r}function hd(e){return Pc.get(e)??null}function Uc(e,t){try{e.querySelectorAll?.(`[${jt}]`)?.forEach(r=>r.removeAttribute(jt))}catch{}if(t.includeShadow)try{let n=e.querySelectorAll?.("*");if(n)for(let r of Array.from(n))try{let o=r.shadowRoot;o&&Uc(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=Ms(r);o?.body&&Uc(o.body,t)}catch{}}catch{}}function md(e,t={}){if(en.disableDomAnnotations)return;let n=ho(e)?ye(e):re(e)??window,r=Wi(e,n)??e;if(r){try{r.removeAttribute?.(jt)}catch{}Uc(r,{includeShadow:t.includeShadow??!0,includeIframes:t.includeIframes??!0})}}var dr={},Fc=new WeakMap,ta=new WeakSet;function gd(){dr={},Fc=new WeakMap,ta=new WeakSet,fd()}function Gt({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:s,originatedFromParent:i,elementContext:a}){let c=Zi(e);Bc(c,e);let l=dr[c];if(i){if(!l){let u={nodeCategory:e.nodeType,provisionalFromParent:!0},m=e.nodeName;m&&m.trim()&&(u.elementName=m);let T=e.getAttribute("role");T&&(u.preservedAttributes={1:T});let h=e.tagName;h&&(u.elementTag=h),dr[c]=u}}else{if(l&&!l.provisionalFromParent){if((o||zo(e))&&(l.isFrameElement=!0,s&&s.length>0&&(l.frameContent=s)),a){let{eventHandlerIndices:u,isEditableRegion:m}=a;if(u&&u.length>0){let T=Vo(u);T.length>0&&(l.eventHandlers=ud(l.eventHandlers,T))}m&&(l.isEditable=!0)}return c}if(ta.has(e))return c;ta.add(e);try{dr[c]=bd({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:s,elementContext:a})}finally{ta.delete(e)}}return c}function Vs(e){let t=Fc.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=yo.generateId(),i={textContent:r,nodeCategory:e.nodeType};return o&&o!==r&&(i.rawData=o),dr[s]=i,Fc.set(e,s),s}function vd(e,t){let n=_d(e),{minY:r,maxY:o}=n.getCellBounds(t);return n.getRows().slice(r,o+1).some(s=>s.some(zs))}function Td(e,t){let n=_d(e),{minX:r,maxX:o}=n.getCellBounds(t);return n.getRows().some(s=>s.slice(r,o+1).some(zs))}var ra=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 _d(e){let n=ye(e).TableGrid||ra,r=new n;e.tHead!==null&&r.merge(na(e.tHead.rows)),Array.from(e.tBodies).forEach(s=>{r.merge(na(s.rows))});let o=[];for(let s of Array.from(e.children))Hc(s)&&vo(s,"tr")&&o.push(s);return r.merge(na(o)),e.tFoot!==null&&r.merge(na(e.tFoot.rows)),r}function na(e){let t=new ra,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];)!zs(t.getCellAt(o,r))&&n[o]&&t.setCellAt(o,r,n[o]),o++;for(let i=o;i<o+s.colSpan;i++){yd(s)===0&&(n[i]=s,t.setCellAt(i,r,s));for(let a=r;a<r+yd(s);a++)zs(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&&!zs(t.getCellAt(s,r))&&t.setCellAt(s,r,i)}}return t}function yd(e){let t=e.getAttribute("rowSpan");if(t===null||t.trim()==="")return 1;let n=Number(t);return isNaN(n)?1:n}function zs(e){return e!==void 0&&vo(e,"td")}function zn(e){let t=e.tagName?.toLowerCase();if(t==="code"||t==="pre"){let r=bm(e);if(r)return r}let n=Ed(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 lm(e)}}if(t==="td"&&e.getAttribute("role")===null)return"cell";if(n!==null&&t==="th"){let r=e.getAttribute("role");if(r&&wd(r))return r;let o=e;return o.scope==="col"||o.hasAttribute("aria-sort")?"columnheader":o.scope==="row"?"rowheader":"cell"}return n}function lm(e){return Hs(e)??null}function Ed(e){let t=e.getAttribute("role");if(t!==null)return Zu.includes(t)||!wd(t)?null:t;let n=e.tagName.toLowerCase();return(ed[n]??[]).find(o=>um(e,o))||null}function um(e,t){let n=Ps[t],r=n?.selector;if(r&&oa(e,r))return!0;let o=n?.conditionalSelectors;return o?o.some(i=>oa(e,i.selector)&&i.conditions.every(c=>fm(e,c))):!1}function dm(e,t){let n=(t||"").trim().replace(/^#/,"");if(!n)return null;try{let r=e.getRootNode?.();if(En(r)){let o=ye(e),s=`#${qi(o,n)}`,i=Hi(r,s);if(i)return i}}catch{}return Fi(K(e),n)}function fm(e,t){switch(t.type){case Le.ATTRIBUTE_GREATER_THAN:{let n=e.getAttribute(t.attribute);return n!==null&&Number(n)>t.value}case Le.ATTRIBUTE_LESS_THAN:{let n=e.getAttribute(t.attribute);return n!==null&&Number(n)<t.value}case Le.HAS_ACCESSIBLE_NAME:return e.hasAttribute("aria-label")?!0:(e.getAttribute("aria-labelledby")||"").split(/\s+/).filter(Boolean).some(r=>dm(e,r)!=null);case Le.FORBIDDEN_ANCESTORS:return Rr(e,t.selector)===null;case Le.BOOLEAN_PROPERTY:return e[t.property]===t.value;case Le.PROPERTY_VALUE_MATCH:return t.values.some(n=>n===e[t.property]);case Le.ANCESTOR_ROLE_REQUIRED:{let n=e.parentElement;if(n===null)return!1;let r=Rr(n,t.tag);return r!==null&&Ed(r)===t.role}case Le.HAS_TABLE_COLUMN_DATA:{let n=Rr(e,"table");return n===null?!1:t.hasData===Td(n,e)}case Le.HAS_TABLE_ROW_DATA:{let n=Rr(e,"table");return n===null?!1:t.hasData===vd(n,e)}default:return pm(t),!1}}function pm(e){throw new Error(`unexpected value ${e}!`)}function wd(e){return mm(e)||gm(e)||hm(e)}function hm(e){return Qu.has(e)}function mm(e){return Ju.has(e)}function gm(e){return Ps.hasOwnProperty(e)}function bm(e){if(e.tagName!==go&&e.tagName!==bo)return null;if(Ds(e).some(r=>r==="click"||r==="copy"))return"button";let n=e.getAttribute("tabindex");return n!==null&&parseInt(n,10)>=0?"button":e.tagName===bo||e.tagName===go&&e.closest("pre")?"code":null}var ym={[qt.display]:[qt.beforeDisplay,qt.afterDisplay],[qt.content]:[qt.beforeContent,qt.afterContent]},qc=new Map,vm={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 Tm(e,t){if(!qc.has(e)){let n=vm[t]||t.replace(/([A-Z])/g,"-$1").toLowerCase();qc.set(e,n)}return qc.get(e)}var _m={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 Id(e,t,n){let r=_m[e];return r?r(t,n):t.trim()!==""&&!["initial","inherit","unset"].includes(t)}function Sd(e){let t={},n=ye(e);if(!kt(e,n))return t;let r=n.getComputedStyle(e),o=new Map([[qt.beforeDisplay,n.getComputedStyle(e,"::before")],[qt.afterDisplay,n.getComputedStyle(e,"::after")],[qt.beforeContent,n.getComputedStyle(e,"::before")],[qt.afterContent,n.getComputedStyle(e,"::after")]]);for(let s in qt)if(isNaN(Number(s))){let i=qt[s],a=Tm(i,s),c=ym[i];c?((i===qt.display||i===qt.content)&&kd(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)):kd(r,a,i,s,t,e)}return t}function kd(e,t,n,r,o,s){if(e){let i=e.getPropertyValue(t);i&&Id(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&&Id(r,s))&&(o[n]=s)}}function To(e,t){let n=ye(e);if(!kt(e,n))return!0;if(t&&xr.has(t))return!1;if(e.hasAttribute("hidden")||Rr(e,"[hidden]")!==null||Rr(e,"[inert]")!==null)return!0;let r=n.getComputedStyle(e);if(r.display==="none"||r.visibility==="hidden"||r.visibility==="collapse"||e.getClientRects().length===0)return!0;let o=e.getBoundingClientRect(),s=1e6;return Math.abs(o.left)>s||Math.abs(o.top)>s}function js(e){return jn(e)&&e.classList.contains("jasmine_html-reporter")}function Em(e){let t=e.getAttribute("role");return t==="presentation"||t==="none"}function Rd(e){return e?e.split(/\s+/).map(t=>t.trim()).filter(Boolean).map(t=>t.replace(/^#/,"")):[]}function Ad(e,t){let n=(t||"").trim().replace(/^#/,"");if(!n)return null;try{let o=e.getRootNode?.();if(En(o)){let s=ye(e),i=`#${qi(s,n)}`,a=Hi(o,i);if(a)return a}}catch{}let r=K(e);return Fi(r,n)}function $c(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=wm(o,s,s+8192),a=$c.apply(null,i);for(let c=0;c<a.length;c++)n.push(a[c])}else n.push(o)}return n}function wm(e,t,n){return arguments.length<=2?Array.prototype.slice.call(e,t):Array.prototype.slice.call(e,t,n)}function Cd(e,t){return km(e,t).concat(xm(e))}function km(e,t){return $c(Vc(e).map(r=>Bd(r)&&jn(r)?Nd(r,t):r))}function Nd(e,t){if(!e||To(e,t))return[];if(!Em(e))return[e];let n=Array.from(e.children);return $c(n.map(r=>Nd(r,t)))}function Md(e){let t=Rd(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=Ad(e,o);s&&s!==e&&n.push(s)}return n}function xm(e){let t=Md(e);for(let n of t)n["aria-owned-by"]=e;return t}function Ld(e){let t=ye(e),n=K(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)<=Am(e))return!1;let o=Im(e);return!o||!Rm(o)||!Nm(e)||o.getAttribute("role")==="dialog"||e.getAttribute("role")==="dialog"?!1:Cm(e)}function Im(e){return[e.previousElementSibling,e.nextElementSibling,...Array.from(e.children),...e.parentElement?[e.parentElement.previousElementSibling,e.parentElement.nextElementSibling]:[]].filter(n=>n!==null).find(Sm)||null}function Sm(e){if(To(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 Rm(e){let t=ye(e),n=e.getBoundingClientRect();return n.top<=0&&n.left<=0&&n.bottom>=t.innerHeight&&n.right>=t.innerWidth}function Am(e){let t=K(e),n=ye(e),r=n?.getComputedStyle;if(!r)return 0;let o=Sc(t,"*").filter(s=>s!==e&&!To(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 Cm(e){return e.querySelectorAll('a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])').length>0}function Nm(e){let t=e.parentElement;if(!t)return!1;for(let n of Array.from(t.children))if(n!==e&&!To(n)&&n.getAttribute("aria-hidden")!=="true")return!1;return!0}function Mm(){try{let t=dt()?.querySelector?.("dialog:modal");return'[aria-modal="true"], dialog:modal'}catch{return'[aria-modal="true"]'}}var Dd=Mm();function Lm(e){return e.getAttribute("aria-disabled")==="true"||e.hasAttribute("disabled")}function Wc(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=K(e),r=new URL(t,n.baseURI);return r.protocol==="javascript:"&&(r.pathname.trim()!==""||r.search.trim()!==""||r.hash.trim()!=="")}catch{return!1}}function Od(e){return td.has(e)}function Dm(e){let t=e.parentElement,n=K(e);if(!(!t||t===n.body||t===n.documentElement))return Gt({targetElement:t,originatedFromParent:!0})}function bd({targetElement:e,parentDisabled:t,semanticRole:n,excludeLabels:r,isFrameNode:o,frameContentNodes:s,elementContext:i}){let a={nodeCategory:e.nodeType},c=t||Lm(e),l=Dm(e);if(l&&(a.parent=l),n){let Ie=Wo[n];typeof Ie=="number"?a.semanticRole=Ie:a.semanticRole=n}if(c&&(a.isDisabled=!0),i){let{eventHandlerIndices:Ie,isEditableRegion:Mt}=i,bt=Vo(Ie);bt.length>0&&(a.eventHandlers=bt),Mt&&(a.isEditable=!0)}let u=Pm(e);u&&Object.keys(u).length>0&&(a.ariaProperties=u);let m=Bm(e);m&&Object.keys(m).length>0&&(a.ariaStates=m);let T=e.nodeName;T&&T.trim()&&(a.elementName=T);let h=Sd(e);h&&Object.keys(h).length>0&&(a.computedStyles=h),To(e)&&(a.isInvisible=!0);let b=Om(e,n);b&&Object.keys(b).length>0&&(a.preservedAttributes=b),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 v=e.getAttribute("class");if(v?.trim()){v.includes("handle")&&(a.isDragHandle=!0),a.supportsHorizontalSwipe||(v.includes("horizontal")||v.includes("carousel"))&&(a.supportsHorizontalSwipe=!0),a.supportsVerticalSwipe||(v.includes("vertical")||v.includes("feed"))&&(a.supportsVerticalSwipe=!0),v.includes("dismissible")&&(a.supportsDismissSwipe=!0),(v.includes("long-press")||v.includes("hold")||v.includes("press-hold"))&&(a.supportsLongPress=!0);let Ie=a.inputType||a.preservedAttributes?.[dn.type];Ie==="submit"||Ie==="reset"||Ie==="clear"||(v.includes("submit")&&(a.preservedAttributes={...a.preservedAttributes||{},[dn.type]:"submit"}),v.includes("clear")&&(a.preservedAttributes={...a.preservedAttributes||{},[dn.type]:"clear"}),v.includes("reset")&&(a.preservedAttributes={...a.preservedAttributes||{},[dn.type]:"reset"}))}let M=Wm({element:e});M&&M.length>0&&(a.labelReferences=M);let q=e.tagName;if(q&&(a.elementTag=q),Fm(e)&&(a.hasFocus=!0),!o){let Ie=zc({element:e,semanticRole:n,parentDisabled:c,excludeLabels:r});Ie&&Ie.length>0&&(a.childElements=Ie)}let R=Ym({element:e});R&&R.length>0&&(a.ownedElements=R);let S=Vi(e);S&&(a.resourceLocator=S),(o||zo(e))&&(a.isFrameElement=!0),s&&s.length>0&&(a.frameContent=s);let F=e.type;F&&typeof F=="string"&&F.trim()&&(a.inputType=F);let z=e.placeholder;z&&typeof z=="string"&&z.trim()&&(a.placeholderText=z);let Q=e.value;Q&&typeof Q=="string"&&Q.trim()&&(a.elementValue=Q);let fe=Vm({element:e,parentDisabled:t,semanticRole:n});if(fe&&fe.length>0&&(a.selectedOptions=fe),Rr(e,"select,datalist")&&(a.nearestSelectList=!0),Hc(e))a.elementNamespace=Us.HTML;else if(Um(e)){a.elementNamespace=Us.SVG,a.svgStructure=Hm(e);let Ie=qm(e);Ie&&Object.keys(Ie).length>0&&(a.preservedAttributes?a.preservedAttributes={...a.preservedAttributes,...Ie}:a.preservedAttributes=Ie)}let he=r?void 0:zm({element:e});he&&he.length>0&&(a.associatedLabels=he);let Re=e.scope;Re&&typeof Re=="string"&&Re.trim()&&(a.tableScope=Re);let be=Gm({element:e});be&&(a.tableCaption=be);let Be=Xm({element:e});Be&&(a.figureCaption=Be);let Ne=Km({element:e});return Ne&&(a.fieldsetLegend=Ne),Rr(e,"table")&&(a.nearestTable=!0),a}function Om(e,t){let n={},r=new Set(Object.values(dn).filter(a=>typeof a=="string")),o=new Set(Object.keys(zi).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||!xr.has(t)))continue;let u;if(r.has(c)?u=c:c.startsWith("data-v-")?u="data-v-*":c.startsWith("ng-reflect-")?u="ng-reflect-*":c.startsWith("_ngcontent")&&(u="_ngcontent"),u){let m=l.trim()!=="",T=o.has(u);if(m||T){let h=dn[u],b=s.has(u)?"true":l;n[h]=b}}}if(!n[dn[jt]]){let a=hd(e);a&&(n[dn[jt]]=a)}return n}function Pm(e){return Pd(e,Ki,ji)}function Bm(e){return Pd(e,Yi,null)}function Pd(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(m=>typeof m=="number").includes(s)),e.hasAttribute(a)&&l||c?.trim()?r[s]=c:a==="aria-level"&&rd.includes(e.tagName.toLowerCase()?.trim())&&(r[s]=e.tagName.substring(1))}return r}function jn(e){return Bd(e)&&e.nodeType===zr.ELEMENT}function sa(e){return e.nodeType===zr.TEXT}function Bd(e){let t=typeof e;return t=="object"&&e!=null||t=="function"}function Hc(e){return jn(e)&&(!e.namespaceURI||e.namespaceURI===od)}function Um(e){return jn(e)&&e.namespaceURI===sd}function zo(e){return e.tagName==="IFRAME"}function vo(e,t){return"tagName"in e?e.tagName?.toLowerCase()===t:e.elementTag?.toLowerCase()===t}function Rr(e,t){if(e.closest)return e.closest(t);for(;!oa(e,t);){if(e.parentElement===null)return null;e=e.parentElement}return e}function oa(e,t){return e.matches?.(t)??e.msMatchesSelector?.(t)??e.webkitMatchesSelector(t)}function Fm(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 Hm(e){let t={},n=Sr.text,r=Sr.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[Sr.viewBox]=i);let a=e.querySelectorAll("path");a.length>0&&(t[Sr.paths]=a.length,t[Sr.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,u])=>{if(u>0){let m=Sr[l];t[m]=u}}),Object.keys(t).length>0?t:void 0}function qm(e){let t={};if(!e?.hasAttributes())return t;for(let n of Object.values($o).filter(r=>typeof r=="number")){let r=$o[n];if(r){let o=r;if($o.hasOwnProperty(o)&&e.hasAttribute(o)){let s=e.getAttribute(o);s?.trim()&&(t[n]=s)}}}return t}function $m({frameElement:e,parentDisabled:t,excludeLabels:n}){if(!en.includeFrameContents)return[];let r=null;try{r=e.contentWindow?.document?.body||null}catch{return[]}if(!r)return[];let o=[];for(let s of Vc(r))if(!(js(s)||Ud(s))){if(jn(s)){let i=s,a=zn(i),c=wn(i,a),{shouldCreate:l,shouldAnnotate:u}=ia(c);if(l){u&&jr(i);let m=Gt({targetElement:i,parentDisabled:t,semanticRole:a??void 0,excludeLabels:n,elementContext:c});m&&o.push(m)}else{let m=zc({element:i,semanticRole:a??void 0,parentDisabled:t,excludeLabels:n});o.push(...m)}}else if(sa(s)){let i=Vs(s);i&&o.push(i)}}return o}function Vc(e){let t=ye(e);if(zu(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 zc({element:e,semanticRole:t,parentDisabled:n,excludeLabels:r}){let o=[];for(let s of Vc(e))if(!(js(s)||Ud(s))){if(jn(s)){let i=s,a=zn(i),c=wn(i,a);if(zo(i)){jr(i);let m=$m({frameElement:i,parentDisabled:n,excludeLabels:r}),T=Gt({targetElement:i,parentDisabled:n,semanticRole:a??void 0,excludeLabels:r,isFrameNode:!0,frameContentNodes:m,elementContext:c});T&&o.push(T);continue}let{shouldCreate:l,shouldAnnotate:u}=ia(c);if(l){u&&jr(i);let m=Gt({targetElement:i,parentDisabled:n,semanticRole:a??void 0,excludeLabels:r,elementContext:c});m&&o.push(m)}else{let m=zc({element:i,semanticRole:a??void 0,parentDisabled:n,excludeLabels:r});o.push(...m)}}else if(sa(s)){let i=Vs(s);i&&o.push(i)}}return o}function Wm({element:e}){let t=Rd(e.getAttribute("aria-labelledby")),n=new Set;for(let r of t){let o=Ad(e,r);if(!(!o||o===e)&&o){let s=zn(o),i=Gt({targetElement:o,semanticRole:s,elementContext:wn(o,s)});n.add(i)}}return Array.from(n)}function Vm({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=>Gt({targetElement:o,parentDisabled:t,semanticRole:"option",elementContext:wn(o,"option")})):vo(e,"select")&&(r=Array.from(e.selectedOptions).map(o=>Gt({targetElement:o,parentDisabled:t,semanticRole:"option",elementContext:wn(o,"option")})))),r}function zm({element:e}){if(nd.includes(e.tagName)){let t=K(e),n=Sc(t,"label"),r=new Set;return Array.from(n).filter(o=>o!==e&&jm(o,e)).map(o=>{let s=zn(o),i=Gt({targetElement:o,semanticRole:s,excludeLabels:!0,elementContext:wn(o,s)});r.add(i)}),Array.from(r)}}function jm(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 Gm({element:e}){if(vo(e,"table")){let t=e.querySelector("caption");if(t&&t!==e){let n=zn(t);return Gt({targetElement:t,semanticRole:n,elementContext:wn(t,n)})}}}function Xm({element:e}){if(vo(e,"figure")){let t=e.querySelector("figcaption");if(t&&t!==e){let n=zn(t);return Gt({targetElement:t,semanticRole:n,elementContext:wn(t,n)})}}}function Km({element:e}){if(vo(e,"fieldset")){let t=e.querySelector("legend");if(t&&t!==e){let n=zn(t);return Gt({targetElement:t,semanticRole:n,elementContext:wn(t,n)})}}}function Ym({element:e}){let t=new Set,n=Md(e);for(let r of n){let o=zn(r),s=Gt({targetElement:r,semanticRole:o,elementContext:wn(r,o)});t.add(s)}return Array.from(t)}function ia(e){let{semanticRole:t,eventHandlerIndices:n,isEditableRegion:r,hasNodeWorthyHandlers:o,isLikelyStructuralContainer:s}=e,i=n.length>0&&n.some(m=>cd.has(m)),c=!!t||!s&&(o||r),l=!!t&&xr.has(t);return{shouldCreate:c,shouldAnnotate:c&&(l||r||i)}}function Ud(e){if(!jn(e))return!1;let t=e,n=t.tagName;return Gi.has(n)?!0:n===go||n===bo?Qm(t):!1}function Qm(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 jc(e,t={}){return qu(t),gd(),pd(),md(e,{includeShadow:!0,includeIframes:en.clearIframes}),yo.initialize(en.semanticIdStart),{rootNodes:Fd(e),semanticNodes:dr}}function Fd(e){let t=[];try{let n=K(e),o=Array.from(n.querySelectorAll(Dd)).filter(s=>!To(s)&&Ld(s));if(o.length===0)t=jo({targetElement:e});else if(o.length===1){let s=o[0];s.contains(e)?t=jo({targetElement:e}):e.contains(s)?t=jo({targetElement:s}):t=jo({targetElement:e})}else t=jo({targetElement:e})}catch(n){throw console.error("Error constructing semantic tree",n),n}return t}function jo({targetElement:e,parentNode:t}){if(js(e)||Hd(e))return[];let n=zn(e),r=wn(e,n);if(zo(e))return[Zm({frameElement:e,role:n,parentNode:t,elementContext:r})];let o=0,{shouldCreate:s,shouldAnnotate:i}=ia(r);s&&(i&&jr(e),o=Gt({targetElement:e,parentDisabled:t?.isDisabled,semanticRole:n,elementContext:r}));let a=dr[o],c=Jm(e,n,o?a:t);return o&&c.length>0&&(a.semanticChildren=c),o?[o]:c}function Jm(e,t,n){let r=[],o=Cd(e,t);for(let s of o)if(!(js(s)||Hd(s))){if(jn(s)){let i=jo({targetElement:s,parentNode:n});r.push(...i)}else if(sa(s)&&rg(s,n)){let i=Vs(s);i&&r.push(i)}}return r}function Zm({frameElement:e,role:t,parentNode:n,elementContext:r}){jr(e);let o=eg(e);return Gt({targetElement:e,parentDisabled:n?.isDisabled,semanticRole:t,isFrameNode:!0,frameContentNodes:o,elementContext:r})}function eg(e){if(!en.includeFrameContents)return[];let t=tg(e);return t.kind==="content"?Fd(t.rootElement):ng(e,t.reason)}function tg(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 ng(e,t){let n=yo.generateId(),r=yo.generateId(),o=e.getAttribute("title")?.trim()||e.getAttribute("name")?.trim()||e.id?.trim()||"Embedded frame",s=Vi(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 dr[n]={nodeCategory:zr.ELEMENT,semanticRole:"embedded_document_unavailable",computedName:o,syntheticKind:"embedded_container",frameContent:[r],...s?{resourceLocator:s}:{}},dr[r]={nodeCategory:zr.TEXT,parent:n,textContent:i,preventTextMerge:!0,syntheticKind:"embedded_unavailable_text"},[n]}function rg(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"?Fs[t.semanticRole]:t.semanticRole;if(Od(r))return!1}return!0}function Hd(e){if(!jn(e))return!1;let t=e,n=t.tagName;return Gi.has(n)?!0:n===go||n===bo?og(t):!1}function og(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 ca(e){let t=e.activeElement;for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}function sg(e){let t=e.getBoundingClientRect();return{x:t.left+t.width/2,y:t.top+t.height/2}}function Xo(e,t,n){let r=K(e,t),o=re(r,n);try{e.focus?.({preventScroll:!0})}catch{}if(ca(r)===e)return!0;try{let{x:s,y:i}=sg(e),a=o.PointerEvent||PointerEvent,c=o.MouseEvent||MouseEvent;e.dispatchEvent(new a("pointerdown",{bubbles:!0,cancelable:!0,composed:!0,clientX:s,clientY:i,buttons:1,button:0,pointerType:"mouse"})),e.dispatchEvent(new c("mousedown",{bubbles:!0,cancelable:!0,composed:!0,clientX:s,clientY:i,buttons:1,button:0})),e.dispatchEvent(new c("mouseup",{bubbles:!0,cancelable:!0,composed:!0,clientX:s,clientY:i,buttons:0,button:0})),e.dispatchEvent(new a("pointerup",{bubbles:!0,cancelable:!0,composed:!0,clientX:s,clientY:i,buttons:0,button:0,pointerType:"mouse"})),(e.isContentEditable||Dn(e,o)||Vn(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 ca(r)===e}function Gs(e,t){let n=ye(e),r=Vn(e,n)?n.HTMLTextAreaElement.prototype:n.HTMLInputElement.prototype,o=Object.getOwnPropertyDescriptor(r,"value");o?.set?o.set.call(e,t):e.value=t}function Eo(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 ig(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 _o(e){if(!e)return!1;let t=ye(e);if(Vn(e,t))return!e.disabled&&!e.readOnly;if(Dn(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 Gc(e){let t=ye(e);if(!e||!kt(e,t))return!1;if(e.isContentEditable)return!0;let n=e.getAttribute("contenteditable");return!!(n&&n!=="false"||e.getAttribute("role")==="textbox"&&!("value"in e))}function ag(e,t){let n=e.getRootNode();return En(n)?n:K(e)??t}function cg(e,t){let n=[];for(let r of t.split(/\s+/).filter(Boolean)){let o=e.getElementById?.(r)||e.querySelector?.(`#${CSS.escape(r)}`),s=ye(o);kt(o,s)&&n.push(o)}return n}function Vd(e,t){if(!e)return{kind:"none",el:null,via:"no-root"};if(_o(e))return{kind:"input",el:e,via:"self-input"};if(Gc(e))return{kind:"contenteditable",el:e,via:"self-contenteditable"};let n=K(e)??t,r=re(n),o=ag(e,n);if(Wu(e,r)){let c=e.control;if(_o(c))return{kind:"input",el:c,via:"label.control"};let l=e.htmlFor;if(l){let u=o.getElementById?.(l)||o.querySelector?.(`#${CSS.escape(l)}`);if(_o(u))return{kind:"input",el:u,via:"label.for"}}}let s=e.getAttribute("aria-controls")||e.getAttribute("aria-owns");if(s)for(let c of cg(o,s)){if(_o(c))return{kind:"input",el:c,via:"aria-controls/owns"};if(Gc(c))return{kind:"contenteditable",el:c,via:"aria-controls/owns"};let l=c.querySelector?.("input,textarea");if(_o(l))return{kind:"input",el:l,via:"aria-controls->desc"}}let i=e.querySelector?.("input,textarea");if(_o(i))return{kind:"input",el:i,via:"descendant"};let a=e.shadowRoot||null;if(a){let c=a.querySelector?.("input,textarea");if(_o(c))return{kind:"input",el:c,via:"open-shadow-input"};let l=a.querySelector?.('[contenteditable="true"],[contenteditable=""],[role="textbox"]');if(Gc(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 Go(e,t,n,r=!1){let o=K(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 wo(e){return(e.textContent??"").replace(/\u00A0/g," ").trim()}var aa=e=>String(e??"").replace(/\s+/g," ").trim(),zd=new MessageChannel,jd=[];zd.port1.onmessage=()=>{let e=jd.shift();e&&e()};function qd(){return new Promise(e=>{jd.push(e),zd.port2.postMessage(0)})}async function $d(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 qd():await new Promise(s=>{try{t.requestAnimationFrame(()=>s())}catch{qd().then(s)}})}function lg(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 Wd(e,t,n,r){let o=K(e,t),i=re(o,n).KeyboardEvent||KeyboardEvent,a=String(r??"");for(let c of a){let{code:l,which:u}=lg(c),m={key:c,code:l,bubbles:!0,cancelable:!0,composed:!0,keyCode:u,which:u};e.dispatchEvent(new i("keydown",m)),e.dispatchEvent(new i("keypress",m)),e.dispatchEvent(new i("keyup",m))}}async function Gd(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=K(e,t),c=re(a,n),l=Xo(e,a,c),u=Number.isFinite(Number(o?.settleFrames))?Math.max(0,Math.min(4,Number(o?.settleFrames))):a.hidden?1:2,m=!!o?.useKeyFallback,T=Number.isFinite(Number(o?.keyFallbackMaxLen))?Number(o?.keyFallbackMaxLen):140,h=m&&s.length>0&&s.length<=T;Gs(e,s),Eo(e,s,"insertReplacementText"),h&&Wd(e,a,c,s),await $d(a,c,u);let b=String(e.value??""),v=aa(i),M=aa(b),q=aa(s),R=v===q,S=M===q,F=b!==i,z=s.length>0&&!R&&b===i,Q=1;if(!R&&!S&&!F){Q=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{Gs(e,s)}catch{}try{Eo(e,s,"insertReplacementText")}catch{}h&&Wd(e,a,c,s),await $d(a,c,u),b=String(e.value??"")}let ge=aa(b)===q,he=b!==i;z=s.length>0&&!R&&b===i;let Re=R||ge||he;return{success:Re,method:"type-native-setter",details:`focus=${l};attempts=${Q};settleFrames=${u};beforeLen=${i.length};afterLen=${b.length};changed=${he};alreadyCorrect=${R};nowCorrect=${ge};reverted=${z};keyFallback=${h}`,allowFallback:Re?void 0:!0}}function ug(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 Xd(e,t,n,r){let o=K(e,n),s=re(o,r),i=s.InputEvent||InputEvent,a=s.Event||Event,c=String(t??""),l=wo(e),u=Xo(e,o,s),m=Go(e,o,s,!0),T=ug(e,c,"insertText"),h=!1,b="execCommand",v=!1,M=()=>{v=!0};try{e.addEventListener("input",M,{capture:!0})}catch{}if(T.ok&&!T.defaultPrevented)try{h=!!o.execCommand?.("insertText",!1,c)}catch{}if(!h)try{let S=s.getSelection?.(),F=S&&S.rangeCount?S.getRangeAt(0):null;if(!F||!e.contains(F.commonAncestorContainer)){Go(e,o,s,!0);let z=s.getSelection?.();F=z&&z.rangeCount?z.getRangeAt(0):null}F&&(F.insertNode(o.createTextNode(c)),F.collapse(!1),S?.removeAllRanges(),S?.addRange(F),h=!0,b="range")}catch{}if(h&&!v){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",M,{capture:!0})}catch{}let q=wo(e);return{success:q!==l||!!c&&q.includes(c),method:`type-contenteditable-${b}`,details:`focus=${u};selectedWithin=${m};inserted=${h}`}}function Kd(e){let{canceled:t}=ig(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 Yd(e,t,n){if(e.disabled||e.readOnly)return{success:!1,method:"clear-native-setter",details:"disabled_or_readonly",allowFallback:!0};let r=K(e,t),o=re(r,n),s=String(e.value??""),i=Xo(e,r,o);Gs(e,""),Eo(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 Qd(e,t,n){let r=K(e,t),o=re(r,n),s=wo(e),i=Xo(e,r,o),a=Go(e,r,o,!1),c=!1,l="execCommand";try{c=!!r.execCommand?.("delete",!1,void 0)}catch{c=!1}if(!c)try{let h=o.getSelection?.(),b=h&&h.rangeCount?h.getRangeAt(0):null;(!b||!e.contains(b.commonAncestorContainer))&&Go(e,r,o,!1);let v=o.getSelection?.(),M=v&&v.rangeCount?v.getRangeAt(0):null;M&&(M.deleteContents(),M.collapse(!1),v?.removeAllRanges(),v?.addRange(M),c=!0,l="range")}catch{}if(!c)try{e.textContent="",c=!0,l="textContent"}catch{}Eo(e,"","deleteByCut");let u=wo(e),m=u!==s;return{success:c||m||u.length===0,method:`clear-contenteditable-${l}`,details:`focus=${i};selectedWithin=${a};cleared=${c};changed=${m}`}}function Jd(e,t){if(e===t||e.contains(t))return!0;let n=t;for(;n;){let r=n.getRootNode?.();if(En(r)){let o=r.host;if(o===e||e.contains(o))return!0;n=o;continue}n=n.parentNode||null}return!1}var la;(function(e){e.FLASH_LITE="Gemini Flash Lite",e.FLASH="Gemini Flash",e.PRO="Gemini Pro"})(la||(la={}));var Zd;(function(e){e[e.NativeHostConnected=0]="NativeHostConnected",e[e.NativeHostDisconnected=1]="NativeHostDisconnected"})(Zd||(Zd={}));var dg=["image/png","image/jpeg","image/webp"],fg=["application/pdf","text/plain"],$E=[...dg,...fg];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 xt;(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"})(xt||(xt={}));var WE={[Rt.ACT]:xt.AGENTIC_SEEK,[Rt.CRAWL]:xt.CRAWL_PAGES,[Rt.EXTRACT]:xt.EXTRACT_PAGE,[Rt.SHEETS_WORKFLOW]:xt.SHEETS_WORKFLOW,[Rt.INFER_SHEET_DATA]:xt.INFER_SHEET_DATA,[Rt.PDF_FILLER]:xt.PDF_FILLER,[Rt.CUSTOM_TOOL_GENERATOR]:xt.CUSTOM_TOOL_GENERATOR,[Rt.WEBPAGE_GENERATOR]:xt.WEBPAGE_GENERATOR,[Rt.GOOGLE_DOC_GENERATOR]:xt.GOOGLE_DOC_GENERATOR,[Rt.GOOGLE_SLIDES_GENERATOR]:xt.GOOGLE_SLIDES_GENERATOR,[Rt.PROCESS_TEXT]:xt.PROCESS_TEXT,[Rt.CREATE_SHEET_FROM_DATA]:xt.CREATE_SHEET_FROM_DATA,[Rt.ROVER_EXTERNAL_READ_CONTEXT]:xt.ROVER_EXTERNAL_READ_CONTEXT,[Rt.ROVER_EXTERNAL_ACT_CONTEXT]:xt.ROVER_EXTERNAL_ACT_CONTEXT,[Rt.EXECUTE_MULTIPLE_TOOLS]:xt.EXECUTE_MULTIPLE_TOOLS,[Rt.CONFIGURE_API_KEY]:xt.CONFIGURE_API_KEY,[Rt.QUERY_RTRVR_AI_DOCUMENTATION]:xt.QUERY_RTRVR_AI_DOCUMENTATION};var Xc=200;var pg=30,hg=320,mg=0,gg=50,bg=1,VE=la.FLASH;var zE=xt.PLANNER;var Kc="application/pdf",Yc="application/gsheet";var jE=20*1024*1024;var ua={maxParallelTabs:4,pageLoadDelay:2e3,disableAutoScroll:!1,makeNewTabsActive:!1,writeRowProcessingTime:!1,totalBudgetMs:25e3,pageDataTimeoutMs:22e3,adaptiveSettleDebounceMs:pg,adaptiveSettleMaxWaitMs:hg,adaptiveSettleRetries:mg,sparseTreeRetryDelayMs:gg,sparseTreeRetryMaxAttempts:bg,pdfTextSelectionTimeoutMs:12e3,onlyTextContent:!1};var yg=1,vg=9,Tg=11,Jc="application/gdoc",Ko="text/html",da="text/plain";function _g(e){return!!e&&typeof e=="object"&&e.nodeType===vg}function ef(e){return!!e&&typeof e=="object"&&e.nodeType===yg}function Eg(e){return!!e&&typeof e=="object"&&e.nodeType===Tg&&typeof e.host=="object"&&typeof e.mode=="string"}function tf(e){return ef(e)&&String(e.tagName).toUpperCase()==="IFRAME"}function Qc(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 wg(e){try{let t=e.shadowRoot;return t||globalThis?.chrome?.dom?.openOrClosedShadowRoot?.(e)||null}catch{return null}}function kg(e,t,n={}){let r=n.traverseShadow!==!1,o=n.traverseIframes!==!1,s=n.requireOwnerDocument,i=[e],a=new WeakSet;for(;i.length;){let c=i.pop();if(c&&typeof c=="object"){if(a.has(c))continue;a.add(c)}if(_g(c)){let m=c.documentElement||c.body;m&&i.push(m);continue}if(Eg(c)){let m=c.children;if(m&&m.length)for(let T=m.length-1;T>=0;T--)i.push(m[T]);continue}if(!ef(c))continue;let l=c;if(s&&l.ownerDocument!==s)continue;let u=l.getAttribute?.(jt);if(u&&qs(u)===t)return l;if(r)try{let m=wg(l);m&&i.push(m)}catch{}if(o&&tf(l))try{let m=Ms(l);m&&i.push(m)}catch{}for(let m=l.lastElementChild;m;m=m.previousElementSibling)i.push(m)}return null}function Gn(e,t,n={}){let r=Qc(t);if(!r)return null;let o=Ws(r);return o&&(!n.requireOwnerDocument||o.ownerDocument===n.requireOwnerDocument)?o:kg(e,r,{requireOwnerDocument:n.requireOwnerDocument,traverseShadow:n.traverseShadow,traverseIframes:n.traverseIframes})}function Zc(e=document){return e.querySelector('embed[type="application/pdf"], embed[type="application/x-google-chrome-pdf"]')}function nf(e){if(e==null)return[];if(Array.isArray(e)){let t=[];for(let n of e){let r=Qc(n);r&&t.push(r)}return t}if(typeof e=="number"||typeof e=="bigint"){let t=Qc(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 nf(t)}return[]}function Yo(e,t){let n=nf(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=Gn(o,a,{requireOwnerDocument:c?void 0:o,traverseShadow:!0,traverseIframes:c});if(!l||!tf(l))return{doc:o,win:o.defaultView||r,iframePath:n,resolvedPath:s,unresolvedPath:n.slice(i)};let u=null;try{u=Ms(l)||null}catch{u=null}if(!u)return{doc:o,win:o.defaultView||r,iframePath:n,resolvedPath:s,unresolvedPath:n.slice(i)};s.push(a),o=u}return{doc:o,win:o.defaultView||r,iframePath:n,resolvedPath:s,unresolvedPath:[]}}function rf(e){return e==="application/pdf"||e==="application/x-pdf"||e==="application/x-google-chrome-pdf"}function xg(){return Date.now()}function ft(e){return!e||!Number.isFinite(e)?Number.POSITIVE_INFINITY:Math.max(0,e-xg())}async function of(e,t,n){if(!Number.isFinite(e)||e<=0)return;let r=ft(n);r<=0||r<e+40||await _t(e,t)}async function Qo(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 _t(r,n),{ok:!1,reason:"timeout"}))()]):{ok:!1,reason:"timeout"}}var _t=(()=>{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 Ig=3e4;function sf(e){return(String(e??"").replace(/\\/g,"/").split("/").pop()||"upload").replace(/[\u0000-\u001f\u007f]/g,"").trim()||"upload"}var el=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 Sg(e){return e&&e.split(";")[0].trim()||"application/octet-stream"}function Rg(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 tl(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 af(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 Ag(e,t={},n,r=fetch){let o=new AbortController,s=Ig,i=!1,a=()=>{};if(n){let l=!1;a=()=>{l=!0},(async()=>{try{if(await _t(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 h=await l.text().catch(()=>"");throw new el(`Fetch failed (${l.status})`,{url:e,status:l.status,statusText:l.statusText,bodySnippet:h.slice(0,256)})}let u=await l.arrayBuffer(),m=Sg(l.headers.get("content-type")),T=Rg(l.headers.get("content-disposition"))||tl(e);return{bytes:u,mimeType:m,fileName:T}}finally{a()}}async function cf(e,t,n){return await Ag(t,{referrer:n??void 0,referrerPolicy:"strict-origin-when-cross-origin"})}var It={plannerHistory:16,prevSteps:8,uiMessages:40,timelineEvents:60,localPersistBytes:131072,snapshotBytes:262144};var lf={activation:"on_demand",idleCloseMs:3e4,fallbackPollMinMs:2e3,fallbackPollMaxMs:15e3,maxInflightCommands:1};var pt;(function(e){e.UP="UP",e.DOWN="DOWN",e.LEFT="LEFT",e.RIGHT="RIGHT",e.TOP="TOP",e.BOTTOM="BOTTOM"})(pt||(pt={}));var $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 nl(e){return globalThis.CSS&&typeof globalThis.CSS.escape=="function"?globalThis.CSS.escape(e):e.replace(/([ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g,"\\$1")}function Jo(e,t){if(!e)return"";let n=K(e,t);if(e===n.documentElement)return"html";if(e===n.body)return"body";if(e.id)return`#${nl(e.id)}`;let r=[],o=e;for(;o&&o!==n.body&&o!==n.documentElement;){let s=o.tagName.toLowerCase();if(o.id){s+=`#${nl(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(nl);if(a.length)s+="."+a.join(".");else{let c=o.parentElement;if(c){let l=Array.from(c.children).filter(u=>u.tagName===o.tagName);if(l.length>1){let u=l.indexOf(o)+1;s+=`:nth-of-type(${u})`}}}r.unshift(s),o=o.parentElement}return r.join(" > ")}function ko(e){return e.scrollingElement||e.documentElement||e.body}function fa(e,t,n,r,o){let s=K(e,t),i=re(s,n),a=ko(s),c=e===s.documentElement||e===s.body||e===a,l=c?a:e,u=c?i.innerHeight:l.clientHeight,m=c?i.innerWidth:l.clientWidth,T=o??u*.8;switch(r){case pt.DOWN:{l.scrollTop+=T;break}case pt.UP:{l.scrollTop=Math.max(0,l.scrollTop-T);break}case pt.LEFT:return l.scrollLeft=Math.max(0,l.scrollLeft-(o??m*.8)),{success:!0,scrollLeft:l.scrollLeft};case pt.RIGHT:return l.scrollLeft+=o??m*.8,{success:!0,scrollLeft:l.scrollLeft};default:return{success:!1,error:`Unsupported scroll direction: ${String(r)}`}}let h=l.scrollHeight,b=c?i.innerHeight:l.clientHeight,v=h-b;return{success:!0,scrollTop:l.scrollTop,isAtTop:l.scrollTop<=5,isAtBottom:l.scrollTop>=v-5}}function Cg(e,t,n){let r=K(e,t),o=re(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 uf(e,t,n){let r=K(e,t),o=re(r,n),s=ko(r),i=e===r.documentElement||e===r.body||e===s,a=i?s:e,c=a.scrollHeight,l=i?o.innerHeight:a.clientHeight,u=c-l;return a.scrollTop>=u-5}function rl(e,t,n,r){let o=K(e,t),s=re(o,n),i=ko(o),a=Cg(e,o,s),c=a===o.documentElement||a===o.body||a===i,l=c?i:a,u=e.getBoundingClientRect(),m=c?new(s.DOMRect||DOMRect)(0,0,s.innerWidth,s.innerHeight):a.getBoundingClientRect(),T=c?s.innerHeight:a.clientHeight,h=24,b=u.top-m.top,v=l.scrollTop+b,M;switch(r){case $t.START:M=v-h;break;case $t.END:M=v+u.height-T+h;break;case $t.NEAREST:{if(u.top>=m.top&&u.bottom<=m.bottom)return{success:!0,scrollTop:l.scrollTop,isAtTop:l.scrollTop<=5,isAtBottom:uf(l,o,s)};u.top<m.top?M=v-h:M=v+u.height-T+h;break}case $t.CENTER:default:M=v-T/2+u.height/2;break}let q=l.scrollHeight-T;return l.scrollTop=Math.max(0,Math.min(M,q)),{success:!0,scrollTop:l.scrollTop,isAtTop:l.scrollTop<=5,isAtBottom:uf(l,o,s)}}function ff(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 Di){let r=e?.[n];if(r==null)continue;if(Array.isArray(r)){for(let s of r){let i=ff(s);i!=null&&t.push(i)}continue}let o=ff(r);o!=null&&t.push(o)}return Array.from(new Set(t))}function Ng(e){return pf(e).length>0}function Mg(e){let t=pf(e);return t.length?t[0]:null}var Lg=new Set([U.click_element,U.type_into_element,U.type_and_enter,U.hover_element,U.right_click_element,U.double_click_element,U.press_key,U.scroll_page,U.scroll_to_element,U.mouse_wheel,U.drag_element,U.drag_and_drop,U.swipe_element,U.long_press_element,U.adjust_slider,U.select_dropdown_value,U.clear_element,U.focus_element,U.check_field_validity,U.select_text,U.copy_text,U.paste_text,U.pinch_zoom,U.upload_file,U.dispatch_pointer_path]);(()=>{let e="__RTRVR_ACTION_EXECUTOR__";if(window[e])return;window[e]=!0;try{document.documentElement?.setAttribute(Nc,"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(d){let k={};try{let w=Uu[d.opcode];if(!w)throw new Error(`Unknown tool opcode: ${d.opcode}`);let E={...d.call,name:w};k=(await v({tabIndex:d.tabIndex,call:E,elementData:b(d.elementData),payload:d.payload}))[0]?.response??{success:!1,error:"Empty tool response",allowFallback:!0}}catch(w){k={success:!1,error:w?.message||String(w),allowFallback:!0}}return k}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__",u="__RTRVR_WINDOW_MESSAGE_MUX__";function m(d){let k=d,w=k[u];if(!w||typeof w!="object"){w={handlers:new Set,installed:!1};try{Object.defineProperty(k,u,{value:w,enumerable:!1,configurable:!1})}catch{k[u]=w}}if(!w.installed){w.installed=!0,d.addEventListener("message",E=>{if(E.source===d)for(let y of Array.from(w.handlers))try{y(E)}catch{}},!0);try{d.addEventListener("pagehide",()=>{let y=d[l]?.pending;if(y)for(let[g,_]of y){try{_.cancelTimeout()}catch{}_.reject(new Error("pagehide: upload bytes request canceled")),y.delete(g)}},!0)}catch{}}return w}function T(d){let k=d,w=k[l];if(!w||typeof w!="object"){w={pending:new Map};try{Object.defineProperty(k,l,{value:w,enumerable:!1,configurable:!1})}catch{k[l]=w}m(d).handlers.add(y=>{let g=y?.data;if(!g||typeof g!="object"||g.type!==c)return;let _=String(g.requestId||"");if(!_)return;let I=w.pending.get(_);if(!I)return;w.pending.delete(_);try{I.cancelTimeout()}catch{}if(!g.ok){I.reject(new Error(g.error||"Failed to get bytes"));return}let B=g.bytes;if(!(B instanceof ArrayBuffer)){I.reject(new Error("Invalid bytes payload (expected ArrayBuffer)"));return}if(typeof I.expectedByteLength=="number"&&B.byteLength!==I.expectedByteLength){I.reject(new Error(`Byte length mismatch: got=${B.byteLength}, expected=${I.expectedByteLength}`));return}I.resolve(B)})}return w}function h(d,k,w,E=9e4){let y=d.__ROVER_UPLOAD_BYTES__||d.rover?.uploadBytes||d.rtrvr?.uploadBytes;if(typeof y=="function")return Promise.resolve().then(()=>y({token:k,byteLength:w,timeoutMs:E})).then(P=>{if(P instanceof ArrayBuffer)return P;if(P&&P.buffer instanceof ArrayBuffer)return P.buffer;throw new Error("Upload bytes provider returned invalid buffer")});let g=T(d),_=globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(16).slice(2)}`,I=Math.max(1e3,Math.min(Number(E)||9e4,18e4)),B=$i(d)||document;return new Promise((P,H)=>{let W=!1,j=!1,ne=()=>{j=!0};(async()=>{await _t(I,B),!(j||W)&&(g.pending.delete(_),W=!0,H(new Error("Timed out waiting for upload bytes")))})().catch(()=>{}),g.pending.set(_,{cancelTimeout:ne,expectedByteLength:w,resolve:se=>{W||(W=!0,ne(),P(se))},reject:se=>{W||(W=!0,ne(),H(se))}}),d.postMessage({type:a,requestId:_,token:k,byteLength:w},"*")})}function b(d){if(d)return{frameworks:d.frameworks?d.frameworks.map(k=>Bu[k]).filter(k=>k&&k!=="unknown"):[],listenersRaw:d.listenersRaw??"",role:d.role??void 0,pattern:d.pattern??void 0,value:d.value??void 0}}async function v({tabIndex:d,call:k,elementData:w,payload:E}){let y=(()=>{try{return lr()?.top?.document||document}catch{return document}})(),g=k.args,_=Ng(g),I,B,P=[],H=[],W=[];try{({doc:I,win:B,iframePath:P,resolvedPath:H,unresolvedPath:W}=Yo(y,g.iframe_id))}catch{if(g.iframe_id!=null){let ie=`Cannot access iframe ${g.iframe_id} (cross-origin or not found)`;return[{name:k.name,args:k.args,response:{success:!1,error:ie,allowFallback:!1,output:{success:!1,error:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:ie,retryable:!1},iframe_context:{requested_iframe_id:g.iframe_id}}}}]}I=document,B=re(I)}if(g.iframe_id!=null&&W.length>0&&!_){let ue=`iframe_id unresolved: remaining=${W.join(">")||"(none)"} (cross-origin, not-ready, or not found)`;return[{name:k.name,args:k.args,response:{success:!1,error:ue,allowFallback:!1,details:`requested=${P.join(">")||"(none)"} resolved=${H.join(">")||"(none)"}`,output:{success:!1,error:{code:"IFRAME_CONTEXT_UNAVAILABLE",message:ue,retryable:!1},iframe_context:{requested_iframe_id:g.iframe_id,requested_path:P,resolved_path:H,unresolved_path:W}}}}]}let j=k.name,ne=Mg(g),se=ne?Gn(I,ne):null,ke=se?.ownerDocument??null,le;if(!Lg.has(j))le={success:!1,error:`Tool not promotable to main: ${j}`,allowFallback:!0};else{let ie=ke??I,ue=re(ie,B);le=await q(j,se,g,w,ie,ue,E)}return[{name:k.name,args:k.args,response:le}]}async function M(d,k,w){try{let E=d.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",g=d[E]?.scroll?.execute;if(typeof g!="function")throw new Error("main-world scroll detector not available");let _=w?.doc||$i(d)||document,I=Math.max(250,Math.min(Number(w?.timeoutMs??3500),8e3)),B=await Qo(Promise.resolve().then(()=>g(k)),I,_);if(!B.ok)throw new Error("scroll detector timeout");return B.value}catch(E){throw new Error(E?.message||"main-world scroll detector not available")}}async function q(d,k,w,E,y,g,_){let I=j=>({success:j.success,error:j.success?void 0:j.details||"Action failed",allowFallback:j.success?void 0:j.allowFallback??!0}),B=d===U.press_key||d===U.scroll_page||d===U.drag_and_drop||d===U.pinch_zoom;if(!k&&!B)return I({success:!1,method:"missing-element-race",details:"Target element missing",allowFallback:!0});let P=new Set([U.type_into_element,U.type_and_enter,U.clear_element,U.focus_element,U.select_text,U.check_field_validity]),H=k,W=K(H,y);if(H&&P.has(d)){let j=Vd(H,W);(j.kind==="input"||j.kind==="contenteditable")&&(H=j.el)}try{switch(d){case U.click_element:return I(z(k,y,g,E));case U.double_click_element:return I(ir(k,y,g));case U.right_click_element:return I(bn(k,y,g));case U.hover_element:return I(await ut(k,y,g,E,w.duration));case U.type_into_element:return I(await Un(H,y,g,w.text,E));case U.type_and_enter:return I(await Rn(H,y,g,w.text,E));case U.clear_element:return I(await on(H,y,g,E));case U.focus_element:return I(yt(H,y,g));case U.select_dropdown_value:return I(Qe(k,y,g,w.value,E));case U.adjust_slider:return I(Yt(k,y,g,E?.value??w.value,E));case U.check_field_validity:return I(yr(H,y,g));case U.select_text:return I(vr(H,y,g,w.start_offset,w.end_offset));case U.scroll_page:return I(await lo(k,y,g,w));case U.scroll_to_element:return I(await Je(k,y,g,w));case U.mouse_wheel:return I(Fn(k,y,g,w.delta_x,w.delta_y));case U.drag_element:return I(await vt(k,y,g,w,E));case U.drag_and_drop:return I(await sn(w,k,y,g));case U.swipe_element:return I(await An(k,y,g,w));case U.long_press_element:return I(await an(k,y,g,w.duration));case U.pinch_zoom:return I(await Dt(k,y,g,w));case U.press_key:return I(rt(w.key,w.modifiers,k,y,g));case U.copy_text:return I(await Tr(k,y,g));case U.paste_text:return I(await or(k,y,g,E));case U.upload_file:return I(await qn(w,y,g,_,k,E));case U.dispatch_pointer_path:return I(await sr(w,y,g));default:return I({success:!1,method:"unhandled",details:`Unhandled ${d}`,allowFallback:!0})}}catch(j){return I({success:!1,method:"exception",details:j?.message||"exception",allowFallback:!0})}}function R(d){let k=new Map;if(!d)return k;let w=d.trim();if(!w)return k;let E=mo(w);if(E){for(let{id:y,mask:g}of E.entries){let _=kr[y];if(!_)continue;let I=new Set(Pi(g)),B=k.get(_);if(B)for(let P of I)B.add(P);else k.set(_,I)}return k}return k}function S(d,...k){return d?k.some(w=>d.has(w)):!1}function F(d,k){let w=R(k?.listenersRaw),E=new Set;for(let[,P]of w)for(let H of P)(H==="react"||H==="vue"||H==="angular"||H==="svelte"||H==="jquery")&&E.add(H);let y=new Set;for(let[P,H]of w)if(["click","input","change","keydown","keyup","pointerdown","pointerup","mousedown","mouseup","submit","dragstart","drop","wheel","scroll"].includes(P))for(let W of H)y.add(W);let g=E.size>0||[...y].some(P=>["react","vue","angular","svelte","jquery"].includes(P)),_=S(w.get("click"),"delegated"),I=S(w.get("input"),"delegated")||S(w.get("change"),"delegated")||S(w.get("keydown"),"delegated"),B=k?.role||Hs(d)||d.getAttribute("role");return{sourcesByType:w,fws:E,isFrameworkElement:g,delegatedClick:_,delegatedInput:I,role:B}}function z(d,k,w,E){let y=F(d,E),g=K(d,k),_=re(g,w);ot(d,g,_),E?.pattern==="hover-activate"&&ut(d,g,_,E,120);let I=y.fws.has("react")||S(y.sourcesByType.get("click"),"react"),B=y.fws.has("vue")||S(y.sourcesByType.get("click"),"vue"),P=y.fws.has("angular")||S(y.sourcesByType.get("click"),"angular"),H=y.fws.has("svelte")||S(y.sourcesByType.get("click"),"svelte"),W=y.fws.has("jquery")||S(y.sourcesByType.get("click"),"jquery");return Qt(()=>Q(d,g,_),()=>fe(d,g,_),()=>I?he(d,g,_):null,()=>B?Re(d,g,_):null,()=>P?be(d,g,_):null,()=>H?Be(d,g,_):null,()=>W?Ne(d,g,_):null)}function Q(d,k,w){let E=K(d,k),y=re(E,w),g=y.PointerEvent||PointerEvent,_=y.MouseEvent||MouseEvent,{x:I,y:B}=ge(d,E,y),P={bubbles:!0,cancelable:!0,composed:!0,view:y,clientX:I,clientY:B,button:0,buttons:1};return d.focus?.({preventScroll:!0}),[new g("pointerover",P),new g("pointerenter",{...P,bubbles:!1}),new _("mouseover",P),new _("mouseenter",{...P,bubbles:!1}),new g("pointerdown",P),new _("mousedown",P),new g("pointerup",{...P,buttons:0}),new _("mouseup",{...P,buttons:0}),new _("click",{...P,buttons:0})].forEach(W=>d.dispatchEvent(W)),{success:!0,method:"pointer-mouse-click"}}function fe(d,k,w){let E=K(d,k),y=re(E,w);try{if(d instanceof HTMLAnchorElement){let g=d.getAttribute("target");try{d.setAttribute("target","_self"),d.click()}finally{g===null?d.removeAttribute("target"):d.setAttribute("target",g)}}else d.click?.();return{success:!0,method:"native-click"}}catch{return{success:!1,method:"native-click"}}}function ge(d,k,w){let E=K(d,k),y=d.getBoundingClientRect(),g=[{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}],_=null;for(let I=0;I<g.length;I++){let B=g[I],P=E.elementFromPoint(B.x,B.y);if(I===0&&(_=P),P&&Jd(d,P))return{...B,hit:P,ok:!0}}return{...g[0],hit:_,ok:!1}}function he(d,k,w){let E=K(d,k),y=re(E,w);try{let g=$n(d);if(!g)return{success:!1,method:"react-no-fiber"};let _=vn(g),I=_.onClick||_.onClickCapture;return I?(I(cn("click",d,E,y)),{success:!0,method:"react-fiber-onClick"}):{success:!1,method:"react-no-onClick"}}catch{return{success:!1,method:"react-fiber-onClick"}}}function Re(d,k,w){let E=K(d,k),g=re(E,w).MouseEvent||MouseEvent;try{let _=Ze(d);if(!_)return{success:!1,method:"vue-none"};let I=fo(_);return I.click?(I.click(new g("click",{bubbles:!0})),{success:!0,method:"vue-handler"}):_.$emit?(_.$emit("click"),{success:!0,method:"vue-emit"}):{success:!1,method:"vue-no-click"}}catch{return{success:!1,method:"vue-handler"}}}function be(d,k,w){let E=K(d,k),y=re(E,w),g=y.MouseEvent||MouseEvent;try{let _=y.ng?.getZone?.()||null;return _?.run?(_.run(()=>d.dispatchEvent(new g("click",{bubbles:!0,cancelable:!0}))),{success:!0,method:"angular-zone-click"}):(d.dispatchEvent(new g("click",{bubbles:!0,cancelable:!0})),d.click?.(),{success:!0,method:"angular-click"})}catch{return{success:!1,method:"angular-click",allowFallback:!0}}}function Be(d,k,w){let E=K(d,k),g=re(E,w).MouseEvent||MouseEvent;try{let _=d.getBoundingClientRect(),I={bubbles:!0,cancelable:!0,view:d.ownerDocument?.defaultView||window,clientX:_.left+_.width/2,clientY:_.top+_.height/2};return d.dispatchEvent(new g("mousedown",I)),d.dispatchEvent(new g("mouseup",I)),d.dispatchEvent(new g("click",I)),{success:!0,method:"svelte-click"}}catch{return{success:!1,method:"svelte-click"}}}function Ne(d,k,w){let E=K(d,k),y=re(E,w);try{return y.jQuery?.(d)?.trigger?.("click"),{success:!0,method:"jquery-trigger"}}catch{return{success:!1,method:"jquery-trigger"}}}async function ut(d,k,w,E,y=500){let g=Math.min(Math.max(0,Number(y)||500),3e4),_=K(d,k),I=re(_,w),B=F(d,E);ot(d,_,I);let P=I.PointerEvent||PointerEvent,H=I.MouseEvent||MouseEvent,W=d.getBoundingClientRect(),j=W.left+W.width/2,ne=W.top+W.height/2;if(B.fws.has("react")){let le=$n(d),ie=le?vn(le):{};ie.onMouseEnter?.(cn("mouseenter",d,_,I)),ie.onPointerEnter?.(cn("pointerenter",d,_,I))}else if(B.fws.has("vue")){let le=Ze(d),ie=le?fo(le):{};ie.mouseenter?.(new H("mouseenter",{bubbles:!0})),ie.mouseover?.(new H("mouseover",{bubbles:!0}))}let se={bubbles:!0,cancelable:!0,composed:!0,view:I,clientX:j,clientY:ne};return[new P("pointerover",se),new P("pointerenter",{...se,bubbles:!1}),new H("mouseover",se),new H("mouseenter",{...se,bubbles:!1})].forEach(le=>d.dispatchEvent(le)),await _t(g,_),{success:!0,method:"hover-seq"}}async function Ie(d,k,w=1){await Promise.resolve();for(let E=0;E<w;E++)d.hidden?await Jt():await new Promise(y=>{try{k.requestAnimationFrame(()=>y())}catch{Jt().then(y)}})}let Mt=d=>String(d??"").replace(/\s+/g," ").trim();function bt(d){try{if("value"in d)return String(d.value??"")}catch{}return""}function it(d){try{return typeof wo=="function"?wo(d):Mt(d.textContent)}catch{return""}}function Lt(d,k){if(!(k.isFrameworkElement||k.delegatedInput))return!1;let w=String(d??"").length;return w>0&&w<=140}async function Un(d,k,w,E,y){let g=F(d,y),_=K(d,k),I=re(_,w);if(ot(d,_,I),Dn(d,I)||Vn(d,I)){let P=Lt(String(E??""),g),H=await Gd(d,_,I,E,{settleFrames:_.hidden?1:2,useKeyFallback:P,keyFallbackMaxLen:140});return{success:H.success,method:H.method,details:H.details,allowFallback:!H.success}}if(d.isContentEditable===!0||g.role==="textbox"&&!("value"in d)){let P=it(d),H=Xd(d,E,_,I);await Ie(_,I,_.hidden?1:2);let W=it(d),j=!1;if(String(E??"").length>0&&W===P){j=!0;try{Xo(d,_,I),Go(d,_,I,!0);try{_.execCommand?.("insertText",!1,String(E??""))}catch{}Eo(d,String(E??""),"insertText")}catch{}await Ie(_,I,_.hidden?1:2)}let ne=it(d),se=ne!==P||!!String(E??"")&&ne.includes(String(E??""));return{success:se,method:H.method,details:`${H.details};beforeLen=${P.length};afterLen=${ne.length};reverted=${W===P};fallback=${j}`,allowFallback:se?void 0:!0}}return{success:!1,method:"type",details:"target not editable",allowFallback:!0}}async function Rn(d,k,w,E,y){let g=K(d,k),_=re(g,w),I=await Un(d,g,_,E,y);if(!I.success)return I;let B=Kd(d);return{success:!0,method:"type+enter",details:`${I.details};enter=${B.method}`}}async function on(d,k,w,E){let y=K(d,k),g=re(y,w),_=g.Event||Event;if(ot(d,y,g),Dn(d,g)||Vn(d,g)){let B=bt(d),P=Yd(d,y,g);if(await Ie(y,g,y.hidden?1:2),bt(d)===B&&B.length>0){try{Gs(d,""),Eo(d,"","deleteByCut")}catch{}await Ie(y,g,y.hidden?1:2)}let j=bt(d),ne=j.length===0||j!==B;return{success:P.success,method:P.method,details:P.details,allowFallback:!P.success}}if(d.isContentEditable===!0||F(d,E).role==="textbox"&&!("value"in d)){let B=Qd(d,y,g);return await Ie(y,g,y.hidden?1:2),{success:B.success,method:B.method,details:B.details,allowFallback:!B.success}}if("value"in d){try{d.value=""}catch{}return d.dispatchEvent(new _("input",{bubbles:!0,composed:!0})),d.dispatchEvent(new _("change",{bubbles:!0,composed:!0})),{success:!0,method:"clear-generic-value"}}return{success:!1,method:"clear",details:"target not clearable",allowFallback:!0}}function yt(d,k,w){try{let E=K(d,k),y=re(E,w),g=y.FocusEvent||FocusEvent;return ot(d,E,y),d.focus?.({preventScroll:!0}),d.dispatchEvent(new g("focus",{bubbles:!0})),d.dispatchEvent(new g("focusin",{bubbles:!0})),{success:!0,method:"focus"}}catch(E){return{success:!1,method:"focus",details:E.message,allowFallback:!0}}}function Qe(d,k,w,E,y){try{let g=K(d,k),_=re(g,w),I=_.Event||Event;if(!Vu(d,_))return{success:!1,method:"select",details:"target not select",allowFallback:!0};ot(d,g,_),d.focus?.({preventScroll:!0});let B=Array.from(d.options).find(j=>j.value===E||j.text.trim()===E.trim());if(!B)return{success:!1,method:"select",details:`Option not found: ${E}`,allowFallback:!0};B.selected=!0;let P=Object.getPrototypeOf(d),H=Object.getOwnPropertyDescriptor(P,"value");if(H?.set?H.set.call(d,B.value):d.value=B.value,d.dispatchEvent(new I("input",{bubbles:!0,composed:!0})),d.dispatchEvent(new I("change",{bubbles:!0,composed:!0})),F(d,y).fws.has("react")){let j=$n(d);if(j){let ne=vn(j);if(ne.onChange){let se=cn("change",d,g,_);se.target.value=B.value,ne.onChange(se)}}}return{success:!0,method:"select"}}catch(g){return{success:!1,method:"select",details:g.message,allowFallback:!0}}}function Yt(d,k,w,E,y){try{let g=K(d,k),_=re(g,w),I=_.Event||Event;if(!Dn(d,_))return{success:!1,method:"slider",details:"target not input",allowFallback:!0};ot(d,g,_),d.focus?.({preventScroll:!0});let B=Object.getPrototypeOf(d),P=Object.getOwnPropertyDescriptor(B,"value");if(P?.set?P.set.call(d,String(E)):d.value=String(E),d.dispatchEvent(new I("input",{bubbles:!0,composed:!0})),d.dispatchEvent(new I("change",{bubbles:!0,composed:!0})),F(d,y).fws.has("react")){let W=$n(d);if(W){let j=vn(W);if(j.onChange){let ne=cn("change",d,g,_);ne.target.value=String(E),j.onChange(ne)}}}return{success:!0,method:"slider"}}catch(g){return{success:!1,method:"slider",details:g.message,allowFallback:!0}}}function yr(d,k,w){try{let E=d.checkValidity?.()??!0;return E||d.reportValidity?.(),{success:E,method:"check-validity",details:E?void 0:d.validationMessage}}catch(E){return{success:!1,method:"check-validity",details:E.message,allowFallback:!0}}}function vr(d,k,w,E,y){try{let g=K(d,k),_=re(g,w);if("setSelectionRange"in d){let P=d;P.focus?.();let H=P.value?.length??0;return P.setSelectionRange(E??0,y??H),{success:!0,method:"select-range"}}let I=_.getSelection();if(!I)return{success:!1,method:"select-range",allowFallback:!0};let B=g.createRange();return B.selectNodeContents(d),I.removeAllRanges(),I.addRange(B),{success:!0,method:"select-range-node"}}catch(g){return{success:!1,method:"select-range",details:g.message,allowFallback:!0}}}function gn(d,k,w,E,y){let g=ko((d&&K(d))??k),_=d||g,I=K(_,k),B=re(I,w),P=_===I.documentElement||_===I.body||_===g;if(E===pt.TOP||E===pt.BOTTOM){let H=_.scrollHeight,W=P?B.innerHeight:_.clientHeight,j=Math.max(0,H-W);return _.scrollTop=E===pt.TOP?0:j,{success:!0,scrollTop:_.scrollTop}}return fa(_,I,B,E,y)}async function lo(d,k,w,E){let y=E.direction,g=E.amount,_=K(d,k),I=re(_,w),B=!_.hidden,P=B?"smooth":"auto";try{if(d){let W=qr(d,_,I),j=gn(W,_,I,y,g);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===pt.TOP||y===pt.BOTTOM){let W=await M(I,{action:"scrollTo",direction:y,options:{behavior:P,isTabActive:B}},{doc:_,timeoutMs:_.hidden?5200:2800});return{success:!0,method:"detector-scrollTo",details:JSON.stringify(W)}}let H=await M(I,{action:"scrollBy",direction:y,options:{amount:g,behavior:P,isTabActive:B}},{doc:_,timeoutMs:_.hidden?5200:2800});return{success:!0,method:"detector-scrollBy",details:JSON.stringify(H)}}catch(H){let W=_?gn(ko(_),_,I,y,g):void 0;return W?.success?{success:!0,method:"direct-primary-scroll-fallback",details:JSON.stringify(W)}:{success:!1,method:"scroll-page-failed",details:H?.message||W?.error||"scroll_page failed",allowFallback:!0}}}async function Je(d,k,w,E){let y=K(d,k),g=re(y,w),_=!y.hidden,I=_?"smooth":"auto",B=df(E.position),P=Jo(d,y);if(!P){let H=rl(d,y,g,B);return{success:H.success,method:"direct-scrollElement-no-selector",details:H.error,allowFallback:!H.success}}try{let H=await M(g,{action:"scrollElement",selector:P,position:B,options:{behavior:I,isTabActive:_}},{doc:y,timeoutMs:y.hidden?5600:3e3});return{success:!0,method:"detector-scrollElement",details:JSON.stringify(H)}}catch(H){let W=rl(d,y,g,B);return W.success?{success:!0,method:"direct-scrollElement-fallback",details:JSON.stringify(W)}:{success:!1,method:"scroll-to-element-failed",details:H?.message||W.error||"scroll_to_element failed",allowFallback:!0}}}function Fn(d,k,w,E,y){try{let g=K(d,k),_=re(g,w),I=_.WheelEvent||WheelEvent;ot(d,g,_);let B=qr(d,g,_);return B.dispatchEvent(new I("wheel",{bubbles:!0,cancelable:!0,composed:!0,view:_,deltaX:E||0,deltaY:y||0,deltaMode:I.DOM_DELTA_PIXEL})),B.scrollBy({left:E||0,top:y||0,behavior:"auto"}),{success:!0,method:"wheel"}}catch(g){return{success:!1,method:"wheel",details:g.message,allowFallback:!0}}}function qr(d,k,w){let E=K(d,k),y=re(E,w),g=E.scrollingElement||E.documentElement||E.body,_=d;for(;_&&_!==E.body&&_!==E.documentElement;){let B=y.getComputedStyle(_).overflowY;if((B==="auto"||B==="scroll"||B==="overlay")&&_.scrollHeight>_.clientHeight+5)return _;_=_.parentElement}return g}async function vt(d,k,w,E,y){try{let g=K(d,k),_=re(g,w),I=_.PointerEvent||PointerEvent,B=_.MouseEvent||MouseEvent,P=_.DragEvent||DragEvent,H=_.DataTransfer||DataTransfer;ot(d,g,_);let W=ge(d,g,_),j=kt(W.hit,_)?W.hit:d,ne=d.getBoundingClientRect(),se=Number.isFinite(Number(E?.distance))?Number(E.distance):160,ke=0,le=0;switch(String(E?.direction||"").toUpperCase()){case"UP":le=-se;break;case"DOWN":le=se;break;case"LEFT":ke=-se;break;case"RIGHT":ke=se;break;default:ke=Number(E?.delta_x)||0,le=Number(E?.delta_y)||0}let ie=(te,de)=>({x:Math.max(2,Math.min(te,_.innerWidth-3)),y:Math.max(2,Math.min(de,_.innerHeight-3))}),ue=ie(W.x,W.y),Ae=ie(W.x+ke,W.y+le),ze=500+Date.now()%1e4,Ee=Math.max(12,Math.min(36,Number(E?.steps)||18)),Te=(te,de)=>({bubbles:!0,cancelable:!0,composed:!0,view:_,clientX:te,clientY:de,pageX:te+(_.scrollX||0),pageY:de+(_.scrollY||0)}),Oe=(te,de,Pe)=>({...Te(te,de),pointerId:ze,pointerType:"mouse",isPrimary:!0,width:1,height:1,pressure:Pe?.5:0,buttons:Pe,button:0}),Ce=(te,de,Pe)=>({...Te(te,de),buttons:Pe,button:0});j.dispatchEvent(new I("pointerdown",Oe(ue.x,ue.y,1))),j.dispatchEvent(new B("mousedown",Ce(ue.x,ue.y,1)));try{j.setPointerCapture?.(ze)}catch{}let We=null;try{(d.draggable||F(d,y).sourcesByType.has("dragstart"))&&(We=new H)}catch{We=null}if(We)try{d.dispatchEvent(new P("dragstart",{bubbles:!0,cancelable:!0,clientX:ue.x,clientY:ue.y,dataTransfer:We}))}catch{}let Ke=null;for(let te=1;te<=Ee;te++){let de=ue.x+(Ae.x-ue.x)*te/Ee,Pe=ue.y+(Ae.y-ue.y)*te/Ee,Vt=g.elementFromPoint(de,Pe)||d;if(Vt.dispatchEvent(new I("pointermove",Oe(de,Pe,1))),Vt.dispatchEvent(new B("mousemove",Ce(de,Pe,1))),We)try{Ke&&Ke!==Vt&&Ke.dispatchEvent(new P("dragleave",{bubbles:!0,cancelable:!0,clientX:de,clientY:Pe,dataTransfer:We})),Vt.dispatchEvent(new P("dragover",{bubbles:!0,cancelable:!0,clientX:de,clientY:Pe,dataTransfer:We})),Ke=Vt}catch{}te%3===0&&await Jt()}let ae=g.elementFromPoint(Ae.x,Ae.y)||d;if(ae.dispatchEvent(new I("pointerup",Oe(Ae.x,Ae.y,0))),ae.dispatchEvent(new B("mouseup",Ce(Ae.x,Ae.y,0))),We)try{d.dispatchEvent(new P("dragend",{bubbles:!0,cancelable:!0,clientX:Ae.x,clientY:Ae.y,dataTransfer:We}))}catch{}return{success:!0,method:"drag",details:`dx=${ke};dy=${le};steps=${Ee};hitOk=${W.ok}`}}catch(g){return{success:!1,method:"drag",details:g?.message||"drag failed",allowFallback:!0}}}async function sn(d,k,w,E){try{let y=K(k,w),g=re(y,E),_=g.PointerEvent||PointerEvent,I=g.MouseEvent||MouseEvent,B=g.DragEvent||DragEvent,P=g.DataTransfer||DataTransfer,H=d?.source_element_id??d?.element_id,W=(H?Gn(y,String(H)):null)||k;if(!W)return{success:!1,method:"drag-drop",details:"source missing",allowFallback:!0};let j=null,ne=Number(d?.target_x),se=Number(d?.target_y);if(d?.target_element_id){if(j=Gn(y,String(d.target_element_id)),!j)return{success:!1,method:"drag-drop",details:"target missing",allowFallback:!0};let ae=j.getBoundingClientRect();ne=ae.left+ae.width/2,se=ae.top+ae.height/2}if((!Number.isFinite(ne)||!Number.isFinite(se))&&!j)return{success:!1,method:"drag-drop",details:"missing target coords",allowFallback:!0};ot(W,y,g),j&&ot(j,y,g);let ke=(ae,te)=>({x:Math.max(2,Math.min(ae,g.innerWidth-3)),y:Math.max(2,Math.min(te,g.innerHeight-3))}),le=W.getBoundingClientRect(),ie=ke(le.left+le.width/2,le.top+le.height/2),ue=ke(Number(ne),Number(se)),Ae=600+Date.now()%1e4,ze=Math.max(14,Math.min(42,Number(d?.steps)||22)),Ee=(ae,te)=>({bubbles:!0,cancelable:!0,composed:!0,view:g,clientX:ae,clientY:te,pageX:ae+(g.scrollX||0),pageY:te+(g.scrollY||0)}),Te=(ae,te,de)=>({...Ee(ae,te),pointerId:Ae,pointerType:"mouse",isPrimary:!0,width:1,height:1,pressure:de?.5:0,buttons:de,button:0}),Oe=(ae,te,de)=>({...Ee(ae,te),buttons:de,button:0}),Ce=null;try{Ce=new P}catch{Ce=null}W.dispatchEvent(new _("pointerdown",Te(ie.x,ie.y,1))),W.dispatchEvent(new I("mousedown",Oe(ie.x,ie.y,1)));try{W.setPointerCapture?.(Ae)}catch{}if(Ce)try{W.dispatchEvent(new B("dragstart",{bubbles:!0,cancelable:!0,clientX:ie.x,clientY:ie.y,dataTransfer:Ce}))}catch{}let We=null;for(let ae=1;ae<=ze;ae++){let te=ie.x+(ue.x-ie.x)*ae/ze,de=ie.y+(ue.y-ie.y)*ae/ze,Pe=y.elementFromPoint(te,de)||j||y.body;if(Pe.dispatchEvent(new _("pointermove",Te(te,de,1))),Pe.dispatchEvent(new I("mousemove",Oe(te,de,1))),Ce)try{We&&We!==Pe&&We.dispatchEvent(new B("dragleave",{bubbles:!0,cancelable:!0,clientX:te,clientY:de,dataTransfer:Ce})),Pe.dispatchEvent(new B("dragenter",{bubbles:!0,cancelable:!0,clientX:te,clientY:de,dataTransfer:Ce})),Pe.dispatchEvent(new B("dragover",{bubbles:!0,cancelable:!0,clientX:te,clientY:de,dataTransfer:Ce})),We=Pe}catch{}ae%3===0&&await Jt()}let Ke=j||y.elementFromPoint(ue.x,ue.y)||y.body;if(Ce)try{Ke.dispatchEvent(new B("drop",{bubbles:!0,cancelable:!0,clientX:ue.x,clientY:ue.y,dataTransfer:Ce}))}catch{}if(Ke.dispatchEvent(new _("pointerup",Te(ue.x,ue.y,0))),Ke.dispatchEvent(new I("mouseup",Oe(ue.x,ue.y,0))),Ce)try{W.dispatchEvent(new B("dragend",{bubbles:!0,cancelable:!0,clientX:ue.x,clientY:ue.y,dataTransfer:Ce}))}catch{}return{success:!0,method:"html5+pointer-dragdrop",details:`steps=${ze};source=${String(H)}`}}catch(y){return{success:!1,method:"drag-drop",details:y?.message||"drag-drop failed",allowFallback:!0}}}async function An(d,k,w,E){try{let y=K(d,k),g=re(y,w),_=g.PointerEvent||PointerEvent,I=g.MouseEvent||MouseEvent;ot(d,y,g);let B=ge(d,y,g),P={x:B.x,y:B.y},H=d.getBoundingClientRect(),W=Number.isFinite(Number(E?.distance))?Number(E.distance):Math.min(Math.max(80,Math.min(H.width,H.height)),220),j=String(E?.direction||"RIGHT").toUpperCase(),ne=P.x,se=P.y;j==="LEFT"&&(ne-=W),j==="RIGHT"&&(ne+=W),j==="UP"&&(se-=W),j==="DOWN"&&(se+=W);let ke=(te,de)=>({x:Math.max(2,Math.min(te,g.innerWidth-3)),y:Math.max(2,Math.min(de,g.innerHeight-3))}),le=ke(P.x,P.y),ie=ke(ne,se),ue=700+Date.now()%1e4,Ae=Math.max(10,Math.min(28,Number(E?.steps)||16)),ze=(te,de)=>({bubbles:!0,cancelable:!0,composed:!0,view:g,clientX:te,clientY:de,pageX:te+(g.scrollX||0),pageY:de+(g.scrollY||0)}),Ee=(te,de,Pe)=>({...ze(te,de),pointerId:ue,pointerType:"touch",isPrimary:!0,width:1,height:1,pressure:Pe?.5:0,buttons:Pe,button:0}),Te=(te,de,Pe)=>({...ze(te,de),buttons:Pe,button:0}),Oe=y.elementFromPoint(le.x,le.y)||d;Oe.dispatchEvent(new _("pointerdown",Ee(le.x,le.y,1))),Oe.dispatchEvent(new I("mousedown",Te(le.x,le.y,1)));let Ce=g.Touch,We=g.TouchEvent,Ke=!!Ce&&!!We;if(Ke)try{let te=new Ce({identifier:ue,target:Oe,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});Oe.dispatchEvent(new We("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[te],targetTouches:[te],changedTouches:[te]}))}catch{}for(let te=1;te<=Ae;te++){let de=le.x+(ie.x-le.x)*te/Ae,Pe=le.y+(ie.y-le.y)*te/Ae,Vt=y.elementFromPoint(de,Pe)||d;if(Vt.dispatchEvent(new _("pointermove",Ee(de,Pe,1))),Vt.dispatchEvent(new I("mousemove",Te(de,Pe,1))),Ke)try{let Pt=new Ce({identifier:ue,target:Vt,clientX:de,clientY:Pe,pageX:de,pageY:Pe,screenX:de,screenY:Pe,radiusX:1,radiusY:1,rotationAngle:0,force:1});Vt.dispatchEvent(new We("touchmove",{bubbles:!0,cancelable:!0,composed:!0,touches:[Pt],targetTouches:[Pt],changedTouches:[Pt]}))}catch{}te%3===0&&await Jt()}let ae=y.elementFromPoint(ie.x,ie.y)||d;if(ae.dispatchEvent(new _("pointerup",Ee(ie.x,ie.y,0))),ae.dispatchEvent(new I("mouseup",Te(ie.x,ie.y,0))),Ke)try{let te=new Ce({identifier:ue,target:ae,clientX:ie.x,clientY:ie.y,pageX:ie.x,pageY:ie.y,screenX:ie.x,screenY:ie.y,radiusX:1,radiusY:1,rotationAngle:0,force:0});ae.dispatchEvent(new We("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[te]}))}catch{}return{success:!0,method:"swipe",details:`dir=${j};dist=${W};steps=${Ae};hitOk=${B.ok}`}}catch(y){return{success:!1,method:"swipe",details:y?.message||"swipe failed",allowFallback:!0}}}async function Dt(d,k,w,E){try{let y=d||k.body,g=K(y,k),_=re(g,w),I=_.PointerEvent||PointerEvent,B=_.WheelEvent||WheelEvent;ot(y,g,_);let P=Number.isFinite(Number(E?.scale))?Number(E.scale):1.2,H=y.getBoundingClientRect(),W=H.left+H.width/2,j=H.top+H.height/2,ne=24,se=Math.max(6,Math.min(200,ne*P)),ke=Math.max(6,Math.min(18,Number(E?.steps)||10)),le=_.Touch,ie=_.TouchEvent;if(!!le&&!!ie)try{let Ee=(Ke,ae)=>new le({identifier:Ke,target:y,clientX:ae,clientY:j,pageX:ae,pageY:j,screenX:ae,screenY:j,radiusX:1,radiusY:1,rotationAngle:0,force:1}),Te=Ee(911,W-ne),Oe=Ee(912,W+ne);y.dispatchEvent(new ie("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[Te,Oe],targetTouches:[Te,Oe],changedTouches:[Te,Oe]}));for(let Ke=1;Ke<=ke;Ke++){let ae=ne+(se-ne)*Ke/ke,te=Ee(911,W-ae),de=Ee(912,W+ae);y.dispatchEvent(new ie("touchmove",{bubbles:!0,cancelable:!0,composed:!0,touches:[te,de],targetTouches:[te,de],changedTouches:[te,de]})),Ke%2===0&&await Jt()}let Ce=Ee(911,W-se),We=Ee(912,W+se);y.dispatchEvent(new ie("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[Ce,We]}))}catch{}try{let Ee=(Te,Oe,Ce)=>({bubbles:!0,cancelable:!0,composed:!0,view:_,clientX:Oe,clientY:j,pointerId:Te,pointerType:"touch",isPrimary:Te===821,width:1,height:1,pressure:Ce?.5:0,buttons:Ce,button:0});y.dispatchEvent(new I("pointerdown",Ee(821,W-ne,1))),y.dispatchEvent(new I("pointerdown",Ee(822,W+ne,1)));for(let Te=1;Te<=ke;Te++){let Oe=ne+(se-ne)*Te/ke;y.dispatchEvent(new I("pointermove",Ee(821,W-Oe,1))),y.dispatchEvent(new I("pointermove",Ee(822,W+Oe,1))),Te%2===0&&await Jt()}y.dispatchEvent(new I("pointerup",Ee(821,W-se,0))),y.dispatchEvent(new I("pointerup",Ee(822,W+se,0)))}catch{}try{let Ae=P>=1?-120:120;y.dispatchEvent(new B("wheel",{bubbles:!0,cancelable:!0,composed:!0,view:_,clientX:W,clientY:j,ctrlKey:!0,deltaY:Ae,deltaMode:B.DOM_DELTA_PIXEL}))}catch{}return{success:!0,method:"pinch-zoom",details:`scale=${P};steps=${ke}`}}catch(y){return{success:!1,method:"pinch-zoom",details:y?.message||"pinch-zoom failed",allowFallback:!0}}}async function an(d,k,w,E=800){try{let y=K(d,k),g=re(y,w),_=g.PointerEvent||PointerEvent,I=g.MouseEvent||MouseEvent,B=g.FocusEvent||FocusEvent;ot(d,y,g);let P=ge(d,y,g),H=d;!P.ok&&kt(P.hit,g)?H=P.hit.closest?.('a,button,input,select,textarea,summary,[role="button"],[role="link"],[onclick]')||P.hit:kt(P.hit,g)&&(H=P.hit);let W=yn(H,y,g),j=P.x,ne=P.y,se=1+Date.now()%1e4,ke={bubbles:!0,cancelable:!0,composed:!0,view:g,clientX:j,clientY:ne,pageX:j+(g.scrollX||0),pageY:ne+(g.scrollY||0),screenX:j+(g.screenX||0),screenY:ne+(g.screenY||0)},le={...ke,pointerId:se,pointerType:"touch",isPrimary:!0,width:1,height:1,pressure:0,buttons:0,button:0};try{H.dispatchEvent(new _("pointerover",le)),H.dispatchEvent(new _("pointerenter",{...le,bubbles:!1}))}catch{}try{H.dispatchEvent(new I("mouseover",ke)),H.dispatchEvent(new I("mouseenter",{...ke,bubbles:!1}))}catch{}try{H.focus?.({preventScroll:!0}),H.dispatchEvent(new B("focus",{bubbles:!0,composed:!0})),H.dispatchEvent(new B("focusin",{bubbles:!0,composed:!0}))}catch{}try{H.dispatchEvent(new _("pointerdown",{...le,buttons:1,pressure:.5}))}catch{}try{H.dispatchEvent(new I("mousedown",{...ke,buttons:1,button:0}))}catch{}try{let Ee=g.Touch,Te=g.TouchEvent;if(typeof Ee<"u"&&typeof Te<"u"){let Oe=new Ee({identifier:se,target:H,clientX:j,clientY:ne,pageX:j+(g.scrollX||0),pageY:ne+(g.scrollY||0),screenX:j+(g.screenX||0),screenY:ne+(g.screenY||0),radiusX:1,radiusY:1,rotationAngle:0,force:1});H.dispatchEvent(new Te("touchstart",{bubbles:!0,cancelable:!0,composed:!0,touches:[Oe],targetTouches:[Oe],changedTouches:[Oe]}))}}catch{}let ie=Number(E),ue=Number.isFinite(ie)&&ie>0?ie:800,Ae=y.hidden?Math.max(ue,1200):ue;await _t(Ae,y);try{H.dispatchEvent(new I("contextmenu",{...ke,button:2,buttons:2}))}catch{}try{H.dispatchEvent(new _("pointerup",{...le,buttons:0,pressure:0}))}catch{}try{H.dispatchEvent(new I("mouseup",{...ke,buttons:0,button:0}))}catch{}try{let Ee=g.Touch,Te=g.TouchEvent;if(typeof Ee<"u"&&typeof Te<"u"){let Oe=new Ee({identifier:se,target:H,clientX:j,clientY:ne,pageX:j+(g.scrollX||0),pageY:ne+(g.scrollY||0),screenX:j+(g.screenX||0),screenY:ne+(g.screenY||0),radiusX:1,radiusY:1,rotationAngle:0,force:0});H.dispatchEvent(new Te("touchend",{bubbles:!0,cancelable:!0,composed:!0,touches:[],targetTouches:[],changedTouches:[Oe]}))}}catch{}let ze=await _r(H,y,g,W);return{success:!0,method:"long-press",details:`holdMs=${Ae};verified=${ze};hitOk=${P.ok};target=${H.tagName.toLowerCase()}`}}catch(y){return{success:!1,method:"long-press",details:y?.message||"long-press failed",allowFallback:!0}}}function rt(d,k,w,E,y){try{let g=K(w,E),I=re(g,y).KeyboardEvent||KeyboardEvent,B=w||g.activeElement||g.body||g.documentElement;B.focus?.();let P={key:d,code:Mn(d),bubbles:!0,cancelable:!0,ctrlKey:k?.includes("CTRL"),altKey:k?.includes("ALT"),shiftKey:k?.includes("SHIFT"),metaKey:k?.includes("META")},H=B.dispatchEvent(new I("keydown",P)),W=B.dispatchEvent(new I("keypress",P)),j=B.dispatchEvent(new I("keyup",P));if(d==="Enter"&&!!(H&&W&&j)){let se=B.form||B.closest?.("form");se?.requestSubmit?se.requestSubmit():se?.submit?.()}return{success:!0,method:"press-key"}}catch(g){return{success:!1,method:"press-key",details:g.message,allowFallback:!0}}}async function Tr(d,k,w){try{let E=d.innerText||d.value||"";if(!E)return{success:!1,method:"copy",details:"nothing to copy",allowFallback:!0};let y=K(d,k),g=re(y,w);if(g.navigator?.clipboard?.writeText)return await g.navigator.clipboard.writeText(E),{success:!0,method:"clipboard-copy"};let _=y.createRange();_.selectNodeContents(d);let I=g.getSelection?.()||(y.defaultView||window).getSelection?.();I?.removeAllRanges(),I?.addRange(_);let B=y.execCommand?.("copy")??!1;return I?.removeAllRanges(),{success:!!B,method:"execCommand-copy",allowFallback:!B}}catch(E){return{success:!1,method:"clipboard-copy",details:E.message,allowFallback:!0}}}async function or(d,k,w,E){try{d.focus?.();let y=K(d,k),g=re(y,w);if(g.navigator?.clipboard?.readText){let I=await g.navigator.clipboard.readText();if(I)return await Un(d,y,g,I,E)}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 Hn(d){return`${(d/1024).toFixed(1)}KB`}function Cn(d,k){if(d instanceof k.defaultView.HTMLInputElement){let _=d;if((_.type||"").toLowerCase()==="file")return _}let w=d.closest?.("label"),E=w?.htmlFor||d.htmlFor||"";if(E){let _=k.getElementById(E);if(_&&(_.type||"").toLowerCase()==="file")return _}if(w){let _=w.querySelector?.('input[type="file"]');if(_)return _}let y=d.closest?.("form");if(y){let _=y.querySelector?.('input[type="file"]');if(_)return _}let g=d.closest?.("div,section,main,article")||d.parentElement;if(g){let _=g.querySelector?.('input[type="file"]');if(_)return _}return null}function uo(d,k,w){try{let E=w.HTMLInputElement?.prototype,y=E?Object.getOwnPropertyDescriptor(E,"files")?.set:void 0;if(!y){let g=Object.getPrototypeOf(d);for(;g&&!y;)y=Object.getOwnPropertyDescriptor(g,"files")?.set,g=Object.getPrototypeOf(g)}return y?(y.call(d,k),!0):(d.files=k,!0)}catch{try{return d.files=k,!0}catch{return!1}}}async function qn(d,k,w,E,y,g){try{let{file_url:_,element_id:I,file_name:B}=d,P=null;if(y&&(P=Cn(y,k)),!P&&I!==void 0&&(P=k.querySelector(`input[type="file"][${jt}*="[id=${I}]"]`)),!P){let ae=k.querySelectorAll('input[type="file"]');for(let te of ae){if(te.disabled)continue;let de=te.getBoundingClientRect();if(de.width>0&&de.height>0){P=te;break}}}if(!P)return{success:!1,method:"upload-file",details:"No file input found",allowFallback:!0};if(P.disabled)return{success:!1,method:"upload-file",details:"File input is disabled",allowFallback:!0};let H=K(P,k),W=re(H,w);if(!(E?.kind==="upload_file"&&typeof E.byteLength=="number"&&E.byteLength>=0&&typeof E.mimeType=="string"&&(typeof E.inlineB64=="string"||typeof E.token=="string")))return{success:!1,method:"upload-file",details:"Missing upload payload (need inlineB64 or token)",allowFallback:!0};let ne=Number(E.byteLength),se=(E.mimeType||"application/octet-stream").split(";")[0].trim()||"application/octet-stream",ke;if(E.inlineB64&&typeof E.inlineB64=="string"){let ae=af(E.inlineB64);if(ae.byteLength!==ne)return{success:!1,method:"upload-file",details:`Inline bytes length mismatch: got=${ae.byteLength} expected=${ne}`,allowFallback:!0};ke=ae.buffer}else{let ae=String(E.token);ke=await h(W,ae,ne,9e4)}let le=W.Blob||Blob,ie=new le([ke],{type:se}),ue=B||E?.fileName;!ue&&_&&typeof _=="string"&&(ue=tl(_,W)),ue=sf(ue||"upload");let Ae=W.File||File,ze=new Ae([ie],ue,{type:se,lastModified:Date.now()}),Ee=W.Event||Event,Te=W.DataTransfer||DataTransfer;if(!Te)return{success:!1,method:"upload-file",details:"DataTransfer unavailable in this context",allowFallback:!0};let Oe=new Te;if(Oe.items.add(ze),!uo(P,Oe.files,W))return{success:!1,method:"upload-file",details:"Failed to set input.files",allowFallback:!0};P.dispatchEvent(new Ee("input",{bubbles:!0,composed:!0,cancelable:!0})),P.dispatchEvent(new Ee("change",{bubbles:!0,composed:!0,cancelable:!0}));let We=$n(P);if(We){let ae=vn(We);if(ae.onChange){let te=cn("change",P,H,W);te.target.files=Oe.files,ae.onChange(te)}}let Ke=Ze(P);if(Ke){let ae=fo(Ke);if(ae.change){let te=new Ee("change",{bubbles:!0});te.target=P,te.target.files=Oe.files,ae.change(te)}}try{let ae=W.jQuery||W.$;ae&&typeof ae=="function"&&ae(P).triggerHandler?.("change")}catch{}return P.focus?.({preventScroll:!0}),await Ie(H,W,2),{success:!0,method:"upload-file",details:`Uploaded ${ue} (${Hn(ie.size)}) [token]`}}catch(_){return{success:!1,method:"upload-file",details:_?.message||"Upload failed",allowFallback:!0}}}async function sr(d,k,w){let E=Array.isArray(d.path)?d.path:[];if(!E.length)return{success:!1,method:"dispatch_pointer_path",details:"Empty path",allowFallback:!0};let y=w.PointerEvent||PointerEvent,g=w.MouseEvent||MouseEvent,_=16;for(let I=0;I<E.length;I++){let B=E[I],P=Number(B.x)||0,H=Number(B.y)||0,W=Number(B.pressure)||(I===0||I===E.length-1?0:.5),j=k.elementFromPoint(P,H)||k.documentElement,ne={bubbles:!0,cancelable:!0,clientX:P,clientY:H,screenX:P,screenY:H,view:w};if(I===0?(j.dispatchEvent(new y("pointerdown",{...ne,pressure:W,pointerId:1,pointerType:"mouse"})),j.dispatchEvent(new g("mousedown",{...ne,button:0,buttons:1}))):(j.dispatchEvent(new y("pointermove",{...ne,pressure:W,pointerId:1,pointerType:"mouse"})),j.dispatchEvent(new g("mousemove",{...ne,button:0,buttons:1}))),I===E.length-1&&(j.dispatchEvent(new y("pointerup",{...ne,pressure:0,pointerId:1,pointerType:"mouse"})),j.dispatchEvent(new g("mouseup",{...ne,button:0,buttons:0}))),I<E.length-1){let se=Number(B.timestamp)||0,ke=Number(E[I+1].timestamp)||0,le=se&&ke?Math.max(0,Math.min(ke-se,1e3)):_;le>0&&await _t(le,k)}}return{success:!0,method:"dispatch_pointer_path",details:`Dispatched ${E.length} point(s)`}}function ir(d,k,w){let E=K(d,k),y=re(E,w),g=y.MouseEvent||MouseEvent;ot(d,E,y),Q(d,E,y),Q(d,E,y);let _=d.getBoundingClientRect();return d.dispatchEvent(new g("dblclick",{bubbles:!0,cancelable:!0,clientX:_.left+_.width/2,clientY:_.top+_.height/2,detail:2,view:y})),{success:!0,method:"dblclick"}}function bn(d,k,w){let E=K(d,k),y=re(E,w),g=y.PointerEvent||PointerEvent,_=y.MouseEvent||MouseEvent;ot(d,E,y);let I=d.getBoundingClientRect(),B=I.left+I.width/2,P=I.top+I.height/2,H={bubbles:!0,cancelable:!0,composed:!0,view:y,clientX:B,clientY:P,button:2,buttons:2};return d.dispatchEvent(new g("pointerdown",H)),d.dispatchEvent(new _("mousedown",H)),d.dispatchEvent(new g("pointerup",{...H,buttons:0})),d.dispatchEvent(new _("mouseup",{...H,buttons:0})),d.dispatchEvent(new _("contextmenu",H)),{success:!0,method:"contextmenu"}}function yn(d,k,w){let E=K(d,k),y=re(E,w),g=d,_=d.getBoundingClientRect();return{href:String(y.location.href),hash:String(y.location.hash),ariaExpanded:d.getAttribute("aria-expanded"),ariaPressed:d.getAttribute("aria-pressed"),ariaDisabled:d.getAttribute("aria-disabled"),disabled:!!g.disabled,open:typeof g.open<"u"?g.open:void 0,checked:typeof g.checked<"u"?g.checked:void 0,value:typeof g.value<"u"?g.value:void 0,active:ca(E),rect:{w:_.width,h:_.height}}}function we(d,k){let w=Math.abs(d.rect.w-k.rect.w)>2||Math.abs(d.rect.h-k.rect.h)>2;return d.href!==k.href||d.hash!==k.hash||d.ariaExpanded!==k.ariaExpanded||d.ariaPressed!==k.ariaPressed||d.ariaDisabled!==k.ariaDisabled||d.disabled!==k.disabled||d.open!==k.open||d.checked!==k.checked||d.value!==k.value||d.active!==k.active||w}async function _r(d,k,w,E){await Promise.resolve();let y=K(d,k),g=re(y,w);k.hidden||await Jt();let _=yn(d,y,g);return we(E,_)}function Nn(d,k,w){d.focus?.({preventScroll:!0});let E=K(d,k),y=re(E,w),I=d.getAttribute("role")==="button"||ju(d,y)||d.tagName.toLowerCase()==="button"?[" ","Enter"]:["Enter"],B=y.KeyboardEvent||KeyboardEvent;for(let P of I){let H={key:P,code:P===" "?"Space":"Enter",bubbles:!0,cancelable:!0,composed:!0};d.dispatchEvent(new B("keydown",H)),d.dispatchEvent(new B("keypress",H)),d.dispatchEvent(new B("keyup",H))}return{success:!0,method:"keyboard-activate"}}async function Ot(d,k,w,...E){let y=null;for(let g of E){let _=K(d,k),I=re(_,w),B=yn(d,_,I),P=g();if(!P||!P.success)continue;if(await _r(d,_,I,B))return{...P,details:(P.details?P.details+";":"")+"verified=true"};y=P}return y?{...y,details:(y.details?y.details+";":"")+"verified=false"}:{success:!1,method:"all-strategies-unverified",details:"no verified effect",allowFallback:!0}}function Qt(...d){for(let k of d)try{let w=k();if(w&&w.success)return w}catch{}return{success:!1,method:"all-strategies-failed",allowFallback:!0}}function ot(d,k,w){let E=K(d,k),y=re(E,w),g=d.getBoundingClientRect();g.top>=0&&g.left>=0&&g.bottom<=y.innerHeight&&g.right<=y.innerWidth||(d.scrollIntoView({behavior:"auto",block:"center",inline:"center"}),d.offsetHeight)}function Fo(d,k,w,E){let y=K(d,k),_=re(y,w).KeyboardEvent||KeyboardEvent;for(let I of E){let B=String(I??""),P="";/^[a-z]$/i.test(B)?P=`Key${B.toUpperCase()}`:/^[0-9]$/.test(B)?P=`Digit${B}`:B===" "&&(P="Space");let H=B.length===1?B.charCodeAt(0):0,W={key:B,code:P,bubbles:!0,cancelable:!0,composed:!0,keyCode:H,which:H};d.dispatchEvent(new _("keydown",W)),d.dispatchEvent(new _("keypress",W)),d.dispatchEvent(new _("keyup",W))}}function Ni(d,k,w){let E=K(d,k),g=re(E,w).KeyboardEvent||KeyboardEvent,_={key:"Enter",code:"Enter",keyCode:13,which:13,bubbles:!0,cancelable:!0,composed:!0},I=d.dispatchEvent(new g("keydown",_)),B=d.dispatchEvent(new g("keypress",_)),P=d.dispatchEvent(new g("keyup",_));if(!!(I&&B&&P)){let W=d.form||d.closest?.("form");W?.requestSubmit?.()??W?.submit?.()}}function Mn(d){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"}[d]||`Key${d.toUpperCase()}`}let Er=new MessageChannel,Ln=[];Er.port1.onmessage=()=>{let d=Ln.shift();d&&d()};function Jt(){return new Promise(d=>{Ln.push(d),Er.port2.postMessage(0)})}function $n(d){let k=E=>{if(!E)return null;let y=Object.keys(E);for(let g of y)if(g.startsWith("__reactFiber")||g.startsWith("__reactInternalInstance")||g.includes("reactFiber")||g.includes("reactProps")||g.includes("reactEventHandlers")||/^__r\d+/.test(g))return E[g];return null},w=d;for(let E=0;E<4&&w;E++){let y=k(w);if(y)return y;w=w.parentElement}return null}function vn(d){let k={},w=d,E=0;for(;w&&E++<10;){let y=[w.memoizedProps,w.pendingProps,w.stateNode?.props,w._memoizedProps,w._pendingProps,w.alternate?.memoizedProps].filter(Boolean);for(let g of y)if(!(!g||typeof g!="object"))for(let _ in g)_.startsWith("on")&&typeof g[_]=="function"&&(k[_]=g[_]);if(Object.keys(k).length)break;w=w.return||w.alternate}return k}function $r(d,k){let w=d;for(;w;){if(w._reactRootContainer||w.__reactContainer||w.hasAttribute("data-reactroot")||w.hasAttribute("data-react-root")||["root","app","__next"].includes(w.id))return w;w=w.parentElement}return K(d,k).querySelector("#root,#app,#__next,[data-reactroot],[data-react-root]")}function cn(d,k,w,E){let y=K(k,w),g=re(y,E),_=g.MouseEvent||MouseEvent,I=k.getBoundingClientRect(),B=new _(d,{bubbles:!0,cancelable:!0,view:g,clientX:I.left+I.width/2,clientY:I.top+I.height/2});return{type:d,target:k,currentTarget:k,bubbles:!0,cancelable:!0,nativeEvent:B,isTrusted:!0,preventDefault(){B.preventDefault()},stopPropagation(){B.stopPropagation()}}}function Ze(d){let k=d;if(k.__vue__)return k.__vue__;if(k.__vueParentComponent)return k.__vueParentComponent;if(k._vnode)return k._vnode;let w=d.parentElement;for(let E=0;E<3&&w;E++){let y=w;if(y.__vue__||y.__vueParentComponent||y._vnode)return y.__vue__||y.__vueParentComponent||y._vnode;w=w.parentElement}return null}function fo(d){let k={};if(d?.$listeners&&Object.assign(k,d.$listeners),d?._events)for(let w in d._events){let E=d._events[w];k[w]=Array.isArray(E)?E[0]:E}if(d?.props)for(let w in d.props)w.startsWith("on")&&typeof d.props[w]=="function"&&(k[w.substring(2).toLowerCase()]=d.props[w]);if(d?.vnode?.props)for(let w in d.vnode.props)w.startsWith("on")&&typeof d.vnode.props[w]=="function"&&(k[w.substring(2).toLowerCase()]=d.vnode.props[w]);return k}})();function hf(){let e=window,t=e.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__";e[t]?.actions?.execute}async function mf(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 Zo(e,t,n={}){let{rootNodes:r,semanticNodes:o}=jc(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=Ws(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(u=document,m=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=u,this.win=m,this.viewport={width:m.innerWidth,height:m.innerHeight},this.updateViewport()}getValidPrimary(){return this.lastDetectedPrimary&&!this.doc.contains(this.lastDetectedPrimary)&&(this.lastDetectedPrimary=null),this.lastDetectedPrimary}async handleCommand(u){switch(u.action){case"detectPrimary":{let m=this.detectPrimaryScrollable();if(!m)return null;let{target:T,isRoot:h}=this.getScrollContext(m.element),b=T.scrollHeight,v=lr(),M=h&&v?v.innerHeight:T.clientHeight,q=Math.max(0,b-M),R=T.scrollTop;return{selector:m.selector,score:m.score,type:m.type,metrics:{scrollTop:R,scrollHeight:b,clientHeight:M,isAtTop:R<=5,isAtBottom:R>=q-5}}}case"scrollTo":if(!u.direction)throw new Error("scrollTo requires direction");return this.scrollToDirection(u.direction,u.options);case"scrollBy":if(!u.direction)throw new Error("scrollBy requires direction");return this.scrollByAmount(u.direction,u.options);case"scrollElement":if(!u.selector)throw new Error("scrollElement requires selector");return this.scrollElementIntoView(u.selector,u.position,u.options);case"getMetrics":return this.getScrollMetrics();default:throw new Error(`Unknown command: ${u.action}`)}}updateViewport(){this.viewport={width:this.win.innerWidth,height:this.win.innerHeight}}async execute(u){return this.handleCommand(u)}detectPrimaryScrollable(){if(Date.now()-this.lastDetectionTime<this.CACHE_TTL&&this.detectionCache.size>0){let h=Array.from(this.detectionCache.values()).sort((b,v)=>v.score-b.score)[0];if(h)return this.lastDetectedPrimary=h.element,h}this.updateViewport();let u=this.collectScrollableCandidates();if(u.length===0){let h=this.doc.scrollingElement||this.doc.documentElement||this.doc.body;if(!h)return null;let b=this.buildFeatures(h),v=K(h,this.doc),M={element:h,selector:Jo(h,v),score:.5,features:b,type:"document"};return this.detectionCache.clear(),this.detectionCache.set(M.selector,M),this.lastDetectionTime=Date.now(),this.lastDetectedPrimary=h,M}let m=this.scoreCandidates(u);if(m.length===0)return null;this.detectionCache.clear();for(let h of m)this.detectionCache.set(h.selector,h);this.lastDetectionTime=Date.now();let T=m[0];return T&&(this.lastDetectedPrimary=T.element),T||null}collectAllElementsDeep(u,m=15e4){let T=[],h=[],b=u.body||u.documentElement;b&&h.push(b);let v=0,M=q=>{try{let R=this.win.__RTRVR_INTERNAL_KEY__||"__RTRVR_INTERNAL__",F=this.win[R]?.shadow?.getRoot;if(typeof F=="function"){let z=F(q);if(z)return z}}catch{}try{return q.shadowRoot||null}catch{return null}};for(;h.length&&!(++v>m);){let q=h.pop();if(En(q)){let F=q.children;for(let z=F.length-1;z>=0;z--)h.push(F[z]);continue}let R=q,S=ye(R);kt(R,S)&&T.push(R);try{let F=M(R);F&&h.push(F)}catch{}for(let F=R.lastElementChild;F;F=F.previousElementSibling)h.push(F)}return T}collectScrollableCandidates(){let u=[],m=new WeakSet,T=[this.doc.scrollingElement,this.doc.documentElement,this.doc.body];for(let b of T){if(!b||m.has(b))continue;let v=this.isScrollable(b);(v.vertical||v.horizontal)&&(u.push(b),m.add(b))}let h=this.collectAllElementsDeep(this.doc);for(let b of Array.from(h)){if(m.has(b))continue;let v=b.getBoundingClientRect(),M=this.win.getComputedStyle(b);if(!this.isElementRendered(b,v,M)||!this.isScrollable(b).vertical)continue;let R=40,S=this.viewport.width*.15;if(v.height<R||v.width<S){let F=(b.className||"").toLowerCase().includes("scroll"),z=M.overflowY==="auto"||M.overflowY==="scroll"||M.overflow==="auto"||M.overflow==="scroll";if(!F&&!z)continue}u.push(b),m.add(b)}return u}isElementRendered(u,m,T){if(T.display==="none"||T.visibility==="hidden")return!1;let h=parseFloat(T.opacity||"1");return!(!Number.isNaN(h)&&h<.01||m.width<=1||m.height<=1)}isScrollable(u){let m=this.win.getComputedStyle(u),T=m.overflowY,h=m.overflowX,b=this.doc.scrollingElement,v=u===this.doc.documentElement||u===this.doc.body||!!b&&u===b,M=u.scrollHeight,q=u.clientHeight,R=u.scrollWidth,S=u.clientWidth;if(v){let be=this.doc.documentElement,Be=this.doc.body;M=Math.max(be?be.scrollHeight:0,Be?Be.scrollHeight:0),q=this.win.innerHeight}let F=M-q>8,z=R-S>8,Q=T==="auto"||T==="scroll"||T==="overlay",fe=h==="auto"||h==="scroll"||h==="overlay";return{vertical:v?F:F&&Q,horizontal:v?z:z&&fe,byOverflow:Q||fe}}calculateVisibleIntersection(u){let m=Math.max(0,u.left),T=Math.max(0,u.top),h=Math.min(this.viewport.width,u.right),b=Math.min(this.viewport.height,u.bottom),v=Math.max(0,h-m),M=Math.max(0,b-T);return{width:v,height:M,area:v*M}}analyzeTextContent(u,m=2e3){let T=0,h=0,b=u.ownerDocument||this.doc,M=(b.defaultView||this.win).NodeFilter||NodeFilter,q=b.createTreeWalker(u,M.SHOW_ELEMENT|M.SHOW_TEXT,null),R=0,S=q.currentNode,F=[];for(;S&&R<m;){if(S.nodeType===Node.TEXT_NODE){let he=(S.textContent||"").replace(/\s+/g,"").length;if(he>0){T+=he;let Re=S.parentElement;Re&&Re.closest("a")&&(h+=he)}}else S.nodeType===Node.ELEMENT_NODE&&F.push(S);R++,S=q.nextNode()}let z=F.length||1,Q=T/z,fe=T>0?h/T:0;return{textChars:T,linkChars:h,textDensity:Q,linkDensity:fe}}calculateRepetitionScore(u){let m=Array.from(u.children);if(m.length<3)return 0;let T=m.slice(0,50),h=new Map,b=new Map,v=new Map;for(let ge of T){let he=ye(ge);if(!kt(ge,he))continue;let Re=ge.getBoundingClientRect();if(Re.height<5||Re.width<this.viewport.width*.1)continue;let be=Math.round(Re.height/10)*10,Be=Math.round(Re.width/10)*10;h.set(be,(h.get(be)||0)+1),b.set(Be,(b.get(Be)||0)+1);let Ne=(ge.className||ge.tagName).toString();v.set(Ne,(v.get(Ne)||0)+1)}let M=T.length||1,q=Math.max(0,...h.values()),R=Math.max(0,...b.values()),S=Math.max(0,...v.values()),F=q/M,z=R/M,Q=S/M,fe=.4*F+.3*z+.3*Q;return Math.min(1,Math.max(0,fe))}calculateSemanticScore(u){let m=0,T=null,h=!1,b=(u.getAttribute("role")||"").toLowerCase(),v=u.tagName.toLowerCase(),M=(u.id||"").toLowerCase(),q=(u.className||"").toLowerCase(),R=`${b} ${v} ${M} ${q}`;return(v==="main"||b==="main")&&(m+=1.2,T="article"),v==="article"&&(m+=1,T=T||"article"),(b==="feed"||R.includes("feed"))&&(m+=1,T="feed"),(b==="log"||R.includes("chat")||R.includes("messages"))&&(m+=1,T="chat"),R.includes("content")&&(m+=.5),(R.includes("results")||R.includes("list"))&&(m+=.4),(R.includes("job")||R.includes("jobs"))&&(m+=.4),(v==="nav"||b==="navigation"||R.includes("sidebar"))&&(m-=1,h=!0),(v==="aside"||b==="complementary")&&(m-=.7,h=!0),(v==="footer"||b==="contentinfo"||R.includes("footer"))&&(m-=.8,h=!0),R.includes("header")&&(m-=.6),m=Math.max(-1,Math.min(1,m)),{semanticScore:m,typeHint:T,navLike:h}}detectScrollListeners(u){return[u.querySelector('[class*="infinite"]'),u.querySelector('[class*="load-more"]'),u.querySelector("[data-infinite]"),u.querySelector('[loading="lazy"]'),u.querySelector(".observer-target"),u.querySelector("[data-scroll]")].some(T=>T!==null)}buildFeatures(u){let m=u.getBoundingClientRect(),T=this.win.getComputedStyle(u),h=this.calculateVisibleIntersection(m),b=this.viewport.width*this.viewport.height||1,v=h.area/b,M=this.viewport.width>0?h.width/this.viewport.width:0,q=m.top+m.height/2,R=this.viewport.height/2||1,S=Math.min(1,Math.abs(q-R)/R),F=this.isScrollable(u),z=this.doc.scrollingElement,Q=u===this.doc.documentElement||u===this.doc.body||!!z&&u===z,fe=u.scrollHeight,ge=u.clientHeight;if(Q){let it=this.doc.documentElement,Lt=this.doc.body;fe=Math.max(it?it.scrollHeight:0,Lt?Lt.scrollHeight:0),ge=this.win.innerHeight}let he=Math.max(0,fe-ge),Re=he*h.width,be=this.analyzeTextContent(u),Be=this.calculateRepetitionScore(u),Ne=this.calculateSemanticScore(u),ut=u.contains(this.doc.activeElement),Ie=this.detectScrollListeners(u),Mt=parseInt(T.zIndex||"0",10),bt=Number.isFinite(Mt)?Mt:0;return{geometry:{viewportCoverage:v,widthProminence:M,centerDistance:S,scrollCapacity:he,scrollSurface:Re,zIndex:bt},content:{textDensity:be.textDensity,linkDensity:be.linkDensity,repetitionScore:Be,semanticScore:Ne.semanticScore},interaction:{hasScrollListeners:Ie,hasFocus:ut,recentActivity:ut?1:0}}}inferElementType(u,m,T,h){if(T)return T;let b=(u.getAttribute("role")||"").toLowerCase(),v=(u.className||"").toLowerCase(),M=u.tagName.toLowerCase(),q=m.geometry,R=m.content;if(b==="log"||v.includes("chat")||v.includes("messages"))return"chat";let S=this.win.getComputedStyle(u);if((S.position==="fixed"||S.position==="absolute")&&q.zIndex>100&&q.viewportCoverage>.2&&q.centerDistance<.4)return"modal";if(b==="feed"||R.repetitionScore>.3&&q.scrollCapacity>400&&q.widthProminence>=.25)return"feed";if(M==="article"||R.textDensity>40&&R.linkDensity<.4&&q.widthProminence>.4)return"article";if(h||q.widthProminence<.3&&R.linkDensity>.3)return"sidebar";let z=this.doc.scrollingElement;return u===this.doc.documentElement||u===this.doc.body||z&&u===z?"document":"unknown"}scoreCandidates(u){let m=[],T=[],h=[],b=[],v=[],M=[];for(let Q of u){let fe=this.buildFeatures(Q),ge=fe.content.semanticScore,he=this.calculateSemanticScore(Q),Re=this.inferElementType(Q,fe,he.typeHint,he.navLike);M.push({element:Q,features:{geometry:{...fe.geometry},content:{...fe.content,semanticScore:he.semanticScore},interaction:fe.interaction},type:Re,navLike:he.navLike,semanticScore:he.semanticScore}),T.push(fe.geometry.scrollSurface),h.push(fe.content.textDensity),b.push(Math.abs(he.semanticScore)),v.push(fe.content.repetitionScore)}let q=Math.max(0,...T),R=Math.max(0,...h),S=Math.max(0,...b),F=Math.max(0,...v),z=-1/0;for(let Q of M){let{element:fe,features:ge,type:he,navLike:Re,semanticScore:be}=Q,Be=ge.geometry,Ne=ge.content,ut=ge.interaction,Ie=q>0?Be.scrollSurface/q:0,Mt=R>0?Ne.textDensity/R:0,bt=S>0?(be/S+1)/2:.5,it=he==="feed"||Ne.repetitionScore>.3&&Be.scrollCapacity>400,Lt=Ne.linkDensity>.5?(Ne.linkDensity-.5)/.5:0,Un=it?0:Lt,Rn=(it?1:.5)*Ne.repetitionScore*Math.min(1,Be.scrollCapacity/4e3),yt={feed:.2,chat:.2,article:.08,modal:.08,document:.05,sidebar:-.12,unknown:0}[he]||0,Qe=0;Qe+=Be.viewportCoverage*.18,Qe+=Be.widthProminence*.15,Qe+=(1-Be.centerDistance)*.07,Qe+=Ie*.22,Qe+=Rn*.18,Qe+=Mt*.08,Qe+=(F>0?Ne.repetitionScore/F:0)*.05,Qe+=bt*.07,Qe-=Un*.05,ut.hasFocus&&(Qe+=.05),ut.hasScrollListeners&&(Qe+=.05),Qe+=yt,Re&&(Qe-=.05);let Yt=Math.max(0,Math.min(1,Qe));Yt>z&&(z=Yt),m.push({element:fe,selector:Jo(fe,K(fe)),score:Yt,features:ge,type:he})}if(m.sort((Q,fe)=>fe.score-Q.score),m.length>=2){let Q=m[0],fe=m[1];Math.abs(Q.score-fe.score)<.08&&Q.type==="article"&&fe.type==="feed"&&(m[0]=fe,m[1]=Q)}return m}getScrollContext(u){let m=document.scrollingElement;return u===document.documentElement||u===document.body||!!m&&u===m?{target:m||document.documentElement||document.body,isRoot:!0}:{target:u,isRoot:!1}}async scrollToDirection(u,m){let T=this.getValidPrimary()||this.detectPrimaryScrollable()?.element;if(!T)return{success:!1,error:"No scrollable element found"};let{target:h,isRoot:b}=this.getScrollContext(T),v=K(h),M=re(v),q=m?.isTabActive??!v.hidden,R=m?.behavior,S=q&&R==="smooth",F=b?Math.max(v.documentElement?v.documentElement.scrollHeight:0,v.body?v.body.scrollHeight:0):h.scrollHeight,z=b?M.innerHeight:h.clientHeight,Q=Math.max(0,F-z),fe=()=>b?M.scrollY:h.scrollTop,ge=he=>{if(S)try{b?M.scrollTo({top:he,behavior:"smooth"}):h.scrollTo({top:he,behavior:"smooth"})}catch{b?(v.scrollingElement||v.documentElement||v.body).scrollTop=he:h.scrollTop=he}else if(b){let Re=v.scrollingElement||v.documentElement||v.body;Re.scrollTop=he}else h.scrollTop=he};switch(u){case pt.TOP:return ge(0),{success:!0,scrollTop:0,isAtTop:!0};case pt.BOTTOM:return ge(Q),{success:!0,scrollTop:Q,isAtBottom:!0};default:return{success:!1,error:`Unknown direction: ${u}`}}}async scrollByAmount(u,m){let T=this.getValidPrimary()||this.detectPrimaryScrollable()?.element;if(!T)return{success:!1,error:"No scrollable element found"};let{target:h,isRoot:b}=this.getScrollContext(T),v=m?.isTabActive??!document.hidden,M=m?.behavior,q=v&&M==="smooth",R=lr(),S=b&&R?R.innerHeight:h.clientHeight,F=b&&R?R.innerWidth:h.clientWidth,z=m?.amount??S*.8,Q=b?Math.max(document.documentElement?document.documentElement.scrollHeight:0,document.body?document.body.scrollHeight:0):h.scrollHeight,fe=b&&R?R.innerHeight:h.clientHeight,ge=Math.max(0,Q-fe),he=be=>{if(q)try{b?R?.scrollTo({top:be,behavior:"smooth"}):h.scrollTo({top:be,behavior:"smooth"})}catch{let Be=document.scrollingElement||document.documentElement||document.body;Be.scrollTop=be}else{let Be=b?document.scrollingElement||document.documentElement||document.body:h;Be.scrollTop=be}},Re=be=>{if(q)try{h.scrollBy({left:be,behavior:"smooth"})}catch{h.scrollLeft+=be}else h.scrollLeft+=be};switch(u){case pt.DOWN:{let Be=(b&&R?R.scrollY:h.scrollTop)+z;he(Be);let Ne=b&&R?R.scrollY:h.scrollTop;return{success:!0,scrollTop:Ne,isAtTop:Ne<=5,isAtBottom:Ne>=ge-5}}case pt.UP:{let be=b&&R?R.scrollY:h.scrollTop,Be=Math.max(0,be-z);he(Be);let Ne=b&&R?R.scrollY:h.scrollTop;return{success:!0,scrollTop:Ne,isAtTop:Ne<=5,isAtBottom:Ne>=ge-5}}case pt.LEFT:{let be=-(m?.amount??F*.8);return Re(be),{success:!0,scrollLeft:h.scrollLeft}}case pt.RIGHT:{let be=m?.amount??F*.8;return Re(be),{success:!0,scrollLeft:h.scrollLeft}}default:return{success:!1,error:`Unknown direction: ${u}`}}}normalizeScrollPosition(u){switch(u){case $t.START:return"start";case $t.END:return"end";case $t.NEAREST:return"nearest";case $t.CENTER:default:return"center"}}getScrollContainerForElement(u){let m=document.scrollingElement,T=u;for(;T&&T!==document.body&&T!==document.documentElement;){let v=getComputedStyle(T).overflowY,M=v==="auto"||v==="scroll"||v==="overlay",q=T.scrollHeight-T.clientHeight>8;if(M&&q)return{container:T,isRoot:!1};T=T.parentElement}return{container:m||document.documentElement||document.body,isRoot:!0}}scrollElementIntoView(u,m,T){let h=document.querySelector(u);if(!h)return{success:!1,error:`Element not found for selector: ${u}`};let{container:b,isRoot:v}=this.getScrollContainerForElement(h),M=ye(b),q=M?.DOMRect||DOMRect,R=v?new q(0,0,M.innerWidth??0,M.innerHeight??0):b.getBoundingClientRect(),S=h.getBoundingClientRect(),F=24,z=S.top>=R.top+F&&S.bottom<=R.bottom-F,Q=T?.isTabActive??!document.hidden,fe=T?.behavior,ge=Q&&fe==="smooth",he=this.normalizeScrollPosition(m);if(m===$t.NEAREST&&z)return{success:!0,alreadyVisible:!0,...this.getScrollMetricsForContainer(b,v)};try{h.scrollIntoView({behavior:ge?"smooth":"auto",block:he,inline:"nearest"})}catch{h.scrollIntoView()}let Re=this.getScrollMetricsForContainer(b,v);return{success:!0,position:he,...Re}}getScrollMetricsForContainer(u,m){let T=m?Math.max(document.documentElement?document.documentElement.scrollHeight:0,document.body?document.body.scrollHeight:0):u.scrollHeight,h=K(u),b=ye(u),v=m&&b?b.innerHeight:u.clientHeight,M=Math.max(0,T-v),R=(m?h.scrollingElement||h.documentElement||h.body:u).scrollTop;return{scrollTop:R,scrollHeight:T,clientHeight:v,maxScroll:M,isAtTop:R<=5,isAtBottom:R>=M-5,scrollPercentage:M>0?R/M*100:0}}getScrollMetrics(){let u=this.getValidPrimary()||this.detectPrimaryScrollable()?.element;if(!u)return null;let{target:m,isRoot:T}=this.getScrollContext(u),h=K(m),b=re(h),v=T?Math.max(h.documentElement?h.documentElement.scrollHeight:0,h.body?h.body.scrollHeight:0):m.scrollHeight,M=T?b.innerHeight:m.clientHeight,q=Math.max(0,v-M),S=(T?h.scrollingElement||h.documentElement||h.body:m).scrollTop;return{element:Jo(m,h),scrollTop:S,scrollHeight:v,clientHeight:M,maxScroll:q,isAtTop:S<=5,isAtBottom:S>=q-5,scrollPercentage:q>0?S/q*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 Dg=/\[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 Og=20,es=new Map;function Pg(e,t){if(es.size>=Og&&!es.has(e)){let n=es.keys().next().value;n!==void 0&&es.delete(n)}es.set(e,t)}var Bg=24,Ug=220,Fg=0,Hg=250,qg=2;function $g(e){let t={};for(let n of Object.keys(e)){let r=e[Number(n)],o=r?.preservedAttributes?.[dn["rtrvr-label"]],s=r?.resourceLocator;if(typeof o=="string"&&typeof s=="string"){let i=o.match(Dg);if(i?.[1]){let a=Number(i[1]);Number.isFinite(a)&&(t[a]=s)}}}return t}async function _f(e,t,n={}){let r=e.ownerDocument||document,o=n.pageConfig||ua,s=String(r.contentType||"").trim().toLowerCase(),i=Gg(s,r),a=jg(i.documentType,s),c={url:r.URL,title:r.title,contentType:a},l=zg(o),u=Wg(o);if(i.documentType!==St.HTML){let S=Number(o?.pageDataTimeoutMs),F=Number.isFinite(S)?Math.max(200,Math.floor(S)):9e3,z=Math.max(200,Math.min(F,ft(l))),Q=Qg(r,i.documentType,o,l),fe=await Qo(Q,z,r);if(!fe.ok)return{...c,content:"",error:`non_html_timeout:${a}`,metadata:{extractionMethod:"timeout"}};let ge=fe.value||{},he=i.documentType===St.GOOGLE_SHEET?Ib(r):void 0;return{...c,...ge,contentType:ge.contentType||c.contentType,sheetInfo:ge.sheetInfo||he}}if(o?.onlyTextContent)return{...c,contentType:Ko,content:ga(r)};let m=Math.max(0,Math.min(1e3,ft(l))),T=performance.now(),h=!1;if(!o?.disableAutoScroll&&m>80){let S=r.hidden?200:400,F=Math.min(S,m);F>80&&(h=await wb(r,{profile:"light",timeBudgetMs:F,delayMs:r.hidden?0:160,finalWaitMs:r.hidden?0:200}))}let b=Math.max(0,m-(performance.now()-T));b>60&&await ol(r,{...u,deadlineEpochMs:l,totalBudgetMs:b});let v=Math.max(0,m-(performance.now()-T));v>80&&await xb(r,{mode:"full",totalBudgetMs:Math.min(r.hidden?300:400,v),budgetMs:Math.min(r.hidden?200:300,v),maxPasses:r.hidden?1:2});let M=Zo(e,t,{includeFrames:n.includeFrames??!0,disableDomAnnotations:n.disableDomAnnotations??!0}),q=Math.max(0,u.sparseTreeRetryMaxAttempts),R=0;for(;R<q&&eb(M.rootNodes,M.semanticNodes);){let S=Math.max(10,Math.min(600,u.sparseTreeRetryDelayMs));await _t(S,r);let F=Math.max(20,Math.min(180,ft(l)));F>20&&await ol(r,{...u,deadlineEpochMs:l,totalBudgetMs:F}),M=Zo(e,t,{includeFrames:n.includeFrames??!0,disableDomAnnotations:n.disableDomAnnotations??!0}),R+=1}if(gf(M.rootNodes,M.semanticNodes)&&ft(l)>250){await _t(250,r);let S=Math.max(20,Math.min(180,ft(l)));S>20&&await ol(r,{...u,deadlineEpochMs:l,totalBudgetMs:S}),M=Zo(e,t,{includeFrames:n.includeFrames??!0,disableDomAnnotations:n.disableDomAnnotations??!0})}return gf(M.rootNodes,M.semanticNodes)?{...c,contentType:Ko,content:ga(r),metadata:{scrollingPerformed:h,extractionMethod:"empty_tree_fallback"}}:{...c,contentType:Ko,roots:M.rootNodes,nodes:M.semanticNodes,elementLinkRecord:$g(M.semanticNodes),metadata:{scrollingPerformed:h,extractionMethod:R>0?"sparse_tree_retry":void 0}}}function Wg(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))):Bg,maxWaitMs:Number.isFinite(n)?Math.max(80,Math.min(5e3,Math.floor(n))):Ug,retries:Number.isFinite(r)?Math.max(0,Math.min(6,Math.floor(r))):Fg,sparseTreeRetryDelayMs:Number.isFinite(o)?Math.max(20,Math.min(1e3,Math.floor(o))):Hg,sparseTreeRetryMaxAttempts:Number.isFinite(s)?Math.max(0,Math.min(4,Math.floor(s))):qg}}async function ol(e,t){let n=ft(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&&ft(o)>20;){let i=Math.max(40,Math.min(t.maxWaitMs,ft(o)));if(await Vg(e,{debounceMs:t.debounceMs,windowBudgetMs:i,deadlineEpochMs:o}))return;s+=1}}async function Vg(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(;ft(t.deadlineEpochMs)>20&&ft(s)>20;){let i=Date.now()-r;if(i>=t.debounceMs)return!0;let a=Math.max(10,Math.min(60,t.debounceMs-i,ft(t.deadlineEpochMs),ft(s)));await _t(a,e)}}finally{o.disconnect()}return!1}function zg(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 jg(e,t){switch(e){case St.PDF:return Kc;case St.GOOGLE_DOC:return Jc;case St.GOOGLE_SHEET:return Yc;case St.PLAIN_TEXT:return da;case St.HTML:default:return t||Ko}}function Gg(e,t){let n=e||String(t.contentType||"").toLowerCase();return rf(n)?{documentType:St.PDF}:Xg(t)&&(Yg(t)||Kg(t.URL))?{documentType:St.PDF}:cb(t)?{documentType:St.GOOGLE_DOC}:lb(t)?{documentType:St.GOOGLE_SHEET}:n.includes(da)?{documentType:St.PLAIN_TEXT}:{documentType:St.HTML}}function Xg(e){try{let t=tb(e);return Zc(t)?!0:!!t.querySelector?.('object[type="application/pdf"],object[type="application/x-google-chrome-pdf"]')}catch{return!1}}function Kg(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 Yg(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 Qg(e,t,n,r){switch(t){case St.PDF:return Jg(e,n,r);case St.GOOGLE_DOC:return Zg(e);case St.GOOGLE_SHEET:return Tb(e,n);case St.PLAIN_TEXT:return{content:ga(e),contentType:da};case St.HTML:default:return{content:ga(e),contentType:Ko}}}async function Jg(e,t,n){ft(n)>Xc+50&&await of(Xc,e,n);let o=(()=>{let u=Number(t?.pdfTextSelectionTimeoutMs),m=ua.pdfTextSelectionTimeoutMs;return Number.isFinite(u)?Math.max(150,Math.floor(u)):m})(),s=ft(n),a=Number.isFinite(s)?Math.max(150,Math.min(o,Math.max(0,s-150))):o,c=await rb(e,a),l=!!c.success&&!!(c.data||"").trim();return{content:l&&c.data||"",contentType:Kc,error:l?void 0:`pdf_extraction_failed:${c.reason||"unknown"}`}}async function Zg(e){return{content:vb(),contentType:Jc}}function gf(e,t){return!Array.isArray(e)||e.length===0||!t||Object.keys(t).length===0}function eb(e,t){if(!Array.isArray(e)||e.length===0)return!0;let n=t&&typeof t=="object"?Object.keys(t).length:0;if(n===0||e.length===1&&n<=4)return!0;let r=n/Math.max(1,e.length);return e.length<=2&&r<=2}function ga(e){return e.body?.innerText||e.body?.textContent||e.documentElement?.innerText||e.documentElement?.textContent||""}function tb(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 nb(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 rb(e,t){let n=Number.isFinite(t)&&t>0?Math.floor(t):ua.pdfTextSelectionTimeoutMs,r=nb(e),o=es.get(r)??"";if(o.trim().length>0)return{success:!0,data:o,reason:"ok"};let s=await ob(e,n);return s.success&&s.data.trim()&&Pg(r,s.data),s}async function ob(e,t){let n=e.defaultView||window,r=sb(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=u=>{if(s||!ib(String(u.origin||""),e))return;let m=u.data;ab(m,o)&&typeof m.selectedText=="string"&&m.selectedText.trim().length>0&&(i=m.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 _t(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 sb(e){let t=Zc(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 ib(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 ab(e,t){return!(!e||typeof e!="object"||e.type!=="getSelectedTextReply"||typeof e.selectedText!="string"||e.requestId&&e.requestId!==t)}function cb(e){try{let t=e.defaultView||lr();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 ts(e)!==null}function lb(e){let n=(e.defaultView||lr())?.location.href??"";return/^https:\/\/docs\.google\.com\/spreadsheets\/(?:u\/\d+\/)?d\/[a-zA-Z0-9_-]+/.test(n)}function ub(e){try{return e.defaultView?.top?.document??e}catch{return e}}function ba(e){let t=[e],n=ub(e);return n!==e&&t.push(n),t}var db=".docs-texteventtarget-iframe",fb=".kix-cursor",pb=".docos-replyview-body",hb=".docos-replyview",mb=".docos-author",Ef="\u200B",gb="\xA0";function ts(e){for(let t of ba(e)){let n=t.querySelector(db);if(n)return n}return null}function bb(e){for(let t of ba(e)){let n=t.querySelector(fb);if(n)return n}return null}function pa(e){let t=bb(e);return t?(t.ownerDocument?.defaultView?.getComputedStyle(t).display??t.style.display)==="none":!1}function ha(e,t){let n=ts(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 bf(e){let t=ts(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 yb(e){let t=ts(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=ts(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(Ef,"g"),"")??""}function sl(e){let t=`
|
|
3
|
+
|
|
4
|
+
Comments: `,n=new Set,r=[];for(let s of ba(e))try{let i=Array.from(s.querySelectorAll(pb));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(hb);if(!i)continue;let a=i.querySelector(mb);a&&a.textContent&&(t+=`
|
|
5
|
+
Author: ${a.textContent} `),s.textContent&&(t+=`Comment: ${s.textContent}
|
|
6
|
+
`)}return t.trim()}function vb(){let e=dt()||document,t=ts(e),n=t?.contentDocument,r=t?.contentWindow,o=()=>{let s=n?.body,i=dt(),a=s?.innerText||s?.textContent||""||i?.body?.innerText||i?.body?.textContent||"";return String(a).replace(new RegExp(Ef,"g"),"")+sl(e)};try{try{r?.focus(),n?.body?.focus?.()}catch{}if(yb(e),pa(e)){let c=ma(e);if(c.trim()!==""){let l=sl(e).trim();return c+l}else bf(e)}let s="";if(ha(e,!0),pa(e)){let c=ma(e);c.endsWith(`
|
|
7
|
+
|
|
8
|
+
`)||(s+=c.trimEnd())}if(ha(e,!1),pa(e)?ma(e).endsWith(gb+`
|
|
9
|
+
`)&&ha(e,!1):ha(e,!1),pa(e)){let c=ma(e);c.trim()!==""&&!c.startsWith(`
|
|
10
|
+
`)&&(s+=c)}bf(e);let i=sl(e).trim(),a=s.trim()+i;return a.trim()?a:o()}catch{return o()}}async function Tb(e,t){let n="",r;wf(e,e.defaultView||window);let o=ft(t?.deadlineEpochMs);try{let s=Math.max(250,Math.min(1500,Math.floor(o*.45))),i=await Qo(_b(e),s,e);if(!(i.ok&&i.value))throw new Error("google_sheet_copy_failed");let c=ft(t?.deadlineEpochMs),l=Math.max(250,Math.min(2500,Math.floor(c*.55)));if(n=await Eb(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:Yc,error:r}}function wf(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 _b(e){try{if(wf(e,e.defaultView||window),e.hidden||!e.hasFocus())return!1;il(e,{key:"Escape",code:"Escape"}),await _t(150,e);let t=e.querySelector(".grid-container")||yf(e,".grid-container"),n=e.querySelector(".grid4-inner-container:last-child")||yf(e,".grid4-inner-container:last-child");if(n){try{n.focus()}catch{}await _t(100,e)}else if(t){try{t.focus?.()}catch{}await _t(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 _t(200,e),il(e,{key:"c",code:"KeyC",ctrlKey:!o,metaKey:o}),await _t(200,e);try{e.execCommand("copy")}catch{}return!0}catch{return!1}}async function Eb(e,t){let n=Math.max(250,Math.min(5e3,Math.floor(e)));if(navigator?.clipboard?.readText){let s=await Qo(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 yf(e,t){let n=ba(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 u=0;u<l.length;u++)a.push(l[u])},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 u=a.contentDocument;u&&s(i,u.documentElement??u.body??null)}catch{}}return null}async function wb(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,u=r?c:0,m=t?.amount,T=t?.maxSteps??(n==="light"?8:18),h=t?.maxDistancePx??(n==="light"?12e3:3e4),b=null;try{let R=await vf(e,{action:"detectPrimary"});if(R?.selector){let F=kb(e,R.selector);F&&(b=F)}let S=R?.metrics;if(S&&typeof S.scrollHeight=="number"&&typeof S.clientHeight=="number"){let F=Math.max(0,S.scrollHeight-S.clientHeight);h=Math.min(h,F||h),F<1500?T=Math.min(T,2):F<4e3?T=Math.min(T,4):F<1e4&&(T=Math.min(T,6))}}catch{}if(b||(b=e.scrollingElement||e.documentElement||e.body),!b)return!1;let v=0,M=null,q=0;for(let R=0;R<T&&!(i()<=0);R++){let S=null;try{S=await vf(e,{action:"scrollBy",direction:pt.DOWN,options:{amount:m,behavior:"auto",isTabActive:r}})}catch{}if(!S||!S.success){let z=e.defaultView||window;S=fa(b,e,z,pt.DOWN,m),q=2}if(!S?.success)break;let F=S.scrollTop??M??0;if(M!==null){let z=Math.max(0,F-M);v+=z,q=z===0?q+1:0}if(M=F,S.isAtBottom||q>=2||v>=h)break;if(l>0&&R<T-1){let z=Math.min(l,Math.max(0,i()));if(z<=0)break;await _t(z,e)}}if(u>0){let R=Math.min(u,Math.max(0,i()));R>0&&await _t(R,e)}if(i()>80)try{let R=e.scrollingElement||e.documentElement||e.body,S=e.defaultView||window,F=b===e.documentElement||b===e.body||b===R?R:b;if(F){let z=F===R?S.innerHeight:F.clientHeight||S.innerHeight,Q=Math.max(0,F.scrollHeight-z);F.scrollTop=Q}}catch{}return!0}function kb(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 xb(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&&ft(i)>0;){let c=Math.max(50,Math.min(t.budgetMs,ft(i)));try{await s({mode:t.mode??"full",includeShadow:!0,includeSameOriginIframes:!0,budgetMs:c,deadlineEpochMs:i})}catch{break}if(Tf(e)===0)break;a++}if(Tf(e)>0&&ft(i)>50){let c=Math.min(120,ft(i));try{await s({mode:"priority",includeShadow:!0,includeSameOriginIframes:!0,budgetMs:c,deadlineEpochMs:i})}catch{}}}function Tf(e){let t=e.documentElement;if(!t)return 0;let n=t.getAttribute(Bs);if(!n)return 0;let r=Number.parseInt(n,10);return Number.isFinite(r)&&r>0?r:0}function Ib(e){let t=Sb(e.URL||"");if(!t?.sheetId)return;let n=Rb(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 Sb(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 Rb(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 kn;(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"})(kn||(kn={}));var Ab={native:kn.Native,inline:kn.Inline,react:kn.React,vue:kn.Vue,angular:kn.Angular,svelte:kn.Svelte,jquery:kn.JQuery,delegated:kn.Delegated,other:kn.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,u=0,m=new WeakSet,T="__RTRVR_ET_HOOKED__",h="__RTRVR_ATTACH_SHADOW_HOOKED__";function b(p){if(p&&!m.has(p)){m.add(p);try{v(p)}catch{}try{M(p)}catch{}}}function v(p){try{let x=p.EventTarget;if(!x?.prototype||x.prototype[T])return;x.prototype[T]=!0;let A=x.prototype.addEventListener,O=x.prototype.removeEventListener;x.prototype.addEventListener=function($,X,ce){try{qr(X)||vn(this,$,ce)}catch{}return A.call(this,$,X,ce)},x.prototype.removeEventListener=function($,X,ce){try{$r(this,$,ce)}catch{}return O.call(this,$,X,ce)};try{let $=Function.prototype.toString;x.prototype.addEventListener.toString=()=>$.call(A),x.prototype.removeEventListener.toString=()=>$.call(O)}catch{}}catch{}}function M(p){try{let x=p.Element;if(!x?.prototype?.attachShadow||x.prototype[h])return;x.prototype[h]=!0;let A=x.prototype.attachShadow;x.prototype.attachShadow=function(O){let $=A.call(this,O);try{Ns.set(this,$)}catch{}try{We($)}catch{}return $};try{let O=Function.prototype.toString;x.prototype.attachShadow.toString=()=>O.call(A)}catch{}}catch{}}function q(p){let A=n.get(p)?.listenerTypeMasks;if(A&&A.size){let O=[];for(let $ of A.keys()){let X=kr[$];X&&O.push(X)}return O}return Ds(p)}let R=["onclick","ondblclick","ondoubleclick","onmousedown","onmouseup","role","contenteditable","draggable","tabindex","disabled","type","aria-haspopup","aria-expanded","data-click","data-action","data-handler","data-toggle","data-target"],S=0,F=new Set,z=null,Q=!1,fe=6,ge=["click","input","change","keydown","keyup","pointerdown","pointerup","submit","focus","blur"],he=["mouseenter","mouseleave","mouseover","mouseout","mousedown","mouseup","wheel","scroll","dragstart","drop","touchstart","touchend"];if(e[t]){typeof e.rtrvrAIMarkInteractiveElements=="function"&&e.rtrvrAIMarkInteractiveElements(),typeof e.rtrvrAISetObserverPaused!="function"&&(e.rtrvrAISetObserverPaused=()=>!1),typeof e.rtrvrAIClearObserverPause!="function"&&(e.rtrvrAIClearObserverPause=()=>!1),typeof e.rtrvrAIIsObserverPaused!="function"&&(e.rtrvrAIIsObserverPaused=()=>!!dt()?.hidden);return}e[t]=!0;let Re={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(p){return p?String(p).split(".")[0].toLowerCase():""}let Be=["data-click","data-action","data-event","data-handler","data-on-click","data-onclick","data-tap","data-press","data-toggle","data-target"],Ne=0,ut=null,Ie=new MessageChannel,Mt=[];Ie.port1.onmessage=()=>{let p=Mt.shift();p&&p()};function bt(){return Date.now()}function it(p){return!p||!Number.isFinite(p)?Number.POSITIVE_INFINITY:Math.max(0,p-bt())}let Lt=8,Un=new MessageChannel,Rn=!1;function on(){if(!Rn){Rn=!0;try{Un.port2.postMessage(0)}catch{}}}function yt(p){let x=p.values().next();if(x.done)return null;let A=x.value;return p.delete(A),A}function Qe(){return new Promise(p=>{Mt.push(p),Ie.port2.postMessage(0)})}let Yt=!1;function yr(){if(!Yt)try{let p=e.jQuery;p&&p.fn&&(cn(p),Yt=!0,Ot("jquery"))}catch{}}function vr(p,x){for(let A=x.lastElementChild;A;A=A.previousElementSibling)p.push(A)}function gn(p,x,A){if(A)try{let O=Wr(x);O&&p.push(O)}catch{}}function lo(p,x,A){if(A&&Ls(x))try{let O=x.contentWindow||null;O&&b(O);let $=O?.document?.documentElement;$&&p.push($)}catch{}}let Je=new WeakSet;function Fn(p){p&&(typeof p=="function"||typeof p=="object")&&Je.add(p)}function qr(p){return!!p&&(typeof p=="function"||typeof p=="object")&&Je.has(p)}Un.port1.onmessage=()=>{if(Pt()){F.clear(),i.clear(),S=0,vt(),Rn=!1;return}Rn=!1,an(500);let p=performance.now();for(;F.size&&performance.now()-p<Lt;){let x=yt(F);if(!x)break;try{se(x)}catch{}finally{S=Math.max(0,S-1)}}for(;i.size&&performance.now()-p<Lt;){let x=yt(i);if(!x)break;try{Qt(x)}catch{}}vt(),(F.size||i.size)&&on()};function vt(){try{let p=dt()?.documentElement;if(!p)return;p.setAttribute(Bs,String(S))}catch{}}function sn(p){let x=n.get(p);return x||(x={frameworks:new Set,listeners:new Map},n.set(p,x)),x}function An(p){Pt()||(i.add(p),i.size>2e3&&an(1500),on())}function Dt(p){Pt()||F.has(p)||(F.add(p),S++,vt(),on(),F.size>2e3&&an(1500))}function an(p=1500){let x=0;for(let A of F){if(x>=p)break;x++,A.isConnected||(F.delete(A),S=Math.max(0,S-1))}x=0;for(let A of i){if(x>=p)break;x++,A.isConnected||i.delete(A)}vt()}let rt=null;function Tr(p,x,A){return`${p}|${x?1:0}|${A?1:0}`}function or(p){let x=p.tagName;if(x==="A"||x==="BUTTON"||x==="INPUT"||x==="SELECT"||x==="TEXTAREA"||x==="SUMMARY"||p.hasAttribute("role")||p.hasAttribute("tabindex")||p.hasAttribute("contenteditable")||p.hasAttribute("onclick")||p.getAttributeNames().some(A=>A.startsWith("on")))return!0;for(let A of Be)if(p.hasAttribute(A))return!0;return!!(p.hasAttribute("aria-haspopup")||p.hasAttribute("aria-expanded"))}function Hn(p){let x=ye(p);if(!kt(p,x))return!1;let A=p.tagName;if(A!=="DIV"&&A!=="SPAN"&&A!=="LI"&&A!=="SECTION"&&A!=="ARTICLE"&&A!=="P")return!1;let O=p;if(O.__ngContext__||O.__svelte__||O.__vue__||O._vnode||O.__reactFiber$||O.__reactProps$)return!0;let $=0;for(let X in O){if(++$>30)break;if(X.startsWith("__react")||X.includes("reactFiber")||X.includes("reactProps"))return!0}return!1}function Cn(){let p=dt()?.documentElement;return p?r.frameworks.size>0||p.hasAttribute("rtrvr-react")||p.hasAttribute("rtrvr-vue")||p.hasAttribute("rtrvr-angular")||p.hasAttribute("rtrvr-svelte")||p.hasAttribute("rtrvr-jquery"):!1}function uo(p){if(Pt())return;let x=performance.now();for(;F.size&&performance.now()-x<p;){let A=yt(F);if(!A)break;try{se(A)}catch{}finally{S=Math.max(0,S-1)}}for(;i.size&&performance.now()-x<p;){let A=yt(i);if(!A)break;try{Qt(A)}catch{}}}async function qn(p={}){if(Pt())return F.clear(),i.clear(),S=0,vt(),{revision:++Ne,scanned:0,durationMs:0,done:!0,remaining:0};an(3e3),yr(),Zt();let x=p.mode??"full",A=p.includeShadow??!0,O=p.includeSameOriginIframes??!0,$=Math.max(50,Math.min(p.budgetMs??2500,15e3)),X=p.deadlineEpochMs,ce=Math.max(0,Math.min($,it(X))),pe=Tr(x,A,O);if(ce<=0){let zt=(rt?.stack?.length??0)+F.size+i.size;return{revision:++Ne,scanned:0,durationMs:0,done:zt===0,remaining:zt}}if((!rt||rt.optsKey!==pe)&&it(X)>30&&await Ee({budgetMs:18,deadlineEpochMs:X}),x==="priority"){let zt=performance.now(),tt=0;for(;F.size&&performance.now()-zt<=ce&&!(X&&it(X)<=0);){let at=yt(F);if(!at)break;try{se(at)}catch{}tt++,S=Math.max(0,S-1)}for(;i.size&&performance.now()-zt<=ce&&!(X&&it(X)<=0);){let at=yt(i);if(!at)break;try{Qt(at)}catch{}}return vt(),{revision:++Ne,scanned:tt,durationMs:performance.now()-zt,done:F.size===0&&i.size===0,remaining:F.size+i.size}}if(!rt||rt.optsKey!==pe){let zt=dt()?.documentElement;rt={optsKey:pe,stack:zt?[zt]:[],scannedTotal:0}}let Ue=performance.now(),Ve=0;for(S++,vt();rt.stack.length&&!(X&&it(X)<=0);){let zt=rt.stack.pop();if(En(zt)){let at=zt.children;for(let ar=at.length-1;ar>=0;ar--)rt.stack.push(at[ar]);continue}let tt=zt;if(!(!tt||tt.nodeType!==1)&&!(tt.tagName==="SCRIPT"||tt.tagName==="STYLE"||tt.tagName==="META"||tt.tagName==="NOSCRIPT")){try{(or(tt)||Cn()&&Hn(tt))&&se(tt)}catch{}try{Qt(tt)}catch{}if(F.delete(tt)&&(S=Math.max(0,S-1)),i.delete(tt),Ve++,rt.scannedTotal++,A)try{let at=Wr(tt);at&&(We(at),rt.stack.push(at))}catch{}if(O&&Ls(tt))try{let at=tt.contentWindow||null;at&&b(at);let ar=at?.document,cr=ar?.documentElement;ar&&cr&&(te(ar),rt.stack.push(cr))}catch{}for(let at=tt.lastElementChild;at;at=at.previousElementSibling)rt.stack.push(at);Ve%800===0&&it(X)>20&&await Qe()}}let Ye=Math.max(0,ce-(performance.now()-Ue)),Bt=it(X);uo(Math.min(250,Ye,Bt)),S=Math.max(0,S-1),vt();let Ht=rt.stack.length===0,wr=rt.stack.length;return Ht&&(rt=null),{revision:++Ne,scanned:Ve,durationMs:performance.now()-Ue,done:Ht,remaining:wr}}async function sr(p={}){return ut||(ut=qn(p).finally(()=>{ut=null}),ut)}e.rtrvrAIFlushScan=sr;let ir="__RTRVR_INTERNAL__";Object(window).__RTRVR_INTERNAL_KEY__=ir;let bn=e[ir],yn=bn&&typeof bn=="object"?bn:{};if(!bn)try{Object.defineProperty(e,ir,{value:yn,writable:!1,configurable:!1,enumerable:!1})}catch{}try{Object.defineProperty(yn,"flushScan",{value:sr,writable:!1,configurable:!1,enumerable:!1})}catch{}function we(p,x){let A=sn(p),O=be(x.type);if(!O)return;let $=!1,X=A.listeners.get(O);X||(X=[],A.listeners.set(O,X),$=!0);let ce=X.find(xe=>xe.source===x.source&&!!xe.inferred==!!x.inferred);if(ce){let xe=!!ce.capture,Ue=!!ce.passive,Ve=!!ce.once;ce.capture=ce.capture||x.capture,ce.passive=ce.passive||x.passive,ce.once=ce.once||x.once,(xe!==!!ce.capture||Ue!==!!ce.passive||Ve!==!!ce.once)&&($=!0)}else X.push({...x,type:O}),$=!0;let pe=Fe[O];if(pe!==void 0){A.listenerTypeMasks||(A.listenerTypeMasks=new Map);let xe=0,Ue=Ab[x.source];xe|=Ue!==void 0?Ue:kn.Other,x.inferred&&(xe|=kn.Inferred);let Ve=A.listenerTypeMasks.get(pe)||0,Ye=Ve|xe;Ye!==Ve&&(A.listenerTypeMasks.set(pe,Ye),$=!0)}$&&(A.role=void 0,An(p))}function _r(p){let x=p.listenerTypeMasks;return!x||x.size===0?null:[...x.entries()].sort((O,$)=>O[0]-$[0]).map(([O,$])=>`${O}~${($||0).toString(36)}`).join(",")}function Nn(p,x){let A=sn(p);A.frameworks.has(x)||(A.frameworks.add(x),An(p))}function Ot(p){r.frameworks.has(p)||(r.frameworks.add(p),dt()?.documentElement?.setAttribute(`rtrvr-${p}`,"1"))}function Qt(p){let x=n.get(p);if(!x)return;i.delete(p);let A=_r(x);A?A!==x.lastListenersSerialized&&(p.setAttribute(Vr,A),x.lastListenersSerialized=A):x.lastListenersSerialized&&(p.removeAttribute(Vr),x.lastListenersSerialized=void 0);let O=ye(p);if(kt(p,O))if(x.role===void 0&&(x.role=Mn(p)),x.role){let $=Wo[x.role],X=typeof $=="number"?String($):`s:${x.role}`;X!==x.lastRoleSerialized&&(p.setAttribute(Ir,X),x.lastRoleSerialized=X)}else(x.lastRoleSerialized||p.hasAttribute(Ir))&&(p.removeAttribute(Ir),x.lastRoleSerialized=void 0)}function ot(p){let x=[],A=p;for(;A;)x.push(A),A=A.parentNode||A.host;return x}function Fo(p){let x=p.tagName.toLowerCase(),A=p.getAttribute("role"),O=A?A.toLowerCase().trim():"";if(O&&xr.has(O)||x==="button"||(x==="a"||x==="area")&&p.hasAttribute("href"))return!0;if(x==="input")return p.type?.toLowerCase()!=="hidden";if(x==="select"||x==="textarea"||(x==="video"||x==="audio")&&p.hasAttribute("controls")||p.isContentEditable||p.hasAttribute("contenteditable"))return!0;let $=p.getAttribute("tabindex");return!!($!==null&&!Number.isNaN(Number.parseInt($,10))&&(q(p).some(pe=>Xi.has(pe))||p.getAttributeNames().some(pe=>pe.startsWith("on"))))}function Ni(p,x=10){let A=[];for(let O=0;O<p.children.length;O++)A.push({node:p.children[O],depth:1});for(;A.length;){let{node:O,depth:$}=A.pop();if(Fo(O))return!0;if(!($>=x))for(let X=0;X<O.children.length;X++)A.push({node:O.children[X],depth:$+1})}return!1}function Mn(p){let x=p.tagName.toLowerCase(),A=p.getAttribute("role"),O=A?A.toLowerCase().trim():"",$=p.type?.toLowerCase();if(O&&xr.has(O))return O;if(O&&Os.has(O))return null;if(x==="a"&&p.hasAttribute("href"))return"link";if(x==="button")return"button";if(x==="input")return $==="hidden"?null:$==="checkbox"?"checkbox":$==="radio"?"radio":$==="range"?"slider":$==="number"?"spinbutton":$==="search"?"searchbox":["button","submit","reset","image","file"].includes($)?"button":p.hasAttribute("list")?"combobox":"textbox";if(x==="textarea")return"textbox";if(x==="select"){let Ye=p;return Ye.multiple||Ye.size&&Ye.size>1?"listbox":"combobox"}if(x==="option")return"option";if(x==="form")return"form";if(x==="video"||x==="audio"){let Ye=Ds(p);return p.hasAttribute("controls")||Ye.length>0?"media":null}if(p.isContentEditable||p.hasAttribute("contenteditable"))return"textbox";let X=q(p);if(!X.length)return null;let ce=!1,pe=!1,xe=!1;for(let Ye=0;Ye<X.length;Ye++){let Bt=X[Ye];!ce&&Xi.has(Bt)&&(ce=!0),!pe&&Lc.has(Bt)&&(pe=!0),!xe&&Dc.has(Bt)&&(xe=!0)}if(!ce&&!pe&&!xe)return null;let Ue=p.getAttribute("tabindex"),Ve=Ue!==null&&!Number.isNaN(Number.parseInt(Ue,10));if(ce&&(Wc(p)||p.getAttribute("href")||p.closest("a[href]")))return"link";if(pe){if(p.isContentEditable||p.hasAttribute("contenteditable"))return"textbox";if(O==="textbox"||O==="searchbox"||O==="combobox"||O==="spinbutton")return O;if(!ce&&Ve)return"textbox"}if(ce){let Ye=p.getAttribute("aria-checked"),Bt=p.getAttribute("aria-pressed");if(Ye!==null||Bt!==null){if(O==="radio")return"radio";if(O==="menuitemradio")return"menuitemradio";if(O==="menuitemcheckbox")return"menuitemcheckbox";if(Bt!==null)return"button";if(Ye!==null)return"checkbox"}if((Ve||O==="button")&&!Ni(p))return"button"}return xe?"application":null}let Er=EventTarget.prototype.addEventListener,Ln=EventTarget.prototype.removeEventListener;function Jt(p){let x=!1,A,O;return typeof p=="boolean"?x=p:p&&typeof p=="object"&&(x=!!p.capture,A=p.passive,O=p.once),{capture:x,passive:A,once:O}}function $n(p){try{let x=p;if(x?.nodeType===9&&x?.documentElement)return x;let A=x?.document;if(A&&A.nodeType===9&&A.documentElement)return A}catch{}return null}function vn(p,x,A){let O=be(x);if(!O)return;let{capture:$,passive:X,once:ce}=Jt(A),pe=o.get(p);pe||(pe=new Map,o.set(p,pe));let xe=pe.get(O);if(xe?(xe.count+=1,xe.capture=xe.capture||$,xe.passive=xe.passive||X):pe.set(O,{count:1,capture:$,passive:X}),ho(p))try{we(p,{type:O,source:"native",capture:$,passive:X,once:ce})}catch{}let Ue=$n(p);if(Ue&&(O==="click"||O==="input"||O==="keydown"))try{Ue.documentElement?.setAttribute(`rtrvr-gl-${O}`,"1")}catch{}}function $r(p,x,A){let O=be(x);if(!O)return;let $=o.get(p);if(!$)return;let X=$.get(O);X&&(X.count-=1,X.count<=0&&$.delete(O),$.size===0&&o.delete(p))}b(window);function cn(p){if(!p||!p.fn)return;let x=p.fn.on,A=p.fn.off;function O(X){if(!X)return[];if(typeof X=="string")return X.split(/\s/).map(ce=>be(ce)).filter(Boolean);if(typeof X=="object")try{return Object.keys(X).map(ce=>be(ce)).filter(Boolean)}catch{return[]}return[]}function $(X){try{if(!X)return null;if(ho(X))return X;let ce=ye(X);return Wi(X,ce)||null}catch{}return null}p.fn.on=function(X,ce){let pe=O(X),xe=typeof ce=="string"&&!!ce;return this.each(function(){let Ue=$(this);if(Ue){if(xe){let Ve=s.get(Ue);Ve||(Ve=[],s.set(Ue,Ve));for(let Ye of pe){let Bt=`${Ye}::${ce}`;Ve.some(Ht=>`${Ht.type}::${Ht.selector}`===Bt)||(Ve.push({type:Ye,selector:ce}),Ve.length>400&&Ve.shift())}}else for(let Ve of pe)we(Ue,{type:Ve,source:"jquery"});Nn(Ue,"jquery"),Ot("jquery"),r.jqueryRoots.add(Ue)}}),x.apply(this,arguments)},p.fn.off=function(){return A.apply(this,arguments)},Ot("jquery")}function Ze(p){Be.some(A=>p.hasAttribute(A))&&(we(p,{type:"click",source:"other",inferred:!0}),(p.tagName==="INPUT"||p.tagName==="TEXTAREA")&&(we(p,{type:"input",source:"other",inferred:!0}),we(p,{type:"change",source:"other",inferred:!0})))}function fo(p){let x=ye(p),A=kt(p,x),O=p.getAttributeNames().some(xe=>xe.startsWith("on")),$=/^(button|a|input|select|textarea|summary)$/i.test(p.tagName),X=p,ce=A&&(Ji(p)||!!X.isContentEditable||p.hasAttribute("contenteditable")),pe=A&&!!X.draggable;if(!O&&!$&&!ce&&!pe){Ze(p);return}for(let[xe,Ue]of Object.entries(Re))typeof p[xe]=="function"&&we(p,{type:Ue,source:"inline"});ce&&(we(p,{type:"input",source:"other",inferred:!0}),we(p,{type:"keydown",source:"other",inferred:!0}),we(p,{type:"keyup",source:"other",inferred:!0}),we(p,{type:"paste",source:"other",inferred:!0})),pe&&(we(p,{type:"dragstart",source:"other",inferred:!0}),we(p,{type:"dragend",source:"other",inferred:!0})),Ze(p)}function d(p){if(!p.startsWith("on")||p.length<=2)return null;if(p.endsWith("Capture")){let A=p.substring(2,p.length-7);return A?{type:A.toLowerCase(),capture:!0}:null}let x=p.substring(2);return x?{type:x.toLowerCase(),capture:!1}:null}function k(p){let x=null;if(p){for(let A in p)if(A.startsWith("__react")||A.startsWith("_react")||A.includes("reactFiber")||A.includes("reactProps")||A.includes("reactInternalInstance")){x=A;break}if(x)try{let A=p[x],O=A?.memoizedProps||A?.pendingProps;if(O&&typeof O=="object"){for(let $ in O){if(typeof O[$]!="function")continue;let ce=d($);ce&&we(p,{type:ce.type,source:"react",capture:ce.capture})}ho(A?.stateNode)&&r.reactRoots.add(A.stateNode),Nn(p,"react"),Ot("react")}}catch{}}}function w(p){let x=p,A=!1;if(x.__vue__){A=!0;let O=x.__vue__;O.$listeners&&Object.keys(O.$listeners).forEach($=>we(p,{type:$,source:"vue"})),O._events&&Object.keys(O._events).forEach($=>we(p,{type:$,source:"vue"})),O.$options?._parentListeners&&Object.keys(O.$options._parentListeners).forEach($=>we(p,{type:$,source:"vue"})),r.vueRoots.add(p)}if(x._vnode?.props){A=!0;let O=x._vnode.props;Object.keys(O).forEach($=>{$.startsWith("on")&&$.length>2&&we(p,{type:$.substring(2).toLowerCase(),source:"vue"})}),r.vueRoots.add(p)}A&&(Nn(p,"vue"),Ot("vue"))}function E(p){let x=p,A=!1;if(x.__ngContext__||p.hasAttribute("_ngcontent")||p.hasAttribute("ng-version")){A=!0,Array.from(p.attributes).forEach(O=>{if(O.name.startsWith("(")&&O.name.endsWith(")")){let $=O.name.slice(1,-1).split(".")[0];$&&we(p,{type:$,source:"angular"})}if(O.name.startsWith("on-")){let $=O.name.substring(3);$&&we(p,{type:$,source:"angular"})}if(O.name.includes(".")){let $=O.name.match(/\(([^.)]+)/);$?.[1]&&we(p,{type:$[1],source:"angular"})}});try{if(e.ng?.getComponent){let O=e.ng.getComponent(p);O&&Object.keys(O).forEach($=>{($.endsWith("Output")||$.endsWith("Emitter"))&&we(p,{type:$.replace(/(Output|Emitter)$/,"").toLowerCase(),source:"angular"})})}}catch{}}A&&(Nn(p,"angular"),Ot("angular"),r.angularRoots.add(p))}function y(p){let x=p,A=!1;if(x.__svelte__){A=!0,Array.from(p.attributes).forEach(O=>{if(O.name.startsWith("on:")){let $=O.name.substring(3);$&&we(p,{type:$,source:"svelte"})}});try{let O=x.__svelte__?.$$?.callbacks;O&&typeof O=="object"&&Object.keys(O).forEach($=>we(p,{type:$,source:"svelte"}))}catch{}r.svelteRoots.add(p)}A&&(Nn(p,"svelte"),Ot("svelte"))}function g(p,x){return p?!!o.get(p)?.has(x):!1}function _(p,x,A=96){let O=be(x);if(!O)return!1;let $=K(p),X=re($);if(g($,O)||g(X,O))return!0;let ce=0,pe=p;for(;pe&&ce<A;){if(pe.parentElement)pe=pe.parentElement;else{let xe=pe.getRootNode?.();if(En(xe)){if(g(xe,O)||g(xe.host,O))return!0;pe=xe.host}else break}if(pe&&g(pe,O))return!0}return!1}function I(p,x,A=128){let O=0,$=p;for(;$&&O<A;){if(x($),$.parentElement){$=$.parentElement;continue}let X=$.getRootNode?.();if(En(X)){$=X.host;continue}break}}function B(p){let x=ye(p);if(!kt(p,x))return;let A=sn(p);A.role=A.role||Mn(p);let O=_(p,"click"),$=_(p,"input"),X=_(p,"keydown"),pe=K(p).documentElement;if(r.frameworks.size>0||pe.hasAttribute("rtrvr-react")||pe.hasAttribute("rtrvr-vue")||pe.hasAttribute("rtrvr-angular")||pe.hasAttribute("rtrvr-svelte")||pe.hasAttribute("rtrvr-jquery")||O||$||X){let Ue=A.role||"other";O&&["button","link","checkbox","radio","switch","menuitem","menuitemcheckbox","menuitemradio","tab","option","treeitem","gridcell","cell","img","figure"].includes(Ue)&&we(p,{type:"click",source:"delegated",inferred:!0}),["textbox","searchbox","spinbutton","code"].includes(Ue)&&($&&(we(p,{type:"input",source:"delegated",inferred:!0}),we(p,{type:"change",source:"delegated",inferred:!0})),X&&we(p,{type:"keydown",source:"delegated",inferred:!0})),["combobox","listbox"].includes(Ue)&&(O&&we(p,{type:"click",source:"delegated",inferred:!0}),$&&we(p,{type:"change",source:"delegated",inferred:!0})),["slider","scrollbar","progressbar","meter"].includes(Ue)&&$&&we(p,{type:"input",source:"delegated",inferred:!0})}I(p,Ue=>{let Ve=s.get(Ue);if(Ve?.length)for(let{type:Ye,selector:Bt}of Ve)try{p.matches(Bt)&&(we(p,{type:Ye,source:"jquery",inferred:!0}),Nn(p,"jquery"),Ot("jquery"))}catch{}})}function P(p){let x=A=>{if(Pt())return;let O=A,$=O.composedPath&&O.composedPath()||ot(A.target),ce=p==="mousemove"||p==="pointermove"||p==="scroll"||p==="wheel"?1:Math.min($.length,fe);for(let pe=0;pe<ce;pe++){let xe=$[pe];ho(xe)&&we(xe,{type:p,source:"delegated",inferred:!0})}};Fn(x);try{Er.call(document,p,x,{capture:!0,passive:!0})}catch{}}let H=!1,W=!1,j=null;function ne(){if(W)return;W=!0,ge.forEach(P);let p=dt()?.documentElement;if(!p)return;let x=()=>{if(H)return;let A=p.hasAttribute("rtrvr-react")||p.hasAttribute("rtrvr-vue")||p.hasAttribute("rtrvr-angular")||p.hasAttribute("rtrvr-svelte"),O=p.hasAttribute("rtrvr-gl-click")||p.hasAttribute("rtrvr-gl-input")||p.hasAttribute("rtrvr-gl-keydown");(A||O)&&(H=!0,he.forEach(P))};x();try{j=new MutationObserver(()=>x()),j.observe(p,{attributes:!0,attributeFilter:Pe})}catch{}}function se(p){if(p.nodeType!==1)return;let x=ye(p);if(kt(p,x)){let A=sn(p);A.role=void 0}fo(p),k(p),w(p),E(p),y(p),B(p),An(p)}function ke(){if(Pt())return;let p=["a[href]","button","input","select","textarea","summary","details > summary",...Array.from(xr).map(x=>`[role="${x}"]`),"[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 x=p.join(",");dt()?.querySelectorAll(x).forEach(A=>{try{se(A)}catch{}})}finally{S=Math.max(0,S-1),vt()}}let le=!1,ie=[],ue=200;function Ae(p){if(!Pt()){for(let x of p)ie.push(x);le||(le=!0,queueMicrotask(ze))}}function ze(){le=!1;let p=ie;if(ie=[],Pt())return;let x=0;for(let A of p){if(x>=ue)break;for(let O of Array.from(A.addedNodes)){if(x>=ue)break;if(O.nodeType!==1)continue;let $=O;Dt($),x++;let X=$.querySelectorAll?.('a,button,input,select,textarea,summary,[role],[onclick],[ondblclick],[ondoubleclick],[contenteditable],[draggable="true"],[tabindex]');if(X){let ce=Math.min(X.length,50);for(let pe=0;pe<ce;pe++)Dt(X[pe]),x++}}if(A.type==="attributes"&&A.target.nodeType===1){let O=A.target;A.attributeName==="class"?or(O)&&Dt(O):Dt(O)}}}async function Ee(p={}){if(Pt())return;let x=dt(),A=x?.documentElement;if(!A||!(A.hasAttribute("rtrvr-react")||A.hasAttribute("rtrvr-vue")||A.hasAttribute("rtrvr-angular")||A.hasAttribute("rtrvr-svelte")))return;let $=p.deadlineEpochMs,X=Math.max(5,Math.min(p.budgetMs??12,50));if(Math.max(0,Math.min(X,it($)))<=0)return;let pe=performance.now();S++,vt();try{let xe=0,Ue=["div","span","li","section","article","p"];for(let Ve of Ue){let Ye=x.getElementsByTagName(Ve)??[];for(let Bt=0;Bt<Ye.length;Bt++){if($&&it($)<=0)return;xe++;let Ht=Ye[Bt],wr=Ht;(wr.__ngContext__||wr.__svelte__||wr.__vue__||wr._vnode||Hn(Ht))&&se(Ht),xe%250===0&&it($)>20&&await Qe()}}}finally{S=Math.max(0,S-1),vt()}}let Te=new MutationObserver(Ae),Oe=new WeakMap,Ce=new Set;function We(p){let x=Oe.get(p);if(x){if(Ce.add(x),!Q)try{x.observe(p,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...R,"class"]})}catch{}return}if(!(l>=a))try{let A=re(p.ownerDocument).MutationObserver||MutationObserver,O=new A(Ae);Oe.set(p,O),Ce.add(O),l++,Q||O.observe(p,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...R,"class"]})}catch{}}let Ke=new WeakMap,ae=new Set;function te(p){let x=Ke.get(p);if(x){if(ae.add(x),!Q)try{let A=p.documentElement;A&&x.observe(A,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...R,"class"]})}catch{}return}if(!(u>=c))try{b(p.defaultView||null);let A=p.documentElement;if(!A)return;let O=re(p).MutationObserver||MutationObserver,$=new O(Ae);Ke.set(p,$),ae.add($),u++,Q||$.observe(A,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...R,"class"]})}catch{}}function de(){let p=dt()?.documentElement;p&&Te.observe(p,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[...R,"class"]})}let Pe=["rtrvr-react","rtrvr-vue","rtrvr-angular","rtrvr-svelte","rtrvr-gl-click","rtrvr-gl-input","rtrvr-gl-keydown"];function Vt(){return z??!!dt()?.hidden}function Pt(){return Q}function Cs(p){let x=!!p;if(Q===x)return;if(Q=x,Q){try{Te.disconnect()}catch{}try{j?.disconnect()}catch{}for(let O of Ce)try{O.disconnect()}catch{}for(let O of ae)try{O.disconnect()}catch{}Ce.clear(),ae.clear(),F.clear(),i.clear(),S=0,vt();return}de();let A=dt()?.documentElement;if(A&&j)try{j.observe(A,{attributes:!0,attributeFilter:Pe})}catch{}ke()}function Ho(p){return z=typeof p=="boolean"?p:null,Cs(Vt()),!0}let Ns=new WeakMap;function Wr(p){return p.shadowRoot||Ns.get(p)||null}try{Object.defineProperty(yn,"shadow",{value:Object.freeze({getRoot:p=>Wr(p)}),writable:!1,configurable:!1,enumerable:!1})}catch{}function Zt(){try{(e.React||e.__REACT_DEVTOOLS_GLOBAL_HOOK__)&&Ot("react"),e.Vue&&Ot("vue"),e.ng&&Ot("angular"),e.jQuery&&Ot("jquery"),yr()}catch{}}e.rtrvrAISetObserverPaused=function(p){return Ho(!!p)},e.rtrvrAIClearObserverPause=function(){return Ho(null)},e.rtrvrAIIsObserverPaused=function(){return Pt()},e.rtrvrAIMarkInteractiveElements=function(){return dt()?.body?(ke(),!0):!1};function kc(){let p=dt();yr(),Zt(),ne();let x=()=>{z==null&&Cs(Vt())};p?.addEventListener("visibilitychange",x,{passive:!0}),Cs(Vt());let A=()=>{yr(),Zt(),Pt()||(de(),e.rtrvrAIMarkInteractiveElements?.(),Ee({budgetMs:20})),p?.documentElement.setAttribute(Cc,"1")};p?.readyState==="loading"?p.addEventListener("DOMContentLoaded",A,{once:!0}):A()}kc()})();var ya=null;function al(e){try{return e.getAttribute(Vr)}catch{return null}}function kf(e){let t=al(e);return mo(t)?.entries??[]}function xf(e){try{let t=e.getAttribute(Ir);return t&&t.trim()?t:null}catch{return null}}function Cb(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 Nb(e){let t=new Set;for(let n of e){let r=Pi(n.mask);for(let o of r)(o==="react"||o==="vue"||o==="angular"||o==="svelte"||o==="jquery")&&t.add(o)}return t}function Mb(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 Lb(e){let t=kf(e),n=Nb(t),r=Mb(e);for(let o of r)n.add(o);return{frameworks:[...n],listenersRaw:al(e)||"",role:xf(e)??(e.getAttribute?.("role")||null)}}function Db(){return{getEventHandlerIds:e=>kf(e).map(t=>t.id),getRoleHint:xf,getShadowRoot:Cb}}function If(e={}){if(ya)return ya;if(typeof window<"u")try{window.rtrvrAIMarkInteractiveElements?.()}catch{}return ya={signalProvider:Db(),getFrameworkMetadata:Lb,getListenerEncoding:al,dispose:()=>{}},ya}var Ob=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 va(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=Pb(Sf(String(s||"")),n);i&&o.add(i)}if(!o.size){let s=Ub(t,n);s&&o.add(s)}return Array.from(o)}function Pb(e,t){return e?t!=="host_only"||e==="*"||e.startsWith("=")||e.startsWith("*.")?e:`=${e}`:""}function Bb(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 Sf(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=Bb(o);return s?n?`=${s}`:r?`*.${s}`:s:""}function Ub(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&&Ob.has(o)?`${r[r.length-3]}.${o}`:o}function Ar(e,t){let n=ns(e);if(!n)return!1;if(!t.length)return!0;for(let r of t)if(Fb(n,r))return!0;return!1}function ns(e){try{return new URL(e).hostname.toLowerCase()}catch{return null}}function Fb(e,t){let n=Sf(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 wa=class wa{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=Rf(t.domainScopeMode),this.allowedDomains=va(t.allowedDomains,window.location.hostname,this.domainScopeMode),this.externalNavigationPolicy=Af(t.externalNavigationPolicy),this.crossHostPolicy=Cf(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=Xs(t.domSettle?.debounceMs,24,8,500),this.domSettleMaxWaitMs=Xs(t.domSettle?.maxWaitMs,220,80,5e3),this.domSettleRetries=Xs(t.domSettle?.retries,0,0,6),this.sparseTreeRetryDelayMs=Xs(t.domSettle?.sparseTreeRetryDelayMs,35,20,1e3),this.sparseTreeRetryMaxAttempts=Xs(t.domSettle?.sparseTreeRetryMaxAttempts,1,0,4),this.instrumentation=t.instrumentation??If({includeIframes:!0,scanInlineHandlers:!0,observeInlineMutations:!0,...t.instrumentationOptions||{}}),hf(),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=Rf(t.domainScopeMode),t.allowedDomains||(this.allowedDomains=va(void 0,window.location.hostname,this.domainScopeMode))),t.allowedDomains&&(this.allowedDomains=va(t.allowedDomains,window.location.hostname,this.domainScopeMode)),t.externalNavigationPolicy&&(this.externalNavigationPolicy=Af(t.externalNavigationPolicy)),t.crossHostPolicy&&(this.crossHostPolicy=Cf(t.crossHostPolicy))}async getSnapshot(){return await Lf(this.root),Zo(this.root,this.instrumentation,{includeFrames:this.includeFrames,disableDomAnnotations:this.disableDomAnnotations})}async getPageData(t){await Lf(this.root);let n={...t?.pageConfig||{},adaptiveSettleDebounceMs:Number(t?.pageConfig?.adaptiveSettleDebounceMs)>0?Number(t?.pageConfig?.adaptiveSettleDebounceMs):this.domSettleDebounceMs,adaptiveSettleMaxWaitMs:Number(t?.pageConfig?.adaptiveSettleMaxWaitMs)>0?Number(t?.pageConfig?.adaptiveSettleMaxWaitMs):this.domSettleMaxWaitMs,adaptiveSettleRetries:Number.isFinite(Number(t?.pageConfig?.adaptiveSettleRetries))?Number(t?.pageConfig?.adaptiveSettleRetries):this.domSettleRetries,sparseTreeRetryDelayMs:Number(t?.pageConfig?.sparseTreeRetryDelayMs)>0?Number(t?.pageConfig?.sparseTreeRetryDelayMs):this.sparseTreeRetryDelayMs,sparseTreeRetryMaxAttempts:Number.isFinite(Number(t?.pageConfig?.sparseTreeRetryMaxAttempts))?Number(t?.pageConfig?.sparseTreeRetryMaxAttempts):this.sparseTreeRetryMaxAttempts};return await _f(this.root,this.instrumentation,{includeFrames:this.includeFrames,disableDomAnnotations:this.disableDomAnnotations,pageConfig:n})}async executeTool(t,n){let r=Hb(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&&!Mf.has(r))return{success:!1,error:"Actions disabled by configuration",allowFallback:!1,output:{reason:this.actionGateContext.mode==="observer"?"Actions are disabled because this tab is currently in observer mode.":this.actionGateContext.reason||"Actions disabled by configuration",actionGate:this.actionGateContext}};let o=await this.handleNavigationTools(r,t?.args||{});if(o)return o;if(r===U.wait_action){let b=Number(t?.args?.duration??1e3);return await new Promise(v=>setTimeout(v,Math.max(0,Math.min(b,6e4)))),{success:!0}}if(r===U.wait_for_element)return this.waitForElement(t?.args||{});if(r===U.answer_task)return{success:!0};if(r===U.solve_captcha)return _a("CAPTCHA solving requires human intervention in embed mode.","HUMAN_INTERVENTION_REQUIRED");if(r===U.network_run_recipe)return _a("network_run_recipe is not supported in embed mode.","CAPABILITY_UNAVAILABLE");let s=t?.args||{},i=Vb(s),a=Yo(document,s.iframe_id);if(s.iframe_id!=null&&a.unresolvedPath.length>0&&!i)return this.iframeContextUnavailableResponse(s.iframe_id,a);if(r===U.click_element&&s?.open_in_new_tab)return this.openElementInNewTab(s);if(r===U.click_element){let b=this.getInterceptedClickTarget(s);if(b?.targetUrl){if(b.forceOpenInNewTab)return this.openUrlInNewTab(b.targetUrl,{policyBlocked:!0,reason:b.reason,decisionReason:"open_new_tab"});let M=b.reason;return this.externalNavigationPolicy==="open_new_tab_notice"?this.openUrlInNewTab(b.targetUrl,{policyBlocked:!0,reason:M,decisionReason:"open_new_tab"}):this.domainScopeBlockedResponse(b.targetUrl,M,{decisionReason:"policy_blocked"})}let v=this.getClickTargetUrl(s);if(v){let M=this.buildNavigationIntent(v);if(M.isCrossHost){let q=await this.resolveAgentNavigationDecision(M,this.getNavigationFallbackDecision(v));if(q.decision==="block")return this.domainScopeBlockedResponse(v,q.reason||"Navigation blocked by policy.",{decisionReason:q.decisionReason||"policy_blocked"});if(q.decision==="open_new_tab")return this.openUrlInNewTab(v,{policyBlocked:!0,reason:q.reason||"Navigation policy requires opening a new tab.",decisionReason:q.decisionReason||"open_new_tab"});this.notifyCrossHostNavigation(M)}else{let q=await this.resolveAgentNavigationDecision(M,"allow_same_tab");if(q.decision==="block")return this.domainScopeBlockedResponse(v,q.reason||"Navigation blocked by policy.",{decisionReason:q.decisionReason||"policy_blocked"});if(q.decision==="open_new_tab")return this.openUrlInNewTab(v,{policyBlocked:!0,reason:q.reason||"Navigation policy requires opening a new tab.",decisionReason:q.decisionReason||"open_new_tab"})}}}if(r===U.describe_images)return this.describeImages(t?.args||{});if(!(r in Oi))return{success:!1,error:`Unknown tool: ${String(t?.name)}`,allowFallback:!1};let{doc:c}=a,l=cl(s),u=l?Gn(c,l):null,m;if(u){let b=this.instrumentation.getFrameworkMetadata(u),v=Wb(b.listenersRaw||"",r),M=s?.value??s?.text??null;m=$b({...b,pattern:v,value:M})}let T=Oi[r];return r===U.upload_file&&!n&&(n=await this.buildUploadPayload(s).catch(()=>{})),mf({opcode:T,call:{name:r,args:s},elementData:m,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=Gn(document,t);if(!n)return;let r=n.getBoundingClientRect();if(!this.highlightEl){let o=document.createElement("div");o.style.position="fixed",o.style.pointerEvents="none",o.style.border="2px solid #ff7a59",o.style.boxShadow="0 0 0 2px rgba(255, 122, 89, 0.2)",o.style.borderRadius="6px",o.style.zIndex="2147483647",this.highlightEl=o,document.body.appendChild(o)}this.highlightEl.style.left=`${r.left}px`,this.highlightEl.style.top=`${r.top}px`,this.highlightEl.style.width=`${Math.max(0,r.width)}px`,this.highlightEl.style.height=`${Math.max(0,r.height)}px`,this.highlightEl.style.display="block"}clearHighlight(){this.highlightEl&&(this.highlightEl.style.display="none")}setUploadBytesProvider(t){window.__ROVER_UPLOAD_BYTES__=t}registerTool(t,n){let r=typeof t=="string"?{name:t}:t;!r?.name||typeof n!="function"||this.clientTools.set(r.name,{handler:n,def:r})}async executeClientTool(t,n){let r=this.clientTools.get(t);if(!r)throw new Error(`Unknown client tool: ${t}`);return r.handler(n)}listClientTools(){return Array.from(this.clientTools.values()).map(t=>t.def)}async handleNavigationTools(t,n){switch(t){case U.goto_url:{let r=String(n.url||"").trim();if(!r)return{success:!1,error:"goto_url: missing url",allowFallback:!0};let o=Ta(r,window.location.href);if(!o)return{success:!1,error:`goto_url: invalid url "${r}"`,allowFallback:!0};if(this.shouldPreserveHostRuntime(o)){let a=this.buildNavigationIntent(o),c=await this.resolveAgentNavigationDecision(a,this.getNavigationFallbackDecision(o)),l=this.externalNavigationPolicy==="block"?"block":"open_new_tab";return(c.decision==="allow_same_tab"?l:c.decision)==="block"?this.domainScopeBlockedResponse(o,c.reason||"Navigation blocked by policy.",{decisionReason:c.decisionReason}):await this.openUrlInNewTab(o,{policyBlocked:!0,reason:c.reason||"Opened in a new tab to preserve Rover runtime continuity across hostnames.",decisionReason:c.decisionReason||"open_new_tab"})}if(this.shouldGuardExternalNavigation(o)){let a="Navigation blocked by domain policy.";return this.externalNavigationPolicy==="open_new_tab_notice"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:a}):this.domainScopeBlockedResponse(o,a)}let s=this.buildNavigationIntent(o);if(s.isCrossHost){let a=await this.resolveAgentNavigationDecision(s,this.getNavigationFallbackDecision(o));return a.decision==="block"?this.domainScopeBlockedResponse(o,a.reason||"Navigation blocked by policy.",{decisionReason:a.decisionReason}):a.decision==="open_new_tab"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:a.reason||"Navigation policy requires opening a new tab.",decisionReason:a.decisionReason||"open_new_tab"}):this.scheduleSameTabNavigation(o,s,{decisionReason:a.decisionReason||"allow_same_tab",reason:a.reason||"Navigation allowed."})}let i=await this.resolveAgentNavigationDecision(s,"allow_same_tab");return i.decision==="block"?this.domainScopeBlockedResponse(o,i.reason||"Navigation blocked by policy.",{decisionReason:i.decisionReason||"policy_blocked"}):i.decision==="open_new_tab"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:i.reason||"Navigation policy requires opening a new tab.",decisionReason:i.decisionReason||"open_new_tab"}):this.scheduleSameTabNavigation(o,s,{decisionReason:i.decisionReason||"allow_same_tab",reason:i.reason||"Navigation allowed."})}case U.google_search:{let r=String(n.query||"").trim();if(!r)return{success:!1,error:"google_search: missing query",allowFallback:!0};let o=`https://www.google.com/search?q=${encodeURIComponent(r)}`;if(this.shouldPreserveHostRuntime(o)){let a=this.buildNavigationIntent(o),c=await this.resolveAgentNavigationDecision(a,this.getNavigationFallbackDecision(o)),l=this.externalNavigationPolicy==="block"?"block":"open_new_tab";return(c.decision==="allow_same_tab"?l:c.decision)==="block"?this.domainScopeBlockedResponse(o,c.reason||"Navigation blocked by policy.",{decisionReason:c.decisionReason}):await this.openUrlInNewTab(o,{policyBlocked:!0,reason:c.reason||"Opened in a new tab to preserve Rover runtime continuity across hostnames.",decisionReason:c.decisionReason||"open_new_tab"})}if(this.shouldGuardExternalNavigation(o)){let a="Google search opens outside the allowed navigation scope.";return this.externalNavigationPolicy==="open_new_tab_notice"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:a}):this.domainScopeBlockedResponse(o,a)}let s=this.buildNavigationIntent(o);if(s.isCrossHost){let a=await this.resolveAgentNavigationDecision(s,this.getNavigationFallbackDecision(o));return a.decision==="block"?this.domainScopeBlockedResponse(o,a.reason||"Navigation blocked by policy.",{decisionReason:a.decisionReason}):a.decision==="open_new_tab"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:a.reason||"Navigation policy requires opening a new tab.",decisionReason:a.decisionReason||"open_new_tab"}):this.scheduleSameTabNavigation(o,s,{decisionReason:a.decisionReason||"allow_same_tab",reason:a.reason||"Navigation allowed."})}let i=await this.resolveAgentNavigationDecision(s,"allow_same_tab");return i.decision==="block"?this.domainScopeBlockedResponse(o,i.reason||"Navigation blocked by policy.",{decisionReason:i.decisionReason||"policy_blocked"}):i.decision==="open_new_tab"?await this.openUrlInNewTab(o,{policyBlocked:!0,reason:i.reason||"Navigation policy requires opening a new tab.",decisionReason:i.decisionReason||"open_new_tab"}):this.scheduleSameTabNavigation(o,s,{decisionReason:i.decisionReason||"allow_same_tab",reason:i.reason||"Navigation allowed."})}case U.go_back:{let r=this.buildNavigationIntent(window.location.href,{isCrossHost:!1});return await this.resolveAgentNavigationDecision(r,"allow_same_tab"),this.scheduleHistoryNavigation("back"),{success:!0,output:{navigation:"same_tab",navigationOutcome:"same_host_navigated",navigationPending:!1,decisionReason:"allow_same_tab"}}}case U.go_forward:{let r=this.buildNavigationIntent(window.location.href,{isCrossHost:!1});return await this.resolveAgentNavigationDecision(r,"allow_same_tab"),this.scheduleHistoryNavigation("forward"),{success:!0,output:{navigation:"same_tab",navigationOutcome:"same_host_navigated",navigationPending:!1,decisionReason:"allow_same_tab"}}}case U.refresh_page:{let r=this.buildNavigationIntent(window.location.href,{isCrossHost:!1});return await this.resolveAgentNavigationDecision(r,"allow_same_tab"),this.scheduleHistoryNavigation("reload"),{success:!0,output:{navigation:"same_tab",navigationOutcome:"same_host_navigated",navigationPending:!1,decisionReason:"allow_same_tab"}}}case U.open_new_tab:{let r=String(n.url||"").trim();if(!r)return{success:!1,error:"open_new_tab: missing url",allowFallback:!0};let o=Ta(r,window.location.href);if(!o)return{success:!1,error:`open_new_tab: invalid url "${r}"`,allowFallback:!0};let s=this.buildNavigationIntent(o),i=await this.resolveAgentNavigationDecision(s,"open_new_tab");return i.decision==="block"?this.domainScopeBlockedResponse(o,i.reason||"Navigation blocked by policy.",{decisionReason:i.decisionReason}):await this.openUrlInNewTab(o,{policyBlocked:!1,reason:i.reason,decisionReason:i.decisionReason||"open_new_tab"})}case U.switch_tab:{let r=Number(n.logical_tab_id??n.tab_id);if(!Number.isFinite(r)||r<=0)return{success:!1,error:(typeof n._tab_id_mapping_error=="string"?String(n._tab_id_mapping_error).trim():"")||"switch_tab: missing/invalid logical_tab_id",allowFallback:!0};if(this.externalNavigationPolicy!=="allow"&&this.listKnownTabs){let o=this.listKnownTabs().find(s=>Number(s.logicalTabId)===r);if(o?.external)return this.domainScopeBlockedResponse(o.url||`logical_tab_id:${r}`,`Tab ${r} is out of scope. Direct actions are blocked for this tab.`)}if(!this.switchToLogicalTab)return _a("switch_tab requires session coordinator support.","CAPABILITY_UNAVAILABLE");try{let o=await this.switchToLogicalTab(r);return o?.ok?{success:!0,output:{logicalTabId:r,delegated:!!o.delegated,mode:o.delegated?"delegated":"local"}}:{success:!1,error:o?.reason||`switch_tab failed for logical tab ${r}`,allowFallback:!0}}catch(o){return{success:!1,error:o?.message||"switch_tab failed",allowFallback:!0}}}case U.close_tab:try{return window.close(),{success:!0}}catch{return _a("close_tab failed in embed mode.","CAPABILITY_UNAVAILABLE")}default:return null}}shouldGuardExternalNavigation(t){return this.externalNavigationPolicy==="allow"?!1:!Ar(t,this.allowedDomains)}shouldPreserveHostRuntime(t){return this.externalNavigationPolicy==="allow"?!1:!Ar(t,this.allowedDomains)}getNavigationFallbackDecision(t){return t?Ar(t,this.allowedDomains)?this.crossHostPolicy==="open_new_tab"&&this.isCrossHostNavigation(t)?"open_new_tab":"allow_same_tab":this.externalNavigationPolicy==="block"?"block":this.externalNavigationPolicy==="open_new_tab_notice"?"open_new_tab":"allow_same_tab":"allow_same_tab"}isCrossHostNavigation(t){let n=ns(window.location.href),r=ns(t);return!n||!r?!1:n!==r}buildNavigationIntent(t,n){let r="";try{r=crypto.randomUUID()}catch{r=`handoff_${Date.now()}_${Math.floor(Math.random()*1e5)}`}return{handoffId:r,targetUrl:t,sourceRuntimeId:this.runtimeId,sourceLogicalTabId:this.actionGateContext.localLogicalTabId,runId:n?.runId,isCrossHost:n?.isCrossHost??this.isCrossHostNavigation(t),ts:Date.now()}}async resolveAgentNavigationDecision(t,n){let r={decision:n,decisionReason:n==="block"?"policy_blocked":n==="open_new_tab"?"open_new_tab":"allow_same_tab"};if(!this.onBeforeAgentNavigation)return r;try{let o=this.onBeforeAgentNavigation(t),s=await this.awaitWithTimeout(o,wa.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=Ar(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"||Mf.has(t)||qb.has(t)?!1:!Ar(window.location.href,this.allowedDomains)}getInterceptedClickTarget(t){let n=this.getClickTargetUrl(t);return n?this.shouldPreserveHostRuntime(n)?!Ar(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"||Ar(n,this.allowedDomains)?null:{targetUrl:n,reason:"Blocked same-tab navigation to an out-of-scope destination.",forceOpenInNewTab:!1}:null}getClickTargetUrl(t){let n=cl(t);if(!n)return null;let{doc:r}=Yo(document,t.iframe_id),o=Gn(r,n);if(!o)return null;let s=Nf(o),i=s?.href||s?.getAttribute("href")||"";return Ta(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=!Ar(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 u=await this.reconcileOpenedTab(t,o);u&&(s={opened:!0,verified:!1},i=i||u)}let a=s.opened&&!i&&!!this.registerOpenedTab;if(!s.opened){let u="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||u,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:u,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=ns(t),o=Date.now()+2e3;for(;Date.now()<o;){try{let s=this.listKnownTabs();for(let i of s){let a=Number(i?.logicalTabId);if(!Number.isFinite(a)||a<=0||n.has(a))continue;let c=String(i?.url||"").trim();if(!c)return a;let l=ns(c);if(!r||!l||l===r)return a}}catch{}await new Promise(s=>setTimeout(s,120))}}async openElementInNewTab(t){let n=cl(t);if(!n)return{success:!1,error:"click_element with open_in_new_tab requires element_id.",allowFallback:!0};let{doc:r}=Yo(document,t.iframe_id),o=Gn(r,n);if(!o)return{success:!1,error:`click_element: element_id ${String(n)} not found.`,allowFallback:!0};let s=Nf(o),i=s?.href||s?.getAttribute("href")||"",a=Ta(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=zb(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=Pu(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=Gn(document,s);if(!i){o.push(`element_id ${s} not found`);continue}try{let a=await jb(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 cf(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:Pf(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(wa,"NAV_PREFLIGHT_TIMEOUT_MS",1500);var Ea=wa;function Hb(e){return e==="open_url_new_tab"?U.open_new_tab:String(e||"").trim()}function Rf(e){return e==="host_only"?"host_only":"registrable_domain"}function Af(e){return e==="allow"||e==="block"||e==="open_new_tab_notice"?e:"open_new_tab_notice"}function Cf(e){return e==="open_new_tab"||e==="same_tab"?e:"same_tab"}function Xs(e,t,n,r){let o=Number(e);return Number.isFinite(o)?Math.max(n,Math.min(r,Math.floor(o))):t}function Ta(e,t){let n=String(e||"").trim();if(!n)return null;try{return new URL(n,t).toString()}catch{return null}}function Nf(e){if(e instanceof HTMLAnchorElement&&e.href)return e;let t=e.closest?.("a[href]");return t instanceof HTMLAnchorElement&&t.href?t:null}function _a(e,t="CAPABILITY_UNAVAILABLE"){return{success:!1,error:e,allowFallback:!0,errorDetails:{code:t,message:e,retryable:!1}}}var Mf=new Set([U.describe_images,U.wait_action,U.wait_for_element,U.answer_task,U.solve_captcha,U.network_run_recipe]),qb=new Set([U.goto_url,U.google_search,U.go_back,U.go_forward,U.refresh_page,U.open_new_tab,U.switch_tab,U.close_tab]);function $b(e){return{frameworks:(e.frameworks||[]).filter(n=>n in Ic).map(n=>Ic[n]),listenersRaw:e.listenersRaw??"",role:e.role??null,pattern:e.pattern,value:e.value??null}}async function Lf(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 Wb(e,t){if(t!==U.click_element)return"standard";let n=mo(e||"");if(!n)return"standard";let r=new Set(n.entries.map(c=>kr[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 Pf(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 Df(e){let t=Number(e);if(!Number.isFinite(t))return null;let n=Math.trunc(t);return n>0?n:null}function Bf(e){let t=[];for(let n of Di){let r=e?.[n];if(r==null)continue;if(Array.isArray(r)){for(let s of r){let i=Df(s);i!=null&&t.push(i)}continue}let o=Df(r);o!=null&&t.push(o)}return Array.from(new Set(t))}function Vb(e){return Bf(e).length>0}function cl(e){let t=Bf(e);return t.length?t[0]:null}function zb(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 jb(e){if(e instanceof HTMLCanvasElement){let o=e.toDataURL(),s=Uf(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 Of(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 Of(r[2],e.getAttribute("aria-label")||void 0);throw new Error("unsupported element")}function Uf(e){let t=/^data:([^;]+);base64,(.*)$/.exec(e);return t?{mimeType:t[1],data:t[2]}:null}async function Of(e,t){if(!e)throw new Error("missing src");if(e.startsWith("data:")){let a=Uf(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=Pf(o),i=r.type||"image/png";return{data:s,mimeType:i,displayName:t}}function Ff(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 Gb="Rover",Xb="https://www.rtrvr.ai/rover/mascot.mp4",Kb="https://www.rtrvr.ai/rover/mascot.webm";function Hf(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function ll(e){try{return new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return""}}function Yb(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 Qb(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||Hf("trace")}function Ft(e){return String(e||"").trim()}function Jb(e){let t=String(e||"").trim();return t?t.slice(0,64):Gb}function Zb(e){let t=String(e||"").trim();return t?t[0].toUpperCase():"R"}function ey(e){return String(e||"").replace(/[^a-zA-Z0-9]/g,"").slice(0,3).toUpperCase()||"RVR"}function qf(e){let t=Ft(e),n=/^(Analyze|Route|Execute|Verify|Complete):\s*(.*)$/i.exec(t);if(!n)return{plainTitle:t};let r=n[1].toLowerCase(),o=Ft(n[2]||t);return{stage:r,plainTitle:o||t}}function ty(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=qf(e.title||"");if(n.stage==="analyze"||n.stage==="route"||n.stage==="complete")return"detail"}return"primary"}function ul(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 Gr(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");ul(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 l=document.createElement("span");l.className="rvKvLabel",l.textContent=i[1];let u=document.createElement("span");u.className="rvKvValue",ul(u,i[2]),c.appendChild(l),c.appendChild(u),t.appendChild(c);continue}let a=document.createElement("div");a.className="rvLine",ul(a,s),t.appendChild(a)}return r&&t.appendChild(r),t}function xa(e,t){let n=document.createElement("div");if(n.className="expandableWrap",e.length<=t)return n.appendChild(Gr(e)),n;let r=e.split(`
|
|
12
|
+
`),o=0,s=0;for(let l=0;l<r.length;l++)if(o+=r[l].length+1,o>=t){s=l+1;break}s===0&&(s=1);let i=r.slice(0,s).join(`
|
|
13
|
+
`),a=r.slice(s).join(`
|
|
14
|
+
`),c=document.createElement("div");if(c.className="expandPreview",c.appendChild(Gr(i)),n.appendChild(c),a.trim()){let l=document.createElement("div");l.className="expandRest",l.appendChild(Gr(a)),l.style.display="none",n.appendChild(l);let u=document.createElement("button");u.type="button",u.className="expandToggle",u.textContent="See more",u.addEventListener("click",m=>{m.stopPropagation();let T=l.style.display==="none";l.style.display=T?"block":"none",u.textContent=T?"See less":"See more"}),n.appendChild(u)}return n}function Ia(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function ka(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(Ia(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 ny(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 ka(e)}}function $f(e){let t=document.createElement("button");return t.type="button",t.className="rvStructuredMore",t.textContent=`Show ${Math.min(25,e.total-e.shown)} more (${e.total-e.shown} left)`,t.addEventListener("click",n=>{n.stopPropagation(),e.onLoadMore()}),t}function ry(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=ny(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 oy(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=Ft(e);return n?(n.length>1200?t.appendChild(xa(n,1200)):t.appendChild(Gr(n)),t):(t.textContent='""',t)}return t.textContent=String(e),t}function sy(e){let t=e.slice(0,25);if(!t.length)return;let n=[];for(let r of t){if(!Ia(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 iy(e,t,n){let r=document.createElement("div");if(r.className="rvStructuredArray",!e.length){let l=document.createElement("div");return l.className="rvStructuredEmpty",l.textContent="No items",r.appendChild(l),r}let o=sy(e),s=Math.min(25,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 l=document.createElement("table");l.className="rvTable";let u=document.createElement("thead"),m=document.createElement("tr"),T=document.createElement("th");T.textContent="#",m.appendChild(T);for(let b of o){let v=document.createElement("th");v.textContent=b,m.appendChild(v)}u.appendChild(m),l.appendChild(u);let h=document.createElement("tbody");for(let b=0;b<s;b+=1){let v=document.createElement("tr"),M=document.createElement("td");M.textContent=String(b+1),v.appendChild(M);let q=e[b]||{};for(let R of o){let S=document.createElement("td"),F=q[R];F==null?S.textContent="\u2014":S.textContent=ka(F),v.appendChild(S)}h.appendChild(v)}l.appendChild(h),i.appendChild(l)}else for(let l=0;l<s;l+=1){let u=e[l],m=document.createElement("div");m.className="rvStructuredItem";let T=document.createElement("div");T.className="rvStructuredItemLabel",T.textContent=`#${l+1}`,m.appendChild(T);let h=document.createElement("div");h.className="rvStructuredItemBody",h.appendChild(n(u,t+1)),m.appendChild(h),i.appendChild(m)}a.innerHTML="",s<e.length&&a.appendChild($f({total:e.length,shown:s,onLoadMore:()=>{s=Math.min(e.length,s+25),c()}}))};return c(),r}function ay(e,t,n){let r=document.createElement("div");r.className="rvStructuredObject";let o=Object.entries(e);if(!o.length){let l=document.createElement("div");return l.className="rvStructuredEmpty",l.textContent="No fields",r.appendChild(l),r}let s=Math.min(25,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 l=0;l<s;l+=1){let[u,m]=o[l],T=document.createElement("div");T.className="rvStructuredRow";let h=document.createElement("div");h.className="rvStructuredKey",h.textContent=u;let b=document.createElement("div");b.className="rvStructuredValue",b.appendChild(n(m,t+1)),T.appendChild(h),T.appendChild(b),i.appendChild(T)}a.innerHTML="",s<o.length&&a.appendChild($f({total:o.length,shown:s,onLoadMore:()=>{s=Math.min(o.length,s+25),c()}}))};return c(),r}function dl(e,t=0){if(t>=4){let r=document.createElement("div");return r.className="rvStructuredCapped",r.textContent=ka(e),r}if(e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean")return oy(e);if(Array.isArray(e))return iy(e,t,dl);if(Ia(e))return ay(e,t,dl);let n=document.createElement("div");return n.className="rvStructuredPrimitive",n.textContent=ka(e),n}function Wf(e){if(e.type==="text"){let i=Ft(e.text);return i?xa(i,1200):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=Ft(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}`:Ia(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(dl(e.data)),t.appendChild(s),t.appendChild(ry(e.data)),t}function cy(e,t){let n=document.createDocumentFragment(),r=Array.isArray(t)?t:[],o=!1;for(let a of r){let c=Wf(a);c&&(o=!0,n.appendChild(c))}if(!o){let a=Ft(e);return a&&(a.length>1200?n.appendChild(xa(a,1200)):n.appendChild(Gr(a))),n}let s=Ft(e),i=r.some(a=>a.type==="text"&&Ft(a.text)===s);if(s&&!i){let a=document.createElement("div");a.className="rvLine",a.appendChild(Gr(s)),n.insertBefore(a,n.firstChild)}return n}function Vf(e){let t=Jb(e.agent?.name),n=Zb(t),r=ey(t),o=e.visitorName,s=document.createElement("div");s.id="rover-widget-root",document.documentElement.appendChild(s);let i=s.attachShadow({mode:"closed"}),a=document.createElement("style");a.textContent=`
|
|
15
15
|
@font-face {
|
|
16
16
|
font-family: 'Manrope';
|
|
17
17
|
font-style: normal;
|
|
@@ -19,7 +19,7 @@ Author: ${c.textContent} `),i.textContent&&(t+=`Comment: ${i.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(a);let c=document.createElement("style");c.textContent=`
|
|
23
23
|
/* \u2500\u2500 Step 2: Self-hosted font \u2500\u2500 */
|
|
24
24
|
@font-face {
|
|
25
25
|
font-family: 'Manrope';
|
|
@@ -304,65 +304,57 @@ Author: ${c.textContent} `),i.textContent&&(t+=`Comment: ${i.textContent}
|
|
|
304
304
|
margin-left: auto;
|
|
305
305
|
}
|
|
306
306
|
|
|
307
|
-
.
|
|
307
|
+
.modeLabel {
|
|
308
308
|
font-size: 10px;
|
|
309
309
|
font-weight: 700;
|
|
310
|
-
letter-spacing: 0.02em;
|
|
311
310
|
text-transform: uppercase;
|
|
311
|
+
padding: 1px 6px;
|
|
312
312
|
border-radius: 999px;
|
|
313
|
-
|
|
313
|
+
margin-left: 4px;
|
|
314
314
|
border: 1px solid transparent;
|
|
315
|
-
flex: 0 0 auto;
|
|
316
315
|
}
|
|
317
316
|
|
|
318
|
-
.
|
|
317
|
+
.modeLabel.controller {
|
|
319
318
|
color: #9a3412;
|
|
320
319
|
background: rgba(255, 76, 0, 0.08);
|
|
321
320
|
border-color: var(--rv-accent-border);
|
|
322
321
|
}
|
|
323
322
|
|
|
324
|
-
.
|
|
323
|
+
.modeLabel.observer {
|
|
325
324
|
color: var(--rv-text-secondary);
|
|
326
325
|
background: rgba(0, 0, 0, 0.04);
|
|
327
326
|
border-color: var(--rv-border-strong);
|
|
328
327
|
}
|
|
329
328
|
|
|
330
|
-
.
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
329
|
+
.cancelPill {
|
|
330
|
+
display: none;
|
|
331
|
+
align-items: center;
|
|
332
|
+
gap: 6px;
|
|
333
|
+
padding: 6px 14px;
|
|
334
|
+
border-radius: 999px;
|
|
335
|
+
border: 1.5px solid rgba(220, 38, 38, 0.3);
|
|
336
|
+
background: rgba(220, 38, 38, 0.08);
|
|
335
337
|
color: var(--rv-error);
|
|
336
|
-
|
|
337
|
-
display: none; place-items: center;
|
|
338
|
-
font-size: 10px;
|
|
338
|
+
font-size: 12px;
|
|
339
339
|
font-weight: 700;
|
|
340
|
+
font-family: inherit;
|
|
341
|
+
cursor: pointer;
|
|
342
|
+
flex: 0 0 auto;
|
|
340
343
|
transition: background 120ms ease, border-color 120ms ease;
|
|
341
|
-
flex: 0 0 auto; padding: 0;
|
|
342
344
|
}
|
|
343
|
-
.
|
|
344
|
-
background: rgba(220, 38, 38, 0.
|
|
345
|
-
border-color: rgba(220, 38, 38, 0.
|
|
345
|
+
.cancelPill:hover {
|
|
346
|
+
background: rgba(220, 38, 38, 0.14);
|
|
347
|
+
border-color: rgba(220, 38, 38, 0.45);
|
|
346
348
|
}
|
|
347
|
-
.
|
|
348
|
-
display:
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
.muteBtn {
|
|
352
|
-
width: 32px; height: 32px;
|
|
353
|
-
border-radius: var(--rv-radius-sm);
|
|
354
|
-
border: 1px solid var(--rv-border);
|
|
355
|
-
background: var(--rv-surface);
|
|
356
|
-
cursor: pointer;
|
|
357
|
-
display: grid; place-items: center;
|
|
358
|
-
color: var(--rv-text-secondary);
|
|
359
|
-
transition: background 150ms ease, border-color 150ms ease, color 150ms ease;
|
|
360
|
-
flex: 0 0 auto; padding: 0;
|
|
349
|
+
.cancelPill.visible {
|
|
350
|
+
display: flex;
|
|
361
351
|
}
|
|
362
|
-
.
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
352
|
+
.cancelIcon {
|
|
353
|
+
display: block;
|
|
354
|
+
width: 10px;
|
|
355
|
+
height: 10px;
|
|
356
|
+
border-radius: 2px;
|
|
357
|
+
background: var(--rv-error);
|
|
366
358
|
}
|
|
367
359
|
|
|
368
360
|
.overflowBtn,
|
|
@@ -393,6 +385,76 @@ Author: ${c.textContent} `),i.textContent&&(t+=`Comment: ${i.textContent}
|
|
|
393
385
|
font-size: 18px;
|
|
394
386
|
}
|
|
395
387
|
|
|
388
|
+
/* \u2500\u2500 Execution Progress Bar \u2500\u2500 */
|
|
389
|
+
.executionBar {
|
|
390
|
+
position: absolute;
|
|
391
|
+
bottom: -1px;
|
|
392
|
+
left: 0;
|
|
393
|
+
right: 0;
|
|
394
|
+
height: 2px;
|
|
395
|
+
overflow: hidden;
|
|
396
|
+
}
|
|
397
|
+
.executionBar::after {
|
|
398
|
+
content: '';
|
|
399
|
+
position: absolute;
|
|
400
|
+
top: 0;
|
|
401
|
+
left: -40%;
|
|
402
|
+
width: 40%;
|
|
403
|
+
height: 100%;
|
|
404
|
+
background: linear-gradient(90deg, transparent, var(--rv-accent), transparent);
|
|
405
|
+
border-radius: 999px;
|
|
406
|
+
opacity: 0;
|
|
407
|
+
transition: opacity 200ms ease;
|
|
408
|
+
}
|
|
409
|
+
.executionBar.active::after {
|
|
410
|
+
opacity: 1;
|
|
411
|
+
animation: executionSlide 1.5s ease-in-out infinite;
|
|
412
|
+
}
|
|
413
|
+
@keyframes executionSlide {
|
|
414
|
+
0% { left: -40%; }
|
|
415
|
+
100% { left: 100%; }
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/* \u2500\u2500 Trace Toggle Bar \u2500\u2500 */
|
|
419
|
+
.traceToggleBar {
|
|
420
|
+
display: none;
|
|
421
|
+
align-items: center;
|
|
422
|
+
gap: 8px;
|
|
423
|
+
padding: 6px 10px;
|
|
424
|
+
border-radius: var(--rv-radius-sm);
|
|
425
|
+
background: var(--rv-bg-alt);
|
|
426
|
+
border: 1px solid var(--rv-border);
|
|
427
|
+
}
|
|
428
|
+
.traceToggleBar.visible {
|
|
429
|
+
display: flex;
|
|
430
|
+
}
|
|
431
|
+
.traceToggleLabel {
|
|
432
|
+
font-size: 11px;
|
|
433
|
+
font-weight: 700;
|
|
434
|
+
color: var(--rv-text-secondary);
|
|
435
|
+
text-transform: uppercase;
|
|
436
|
+
letter-spacing: 0.04em;
|
|
437
|
+
}
|
|
438
|
+
.traceToggleCount {
|
|
439
|
+
font-size: 11px;
|
|
440
|
+
color: var(--rv-text-tertiary);
|
|
441
|
+
flex: 1;
|
|
442
|
+
}
|
|
443
|
+
.traceToggleBtn {
|
|
444
|
+
font-size: 11px;
|
|
445
|
+
font-weight: 600;
|
|
446
|
+
color: var(--rv-accent);
|
|
447
|
+
background: none;
|
|
448
|
+
border: none;
|
|
449
|
+
cursor: pointer;
|
|
450
|
+
padding: 2px 6px;
|
|
451
|
+
border-radius: 4px;
|
|
452
|
+
font-family: inherit;
|
|
453
|
+
}
|
|
454
|
+
.traceToggleBtn:hover {
|
|
455
|
+
background: var(--rv-accent-soft);
|
|
456
|
+
}
|
|
457
|
+
|
|
396
458
|
/* \u2500\u2500 Overflow Menu \u2500\u2500 */
|
|
397
459
|
.overflowMenu {
|
|
398
460
|
position: absolute;
|
|
@@ -1571,9 +1633,9 @@ Author: ${c.textContent} `),i.textContent&&(t+=`Comment: ${i.textContent}
|
|
|
1571
1633
|
height: 36px;
|
|
1572
1634
|
}
|
|
1573
1635
|
|
|
1574
|
-
.
|
|
1636
|
+
.modeLabel {
|
|
1575
1637
|
font-size: 9px;
|
|
1576
|
-
padding:
|
|
1638
|
+
padding: 1px 4px;
|
|
1577
1639
|
}
|
|
1578
1640
|
|
|
1579
1641
|
.bubble {
|
|
@@ -1640,16 +1702,256 @@ Author: ${c.textContent} `),i.textContent&&(t+=`Comment: ${i.textContent}
|
|
|
1640
1702
|
max-width: 190px;
|
|
1641
1703
|
padding: 8px 22px 8px 10px;
|
|
1642
1704
|
}
|
|
1705
|
+
|
|
1706
|
+
.roverTabBar {
|
|
1707
|
+
padding: 4px 8px;
|
|
1708
|
+
}
|
|
1709
|
+
|
|
1710
|
+
.conversationDrawer {
|
|
1711
|
+
width: 100%;
|
|
1712
|
+
}
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1715
|
+
/* \u2500\u2500 Conversation Pill (hidden \u2014 not useful) \u2500\u2500 */
|
|
1716
|
+
.roverConversationPill {
|
|
1717
|
+
display: none !important;
|
|
1718
|
+
}
|
|
1719
|
+
.roverConversationPill:hover {
|
|
1720
|
+
background: rgba(0,0,0,0.03);
|
|
1721
|
+
border-color: var(--rv-border-strong);
|
|
1722
|
+
}
|
|
1723
|
+
.roverConversationPillLabel {
|
|
1724
|
+
overflow: hidden;
|
|
1725
|
+
text-overflow: ellipsis;
|
|
1726
|
+
white-space: nowrap;
|
|
1727
|
+
max-width: 200px;
|
|
1728
|
+
}
|
|
1729
|
+
.roverConversationPillArrow {
|
|
1730
|
+
font-size: 10px;
|
|
1731
|
+
opacity: .6;
|
|
1732
|
+
}
|
|
1733
|
+
|
|
1734
|
+
/* \u2500\u2500 Tab Bar (hidden, kept for backward compat) \u2500\u2500 */
|
|
1735
|
+
.roverTabBar {
|
|
1736
|
+
display: none !important;
|
|
1737
|
+
}
|
|
1738
|
+
|
|
1739
|
+
/* \u2500\u2500 Conversation Drawer \u2500\u2500 */
|
|
1740
|
+
.conversationDrawer {
|
|
1741
|
+
position: absolute;
|
|
1742
|
+
top: 0;
|
|
1743
|
+
left: 0;
|
|
1744
|
+
right: 0;
|
|
1745
|
+
bottom: 0;
|
|
1746
|
+
background: var(--rv-bg);
|
|
1747
|
+
border-right: 1px solid var(--rv-border);
|
|
1748
|
+
z-index: 100;
|
|
1749
|
+
display: flex;
|
|
1750
|
+
flex-direction: column;
|
|
1751
|
+
transform: translateX(-100%);
|
|
1752
|
+
transition: transform .25s var(--rv-ease-spring);
|
|
1753
|
+
}
|
|
1754
|
+
.conversationDrawer.open {
|
|
1755
|
+
transform: translateX(0);
|
|
1756
|
+
}
|
|
1757
|
+
.conversationDrawerHeader {
|
|
1758
|
+
display: flex;
|
|
1759
|
+
align-items: center;
|
|
1760
|
+
justify-content: space-between;
|
|
1761
|
+
padding: 14px 16px;
|
|
1762
|
+
border-bottom: 1px solid var(--rv-border);
|
|
1763
|
+
}
|
|
1764
|
+
.conversationDrawerTitle {
|
|
1765
|
+
font-size: 14px;
|
|
1766
|
+
font-weight: 700;
|
|
1767
|
+
color: var(--rv-text);
|
|
1768
|
+
}
|
|
1769
|
+
.conversationDrawerClose {
|
|
1770
|
+
width: 32px;
|
|
1771
|
+
height: 32px;
|
|
1772
|
+
border-radius: var(--rv-radius-sm);
|
|
1773
|
+
border: 1px solid var(--rv-border);
|
|
1774
|
+
background: var(--rv-surface);
|
|
1775
|
+
color: var(--rv-text-secondary);
|
|
1776
|
+
cursor: pointer;
|
|
1777
|
+
font-size: 18px;
|
|
1778
|
+
display: grid;
|
|
1779
|
+
place-items: center;
|
|
1780
|
+
padding: 0;
|
|
1781
|
+
transition: background 150ms ease, border-color 150ms ease, color 150ms ease;
|
|
1782
|
+
}
|
|
1783
|
+
.conversationDrawerClose:hover {
|
|
1784
|
+
background: var(--rv-bg-alt);
|
|
1785
|
+
border-color: var(--rv-border-strong);
|
|
1786
|
+
color: var(--rv-text);
|
|
1787
|
+
}
|
|
1788
|
+
.conversationList {
|
|
1789
|
+
flex: 1;
|
|
1790
|
+
overflow-y: auto;
|
|
1791
|
+
padding: 8px;
|
|
1792
|
+
}
|
|
1793
|
+
.conversationItem {
|
|
1794
|
+
display: flex;
|
|
1795
|
+
align-items: center;
|
|
1796
|
+
gap: 10px;
|
|
1797
|
+
padding: 10px 12px;
|
|
1798
|
+
border-radius: 8px;
|
|
1799
|
+
cursor: pointer;
|
|
1800
|
+
border: 1px solid transparent;
|
|
1801
|
+
transition: background .15s, border-color .15s;
|
|
1802
|
+
}
|
|
1803
|
+
.conversationItem:hover {
|
|
1804
|
+
background: rgba(0,0,0,0.03);
|
|
1805
|
+
}
|
|
1806
|
+
.conversationItem.active {
|
|
1807
|
+
background: var(--rv-accent-soft);
|
|
1808
|
+
border: 1px solid var(--rv-accent-border);
|
|
1809
|
+
}
|
|
1810
|
+
.conversationDot {
|
|
1811
|
+
width: 8px;
|
|
1812
|
+
height: 8px;
|
|
1813
|
+
border-radius: 50%;
|
|
1814
|
+
flex-shrink: 0;
|
|
1815
|
+
background: var(--rv-text-tertiary);
|
|
1816
|
+
}
|
|
1817
|
+
.conversationItem.running .conversationDot { background: var(--rv-success); }
|
|
1818
|
+
.conversationItem.paused .conversationDot { background: #D97706; }
|
|
1819
|
+
.conversationItem.completed .conversationDot { background: var(--rv-text-tertiary); }
|
|
1820
|
+
.conversationItem.failed .conversationDot { background: var(--rv-error); }
|
|
1821
|
+
.conversationItem.awaiting_user .conversationDot { background: var(--rv-info); }
|
|
1822
|
+
.conversationContent {
|
|
1823
|
+
flex: 1;
|
|
1824
|
+
min-width: 0;
|
|
1825
|
+
}
|
|
1826
|
+
.conversationSummary {
|
|
1827
|
+
font-size: 13px;
|
|
1828
|
+
color: var(--rv-text);
|
|
1829
|
+
font-weight: 500;
|
|
1830
|
+
white-space: nowrap;
|
|
1831
|
+
overflow: hidden;
|
|
1832
|
+
text-overflow: ellipsis;
|
|
1833
|
+
}
|
|
1834
|
+
.conversationMeta {
|
|
1835
|
+
font-size: 11px;
|
|
1836
|
+
color: var(--rv-text-tertiary);
|
|
1837
|
+
margin-top: 2px;
|
|
1838
|
+
}
|
|
1839
|
+
.conversationActions {
|
|
1840
|
+
opacity: 0;
|
|
1841
|
+
transition: opacity .15s;
|
|
1842
|
+
}
|
|
1843
|
+
.conversationItem:hover .conversationActions {
|
|
1844
|
+
opacity: 1;
|
|
1845
|
+
}
|
|
1846
|
+
.conversationDeleteBtn {
|
|
1847
|
+
background: var(--rv-surface);
|
|
1848
|
+
border: 1px solid var(--rv-border);
|
|
1849
|
+
color: var(--rv-text-tertiary);
|
|
1850
|
+
cursor: pointer;
|
|
1851
|
+
font-size: 14px;
|
|
1852
|
+
padding: 2px 4px;
|
|
1853
|
+
border-radius: 4px;
|
|
1854
|
+
transition: background 150ms ease, border-color 150ms ease, color 150ms ease;
|
|
1855
|
+
}
|
|
1856
|
+
.conversationDeleteBtn:hover {
|
|
1857
|
+
color: var(--rv-error);
|
|
1858
|
+
background: rgba(220,38,38,0.06);
|
|
1859
|
+
border-color: rgba(220,38,38,0.25);
|
|
1860
|
+
}
|
|
1861
|
+
.conversationNewBtn {
|
|
1862
|
+
display: block;
|
|
1863
|
+
width: calc(100% - 16px);
|
|
1864
|
+
margin: 8px;
|
|
1865
|
+
padding: 10px;
|
|
1866
|
+
background: var(--rv-surface);
|
|
1867
|
+
border: 1px dashed var(--rv-border-strong);
|
|
1868
|
+
border-radius: 8px;
|
|
1869
|
+
color: var(--rv-text-secondary);
|
|
1870
|
+
font-size: 13px;
|
|
1871
|
+
cursor: pointer;
|
|
1872
|
+
text-align: center;
|
|
1873
|
+
transition: background .15s, border-color .15s, color .15s;
|
|
1874
|
+
}
|
|
1875
|
+
.conversationNewBtn:hover {
|
|
1876
|
+
background: var(--rv-accent-soft);
|
|
1877
|
+
border-color: var(--rv-accent-border);
|
|
1878
|
+
color: var(--rv-accent);
|
|
1879
|
+
}
|
|
1880
|
+
|
|
1881
|
+
/* \u2500\u2500 Paused Task Banner \u2500\u2500 */
|
|
1882
|
+
.pausedTaskBanner {
|
|
1883
|
+
display: none;
|
|
1884
|
+
align-items: center;
|
|
1885
|
+
justify-content: space-between;
|
|
1886
|
+
padding: 8px 14px;
|
|
1887
|
+
background: rgba(251,191,36,.08);
|
|
1888
|
+
border-bottom: 1px solid rgba(251,191,36,.15);
|
|
1889
|
+
gap: 8px;
|
|
1890
|
+
}
|
|
1891
|
+
.pausedTaskBanner.visible {
|
|
1892
|
+
display: flex;
|
|
1893
|
+
}
|
|
1894
|
+
.pausedTaskText {
|
|
1895
|
+
font-size: 12px;
|
|
1896
|
+
color: #fbbf24;
|
|
1897
|
+
flex: 1;
|
|
1898
|
+
}
|
|
1899
|
+
.pausedTaskActions {
|
|
1900
|
+
display: flex;
|
|
1901
|
+
gap: 6px;
|
|
1902
|
+
}
|
|
1903
|
+
.pausedTaskActions button {
|
|
1904
|
+
padding: 4px 10px;
|
|
1905
|
+
border-radius: 6px;
|
|
1906
|
+
border: none;
|
|
1907
|
+
font-size: 11px;
|
|
1908
|
+
cursor: pointer;
|
|
1909
|
+
font-weight: 500;
|
|
1910
|
+
}
|
|
1911
|
+
.pausedTaskResumeBtn {
|
|
1912
|
+
background: #fbbf24;
|
|
1913
|
+
color: #1a1a2e;
|
|
1914
|
+
}
|
|
1915
|
+
.pausedTaskResumeBtn:hover {
|
|
1916
|
+
background: #f59e0b;
|
|
1917
|
+
}
|
|
1918
|
+
.pausedTaskCancelBtn {
|
|
1919
|
+
background: rgba(0,0,0,0.04);
|
|
1920
|
+
color: var(--rv-text-secondary);
|
|
1921
|
+
}
|
|
1922
|
+
.pausedTaskCancelBtn:hover {
|
|
1923
|
+
background: rgba(0,0,0,0.08);
|
|
1924
|
+
}
|
|
1925
|
+
|
|
1926
|
+
/* \u2500\u2500 Conversation List Button \u2500\u2500 */
|
|
1927
|
+
.conversationListBtn {
|
|
1928
|
+
width: 32px;
|
|
1929
|
+
height: 32px;
|
|
1930
|
+
border-radius: var(--rv-radius-sm);
|
|
1931
|
+
border: 1px solid var(--rv-border);
|
|
1932
|
+
background: var(--rv-surface);
|
|
1933
|
+
color: var(--rv-text-secondary);
|
|
1934
|
+
cursor: pointer;
|
|
1935
|
+
display: grid;
|
|
1936
|
+
place-items: center;
|
|
1937
|
+
padding: 0;
|
|
1938
|
+
flex: 0 0 auto;
|
|
1939
|
+
transition: background 150ms ease, border-color 150ms ease, color 150ms ease;
|
|
1940
|
+
}
|
|
1941
|
+
.conversationListBtn:hover {
|
|
1942
|
+
background: var(--rv-bg-alt);
|
|
1943
|
+
border-color: var(--rv-border-strong);
|
|
1944
|
+
color: var(--rv-text);
|
|
1643
1945
|
}
|
|
1644
|
-
`;let
|
|
1946
|
+
`;let l=document.createElement("div");l.className="rover",l.dataset.mood="idle";let u=document.createElement("button");u.className="launcher",u.setAttribute("aria-label",`Open ${t} assistant`);let m=e.mascot?.disabled===!0,T=null;if(!m){T=document.createElement("video"),T.autoplay=!0,T.muted=!0,T.loop=!0,T.playsInline=!0,T.preload="metadata";let L=document.createElement("source");L.src=e.mascot?.mp4Url||Xb,L.type="video/mp4";let V=document.createElement("source");V.src=e.mascot?.webmUrl||Kb,V.type="video/webm",T.appendChild(L),T.appendChild(V),u.appendChild(T)}let h=document.createElement("span");h.className="launcherFallback",h.textContent=r;let b=document.createElement("div");b.className="launcherShine",u.appendChild(h),u.appendChild(b);let v=document.createElement("div");v.className="greetingBubble";let M=document.createElement("span");M.className="greetingText";let q=document.createElement("button");q.type="button",q.className="greetingClose",q.textContent="\xD7",q.setAttribute("aria-label","Dismiss");let R=document.createElement("div");R.className="greetingDots";for(let L=0;L<3;L++){let V=document.createElement("span");V.className="greetingDot",R.appendChild(V)}v.appendChild(R),v.appendChild(M),v.appendChild(q);let S=document.createElement("div");S.className="panel";let F=document.createElement("div");F.className="header";let z=document.createElement("div");z.className="avatar";let Q=null;!m&&T&&(Q=T.cloneNode(!0),z.appendChild(Q));let fe=document.createElement("span");fe.className="avatarFallback",fe.textContent=n,z.appendChild(fe);let ge=document.createElement("div");ge.className="meta";let he=document.createElement("div");he.className="title",he.textContent=t;let Re=document.createElement("div");Re.className="status";let be=document.createElement("span");be.className="statusDot";let Be=document.createElement("span");Be.textContent="ready";let Ne=document.createElement("span");Ne.className="modeLabel controller",Ne.textContent="active",Re.appendChild(be),Re.appendChild(Be),Re.appendChild(Ne),ge.appendChild(he),ge.appendChild(Re);let ut=document.createElement("div");ut.className="headerActions";let Ie=document.createElement("button");Ie.type="button",Ie.className="overflowBtn",Ie.setAttribute("aria-label","More options"),Ie.innerHTML="⋯";let Mt=document.createElement("button");Mt.type="button",Mt.className="closeBtn",Mt.setAttribute("aria-label","Close Rover panel"),Mt.textContent="\xD7";let bt=e.muted??!1;try{let L=localStorage.getItem("rover:muted");L!==null&&(bt=L!=="false")}catch{}function it(){T&&(T.muted=bt),Q&&(Q.muted=bt)}it();let Lt=document.createElement("button");Lt.type="button",Lt.className="cancelPill",Lt.setAttribute("aria-label","Cancel task");let Un=document.createElement("span");Un.className="cancelIcon",Lt.appendChild(Un),Lt.appendChild(document.createTextNode(" Cancel"));let Rn=document.createElement("div");Rn.className="executionBar";let on=document.createElement("button");on.type="button",on.className="conversationListBtn",on.setAttribute("aria-label","Conversations"),on.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>',ut.appendChild(on),ut.appendChild(Ie),ut.appendChild(Lt),ut.appendChild(Mt);let yt=document.createElement("div");yt.className="overflowMenu";let Qe=document.createElement("button");Qe.type="button",Qe.className="menuItem",Qe.textContent="New task";let Yt=document.createElement("button");Yt.type="button",Yt.className="menuItem danger",Yt.textContent="End task";let yr=document.createElement("div");yr.className="menuDivider";let vr=document.createElement("button");vr.type="button",vr.className="menuItem",vr.textContent=bt?"Unmute sounds":"Mute sounds",vr.addEventListener("click",()=>{Ce(),bt=!bt;try{localStorage.setItem("rover:muted",String(bt))}catch{}it(),vr.textContent=bt?"Unmute sounds":"Mute sounds"});let gn=document.createElement("button");gn.type="button",gn.className="menuItem",gn.textContent="Take control",gn.style.display="none",yt.appendChild(Qe),yt.appendChild(Yt),yt.appendChild(yr),yt.appendChild(vr),yt.appendChild(gn),e.showTaskControls===!1&&(Qe.style.display="none",Yt.style.display="none"),F.appendChild(z),F.appendChild(ge),F.appendChild(ut),F.appendChild(yt),F.appendChild(Rn);let lo=document.createElement("div");lo.style.cssText="position:relative;flex:1;min-height:0;display:flex;flex-direction:column;";let Je=document.createElement("div");Je.className="feed";let Fn=document.createElement("div");Fn.className="traceToggleBar";let qr=document.createElement("span");qr.className="traceToggleLabel",qr.textContent="Execution Log";let vt=document.createElement("span");vt.className="traceToggleCount",vt.textContent="0 steps";let sn=document.createElement("button");sn.type="button",sn.className="traceToggleBtn",sn.textContent="Show all",Fn.appendChild(qr),Fn.appendChild(vt),Fn.appendChild(sn),Je.appendChild(Fn);let An=document.createElement("div");An.className="typingIndicator";for(let L=0;L<3;L++){let V=document.createElement("span");V.className="typingDot",An.appendChild(V)}Je.appendChild(An);let Dt=document.createElement("button");Dt.type="button",Dt.className="scrollBtn",Dt.setAttribute("aria-label","Scroll to bottom"),Dt.innerHTML='<svg viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"></polyline></svg>',lo.appendChild(Je),lo.appendChild(Dt);let an=document.createElement("div");an.className="taskSuggestion",an.innerHTML=`
|
|
1645
1947
|
<div class="taskSuggestionText"></div>
|
|
1646
1948
|
<div class="taskSuggestionActions">
|
|
1647
1949
|
<button type="button" class="taskSuggestionBtn primary">Start new</button>
|
|
1648
1950
|
<button type="button" class="taskSuggestionBtn secondary">Continue</button>
|
|
1649
1951
|
</div>
|
|
1650
|
-
`;let an=document.createElement("div");an.className="shortcutsEmptyState";let gn=document.createElement("div");gn.className="shortcutsHeading",gn.textContent=o?`Hey ${o}! What can I help with?`:`What can ${t} help you with?`;let Xe=document.createElement("div");Xe.className="shortcutsGrid",an.appendChild(gn),an.appendChild(Xe),nt.appendChild(an);let jn=document.createElement("div");jn.className="shortcutsBar";let jt=document.createElement("div");jt.className="questionPrompt";let Xn=document.createElement("div");Xn.className="questionPromptTitle",Xn.textContent="Need a bit more info";let Xt=document.createElement("form");Xt.className="questionPromptForm";let Yn=document.createElement("div");Yn.className="questionPromptList",Xt.appendChild(Yn);let fr=document.createElement("div");fr.className="questionPromptActions";let bn=document.createElement("button");bn.type="button",bn.className="questionPromptCancel",bn.textContent="Cancel",fr.appendChild(bn);let yn=document.createElement("button");yn.type="submit",yn.className="questionPromptSubmit",yn.textContent="Continue",fr.appendChild(yn),Xt.appendChild(fr),jt.appendChild(Xn),jt.appendChild(Xt);let Yt=document.createElement("form");Yt.className="composer";let Mn=document.createElement("textarea");Mn.rows=1,Mn.placeholder=`Ask ${t} to act on this website...`,Yt.appendChild(Mn);let ve=document.createElement("button");ve.type="submit",ve.className="sendBtn",ve.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>',Yt.appendChild(ve);let Ln=document.createElement("div");Ln.className="resizeHandle",Ln.setAttribute("aria-hidden","true"),L.appendChild(W),L.appendChild(dr),L.appendChild(zt),L.appendChild(jn),L.appendChild(jt),L.appendChild(Yt),L.appendChild(Ln),u.appendChild(d),u.appendChild(_),u.appendChild(L),s.appendChild(a),s.appendChild(u);let qe=Mn,It=zt.querySelector(".taskSuggestionText"),pr=zt.querySelector(".taskSuggestionBtn.primary"),Lo=zt.querySelector(".taskSuggestionBtn.secondary"),Mr=new Set,Ye=new Map,Lr=[],Do="controller",to=!1,Kt=!1,Kn=!1,kt=e.shortcuts?.slice(0,12)||[],Dt=null,Qt=!1,cn=null,Ut=!1,Dn=!1,Qn=0,l=!1,x=null,T=null,w=!1,b=null,g=null,v={};function k(){Ut=!Ut,xt.classList.toggle("visible",Ut)}function P(){Ut=!1,xt.classList.remove("visible")}function D(O){kt=O.filter(G=>G&&G.enabled!==!1).slice(0,12),Xe.innerHTML="";for(let G of kt){let Q=document.createElement("button");if(Q.type="button",Q.className="shortcutCard",G.icon){let se=document.createElement("span");se.className="shortcutCardIcon",se.textContent=G.icon,Q.appendChild(se)}let le=document.createElement("span");if(le.className="shortcutCardLabel",le.textContent=G.label,Q.appendChild(le),G.description){let se=document.createElement("span");se.className="shortcutCardDesc",se.textContent=G.description,Q.appendChild(se)}Q.addEventListener("click",()=>e.onShortcutClick?.(G)),Xe.appendChild(Q)}jn.innerHTML="";for(let G of kt){let Q=document.createElement("button");if(Q.type="button",Q.className="shortcutChip",G.icon){let se=document.createElement("span");se.className="shortcutChipIcon",se.textContent=G.icon,Q.appendChild(se)}let le=document.createTextNode(G.label);Q.appendChild(le),Q.addEventListener("click",()=>e.onShortcutClick?.(G)),jn.appendChild(Q)}B()}function B(){let O=kt.length>0,G=!!b?.questions?.length,Q=O&&!Kn&&!Kt,le=O&&Kn&&!Kt&&!G;an.classList.toggle("visible",Q),jn.classList.toggle("visible",le)}function V(O){let G=wt(O);if(G){if(N.textContent=G,_.classList.contains("visible")){_.classList.add("textVisible");return}l||L.classList.contains("open")||(l=!0,_.classList.remove("dismissing","textVisible"),_.classList.add("visible"),T&&(clearTimeout(T),T=null),T=setTimeout(()=>{T=null,_.classList.add("textVisible")},800))}}function z(){if(T&&(clearTimeout(T),T=null),!_.classList.contains("visible"))return;_.classList.add("dismissing");let O=()=>{_.classList.remove("visible","dismissing"),_.removeEventListener("animationend",O)};_.addEventListener("animationend",O),x&&(clearTimeout(x),x=null)}function Z(O){o=O||void 0,o?gn.textContent=`Hey ${o}! What can I help with?`:gn.textContent=`What can ${t} help you with?`}function ie(O){if(!O||!Array.isArray(O.questions))return[];let G=[],Q=new Set;for(let le=0;le<O.questions.length;le+=1){let se=O.questions[le];if(!se||typeof se!="object")continue;let rt=String(se.key||se.id||"").trim()||`clarification_${le+1}`,We=String(se.query||se.question||"").trim();if(!We)continue;let ct=typeof se.required=="boolean",Ot=typeof se.optional=="boolean",ot=ct?!!se.required:Ot?!se.optional:!0;Q.has(rt)||(Q.add(rt),G.push({key:rt,query:We,...typeof se.id=="string"&&se.id.trim()?{id:se.id.trim()}:{},...typeof se.question=="string"&&se.question.trim()?{question:se.question.trim()}:{},...Array.isArray(se.choices)?{choices:se.choices}:{},required:ot}))}return G.slice(0,6)}function Ee(O){return O.map(G=>{let Q=Array.isArray(G.choices)?G.choices.map(se=>wt(String(se||""))).filter(Boolean).join("|"):"",le=G.required===!1?"optional":"required";return`${G.key}::${wt(G.query)}::${Q}::${le}`}).join("||")}function re(O){let G=wt(O.query||O.question||"");if(!G)return`Answer for ${O.key}`;let Q=G.replace(/\s+/g," ").replace(/[?.!:\s]+$/,"").slice(0,72);return Q?`Answer: ${Q}`:`Answer for ${O.key}`}function te(O){for(let G of Array.from(Xt.querySelectorAll(".questionPromptInput"))){let Q=G;if(Q.dataset.key===O)return Q}return null}function ue(O){let G=ie(O),Q=document.activeElement,le=Q instanceof HTMLInputElement&&Q.classList.contains("questionPromptInput")&&jt.contains(Q)?Q:null,se=le?.dataset.key,rt=le?.selectionStart??null,We=le?.selectionEnd??null;if(!G.length){b=null,g=null,v={},Yn.innerHTML="",jt.classList.remove("visible"),B();return}let ct=Ee(G),Ot=ct!==g||!b;if(b={questions:G},Ot){let ot=v;v={},Yn.innerHTML="";for(let yt of b.questions){let un=document.createElement("label");un.className="questionPromptItem";let dn=document.createElement("span");dn.className="questionPromptLabel",dn.textContent=yt.required===!1?`${yt.query} (optional)`:yt.query,un.appendChild(dn);let Bt=document.createElement("input");Bt.type="text",Bt.className="questionPromptInput",Bt.dataset.key=yt.key,Bt.placeholder=re(yt),Bt.required=yt.required!==!1;let vn=String(ot[yt.key]||"");v[yt.key]=vn,Bt.value=vn,Bt.addEventListener("input",()=>{v[yt.key]=Bt.value,Bt.classList.remove("invalid")}),un.appendChild(Bt),Yn.appendChild(un)}g=ct}if(jt.classList.add("visible"),ke(),B(),se){let ot=te(se);if(ot){if(ot.focus(),rt!==null||We!==null){let yt=rt??ot.value.length,un=We??yt;try{ot.setSelectionRange(yt,un)}catch{}}return}}if(Ot){let yt=b.questions.find(Bt=>!wt(v[Bt.key]||""))?.key||b.questions[0]?.key;if(!yt)return;let un=te(yt),dn=!Q||Q===document.body||!L.contains(Q);un&&dn&&un.focus()}}function Ae(){Kt&&w?(gt.classList.add("visible"),nt.appendChild(gt),Te()):gt.classList.remove("visible")}function De(O,G=0){u.dataset.mood=O,cn!=null&&(window.clearTimeout(cn),cn=null),G>0&&O!=="idle"&&(cn=window.setTimeout(()=>{u.dataset.mood="idle",Ae(),cn=null},G))}function ge(){return nt.scrollHeight-nt.scrollTop-nt.clientHeight<60}function Te(){Dn?bt.classList.add("visible"):(requestAnimationFrame(()=>{nt.scrollTo({top:nt.scrollHeight,behavior:"smooth"}),Qn=Date.now()}),bt.classList.remove("visible"))}nt.addEventListener("scroll",()=>{Date.now()-Qn<200||(ge()?(Dn=!1,bt.classList.remove("visible")):(Dn=!0,bt.classList.add("visible")))},{passive:!0}),bt.addEventListener("click",()=>{Dn=!1,Qn=Date.now(),nt.scrollTo({top:nt.scrollHeight,behavior:"smooth"}),bt.classList.remove("visible")});function ke(){let O=Do==="observer"&&!to;qe.disabled=O,bn.disabled=O,yn.disabled=O;for(let G of Array.from(Xt.querySelectorAll(".questionPromptInput")))G.disabled=O}function f(O){Qt=O,u.dataset.showDetails=O?"true":"false",zn.textContent=Qt?"Hide details":"Show details";for(let G of Lr){let Q=G.dataset.status,le=Q==="success"||Q==="error"||Q==="info";G.classList.toggle("compact",!Qt&&le)}}function I(){u.style.display="",L.classList.remove("closing"),L.classList.add("open"),z(),De("idle"),e.onOpen?.(),qe.disabled||qe.focus()}function S(){if(P(),!L.classList.contains("open")){e.onClose?.();return}L.classList.remove("open"),L.classList.add("closing"),De("idle");let O=()=>{L.classList.remove("closing"),L.removeEventListener("animationend",O)};L.addEventListener("animationend",O),e.onClose?.()}function R(){u.style.display=""}function A(){S(),u.style.display="none"}function q(O,G,Q){let le=wt(G),se=Q?.blocks;if(!le&&(!se||se.length===0))return;let rt=document.createElement("div");rt.className=`entry message ${O}`;let We=document.createElement("div");We.className="bubble",O==="assistant"?We.appendChild(Dh(le,se)):We.textContent=le;let ct=document.createElement("div");ct.className="stamp",ct.textContent=Uu(Date.now()),rt.appendChild(We),rt.appendChild(ct),nt.appendChild(rt),O==="assistant"&&Kt&&w&&(w=!1,Ae()),Kn=!0,B(),O==="user"?De("typing",1200):O==="assistant"?De("success",1400):De("running",900),Te()}function j(){for(let O of Array.from(nt.querySelectorAll(".entry.message")))O.remove();Kn=!1,ue(void 0),B()}function J(O){let G=Ye.get(O);if(G)return G;let Q=document.createElement("div");Q.className="entry trace pending";let le=document.createElement("div");le.className="traceTop";let se=document.createElement("div");se.className="traceMeta";let rt=document.createElement("span");rt.className="traceStage",rt.textContent="step";let We=document.createElement("div");We.className="traceTitle";let ct=document.createElement("div");ct.className="traceTs",se.appendChild(rt),se.appendChild(We),le.appendChild(se),le.appendChild(ct);let Ot=document.createElement("div");return Ot.className="traceDetail",Q.appendChild(le),Q.appendChild(Ot),Ye.set(O,Q),Lr.push(Q),nt.appendChild(Q),Q}function pe(O,G){let Q=Number(G.ts)||Date.now(),le=wh(G),se=O.querySelector(".traceTop"),We=se.querySelector(".traceMeta").querySelector(".traceStage"),ct=se.querySelector(".traceTitle"),Ot=se.querySelector(".traceTs"),ot=O.querySelector(".traceDetail"),yt=Fu(G.title||"");ct.textContent=yt.plainTitle||"Step",We.textContent=yt.stage||G.kind||"step",We.style.display=yt.stage||G.kind==="status"||G.kind==="plan"||G.kind==="thought"?"":"none",Ot.textContent=Uu(Q),ot.innerHTML="";let un=Array.isArray(G.detailBlocks)?G.detailBlocks:[],dn=wt(G.detail||"");if(un.length>0){for(let vn of un){let Lc=qu(vn);Lc&&ot.appendChild(Lc)}if(dn){let vn=document.createElement("div");vn.className="rvLine",vn.appendChild(br(dn)),ot.insertBefore(vn,ot.firstChild)}ot.style.display=""}else if(dn){let vn=G.kind==="thought"?150:G.kind==="tool_start"||G.kind==="tool_result"?100:280;dn.length>vn?ot.appendChild(vs(dn,vn)):ot.appendChild(br(dn)),ot.style.display=""}else ot.style.display="none";O.classList.remove("pending","success","error","info"),O.classList.add(le),O.dataset.status=le,O.dataset.kind=G.kind,O.dataset.visibility=Rh(G);let Bt=le==="success"||le==="error"||le==="info";O.classList.toggle("compact",!Qt&&Bt),le==="error"?De("error",2200):le==="success"?De("success",1200):le==="pending"&&De("running",800)}function Ne(O){let G=wt(O.title||"");if(!G||G.toLowerCase()==="assistant update")return;let Q=O.id||Bu("timeline");if(O.id&&Mr.has(Q))return;Mr.add(Q);let le=_h(O),se=le==="run"||le.startsWith("tool:")||O.kind==="tool_result"||O.kind==="status"&&Ye.has(le),rt=J(se?le:`${le}:${Q}`);pe(rt,{...O,title:G}),O.kind==="thought"&&Kt&&w&&(w=!1,Ae()),G.toLowerCase()==="run completed"&&f(!1),Te()}function Pe(){Mr.clear(),Ye.clear(),Lr.length=0;for(let O of Array.from(nt.querySelectorAll(".entry.trace")))O.remove()}function Oe(O){let G=!!O?.visible;zt.classList.toggle("visible",G),It.textContent=O?.text||"Looks like a new request. Start a new task?",pr.textContent=O?.primaryLabel||"Start new",Lo.textContent=O?.secondaryLabel||"Continue"}function Rt(O){let G=String(O||"ready");Ie.textContent=G;let Q=G.toLowerCase();Q.includes("error")||Q.includes("failed")?De("error",1800):Q==="ready"||Q.includes("complete")?De("idle"):De("running",1e3)}function ln(O){Kt=O,O?w=!0:w=!1,Ae(),Vt.classList.toggle("visible",O),Ze.style.display=O?"none":"",B()}function Jn(O,G){Do=O,to=O==="observer"?G?.canComposeInObserver===!0:!0,ke(),Ze.classList.remove("controller","observer"),Ze.classList.add(O),O==="controller"?(Ze.textContent="active",Nt.style.display="none",qe.placeholder=`Ask ${t} to act on this website...`):(Ze.textContent="observer",G?.canTakeControl!==!1?Nt.style.display="":Nt.style.display="none",G?.note?qe.placeholder=G.note:to?qe.placeholder="Send to take control and run here.":G?.activeLogicalTabId&&G?.localLogicalTabId&&G.activeLogicalTabId!==G.localLogicalTabId?qe.placeholder=`Observing: ${t} is acting in tab #${G.activeLogicalTabId}`:qe.placeholder="Observer mode. Take control to run actions here.")}function at(){cn!=null&&(window.clearTimeout(cn),cn=null),T&&(window.clearTimeout(T),T=null),x&&(window.clearTimeout(x),x=null),document.removeEventListener("keydown",Ge),c.remove(),i.remove()}d.addEventListener("click",()=>{L.classList.contains("open")?S():I()}),H.addEventListener("click",O=>{O.stopPropagation(),z()}),_.addEventListener("click",()=>{z(),I()}),Ve.addEventListener("click",()=>S()),_e.addEventListener("click",O=>{O.stopPropagation(),k()}),u.addEventListener("click",O=>{Ut&&!xt.contains(O.target)&&O.target!==_e&&P()}),He.addEventListener("click",()=>{P(),Kt&&e.onCancelRun?(Dt="new_task",Oe({visible:!0,text:"A task is in progress. Cancel it and start new?",primaryLabel:"Cancel & start new",secondaryLabel:"Keep running"})):e.onNewTask?.()}),Gt.addEventListener("click",()=>{P(),Kt&&e.onCancelRun?(Dt="end_task",Oe({visible:!0,text:"A task is in progress. Cancel and end it?",primaryLabel:"Cancel & end",secondaryLabel:"Keep running"})):e.onEndTask?.()}),zn.addEventListener("click",()=>{P(),f(!Qt)}),Nt.addEventListener("click",()=>{P(),e.onRequestControl?.()}),Vt.addEventListener("click",()=>{e.onCancelRun?.()}),pr.addEventListener("click",()=>{if(Dt){let O=Dt;Dt=null,Oe({visible:!1}),e.onCancelRun?.(),O==="new_task"?e.onNewTask?.():O==="end_task"&&e.onEndTask?.();return}e.onTaskSuggestionPrimary?.()}),Lo.addEventListener("click",()=>{if(Dt){Dt=null,Oe({visible:!1});return}e.onTaskSuggestionSecondary?.()}),qe.addEventListener("input",()=>{qe.style.height="auto",qe.style.height=`${Math.min(96,Math.max(44,qe.scrollHeight))}px`}),Xt.addEventListener("submit",O=>{if(O.preventDefault(),qe.disabled||!b?.questions?.length)return;let G={},Q=[],le=null;for(let We of b.questions){let ct=te(We.key);if(!ct)continue;let Ot=wt(ct.value),ot=We.required!==!1;if(!Ot&&ot){ct.classList.add("invalid"),le||(le=ct);continue}if(!Ot){ct.classList.remove("invalid"),delete v[We.key],Q.push(`${We.key}: (no answer provided)`);continue}ct.classList.remove("invalid"),v[We.key]=Ot,G[We.key]=Ot,Q.push(`${We.key}: ${Ot}`)}if(le){le.focus();return}let se=b.questions.map(We=>We.key),rt=Q.length?Q.join(`
|
|
1651
|
-
`):
|
|
1652
|
-
`);e.onSend(rt,{askUserAnswers:{answersByKey:G,rawText:rt,keys:se}})}),bn.addEventListener("click",()=>{if(!qe.disabled){if(e.onCancelQuestionFlow){e.onCancelQuestionFlow();return}e.onCancelRun?.()}}),qe.addEventListener("keydown",O=>{O.key==="Enter"&&!O.shiftKey&&!O.isComposing&&(O.preventDefault(),Yt.requestSubmit())}),Yt.addEventListener("submit",O=>{if(O.preventDefault(),qe.disabled)return;let G=wt(qe.value);G&&(Oe({visible:!1}),e.onSend(G),qe.value="",qe.style.height="44px")}),s.addEventListener("keydown",O=>{let G=O;G.key==="Escape"&&L.classList.contains("open")&&(G.stopPropagation(),S())});let Ge=O=>{O.code==="Period"&&O.shiftKey&&(O.metaKey||O.ctrlKey)&&(O.preventDefault(),O.stopPropagation(),L.classList.contains("open")?S():I())};document.addEventListener("keydown",Ge);let Be=null,On=O=>{if(!Be)return;let G=Be.startX-O.clientX,Q=O.clientY-Be.startY,le=Math.max(320,Math.min(window.innerWidth-16,Be.startW+G)),se=Math.max(460,Math.min(window.innerHeight-16,Be.startH+Q));L.style.width=`${le}px`,L.style.height=`${se}px`},Oo=()=>{Be=null,window.removeEventListener("pointermove",On),window.removeEventListener("pointerup",Oo)};if(Ln.addEventListener("pointerdown",O=>{window.matchMedia("(max-width: 640px)").matches||(O.preventDefault(),Be={startX:O.clientX,startY:O.clientY,startW:L.getBoundingClientRect().width,startH:L.getBoundingClientRect().height},window.addEventListener("pointermove",On),window.addEventListener("pointerup",Oo))}),E){let O=()=>{E.style.display="none",m.style.display="grid"};E.addEventListener("error",O,{once:!0}),m.style.display="none"}if(ae){let O=()=>{ae.style.display="none",ce.style.display="grid"};ae.addEventListener("error",O,{once:!0}),ce.style.display="none"}return Jn("controller"),f(!1),kt.length>0&&D(kt),{addMessage:q,setQuestionPrompt:ue,clearMessages:j,addTimelineEvent:Ne,clearTimeline:Pe,setTaskSuggestion:Oe,setStatus:Rt,setRunning:ln,setExecutionMode:Jn,setShortcuts:D,showGreeting:V,dismissGreeting:z,setVisitorName:Z,open:I,close:S,show:R,hide:A,destroy:at}}var Oh="rover:shared:",Ph="rover:channel:";function ne(){return Date.now()}function yr(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function Ts(e){let t=String(e||"").trim();if(!t)return"";try{return new URL(t,window.location.href).toString()}catch{return t}}function Vu(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)||ne(),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 Gu(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 ws(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=Gu(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 $u(e,t){if(!Array.isArray(e))return[];let n=[];for(let r of e.slice(-t)){let o=Gu(r);o!==void 0&&n.push(o)}return n}function zu(e){if(!e||typeof e!="object")return;let t=Array.isArray(e.pendingAskUser?.questions)?e.pendingAskUser.questions.map((u,d)=>{let h=String(u?.key||u?.id||"").trim()||`clarification_${d+1}`,E=String(u?.query||u?.question||"").trim();if(E)return{key:h,query:E,id:typeof u?.id=="string"?u.id:void 0,question:typeof u?.question=="string"?u.question:void 0,choices:Array.isArray(u?.choices)?u.choices:void 0}}).filter(u=>!!u).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=u=>u.slice(-80).map(d=>({role:typeof d?.role=="string"?d.role:"assistant",content:typeof d?.content=="string"?d.content:""})).filter(d=>!!d.content),i=Array.isArray(e.history)?o(e.history):[],s=$u(e.plannerHistory,40),c=$u(e.agentPrevSteps,80),a=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:a||void 0,history:i,plannerHistory:s,agentPrevSteps:c,pendingAskUser:t.length?{questions:t,source:e.pendingAskUser?.source==="planner"?"planner":"act",askedAt:Number(e.pendingAskUser?.askedAt)||ne(),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)||ne()}}function $a(e,t){return{version:2,siteId:e,sessionId:t,seq:1,updatedAt:ne(),lease:void 0,tabs:[],nextLogicalTabId:1,activeLogicalTabId:void 0,uiMessages:[],timeline:[],uiStatus:void 0,activeRun:void 0,taskEpoch:1,task:void 0,workerContext:void 0,workflowLock:void 0}}function bo(e,t,n){let r=$a(t,n);if(!e||typeof e!="object")return r;let o={...r,version:2,siteId:t,sessionId:n,seq:Math.max(1,Number(e.seq)||1),updatedAt:Number(e.updatedAt)||ne(),tabs:Array.isArray(e.tabs)?e.tabs.map(c=>({logicalTabId:Math.max(1,Number(c?.logicalTabId)||0),runtimeId:typeof c?.runtimeId=="string"?c.runtimeId:void 0,url:String(c?.url||""),title:typeof c?.title=="string"?c.title:void 0,openedAt:Number(c?.openedAt)||ne(),updatedAt:Number(c?.updatedAt)||ne(),external:!!c?.external,openerRuntimeId:typeof c?.openerRuntimeId=="string"?c.openerRuntimeId:void 0,detachedAt:Number(c?.detachedAt)||void 0,detachedReason:c?.detachedReason==="navigation_handoff"||c?.detachedReason==="tab_close"||c?.detachedReason==="opened_pending_attach"||c?.detachedReason==="unknown"?c.detachedReason:void 0,handoffId:typeof c?.handoffId=="string"?c.handoffId:void 0,handoffRunId:typeof c?.handoffRunId=="string"?c.handoffRunId:void 0,handoffTargetUrl:typeof c?.handoffTargetUrl=="string"?c.handoffTargetUrl:void 0,handoffCreatedAt:Number(c?.handoffCreatedAt)||void 0})).filter(c=>!!c.logicalTabId):[],nextLogicalTabId:Math.max(1,Number(e.nextLogicalTabId)||1),activeLogicalTabId:Number(e.activeLogicalTabId)||void 0,uiMessages:Array.isArray(e.uiMessages)?e.uiMessages.map(c=>({id:String(c?.id||yr("msg")),role:c?.role==="user"||c?.role==="assistant"||c?.role==="system"?c.role:"system",text:String(c?.text||""),blocks:ws(c?.blocks),ts:Number(c?.ts)||ne(),sourceRuntimeId:typeof c?.sourceRuntimeId=="string"?c.sourceRuntimeId:void 0})).filter(c=>!!c.text||!!c.blocks?.length):[],timeline:Array.isArray(e.timeline)?e.timeline.map(c=>({id:String(c?.id||yr("timeline")),kind:String(c?.kind||"status"),title:String(c?.title||"Step"),detail:typeof c?.detail=="string"?c.detail:void 0,detailBlocks:ws(c?.detailBlocks),status:c?.status==="pending"||c?.status==="success"||c?.status==="error"||c?.status==="info"?c.status:void 0,ts:Number(c?.ts)||ne(),sourceRuntimeId:typeof c?.sourceRuntimeId=="string"?c.sourceRuntimeId:void 0})).filter(c=>!!c.title):[],taskEpoch:Math.max(1,Number(e.taskEpoch)||1),task:Vu(e.task),workerContext:zu(e.workerContext),uiStatus:typeof e.uiStatus=="string"?e.uiStatus:void 0,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)||ne(),updatedAt:Number(e.activeRun.updatedAt)||ne()}: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)||ne()}: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)||ne(),expiresAt:Number(e.workflowLock.expiresAt)||0}:void 0},i=o.tabs.length,s=new Set;return o.tabs=o.tabs.filter(c=>s.has(c.logicalTabId)?!1:(s.add(c.logicalTabId),!0)),o.nextLogicalTabId<=(o.tabs.at(-1)?.logicalTabId??0)&&(o.nextLogicalTabId=o.tabs.reduce((c,a)=>Math.max(c,a.logicalTabId),0)+1),i>0&&o.tabs.length<i&&console.warn(`[rover] sanitizeSharedState: dropped ${i-o.tabs.length} invalid/duplicate tab entries`),o}var xs=class xs{constructor(t){$(this,"siteId");$(this,"sessionId");$(this,"runtimeId");$(this,"leaseMs");$(this,"heartbeatMs");$(this,"maxMessages");$(this,"maxTimeline");$(this,"onRoleChange");$(this,"onStateChange");$(this,"onSwitchRequested");$(this,"key");$(this,"channelName");$(this,"state");$(this,"channel",null);$(this,"heartbeatTimer",null);$(this,"storageHandler",null);$(this,"localLogicalTabId");$(this,"closing",!1);$(this,"started",!1);$(this,"pendingRpcRequests",new Map);$(this,"rpcRequestHandler");$(this,"lastNotifiedRole");$(this,"roleChangeTimer",null);this.siteId=t.siteId,this.sessionId=t.sessionId,this.runtimeId=t.runtimeId,this.leaseMs=Math.max(4e3,Number(t.leaseMs)||12e3),this.heartbeatMs=Math.max(800,Number(t.heartbeatMs)||2e3),this.maxMessages=Math.max(40,Number(t.maxMessages)||220),this.maxTimeline=Math.max(40,Number(t.maxTimeline)||280),this.onRoleChange=t.onRoleChange,this.onStateChange=t.onStateChange,this.onSwitchRequested=t.onSwitchRequested,this.key=`${Oh}${this.siteId}:${this.sessionId}`,this.channelName=`${Ph}${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)<=45e3:!1}isTabVisibleInScope(t,n,r){return t.runtimeId?this.isRuntimeTabFresh(t,n):t.external?n-this.tabFreshnessTs(t)<=12e4:t.detachedReason==="opened_pending_attach"?n-this.tabFreshnessTs(t)<=2e4:r==="context"?!1:t.detachedReason==="navigation_handoff"?n-this.tabFreshnessTs(t)<=45e3:n-this.tabFreshnessTs(t)<=9e4}normalizeDraftTabs(t){let n=new Map;for(let m of t.tabs){if(!Number.isFinite(Number(m.logicalTabId))||Number(m.logicalTabId)<=0)continue;let y=n.get(m.logicalTabId);this.isBetterTabCandidate(m,y)&&n.set(m.logicalTabId,m)}let r=[],o=new Set;for(let m of t.tabs){if(o.has(m.logicalTabId))continue;let y=n.get(m.logicalTabId);y&&y===m&&(r.push(y),o.add(y.logicalTabId))}for(let[m,y]of n.entries())o.has(m)||(r.push(y),o.add(m));let i=new Map;for(let m of r){if(!m.runtimeId)continue;let y=i.get(m.runtimeId);this.isBetterTabCandidate(m,y)&&i.set(m.runtimeId,m)}if(t.tabs=r.filter(m=>!m.runtimeId||i.get(m.runtimeId)===m).sort((m,y)=>m.logicalTabId-y.logicalTabId),!t.tabs.length){t.activeLogicalTabId=void 0,t.nextLogicalTabId=1;return}let s=ne(),c=t.activeLogicalTabId?t.tabs.find(m=>m.logicalTabId===t.activeLogicalTabId):void 0,a=t.tabs.find(m=>m.runtimeId===this.runtimeId),d=[...t.tabs.filter(m=>this.isRuntimeTabFresh(m,s))].sort((m,y)=>this.tabFreshnessTs(y)-this.tabFreshnessTs(m))[0],h=c?.logicalTabId;c?(!c.runtimeId||!this.isRuntimeTabFresh(c,s))&&(h=a?.logicalTabId||d?.logicalTabId||c.logicalTabId):h=a?.logicalTabId||d?.logicalTabId||t.tabs[0]?.logicalTabId,t.activeLogicalTabId=h;let E=t.tabs.reduce((m,y)=>Math.max(m,y.logicalTabId),0);t.nextLogicalTabId=Math.max(Number(t.nextLogicalTabId)||1,E+1)}pruneDetachedTabs(t,n){let r=!!n?.dropRuntimeDetached,o=!!n?.dropAllDetachedExternal,i=!!n?.keepOnlyActiveLiveTab,s=!!n?.keepRecentExternalPlaceholders,c=ne();if(t.tabs=t.tabs.filter(a=>{if(a.runtimeId)return this.isRuntimeTabFresh(a,c);if(r&&!a.external&&a.openerRuntimeId===this.runtimeId)return!1;if(a.external)return o?!1:c-this.tabFreshnessTs(a)<=12e4;let u=c-this.tabFreshnessTs(a);return a.detachedReason==="navigation_handoff"?u<=45e3:a.detachedReason==="opened_pending_attach"?u<=2e4:u<=9e4}),i){this.normalizeDraftTabs(t);let a=t.tabs.filter(m=>this.isRuntimeTabFresh(m,c)),u=a.find(m=>m.logicalTabId===t.activeLogicalTabId),d=a.find(m=>m.runtimeId===this.runtimeId),h=[...a].sort((m,y)=>this.tabFreshnessTs(y)-this.tabFreshnessTs(m))[0],E=u?.logicalTabId||d?.logicalTabId||h?.logicalTabId;t.tabs=t.tabs.filter(m=>m.runtimeId?!!E&&m.logicalTabId===E:m.external?s&&c-this.tabFreshnessTs(m)<=12e4:!1),t.activeLogicalTabId=E||t.tabs.find(m=>m.runtimeId)?.logicalTabId||t.tabs[0]?.logicalTabId}this.normalizeDraftTabs(t)}resetDraftToSingleCurrentTab(t,n,r){let o=ne(),i=Ts(n),s=t.tabs.find(a=>a.runtimeId===this.runtimeId),c=Number(s?.openedAt)||o;t.tabs=[{logicalTabId:1,runtimeId:this.runtimeId,url:i||s?.url||"",title:r||s?.title,openedAt:c,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=bo(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)}}),this.storageHandler=n=>{if(!(n.key!==this.key||!n.newValue))try{let r=bo(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),this.notifyRoleChange(),this.onStateChange?.(this.state,"local"))}stop(){if(this.started){this.started=!1,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(),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<=ne()?!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=Vu(t)||r.task)})}hydrateExternalState(t){let n=bo(t,this.siteId,this.sessionId);this.pruneDetachedTabs(n,{dropRuntimeDetached:!0});let r=this.state.seq,o=this.state.updatedAt;this.applyIncomingState(n);let i=this.state.seq!==r||this.state.updatedAt!==o;if(!i&&this.state.tabs.some(c=>c.runtimeId?!1:c.external?!0:c.openerRuntimeId===this.runtimeId)){let c=this.state.tabs.length;this.mutate("local",a=>{this.pruneDetachedTabs(a,{dropRuntimeDetached:!0})}),i=this.state.tabs.length!==c}return i?(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=ne();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)||ne(),r={taskId:String(t.taskId||yr("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.activeRun=void 0,o.workerContext=void 0,this.resetDraftToSingleCurrentTab(o,window.location.href,document.title||void 0)}),r}endTask(t){let n;return this.mutate("local",r=>{r.task&&(r.task={...r.task,status:"ended",boundaryReason:t||r.task.boundaryReason,endedAt:ne()},r.activeRun=void 0,n=r.task)}),n}markTaskActivity(t,n=ne()){t!=="system"&&this.mutate("local",r=>{if(!r.task){r.task={taskId:yr("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))})}setWorkerContext(t){this.mutate("local",n=>{if(!t){n.workerContext=void 0;return}n.workerContext=zu(t)})}setStatus(t){this.mutate("local",n=>{n.uiStatus=t||void 0})}appendMessage(t){let n={id:t.id||yr("msg"),role:t.role,text:String(t.text||""),blocks:ws(t.blocks),ts:Number(t.ts)||ne(),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:yr("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}appendTimeline(t){let n={id:t.id||yr("timeline"),kind:String(t.kind||"status"),title:String(t.title||"Step"),detail:t.detail?String(t.detail):void 0,detailBlocks:ws(t.detailBlocks),status:t.status,ts:Number(t.ts)||ne(),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}clearTimeline(){this.mutate("local",t=>{t.timeline=[]})}setActiveRun(t){this.mutate("local",n=>{if(!t){n.activeRun=void 0;return}if(n.task&&n.task.status!=="running"){n.activeRun=void 0;return}n.activeRun={runId:t.runId,text:t.text,runtimeId:this.runtimeId,startedAt:n.activeRun?.runId===t.runId?n.activeRun.startedAt:ne(),updatedAt:ne()}})}requestControl(){return this.claimLease(!0)}registerCurrentTab(t,n,r){let o=Ts(t),i=typeof r?.handoffId=="string"?r.handoffId.trim():"",s=Number(r?.sourceLogicalTabId),c;return this.mutate("local",a=>{let u=ne(),h=!!(a.lease&&a.lease.expiresAt>u)?a.lease?.holderRuntimeId:void 0,E=!h||h===this.runtimeId,m=a.tabs.find(_=>_.runtimeId===this.runtimeId);if(m)m.url=o||m.url,m.title=n||m.title,m.updatedAt=u,m.detachedAt=void 0,m.detachedReason=void 0,m.handoffId=void 0,m.handoffRunId=void 0,m.handoffTargetUrl=void 0,m.handoffCreatedAt=void 0,c=m.logicalTabId;else{let _;if(i&&(_=a.tabs.find(N=>{if(N.runtimeId||String(N.handoffId||"").trim()!==i||Number.isFinite(s)&&s>0&&N.logicalTabId!==s)return!1;let H=u-Number(N.handoffCreatedAt||N.updatedAt||N.openedAt||0);return H>=0&&H<=3e4})),_||(_=a.tabs.find(N=>!N.runtimeId&&!N.external&&N.url===o&&u-N.openedAt<18e4)),_)_.runtimeId=this.runtimeId,_.url=o||_.url,_.title=n||_.title,_.updatedAt=u,_.detachedAt=void 0,_.detachedReason=void 0,_.handoffId=void 0,_.handoffRunId=void 0,_.handoffTargetUrl=void 0,_.handoffCreatedAt=void 0,c=_.logicalTabId;else{let N=a.nextLogicalTabId++;a.tabs.push({logicalTabId:N,runtimeId:this.runtimeId,url:o,title:n,openedAt:u,updatedAt:u,external:!1,detachedAt:void 0,detachedReason:void 0}),c=N}}c&&(a.tabs=a.tabs.filter(_=>{if(_.logicalTabId===c||_.runtimeId||_.external)return!0;if(i&&String(_.handoffId||"").trim()===i)return!1;let N=u-this.tabFreshnessTs(_);return!(!String(_.url||"").trim()&&N>2e4||o&&_.url===o&&N<=45e3)}));let y=a.activeLogicalTabId?a.tabs.find(_=>_.logicalTabId===a.activeLogicalTabId):void 0;(!y||!y.runtimeId||y.logicalTabId===c||E)&&(a.activeLogicalTabId=c)}),this.notifyRoleChange(),this.localLogicalTabId||c||1}registerOpenedTab(t){let n=Ts(t.url),r=0;return this.mutate("local",o=>{let i=ne(),s=o.tabs.find(c=>!c.runtimeId&&!!c.external==!!t.external&&c.url===n);if(s){s.title=t.title||s.title,s.updatedAt=i,s.openerRuntimeId=t.openerRuntimeId||s.openerRuntimeId,s.detachedAt=s.detachedAt||i,s.detachedReason="opened_pending_attach",r=s.logicalTabId;return}r=o.nextLogicalTabId++,o.tabs.push({logicalTabId:r,runtimeId:void 0,url:n,title:t.title,openedAt:i,updatedAt:i,external:!!t.external,openerRuntimeId:t.openerRuntimeId,detachedAt:i,detachedReason:"opened_pending_attach"})}),{logicalTabId:r}}switchToLogicalTab(t){let n={ok:!1,reason:"Unknown tab"};return this.mutate("local",r=>{let o=r.tabs.find(i=>i.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:ne()+this.leaseMs,updatedAt:ne()},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:ne()+this.leaseMs,updatedAt:ne()},n={ok:!0,delegated:!1}}),this.notifyRoleChange(),n}sendCrossTabRpc(t,n,r,o=15e3){return new Promise((i,s)=>{if(!this.channel){s(new Error("BroadcastChannel not available"));return}let c=yr("rpc"),a=window.setTimeout(()=>{this.pendingRpcRequests.delete(c),s(new Error(`Cross-tab RPC timed out after ${o}ms (method=${n}, target=${t})`))},o);this.pendingRpcRequests.set(c,{resolve:i,reject:s,timer:a}),this.channel.postMessage({type:"rpc_request",requestId:c,sourceRuntimeId:this.runtimeId,targetRuntimeId:t,method:n,params:r,timeoutMs:o,createdAt:ne()})})}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=ne(),o=n.tabs.find(i=>i.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>ne()-2*this.heartbeatMs:!1}acquireWorkflowLock(t){let n=!1;return this.mutate("local",r=>{let o=r.workflowLock;if(o&&o.runtimeId!==this.runtimeId&&o.expiresAt>ne()){let i=r.tabs.find(c=>c.runtimeId===o.runtimeId);if(i&&i.updatedAt>ne()-2*this.heartbeatMs){n=!1;return}}r.workflowLock={runtimeId:this.runtimeId,runId:t,lockedAt:ne(),expiresAt:ne()+this.leaseMs*5},n=!0}),n}clearActiveRunRuntimeId(t){this.mutate("local",n=>{n.activeRun&&n.activeRun.runId===t&&(n.activeRun.runtimeId="")})}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>ne()}getWorkflowLockInfo(){let t=this.state.workflowLock;return!t||t.expiresAt<=ne()?{locked:!1}:{locked:!0,holderRuntimeId:t.runtimeId,runId:t.runId}}async handleInboundRpcRequest(t){let{requestId:n,sourceRuntimeId:r,method:o,params:i}=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 s=await this.rpcRequestHandler({method:o,params:i});this.channel?.postMessage({type:"rpc_response",requestId:n,sourceRuntimeId:this.runtimeId,targetRuntimeId:r,ok:!0,result:s})}catch(s){this.channel?.postMessage({type:"rpc_response",requestId:n,sourceRuntimeId:this.runtimeId,targetRuntimeId:r,ok:!1,error:{message:s?.message||String(s)}})}}handleInboundRpcResponse(t){let{requestId:n,ok:r,result:o,error:i}=t,s=this.pendingRpcRequests.get(n);s&&(this.pendingRpcRequests.delete(n),window.clearTimeout(s.timer),r?s.resolve(o):s.reject(new Error(i?.message||"Cross-tab RPC failed")))}handleRemoteNavigation(t){let{runtimeId:n,url:r,title:o}=t;this.mutate("local",i=>{let s=i.tabs.find(c=>c.runtimeId===n);s&&(s.url=r||s.url,s.title=o||s.title,s.updatedAt=ne())})}handleRemoteTabClosing(t){let{runtimeId:n}=t,r=t?.handoff,o=typeof r?.handoffId=="string"&&r.handoffId.trim()?r.handoffId.trim():void 0,i=typeof r?.runId=="string"&&r.runId.trim()?r.runId.trim():void 0,s=typeof r?.targetUrl=="string"&&r.targetUrl.trim()?r.targetUrl.trim():void 0,c=Number(r?.ts)||ne();this.mutate("local",a=>{let u=ne(),d=a.tabs.find(h=>h.runtimeId===n);d&&(d.runtimeId=void 0,d.updatedAt=u,d.detachedAt=u,d.detachedReason=o?"navigation_handoff":"tab_close",d.handoffId=o,d.handoffRunId=i,d.handoffTargetUrl=s,d.handoffCreatedAt=c),a.lease?.holderRuntimeId===n&&(a.lease=void 0),a.workflowLock?.runtimeId===n&&(a.workflowLock=void 0),a.activeRun?.runtimeId===n&&(a.activeRun=void 0),a.activeLogicalTabId&&!a.tabs.some(h=>h.logicalTabId===a.activeLogicalTabId)&&(a.activeLogicalTabId=this.localLogicalTabId||a.tabs[0]?.logicalTabId)}),this.notifyRoleChange()}heartbeat(){if(this.closing)return;let t=Ts(window.location.href),n=document.title||void 0;this.mutate("local",r=>{let o=r.tabs.find(N=>N.runtimeId===this.runtimeId);if(o)o.url=t||o.url,o.title=n||o.title,o.updatedAt=ne(),o.detachedAt=void 0,o.detachedReason=void 0;else{let N=ne(),H=r.nextLogicalTabId++;r.tabs.push({logicalTabId:H,runtimeId:this.runtimeId,url:t,title:n,openedAt:N,updatedAt:N,external:!1,detachedAt:void 0,detachedReason:void 0})}let i=r.lease,s=!i||i.expiresAt<=ne(),c=i&&i.holderRuntimeId!==this.runtimeId&&i.expiresAt>ne()?i.holderRuntimeId:void 0,a=c?r.tabs.find(N=>N.runtimeId===c):void 0,u=!!(a&&a.updatedAt>ne()-2*this.heartbeatMs),d=r.workflowLock?.runtimeId,h=d?r.tabs.find(N=>N.runtimeId===d):void 0,E=!!(h&&h.runtimeId&&h.runtimeId!==this.runtimeId&&h.updatedAt>ne()-2*this.heartbeatMs);if(r.workflowLock&&r.workflowLock.runtimeId!==this.runtimeId&&(r.workflowLock.expiresAt<=ne()||!E)&&(r.workflowLock=void 0),r.activeRun?.runtimeId&&r.activeRun.runtimeId!==this.runtimeId){let N=r.tabs.find(C=>C.runtimeId===r.activeRun?.runtimeId);N&&N.updatedAt>ne()-2*this.heartbeatMs||(r.activeRun=void 0)}let m=!!(r.activeRun?.runtimeId&&r.activeRun.runtimeId!==this.runtimeId),y=!!(r.workflowLock&&r.workflowLock.runtimeId!==this.runtimeId&&r.workflowLock.expiresAt>ne()),_=!!(c&&!u&&!m&&!y);(s||i?.holderRuntimeId===this.runtimeId||_)&&(r.lease={holderRuntimeId:this.runtimeId,expiresAt:ne()+this.leaseMs,updatedAt:ne()},!r.activeLogicalTabId&&this.localLogicalTabId&&(r.activeLogicalTabId=this.localLogicalTabId)),r.workflowLock?.runtimeId===this.runtimeId&&(r.workflowLock.expiresAt=ne()+this.leaseMs*5),this.pruneDetachedTabs(r)}),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,i=!o||o.expiresAt<=ne();(t||i||o?.holderRuntimeId===this.runtimeId)&&(r.lease={holderRuntimeId:this.runtimeId,expiresAt:ne()+this.leaseMs,updatedAt:ne()},!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}))},xs.ROLE_CHANGE_DEBOUNCE_MS))}syncLocalLogicalTabId(){let t=this.state.tabs.find(n=>n.runtimeId===this.runtimeId);this.localLogicalTabId=t?.logicalTabId}mutate(t,n){if(t==="local")try{let o=window.localStorage.getItem(this.key);if(o){let i=bo(JSON.parse(o),this.siteId,this.sessionId);(i.seq>this.state.seq||i.seq===this.state.seq&&i.updatedAt>this.state.updatedAt)&&(this.state=i)}}catch{}let r=bo(this.state,this.siteId,this.sessionId);n(r),this.normalizeDraftTabs(r),r.seq=Math.max(1,Number(r.seq)||1)+(t==="local"?1:0),r.updatedAt=ne(),this.state=r,this.syncLocalLogicalTabId(),t==="local"&&(this.persistState(),this.channel&&this.channel.postMessage({type:"state",sourceRuntimeId:this.runtimeId,state:this.state})),this.onStateChange?.(this.state,t)}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 $a(this.siteId,this.sessionId);let n=JSON.parse(t);return bo(n,this.siteId,this.sessionId)}catch(t){return console.warn("[rover] Failed to load shared state from localStorage:",t),$a(this.siteId,this.sessionId)}}persistState(){try{window.localStorage.setItem(this.key,JSON.stringify(this.state))}catch{}}};$(xs,"ROLE_CHANGE_DEBOUNCE_MS",200);var _s=xs;var Yu="https://extensionrouter.rtrvr.ai",ju="rvrsess_";function vo(e,t){let n=Number(e);return Number.isFinite(n)?n:t}function Uh(e,t=8e3){let n=String(e??"");return n.length<=t?n:`${n.slice(0,t)}\u2026`}function Bh(e){let t=Number(e.sharedState?.seq||0),n=Array.isArray(e.sharedState?.uiMessages)?e.sharedState.uiMessages.length:0,r=Number(e.runtimeState?.updatedAt||0),o=Array.isArray(e.runtimeState?.uiMessages)?e.runtimeState.uiMessages.length:0;return[e.sessionId,vo(e.updatedAt,0),t,n,r,o].join(":")}function Fh(e){let t=Yu,n=String(e||t).trim().replace(/\/+$/,"");return n?n.endsWith("/extensionRouter/v1/rover")?n.slice(0,-25):n.endsWith("/v1/rover")?n.slice(0,-9):n.endsWith("/extensionRouter")?n.slice(0,-16):n:t}function Xu(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 Hh(e){let t=Fh(e),n=String(e||"").trim().replace(/\/+$/,"");return n.endsWith("/v1/rover")||n.endsWith("/extensionRouter/v1/rover")?Xu([n.replace("/extensionRouter/v1/rover","/v1/rover"),`${t}/v1/rover`]):Xu([`${t}/v1/rover`])}function yo(e,t){let n=new Error(e);return n.details=t,n}function qh(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}var Is=class{constructor(t){$(this,"endpoint");$(this,"endpointCandidates");$(this,"endpointIndex",0);$(this,"getToken");$(this,"siteId");$(this,"visitorId");$(this,"ttlHours");$(this,"flushIntervalMs");$(this,"pullIntervalMs");$(this,"minFlushIntervalMs");$(this,"shouldWrite");$(this,"buildCheckpoint");$(this,"onCheckpoint");$(this,"onStateChange");$(this,"onError");$(this,"started",!1);$(this,"dirty",!1);$(this,"flushTimer",null);$(this,"pullTimer",null);$(this,"lastFlushAt",0);$(this,"lastPullAt",0);$(this,"lastUploadedRevision","");$(this,"lastAppliedRemoteUpdatedAt",0);$(this,"pushInFlight",!1);$(this,"pullInFlight",!1);$(this,"state","active");let n=String(t.authToken||"").trim(),r=t.getSessionToken,o=r?String(r()||"").trim():n;if(!o||!o.startsWith(ju))throw yo("Rover cloud checkpoint requires a session token (rvrsess_...).");this.endpointCandidates=Hh(t.apiBase),this.endpoint=this.endpointCandidates[0]||`${Yu}/v1/rover`,this.getToken=()=>{let i=r?String(r()||"").trim():n;if(!i||!i.startsWith(ju))throw yo("Rover cloud checkpoint requires an active session token.");return i},this.siteId=t.siteId,this.visitorId=t.visitorId,this.ttlHours=Math.max(1,Math.min(168,Math.floor(vo(t.ttlHours,1)))),this.flushIntervalMs=Math.max(2e3,Math.floor(vo(t.flushIntervalMs,8e3))),this.pullIntervalMs=Math.max(2e3,Math.floor(vo(t.pullIntervalMs,9e3))),this.minFlushIntervalMs=Math.max(1e3,Math.floor(vo(t.minFlushIntervalMs,2500))),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"),this.flushTimer=window.setInterval(()=>{this.flush(!1)},this.flushIntervalMs),this.pullTimer=window.setInterval(()=>{this.pull(!1)},this.pullIntervalMs),this.pull(!0))}stop(){this.started&&(this.started=!1,this.flushTimer!=null&&(window.clearInterval(this.flushTimer),this.flushTimer=null),this.pullTimer!=null&&(window.clearInterval(this.pullTimer),this.pullTimer=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)}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 i=0;i<r;i+=1){let s=(this.endpointIndex+i)%r,c=this.endpointCandidates[s]||this.endpoint;try{let a=await fetch(`${c}${t}`,n),u=await a.json().catch(()=>{});if(a.status===404||a.status===405){o=yo(`Checkpoint endpoint unavailable at ${c}${t}`,{status:a.status,payload:u});continue}return this.endpointIndex=s,this.endpoint=c,{response:a,payload:u}}catch(a){o=a}}throw o instanceof Error?o:yo(`Checkpoint request failed for ${t}`)}async flush(t){if(this.pushInFlight||this.state==="paused_auth"||!this.dirty&&!t||!this.shouldWrite()||!t&&Date.now()-this.lastFlushAt<this.minFlushIntervalMs)return;let n=this.buildCheckpoint();if(!n)return;let r=Bh(n);if(!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&&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(vo(t?.updatedAt,0)));r<=this.lastAppliedRemoteUpdatedAt||(this.lastAppliedRemoteUpdatedAt=r,this.onCheckpoint(t,n))}async callCheckpointApi(t,n){return this.callRoverV1(t,n)}async callRoverV1(t,n){let r=this.getToken();if(t==="session_snapshot_upsert"){let a=JSON.stringify({requestNonce:qh(),sessionToken:r,sessionId:n?.sessionId,visitorId:n?.visitorId,ttlHours:n?.ttlHours,updatedAt:n?.updatedAt,version:n?.checkpoint?.version||n?.version||1,checkpoint:n?.checkpoint}),u=a.length<6e4,{response:d,payload:h}=await this.requestJson("/session/snapshot",{method:"POST",headers:{"Content-Type":"application/json"},keepalive:u,body:a});if(!d.ok||!h?.success)throw yo(`Checkpoint HTTP ${d.status}`,{action:t,status:d.status,payload:h});return{saved:!!h?.data?.saved,stale:h?.data?.stale===!0,checkpoint:h?.data?.checkpoint,updatedAt:Number(h?.data?.updatedAt)||void 0}}let o=new URLSearchParams({sessionId:String(n?.sessionId||""),sessionToken:r}),{response:i,payload:s}=await this.requestJson(`/session/projection?${o.toString()}`,{method:"GET",headers:{"Content-Type":"application/json"}});if(!i.ok||!s?.success)throw yo(`Checkpoint HTTP ${i.status}`,{action:t,status:i.status,payload:s});let c=s?.data?.snapshot;return{found:!!c,checkpoint:c}}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,i=o?.errorCode||o?.errorDetails?.code||o?.error?.code||o?.code,s=o?.error||o?.errorDetails?.message||o?.error?.message||n?.message||"Checkpoint request failed",c=Number(r?.status);return{code:typeof i=="string"?i:void 0,message:Uh(s,1e3),status:Number.isFinite(c)?c: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 Wh="rover-runtime-state-db",ks="runtime-state",Va=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{}}},Ga=class{constructor(){$(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(Wh,1);r.onupgradeneeded=()=>{let o=r.result;o.objectStoreNames.contains(ks)||o.createObjectStore(ks)},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,i)=>{let s=r.transaction(ks,t),c=s.objectStore(ks);n(c,o,i),s.onerror=()=>{i(s.error||new Error("indexedDB transaction failed"))}})}async read(t){try{return await this.withStore("readonly",(n,r,o)=>{let i=n.get(t);i.onsuccess=()=>{let s=i.result;r(s??null)},i.onerror=()=>{o(i.error||new Error("indexedDB read failed"))}})}catch{return null}}async write(t,n){await this.withStore("readwrite",(r,o,i)=>{let s=r.put(n,t);s.onsuccess=()=>o(),s.onerror=()=>{i(s.error||new Error("indexedDB write failed"))}}).catch(()=>{})}async remove(t){await this.withStore("readwrite",(n,r,o)=>{let i=n.delete(t);i.onsuccess=()=>r(),i.onerror=()=>{o(i.error||new Error("indexedDB delete failed"))}}).catch(()=>{})}};function Ku(){let e=new Va,t=new Ga;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 $h="rover_xdr_";var Vh=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 Ju(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&&Vh.has(r)?`${n[n.length-3]}.${r}`:r}function za(e){return`${$h}${e.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,40)}`}function Rs(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 Qu(e){let t=String(e||"").trim();return!t||t==="/"?"/":t.replace(/\/+$/,"")||"/"}function Gh(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 i=t.getAll(r);if(!i.length)return!1;let s=new Map;for(let c of i)s.set(c,(s.get(c)||0)+1);for(let c of o){let a=s.get(c)||0;if(a<=0)return!1;s.set(c,a-1)}}return!0}function zh(e,t){let n=Rs(e),r=Rs(t);if(!n||!r)return!1;try{let o=new URL(n,window.location.href),i=new URL(r,window.location.href);return o.origin.toLowerCase()!==i.origin.toLowerCase()||Qu(o.pathname)!==Qu(i.pathname)?!1:Gh(o.searchParams,i.searchParams)}catch{return n===r}}function Zu(e,t){try{let n=za(e),r=Ju(window.location.hostname),o=encodeURIComponent(JSON.stringify(t)),i=window.location.protocol==="https:",s=[`${n}=${o}`,"path=/","max-age=120","SameSite=Lax"];r&&r!=="localhost"&&!/^\d+\.\d+\.\d+\.\d+$/.test(r)&&s.push(`domain=.${r}`),i&&s.push("Secure"),document.cookie=s.join("; ")}catch{}}function ja(e,t){try{let n=za(e),r=document.cookie.split(";"),o=Math.max(1e3,Number(t?.maxAgeMs)||120*1e3),i=Rs(t?.currentUrl||window.location.href),s=String(t?.currentHost||window.location.hostname||"").trim().toLowerCase(),c=String(t?.expectedHandoffId||"").trim(),a=t?.requireTargetMatch!==!1;for(let u of r){let[d,...h]=u.trim().split("=");if(d===n){let E=h.join("="),m=JSON.parse(decodeURIComponent(E));if(!m.timestamp||Date.now()-m.timestamp>=o)continue;let y=String(m.handoffId||m.handoff?.handoffId||"").trim();if(!y||c&&y!==c)continue;if(a){let _=Rs(m.targetUrl||m.handoff?.targetUrl||"");if(!_||!i||!zh(_,i))continue}if(m.sourceHost){let _=String(m.sourceHost||"").trim().toLowerCase();if(_&&s&&_===s)continue}if(m.sessionId&&typeof m.sessionId=="string")return m}}}catch{}return null}function ei(e){try{let t=za(e),n=Ju(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 Ue(e){return String(e||"").trim()||void 0}function jh(e){let t=Ue(e.incomingBoundaryId),n=Ue(e.currentBoundaryId);return!t||t===n?!1:n?e.taskEpochAdvanced===!0&&e.hasPendingRun!==!0:e.allowBootstrapAdoption!==!1}function ed(e){let t=Ue(e.incomingBoundaryId),n=Ue(e.currentBoundaryId);return t&&n&&t===n?{accept:!0,reason:"match"}:t?jh(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 Ss(e){return e==="running"}function td(e){return!(e.taskStatus!=="running"||!e.activeRunId||!e.activeRunText||e.hasPendingRun||e.ignoredRunIds?.has(e.activeRunId))}function Xa(e){return!!(e.localTaskStatus!=="running"||e.remoteTaskStatus&&e.remoteTaskStatus!=="running"||e.mode==="observer"&&!e.hasRemoteActiveRun)}function nd(e){let{type:t,messageRunId:n,messageTaskBoundaryId:r,currentTaskBoundaryId:o,pendingRunId:i,sharedActiveRunId:s,authoritativeActiveRunId:c,taskStatus:a,ignoredRunIds:u}=e,d=Ue(o),h=Ue(r),E=t==="run_state_transition"||t==="run_completed";if((t==="run_started"||t==="run_resumed"||E)&&d&&(!h||h!==d)&&!(E&&!!n&&!!i&&n===i&&a==="running"))return!0;if(!n&&t!=="run_started"&&t!=="run_resumed")return!1;if(n&&u?.has(n))return!0;let y=c||s;return t==="run_started"||t==="run_resumed"?!n||y&&y===n?!1:i?i!==n&&(!y||y!==n):!0:n?t==="run_completed"||t==="run_state_transition"?a!=="running"?!0:i?i!==n&&(!y||y!==n):!(y&&y===n):i?i!==n:!0:!1}function Xh(e){return Math.max(1,Number(e)||1)}function Yh(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 Ya(e){return e==="completed"||e==="cancelled"||e==="failed"||e==="ended"}function rd(e,t,n){let r=Number(t.at)||Date.now(),o=String(t.reason||"kernel").trim()||"kernel",i=Xh(e.taskEpoch),s=e.task||n.createTask(o,r,t.taskId);if(t.type==="new_task")return{task:n.createTask(o,r,t.taskId),taskEpoch:i+1,lifecycle:"running",rotateBoundary:!0,clearPendingRun:!0,clearWorkerState:!0};if(t.type==="terminal"){let u=t.terminal;return{task:{...s,status:u,boundaryReason:o,endedAt:r},taskEpoch:i,lifecycle:"terminal",rotateBoundary:!1,clearPendingRun:!0,clearWorkerState:!0}}let a={...s,status:"running",boundaryReason:o,endedAt:void 0};return!a.lastUserAt&&!a.lastAssistantAt&&(a.lastAssistantAt=r),{task:a,taskEpoch:i,lifecycle:t.type==="awaiting_user"?"awaiting_user":Yh(a),rotateBoundary:!1,clearPendingRun:!1,clearWorkerState:!1}}function Kh(e,t){let n=Number(e);return Number.isFinite(n)?n:t}function sd(e){let t="https://extensionrouter.rtrvr.ai",n=String(e||t).trim().replace(/\/+$/,"");return n?n.endsWith("/extensionRouter/v1/rover")?n.slice(0,-25):n.endsWith("/extensionRouter")?n.slice(0,-16):n.endsWith("/v1/rover")?n.slice(0,-9):n:t}function od(e){let t=new Set,n=[];for(let r of e){let o=ri(r);!o||t.has(o)||(t.add(o),n.push(o))}return n}function Eo(e){let n=`${sd(e)}/v1/rover`,r=ri(String(e||"").trim());return r.endsWith("/v1/rover")||r.endsWith("/extensionRouter/v1/rover")?od([r.replace("/extensionRouter/v1/rover","/v1/rover"),n]):od([n])}function As(e){return Eo(e)[0]||`${sd(e)}/v1/rover`}function ri(e){return String(e||"").replace(/\/+$/,"")}function id(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}function ti(e){return!!e&&typeof e=="object"&&typeof e.sessionId=="string"&&Number.isFinite(Number(e.epoch))}function Cs(e){let t=Number(e);return Number.isFinite(t)?t:void 0}function Qh(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(),i=o==="stale_seq"||o==="stale_epoch"||o==="active_run_exists"?o:void 0;if(!i)return;let s=Cs(n?.currentSeq??r?.currentSeq),c=Cs(n?.currentEpoch??n?.sessionEpoch??r?.currentEpoch),a=typeof r?.retryable=="boolean"?r.retryable:i==="stale_seq"||i==="stale_epoch";return{type:i,currentSeq:s,currentEpoch:c,retryable:a,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 ni(e){return String(e?.error||e?.data?.code||e?.code||"").trim().toUpperCase()}async function Jh(e){try{return await e.json()}catch{let t=await e.text().catch(()=>"");return t?{error:t}:void 0}}var Ns=class{constructor(t){$(this,"options");$(this,"base");$(this,"baseCandidates");$(this,"baseIndex",0);$(this,"sessionToken");$(this,"sessionTokenExpiresAt",0);$(this,"sessionId");$(this,"epoch",1);$(this,"eventSource",null);$(this,"pollTimer",null);$(this,"reconnectTimer",null);$(this,"started",!1);$(this,"lastSeq",0);$(this,"lastRunId","");$(this,"activeRunId");this.options=t,this.baseCandidates=Eo(t.apiBase),this.base=this.baseCandidates[0]||As(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=Eo(t),this.baseIndex=0,this.base=this.baseCandidates[0]||As(t)}stop(){this.started=!1,this.eventSource&&(this.eventSource.close(),this.eventSource=null),this.pollTimer!=null&&(window.clearInterval(this.pollTimer),this.pollTimer=null),this.reconnectTimer!=null&&(window.clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.lastSeq=0,this.lastRunId="",this.activeRunId=void 0}async start(){this.started=!0,await this.ensureSession(!1),this.startProjectionStream()}reportError(t){this.options.onError?.(t)}getActiveBase(){return this.baseCandidates.length?ri(this.baseCandidates[this.baseIndex]||this.base):ri(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=Eo(this.base),this.base=this.baseCandidates[0]||this.base,this.baseIndex=0);let r,o=Math.max(1,this.baseCandidates.length);for(let i=0;i<o;i+=1){let s=(this.baseIndex+i)%o,c=ri(this.baseCandidates[s]||this.base);try{let a=await fetch(`${c}${t}`,n),u=await Jh(a);if(a.status===404||a.status===405){r=new Error(`Rover endpoint not found at ${c}${t}`);continue}return this.baseIndex=s,this.base=c,{response:a,json:u}}catch(a){r=a}}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=Kh(t.sessionTokenExpiresAt,Date.now()+8*6e4)),Number.isFinite(Number(t.epoch))&&(this.epoch=Math.max(1,Number(t.epoch))),t.projection&&ti(t.projection)&&this.applyProjection(t.projection),this.options.onSession?.(t)}applyProjection(t){this.sessionId=t.sessionId||this.sessionId,this.epoch=Math.max(1,Number(t.epoch||this.epoch));let n=String(t.activeRunId||"");this.activeRunId=n||void 0,n!==this.lastRunId&&(this.lastRunId=n,this.lastSeq=0);let r=Array.isArray(t.events)?t.events:[];if(r.length){let o=Number(r[r.length-1]?.seq||0);Number.isFinite(o)&&o>this.lastSeq&&(this.lastSeq=o)}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,host:this.options.getHost(),url:this.options.getPageUrl()},o=!t&&!!this.sessionToken,i={...r,...o?{sessionToken:this.sessionToken}:{},...n?{bootstrapToken:n}:{}};if(!i.sessionToken&&!i.bootstrapToken)return null;let s=async d=>this.requestJson("/session/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)}),{response:c,json:a}=await s(i);if(c.status===401&&o&&n&&(ni(a)==="SESSION_TOKEN_EXPIRED"||ni(a)==="SESSION_TOKEN_INVALID"||ni(a)==="BOOTSTRAP_REQUIRED")&&(this.sessionToken=void 0,this.sessionTokenExpiresAt=0,{response:c,json:a}=await s({...r,bootstrapToken:n})),!c.ok||!a?.success||!a?.data){let d=ni(a),h=a?.data?.message||a?.error||`session/start failed (${c.status})`,E=new Error(String(h));throw E.code=d||void 0,E}let u=a.data;return this.applySessionData(u),u}syncCursorFromPayload(t){if(!t||typeof t!="object")return;let n=Cs(t?.currentEpoch??t?.sessionEpoch);n!==void 0&&(this.epoch=Math.max(1,n));let r=Cs(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:id(),sessionToken:this.sessionToken,sessionId:n.sessionId||this.sessionId},{response:i,json:s}=await this.requestJson(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}),c=Math.max(0,Number(r?.authRetryCount||0));if(i.status===401&&c<1){let a=ni(s);if(a==="SESSION_TOKEN_EXPIRED"||a==="SESSION_TOKEN_INVALID"||a==="BOOTSTRAP_REQUIRED")return this.sessionToken=void 0,this.sessionTokenExpiresAt=0,await this.ensureSession(!0),this.postJson(t,n,{authRetryCount:c+1})}if(i.status===409)return this.syncCursorFromPayload(s?.data),{ok:!1,data:s?.data||null,conflict:Qh(s),raw:s};if(!i.ok||!s?.success){let a=s?.error||`request failed (${i.status})`,u=new Error(String(a));throw u.status=i.status,u.code=String(s?.error||s?.data?.code||"").trim()||void 0,u.details=s?.data||s,u}return this.syncCursorFromPayload(s?.data),{ok:!0,data:s?.data||null,raw:s}}async submitRunInput(t){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("/run/input",{message:t.message,runId:t.runId,continueRun:!!t.continueRun,forceNewRun:!!t.forceNewRun,requestedMode:t.requestedMode,expectedEpoch:this.epoch,expectedSeq:this.lastSeq,clientEventId:n,taskBoundaryId:this.options.getTaskBoundaryId?.()});if(!o.ok){let s=o.data||null;ti(s?.projection)&&this.applyProjection(s.projection);let c=String(o.conflict?.type||"").trim(),a=o.conflict?.retryable!==!1&&(c==="stale_seq"||c==="stale_epoch");if(r===0&&a)continue;return s}let i=o.data;if(typeof i?.runId=="string"&&i.runId.trim()){let s=i.runId.trim();this.activeRunId=s,this.lastRunId=s,Number(i?.seq||0)===0&&this.lastSeq>0&&(this.lastSeq=0)}return Number.isFinite(Number(i?.epoch))&&(this.epoch=Math.max(1,Number(i.epoch))),Number.isFinite(Number(i?.seq))&&(this.lastSeq=Math.max(0,Number(i?.seq||0))),i}return null}async controlRun(t){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("/run/control",{action:t.action,runId:t.runId,reason:t.reason,expectedEpoch:this.epoch,expectedSeq:this.lastSeq,clientEventId:n});if(!o.ok){if(r===0&&o.conflict?.retryable!==!1)continue;return o.data||null}let i=o.data;return Number.isFinite(Number(i?.currentSeq))&&(this.lastSeq=Math.max(0,Number(i.currentSeq||0))),ti(i?.projection)&&this.applyProjection(i.projection),i}return null}async fetchExternalContext(t){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",i=t.source==="google_search"?"google_search":"direct_url";for(let s=0;s<2;s+=1){let c=await this.postJson("/context/external",{runId:n,logicalTabId:r,url:t.url,intent:o,source:i,message:t.message,adversarialScore:Number.isFinite(Number(t.adversarialScore))?Number(t.adversarialScore):void 0,expectedEpoch:this.epoch,expectedSeq:this.lastSeq});if(!c.ok){let a=String(c.conflict?.type||"").trim(),u=c.conflict?.retryable!==!1&&(a==="stale_seq"||a==="stale_epoch");if(s===0&&u)continue;return c.data||null}return c.data||null}return null}async sendTabEvent(t){let n=id(),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("/tab/event",{...r,expectedEpoch:this.epoch,expectedSeq:this.lastSeq});if(o.ok){let a=o.data||null;return a&&(Number.isFinite(Number(a?.sessionEpoch))&&(this.epoch=Math.max(1,Number(a?.sessionEpoch||this.epoch))),Number.isFinite(Number(a?.currentSeq))&&(this.lastSeq=Math.max(0,Number(a?.currentSeq||0)))),a?{...a,clientEventId:n,retryAttempted:!1,retryExhausted:!1}:null}let i=o.conflict;if(i?.retryable&&(i.type==="stale_seq"||i.type==="stale_epoch")){let a=await this.postJson("/tab/event",{...r,expectedEpoch:this.epoch,expectedSeq:this.lastSeq});if(a.ok){let h=a.data||null;return h&&(Number.isFinite(Number(h?.sessionEpoch))&&(this.epoch=Math.max(1,Number(h?.sessionEpoch||this.epoch))),Number.isFinite(Number(h?.currentSeq))&&(this.lastSeq=Math.max(0,Number(h?.currentSeq||0)))),h?{...h,clientEventId:n,retryAttempted:!0,retryExhausted:!1}:{clientEventId:n,retryAttempted:!0,retryExhausted:!1}}let u=a.conflict||i,d=a.data||o.data||null;return this.fetchProjection().catch(()=>{}),{...d||{},clientEventId:n,retryAttempted:!0,retryExhausted:!0,decisionReason:d?.decisionReason||u?.decisionReason||(u?.type==="stale_epoch"?"stale_epoch_retryable":"stale_seq_retryable"),conflict:u?{type:u.type,currentSeq:u.currentSeq,currentEpoch:u.currentEpoch,retryable:!!u.retryable}:void 0}}let c=o.data||null;return i?.type&&this.fetchProjection().catch(()=>{}),{...c||{},clientEventId:n,retryAttempted:!1,retryExhausted:!!i,conflict:i?{type:i.type,currentSeq:i.currentSeq,currentEpoch:i.currentEpoch,retryable:!!i.retryable}:c?.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(`/session/projection?${t.toString()}`,{method:"GET",headers:{"Content-Type":"application/json"}});if(!n.ok||!r?.success||!ti(r?.data))return null;let o=r.data;return this.applyProjection(o),o}async saveSnapshot(t){return!!(await this.postJson("/session/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}startProjectionPolling(){this.pollTimer==null&&(this.pollTimer=window.setInterval(()=>{this.fetchProjection().catch(t=>this.reportError(t))},4e3))}scheduleSseReconnect(){this.started&&this.reconnectTimer==null&&(this.reconnectTimer=window.setTimeout(()=>{this.reconnectTimer=null,this.startProjectionStream()},8e3))}startProjectionStream(){if(!this.started)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,seqAfter:String(this.lastSeq),sessionToken:this.sessionToken}),n=`${this.getActiveBase()}/events?${t.toString()}`,r=new EventSource(n,{withCredentials:!1});this.eventSource=r,r.addEventListener("projection",o=>{try{let i=JSON.parse(o.data||"{}");ti(i)&&this.applyProjection(i)}catch(i){this.reportError(i)}}),r.onerror=()=>{this.eventSource&&(this.eventSource.close(),this.eventSource=null),this.ensureSession(!0).catch(o=>this.reportError(o)).finally(()=>{this.rotateBaseCandidate(),this.startProjectionPolling(),this.scheduleSseReconnect()})},r.onopen=()=>{this.pollTimer!=null&&(window.clearInterval(this.pollTimer),this.pollTimer=null)}}};function oi(e){return Array.isArray(e)?e.length:0}function Ka(e){return String(e||"").trim()||void 0}function ad(e){if(!e)return 0;let t=0;String(e.pendingRun?.id||"").trim()&&(t+=4,e.pendingRun?.resumeRequired&&(t+=1),Ka(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,oi(r.history)),t+=Math.min(3,oi(r.plannerHistory)),t+=Math.min(4,oi(r.agentPrevSteps)),oi(r.pendingAskUser?.questions)>0&&(t+=3)),oi(e.taskTabScope?.touchedTabIds)>0&&(t+=1),t}function cd(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=ad(e.incomingState),r=ad(e.localState);if(n<=r)return!1;let o=Ka(e.localState.pendingRun?.taskBoundaryId||e.localState.workerState?.taskBoundaryId),i=Ka(e.incomingState.pendingRun?.taskBoundaryId||e.incomingState.workerState?.taskBoundaryId);if(o&&i&&o!==i){let s=Math.max(1,Number(e.localState.taskEpoch)||1);if(Math.max(1,Number(e.incomingState.taskEpoch)||1)<s)return!1}return!0}function ld(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 ud(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 Zh=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 ii(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&&Zh.has(r)?`${n[n.length-3]}.${r}`:r}function Qa(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 dd(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,i=Qa(o);return i?n?`=${i}`:r?`*.${i}`:i:""}function eg(e,t){let n=dd(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 fd(e){let t=Qa(e.host||"");if(!t)return!1;let n=Array.isArray(e.allowedDomains)?e.allowedDomains.map(o=>dd(o)).filter(Boolean):[];if(n.length>0)return n.some(o=>eg(t,o));let r=Qa(e.currentHost||"");return r?e.domainScopeMode==="host_only"?t===r:ii(t)===ii(r):!0}function si(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)"),i=String(t||"").trim(),s=i?` Reason: ${i}.`:"",c=e?.external?`This external tab is tracked in virtual mode only. Live DOM control and accessibility-tree access are unavailable here.${s}`:`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.${s}`;return{url:r,title:o,contentType:"text/html",content:c,metadata:{inaccessible:!0,external:!!e?.external,accessMode:e?.external?"external_placeholder":"detached_runtime_placeholder",reason:t,logicalTabId:n}}}function ai(e,t,n="tab_not_accessible"){let r=Number(t?.logicalTabId)||0,o=t?.url||"",i=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.`,s=t?.external?"DOMAIN_SCOPE_BLOCKED":"TAB_NOT_ACCESSIBLE";return{success:!1,error:i,allowFallback:!0,output:{success:!1,error:{code:s,message:i,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:s,message:i,retryable:!1,details:{logicalTabId:r,blockedUrl:o,external:!!t?.external,reason:n}}}}function tg(e){if(e.startNewTask||!e.hasAskUserAnswers||e.taskStatus!=="running"||Math.max(0,Number(e.pendingAskUserQuestionCount)||0)<=0)return!1;let n=Ue(e.pendingAskUserBoundaryId),r=Ue(e.currentTaskBoundaryId);return!(n&&r&&n!==r)}function pd(e){return!tg(e)}var ng=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 md(e){return String(e||"").replace(/\s+/g," ").trim().slice(0,2e3)}function hd(e){let t=String(e||"").toLowerCase().split(/[^a-z0-9]+/g).map(n=>n.trim()).filter(n=>n.length>=2&&!ng.has(n));return new Set(t)}function rg(e,t){let n=hd(e),r=hd(t);if(!n.size||!r.size)return 0;let o=0;for(let s of n)r.has(s)&&(o+=1);let i=n.size+r.size-o;return i<=0?0:o/i}function gd(e){if(e.mode!=="heuristic_same_window")return{reason:"mode_disabled",overlap:0};let t=e.previousTaskStatus;if(t!=="completed"&&t!=="ended")return{reason:"status_ineligible",overlap:0};let n=md(e.previousTaskUserInput);if(!n)return{reason:"missing_previous_intent",overlap:0};let r=md(e.previousTaskAssistantOutput);if(!r)return{reason:"missing_previous_output",overlap:0};let o=Math.max(0,Number(e.previousTaskCompletedAt)||0),i=Math.max(o,Number(e.now)||Date.now()),s=Math.max(1e3,Number(e.ttlMs)||0);if(!o||i-o>s)return{reason:"ttl_expired",overlap:0};let c=rg(n,e.currentPrompt),a=Math.max(0,Math.min(1,Number(e.minLexicalOverlap)||0));return c<a?{reason:"low_lexical_overlap",overlap:c}:{reason:"attached",overlap:c,chatLog:[{role:"user",message:n},{role:"model",message:r}]}}var sc=1,Ad="rover:runtime:",og="rover:runtime-id:",Cd="rover:visitor-id:",Ja=160,Za=240,Nd=80,Ws=40,ig=8e3,sg=12,ag=15*6e4,cg=2,lg=12e4,ug=.18,dg=10,fg=3600*24*365,Md=1,pg=3e3,mg=4500,hg=12e3,gg=30,$s=240,bd=5*6e4,Vs=100,Gs=12,bg=80,yg=200,vg=700,Eg=8,Tg=240,wg="rover:handoff-bootstrap:",_g=3e4,xg=2*6e4,Ig=45e3,kg=2e4,Er=null,Fe=null,Le=null,ee=null,U=null,vr=null,Hn=null,p=null,ar=null,$e="",M=null,Je=null,Ps=null,qt=[],Us=!1,_o=!1,Ld=0,Ct,qn,kr=!1,zr=!1,ui=null,di=null,Rr=null,xo=!1,it="controller",Cn=!1,pi=!1,cr=!1,mn=!1,Tr=!1,mi=!1,Se="",Qe=null,je=null,Ht=0,yd=!1,hi=null,Ms="",$n,Yr,Kr,Io=0,or=new Map,wr=new Set,be=null,kn,jr=0,ir=1,wi,Rg=new Set(["run_started","run_state_transition","run_completed","assistant","status","tool_start","tool_result","runtime_tabs_diagnostics","auth_required","navigation_guardrail","error"]),ec={read:"rover_external_read_context",act:"rover_external_act_context"},Bs=[],Fs=new Map;function Me(e,t){Rn(e,t);let n=Fs.get(e);if(n)for(let r of n)try{r(t)}catch{}}function Dd(e,t){Fs.has(e)||Fs.set(e,new Set);let n=Fs.get(e);return n.add(t),()=>{n.delete(t)}}function Sg(e){return typeof e=="string"?{name:e}:e}function lr(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function Sr(){return lr("task-boundary")}function eo(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 Od(e){if(e)return{handoffId:e.handoffId,targetUrl:e.targetUrl,sourceLogicalTabId:e.sourceLogicalTabId,runId:e.runId,ts:e.createdAt}}function vd(e){return{handoffId:e.handoffId,targetUrl:e.targetUrl,sourceLogicalTabId:e.sourceLogicalTabId,runId:e.runId,createdAt:Number(e.ts)||Date.now(),consumed:!1}}function ko(e){let t=typeof e?.pendingRun?.taskBoundaryId=="string"?e.pendingRun.taskBoundaryId:void 0;if(t)return Ue(t);let n=typeof e?.workerState?.taskBoundaryId=="string"?e.workerState.taskBoundaryId:void 0;if(n)return Ue(n)}function Ag(e){let t=ko(e);return t||Sr()}function xn(){return Ue(Se)||ko(p)}function Xr(e){let t=ed({source:e.source,incomingBoundaryId:e.incomingBoundaryId,currentBoundaryId:xn(),taskEpochAdvanced:e.taskEpochAdvanced,hasPendingRun:!!p?.pendingRun,taskStatus:p?.activeTask?.status,allowBootstrapAdoption:e.allowBootstrapAdoption});return t.accept?(t.adoptedBoundaryId&&(Se=t.adoptedBoundaryId),!0):!1}function ac(e=12e4){let t=eo(p?.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 gi(e){let t=st(p?.pendingRun)?.taskBoundaryId;if(t){Se=t;return}let n=Sn(p?.workerState)?.taskBoundaryId;if(n){Se=n;return}(!Se||e?.rotateIfMissing)&&(Se=Sr())}function Cg(e){let t=`${og}${e}`;try{let n=window.sessionStorage.getItem(t);if(n&&n.trim())return n.trim();let r=lr("runtime");return window.sessionStorage.setItem(t,r),r}catch{return lr("runtime")}}function bi(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 Ls(e){return String(e||"").trim().replace(/[^a-zA-Z0-9._:-]/g,"").slice(0,180)}function Pd(e){try{let t=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`));return t?decodeURIComponent(t[1]||""):void 0}catch{return}}function Ed(e,t,n){try{let r=n?`; domain=${n}`:"";return document.cookie=`${e}=${encodeURIComponent(t)}; path=/; max-age=${fg}; samesite=lax${r}`,Pd(e)===t}catch{return!1}}function Ng(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 Mg(e,t){let n=`rover_vid_${bi(e)}`;for(let r of Ng(window.location.hostname))if(Ed(n,t,r))return;Ed(n,t)}function Ds(e,t){let n=`${Cd}${e}`;try{window.localStorage.setItem(n,t)}catch{}try{window.sessionStorage.setItem(n,t)}catch{}Mg(e,t)}function Ud(e,t){p&&(p.visitor=t,we());try{localStorage.setItem(`rover:visitor:${e}`,JSON.stringify(t))}catch{}}function Lg(e){if(p?.visitor?.name||p?.visitor?.email)return p.visitor;try{let t=localStorage.getItem(`rover:visitor:${e}`);return t?JSON.parse(t):void 0}catch{return}}function Bd(e){let t=Ls(e.visitorId||"");if(t)return t;if(e.checkpointing?.autoVisitorId===!1)return;let n=`${Cd}${e.siteId}`,r=`rover_vid_${bi(e.siteId)}`,o=Ls(Pd(r)||"");if(o)return Ds(e.siteId,o),o;try{let s=Ls(window.localStorage.getItem(n)||"");if(s)return Ds(e.siteId,s),s}catch{}try{let s=Ls(window.sessionStorage.getItem(n)||"");if(s)return Ds(e.siteId,s),s}catch{}let i=`v_${bi(`${e.siteId}:${lr("visitor")}`)}_${Date.now().toString(36)}`;return Ds(e.siteId,i),i}function Dg(e,t){return`visitor-${bi(`${e}:${t}`)}`}function Fd(e){!Fe||!Le||(Fe.registerTool(e.def,e.handler),Le.postMessage({type:"register_tool",tool:e.def}))}function Hs(e){return`${Ad}${e}`}function Td(e,t){let n=String(t||"").trim();return n?`${Ad}${e}:${bi(n)}`:Hs(e)}function cc(e){return`${wg}${e}`}function Og(e,t){try{sessionStorage.setItem(cc(e),JSON.stringify(t))}catch{}}function Pg(e){try{let t=cc(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>_g?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,ts:o}}catch{return}}function Hd(e){if(e)try{sessionStorage.removeItem(cc(e))}catch{}}function Vn(e="session_start",t=Date.now(),n){return{taskId:n||lr("task"),status:"running",startedAt:t,lastUserAt:void 0,lastAssistantAt:void 0,boundaryReason:e,endedAt:void 0}}function tc(e,t){return{version:sc,sessionId:e,runtimeId:t,uiOpen:!1,uiHidden:!1,uiStatus:void 0,uiMessages:[],timeline:[],executionMode:"controller",workerState:void 0,pendingRun:void 0,lastNavigationHandoff:void 0,taskEpoch:1,activeTask:Vn(),taskTabScope:void 0,lastRoutingDecision:void 0,updatedAt:Date.now()}}function Wt(e,t=ig){return e.length<=t?e:`${e.slice(0,t)}\u2026`}function qs(e){if(e!=null){if(typeof e=="string")return Wt(e,1200);try{return Wt(JSON.stringify(e),1200)}catch{try{return Wt(String(e),1200)}catch{return}}}}function Ks(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),i=Number.isFinite(o)?Math.min(6e4,Math.max(2e3,Math.floor(o))):hg,s=Number(t?.maxBatchSize),c=Number.isFinite(s)?Math.min(80,Math.max(1,Math.floor(s))):gg;return{enabled:t?.enabled!==!1,sampleRate:r,flushIntervalMs:i,maxBatchSize:c,includePayloads:t?.includePayloads===!0}}function Qs(e){return e==="same_tab"||e==="open_new_tab"?e:"same_tab"}function _i(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 qd(e){return e==="auto"||e==="confirm"||e==="never"?e:"confirm"}function Wd(e){return"host_session"}function $d(e){return"task_touched_only"}function lc(e){return"crash_only"}function uc(e){let t=Number(e);return Number.isFinite(t)?Math.max(6e4,Math.min(30*6e4,Math.floor(t))):ag}function dc(e){return"read_only"}function Vd(e){return"heuristic_same_window"}function fc(e){let t=Number(e);return Number.isFinite(t)?Math.max(1e4,Math.min(10*6e4,Math.floor(t))):lg}function pc(e){let t=Number(e);return Number.isFinite(t)?Math.max(.05,Math.min(.9,t)):ug}function Gd(e){return"empty"}function zd(e){return"deterministic_cues"}function jd(e){let t=Number(e);return Number.isFinite(t)?Math.max(1,Math.min(4,Math.floor(t))):cg}function Xd(e){return"auto"}function Yd(e){return!1}function Kd(e){return"pre_tool_block"}function Ug(){return ud({pendingRunText:p?.pendingRun?.text,activeRunText:M?.getState()?.activeRun?.text,rootWorkerInput:p?.workerState?.rootUserInput,lastUserInputText:$n,fallback:"navigation request"})}function Qd(e){return e!==!1}function Tt(e,t,n){let r=Number(e);if(Number.isFinite(r))return Math.max(t,Math.min(n,Math.floor(r)))}function mc(e){return!(!e||!Ks(e).enabled||!Nn(e))}function wd(e){if(e!=null){if(typeof e=="string")return Wt(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 i=e?.[o];i!=null&&(typeof i=="string"?n[o]=Wt(i,180):(typeof i=="number"||typeof i=="boolean")&&(n[o]=i))}return n}}}function Bg(e,t){if(!t)return wd(e);let n=bc(e);if(n!=null)return typeof n=="string"?Wt(n,1e3):typeof n=="number"||typeof n=="boolean"?n:Array.isArray(n)?{type:"array",length:n.length}:typeof n=="object"?n:wd(e)}function hc(){Ps&&(clearInterval(Ps),Ps=null)}function Fg(e){return`${As(e.apiBase)}/telemetry/ingest`}function nc(e){let t=e||U,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 Nn(e){if(kn&&jr>Date.now()+1e4)return kn;let t=e||U,n=String(t?.sessionToken||t?.authToken||"").trim();return n.startsWith("rvrsess_")?n:""}function rc(e,t){let n=String(e||"").trim();kn=n||void 0,jr=Number(t)>0?Number(t):0;try{let r=U?.siteId||"";n&&jr>Date.now()?sessionStorage.setItem(`rover:sess:${r}`,JSON.stringify({t:n,e:jr})):sessionStorage.removeItem(`rover:sess:${r}`)}catch{}}function Hg(e){!e||!U||(U.externalNavigationPolicy=e.externalNavigationPolicy||U.externalNavigationPolicy,e.domainScopeMode&&(U.domainScopeMode=e.domainScopeMode),(e.crossHostPolicy==="open_new_tab"||e.crossHostPolicy==="same_tab")&&(U.navigation={...U.navigation||{},crossHostPolicy:Qs(e.crossHostPolicy)}),U.tools||(U.tools={}),U.tools.web||(U.tools.web={}),U.tools.web.enableExternalWebContext=e.enableExternalWebContext??U.tools.web.enableExternalWebContext,U.tools.web.scrapeMode=e.externalScrapeMode??U.tools.web.scrapeMode,Array.isArray(e.externalAllowDomains)&&(U.tools.web.allowDomains=e.externalAllowDomains),Array.isArray(e.externalDenyDomains)&&(U.tools.web.denyDomains=e.externalDenyDomains))}function _d(e){if(!p||!e)return;ir=Math.max(1,Number(e.epoch||ir));let t=typeof e.activeRunId=="string"?e.activeRunId:"";_r(t||void 0);let n=p.pendingRun,r=n?.id||"";if(!t&&r){let o=String(e.runStatus||"").trim().toLowerCase();(o==="completed"||o==="cancelled"||o==="failed"||p.activeTask?.status!=="running")&&(Gn(r),_t(void 0),M?.setActiveRun(void 0))}else t&&(!n||r!==t)&&_t({id:t,text:n?.text||"",startedAt:n?.startedAt||Date.now(),attempts:n?.attempts||0,autoResume:!0,taskBoundaryId:n?.taskBoundaryId||Se,resumeRequired:n?.resumeRequired===!0,resumeReason:n?.resumeReason});if(e.snapshot&&typeof e.snapshot=="object"){let o=e.snapshot?.runtimeState,i=e.snapshot?.sharedState;if(o&&typeof o=="object"){xo=!0;try{mf({version:Md,siteId:U?.siteId||p.sessionId,visitorId:Ct||"server_projection",sessionId:p.sessionId,updatedAt:Number(e.snapshot?.updatedAt)||Date.now(),runtimeState:o,sharedState:i})}finally{xo=!1}}}}async function Jd(e){if(!(!p||!e.apiBase&&!e.publicKey&&!e.authToken&&!e.sessionToken||!nc(e)&&!kn)){be?be.setApiBase(e.apiBase):be=new Ns({apiBase:e.apiBase,siteId:e.siteId,getSessionId:()=>p?.sessionId,getBootstrapToken:()=>nc(U),getHost:()=>window.location.hostname,getPageUrl:()=>window.location.href,getTaskBoundaryId:()=>Se,onSession:n=>{if(rc(n.sessionToken,n.sessionTokenExpiresAt),ir=Math.max(1,Number(n.epoch||ir)),p&&n.sessionId&&p.sessionId!==n.sessionId&&(p.sessionId=n.sessionId,we()),Hg(n.policy),n.siteConfig&&typeof n.siteConfig=="object"&&U){let r={shortcuts:Cr(n.siteConfig?.shortcuts),greeting:So(n.siteConfig?.greeting),limits:ta(n.siteConfig?.limits),version:n.siteConfig?.version!=null?String(n.siteConfig.version):void 0};Rr=r,hf(U.siteId,r),Xs(U)}n.projection&&_d(n.projection),Le&&Le.postMessage({type:"update_config",config:{...Ro(),publicKey:void 0,sessionToken:kn,authToken:Nn(U),sessionId:p?.sessionId,activeRunId:p?.pendingRun?.id,sessionEpoch:be?.getEpoch?.()??ir,sessionSeq:be?.getLastSeq?.()??0}}),Fe&&Fe.setNavigationPolicy({allowedDomains:U?.allowedDomains,domainScopeMode:U?.domainScopeMode,externalNavigationPolicy:U?.externalNavigationPolicy,crossHostPolicy:U?.navigation?.crossHostPolicy}),U&&(_c(U),Zs(U)),pi=!0,Zr()},onProjection:n=>{_d(n),Le&&Le.postMessage({type:"update_config",config:{...Ro(),sessionToken:kn,authToken:Nn(U),sessionId:p?.sessionId,activeRunId:p?.pendingRun?.id,sessionEpoch:be?.getEpoch?.()??ir,sessionSeq:be?.getLastSeq?.()??0}})},onError:n=>{Rn("error",{message:n?.message||"server runtime sync failed",scope:"server_runtime"})}});try{await be.start()}catch(n){U?.apiMode!==!1&&Me("error",{message:n?.message||"server runtime sync failed",scope:"server_runtime_start"})}}}async function Js(e=!1){if(Us||_o)return;if(!U||!mc(U)){qt=[];return}if(!qt.length)return;let t=Ks(U),n=Nn(U);if(!n)return;let r=qt.splice(0,t.maxBatchSize);if(r.length){Us=!0;try{let o=await fetch(Fg(U),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:n,sessionId:p?.sessionId,runId:p?.pendingRun?.id,siteId:U.siteId,runtimeId:$e,visitorId:Ct,flushReason:e?"manual":"interval",sdkVersion:"rover_sdk_v1",pageUrl:window.location.href,userAgent:navigator.userAgent,sampleRate:t.sampleRate,events:r})});if(!o.ok){o.status===401||o.status===403?_o=!0:qt=[...r,...qt].slice(-$s);return}let i=await o.json().catch(()=>{});if(i?.success===!1){let s=String(i?.errorCode||i?.errorDetails?.code||"").toUpperCase();(s==="INVALID_API_KEY"||s==="MISSING_API_KEY"||s==="UNAUTHENTICATED"||s==="PERMISSION_DENIED")&&(_o=!0);return}}catch{qt=[...r,...qt].slice(-$s)}finally{Us=!1}}}function Zs(e){if(hc(),_o=!1,!mc(e)){qt=[];return}let t=Ks(e);Ps=setInterval(()=>{Js(!1)},t.flushIntervalMs)}function Rn(e,t){if(!mc(U)||_o)return;let n=Ks(U);if(n.sampleRate<1&&Math.random()>n.sampleRate)return;let r={name:e,ts:Date.now(),seq:++Ld,payload:Bg(t,n.includePayloads)};qt.push(r),qt.length>$s&&(qt=qt.slice(-$s)),qt.length>=n.maxBatchSize&&Js(!1)}function qg(e){if(e==="analyze"||e==="route"||e==="execute"||e==="verify"||e==="complete")return e}function Wg(e){return e?e==="analyze"?"Analyze":e==="route"?"Route":e==="execute"?"Execute":e==="verify"?"Verify":e==="complete"?"Complete":"Status":"Status"}function $g(e,t,n){return[String(t||""),String(e||"").trim().toLowerCase(),String(n||"").trim().toLowerCase()].join("|")}function Vg(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 Gg(){return p?.pendingRun?.id}function _r(e){wi=String(e||"").trim()||void 0}function xd(){let e=p?.pendingRun?.id;if(!e)return;if(!be)return e;let t=be.getActiveRunId(),n=String(t||wi||"").trim();if(n)return n===e?e:void 0}function Gn(e){if(e)for(wr.add(e);wr.size>80;){let t=wr.values().next().value;if(!t)break;wr.delete(t)}}function oc(e){e&&wr.delete(e)}function To(){return p?.activeTask?.status==="running"}function Zd(){let e=M?.getState()?.activeRun;return!!(e&&e.runtimeId&&e.runtimeId!==$e)}function zg(){let e=M;if(!e?.isWorkflowLocked())return!1;let t=e.getWorkflowLockInfo(),n=e.getState()?.activeRun;return!(!t.locked||!n?.runId||t.holderRuntimeId&&n.runtimeId&&t.holderRuntimeId!==n.runtimeId||t.runId&&t.runId!==n.runId)}function Co(){return Zd()||zg()}function gc(e){return e!=="observer"?e:Co()?"observer":"controller"}function ef(){return dc(U?.task?.observerInput)==="read_only"?!Co():!Zd()}function tf(e){if(e==="observer")return Co()?"Observing active run in another tab...":"Send to take control and run here."}function jg(e){let t=typeof e?.type=="string"?e.type:"";if(!Rg.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(be?.getActiveRunId()||wi||"").trim()||void 0;return nd({type:t,messageRunId:n,messageTaskBoundaryId:r,currentTaskBoundaryId:xn(),pendingRunId:Gg(),sharedActiveRunId:M?.getState()?.activeRun?.runId,authoritativeActiveRunId:o,taskStatus:p?.activeTask?.status,ignoredRunIds:wr})}function ur(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 i=String(o.key||o.id||"").trim()||`clarification_${r+1}`,s=String(o.query||o.question||"").trim();if(!s)continue;let c=typeof o.required=="boolean",a=typeof o.optional=="boolean",u=c?!!o.required:a?!o.optional:!0,d=`${i}::${s}`.toLowerCase();if(n.has(d))continue;n.add(d);let h={key:i,query:s,...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}:{}};u||(h.required=!1),t.push(h)}return t.slice(0,6)}function Xg(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=ur(p?.workerState?.pendingAskUser?.questions),s=(Array.isArray(t.keys)?t.keys:[]).map(u=>String(u||"").trim()).filter(Boolean);if(s.length===0)for(let u of o){let d=String(u.key||"").trim();d&&s.push(d)}if(s.length===0)for(let u of Object.keys(r)){let d=String(u||"").trim();d&&s.push(d)}let c=[],a=new Set;for(let u of s){let d=String(u||"").trim();if(!d||a.has(d))continue;a.add(d);let h=String(r[d]||"").trim();c.push(`${d}: ${h||"(no answer provided)"}`)}return c.length>0?c.join(`
|
|
1653
|
-
`):String(t.rawText||"").trim()}function
|
|
1952
|
+
`;let rt=document.createElement("div");rt.className="shortcutsEmptyState";let Tr=document.createElement("div");Tr.className="shortcutsHeading",Tr.textContent=o?`Hey ${o}! What can I help with?`:`What can ${t} help you with?`;let or=document.createElement("div");or.className="shortcutsGrid",rt.appendChild(Tr),rt.appendChild(or),Je.appendChild(rt);let Hn=document.createElement("div");Hn.className="shortcutsBar";let Cn=document.createElement("div");Cn.className="questionPrompt";let uo=document.createElement("div");uo.className="questionPromptTitle",uo.textContent="Need a bit more info";let qn=document.createElement("form");qn.className="questionPromptForm";let sr=document.createElement("div");sr.className="questionPromptList",qn.appendChild(sr);let ir=document.createElement("div");ir.className="questionPromptActions";let bn=document.createElement("button");bn.type="button",bn.className="questionPromptCancel",bn.textContent="Cancel",ir.appendChild(bn);let yn=document.createElement("button");yn.type="submit",yn.className="questionPromptSubmit",yn.textContent="Continue",ir.appendChild(yn),qn.appendChild(ir),Cn.appendChild(uo),Cn.appendChild(qn);let we=document.createElement("form");we.className="composer";let _r=document.createElement("textarea");_r.rows=1,_r.placeholder=`Ask ${t} to act on this website...`,we.appendChild(_r);let Nn=document.createElement("button");Nn.type="submit",Nn.className="sendBtn",Nn.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(Nn);let Ot=document.createElement("div");Ot.className="resizeHandle",Ot.setAttribute("aria-hidden","true");let Qt=document.createElement("div");Qt.className="roverConversationPill",Qt.setAttribute("role","button"),Qt.setAttribute("tabindex","0");let ot=document.createElement("span");ot.className="roverConversationPillLabel",ot.textContent="Current task";let Fo=document.createElement("span");Fo.className="roverConversationPillArrow",Fo.textContent="\u25BE",Qt.appendChild(ot),Qt.appendChild(Fo),Qt.addEventListener("click",()=>{Ln.classList.toggle("open")});let Ni=document.createElement("div");Ni.className="roverTabBar";let Mn=document.createElement("div");Mn.className="pausedTaskBanner";let Er="",Ln=document.createElement("div");Ln.className="conversationDrawer";let Jt=document.createElement("div");Jt.className="conversationDrawerHeader";let $n=document.createElement("span");$n.className="conversationDrawerTitle",$n.textContent="Conversations";let vn=document.createElement("button");vn.type="button",vn.className="conversationDrawerClose",vn.textContent="\xD7",Jt.appendChild($n),Jt.appendChild(vn);let $r=document.createElement("div");$r.className="conversationList";let cn=document.createElement("button");cn.type="button",cn.className="conversationNewBtn",cn.textContent="New conversation",Ln.appendChild(Jt),Ln.appendChild($r),Ln.appendChild(cn),S.appendChild(F),S.appendChild(Qt),S.appendChild(Mn),S.appendChild(lo),S.appendChild(an),S.appendChild(Hn),S.appendChild(Cn),S.appendChild(we),S.appendChild(Ot),S.appendChild(Ln),l.appendChild(u),l.appendChild(v),l.appendChild(S),i.appendChild(c),i.appendChild(l);let Ze=_r,fo=an.querySelector(".taskSuggestionText"),d=an.querySelector(".taskSuggestionBtn.primary"),k=an.querySelector(".taskSuggestionBtn.secondary"),w=new Set,E=new Map,y=[],g="controller",_=!1,I=!1,B=!1,P=e.shortcuts?.slice(0,12)||[],H=null,W=!1,j=null,ne=!1,se=!1,ke=0,le=!1,ie=null,ue=null,Ae=!1,ze=null,Ee=null,Te={};function Oe(){ne=!ne,yt.classList.toggle("visible",ne)}function Ce(){ne=!1,yt.classList.remove("visible")}let We="";function Ke(L){let V=L.filter(G=>G&&G.enabled!==!1).slice(0,12),ee=V.map(G=>`${G.id||G.label}|${G.label}|${G.description||""}|${G.icon||""}`).join(";;");if(ee!==We){We=ee,P=V,or.innerHTML="";for(let G of P){let J=document.createElement("button");if(J.type="button",J.className="shortcutCard",G.icon){let me=document.createElement("span");me.className="shortcutCardIcon",me.textContent=G.icon,J.appendChild(me)}let Me=document.createElement("span");if(Me.className="shortcutCardLabel",Me.textContent=G.label,J.appendChild(Me),G.description){let me=document.createElement("span");me.className="shortcutCardDesc",me.textContent=G.description,J.appendChild(me)}J.addEventListener("click",()=>e.onShortcutClick?.(G)),or.appendChild(J)}Hn.innerHTML="";for(let G of P){let J=document.createElement("button");if(J.type="button",J.className="shortcutChip",G.icon){let me=document.createElement("span");me.className="shortcutChipIcon",me.textContent=G.icon,J.appendChild(me)}let Me=document.createTextNode(G.label);J.appendChild(Me),J.addEventListener("click",()=>e.onShortcutClick?.(G)),Hn.appendChild(J)}ae()}}function ae(){let L=P.length>0,V=!!ze?.questions?.length,ee=L&&!B&&!I,G=L&&B&&!I&&!V;rt.classList.toggle("visible",ee),Hn.classList.toggle("visible",G)}function te(L){let V=Ft(L);if(V){if(M.textContent=V,v.classList.contains("visible")){v.classList.add("textVisible");return}le||S.classList.contains("open")||(le=!0,v.classList.remove("dismissing","textVisible"),v.classList.add("visible"),ue&&(clearTimeout(ue),ue=null),ue=setTimeout(()=>{ue=null,v.classList.add("textVisible")},800))}}function de(){if(ue&&(clearTimeout(ue),ue=null),!v.classList.contains("visible"))return;v.classList.add("dismissing");let L=()=>{v.classList.remove("visible","dismissing"),v.removeEventListener("animationend",L)};v.addEventListener("animationend",L),ie&&(clearTimeout(ie),ie=null)}function Pe(L){o=L||void 0,o?Tr.textContent=`Hey ${o}! What can I help with?`:Tr.textContent=`What can ${t} help you with?`}function Vt(L){if(!L||!Array.isArray(L.questions))return[];let V=[],ee=new Set;for(let G=0;G<L.questions.length;G+=1){let J=L.questions[G];if(!J||typeof J!="object")continue;let Me=String(J.key||J.id||"").trim()||`clarification_${G+1}`,me=String(J.query||J.question||"").trim();if(!me)continue;let je=typeof J.required=="boolean",Tt=typeof J.optional=="boolean",nt=je?!!J.required:Tt?!J.optional:!0;ee.has(Me)||(ee.add(Me),V.push({key:Me,query:me,...typeof J.id=="string"&&J.id.trim()?{id:J.id.trim()}:{},...typeof J.question=="string"&&J.question.trim()?{question:J.question.trim()}:{},...Array.isArray(J.choices)?{choices:J.choices}:{},required:nt}))}return V.slice(0,6)}function Pt(L){return L.map(V=>{let ee=Array.isArray(V.choices)?V.choices.map(J=>Ft(String(J||""))).filter(Boolean).join("|"):"",G=V.required===!1?"optional":"required";return`${V.key}::${Ft(V.query)}::${ee}::${G}`}).join("||")}function Cs(L){let V=Ft(L.query||L.question||"");if(!V)return`Answer for ${L.key}`;let ee=V.replace(/\s+/g," ").replace(/[?.!:\s]+$/,"").slice(0,72);return ee?`Answer: ${ee}`:`Answer for ${L.key}`}function Ho(L){for(let V of Array.from(qn.querySelectorAll(".questionPromptInput"))){let ee=V;if(ee.dataset.key===L)return ee}return null}function Ns(L){let V=Vt(L),ee=document.activeElement,G=ee instanceof HTMLInputElement&&ee.classList.contains("questionPromptInput")&&Cn.contains(ee)?ee:null,J=G?.dataset.key,Me=G?.selectionStart??null,me=G?.selectionEnd??null;if(!V.length){ze=null,Ee=null,Te={},sr.innerHTML="",Cn.classList.remove("visible"),ae();return}let je=Pt(V),Tt=je!==Ee||!ze;if(ze={questions:V},Tt){let nt=Te;Te={},sr.innerHTML="";for(let ct of ze.questions){let Ut=document.createElement("label");Ut.className="questionPromptItem";let ln=document.createElement("span");ln.className="questionPromptLabel",ln.textContent=ct.required===!1?`${ct.query} (optional)`:ct.query,Ut.appendChild(ln);let un=document.createElement("input");un.type="text",un.className="questionPromptInput",un.dataset.key=ct.key,un.placeholder=Cs(ct),un.required=ct.required!==!1;let Wn=String(nt[ct.key]||"");Te[ct.key]=Wn,un.value=Wn,un.addEventListener("input",()=>{Te[ct.key]=un.value,un.classList.remove("invalid")}),Ut.appendChild(un),sr.appendChild(Ut)}Ee=je}if(Cn.classList.add("visible"),x(),ae(),J){let nt=Ho(J);if(nt){if(nt.focus(),Me!==null||me!==null){let ct=Me??nt.value.length,Ut=me??ct;try{nt.setSelectionRange(ct,Ut)}catch{}}return}}if(Tt){let ct=ze.questions.find(un=>!Ft(Te[un.key]||""))?.key||ze.questions[0]?.key;if(!ct)return;let Ut=Ho(ct),ln=!ee||ee===document.body||!S.contains(ee);Ut&&ln&&Ut.focus()}}function Wr(){I&&Ae?(An.classList.add("visible"),Je.appendChild(An),p()):An.classList.remove("visible")}function Zt(L,V=0){l.dataset.mood=L,j!=null&&(window.clearTimeout(j),j=null),V>0&&L!=="idle"&&(j=window.setTimeout(()=>{l.dataset.mood="idle",Wr(),j=null},V))}function kc(){return Je.scrollHeight-Je.scrollTop-Je.clientHeight<60}function p(){se?Dt.classList.add("visible"):(requestAnimationFrame(()=>{Je.scrollTo({top:Je.scrollHeight,behavior:"smooth"}),ke=Date.now()}),Dt.classList.remove("visible"))}Je.addEventListener("scroll",()=>{Date.now()-ke<200||(kc()?(se=!1,Dt.classList.remove("visible")):(se=!0,Dt.classList.add("visible")))},{passive:!0}),Dt.addEventListener("click",()=>{se=!1,ke=Date.now(),Je.scrollTo({top:Je.scrollHeight,behavior:"smooth"}),Dt.classList.remove("visible")});function x(){let L=g==="observer"&&!_;Ze.disabled=L,bn.disabled=L,yn.disabled=L;for(let V of Array.from(qn.querySelectorAll(".questionPromptInput")))V.disabled=L}function A(L){if(W=L,l.dataset.showDetails=L?"true":"false",sn.textContent=W?"Collapse":`Show all (${y.length})`,W)for(let V of y){V.style.display="";let ee=V.dataset.status,G=ee==="success"||ee==="error"||ee==="info";V.classList.toggle("compact",!1)}else for(let V=0;V<y.length;V++){let ee=y[V],G=V>=y.length-2;ee.style.display=G?"":"none";let J=ee.dataset.status,Me=J==="success"||J==="error"||J==="info";ee.classList.toggle("compact",Me)}}function O(){l.style.display="",S.classList.remove("closing"),S.classList.add("open"),de(),Zt("idle"),e.onOpen?.(),Ze.disabled||Ze.focus()}function $(){if(Ce(),!S.classList.contains("open")){e.onClose?.();return}S.classList.remove("open"),S.classList.add("closing"),Zt("idle");let L=()=>{S.classList.remove("closing"),S.removeEventListener("animationend",L)};S.addEventListener("animationend",L),e.onClose?.()}function X(){l.style.display=""}function ce(){$(),l.style.display="none"}function pe(L,V,ee){let G=Ft(V),J=ee?.blocks;if(!G&&(!J||J.length===0))return;let Me=document.createElement("div");Me.className=`entry message ${L}`;let me=document.createElement("div");me.className="bubble",L==="assistant"?me.appendChild(cy(G,J)):me.textContent=G;let je=document.createElement("div");je.className="stamp",je.textContent=ll(Date.now()),Me.appendChild(me),Me.appendChild(je),Je.appendChild(Me),L==="assistant"&&I&&Ae&&(Ae=!1,Wr()),B=!0,ae(),L==="user"?Zt("typing",1200):L==="assistant"?Zt("success",1400):Zt("running",900),p()}function xe(){for(let L of Array.from(Je.querySelectorAll(".entry.message")))L.remove();B=!1,Ns(void 0),ae()}function Ue(L){let V=E.get(L);if(V)return V;let ee=document.createElement("div");ee.className="entry trace pending";let G=document.createElement("div");G.className="traceTop";let J=document.createElement("div");J.className="traceMeta";let Me=document.createElement("span");Me.className="traceStage",Me.textContent="step";let me=document.createElement("div");me.className="traceTitle";let je=document.createElement("div");je.className="traceTs",J.appendChild(Me),J.appendChild(me),G.appendChild(J),G.appendChild(je);let Tt=document.createElement("div");return Tt.className="traceDetail",ee.appendChild(G),ee.appendChild(Tt),E.set(L,ee),y.push(ee),Je.appendChild(ee),ee}function Ve(L,V){let ee=Number(V.ts)||Date.now(),G=Yb(V),J=L.querySelector(".traceTop"),me=J.querySelector(".traceMeta").querySelector(".traceStage"),je=J.querySelector(".traceTitle"),Tt=J.querySelector(".traceTs"),nt=L.querySelector(".traceDetail"),ct=qf(V.title||"");je.textContent=ct.plainTitle||"Step",me.textContent=ct.stage||V.kind||"step",me.style.display=ct.stage||V.kind==="status"||V.kind==="plan"||V.kind==="thought"?"":"none",Tt.textContent=ll(ee),nt.innerHTML="";let Ut=Array.isArray(V.detailBlocks)?V.detailBlocks:[],ln=Ft(V.detail||"");if(Ut.length>0){for(let Wn of Ut){let Ou=Wf(Wn);Ou&&nt.appendChild(Ou)}if(ln){let Wn=document.createElement("div");Wn.className="rvLine",Wn.appendChild(Gr(ln)),nt.insertBefore(Wn,nt.firstChild)}nt.style.display=""}else if(ln){let Wn=(V.kind==="thought"||V.kind==="tool_start"||V.kind==="tool_result",1200);ln.length>Wn?nt.appendChild(xa(ln,Wn)):nt.appendChild(Gr(ln)),nt.style.display=""}else nt.style.display="none";L.classList.remove("pending","success","error","info"),L.classList.add(G),L.dataset.status=G,L.dataset.kind=V.kind,L.dataset.visibility=ty(V);let un=G==="success"||G==="error"||G==="info";L.classList.toggle("compact",!W&&un),G==="error"?Zt("error",2200):G==="success"?Zt("success",1200):G==="pending"&&Zt("running",800)}function Ye(L){let V=Ft(L.title||"");if(!V||V.toLowerCase()==="assistant update")return;let ee=L.id||Hf("timeline");if(L.id&&w.has(ee))return;w.add(ee);let G=Qb(L),J=G==="run"||G.startsWith("tool:")||L.kind==="tool_result"||L.kind==="status"&&E.has(G),Me=Ue(J?G:`${G}:${ee}`);Ve(Me,{...L,title:V}),L.kind==="thought"&&I&&Ae&&(Ae=!1,Wr()),V.toLowerCase()==="run completed"&&A(!1);let me=y.length;if(vt.textContent=`${me} step${me!==1?"s":""}`,Fn.classList.toggle("visible",me>0),!W){sn.textContent=`Show all (${me})`;for(let je=0;je<y.length;je++){let Tt=y[je],nt=je>=y.length-2;Tt.style.display=nt?"":"none"}}p()}function Bt(){w.clear(),E.clear(),y.length=0;for(let L of Array.from(Je.querySelectorAll(".entry.trace")))L.remove();Fn.classList.remove("visible"),vt.textContent="0 steps"}function Ht(L){let V=!!L?.visible;an.classList.toggle("visible",V),fo.textContent=L?.text||"Looks like a new request. Start a new task?",d.textContent=L?.primaryLabel||"Start new",k.textContent=L?.secondaryLabel||"Continue"}function wr(L){let V=String(L||"ready");Be.textContent=V;let ee=V.toLowerCase();ee.includes("error")||ee.includes("failed")?Zt("error",1800):ee==="ready"||ee.includes("complete")?Zt("idle"):Zt("running",1e3)}function zt(L){I=L,L?Ae=!0:Ae=!1,Wr(),Lt.classList.toggle("visible",L),on.style.display=L?"none":"",Ie.style.display=L?"none":"",Rn.classList.toggle("active",L),ae()}function tt(L,V){g=L,_=L==="observer"?V?.canComposeInObserver===!0:!0,x(),Ne.classList.remove("controller","observer"),Ne.classList.add(L),L==="controller"?(Ne.textContent="active",gn.style.display="none",Ze.placeholder=`Ask ${t} to act on this website...`):(Ne.textContent="observer",V?.canTakeControl!==!1?gn.style.display="":gn.style.display="none",V?.note?Ze.placeholder=V.note:_?Ze.placeholder="Send to take control and run here.":V?.activeLogicalTabId&&V?.localLogicalTabId&&V.activeLogicalTabId!==V.localLogicalTabId?Ze.placeholder=`Observing: ${t} is acting in tab #${V.activeLogicalTabId}`:Ze.placeholder="Observer mode. Take control to run actions here.")}function at(){j!=null&&(window.clearTimeout(j),j=null),ue&&(window.clearTimeout(ue),ue=null),ie&&(window.clearTimeout(ie),ie=null),document.removeEventListener("keydown",ar),a.remove(),s.remove()}u.addEventListener("click",()=>{S.classList.contains("open")?$():O()}),q.addEventListener("click",L=>{L.stopPropagation(),de()}),v.addEventListener("click",()=>{de(),O()}),Mt.addEventListener("click",()=>$()),Ie.addEventListener("click",L=>{L.stopPropagation(),Oe()}),l.addEventListener("click",L=>{ne&&!yt.contains(L.target)&&L.target!==Ie&&Ce()}),Qe.addEventListener("click",()=>{Ce(),I&&e.onCancelRun?(H="new_task",Ht({visible:!0,text:"A task is in progress. Cancel it and start new?",primaryLabel:"Cancel & start new",secondaryLabel:"Keep running"})):e.onNewTask?.()}),Yt.addEventListener("click",()=>{Ce(),I&&e.onCancelRun?(H="end_task",Ht({visible:!0,text:"A task is in progress. Cancel and end it?",primaryLabel:"Cancel & end",secondaryLabel:"Keep running"})):e.onEndTask?.()}),gn.addEventListener("click",()=>{Ce(),e.onRequestControl?.()}),Lt.addEventListener("click",()=>{e.onCancelRun?.()}),sn.addEventListener("click",()=>{A(!W)}),d.addEventListener("click",()=>{if(H){let L=H;H=null,Ht({visible:!1}),e.onCancelRun?.(),L==="new_task"?e.onNewTask?.():L==="end_task"&&e.onEndTask?.();return}e.onTaskSuggestionPrimary?.()}),k.addEventListener("click",()=>{if(H){H=null,Ht({visible:!1});return}e.onTaskSuggestionSecondary?.()}),Ze.addEventListener("input",()=>{Ze.style.height="auto",Ze.style.height=`${Math.min(96,Math.max(44,Ze.scrollHeight))}px`}),qn.addEventListener("submit",L=>{if(L.preventDefault(),Ze.disabled||!ze?.questions?.length)return;let V={},ee=[],G=null;for(let me of ze.questions){let je=Ho(me.key);if(!je)continue;let Tt=Ft(je.value),nt=me.required!==!1;if(!Tt&&nt){je.classList.add("invalid"),G||(G=je);continue}if(!Tt){je.classList.remove("invalid"),delete Te[me.key],ee.push(`${me.key}: (no answer provided)`);continue}je.classList.remove("invalid"),Te[me.key]=Tt,V[me.key]=Tt,ee.push(`${me.key}: ${Tt}`)}if(G){G.focus();return}let J=ze.questions.map(me=>me.key),Me=ee.length?ee.join(`
|
|
1953
|
+
`):J.map(me=>`${me}: (no answer provided)`).join(`
|
|
1954
|
+
`);e.onSend(Me,{askUserAnswers:{answersByKey:V,rawText:Me,keys:J}})}),bn.addEventListener("click",()=>{if(!Ze.disabled){if(e.onCancelQuestionFlow){e.onCancelQuestionFlow();return}e.onCancelRun?.()}}),Ze.addEventListener("keydown",L=>{L.key==="Enter"&&!L.shiftKey&&!L.isComposing&&(L.preventDefault(),we.requestSubmit())}),we.addEventListener("submit",L=>{if(L.preventDefault(),Ze.disabled)return;let V=Ft(Ze.value);V&&(Ht({visible:!1}),e.onSend(V),Ze.value="",Ze.style.height="44px")}),i.addEventListener("keydown",L=>{let V=L;V.key==="Escape"&&S.classList.contains("open")&&(V.stopPropagation(),$())});let ar=L=>{L.code==="Period"&&L.shiftKey&&(L.metaKey||L.ctrlKey)&&(L.preventDefault(),L.stopPropagation(),S.classList.contains("open")?$():O())};document.addEventListener("keydown",ar);let cr=null,Mu=L=>{if(!cr)return;let V=cr.startX-L.clientX,ee=L.clientY-cr.startY,G=Math.max(320,Math.min(window.innerWidth-16,cr.startW+V)),J=Math.max(460,Math.min(window.innerHeight-16,cr.startH+ee));S.style.width=`${G}px`,S.style.height=`${J}px`},Lu=()=>{cr=null,window.removeEventListener("pointermove",Mu),window.removeEventListener("pointerup",Lu)};if(Ot.addEventListener("pointerdown",L=>{window.matchMedia("(max-width: 640px)").matches||(L.preventDefault(),cr={startX:L.clientX,startY:L.clientY,startW:S.getBoundingClientRect().width,startH:S.getBoundingClientRect().height},window.addEventListener("pointermove",Mu),window.addEventListener("pointerup",Lu))}),T){let L=()=>{T.style.display="none",h.style.display="grid"};T.addEventListener("error",L,{once:!0}),h.style.display="none"}if(Q){let L=()=>{Q.style.display="none",fe.style.display="grid"};Q.addEventListener("error",L,{once:!0}),fe.style.display="none"}tt("controller"),A(!1),P.length>0&&Ke(P);let t_="",n_=new Map;function Bh(L){}let xc=!1;function Uh(){xc=!0,Ln.classList.add("open")}function Mi(){xc=!1,Ln.classList.remove("open")}on.addEventListener("click",L=>{L.stopPropagation(),xc?Mi():Uh()}),vn.addEventListener("click",()=>Mi()),cn.addEventListener("click",()=>{Mi(),e.onNewTask?.()});let Du="";function Fh(L){let V=L.map(G=>`${G.id}|${G.summary}|${G.status}|${G.updatedAt}|${G.isActive}`).join(";;");if(V===Du)return;Du=V;let ee=L.find(G=>G.isActive);if(ee){let G=ee.summary.length>40?ee.summary.slice(0,40)+"...":ee.summary;ot.textContent=G||"Current task"}else ot.textContent="Current task";Qt.style.display=L.length>1?"flex":"none",$r.innerHTML="";for(let G of L){let J=document.createElement("div");J.className=`conversationItem ${G.status}${G.isActive?" active":""}`,J.dataset.id=G.id;let Me=document.createElement("span");Me.className="conversationDot";let me=document.createElement("div");me.className="conversationContent";let je=document.createElement("div");je.className="conversationSummary",je.textContent=G.summary.length>60?G.summary.slice(0,60)+"...":G.summary;let Tt=document.createElement("div");Tt.className="conversationMeta";let nt=G.status==="running"?"Running":G.status==="paused"?"Paused":G.status==="completed"?"Done":G.status;Tt.textContent=`${nt} \xB7 ${ll(G.updatedAt)}`,me.appendChild(je),me.appendChild(Tt);let ct=document.createElement("div");ct.className="conversationActions";let Ut=document.createElement("button");Ut.type="button",Ut.className="conversationDeleteBtn",Ut.textContent="\xD7",Ut.addEventListener("click",ln=>{ln.stopPropagation(),e.onDeleteConversation?.(G.id)}),ct.appendChild(Ut),J.appendChild(Me),J.appendChild(me),J.appendChild(ct),J.addEventListener("click",()=>{Mi(),e.onSwitchConversation?.(G.id)}),$r.appendChild(J)}}function Hh(L){$r.querySelectorAll(".conversationItem").forEach(ee=>{ee.dataset.id===L?ee.classList.add("active"):ee.classList.remove("active")})}function qh(L){Er=L.taskId;let V=L.rootUserInput.length>50?L.rootUserInput.slice(0,50)+"...":L.rootUserInput;Mn.innerHTML="";let ee=document.createElement("span");ee.className="pausedTaskText",ee.textContent=`Paused: "${V}"`;let G=document.createElement("div");G.className="pausedTaskActions";let J=document.createElement("button");J.type="button",J.className="pausedTaskResumeBtn",J.textContent="Resume",J.addEventListener("click",()=>e.onResumeTask?.(Er));let Me=document.createElement("button");Me.type="button",Me.className="pausedTaskCancelBtn",Me.textContent="Cancel",Me.addEventListener("click",()=>e.onCancelPausedTask?.(Er)),G.appendChild(J),G.appendChild(Me),Mn.appendChild(ee),Mn.appendChild(G),Mn.classList.add("visible")}function $h(){Er="",Mn.classList.remove("visible")}function Wh(){return Je.scrollTop}function Vh(L){requestAnimationFrame(()=>{Je.scrollTop=L})}return{addMessage:pe,setQuestionPrompt:Ns,clearMessages:xe,addTimelineEvent:Ye,clearTimeline:Bt,setTaskSuggestion:Ht,setStatus:wr,setRunning:zt,setExecutionMode:tt,setShortcuts:Ke,showGreeting:te,dismissGreeting:de,setVisitorName:Pe,open:O,close:$,show:X,hide:ce,destroy:at,setTabs:Bh,setConversations:Fh,setActiveConversationId:Hh,getScrollPosition:Wh,setScrollPosition:Vh,showPausedTaskBanner:qh,hidePausedTaskBanner:$h}}var Gf=3,ly="rover:shared:",uy="rover:channel:",fl=2*6e4,zf=9e4,pl=45e3,hl=2e4,dy=45e3;function oe(){return Date.now()}function fr(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function Sa(e){let t=String(e||"").trim();if(!t)return"";try{return new URL(t,window.location.href).toString()}catch{return t}}function Xf(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}}var fy=new Set(["idle","running","awaiting_user","paused","blocked","completed","failed","cancelled"]);function py(e){if(!e||typeof e!="object")return;let t=typeof e.taskId=="string"?e.taskId.trim():"";if(!t)return;let n=fy.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:gl(e.workerContext),uiMessages:Array.isArray(e.uiMessages)?e.uiMessages.slice(-5).map(r=>({id:String(r?.id||fr("msg")),role:r?.role==="user"||r?.role==="assistant"||r?.role==="system"?r.role:"system",text:String(r?.text||""),blocks:ss(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(-5).map(r=>({id:String(r?.id||fr("timeline")),kind:String(r?.kind||"status"),title:String(r?.title||"Step"),detail:typeof r?.detail=="string"?r.detail:void 0,detailBlocks:ss(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}}function hy(e){if(!e||typeof e!="object")return;let t={},n=0;for(let r of Object.keys(e)){if(n>=20)break;let o=py(e[r]);o&&(t[o.taskId]=o,n++)}return Object.keys(t).length>0?t:void 0}function Kf(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 ss(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=Kf(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 jf(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=Kf(o);s!==void 0&&r.push(s)}return r}function gl(e){if(!e||typeof e!="object")return;let t=Array.isArray(e.pendingAskUser?.questions)?e.pendingAskUser.questions.map((l,u)=>{let m=String(l?.key||l?.id||"").trim()||`clarification_${u+1}`,T=String(l?.query||l?.question||"").trim();if(T)return{key:m,query:T,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(-It.uiMessages).map(u=>({role:typeof u?.role=="string"?u.role:"assistant",content:typeof u?.content=="string"?u.content:""})).filter(u=>!!u.content),s=Array.isArray(e.history)?o(e.history):[],i=jf(e.plannerHistory,It.plannerHistory),a=jf(e.agentPrevSteps,It.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,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 ml(e,t){return{version:Gf,siteId:e,sessionId:t,seq:1,updatedAt:oe(),lease:void 0,tabs:[],nextLogicalTabId:1,activeLogicalTabId:void 0,uiMessages:[],timeline:[],uiStatus:void 0,activeRun:void 0,taskEpoch:1,task:void 0,workerContext:void 0,workflowLock:void 0,tasks:void 0,activeTaskId:void 0}}function rs(e,t,n){let r=ml(t,n);if(!e||typeof e!="object")return r;let o={...r,version:Gf,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:Array.isArray(e.uiMessages)?e.uiMessages.slice(-It.uiMessages).map(a=>({id:String(a?.id||fr("msg")),role:a?.role==="user"||a?.role==="assistant"||a?.role==="system"?a.role:"system",text:String(a?.text||""),blocks:ss(a?.blocks),ts:Number(a?.ts)||oe(),sourceRuntimeId:typeof a?.sourceRuntimeId=="string"?a.sourceRuntimeId:void 0})).filter(a=>!!a.text||!!a.blocks?.length):[],timeline:Array.isArray(e.timeline)?e.timeline.slice(-It.timelineEvents).map(a=>({id:String(a?.id||fr("timeline")),kind:String(a?.kind||"status"),title:String(a?.title||"Step"),detail:typeof a?.detail=="string"?a.detail:void 0,detailBlocks:ss(a?.detailBlocks),status:a?.status==="pending"||a?.status==="success"||a?.status==="error"||a?.status==="info"?a.status:void 0,ts:Number(a?.ts)||oe(),sourceRuntimeId:typeof a?.sourceRuntimeId=="string"?a.sourceRuntimeId:void 0})).filter(a=>!!a.title):[],taskEpoch:Math.max(1,Number(e.taskEpoch)||1),task:Xf(e.task),workerContext:gl(e.workerContext),uiStatus:typeof e.uiStatus=="string"?e.uiStatus:void 0,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"?hy(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`),o}var os=class os{constructor(t){D(this,"siteId");D(this,"sessionId");D(this,"runtimeId");D(this,"leaseMs");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.heartbeatMs=Math.max(800,Number(t.heartbeatMs)||2e3),this.maxMessages=Math.max(20,Number(t.maxMessages)||It.uiMessages),this.maxTimeline=Math.max(20,Number(t.maxTimeline)||It.timelineEvents),this.onRoleChange=t.onRoleChange,this.onStateChange=t.onStateChange,this.onSwitchRequested=t.onSwitchRequested,this.onTaskTabsExhausted=t.onTaskTabsExhausted,this.key=`${ly}${this.siteId}:${this.sessionId}`,this.channelName=`${uy}${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)<=dy:!1}isTabVisibleInScope(t,n,r){return t.runtimeId?this.isRuntimeTabFresh(t,n):t.external?n-this.tabFreshnessTs(t)<=fl:t.detachedReason==="opened_pending_attach"?n-this.tabFreshnessTs(t)<=hl:r==="context"?!1:t.detachedReason==="navigation_handoff"?n-this.tabFreshnessTs(t)<=pl:n-this.tabFreshnessTs(t)<=zf}normalizeDraftTabs(t){let n=new Map;for(let h of t.tabs){if(!Number.isFinite(Number(h.logicalTabId))||Number(h.logicalTabId)<=0)continue;let b=n.get(h.logicalTabId);this.isBetterTabCandidate(h,b)&&n.set(h.logicalTabId,h)}let r=[],o=new Set;for(let h of t.tabs){if(o.has(h.logicalTabId))continue;let b=n.get(h.logicalTabId);b&&b===h&&(r.push(b),o.add(b.logicalTabId))}for(let[h,b]of n.entries())o.has(h)||(r.push(b),o.add(h));let s=new Map;for(let h of r){if(!h.runtimeId)continue;let b=s.get(h.runtimeId);this.isBetterTabCandidate(h,b)&&s.set(h.runtimeId,h)}if(t.tabs=r.filter(h=>!h.runtimeId||s.get(h.runtimeId)===h).sort((h,b)=>h.logicalTabId-b.logicalTabId),!t.tabs.length){t.activeLogicalTabId=void 0,t.nextLogicalTabId=1;return}let i=oe(),a=t.activeLogicalTabId?t.tabs.find(h=>h.logicalTabId===t.activeLogicalTabId):void 0,c=t.tabs.find(h=>h.runtimeId===this.runtimeId),u=[...t.tabs.filter(h=>this.isRuntimeTabFresh(h,i))].sort((h,b)=>this.tabFreshnessTs(b)-this.tabFreshnessTs(h))[0],m=a?.logicalTabId;a?(!a.runtimeId||!this.isRuntimeTabFresh(a,i))&&(m=c?.logicalTabId||u?.logicalTabId||a.logicalTabId):m=c?.logicalTabId||u?.logicalTabId||t.tabs[0]?.logicalTabId,t.activeLogicalTabId=m;let T=t.tabs.reduce((h,b)=>Math.max(h,b.logicalTabId),0);t.nextLogicalTabId=Math.max(Number(t.nextLogicalTabId)||1,T+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 u=this.taskTabMapping.get(l.logicalTabId);if(u){let m=c.get(u);m||(m=new Set,c.set(u,m)),m.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)<=fl;let u=a-this.tabFreshnessTs(l);return l.detachedReason==="navigation_handoff"?u<=pl:l.detachedReason==="opened_pending_attach"?u<=hl:u<=zf}),s){this.normalizeDraftTabs(t);let l=t.tabs.filter(b=>this.isRuntimeTabFresh(b,a)),u=l.find(b=>b.logicalTabId===t.activeLogicalTabId),m=l.find(b=>b.runtimeId===this.runtimeId),T=[...l].sort((b,v)=>this.tabFreshnessTs(v)-this.tabFreshnessTs(b))[0],h=u?.logicalTabId||m?.logicalTabId||T?.logicalTabId;t.tabs=t.tabs.filter(b=>b.runtimeId?!!h&&b.logicalTabId===h:b.external?i&&a-this.tabFreshnessTs(b)<=fl:!1),t.activeLogicalTabId=h||t.tabs.find(b=>b.runtimeId)?.logicalTabId||t.tabs[0]?.logicalTabId}if(this.normalizeDraftTabs(t),this.onTaskTabsExhausted&&c.size>0){let l=new Set(t.tabs.map(u=>u.logicalTabId));for(let[u,m]of c){let T=!1;for(let h of m)if(l.has(h)){T=!0;break}T||this.onTaskTabsExhausted(u)}}}resetDraftToSingleCurrentTab(t,n,r){let o=oe(),s=Sa(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=rs(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=rs(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),this.notifyRoleChange(),this.onStateChange?.(this.state,"local"))}stop(){if(this.started){this.started=!1,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.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=Xf(t)||r.task)})}hydrateExternalState(t){let n=rs(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||fr("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.activeRun=void 0,o.workerContext=void 0,this.resetDraftToSingleCurrentTab(o,window.location.href,document.title||void 0)}),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,n=r.task)}),n}markTaskActivity(t,n=oe()){t!=="system"&&this.mutate("local",r=>{if(!r.task){r.task={taskId:fr("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))})}setWorkerContext(t){this.mutate("local",n=>{if(!t){n.workerContext=void 0;return}n.workerContext=gl(t)})}setStatus(t){this.mutate("local",n=>{n.uiStatus=t||void 0})}appendMessage(t){let n={id:t.id||fr("msg"),role:t.role,text:String(t.text||""),blocks:ss(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:fr("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}appendTimeline(t){let n={id:t.id||fr("timeline"),kind:String(t.kind||"status"),title:String(t.title||"Step"),detail:t.detail?String(t.detail):void 0,detailBlocks:ss(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))}),n}clearTimeline(){this.mutate("local",t=>{t.timeline=[]})}setActiveRun(t){this.mutate("local",n=>{if(!t){n.activeRun=void 0;return}if(n.task&&n.task.status!=="running"){n.activeRun=void 0;return}n.activeRun={runId:t.runId,text:t.text,runtimeId:this.runtimeId,startedAt:n.activeRun?.runId===t.runId?n.activeRun.startedAt:oe(),updatedAt:oe()}})}requestControl(){return this.claimLease(!0)}registerCurrentTab(t,n,r){let o=Sa(t),s=typeof r?.handoffId=="string"?r.handoffId.trim():"",i=Number(r?.sourceLogicalTabId),a;return this.mutate("local",c=>{let l=oe(),m=!!(c.lease&&c.lease.expiresAt>l)?c.lease?.holderRuntimeId:void 0,T=!m||m===this.runtimeId,h=c.tabs.find(v=>v.runtimeId===this.runtimeId);if(h)h.url=o||h.url,h.title=n||h.title,h.updatedAt=l,h.detachedAt=void 0,h.detachedReason=void 0,h.handoffId=void 0,h.handoffRunId=void 0,h.handoffTargetUrl=void 0,h.handoffCreatedAt=void 0,a=h.logicalTabId;else{let v;if(s&&(v=c.tabs.find(M=>{if(M.runtimeId||String(M.handoffId||"").trim()!==s||Number.isFinite(i)&&i>0&&M.logicalTabId!==i)return!1;let q=l-Number(M.handoffCreatedAt||M.updatedAt||M.openedAt||0);return q>=0&&q<=3e4})),v||(v=c.tabs.find(M=>!M.runtimeId&&!M.external&&M.url===o&&l-M.openedAt<18e4)),v)v.runtimeId=this.runtimeId,v.url=o||v.url,v.title=n||v.title,v.updatedAt=l,v.detachedAt=void 0,v.detachedReason=void 0,v.handoffId=void 0,v.handoffRunId=void 0,v.handoffTargetUrl=void 0,v.handoffCreatedAt=void 0,a=v.logicalTabId;else{let M=c.nextLogicalTabId++;c.tabs.push({logicalTabId:M,runtimeId:this.runtimeId,url:o,title:n,openedAt:l,updatedAt:l,external:!1,detachedAt:void 0,detachedReason:void 0}),a=M}}a&&(c.tabs=c.tabs.filter(v=>{if(v.logicalTabId===a||v.runtimeId||v.external)return!0;if(s&&String(v.handoffId||"").trim()===s)return!1;let M=l-this.tabFreshnessTs(v);return!(!String(v.url||"").trim()&&M>hl||o&&v.url===o&&M<=pl)}));let b=c.activeLogicalTabId?c.tabs.find(v=>v.logicalTabId===c.activeLogicalTabId):void 0;(!b||!b.runtimeId||b.logicalTabId===a||T)&&(c.activeLogicalTabId=a)}),this.notifyRoleChange(),this.localLogicalTabId||a||1}registerOpenedTab(t){let n=Sa(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);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=fr("rpc"),c=window.setTimeout(()=>{this.pendingRpcRequests.delete(a),i(new Error(`Cross-tab RPC timed out after ${o}ms (method=${n}, target=${t})`))},o);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){let n=!1;return this.mutate("local",r=>{let o=r.workflowLock;if(o&&o.runtimeId!==this.runtimeId&&o.expiresAt>oe()){let s=r.tabs.find(a=>a.runtimeId===o.runtimeId);if(s&&s.updatedAt>oe()-2*this.heartbeatMs){n=!1;return}}r.workflowLock={runtimeId:this.runtimeId,runId:t,lockedAt:oe(),expiresAt:oe()+this.leaseMs*5},n=!0}),n}clearActiveRunRuntimeId(t){this.mutate("local",n=>{n.activeRun&&n.activeRun.runId===t&&(n.activeRun.runtimeId="")})}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(),u=c.tabs.find(m=>m.runtimeId===n);u&&(u.runtimeId=void 0,u.updatedAt=l,u.detachedAt=l,u.detachedReason=o?"navigation_handoff":"tab_close",u.handoffId=o,u.handoffRunId=s,u.handoffTargetUrl=i,u.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(m=>m.logicalTabId===c.activeLogicalTabId)&&(c.activeLogicalTabId=this.localLogicalTabId||c.tabs[0]?.logicalTabId)}),this.notifyRoleChange()}heartbeat(){if(this.closing)return;this.heartbeatCount++;let t=Sa(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%os.LS_HEARTBEAT_DIVISOR!==0;this.mutate("local",l=>{let u=l.tabs.find(Q=>Q.runtimeId===this.runtimeId);if(u)u.url=t||u.url,u.title=n||u.title,u.updatedAt=oe(),u.detachedAt=void 0,u.detachedReason=void 0;else{let Q=oe(),fe=l.nextLogicalTabId++;l.tabs.push({logicalTabId:fe,runtimeId:this.runtimeId,url:t,title:n,openedAt:Q,updatedAt:Q,external:!1,detachedAt:void 0,detachedReason:void 0})}let m=l.lease,T=!m||m.expiresAt<=oe(),h=m&&m.holderRuntimeId!==this.runtimeId&&m.expiresAt>oe()?m.holderRuntimeId:void 0,b=h?l.tabs.find(Q=>Q.runtimeId===h):void 0,v=!!(b&&b.updatedAt>oe()-2*this.heartbeatMs),M=l.workflowLock?.runtimeId,q=M?l.tabs.find(Q=>Q.runtimeId===M):void 0,R=!!(q&&q.runtimeId&&q.runtimeId!==this.runtimeId&&q.updatedAt>oe()-2*this.heartbeatMs);if(l.workflowLock&&l.workflowLock.runtimeId!==this.runtimeId&&(l.workflowLock.expiresAt<=oe()||!R)&&(l.workflowLock=void 0),l.activeRun?.runtimeId&&l.activeRun.runtimeId!==this.runtimeId){let Q=l.tabs.find(ge=>ge.runtimeId===l.activeRun?.runtimeId);Q&&Q.updatedAt>oe()-2*this.heartbeatMs||(l.activeRun=void 0)}let S=!!(l.activeRun?.runtimeId&&l.activeRun.runtimeId!==this.runtimeId),F=!!(l.workflowLock&&l.workflowLock.runtimeId!==this.runtimeId&&l.workflowLock.expiresAt>oe()),z=!!(h&&!v&&!S&&!F);(T||m?.holderRuntimeId===this.runtimeId||z)&&(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.leaseMs*5),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}))},os.ROLE_CHANGE_DEBOUNCE_MS))}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=rs(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=rs(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.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 ml(this.siteId,this.sessionId);let n=JSON.parse(t);return rs(n,this.siteId,this.sessionId)}catch(t){return console.warn("[rover] Failed to load shared state from localStorage:",t),ml(this.siteId,this.sessionId)}}persistState(){try{window.localStorage.setItem(this.key,JSON.stringify(this.state))}catch{}}};D(os,"LS_HEARTBEAT_DIVISOR",5),D(os,"ROLE_CHANGE_DEBOUNCE_MS",200);var Ra=os;var Zf="https://extensionrouter.rtrvr.ai",Yf="rvrsess_";function is(e,t){let n=Number(e);return Number.isFinite(n)?n:t}function my(e,t=8e3){let n=String(e??"");return n.length<=t?n:`${n.slice(0,t)}\u2026`}function gy(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 bl(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=>bl(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)}:${bl(r)}`).join(",")}}`:JSON.stringify(String(e))}function by(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 Qf(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,u=i.map(h=>String(h?.id||h?.toolCall?.name||h?.toolName||h?.name||"")),m=a.map(h=>String(h?.id||h?.toolCall?.name||h?.toolName||h?.name||"")),T={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:gy(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(l?.id||""),plannerStepMarkers:u,agentStepMarkers:m},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 by(bl(T))}function yy(e){let t=Zf,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 Jf(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 vy(e){let t=yy(e),n=String(e||"").trim().replace(/\/+$/,"");return n.endsWith("/v2/rover")||n.endsWith("/extensionRouter/v2/rover")?Jf([n.replace("/extensionRouter/v2/rover","/v2/rover"),`${t}/v2/rover`]):Jf([`${t}/v2/rover`])}function xo(e,t){let n=new Error(e);return n.details=t,n}function Ty(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}var Aa=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(Yf))throw xo("Rover cloud checkpoint requires a session token (rvrsess_...).");this.endpointCandidates=vy(t.apiBase),this.endpoint=this.endpointCandidates[0]||`${Zf}/v2/rover`,this.getToken=()=>{let s=r?String(r()||"").trim():n;if(!s||!s.startsWith(Yf))throw xo("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(is(t.ttlHours,1)))),this.flushIntervalMs=Math.max(2e3,Math.floor(is(t.flushIntervalMs,3e4))),this.pullIntervalMs=Math.max(2e3,Math.floor(is(t.pullIntervalMs,3e4))),this.idlePullIntervalMs=12e4,this.minFlushIntervalMs=Math.max(1e3,Math.floor(is(t.minFlushIntervalMs,2500))),this.maxSnapshotBytes=Math.max(64e3,Math.min(1048576,Math.floor(is(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=xo(`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:xo(`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=Qf(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(is(t?.updatedAt,0))),o=String(t?.digest||"").trim()||Qf(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:Ty(),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 xo("Checkpoint snapshot exceeds maxSnapshotBytes limit.",{action:t,size:c.length,maxSnapshotBytes:this.maxSnapshotBytes,code:"SNAPSHOT_TOO_LARGE"});let l=c.length<6e4,{response:u,payload:m}=await this.requestJson("/snapshot",{method:"POST",headers:{"Content-Type":"text/plain"},keepalive:l,body:c});if(!u.ok||!m?.success)throw xo(`Checkpoint HTTP ${u.status}`,{action:t,status:u.status,payload:m});return{saved:!!m?.data?.saved,stale:m?.data?.stale===!0,checkpoint:m?.data?.checkpoint,updatedAt:Number(m?.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 xo(`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:my(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 _y="rover-runtime-state-db",Ca="runtime-state",yl=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{}}},vl=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(_y,1);r.onupgradeneeded=()=>{let o=r.result;o.objectStoreNames.contains(Ca)||o.createObjectStore(Ca)},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(Ca,t),a=i.objectStore(Ca);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 ep(){let e=new yl,t=new vl;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 Ey="rover_xdr_";var wy=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 np(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&&wy.has(r)?`${n[n.length-3]}.${r}`:r}function Tl(e){return`${Ey}${e.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,40)}`}function Na(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 tp(e){let t=String(e||"").trim();return!t||t==="/"?"/":t.replace(/\/\/+/g,"/").replace(/\/+$/,"")||"/"}function ky(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 _l(e,t){let n=Na(e),r=Na(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()||tp(o.pathname)!==tp(s.pathname)?!1:ky(o.searchParams,s.searchParams)}catch{return n===r}}function rp(e,t){try{let n=Tl(e),r=np(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 El(e,t){try{let n=Tl(e),r=document.cookie.split(";"),o=Math.max(1e3,Number(t?.maxAgeMs)||300*1e3),s=Na(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[u,...m]=l.trim().split("=");if(u===n){let T=m.join("="),h=JSON.parse(decodeURIComponent(T));if(!h.timestamp||Date.now()-h.timestamp>=o)continue;let b=String(h.handoffId||h.handoff?.handoffId||"").trim();if(!b||a&&b!==a)continue;if(c){let v=Na(h.targetUrl||h.handoff?.targetUrl||"");if(!v||!s||!_l(v,s))continue}if(h.sourceHost){let v=String(h.sourceHost||"").trim().toLowerCase();if(v&&i&&v===i&&!a)continue}if(h.sessionId&&typeof h.sessionId=="string")return h}}}catch{}return null}function Ks(e){try{let t=Tl(e),n=np(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 He(e){return String(e||"").trim()||void 0}function xy(e){let t=He(e.incomingBoundaryId),n=He(e.currentBoundaryId);return!t||t===n?!1:n?e.taskEpochAdvanced===!0&&e.hasPendingRun!==!0:e.allowBootstrapAdoption!==!1}function op(e){let t=He(e.incomingBoundaryId),n=He(e.currentBoundaryId);return t&&n&&t===n?{accept:!0,reason:"match"}:t?xy(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 Iy(){return[{kind:"create_task"},{kind:"rotate_boundary"},{kind:"assign_worker"}]}function wl(){return[{kind:"release_worker"},{kind:"clear_run"}]}function Ma(){return[{kind:"release_worker"},{kind:"clear_run"}]}function Io(){return[{kind:"archive_task"},{kind:"clear_run"},{kind:"clear_worker_state"}]}var Sy={idle:{START:{to:"running",sideEffects:()=>Iy()}},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:()=>wl()},FAIL:{to:"failed",sideEffects:e=>[...wl(),{kind:"emit_error",error:e.error}]},CANCEL:{to:"cancelled",sideEffects:()=>Ma()},RESET:{to:"idle",sideEffects:()=>Io()}},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:()=>Ma()},RESET:{to:"idle",sideEffects:()=>Io()}},paused:{RESUME:{to:"running",sideEffects:()=>[{kind:"restore_snapshot"},{kind:"assign_worker"}]},CANCEL:{to:"cancelled",sideEffects:()=>Ma()},RESET:{to:"idle",sideEffects:()=>Io()}},blocked:{UNBLOCK:{to:"running",sideEffects:()=>[{kind:"resume_from_block"}]},CANCEL:{to:"cancelled",sideEffects:()=>Ma()},FAIL:{to:"failed",sideEffects:e=>[...wl(),{kind:"emit_error",error:e.error}]},RESET:{to:"idle",sideEffects:()=>Io()}},completed:{RESET:{to:"idle",sideEffects:()=>Io()}},failed:{RESET:{to:"idle",sideEffects:()=>Io()}},cancelled:{RESET:{to:"idle",sideEffects:()=>Io()}}};function Ry(e,t,n){let o=Sy[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 Ys(e){return e==="completed"||e==="failed"||e==="cancelled"}function sp(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 ip(e,t){let n=Ry(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),Ys(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 kl(e){let t=Date.now(),n=e?.taskId||Ay(),r=e?.boundaryId||Cy();return{taskId:n,state:"idle",boundaryId:r,startedAt:t,uiMessages:[],timeline:[],tabIds:[],...e}}function Ay(){return`task_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function Cy(){return`bnd_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function La(e){return e==="running"}function ap(e){return e.resumeRequired?e.hasLiveRemoteController?"defer_remote_owner":e.policy==="never"?"cancel_resume":e.policy==="confirm"?"prompt_resume":"auto_resume":"noop"}function cp(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 lp(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 xl(e){return!!(e.localTaskStatus!=="running"||e.remoteTaskStatus&&e.remoteTaskStatus!=="running"||e.mode==="observer"&&!e.hasRemoteActiveRun)}function dp(e){let{type:t,messageRunId:n,messageTaskBoundaryId:r,currentTaskBoundaryId:o,pendingRunId:s,sharedActiveRunId:i,authoritativeActiveRunId:a,taskStatus:c,ignoredRunIds:l}=e,u=He(o),m=He(r),T=t==="run_state_transition"||t==="run_completed";if((t==="run_started"||t==="run_resumed"||T)&&u&&(!m||m!==u)&&!(T&&!!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 b=a||i;return t==="run_started"||t==="run_resumed"?!n||b&&b===n?!1:s?s!==n&&(!b||b!==n):!0:n?t==="run_completed"||t==="run_state_transition"?c!=="running"?!0:s?s!==n&&(!b||b!==n):!(b&&b===n):s?s!==n:!0:!1}function Ny(e){return Math.max(1,Number(e)||1)}function My(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 Il(e){return e==="completed"||e==="cancelled"||e==="failed"||e==="ended"}function fp(e,t,n){let r=Number(t.at)||Date.now(),o=String(t.reason||"kernel").trim()||"kernel",s=Ny(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":My(c),rotateBoundary:!1,clearPendingRun:!1,clearWorkerState:!1}}function Ly(e,t){let n=Number(e);return Number.isFinite(n)?n:t}function mp(e){let t="https://extensionrouter.rtrvr.ai",n=String(e||t).trim().replace(/\/+$/,"");if(!n)return t;if(n.endsWith("/extensionRouter/v2/rover"))return n.slice(0,-25);let r=n.match(/\/v\d+\/rover$/);return r?.[0]?n.slice(0,-r[0].length):n.endsWith("/extensionRouter")?n.slice(0,-16):n.endsWith("/v2/rover")?n.slice(0,-9):n}function pp(e){let t=new Set,n=[];for(let r of e){let o=Zs(r);!o||t.has(o)||(t.add(o),n.push(o))}return n}function Dy(e){let n=`${mp(e)}/v2/rover`,r=Zs(String(e||"").trim()),o=r.replace("/extensionRouter/v2/rover","/v2/rover");return r.endsWith("/v2/rover")||r.endsWith("/extensionRouter/v2/rover")?pp([o,n]):pp([n])}function gp(e){return Dy(e)}function Oy(e){return gp(e)[0]||`${mp(e)}/v2/rover`}function Js(e){return gp(e)}function Da(e){return Oy(e)}function Zs(e){return String(e||"").replace(/\/+$/,"")}function hp(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}function So(e){return!!e&&typeof e=="object"&&typeof e.sessionId=="string"&&Number.isFinite(Number(e.epoch))}function Oa(e){let t=Number(e);return Number.isFinite(t)?t:void 0}function Py(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=Oa(n?.currentSeq??r?.currentSeq),a=Oa(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 Qs(e){return String(e?.error||e?.data?.code||e?.code||"").trim().toUpperCase()}async function By(e){try{return await e.json()}catch{let t=await e.text().catch(()=>"");return t?{error:t}:void 0}}var pr=class pr{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=Js(t.apiBase),this.base=this.baseCandidates[0]||Da(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=Js(t),this.baseIndex=0,this.base=this.baseCandidates[0]||Da(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?Zs(this.baseCandidates[this.baseIndex]||this.base):Zs(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=Js(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=Zs(this.baseCandidates[i]||this.base);try{let c=await fetch(`${a}${t}`,n),l=await By(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=Ly(t.sessionTokenExpiresAt,Date.now()+8*6e4)),Number.isFinite(Number(t.epoch))&&(this.epoch=Math.max(1,Number(t.epoch))),t.projection&&So(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 u=Number(a[a.length-1]?.seq||0);Number.isFinite(u)&&u>this.lastSeq&&(this.lastSeq=u)}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 u=>this.requestJson("/session/open",{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify(u)}),{response:a,json:c}=await i(s);if(a.status===401&&o&&n&&(Qs(c)==="SESSION_TOKEN_EXPIRED"||Qs(c)==="SESSION_TOKEN_INVALID"||Qs(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 u=Qs(c),m=c?.data?.message||c?.error||`session/open failed (${a.status})`,T=new Error(String(m));throw T.code=u||void 0,T}let l=c.data;return this.applySessionData(l),l}syncCursorFromPayload(t){if(!t||typeof t!="object")return;let n=Oa(t?.currentEpoch??t?.sessionEpoch);n!==void 0&&(this.epoch=Math.max(1,n));let r=Oa(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:hp(),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=Qs(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:Py(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;So(l?.projection)&&this.applyProjection(l.projection);let u=String(o.conflict?.type||"").trim(),m=o.conflict?.retryable!==!1&&(u==="stale_seq"||u==="stale_epoch");if(r===0&&m)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))),So(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=hp(),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 m=c.data||{},T=m?.data||null;return Number.isFinite(Number(m?.epoch))&&(this.epoch=Math.max(1,Number(m?.epoch||this.epoch))),Number.isFinite(Number(m?.seq))&&(this.lastSeq=Math.max(0,Number(m?.seq||0))),T?{...T,clientEventId:n,retryAttempted:!0,retryExhausted:!1}:{clientEventId:n,retryAttempted:!0,retryExhausted:!1}}let l=c.conflict||s,u=(c.data||o.data||null)?.data||null;return this.fetchProjection().catch(()=>{}),{...u||{},clientEventId:n,retryAttempted:!0,retryExhausted:!0,decisionReason:u?.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"&&So(r.data?.projection)?r.data.projection:r?.data;if(!n.ok||!r?.success||!So(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>=pr.SSE_MAX_RECONNECT_ATTEMPTS){this.sseReconnectAttempts=0;return}let t=pr.SSE_BASE_DELAY_MS,n=Math.min(t*Math.pow(2,this.sseReconnectAttempts),pr.SSE_MAX_DELAY_MS),r=Math.random()*pr.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"&&So(i.projection)?i.projection:i;So(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(pr,"SSE_BASE_DELAY_MS",2e3),D(pr,"SSE_MAX_DELAY_MS",6e4),D(pr,"SSE_MAX_JITTER_MS",3e3),D(pr,"SSE_MAX_RECONNECT_ATTEMPTS",10);var Pa=pr;function ei(e){return Array.isArray(e)?e.length:0}function Sl(e){return String(e||"").trim()||void 0}function bp(e){if(!e)return 0;let t=0;String(e.pendingRun?.id||"").trim()&&(t+=4,e.pendingRun?.resumeRequired&&(t+=1),Sl(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,ei(r.history)),t+=Math.min(3,ei(r.plannerHistory)),t+=Math.min(4,ei(r.agentPrevSteps)),ei(r.pendingAskUser?.questions)>0&&(t+=3)),ei(e.taskTabScope?.touchedTabIds)>0&&(t+=1),t}function yp(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=bp(e.incomingState),r=bp(e.localState);if(n<=r)return!1;let o=Sl(e.localState.pendingRun?.taskBoundaryId||e.localState.workerState?.taskBoundaryId),s=Sl(e.incomingState.pendingRun?.taskBoundaryId||e.incomingState.workerState?.taskBoundaryId);if(o&&s&&o!==s){let i=Math.max(1,Number(e.localState.taskEpoch)||1);if(Math.max(1,Number(e.incomingState.taskEpoch)||1)<i)return!1}return!0}var Ba=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 Uy=10,vp=20,Tp=50,_p=30,Fy=5*6e4,Hy=5,as=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 Ba({maxWorkers:t?.maxConcurrentWorkers,maxQueue:t?.maxQueuedTasks,onWorkerFreed:n=>this.onWorkerSlotFreed(n)}),this.maxArchivedTasks=Math.max(1,Number(t?.maxArchivedTasks)||Uy)}createTask(t,n){let r=kl(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:kl({taskId:t}),sideEffects:[],rejectedReason:`Task ${t} not found`};let{record:o,result:s}=ip(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(-vp),timeline:n.timeline.slice(-vp),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&&Ys(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=sp(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,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)Ys(t.state)||(t.uiMessages.length>Tp&&(t.uiMessages=t.uiMessages.slice(-Tp)),t.timeline.length>_p&&(t.timeline=t.timeline.slice(-_p)))}terminateInactiveWorkers(){let t=Date.now(),n=[];for(let[r,o]of this.tasks){if(o.state!=="paused")continue;t-(o.pausedAt||t)>Fy&&this.workerPool.getWorker(r)&&(this.workerPool.release(r),n.push(r))}return n}canCreateNewTask(t){if(t>Hy)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 qy=[/\/login/i,/\/signin/i,/\/auth/i,/\/oauth/i,/\/password/i,/\/reset/i,/\/verify/i,/\/confirm/i,/\/account/i,/\/security/i,/\/2fa/i,/\/mfa/i],$y=[/data:/i,/javascript:/i,/vbscript:/i,/blob:/i],Wy=[/token/i,/secret/i,/password/i,/apikey/i,/api_key/i,/access_token/i,/refresh_token/i,/session/i,/cookie/i,/credential/i],Vy=/^(\d{1,3}\.){3}\d{1,3}$/;function Rl(e,t){let n=0,r=[],o;try{o=new URL(e)}catch{return{score:1,blocked:!1,reasons:["invalid_url"]}}for(let u of $y)if(u.test(e)){n+=3,r.push("exfiltration_scheme");break}Vy.test(o.hostname)&&(n+=2,r.push("ip_address_host")),o.hostname.split(".").length>4&&(n+=1,r.push("excessive_subdomains"));let i=qy.filter(u=>u.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(u=>Wy.some(m=>m.test(u))).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 Ep(e,t){return Rl(e,t).blocked}var ls,Ua=null,ti=!1,On=32,cs=4,zy="#6b6bff";function jy(){return document.querySelector('link[rel="icon"], link[rel="shortcut icon"]')}function wp(){let e=document.createElement("link");return e.rel="icon",e.type="image/png",document.head.appendChild(e),e}function kp(e=zy){if(ti)return!0;try{let t=jy();t&&(ls=t.href,Ua=t);let n=document.createElement("canvas");n.width=On,n.height=On;let r=n.getContext("2d");if(!r)return!1;let o=new Image;return o.crossOrigin="anonymous",o.onload=()=>{r.drawImage(o,0,0,On,On),r.beginPath(),r.arc(On-cs-1,On-cs-1,cs,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||wp();i.href=s,ti=!0},o.onerror=()=>{r.fillStyle="#1a1a2e",r.fillRect(0,0,On,On),r.fillStyle="#fff",r.font="bold 20px sans-serif",r.textAlign="center",r.textBaseline="middle",r.fillText("R",On/2,On/2),r.beginPath(),r.arc(On-cs-1,On-cs-1,cs,0,Math.PI*2),r.fillStyle=e,r.fill();let s=n.toDataURL("image/png"),i=t||wp();i.href=s,ti=!0},ls?o.src=ls:o.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEAAAAALAAAAAABAAEAAAIBAAA=",!0}catch{return!1}}function xp(){if(ti){ti=!1;try{Ua&&ls&&(Ua.href=ls),ls=void 0,Ua=null}catch{}}}function Ip(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 Sp(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 Gy=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 ni(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&&Gy.has(r)?`${n[n.length-3]}.${r}`:r}function Al(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 Rp(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=Al(o);return s?n?`=${s}`:r?`*.${s}`:s:""}function Xy(e,t){return e?t!=="host_only"||e==="*"||e.startsWith("=")||e.startsWith("*.")?e:`=${e}`:""}function Ky(e,t){let n=Rp(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 Ap(e){let t=Al(e.host||"");if(!t)return!1;let n=Array.isArray(e.allowedDomains)?e.allowedDomains.map(o=>Rp(o)).map(o=>Xy(o,e.domainScopeMode)).filter(Boolean):[];if(n.length>0)return n.some(o=>Ky(t,o));let r=Al(e.currentHost||"");return r?e.domainScopeMode==="host_only"?t===r:ni(t)===ni(r):!0}function ri(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 oi(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 Yy(e){if(e.startNewTask||!e.hasAskUserAnswers||e.taskStatus!=="running"||Math.max(0,Number(e.pendingAskUserQuestionCount)||0)<=0)return!1;let n=He(e.pendingAskUserBoundaryId),r=He(e.currentTaskBoundaryId);return!(n&&r&&n!==r)}function Cp(e){return!Yy(e)}var Qy=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 Np(e){return String(e||"").replace(/\s+/g," ").trim().slice(0,2e3)}function Mp(e){let t=String(e||"").toLowerCase().split(/[^a-z0-9]+/g).map(n=>n.trim()).filter(n=>n.length>=2&&!Qy.has(n));return new Set(t)}function Jy(e,t){let n=Mp(e),r=Mp(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 Lp(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=Np(e.previousTaskUserInput);if(!n)return{reason:"missing_previous_intent",overlap:0};let r=Np(e.previousTaskAssistantOutput);if(!r)return{reason:"missing_previous_output",overlap:0};let o=Math.max(0,Number(e.previousTaskCompletedAt)||0),s=Math.max(o,Number(e.now)||Date.now()),i=Math.max(1e3,Number(e.ttlMs)||0);if(!o||s-o>i)return{reason:"ttl_expired",overlap:0};let a=Jy(n,e.currentPrompt),c=Math.max(0,Math.min(1,Number(e.minLexicalOverlap)||0));return a<c?{reason:"low_lexical_overlap",overlap:a}:{reason:"attached",overlap:a,chatLog:[{role:"user",message:n},{role:"model",message:r}]}}var Jl=2,hc="rover:runtime:",Zy="rover:runtime-id:",Vp="rover:visitor-id:",Qa=It.uiMessages,Ja=It.timelineEvents,Zl=It.uiMessages,eu=It.plannerHistory,tu=It.prevSteps,ev=8e3,tv=12,nv=15*6e4,rv=2,ov=12e4,sv=.18,iv=30,av=3600*24*365,zp=1,cv=3e3,lv=4500,uv=12e3,dv=30,Za=240,Dp=5*6e4,ec=100,tc=12,fv=80,pv=200,hv=700,mv=8,gv=240,bv="rover:handoff-bootstrap:",jp=3e4,yv=2*6e4,vv=45e3,Tv=2e4,bi=400,_v=15e3,Ev=7,wv=80,Qr=null,Ge=null,qe=null,Y=null,N=null,tn=null,Cr=null,f=null,Lr=null,Xe="",C=null,ht=null,Wa=null,fn=[],Va=!1,fs=!1,Gp=0,Dl=0,Ol=0,nc=0,di=!1,Dr=null,kv=1500,xv=5e3,Op=1e4,Pp=1200,Xp=new Set(["error","navigation_guardrail","checkpoint_error","tab_event_conflict_exhausted"]),Iv=new Set(["ready","error","auth_required","navigation_guardrail","checkpoint_error","tab_event_conflict_exhausted"]),Ct,gr,to=!1,Lo=!1,fi=null,pi=null,no=null,vs=!1,ds="",gt="controller",Zn=!1,Ts=!1,Xn=!0,er=!1,pn=!1,rn=!1,mr=!1,Ro=[],Sv=3,Bp=1e4,De="",mt=null,st=null,nn=0,Yr=null,za=!1,Pl=!1,Bl=!1,Ul=!1,Jr=[],ps=null,hs=null;function ja(e,t,n,r){e.addEventListener(t,n,r),Jr.push({target:e,event:t,handler:n,options:r}),Jr.length>100&&Jr.length%50===0&&Rv()}function Rv(){for(let e=Jr.length-1;e>=0;e--){let t=Jr[e],n=t.target;if(n&&"isConnected"in n&&n.isConnected===!1){try{t.target.removeEventListener(t.event,t.handler,t.options)}catch{}Jr.splice(e,1)}}}var rc=null,li=0,Zr=null,Fa="",Bn,hi,mi=!1,ms=null,Oo,Po,_s=0,Av=50,Cv=100,Nv=20,Mv=3e5;function Kp(e,t){for(;e.size>t;){let n=e.keys().next();if(n.done)break;e.delete(n.value)}}function Lv(e,t){let n=e.values();for(;e.size>t;){let r=n.next();if(r.done)break;e.delete(r.value)}}var Xr=new Map,Kn=new Set,ve=null,Kt,br=0,Nr=1,xi,oc="",Z=null,Dv=new Set(["run_started","run_state_transition","run_completed","assistant","status","tool_start","tool_result","runtime_tabs_diagnostics","auth_required","navigation_guardrail","error"]),Fl={read:"rover_external_read_context",act:"rover_external_act_context"},Ga=[],Xa=new Map,Xt=new Map;function $e(e,t){Wt(e,t);let n=Xa.get(e);if(n)for(let r of n)try{r(t)}catch{}}function Yp(e,t){Xa.has(e)||Xa.set(e,new Set);let n=Xa.get(e);return n.add(t),()=>{n.delete(t)}}function Ov(e){return typeof e=="string"?{name:e}:e}function Ur(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.floor(Math.random()*1e5)}`}}function ro(){return Ur("task-boundary")}function Hr(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 Qp(e){if(e)return{handoffId:e.handoffId,targetUrl:e.targetUrl,sourceLogicalTabId:e.sourceLogicalTabId,runId:e.runId,ts:e.createdAt}}function Cl(e){return{handoffId:e.handoffId,targetUrl:e.targetUrl,sourceLogicalTabId:e.sourceLogicalTabId,runId:e.runId,createdAt:Number(e.ts)||Date.now(),consumed:!1}}function Es(e){let t=typeof e?.pendingRun?.taskBoundaryId=="string"?e.pendingRun.taskBoundaryId:void 0;if(t)return He(t);let n=typeof e?.workerState?.taskBoundaryId=="string"?e.workerState.taskBoundaryId:void 0;if(n)return He(n)}function Pv(e){let t=Es(e);return t||ro()}function Yn(){return He(De)||Es(f)}function Do(e){let t=op({source:e.source,incomingBoundaryId:e.incomingBoundaryId,currentBoundaryId:Yn(),taskEpochAdvanced:e.taskEpochAdvanced,hasPendingRun:!!f?.pendingRun,taskStatus:f?.activeTask?.status,allowBootstrapAdoption:e.allowBootstrapAdoption});return t.accept?(t.adoptedBoundaryId&&(De=t.adoptedBoundaryId),!0):!1}function nu(e=12e4){let t=Hr(f?.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 Jp(e){return e==="agent_navigation"||e==="cross_host_navigation"||e==="handoff"||e==="worker_interrupted"||e==="page_reload"}function Bv(e){if(!f||!Jp(e.resumeReason))return!1;let t=Hr(f.lastNavigationHandoff);if(!t?.targetUrl)return!1;let n=Date.now()-Number(t.createdAt||0);return!Number.isFinite(n)||n<-5e3||n>12e4?!1:_l(t.targetUrl,window.location.href)}function Uv(e){if(!mr||!Jp(e.resumeReason))return!1;let t=Hr(f?.lastNavigationHandoff);if(!t)return!1;let n=Date.now()-Number(t.createdAt||0);return Number.isFinite(n)&&n>=-5e3&&n<=jp}function yi(e){let t=lt(f?.pendingRun)?.taskBoundaryId;if(t){De=t;return}let n=In(f?.workerState)?.taskBoundaryId;if(n){De=n;return}(!De||e?.rotateIfMissing)&&(De=ro())}function Fv(e){let t=`${Zy}${e}`;try{let n=window.sessionStorage.getItem(t);if(n&&n.trim())return n.trim();let r=Ur("runtime");return window.sessionStorage.setItem(t,r),r}catch{return Ur("runtime")}}function vi(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 Ha(e){return String(e||"").trim().replace(/[^a-zA-Z0-9._:-]/g,"").slice(0,180)}function Zp(e){try{let t=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`));return t?decodeURIComponent(t[1]||""):void 0}catch{return}}function Up(e,t,n){try{let r=n?`; domain=${n}`:"";return document.cookie=`${e}=${encodeURIComponent(t)}; path=/; max-age=${av}; samesite=lax${r}`,Zp(e)===t}catch{return!1}}function Hv(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 qv(e,t){let n=`rover_vid_${vi(e)}`;for(let r of Hv(window.location.hostname))if(Up(n,t,r))return;Up(n,t)}function qa(e,t){let n=`${Vp}${e}`;try{window.localStorage.setItem(n,t)}catch{}try{window.sessionStorage.setItem(n,t)}catch{}qv(e,t)}function eh(e,t){f&&(f.visitor=t,Se());try{localStorage.setItem(`rover:visitor:${e}`,JSON.stringify(t))}catch{}}function $v(e){if(f?.visitor?.name||f?.visitor?.email)return f.visitor;try{let t=localStorage.getItem(`rover:visitor:${e}`);return t?JSON.parse(t):void 0}catch{return}}function th(e){let t=Ha(e.visitorId||"");if(t)return t;if(e.checkpointing?.autoVisitorId===!1)return;let n=`${Vp}${e.siteId}`,r=`rover_vid_${vi(e.siteId)}`,o=Ha(Zp(r)||"");if(o)return qa(e.siteId,o),o;try{let i=Ha(window.localStorage.getItem(n)||"");if(i)return qa(e.siteId,i),i}catch{}try{let i=Ha(window.sessionStorage.getItem(n)||"");if(i)return qa(e.siteId,i),i}catch{}let s=`v_${vi(`${e.siteId}:${Ur("visitor")}`)}_${Date.now().toString(36)}`;return qa(e.siteId,s),s}function Fp(e,t){return`visitor-${vi(`${e}:${t}`)}`}function nh(e){!Ge||!qe||(Ge.registerTool(e.def,e.handler),qe.postMessage({type:"register_tool",tool:e.def}))}function gs(e){return`${hc}${e}`}function Ka(e,t){let n=String(t||"").trim();return n?`${hc}${e}:${vi(n)}`:gs(e)}function Hl(e){return`${hc}${e}:latest_key`}function Wv(e){try{let t=String(sessionStorage.getItem(Hl(e))||"").trim();return!t||!t.startsWith(hc)?void 0:t}catch{return}}function ql(e,t){if(e)try{if(!t){sessionStorage.removeItem(Hl(e));return}sessionStorage.setItem(Hl(e),t)}catch{}}function ru(e){return`${bv}${e}`}function Vv(e,t){try{sessionStorage.setItem(ru(e),JSON.stringify(t))}catch{}}function zv(e){try{let t=ru(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>jp?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,ts:o}}catch{return}}function rh(e){if(e)try{sessionStorage.removeItem(ru(e))}catch{}}function tr(e="session_start",t=Date.now(),n){return{taskId:n||Ur("task"),status:"running",startedAt:t,lastUserAt:void 0,lastAssistantAt:void 0,boundaryReason:e,endedAt:void 0}}function $l(e,t){return{version:Jl,sessionId:e,runtimeId:t,uiOpen:!1,uiHidden:!1,uiStatus:void 0,uiMessages:[],timeline:[],executionMode:"controller",workerState:void 0,pendingRun:void 0,lastNavigationHandoff:void 0,taskEpoch:1,activeTask:tr(),taskTabScope:void 0,lastRoutingDecision:void 0,updatedAt:Date.now(),tasks:{},activeTaskId:void 0,taskOrder:[]}}function mn(e,t=ev){return e.length<=t?e:`${e.slice(0,t)}\u2026`}function Ya(e){if(e!=null){if(typeof e=="string")return mn(e,1200);try{return mn(JSON.stringify(e),1200)}catch{try{return mn(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))):uv,i=Number(t?.maxBatchSize),a=Number.isFinite(i)?Math.min(80,Math.max(1,Math.floor(i))):dv;return{enabled:t?.enabled!==!1,sampleRate:r,flushIntervalMs:s,maxBatchSize:a,includePayloads:t?.includePayloads===!0}}function gc(e){return e==="same_tab"||e==="open_new_tab"?e:"same_tab"}function Ti(e){return e==="host_only"?"host_only":"registrable_domain"}function Ii(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 ou(e){return e==="auto"||e==="confirm"||e==="never"?e:"confirm"}function oh(e){return"host_session"}function sh(e){return"task_touched_only"}function su(e){return"crash_only"}function sc(e){let t=Number(e);return Number.isFinite(t)?Math.max(6e4,Math.min(30*6e4,Math.floor(t))):nv}function iu(e){return"read_only"}function ih(e){return"heuristic_same_window"}function au(e){let t=Number(e);return Number.isFinite(t)?Math.max(1e4,Math.min(10*6e4,Math.floor(t))):ov}function cu(e){let t=Number(e);return Number.isFinite(t)?Math.max(.05,Math.min(.9,t)):sv}function ah(e){return"empty"}function ch(e){return"deterministic_cues"}function lh(e){let t=Number(e);return Number.isFinite(t)?Math.max(1,Math.min(4,Math.floor(t))):rv}function uh(e){return"auto"}function dh(e){return!1}function fh(e){return"pre_tool_block"}function jv(){return Sp({pendingRunText:f?.pendingRun?.text,activeRunText:C?.getState()?.activeRun?.text,rootWorkerInput:f?.workerState?.rootUserInput,lastUserInputText:Bn,fallback:"navigation request"})}function ph(e){return e!==!1}function At(e,t,n){let r=Number(e);if(Number.isFinite(r))return Math.max(t,Math.min(n,Math.floor(r)))}function lu(e){return"on_demand"}function uu(e){let t=Number(e);return Number.isFinite(t)?Math.max(5e3,Math.min(12e4,Math.floor(t))):lf.idleCloseMs}function ws(e,t){let n=Number(e);return Number.isFinite(n)?Math.max(32768,Math.min(2097152,Math.floor(n))):t}function du(e){return!(!e||!mc(e).enabled||!nr(e))}function Hp(e){if(e!=null){if(typeof e=="string")return mn(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]=mn(s,180):(typeof s=="number"||typeof s=="boolean")&&(n[o]=s))}return n}}}function Gv(e,t){if(!t)return Hp(e);let n=gu(e);if(n!=null)return typeof n=="string"?mn(n,1e3):typeof n=="number"||typeof n=="boolean"?n:Array.isArray(n)?{type:"array",length:n.length}:typeof n=="object"?n:Hp(e)}function fu(){Wa&&(clearInterval(Wa),Wa=null),Dr&&(clearTimeout(Dr),Dr=null),di=!1}function Xv(e){return`${Da(e.apiBase)}/telemetry/ingest`}function Wl(e){let t=e||N,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 nr(e){if(Kt&&br>Date.now()+2e3)return Kt;try{let r=N?.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 Kt=s,br=Number(i),s}}}catch{}let t=e||N,n=String(t?.sessionToken||t?.authToken||"").trim();return n.startsWith("rvrsess_")?n:""}function ic(e,t){let n=String(e||"").trim();Kt=n||void 0,br=Number(t)>0?Number(t):0;try{let r=N?.siteId||"";n&&br>Date.now()?sessionStorage.setItem(`rover:sess:${r}`,JSON.stringify({t:n,e:br})):sessionStorage.removeItem(`rover:sess:${r}`)}catch{}}function Kv(e){!e||!N||(N.externalNavigationPolicy=e.externalNavigationPolicy||N.externalNavigationPolicy,e.domainScopeMode&&(N.domainScopeMode=Ti(e.domainScopeMode)),(e.crossHostPolicy==="open_new_tab"||e.crossHostPolicy==="same_tab")&&(N.navigation={...N.navigation||{},crossHostPolicy:gc(e.crossHostPolicy)}),N.tools||(N.tools={}),N.tools.web||(N.tools.web={}),N.tools.web.enableExternalWebContext=e.enableExternalWebContext??N.tools.web.enableExternalWebContext,N.tools.web.scrapeMode=e.externalScrapeMode??N.tools.web.scrapeMode,Array.isArray(e.externalAllowDomains)&&(N.tools.web.allowDomains=e.externalAllowDomains),Array.isArray(e.externalDenyDomains)&&(N.tools.web.denyDomains=e.externalDenyDomains))}function Vl(e){if(!f||!e)return;Nr=Math.max(1,Number(e.epoch||Nr));let t=typeof e.activeRunId=="string"?e.activeRunId:"",n=String(e.runStatus||"").trim().toLowerCase();lp({serverRunId:t,runStatus:n,ignoredRunIds:Kn})&&oo(t,"projection_ignored_active_run",{attemptImmediately:!0}),eo(t||void 0);let r=f.pendingRun,o=r?.id||"";!t&&o?(n==="completed"||n==="cancelled"||n==="failed"||n==="ended"||f.activeTask?.status!=="running")&&(ao(o),Nt(void 0),C?.setActiveRun(void 0)):t&&cp({serverRunId:t,localPendingRunId:o,ignoredRunIds:Kn})?Nt({id:t,text:r?.text||"",startedAt:r?.startedAt||Date.now(),attempts:r?.attempts||0,autoResume:!0,taskBoundaryId:r?.taskBoundaryId||De,resumeRequired:r?.resumeRequired===!0,resumeReason:r?.resumeReason}):t&&Kn.has(t)&&o===t&&(C?.releaseWorkflowLock(t),Nt(void 0),C?.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!==oc)){let c=e.snapshot?.runtimeState,l=e.snapshot?.sharedState;if(c&&typeof c=="object"){vs=!0;try{Mh({version:zp,siteId:N?.siteId||f.sessionId,visitorId:Ct||"server_projection",sessionId:f.sessionId,updatedAt:Number(e.snapshot?.updatedAt)||Date.now(),runtimeState:c,sharedState:l})}finally{vs=!1}i&&(oc=i)}}let a=String(f?.pendingRun?.id||"").trim();a&&Kn.has(a)&&(C?.releaseWorkflowLock(a),Nt(void 0),C?.setActiveRun(void 0)),ac()}async function pu(e){if(!(!f||!e.apiBase&&!e.publicKey&&!e.authToken&&!e.sessionToken||!Wl(e)&&!Kt)){ve?ve.setApiBase(e.apiBase):ve=new Pa({apiBase:e.apiBase,siteId:e.siteId,getSessionId:()=>f?.sessionId,getBootstrapToken:()=>Wl(N),getHost:()=>window.location.hostname,getPageUrl:()=>window.location.href,getTaskBoundaryId:()=>De,shouldKeepTransportActive:()=>!ks(),onSession:n=>{if(ic(n.sessionToken,n.sessionTokenExpiresAt),Xn&&C?.broadcastSessionToken(n.sessionToken||"",n.sessionTokenExpiresAt||0),Nr=Math.max(1,Number(n.epoch||Nr)),f&&n.sessionId&&f.sessionId!==n.sessionId&&(f.sessionId=n.sessionId,oc="",Se()),Kv(n.policy),n.siteConfig&&typeof n.siteConfig=="object"&&N){let r={shortcuts:io(n.siteConfig?.shortcuts),greeting:Ss(n.siteConfig?.greeting),limits:Tc(n.siteConfig?.limits),version:n.siteConfig?.version!=null?String(n.siteConfig.version):void 0};no=r,Lh(N.siteId,r),dc(N)}n.projection&&Vl(n.projection),qe&&qe.postMessage({type:"update_config",config:{...Is(),publicKey:void 0,sessionToken:Kt,authToken:nr(N),sessionId:f?.sessionId,activeRunId:f?.pendingRun?.id,sessionEpoch:ve?.getEpoch?.()??Nr,sessionSeq:ve?.getLastSeq?.()??0}}),Ge&&Ge.setNavigationPolicy({allowedDomains:N?.allowedDomains,domainScopeMode:N?.domainScopeMode,externalNavigationPolicy:N?.externalNavigationPolicy,crossHostPolicy:N?.navigation?.crossHostPolicy}),N&&(wu(N),bc(N)),Ts=!0,Br(),ac()},onProjection:n=>{Vl(n),Xn&&C?.broadcastProjection(n),ac(),qe&&qe.postMessage({type:"update_config",config:{...Is(),sessionToken:Kt,authToken:nr(N),sessionId:f?.sessionId,activeRunId:f?.pendingRun?.id,sessionEpoch:ve?.getEpoch?.()??Nr,sessionSeq:ve?.getLastSeq?.()??0}})},onError:n=>{Wt("error",{message:n?.message||"server runtime sync failed",scope:"server_runtime"})}});try{await ve.start()}catch(n){N?.apiMode!==!1&&$e("error",{message:n?.message||"server runtime sync failed",scope:"server_runtime_start"})}}}async function No(e=!1){if(Va||fs)return;if(!N||!du(N)){fn=[];return}if(!e&&ks()||!fn.length)return;let t=mc(N),n=nr(N);if(!n)return;let r=fn.splice(0,t.maxBatchSize);if(r.length){Va=!0,nc=Date.now();try{let o=await fetch(Xv(N),{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify({sessionToken:n,sessionId:f?.sessionId,runId:f?.pendingRun?.id,siteId:N.siteId,runtimeId:Xe,visitorId:Ct,flushReason:e?"manual":"interval",sdkVersion:"rover_sdk_v1",pageUrl:window.location.href,userAgent:navigator.userAgent,sampleRate:t.sampleRate,events:r})});if(!o.ok){o.status===401||o.status===403?fs=!0:fn=[...r,...fn].slice(-Za);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")&&(fs=!0);return}}catch{fn=[...r,...fn].slice(-Za)}finally{Va=!1}}}function bc(e){if(fu(),fs=!1,!du(e)){fn=[];return}let t=mc(e);Wa=setInterval(()=>{No(!1)},t.flushIntervalMs)}function Wt(e,t){if(!du(N)||fs||ks()&&!Iv.has(e))return;let n=mc(N);if(n.sampleRate<1&&Math.random()>n.sampleRate)return;let r=Date.now();if(e==="status"){if(r-Dl<kv)return;Dl=r}else if(e==="checkpoint_state"){if(r-Ol<xv)return;Ol=r}let o={name:e,ts:r,seq:++Gp,payload:Gv(t,n.includePayloads)};if(fn.push(o),fn.length>Za&&(fn=fn.slice(-Za)),Xp.has(e)){let i=Date.now()-nc;if(i>=Pp){No(!1);return}Dr||(Dr=setTimeout(()=>{Dr=null,No(!1)},Pp-i));return}if(fn.length>=n.maxBatchSize){let i=Date.now()-nc;i>=Op?No(!1):di||(di=!0,setTimeout(()=>{di=!1,No(!1)},Op-i))}}function Yv(e){if(e==="analyze"||e==="route"||e==="execute"||e==="verify"||e==="complete")return e}function Qv(e){return e?e==="analyze"?"Analyze":e==="route"?"Route":e==="execute"?"Execute":e==="verify"?"Verify":e==="complete"?"Complete":"Status":"Status"}function Jv(e,t,n){return[String(t||""),String(e||"").trim().toLowerCase(),String(n||"").trim().toLowerCase()].join("|")}function Zv(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 eT(){return f?.pendingRun?.id}function eo(e){xi=String(e||"").trim()||void 0}function qp(){let e=f?.pendingRun?.id;if(!e)return;if(!ve)return e;let t=ve.getActiveRunId(),n=String(t||xi||"").trim();if(n)return n===e?e:void 0}function ao(e){e&&(Kn.add(e),Lv(Kn,Cv))}function zl(e){e&&Kn.delete(e)}function jl(e){let t=Math.max(0,Math.floor(e)),n=bi*2**t;return Math.max(120,Math.min(_v,n))}function tT(){if(!Xt.size)return null;let e=Number.POSITIVE_INFINITY;for(let t of Xt.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 Gl(e=bi){Yr&&(clearTimeout(Yr),Yr=null);let t=Math.max(80,Math.floor(e));Yr=setTimeout(()=>{Yr=null,ac()},t)}function oo(e,t="local_run_abandoned",n){let r=String(e||"").trim();if(!r)return;let o=Date.now(),s=Xt.get(r),i=n?.attemptImmediately===!0?o:s?.nextAttemptAt&&s.nextAttemptAt>o?s.nextAttemptAt:o+jl(s?.attempts||0);for(Xt.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});Xt.size>wv;){let a=Array.from(Xt.values()).sort((c,l)=>Number(c.createdAt)-Number(l.createdAt))[0];if(!a?.runId)break;Xt.delete(a.runId)}Gl(n?.attemptImmediately?50:bi)}async function ac(){if(za||!Xt.size)return;if(!(!!ve&&!!Ts&&!!nr(N))){Gl(bi);return}za=!0;try{let t=Date.now(),n=Array.from(Xt.values()).sort((r,o)=>Number(r.nextAttemptAt)-Number(o.nextAttemptAt));for(let r of n){if(r.nextAttemptAt>t)break;if(!Xt.has(r.runId))continue;if(Tu(r.runId)){Xt.set(r.runId,{...r,nextAttemptAt:Date.now()+jl(Math.max(1,r.attempts))});continue}let o=ve;if(!o){Xt.set(r.runId,{...r,nextAttemptAt:Date.now()+bi});continue}try{if(await o.controlRun({action:"cancel",runId:r.runId,reason:r.reason})){Xt.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>=Ev){Xt.delete(r.runId),$e("error",{message:`Failed to cancel stale run ${r.runId} after retries.`,scope:"run_cancel_repair",code:"RUN_CANCEL_REPAIR_FAILED",runId:r.runId});continue}Xt.set(r.runId,{...r,attempts:i,lastError:String(s?.message||"cancel_control_failed"),nextAttemptAt:Date.now()+jl(i)})}}}finally{za=!1;let t=tT();t!=null&&Gl(t)}}function Kr(){return f?.activeTask?.status==="running"}function hh(){ht&&(Kr()||mh()?ht.enterActiveMode():ht.enterIdleMode())}function nT(){return typeof document<"u"&&document.visibilityState==="hidden"}function mh(){return!!f?.pendingRun?.id}function rT(){let e=C?.getState()?.activeRun;if(!e)return!1;if(e.runtimeId)return e.runtimeId===Xe;let t=String(f?.pendingRun?.id||"").trim();return!!(t&&e.runId===t)}function oT(){let e=C?.getWorkflowLockInfo();return!!(e?.locked&&e.holderRuntimeId===Xe)}function gh(){return Kr()||mh()||rT()||oT()}function sT(){return lu(N?.transport?.activation)!=="on_demand"?!0:!!(f?.uiOpen||gh()||hu()||bh())}function ks(){if(!Xn)return!0;if(sT())li=0;else{let t=uu(N?.transport?.idleCloseMs);return li<=0&&(li=Date.now()+t),!(Date.now()<li)}return nT()?!gh()&&!f?.uiOpen:!1}function rr(e=!1){if(typeof window>"u")return;let t=ks();if(!(!e&&rc===t)){rc=t;try{let n=window.rtrvrAISetObserverPaused;typeof n=="function"&&n(t)}catch{}}}function hu(){let e=C?.getState()?.activeRun;return!!(e&&e.runtimeId&&e.runtimeId!==Xe)}function bh(){let e=C;if(!e?.isWorkflowLocked())return!1;let t=e.getWorkflowLockInfo(),n=e.getState()?.activeRun;return!(!t.locked||!n?.runId||t.holderRuntimeId&&n.runtimeId&&t.holderRuntimeId!==n.runtimeId||t.runId&&t.runId!==n.runId)}function Rs(){return hu()||bh()}function mu(e){return e!=="observer"?e:Rs()?"observer":"controller"}function yh(){return iu(N?.task?.observerInput)==="read_only"?!Rs():!hu()}function vh(e){if(e==="observer")return Rs()?"Observing active run in another tab...":"Send to take control and run here."}function iT(e){let t=typeof e?.type=="string"?e.type:"";if(!Dv.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()||xi||"").trim()||void 0;return dp({type:t,messageRunId:n,messageTaskBoundaryId:r,currentTaskBoundaryId:Yn(),pendingRunId:eT(),sharedActiveRunId:C?.getState()?.activeRun?.runId,authoritativeActiveRunId:o,taskStatus:f?.activeTask?.status,ignoredRunIds:Kn})}function Fr(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,u=`${s}::${i}`.toLowerCase();if(n.has(u))continue;n.add(u);let m={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||(m.required=!1),t.push(m)}return t.slice(0,6)}function aT(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=Fr(f?.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 u=String(l.key||"").trim();u&&i.push(u)}if(i.length===0)for(let l of Object.keys(r)){let u=String(l||"").trim();u&&i.push(u)}let a=[],c=new Set;for(let l of i){let u=String(l||"").trim();if(!u||c.has(u))continue;c.add(u);let m=String(r[u]||"").trim();a.push(`${u}: ${m||"(no answer provided)"}`)}return a.length>0?a.join(`
|
|
1955
|
+
`):String(t.rawText||"").trim()}function cT(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=Fr(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 lT(e){return Lr?Lr.readSync(e):null}function gu(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:gu(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 $p(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 uT(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"||$p(r))return!1}return!0}return!$p(e)}function Th(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(`
|
|
1654
1956
|
|
|
1655
|
-
`);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 Qg(e){if(e==null)return;let t=typeof e=="object"&&e!==null?e:void 0,n=t?.output??t?.generatedContentRef??t?.schemaHeaderSheetInfo??e,r=nf(Ar([{type:"tool_output",data:n}]));if(Kg(n,r))return Ar([{type:"tool_output",label:typeof t?.name=="string"?`${t.name} output`:"Tool output",data:n}])}function pn(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t}function Jg(e){if(!e||typeof e!="object")return[];let t=e,n=[pn(t.tab_id),pn(t.logical_tab_id),pn(t.tabId),pn(t.logicalTabId)].filter(r=>!!r);return rn(n)}function Zg(e){if(!e||typeof e!="object")return[];let t=e,n=t.output&&typeof t.output=="object"?t.output:void 0,r=[pn(t.tab_id),pn(t.logical_tab_id),pn(t.tabId),pn(t.logicalTabId),pn(n?.tab_id),pn(n?.logical_tab_id),pn(n?.tabId),pn(n?.logicalTabId)].filter(o=>!!o);return rn(r)}function eb(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 rf(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 zs(e,t){if(!Array.isArray(e))return[];let n=[];for(let r of e.slice(-t)){let o=bc(r);o!==void 0&&n.push(o)}return n}async function tb(e,t){if(!ar)return null;try{let n=await ar.readAsync(e);if(n)return n;for(let r of t||[]){if(!r||r===e)continue;let o=await ar.readAsync(r);if(o)return o}return null}catch{return null}}function xr(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-Ja)){let r=n?.role;r!=="user"&&r!=="assistant"&&r!=="system"||t.push({id:typeof n?.id=="string"&&n.id?n.id:lr("msg"),role:r,text:String(n?.text||""),blocks:Ar(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 Ir(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-Za)){let r=Wt(String(n?.title||""),400);if(!r)continue;let o=String(n?.kind||"status"),i=n?.status;t.push({id:typeof n?.id=="string"&&n.id?n.id:lr("timeline"),kind:o,title:r,detail:n?.detail?String(n.detail):void 0,detailBlocks:Ar(n?.detailBlocks),status:i==="pending"||i==="success"||i==="error"||i==="info"?i:void 0,ts:Number(n?.ts)||Date.now(),sourceRuntimeId:typeof n?.sourceRuntimeId=="string"?n.sourceRuntimeId:void 0})}return t}function nb(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,i=Array.isArray(t.blocks)?t.blocks.length:0;return o!==i?o-i:String(e.text||"").length-String(t.text||"").length}function rb(e,t){let n=new Map;for(let r of xr(e))n.set(r.id,r);for(let r of xr(t)){let o=n.get(r.id);(!o||nb(r,o)>0)&&n.set(r.id,r)}return xr([...n.values()].sort((r,o)=>{let i=(Number(r.ts)||0)-(Number(o.ts)||0);return i!==0?i:r.id.localeCompare(o.id)}))}function ob(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,i=Array.isArray(t.detailBlocks)?t.detailBlocks.length:0;return o!==i?o-i:String(e.detail||"").length-String(t.detail||"").length}function ib(e,t){let n=new Map;for(let r of Ir(e))n.set(r.id,r);for(let r of Ir(t)){let o=n.get(r.id);(!o||ob(r,o)>0)&&n.set(r.id,r)}return Ir([...n.values()].sort((r,o)=>{let i=(Number(r.ts)||0)-(Number(o.ts)||0);return i!==0?i:r.id.localeCompare(o.id)}))}function Sn(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:[],i=n.slice(-Nd).map(_=>rf(_)).filter(_=>!!_),s=zs(r,Ws),c=zs(o,Ws*2),a=ur(e?.pendingAskUser?.questions),u=e?.pendingAskUser?.stepRef,d=u&&Number.isFinite(Number(u.stepIndex))&&Number(u.stepIndex)>=0&&Number.isFinite(Number(u.functionIndex))&&Number(u.functionIndex)>=0?{stepIndex:Number(u.stepIndex),functionIndex:Number(u.functionIndex),...typeof u.accTreeId=="string"&&u.accTreeId.trim()?{accTreeId:u.accTreeId.trim()}:{}}:void 0,h=a.length?{questions:a,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,E=Ue(t||void 0),m=Ue(h?.boundaryId||E);h&&E&&m&&m!==E&&(h=void 0);let y=typeof e.rootUserInput=="string"?e.rootUserInput.trim():"";return{trajectoryId:typeof e.trajectoryId=="string"?e.trajectoryId:void 0,taskBoundaryId:t||void 0,rootUserInput:y||void 0,history:i,plannerHistory:s,agentPrevSteps:c,lastToolPreviousSteps:c,pendingAskUser:h,updatedAt:Number(e.updatedAt)||Date.now()}}function yi(e,t,n){if(!e||typeof e!="object")return tc(t,n);let r=Vn(),o=No(e.activeTask,r),i=st(e.pendingRun),s=o.status==="running"?i:void 0,c=s?.taskBoundaryId&&String(s.taskBoundaryId).trim()||(typeof e?.workerState?.taskBoundaryId=="string"?String(e.workerState.taskBoundaryId).trim():"")||void 0,a=yc(e.taskTabScope,c);return{version:sc,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"?Wt(e.uiStatus,300):void 0,uiMessages:xr(e.uiMessages),timeline:Ir(e.timeline),executionMode:e.executionMode==="observer"||e.executionMode==="controller"?e.executionMode:"controller",workerState:Sn(e.workerState),pendingRun:s,taskTabScope:a,lastNavigationHandoff:eo(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"?Wt(e.lastRoutingDecision.reason,200):void 0,ts:Number(e.lastRoutingDecision.ts)||Date.now()}:void 0,updatedAt:Number(e.updatedAt)||Date.now()}}function No(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"?Wt(e.boundaryReason,120):t.boundaryReason,endedAt:Number(e.endedAt)||void 0}}function sb(e,t){return No(e,t)}function of(e){if(!e)return;let t=ur(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,history:Array.isArray(e.history)?e.history.slice(-Nd).map(n=>rf(n)).filter(n=>!!n):[],plannerHistory:zs(e.plannerHistory,Ws),agentPrevSteps:zs(e.agentPrevSteps,Ws*2),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 rn(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 yc(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=rn(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 st(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 $n=="string"&&$n.trim()?$n.trim():"Continue task",o=n||r,i=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:i,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 we(){if(!(!p||!vr))try{p.updatedAt=Date.now(),ar?.write(vr,p),Hn&&Hn!==vr&&(ar?.remove(Hn),Hn=null),xo||Je?.markDirty()}catch{}}function ab(){if(yd)return;yd=!0;let e=()=>{if(p?.pendingRun?.autoResume){let r=p.pendingRun.resumeReason||(mi?"agent_navigation":"page_reload"),o=st({...p.pendingRun,resumeRequired:!0,resumeReason:r});if(p.pendingRun=o,o&&(M?.clearActiveRunRuntimeId(o.id),U?.siteId)){let i=eo(p?.lastNavigationHandoff);Og(U.siteId,{runId:o.id,text:o.text,taskBoundaryId:o.taskBoundaryId||Se,resumeReason:r,handoffId:i?.handoffId,ts:Date.now()})}}let n=ac();M?.broadcastClosing(Od(n)),p?.pendingRun&&M?.releaseWorkflowLock(p.pendingRun.id),we(),Js(!0),hc(),Je?.markDirty(),Je?.syncNow({push:!0,pull:!1}),Je?.stop(),M?.stop()};window.addEventListener("pagehide",e,{capture:!0});let t=n=>{n.persisted&&(M&&(M.reloadFromStorage(),M.registerCurrentTab(window.location.href,document.title||void 0),M.claimLease(!1)),cr=!1,Ht=0,U&&Zs(U))};window.addEventListener("pageshow",t)}function cb(e="implicit"){if(p)return p.activeTask||(p.activeTask=Vn(e),p.taskEpoch=Math.max(1,Number(p.taskEpoch)||1)),p.activeTask}function Nr(e,t){if(!p)return;let n=rd({task:p.activeTask,taskEpoch:p.taskEpoch},e,{createTask:(r,o,i)=>Vn(r,o,i)});return p.activeTask=n.task,p.taskEpoch=n.taskEpoch,n.rotateBoundary&&t?.rotateBoundary!==!1?(Se=Sr(),on({forceReset:!0,persist:!1})):on({persist:!1,appendSeed:!1}),n.clearPendingRun&&p.pendingRun&&_t(void 0),n.clearWorkerState&&p.workerState&&(p.workerState=void 0,M?.setWorkerContext(void 0)),n.lifecycle==="terminal"&&(je&&(clearTimeout(je),je=null),xi()),t?.syncShared!==!1&&M?.syncTask({...n.task},p.taskEpoch),t?.persist!==!1&&we(),n.task}function lb(e,t=Date.now()){if(!p||e==="system")return;let n=cb("implicit");n&&n.status==="running"&&(e==="user"&&(n.lastUserAt=t),e==="assistant"&&(n.lastAssistantAt=t))}function sf(e="worker_task_active",t=Date.now()){Nr({type:"ensure_running",reason:e,at:t})}function ub(e="worker_task_complete",t=Date.now()){Nr({type:"terminal",terminal:"completed",reason:e,at:t})}function Os(e="worker_task_failed",t=Date.now()){Nr({type:"terminal",terminal:"failed",reason:e,at:t})}function db(e="worker_task_ended",t=Date.now()){Nr({type:"terminal",terminal:"ended",reason:e,at:t})}function af(e="worker_task_cancelled",t=Date.now()){Nr({type:"terminal",terminal:"cancelled",reason:e,at:t})}function Wn(){hi=null,ee?.setTaskSuggestion({visible:!1})}function xi(){mn=!1,Tr=!1,U?.siteId&&(ei(U.siteId),Hd(U.siteId)),Je?.markDirty(),Je?.syncNow({push:!0,pull:!1})}function cf(){ee?.clearMessages(),ee?.clearTimeline(),ee?.setQuestionPrompt(void 0),Wn()}function fb(e){if(e)return Ue(e.pendingAskUser?.boundaryId||e.taskBoundaryId)}function sr(e,t){if(!e)return;let n=Ue(t);if(!n)return e;let r=Ue(e.taskBoundaryId);if(r&&r!==n)return;let o=Ue(e.pendingAskUser?.boundaryId);if(!(o&&o!==n))return e}function vi(){if(p?.activeTask?.status!=="running"){ee?.setQuestionPrompt(void 0);return}let e=xn(),t=fb(p?.workerState);if(e&&t&&t!==Ue(e)){ee?.setQuestionPrompt(void 0);return}let n=ur(p?.workerState?.pendingAskUser?.questions);if(!n.length){ee?.setQuestionPrompt(void 0);return}ee?.setQuestionPrompt({questions:n})}function pb(){let e=p?.pendingRun;if(!e)return!1;if(!M)return!0;let t=M?.getState()?.activeRun;if(t?.runId&&t.runId===e.id||t?.runtimeId&&t.runtimeId!==$e)return!0;let n=Date.now()-Number(e.startedAt||0);return n>=0&&n<=pg}function mb(){if(!p?.pendingRun||pb()||!M)return;let e=p.pendingRun;if(e.resumeRequired===!0&&Ss(p.activeTask?.status))return;let t=String(be?.getActiveRunId()||"").trim();if(t&&t===e.id||Co())return;let n=Date.now()-Number(e.startedAt||0);!Number.isFinite(n)||n<mg||(Gn(e.id),_t(void 0),M?.clearActiveRunRuntimeId(e.id),M?.releaseWorkflowLock(e.id),M?.setActiveRun(void 0),je&&(clearTimeout(je),je=null))}function In(e,t,n=!0,r){let o=String(t||""),i=Ar(r?.blocks);if(!o&&(!i||i.length===0))return;let s={id:r?.id||lr("msg"),role:e,text:o,blocks:i,ts:r?.ts||Date.now(),sourceRuntimeId:r?.sourceRuntimeId};return ee?.addMessage(s.role,s.text,{blocks:s.blocks}),p&&n&&(p.uiMessages.push(s),p.uiMessages.length>Ja&&(p.uiMessages=p.uiMessages.slice(-Ja)),lb(s.role,s.ts),we()),M&&r?.publishShared!==!1&&(M.appendMessage({id:s.id,role:s.role,text:s.text,blocks:s.blocks,ts:s.ts}),M.markTaskActivity(s.role,s.ts)),s}function vc(e){for(let t of e)In(t.role,t.text,!1,{id:t.id,ts:t.ts,sourceRuntimeId:t.sourceRuntimeId,publishShared:!1,blocks:t.blocks})}function ze(e,t=!0){let n={id:e.id||lr("timeline"),kind:e.kind,title:Wt(e.title,400),detail:e.detail?String(e.detail):void 0,detailBlocks:Ar(e.detailBlocks),status:e.status,ts:e.ts||Date.now(),sourceRuntimeId:e.sourceRuntimeId};return ee?.addTimelineEvent(n),p&&t&&(p.timeline.push(n),p.timeline.length>Za&&(p.timeline=p.timeline.slice(-Za)),we()),M&&e.publishShared!==!1&&M.appendTimeline({id:n.id,kind:n.kind,title:n.title,detail:n.detail,detailBlocks:n.detailBlocks,status:n.status,ts:n.ts}),n}function Ec(e){ee?.clearTimeline();for(let t of e)ze({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 ht(e,t){ee?.setStatus(e),p&&(p.uiStatus=Wt(e,300),we()),M&&t?.publishShared!==!1&&M.setStatus(e)}function Qr(e,t){let n=gc(e);it=n;let r=t?.localLogicalTabId??M?.getLocalLogicalTabId(),o=t?.activeLogicalTabId??M?.getActiveLogicalTabId(),i=t?.holderRuntimeId??M?.getCurrentHolderRuntimeId(),s=n==="controller"&&!!(U?.allowActions??!0);Fe?.setAllowActions(s),Fe?.setActionGateContext?.({mode:n,controllerRuntimeId:i,activeLogicalTabId:o,localLogicalTabId:r,reason:_i(n,s)}),p&&(p.executionMode=n,we()),ee?.setExecutionMode(n,{controllerRuntimeId:i,localLogicalTabId:r,activeLogicalTabId:o,canTakeControl:!0,canComposeInObserver:ef(),note:tf(n)}),Me("mode_change",{mode:n,rawMode:e,...t})}function _t(e){p&&(e?p.pendingRun=st({...e,taskBoundaryId:e.taskBoundaryId||Se}):(p.pendingRun=void 0,_r(void 0)),we())}function Rd(e){p&&(p.lastNavigationHandoff=eo(e),we())}function ea(){let e=Number(M?.getLocalLogicalTabId()||M?.getActiveLogicalTabId()||1);return!Number.isFinite(e)||e<=0?1:e}function on(e){if(!p)return;let t=Ue(Se)||Sr();Se||(Se=t);let n=ea(),r=e?.appendSeed!==!1,o=yc(p.taskTabScope,t);if(!!e?.forceReset||!o||Ue(o.boundaryId)!==t){let a={boundaryId:t,seedTabId:n,touchedTabIds:[n],updatedAt:Date.now()};return p.taskTabScope=a,e?.persist!==!1&&we(),a}let s=rn(o.touchedTabIds);r&&!s.includes(n)&&s.unshift(n);let c={...o,seedTabId:Number.isFinite(Number(o.seedTabId))&&Number(o.seedTabId)>0?Number(o.seedTabId):n,touchedTabIds:s.slice(0,24),updatedAt:Date.now()};return p.taskTabScope=c,e?.persist&&we(),c}function lf(e,t){if(!p)return;let n=on({persist:!1});if(!n)return;let r=rn([n.seedTabId,...n.touchedTabIds||[],...e]),o={...n,touchedTabIds:r.slice(0,24),updatedAt:Date.now()};return p.taskTabScope=o,t?.persist!==!1&&we(),o}function hb(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 Jr(e){if(!p)return;let t=on({persist:!1,appendSeed:!1});if(!t||!M)return t;let n=Date.now(),r=Array.isArray(M.getState()?.tabs)?M.getState().tabs:[],o=new Set;for(let _ of r){let N=Number(_?.logicalTabId);if(!Number.isFinite(N)||N<=0)continue;let H=Math.max(Number(_?.updatedAt)||0,Number(_?.openedAt)||0,Number(_?.detachedAt)||0),C=n-H;if(_.runtimeId){o.add(N);continue}if(_.external){C<=xg&&o.add(N);continue}if(_.detachedReason==="navigation_handoff"){C<=Ig&&o.add(N);continue}if(_.detachedReason==="opened_pending_attach"){C<=kg&&o.add(N);continue}}let i=Number(M.getLocalLogicalTabId()),s=Number(M.getActiveLogicalTabId()),c=Number(t.seedTabId)>0?Number(t.seedTabId):ea();Number.isFinite(i)&&i>0&&o.add(i),Number.isFinite(s)&&s>0&&o.add(s),o.size===0&&Number.isFinite(c)&&c>0&&o.add(c);let a=rn(t.touchedTabIds),u=a.filter(_=>o.has(_)),d=o.has(t.seedTabId)?t.seedTabId:Number.isFinite(i)&&i>0?i:Number.isFinite(s)&&s>0?s:c;u.includes(d)||u.unshift(d);let h=rn(u).slice(0,24);if(!(d!==t.seedTabId||!hb(h,a)))return t;let m=a.filter(_=>!h.includes(_)),y={...t,seedTabId:d,touchedTabIds:h.length?h:[d],updatedAt:Date.now()};return p.taskTabScope=y,e?.persist!==!1&&we(),Rn("status",{event:"scoped_tab_reconciled",removedTabIds:m,scopedTabIds:y.touchedTabIds,seedTabId:y.seedTabId}),y}function fi(){let e=Jr({persist:!1})||on({persist:!1,appendSeed:!1});if(!e)return[ea()];let t=rn(e.touchedTabIds);return t.length?t:[e.seedTabId]}function uf(){let e=Jr({persist:!1})||on({persist:!1,appendSeed:!1});if(e)return{boundaryId:e.boundaryId,seedTabId:e.seedTabId,touchedTabIds:rn(e.touchedTabIds)}}function gb(e,t){let n=U?.task?.followup,r=gd({mode:n?.mode,previousTaskStatus:t,previousTaskUserInput:Yr,previousTaskAssistantOutput:Kr,previousTaskCompletedAt:Io,currentPrompt:e,ttlMs:fc(n?.ttlMs),minLexicalOverlap:pc(n?.minLexicalOverlap)});return{chatLog:r.chatLog,reason:r.reason,overlap:r.overlap}}function bb(e){let t=String(e||"").trim();return t===ec.read||t===ec.act}function ci(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 yb(e){let t=String(e.call?.name||"").trim(),n=e.call?.args&&typeof e.call.args=="object"?e.call.args:{},r=t===ec.act?"act":"read_context",o=Number(n.tab_id),i=Number.isFinite(o)&&o>0?Math.trunc(o):Number.isFinite(Number(e.routeTabId))&&Number(e.routeTabId)>0?Math.trunc(Number(e.routeTabId)):void 0,s=M?.listTabs({scope:"all"})||[],c=i?s.find(m=>m.logicalTabId===i):void 0,u=String(n.url||"").trim()||String(c?.url||"").trim(),d=String(n.message||n.user_input||"").trim()||void 0,h=String(n.source||"").trim().toLowerCase()==="google_search"?"google_search":"direct_url";if(!u)return ci({code:"MISSING_URL",message:"External context tools require a target url or tab with a url.",retryable:!1});if(!be)return ci({code:"RUNTIME_UNAVAILABLE",message:"Rover server runtime is not initialized.",retryable:!0});let E=String(p?.pendingRun?.id||be.getActiveRunId()||wi||"").trim()||void 0;if(!E)return ci({code:"NO_ACTIVE_RUN",message:"External context tools can only run during an active run.",retryable:!1});try{let m=await be.fetchExternalContext({runId:E,tabId:i,url:u,intent:r,message:d,source:h});if(!m)return ci({code:"EMPTY_RESPONSE",message:"Server returned no external context response.",retryable:!0});let _=(m.pageData&&typeof m.pageData=="object"?m.pageData:void 0)||m;return{success:!0,output:{..._,metadata:{..._&&typeof _=="object"?_.metadata||{}:{},external:!0,accessMode:"external_scraped",logicalTabId:i,sourceTool:t},intent:r}}}catch(m){let y=String(m?.code||"").trim().toUpperCase()||"EXTERNAL_CONTEXT_FAILED",_=Number(m?.status),N=_>=500||y==="STALE_SEQ"||y==="STALE_EPOCH";return ci({code:y,message:String(m?.message||"External context request failed"),retryable:N,status:Number.isFinite(_)?_:void 0,details:m?.details})}}function Ro(e){let t=fi();return{taskBoundaryId:Se,taskTabScope:uf(),scopedTabIds:t,...e||{}}}function An(e){Le&&Le.postMessage({type:"update_config",config:Ro(e)})}function Tc(e,t){let n=String(e||"").trim();if(!n||!Le)return;if(it==="observer"){if(Co()){In("system","This tab is read-only while another tab is actively running Rover.",!0),ze({kind:"info",title:"Observer mode",detail:"Input is disabled while the active run is controlled by another tab.",status:"info"});return}if(!(M?.requestControl()??!1)){In("system","Unable to take control right now because another tab is still running Rover actions.",!0),ze({kind:"info",title:"Observer mode",detail:"Action execution is currently owned by another tab runtime.",status:"info"});return}let h=M?.getLocalLogicalTabId(),E=M?.getActiveLogicalTabId(),m=M?.getCurrentHolderRuntimeId()||$e;Qr("controller",{localLogicalTabId:h,activeLogicalTabId:E,holderRuntimeId:m});let y=!!(U?.allowActions??!0);Fe?.setAllowActions(y),Fe?.setActionGateContext?.({mode:"controller",controllerRuntimeId:m,activeLogicalTabId:E,localLogicalTabId:h,reason:_i("controller",y)})}let r=t?.runId||crypto.randomUUID(),o=!!t?.resume,i=t?.appendUserMessage!==!1;oc(r),i&&In("user",n,!0);let s=p?.pendingRun?.id===r?p.pendingRun.attempts:0,c=p?.pendingRun?.id===r&&p.pendingRun.taskBoundaryId||Se;lf([ea()],{persist:!0});let a=fi();mi=!1,_t({id:r,text:n,startedAt:Date.now(),attempts:o?s+1:0,autoResume:t?.autoResume!==!1,taskBoundaryId:c,resumeRequired:!1,resumeReason:void 0}),sf(o?"worker_task_resumed":"worker_task_active"),$n=n,M?.acquireWorkflowLock(r),M?.setActiveRun({runId:r,text:n}),Le.postMessage({type:"run",text:n,runId:r,resume:o,preserveHistory:!!t?.preserveHistory,followupChatLog:Array.isArray(t?.followupChatLog)?t?.followupChatLog:void 0,routing:t?.routing,askUserAnswers:t?.askUserAnswers,scopedTabIds:a,taskTabScope:uf()}),Qe&&clearTimeout(Qe);let u=r;Qe=setTimeout(()=>{p?.pendingRun?.id===u&&(Gn(u),_t(void 0),M?.releaseWorkflowLock(u),M?.setActiveRun(void 0),af("run_timeout_terminal"),ht("Task timed out."),In("system","Task timed out after 5 minutes with no response.",!0),Me("error",{message:"Run safety timeout"})),Qe=null},5*6e4)}async function vb(e,t){let n=Xg(e,t?.askUserAnswers);if(!n)return;mb();let r=p?.activeTask?.status,o=ur(p?.workerState?.pendingAskUser?.questions).length,i=p?.workerState?.pendingAskUser?.boundaryId,s=pd({startNewTask:!!t?.startNewTask,taskStatus:r,pendingAskUserQuestionCount:o,hasAskUserAnswers:!!t?.askUserAnswers,pendingAskUserBoundaryId:i,currentTaskBoundaryId:Se}),c=!s,a=c?t?.continueRunId||p?.pendingRun?.id||be?.getActiveRunId():void 0,u=s?gb(n,r):{reason:"mode_disabled",overlap:0},d=u.chatLog;if(Rn("status",{event:"task_boundary_decision",startFreshTask:s,askUserContinuation:c,pendingAskUserQuestionCount:o,activeTaskStatus:r||"none"}),Rn("status",{event:"followup_chat_cue",attached:Array.isArray(d)&&d.length>0,reason:u.reason,overlap:u.overlap}),M?.pruneTabs(s?{dropRuntimeDetached:!0,keepOnlyActiveLiveTab:!0,keepRecentExternalPlaceholders:!0}:{dropRuntimeDetached:!0}),s){let m=!!p?.pendingRun,y=t?.reason||(r==="completed"?"auto_after_task_complete":r==="running"?"auto_new_prompt_boundary":"auto_after_task_end");Rn("status",{event:"task_boundary_reset",reason:y,hadActiveRun:m}),Ao({reason:y,clearUi:!0}),m&&be&&await new Promise(_=>setTimeout(_,50))}Wn();let h=a,E=t?.routing;if(be&&U)try{let m=await be.submitRunInput({message:n,clientEventId:crypto.randomUUID(),continueRun:c,forceNewRun:s,runId:c?a:void 0,requestedMode:t?.routing||U.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))&&(ir=Math.max(1,Number(m.epoch||m.currentEpoch)));let y=typeof m.runId=="string"&&m.runId.trim()?m.runId.trim():"";if(!y){let _=String(m?.conflict?.type||"").trim();if(_==="active_run_exists"&&be&&s){let N=m?.conflict?.runId||m.runId;if(N){await be.controlRun({action:"cancel",runId:N,reason:"stale_run_cleanup"});let H=await be.submitRunInput({message:n,clientEventId:crypto.randomUUID(),continueRun:!1,forceNewRun:!0,requestedMode:t?.routing||U.taskRouting?.mode||"act"});H?.runId&&(h=H.runId.trim(),_r(h),(H.acceptedMode==="act"||H.acceptedMode==="planner")&&(E=H.acceptedMode))}}if(!h){let N=String(m.decisionReason||_||m.message||"run_not_accepted").trim();throw new Error(`Server did not accept this run (${N}).`)}}h||(h=y),_r(h),(m.acceptedMode==="act"||m.acceptedMode==="planner")&&(E=m.acceptedMode)}catch(m){let y=String(m?.message||"server run submission failed");_r(void 0),ze({kind:"error",title:"Run start failed",detail:y,status:"error"}),In("system",`Unable to start task: ${y}`,!0),ht(`Task could not start (${y})`),Me("error",{message:y,scope:"run_input"});return}Tc(n,{runId:h,appendUserMessage:!0,resume:!1,preserveHistory:!1,followupChatLog:d,autoResume:!0,routing:E,askUserAnswers:t?.askUserAnswers})}function li(e,t){vb(e,t)}function wo(e,t){je&&(clearTimeout(je),je=null);let n=p?.pendingRun;n?.id&&(Gn(n.id),M?.releaseWorkflowLock(n.id)),_t(void 0),M?.setActiveRun(void 0),xi(),ht(t||e)}function Eb(e){let t=M?.getState()?.activeRun;if(!t?.runtimeId||t.runtimeId===$e)return!1;if(t.runId!==e)return!0;let n=M?.listTabs({scope:"all"}).find(r=>r.runtimeId===t.runtimeId);return n?Number(n.updatedAt)>Date.now()-5e3:!1}function Sd(e=450){je||(je=setTimeout(()=>{je=null,Zr()},Math.max(120,e)))}function Zr(){if(!p?.pendingRun){je&&(clearTimeout(je),je=null),Ht=0;return}let e=st(p.pendingRun);if(!e||(it==="observer"&&!Co()&&Qr("controller",{localLogicalTabId:M?.getLocalLogicalTabId(),activeLogicalTabId:M?.getActiveLogicalTabId(),holderRuntimeId:M?.getCurrentHolderRuntimeId()}),it==="observer")||!Cn||!Le||cr||!Ss(p.activeTask?.status))return;if(Ya(p.activeTask?.status)){wo("terminal_task","Previous task already ended.");return}if(!e.autoResume)return;if(lc(U?.task?.resume?.mode)!=="crash_only"){wo("unsupported_resume_mode","Previous task dismissed.");return}if(e.resumeRequired!==!0){je&&(clearTimeout(je),je=null),Ht=0;return}if(!Tr){wo("resume_context_unvalidated","Resume context is no longer valid."),ze({kind:"error",title:"Resume blocked",detail:"Automatic resume was skipped because no valid handoff/reload context was found.",status:"error"}),Me("error",{message:"Resume blocked: missing validated handoff context",scope:"resume",code:"RESUME_CONTEXT_INVALID"});return}if(Eb(e.id)){Sd(650);return}je&&(clearTimeout(je),je=null);let n=!!Nn(U);if(!pi||!n){if(Ht+=1,Rn("status",{event:"resume_blocked_no_session",reason:pi?"missing_session_token":"session_not_ready",attempt:Ht,runId:e.id}),Ht<dg){ht("Preparing secure resume...");let s=Math.min(2e3,240+Ht*160);Sd(s);return}Ht=0,mn=!1,wo("resume_blocked_no_session","Could not safely resume previous task."),ze({kind:"error",title:"Resume blocked",detail:"Session credentials were not ready in time, so automatic resume was skipped.",status:"error"}),Me("error",{message:"Resume blocked: session credentials not ready",scope:"resume",code:"RESUME_BLOCKED_NO_SESSION"});return}Ht=0;let r=uc(U?.task?.resume?.ttlMs),o=Date.now()-Number(e.startedAt||0);if(!Number.isFinite(o)||o<0||o>r){wo("resume_ttl_expired","Previous task expired.");return}if(e.attempts>=sg){wo("resume_attempt_limit","Previous task dismissed.");return}cr=!0,mn=!1,Tr=!1,ht("Resuming interrupted task..."),Tc(e.text,{runId:e.id,resume:!0,appendUserMessage:!1,autoResume:!0})}function df(e){return cd({localUpdatedAt:Number(e.localState.updatedAt)||0,incomingUpdatedAt:Number(e.incomingState.updatedAt)||0,localState:e.localState,incomingState:e.incomingState,crossDomainResumeActive:!!e.allowRicherIncomingOnResume&&mn})}function ff(e){if(No(e.localState.activeTask,Vn("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=Ue(ko(e.localState)),i=Ue(ko(e.incomingState));return o&&i?o===i:!(o&&!i||!o&&i)}async function Tb(e,t){if(!p)return;let n=await tb(e,t);if(!n||!p)return;let r=yi({...n,sessionId:p.sessionId,runtimeId:$e},p.sessionId,$e);if(!df({localState:p,incomingState:r,allowRicherIncomingOnResume:!0})||!ff({localState:p,incomingState:r}))return;let o=Math.max(1,Number(p.taskEpoch)||1),i=Math.max(1,Number(r.taskEpoch)||1),s=ko(r);Xr({source:"indexeddb_checkpoint",incomingBoundaryId:s,taskEpochAdvanced:i>o,allowBootstrapAdoption:!0})&&(p=yi({...p,...r,sessionId:p.sessionId,runtimeId:$e},p.sessionId,$e),gi({rotateIfMissing:!Se}),Jr({persist:!1}),we(),ee&&(ee.clearMessages(),vc(p.uiMessages),Ec(p.timeline),p.uiStatus&&ee.setStatus(p.uiStatus),vi(),p.uiHidden?ee.hide():(ee.show(),p.uiOpen?ee.open():ee.close())),Cn&&Le&&An(),Cn&&Le&&p.workerState&&it==="controller"&&(Le.postMessage({type:"hydrate_state",state:p.workerState}),Me("context_restored",{source:"indexeddb_checkpoint",ts:Date.now()})))}function wc(e,t){if(p){if(t==="remote"){let n=Math.max(1,Number(p.taskEpoch)||1),r=Math.max(1,Number(e.taskEpoch)||1),o=r>n;p.taskEpoch=Math.max(n,r);let i=p.activeTask||Vn("shared_sync");p.activeTask=sb(e.task,i),o&&(p.uiMessages=[],p.timeline=[],cf(),_t(void 0),p.workerState=void 0,Se=Sr(),p.taskTabScope=void 0,on({forceReset:!0,persist:!1}),An(),Wn());let s=xr(e.uiMessages),c=new Set(s.map(C=>C.id)),a=p.uiMessages,u=p.uiMessages.filter(C=>C.role==="user"&&C.sourceRuntimeId===$e&&!c.has(C.id)).length;u>0&&Rn("status",{event:"local_message_preserved",count:u});let d=rb(a,s);(d.length!==a.length||d.some((C,L)=>{let W=a[L];return W?W.id!==C.id||W.ts!==C.ts||W.role!==C.role||W.text!==C.text:!0}))&&(p.uiMessages=d,ee?.clearMessages(),vc(p.uiMessages));let E=Ir(e.timeline),m=p.timeline,y=ib(m,E);(y.length!==m.length||y.some((C,L)=>{let W=m[L];return W?W.id!==C.id||W.ts!==C.ts||W.kind!==C.kind||W.title!==C.title||W.detail!==C.detail:!0}))&&(p.timeline=y,Ec(p.timeline)),typeof e.uiStatus=="string"&&ht(e.uiStatus,{publishShared:!1});let N=p.activeTask?.status,H=e.task?.status;if(e.activeRun&&e.activeRun.runtimeId!==$e&&!Xa({localTaskStatus:N,remoteTaskStatus:H,mode:it,hasRemoteActiveRun:!0})){let C=st(p.pendingRun),L=Ue(e.workerContext?.taskBoundaryId),W=C?.id===e.activeRun.runId&&(!C?.taskBoundaryId||Ue(C.taskBoundaryId)===(L||Ue(Se))),Y=W?C?.resumeRequired===!0:String(e.activeRun.runtimeId||"").trim()==="";_t(st({id:e.activeRun.runId,text:e.activeRun.text,startedAt:e.activeRun.startedAt,attempts:W&&C?.attempts||0,autoResume:!0,taskBoundaryId:(W?C?.taskBoundaryId:void 0)||L||C?.taskBoundaryId||Se,resumeRequired:Y,resumeReason:W?C?.resumeReason:Y?"agent_navigation":void 0}))}else{let C=Xa({localTaskStatus:N,remoteTaskStatus:H,mode:it,hasRemoteActiveRun:!!e.activeRun}),W=st(p.pendingRun)?.resumeRequired===!0&&Ss(N);C&&!W&&(p.pendingRun?.id&&Gn(p.pendingRun.id),_t(void 0),H&&H!=="running"&&xi())}if(it==="observer"&&Qr("observer",{localLogicalTabId:M?.getLocalLogicalTabId(),activeLogicalTabId:M?.getActiveLogicalTabId(),holderRuntimeId:M?.getCurrentHolderRuntimeId()}),e.workerContext){let C=Sn(e.workerContext),L=Number(p.workerState?.updatedAt)||0,W=Number(C?.updatedAt)||0;C&&W>L+100&&Xr({source:"shared_worker_context",incomingBoundaryId:C.taskBoundaryId,taskEpochAdvanced:o,allowBootstrapAdoption:!0})&&(p.workerState=sr(C,xn()),gi(),Cn&&Le&&it==="controller"&&(An(),Le.postMessage({type:"hydrate_state",state:p.workerState}),Me("context_restored",{source:"shared_session",ts:Date.now()})))}}p.uiMessages=xr(p.uiMessages),p.timeline=Ir(p.timeline),p.workerState=sr(Sn(p.workerState),xn()),gi(),Jr({persist:!1}),Cn&&Le&&it==="controller"&&An(),vi(),p.activeTask=No(p.activeTask,Vn("implicit")),we()}}function pf(e){let t=Vn("checkpoint_clone");return{version:sc,sessionId:e.sessionId,runtimeId:e.runtimeId,uiOpen:!!e.uiOpen,uiHidden:!!e.uiHidden,uiStatus:typeof e.uiStatus=="string"?Wt(e.uiStatus,300):void 0,uiMessages:xr(e.uiMessages),timeline:Ir(e.timeline),executionMode:e.executionMode==="observer"||e.executionMode==="controller"?e.executionMode:"controller",workerState:Sn(e.workerState),pendingRun:st(e.pendingRun),taskTabScope:yc(e.taskTabScope,st(e.pendingRun)?.taskBoundaryId||Sn(e.workerState)?.taskBoundaryId),lastNavigationHandoff:eo(e.lastNavigationHandoff),taskEpoch:Math.max(1,Number(e.taskEpoch)||1),activeTask:No(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 wb(e){return!(e.sessionScope==="tab"||e.checkpointing?.enabled===!1||!Nn(e)||!Ct)}function _b(){if(!p||!U||!Ct)return null;let e=M?.getState(),t=pf(p),n=Math.max(Number(e?.updatedAt||0),Number(t.updatedAt||0)),r=n>0?n:Date.now();return{version:Md,siteId:U.siteId,visitorId:Ct,sessionId:p.sessionId,updatedAt:r,sharedState:e,runtimeState:t}}function mf(e){if(!e||typeof e!="object"||!p||!U||e.siteId&&e.siteId!==U.siteId||Ct&&e.visitorId&&e.visitorId!==Ct)return;let t=typeof e.sessionId=="string"&&e.sessionId.trim()?e.sessionId.trim():p.sessionId;xo=!0;try{if(t&&p.sessionId!==t&&(p.sessionId=t,U={...U,sessionId:t},js(U),An({sessionId:t})),e.sharedState&&M&&M.hydrateExternalState(e.sharedState)&&(wc(M.getState(),"remote"),Qr(M.getRole(),{localLogicalTabId:M.getLocalLogicalTabId(),activeLogicalTabId:M.getActiveLogicalTabId(),holderRuntimeId:M.getCurrentHolderRuntimeId()})),e.runtimeState&&typeof e.runtimeState=="object"){let n=yi({...e.runtimeState,sessionId:t,runtimeId:$e},t,$e);if(df({localState:p,incomingState:n,allowRicherIncomingOnResume:!0})){if(!ff({localState:p,incomingState:n}))return;let r=Math.max(1,Number(p.taskEpoch)||1),o=Math.max(1,Number(n.taskEpoch)||1),i=ko(n);if(!Xr({source:"cloud_checkpoint",incomingBoundaryId:i,taskEpochAdvanced:o>r,allowBootstrapAdoption:!0}))return;p=yi({...p,...n,sessionId:t,runtimeId:$e},t,$e),gi(),p.workerState=sr(p.workerState,xn()),Jr({persist:!1}),we(),p.uiStatus&&ee?.setStatus(p.uiStatus),p.uiHidden?ee?.hide():(ee?.show(),p.uiOpen?ee?.open():ee?.close()),Cn&&An(),Cn&&p.workerState&&(Le?.postMessage({type:"hydrate_state",state:p.workerState}),Me("context_restored",{source:"cloud_checkpoint",ts:Date.now()})),it==="controller"&&Zr(),mn=!1}}}finally{xo=!1}}function _c(e){if(Je?.stop(),Je=null,!wb(e)||!Ct)return;let t=Nn(e);if(!t){Me("legacy_checkpoint_blocked",{reason:"missing_or_invalid_session_token",expectedPrefix:"rvrsess_",action:"disabled_cloud_checkpoint_client"});return}try{let n=r=>{Me("checkpoint_state",r),e.checkpointing?.onStateChange?.(r)};Je=new Is({apiBase:e.apiBase,authToken:t,getSessionToken:()=>Nn(U),siteId:e.siteId,visitorId:Ct,ttlHours:e.checkpointing?.ttlHours??1,flushIntervalMs:e.checkpointing?.flushIntervalMs,pullIntervalMs:e.checkpointing?.pullIntervalMs,minFlushIntervalMs:e.checkpointing?.minFlushIntervalMs,shouldWrite:()=>it==="controller"&&!mn,buildCheckpoint:()=>_b(),onCheckpoint:r=>{mf(r)},onStateChange:(r,o)=>{n({state:r,reason:o.reason,action:o.action,code:o.code,message:o.message}),r==="paused_auth"&&Me("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||Me("checkpoint_error",{action:o.action,code:o.code,message:o.message,status:o.status,disabled:!1,reason:"transient_failure"})}}),Je.start(),Je.markDirty()}catch{Je=null}}function js(e){if(!p)return;if(M?.stop(),M=null,e.sessionScope==="tab"){Qr("controller");return}M=new _s({siteId:e.siteId,sessionId:p.sessionId,runtimeId:$e,leaseMs:e.tabPolicy?.actionLeaseMs,onRoleChange:(r,o)=>{let i=gc(r);Qr(i,o);let s=i==="controller"&&(U?.allowActions??!0);if(Fe?.setAllowActions(s),Fe?.setActionGateContext?.({mode:i,controllerRuntimeId:o?.holderRuntimeId??M?.getCurrentHolderRuntimeId(),activeLogicalTabId:o?.activeLogicalTabId??M?.getActiveLogicalTabId(),localLogicalTabId:o?.localLogicalTabId??M?.getLocalLogicalTabId(),reason:_i(i,s)}),i==="controller"){on({persist:!0,appendSeed:!1}),Jr({persist:!0});let c=M?.getWorkerContext();if(c){let a=Sn(c),u=Number(p?.workerState?.updatedAt)||0,d=Number(a?.updatedAt)||0;a&&d>u+100&&Xr({source:"controller_handoff",incomingBoundaryId:a.taskBoundaryId,allowBootstrapAdoption:!0})&&(p&&(p.workerState=sr(a,xn()),gi(),we()),Cn&&Le&&(An(),Le.postMessage({type:"hydrate_state",state:p?.workerState}),Me("context_restored",{source:"controller_handoff",ts:Date.now()})))}Zr()}},onStateChange:(r,o)=>{wc(r,o)},onSwitchRequested:r=>{r>0&&(ki(),ze({kind:"status",title:`Switched to tab #${r}`,status:"info"}))}});let t=ac();M.start(Od(t)),on({persist:!0,appendSeed:!1}),Jr({persist:!0}),st(p?.pendingRun)?.resumeRequired===!0&&M.requestControl(),p?.lastNavigationHandoff&&t&&(p.lastNavigationHandoff=eo({...p.lastNavigationHandoff,consumed:!0}),we()),M.setRpcRequestHandler(async r=>{if(!Fe)throw new Error("Bridge not available");if(r.method==="getPageData")return Fe.getPageData(r.params);if(r.method==="executeTool")return Fe.executeTool(r.params.call,r.params.payload);throw new Error(`Unknown RPC method: ${r.method}`)}),p?.activeTask&&M.syncTask({...p.activeTask,taskId:p.activeTask.taskId},p.taskEpoch),p?.workerState&&M.setWorkerContext(of(p.workerState))}function xb(e){e&&or.delete(e),ee?.clearTimeline(),p&&(p.timeline=[]),M?.clearTimeline()}function Ib(e){if(!(!e||typeof e!="object")&&!jg(e)){if(e.type==="assistant"){let t=Ar(e.blocks),n=String(e.text||nf(t)||"");if(typeof e.runId=="string"&&e.runId&&(or.set(e.runId,n),or.size>80)){let r=or.keys().next().value;r&&or.delete(r)}In("assistant",n,!0,{blocks:t}),ze({kind:"tool_result",title:"Assistant update",detail:n,detailBlocks:t,status:"success"});return}if(e.type==="status"){let t=qg(e.stage),n=e.message?String(e.message):void 0,r=e.compactThought?String(e.compactThought):void 0,o=$g(n,t,r);if(n&&ht(n),o&&o!==Ms&&(Ms=o,n)){let i=!!(e.thought||r),s=r||(e.thought?String(e.thought):"");if(i&&t!=="analyze"&&t!=="route"&&t!=="complete"&&!Vg(s,$n))ze({kind:"thought",title:s,detail:e.thought?String(e.thought):r,status:"pending"});else{let a=t?`${Wg(t)}: ${n}`:n;ze({kind:"status",title:a,detail:r||(e.thought?String(e.thought):void 0),status:t==="complete"?"success":"info"})}}Me("status",e);return}if(e.type==="runtime_tabs_diagnostics"){let t=e?.diagnostics&&typeof e.diagnostics=="object"?e.diagnostics:{},n=rn(t.keptScopedTabIds||[]),r=rn(t.listedTabIds||[]),o=rn(t.resolvedTabOrder||[]),i=n.filter(s=>!r.includes(s));i.length>0&&(ze({kind:"status",title:"Scoped tab placeholder retained",detail:`missing_in_listing=${i.join(",")}; resolved_order=${o.join(",")||"none"}`,status:"info"}),Rn("status",{event:"scoped_tab_missing_from_listing",missingScopedTabIds:i,listedTabIds:r,resolvedTabOrder:o}));return}if(e.type==="tool_start"){ze({kind:"tool_start",title:`Running ${e.call?.name||"tool"}`,detail:qs(e.call?.args),status:"pending"}),Me("tool_start",e);return}if(e.type==="tool_result"){if(!eb(e.result)){let n=rn([...Jg(e.call?.args),...Zg(e.result)]);n.length&&(lf(n,{persist:!0}),An())}let t=Ar(e.detailBlocks)||Qg(e.result);ze({kind:"tool_result",title:`${e.call?.name||"tool"} completed`,detail:qs(e.result),detailBlocks:t,status:e?.result?.success===!1?"error":"success"}),Me("tool_result",e);return}if(e.type==="auth_required"){Me("auth_required",e.error),e.error?.message&&(In("system",`Auth required: ${e.error.message}`,!0),ze({kind:"error",title:"Auth required",detail:String(e.error.message),status:"error"}));return}if(e.type==="navigation_guardrail"){Me("navigation_guardrail",e),ze({kind:"status",title:"Navigation guardrail",detail:qs(e),status:"info"});return}if(e.type==="error"){In("system",`Error: ${e.message||"unknown"}`,!0),ze({kind:"error",title:"Execution error",detail:String(e.message||"unknown"),status:"error"}),Me("error",e);return}if(e.type==="state_snapshot"){if(p){let t=Sn({...e.state||{},updatedAt:Date.now()});if(!t||!Xr({source:"worker_snapshot",incomingBoundaryId:t.taskBoundaryId,allowBootstrapAdoption:!0}))return;p.workerState=sr(t,xn());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=td({taskStatus:p.activeTask?.status,hasPendingRun:!!p.pendingRun,activeRunId:n,activeRunText:r,ignoredRunIds:wr});o&&(p.pendingRun=st({id:n,text:r,startedAt:e.activeRun.startedAt,attempts:0,autoResume:!0})),n&&r&&o?M?.setActiveRun({runId:n,text:r}):n&&(!To()||wr.has(n))&&M?.setActiveRun(void 0),!To()&&p.pendingRun&&_t(void 0),p.workerState&&M?.setWorkerContext(of(p.workerState)),vi(),we()}return}if(e.type==="task_started"){Me("task_started",{taskId:e.taskId,reason:"worker"});return}if(e.type==="run_started"){if(Ms="",Wn(),typeof e.runId=="string"&&e.runId&&or.delete(e.runId),!To()){M?.setActiveRun(void 0);return}let t=p?.pendingRun,n=typeof e?.taskBoundaryId=="string"?Ue(e.taskBoundaryId):void 0;typeof e.runId=="string"&&e.runId&&oc(e.runId),_t(st({id:e.runId,text:e.text,startedAt:t?.startedAt||Date.now(),attempts:t?.attempts||0,autoResume:t?.autoResume!==!1,taskBoundaryId:n||t?.taskBoundaryId||Se,resumeReason:t?.resumeReason,resumeRequired:t?.resumeRequired})),M?.setActiveRun({runId:e.runId,text:String(e.text||"")}),ee?.setRunning(!0),ee?.setQuestionPrompt(void 0);let r=`run:${String(e.runId||"")}:start`;p?.timeline.some(o=>o.id===r)||ze({id:r,kind:"plan",title:e.resume?"Run resumed":"Run started",detail:String(e.text||""),status:"pending"});return}if(e.type==="run_completed"||e.type==="run_state_transition"){Ms="",cr=!1,Ht=0;let t=Yg(e),n=t.terminalState,r=t.continuationReason,o=e?.ok===!1||n==="completed"||n==="failed",i=!o&&n==="in_progress"&&r!=="awaiting_user";ee?.setRunning(i),Qe&&(clearTimeout(Qe),Qe=null);let s=typeof e.runId=="string"&&e.runId?e.runId:void 0,c=typeof e?.taskBoundaryId=="string"?Ue(e.taskBoundaryId):void 0;if(o){let a=st(p?.pendingRun),u=String(a?.text||$n||"").trim(),d=String((s?or.get(s):"")||"").trim();Yr=u||Yr,Kr=d||Kr,Io=Date.now(),a?.id&&M?.releaseWorkflowLock(a.id),s&&M?.releaseWorkflowLock(s),_t(void 0),_r(void 0),M?.setActiveRun(void 0),s&&Gn(s)}else if(To()&&s){oc(s),_r(s);let a=p?.pendingRun,u=a?.id===s&&a?.text?a.text:$n||a?.text||"Continue task";_t(st({id:s,text:u,startedAt:a?.startedAt||Date.now(),attempts:a?.attempts||0,autoResume:a?.autoResume!==!1,taskBoundaryId:c||a?.taskBoundaryId||Se,resumeRequired:n==="in_progress"&&r==="same_tab_navigation_handoff",resumeReason:n==="in_progress"&&r==="same_tab_navigation_handoff"?a?.resumeReason||"agent_navigation":void 0})),M?.setActiveRun({runId:s,text:u})}if(p&&e?.route&&(e.route.mode==="act"||e.route.mode==="planner")&&(p.lastRoutingDecision={mode:e.route.mode,score:Number(e.route.score)||void 0,reason:typeof e.route.reason=="string"?Wt(e.route.reason,200):void 0,ts:Date.now()},we()),!e.ok&&e.error){if(s&&or.delete(s),s&&be?.controlRun({action:"cancel",runId:s,reason:"worker_run_failed"}),!To())return;ee?.setQuestionPrompt(void 0),t.contextResetRecommended?(Os("worker_run_failed_terminal"),M?.resetTabsToCurrent(window.location.href,document.title||void 0),ht(`Task failed: ${String(e.error)}. Start a new task to continue.`)):(Os("worker_run_failed_terminal"),ht(`Task failed: ${String(e.error)}`)),s&&or.delete(s),ze({kind:"error",title:"Run failed",detail:String(e.error),status:"error"})}else if(e.ok){if(!To())return;let a=t.taskComplete,u=t.needsUserInput,d=t.questions||ur(e.questions),h=ur(p?.workerState?.pendingAskUser?.questions),E=d.length?d:u?h:[];if(n==="failed")s&&be?.controlRun({action:"cancel",runId:s,reason:"worker_terminal_failed"}),ee?.setQuestionPrompt(void 0),t.contextResetRecommended?(Os("worker_run_failed_terminal"),M?.resetTabsToCurrent(window.location.href,document.title||void 0),ht("Task failed. Start a new task to continue.")):(Os("worker_run_failed_terminal"),ht("Task failed.")),ze({kind:"error",title:"Run failed",detail:typeof e.error=="string"?e.error:"Run reported failure state.",status:"error"});else if(a||n==="completed")s&&be?.controlRun({action:"end_task",runId:s,reason:"worker_task_complete"}),ee?.setQuestionPrompt(void 0),ub("worker_task_complete"),M?.resetTabsToCurrent(window.location.href,document.title||void 0),ht("Task completed"),xb(typeof e.runId=="string"?e.runId:void 0);else{let m=u?"worker_waiting_for_input":r==="same_tab_navigation_handoff"?"worker_navigation_handoff":n==="in_progress"?"worker_loop_continue":"worker_task_active";u?Nr({type:"awaiting_user",reason:m,at:Date.now()}):sf(m),u&&E.length>0?ee?.setQuestionPrompt({questions:E}):u?vi():ee?.setQuestionPrompt(void 0),u?(ht("Need more input to continue"),ze({kind:"status",title:"Waiting for your input",detail:E.length?`Please answer: ${E.map(y=>`${y.key} (${y.query})`).join("; ")}`:"Planner requested more information before marking the task complete.",status:"info"})):r==="same_tab_navigation_handoff"?(ht("Navigating to continue task..."),ze({kind:"status",title:"Navigation handoff",detail:"Rover will resume after same-tab navigation completes.",status:"pending"})):ht("Working...")}}return}if(e.type==="ready"){Cn=!0,ht("ready"),Me("ready"),U&&bf(U);let t=M?.getWorkerContext(),n=sr(Sn(t),xn()),r=n&&Xr({source:"ready_hydrate",incomingBoundaryId:n.taskBoundaryId,allowBootstrapAdoption:!0})?n:void 0,o=sr(Sn(p?.workerState),xn()),i=o&&Xr({source:"ready_hydrate",incomingBoundaryId:o.taskBoundaryId,allowBootstrapAdoption:!0})?o:void 0,s=Number(i?.updatedAt)||0,c=Number(r?.updatedAt)||0,a=r&&c>s+100?r:i;p&&(a&&a!==p.workerState?(p.workerState=sr(a,xn()),we()):!a&&p.workerState&&(p.workerState=void 0,we())),a?(Le?.postMessage({type:"hydrate_state",state:a}),Me("context_restored",{source:"runtime_start",ts:Date.now()})):mn&&Je?(Rn("status",{event:"checkpoint_pull_first"}),Je.syncPullFirst()):Zr();return}if(e.type==="hydrated"){Zr();return}e.type==="updated"&&Me("updated")}}function ic(e,t){let n=Number(e);return Number.isFinite(n)?Math.max(t.min,Math.min(t.max,Math.floor(n))):t.fallback}function ta(e){if(!e||typeof e!="object")return;let t=ic(e.shortcutMaxStored,{min:1,max:Vs,fallback:Vs}),n=ic(e.shortcutMaxRendered,{min:1,max:Gs,fallback:Gs});return{shortcutMaxStored:t,shortcutMaxRendered:n}}function Ii(){ui&&(clearTimeout(ui),ui=null),di&&(clearTimeout(di),di=null)}function kb(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>bd?null:{shortcuts:Cr(n.data.shortcuts),greeting:So(n.data.greeting),limits:ta(n.data.limits),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>bd?null:{shortcuts:Cr(n.data)}}catch{return null}}function hf(e,t){try{localStorage.setItem(`rover:site-config:${e}`,JSON.stringify({ts:Date.now(),version:t.version,data:{shortcuts:Cr(t.shortcuts),greeting:So(t.greeting),limits:ta(t.limits)}}))}catch{}}function So(e){if(!e||typeof e!="object")return;let t={},n=String(e.text||"").trim();n&&(t.text=n.slice(0,Tg));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 Rb(e){if(!e||typeof e!="object")return null;let t=String(e.id||"").trim().slice(0,80),n=String(e.label||"").trim().slice(0,bg),r=String(e.prompt||"").trim().slice(0,vg);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,yg)),e.icon&&(o.icon=String(e.icon).trim().slice(0,Eg)),(e.routing==="auto"||e.routing==="act"||e.routing==="planner")&&(o.routing=e.routing);let i=Number(e.order);return Number.isFinite(i)&&(o.order=Math.trunc(i)),o}function Cr(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(t.length>=Vs)break;let o=Rb(r);!o||n.has(o.id)||(n.add(o.id),t.push(o))}return t}function Sb(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 Ab(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 Sb(Array.from(n.values())).slice(0,Vs)}function gf(e){let t=ic(Rr?.limits?.shortcutMaxRendered,{min:1,max:Gs,fallback:Gs});return e.filter(n=>n.enabled!==!1).slice(0,t)}function na(e){if(!e)return;let t=So(Rr?.greeting),n=So(e.ui?.greeting);if(!(!t&&!n))return{...t||{},...n||{}}}function xc(e){let t=qn?.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 Ei(){if(kr||!ee||!U||p?.uiOpen)return;let e=na(U);if(e?.disabled===!0)return;let t=`rover:greeting-shown:${U.siteId}`;try{if(sessionStorage.getItem(t)){zr=!0;return}}catch{}if(zr)return;Ii();let n=e?.delay??3e3,r=e?.duration??8e3,o=xc(e);ui=setTimeout(()=>{if(ui=null,!(kr||p?.uiOpen)){ee?.showGreeting(o),zr=!0;try{sessionStorage.setItem(t,"1")}catch{}di=setTimeout(()=>{di=null,ee?.dismissGreeting()},r)}},n)}function Xs(e){let t=Cr(e.ui?.shortcuts||[]),n=Cr(Rr?.shortcuts||[]),r=Ab(t,n);ee?.setShortcuts(gf(r))}async function Cb(e){let t=null,n=nc(e)||Nn(e);if(!n)return null;let r={siteId:e.siteId,sessionId:p?.sessionId||e.sessionId,host:window.location.hostname,url:window.location.href};n.startsWith("rvrsess_")?r.sessionToken=n:r.bootstrapToken=n;let o=Eo(e.apiBase);for(let i of o)try{let s=await fetch(`${i}/session/start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)}),c=await s.json().catch(()=>{});if(!s.ok||!c?.success)continue;if(t=c?.data?.siteConfig||null,t)break}catch{}return t?{shortcuts:Cr(t?.shortcuts),greeting:So(t?.greeting),limits:ta(t?.limits),version:t?.version!=null?String(t.version):void 0}:null}function bf(e){let t=kb(e.siteId);t&&(Rr=t),Xs(e),Ei(),Cb(e).then(n=>{if(n&&(Rr=n,hf(e.siteId,n),Xs(e),!kr)){let r=na(e);zr&&!p?.uiOpen?ee?.showGreeting(xc(r)):Ei()}}).catch(()=>{})}function Ic(e){if(!U)return;let t={...qn,...e};t.name&&(t.name=String(t.name).trim().slice(0,120)),t.email&&(t.email=String(t.email).trim().slice(0,240)),qn=t,Ud(U.siteId,qn),ee?.setVisitorName(qn.name||""),kr||(zr&&!p?.uiOpen?ee?.showGreeting(xc(na(U))):Ei())}function Nb(e){if(js(e),M){let a=gc(M.getRole());it=a,p&&(p.executionMode=a)}_c(e),Zs(e);let t=(e.allowActions??!0)&&(M?M.isController():!0),n=a=>{if(!p)return;let u=st(p.pendingRun);if(u){let y=st({...u,taskBoundaryId:u.taskBoundaryId||Se,resumeRequired:!0,resumeReason:a});return p.pendingRun=y,y&&M?.setActiveRun({runId:y.id,text:y.text}),y}let d=M?.getState().activeRun,h=String(be?.getActiveRunId()||wi||d?.runId||"").trim();if(!h)return;let E=String(d?.text||$n||"Continue task").trim()||"Continue task",m=st({id:h,text:E,startedAt:Date.now(),attempts:0,autoResume:!0,taskBoundaryId:Se,resumeRequired:!0,resumeReason:a});return p.pendingRun=m,m&&M?.setActiveRun({runId:m.id,text:m.text}),m};Fe=new gs({allowActions:t,runtimeId:$e,allowedDomains:e.allowedDomains,domainScopeMode:e.domainScopeMode,externalNavigationPolicy:e.externalNavigationPolicy,crossHostPolicy:Qs(e.navigation?.crossHostPolicy),navigationDelayMs:e.timing?.navigationDelayMs,domSettle:{debounceMs:Tt(e.timing?.domSettleDebounceMs,8,500),maxWaitMs:Tt(e.timing?.domSettleMaxWaitMs,80,5e3),retries:Tt(e.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:Tt(e.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:Tt(e.timing?.sparseTreeRetryMaxAttempts,0,4)},registerOpenedTab:a=>M?.registerOpenedTab(a),switchToLogicalTab:a=>M?.switchToLogicalTab(a)||{ok:!1,reason:"No session coordinator"},listKnownTabs:()=>(M?.listTabs()||[]).map(a=>({logicalTabId:a.logicalTabId,runtimeId:a.runtimeId,url:a.url,title:a.title,external:!!a.external})),onNavigationGuardrail:a=>{if(Me("navigation_guardrail",a),ze({kind:"status",title:"Navigation guardrail",detail:qs(a),status:"info"}),be&&a?.blockedUrl){let u=xd();if(!u)return;let d=String(window.location.hostname||"").toLowerCase(),h=(()=>{try{return new URL(String(a.blockedUrl)).hostname.toLowerCase()}catch{return}})();be.sendTabEvent({runId:u,currentUrl:String(a.currentUrl||window.location.href),targetUrl:String(a.blockedUrl),message:String(a.reason||""),currentHost:d||void 0,targetHost:h,isCrossHost:!!h&&!!d&&h!==d}).then(E=>{E&&(E.retryAttempted&&Me("tab_event_conflict_retry",{runId:E.runId||u,decisionReason:E.decisionReason,conflict:E.conflict}),E.retryExhausted&&Me("tab_event_conflict_exhausted",{runId:E.runId||u,decisionReason:E.decisionReason,conflict:E.conflict}))}).catch(()=>{})}},onBeforeAgentNavigation:async a=>{let u=xd(),d=String(window.location.hostname||"").toLowerCase(),h=(()=>{try{return new URL(String(a?.targetUrl||"")).hostname.toLowerCase()}catch{return}})(),E=!!d&&!!h&&ii(d)!==ii(h),m=!!d&&!!h&&d!==h,_=fd({host:h,currentHost:d,allowedDomains:U?.allowedDomains,domainScopeMode:U?.domainScopeMode})?m&&U?.navigation?.crossHostPolicy==="open_new_tab"?"open_new_tab":"allow_same_tab":U?.externalNavigationPolicy==="block"?"block":U?.externalNavigationPolicy==="allow"?"allow_same_tab":"open_new_tab",N=Ug(),H=null;if(a?.targetUrl&&be&&u){let Y=!!h&&!!d&&h!==d;H=await be.sendTabEvent({runId:u,currentUrl:window.location.href,targetUrl:a.targetUrl,message:N,currentHost:d||void 0,targetHost:h,isCrossHost:Y}).catch(()=>null),H?.retryAttempted&&Me("tab_event_conflict_retry",{runId:H.runId||u,decisionReason:H.decisionReason,conflict:H.conflict,targetUrl:a.targetUrl}),H?.retryExhausted&&Me("tab_event_conflict_exhausted",{runId:H.runId||u,decisionReason:H.decisionReason,conflict:H.conflict,targetUrl:a.targetUrl})}let C=ld({crossRegistrableDomain:E,fallbackDecision:_,serverDecision:H?.decision,serverAvailable:!!H}),L=C.decision;if(L==="block")return{decision:"block",reason:C.failSafeBlocked?"Cross-domain navigation blocked because preflight policy check is unavailable.":H?.reason||"Navigation blocked by policy.",decisionReason:C.failSafeBlocked?"preflight_unavailable_block":H?.decisionReason||"policy_blocked"};if(L==="open_new_tab"){let Y=C.decisionReason==="preflight_unavailable_fallback"&&!H;return{decision:"open_new_tab",reason:H?.reason||(Y?"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:H?.decisionReason||C.decisionReason||"open_new_tab"}}if(mi=!0,!p){let Y=C.decisionReason==="preflight_unavailable_fallback"&&!H;return{decision:"allow_same_tab",reason:H?.reason||(Y?"Preflight is unavailable; allowing navigation using local policy.":"Navigation allowed."),decisionReason:H?.decisionReason||C.decisionReason||"allow_same_tab"}}return Rd(vd(a)),n(a.isCrossHost?"cross_host_navigation":"agent_navigation")&&we(),Je?.markDirty(),Je?.syncNow({push:!0,pull:!1}),{decision:"allow_same_tab",reason:H?.reason||(C.decisionReason==="preflight_unavailable_fallback"&&!H?"Preflight is unavailable; allowing navigation using local policy.":"Navigation allowed."),decisionReason:H?.decisionReason||C.decisionReason||"allow_same_tab"}},onBeforeCrossHostNavigation:a=>{if(mi=!0,!p||!U)return;Rd(vd(a));let u=ac(),d=n("cross_host_navigation");Zu(U.siteId,{sessionId:p.sessionId,sessionToken:kn,sessionTokenExpiresAt:jr,targetUrl:String(a?.targetUrl||"").trim()||void 0,sourceHost:String(window.location.hostname||"").trim().toLowerCase()||void 0,handoffId:u?.handoffId||a?.handoffId,pendingRun:d?{id:d.id,text:d.text,startedAt:d.startedAt,attempts:d.attempts,taskBoundaryId:d.taskBoundaryId||Se}:void 0,handoff:u?{handoffId:u.handoffId,sourceLogicalTabId:u.sourceLogicalTabId,runId:u.runId,targetUrl:u.targetUrl,createdAt:u.createdAt}:void 0,activeTask:p.activeTask?{taskId:p.activeTask.taskId,status:p.activeTask.status}:void 0,taskEpoch:p.taskEpoch,timestamp:Date.now()}),we(),Je?.markDirty(),Je?.syncNow({push:!0,pull:!1})},instrumentationOptions:e.mode==="safe"?{observeInlineMutations:!1}:void 0});let r=it==="observer"?"observer":"controller";Fe?.setActionGateContext?.({mode:r,controllerRuntimeId:M?.getCurrentHolderRuntimeId(),activeLogicalTabId:M?.getActiveLogicalTabId(),localLogicalTabId:M?.getLocalLogicalTabId(),reason:_i(r,t)});let o=new MessageChannel;Pu(o.port1,{getSnapshot:()=>Fe.getSnapshot(),getPageData:async a=>{let u=U||e,d=Number(a?.tabId),h=M?.getLocalLogicalTabId();if(!Number.isFinite(d)||d<=0||d===h||!M)return Fe.getPageData(a);let m=M.listTabs().find(y=>y.logicalTabId===d);if(!m){let y=fi().includes(d);return si({logicalTabId:d,external:!1},y?"detached_runtime_placeholder":"target_tab_missing")}if(m.runtimeId===$e)return Fe.getPageData(a);if(m.external&&u.externalNavigationPolicy!=="allow")return si(m,"external_domain_inaccessible");if(!m.runtimeId||!M.isTabAlive(d))return si(m,"target_tab_inactive");try{return await M.sendCrossTabRpc(m.runtimeId,"getPageData",a,15e3)}catch{return si(m,"cross_tab_rpc_failed")}},executeTool:async a=>{let u=U||e,d=a?.payload?.forceLocal===!0,h=String(a?.call?.name||"").trim(),E=Number(a?.call?.args?.tab_id),m=M?.getActiveLogicalTabId(),y=Number.isFinite(E)&&E>0?E:m;if(bb(h))return yb({call:a?.call,routeTabId:Number.isFinite(Number(y))?Number(y):void 0,runtimeCfg:u});if(d)return Fe.executeTool(a.call,a.payload);let _=M?.getLocalLogicalTabId();if(!y||y===_||!M)return Fe.executeTool(a.call,a.payload);let H=M.listTabs().find(C=>C.logicalTabId===y);if(!H){let C=fi().includes(y);return ai(u,{logicalTabId:y,external:!1},C?"detached_runtime_placeholder":"target_tab_missing")}if(H.external&&u.externalNavigationPolicy!=="allow")return ai(u,H,"external_tab_action_blocked");if(H.runtimeId===$e)return Fe.executeTool(a.call,a.payload);if(!H.runtimeId||!M.isTabAlive(y))return ai(u,H,"target_tab_inactive");try{return await M.sendCrossTabRpc(H.runtimeId,"executeTool",a,2e4)}catch{return ai(u,H,"cross_tab_execute_failed")}},executeClientTool:a=>Fe.executeClientTool(a.name,a.args),listClientTools:()=>Fe.listClientTools(),getTabContext:()=>{let a=M?.getLocalLogicalTabId(),u=M?.getActiveLogicalTabId();return{id:a||1,logicalTabId:a||1,activeLogicalTabId:u||a||1,runtimeId:$e,mode:it,url:window.location.href,title:document.title}},listSessionTabs:()=>{if(!M)return[];let a=M.listTabs({scope:"all"}),u=Array.isArray(M.getState()?.tabs)?M.getState().tabs:[],d=new Set(fi()),h=new Map,E=m=>{let y=Number(m?.logicalTabId||m?.id);!Number.isFinite(y)||y<=0||h.set(y,{...h.get(y)||{},...m,logicalTabId:y,id:y})};for(let m of a)E(m);for(let m of u){let y=Number(m?.logicalTabId);!Number.isFinite(y)||y<=0||(m.runtimeId||m.external||d.has(y))&&E(m)}return[...h.values()].sort((m,y)=>Number(m.logicalTabId)-Number(y.logicalTabId))}}),o.port1.start?.();let i=e.workerUrl?e.workerUrl:new URL("./worker/worker.js",__ROVER_SCRIPT_URL__).toString(),s=i;try{let a=window.location.origin,u=new URL(i).origin;if(a!==u){let d=new Blob([`import '${i}';`],{type:"application/javascript"});s=URL.createObjectURL(d)}}catch{}Le=new Worker(s,{type:"module"}),Le.postMessage({type:"init",config:{...e,...Ro(),publicKey:void 0,authToken:Nn(e),sessionToken:kn,sessionId:p?.sessionId,activeRunId:p?.pendingRun?.id},port:o.port2},[o.port2]);let c=(a="manual_cancel_task")=>{if(!p)return;let u=p.pendingRun;if(u){Gn(u.id),Le?.postMessage({type:"cancel_run",runId:u.id}),be?.controlRun({action:"cancel",runId:u.id,reason:a}).catch(()=>{}),M?.releaseWorkflowLock(u.id),M?.setActiveRun(void 0),_t(void 0),p.workerState=void 0,M?.setWorkerContext(void 0),Se=Sr(),p.taskTabScope=void 0,on({forceReset:!0,persist:!1}),An(),Qe&&(clearTimeout(Qe),Qe=null),ee?.setRunning(!1),ee?.setQuestionPrompt(void 0),af(a),ht("Task cancelled."),In("system","Task cancelled.",!0),Yr=void 0,Kr=void 0,Io=0,ze({kind:"info",title:"Run cancelled",status:"info"}),we();return}let d=ur(p.workerState?.pendingAskUser?.questions).length>0,h=p.activeTask?.status;!d&&h!=="running"||(Se=Sr(),p.workerState=void 0,p.taskTabScope=void 0,on({forceReset:!0,persist:!1}),An(),Qe&&(clearTimeout(Qe),Qe=null),ee?.setRunning(!1),ee?.setQuestionPrompt(void 0),Wn(),_t(void 0),db(a),be?.controlRun({action:"cancel",runId:p.pendingRun?.id,reason:a}).catch(()=>{}),M?.endTask(a),M?.setActiveRun(void 0),M?.setWorkerContext(void 0),ht(a==="question_prompt_cancel"?"Input request cancelled.":"Task cancelled."),Yr=void 0,Kr=void 0,Io=0,ze({kind:"info",title:a==="question_prompt_cancel"?"Input request cancelled":"Task cancelled",status:"info"}),we())};if(ee=Wu({shortcuts:gf(Cr(e.ui?.shortcuts||[])),greeting:na(e),visitorName:qn?.name,onShortcutClick:a=>{let u=String(a.prompt||"").trim();u&&li(u,{routing:a.routing})},onSend:(a,u)=>{li(a,{askUserAnswers:u?.askUserAnswers})},onRequestControl:()=>{M?.requestControl()??!1?ze({kind:"status",title:"Control requested",detail:"This tab is now the active Rover controller.",status:"info"}):In("system","Unable to acquire control right now. Try again in a moment.",!0)},onCancelRun:()=>{c("manual_cancel_task")},onCancelQuestionFlow:()=>{c("question_prompt_cancel")},onNewTask:()=>{Ao({reason:"manual_new_task",clearUi:!0})},onEndTask:()=>{oa({reason:"manual_end_task"})},onTaskSuggestionPrimary:()=>{let a=hi;if(a){if(a.kind==="resume_run"){Wn(),Tc(a.text,{runId:a.runId,resume:!0,appendUserMessage:!1,autoResume:!0});return}li(a.text,{bypassSuggestion:!0,startNewTask:!0,reason:a.reason})}},onTaskSuggestionSecondary:()=>{let a=hi;if(a){if(a.kind==="resume_run"){p?.pendingRun?.id===a.runId&&(Gn(a.runId),M?.releaseWorkflowLock(a.runId),M?.setActiveRun(void 0),_t(void 0)),Qe&&(clearTimeout(Qe),Qe=null),Wn(),Ao({reason:"resume_declined_start_fresh",clearUi:!0});return}li(a.text,{bypassSuggestion:!0})}},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:()=>{kr=!0,Ii(),p&&(p.uiOpen=!0,p.uiHidden=!1,we()),Me("open")},onClose:()=>{p&&(p.uiOpen=!1,we()),Me("close")}}),Wn(),p?.uiMessages?.length&&vc(p.uiMessages),p?.timeline?.length&&Ec(p.timeline),p?.uiStatus&&ee.setStatus(p.uiStatus),vi(),p?.executionMode&&ee.setExecutionMode(p.executionMode,{localLogicalTabId:M?.getLocalLogicalTabId(),activeLogicalTabId:M?.getActiveLogicalTabId(),controllerRuntimeId:M?.getCurrentHolderRuntimeId(),canTakeControl:!0,canComposeInObserver:ef(),note:tf(p.executionMode)}),Le.onmessage=a=>{Ib(a.data||{})},M){let a=()=>{M?.registerCurrentTab(window.location.href,document.title),M?.broadcastNavigation(window.location.href,document.title)},u=history.pushState.bind(history),d=history.replaceState.bind(history);history.pushState=function(...h){let E=u(...h);return setTimeout(a,0),E},history.replaceState=function(...h){let E=d(...h);return setTimeout(a,0),E},window.addEventListener("popstate",a)}p?.uiHidden?ee.hide():(ee.show(),p?.uiOpen??!!e.openOnInit?ee.open():ee.close()),p&&(p.uiHidden=!!p.uiHidden,p.uiOpen=!!p.uiOpen,we()),M&&(wc(M.getState(),"remote"),Qr(M.getRole(),{localLogicalTabId:M.getLocalLogicalTabId(),activeLogicalTabId:M.getActiveLogicalTabId(),holderRuntimeId:M.getCurrentHolderRuntimeId()})),Ei()}function Ti(e){if(Er)return Ys(e),Er;ar=Ku(),$e=Cg(e.siteId),Ct=Bd(e),qn=e.visitor||Lg(e.siteId),kr=!1,zr=!1,Ii(),Rr=null,Tr=!1;let t=e.sessionId?.trim(),n=Td(e.siteId,t),r=Hs(e.siteId);vr=n,Hn=r!==n?r:null;let o=Id(n)||(Hn?Id(Hn):null),i=o?null:ja(e.siteId,{currentUrl:window.location.href,currentHost:window.location.hostname,requireTargetMatch:!0});!o&&!i&&ja(e.siteId,{currentHost:window.location.hostname,requireTargetMatch:!1})&&(Rn("status",{event:"resume_cookie_rejected",reason:"target_or_host_mismatch"}),ei(e.siteId)),i&&(ei(e.siteId),mn=!0,Tr=!0,i.sessionToken&&rc(i.sessionToken,i.sessionTokenExpiresAt));let s=e.sessionId?.trim(),c=!s&&!o?.sessionId&&!i?.sessionId&&e.sessionScope!=="tab"&&Ct?Dg(e.siteId,Ct):void 0,a=s||o?.sessionId||i?.sessionId||c||crypto.randomUUID(),u=o;if(!o&&i){let h=tc(i.sessionId,$e),E=String(i.activeTask?.status||"").trim().toLowerCase(),m=!E||E==="running";i.pendingRun&&m&&(h.pendingRun=st({...i.pendingRun,autoResume:!0,taskBoundaryId:i.pendingRun.taskBoundaryId,resumeRequired:!0,resumeReason:"cross_host_navigation"})),i.handoff&&(h.lastNavigationHandoff=eo({...i.handoff,createdAt:i.handoff.createdAt})),i.activeTask&&(h.activeTask={...Vn("cross_domain_resume"),taskId:i.activeTask.taskId,status:i.activeTask.status}),h.taskEpoch=i.taskEpoch||1,h.uiOpen=!0,u=h}p=yi(u,a,$e),s&&p.sessionId!==s&&(p=tc(s,$e));let d=Pg(e.siteId);Se=Ag(p),d&&p.activeTask?.status==="running"&&(Tr=!0,p.pendingRun=st({...p.pendingRun||{},id:p.pendingRun?.id||d.runId,text:p.pendingRun?.text||d.text||$n||"Continue task",startedAt:p.pendingRun?.startedAt||Date.now(),attempts:p.pendingRun?.attempts||0,autoResume:!0,taskBoundaryId:p.pendingRun?.taskBoundaryId||d.taskBoundaryId||Se,resumeRequired:!0,resumeReason:d.resumeReason||p.pendingRun?.resumeReason||"agent_navigation"})),p.pendingRun&&!p.pendingRun.taskBoundaryId&&(p.pendingRun=st({...p.pendingRun,taskBoundaryId:Se})),p.workerState&&!p.workerState.taskBoundaryId&&(p.workerState=sr(Sn({...p.workerState,taskBoundaryId:Se}),Se)),U={...e,visitorId:Ct||e.visitorId,sessionId:s||p.sessionId,taskRouting:{mode:e.taskRouting?.mode||"act",actHeuristicThreshold:e.taskRouting?.actHeuristicThreshold,plannerOnActError:e.taskRouting?.plannerOnActError},navigation:{crossHostPolicy:Qs(e.navigation?.crossHostPolicy)},timing:{navigationDelayMs:Tt(e.timing?.navigationDelayMs,0,3e3),actionTimeoutMs:Tt(e.timing?.actionTimeoutMs,5e3,12e4),domSettleDebounceMs:Tt(e.timing?.domSettleDebounceMs,8,500),domSettleMaxWaitMs:Tt(e.timing?.domSettleMaxWaitMs,80,5e3),domSettleRetries:Tt(e.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:Tt(e.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:Tt(e.timing?.sparseTreeRetryMaxAttempts,0,4)},task:{singleActiveScope:Wd(e.task?.singleActiveScope),tabScope:$d(e.task?.tabScope),resume:{mode:lc(e.task?.resume?.mode),ttlMs:uc(e.task?.resume?.ttlMs)},followup:{mode:Vd(e.task?.followup?.mode),ttlMs:fc(e.task?.followup?.ttlMs),minLexicalOverlap:pc(e.task?.followup?.minLexicalOverlap)},observerInput:dc(e.task?.observerInput),autoResumePolicy:qd(e.task?.autoResumePolicy)},chat:{inRun:Gd(e.chat?.inRun),resumeFollowup:{mode:zd(e.chat?.resumeFollowup?.mode),maxTurns:jd(e.chat?.resumeFollowup?.maxTurns)}},external:{intentSelection:Xd(e.external?.intentSelection),requireUserConfirm:Yd(e.external?.requireUserConfirm),adversarialGate:Kd(e.external?.adversarialGate)},taskContext:{...e.taskContext},features:{rover_v1_kernel_runtime:Qd(e.features?.rover_v1_kernel_runtime)}},p.sessionId=U.sessionId,p.runtimeId=$e,vr=Td(e.siteId,p.sessionId),Hn=vr!==Hs(e.siteId)?Hs(e.siteId):null,p.executionMode=p.executionMode||"controller",p.timeline=Ir(p.timeline),p.uiMessages=xr(p.uiMessages),p.activeTask=No(p.activeTask,Vn("boot")),Ya(p.activeTask?.status)&&(p.pendingRun=void 0,p.workerState=void 0,mn=!1,Tr=!1,ei(e.siteId),Hd(e.siteId)),p.taskEpoch=Math.max(1,Number(p.taskEpoch)||1),it=p.executionMode,qn&&Ud(e.siteId,qn),we();try{sessionStorage.setItem(`rover:tab-alive:${e.siteId}`,"1")}catch{}Cn=!1,pi=!1,cr=!1,Ht=0;try{let h=sessionStorage.getItem(`rover:sess:${e.siteId}`);if(h){let{t:E,e:m}=JSON.parse(h);E&&typeof E=="string"&&E.startsWith("rvrsess_")&&Number(m)>Date.now()+1e4&&rc(E,Number(m))}}catch{}if(Nb(U),Jd(U),(!be||kn&&jr>Date.now()+1e4)&&(pi=!0),vr&&Tb(vr,Hn?[Hn]:void 0),ab(),mn&&setTimeout(()=>{mn&&!cr&&(mn=!1,Zr())},8e3),Er={boot:Ti,init:kc,update:Ys,shutdown:Rc,open:ki,close:ra,show:Sc,hide:Ac,send:Cc,newTask:Ao,endTask:oa,getState:Nc,registerTool:Mc,identify:Ic,on:Dd},Bs.length){for(let h of Bs)Fd(h);Bs.length=0}return Er}function kc(e){return Ti(e)}function Ys(e){if(!Er||!Le||!U)return;U={...U,...e,taskRouting:{...U.taskRouting,...e.taskRouting},navigation:{...U.navigation,...e.navigation,crossHostPolicy:Qs(e.navigation?.crossHostPolicy??U.navigation?.crossHostPolicy)},timing:{...U.timing,...e.timing,navigationDelayMs:Tt(e.timing?.navigationDelayMs??U.timing?.navigationDelayMs,0,3e3),actionTimeoutMs:Tt(e.timing?.actionTimeoutMs??U.timing?.actionTimeoutMs,5e3,12e4),domSettleDebounceMs:Tt(e.timing?.domSettleDebounceMs??U.timing?.domSettleDebounceMs,8,500),domSettleMaxWaitMs:Tt(e.timing?.domSettleMaxWaitMs??U.timing?.domSettleMaxWaitMs,80,5e3),domSettleRetries:Tt(e.timing?.domSettleRetries??U.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:Tt(e.timing?.sparseTreeRetryDelayMs??U.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:Tt(e.timing?.sparseTreeRetryMaxAttempts??U.timing?.sparseTreeRetryMaxAttempts,0,4)},task:{...U.task,...e.task,singleActiveScope:Wd(e.task?.singleActiveScope??U.task?.singleActiveScope),tabScope:$d(e.task?.tabScope??U.task?.tabScope),resume:{mode:lc(e.task?.resume?.mode??U.task?.resume?.mode),ttlMs:uc(e.task?.resume?.ttlMs??U.task?.resume?.ttlMs)},followup:{mode:Vd(e.task?.followup?.mode??U.task?.followup?.mode),ttlMs:fc(e.task?.followup?.ttlMs??U.task?.followup?.ttlMs),minLexicalOverlap:pc(e.task?.followup?.minLexicalOverlap??U.task?.followup?.minLexicalOverlap)},observerInput:dc(e.task?.observerInput??U.task?.observerInput),autoResumePolicy:qd(e.task?.autoResumePolicy??U.task?.autoResumePolicy)},chat:{...U.chat,...e.chat,inRun:Gd(e.chat?.inRun??U.chat?.inRun),resumeFollowup:{mode:zd(e.chat?.resumeFollowup?.mode??U.chat?.resumeFollowup?.mode),maxTurns:jd(e.chat?.resumeFollowup?.maxTurns??U.chat?.resumeFollowup?.maxTurns)}},external:{...U.external,...e.external,intentSelection:Xd(e.external?.intentSelection??U.external?.intentSelection),requireUserConfirm:Yd(e.external?.requireUserConfirm??U.external?.requireUserConfirm),adversarialGate:Kd(e.external?.adversarialGate??U.external?.adversarialGate)},taskContext:{...U.taskContext,...e.taskContext},features:{...U.features,...e.features,rover_v1_kernel_runtime:Qd(e.features?.rover_v1_kernel_runtime??U.features?.rover_v1_kernel_runtime)},ui:{...U.ui,...e.ui,agent:{...U.ui?.agent,...e.ui?.agent},panel:{...U.ui?.panel,...e.ui?.panel}},tools:{...U.tools,...e.tools,client:e.tools?.client??U.tools?.client,web:{...U.tools?.web,...e.tools?.web}}},Ct=Bd(U),Ct&&(U.visitorId=Ct),e.sessionId&&p?(p.sessionId=e.sessionId,we(),js(U)):(e.sessionScope||e.tabPolicy)&&js(U),_c(U),Zs(U),Jd(U);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(Fe){typeof e.allowActions=="boolean"&&Fe.setAllowActions(e.allowActions&&it==="controller");let n=it==="controller"&&(U?.allowActions??!0),r=it==="observer"?"observer":"controller";Fe?.setActionGateContext?.({mode:r,controllerRuntimeId:M?.getCurrentHolderRuntimeId(),activeLogicalTabId:M?.getActiveLogicalTabId(),localLogicalTabId:M?.getLocalLogicalTabId(),reason:_i(r,n)}),(e.allowedDomains||e.domainScopeMode||e.externalNavigationPolicy||e.navigation?.crossHostPolicy)&&Fe.setNavigationPolicy({allowedDomains:e.allowedDomains,domainScopeMode:e.domainScopeMode,externalNavigationPolicy:e.externalNavigationPolicy,crossHostPolicy:e.navigation?.crossHostPolicy})}Le.postMessage({type:"update_config",config:{...e,...Ro(),publicKey:void 0,authToken:Nn(U),sessionToken:kn,sessionId:p?.sessionId,activeRunId:p?.pendingRun?.id,sessionEpoch:be?.getEpoch?.()??ir,sessionSeq:be?.getLastSeq?.()??0}}),Xs(U),t?bf(U):Ei(),e.visitor&&Ic(e.visitor),typeof e.openOnInit=="boolean"&&(e.openOnInit?ki():ra())}function Rc(){Wn(),we(),Js(!0),hc(),Je?.markDirty(),Je?.syncNow({push:!0,pull:!1}),Je?.stop(),Je=null,be?.stop(),be=null,kn=void 0,jr=0,ir=1,_r(void 0),M?.stop(),M=null,Le?.terminate(),Le=null,ee?.destroy(),ee=null,Fe=null,U=null,Cn=!1,cr=!1,Ht=0,je&&(clearTimeout(je),je=null),mi=!1,Se="",$e="",Ct=void 0,qn=void 0,kr=!1,zr=!1,Ii(),Rr=null,xo=!1,Us=!1,_o=!1,qt=[],Ld=0,it="controller",hi=null,ar=null,Er=null}function ki(){kr=!0,Ii(),ee?.show(),ee?.open(),p&&(p.uiHidden=!1,p.uiOpen=!0,we())}function ra(){ee?.close(),p&&(p.uiOpen=!1,we())}function Sc(){ee?.show(),p&&(p.uiHidden=!1,we())}function Ac(){ee?.hide(),p&&(p.uiHidden=!0,p.uiOpen=!1,we())}function Cc(e){e?.trim()&&li(e)}function Ao(e){if(!p)return;let t=e?.reason||"manual_new_task",n=e?.clearUi!==!1;Yr=void 0,Kr=void 0,Io=0,p.pendingRun&&(Gn(p.pendingRun.id),Le?.postMessage({type:"cancel_run",runId:p.pendingRun.id}),be?.controlRun({action:"cancel",runId:p.pendingRun.id,reason:t}),M?.releaseWorkflowLock(p.pendingRun.id)),Qe&&(clearTimeout(Qe),Qe=null),ee?.setRunning(!1),ee?.setQuestionPrompt(void 0),cr=!1,Ht=0,xi();let r=Nr({type:"new_task",reason:t,at:Date.now()},{syncShared:!1,persist:!1});if(!r)return;let o=Math.max(1,Number(p.taskEpoch)||1);n&&(p.uiMessages=[],p.timeline=[],p.uiStatus=void 0,cf()),M?.startNewTask({taskId:r.taskId,startedAt:r.startedAt,boundaryReason:t,status:"running",lastUserAt:void 0,lastAssistantAt:void 0}),on({forceReset:!0,persist:!1}),M?.setActiveRun(void 0),M?.setWorkerContext(void 0),ht("New task started."),we(),Le?.postMessage({type:"start_new_task",taskId:r.taskId,...Ro()}),be?.controlRun({action:"new_task",reason:t}),Me("task_started",{taskId:r.taskId,reason:t,taskEpoch:o})}function oa(e){if(!p)return;let t=e?.reason||"manual_end_task";Yr=void 0,Kr=void 0,Io=0,cr=!1,Ht=0,Tr=!1,xi();let n=p.pendingRun?.id,r=Nr({type:"terminal",terminal:"ended",reason:t,at:Date.now()},{syncShared:!1,persist:!1,rotateBoundary:!1});r&&(n&&(Gn(n),Le?.postMessage({type:"cancel_run",runId:n}),be?.controlRun({action:"cancel",runId:n,reason:t}),M?.releaseWorkflowLock(n)),_t(void 0),Se=Sr(),p.workerState=void 0,p.taskTabScope=void 0,on({forceReset:!0,persist:!1}),An(),Qe&&(clearTimeout(Qe),Qe=null),ee?.setRunning(!1),ee?.setQuestionPrompt(void 0),Wn(),ht("Task ended. Start a new task to continue."),be?.controlRun({action:"end_task",runId:n,reason:t}),M?.endTask(t),M?.setActiveRun(void 0),M?.setWorkerContext(void 0),we(),ze({kind:"info",title:"Task ended",detail:"Start a new task when you are ready.",status:"info"}),Me("task_ended",{taskId:r.taskId,reason:t,endedAt:r.endedAt}))}function Nc(){return{mode:it,runtimeId:$e,runtimeState:p?pf(p):null,sharedState:M?.getState()||null,pendingTaskSuggestion:hi}}function Mc(e,t){let n=Sg(e);if(!Er||!Fe||!Le){Bs.push({def:n,handler:t});return}Fd({def:n,handler:t})}function Mb(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"}function yf(){let e=window,t=e.rover,n=((r,...o)=>{let i=Mb(r),s=i?n[i]:void 0;if(typeof s=="function")return s(...o)});if(n.boot=Ti,n.init=kc,n.update=Ys,n.shutdown=Rc,n.open=ki,n.close=ra,n.show=Sc,n.hide=Ac,n.send=Cc,n.newTask=Ao,n.endTask=oa,n.getState=Nc,n.registerTool=Mc,n.on=Dd,e.rover=n,typeof t=="function"&&Array.isArray(t.q))for(let r of t.q){let[o,...i]=Array.isArray(r)?r:Array.from(r);typeof o=="string"&&n(o,...i)}if(!Er){let r=typeof globalThis.__ROVER_SCRIPT_EL__<"u"?globalThis.__ROVER_SCRIPT_EL__:null;if(r){let o=r.getAttribute("data-site-id"),i=r.getAttribute("data-public-key");if(o&&i){let s={siteId:o,publicKey:i},c=r.getAttribute("data-allowed-domains");c&&(s.allowedDomains=c.split(",").map(d=>d.trim()).filter(Boolean));let a=r.getAttribute("data-site-key-id");a&&(s.siteKeyId=a);let u=r.getAttribute("data-worker-url");u&&(s.workerUrl=u),Ti(s)}}}}yf();return If(Lb);})();
|
|
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 dT(e){if(e==null)return;let t=typeof e=="object"&&e!==null?e:void 0,n=t?.output??t?.generatedContentRef??t?.schemaHeaderSheetInfo??e,r=Th(so([{type:"tool_output",data:n}]));if(uT(n,r))return so([{type:"tool_output",label:typeof t?.name=="string"?`${t.name} output`:"Tool output",data:n}])}function Pn(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t}function fT(e){if(!e||typeof e!="object")return[];let t=e,n=[Pn(t.tab_id),Pn(t.logical_tab_id),Pn(t.tabId),Pn(t.logicalTabId)].filter(r=>!!r);return xn(n)}function pT(e){if(!e||typeof e!="object")return[];let t=e,n=t.output&&typeof t.output=="object"?t.output:void 0,r=[Pn(t.tab_id),Pn(t.logical_tab_id),Pn(t.tabId),Pn(t.logicalTabId),Pn(n?.tab_id),Pn(n?.logical_tab_id),Pn(n?.tabId),Pn(n?.logicalTabId)].filter(o=>!!o);return xn(r)}function hT(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 _h(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 xs(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=gu(o);s!==void 0&&r.push(s)}return r}function Eh(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 mT(e,t){if(!Lr)return null;try{let n=await Lr.readAsync(e);if(n)return n;for(let r of t||[]){if(!r||r===e)continue;let o=await Lr.readAsync(r);if(o)return o}return null}catch{return null}}function Or(e){if(!Array.isArray(e))return[];let t=[];for(let n of e.slice(-Qa)){let r=n?.role;r!=="user"&&r!=="assistant"&&r!=="system"||t.push({id:typeof n?.id=="string"&&n.id?n.id:Ur("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(-Ja)){let r=mn(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:Ur("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 gT(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 bT(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||gT(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 yT(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 vT(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||yT(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 In(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(-Zl).map(v=>_h(v)).filter(v=>!!v),i=xs(r,eu),a=xs(Eh(o),tu),c=Fr(e?.pendingAskUser?.questions),l=e?.pendingAskUser?.stepRef,u=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,m=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,...u?{stepRef:u}:{}}:void 0,T=He(t||void 0),h=He(m?.boundaryId||T);m&&T&&h&&h!==T&&(m=void 0);let b=typeof e.rootUserInput=="string"?e.rootUserInput.trim():"";return{trajectoryId:typeof e.trajectoryId=="string"?e.trajectoryId:void 0,taskBoundaryId:t||void 0,rootUserInput:b||void 0,history:s,plannerHistory:i,agentPrevSteps:a,lastToolPreviousSteps:a,pendingAskUser:m,updatedAt:Number(e.updatedAt)||Date.now()}}function _i(e,t,n){if(!e||typeof e!="object")return $l(t,n);let r=tr(),o=As(e.activeTask,r),s=lt(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=bu(e.taskTabScope,a),l={version:Jl,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"?mn(e.uiStatus,300):void 0,uiMessages:Or(e.uiMessages),timeline:Pr(e.timeline),executionMode:e.executionMode==="observer"||e.executionMode==="controller"?e.executionMode:"controller",workerState:In(e.workerState),pendingRun:i,taskTabScope:c,lastNavigationHandoff:Hr(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"?mn(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 m=as.fromV1State(l),{tasks:T,activeTaskId:h,taskOrder:b}=m.toPersistedState();l.tasks=T,l.activeTaskId=h,l.taskOrder=b,m.shutdown()}return l}function As(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"?mn(e.boundaryReason,120):t.boundaryReason,endedAt:Number(e.endedAt)||void 0}}function TT(e,t){return As(e,t)}function wh(e){if(!e)return;let t=Fr(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,history:Array.isArray(e.history)?e.history.slice(-Zl).map(n=>_h(n)).filter(n=>!!n):[],plannerHistory:xs(e.plannerHistory,eu),agentPrevSteps:xs(Eh(e.agentPrevSteps),tu),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 xn(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 bu(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=xn(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 lt(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 Bn=="string"&&Bn.trim()?Bn.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 _T(){return ws(N?.stability?.maxPersistBytes,It.localPersistBytes)}function ET(e,t){let n={...e,uiMessages:Or(e.uiMessages).slice(-Qa),timeline:Pr(e.timeline).slice(-Ja),workerState:In(e.workerState)};n.workerState&&(n.workerState={...n.workerState,history:Array.isArray(n.workerState.history)?n.workerState.history.slice(-Zl):[],plannerHistory:xs(n.workerState.plannerHistory,eu),agentPrevSteps:xs(n.workerState.agentPrevSteps,tu)});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:tr("persist_trim")}}function bs(e){if(!(!f||!tn))try{if(Z){Z.enforceMemoryCaps();let{tasks:r,activeTaskId:o,taskOrder:s}=Z.toPersistedState();f.tasks=r,f.activeTaskId=o,f.taskOrder=s}let t=_T();f=ET(f,t);let n=JSON.stringify({s:f.sessionId,p:f.pendingRun?.id,pa:f.pendingRun?.autoResume,t:f.activeTask?.status,te:f.taskEpoch,m:f.uiMessages?.length,tl:f.timeline?.length,o:f.uiOpen,h:f.uiHidden,e:f.executionMode,at:f.activeTaskId});if(n===Xl&&!e?.markCheckpointDirty)return;Xl=n,f.updatedAt=Date.now(),Lr?.write(tn,f),Cr&&Cr!==tn&&(Lr?.remove(Cr),Cr=null),!vs&&e?.markCheckpointDirty!==!1&&ht?.markDirty()}catch{}}var Ao=!1,Co=!1,Xl="",si=0,us=0,Kl=2e3,kh=2e3;function ys(e){bs({markCheckpointDirty:!0}),ht?.syncNow({push:!0,pull:!1}),Wt("checkpoint_state",{event:"critical_flush",reason:e})}function Se(e){e?.markCheckpointDirty!==!1&&(Co=!0);let t=Date.now();if(!Ao)us=t;else if(us>0&&t-us>=kh){Ao=!1,us=0;let n=Co;Co=!1,si=t,bs({markCheckpointDirty:n});return}Ao||(Ao=!0,setTimeout(()=>{Ao=!1,us=0;let n=Co;Co=!1;let r=Date.now();if(r-si<Kl){Ao=!0,setTimeout(()=>{Ao=!1,us=0,si=Date.now(),bs({markCheckpointDirty:Co||n}),Co=!1},Kl-(r-si));return}si=r,bs({markCheckpointDirty:n})},0))}function wT(){if(Pl)return;Pl=!0,Bl||(Bl=!0,ja(document,"visibilitychange",()=>{rr()},{passive:!0})),ja(window,"pagehide",()=>{if(Kt&&N?.siteId)try{sessionStorage.setItem(`rover:sess:${N.siteId}`,JSON.stringify({t:Kt,e:br}))}catch{}if(f?.pendingRun?.autoResume){let r=f.pendingRun.resumeReason||(mr?"agent_navigation":"page_reload"),o=lt({...f.pendingRun,resumeRequired:!0,resumeReason:r});if(f.pendingRun=o,o&&(C?.clearActiveRunRuntimeId(o.id),N?.siteId)){let s=Hr(f?.lastNavigationHandoff);Vv(N.siteId,{runId:o.id,text:o.text,taskBoundaryId:o.taskBoundaryId||De,resumeReason:r,handoffId:s?.handoffId,ts:Date.now()})}}let n=nu();C?.broadcastClosing(Qp(n)),f?.pendingRun&&C?.releaseWorkflowLock(f.pendingRun.id),bs(),No(!0),fu(),ht?.markDirty(),ht?.syncNow({push:!0,pull:!1}),ht?.stop(),C?.stop()},{capture:!0}),ja(window,"pageshow",n=>{n.persisted&&(C&&(C.reloadFromStorage(),C.registerCurrentTab(window.location.href,document.title||void 0),C.claimLease(!1)),er=!1,nn=0,N&&bc(N),rr(!0))})}function kT(e="implicit"){if(f)return f.activeTask||(f.activeTask=tr(e),f.taskEpoch=Math.max(1,Number(f.taskEpoch)||1)),f.activeTask}function co(e,t){if(!f)return;let n=f.activeTask?.status,r=He(De),o=fp({task:f.activeTask,taskEpoch:f.taskEpoch},e,{createTask:(s,i,a)=>tr(s,i,a)});if(f.activeTask=o.task,f.taskEpoch=o.taskEpoch,o.rotateBoundary&&t?.rotateBoundary!==!1?(De=ro(),Sn({forceReset:!0,persist:!1})):Sn({persist:!1,appendSeed:!1}),o.clearPendingRun&&f.pendingRun&&Nt(void 0),o.clearWorkerState&&f.workerState&&(f.workerState=void 0,C?.setWorkerContext(void 0)),o.lifecycle==="terminal"&&(st&&(clearTimeout(st),st=null),Si()),t?.syncShared!==!1&&C?.syncTask({...o.task},f.taskEpoch),t?.persist!==!1){let s=He(De);n!==o.task.status?ys("run_status_transition"):!!s&&s!==r?ys("task_boundary_transition"):Se()}if(rr(),hh(),Z){let s=Z.toPersistedState();f.tasks=s.tasks,f.activeTaskId=s.activeTaskId,f.taskOrder=s.taskOrder}return o.task}function Mo(){if(!Z||!Y)return;let e=Z.listTasks(),t=Z.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 xT(e,t=Date.now()){if(!f||e==="system")return;let n=kT("implicit");n&&n.status==="running"&&(e==="user"&&(n.lastUserAt=t),e==="assistant"&&(n.lastAssistantAt=t))}var Nl="[Rover]";function IT(e){if(!(N?.ui?.tabIndicator?.titlePrefix!==!1))return;let n=e||"[Rover: Running]",r=mi;r||(hi=document.title),mi=!0,Nl=n;let o=r?document.title.replace(/^\[Rover[^\]]*\]\s*/,"")||hi||"":document.title;if(document.title=`${n} ${o}`,!ms){let s=document.querySelector("title");s&&(ms=new MutationObserver(()=>{if(mi&&!document.title.startsWith(Nl)){let i=document.title.replace(/^\[Rover[^\]]*\]\s*/,"");document.title=`${Nl} ${i}`}}),ms.observe(s,{childList:!0,characterData:!0,subtree:!0}))}N?.ui?.tabIndicator?.faviconBadge===!0&&kp()}function yc(){mi&&(mi=!1,ms&&(ms.disconnect(),ms=null),hi!==void 0?(document.title=hi,hi=void 0):document.title.startsWith("[Rover] ")&&(document.title=document.title.slice(8)),xp())}function xh(e="worker_task_active",t=Date.now()){if(Z){let n=Z.getActiveTask();n&&Z.dispatch(n.taskId,{type:"START",reason:e})}co({type:"ensure_running",reason:e,at:t}),IT()}function ST(e="worker_task_complete",t=Date.now()){if(Z){let n=Z.getActiveTask();n&&Z.dispatch(n.taskId,{type:"COMPLETE"})}co({type:"terminal",terminal:"completed",reason:e,at:t}),yc()}function $a(e="worker_task_failed",t=Date.now()){if(Z){let n=Z.getActiveTask();n&&Z.dispatch(n.taskId,{type:"FAIL",error:e})}co({type:"terminal",terminal:"failed",reason:e,at:t}),yc()}function RT(e="worker_task_ended",t=Date.now()){if(Z){let n=Z.getActiveTask();n&&Z.dispatch(n.taskId,{type:"CANCEL",reason:"ended"})}co({type:"terminal",terminal:"ended",reason:e,at:t}),yc()}function Ih(e="worker_task_cancelled",t=Date.now()){if(Z){let n=Z.getActiveTask();n&&Z.dispatch(n.taskId,{type:"CANCEL",reason:e})}co({type:"terminal",terminal:"cancelled",reason:e,at:t}),yc()}function hn(){Zr=null,Y?.setTaskSuggestion({visible:!1})}function AT(e){let t=String(e?.id||"").trim();if(!t)return!1;let n=String(e?.text||"").trim()||"Continue task";return Zr?.kind==="resume_run"&&Zr.runId===t?!1:(Zr={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 Si(){pn=!1,rn=!1,N?.siteId&&(Ks(N.siteId),rh(N.siteId)),ht?.markDirty(),ht?.syncNow({push:!0,pull:!1})}function yu(){Y?.clearMessages(),Y?.clearTimeline(),Y?.setQuestionPrompt(void 0),hn()}function vu(e){if(!f)return;st&&(clearTimeout(st),st=null),er=!1,nn=0,pn=!1,rn=!1,mt&&(clearTimeout(mt),mt=null);let t=lt(f.pendingRun),n=String(e.runId||t?.id||"").trim();n&&(ao(n),C?.clearActiveRunRuntimeId(n),C?.releaseWorkflowLock(n),Tu(n)||oo(n,e.cancelReason||e.reason,{attemptImmediately:!0})),Nt(void 0),C?.setActiveRun(void 0),Y?.setRunning(!1),Y?.setQuestionPrompt(void 0),hn(),f.activeTask?.status==="running"?Ih(e.reason):Si(),Et(e.statusText||e.reason),Wt("status",{event:"local_run_abandoned",reason:e.reason,runId:n||void 0}),e.timelineTitle&&et({kind:e.timelineStatus==="error"?"error":"info",title:e.timelineTitle,detail:e.timelineDetail,status:e.timelineStatus||"info"}),e.emitError?.message&&$e("error",{message:e.emitError.message,scope:e.emitError.scope||"resume",code:e.emitError.code,runId:n||void 0})}function CT(e){if(e)return He(e.pendingAskUser?.boundaryId||e.taskBoundaryId)}function Mr(e,t){if(!e)return;let n=He(t);if(!n)return e;let r=He(e.taskBoundaryId);if(r&&r!==n)return;let o=He(e.pendingAskUser?.boundaryId);if(!(o&&o!==n))return e}function Ei(){if(f?.activeTask?.status!=="running"){ds="",Y?.setQuestionPrompt(void 0);return}let e=Yn(),t=CT(f?.workerState);if(e&&t&&t!==He(e)){ds="",Y?.setQuestionPrompt(void 0);return}let n=Fr(f?.workerState?.pendingAskUser?.questions);if(!n.length){ds="",Y?.setQuestionPrompt(void 0);return}let r=`${He(t||e)||""}:${n.map(o=>`${o.key}:${o.query}`).join("|")}`;r!==ds&&(ds=r,ys("question_prompt_boundary")),Y?.setQuestionPrompt({questions:n})}function NT(){let e=f?.pendingRun;if(!e)return!1;if(!C)return!0;let t=C?.getState()?.activeRun;if(t?.runId&&t.runId===e.id||t?.runtimeId&&t.runtimeId!==Xe)return!0;let n=Date.now()-Number(e.startedAt||0);return n>=0&&n<=cv}function MT(){if(!f?.pendingRun||NT()||!C)return;let e=f.pendingRun;if(e.resumeRequired===!0&&La(f.activeTask?.status))return;let t=String(ve?.getActiveRunId()||"").trim();if(t&&t===e.id||Rs())return;let n=Date.now()-Number(e.startedAt||0);!Number.isFinite(n)||n<lv||(ao(e.id),oo(e.id,"stale_pending_cleanup",{attemptImmediately:!0}),Nt(void 0),C?.clearActiveRunRuntimeId(e.id),C?.releaseWorkflowLock(e.id),C?.setActiveRun(void 0),st&&(clearTimeout(st),st=null))}function Qn(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||Ur("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}),f&&n&&(f.uiMessages.push(i),f.uiMessages.length>Qa&&(f.uiMessages=f.uiMessages.slice(-Qa)),xT(i.role,i.ts),Se()),C&&r?.publishShared!==!1&&(C.appendMessage({id:i.id,role:i.role,text:i.text,blocks:i.blocks,ts:i.ts}),C.markTaskActivity(i.role,i.ts)),i}function cc(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 et(e,t=!0){let n={id:e.id||Ur("timeline"),kind:e.kind,title:mn(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),f&&t&&(f.timeline.push(n),f.timeline.length>Ja&&(f.timeline=f.timeline.slice(-Ja)),Se({markCheckpointDirty:!1})),C&&e.publishShared!==!1&&C.appendTimeline({id:n.id,kind:n.kind,title:n.title,detail:n.detail,detailBlocks:n.detailBlocks,status:n.status,ts:n.ts}),n}function lc(e){Y?.clearTimeline();for(let t of e)et({id:t.id,kind:t.kind,title:t.title,detail:t.detail,detailBlocks:t.detailBlocks,status:t.status,ts:t.ts,sourceRuntimeId:t.sourceRuntimeId,publishShared:!1},!1)}function Et(e,t){Y?.setStatus(e),f&&(f.uiStatus=mn(e,300),Se({markCheckpointDirty:!1})),C&&t?.publishShared!==!1&&C.setStatus(e)}function Bo(e,t){let n=mu(e);gt=n;let r=t?.localLogicalTabId??C?.getLocalLogicalTabId(),o=t?.activeLogicalTabId??C?.getActiveLogicalTabId(),s=t?.holderRuntimeId??C?.getCurrentHolderRuntimeId(),i=n==="controller"&&!!(N?.allowActions??!0);Ge?.setAllowActions(i),Ge?.setActionGateContext?.({mode:n,controllerRuntimeId:s,activeLogicalTabId:o,localLogicalTabId:r,reason:Ii(n,i)}),f&&(f.executionMode=n,Se()),rr(),Y?.setExecutionMode(n,{controllerRuntimeId:s,localLogicalTabId:r,activeLogicalTabId:o,canTakeControl:!0,canComposeInObserver:yh(),note:vh(n)}),$e("mode_change",{mode:n,rawMode:e,...t})}function Nt(e){f&&(e?f.pendingRun=lt({...e,taskBoundaryId:e.taskBoundaryId||De}):(f.pendingRun=void 0,eo(void 0)),rr(),Se())}function Ml(e){f&&(f.lastNavigationHandoff=Hr(e),Se())}function vc(){let e=Number(C?.getLocalLogicalTabId()||C?.getActiveLogicalTabId()||1);return!Number.isFinite(e)||e<=0?1:e}function Sn(e){if(!f)return;let t=He(De)||ro();De||(De=t);let n=vc(),r=e?.appendSeed!==!1,o=bu(f.taskTabScope,t);if(!!e?.forceReset||!o||He(o.boundaryId)!==t){let c={boundaryId:t,seedTabId:n,touchedTabIds:[n],updatedAt:Date.now()};return f.taskTabScope=c,e?.persist!==!1&&Se(),c}let i=xn(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 f.taskTabScope=a,e?.persist&&Se(),a}function Sh(e,t){if(!f)return;let n=Sn({persist:!1});if(!n)return;let r=xn([n.seedTabId,...n.touchedTabIds||[],...e]),o={...n,touchedTabIds:r.slice(0,24),updatedAt:Date.now()};return f.taskTabScope=o,t?.persist!==!1&&Se(),o}function LT(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 Uo(e){if(!f)return;let t=Sn({persist:!1,appendSeed:!1});if(!t||!C)return t;let n=Date.now(),r=Array.isArray(C.getState()?.tabs)?C.getState().tabs:[],o=new Set;for(let v of r){let M=Number(v?.logicalTabId);if(!Number.isFinite(M)||M<=0)continue;let q=Math.max(Number(v?.updatedAt)||0,Number(v?.openedAt)||0,Number(v?.detachedAt)||0),R=n-q;if(v.runtimeId){o.add(M);continue}if(v.external){R<=yv&&o.add(M);continue}if(v.detachedReason==="navigation_handoff"){R<=vv&&o.add(M);continue}if(v.detachedReason==="opened_pending_attach"){R<=Tv&&o.add(M);continue}}let s=Number(C.getLocalLogicalTabId()),i=Number(C.getActiveLogicalTabId()),a=Number(t.seedTabId)>0?Number(t.seedTabId):vc();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=xn(t.touchedTabIds),l=c.filter(v=>o.has(v)),u=o.has(t.seedTabId)?t.seedTabId:Number.isFinite(s)&&s>0?s:Number.isFinite(i)&&i>0?i:a;l.includes(u)||l.unshift(u);let m=xn(l).slice(0,24);if(!(u!==t.seedTabId||!LT(m,c)))return t;let h=c.filter(v=>!m.includes(v)),b={...t,seedTabId:u,touchedTabIds:m.length?m:[u],updatedAt:Date.now()};return f.taskTabScope=b,e?.persist!==!1&&Se(),Wt("status",{event:"scoped_tab_reconciled",removedTabIds:h,scopedTabIds:b.touchedTabIds,seedTabId:b.seedTabId}),b}function gi(){let e=Uo({persist:!1})||Sn({persist:!1,appendSeed:!1});if(!e)return[vc()];let t=xn(e.touchedTabIds);return t.length?t:[e.seedTabId]}function Rh(){let e=Uo({persist:!1})||Sn({persist:!1,appendSeed:!1});if(e)return{boundaryId:e.boundaryId,seedTabId:e.seedTabId,touchedTabIds:xn(e.touchedTabIds)}}function DT(e,t){let n=Oo,r=Po,o=_s;if(Z){let a=Z.listTasks(),c=Z.getActiveTask()?.taskId,l=a.find(u=>u.state==="completed"&&u.taskId!==c);l&&(n=l.rootUserInput||n,r=l.summary||r,o=l.endedAt||o)}let s=N?.task?.followup,i=Lp({mode:s?.mode,previousTaskStatus:t,previousTaskUserInput:n,previousTaskAssistantOutput:r,previousTaskCompletedAt:o,currentPrompt:e,ttlMs:au(s?.ttlMs),minLexicalOverlap:cu(s?.minLexicalOverlap)});return{chatLog:i.chatLog,reason:i.reason,overlap:i.overlap}}var hr=new Map,Yl=Mv;async function OT(e){if(hr.has(e)){let o=hr.get(e);if(Date.now()-o.ts<Yl)return;hr.delete(e)}let t=Date.now();for(let[o,s]of hr)t-s.ts>=Yl&&hr.delete(o);let n=f?.pendingRun?.id;if(!n||!ve)return;let r=await ve.fetchExternalContext({runId:n,url:e,source:"direct_url"});r&&(hr.set(e,{data:r,ts:Date.now()}),Kp(hr,Nv))}function PT(e){let t=hr.get(e);if(t){if(Date.now()-t.ts>=Yl){hr.delete(e);return}return t.data}}function BT(e){let t=String(e||"").trim();return t===Fl.read||t===Fl.act}function ii(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 UT(e){let t=String(e.call?.name||"").trim(),n=e.call?.args&&typeof e.call.args=="object"?e.call.args:{},r=t===Fl.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=C?.listTabs({scope:"all"})||[],a=s?i.find(h=>h.logicalTabId===s):void 0,l=String(n.url||"").trim()||String(a?.url||"").trim(),u=String(n.message||n.user_input||"").trim()||void 0,m=String(n.source||"").trim().toLowerCase()==="google_search"?"google_search":"direct_url";if(!l)return ii({code:"MISSING_URL",message:"External context tools require a target url or tab with a url.",retryable:!1});if(!ve)return ii({code:"RUNTIME_UNAVAILABLE",message:"Rover server runtime is not initialized.",retryable:!0});let T=String(f?.pendingRun?.id||ve.getActiveRunId()||xi||"").trim()||void 0;if(!T)return ii({code:"NO_ACTIVE_RUN",message:"External context tools can only run during an active run.",retryable:!1});try{let h=PT(l);if(h)return h;let b=await ve.fetchExternalContext({runId:T,tabId:s,url:l,intent:r,message:u,source:m});if(!b)return ii({code:"EMPTY_RESPONSE",message:"Server returned no external context response.",retryable:!0});let M=(b.pageData&&typeof b.pageData=="object"?b.pageData:void 0)||b;return{success:!0,output:{...M,metadata:{...M&&typeof M=="object"?M.metadata||{}:{},external:!0,accessMode:"external_scraped",logicalTabId:s,sourceTool:t},intent:r}}}catch(h){let b=String(h?.code||"").trim().toUpperCase()||"EXTERNAL_CONTEXT_FAILED",v=Number(h?.status),M=v>=500||b==="STALE_SEQ"||b==="STALE_EPOCH";return ii({code:b,message:String(h?.message||"External context request failed"),retryable:M,status:Number.isFinite(v)?v:void 0,details:h?.details})}}function Is(e){let t=gi();return{taskBoundaryId:De,taskTabScope:Rh(),scopedTabIds:t,...e||{}}}var Wp="";function Jn(e){if(!qe)return;let t=Is(e),n=JSON.stringify(t);n!==Wp&&(Wp=n,qe.postMessage({type:"update_config",config:t}))}function Ah(e,t){let n=String(e||"").trim();if(!n||!qe)return;if(gt==="observer"){if(Rs()){Qn("system","This tab is read-only while another tab is actively running Rover.",!0),et({kind:"info",title:"Observer mode",detail:"Input is disabled while the active run is controlled by another tab.",status:"info"});return}if(!(C?.requestControl()??!1)){Qn("system","Unable to take control right now because another tab is still running Rover actions.",!0),et({kind:"info",title:"Observer mode",detail:"Action execution is currently owned by another tab runtime.",status:"info"});return}let m=C?.getLocalLogicalTabId(),T=C?.getActiveLogicalTabId(),h=C?.getCurrentHolderRuntimeId()||Xe;Bo("controller",{localLogicalTabId:m,activeLogicalTabId:T,holderRuntimeId:h});let b=!!(N?.allowActions??!0);Ge?.setAllowActions(b),Ge?.setActionGateContext?.({mode:"controller",controllerRuntimeId:h,activeLogicalTabId:T,localLogicalTabId:m,reason:Ii("controller",b)})}let r=t?.runId||crypto.randomUUID(),o=!!t?.resume,s=t?.appendUserMessage!==!1;zl(r),s&&Qn("user",n,!0);let i=f?.pendingRun?.id===r?f.pendingRun.attempts:0,a=f?.pendingRun?.id===r&&f.pendingRun.taskBoundaryId||De;Sh([vc()],{persist:!0});let c=gi();mr=!1,Nt({id:r,text:n,startedAt:Date.now(),attempts:o?i+1:0,autoResume:t?.autoResume!==!1,taskBoundaryId:a,resumeRequired:!1,resumeReason:void 0}),xh(o?"worker_task_resumed":"worker_task_active"),Bn=n,C?.acquireWorkflowLock(r),C?.setActiveRun({runId:r,text:n}),qe.postMessage({type:"run",text:n,runId:r,resume:o,preserveHistory:!!t?.preserveHistory,followupChatLog:Array.isArray(t?.followupChatLog)?t?.followupChatLog:void 0,routing:t?.routing,askUserAnswers:t?.askUserAnswers,scopedTabIds:c,taskTabScope:Rh()}),mt&&clearTimeout(mt);let l=r;mt=setTimeout(()=>{f?.pendingRun?.id===l&&(vu({reason:"run_timeout_terminal",statusText:"Task timed out.",runId:l,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)),mt=null},5*6e4)}async function FT(e,t){let n=aT(e,t?.askUserAnswers);if(!n)return;MT();let r=f?.activeTask?.status,o=Fr(f?.workerState?.pendingAskUser?.questions).length,s=f?.workerState?.pendingAskUser?.boundaryId,i=Cp({startNewTask:!!t?.startNewTask,taskStatus:r,pendingAskUserQuestionCount:o,hasAskUserAnswers:!!t?.askUserAnswers,pendingAskUserBoundaryId:s,currentTaskBoundaryId:De}),a=!i,c=a?t?.continueRunId||f?.pendingRun?.id||ve?.getActiveRunId():void 0,l=i?DT(n,r):{reason:"mode_disabled",overlap:0},u=l.chatLog;if(Wt("status",{event:"task_boundary_decision",startFreshTask:i,askUserContinuation:a,pendingAskUserQuestionCount:o,activeTaskStatus:r||"none"}),Wt("status",{event:"followup_chat_cue",attached:Array.isArray(u)&&u.length>0,reason:l.reason,overlap:l.overlap}),C?.pruneTabs(i?{dropRuntimeDetached:!0,keepOnlyActiveLiveTab:!0,keepRecentExternalPlaceholders:!0}:{dropRuntimeDetached:!0}),i){let h=!!f?.pendingRun,b=t?.reason||(r==="completed"?"auto_after_task_complete":r==="running"?"auto_new_prompt_boundary":"auto_after_task_end");if(Wt("status",{event:"task_boundary_reset",reason:b,hadActiveRun:h}),Z&&r==="running"){let v=Z.getActiveTask();v&&(v.uiMessages=f?.uiMessages||[],v.timeline=f?.timeline||[],v.rootUserInput=v.rootUserInput||Bn)}if(Ci({reason:b,clearUi:!0}),Z){let v=Z.getActiveTask();v&&(v.rootUserInput=n),Mo()}h&&ve&&await new Promise(v=>setTimeout(v,50))}hn();let m=c,T=t?.routing;if(ve&&N)try{let h=await ve.submitRunInput({message:n,clientEventId:crypto.randomUUID(),continueRun:a,forceNewRun:i,runId:a?c:void 0,requestedMode:t?.routing||N.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))&&(Nr=Math.max(1,Number(h.epoch||h.currentEpoch)));let b=typeof h.runId=="string"&&h.runId.trim()?h.runId.trim():"";if(!b){let v=String(h?.conflict?.type||"").trim();if(v==="active_run_exists"&&ve&&i){let M=h?.conflict?.runId||h.runId;if(M){await ve.controlRun({action:"cancel",runId:M,reason:"stale_run_cleanup"});let q=await ve.submitRunInput({message:n,clientEventId:crypto.randomUUID(),continueRun:!1,forceNewRun:!0,requestedMode:t?.routing||N.taskRouting?.mode||"act"});q?.runId&&(m=q.runId.trim(),eo(m),(q.acceptedMode==="act"||q.acceptedMode==="planner")&&(T=q.acceptedMode))}}if(!m){let M=String(h.decisionReason||v||h.message||"run_not_accepted").trim();throw new Error(`Server did not accept this run (${M}).`)}}m||(m=b),eo(m),(h.acceptedMode==="act"||h.acceptedMode==="planner")&&(T=h.acceptedMode)}catch(h){let b=String(h?.message||"server run submission failed");eo(void 0),et({kind:"error",title:"Run start failed",detail:b,status:"error"}),Qn("system",`Unable to start task: ${b}`,!0),Et(`Task could not start (${b})`),$e("error",{message:b,scope:"run_input"});return}Ah(n,{runId:m,appendUserMessage:!0,resume:!1,preserveHistory:!1,followupChatLog:u,autoResume:!0,routing:T,askUserAnswers:t?.askUserAnswers})}function ui(e,t){FT(e,t)}function ai(e,t){vu({reason:e,statusText:t||e,cancelReason:e})}function Tu(e){let t=String(e||"").trim();if(!t)return!1;let n=C?.getState()?.activeRun;if(!n?.runtimeId||n.runtimeId===Xe||n.runId!==t)return!1;let r=C?.listTabs({scope:"all"}).find(o=>o.runtimeId===n.runtimeId);return r?Number(r.updatedAt)>Date.now()-5e3:!1}function ci(e=450,t){st||(st=setTimeout(()=>{st=null,Br(t)},Math.max(120,e)))}function HT(e,t){er=!0,pn=!1,rn=!1,hn(),Et("Resuming interrupted task...");let n=e.text?.trim()||f?.workerState?.rootUserInput?.trim()||Bn?.trim()||"Continue the current task on this page";Wt("status",{event:"resume_dispatch",source:t,runId:e.id}),Ah(n,{runId:e.id,resume:!0,appendUserMessage:!1,autoResume:!0})}function Br(e){if(!f?.pendingRun){st&&(clearTimeout(st),st=null),nn=0;return}let t=lt(f.pendingRun);if(!t||(gt==="observer"&&!Rs()&&Bo("controller",{localLogicalTabId:C?.getLocalLogicalTabId(),activeLogicalTabId:C?.getActiveLogicalTabId(),holderRuntimeId:C?.getCurrentHolderRuntimeId()}),gt==="observer")||er)return;if(!Zn||!qe){ci(250,e);return}let n=f.activeTask?.status;if(Il(n)){ai("terminal_task","Previous task already ended.");return}if(!La(n)||!t.autoResume)return;if(su(N?.task?.resume?.mode)!=="crash_only"){ai("unsupported_resume_mode","Previous task dismissed.");return}if(t.resumeRequired!==!0){let l=Date.now()-Number(t.startedAt||0),u=sc(N?.task?.resume?.ttlMs);if(Number.isFinite(l)&&l>=0&&l<u)t.resumeRequired=!0,t.resumeReason=t.resumeReason||"worker_interrupted",Nt(t);else{st&&(clearTimeout(st),st=null),nn=0,hn();return}}let o=ou(N?.task?.autoResumePolicy),s=Tu(t.id),i=ap({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"){ci(650,e);return}if(i==="cancel_resume"){ai("resume_policy_never","Previous task cancelled by resume policy."),et({kind:"info",title:"Resume cancelled",detail:"Auto-resume policy is set to never, so the interrupted run was cancelled.",status:"info"});return}if(!rn&&Bv(t)&&(rn=!0),!rn&&(t.resumeReason==="worker_interrupted"||t.resumeReason==="agent_navigation"||t.resumeReason==="page_reload")&&(rn=!0),!rn&&Uv(t)){ci(320,e);return}if(rn||(rn=!0),s){ci(650,e);return}if(st&&(clearTimeout(st),st=null),!Ts&&!e?.overridePolicyAction){if(nn+=1,Wt("status",{event:"resume_blocked_no_session",reason:"session_not_ready",attempt:nn,runId:t.id}),nn<iv){Et("Preparing secure resume...");let l=Math.min(2e3,240+nn*160);ci(l,e);return}nn=0,pn=!1,Ts=!0}nn=0;let a=sc(N?.task?.resume?.ttlMs),c=Date.now()-Number(t.startedAt||0);if(!Number.isFinite(c)||c<0||c>a){ai("resume_ttl_expired","Previous task expired.");return}if(t.attempts>=tv){ai("resume_attempt_limit","Previous task dismissed.");return}if(i==="prompt_resume"){AT(t)&&(Et("Resume available. Choose Resume or Cancel."),Wt("status",{event:"resume_prompt_shown",runId:t.id}));return}HT(t,e?.overridePolicyAction==="auto_resume"?"manual_resume_confirm":`policy_${o}`)}function Ch(e){return yp({localUpdatedAt:Number(e.localState.updatedAt)||0,incomingUpdatedAt:Number(e.incomingState.updatedAt)||0,localState:e.localState,incomingState:e.incomingState,crossDomainResumeActive:!!e.allowRicherIncomingOnResume&&pn})}function Nh(e){if(As(e.localState.activeTask,tr("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=He(Es(e.localState)),s=He(Es(e.incomingState));return o&&s?o===s:!(o&&!s||!o&&s)}async function qT(e,t){if(!f)return;let n=await mT(e,t);if(!n||!f)return;let r=_i({...n,sessionId:f.sessionId,runtimeId:Xe},f.sessionId,Xe);if(!Ch({localState:f,incomingState:r,allowRicherIncomingOnResume:!0})||!Nh({localState:f,incomingState:r}))return;let o=Math.max(1,Number(f.taskEpoch)||1),s=Math.max(1,Number(r.taskEpoch)||1),i=Es(r);Do({source:"indexeddb_checkpoint",incomingBoundaryId:i,taskEpochAdvanced:s>o,allowBootstrapAdoption:!0})&&(f=_i({...f,...r,sessionId:f.sessionId,runtimeId:Xe},f.sessionId,Xe),yi({rotateIfMissing:!De}),Uo({persist:!1}),Se(),Y&&(Y.clearMessages(),cc(f.uiMessages),lc(f.timeline),f.uiStatus&&Y.setStatus(f.uiStatus),Ei(),f.uiHidden?Y.hide():(Y.show(),f.uiOpen?Y.open():Y.close())),Zn&&qe&&Jn(),Zn&&qe&&f.workerState&>==="controller"&&(qe.postMessage({type:"hydrate_state",state:f.workerState}),$e("context_restored",{source:"indexeddb_checkpoint",ts:Date.now()})))}var Ll=!1;function _u(e,t){if(f&&!Ll){Ll=!0;try{if(t==="remote"){let r=Math.max(1,Number(f.taskEpoch)||1),o=Math.max(1,Number(e.taskEpoch)||1),s=o>r;f.taskEpoch=Math.max(r,o);let i=f.activeTask||tr("shared_sync");f.activeTask=TT(e.task,i),s&&(f.uiMessages=[],f.timeline=[],yu(),Nt(void 0),f.workerState=void 0,De=ro(),f.taskTabScope=void 0,Sn({forceReset:!0,persist:!1}),Jn(),hn());let a=Or(e.uiMessages),c=new Set(a.map(S=>S.id)),l=f.uiMessages,u=f.uiMessages.filter(S=>S.role==="user"&&S.sourceRuntimeId===Xe&&!c.has(S.id)).length;u>0&&Wt("status",{event:"local_message_preserved",count:u});let m=bT(l,a);(m.length!==l.length||m.some((S,F)=>{let z=l[F];return z?z.id!==S.id||z.ts!==S.ts||z.role!==S.role||z.text!==S.text:!0}))&&(f.uiMessages=m,Y?.clearMessages(),cc(f.uiMessages));let h=Pr(e.timeline),b=f.timeline,v=vT(b,h);(v.length!==b.length||v.some((S,F)=>{let z=b[F];return z?z.id!==S.id||z.ts!==S.ts||z.kind!==S.kind||z.title!==S.title||z.detail!==S.detail:!0}))&&(f.timeline=v,lc(f.timeline)),typeof e.uiStatus=="string"&&Et(e.uiStatus,{publishShared:!1});let q=f.activeTask?.status,R=e.task?.status;if(e.activeRun&&e.activeRun.runtimeId!==Xe&&!xl({localTaskStatus:q,remoteTaskStatus:R,mode:gt,hasRemoteActiveRun:!0})){let S=lt(f.pendingRun),F=He(e.workerContext?.taskBoundaryId),z=S?.id===e.activeRun.runId&&(!S?.taskBoundaryId||He(S.taskBoundaryId)===(F||He(De))),Q=z?S?.resumeRequired===!0:String(e.activeRun.runtimeId||"").trim()==="";Nt(lt({id:e.activeRun.runId,text:e.activeRun.text,startedAt:e.activeRun.startedAt,attempts:z&&S?.attempts||0,autoResume:!0,taskBoundaryId:(z?S?.taskBoundaryId:void 0)||F||S?.taskBoundaryId||De,resumeRequired:Q,resumeReason:z?S?.resumeReason:Q?"agent_navigation":void 0}))}else{let S=xl({localTaskStatus:q,remoteTaskStatus:R,mode:gt,hasRemoteActiveRun:!!e.activeRun}),z=lt(f.pendingRun)?.resumeRequired===!0&&La(q);S&&!z&&(f.pendingRun?.id&&ao(f.pendingRun.id),Nt(void 0),R&&R!=="running"&&Si())}if(gt==="observer"&&Bo("observer",{localLogicalTabId:C?.getLocalLogicalTabId(),activeLogicalTabId:C?.getActiveLogicalTabId(),holderRuntimeId:C?.getCurrentHolderRuntimeId()}),e.workerContext){let S=In(e.workerContext),F=Number(f.workerState?.updatedAt)||0,z=Number(S?.updatedAt)||0;S&&z>F+100&&Do({source:"shared_worker_context",incomingBoundaryId:S.taskBoundaryId,taskEpochAdvanced:s,allowBootstrapAdoption:!0})&&(f.workerState=Mr(S,Yn()),yi(),Zn&&qe&>==="controller"&&(Jn(),qe.postMessage({type:"hydrate_state",state:f.workerState}),$e("context_restored",{source:"shared_session",ts:Date.now()})))}}if(f.uiMessages=Or(f.uiMessages),f.timeline=Pr(f.timeline),f.workerState=Mr(In(f.workerState),Yn()),yi(),Uo({persist:!1}),Zn&&qe&>==="controller"&&Jn(),rr(),Ei(),f.activeTask=As(f.activeTask,tr("implicit")),C&&Z){let r=new Map;for(let o of Z.listTasks())for(let s of o.tabIds)r.set(s,o.taskId);C.setTaskTabMapping(r)}let n=N?.ui?.tabIndicator?.widgetTabBar!==!1;if(Y&&e.tabs&&n){let r=C?.getLocalLogicalTabId(),o=C?.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:Z?.getTaskForTab(i.logicalTabId)?.taskId}));s.length>1?Y.setTabs(s):Y.setTabs([])}else Y&&Y.setTabs([]);if(t==="local")return;Se()}finally{Ll=!1}}}function Eu(e){let t=tr("checkpoint_clone");return{version:Jl,sessionId:e.sessionId,runtimeId:e.runtimeId,uiOpen:!!e.uiOpen,uiHidden:!!e.uiHidden,uiStatus:typeof e.uiStatus=="string"?mn(e.uiStatus,300):void 0,uiMessages:Or(e.uiMessages),timeline:Pr(e.timeline),executionMode:e.executionMode==="observer"||e.executionMode==="controller"?e.executionMode:"controller",workerState:In(e.workerState),pendingRun:lt(e.pendingRun),taskTabScope:bu(e.taskTabScope,lt(e.pendingRun)?.taskBoundaryId||In(e.workerState)?.taskBoundaryId),lastNavigationHandoff:Hr(e.lastNavigationHandoff),tasks:e.tasks?{...e.tasks}:{},activeTaskId:e.activeTaskId,taskOrder:e.taskOrder?[...e.taskOrder]:[],taskEpoch:Math.max(1,Number(e.taskEpoch)||1),activeTask:As(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 $T(e){return!(e.sessionScope==="tab"||e.checkpointing?.enabled===!1||!nr(e)||!Ct)}function WT(){if(!f||!N||!Ct)return null;let e=C?.getState(),t=Eu(f),n=Math.max(Number(e?.updatedAt||0),Number(t.updatedAt||0)),r=n>0?n:Date.now();return{version:zp,siteId:N.siteId,visitorId:Ct,sessionId:f.sessionId,updatedAt:r,sharedState:e,runtimeState:t}}function Mh(e){if(!e||typeof e!="object"||!f||!N||e.siteId&&e.siteId!==N.siteId||Ct&&e.visitorId&&e.visitorId!==Ct)return;let t=typeof e.sessionId=="string"&&e.sessionId.trim()?e.sessionId.trim():f.sessionId;vs=!0;try{if(t&&f.sessionId!==t&&(f.sessionId=t,N={...N,sessionId:t},uc(N),Jn({sessionId:t})),e.sharedState&&C&&C.hydrateExternalState(e.sharedState)&&(_u(C.getState(),"remote"),Bo(C.getRole(),{localLogicalTabId:C.getLocalLogicalTabId(),activeLogicalTabId:C.getActiveLogicalTabId(),holderRuntimeId:C.getCurrentHolderRuntimeId()})),e.runtimeState&&typeof e.runtimeState=="object"){let n=_i({...e.runtimeState,sessionId:t,runtimeId:Xe},t,Xe);if(Ch({localState:f,incomingState:n,allowRicherIncomingOnResume:!0})){if(!Nh({localState:f,incomingState:n}))return;let r=Math.max(1,Number(f.taskEpoch)||1),o=Math.max(1,Number(n.taskEpoch)||1),s=Es(n);if(!Do({source:"cloud_checkpoint",incomingBoundaryId:s,taskEpochAdvanced:o>r,allowBootstrapAdoption:!0}))return;f=_i({...f,...n,sessionId:t,runtimeId:Xe},t,Xe),yi(),f.workerState=Mr(f.workerState,Yn()),Uo({persist:!1}),Se(),f.uiStatus&&Y?.setStatus(f.uiStatus),f.uiHidden?Y?.hide():(Y?.show(),f.uiOpen?Y?.open():Y?.close()),Zn&&Jn(),Zn&&f.workerState&&(qe?.postMessage({type:"hydrate_state",state:f.workerState}),$e("context_restored",{source:"cloud_checkpoint",ts:Date.now()})),gt==="controller"&&Br(),pn=!1}}}finally{vs=!1}}function wu(e){if(ht?.stop(),ht=null,!$T(e)||!Ct)return;let t=nr(e);if(!t){$e("checkpoint_token_missing",{reason:"missing_or_invalid_session_token",expectedPrefix:"rvrsess_",action:"disabled_cloud_checkpoint_client"});return}try{let n=r=>{$e("checkpoint_state",r),e.checkpointing?.onStateChange?.(r)};ht=new Aa({apiBase:e.apiBase,authToken:t,getSessionToken:()=>nr(N),shouldSync:()=>gt==="controller"&&!pn&&!ks(),siteId:e.siteId,visitorId:Ct,ttlHours:e.checkpointing?.ttlHours??1,flushIntervalMs:e.checkpointing?.flushIntervalMs,pullIntervalMs:e.checkpointing?.pullIntervalMs,minFlushIntervalMs:e.checkpointing?.minFlushIntervalMs,maxSnapshotBytes:ws(e.stability?.maxSnapshotBytes,It.snapshotBytes),shouldWrite:()=>gt==="controller"&&!pn&&!ks(),buildCheckpoint:()=>WT(),onCheckpoint:r=>{Mh(r)},onStateChange:(r,o)=>{n({state:r,reason:o.reason,action:o.action,code:o.code,message:o.message}),r==="paused_auth"&&$e("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||$e("checkpoint_error",{action:o.action,code:o.code,message:o.message,status:o.status,disabled:!1,reason:"transient_failure"})}}),ht.start(),ht.markDirty(),hh()}catch{ht=null}}function uc(e){if(!f)return;if(C?.stop(),C=null,e.sessionScope==="tab"){Bo("controller");return}C=new Ra({siteId:e.siteId,sessionId:f.sessionId,runtimeId:Xe,leaseMs:e.tabPolicy?.actionLeaseMs,onRoleChange:(r,o)=>{let s=mu(r);Bo(s,o);let i=Xn;Xn=s==="controller",i!==Xn&&(Xn?(rr(!0),N&&pu(N)):rr(!0));let a=s==="controller"&&(N?.allowActions??!0);if(Ge?.setAllowActions(a),Ge?.setActionGateContext?.({mode:s,controllerRuntimeId:o?.holderRuntimeId??C?.getCurrentHolderRuntimeId(),activeLogicalTabId:o?.activeLogicalTabId??C?.getActiveLogicalTabId(),localLogicalTabId:o?.localLogicalTabId??C?.getLocalLogicalTabId(),reason:Ii(s,a)}),s==="controller"){Sn({persist:!0,appendSeed:!1}),Uo({persist:!0});let c=C?.getWorkerContext();if(c){let l=In(c),u=Number(f?.workerState?.updatedAt)||0,m=Number(l?.updatedAt)||0;l&&m>u+100&&Do({source:"controller_handoff",incomingBoundaryId:l.taskBoundaryId,allowBootstrapAdoption:!0})&&(f&&(f.workerState=Mr(l,Yn()),yi(),Se()),Zn&&qe&&(Jn(),qe.postMessage({type:"hydrate_state",state:f?.workerState}),$e("context_restored",{source:"controller_handoff",ts:Date.now()})))}Br()}},onStateChange:(r,o)=>{_u(r,o)},onSwitchRequested:r=>{r>0&&(Ai(),et({kind:"status",title:`Switched to tab #${r}`,status:"info"}))},onTaskTabsExhausted:r=>{Z&&(Z.dispatch(r,{type:"PAUSE",reason:"all_tabs_closed"}),Mo(),Se(),Y?.showPausedTaskBanner({taskId:r,rootUserInput:Z.getTask(r)?.rootUserInput||"Task"}))}}),C.onSessionTokenReceived=(r,o)=>{Xn||ic(r,o)},C.onProjectionReceived=r=>{!Xn&&r&&Vl(r)};let t=nu();C.start(Qp(t)),Sn({persist:!0,appendSeed:!1}),Uo({persist:!0}),lt(f?.pendingRun)?.resumeRequired===!0&&C.requestControl(),f?.lastNavigationHandoff&&t&&(f.lastNavigationHandoff=Hr({...f.lastNavigationHandoff,consumed:!0}),Se()),C.setRpcRequestHandler(async r=>{if(!Ge)throw new Error("Bridge not available");if(r.method==="getPageData")return Ge.getPageData(r.params);if(r.method==="executeTool")return Ge.executeTool(r.params.call,r.params.payload);throw new Error(`Unknown RPC method: ${r.method}`)}),f?.activeTask&&C.syncTask({...f.activeTask,taskId:f.activeTask.taskId},f.taskEpoch),f?.workerState&&C.setWorkerContext(wh(f.workerState))}function VT(e){e&&Xr.delete(e),Y?.clearTimeline(),f&&(f.timeline=[]),C?.clearTimeline()}function zT(e){if(!(!e||typeof e!="object")&&!iT(e)){if(e.type==="assistant"){let t=so(e.blocks),n=String(e.text||Th(t)||"");typeof e.runId=="string"&&e.runId&&(Xr.set(e.runId,n),Kp(Xr,Av)),Qn("assistant",n,!0,{blocks:t}),et({kind:"tool_result",title:"Assistant update",detail:n,detailBlocks:t,status:"success"});return}if(e.type==="status"){let t=Yv(e.stage),n=e.message?String(e.message):void 0,r=e.compactThought?String(e.compactThought):void 0,o=Jv(n,t,r);if(n&&Et(n),o&&o!==Fa&&(Fa=o,n)){let s=!!(e.thought||r),i=r||(e.thought?String(e.thought):"");if(s&&t!=="analyze"&&t!=="route"&&t!=="complete"&&!Zv(i,Bn))et({kind:"thought",title:i,detail:e.thought?String(e.thought):r,status:"pending"});else{let c=t?`${Qv(t)}: ${n}`:n;et({kind:"status",title:c,detail:r||(e.thought?String(e.thought):void 0),status:t==="complete"?"success":"info"})}}$e("status",e);return}if(e.type==="runtime_tabs_diagnostics"){let t=e?.diagnostics&&typeof e.diagnostics=="object"?e.diagnostics:{},n=xn(t.keptScopedTabIds||[]),r=xn(t.listedTabIds||[]),o=xn(t.resolvedTabOrder||[]),s=n.filter(i=>!r.includes(i));s.length>0&&(et({kind:"status",title:"Scoped tab placeholder retained",detail:`missing_in_listing=${s.join(",")}; resolved_order=${o.join(",")||"none"}`,status:"info"}),Wt("status",{event:"scoped_tab_missing_from_listing",missingScopedTabIds:s,listedTabIds:r,resolvedTabOrder:o}));return}if(e.type==="tool_start"){et({kind:"tool_start",title:`Running ${e.call?.name||"tool"}`,detail:Ya(e.call?.args),status:"pending"}),$e("tool_start",e);return}if(e.type==="tool_result"){if(!hT(e.result)){let n=xn([...fT(e.call?.args),...pT(e.result)]);n.length&&(Sh(n,{persist:!0}),Jn())}let t=so(e.detailBlocks)||dT(e.result);et({kind:"tool_result",title:`${e.call?.name||"tool"} completed`,detail:Ya(e.result),detailBlocks:t,status:e?.result?.success===!1?"error":"success"}),$e("tool_result",e);return}if(e.type==="auth_required"){$e("auth_required",e.error),e.error?.message&&(Qn("system",`Auth required: ${e.error.message}`,!0),et({kind:"error",title:"Auth required",detail:String(e.error.message),status:"error"}));return}if(e.type==="navigation_guardrail"){$e("navigation_guardrail",e),et({kind:"status",title:"Navigation guardrail",detail:Ya(e),status:"info"});return}if(e.type==="error"){Qn("system",`Error: ${e.message||"unknown"}`,!0),et({kind:"error",title:"Execution error",detail:String(e.message||"unknown"),status:"error"}),$e("error",e);return}if(e.type==="state_snapshot"){if(f){let t=In({...e.state||{},updatedAt:Date.now()});if(!t||!Do({source:"worker_snapshot",incomingBoundaryId:t.taskBoundaryId,allowBootstrapAdoption:!0}))return;f.workerState=Mr(t,Yn());let n=typeof e?.activeRun?.runId=="string"&&e.activeRun.runId?e.activeRun.runId:void 0,r=typeof e?.activeRun?.text=="string"?e.activeRun.text:void 0,o=up({taskStatus:f.activeTask?.status,hasPendingRun:!!f.pendingRun,activeRunId:n,activeRunText:r,ignoredRunIds:Kn});if(o&&(f.pendingRun=lt({id:n,text:r,startedAt:e.activeRun.startedAt,attempts:0,autoResume:!0})),n&&r&&o?C?.setActiveRun({runId:n,text:r}):n&&(!Kr()||Kn.has(n))&&C?.setActiveRun(void 0),!Kr()&&f.pendingRun&&Nt(void 0),f.workerState&&C?.setWorkerContext(wh(f.workerState)),Z&&t?.taskBoundaryId){let s=Z.getTaskByBoundaryId(t.taskBoundaryId);s&&(s.workerState=f.workerState,n&&(s.pendingRun=f.pendingRun))}Ei(),Se()}return}if(e.type==="task_started"){$e("task_started",{taskId:e.taskId,reason:"worker"});return}if(e.type==="run_started"){if(Fa="",hn(),typeof e.runId=="string"&&e.runId&&Xr.delete(e.runId),!Kr()){C?.setActiveRun(void 0);return}let t=f?.pendingRun,n=typeof e?.taskBoundaryId=="string"?He(e.taskBoundaryId):void 0;typeof e.runId=="string"&&e.runId&&zl(e.runId),Nt(lt({id:e.runId,text:e.text,startedAt:t?.startedAt||Date.now(),attempts:t?.attempts||0,autoResume:t?.autoResume!==!1,taskBoundaryId:n||t?.taskBoundaryId||De,resumeReason:t?.resumeReason,resumeRequired:t?.resumeRequired})),C?.setActiveRun({runId:e.runId,text:String(e.text||"")}),Y?.setRunning(!0),Y?.setQuestionPrompt(void 0);let r=`run:${String(e.runId||"")}:start`;if(f?.timeline.some(o=>o.id===r)||et({id:r,kind:"plan",title:e.resume?"Run resumed":"Run started",detail:String(e.text||""),status:"pending"}),Z&&n){let o=Z.getTaskByBoundaryId(n);o&&(o.pendingRun=f?.pendingRun,Z.dispatch(o.taskId,{type:"START"}))}return}if(e.type==="run_completed"||e.type==="run_state_transition"){Fa="",er=!1,nn=0;let t=cT(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),mt&&(clearTimeout(mt),mt=null);let i=typeof e.runId=="string"&&e.runId?e.runId:void 0,a=typeof e?.taskBoundaryId=="string"?He(e.taskBoundaryId):void 0;if(o){let c=lt(f?.pendingRun),l=String(c?.text||Bn||"").trim(),u=String((i?Xr.get(i):"")||"").trim();Oo=l||Oo,Po=u||Po,_s=Date.now(),c?.id&&C?.releaseWorkflowLock(c.id),i&&C?.releaseWorkflowLock(i),Nt(void 0),eo(void 0),C?.setActiveRun(void 0),hn(),i&&ao(i)}else if(Kr()&&i){zl(i),eo(i);let c=f?.pendingRun,l=c?.id===i&&c?.text?c.text:Bn||c?.text||"Continue task";Nt(lt({id:i,text:l,startedAt:c?.startedAt||Date.now(),attempts:c?.attempts||0,autoResume:c?.autoResume!==!1,taskBoundaryId:a||c?.taskBoundaryId||De,resumeRequired:n==="in_progress"&&r==="same_tab_navigation_handoff",resumeReason:n==="in_progress"&&r==="same_tab_navigation_handoff"?c?.resumeReason||"agent_navigation":void 0})),C?.setActiveRun({runId:i,text:l})}if(f&&e?.route&&(e.route.mode==="act"||e.route.mode==="planner")&&(f.lastRoutingDecision={mode:e.route.mode,score:Number(e.route.score)||void 0,reason:typeof e.route.reason=="string"?mn(e.route.reason,200):void 0,ts:Date.now()},Se()),!e.ok&&e.error){if(i&&Xr.delete(i),i&&(oo(i,"worker_run_failed",{attemptImmediately:!0}),ve?.controlRun({action:"cancel",runId:i,reason:"worker_run_failed"})),!Kr())return;Y?.setQuestionPrompt(void 0),t.contextResetRecommended?($a("worker_run_failed_terminal"),C?.resetTabsToCurrent(window.location.href,document.title||void 0),Et(`Task failed: ${String(e.error)}. Start a new task to continue.`)):($a("worker_run_failed_terminal"),Et(`Task failed: ${String(e.error)}`)),i&&Xr.delete(i),et({kind:"error",title:"Run failed",detail:String(e.error),status:"error"})}else if(e.ok){if(!Kr())return;let c=t.taskComplete,l=t.needsUserInput,u=t.questions||Fr(e.questions),m=Fr(f?.workerState?.pendingAskUser?.questions),T=u.length?u:l?m:[];if(n==="failed")i&&(oo(i,"worker_terminal_failed",{attemptImmediately:!0}),ve?.controlRun({action:"cancel",runId:i,reason:"worker_terminal_failed"})),Y?.setQuestionPrompt(void 0),t.contextResetRecommended?($a("worker_run_failed_terminal"),C?.resetTabsToCurrent(window.location.href,document.title||void 0),Et("Task failed. Start a new task to continue.")):($a("worker_run_failed_terminal"),Et("Task failed.")),et({kind:"error",title:"Run failed",detail:typeof e.error=="string"?e.error:"Run reported failure state.",status:"error"});else if(c||n==="completed")i&&ve?.controlRun({action:"end_task",runId:i,reason:"worker_task_complete"}),Y?.setQuestionPrompt(void 0),ST("worker_task_complete"),C?.resetTabsToCurrent(window.location.href,document.title||void 0),Et("Task completed"),VT(typeof e.runId=="string"?e.runId:void 0);else{let h=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(Z){let b=Z.getActiveTask();b&&Z.dispatch(b.taskId,{type:"ASK_USER"})}co({type:"awaiting_user",reason:h,at:Date.now()})}else xh(h);l&&T.length>0?Y?.setQuestionPrompt({questions:T}):l?Ei():Y?.setQuestionPrompt(void 0),l?(Et("Need more input to continue"),et({kind:"status",title:"Waiting for your input",detail:T.length?`Please answer: ${T.map(b=>`${b.key} (${b.query})`).join("; ")}`:"Planner requested more information before marking the task complete.",status:"info"})):r==="same_tab_navigation_handoff"?(Et("Navigating to continue task..."),et({kind:"status",title:"Navigation handoff",detail:"Rover will resume after same-tab navigation completes.",status:"pending"})):Et("Working...")}}if(Z&&a){let c=Z.getTaskByBoundaryId(a);if(c)if(o){let l=n==="completed"?{type:"COMPLETE"}:{type:"FAIL",error:typeof e.error=="string"?e.error:void 0};Z.dispatch(c.taskId,l),Z.releaseWorker(c.taskId)}else t.continuationReason==="awaiting_user"&&Z.dispatch(c.taskId,{type:"ASK_USER"})}Mo();return}if(e.type==="ready"){Zn=!0,Et("ready"),$e("ready"),N&&Oh(N);let t=C?.getWorkerContext(),n=Mr(In(t),Yn()),r=n&&Do({source:"ready_hydrate",incomingBoundaryId:n.taskBoundaryId,allowBootstrapAdoption:!0})?n:void 0,o=Mr(In(f?.workerState),Yn()),s=o&&Do({source:"ready_hydrate",incomingBoundaryId:o.taskBoundaryId,allowBootstrapAdoption:!0})?o:void 0,i=Number(s?.updatedAt)||0,a=Number(r?.updatedAt)||0,c=r&&a>i+100?r:s;f&&(c&&c!==f.workerState?(f.workerState=Mr(c,Yn()),Se()):!c&&f.workerState&&(f.workerState=void 0,Se())),c?(qe?.postMessage({type:"hydrate_state",state:c}),$e("context_restored",{source:"runtime_start",ts:Date.now()}),setTimeout(()=>{er||Br()},500)):pn&&ht?(Wt("status",{event:"checkpoint_pull_first"}),ht.syncPullFirst()):Br();return}if(e.type==="hydrated"){Br();return}e.type==="updated"&&$e("updated")}}function Ql(e,t){let n=Number(e);return Number.isFinite(n)?Math.max(t.min,Math.min(t.max,Math.floor(n))):t.fallback}function Tc(e){if(!e||typeof e!="object")return;let t=Ql(e.shortcutMaxStored,{min:1,max:ec,fallback:ec}),n=Ql(e.shortcutMaxRendered,{min:1,max:tc,fallback:tc});return{shortcutMaxStored:t,shortcutMaxRendered:n}}function Ri(){fi&&(clearTimeout(fi),fi=null),pi&&(clearTimeout(pi),pi=null)}function jT(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>Dp?null:{shortcuts:io(n.data.shortcuts),greeting:Ss(n.data.greeting),limits:Tc(n.data.limits),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>Dp?null:{shortcuts:io(n.data)}}catch{return null}}function Lh(e,t){try{localStorage.setItem(`rover:site-config:${e}`,JSON.stringify({ts:Date.now(),version:t.version,data:{shortcuts:io(t.shortcuts),greeting:Ss(t.greeting),limits:Tc(t.limits)}}))}catch{}}function Ss(e){if(!e||typeof e!="object")return;let t={},n=String(e.text||"").trim();n&&(t.text=n.slice(0,gv));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 GT(e){if(!e||typeof e!="object")return null;let t=String(e.id||"").trim().slice(0,80),n=String(e.label||"").trim().slice(0,fv),r=String(e.prompt||"").trim().slice(0,hv);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,pv)),e.icon&&(o.icon=String(e.icon).trim().slice(0,mv)),(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 io(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(t.length>=ec)break;let o=GT(r);!o||n.has(o.id)||(n.add(o.id),t.push(o))}return t}function XT(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 KT(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 XT(Array.from(n.values())).slice(0,ec)}function Dh(e){let t=Ql(no?.limits?.shortcutMaxRendered,{min:1,max:tc,fallback:tc});return e.filter(n=>n.enabled!==!1).slice(0,t)}function _c(e){if(!e)return;let t=Ss(no?.greeting),n=Ss(e.ui?.greeting);if(!(!t&&!n))return{...t||{},...n||{}}}function ku(e){let t=gr?.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 wi(){if(to||!Y||!N||f?.uiOpen)return;let e=_c(N);if(e?.disabled===!0)return;let t=`rover:greeting-shown:${N.siteId}`;try{if(sessionStorage.getItem(t)){Lo=!0;return}}catch{}if(Lo)return;Ri();let n=e?.delay??3e3,r=e?.duration??8e3,o=ku(e);fi=setTimeout(()=>{if(fi=null,!(to||f?.uiOpen)){Y?.showGreeting(o),Lo=!0;try{sessionStorage.setItem(t,"1")}catch{}pi=setTimeout(()=>{pi=null,Y?.dismissGreeting()},r)}},n)}function dc(e){let t=io(e.ui?.shortcuts||[]),n=io(no?.shortcuts||[]),r=KT(t,n);Y?.setShortcuts(Dh(r))}async function YT(e){let t=null,n=Wl(e)||nr(e);if(!n)return null;let r={siteId:e.siteId,sessionId:f?.sessionId||e.sessionId,requestedSessionId:f?.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=Js(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:io(t?.shortcuts),greeting:Ss(t?.greeting),limits:Tc(t?.limits),version:t?.version!=null?String(t.version):void 0}:null}function Oh(e){let t=jT(e.siteId);t&&(no=t),dc(e),wi(),YT(e).then(n=>{if(n&&(no=n,Lh(e.siteId,n),dc(e),!to)){let r=_c(e);Lo&&!f?.uiOpen?Y?.showGreeting(ku(r)):wi()}}).catch(()=>{})}function xu(e){if(!N)return;let t={...gr,...e};t.name&&(t.name=String(t.name).trim().slice(0,120)),t.email&&(t.email=String(t.email).trim().slice(0,240)),gr=t,eh(N.siteId,gr),Y?.setVisitorName(gr.name||""),to||(Lo&&!f?.uiOpen?Y?.showGreeting(ku(_c(N))):wi())}function QT(e){if(uc(e),C){let c=mu(C.getRole());gt=c,Xn=!C||C.getRole()==="controller",f&&(f.executionMode=c)}wu(e),bc(e),rr(!0);let t=(e.allowActions??!0)&&(C?C.isController():!0),n=c=>{if(!f)return;let l=lt(f.pendingRun);if(l){let b=lt({...l,taskBoundaryId:l.taskBoundaryId||De,resumeRequired:!0,resumeReason:c});return f.pendingRun=b,b&&C?.setActiveRun({runId:b.id,text:b.text}),b}let u=C?.getState().activeRun,m=String(ve?.getActiveRunId()||xi||u?.runId||"").trim();if(!m)return;let T=String(u?.text||Bn||"Continue task").trim()||"Continue task",h=lt({id:m,text:T,startedAt:Date.now(),attempts:0,autoResume:!0,taskBoundaryId:De,resumeRequired:!0,resumeReason:c});return f.pendingRun=h,h&&C?.setActiveRun({runId:h.id,text:h.text}),h};Ge=new Ea({allowActions:t,runtimeId:Xe,allowedDomains:e.allowedDomains,domainScopeMode:Ti(e.domainScopeMode),externalNavigationPolicy:e.externalNavigationPolicy,crossHostPolicy:gc(e.navigation?.crossHostPolicy),navigationDelayMs:e.timing?.navigationDelayMs,domSettle:{debounceMs:At(e.timing?.domSettleDebounceMs,8,500),maxWaitMs:At(e.timing?.domSettleMaxWaitMs,80,5e3),retries:At(e.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:At(e.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:At(e.timing?.sparseTreeRetryMaxAttempts,0,4)},registerOpenedTab:c=>C?.registerOpenedTab(c),switchToLogicalTab:c=>C?.switchToLogicalTab(c)||{ok:!1,reason:"No session coordinator"},listKnownTabs:()=>(C?.listTabs()||[]).map(c=>({logicalTabId:c.logicalTabId,runtimeId:c.runtimeId,url:c.url,title:c.title,external:!!c.external})),onNavigationGuardrail:c=>{if($e("navigation_guardrail",c),et({kind:"status",title:"Navigation guardrail",detail:Ya(c),status:"info"}),ve&&c?.blockedUrl){let l=qp();if(!l)return;let u=String(window.location.hostname||"").toLowerCase(),m=(()=>{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:u||void 0,targetHost:m,isCrossHost:!!m&&!!u&&m!==u}).then(T=>{T&&(T.retryAttempted&&$e("tab_event_conflict_retry",{runId:T.runId||l,decisionReason:T.decisionReason,conflict:T.conflict}),T.retryExhausted&&$e("tab_event_conflict_exhausted",{runId:T.runId||l,decisionReason:T.decisionReason,conflict:T.conflict}))}).catch(()=>{})}},onBeforeAgentNavigation:async c=>{let l=qp(),u=String(window.location.hostname||"").toLowerCase();if(c?.targetUrl&&Ep(c.targetUrl,u)){let z=Rl(c.targetUrl,u);return Wt("navigation_guardrail",{event:"adversarial_blocked",targetUrl:c.targetUrl,score:z.score,reasons:z.reasons}),{decision:"block",reason:`Navigation blocked: suspicious URL detected (adversarial score ${z.score}).`,decisionReason:"adversarial_block"}}if(c?.isCrossHost){let z=Date.now();for(Ro.push(z);Ro.length>0&&Ro[0]<z-Bp;)Ro.shift();if(Ro.length>Sv)return Wt("navigation_guardrail",{event:"rapid_cross_origin_blocked",targetUrl:c.targetUrl,count:Ro.length}),{decision:"block",reason:`Navigation blocked: too many cross-origin navigations (${Ro.length} in ${Bp/1e3}s).`,decisionReason:"rapid_cross_origin_block"}}let m=(()=>{try{return new URL(String(c?.targetUrl||"")).hostname.toLowerCase()}catch{return}})(),T=!!u&&!!m&&ni(u)!==ni(m),h=!!u&&!!m&&u!==m,v=Ap({host:m,currentHost:u,allowedDomains:N?.allowedDomains,domainScopeMode:N?.domainScopeMode})?h&&N?.navigation?.crossHostPolicy==="open_new_tab"?"open_new_tab":"allow_same_tab":N?.externalNavigationPolicy==="block"?"block":N?.externalNavigationPolicy==="allow"?"allow_same_tab":"open_new_tab",M=jv(),q=v==="allow_same_tab";if(q&&f){if(mr=!0,Ml(Cl(c)),n(c.isCrossHost?"cross_host_navigation":"agent_navigation"),Kt&&N?.siteId)try{sessionStorage.setItem(`rover:sess:${N.siteId}`,JSON.stringify({t:Kt,e:br}))}catch{}if(Z){let z=Z.getActiveTask();z&&Z.dispatch(z.taskId,{type:"NAVIGATION_STARTED",targetUrl:c.targetUrl,isCrossHost:c.isCrossHost})}ys("same_tab_navigation_handoff_early")}let R=null;if(c?.targetUrl&&ve&&l){let z=!!m&&!!u&&m!==u;R=await ve.sendTabEvent({runId:l,currentUrl:window.location.href,targetUrl:c.targetUrl,message:M,currentHost:u||void 0,targetHost:m,isCrossHost:z}).catch(()=>null),R?.retryAttempted&&$e("tab_event_conflict_retry",{runId:R.runId||l,decisionReason:R.decisionReason,conflict:R.conflict,targetUrl:c.targetUrl}),R?.retryExhausted&&$e("tab_event_conflict_exhausted",{runId:R.runId||l,decisionReason:R.decisionReason,conflict:R.conflict,targetUrl:c.targetUrl})}let S=Ip({crossRegistrableDomain:T,fallbackDecision:v,serverDecision:R?.decision,serverAvailable:!!R}),F=S.decision;if(F==="block")return q&&(mr=!1),{decision:"block",reason:S.failSafeBlocked?"Cross-domain navigation blocked because preflight policy check is unavailable.":R?.reason||"Navigation blocked by policy.",decisionReason:S.failSafeBlocked?"preflight_unavailable_block":R?.decisionReason||"policy_blocked"};if(F==="open_new_tab"){q&&(mr=!1),N?.tools?.web?.scrapeMode==="on_demand"&&ve&&c?.targetUrl&&OT(c.targetUrl).catch(()=>{});let Q=S.decisionReason==="preflight_unavailable_fallback"&&!R;return{decision:"open_new_tab",reason:R?.reason||(Q?"Preflight is unavailable; using local policy to open in a new tab and preserve runtime continuity.":"Open in new tab to preserve runtime continuity."),decisionReason:R?.decisionReason||S.decisionReason||"open_new_tab"}}return!q&&f?(mr=!0,Ml(Cl(c)),n(c.isCrossHost?"cross_host_navigation":"agent_navigation"),ys("same_tab_navigation_handoff")):q||(mr=!0),{decision:"allow_same_tab",reason:R?.reason||(S.decisionReason==="preflight_unavailable_fallback"&&!R?"Preflight is unavailable; allowing navigation using local policy.":"Navigation allowed."),decisionReason:R?.decisionReason||S.decisionReason||"allow_same_tab"}},onBeforeCrossHostNavigation:c=>{if(mr=!0,!f||!N)return;Ml(Cl(c));let l=nu(),u=n("cross_host_navigation");rp(N.siteId,{sessionId:f.sessionId,sessionToken:Kt,sessionTokenExpiresAt:br,targetUrl:String(c?.targetUrl||"").trim()||void 0,sourceHost:String(window.location.hostname||"").trim().toLowerCase()||void 0,handoffId:l?.handoffId||c?.handoffId,pendingRun:u?{id:u.id,text:u.text,startedAt:u.startedAt,attempts:u.attempts,taskBoundaryId:u.taskBoundaryId||De}:void 0,handoff:l?{handoffId:l.handoffId,sourceLogicalTabId:l.sourceLogicalTabId,runId:l.runId,targetUrl:l.targetUrl,createdAt:l.createdAt}:void 0,activeTask:f.activeTask?{taskId:f.activeTask.taskId,status:f.activeTask.status}:void 0,taskEpoch:f.taskEpoch,timestamp:Date.now()}),ys("cross_domain_handoff_pre_navigation")},instrumentationOptions:e.mode==="safe"?{observeInlineMutations:!1}:void 0});let r=gt==="observer"?"observer":"controller";Ge?.setActionGateContext?.({mode:r,controllerRuntimeId:C?.getCurrentHolderRuntimeId(),activeLogicalTabId:C?.getActiveLogicalTabId(),localLogicalTabId:C?.getLocalLogicalTabId(),reason:Ii(r,t)});let o=new MessageChannel;Ff(o.port1,{getSnapshot:()=>Ge.getSnapshot(),getPageData:async c=>{let l=N||e,u=Number(c?.tabId),m=C?.getLocalLogicalTabId();if(!Number.isFinite(u)||u<=0||u===m||!C)return Ge.getPageData(c);let h=C.listTabs().find(b=>b.logicalTabId===u);if(!h){let b=gi().includes(u);return ri({logicalTabId:u,external:!1},b?"detached_runtime_placeholder":"target_tab_missing")}if(h.runtimeId===Xe)return Ge.getPageData(c);if(h.external&&l.externalNavigationPolicy!=="allow")return ri(h,"external_domain_inaccessible");if(!h.runtimeId||!C.isTabAlive(u))return ri(h,"target_tab_inactive");try{return await C.sendCrossTabRpc(h.runtimeId,"getPageData",c,15e3)}catch{return ri(h,"cross_tab_rpc_failed")}},executeTool:async c=>{let l=N||e,u=c?.payload?.forceLocal===!0,m=String(c?.call?.name||"").trim(),T=Number(c?.call?.args?.tab_id),h=C?.getActiveLogicalTabId(),b=Number.isFinite(T)&&T>0?T:h;if(BT(m)){let R=c?.call?.serverResult;return R?R.success?{success:!0,output:R.data}:{success:!1,error:R.error||"Server-side execution failed"}:UT({call:c?.call,routeTabId:Number.isFinite(Number(b))?Number(b):void 0,runtimeCfg:l})}if(u)return Ge.executeTool(c.call,c.payload);let v=C?.getLocalLogicalTabId();if(!b||b===v||!C)return Ge.executeTool(c.call,c.payload);let q=C.listTabs().find(R=>R.logicalTabId===b);if(!q){let R=gi().includes(b);return oi(l,{logicalTabId:b,external:!1},R?"detached_runtime_placeholder":"target_tab_missing")}if(q.external&&l.externalNavigationPolicy!=="allow")return oi(l,q,"external_tab_action_blocked");if(q.runtimeId===Xe)return Ge.executeTool(c.call,c.payload);if(!q.runtimeId||!C.isTabAlive(b))return oi(l,q,"target_tab_inactive");try{return await C.sendCrossTabRpc(q.runtimeId,"executeTool",c,2e4)}catch{return oi(l,q,"cross_tab_execute_failed")}},executeClientTool:c=>Ge.executeClientTool(c.name,c.args),listClientTools:()=>Ge.listClientTools(),getTabContext:()=>{let c=C?.getLocalLogicalTabId(),l=C?.getActiveLogicalTabId();return{id:c||1,logicalTabId:c||1,activeLogicalTabId:l||c||1,runtimeId:Xe,mode:gt,url:window.location.href,title:document.title}},listSessionTabs:()=>{if(!C)return[];let c=C.listTabs({scope:"all"}),l=Array.isArray(C.getState()?.tabs)?C.getState().tabs:[],u=new Set(gi()),m=new Map,T=h=>{let b=Number(h?.logicalTabId||h?.id);!Number.isFinite(b)||b<=0||m.set(b,{...m.get(b)||{},...h,logicalTabId:b,id:b})};for(let h of c)T(h);for(let h of l){let b=Number(h?.logicalTabId);!Number.isFinite(b)||b<=0||(h.runtimeId||h.external||u.has(b))&&T(h)}return[...m.values()].sort((h,b)=>Number(h.logicalTabId)-Number(b.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 u=new Blob([`import '${s}';`],{type:"application/javascript"});i=URL.createObjectURL(u)}}catch{}qe=new Worker(i,{type:"module"}),qe.postMessage({type:"init",config:{...e,...Is(),publicKey:void 0,authToken:nr(e),sessionToken:Kt,sessionId:f?.sessionId,activeRunId:f?.pendingRun?.id},port:o.port2},[o.port2]);let a=(c="manual_cancel_task")=>{if(!f)return;let l=f.pendingRun;if(l){ao(l.id),qe?.postMessage({type:"cancel_run",runId:l.id}),oo(l.id,c,{attemptImmediately:!0}),ve?.controlRun({action:"cancel",runId:l.id,reason:c}).catch(()=>{}),C?.releaseWorkflowLock(l.id),C?.setActiveRun(void 0),Nt(void 0),f.workerState=void 0,C?.setWorkerContext(void 0),De=ro(),f.taskTabScope=void 0,Sn({forceReset:!0,persist:!1}),Jn(),mt&&(clearTimeout(mt),mt=null),Y?.setRunning(!1),Y?.setQuestionPrompt(void 0),Ih(c),Et("Task cancelled."),Qn("system","Task cancelled.",!0),Oo=void 0,Po=void 0,_s=0,et({kind:"info",title:"Run cancelled",status:"info"}),Se();return}let u=Fr(f.workerState?.pendingAskUser?.questions).length>0,m=f.activeTask?.status;!u&&m!=="running"||(De=ro(),f.workerState=void 0,f.taskTabScope=void 0,Sn({forceReset:!0,persist:!1}),Jn(),mt&&(clearTimeout(mt),mt=null),Y?.setRunning(!1),Y?.setQuestionPrompt(void 0),hn(),Nt(void 0),RT(c),C?.endTask(c),C?.setActiveRun(void 0),C?.setWorkerContext(void 0),Et(c==="question_prompt_cancel"?"Input request cancelled.":"Task cancelled."),Oo=void 0,Po=void 0,_s=0,et({kind:"info",title:c==="question_prompt_cancel"?"Input request cancelled":"Task cancelled",status:"info"}),Se())};if(Y=Vf({shortcuts:Dh(io(e.ui?.shortcuts||[])),greeting:_c(e),visitorName:gr?.name,onShortcutClick:c=>{let l=String(c.prompt||"").trim();l&&ui(l,{routing:c.routing})},onSend:(c,l)=>{ui(c,{askUserAnswers:l?.askUserAnswers})},onRequestControl:()=>{C?.requestControl()??!1?et({kind:"status",title:"Control requested",detail:"This tab is now the active Rover controller.",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:()=>{Ci({reason:"manual_new_task",clearUi:!0})},onEndTask:()=>{wc({reason:"manual_end_task"})},onTaskSuggestionPrimary:()=>{let c=Zr;if(c){if(c.kind==="resume_run"){let l=lt(f?.pendingRun);if(hn(),!l||l.id!==c.runId){Et("Previous task is no longer resumable.");return}Br({overridePolicyAction:"auto_resume"});return}ui(c.text,{bypassSuggestion:!0,startNewTask:!0,reason:c.reason})}},onTaskSuggestionSecondary:()=>{let c=Zr;if(c){if(c.kind==="resume_run"){let l=String(f?.pendingRun?.id||"").trim();if(hn(),!l||l!==c.runId)return;vu({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}ui(c.text,{bypassSuggestion:!0})}},onSwitchConversation:c=>{if(!Z||!f)return;let l=Z.getActiveTask();l&&Y&&(l.scrollPosition=Y.getScrollPosition());let u=Z.switchActiveTask(c);u&&(f.activeTaskId=c,Y&&(yu(),u.uiMessages?.length&&cc(u.uiMessages),u.timeline?.length&&lc(u.timeline),requestAnimationFrame(()=>{u.scrollPosition!=null&&Y.setScrollPosition(u.scrollPosition)}),u.state==="paused"?Y.showPausedTaskBanner({taskId:u.taskId,rootUserInput:u.rootUserInput||"Task"}):Y.hidePausedTaskBanner(),Y.setActiveConversationId(c)),Mo(),Se())},onDeleteConversation:c=>{Z&&(Z.deleteTask(c),Mo(),Se())},onResumeTask:c=>{if(!Z)return;Z.dispatch(c,{type:"RESUME"}).accepted&&(Y?.hidePausedTaskBanner(),Z.assignWorker(c,{}),Mo(),Se())},onCancelPausedTask:c=>{if(!Z)return;Z.dispatch(c,{type:"CANCEL",reason:"user_cancelled_paused_task"}).accepted&&(Y?.hidePausedTaskBanner(),Z.archiveTask(c),Mo(),Se())},onTabClick:c=>{C?.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:()=>{to=!0,Ri(),f&&(f.uiOpen=!0,f.uiHidden=!1,Se()),$e("open")},onClose:()=>{f&&(f.uiOpen=!1,Se()),$e("close")}}),hn(),f?.uiMessages?.length&&cc(f.uiMessages),f?.timeline?.length&&lc(f.timeline),f?.uiStatus&&Y.setStatus(f.uiStatus),Ei(),f?.executionMode&&Y.setExecutionMode(f.executionMode,{localLogicalTabId:C?.getLocalLogicalTabId(),activeLogicalTabId:C?.getActiveLogicalTabId(),controllerRuntimeId:C?.getCurrentHolderRuntimeId(),canTakeControl:!0,canComposeInObserver:yh(),note:vh(f.executionMode)}),qe.onmessage=c=>{zT(c.data||{})},C){let c=()=>{C?.registerCurrentTab(window.location.href,document.title),C?.broadcastNavigation(window.location.href,document.title)};ps||(ps=History.prototype.pushState),hs||(hs=History.prototype.replaceState);let l=ps.bind(history),u=hs.bind(history);history.pushState=function(...m){let T=l(...m);return setTimeout(c,0),T},history.replaceState=function(...m){let T=u(...m);return setTimeout(c,0),T},ja(window,"popstate",c)}f?.uiHidden?Y.hide():(Y.show(),f?.uiOpen??!!e.openOnInit?Y.open():Y.close()),f&&(f.uiHidden=!!f.uiHidden,f.uiOpen=!!f.uiOpen,Se()),C&&(_u(C.getState(),"remote"),Bo(C.getRole(),{localLogicalTabId:C.getLocalLogicalTabId(),activeLogicalTabId:C.getActiveLogicalTabId(),holderRuntimeId:C.getCurrentHolderRuntimeId()})),wi()}function ki(e){if(Qr)return fc(e),Qr;Ul&&pc(),Ul=!0,Lr=ep(),Xe=Fv(e.siteId),Ct=th(e),gr=e.visitor||$v(e.siteId),to=!1,Lo=!1,Ri(),no=null,rn=!1;let t=e.sessionId?.trim(),n=Wv(e.siteId),r=!t&&e.sessionScope!=="tab"&&Ct?Fp(e.siteId,Ct):void 0,o=Ka(e.siteId,t||r),s=gs(e.siteId),i=Array.from(new Set([t?o:n,o,n,r?Ka(e.siteId,r):void 0,s].filter(R=>!!R))),a=null,c=null;for(let R of i){let S=lT(R);if(S){a=S,c=R;break}}tn=c||o,Cr=s!==tn?s:null;let l=i.filter(R=>R!==tn);ql(e.siteId,tn);let u=a?null:El(e.siteId,{currentUrl:window.location.href,currentHost:window.location.hostname,requireTargetMatch:!0});!a&&!u&&El(e.siteId,{currentHost:window.location.hostname,requireTargetMatch:!1})&&(Wt("status",{event:"resume_cookie_rejected",reason:"target_or_host_mismatch"}),Ks(e.siteId)),u&&(Ks(e.siteId),pn=!0,rn=!0,u.sessionToken&&ic(u.sessionToken,u.sessionTokenExpiresAt));let m=e.sessionId?.trim(),T=!m&&!a?.sessionId&&!u?.sessionId&&e.sessionScope!=="tab"&&Ct?Fp(e.siteId,Ct):void 0,h=m||a?.sessionId||u?.sessionId||T||crypto.randomUUID(),b=a;if(!a&&u){let R=$l(u.sessionId,Xe),S=String(u.activeTask?.status||"").trim().toLowerCase(),F=!S||S==="running";u.pendingRun&&F&&(R.pendingRun=lt({...u.pendingRun,autoResume:!0,taskBoundaryId:u.pendingRun.taskBoundaryId,resumeRequired:!0,resumeReason:"cross_host_navigation"})),u.handoff&&(R.lastNavigationHandoff=Hr({...u.handoff,createdAt:u.handoff.createdAt})),u.activeTask&&(R.activeTask={...tr("cross_domain_resume"),taskId:u.activeTask.taskId,status:u.activeTask.status}),R.taskEpoch=u.taskEpoch||1,R.uiOpen=!0,b=R}f=_i(b,h,Xe),m&&f.sessionId!==m&&(f=$l(m,Xe));let v=zv(e.siteId);De=Pv(f),v&&f.activeTask?.status==="running"&&(rn=!0,f.uiHidden=!1,f.uiOpen=!0,f.pendingRun=lt({...f.pendingRun||{},id:f.pendingRun?.id||v.runId,text:f.pendingRun?.text||v.text||Bn||"Continue task",startedAt:f.pendingRun?.startedAt||Date.now(),attempts:f.pendingRun?.attempts||0,autoResume:!0,taskBoundaryId:f.pendingRun?.taskBoundaryId||v.taskBoundaryId||De,resumeRequired:!0,resumeReason:v.resumeReason||f.pendingRun?.resumeReason||"agent_navigation"})),f.pendingRun&&!f.pendingRun.taskBoundaryId&&(f.pendingRun=lt({...f.pendingRun,taskBoundaryId:De})),f.workerState&&!f.workerState.taskBoundaryId&&(f.workerState=Mr(In({...f.workerState,taskBoundaryId:De}),De)),N={...e,visitorId:Ct||e.visitorId,sessionId:m||f.sessionId,domainScopeMode:Ti(e.domainScopeMode),taskRouting:{mode:e.taskRouting?.mode||"act",actHeuristicThreshold:e.taskRouting?.actHeuristicThreshold,plannerOnActError:e.taskRouting?.plannerOnActError},navigation:{crossHostPolicy:gc(e.navigation?.crossHostPolicy)},timing:{navigationDelayMs:At(e.timing?.navigationDelayMs,0,3e3),actionTimeoutMs:At(e.timing?.actionTimeoutMs,5e3,12e4),domSettleDebounceMs:At(e.timing?.domSettleDebounceMs,8,500),domSettleMaxWaitMs:At(e.timing?.domSettleMaxWaitMs,80,5e3),domSettleRetries:At(e.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:At(e.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:At(e.timing?.sparseTreeRetryMaxAttempts,0,4)},transport:{activation:lu(e.transport?.activation),idleCloseMs:uu(e.transport?.idleCloseMs)},stability:{maxPersistBytes:ws(e.stability?.maxPersistBytes,It.localPersistBytes),maxSnapshotBytes:ws(e.stability?.maxSnapshotBytes,It.snapshotBytes)},task:{singleActiveScope:oh(e.task?.singleActiveScope),tabScope:sh(e.task?.tabScope),resume:{mode:su(e.task?.resume?.mode),ttlMs:sc(e.task?.resume?.ttlMs)},followup:{mode:ih(e.task?.followup?.mode),ttlMs:au(e.task?.followup?.ttlMs),minLexicalOverlap:cu(e.task?.followup?.minLexicalOverlap)},observerInput:iu(e.task?.observerInput),autoResumePolicy:ou(e.task?.autoResumePolicy)},chat:{inRun:ah(e.chat?.inRun),resumeFollowup:{mode:ch(e.chat?.resumeFollowup?.mode),maxTurns:lh(e.chat?.resumeFollowup?.maxTurns)}},external:{intentSelection:uh(e.external?.intentSelection),requireUserConfirm:dh(e.external?.requireUserConfirm),adversarialGate:fh(e.external?.adversarialGate)},taskContext:{...e.taskContext},features:{rover_v2_kernel_runtime:ph(e.features?.rover_v2_kernel_runtime)}},f.sessionId=N.sessionId,f.runtimeId=Xe,tn=Ka(e.siteId,f.sessionId),Cr=tn!==gs(e.siteId)?gs(e.siteId):null,ql(e.siteId,tn),f.executionMode=f.executionMode||"controller",f.timeline=Pr(f.timeline),f.uiMessages=Or(f.uiMessages),f.activeTask=As(f.activeTask,tr("boot")),Il(f.activeTask?.status)&&(f.pendingRun=void 0,f.workerState=void 0,pn=!1,rn=!1,Ks(e.siteId),rh(e.siteId)),f.taskEpoch=Math.max(1,Number(f.taskEpoch)||1),gt=f.executionMode,gr&&eh(e.siteId,gr);let M={maxConcurrentWorkers:e.task?.maxConcurrentWorkers??2,maxQueuedTasks:e.task?.maxQueuedTasks??5,maxArchivedTasks:e.task?.maxArchivedTasks??10};if(f.tasks&&Object.keys(f.tasks).length>0)Z=as.fromPersistedState({tasks:f.tasks,activeTaskId:f.activeTaskId,taskOrder:f.taskOrder},M);else{Z=as.fromV1State(f,M);let{tasks:R,activeTaskId:S,taskOrder:F}=Z.toPersistedState();f.tasks=R,f.activeTaskId=S,f.taskOrder=F}Se();try{sessionStorage.setItem(`rover:tab-alive:${e.siteId}`,"1")}catch{}Zn=!1,Ts=!1,er=!1,nn=0,rc=null;try{let R=sessionStorage.getItem(`rover:sess:${e.siteId}`);if(R){let{t:S,e:F}=JSON.parse(R);S&&typeof S=="string"&&S.startsWith("rvrsess_")&&Number(F)>Date.now()+2e3&&ic(S,Number(F))}}catch{}QT(N),pu(N);let q=!!(Kt&&br>Date.now()+2e3);if((!ve||q)&&(Ts=!0),tn&&qT(tn,l.length?l:Cr?[Cr]:void 0),wT(),rr(!0),pn&&setTimeout(()=>{pn&&!er&&(pn=!1,Br())},8e3),Qr={boot:ki,init:Iu,update:fc,shutdown:pc,open:Ai,close:Ec,show:Su,hide:Ru,send:Au,newTask:Ci,endTask:wc,getState:Cu,registerTool:Nu,identify:xu,on:Yp},Ga.length){for(let R of Ga)nh(R);Ga.length=0}return Qr}function Iu(e){return ki(e)}function fc(e){if(!Qr||!qe||!N)return;N={...N,...e,domainScopeMode:Ti(e.domainScopeMode??N.domainScopeMode),taskRouting:{...N.taskRouting,...e.taskRouting},navigation:{...N.navigation,...e.navigation,crossHostPolicy:gc(e.navigation?.crossHostPolicy??N.navigation?.crossHostPolicy)},timing:{...N.timing,...e.timing,navigationDelayMs:At(e.timing?.navigationDelayMs??N.timing?.navigationDelayMs,0,3e3),actionTimeoutMs:At(e.timing?.actionTimeoutMs??N.timing?.actionTimeoutMs,5e3,12e4),domSettleDebounceMs:At(e.timing?.domSettleDebounceMs??N.timing?.domSettleDebounceMs,8,500),domSettleMaxWaitMs:At(e.timing?.domSettleMaxWaitMs??N.timing?.domSettleMaxWaitMs,80,5e3),domSettleRetries:At(e.timing?.domSettleRetries??N.timing?.domSettleRetries,0,6),sparseTreeRetryDelayMs:At(e.timing?.sparseTreeRetryDelayMs??N.timing?.sparseTreeRetryDelayMs,20,1e3),sparseTreeRetryMaxAttempts:At(e.timing?.sparseTreeRetryMaxAttempts??N.timing?.sparseTreeRetryMaxAttempts,0,4)},transport:{...N.transport,...e.transport,activation:lu(e.transport?.activation??N.transport?.activation),idleCloseMs:uu(e.transport?.idleCloseMs??N.transport?.idleCloseMs)},stability:{...N.stability,...e.stability,maxPersistBytes:ws(e.stability?.maxPersistBytes??N.stability?.maxPersistBytes,It.localPersistBytes),maxSnapshotBytes:ws(e.stability?.maxSnapshotBytes??N.stability?.maxSnapshotBytes,It.snapshotBytes)},task:{...N.task,...e.task,singleActiveScope:oh(e.task?.singleActiveScope??N.task?.singleActiveScope),tabScope:sh(e.task?.tabScope??N.task?.tabScope),resume:{mode:su(e.task?.resume?.mode??N.task?.resume?.mode),ttlMs:sc(e.task?.resume?.ttlMs??N.task?.resume?.ttlMs)},followup:{mode:ih(e.task?.followup?.mode??N.task?.followup?.mode),ttlMs:au(e.task?.followup?.ttlMs??N.task?.followup?.ttlMs),minLexicalOverlap:cu(e.task?.followup?.minLexicalOverlap??N.task?.followup?.minLexicalOverlap)},observerInput:iu(e.task?.observerInput??N.task?.observerInput),autoResumePolicy:ou(e.task?.autoResumePolicy??N.task?.autoResumePolicy)},chat:{...N.chat,...e.chat,inRun:ah(e.chat?.inRun??N.chat?.inRun),resumeFollowup:{mode:ch(e.chat?.resumeFollowup?.mode??N.chat?.resumeFollowup?.mode),maxTurns:lh(e.chat?.resumeFollowup?.maxTurns??N.chat?.resumeFollowup?.maxTurns)}},external:{...N.external,...e.external,intentSelection:uh(e.external?.intentSelection??N.external?.intentSelection),requireUserConfirm:dh(e.external?.requireUserConfirm??N.external?.requireUserConfirm),adversarialGate:fh(e.external?.adversarialGate??N.external?.adversarialGate)},taskContext:{...N.taskContext,...e.taskContext},features:{...N.features,...e.features,rover_v2_kernel_runtime:ph(e.features?.rover_v2_kernel_runtime??N.features?.rover_v2_kernel_runtime)},ui:{...N.ui,...e.ui,agent:{...N.ui?.agent,...e.ui?.agent},panel:{...N.ui?.panel,...e.ui?.panel}},tools:{...N.tools,...e.tools,client:e.tools?.client??N.tools?.client,web:{...N.tools?.web,...e.tools?.web}}},Ct=th(N),Ct&&(N.visitorId=Ct),e.sessionId&&f?(f.sessionId=e.sessionId,tn=Ka(N.siteId,f.sessionId),Cr=tn!==gs(N.siteId)?gs(N.siteId):null,ql(N.siteId,tn),Se(),uc(N)):(e.sessionScope||e.tabPolicy)&&uc(N),wu(N),bc(N),pu(N);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(Ge){typeof e.allowActions=="boolean"&&Ge.setAllowActions(e.allowActions&>==="controller");let n=gt==="controller"&&(N?.allowActions??!0),r=gt==="observer"?"observer":"controller";Ge?.setActionGateContext?.({mode:r,controllerRuntimeId:C?.getCurrentHolderRuntimeId(),activeLogicalTabId:C?.getActiveLogicalTabId(),localLogicalTabId:C?.getLocalLogicalTabId(),reason:Ii(r,n)}),(e.allowedDomains||e.domainScopeMode||e.externalNavigationPolicy||e.navigation?.crossHostPolicy)&&Ge.setNavigationPolicy({allowedDomains:e.allowedDomains,domainScopeMode:Ti(e.domainScopeMode??N.domainScopeMode),externalNavigationPolicy:e.externalNavigationPolicy,crossHostPolicy:e.navigation?.crossHostPolicy})}qe.postMessage({type:"update_config",config:{...e,...Is(),publicKey:void 0,authToken:nr(N),sessionToken:Kt,sessionId:f?.sessionId,activeRunId:f?.pendingRun?.id,sessionEpoch:ve?.getEpoch?.()??Nr,sessionSeq:ve?.getLastSeq?.()??0}}),dc(N),t?Oh(N):wi(),e.visitor&&xu(e.visitor),typeof e.openOnInit=="boolean"&&(e.openOnInit?Ai():Ec()),rr()}function pc(){hn(),bs(),No(!0),fu(),ht?.markDirty(),ht?.syncNow({push:!0,pull:!1}),ht?.stop(),ht=null,ve?.stop(),ve=null,Kt=void 0,br=0,Nr=1,eo(void 0),oc="",C?.stop(),C=null,Z?.shutdown(),Z=null,qe?.terminate(),qe=null,Y?.destroy(),Y=null,Ge=null,N=null,Zn=!1,er=!1,nn=0,st&&(clearTimeout(st),st=null),Yr&&(clearTimeout(Yr),Yr=null),za=!1,Xt.clear(),Xr.clear(),Kn.clear(),hr.clear(),mr=!1,De="",Xe="",Ct=void 0,gr=void 0,to=!1,Lo=!1,Ri(),no=null,vs=!1,Va=!1,fs=!1,fn=[],Gp=0,Dl=0,Ol=0,nc=0,di=!1,Dr&&(clearTimeout(Dr),Dr=null),Xl="",ds="",gt="controller",Xn=!0,Zr=null,Lr=null,rc=null,li=0;try{let e=window.rtrvrAIClearObserverPause;typeof e=="function"&&e()}catch{}Qr=null;for(let e of Jr)try{e.target.removeEventListener(e.event,e.handler,e.options)}catch{}if(Jr.length=0,ps){try{History.prototype.pushState=ps}catch{}ps=null}if(hs){try{History.prototype.replaceState=hs}catch{}hs=null}Pl=!1,Bl=!1,Ul=!1}function Ai(){to=!0,Ri(),Y?.show(),Y?.open(),f&&(f.uiHidden=!1,f.uiOpen=!0,Se())}function Ec(){Y?.close(),f&&(f.uiOpen=!1,Se())}function Su(){Y?.show(),f&&(f.uiHidden=!1,Se())}function Ru(){Y?.hide(),f&&(f.uiHidden=!0,f.uiOpen=!1,Se())}function Au(e){e?.trim()&&ui(e)}function Ci(e){if(!f)return;let t=e?.reason||"manual_new_task",n=e?.clearUi!==!1;if(Oo=void 0,Po=void 0,_s=0,f.pendingRun&&(ao(f.pendingRun.id),qe?.postMessage({type:"cancel_run",runId:f.pendingRun.id}),oo(f.pendingRun.id,t,{attemptImmediately:!0}),ve?.controlRun({action:"cancel",runId:f.pendingRun.id,reason:t}),C?.releaseWorkflowLock(f.pendingRun.id)),mt&&(clearTimeout(mt),mt=null),Y?.setRunning(!1),Y?.setQuestionPrompt(void 0),er=!1,nn=0,Si(),Z){let s=Z.createTask(t);Z.switchActiveTask(s.taskId),Z.dispatch(s.taskId,{type:"START",reason:t})}let r=co({type:"new_task",reason:t,at:Date.now()},{syncShared:!1,persist:!1});if(!r)return;let o=Math.max(1,Number(f.taskEpoch)||1);n&&(f.uiMessages=[],f.timeline=[],f.uiStatus=void 0,yu()),C?.startNewTask({taskId:r.taskId,startedAt:r.startedAt,boundaryReason:t,status:"running",lastUserAt:void 0,lastAssistantAt:void 0}),Sn({forceReset:!0,persist:!1}),C?.setActiveRun(void 0),C?.setWorkerContext(void 0),Et("New task started."),Se(),qe?.postMessage({type:"start_new_task",taskId:r.taskId,...Is()}),ve?.controlRun({action:"new_task",reason:t}),$e("task_started",{taskId:r.taskId,reason:t,taskEpoch:o})}function wc(e){if(!f)return;let t=e?.reason||"manual_end_task";if(Oo=void 0,Po=void 0,_s=0,er=!1,nn=0,rn=!1,Si(),Z){let o=Z.getActiveTask();o&&Z.dispatch(o.taskId,{type:"CANCEL",reason:t})}let n=f.pendingRun?.id,r=co({type:"terminal",terminal:"ended",reason:t,at:Date.now()},{syncShared:!1,persist:!1,rotateBoundary:!1});r&&(n&&(ao(n),qe?.postMessage({type:"cancel_run",runId:n}),oo(n,t,{attemptImmediately:!0}),ve?.controlRun({action:"cancel",runId:n,reason:t}),C?.releaseWorkflowLock(n)),Nt(void 0),De=ro(),f.workerState=void 0,f.taskTabScope=void 0,Sn({forceReset:!0,persist:!1}),Jn(),mt&&(clearTimeout(mt),mt=null),Y?.setRunning(!1),Y?.setQuestionPrompt(void 0),hn(),Et("Task ended. Start a new task to continue."),ve?.controlRun({action:"end_task",runId:n,reason:t}),C?.endTask(t),C?.setActiveRun(void 0),C?.setWorkerContext(void 0),Se(),et({kind:"info",title:"Task ended",detail:"Start a new task when you are ready.",status:"info"}),$e("task_ended",{taskId:r.taskId,reason:t,endedAt:r.endedAt}))}function Cu(){return{mode:gt,runtimeId:Xe,runtimeState:f?Eu(f):null,sharedState:C?.getState()||null,pendingTaskSuggestion:Zr}}function Nu(e,t){let n=Ov(e);if(!Qr||!Ge||!qe){Ga.push({def:n,handler:t});return}nh({def:n,handler:t})}function JT(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 ZT={sanitizeWorkerState:In,cloneRuntimeStateForCheckpoint:Eu,getPersistGovernorConfig:()=>({minPersistIntervalMs:Kl,maxCoalesceDelayMs:kh}),getTelemetryFastLaneEvents:()=>Array.from(Xp.values())};function Ph(){let e=window,t=e.rover,n=((r,...o)=>{let s=JT(r),i=s?n[s]:void 0;if(typeof i=="function")return i(...o)});if(n.boot=ki,n.init=Iu,n.update=fc,n.shutdown=pc,n.open=Ai,n.close=Ec,n.show=Su,n.hide=Ru,n.send=Au,n.newTask=Ci,n.endTask=wc,n.getState=Cu,n.registerTool=Nu,n.on=Yp,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(!Qr){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-site-key-id");c&&(i.siteKeyId=c);let l=r.getAttribute("data-worker-url");l&&(i.workerUrl=l),ki(i)}}}}Ph();return Qh(e_);})();
|