@rtrvr-ai/rover 2.3.0 → 3.0.1
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 +229 -0
- package/dist/embed.js +17 -15
- package/dist/index.d.ts +44 -3
- package/dist/previewBootstrap.d.ts +27 -0
- package/dist/previewBootstrap.js +203 -0
- package/dist/rolls-cli.mjs +312 -0
- package/dist/rover.js +17 -15
- package/dist/worker/rover-worker.js +1 -1
- package/package.json +11 -1
|
@@ -7,7 +7,7 @@ Slide 1: ${t}
|
|
|
7
7
|
|
|
8
8
|
Slide 2: Key points
|
|
9
9
|
|
|
10
|
-
Slide 3: Summary`,r=a||`${e==="doc"?"Google Doc":"Google Slides"} generation fell back to in-memory draft.`;return{output:[n],generatedContentRef:{type:`${e}_draft`,title:o,content:n,degraded:!0,fallback_mode:"memory"},warnings:[r]}}async function mr({userInput:e,toolArgs:t,tabOrder:a,plannerPrevSteps:o,files:n,trajectoryId:r,onStatusUpdate:s,agentLog:c,ctx:i,driveAuthToken:u}){if(s?.("Generating doc...","Calling google_doc_generator","execute"),!u)return oa("google_doc_generator",["authToken"]);let l=await i.getPageData(a[0]),d={siteId:i.siteId,userInput:e,agentLog:{prevSteps:c?.prevSteps||[],chatLog:c?.chatLog||[]},webPageMap:{[a[0]]:l},tabOrder:a,outputDestination:t?.output_destination||t?.outputDestination,plannerPrevSteps:o,llmIntegration:i.llmIntegration,apiMode:i.apiMode,apiToolsConfig:i.apiToolsConfig,authToken:u||"",timestamp:i.userTimestamp,trajectoryId:r,userProfile:i.userProfile,files:n},m;try{m=await ye(i,Z.googleDocGenerator,d)}catch(f){if(xn(f)){let C=J(f);return vn("doc",e,C.message)}let k=J(f,"google_doc_generator failed");return{output:vt(k),error:k.message,errorDetails:k,warnings:k.message?[k.message]:void 0}}return{output:m.data?.llmOutput||m.data?.generatedContentRef,generatedContentRef:m.data?.generatedContentRef,error:m.data?.error,errorDetails:m.data?.errorDetails,creditsUsed:m.data?.creditsUsed,warnings:m.data?.warnings}}async function pr({userInput:e,toolArgs:t,tabOrder:a,plannerPrevSteps:o,files:n,trajectoryId:r,onStatusUpdate:s,agentLog:c,ctx:i,driveAuthToken:u}){if(s?.("Generating slides...","Calling google_slides_generator","execute"),!u)return oa("google_slides_generator",["authToken"]);let l=await i.getPageData(a[0]),d={siteId:i.siteId,userInput:e,agentLog:{prevSteps:c?.prevSteps||[],chatLog:c?.chatLog||[]},webPageMap:{[a[0]]:l},tabOrder:a,outputDestination:t?.output_destination||t?.outputDestination,plannerPrevSteps:o,llmIntegration:i.llmIntegration,apiMode:i.apiMode,apiToolsConfig:i.apiToolsConfig,authToken:u||"",timestamp:i.userTimestamp,trajectoryId:r,userProfile:i.userProfile,files:n},m;try{m=await ye(i,Z.googleSlidesGenerator,d)}catch(f){if(xn(f)){let C=J(f);return vn("slides",e,C.message)}let k=J(f,"google_slides_generator failed");return{output:vt(k),error:k.message,errorDetails:k,warnings:k.message?[k.message]:void 0}}return{output:m.data?.llmOutput||m.data?.generatedContentRef,generatedContentRef:m.data?.generatedContentRef,error:m.data?.error,errorDetails:m.data?.errorDetails,creditsUsed:m.data?.creditsUsed,warnings:m.data?.warnings}}async function fr({userInput:e,toolArgs:t,tabOrder:a,plannerPrevSteps:o,files:n,trajectoryId:r,onStatusUpdate:s,agentLog:c,ctx:i}){s?.("Generating webpage...","Calling webpage_generator","execute");let u=await i.getPageData(a[0]),l={siteId:i.siteId,userInput:e,agentLog:{prevSteps:c?.prevSteps||[],chatLog:c?.chatLog||[]},webPageMap:{[a[0]]:u},tabOrder:a,plannerPrevSteps:o,llmIntegration:i.llmIntegration,apiMode:i.apiMode,apiToolsConfig:i.apiToolsConfig,authToken:"",timestamp:i.userTimestamp,trajectoryId:r,userProfile:i.userProfile,files:n,outputDestination:t?.output_destination||t?.outputDestination},d=await ye(i,Z.webpageGenerator,l);return d?.success?{output:d.data?.llmOutput||d.data?.generatedContentRef,generatedContentRef:d.data?.generatedContentRef,error:d.data?.error,errorDetails:d.data?.errorDetails,creditsUsed:d.data?.creditsUsed,warnings:d.data?.warnings}:{error:d?.error||"webpage_generator failed"}}async function gr({userInput:e,toolArgs:t,tabOrder:a,plannerPrevSteps:o,files:n,trajectoryId:r,onStatusUpdate:s,agentLog:c,ctx:i,driveAuthToken:u}){if(s?.("Filling PDF...","Calling pdf_filler","execute"),!u)return oa("pdf_filler",["authToken"]);let l=await i.getPageData(a[0]),d={siteId:i.siteId,userInput:e,agentLog:{prevSteps:c?.prevSteps||[],chatLog:c?.chatLog||[]},webPageMap:{[a[0]]:l},tabOrder:a,plannerPrevSteps:o,llmIntegration:i.llmIntegration,apiMode:i.apiMode,apiToolsConfig:i.apiToolsConfig,authToken:u||"",timestamp:i.userTimestamp,trajectoryId:r,userProfile:i.userProfile,files:n,outputDestination:t?.output_destination||t?.outputDestination},m=await ye(i,Z.pdfFiller,d);return m?.success?{output:m.data?.llmOutput||m.data?.generatedContentRef,generatedContentRef:m.data?.generatedContentRef,error:m.data?.error,errorDetails:m.data?.errorDetails,creditsUsed:m.data?.creditsUsed,warnings:m.data?.warnings}:{error:m?.error||"pdf_filler failed"}}async function hr({userInput:e,plannerPrevSteps:t,files:a,trajectoryId:o,onStatusUpdate:n,agentLog:r,ctx:s}){n?.("Generating custom tool...","Calling custom_tool_generator","execute");let c={siteId:s.siteId,userInput:e,plannerPrevSteps:t,agentLog:{prevSteps:r?.prevSteps||[],chatLog:r?.chatLog||[]},llmIntegration:s.llmIntegration,apiMode:s.apiMode,apiToolsConfig:s.apiToolsConfig,authToken:"",timestamp:s.userTimestamp,trajectoryId:o,userProfile:s.userProfile,files:a},i=await ye(s,Z.customToolGenerator,c);return i?.success?{output:i.data?.generatedTools||i.data?.output||i.data,generatedTools:i.data?.generatedTools,error:i.data?.error,errorDetails:i.data?.errorDetails,creditsUsed:i.data?.creditsUsed,warnings:i.data?.warnings}:{error:i?.error||"custom_tool_generator failed"}}var _n=15,ra=12;function Tn(e){if(!Array.isArray(e)||!e.length)return[];let t=e.map(s=>({role:s?.role==="user"?"user":"model",message:String(s?.message||"").replace(/\s+/g," ").trim()})).filter(s=>!!s.message),a=[];for(let s of t){let c=a[a.length-1];c&&c.role===s.role&&c.message===s.message||a.push(s)}let o=a.slice(-ra),n=new Set,r=[];for(let s=o.length-1;s>=0;s-=1){let c=o[s],i=`${c.role}::${c.message.toLowerCase()}`;n.has(i)||(n.add(i),r.push(c))}return o=r.reverse(),o.length>ra&&(o=o.slice(-ra)),o}async function br(e){let{userInput:t,tabs:a,scopedTabIds:o,seedTabId:n,getScopedTabRuntimeContext:r,previousMessages:s=[],trajectoryId:c,previousSteps:i=[],files:u,continuePlanning:l=!1,recordingContext:d,driveAuthToken:m,agentLog:f,lastToolPreviousSteps:k,ctx:C,bridgeRpc:x,functionDeclarations:R}=e,N=r?.()||{},v=N.scopedTabIds??o,O=N.seedTabId??n,_=Array.isArray(a)&&a.length?a:[{id:1}],D=await fe(x,_,{scopedTabIds:v,seedTabId:O}),P=D.tabOrder.length?D.tabOrder:_.map(E=>E.id),F=D.activeTabId,S=D.tabMetaById,U={},I=async(E,j)=>{try{return await C.getPageData(E,{onlyTextContent:!1,...j?.allowExternalFetch?{__roverAllowExternalFetch:!0}:{},...j?.allowExternalFetch?{__roverExternalIntent:"auto"}:{},...j?.allowExternalFetch?{__roverExternalMessage:t}:{}})}catch{let T=S[E];return{url:T?.url||"",title:T?.title||(T?.external?"External Tab (Inaccessible)":""),content:"",contentType:"text/html"}}};U[F]=await I(F,{allowExternalFetch:!0});let p=P.filter(E=>E!==F),h=await Promise.all(p.map(async E=>({tabId:E,pageData:await I(E)})));for(let{tabId:E,pageData:j}of h)U[E]=j;let y=f?.chatLog?.length?Tn(f.chatLog):Tn(s.filter(E=>E.role==="user"||E.role==="assistant").map(E=>({role:E.role==="user"?"user":"model",message:E.content}))),g={siteId:C.siteId,userInput:t,webPageMap:Object.keys(U).length?U:void 0,tabOrder:P,recordingContext:d,previousSteps:i,lastToolPreviousSteps:k,chatLog:y.length?y:void 0,llmIntegration:C.llmIntegration,apiMode:C.apiMode,apiToolsConfig:C.apiToolsConfig,files:u,userFunctionDeclarations:R,authToken:m||"",timestamp:C.userTimestamp,continuePlanning:l,trajectoryId:c,userProfile:C.userProfile},b=await C.callExtensionRouter(Z.plan,g);if(!b?.success)return{taskComplete:!1,error:b?.error||"Planner failed"};let A=b.data;return{plan:A.plan,questions:A.questions,taskComplete:A.taskComplete||!1,modelParts:A.modelParts,overallThought:A.overallThought,accTreeIds:A.accTreeIds,error:A.error,errorDetails:A.errorDetails,warnings:A.warnings,userUsageData:A.userUsageData||{creditsUsed:A.creditsUsed||0}}}async function _t(e,t=[],a=0){if(a>=_n)return{response:{taskComplete:!1,error:`Max planner recursion depth reached (${_n})`},toolResults:t,completedWorkflow:void 0,previousSteps:e.previousSteps||[]};if(e.ctx.isCancelled?.())return{response:{taskComplete:!1,error:"Run cancelled"},toolResults:t,completedWorkflow:void 0,previousSteps:e.previousSteps||[]};let o=e.previousSteps||[],n=e.lastToolPreviousSteps||e.agentLog?.prevSteps,r=await br({...e,previousSteps:o,ctx:e.ctx,functionDeclarations:e.functionDeclarations});if(r.questions&&r.questions.length>0){e.onStatusUpdate?.("Planner needs more input",r.overallThought,"verify");let s={modelParts:r.modelParts,thought:r.overallThought,questionsAsked:r.questions};return o=[...o,s],e.onPlannerHistoryUpdate?.(o),{response:r,toolResults:t,completedWorkflow:void 0,previousSteps:o}}if(r.plan&&!r.error){let s=r.plan;e.onStatusUpdate?.(`Planner selected ${s.toolName}`,s.thought??r.overallThought,"execute");let c=s.serverResult,i=c?{output:c.success?c.data:void 0,error:c.success?void 0:c.error||"Server-side execution failed"}:await Se({...e,toolName:s.toolName,toolArgs:s.parameters,plannerPrevSteps:o,agentLog:{prevSteps:n||e.agentLog?.prevSteps,chatLog:e.agentLog?.chatLog},ctx:e.ctx,bridgeRpc:e.bridgeRpc,functionDeclarations:e.functionDeclarations,onPrevStepsUpdate:e.onPrevStepsUpdate});t.push(i),i.prevSteps?.length&&(n=i.prevSteps,e.onPrevStepsUpdate?.(i.prevSteps));let l=Qt(r.modelParts)[0],d={modelParts:r.modelParts,thought:s.thought??r.overallThought,toolCall:{name:s.toolName,args:l?ft({...s.parameters},l):s.parameters},textOutput:i.output,error:i.error,schemaHeaderSheetInfo:i.schemaHeaderSheetInfo,generatedContentRef:i.generatedContentRef,lastToolPreviousSteps:i.prevSteps};return o=[...o,d],e.onPlannerHistoryUpdate?.(o),i.error&&!r.taskComplete?_t({...e,previousSteps:o,lastToolPreviousSteps:n||e.lastToolPreviousSteps,continuePlanning:!0},t,a+1):!r.taskComplete&&!i.error?_t({...e,previousSteps:o,lastToolPreviousSteps:n||e.lastToolPreviousSteps,continuePlanning:!0},t,a+1):{response:r,toolResults:t,completedWorkflow:void 0,previousSteps:o}}if(r.taskComplete){e.onStatusUpdate?.("Planner marked task complete",r.overallThought,"complete");let s={modelParts:r.modelParts,thought:r.overallThought||"Task completed"};return o=[...o,s],e.onPlannerHistoryUpdate?.(o),{response:r,toolResults:t,completedWorkflow:void 0,previousSteps:o}}return{response:r,toolResults:t,completedWorkflow:void 0,previousSteps:o}}var ce;(function(e){e.Act="actOnTab",e.Crawl="crawlWebPages",e.Extract="extractToSheets",e.PdfFiller="fillPdfForms",e.CreateCustomTool="createCustomTool",e.CreateWebPage="createWebPage",e.CreateGoogleDoc="createGoogleDoc",e.CreateGoogleSlides="createGoogleSlides"})(ce||(ce={}));var Sn=new Set(Object.values(ce)),In={[ce.Act]:M.ACT,[ce.Crawl]:M.CRAWL,[ce.Extract]:M.EXTRACT,[ce.PdfFiller]:M.PDF_FILLER,[ce.CreateCustomTool]:M.CUSTOM_TOOL_GENERATOR,[ce.CreateWebPage]:M.WEBPAGE_GENERATOR,[ce.CreateGoogleDoc]:M.GOOGLE_DOC_GENERATOR,[ce.CreateGoogleSlides]:M.GOOGLE_SLIDES_GENERATOR};function Rn(e){let t=kr(e),a=e,o=[...t].sort((n,r)=>r.startIndex-n.startIndex);for(let n of o)a=a.slice(0,n.startIndex)+a.slice(n.endIndex);return a=a.replace(/\s+/g," ").trim(),{originalMessage:e,cleanedMessage:a,functionCalls:t,hasOnlyFunctionCalls:a===""}}function kr(e){let t=[],a=/@([\w.]+)\s*\(/g,o;for(;o=a.exec(e);){let n=o.index,r=o[1],{endIndex:s,paramsString:c}=wr(e,n+o[0].length);if(s!==-1){let i=xr(c);t.push({functionName:r,parameters:i,rawExpression:e.substring(n,s+1),startIndex:n,endIndex:s+1}),a.lastIndex=s+1}}return t}function yr(e){return Sn.has(e)}function wr(e,t){let a=1,o=!1,n=!1,r=!1,s=t;for(;s<e.length&&a>0;){let c=e[s];if(r){r=!1,s++;continue}c==="\\"&&(o||n)?r=!0:c==='"'&&!o?n=!n:c==="'"&&!n?o=!o:!o&&!n&&(c==="("?a++:c===")"&&a--),s++}return a===0?{endIndex:s-1,paramsString:e.substring(t,s-1).trim()}:{endIndex:-1,paramsString:""}}function xr(e){if(!e)return{};let t={},a=vr(e);for(let o of a){let n=o.indexOf("=");if(n===-1)t.prompt=En(o.trim());else{let r=o.substring(0,n).trim(),s=o.substring(n+1).trim();t[r]=En(s)}}return t}function vr(e){let t=[],a="",o=!1,n=!1,r=0,s=0,c=!1;for(let i=0;i<e.length;i++){let u=e[i];if(c){a+=u,c=!1;continue}if(u==="\\"){c=!0,a+=u;continue}if(u==='"'&&!o?n=!n:u==="'"&&!n&&(o=!o),!o&&!n){if(u==="(")r++;else if(u===")")r--;else if(u==="[")s++;else if(u==="]")s--;else if(u===","&&r===0&&s===0){t.push(a.trim()),a="";continue}}a+=u}return a.trim()&&t.push(a.trim()),t}function En(e){if(!e)return"";if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return e.slice(1,-1).replace(/\\"/g,'"').replace(/\\'/g,"'");if(e.startsWith("[")||e.startsWith("{"))try{return JSON.parse(e)}catch{}return/^-?\d+(\.\d+)?$/.test(e)?parseFloat(e):e.toLowerCase()==="true"?!0:e.toLowerCase()==="false"?!1:e}function An(e,t){if(yr(e))return{isValid:!0,isRequired:!0,isUserDefined:!1,isMcp:!1,mappedFunction:In[e]};if(t[e]){let o=t[e];return{isValid:!0,isRequired:!1,isUserDefined:!o.mcpUrl,isMcp:!!o.mcpUrl,functionDef:o}}let a=Object.entries(t).find(([o,n])=>n.mcpUrl?o.split(".").pop()===e:!1);if(a){let[,o]=a;return{isValid:!0,isRequired:!1,isUserDefined:!1,isMcp:!0,functionDef:o}}return{isValid:!1,isRequired:!1,isUserDefined:!1,isMcp:!1,error:`Function "${e}" not found`}}function Cn(e,t){if(!t||!t.parameters)return e;let a={};for(let[o,n]of Object.entries(e)){let r=t.parameters?.[o];if(!r||!r.type){a[o]=n;continue}switch(r.type){case"number":case"integer":{let s=Number(n);a[o]=Number.isFinite(s)?s:n;break}case"boolean":{typeof n=="boolean"?a[o]=n:typeof n=="string"?a[o]=n.toLowerCase()==="true":a[o]=!!n;break}case"array":{if(Array.isArray(n))a[o]=n;else if(typeof n=="string")try{let s=JSON.parse(n);a[o]=Array.isArray(s)?s:[s]}catch{a[o]=[n]}else a[o]=[n];break}case"object":{if(typeof n=="object")a[o]=n;else if(typeof n=="string")try{a[o]=JSON.parse(n)}catch{a[o]={value:n}}else a[o]={value:n};break}default:a[o]=n}}return a}var _r=new Set(["same_tab_scheduled","same_host_navigated","subdomain_navigated","new_tab_opened","switch_tab"]);function Ee(e){let t=String(e.navigationOutcome||"").trim().toLowerCase(),a=String(e.navigationMode||"").trim().toLowerCase(),o=e.navigationPending===!0,n=t==="same_tab_scheduled"||o&&!t&&a==="same_tab",r=o||_r.has(t);return{isNavigationProgress:r,isSameTabHandoff:n,continuationReason:r?n?"same_tab_navigation_handoff":"loop_continue":null,normalizedOutcome:t,normalizedMode:a}}var Tr=["extract","compare","list","across","multiple","many","report","document","spreadsheet","sheet","table","csv","json","pdf","slides"];function St(e){return $e(e)}function It(e){return Na(e)}function Sr(e,t){let a=String(t?.find(r=>typeof r?.url=="string"&&String(r.url||"").trim())?.url||""),o=It(St(a));if(!o)return!1;let n=String(e||"").match(/https?:\/\/[^\s)]+/g)||[];return n.length?n.some(r=>{let s=It(St(r));return!!s&&s!==o}):!1}function Dn(e,t){let a=String(t?.find(s=>typeof s?.url=="string"&&String(s.url||"").trim())?.url||""),o=It(St(a)),n=String(e||"").match(/https?:\/\/[^\s)]+/g)||[];if(!n.length||!o)return 0;let r=new Set;for(let s of n){let c=It(St(s));!c||c===o||r.add(c)}return r.size}function On(e){let t=String(e||"").toLowerCase();return t?(t.match(/\b(first|second|third|then|after that|next|finally)\b/g)||[]).length>=2||(t.match(/\bstep\s*[1-9]\b/g)||[]).length>=2||(t.match(/\b\d+\.\s+/g)||[]).length>=2:!1}function Tt(e){let t=String(e||"").toLowerCase().trim();if(!t)return 0;let a=0,o=new Set((t.match(/\b(click|open|go|navigate|fill|type|submit|extract|find|search|compare|summarize|collect|download|upload|create|generate|report)\b/g)||[]).map(r=>r.toLowerCase()));t.length>120&&(a+=1),o.size>=2&&(a+=1),(t.match(/\b(and then|then|after|next|finally|first|second|third)\b/g)||[]).length>=1&&(a+=2),(t.match(/\b(extract|compare|list|all|each|every|across|multiple|many)\b/g)||[]).length>=2&&(a+=2),/https?:\/\/|www\./.test(t)&&(a+=2),(t.match(/\b(report|document|doc|spreadsheet|sheet|table|csv|json|pdf|slides|summary)\b/g)||[]).length>=1&&(a+=2);for(let r of Tr)t.includes(r)&&(a+=.25);let n=t.split(/\s+/).filter(Boolean);return/^(click|type|fill|open|go to|scroll|press|select)\b/.test(t)&&n.length<=10&&(a=Math.max(0,a-2)),Math.max(0,Math.min(10,Math.round(a)))}function Ir(e,t){let a=t.taskRouting?.mode||"act";if(a==="planner")return{mode:"planner",reason:"Configured planner mode"};if(a==="act")return{mode:"act",reason:"Configured act mode"};if(Array.isArray(t.previousSteps)&&t.previousSteps.some(c=>Array.isArray(c?.questionsAsked)&&c.questionsAsked.length>0&&!(c?.userAnswers&&Object.keys(c.userAnswers).length>0)))return{mode:"planner",score:Tt(e),reason:"Forced planner due to awaiting_user continuation chain."};if(On(e))return{mode:"planner",score:Tt(e),reason:"Forced planner due to multi-step dependency markers in prompt."};let n=Dn(e,t.tabs||[]);if(n>1)return{mode:"planner",score:Tt(e),reason:`Forced planner due to ${n} cross-domain dependencies.`};let r=Tt(e),s=Math.max(3,Math.min(10,Number(t.taskRouting?.actHeuristicThreshold)||7));return r>=s?{mode:"planner",score:r,reason:`Complexity score ${r} >= ${s}`}:{mode:"act",score:r,reason:`Complexity score ${r} < ${s}`}}function Er(e){if(!e||typeof e!="object"||e.error)return!1;let t=r=>Array.isArray(r)?r.length>0:r&&typeof r=="object"?Object.keys(r).length>0:typeof r=="string"?r.trim().length>0:r!=null;if(t(e.data)||Ee({navigationPending:e.navigationPending,navigationOutcome:e.navigationOutcome,navigationMode:e.navigation}).isNavigationProgress||e.needsUserInput===!0)return!0;let o=e.output;return o?typeof o=="string"?o.trim().length>0:typeof o!="object"?t(o):o.success===!1||o.error?!1:!!(Ee({navigationPending:o.navigationPending,navigationOutcome:o.navigationOutcome,navigationMode:o.navigation}).isNavigationProgress||o.needsUserInput===!0||o.waitingForUserInput===!0||Array.isArray(o.questions)&&o.questions.length>0||String(o.taskStatus||"").trim().toLowerCase()==="in_progress"||o.taskComplete===!0||t(o.data)||typeof o.response=="string"&&String(o.response||"").trim()||t(o)):!1}async function Rr(e){let{message:t,toolFunctions:a}=e,o=Rn(t),n=[];if(o.functionCalls.length===0)return{processedMessage:t,executedFunctions:[],shouldRunPlanner:!0};let r=o.functionCalls.map(l=>({call:l,validation:An(l.functionName,a||{})})),s=r.filter(l=>!l.validation.isValid);if(s.length>0)return{processedMessage:o.cleanedMessage,executedFunctions:[],shouldRunPlanner:!1,error:s.map(l=>l.validation.error).join("; ")};let c=r.every(l=>l.validation.isRequired),i=r.every(l=>l.validation.isUserDefined||l.validation.isMcp);if(o.hasOnlyFunctionCalls&&(c||i)){for(let{call:l,validation:d}of r)if(d.isRequired&&d.mappedFunction){let m={user_input:l.parameters.prompt||l.parameters.user_input||l.parameters.task_instruction||"",...l.parameters},f=await Se({...e,toolName:d.mappedFunction,toolArgs:m,userInput:m.user_input,tabs:e.tabs,trajectoryId:e.trajectoryId,plannerPrevSteps:e.previousSteps,agentLog:e.agentLog,ctx:e.ctx,bridgeRpc:e.bridgeRpc,functionDeclarations:e.functionDeclarations,onPrevStepsUpdate:e.onPrevStepsUpdate});n.push({name:l.functionName,parameters:l.parameters,result:f.output,error:f.error,isRequired:!0,prevSteps:f.prevSteps})}else if(d.functionDef)try{let m=Cn(l.parameters,d.functionDef),f=await e.bridgeRpc("executeClientTool",{name:l.functionName,args:m});n.push({name:l.functionName,parameters:m,result:f,isRequired:!1})}catch(m){n.push({name:l.functionName,parameters:l.parameters,error:m?.message||String(m),isRequired:!1})}return{processedMessage:o.cleanedMessage,executedFunctions:n,shouldRunPlanner:!1}}return{processedMessage:t,executedFunctions:[],shouldRunPlanner:!0}}async function jn(e,t){t.onStatusUpdate?.("Analyzing request",e,"analyze");let a=await Rr({...t,message:e});if(a.error)return{success:!1,processedMessage:a.processedMessage,error:a.error};if(a.executedFunctions.length>0&&!a.shouldRunPlanner)return{success:!0,processedMessage:a.processedMessage,executedFunctions:a.executedFunctions};if(a.shouldRunPlanner){let o=Ir(e,t);t.onStatusUpdate?.(`Route selected: ${o.mode}`,o.reason,"route");let n=t.agentLog?.prevSteps;if(o.mode==="act"){t.onStatusUpdate?.("Executing action plan","Using ACT tool loop","execute");let c=Date.now(),i=await Se({...t,toolName:M.ACT,toolArgs:{user_input:e},userInput:e,tabs:t.tabs,trajectoryId:t.trajectoryId,plannerPrevSteps:t.previousSteps,agentLog:t.agentLog,ctx:t.ctx,bridgeRpc:t.bridgeRpc,functionDeclarations:t.functionDeclarations,onPrevStepsUpdate:t.onPrevStepsUpdate});Array.isArray(i.prevSteps)&&i.prevSteps.length>0&&(n=i.prevSteps,t.onPrevStepsUpdate?.(n));let u=Date.now()-c,l=Array.isArray(i.prevSteps?.[i.prevSteps.length-1]?.functions)?i.prevSteps[i.prevSteps.length-1].functions.length:0,d=Array.isArray(i.prevSteps)?i.prevSteps.reduce((R,N)=>{let v=Array.isArray(N.functions)?N.functions.filter(O=>O?.response?.status==="Failure").length:0;return R+v},0):0,m=Sr(e,t.tabs||[]),f=Dn(e,t.tabs||[]),k=On(e);if(!(!Er(i)&&(!!i.error&&(t.taskRouting?.plannerOnActError??!0)&&t.taskRouting?.mode!=="act"||u>8e3||l>3||d>=2||f>1||m||k)))return{success:!i.error,processedMessage:a.processedMessage,directToolResult:i,route:o,error:i.error}}let r={...t,userInput:e,continuePlanning:!1,agentLog:{prevSteps:n||t.agentLog?.prevSteps,chatLog:t.agentLog?.chatLog},lastToolPreviousSteps:n||t.lastToolPreviousSteps,ctx:t.ctx,bridgeRpc:t.bridgeRpc,functionDeclarations:t.functionDeclarations,onPrevStepsUpdate:t.onPrevStepsUpdate,onPlannerHistoryUpdate:t.onPlannerHistoryUpdate},s=await _t(r,[]);return{success:!s.response.error,processedMessage:a.processedMessage,plannerResponse:s,route:o,error:s.response.error}}return{success:!0,processedMessage:a.processedMessage}}function Pn(e){return!e.resume&&!e.preserveHistory}var oe=[],$=null,te=null,Oe=new ot,ue=[],de=[],V,re="",Le=[],Rt="",he=crypto.randomUUID(),me=crypto.randomUUID(),le=[],Ne,Re=null,Ar=new Set(Object.values(M)),Q=null,se=new Set,Ue=null,ua="",Me=new Set,la="",je=new Map,Ct=3e4,Cr=9e4,Dr=2e4;function Or(e){let t=String(e?.ui?.agent?.name||"").trim();return t?t.slice(0,64):"Rover"}function jr(e){let t=String(e||"").trim();if(t)try{return new URL(t).hostname.toLowerCase()}catch{return}}function Pr(e){if(!(!e?.tools||Array.isArray(e.tools)))return e.tools.web}function zr(e){if(e&&(e.externalNavigationPolicy==="open_new_tab_notice"||e.externalNavigationPolicy==="block"||e.externalNavigationPolicy==="allow"))return e.externalNavigationPolicy}function Mr(e){let t=e.tabs.map((a,o)=>{if(!a.external&&a.accessMode!=="external_placeholder"&&a.accessMode!=="external_scraped")return;let n=a.accessMode==="external_scraped"?"external_scraped":"external_placeholder";return{tabId:o,host:jr(a.url),title:String(a.title||"").trim()||void 0,accessMode:n,reason:String(a.inaccessibleReason||"").trim()||void 0}}).filter(a=>!!a).slice(0,8);return{mode:"rover_embed",agentName:e.agentName,externalNavigationPolicy:e.externalNavigationPolicy,tabIdContract:"tree_index_mapped_by_tab_order",taskBoundaryId:e.taskBoundaryId,...t.length?{externalTabs:t}:{}}}function Nr(e,t){return t===void 0?e:Array.isArray(t)?t:Array.isArray(e)?{...t,client:t.client??e,web:{...t.web||{}}}:{...e,...t,client:t.client??e?.client,web:{...e?.web||{},...t.web||{}}}}function Ur(e,t){return t?{...e,...t,agent:{...e?.agent||{},...t.agent||{}}}:e}function Lr(e){let t=new Map;return e.onmessage=a=>{let o=a.data;if(!o||o.t!=="res")return;let n=t.get(o.id);n&&(t.delete(o.id),n(o))},async function(o,n){let r=crypto.randomUUID(),s=new Promise((c,i)=>{let u=setTimeout(()=>{t.delete(r),i(new Error(`RPC timeout: ${o} (${Ct}ms)`))},Ct);t.set(r,l=>{clearTimeout(u),l.ok?c(l.result):i(new Error(l.error?.message||"RPC error"))})});return e.postMessage({t:"req",id:r,method:o,params:n}),s}}async function qr(){if(!te)return{id:1};try{let e=await te("getTabContext");if(e&&typeof e=="object")return{id:Number(e.logicalTabId||e.id||1),url:e.url,title:e.title,external:!1,accessMode:"live_dom"}}catch{}try{let e=await te("getPageData");return{id:1,url:e?.url,title:e?.title,external:!1,accessMode:"live_dom"}}catch{return{id:1,external:!1,accessMode:"live_dom"}}}async function Fr(){if(!te)return[{id:1}];try{let e=await te("listSessionTabs");if(Array.isArray(e)&&e.length>0){let t=Date.now(),a=e.map(o=>{let n=Number(o?.logicalTabId||o?.id||0),r=!!o?.external;return{id:n,runtimeId:typeof o?.runtimeId=="string"?o.runtimeId:void 0,updatedAt:Number(o?.updatedAt)||0,detachedAt:Number(o?.detachedAt)||0,detachedReason:typeof o?.detachedReason=="string"?o.detachedReason:void 0,url:typeof o?.url=="string"?o.url:void 0,title:typeof o?.title=="string"?o.title:void 0,external:r,accessMode:o?.accessMode==="external_scraped"||o?.accessMode==="external_placeholder"?o.accessMode:r?"external_placeholder":"live_dom",inaccessibleReason:typeof o?.inaccessibleReason=="string"?o.inaccessibleReason:void 0}}).filter(o=>Number.isFinite(o.id)&&o.id>0).filter(o=>{let n=Math.max(Number(o.updatedAt)||0,Number(o.detachedAt)||0);return o.runtimeId?!0:o.external?t-n<=Cr:o.detachedReason==="opened_pending_attach"?t-n<=Dr:!1}).map(o=>({id:o.id,url:o.url,title:o.title,external:o.external,accessMode:o.accessMode,inaccessibleReason:o.inaccessibleReason}));if(a.length)return a}}catch{}return[await qr()]}function Hr(e,t,a){if(a)return a;let o=`${String(e||"")} ${String(t||"")}`.toLowerCase();return o.trim()?/route|routing|complexity/.test(o)?"route":/complete|completed|done|finished|task complete/.test(o)?"complete":/verify|validated|checking|question/.test(o)?"verify":/execute|executing|running|calling|processing|generating|filling|inferring|extracting/.test(o)?"execute":"analyze":"analyze"}function Gr(e,t){let a=String(t||e||"").trim();return a?a.length<=120?a:`${a.slice(0,119)}\u2026`:""}function ee(e,t,a){let o=Hr(e,t,a),n=Gr(e,t),r=Q?.runId||"no-run";if(r!=="no-run"&&se.has(r))return;let s=`${r}|${o}|${String(e||"").trim().toLowerCase()}|${n.toLowerCase()}`;if(!(s===ua||Me.has(s))){if(ua=s,Me.add(s),Me.size>60){let c=Array.from(Me).slice(-30);Me=new Set(c)}self.postMessage({type:"status",message:e,thought:t,stage:o,compactThought:n,runId:Q?.runId}),K()}}function $r(e){let t=Q?.runId||"no-run";if(t!=="no-run"&&se.has(t))return;let a=[t,e.hasExplicitScope?"1":"0",e.scopedTabIdsInput.join(","),e.listedTabIds.join(","),e.keptScopedTabIds.join(","),e.resolvedTabOrder.join(",")].join("|");a!==la&&(la=a,self.postMessage({type:"runtime_tabs_diagnostics",runId:Q?.runId,diagnostics:e}))}function et(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 Bn(e){return e.filter(t=>t?.role==="user").slice(-20).map(t=>({role:"user",content:String(t?.content??"")}))}function Pe(e){if(!Array.isArray(e))return[];if(e.length<=Ke.plannerHistory)return e.map(o=>et(o)).filter(o=>o!==void 0);let t=[e[0],...e.slice(-(Ke.plannerHistory-1))],a=[];for(let o of t){let n=et(o);n!==void 0&&a.push(n)}return a}function zn(e){if(!Array.isArray(e)||e.length===0)return;let t=[];for(let o=0;o<e.length;o+=1){let n=e[o]?.accTreeId;typeof n=="string"&&n.trim()&&t.push(o)}if(t.length<=3)return;let a=new Set([t[0],...t.slice(-2)]);for(let o of t)a.has(o)||delete e[o].accTreeId}function tt(e){if(!Array.isArray(e))return[];if(e.length<=Ke.prevSteps){let o=[];for(let n of e){let r=et(n);r&&typeof r=="object"&&o.push(r)}return zn(o),o}let t=[e[0],...e.slice(-(Ke.prevSteps-1))],a=[];for(let o of t){let n=et(o);n&&typeof n=="object"&&a.push(n)}return zn(a),a}function Wr(e,t){if(!e||typeof e!="object")return;let a=String(e.key||e.id||"").trim(),o=String(e.query||e.question||"").trim(),n=a||`clarification_${t+1}`;if(!o)return;let r=typeof e.required=="boolean",s=typeof e.optional=="boolean",c=r?!!e.required:s?!e.optional:!0;return{key:n,query:o,...typeof e.id=="string"&&e.id.trim()?{id:e.id.trim()}:{},...typeof e.question=="string"&&e.question.trim()?{question:e.question.trim()}:{},...Array.isArray(e.choices)?{choices:e.choices}:{},required:c}}function ae(e){if(!Array.isArray(e))return[];let t=[],a=new Set;for(let o=0;o<e.length;o+=1){let n=Wr(e[o],o);if(!n)continue;let r=`${n.key}::${n.query}`.toLowerCase();a.has(r)||(a.add(r),t.push(n))}return t.slice(0,6)}function Mn(e){return String(e.query||e.question||"").trim()}function Nn(e,t,a){let o=new Set(t.map(i=>i.key)),n={},r=Array.isArray(e?.keys)?e.keys.map(i=>String(i||"").trim()).filter(i=>!!i&&o.has(i)):[];if(e?.answersByKey&&typeof e.answersByKey=="object")for(let[i,u]of Object.entries(e.answersByKey)){if(!o.has(i))continue;let l=String(u||"").trim();l&&(n[i]=l)}let s=String(a||"").trim();if(Object.keys(n).length===0&&s)if(t.length===1)n[t[0].key]=s;else{let i=s.split(`
|
|
10
|
+
Slide 3: Summary`,r=a||`${e==="doc"?"Google Doc":"Google Slides"} generation fell back to in-memory draft.`;return{output:[n],generatedContentRef:{type:`${e}_draft`,title:o,content:n,degraded:!0,fallback_mode:"memory"},warnings:[r]}}async function mr({userInput:e,toolArgs:t,tabOrder:a,plannerPrevSteps:o,files:n,trajectoryId:r,onStatusUpdate:s,agentLog:c,ctx:i,driveAuthToken:u}){if(s?.("Generating doc...","Calling google_doc_generator","execute"),!u)return oa("google_doc_generator",["authToken"]);let l=await i.getPageData(a[0]),d={siteId:i.siteId,userInput:e,agentLog:{prevSteps:c?.prevSteps||[],chatLog:c?.chatLog||[]},webPageMap:{[a[0]]:l},tabOrder:a,outputDestination:t?.output_destination||t?.outputDestination,plannerPrevSteps:o,llmIntegration:i.llmIntegration,apiMode:i.apiMode,apiToolsConfig:i.apiToolsConfig,authToken:u||"",timestamp:i.userTimestamp,trajectoryId:r,userProfile:i.userProfile,files:n},m;try{m=await ye(i,Z.googleDocGenerator,d)}catch(f){if(xn(f)){let C=J(f);return vn("doc",e,C.message)}let k=J(f,"google_doc_generator failed");return{output:vt(k),error:k.message,errorDetails:k,warnings:k.message?[k.message]:void 0}}return{output:m.data?.llmOutput||m.data?.generatedContentRef,generatedContentRef:m.data?.generatedContentRef,error:m.data?.error,errorDetails:m.data?.errorDetails,creditsUsed:m.data?.creditsUsed,warnings:m.data?.warnings}}async function pr({userInput:e,toolArgs:t,tabOrder:a,plannerPrevSteps:o,files:n,trajectoryId:r,onStatusUpdate:s,agentLog:c,ctx:i,driveAuthToken:u}){if(s?.("Generating slides...","Calling google_slides_generator","execute"),!u)return oa("google_slides_generator",["authToken"]);let l=await i.getPageData(a[0]),d={siteId:i.siteId,userInput:e,agentLog:{prevSteps:c?.prevSteps||[],chatLog:c?.chatLog||[]},webPageMap:{[a[0]]:l},tabOrder:a,outputDestination:t?.output_destination||t?.outputDestination,plannerPrevSteps:o,llmIntegration:i.llmIntegration,apiMode:i.apiMode,apiToolsConfig:i.apiToolsConfig,authToken:u||"",timestamp:i.userTimestamp,trajectoryId:r,userProfile:i.userProfile,files:n},m;try{m=await ye(i,Z.googleSlidesGenerator,d)}catch(f){if(xn(f)){let C=J(f);return vn("slides",e,C.message)}let k=J(f,"google_slides_generator failed");return{output:vt(k),error:k.message,errorDetails:k,warnings:k.message?[k.message]:void 0}}return{output:m.data?.llmOutput||m.data?.generatedContentRef,generatedContentRef:m.data?.generatedContentRef,error:m.data?.error,errorDetails:m.data?.errorDetails,creditsUsed:m.data?.creditsUsed,warnings:m.data?.warnings}}async function fr({userInput:e,toolArgs:t,tabOrder:a,plannerPrevSteps:o,files:n,trajectoryId:r,onStatusUpdate:s,agentLog:c,ctx:i}){s?.("Generating webpage...","Calling webpage_generator","execute");let u=await i.getPageData(a[0]),l={siteId:i.siteId,userInput:e,agentLog:{prevSteps:c?.prevSteps||[],chatLog:c?.chatLog||[]},webPageMap:{[a[0]]:u},tabOrder:a,plannerPrevSteps:o,llmIntegration:i.llmIntegration,apiMode:i.apiMode,apiToolsConfig:i.apiToolsConfig,authToken:"",timestamp:i.userTimestamp,trajectoryId:r,userProfile:i.userProfile,files:n,outputDestination:t?.output_destination||t?.outputDestination},d=await ye(i,Z.webpageGenerator,l);return d?.success?{output:d.data?.llmOutput||d.data?.generatedContentRef,generatedContentRef:d.data?.generatedContentRef,error:d.data?.error,errorDetails:d.data?.errorDetails,creditsUsed:d.data?.creditsUsed,warnings:d.data?.warnings}:{error:d?.error||"webpage_generator failed"}}async function gr({userInput:e,toolArgs:t,tabOrder:a,plannerPrevSteps:o,files:n,trajectoryId:r,onStatusUpdate:s,agentLog:c,ctx:i,driveAuthToken:u}){if(s?.("Filling PDF...","Calling pdf_filler","execute"),!u)return oa("pdf_filler",["authToken"]);let l=await i.getPageData(a[0]),d={siteId:i.siteId,userInput:e,agentLog:{prevSteps:c?.prevSteps||[],chatLog:c?.chatLog||[]},webPageMap:{[a[0]]:l},tabOrder:a,plannerPrevSteps:o,llmIntegration:i.llmIntegration,apiMode:i.apiMode,apiToolsConfig:i.apiToolsConfig,authToken:u||"",timestamp:i.userTimestamp,trajectoryId:r,userProfile:i.userProfile,files:n,outputDestination:t?.output_destination||t?.outputDestination},m=await ye(i,Z.pdfFiller,d);return m?.success?{output:m.data?.llmOutput||m.data?.generatedContentRef,generatedContentRef:m.data?.generatedContentRef,error:m.data?.error,errorDetails:m.data?.errorDetails,creditsUsed:m.data?.creditsUsed,warnings:m.data?.warnings}:{error:m?.error||"pdf_filler failed"}}async function hr({userInput:e,plannerPrevSteps:t,files:a,trajectoryId:o,onStatusUpdate:n,agentLog:r,ctx:s}){n?.("Generating custom tool...","Calling custom_tool_generator","execute");let c={siteId:s.siteId,userInput:e,plannerPrevSteps:t,agentLog:{prevSteps:r?.prevSteps||[],chatLog:r?.chatLog||[]},llmIntegration:s.llmIntegration,apiMode:s.apiMode,apiToolsConfig:s.apiToolsConfig,authToken:"",timestamp:s.userTimestamp,trajectoryId:o,userProfile:s.userProfile,files:a},i=await ye(s,Z.customToolGenerator,c);return i?.success?{output:i.data?.generatedTools||i.data?.output||i.data,generatedTools:i.data?.generatedTools,error:i.data?.error,errorDetails:i.data?.errorDetails,creditsUsed:i.data?.creditsUsed,warnings:i.data?.warnings}:{error:i?.error||"custom_tool_generator failed"}}var _n=15,ra=12;function Tn(e){if(!Array.isArray(e)||!e.length)return[];let t=e.map(s=>({role:s?.role==="user"?"user":"model",message:String(s?.message||"").replace(/\s+/g," ").trim()})).filter(s=>!!s.message),a=[];for(let s of t){let c=a[a.length-1];c&&c.role===s.role&&c.message===s.message||a.push(s)}let o=a.slice(-ra),n=new Set,r=[];for(let s=o.length-1;s>=0;s-=1){let c=o[s],i=`${c.role}::${c.message.toLowerCase()}`;n.has(i)||(n.add(i),r.push(c))}return o=r.reverse(),o.length>ra&&(o=o.slice(-ra)),o}async function br(e){let{userInput:t,tabs:a,scopedTabIds:o,seedTabId:n,getScopedTabRuntimeContext:r,previousMessages:s=[],trajectoryId:c,previousSteps:i=[],files:u,continuePlanning:l=!1,recordingContext:d,driveAuthToken:m,agentLog:f,lastToolPreviousSteps:k,ctx:C,bridgeRpc:x,functionDeclarations:R}=e,N=r?.()||{},v=N.scopedTabIds??o,O=N.seedTabId??n,_=Array.isArray(a)&&a.length?a:[{id:1}],D=await fe(x,_,{scopedTabIds:v,seedTabId:O}),P=D.tabOrder.length?D.tabOrder:_.map(E=>E.id),F=D.activeTabId,S=D.tabMetaById,U={},I=async(E,j)=>{try{return await C.getPageData(E,{onlyTextContent:!1,...j?.allowExternalFetch?{__roverAllowExternalFetch:!0}:{},...j?.allowExternalFetch?{__roverExternalIntent:"auto"}:{},...j?.allowExternalFetch?{__roverExternalMessage:t}:{}})}catch{let T=S[E];return{url:T?.url||"",title:T?.title||(T?.external?"External Tab (Inaccessible)":""),content:"",contentType:"text/html"}}};U[F]=await I(F,{allowExternalFetch:!0});let p=P.filter(E=>E!==F),h=await Promise.all(p.map(async E=>({tabId:E,pageData:await I(E)})));for(let{tabId:E,pageData:j}of h)U[E]=j;let y=f?.chatLog?.length?Tn(f.chatLog):Tn(s.filter(E=>E.role==="user"||E.role==="assistant").map(E=>({role:E.role==="user"?"user":"model",message:E.content}))),g={siteId:C.siteId,userInput:t,webPageMap:Object.keys(U).length?U:void 0,tabOrder:P,recordingContext:d,previousSteps:i,lastToolPreviousSteps:k,chatLog:y.length?y:void 0,llmIntegration:C.llmIntegration,apiMode:C.apiMode,apiToolsConfig:C.apiToolsConfig,files:u,userFunctionDeclarations:R,authToken:m||"",timestamp:C.userTimestamp,continuePlanning:l,trajectoryId:c,userProfile:C.userProfile},b=await C.callExtensionRouter(Z.plan,g);if(!b?.success)return{taskComplete:!1,error:b?.error||"Planner failed"};let A=b.data;return{plan:A.plan,questions:A.questions,taskComplete:A.taskComplete||!1,modelParts:A.modelParts,overallThought:A.overallThought,accTreeIds:A.accTreeIds,error:A.error,errorDetails:A.errorDetails,warnings:A.warnings,userUsageData:A.userUsageData||{creditsUsed:A.creditsUsed||0}}}async function _t(e,t=[],a=0){if(a>=_n)return{response:{taskComplete:!1,error:`Max planner recursion depth reached (${_n})`},toolResults:t,completedWorkflow:void 0,previousSteps:e.previousSteps||[]};if(e.ctx.isCancelled?.())return{response:{taskComplete:!1,error:"Run cancelled"},toolResults:t,completedWorkflow:void 0,previousSteps:e.previousSteps||[]};let o=e.previousSteps||[],n=e.lastToolPreviousSteps||e.agentLog?.prevSteps,r=await br({...e,previousSteps:o,ctx:e.ctx,functionDeclarations:e.functionDeclarations});if(r.questions&&r.questions.length>0){e.onStatusUpdate?.("Planner needs more input",r.overallThought,"verify");let s={modelParts:r.modelParts,thought:r.overallThought,questionsAsked:r.questions};return o=[...o,s],e.onPlannerHistoryUpdate?.(o),{response:r,toolResults:t,completedWorkflow:void 0,previousSteps:o}}if(r.plan&&!r.error){let s=r.plan;e.onStatusUpdate?.(`Planner selected ${s.toolName}`,s.thought??r.overallThought,"execute");let c=s.serverResult,i=c?{output:c.success?c.data:void 0,error:c.success?void 0:c.error||"Server-side execution failed"}:await Se({...e,toolName:s.toolName,toolArgs:s.parameters,plannerPrevSteps:o,agentLog:{prevSteps:n||e.agentLog?.prevSteps,chatLog:e.agentLog?.chatLog},ctx:e.ctx,bridgeRpc:e.bridgeRpc,functionDeclarations:e.functionDeclarations,onPrevStepsUpdate:e.onPrevStepsUpdate});t.push(i),i.prevSteps?.length&&(n=i.prevSteps,e.onPrevStepsUpdate?.(i.prevSteps));let l=Qt(r.modelParts)[0],d={modelParts:r.modelParts,thought:s.thought??r.overallThought,toolCall:{name:s.toolName,args:l?ft({...s.parameters},l):s.parameters},textOutput:i.output,error:i.error,schemaHeaderSheetInfo:i.schemaHeaderSheetInfo,generatedContentRef:i.generatedContentRef,lastToolPreviousSteps:i.prevSteps};return o=[...o,d],e.onPlannerHistoryUpdate?.(o),i.error&&!r.taskComplete?_t({...e,previousSteps:o,lastToolPreviousSteps:n||e.lastToolPreviousSteps,continuePlanning:!0},t,a+1):!r.taskComplete&&!i.error?_t({...e,previousSteps:o,lastToolPreviousSteps:n||e.lastToolPreviousSteps,continuePlanning:!0},t,a+1):{response:r,toolResults:t,completedWorkflow:void 0,previousSteps:o}}if(r.taskComplete){e.onStatusUpdate?.("Planner marked task complete",r.overallThought,"complete");let s={modelParts:r.modelParts,thought:r.overallThought||"Task completed"};return o=[...o,s],e.onPlannerHistoryUpdate?.(o),{response:r,toolResults:t,completedWorkflow:void 0,previousSteps:o}}return{response:r,toolResults:t,completedWorkflow:void 0,previousSteps:o}}var ce;(function(e){e.Act="actOnTab",e.Crawl="crawlWebPages",e.Extract="extractToSheets",e.PdfFiller="fillPdfForms",e.CreateCustomTool="createCustomTool",e.CreateWebPage="createWebPage",e.CreateGoogleDoc="createGoogleDoc",e.CreateGoogleSlides="createGoogleSlides"})(ce||(ce={}));var Sn=new Set(Object.values(ce)),In={[ce.Act]:M.ACT,[ce.Crawl]:M.CRAWL,[ce.Extract]:M.EXTRACT,[ce.PdfFiller]:M.PDF_FILLER,[ce.CreateCustomTool]:M.CUSTOM_TOOL_GENERATOR,[ce.CreateWebPage]:M.WEBPAGE_GENERATOR,[ce.CreateGoogleDoc]:M.GOOGLE_DOC_GENERATOR,[ce.CreateGoogleSlides]:M.GOOGLE_SLIDES_GENERATOR};function Rn(e){let t=kr(e),a=e,o=[...t].sort((n,r)=>r.startIndex-n.startIndex);for(let n of o)a=a.slice(0,n.startIndex)+a.slice(n.endIndex);return a=a.replace(/\s+/g," ").trim(),{originalMessage:e,cleanedMessage:a,functionCalls:t,hasOnlyFunctionCalls:a===""}}function kr(e){let t=[],a=/@([\w.]+)\s*\(/g,o;for(;o=a.exec(e);){let n=o.index,r=o[1],{endIndex:s,paramsString:c}=wr(e,n+o[0].length);if(s!==-1){let i=xr(c);t.push({functionName:r,parameters:i,rawExpression:e.substring(n,s+1),startIndex:n,endIndex:s+1}),a.lastIndex=s+1}}return t}function yr(e){return Sn.has(e)}function wr(e,t){let a=1,o=!1,n=!1,r=!1,s=t;for(;s<e.length&&a>0;){let c=e[s];if(r){r=!1,s++;continue}c==="\\"&&(o||n)?r=!0:c==='"'&&!o?n=!n:c==="'"&&!n?o=!o:!o&&!n&&(c==="("?a++:c===")"&&a--),s++}return a===0?{endIndex:s-1,paramsString:e.substring(t,s-1).trim()}:{endIndex:-1,paramsString:""}}function xr(e){if(!e)return{};let t={},a=vr(e);for(let o of a){let n=o.indexOf("=");if(n===-1)t.prompt=En(o.trim());else{let r=o.substring(0,n).trim(),s=o.substring(n+1).trim();t[r]=En(s)}}return t}function vr(e){let t=[],a="",o=!1,n=!1,r=0,s=0,c=!1;for(let i=0;i<e.length;i++){let u=e[i];if(c){a+=u,c=!1;continue}if(u==="\\"){c=!0,a+=u;continue}if(u==='"'&&!o?n=!n:u==="'"&&!n&&(o=!o),!o&&!n){if(u==="(")r++;else if(u===")")r--;else if(u==="[")s++;else if(u==="]")s--;else if(u===","&&r===0&&s===0){t.push(a.trim()),a="";continue}}a+=u}return a.trim()&&t.push(a.trim()),t}function En(e){if(!e)return"";if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return e.slice(1,-1).replace(/\\"/g,'"').replace(/\\'/g,"'");if(e.startsWith("[")||e.startsWith("{"))try{return JSON.parse(e)}catch{}return/^-?\d+(\.\d+)?$/.test(e)?parseFloat(e):e.toLowerCase()==="true"?!0:e.toLowerCase()==="false"?!1:e}function An(e,t){if(yr(e))return{isValid:!0,isRequired:!0,isUserDefined:!1,isMcp:!1,mappedFunction:In[e]};if(t[e]){let o=t[e];return{isValid:!0,isRequired:!1,isUserDefined:!o.mcpUrl,isMcp:!!o.mcpUrl,functionDef:o}}let a=Object.entries(t).find(([o,n])=>n.mcpUrl?o.split(".").pop()===e:!1);if(a){let[,o]=a;return{isValid:!0,isRequired:!1,isUserDefined:!1,isMcp:!0,functionDef:o}}return{isValid:!1,isRequired:!1,isUserDefined:!1,isMcp:!1,error:`Function "${e}" not found`}}function Cn(e,t){if(!t||!t.parameters)return e;let a={};for(let[o,n]of Object.entries(e)){let r=t.parameters?.[o];if(!r||!r.type){a[o]=n;continue}switch(r.type){case"number":case"integer":{let s=Number(n);a[o]=Number.isFinite(s)?s:n;break}case"boolean":{typeof n=="boolean"?a[o]=n:typeof n=="string"?a[o]=n.toLowerCase()==="true":a[o]=!!n;break}case"array":{if(Array.isArray(n))a[o]=n;else if(typeof n=="string")try{let s=JSON.parse(n);a[o]=Array.isArray(s)?s:[s]}catch{a[o]=[n]}else a[o]=[n];break}case"object":{if(typeof n=="object")a[o]=n;else if(typeof n=="string")try{a[o]=JSON.parse(n)}catch{a[o]={value:n}}else a[o]={value:n};break}default:a[o]=n}}return a}var _r=new Set(["same_tab_scheduled","same_host_navigated","subdomain_navigated","new_tab_opened","switch_tab"]);function Ee(e){let t=String(e.navigationOutcome||"").trim().toLowerCase(),a=String(e.navigationMode||"").trim().toLowerCase(),o=e.navigationPending===!0,n=t==="same_tab_scheduled"||o&&!t&&a==="same_tab",r=o||_r.has(t);return{isNavigationProgress:r,isSameTabHandoff:n,continuationReason:r?n?"same_tab_navigation_handoff":"loop_continue":null,normalizedOutcome:t,normalizedMode:a}}var Tr=["extract","compare","list","across","multiple","many","report","document","spreadsheet","sheet","table","csv","json","pdf","slides"];function St(e){return $e(e)}function It(e){return Na(e)}function Sr(e,t){let a=String(t?.find(r=>typeof r?.url=="string"&&String(r.url||"").trim())?.url||""),o=It(St(a));if(!o)return!1;let n=String(e||"").match(/https?:\/\/[^\s)]+/g)||[];return n.length?n.some(r=>{let s=It(St(r));return!!s&&s!==o}):!1}function Dn(e,t){let a=String(t?.find(s=>typeof s?.url=="string"&&String(s.url||"").trim())?.url||""),o=It(St(a)),n=String(e||"").match(/https?:\/\/[^\s)]+/g)||[];if(!n.length||!o)return 0;let r=new Set;for(let s of n){let c=It(St(s));!c||c===o||r.add(c)}return r.size}function On(e){let t=String(e||"").toLowerCase();return t?(t.match(/\b(first|second|third|then|after that|next|finally)\b/g)||[]).length>=2||(t.match(/\bstep\s*[1-9]\b/g)||[]).length>=2||(t.match(/\b\d+\.\s+/g)||[]).length>=2:!1}function Tt(e){let t=String(e||"").toLowerCase().trim();if(!t)return 0;let a=0,o=new Set((t.match(/\b(click|open|go|navigate|fill|type|submit|extract|find|search|compare|summarize|collect|download|upload|create|generate|report)\b/g)||[]).map(r=>r.toLowerCase()));t.length>120&&(a+=1),o.size>=2&&(a+=1),(t.match(/\b(and then|then|after|next|finally|first|second|third)\b/g)||[]).length>=1&&(a+=2),(t.match(/\b(extract|compare|list|all|each|every|across|multiple|many)\b/g)||[]).length>=2&&(a+=2),/https?:\/\/|www\./.test(t)&&(a+=2),(t.match(/\b(report|document|doc|spreadsheet|sheet|table|csv|json|pdf|slides|summary)\b/g)||[]).length>=1&&(a+=2);for(let r of Tr)t.includes(r)&&(a+=.25);let n=t.split(/\s+/).filter(Boolean);return/^(click|type|fill|open|go to|scroll|press|select)\b/.test(t)&&n.length<=10&&(a=Math.max(0,a-2)),Math.max(0,Math.min(10,Math.round(a)))}function Ir(e,t){let a=t.taskRouting?.mode||"act";if(a==="planner")return{mode:"planner",reason:"Configured planner mode"};if(a==="act")return{mode:"act",reason:"Configured act mode"};if(Array.isArray(t.previousSteps)&&t.previousSteps.some(c=>Array.isArray(c?.questionsAsked)&&c.questionsAsked.length>0&&!(c?.userAnswers&&Object.keys(c.userAnswers).length>0)))return{mode:"planner",score:Tt(e),reason:"Forced planner due to awaiting_user continuation chain."};if(On(e))return{mode:"planner",score:Tt(e),reason:"Forced planner due to multi-step dependency markers in prompt."};let n=Dn(e,t.tabs||[]);if(n>1)return{mode:"planner",score:Tt(e),reason:`Forced planner due to ${n} cross-domain dependencies.`};let r=Tt(e),s=Math.max(3,Math.min(10,Number(t.taskRouting?.actHeuristicThreshold)||7));return r>=s?{mode:"planner",score:r,reason:`Complexity score ${r} >= ${s}`}:{mode:"act",score:r,reason:`Complexity score ${r} < ${s}`}}function Er(e){if(!e||typeof e!="object"||e.error)return!1;let t=r=>Array.isArray(r)?r.length>0:r&&typeof r=="object"?Object.keys(r).length>0:typeof r=="string"?r.trim().length>0:r!=null;if(t(e.data)||Ee({navigationPending:e.navigationPending,navigationOutcome:e.navigationOutcome,navigationMode:e.navigation}).isNavigationProgress||e.needsUserInput===!0)return!0;let o=e.output;return o?typeof o=="string"?o.trim().length>0:typeof o!="object"?t(o):o.success===!1||o.error?!1:!!(Ee({navigationPending:o.navigationPending,navigationOutcome:o.navigationOutcome,navigationMode:o.navigation}).isNavigationProgress||o.needsUserInput===!0||o.waitingForUserInput===!0||Array.isArray(o.questions)&&o.questions.length>0||String(o.taskStatus||"").trim().toLowerCase()==="in_progress"||o.taskComplete===!0||t(o.data)||typeof o.response=="string"&&String(o.response||"").trim()||t(o)):!1}async function Rr(e){let{message:t,toolFunctions:a}=e,o=Rn(t),n=[];if(o.functionCalls.length===0)return{processedMessage:t,executedFunctions:[],shouldRunPlanner:!0};let r=o.functionCalls.map(l=>({call:l,validation:An(l.functionName,a||{})})),s=r.filter(l=>!l.validation.isValid);if(s.length>0)return{processedMessage:o.cleanedMessage,executedFunctions:[],shouldRunPlanner:!1,error:s.map(l=>l.validation.error).join("; ")};let c=r.every(l=>l.validation.isRequired),i=r.every(l=>l.validation.isUserDefined||l.validation.isMcp);if(o.hasOnlyFunctionCalls&&(c||i)){for(let{call:l,validation:d}of r)if(d.isRequired&&d.mappedFunction){let m={user_input:l.parameters.prompt||l.parameters.user_input||l.parameters.task_instruction||"",...l.parameters},f=await Se({...e,toolName:d.mappedFunction,toolArgs:m,userInput:m.user_input,tabs:e.tabs,trajectoryId:e.trajectoryId,plannerPrevSteps:e.previousSteps,agentLog:e.agentLog,ctx:e.ctx,bridgeRpc:e.bridgeRpc,functionDeclarations:e.functionDeclarations,onPrevStepsUpdate:e.onPrevStepsUpdate});n.push({name:l.functionName,parameters:l.parameters,result:f.output,error:f.error,isRequired:!0,prevSteps:f.prevSteps})}else if(d.functionDef)try{let m=Cn(l.parameters,d.functionDef),f=await e.bridgeRpc("executeClientTool",{name:l.functionName,args:m});n.push({name:l.functionName,parameters:m,result:f,isRequired:!1})}catch(m){n.push({name:l.functionName,parameters:l.parameters,error:m?.message||String(m),isRequired:!1})}return{processedMessage:o.cleanedMessage,executedFunctions:n,shouldRunPlanner:!1}}return{processedMessage:t,executedFunctions:[],shouldRunPlanner:!0}}async function jn(e,t){t.onStatusUpdate?.("Analyzing request",e,"analyze");let a=await Rr({...t,message:e});if(a.error)return{success:!1,processedMessage:a.processedMessage,error:a.error};if(a.executedFunctions.length>0&&!a.shouldRunPlanner)return{success:!0,processedMessage:a.processedMessage,executedFunctions:a.executedFunctions};if(a.shouldRunPlanner){let o=Ir(e,t);t.onStatusUpdate?.(`Route selected: ${o.mode}`,o.reason,"route");let n=t.agentLog?.prevSteps;if(o.mode==="act"){t.onStatusUpdate?.("Executing action plan","Using ACT tool loop","execute");let c=Date.now(),i=await Se({...t,toolName:M.ACT,toolArgs:{user_input:e},userInput:e,tabs:t.tabs,trajectoryId:t.trajectoryId,plannerPrevSteps:t.previousSteps,agentLog:t.agentLog,ctx:t.ctx,bridgeRpc:t.bridgeRpc,functionDeclarations:t.functionDeclarations,onPrevStepsUpdate:t.onPrevStepsUpdate});Array.isArray(i.prevSteps)&&i.prevSteps.length>0&&(n=i.prevSteps,t.onPrevStepsUpdate?.(n));let u=Date.now()-c,l=Array.isArray(i.prevSteps?.[i.prevSteps.length-1]?.functions)?i.prevSteps[i.prevSteps.length-1].functions.length:0,d=Array.isArray(i.prevSteps)?i.prevSteps.reduce((R,N)=>{let v=Array.isArray(N.functions)?N.functions.filter(O=>O?.response?.status==="Failure").length:0;return R+v},0):0,m=Sr(e,t.tabs||[]),f=Dn(e,t.tabs||[]),k=On(e);if(!(!Er(i)&&(!!i.error&&(t.taskRouting?.plannerOnActError??!0)&&t.taskRouting?.mode!=="act"||u>8e3||l>3||d>=2||f>1||m||k)))return{success:!i.error,processedMessage:a.processedMessage,directToolResult:i,route:o,error:i.error}}let r={...t,userInput:e,continuePlanning:!1,agentLog:{prevSteps:n||t.agentLog?.prevSteps,chatLog:t.agentLog?.chatLog},lastToolPreviousSteps:n||t.lastToolPreviousSteps,ctx:t.ctx,bridgeRpc:t.bridgeRpc,functionDeclarations:t.functionDeclarations,onPrevStepsUpdate:t.onPrevStepsUpdate,onPlannerHistoryUpdate:t.onPlannerHistoryUpdate},s=await _t(r,[]);return{success:!s.response.error,processedMessage:a.processedMessage,plannerResponse:s,route:o,error:s.response.error}}return{success:!0,processedMessage:a.processedMessage}}function Pn(e){return!e.resume&&!e.preserveHistory}var oe=[],$=null,te=null,Oe=new ot,ue=[],de=[],V,re="",Le=[],Rt="",he=crypto.randomUUID(),me=crypto.randomUUID(),le=[],Ne,Re=null,Ar=new Set(Object.values(M)),Q=null,se=new Set,Ue=null,ua="",Me=new Set,la="",je=new Map,Ct=3e4,Cr=9e4,Dr=2e4;function Or(e){let t=String(e?.ui?.agent?.name||"").trim();return t?t.slice(0,64):"Rover"}function jr(e){let t=String(e||"").trim();if(t)try{return new URL(t).hostname.toLowerCase()}catch{return}}function Pr(e){if(!(!e?.tools||Array.isArray(e.tools)))return e.tools.web}function zr(e){if(e&&(e.externalNavigationPolicy==="open_new_tab_notice"||e.externalNavigationPolicy==="block"||e.externalNavigationPolicy==="allow"))return e.externalNavigationPolicy}function Mr(e){let t=e.tabs.map((a,o)=>{if(!a.external&&a.accessMode!=="external_placeholder"&&a.accessMode!=="external_scraped")return;let n=a.accessMode==="external_scraped"?"external_scraped":"external_placeholder";return{tabId:o,host:jr(a.url),title:String(a.title||"").trim()||void 0,accessMode:n,reason:String(a.inaccessibleReason||"").trim()||void 0}}).filter(a=>!!a).slice(0,8);return{mode:"rover_embed",agentName:e.agentName,externalNavigationPolicy:e.externalNavigationPolicy,tabIdContract:"tree_index_mapped_by_tab_order",taskBoundaryId:e.taskBoundaryId,...t.length?{externalTabs:t}:{}}}function Nr(e,t){return t===void 0?e:Array.isArray(t)?t:Array.isArray(e)?{...t,client:t.client??e,web:{...t.web||{}}}:{...e,...t,client:t.client??e?.client,web:{...e?.web||{},...t.web||{}}}}function Ur(e,t){return t?{...e,...t,agent:{...e?.agent||{},...t.agent||{}}}:e}function Lr(e){let t=new Map;return e.onmessage=a=>{let o=a.data;if(!o||o.t!=="res")return;let n=t.get(o.id);n&&(t.delete(o.id),n(o))},async function(o,n){let r=crypto.randomUUID(),s=new Promise((c,i)=>{let u=setTimeout(()=>{t.delete(r),i(new Error(`RPC timeout: ${o} (${Ct}ms)`))},Ct);t.set(r,l=>{clearTimeout(u),l.ok?c(l.result):i(new Error(l.error?.message||"RPC error"))})});return e.postMessage({t:"req",id:r,method:o,params:n}),s}}async function qr(){if(!te)return{id:1};try{let e=await te("getTabContext");if(e&&typeof e=="object")return{id:Number(e.logicalTabId||e.id||1),url:e.url,title:e.title,external:!1,accessMode:"live_dom"}}catch{}return{id:1,external:!1,accessMode:"live_dom"}}async function Fr(){if(!te)return[{id:1}];try{let e=await te("listSessionTabs");if(Array.isArray(e)&&e.length>0){let t=Date.now(),a=e.map(o=>{let n=Number(o?.logicalTabId||o?.id||0),r=!!o?.external;return{id:n,runtimeId:typeof o?.runtimeId=="string"?o.runtimeId:void 0,updatedAt:Number(o?.updatedAt)||0,detachedAt:Number(o?.detachedAt)||0,detachedReason:typeof o?.detachedReason=="string"?o.detachedReason:void 0,url:typeof o?.url=="string"?o.url:void 0,title:typeof o?.title=="string"?o.title:void 0,external:r,accessMode:o?.accessMode==="external_scraped"||o?.accessMode==="external_placeholder"?o.accessMode:r?"external_placeholder":"live_dom",inaccessibleReason:typeof o?.inaccessibleReason=="string"?o.inaccessibleReason:void 0}}).filter(o=>Number.isFinite(o.id)&&o.id>0).filter(o=>{let n=Math.max(Number(o.updatedAt)||0,Number(o.detachedAt)||0);return o.runtimeId?!0:o.external?t-n<=Cr:o.detachedReason==="opened_pending_attach"?t-n<=Dr:!1}).map(o=>({id:o.id,url:o.url,title:o.title,external:o.external,accessMode:o.accessMode,inaccessibleReason:o.inaccessibleReason}));if(a.length)return a}}catch{}return[await qr()]}function Hr(e,t,a){if(a)return a;let o=`${String(e||"")} ${String(t||"")}`.toLowerCase();return o.trim()?/route|routing|complexity/.test(o)?"route":/complete|completed|done|finished|task complete/.test(o)?"complete":/verify|validated|checking|question/.test(o)?"verify":/execute|executing|running|calling|processing|generating|filling|inferring|extracting/.test(o)?"execute":"analyze":"analyze"}function Gr(e,t){let a=String(t||e||"").trim();return a?a.length<=120?a:`${a.slice(0,119)}\u2026`:""}function ee(e,t,a){let o=Hr(e,t,a),n=Gr(e,t),r=Q?.runId||"no-run";if(r!=="no-run"&&se.has(r))return;let s=`${r}|${o}|${String(e||"").trim().toLowerCase()}|${n.toLowerCase()}`;if(!(s===ua||Me.has(s))){if(ua=s,Me.add(s),Me.size>60){let c=Array.from(Me).slice(-30);Me=new Set(c)}self.postMessage({type:"status",message:e,thought:t,stage:o,compactThought:n,runId:Q?.runId}),K()}}function $r(e){let t=Q?.runId||"no-run";if(t!=="no-run"&&se.has(t))return;let a=[t,e.hasExplicitScope?"1":"0",e.scopedTabIdsInput.join(","),e.listedTabIds.join(","),e.keptScopedTabIds.join(","),e.resolvedTabOrder.join(",")].join("|");a!==la&&(la=a,self.postMessage({type:"runtime_tabs_diagnostics",runId:Q?.runId,diagnostics:e}))}function et(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 Bn(e){return e.filter(t=>t?.role==="user").slice(-20).map(t=>({role:"user",content:String(t?.content??"")}))}function Pe(e){if(!Array.isArray(e))return[];if(e.length<=Ke.plannerHistory)return e.map(o=>et(o)).filter(o=>o!==void 0);let t=[e[0],...e.slice(-(Ke.plannerHistory-1))],a=[];for(let o of t){let n=et(o);n!==void 0&&a.push(n)}return a}function zn(e){if(!Array.isArray(e)||e.length===0)return;let t=[];for(let o=0;o<e.length;o+=1){let n=e[o]?.accTreeId;typeof n=="string"&&n.trim()&&t.push(o)}if(t.length<=3)return;let a=new Set([t[0],...t.slice(-2)]);for(let o of t)a.has(o)||delete e[o].accTreeId}function tt(e){if(!Array.isArray(e))return[];if(e.length<=Ke.prevSteps){let o=[];for(let n of e){let r=et(n);r&&typeof r=="object"&&o.push(r)}return zn(o),o}let t=[e[0],...e.slice(-(Ke.prevSteps-1))],a=[];for(let o of t){let n=et(o);n&&typeof n=="object"&&a.push(n)}return zn(a),a}function Wr(e,t){if(!e||typeof e!="object")return;let a=String(e.key||e.id||"").trim(),o=String(e.query||e.question||"").trim(),n=a||`clarification_${t+1}`;if(!o)return;let r=typeof e.required=="boolean",s=typeof e.optional=="boolean",c=r?!!e.required:s?!e.optional:!0;return{key:n,query:o,...typeof e.id=="string"&&e.id.trim()?{id:e.id.trim()}:{},...typeof e.question=="string"&&e.question.trim()?{question:e.question.trim()}:{},...Array.isArray(e.choices)?{choices:e.choices}:{},required:c}}function ae(e){if(!Array.isArray(e))return[];let t=[],a=new Set;for(let o=0;o<e.length;o+=1){let n=Wr(e[o],o);if(!n)continue;let r=`${n.key}::${n.query}`.toLowerCase();a.has(r)||(a.add(r),t.push(n))}return t.slice(0,6)}function Mn(e){return String(e.query||e.question||"").trim()}function Nn(e,t,a){let o=new Set(t.map(i=>i.key)),n={},r=Array.isArray(e?.keys)?e.keys.map(i=>String(i||"").trim()).filter(i=>!!i&&o.has(i)):[];if(e?.answersByKey&&typeof e.answersByKey=="object")for(let[i,u]of Object.entries(e.answersByKey)){if(!o.has(i))continue;let l=String(u||"").trim();l&&(n[i]=l)}let s=String(a||"").trim();if(Object.keys(n).length===0&&s)if(t.length===1)n[t[0].key]=s;else{let i=s.split(`
|
|
11
11
|
`).map(u=>u.trim()).filter(Boolean);for(let u of i){let l=u.indexOf(":");if(l<=0)continue;let d=u.slice(0,l).trim(),m=u.slice(l+1).trim();!d||!m||!o.has(d)||(n[d]=m)}}let c=String(e?.rawText||s||"").trim();return!c&&Object.keys(n).length===0?r.length?{answersByKey:n,rawText:r.map(i=>`${i}: (no answer provided)`).join(`
|
|
12
12
|
`)}:void 0:{answersByKey:n,rawText:c}}function Br(e,t){let a=["[ASK_USER_ANSWERS]"];for(let o of e){let n=String(t.answersByKey[o.key]||"").trim();a.push(`${o.key}: ${n||"(no answer provided)"}`)}return t.rawText&&(a.push("[RAW_USER_REPLY]"),a.push(t.rawText)),a.join(`
|
|
13
13
|
`)}function we(e){return String(e||"").trim()||void 0}function qe(e){if(!Array.isArray(e))return[];let t=e.map(o=>({role:o?.role==="user"?"user":"model",message:String(o?.message||"").replace(/\s+/g," ").trim()})).filter(o=>!!o.message);if(!t.length)return[];let a=[];for(let o of t){let n=a[a.length-1];n&&n.role===o.role&&n.message===o.message||a.push(o)}return a.slice(-12)}function Ze(e){if(!Array.isArray(e))return[];let t=new Set,a=[];for(let o of e){let n=Number(o);!Number.isFinite(n)||n<=0||t.has(n)||(t.add(n),a.push(n))}return a}function Kr(e){let t=Ze(e?.scopedTabIds),a=e?.taskTabScope,o=Ze(a?.touchedTabIds),n=Number(a?.seedTabId),r=Number.isFinite(n)&&n>0?n:void 0,s=Ze(t.length>0?t:o.length>0?o:r?[r]:[]);return r&&!s.includes(r)&&s.unshift(r),{scoped:s,seedTabId:r}}function Et(e){if(!e||typeof e!="object")return;let t=Object.prototype.hasOwnProperty.call(e,"scopedTabIds"),a=Object.prototype.hasOwnProperty.call(e,"taskTabScope");if(!t&&!a)return;let o=Kr(e);le=o.scoped,Ne=o.seedTabId}function sa(e){let t=Ze(Array.isArray(e)?e:[e]);if(!t.length)return le;let a=Ze([...Number(Ne)>0?[Number(Ne)]:[],...le,...t]);return a.length===le.length&&a.every((o,n)=>o===le[n])||(le=a),le}function Kn(){for(let e of oe){if(e.role!=="user")continue;let t=we(String(e.content||""));if(t)return t}}function Un(e,t,a){let o=String(t||"").trim(),n=String(e||"").trim(),r=[o?`The tool \`${o}\` just finished executing.`:"No tool was issued previously.",`Please analyze the progress based on the complete history and determine the single next best step required to fulfill the overall request: ${n||"(none)"}.`,`If the request is complete, invoke tool \`${M.TASK_COMPLETE}\` via \`tool_code\`. If not, invoke the appropriate tool.`],s=String(a||"").trim();return s&&(r.push("[LAST_TOOL_OUTPUT]"),r.push(s)),r.join(`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rtrvr-ai/rover",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"license": "FSL-1.1-Apache-2.0",
|
|
5
5
|
"description": "Turn any website into an AI-native interface — for your users and for AI.",
|
|
6
6
|
"author": "RTRVR AI, INC. <support@rtrvr.ai>",
|
|
@@ -43,18 +43,28 @@
|
|
|
43
43
|
"import": "./dist/rover.js",
|
|
44
44
|
"types": "./dist/index.d.ts"
|
|
45
45
|
},
|
|
46
|
+
"./preview-bootstrap": {
|
|
47
|
+
"import": "./dist/previewBootstrap.js",
|
|
48
|
+
"types": "./dist/previewBootstrap.d.ts"
|
|
49
|
+
},
|
|
46
50
|
"./embed": "./dist/embed.js",
|
|
47
51
|
"./worker": "./dist/worker/rover-worker.js"
|
|
48
52
|
},
|
|
49
53
|
"files": [
|
|
50
54
|
"dist/rover.js",
|
|
51
55
|
"dist/embed.js",
|
|
56
|
+
"dist/previewBootstrap.js",
|
|
57
|
+
"dist/previewBootstrap.d.ts",
|
|
52
58
|
"dist/index.d.ts",
|
|
53
59
|
"dist/worker/rover-worker.js",
|
|
54
60
|
"dist/loader.js",
|
|
55
61
|
"dist/loader.d.ts",
|
|
62
|
+
"dist/rolls-cli.mjs",
|
|
56
63
|
"README.md"
|
|
57
64
|
],
|
|
65
|
+
"bin": {
|
|
66
|
+
"rtrvr-rolls": "./dist/rolls-cli.mjs"
|
|
67
|
+
},
|
|
58
68
|
"publishConfig": {
|
|
59
69
|
"access": "public"
|
|
60
70
|
},
|