@midscene/android-playground 1.5.5 → 1.5.6
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/package.json +5 -5
- package/static/index.html +1 -1
- package/static/static/js/{index.162d8944.js → index.369ca451.js} +8 -5
- package/static/static/js/index.369ca451.js.map +1 -0
- package/static/static/js/{lib-react.ed140d90.js → lib-react.8a6eecf7.js} +3 -3
- package/static/static/js/{lib-react.ed140d90.js.map → lib-react.8a6eecf7.js.map} +1 -1
- package/static/static/js/index.162d8944.js.map +0 -1
- /package/static/static/js/{index.162d8944.js.LICENSE.txt → index.369ca451.js.LICENSE.txt} +0 -0
- /package/static/static/js/{lib-react.ed140d90.js.LICENSE.txt → lib-react.8a6eecf7.js.LICENSE.txt} +0 -0
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
/*! For license information please see index.
|
|
2
|
-
(()=>{var e,A,t,r,n,o,i,a={5737(e){function A(e){return Promise.resolve().then(function(){var A=Error("Cannot find module '"+e+"'");throw A.code="MODULE_NOT_FOUND",A})}A.keys=()=>[],A.resolve=A,A.id=5737,e.exports=A},9998(e){function A(e){return Promise.resolve().then(function(){var A=Error("Cannot find module '"+e+"'");throw A.code="MODULE_NOT_FOUND",A})}A.keys=()=>[],A.resolve=A,A.id=9998,e.exports=A},3348(e){function A(e){return Promise.resolve().then(function(){var A=Error("Cannot find module '"+e+"'");throw A.code="MODULE_NOT_FOUND",A})}A.keys=()=>[],A.resolve=A,A.id=3348,e.exports=A},1560(e){function A(e){return Promise.resolve().then(function(){var A=Error("Cannot find module '"+e+"'");throw A.code="MODULE_NOT_FOUND",A})}A.keys=()=>[],A.resolve=A,A.id=1560,e.exports=A},2774(e,A,t){"use strict";var r=t(5723),n=t(8997),o=t(8926),i={};i.d=(e,A)=>{for(var t in A)i.o(A,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},i.o=(e,A)=>Object.prototype.hasOwnProperty.call(e,A),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};i.r(a),i.d(a,{create:()=>o.vt});let{create:s}=a,l="midscene-auto-zoom",c="midscene-background-visible",d="midscene-elements-visible",u="midscene-model-call-details",p="midscene-dark-mode",g="midscene-playback-speed",m="midscene-subtitle-enabled",f=e=>{if("undefined"==typeof window)return;var A=new URLSearchParams(window.location.search).get(e);if(null===A)return;let t=A.trim().toLowerCase();return!!["1","true","yes","on"].includes(t)||!["0","false","no","off"].includes(t)&&void 0},h=s(e=>{let A="false"!==localStorage.getItem(l),t="false"!==localStorage.getItem(c),r="false"!==localStorage.getItem(d),n="true"===localStorage.getItem(u),o="true"===localStorage.getItem(p),i=Number.parseFloat(localStorage.getItem(g)||"1"),a=Number.isNaN(i)?1:i,s="false"!==localStorage.getItem(m),h=f("focusOnCursor"),y=f("showElementMarkers"),E=f("darkMode"),v=void 0===E?o:E;return void 0!==E&&localStorage.setItem(p,v.toString()),{backgroundVisible:t,elementsVisible:void 0===y?r:y,autoZoom:void 0===h?A:h,modelCallDetailsEnabled:n,darkModeEnabled:v,playbackSpeed:[.5,1,1.5,2].includes(a)?a:1,setBackgroundVisible:A=>{e({backgroundVisible:A}),localStorage.setItem(c,A.toString())},setElementsVisible:A=>{e({elementsVisible:A}),localStorage.setItem(d,A.toString())},setAutoZoom:A=>{e({autoZoom:A}),localStorage.setItem(l,A.toString())},setModelCallDetailsEnabled:A=>{e({modelCallDetailsEnabled:A}),localStorage.setItem(u,A.toString())},setDarkModeEnabled:A=>{e({darkModeEnabled:A}),localStorage.setItem(p,A.toString())},setPlaybackSpeed:A=>{e({playbackSpeed:A}),localStorage.setItem(g,A.toString())},subtitleEnabled:s,setSubtitleEnabled:A=>{e({subtitleEnabled:A}),localStorage.setItem(m,A.toString())}}}),y="midscene-env-config",E="midscene-service-mode",v="midscene-tracking-active-tab",b="midscene-deep-locate",k="midscene-deep-think",C="midscene-screenshot-included",S="midscene-dom-included",I="midscene-ime-strategy",R="midscene-auto-dismiss-keyboard",x="midscene-keyboard-dismiss-strategy",j="midscene-always-refresh-screen-info",P=()=>localStorage.getItem(y)||"",w=e=>{let A=e.split("\n"),t={};return A.forEach(e=>{let A=e.trim();if(A.startsWith("#"))return;let r=A.replace(/^export\s+/i,"").replace(/;$/,"").trim().match(/^(\w+)=(.*)$/);if(r){let[,e,A]=r,n=A.trim();(n.startsWith("'")&&n.endsWith("'")||n.startsWith('"')&&n.endsWith('"'))&&(n=n.slice(1,-1)),t[e]=n}}),t},N=s((e,A)=>{let t=P(),r=w(t),n=window.location.href.startsWith("chrome-extension"),o=localStorage.getItem(E),i="false"!==localStorage.getItem(v),a="true"===localStorage.getItem(b),s="true"===localStorage.getItem(k),l="false"!==localStorage.getItem(C),c=localStorage.getItem(S)||"false";return{serviceMode:n?"In-Browser-Extension":o||"Server",setServiceMode:A=>{if(n)throw Error("serviceMode cannot be set in extension");e({serviceMode:A}),localStorage.setItem(E,A)},config:r,configString:t,setConfig:A=>e({config:A}),loadConfig:A=>{e({config:w(A),configString:A}),localStorage.setItem(y,A)},syncFromStorage:()=>{let A=P();e({config:w(A),configString:A})},forceSameTabNavigation:i,setForceSameTabNavigation:A=>{e({forceSameTabNavigation:A}),localStorage.setItem(v,A.toString())},deepLocate:a,setDeepLocate:A=>{e({deepLocate:A}),localStorage.setItem(b,A.toString())},deepThink:s,setDeepThink:A=>{e({deepThink:A}),localStorage.setItem(k,A.toString())},screenshotIncluded:l,setScreenshotIncluded:A=>{e({screenshotIncluded:A}),localStorage.setItem(C,A.toString())},domIncluded:"visible-only"===c?"visible-only":"true"===c,setDomIncluded:A=>{e({domIncluded:A}),localStorage.setItem(S,A.toString())},popupTab:"playground",setPopupTab:A=>{e({popupTab:A})},imeStrategy:localStorage.getItem(I)||"yadb-for-non-ascii",setImeStrategy:A=>{e({imeStrategy:A}),localStorage.setItem(I,A)},autoDismissKeyboard:"false"!==localStorage.getItem(R),setAutoDismissKeyboard:A=>{e({autoDismissKeyboard:A}),localStorage.setItem(R,A.toString())},keyboardDismissStrategy:localStorage.getItem(x)||"esc-first",setKeyboardDismissStrategy:A=>{e({keyboardDismissStrategy:A}),localStorage.setItem(x,A)},alwaysRefreshScreenInfo:"true"===localStorage.getItem(j),setAlwaysRefreshScreenInfo:A=>{e({alwaysRefreshScreenInfo:A}),localStorage.setItem(j,A.toString())}}});var O=t(4565),T=t(217),K=t(9368);let M=()=>{let e=(0,T.j)(K.v4),A="";e&&(console.warn("MIDSCENE_DEBUG_MODEL_PROFILE is deprecated, use DEBUG=midscene:ai:profile instead"),A="ai:profile"),(0,T.j)(K.$l)&&(console.warn("MIDSCENE_DEBUG_MODEL_RESPONSE is deprecated, use DEBUG=midscene:ai:response instead"),A=A?"ai:*":"ai:call"),A&&(0,O.Nw)(A)};var B=t(5409);function D(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}let z={modelName:K._q,socksProxy:K.T4,httpProxy:K.Yf,openaiBaseURL:K.kX,openaiApiKey:K.Lh,openaiExtraConfig:K.Z7,modelFamily:K.v,timeout:K.Yg,temperature:K.V7,retryCount:K.vC,retryInterval:K.xg,reasoningEffort:K.y2,reasoningEnabled:K.nc,reasoningBudget:K.fS},Q={modelName:K.xP,socksProxy:K.mZ,httpProxy:K.zQ,openaiBaseURL:K.zG,openaiApiKey:K.OK,openaiExtraConfig:K.ag,modelFamily:K.OY,timeout:K.Z$,temperature:K.Cn,retryCount:K.sg,retryInterval:K.wu,reasoningEffort:K.Vb,reasoningEnabled:K.u1,reasoningBudget:K.aO},L={modelName:K.HR,socksProxy:K.iw,httpProxy:K.FU,openaiBaseURL:K.$H,openaiApiKey:K.IQ,openaiExtraConfig:K.I2,modelFamily:K.yR,timeout:K.zD,temperature:K.W4,retryCount:K.Km,retryInterval:K.aK,reasoningEffort:K.VM,reasoningEnabled:K.M1,reasoningBudget:K.AU};var Z=t(9152);let X=function(e){let A=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"*";if("string"!=typeof e||0===e.length)return e;if(e.length<=6)return e;let t=e.substring(0,3),r=e.substring(e.length-3),n=e.length-6,o=A.repeat(n);return`${t}${o}${r}`},J=e=>Object.fromEntries(Object.entries(e).map(e=>{let[A,t]=e;if(!t)return[A,t];if("string"==typeof t&&/key/i.test(A))return[A,X(t)];if("object"==typeof t){let e=JSON.stringify(t);if(/key/i.test(e))return[A,X(e)]}return[A,t]})),U={insight:z,planning:Q,default:L},F=(e,A)=>{let t=(0,O.aZ)("ai:config");t("will decideModelConfig base on agent.modelConfig()",e,J(A));let r=U[e];if(!A[r.modelName])return void t("no modelName found for intent",e);let n=(e=>{var A,t,r;let n,{keys:o,provider:i,useLegacyLogic:a=!1}=e;M(),(0,O.aZ)("ai:config")("enter parseOpenaiSdkConfig with keys:",o);let s=a?i[K.Jq]:void 0,l=a?i[K.jG]:void 0,c=a?i[K.$]:void 0,d=a?i[K.CA]:void 0,u=a?i[K.b6]:void 0,p=a?(e=>{let A=e[K.pp],t=e[K.yb],r=e[K.NF],n=e[K.JM],o=e[K.j_],i=[A&&K.pp,t&&K.yb,r&&K.NF,n&&K.JM,o&&K.j_].filter(Boolean);if(i.length>1)throw Error(`Only one vision mode can be enabled at a time. Currently enabled modes: ${i.join(", ")}. Please disable all but one mode.`);if(r)return"qwen3-vl";if(t)return"qwen2.5-vl";if(A)return"doubao-vision";if(o)return"gemini";if(n)if("1"===n)return"vlm-ui-tars";else if("DOUBAO"===n||"DOUBAO-1.5"===n)return"vlm-ui-tars-doubao-1.5";else return"vlm-ui-tars-doubao"})(i):void 0,g=i[o.modelFamily]||p,m=i[o.openaiApiKey]||s,f=i[o.openaiBaseURL]||l,h=i[o.socksProxy]||c,y=i[o.httpProxy]||d,E=i[o.modelName],v=i[o.openaiExtraConfig],b=((e,A)=>{if(A)try{return JSON.parse(A)}catch(A){throw Error(`Failed to parse ${e} as a JSON. ${A.message}`,{cause:A})}})(o.openaiExtraConfig,v||u),k=i[o.temperature]?Number(i[o.temperature]):0;if(g&&!K._j.includes(g))throw Error(`Invalid MIDSCENE_MODEL_FAMILY value: ${g}`);let C="vlm-ui-tars"===g?K.UH.V1_0:"vlm-ui-tars-doubao"===g||"vlm-ui-tars-doubao-1.5"===g?K.UH.DOUBAO_1_5_20B:void 0,S=C?`UI-TARS=${C}`:g?`${g} mode`:"";return{socksProxy:h,httpProxy:y,openaiBaseURL:f,openaiApiKey:m,openaiExtraConfig:b,modelFamily:g,uiTarsModelVersion:C,modelName:E,modelDescription:S,intent:"-",timeout:i[o.timeout]?Number(i[o.timeout]):void 0,temperature:k,retryCount:(()=>{if(!i[o.retryCount])return 1;let e=Number(i[o.retryCount]);if(!Number.isFinite(e))return 1;if(e<0)throw Error(`${o.retryCount} must be non-negative, got ${e}`);return e})(),retryInterval:(()=>{if(!i[o.retryInterval])return 2e3;let e=Number(i[o.retryInterval]);if(!Number.isFinite(e))return 2e3;if(e<0)throw Error(`${o.retryInterval} must be non-negative, got ${e}`);return e})(),reasoningEffort:(null==(A=i[o.reasoningEffort])?void 0:A.trim())||void 0,reasoningEnabled:"true"===(n=null==(r=i[o.reasoningEnabled])||null==(t=r.trim())?void 0:t.toLowerCase())||"1"===n||"false"!==n&&"0"!==n&&void 0,reasoningBudget:(()=>{var e;let A=null==(e=i[o.reasoningBudget])?void 0:e.trim();if(!A)return;let t=Number(A);return Number.isFinite(t)?t:void 0})()}})({keys:r,provider:A,useLegacyLogic:"default"===e});return n.intent=e,t("decideModelConfig result by agent.modelConfig() with intent",e,J({...n})),(0,Z.vA)(n.openaiBaseURL,`failed to get base URL of model (intent=${e}). See https://midscenejs.com/model-strategy`),n.modelName||console.warn(`modelName is not set for intent ${e}, this may cause unexpected behavior. See https://midscenejs.com/model-strategy`),n};function q(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}let V=new class{initialize(){var e;let A;if(this.isInitialized)return;this.modelConfig?(this.isolatedMode=!0,A=this.normalizeModelConfig(this.modelConfig)):A=(null==(e=this.globalConfigManager)?void 0:e.getAllEnvConfig())||{};let t=F("default",A);if(!t)throw Error("Model configuration is incomplete: model name (MIDSCENE_MODEL_NAME) is required. See https://midscenejs.com/model-strategy.html");let r=F("insight",A),n=F("planning",A);this.modelConfigMap={default:{...t,createOpenAIClient:this.createOpenAIClientFn},insight:{...r||t,createOpenAIClient:this.createOpenAIClientFn},planning:{...n||t,createOpenAIClient:this.createOpenAIClientFn}},this.isInitialized=!0}normalizeModelConfig(e){return Object.entries(e).reduce((e,A)=>{let[t,r]=A;return null==r||(e[t]=String(r)),e},Object.create(null))}clearModelConfigMap(){if(this.isolatedMode)throw Error("ModelConfigManager work in isolated mode, so clearModelConfigMap should not be called");this.isInitialized=!1}getModelConfig(e){if(this.isInitialized||this.initialize(),!this.modelConfigMap)throw Error("modelConfigMap is not initialized, which should not happen");return this.modelConfigMap[e]}getUploadTestServerUrl(){let{openaiExtraConfig:e}=this.getModelConfig("default");return null==e?void 0:e.REPORT_SERVER_URL}registerGlobalConfigManager(e){this.globalConfigManager=e}throwErrorIfNonVLModel(){if(!this.getModelConfig("default").modelFamily)throw Error("MIDSCENE_MODEL_FAMILY is not set to a visual language model (VL model), the element localization can not be achieved. Check your model configuration. See https://midscenejs.com/model-strategy.html")}constructor(e,A){q(this,"modelConfigMap",void 0),q(this,"isInitialized",!1),q(this,"isolatedMode",!1),q(this,"globalConfigManager",void 0),q(this,"modelConfig",void 0),q(this,"createOpenAIClientFn",void 0),this.modelConfig=e,this.createOpenAIClientFn=A}},H=new class{getAllEnvConfig(){let e=K.tk.reduce((e,A)=>(e[A]=B.env[A],e),Object.create(null));if(!this.override)return e;{let{newConfig:A,extendMode:t}=this.override;return t?{...e,...A}:{...A}}}getEnvConfigValue(e){let A=this.getAllEnvConfig();if(e===K.Sk)throw Error("MATCH_BY_POSITION is discarded, use MIDSCENE_MODEL_FAMILY instead");if(!K.rd.includes(e))throw Error(`getEnvConfigValue with key ${e} is not supported.`);let t=A[e];return(this.keysHaveBeenRead[e]=!0,"string"==typeof t)?t.trim():t}getEnvConfigInBoolean(e){let A=this.getAllEnvConfig();if(!K.c$.includes(e))throw Error(`getEnvConfigInBoolean with key ${e} is not supported`);let t=A[e];return this.keysHaveBeenRead[e]=!0,!!t&&(!!/^(true|1)$/i.test(t)||!/^(false|0)$/i.test(t)&&!!t.trim())}getEnvConfigValueAsNumber(e){if(!K.rd.includes(e)&&!K.DL.includes(e))throw Error(`getEnvConfigValueAsNumber with key ${e} is not supported.`);let A=this.getAllEnvConfig()[e];if(this.keysHaveBeenRead[e]=!0,"string"!=typeof A)return;let t=A.trim();if(!t)return;let r=Number(t);return Number.isNaN(r)?void 0:r}registerModelConfigManager(e){this.globalModelConfigManager=e}overrideAIConfig(e){var A;let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];for(let A in e){if(![...K.Lg,...K.XE].includes(A))throw Error(`Failed to override AI config, invalid key: ${A}`);let t=e[A];if("string"!=typeof t)throw Error(`Failed to override AI config, value for key ${A} must be a string, but got with type ${typeof t}`);this.keysHaveBeenRead[A]&&console.warn(`Warning: try to override AI config with key ${A} ,but it has been read.`)}let r=t?{...null==(A=this.override)?void 0:A.newConfig,...e}:e;if(this.override={newConfig:{...r},extendMode:t},!this.globalModelConfigManager)throw Error("globalModelConfigManager is not registered, which should not happen");this.globalModelConfigManager.clearModelConfigMap()}constructor(){D(this,"override",void 0),D(this,"keysHaveBeenRead",{}),D(this,"globalModelConfigManager",void 0),M()}};H.registerModelConfigManager(V),V.registerGlobalConfigManager(H);let G=function(e){let A=arguments.length>1&&void 0!==arguments[1]&&arguments[1];H.overrideAIConfig(e,A)};var W=t(5359),Y=t(1352),_=t(955),$=t(6921),ee=t(89),eA=t(5584),et=t(2155);function er(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function en(e){return function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){er(o,r,n,i,a,"next",e)}function a(e){er(o,r,n,i,a,"throw",e)}i(void 0)})}}function eo(e){let{getScreenshot:A,getInterfaceInfo:t,serverOnline:n,isUserOperating:o=!1,mjpegUrl:i}=e,[a,s]=(0,et.useState)(null),[l,c]=(0,et.useState)(!1),[d,u]=(0,et.useState)(null),[p,g]=(0,et.useState)(0),[m,f]=(0,et.useState)(null),h=!!(i&&n),y=(0,et.useRef)(null),E=(0,et.useRef)(!1),v=(0,et.useCallback)(function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return en(function*(){if(n){c(!0),e&&u(null);try{let e=yield A();if(console.log("Screenshot API response:",e),null==e?void 0:e.screenshot){let A=e.screenshot.toString().trim();A?(s(A),u(null),g(Date.now())):u("Empty screenshot data received")}else u("No screenshot data in response")}catch(e){console.error("Screenshot fetch error:",e),u(e instanceof Error?e.message:"Failed to fetch screenshot")}finally{c(!1)}}})()},[A,n]),b=(0,et.useCallback)(()=>en(function*(){if(n&&t)try{let e=yield t();e&&f(e)}catch(e){console.error("Interface info fetch error:",e)}})(),[t,n]),k=(0,et.useCallback)(()=>{y.current&&clearInterval(y.current),console.log("Starting screenshot polling (5s interval)"),y.current=setInterval(()=>{!E.current&&n&&v(!1)},5e3)},[v,n]),C=(0,et.useCallback)(()=>{y.current&&(console.log("Stopping screenshot polling"),clearInterval(y.current),y.current=null)},[]),S=(0,et.useCallback)(()=>{console.log("Pausing screenshot polling"),E.current=!0},[]),I=(0,et.useCallback)(()=>{console.log("Resuming screenshot polling"),E.current=!1},[]),R=(0,et.useCallback)(()=>{v(!0)},[v]);return((0,et.useEffect)(()=>{if(!n){s(null),u(null),f(null),C();return}return(b(),h)?void C():(v(!1),k(),()=>{C()})},[n,h,k,C,v,b]),(0,et.useEffect)(()=>{n&&(o?S():(I(),v(!1)))},[o,S,I,v,n]),(0,et.useEffect)(()=>()=>{C()},[C]),n)?h||!l||a?h||!d||a?(0,r.jsxs)("div",{className:"screenshot-viewer",children:[(0,r.jsx)("div",{className:"screenshot-header",children:(0,r.jsx)("div",{className:"screenshot-title",children:(0,r.jsx)("h3",{children:(null==m?void 0:m.type)?m.type:"Device Name"})})}),(0,r.jsxs)("div",{className:"screenshot-container",children:[(0,r.jsxs)("div",{className:"screenshot-overlay",children:[(0,r.jsxs)("div",{className:"device-name-overlay",children:["Device Name",(0,r.jsx)(ee.A,{title:null==m?void 0:m.description,children:(0,r.jsx)(Y.A,{size:16,className:"info-icon"})})]}),!h&&(0,r.jsxs)("div",{className:"screenshot-controls",children:[p>0&&(0,r.jsxs)("span",{className:"last-update-time",children:["Last updated ",(e=>{if(!e)return"";let A=Math.floor((Date.now()-e)/1e3);return A<60?`${A}s ago`:A<3600?`${Math.floor(A/60)}m ago`:new Date(e).toLocaleTimeString()})(p)]}),(0,r.jsx)(ee.A,{title:"Refresh screenshot",children:(0,r.jsx)(eA.Ay,{icon:(0,r.jsx)(_.A,{}),onClick:R,loading:l,size:"small"})}),o&&(0,r.jsxs)("span",{className:"operation-indicator",children:[(0,r.jsx)($.A,{size:"small"})," Operating..."]})]})]}),(0,r.jsx)("div",{className:"screenshot-content",children:h?(0,r.jsx)("img",{src:i,alt:"Device Live Stream",className:"screenshot-image"}):a?(0,r.jsx)("img",{src:a.startsWith("data:image/")?a:`data:image/png;base64,${a}`,alt:"Device Screenshot",className:"screenshot-image",onLoad:()=>console.log("Screenshot image loaded successfully"),onError:e=>{console.error("Screenshot image load error:",e),console.error("Screenshot data preview:",a.substring(0,100)),u("Failed to load screenshot image")}}):(0,r.jsx)("div",{className:"screenshot-placeholder",children:(0,r.jsx)("p",{children:"No screenshot available"})})})]})]}):(0,r.jsx)("div",{className:"screenshot-viewer error",children:(0,r.jsxs)("div",{className:"screenshot-placeholder",children:[(0,r.jsx)("h3",{children:"\uD83D\uDCF1 Screen Preview"}),(0,r.jsx)("p",{className:"error-message",children:d})]})}):(0,r.jsxs)("div",{className:"screenshot-viewer loading",children:[(0,r.jsx)($.A,{size:"large"}),(0,r.jsx)("p",{children:"Loading screenshot..."})]}):(0,r.jsx)("div",{className:"screenshot-viewer offline",children:(0,r.jsxs)("div",{className:"screenshot-placeholder",children:[(0,r.jsx)("h3",{children:"\uD83D\uDCF1 Screen Preview"}),(0,r.jsx)("p",{children:"Start the playground server to see real-time screenshots"})]})})}var ei=t(6453),ea=t(2770),es=t(4458),el=t(2644),ec=t(9289);t(6990),t(5678),t(6732),t(8963),t(5592);var ed=t(3078);(0,O.aZ)("img"),(0,O.aZ)("img");var eu=t(6244);(0,O.aZ)("ai:common");let ep=eu.z.object({left:eu.z.number(),top:eu.z.number()}),eg=eu.z.object({width:eu.z.number(),height:eu.z.number()});ep.and(eg).and(eu.z.object({zoom:eu.z.number().optional()}));let em=eu.z.object({images:eu.z.array(eu.z.object({name:eu.z.string(),url:eu.z.string()})).optional(),convertHttpImage2Base64:eu.z.boolean().optional()}),ef=eu.z.union([eu.z.string(),eu.z.object({prompt:eu.z.string()}).and(em.partial())]),eh=eu.z.object({prompt:ef,deepLocate:eu.z.boolean().optional(),deepThink:eu.z.boolean().optional().describe("@deprecated Use `deepLocate` instead."),cacheable:eu.z.boolean().optional(),xpath:eu.z.union([eu.z.string(),eu.z.boolean()]).optional()}).passthrough(),ey=(e,A)=>{var t;return e&&(null==(t=e._def)?void 0:t.typeName)==="ZodObject"&&e.shape?Object.keys(e.shape).filter(t=>{var r;let n=e.shape[t];return!!(e=>{var A,t;let r=e;if((null==(A=r._def)?void 0:A.typeName)==="ZodOptional"&&(r=r._def.innerType),(null==(t=r._def)?void 0:t.typeName)==="ZodObject"){let e=r._def.shape();if("midscene_location_field_flag"in e||"prompt"in e&&e.prompt)return!0}return!1})(n)&&(!A||(null==(r=n._def)?void 0:r.typeName)!=="ZodOptional")}):[]};(0,O.aZ)("auto-glm-parser"),(0,O.aZ)("ai:inspect"),(0,O.aZ)("ai:section"),(0,O.aZ)("planning"),(0,O.aZ)("planning",{console:!0}),(0,O.aZ)("auto-glm-actions"),(0,O.aZ)("auto-glm-planning");var eE=t(5409);let ev={0:{keyCode:48,key:"0",code:"Digit0"},1:{keyCode:49,key:"1",code:"Digit1"},2:{keyCode:50,key:"2",code:"Digit2"},3:{keyCode:51,key:"3",code:"Digit3"},4:{keyCode:52,key:"4",code:"Digit4"},5:{keyCode:53,key:"5",code:"Digit5"},6:{keyCode:54,key:"6",code:"Digit6"},7:{keyCode:55,key:"7",code:"Digit7"},8:{keyCode:56,key:"8",code:"Digit8"},9:{keyCode:57,key:"9",code:"Digit9"},Power:{key:"Power",code:"Power"},Eject:{key:"Eject",code:"Eject"},Abort:{keyCode:3,code:"Abort",key:"Cancel"},Help:{keyCode:6,code:"Help",key:"Help"},Backspace:{keyCode:8,code:"Backspace",key:"Backspace"},Tab:{keyCode:9,code:"Tab",key:"Tab"},Numpad5:{keyCode:12,shiftKeyCode:101,key:"Clear",code:"Numpad5",shiftKey:"5",location:3},NumpadEnter:{keyCode:13,code:"NumpadEnter",key:"Enter",text:"\r",location:3},Enter:{keyCode:13,code:"Enter",key:"Enter",text:"\r"},"\r":{keyCode:13,code:"Enter",key:"Enter",text:"\r"},"\n":{keyCode:13,code:"Enter",key:"Enter",text:"\r"},ShiftLeft:{keyCode:16,code:"ShiftLeft",key:"Shift",location:1},ShiftRight:{keyCode:16,code:"ShiftRight",key:"Shift",location:2},ControlLeft:{keyCode:17,code:"ControlLeft",key:"Control",location:1},ControlRight:{keyCode:17,code:"ControlRight",key:"Control",location:2},AltLeft:{keyCode:18,code:"AltLeft",key:"Alt",location:1},AltRight:{keyCode:18,code:"AltRight",key:"Alt",location:2},Pause:{keyCode:19,code:"Pause",key:"Pause"},CapsLock:{keyCode:20,code:"CapsLock",key:"CapsLock"},Escape:{keyCode:27,code:"Escape",key:"Escape"},Convert:{keyCode:28,code:"Convert",key:"Convert"},NonConvert:{keyCode:29,code:"NonConvert",key:"NonConvert"},Space:{keyCode:32,code:"Space",key:" "},Numpad9:{keyCode:33,shiftKeyCode:105,key:"PageUp",code:"Numpad9",shiftKey:"9",location:3},PageUp:{keyCode:33,code:"PageUp",key:"PageUp"},Numpad3:{keyCode:34,shiftKeyCode:99,key:"PageDown",code:"Numpad3",shiftKey:"3",location:3},PageDown:{keyCode:34,code:"PageDown",key:"PageDown"},End:{keyCode:35,code:"End",key:"End"},Numpad1:{keyCode:35,shiftKeyCode:97,key:"End",code:"Numpad1",shiftKey:"1",location:3},Home:{keyCode:36,code:"Home",key:"Home"},Numpad7:{keyCode:36,shiftKeyCode:103,key:"Home",code:"Numpad7",shiftKey:"7",location:3},ArrowLeft:{keyCode:37,code:"ArrowLeft",key:"ArrowLeft"},Numpad4:{keyCode:37,shiftKeyCode:100,key:"ArrowLeft",code:"Numpad4",shiftKey:"4",location:3},Numpad8:{keyCode:38,shiftKeyCode:104,key:"ArrowUp",code:"Numpad8",shiftKey:"8",location:3},ArrowUp:{keyCode:38,code:"ArrowUp",key:"ArrowUp"},ArrowRight:{keyCode:39,code:"ArrowRight",key:"ArrowRight"},Numpad6:{keyCode:39,shiftKeyCode:102,key:"ArrowRight",code:"Numpad6",shiftKey:"6",location:3},Numpad2:{keyCode:40,shiftKeyCode:98,key:"ArrowDown",code:"Numpad2",shiftKey:"2",location:3},ArrowDown:{keyCode:40,code:"ArrowDown",key:"ArrowDown"},Select:{keyCode:41,code:"Select",key:"Select"},Open:{keyCode:43,code:"Open",key:"Execute"},PrintScreen:{keyCode:44,code:"PrintScreen",key:"PrintScreen"},Insert:{keyCode:45,code:"Insert",key:"Insert"},Numpad0:{keyCode:45,shiftKeyCode:96,key:"Insert",code:"Numpad0",shiftKey:"0",location:3},Delete:{keyCode:46,code:"Delete",key:"Delete"},NumpadDecimal:{keyCode:46,shiftKeyCode:110,code:"NumpadDecimal",key:"\0",shiftKey:".",location:3},Digit0:{keyCode:48,code:"Digit0",shiftKey:")",key:"0"},Digit1:{keyCode:49,code:"Digit1",shiftKey:"!",key:"1"},Digit2:{keyCode:50,code:"Digit2",shiftKey:"@",key:"2"},Digit3:{keyCode:51,code:"Digit3",shiftKey:"#",key:"3"},Digit4:{keyCode:52,code:"Digit4",shiftKey:"$",key:"4"},Digit5:{keyCode:53,code:"Digit5",shiftKey:"%",key:"5"},Digit6:{keyCode:54,code:"Digit6",shiftKey:"^",key:"6"},Digit7:{keyCode:55,code:"Digit7",shiftKey:"&",key:"7"},Digit8:{keyCode:56,code:"Digit8",shiftKey:"*",key:"8"},Digit9:{keyCode:57,code:"Digit9",shiftKey:"(",key:"9"},KeyA:{keyCode:65,code:"KeyA",shiftKey:"A",key:"a"},KeyB:{keyCode:66,code:"KeyB",shiftKey:"B",key:"b"},KeyC:{keyCode:67,code:"KeyC",shiftKey:"C",key:"c"},KeyD:{keyCode:68,code:"KeyD",shiftKey:"D",key:"d"},KeyE:{keyCode:69,code:"KeyE",shiftKey:"E",key:"e"},KeyF:{keyCode:70,code:"KeyF",shiftKey:"F",key:"f"},KeyG:{keyCode:71,code:"KeyG",shiftKey:"G",key:"g"},KeyH:{keyCode:72,code:"KeyH",shiftKey:"H",key:"h"},KeyI:{keyCode:73,code:"KeyI",shiftKey:"I",key:"i"},KeyJ:{keyCode:74,code:"KeyJ",shiftKey:"J",key:"j"},KeyK:{keyCode:75,code:"KeyK",shiftKey:"K",key:"k"},KeyL:{keyCode:76,code:"KeyL",shiftKey:"L",key:"l"},KeyM:{keyCode:77,code:"KeyM",shiftKey:"M",key:"m"},KeyN:{keyCode:78,code:"KeyN",shiftKey:"N",key:"n"},KeyO:{keyCode:79,code:"KeyO",shiftKey:"O",key:"o"},KeyP:{keyCode:80,code:"KeyP",shiftKey:"P",key:"p"},KeyQ:{keyCode:81,code:"KeyQ",shiftKey:"Q",key:"q"},KeyR:{keyCode:82,code:"KeyR",shiftKey:"R",key:"r"},KeyS:{keyCode:83,code:"KeyS",shiftKey:"S",key:"s"},KeyT:{keyCode:84,code:"KeyT",shiftKey:"T",key:"t"},KeyU:{keyCode:85,code:"KeyU",shiftKey:"U",key:"u"},KeyV:{keyCode:86,code:"KeyV",shiftKey:"V",key:"v"},KeyW:{keyCode:87,code:"KeyW",shiftKey:"W",key:"w"},KeyX:{keyCode:88,code:"KeyX",shiftKey:"X",key:"x"},KeyY:{keyCode:89,code:"KeyY",shiftKey:"Y",key:"y"},KeyZ:{keyCode:90,code:"KeyZ",shiftKey:"Z",key:"z"},MetaLeft:{keyCode:91,code:"MetaLeft",key:"Meta",location:1},MetaRight:{keyCode:92,code:"MetaRight",key:"Meta",location:2},ContextMenu:{keyCode:93,code:"ContextMenu",key:"ContextMenu"},NumpadMultiply:{keyCode:106,code:"NumpadMultiply",key:"*",location:3},NumpadAdd:{keyCode:107,code:"NumpadAdd",key:"+",location:3},NumpadSubtract:{keyCode:109,code:"NumpadSubtract",key:"-",location:3},NumpadDivide:{keyCode:111,code:"NumpadDivide",key:"/",location:3},F1:{keyCode:112,code:"F1",key:"F1"},F2:{keyCode:113,code:"F2",key:"F2"},F3:{keyCode:114,code:"F3",key:"F3"},F4:{keyCode:115,code:"F4",key:"F4"},F5:{keyCode:116,code:"F5",key:"F5"},F6:{keyCode:117,code:"F6",key:"F6"},F7:{keyCode:118,code:"F7",key:"F7"},F8:{keyCode:119,code:"F8",key:"F8"},F9:{keyCode:120,code:"F9",key:"F9"},F10:{keyCode:121,code:"F10",key:"F10"},F11:{keyCode:122,code:"F11",key:"F11"},F12:{keyCode:123,code:"F12",key:"F12"},F13:{keyCode:124,code:"F13",key:"F13"},F14:{keyCode:125,code:"F14",key:"F14"},F15:{keyCode:126,code:"F15",key:"F15"},F16:{keyCode:127,code:"F16",key:"F16"},F17:{keyCode:128,code:"F17",key:"F17"},F18:{keyCode:129,code:"F18",key:"F18"},F19:{keyCode:130,code:"F19",key:"F19"},F20:{keyCode:131,code:"F20",key:"F20"},F21:{keyCode:132,code:"F21",key:"F21"},F22:{keyCode:133,code:"F22",key:"F22"},F23:{keyCode:134,code:"F23",key:"F23"},F24:{keyCode:135,code:"F24",key:"F24"},NumLock:{keyCode:144,code:"NumLock",key:"NumLock"},ScrollLock:{keyCode:145,code:"ScrollLock",key:"ScrollLock"},AudioVolumeMute:{keyCode:173,code:"AudioVolumeMute",key:"AudioVolumeMute"},AudioVolumeDown:{keyCode:174,code:"AudioVolumeDown",key:"AudioVolumeDown"},AudioVolumeUp:{keyCode:175,code:"AudioVolumeUp",key:"AudioVolumeUp"},MediaTrackNext:{keyCode:176,code:"MediaTrackNext",key:"MediaTrackNext"},MediaTrackPrevious:{keyCode:177,code:"MediaTrackPrevious",key:"MediaTrackPrevious"},MediaStop:{keyCode:178,code:"MediaStop",key:"MediaStop"},MediaPlayPause:{keyCode:179,code:"MediaPlayPause",key:"MediaPlayPause"},Semicolon:{keyCode:186,code:"Semicolon",shiftKey:":",key:";"},Equal:{keyCode:187,code:"Equal",shiftKey:"+",key:"="},NumpadEqual:{keyCode:187,code:"NumpadEqual",key:"=",location:3},Comma:{keyCode:188,code:"Comma",shiftKey:"<",key:","},Minus:{keyCode:189,code:"Minus",shiftKey:"_",key:"-"},Period:{keyCode:190,code:"Period",shiftKey:">",key:"."},Slash:{keyCode:191,code:"Slash",shiftKey:"?",key:"/"},Backquote:{keyCode:192,code:"Backquote",shiftKey:"~",key:"`"},BracketLeft:{keyCode:219,code:"BracketLeft",shiftKey:"{",key:"["},Backslash:{keyCode:220,code:"Backslash",shiftKey:"|",key:"\\"},BracketRight:{keyCode:221,code:"BracketRight",shiftKey:"}",key:"]"},Quote:{keyCode:222,code:"Quote",shiftKey:'"',key:"'"},AltGraph:{keyCode:225,code:"AltGraph",key:"AltGraph"},Props:{keyCode:247,code:"Props",key:"CrSel"},Cancel:{keyCode:3,key:"Cancel",code:"Abort"},Clear:{keyCode:12,key:"Clear",code:"Numpad5",location:3},Shift:{keyCode:16,key:"Shift",code:"ShiftLeft",location:1},Control:{keyCode:17,key:"Control",code:"ControlLeft",location:1},Alt:{keyCode:18,key:"Alt",code:"AltLeft",location:1},Accept:{keyCode:30,key:"Accept"},ModeChange:{keyCode:31,key:"ModeChange"}," ":{keyCode:32,key:" ",code:"Space"},Print:{keyCode:42,key:"Print"},Execute:{keyCode:43,key:"Execute",code:"Open"},"\0":{keyCode:46,key:"\0",code:"NumpadDecimal",location:3},a:{keyCode:65,key:"a",code:"KeyA"},b:{keyCode:66,key:"b",code:"KeyB"},c:{keyCode:67,key:"c",code:"KeyC"},d:{keyCode:68,key:"d",code:"KeyD"},e:{keyCode:69,key:"e",code:"KeyE"},f:{keyCode:70,key:"f",code:"KeyF"},g:{keyCode:71,key:"g",code:"KeyG"},h:{keyCode:72,key:"h",code:"KeyH"},i:{keyCode:73,key:"i",code:"KeyI"},j:{keyCode:74,key:"j",code:"KeyJ"},k:{keyCode:75,key:"k",code:"KeyK"},l:{keyCode:76,key:"l",code:"KeyL"},m:{keyCode:77,key:"m",code:"KeyM"},n:{keyCode:78,key:"n",code:"KeyN"},o:{keyCode:79,key:"o",code:"KeyO"},p:{keyCode:80,key:"p",code:"KeyP"},q:{keyCode:81,key:"q",code:"KeyQ"},r:{keyCode:82,key:"r",code:"KeyR"},s:{keyCode:83,key:"s",code:"KeyS"},t:{keyCode:84,key:"t",code:"KeyT"},u:{keyCode:85,key:"u",code:"KeyU"},v:{keyCode:86,key:"v",code:"KeyV"},w:{keyCode:87,key:"w",code:"KeyW"},x:{keyCode:88,key:"x",code:"KeyX"},y:{keyCode:89,key:"y",code:"KeyY"},z:{keyCode:90,key:"z",code:"KeyZ"},Meta:{keyCode:91,key:"Meta",code:"MetaLeft",location:1},"*":{keyCode:106,key:"*",code:"NumpadMultiply",location:3},"+":{keyCode:107,key:"+",code:"NumpadAdd",location:3},"-":{keyCode:109,key:"-",code:"NumpadSubtract",location:3},"/":{keyCode:111,key:"/",code:"NumpadDivide",location:3},";":{keyCode:186,key:";",code:"Semicolon"},"=":{keyCode:187,key:"=",code:"Equal"},",":{keyCode:188,key:",",code:"Comma"},".":{keyCode:190,key:".",code:"Period"},"`":{keyCode:192,key:"`",code:"Backquote"},"[":{keyCode:219,key:"[",code:"BracketLeft"},"\\":{keyCode:220,key:"\\",code:"Backslash"},"]":{keyCode:221,key:"]",code:"BracketRight"},"'":{keyCode:222,key:"'",code:"Quote"},Attn:{keyCode:246,key:"Attn"},CrSel:{keyCode:247,key:"CrSel",code:"Props"},ExSel:{keyCode:248,key:"ExSel"},EraseEof:{keyCode:249,key:"EraseEof"},Play:{keyCode:250,key:"Play"},ZoomOut:{keyCode:251,key:"ZoomOut"},")":{keyCode:48,key:")",code:"Digit0"},"!":{keyCode:49,key:"!",code:"Digit1"},"@":{keyCode:50,key:"@",code:"Digit2"},"#":{keyCode:51,key:"#",code:"Digit3"},$:{keyCode:52,key:"$",code:"Digit4"},"%":{keyCode:53,key:"%",code:"Digit5"},"^":{keyCode:54,key:"^",code:"Digit6"},"&":{keyCode:55,key:"&",code:"Digit7"},"(":{keyCode:57,key:"(",code:"Digit9"},A:{keyCode:65,key:"A",code:"KeyA"},B:{keyCode:66,key:"B",code:"KeyB"},C:{keyCode:67,key:"C",code:"KeyC"},D:{keyCode:68,key:"D",code:"KeyD"},E:{keyCode:69,key:"E",code:"KeyE"},F:{keyCode:70,key:"F",code:"KeyF"},G:{keyCode:71,key:"G",code:"KeyG"},H:{keyCode:72,key:"H",code:"KeyH"},I:{keyCode:73,key:"I",code:"KeyI"},J:{keyCode:74,key:"J",code:"KeyJ"},K:{keyCode:75,key:"K",code:"KeyK"},L:{keyCode:76,key:"L",code:"KeyL"},M:{keyCode:77,key:"M",code:"KeyM"},N:{keyCode:78,key:"N",code:"KeyN"},O:{keyCode:79,key:"O",code:"KeyO"},P:{keyCode:80,key:"P",code:"KeyP"},Q:{keyCode:81,key:"Q",code:"KeyQ"},R:{keyCode:82,key:"R",code:"KeyR"},S:{keyCode:83,key:"S",code:"KeyS"},T:{keyCode:84,key:"T",code:"KeyT"},U:{keyCode:85,key:"U",code:"KeyU"},V:{keyCode:86,key:"V",code:"KeyV"},W:{keyCode:87,key:"W",code:"KeyW"},X:{keyCode:88,key:"X",code:"KeyX"},Y:{keyCode:89,key:"Y",code:"KeyY"},Z:{keyCode:90,key:"Z",code:"KeyZ"},":":{keyCode:186,key:":",code:"Semicolon"},"<":{keyCode:188,key:"<",code:"Comma"},_:{keyCode:189,key:"_",code:"Minus"},">":{keyCode:190,key:">",code:"Period"},"?":{keyCode:191,key:"?",code:"Slash"},"~":{keyCode:192,key:"~",code:"Backquote"},"{":{keyCode:219,key:"{",code:"BracketLeft"},"|":{keyCode:220,key:"|",code:"Backslash"},"}":{keyCode:221,key:"}",code:"BracketRight"},'"':{keyCode:222,key:'"',code:"Quote"},SoftLeft:{key:"SoftLeft",code:"SoftLeft",location:4},SoftRight:{key:"SoftRight",code:"SoftRight",location:4},Camera:{keyCode:44,key:"Camera",code:"Camera",location:4},Call:{key:"Call",code:"Call",location:4},EndCall:{keyCode:95,key:"EndCall",code:"EndCall",location:4},VolumeDown:{keyCode:182,key:"VolumeDown",code:"VolumeDown",location:4},VolumeUp:{keyCode:183,key:"VolumeUp",code:"VolumeUp",location:4}};Object.entries(ev).reduce((e,A)=>{let[t,r]=A,n=t.toLowerCase();return n!==t&&(e[n]=r),e},{});let eb="undefined"!=typeof window?/Mac|iPod|iPhone|iPad/.test(window.navigator.platform):"darwin"===eE.platform;ev.Enter.key,ev.Enter.key,eb?ev.Meta.key:ev.Control.key,ev.Shift.key,ev.Alt.key,ev.Space.key,ev.PageDown.key,ev.PageDown.key,ev.PageUp.key,ev.PageUp.key,t(2788),(0,O.aZ)("ui-tars-planning"),(0,O.aZ)("ui-tars-planning",{console:!0}),t(1182),t(3612),t(3198),t(9383),t(5409);let ek=(0,O.aZ)("yaml:utils");function eC(e,A){let t;ek("will call buildDetailedLocateParam",e,A);let r=e||(null==A?void 0:A.prompt)||(null==A?void 0:A.locate),n=!1,o=!0;return("object"==typeof A&&null!==A&&(n=A.deepLocate??A.deepThink??!1,o=A.cacheable??!0,t=A.xpath,e&&A.prompt&&e!==A.prompt&&console.warn("conflict prompt for item",e,A,"maybe you put the prompt in the wrong place"),r=r||A.prompt),r)?{prompt:r,deepLocate:n,cacheable:o,xpath:t}:void ek("no prompt, will return undefined in buildDetailedLocateParam",A)}t(5409),(0,O.aZ)("yaml-player");let eS=["aiQuery","aiBoolean","aiNumber","aiString","aiAsk","aiAssert","aiWaitFor"];async function eI(e,A){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!(null==e?void 0:e.paramSchema)||!("shape"in e.paramSchema))return[A.prompt||"",t];let r=e.paramSchema,n=r&&"shape"in r?Object.keys(r.shape):[],{deviceOptions:o,...i}=t,a={...i,...t.deviceOptions||{}};return n.forEach(e=>{void 0!==A[e]&&null!==A[e]&&""!==A[e]&&(a[e]=A[e])}),r&&ey(r).forEach(e=>{let r=A[e];if(r&&"string"==typeof r){let A=eC(r,{deepLocate:t.deepLocate,cacheable:!0});A&&(a[e]=A)}}),[a]}async function eR(e,A,t,r,n){"aiAct"!==A&&void 0!==n.deepThink&&console.warn("[Playground] Received deepThink in non-aiAct action options. deepThink is expected to be used with aiAct during migration.",{actionType:A,requestId:n.requestId,options:n});let o=null==t?void 0:t.find(e=>e.interfaceAlias===A||e.name===A);if(o&&"function"==typeof e.callActionInActionSpace)if(r.params){let A=await eI(o,r.params,n);return await e.callActionInActionSpace(o.name,A[0])}else{let A=r.prompt?eC(r.prompt,{deepLocate:n.deepLocate,cacheable:!0}):void 0,{deviceOptions:t,...i}=n,a={locate:A,...i,...n.deviceOptions||{}};return await e.callActionInActionSpace(o.name,a)}{let t=r.prompt;if("aiAssert"===A){var i;let{pass:A,thought:r}=await (null==e||null==(i=e.aiAssert)?void 0:i.call(e,t||"",void 0,{keepRawResponse:!0,...n}))||{};return{pass:A||!1,thought:r||""}}if(e&&"function"==typeof e[A])return await e[A](t,n);throw Error(`Unknown action type: ${A}`)}}var ex=t(6970),ej=t(2801),eP=t(8963).Buffer,ew={"node:fs"(e){e.exports=ej}},eN={},eO=function e(A){var t=eN[A];if(void 0!==t)return t.exports;var r=eN[A]={exports:{}};return ew[A](r,r.exports,e),r.exports}("node:fs");Z.NB;let eT=Z.x3;function eK(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}class eM{static create(e,A){return new eM((0,Z.uR)(),e,A)}get id(){return this._id}get format(){return this._format}get extension(){return"jpeg"===this._format?"jpeg":"png"}get capturedAt(){return this._capturedAt}get base64(){if(null!==this._base64)return this._base64;if(null!==this._persistedPath){let e=(0,ex.readFileSync)(this._persistedPath);return`data:image/${this._format};base64,${e.toString("base64")}`}if(null!==this._persistedHtmlPath){var e,A;let t,r,n=(e=this._persistedHtmlPath,A=this._id,t=`<script type="midscene-image" data-id="${A}">`,r=null,!function(e,A,t,r){let n=(0,eO.openSync)(e,"r"),o=(0,eO.statSync)(e).size,i=eP.alloc(65536),a=0,s="",l=!1,c="";try{for(;a<o;){let e=(0,eO.readSync)(n,i,0,65536,a),o=s+i.toString("utf-8",0,e);a+=e;let d=0;for(;d<o.length;)if(l){let e=o.indexOf(t,d);if(-1!==e){if(c+=o.slice(d,e),r(c))return;l=!1,c="",d=e+t.length}else{c+=o.slice(d,-t.length),s=o.slice(-t.length);break}}else{let e=o.indexOf(A,d);if(-1!==e){l=!0;let n=(c=o.slice(e+A.length)).indexOf(t);if(-1!==n){if(r(c.slice(0,n)))return;l=!1,c="",d=e+A.length+n+t.length}else{s=c.slice(-t.length),c=c.slice(0,-t.length);break}}else{s=o.slice(-A.length);break}}}}finally{(0,eO.closeSync)(n)}}(e,t,"<\/script>",e=>(r=eT(e),!0)),r);if(n)return n;throw Error(`Screenshot ${this._id}: cannot recover from HTML (id not found in ${this._persistedHtmlPath})`)}throw Error(`Screenshot ${this._id}: base64 data released without recovery path`)}hasBase64(){return null!==this._base64}markPersistedInline(e){this._persistedAs={$screenshot:this._id,capturedAt:this._capturedAt},this._persistedHtmlPath=e,this._base64=null}markPersistedToPath(e,A){this._persistedAs={base64:e,capturedAt:this._capturedAt},this._persistedPath=A,this._base64=null}toSerializable(){return this._persistedAs??{$screenshot:this._id,capturedAt:this._capturedAt}}static isSerialized(e){return"object"==typeof e&&null!==e&&("$screenshot"in e&&"string"==typeof e.$screenshot||"base64"in e&&"string"==typeof e.base64)&&"capturedAt"in e&&"number"==typeof e.capturedAt}get rawBase64(){return this.base64.replace(/^data:image\/(png|jpeg|jpg);base64,/,"")}constructor(e,A,t){eK(this,"_id",void 0),eK(this,"_base64",void 0),eK(this,"_format",void 0),eK(this,"_capturedAt",void 0),eK(this,"_persistedAs",null),eK(this,"_persistedPath",null),eK(this,"_persistedHtmlPath",null),this._id=e,this._base64=A,this._format=function(e){return e.startsWith("data:image/jpeg")||e.startsWith("data:image/jpg")?"jpeg":"png"}(A),this._capturedAt=t}}var eB=t(8963).Buffer;function eD(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}function ez(e,A){var t,r;return A&&(null==(t=A.constructor)?void 0:t.name)==="Page"?"[Page object]":A&&(null==(r=A.constructor)?void 0:r.name)==="Browser"?"[Browser object]":A&&"function"==typeof A.toSerializable?A.toSerializable():A}function eQ(e,A){return"screenshot"!==e||"object"!=typeof A||null===A||eM.isSerialized(A)||"base64"in A&&A.base64,A}class eL{serialize(e){return JSON.stringify(this.toJSON(),ez,e)}toJSON(){return{logTime:this.logTime,name:this.name,description:this.description,tasks:this.tasks.map(e=>({...e,recorder:e.recorder||[]})),aiActContext:this.aiActContext}}static fromSerializedString(e){return new eL(JSON.parse(e,eQ))}static fromJSON(e){return new eL(e)}collectScreenshots(){let e=[];for(let t of this.tasks){var A;if((null==(A=t.uiContext)?void 0:A.screenshot)instanceof eM&&e.push(t.uiContext.screenshot),t.recorder)for(let A of t.recorder)A.screenshot instanceof eM&&e.push(A.screenshot)}return e}constructor(e){eD(this,"logTime",void 0),eD(this,"name",void 0),eD(this,"description",void 0),eD(this,"tasks",void 0),eD(this,"aiActContext",void 0),this.logTime=e.logTime,this.name=e.name,this.description=e.description,this.tasks=e.tasks,this.aiActContext=e.aiActContext}}class eZ{serialize(e){return JSON.stringify(this.toJSON(),ez,e)}serializeWithInlineScreenshots(e){let A=e=>e instanceof eM?{base64:e.base64,capturedAt:e.capturedAt}:Array.isArray(e)?e.map(A):e&&"object"==typeof e?Object.fromEntries(Object.entries(e).map(e=>{let[t,r]=e;return[t,A(r)]})):e;return JSON.stringify(A(this.toJSON()),null,e)}toJSON(){return{sdkVersion:this.sdkVersion,groupName:this.groupName,groupDescription:this.groupDescription,modelBriefs:this.modelBriefs,executions:this.executions.map(e=>e.toJSON()),deviceType:this.deviceType}}static fromSerializedString(e){return new eZ(JSON.parse(e,eQ))}static fromJSON(e){return new eZ(e)}collectAllScreenshots(){let e=[];for(let A of this.executions)e.push(...A.collectScreenshots());return e}serializeToFiles(e){let A=`${e}.screenshots`;(0,ex.existsSync)(A)||(0,ex.mkdirSync)(A,{recursive:!0});let t={};for(let e of this.collectAllScreenshots())if(e.hasBase64()){let r=(0,ed.join)(A,`${e.id}.${e.extension}`),n=e.rawBase64;(0,ex.writeFileSync)(r,eB.from(n,"base64")),t[e.id]=r}(0,ex.writeFileSync)(`${e}.screenshots.json`,JSON.stringify(t),"utf-8"),(0,ex.writeFileSync)(e,this.serialize(),"utf-8")}static fromFilesAsInlineJson(e){let A=(0,ex.readFileSync)(e,"utf-8"),t=`${e}.screenshots.json`;if(!(0,ex.existsSync)(t))return A;let r=JSON.parse((0,ex.readFileSync)(t,"utf-8")),n={};for(let[e,A]of Object.entries(r))if((0,ex.existsSync)(A)){let t=(0,ex.readFileSync)(A),r=A.endsWith(".jpeg")||A.endsWith(".jpg")?"jpeg":"png";n[e]=`data:image/${r};base64,${t.toString("base64")}`}return JSON.stringify(function e(A,t){if("string"==typeof A)return A;if(Array.isArray(A))return A.map(A=>e(A,t));if("object"==typeof A&&null!==A){if("$screenshot"in A){let e=A.$screenshot,r="number"==typeof A.capturedAt?A.capturedAt:void 0;if("string"==typeof e){if(e.startsWith("data:image/")||e.startsWith("./")||e.startsWith("/"))return{base64:e,capturedAt:r};let A=null;return Object.defineProperties({},{base64:{get:()=>(null===A&&(A=t(e)),A),enumerable:!0},capturedAt:{value:r,enumerable:!0}})}return console.warn("Invalid $screenshot value type:",typeof e),{base64:""}}let r={};for(let[n,o]of Object.entries(A))r[n]=e(o,t);return r}return A}(JSON.parse(A),e=>n[e]??""))}static cleanupFiles(e){for(let A of[e,`${e}.screenshots.json`,`${e}.screenshots`])try{(0,ex.rmSync)(A,{force:!0,recursive:!0})}catch{}}static getFilePaths(e){return[e,`${e}.screenshots.json`,`${e}.screenshots`]}constructor(e){eD(this,"sdkVersion",void 0),eD(this,"groupName",void 0),eD(this,"groupDescription",void 0),eD(this,"modelBriefs",void 0),eD(this,"executions",void 0),eD(this,"deviceType",void 0),this.sdkVersion=e.sdkVersion,this.groupName=e.groupName,this.groupDescription=e.groupDescription,this.modelBriefs=e.modelBriefs,this.executions=e.executions.map(e=>e instanceof eL?e:eL.fromJSON(e)),this.deviceType=e.deviceType}}function eX(e){return e.subType||e.type}function eJ(e){if(!e)return"";if("string"==typeof e)return e;if("object"==typeof e){if("object"==typeof e.prompt&&null!==e.prompt&&e.prompt.prompt)return e.prompt.prompt;if("string"==typeof e.prompt)return e.prompt;if("string"==typeof e.description)return e.description}return""}function eU(e){var A,t,r,n,o,i,a,s,l,c;let d;if("Planning"===e.type&&(d="Locate"===e.subType?eJ(null==e?void 0:e.param):(null==(A=e.output)?void 0:A.log)||(null==(t=e.param)?void 0:t.userInstruction)),"Insight"===e.type&&(d=function(e){if(!e)return{content:""};let A=e=>{var A;return(null==e||null==(A=e.multimodalPrompt)?void 0:A.images)&&Array.isArray(e.multimodalPrompt.images)?e.multimodalPrompt.images:void 0},t=e=>"string"==typeof e?e:JSON.stringify(e);if(e.demand)return{content:t(e.demand),images:A(e)};if(e.assertion)return{content:t(e.assertion),images:A(e)};if(e.dataDemand){let{dataDemand:r}=e;if("string"==typeof r)return{content:r};if("object"==typeof r)return{content:t(r.demand||r),images:A(r)}}return{content:""}}(null==e?void 0:e.param).content),"Action Space"===e.type){let A=null==e||null==(r=e.param)?void 0:r.locate,t=A?eJ(A):"";(d=e.thought||"","number"==typeof(null==e||null==(n=e.param)?void 0:n.timeMs))?d=`${null==e||null==(o=e.param)?void 0:o.timeMs}ms`:"string"==typeof(null==e||null==(i=e.param)?void 0:i.scrollType)?d=(c=null==e?void 0:e.param)?`${c.direction||"down"}, ${c.scrollType||"singleAction"}, ${c.distance||"distance-not-set"}`:"":"string"==typeof(null==e||null==(a=e.param)?void 0:a.direction)&&(null==e?void 0:e.subType)==="PullGesture"?d=function(e){if(!e)return"";let A=[];return A.push(`direction: ${e.direction||"down"}`),e.distance&&A.push(`distance: ${e.distance}`),e.duration&&A.push(`duration: ${e.duration}ms`),A.join(", ")}(null==e?void 0:e.param):void 0!==(null==e||null==(s=e.param)?void 0:s.value)?d=null==e||null==(l=e.param)?void 0:l.value:(null==e?void 0:e.param)&&"object"==typeof(null==e?void 0:e.param)&&Object.keys((null==e?void 0:e.param)||{}).length>0&&(d=null==e?void 0:e.param),t&&(d=d&&"object"!=typeof d?`${t} - ${d}`:t)}if(void 0===d)return"";if("string"==typeof d)return d;if("object"==typeof d){let e=eJ(d);return e||JSON.stringify(d,void 0,2)}return String(d)}(0,O.aZ)("ai:service"),(0,O.aZ)("task-timing"),(0,O.aZ)("task-runner"),t(3009),t(5207),t(1344),t(8963).Buffer,t(5409),t(8963).Buffer,t(9140),eu.z.object({locate:eh.describe("The element to be tapped")}),eu.z.object({locate:eh.describe("The element to be right clicked")}),eu.z.object({locate:eh.describe("The element to be double clicked")}),eu.z.object({locate:eh.describe("The element to be hovered")}),eu.z.object({value:eu.z.union([eu.z.string(),eu.z.number()]).transform(e=>String(e)).describe("The text to input. Provide the final content for replace/append modes, or an empty string when using clear mode to remove existing text."),locate:eh.describe("the position of the placeholder or text content in the target input field. If there is no content, locate the center of the input field.").optional(),mode:eu.z.enum(["replace","clear","typeOnly"]).default("replace").describe('Input mode: "replace" (default) - clear the field and input the value; "typeOnly" - type the value directly without clearing the field first; "clear" - clear the field without inputting new text.')}),eu.z.object({locate:eh.describe("The element to be clicked before pressing the key").optional(),keyName:eu.z.string().describe("The key to be pressed. Use '+' for key combinations, e.g., 'Control+A', 'Shift+Enter'")}),eu.z.object({scrollType:eu.z.enum(["singleAction","scrollToBottom","scrollToTop","scrollToRight","scrollToLeft"]).default("singleAction").describe('The scroll behavior: "singleAction" for a single scroll action, "scrollToBottom" for scrolling all the way to the bottom by rapidly scrolling 5-10 times (skipping intermediate content until reaching the bottom), "scrollToTop" for scrolling all the way to the top by rapidly scrolling 5-10 times (skipping intermediate content until reaching the top), "scrollToRight" for scrolling all the way to the right by rapidly scrolling multiple times, "scrollToLeft" for scrolling all the way to the left by rapidly scrolling multiple times'),direction:eu.z.enum(["down","up","right","left"]).default("down").describe('The direction to scroll. Only effective when scrollType is "singleAction".'),distance:eu.z.number().nullable().optional().describe("The distance in pixels to scroll"),locate:eh.optional().describe('Describe the target element to be scrolled on, like "the table" or "the list" or "the content area" or "the scrollable area". Do NOT provide a general intent like "scroll to find some element"')}),eu.z.object({from:eh.describe("The position to be dragged"),to:eh.describe("The position to be dropped")}),eu.z.object({locate:eh.describe("The element to be long pressed"),duration:eu.z.number().default(500).optional().describe("Long press duration in milliseconds")}),eu.z.object({start:eh.optional().describe("Starting point of the swipe gesture, if not specified, the center of the page will be used"),direction:eu.z.enum(["up","down","left","right"]).optional().describe("The direction to swipe (required when using distance). The direction means the direction of the finger swipe."),distance:eu.z.number().optional().describe("The distance in pixels to swipe (mutually exclusive with end)"),end:eh.optional().describe("Ending point of the swipe gesture (mutually exclusive with distance)"),duration:eu.z.number().default(300).describe("Duration of the swipe gesture in milliseconds"),repeat:eu.z.number().optional().describe("The number of times to repeat the swipe gesture. 1 for default, 0 for infinite (e.g. endless swipe until the end of the page)")}),eu.z.object({locate:eh.describe("The input field to be cleared").optional()}),eu.z.object({direction:eu.z.enum(["left","right"]).describe("The direction to move the cursor"),times:eu.z.number().int().min(1).default(1).describe("The number of times to move the cursor in the specified direction")}),eu.z.object({timeMs:eu.z.number().default(1e3).optional().describe("Sleep duration in milliseconds, defaults to 1000ms (1 second)")}),t(8586),t(9300),t(5409),t(8963).Buffer,(0,O.aZ)("cache"),(0,O.aZ)("agent:task-builder"),(0,O.aZ)("device-task-executor"),(0,O.aZ)("agent"),["read-only","read-write","write-only"].map(e=>`"${e}"`).join(", ");class eF{async getActionSpace(e){return[]}validateParams(e,A){if(!(null==A?void 0:A.paramSchema)||!this.actionNeedsStructuredParams(A))return{valid:!0};if(!e.params)return{valid:!1,errorMessage:"Parameters are required"};try{let t=this.prepareParamsForValidation(e.params,A);return A.paramSchema.parse(t),{valid:!0}}catch(e){return this.handleValidationError(e)}}createDisplayContent(e,A,t){return A&&e.params&&(null==t?void 0:t.paramSchema)?this.buildParamsDisplayList(e.params,t).join("\n")||e.prompt||"":e.prompt||""}formatBasicErrorMessage(e){return(null==e?void 0:e.message)||"Unknown error"}getSchemaKeys(e){if(!(null==e?void 0:e.paramSchema)||!("shape"in e.paramSchema))return[];let A=e.paramSchema;return A&&"shape"in A?Object.keys(A.shape):[]}filterValidParams(e){let A=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t={};return Object.keys(e).forEach(r=>{A.includes(r)||void 0===e[r]||null===e[r]||""===e[r]||(t[r]=e[r])}),t}actionNeedsStructuredParams(e){return"object"!=typeof e.paramSchema||!("shape"in e.paramSchema)||Object.keys(e.paramSchema.shape||{}).length>0}prepareParamsForValidation(e,A){let t={...e};return A.paramSchema&&ey(A.paramSchema).forEach(e=>{"string"==typeof t[e]&&(t[e]={midscene_location_field_flag:!0,prompt:t[e],center:[0,0],rect:{left:0,top:0,width:0,height:0}})}),t}handleValidationError(e){if(e.errors&&e.errors.length>0){let A=e.errors.filter(e=>{let A=e.path.join(".");return!A.includes("center")&&!A.includes("rect")&&!A.includes("midscene_location_field_flag")}).map(e=>{let A=e.path.join(".");return`${A}: ${e.message}`});if(A.length>0)return{valid:!1,errorMessage:`Validation error: ${A.join(", ")}`}}let A=e instanceof Error?e.message:"Unknown validation error";return{valid:!1,errorMessage:`Parameter validation failed: ${A}`}}buildParamsDisplayList(e,A){let t=[],r=A.paramSchema;if(!(r&&"shape"in r))return t;let n=ey(r);return Object.keys(r.shape).forEach(A=>{let r=e[A];if(this.isValidParamValue(r)){let e=this.capitalizeFirstLetter(A),o=this.formatParamValue(A,r,n.includes(A));t.push(`${e}: ${o}`)}}),t}isValidParamValue(e){return null!=e&&""!==e}capitalizeFirstLetter(e){return e.charAt(0).toUpperCase()+e.slice(1)}formatParamValue(e,A,t){return t||"string"==typeof A?`"${A}"`:"number"==typeof A&&"distance"===e?`${A}px`:`${A}`}}function eq(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}class eV extends eF{get id(){return this._id}onDumpUpdate(e){this.dumpUpdateCallback=void 0,this.dumpUpdateCallback=e}setProgressCallback(e){this.progressCallback=void 0,this.progressCallback=e}async parseStructuredParams(e,A,t){return await eI(e,A,t)}formatErrorMessage(e){return((null==e?void 0:e.message)||"").includes("of different extension")?"Conflicting extension detected. Please disable the suspicious plugins and refresh the page. Guide: https://midscenejs.com/quick-experience.html#faq":this.formatBasicErrorMessage(e)}async getActionSpace(e){var A;if(!this.agent&&this.agentFactory)try{this.agent=await this.agentFactory()}catch(e){return console.warn("Failed to create agent for actionSpace:",e),[]}if(null==(A=this.agent)?void 0:A.getActionSpace)return await this.agent.getActionSpace();if(this.agent&&"interface"in this.agent&&"object"==typeof this.agent.interface){let e=this.agent.interface;if(null==e?void 0:e.actionSpace)return e.actionSpace()}return e&&"object"==typeof e&&"actionSpace"in e?e.actionSpace():[]}async checkStatus(){return!0}async overrideConfig(e){G(e),console.log("Config updated. Agent will be recreated on next execution.")}async detachDebuggerSafely(){try{var e,A;let t=null==(e=this.agent)?void 0:e.interface;await (null==t||null==(A=t.detachDebugger)?void 0:A.call(t))}catch(e){console.warn("Failed to detach debugger:",e)}}async executeAction(e,A,t){var r,n,o,i;let a;if(this.agentFactory){if(this.agent){console.log("Destroying old agent before execution...");try{await (null==(r=(n=this.agent).destroy)?void 0:r.call(n))}catch(e){console.warn("Failed to destroy old agent:",e)}this.agent=null}await this.recreateAgent()}if(!this.agent)throw Error("No agent available. Please provide either an agent instance or agentFactory.");let s=this.agent,l=await this.getActionSpace();try{null==(o=s.resetDump)||o.call(s)}catch(e){console.warn("Failed to reset dump before execution:",e)}t.requestId&&(this.currentRequestId=t.requestId,a=s.addDumpUpdateListener((e,A)=>{this.currentRequestId===t.requestId&&this.dumpUpdateCallback&&this.dumpUpdateCallback(e,A)}));try{let r=null,n=null;try{r=await eR(s,e,l,A,t)}catch(e){n=e}let o={result:r,dump:null,reportHTML:null,error:n?n instanceof Error?n.message:String(n):null};try{if(s.dumpDataString){let e=s.dumpDataString();e&&(o.dump=(null==(i=eZ.fromSerializedString(e).executions)?void 0:i[0])||null)}}catch(e){console.warn("Failed to get dump from agent:",e)}try{s.reportHTMLString&&(o.reportHTML=s.reportHTMLString()||null)}catch(e){}try{s.writeOutActionDumps&&s.writeOutActionDumps()}catch(e){}return o}finally{a&&a()}}async recreateAgent(){if(!this.agentFactory)throw Error("Cannot recreate agent: factory function not provided. Please provide agentFactory in PlaygroundConfig to enable agent recreation.");console.log("Creating new agent with latest config...");try{this.agent=await this.agentFactory(),console.log("Agent created successfully")}catch(e){throw console.error("Failed to create agent:",e),e}}async cancelTask(e){var A,t,r;if(!this.agent)return{error:"No active agent found for this requestId"};let n=null,o=null;try{if("function"==typeof this.agent.dumpDataString){let e=this.agent.dumpDataString();e&&(n=(null==(A=eZ.fromSerializedString(e).executions)?void 0:A[0])??null)}}catch(e){console.warn("[LocalExecutionAdapter] Failed to get dump data before cancel:",e)}try{if("function"==typeof this.agent.reportHTMLString){let e=this.agent.reportHTMLString();e&&"string"==typeof e&&!e.includes("REPLACE_ME_WITH_REPORT_HTML")&&(o=e)}}catch(e){console.warn("[LocalExecutionAdapter] reportHTMLString not available in this environment")}try{return await (null==(t=(r=this.agent).destroy)?void 0:t.call(r)),this.agent=null,{success:!0,dump:n,reportHTML:o}}catch(A){let e=A instanceof Error?A.message:"Unknown error";return console.error(`[LocalExecutionAdapter] Failed to cancel agent: ${e}`),{error:`Failed to cancel: ${e}`,dump:n,reportHTML:o}}}async getCurrentExecutionData(){let e={dump:null,reportHTML:null};try{var A,t,r;if(null==(A=this.agent)?void 0:A.dumpDataString){let A=this.agent.dumpDataString();A&&(e.dump=(null==(r=eZ.fromSerializedString(A).executions)?void 0:r[0])||null)}(null==(t=this.agent)?void 0:t.reportHTMLString)&&(e.reportHTML=this.agent.reportHTMLString()||null)}catch(e){console.error("Failed to get current execution data:",e)}return e}async getInterfaceInfo(){var e,A,t;if(!(null==(e=this.agent)?void 0:e.interface))return null;try{let e=this.agent.interface.interfaceType||"Unknown",r=(null==(A=(t=this.agent.interface).describe)?void 0:A.call(t))||void 0;return{type:e,description:r}}catch(e){return console.error("Failed to get interface info:",e),null}}constructor(e,A){super(),eq(this,"agent",void 0),eq(this,"agentFactory",void 0),eq(this,"dumpUpdateCallback",void 0),eq(this,"progressCallback",void 0),eq(this,"_id",void 0),eq(this,"currentRequestId",void 0),this.agent=e??null,this.agentFactory=A,this._id=(0,Z.uR)()}}function eH(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}class eG extends eF{onDumpUpdate(e){this.dumpUpdateCallback=void 0,this.dumpUpdateCallback=e}get id(){return this._id}validateParams(e,A){if(!(null==A?void 0:A.paramSchema)||!this.actionNeedsStructuredParams(A))return{valid:!0};if(!e.params)return{valid:!1,errorMessage:"Parameters are required"};if(A.paramSchema&&"object"==typeof A.paramSchema){let t=A.paramSchema;if(t.shape||"ZodObject"===t.type){let A=t.shape||{},r=Object.keys(A).filter(t=>{var r,n;let o=A[t];return!((null==o?void 0:o.isOptional)||(null==o||null==(r=o._def)?void 0:r.innerType)||(null==o||null==(n=o._def)?void 0:n.typeName)==="ZodOptional")&&(void 0===e.params[t]||""===e.params[t])});if(r.length>0)return{valid:!1,errorMessage:`Missing required parameters: ${r.join(", ")}`}}}return{valid:!0}}async parseStructuredParams(e,A,t){return await eI(e,A,t)}formatErrorMessage(e){let A=(null==e?void 0:e.message)||"",t=[{keyword:"adb",message:"ADB connection error. Please ensure device is connected and USB debugging is enabled."},{keyword:"UIAutomator",message:"UIAutomator error. Please ensure the UIAutomator server is running on the device."}].find(e=>{let{keyword:t}=e;return A.includes(t)});return t?t.message:this.formatBasicErrorMessage(e)}async executeAction(e,A,t){if(this.serverUrl&&"undefined"!=typeof window)return this.executeViaServer(e,A,t);throw Error("Remote execution adapter requires server URL for execution")}async executeViaServer(e,A,t){let r={type:e,prompt:A.prompt,...this.buildOptionalPayloadParams(t,A)};t.context&&(r.context=t.context),t.requestId&&this.dumpUpdateCallback&&this.startProgressPolling(t.requestId);try{let e=await fetch(`${this.serverUrl}/execute`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!e.ok){let A=await e.text().catch(()=>"Unknown error");throw Error(`Server request failed (${e.status}): ${A}`)}return await e.json()}catch(e){throw console.error("Execute via server failed:",e),e}finally{this.stopProgressPolling()}}buildOptionalPayloadParams(e,A){let t={};return[{key:"requestId",value:e.requestId},{key:"deepLocate",value:e.deepLocate},{key:"deepThink",value:e.deepThink},{key:"screenshotIncluded",value:e.screenshotIncluded},{key:"domIncluded",value:e.domIncluded},{key:"deviceOptions",value:e.deviceOptions},{key:"params",value:A.params}].forEach(e=>{let{key:A,value:r}=e;null!=r&&""!==r&&(t[A]=r)}),t}async getActionSpace(e){if(this.serverUrl&&"undefined"!=typeof window)try{let A=await fetch(`${this.serverUrl}/action-space`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({context:e})});if(!A.ok)throw Error(`Failed to get action space: ${A.statusText}`);let t=await A.json();return Array.isArray(t)?t:[]}catch(e){console.error("Failed to get action space from server:",e)}if(e&&"object"==typeof e&&"actionSpace"in e)try{let A=e.actionSpace,t=await A();return Array.isArray(t)?t:[]}catch(e){console.error("Failed to get action space from context:",e)}return[]}async checkStatus(){if(!this.serverUrl)return!1;try{let e=await fetch(`${this.serverUrl}/status`);if(200===e.status){try{let A=await e.json();A.id&&"string"==typeof A.id&&(this._id=A.id)}catch(e){console.debug("Failed to parse status response:",e)}return!0}return!1}catch(e){return console.warn("Server status check failed:",e),!1}}async overrideConfig(e){if(!this.serverUrl)throw Error("Server URL not configured");try{let A=await fetch(`${this.serverUrl}/config`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({aiConfig:e})});if(!A.ok){let e=await A.json().catch(()=>null),t=(null==e?void 0:e.error)||A.statusText;throw Error(t)}}catch(e){throw console.error("Failed to override server config:",e),e}}async getTaskProgress(e){if(!this.serverUrl)return{};if(!(null==e?void 0:e.trim()))return console.warn("Invalid requestId provided for task progress"),{};try{let A=await fetch(`${this.serverUrl}/task-progress/${encodeURIComponent(e)}`);if(!A.ok)return console.warn(`Task progress request failed: ${A.statusText}`),{};return await A.json()}catch(e){return console.error("Failed to poll task progress:",e),{}}}startProgressPolling(e){this.stopProgressPolling(),this.pollingIntervalId=setInterval(async()=>{try{let A=await this.getTaskProgress(e);A.executionDump&&this.dumpUpdateCallback&&this.dumpUpdateCallback("",A.executionDump)}catch(e){console.error("Error polling task progress:",e)}},500)}stopProgressPolling(){this.pollingIntervalId&&(clearInterval(this.pollingIntervalId),this.pollingIntervalId=void 0)}async cancelTask(e){if(!this.serverUrl)return{error:"No server URL configured"};if(!(null==e?void 0:e.trim()))return{error:"Invalid request ID"};try{let A=await fetch(`${this.serverUrl}/cancel/${encodeURIComponent(e)}`,{method:"POST"});if(!A.ok)return{error:`Cancel request failed: ${A.statusText}`};let t=await A.json();return{success:!0,...t}}catch(e){return console.error("Failed to cancel task:",e),{error:"Failed to cancel task"}}}async getScreenshot(){if(!this.serverUrl)return null;try{let e=await fetch(`${this.serverUrl}/screenshot`);if(!e.ok)return console.warn(`Screenshot request failed: ${e.statusText}`),null;return await e.json()}catch(e){return console.error("Failed to get screenshot:",e),null}}async getInterfaceInfo(){if(!this.serverUrl)return null;try{let e=await fetch(`${this.serverUrl}/interface-info`);if(!e.ok)return console.warn(`Interface info request failed: ${e.statusText}`),null;return await e.json()}catch(e){return console.error("Failed to get interface info:",e),null}}constructor(e){super(),eH(this,"serverUrl",void 0),eH(this,"_id",void 0),eH(this,"dumpUpdateCallback",void 0),eH(this,"pollingIntervalId",void 0),this.serverUrl=e}}class eW{createAdapter(e,A,t,r){switch(e){case"local-execution":if(!t&&!r)throw Error("Agent or agentFactory is required for local execution");return new eV(t,r);case"remote-execution":return new eG(A||("undefined"!=typeof window&&window.location.protocol.includes("http")?window.location.origin:"http://localhost:5800"));default:throw Error(`Unsupported execution type: ${e}`)}}async executeAction(e,A,t){return await this.adapter.executeAction(e,A,t)}async getActionSpace(e){return this.adapter.getActionSpace(e)}validateStructuredParams(e,A){return this.adapter.validateParams(e,A)}formatErrorMessage(e){return this.adapter.formatErrorMessage(e)}createDisplayContent(e,A,t){return this.adapter.createDisplayContent(e,A,t)}get id(){if(this.adapter instanceof eG||this.adapter instanceof eV)return this.adapter.id}async checkStatus(){return!(this.adapter instanceof eG)||this.adapter.checkStatus()}async overrideConfig(e){if(this.adapter instanceof eG)return this.adapter.overrideConfig(e)}async getTaskProgress(e){return this.adapter instanceof eG?this.adapter.getTaskProgress(e):{}}async cancelTask(e){return this.adapter instanceof eG?this.adapter.cancelTask(e):{error:"Cancel task not supported in local execution mode"}}onDumpUpdate(e){this.adapter instanceof eV?this.adapter.onDumpUpdate(e):this.adapter instanceof eG&&this.adapter.onDumpUpdate(e)}onProgressUpdate(e){this.adapter instanceof eV&&this.adapter.setProgressCallback(e)}async cancelExecution(e){if(this.adapter instanceof eG){let A=await this.adapter.cancelTask(e);if(A.success)return{dump:A.dump||null,reportHTML:A.reportHTML||null}}else if(this.adapter instanceof eV){let A=await this.adapter.cancelTask(e);if(A.success)return{dump:A.dump||null,reportHTML:A.reportHTML||null}}return null}async getCurrentExecutionData(){return this.adapter instanceof eV&&this.adapter.getCurrentExecutionData?await this.adapter.getCurrentExecutionData():{dump:null,reportHTML:null}}async getScreenshot(){return this.adapter instanceof eG?this.adapter.getScreenshot():null}async getInterfaceInfo(){return this.adapter instanceof eV||this.adapter instanceof eG?this.adapter.getInterfaceInfo():null}getServiceMode(){return this.adapter instanceof eV?"In-Browser-Extension":"Server"}constructor(e){!function(e,A,t){A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t}(this,"adapter",void 0),this.adapter=this.createAdapter(e.type,e.serverUrl,e.agent,e.agentFactory)}}function eY(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}let e_=function(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0],[A,t]=(0,et.useState)(!0),{serviceMode:r}=N();return(0,et.useEffect)(()=>{let A=!1;if(e){var r;return Promise.resolve((r=function*(){for(;!A;){let e=new eW({type:"remote-execution"});(yield e.checkStatus())?t(!0):t(!1),yield new Promise(e=>setTimeout(e,1e3))}},function(){var e=this,A=arguments;return new Promise(function(t,n){var o=r.apply(e,A);function i(e){eY(o,t,n,i,a,"next",e)}function a(e){eY(o,t,n,i,a,"throw",e)}i(void 0)})})()),()=>{A=!0}}},[r,e]),A},e$=e=>{let{selectedDeviceId:A,scrcpyPlayerRef:t}=e,[n,o]=W.Ay.useMessage(),i=e_(!0);return(0,et.useCallback)(()=>{t.current&&(t.current.disconnectDevice(),n.info("Device disconnected"))},[t,n]),(0,r.jsxs)("div",{className:"device-header",children:[o,(0,r.jsxs)("div",{className:"device-title-container",children:[(0,r.jsx)("h2",{className:"device-title",children:"Device"}),(0,r.jsxs)("div",{className:"device-info-display",children:[(0,r.jsxs)("div",{className:"device-icon-container",children:[(0,r.jsx)(ec.A,{className:"device-icon"}),A&&i&&(0,r.jsx)("div",{className:"status-indicator",children:(0,r.jsx)("span",{className:"status-dot",style:{color:"#52c41a"},children:"●"})})]}),A?(0,r.jsx)("span",{className:"device-name",children:A}):(0,r.jsx)("span",{className:"device-name no-device",children:"No device selected"})]})]})]})},e0=e=>{let{hideLogo:A=!1}=e,{isDarkMode:t}=function(){let[e,A]=(0,et.useState)(!1);return(0,et.useEffect)(()=>{let e=()=>{var e;A("dark"===(null==(e=document.querySelector("[data-theme]"))?void 0:e.getAttribute("data-theme")))};e();let t=new MutationObserver(e),r=document.querySelector("[data-theme]")||document.documentElement;return t.observe(r,{attributes:!0,attributeFilter:["data-theme"]}),()=>t.disconnect()},[]),{isDarkMode:e}}();return A?null:(0,r.jsx)("div",{className:"logo",children:(0,r.jsx)("a",{href:"https://midscenejs.com/",target:"_blank",rel:"noreferrer",children:(0,r.jsx)("img",{alt:"Midscene_logo",src:t?"https://lf3-static.bytednsdoc.com/obj/eden-cn/nupipfups/Midscene/midscene_with_text_dark.png":"https://lf3-static.bytednsdoc.com/obj/eden-cn/nupipfups/Midscene/midscene_with_text_light.png"})})})};var e1=t(4177),e2=t(6766),e3=t(6419),e5=t(8594),e6=t(505),e7=t(4174);function e9(e){let{showTooltipWhenEmpty:A=!0,showModelName:t=!0,tooltipPlacement:n="bottom",mode:o="icon"}=e,{config:i,configString:a,loadConfig:s,syncFromStorage:l}=N(),[c,d]=(0,et.useState)(!1),[u,p]=(0,et.useState)(a),g=i.MIDSCENE_MODEL_NAME,m=(0,et.useRef)(null),f=e=>{l(),d(!0),e.preventDefault(),e.stopPropagation()};return(0,et.useEffect)(()=>{c&&p(a)},[c,a]),(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"10px",alignItems:"center",height:"100%",minHeight:"32px"},ref:m,children:[t?g:null,(0,r.jsx)(ee.A,{title:"Please set up your environment variables before using.",placement:n,align:{offset:[-10,5]},getPopupContainer:()=>m.current,open:!c&&(A?0===Object.keys(i).length:void 0),children:"icon"===o?(0,r.jsx)(e5.A,{onClick:f}):(0,r.jsx)("span",{onClick:f,style:{color:"#006AFF",cursor:"pointer"},children:"set up"})}),(0,r.jsxs)(e6.A,{title:"Model Env Config",open:c,onOk:()=>{d(!1),s(u)},onCancel:()=>{d(!1)},okText:"Save",style:{width:"800px",height:"100%",marginTop:"10%"},destroyOnClose:!0,maskClosable:!0,centered:!0,children:[(0,r.jsx)(e7.A.TextArea,{rows:7,placeholder:"MIDSCENE_MODEL_API_KEY=sk-...\nMIDSCENE_MODEL_NAME=gpt-4o-2024-08-06\n...",value:u,onChange:e=>p(e.target.value),style:{whiteSpace:"nowrap",wordWrap:"break-word"}}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{children:"The format is KEY=VALUE and separated by new lines."}),(0,r.jsxs)("p",{children:["These data will be saved ",(0,r.jsx)("strong",{children:"locally in your browser"}),"."]})]})]})]})}function e8(e){let{showEnvConfig:A=!0,showTooltipWhenEmpty:t=!1,showModelName:n=!1,githubUrl:o="https://github.com/web-infra-dev/midscene",helpUrl:i="https://midscenejs.com/quick-experience.html",className:a=""}=e;return(0,r.jsxs)("div",{className:`nav-actions ${a}`,children:[(0,r.jsx)(e3.A.Link,{href:o,target:"_blank",children:(0,r.jsx)(e1.A,{className:"nav-icon"})}),(0,r.jsx)(e3.A.Link,{href:i,target:"_blank",children:(0,r.jsx)(e2.A,{className:"nav-icon"})}),A&&(0,r.jsx)(e9,{showTooltipWhenEmpty:t,showModelName:n})]})}var e4=t(4707),Ae=t(9870),AA=t(9877),At=t(3147),Ar=t(6620),An=t(5810),Ao=t(638);let Ai="Auto dismiss keyboard",Aa={aiAct:{group:"interaction",title:"Auto Planning: plan the steps and execute"},aiTap:{group:"interaction",title:"Click an element"},aiDoubleClick:{group:"interaction",title:"Double-click an element"},aiHover:{group:"interaction",title:"Hover over an element"},aiInput:{group:"interaction",title:"Input text into an element"},aiRightClick:{group:"interaction",title:"Right-click an element"},aiKeyboardPress:{group:"interaction",title:"Press keyboard keys"},aiScroll:{group:"interaction",title:"Scroll the page or element"},aiLocate:{group:"interaction",title:"Locate an element on the page"},aiQuery:{group:"extraction",title:"Extract data directly from the UI"},aiBoolean:{group:"extraction",title:"Get true/false answer"},aiNumber:{group:"extraction",title:"Extract numeric value"},aiString:{group:"extraction",title:"Extract text value"},aiAsk:{group:"extraction",title:"Ask a question about the UI"},aiAssert:{group:"validation",title:"Assert a condition is true"},aiWaitFor:{group:"validation",title:"Wait for a condition to be met"}},As=["aiAct","aiTap","aiQuery","aiAssert"],Al=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"web page";return{type:"system",content:`
|
|
1
|
+
/*! For license information please see index.369ca451.js.LICENSE.txt */
|
|
2
|
+
(()=>{var e,A,t,r,n,o,i,a={5737(e){function A(e){return Promise.resolve().then(function(){var A=Error("Cannot find module '"+e+"'");throw A.code="MODULE_NOT_FOUND",A})}A.keys=()=>[],A.resolve=A,A.id=5737,e.exports=A},8541(e){function A(e){return Promise.resolve().then(function(){var A=Error("Cannot find module '"+e+"'");throw A.code="MODULE_NOT_FOUND",A})}A.keys=()=>[],A.resolve=A,A.id=8541,e.exports=A},9998(e){function A(e){return Promise.resolve().then(function(){var A=Error("Cannot find module '"+e+"'");throw A.code="MODULE_NOT_FOUND",A})}A.keys=()=>[],A.resolve=A,A.id=9998,e.exports=A},3348(e){function A(e){return Promise.resolve().then(function(){var A=Error("Cannot find module '"+e+"'");throw A.code="MODULE_NOT_FOUND",A})}A.keys=()=>[],A.resolve=A,A.id=3348,e.exports=A},8817(e){function A(e){return Promise.resolve().then(function(){var A=Error("Cannot find module '"+e+"'");throw A.code="MODULE_NOT_FOUND",A})}A.keys=()=>[],A.resolve=A,A.id=8817,e.exports=A},1560(e){function A(e){return Promise.resolve().then(function(){var A=Error("Cannot find module '"+e+"'");throw A.code="MODULE_NOT_FOUND",A})}A.keys=()=>[],A.resolve=A,A.id=1560,e.exports=A},5723(e,A,t){"use strict";var r=t(8104),n=t(8997),o=t(8926),i={};i.d=(e,A)=>{for(var t in A)i.o(A,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},i.o=(e,A)=>Object.prototype.hasOwnProperty.call(e,A),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};i.r(a),i.d(a,{create:()=>o.vt});let{create:s}=a,l="midscene-auto-zoom",c="midscene-background-visible",d="midscene-elements-visible",u="midscene-model-call-details",p="midscene-dark-mode",g="midscene-playback-speed",m="midscene-subtitle-enabled",h=e=>{if("undefined"==typeof window)return;var A=new URLSearchParams(window.location.search).get(e);if(null===A)return;let t=A.trim().toLowerCase();return!!["1","true","yes","on"].includes(t)||!["0","false","no","off"].includes(t)&&void 0},f=s(e=>{let A="false"!==localStorage.getItem(l),t="false"!==localStorage.getItem(c),r="false"!==localStorage.getItem(d),n="true"===localStorage.getItem(u),o="true"===localStorage.getItem(p),i=Number.parseFloat(localStorage.getItem(g)||"1"),a=Number.isNaN(i)?1:i,s="false"!==localStorage.getItem(m),f=h("focusOnCursor"),y=h("showElementMarkers"),E=h("darkMode"),v=void 0===E?o:E;return void 0!==E&&localStorage.setItem(p,v.toString()),{backgroundVisible:t,elementsVisible:void 0===y?r:y,autoZoom:void 0===f?A:f,modelCallDetailsEnabled:n,darkModeEnabled:v,playbackSpeed:[.5,1,1.5,2].includes(a)?a:1,setBackgroundVisible:A=>{e({backgroundVisible:A}),localStorage.setItem(c,A.toString())},setElementsVisible:A=>{e({elementsVisible:A}),localStorage.setItem(d,A.toString())},setAutoZoom:A=>{e({autoZoom:A}),localStorage.setItem(l,A.toString())},setModelCallDetailsEnabled:A=>{e({modelCallDetailsEnabled:A}),localStorage.setItem(u,A.toString())},setDarkModeEnabled:A=>{e({darkModeEnabled:A}),localStorage.setItem(p,A.toString())},setPlaybackSpeed:A=>{e({playbackSpeed:A}),localStorage.setItem(g,A.toString())},subtitleEnabled:s,setSubtitleEnabled:A=>{e({subtitleEnabled:A}),localStorage.setItem(m,A.toString())}}}),y="midscene-env-config",E="midscene-service-mode",v="midscene-tracking-active-tab",b="midscene-deep-locate",k="midscene-deep-think",C="midscene-screenshot-included",S="midscene-dom-included",I="midscene-ime-strategy",x="midscene-auto-dismiss-keyboard",R="midscene-keyboard-dismiss-strategy",j="midscene-always-refresh-screen-info",w=()=>localStorage.getItem(y)||"",P=e=>{let A=e.split("\n"),t={};return A.forEach(e=>{let A=e.trim();if(A.startsWith("#"))return;let r=A.replace(/^export\s+/i,"").replace(/;$/,"").trim().match(/^(\w+)=(.*)$/);if(r){let[,e,A]=r,n=A.trim();(n.startsWith("'")&&n.endsWith("'")||n.startsWith('"')&&n.endsWith('"'))&&(n=n.slice(1,-1)),t[e]=n}}),t},N=s((e,A)=>{let t=w(),r=P(t),n=window.location.href.startsWith("chrome-extension"),o=localStorage.getItem(E),i="false"!==localStorage.getItem(v),a="true"===localStorage.getItem(b),s="true"===localStorage.getItem(k),l="false"!==localStorage.getItem(C),c=localStorage.getItem(S)||"false";return{serviceMode:n?"In-Browser-Extension":o||"Server",setServiceMode:A=>{if(n)throw Error("serviceMode cannot be set in extension");e({serviceMode:A}),localStorage.setItem(E,A)},config:r,configString:t,setConfig:A=>e({config:A}),loadConfig:A=>{e({config:P(A),configString:A}),localStorage.setItem(y,A)},syncFromStorage:()=>{let A=w();e({config:P(A),configString:A})},forceSameTabNavigation:i,setForceSameTabNavigation:A=>{e({forceSameTabNavigation:A}),localStorage.setItem(v,A.toString())},deepLocate:a,setDeepLocate:A=>{e({deepLocate:A}),localStorage.setItem(b,A.toString())},deepThink:s,setDeepThink:A=>{e({deepThink:A}),localStorage.setItem(k,A.toString())},screenshotIncluded:l,setScreenshotIncluded:A=>{e({screenshotIncluded:A}),localStorage.setItem(C,A.toString())},domIncluded:"visible-only"===c?"visible-only":"true"===c,setDomIncluded:A=>{e({domIncluded:A}),localStorage.setItem(S,A.toString())},popupTab:"playground",setPopupTab:A=>{e({popupTab:A})},imeStrategy:localStorage.getItem(I)||"yadb-for-non-ascii",setImeStrategy:A=>{e({imeStrategy:A}),localStorage.setItem(I,A)},autoDismissKeyboard:"false"!==localStorage.getItem(x),setAutoDismissKeyboard:A=>{e({autoDismissKeyboard:A}),localStorage.setItem(x,A.toString())},keyboardDismissStrategy:localStorage.getItem(R)||"esc-first",setKeyboardDismissStrategy:A=>{e({keyboardDismissStrategy:A}),localStorage.setItem(R,A)},alwaysRefreshScreenInfo:"true"===localStorage.getItem(j),setAlwaysRefreshScreenInfo:A=>{e({alwaysRefreshScreenInfo:A}),localStorage.setItem(j,A.toString())}}});var O=t(4565),T=t(217),M=t(9368);let K=()=>{let e=(0,T.j)(M.v4),A="";e&&(console.warn("MIDSCENE_DEBUG_MODEL_PROFILE is deprecated, use DEBUG=midscene:ai:profile instead"),A="ai:profile"),(0,T.j)(M.$l)&&(console.warn("MIDSCENE_DEBUG_MODEL_RESPONSE is deprecated, use DEBUG=midscene:ai:response instead"),A=A?"ai:*":"ai:call"),A&&(0,O.Nw)(A)};var D=t(5409);function B(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}let z={modelName:M._q,socksProxy:M.T4,httpProxy:M.Yf,openaiBaseURL:M.kX,openaiApiKey:M.Lh,openaiExtraConfig:M.Z7,modelFamily:M.v,timeout:M.Yg,temperature:M.V7,retryCount:M.vC,retryInterval:M.xg,reasoningEffort:M.y2,reasoningEnabled:M.nc,reasoningBudget:M.fS},Q={modelName:M.xP,socksProxy:M.mZ,httpProxy:M.zQ,openaiBaseURL:M.zG,openaiApiKey:M.OK,openaiExtraConfig:M.ag,modelFamily:M.OY,timeout:M.Z$,temperature:M.Cn,retryCount:M.sg,retryInterval:M.wu,reasoningEffort:M.Vb,reasoningEnabled:M.u1,reasoningBudget:M.aO},L={modelName:M.HR,socksProxy:M.iw,httpProxy:M.FU,openaiBaseURL:M.$H,openaiApiKey:M.IQ,openaiExtraConfig:M.I2,modelFamily:M.yR,timeout:M.zD,temperature:M.W4,retryCount:M.Km,retryInterval:M.aK,reasoningEffort:M.VM,reasoningEnabled:M.M1,reasoningBudget:M.AU};var Z=t(9152);let X=function(e){let A=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"*";if("string"!=typeof e||0===e.length)return e;if(e.length<=6)return e;let t=e.substring(0,3),r=e.substring(e.length-3),n=e.length-6,o=A.repeat(n);return`${t}${o}${r}`},J=e=>Object.fromEntries(Object.entries(e).map(e=>{let[A,t]=e;if(!t)return[A,t];if("string"==typeof t&&/key/i.test(A))return[A,X(t)];if("object"==typeof t){let e=JSON.stringify(t);if(/key/i.test(e))return[A,X(e)]}return[A,t]})),U={insight:z,planning:Q,default:L},F=(e,A)=>{let t=(0,O.aZ)("ai:config");t("will decideModelConfig base on agent.modelConfig()",e,J(A));let r=U[e];if(!A[r.modelName])return void t("no modelName found for intent",e);let n=(e=>{var A,t,r;let n,{keys:o,provider:i,useLegacyLogic:a=!1}=e;K(),(0,O.aZ)("ai:config")("enter parseOpenaiSdkConfig with keys:",o);let s=a?i[M.Jq]:void 0,l=a?i[M.jG]:void 0,c=a?i[M.$]:void 0,d=a?i[M.CA]:void 0,u=a?i[M.b6]:void 0,p=a?(e=>{let A=e[M.pp],t=e[M.yb],r=e[M.NF],n=e[M.JM],o=e[M.j_],i=[A&&M.pp,t&&M.yb,r&&M.NF,n&&M.JM,o&&M.j_].filter(Boolean);if(i.length>1)throw Error(`Only one vision mode can be enabled at a time. Currently enabled modes: ${i.join(", ")}. Please disable all but one mode.`);if(r)return"qwen3-vl";if(t)return"qwen2.5-vl";if(A)return"doubao-vision";if(o)return"gemini";if(n)if("1"===n)return"vlm-ui-tars";else if("DOUBAO"===n||"DOUBAO-1.5"===n)return"vlm-ui-tars-doubao-1.5";else return"vlm-ui-tars-doubao"})(i):void 0,g=i[o.modelFamily]||p,m=i[o.openaiApiKey]||s,h=i[o.openaiBaseURL]||l,f=i[o.socksProxy]||c,y=i[o.httpProxy]||d,E=i[o.modelName],v=i[o.openaiExtraConfig],b=((e,A)=>{if(A)try{return JSON.parse(A)}catch(A){throw Error(`Failed to parse ${e} as a JSON. ${A.message}`,{cause:A})}})(o.openaiExtraConfig,v||u),k=i[o.temperature]?Number(i[o.temperature]):0;if(g&&!M._j.includes(g))throw Error(`Invalid MIDSCENE_MODEL_FAMILY value: ${g}`);let C="vlm-ui-tars"===g?M.UH.V1_0:"vlm-ui-tars-doubao"===g||"vlm-ui-tars-doubao-1.5"===g?M.UH.DOUBAO_1_5_20B:void 0,S=C?`UI-TARS=${C}`:g?`${g} mode`:"";return{socksProxy:f,httpProxy:y,openaiBaseURL:h,openaiApiKey:m,openaiExtraConfig:b,modelFamily:g,uiTarsModelVersion:C,modelName:E,modelDescription:S,intent:"-",timeout:i[o.timeout]?Number(i[o.timeout]):void 0,temperature:k,retryCount:(()=>{if(!i[o.retryCount])return 1;let e=Number(i[o.retryCount]);if(!Number.isFinite(e))return 1;if(e<0)throw Error(`${o.retryCount} must be non-negative, got ${e}`);return e})(),retryInterval:(()=>{if(!i[o.retryInterval])return 2e3;let e=Number(i[o.retryInterval]);if(!Number.isFinite(e))return 2e3;if(e<0)throw Error(`${o.retryInterval} must be non-negative, got ${e}`);return e})(),reasoningEffort:(null==(A=i[o.reasoningEffort])?void 0:A.trim())||void 0,reasoningEnabled:"true"===(n=null==(r=i[o.reasoningEnabled])||null==(t=r.trim())?void 0:t.toLowerCase())||"1"===n||"false"!==n&&"0"!==n&&void 0,reasoningBudget:(()=>{var e;let A=null==(e=i[o.reasoningBudget])?void 0:e.trim();if(!A)return;let t=Number(A);return Number.isFinite(t)?t:void 0})()}})({keys:r,provider:A,useLegacyLogic:"default"===e});return n.intent=e,t("decideModelConfig result by agent.modelConfig() with intent",e,J({...n})),(0,Z.vA)(n.openaiBaseURL,`failed to get base URL of model (intent=${e}). See https://midscenejs.com/model-strategy`),n.modelName||console.warn(`modelName is not set for intent ${e}, this may cause unexpected behavior. See https://midscenejs.com/model-strategy`),n};function q(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}let V=new class{initialize(){var e;let A;if(this.isInitialized)return;this.modelConfig?(this.isolatedMode=!0,A=this.normalizeModelConfig(this.modelConfig)):A=(null==(e=this.globalConfigManager)?void 0:e.getAllEnvConfig())||{};let t=F("default",A);if(!t)throw Error("Model configuration is incomplete: model name (MIDSCENE_MODEL_NAME) is required. See https://midscenejs.com/model-strategy.html");let r=F("insight",A),n=F("planning",A);this.modelConfigMap={default:{...t,createOpenAIClient:this.createOpenAIClientFn},insight:{...r||t,createOpenAIClient:this.createOpenAIClientFn},planning:{...n||t,createOpenAIClient:this.createOpenAIClientFn}},this.isInitialized=!0}normalizeModelConfig(e){return Object.entries(e).reduce((e,A)=>{let[t,r]=A;return null==r||(e[t]=String(r)),e},Object.create(null))}clearModelConfigMap(){if(this.isolatedMode)throw Error("ModelConfigManager work in isolated mode, so clearModelConfigMap should not be called");this.isInitialized=!1}getModelConfig(e){if(this.isInitialized||this.initialize(),!this.modelConfigMap)throw Error("modelConfigMap is not initialized, which should not happen");return this.modelConfigMap[e]}getUploadTestServerUrl(){let{openaiExtraConfig:e}=this.getModelConfig("default");return null==e?void 0:e.REPORT_SERVER_URL}registerGlobalConfigManager(e){this.globalConfigManager=e}throwErrorIfNonVLModel(){if(!this.getModelConfig("default").modelFamily)throw Error("MIDSCENE_MODEL_FAMILY is not set to a visual language model (VL model), the element localization can not be achieved. Check your model configuration. See https://midscenejs.com/model-strategy.html")}constructor(e,A){q(this,"modelConfigMap",void 0),q(this,"isInitialized",!1),q(this,"isolatedMode",!1),q(this,"globalConfigManager",void 0),q(this,"modelConfig",void 0),q(this,"createOpenAIClientFn",void 0),this.modelConfig=e,this.createOpenAIClientFn=A}},H=new class{getAllEnvConfig(){let e=M.tk.reduce((e,A)=>(e[A]=D.env[A],e),Object.create(null));if(!this.override)return e;{let{newConfig:A,extendMode:t}=this.override;return t?{...e,...A}:{...A}}}getEnvConfigValue(e){let A=this.getAllEnvConfig();if(e===M.Sk)throw Error("MATCH_BY_POSITION is discarded, use MIDSCENE_MODEL_FAMILY instead");if(!M.rd.includes(e))throw Error(`getEnvConfigValue with key ${e} is not supported.`);let t=A[e];return(this.keysHaveBeenRead[e]=!0,"string"==typeof t)?t.trim():t}getEnvConfigInBoolean(e){let A=this.getAllEnvConfig();if(!M.c$.includes(e))throw Error(`getEnvConfigInBoolean with key ${e} is not supported`);let t=A[e];return this.keysHaveBeenRead[e]=!0,!!t&&(!!/^(true|1)$/i.test(t)||!/^(false|0)$/i.test(t)&&!!t.trim())}getEnvConfigValueAsNumber(e){if(!M.rd.includes(e)&&!M.DL.includes(e))throw Error(`getEnvConfigValueAsNumber with key ${e} is not supported.`);let A=this.getAllEnvConfig()[e];if(this.keysHaveBeenRead[e]=!0,"string"!=typeof A)return;let t=A.trim();if(!t)return;let r=Number(t);return Number.isNaN(r)?void 0:r}registerModelConfigManager(e){this.globalModelConfigManager=e}overrideAIConfig(e){var A;let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];for(let A in e){if(![...M.Lg,...M.XE].includes(A))throw Error(`Failed to override AI config, invalid key: ${A}`);let t=e[A];if("string"!=typeof t)throw Error(`Failed to override AI config, value for key ${A} must be a string, but got with type ${typeof t}`);this.keysHaveBeenRead[A]&&console.warn(`Warning: try to override AI config with key ${A} ,but it has been read.`)}let r=t?{...null==(A=this.override)?void 0:A.newConfig,...e}:e;if(this.override={newConfig:{...r},extendMode:t},!this.globalModelConfigManager)throw Error("globalModelConfigManager is not registered, which should not happen");this.globalModelConfigManager.clearModelConfigMap()}constructor(){B(this,"override",void 0),B(this,"keysHaveBeenRead",{}),B(this,"globalModelConfigManager",void 0),K()}};H.registerModelConfigManager(V),V.registerGlobalConfigManager(H);let G=function(e){let A=arguments.length>1&&void 0!==arguments[1]&&arguments[1];H.overrideAIConfig(e,A)};var W=t(5359),Y=t(1352),_=t(955),$=t(6921),ee=t(89),eA=t(5584),et=t(2155);function er(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function en(e){return function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){er(o,r,n,i,a,"next",e)}function a(e){er(o,r,n,i,a,"throw",e)}i(void 0)})}}function eo(e){let{getScreenshot:A,getInterfaceInfo:t,serverOnline:n,isUserOperating:o=!1,mjpegUrl:i}=e,[a,s]=(0,et.useState)(null),[l,c]=(0,et.useState)(!1),[d,u]=(0,et.useState)(null),[p,g]=(0,et.useState)(0),[m,h]=(0,et.useState)(null),f=!!(i&&n),y=(0,et.useRef)(null),E=(0,et.useRef)(!1),v=(0,et.useCallback)(function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return en(function*(){if(n){c(!0),e&&u(null);try{let e=yield A();if(console.log("Screenshot API response:",e),null==e?void 0:e.screenshot){let A=e.screenshot.toString().trim();A?(s(A),u(null),g(Date.now())):u("Empty screenshot data received")}else u("No screenshot data in response")}catch(e){console.error("Screenshot fetch error:",e),u(e instanceof Error?e.message:"Failed to fetch screenshot")}finally{c(!1)}}})()},[A,n]),b=(0,et.useCallback)(()=>en(function*(){if(n&&t)try{let e=yield t();e&&h(e)}catch(e){console.error("Interface info fetch error:",e)}})(),[t,n]),k=(0,et.useCallback)(()=>{y.current&&clearInterval(y.current),console.log("Starting screenshot polling (5s interval)"),y.current=setInterval(()=>{!E.current&&n&&v(!1)},5e3)},[v,n]),C=(0,et.useCallback)(()=>{y.current&&(console.log("Stopping screenshot polling"),clearInterval(y.current),y.current=null)},[]),S=(0,et.useCallback)(()=>{console.log("Pausing screenshot polling"),E.current=!0},[]),I=(0,et.useCallback)(()=>{console.log("Resuming screenshot polling"),E.current=!1},[]),x=(0,et.useCallback)(()=>{v(!0)},[v]);return((0,et.useEffect)(()=>{if(!n){s(null),u(null),h(null),C();return}return(b(),f)?void C():(v(!1),k(),()=>{C()})},[n,f,k,C,v,b]),(0,et.useEffect)(()=>{n&&(o?S():(I(),v(!1)))},[o,S,I,v,n]),(0,et.useEffect)(()=>()=>{C()},[C]),n)?f||!l||a?f||!d||a?(0,r.jsxs)("div",{className:"screenshot-viewer",children:[(0,r.jsx)("div",{className:"screenshot-header",children:(0,r.jsx)("div",{className:"screenshot-title",children:(0,r.jsx)("h3",{children:(null==m?void 0:m.type)?m.type:"Device Name"})})}),(0,r.jsxs)("div",{className:"screenshot-container",children:[(0,r.jsxs)("div",{className:"screenshot-overlay",children:[(0,r.jsxs)("div",{className:"device-name-overlay",children:["Device Name",(0,r.jsx)(ee.A,{title:null==m?void 0:m.description,children:(0,r.jsx)(Y.A,{size:16,className:"info-icon"})})]}),!f&&(0,r.jsxs)("div",{className:"screenshot-controls",children:[p>0&&(0,r.jsxs)("span",{className:"last-update-time",children:["Last updated ",(e=>{if(!e)return"";let A=Math.floor((Date.now()-e)/1e3);return A<60?`${A}s ago`:A<3600?`${Math.floor(A/60)}m ago`:new Date(e).toLocaleTimeString()})(p)]}),(0,r.jsx)(ee.A,{title:"Refresh screenshot",children:(0,r.jsx)(eA.Ay,{icon:(0,r.jsx)(_.A,{}),onClick:x,loading:l,size:"small"})}),o&&(0,r.jsxs)("span",{className:"operation-indicator",children:[(0,r.jsx)($.A,{size:"small"})," Operating..."]})]})]}),(0,r.jsx)("div",{className:"screenshot-content",children:f?(0,r.jsx)("img",{src:i,alt:"Device Live Stream",className:"screenshot-image"}):a?(0,r.jsx)("img",{src:a.startsWith("data:image/")?a:`data:image/png;base64,${a}`,alt:"Device Screenshot",className:"screenshot-image",onLoad:()=>console.log("Screenshot image loaded successfully"),onError:e=>{console.error("Screenshot image load error:",e),console.error("Screenshot data preview:",a.substring(0,100)),u("Failed to load screenshot image")}}):(0,r.jsx)("div",{className:"screenshot-placeholder",children:(0,r.jsx)("p",{children:"No screenshot available"})})})]})]}):(0,r.jsx)("div",{className:"screenshot-viewer error",children:(0,r.jsxs)("div",{className:"screenshot-placeholder",children:[(0,r.jsx)("h3",{children:"\uD83D\uDCF1 Screen Preview"}),(0,r.jsx)("p",{className:"error-message",children:d})]})}):(0,r.jsxs)("div",{className:"screenshot-viewer loading",children:[(0,r.jsx)($.A,{size:"large"}),(0,r.jsx)("p",{children:"Loading screenshot..."})]}):(0,r.jsx)("div",{className:"screenshot-viewer offline",children:(0,r.jsxs)("div",{className:"screenshot-placeholder",children:[(0,r.jsx)("h3",{children:"\uD83D\uDCF1 Screen Preview"}),(0,r.jsx)("p",{children:"Start the playground server to see real-time screenshots"})]})})}var ei=t(6453),ea=t(2770),es=t(4458),el=t(2644),ec=t(9289);t(6990),t(5678);var ed=t(5409),eu=t(8963).Buffer;function ep(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}let eg=(0,O.aZ)("ai:call:codex"),em=(0,O.aZ)("ai:call:codex",{console:!0});class eh{async run(e){let A,t=this.tail;this.tail=new Promise(e=>{A=e}),await t;try{return await e()}finally{A()}}constructor(){ep(this,"tail",Promise.resolve())}}let ef=e=>{if(!e)return!1;if(e instanceof Error&&"AbortError"===e.name)return!0;let A=e instanceof Error?e.message:String(e??"unknown error");return/aborted|abort/i.test(A)},ey=e=>{if("string"==typeof e)return e.trim()||void 0},eE=function(e){let A=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ed.platform;if(!e.startsWith("file://"))return e;try{let t=new URL(e),r=decodeURIComponent(t.pathname),n=t.hostname.toLowerCase();if("win32"===A){let e=r.replace(/\//g,"\\").replace(/^\\([A-Za-z]:)/,"$1");if(n&&"localhost"!==n)return`\\\\${t.hostname}${e}`;return e}if(n&&"localhost"!==n)return`//${t.hostname}${r}`;return r}catch{return decodeURIComponent(e.slice(7))}},ev=e=>{let A=e.content;return"string"==typeof A?A:Array.isArray(A)?A.map(e=>e&&"object"==typeof e&&("text"===e.type&&"string"==typeof e.text||"input_text"===e.type&&"string"==typeof e.text)?e.text:"").filter(Boolean).join("\n"):""},eb=(e,A)=>{let t=e.content;if(!Array.isArray(t))return[];let r=[];for(let e of t){var n,o;if(!e||"object"!=typeof e)continue;let t=String(e.type||""),i="image_url"===t?ey(null==(n=e.image_url)?void 0:n.url):"input_image"===t?ey(e.image_url||e.url):void 0;if(!i)continue;let a=A||ey(null==(o=e.image_url)?void 0:o.detail)||ey(e.detail);if(i.startsWith("/")||i.startsWith("./")||i.startsWith("../")||i.startsWith("file://")){let e=i.startsWith("file://")?eE(i):i;r.push({type:"localImage",path:e,...a?{detail:a}:{}});continue}r.push({type:"image",url:i,...a?{detail:a}:{}})}return r};class ek{static async create(){if(Z.ht)throw Error("codex app-server provider is not supported in browser runtime");let{spawn:e}=await t(8817)("node:child_process"),A=await t(8541)("node:readline"),r=e("codex",["app-server"],{stdio:["pipe","pipe","pipe"]});if(!r.stdin||!r.stdout||!r.stderr)throw Error("failed to start codex app-server: stdio unavailable");let n=A.createInterface({input:r.stdout,crlfDelay:1/0}),o=new ek(r,n);return o.detachFromEventLoop(),o.attachProcessListeners(),await o.initializeHandshake(),o}isClosed(){return this.closed}async runTurn(e){let A,t,r,n,{messages:o,modelConfig:i,stream:a,onChunk:s,deepThink:l,abortSignal:c}=e,d=Date.now(),u=i.timeout||6e5,p=Date.now()+u,g=!!(a&&s),{developerInstructions:m,input:h}=((e,A)=>{let t=[],r=[],n=[];for(let o of e){let e=String(o.role||"user"),i=ev(o);if("system"===e){i.trim()&&t.push(i.trim());continue}let a=e.toUpperCase();i.trim()?r.push(`[${a}]
|
|
3
|
+
${i.trim()}`):r.push(`[${a}]
|
|
4
|
+
(no text content)`),"user"===e&&n.push(...eb(o,null==A?void 0:A.imageDetailOverride))}let o=r.join("\n\n"),i=[{type:"text",text:(o.length>262144?o.slice(-262144):o)||"Please answer the latest user request.",text_elements:[]},...n];return{developerInstructions:t.length?t.join("\n\n"):void 0,input:i}})(o,{imageDetailOverride:"gpt-5"===i.modelFamily?"original":void 0}),f=(e=>{var A;let{deepThink:t,modelConfig:r}=e;if(!0===t)return"high";if(!1===t)return"low";let n=null==(A=r.reasoningEffort)?void 0:A.trim().toLowerCase();return"low"===n||"medium"===n||"high"===n||"xhigh"===n?n:!0===r.reasoningEnabled?"high":!1===r.reasoningEnabled?"low":void 0})({deepThink:l,modelConfig:i}),y="",E="",v=e=>{let{content:A,reasoning:t,isComplete:r,usage:n}=e;g&&s&&s({content:A,reasoning_content:t,accumulated:y,isComplete:r,usage:n})};try{var b,k,C,S,I,x,R,j;let e,o=await this.request({method:"thread/start",params:{model:i.modelName,cwd:ed.cwd(),approvalPolicy:"never",sandbox:"read-only",ephemeral:!0,experimentalRawEvents:!1,persistExtendedHistory:!1,developerInstructions:m||null},deadlineAt:p,abortSignal:c});if(!(A=null==o||null==(b=o.thread)?void 0:b.id))throw Error("thread/start did not return a thread id");let a=await this.request({method:"turn/start",params:{threadId:A,input:h,effort:f},deadlineAt:p,abortSignal:c});if(!(t=null==a||null==(k=a.turn)?void 0:k.id))throw Error("turn/start did not return a turn id");for(;!e;){let o=await this.nextMessage({deadlineAt:p,abortSignal:c});if(this.isResponseMessage(o))continue;if(this.isRequestMessage(o)){await this.respondToServerRequest(o);continue}let a=o.method,s=o.params||{};if("error"===a){let e=(null==(x=s.error)?void 0:x.message)||s.message||"codex app-server reported turn error";r=String(e);continue}if("item/agentMessage/delta"===a&&s.threadId===A&&s.turnId===t){let e=String(s.delta||"");e&&(y+=e,v({content:e,reasoning:"",isComplete:!1}));continue}if(("item/reasoning/summaryTextDelta"===a||"item/reasoning/textDelta"===a)&&s.threadId===A&&s.turnId===t){let e=String(s.delta||"");e&&(E+=e,v({content:"",reasoning:e,isComplete:!1}));continue}if("item/completed"===a&&s.threadId===A&&s.turnId===t&&(null==(C=s.item)?void 0:C.type)==="agentMessage"&&"string"==typeof(null==(S=s.item)?void 0:S.text)&&!y){y=s.item.text;continue}if("thread/tokenUsage/updated"===a&&s.threadId===A&&s.turnId===t){n=this.mapUsage({usage:s,modelConfig:i,turnId:t,startTime:d});continue}if("turn/completed"===a&&s.threadId===A&&(null==(I=s.turn)?void 0:I.id)===t){e=String(s.turn.status||""),r=(null==(j=s.turn)||null==(R=j.error)?void 0:R.message)||r||void 0;break}}if("completed"!==e)throw Error(r||`codex turn finished with status "${e||"unknown"}"`);return g&&v({content:"",reasoning:"",isComplete:!0,usage:n}),{content:y,reasoning_content:E||void 0,usage:n,isStreamed:g}}catch(e){throw ef(e)&&A&&t&&await this.request({method:"turn/interrupt",params:{threadId:A,turnId:t},deadlineAt:Date.now()+5e3}).catch(()=>{}),e}finally{A&&await this.request({method:"thread/unsubscribe",params:{threadId:A},deadlineAt:Date.now()+8e3}).catch(e=>{em(`failed to unsubscribe codex thread ${A}: ${String(e)}`)})}}async dispose(){var e,A,t,r,n,o,i;if(!this.closed){this.closed=!0;try{null==(A=this.lineReader)||null==(e=A.close)||e.call(A)}catch{}try{null==(n=this.child)||null==(r=n.stdin)||null==(t=r.end)||t.call(r)}catch{}try{null==(i=this.child)||null==(o=i.kill)||o.call(i)}catch{}}}attachProcessListeners(){this.lineReader.on("line",e=>{this.lineBuffer.push(e)}),this.child.stderr.on("data",e=>{let A=eu.isBuffer(e)?e.toString("utf8"):String(e);this.stderrBuffer+=A,this.stderrBuffer.length>8192&&(this.stderrBuffer=this.stderrBuffer.slice(-8192))}),this.child.on("exit",e=>{this.closed=!0,this.lastExitCode=e}),this.child.on("error",e=>{this.closed=!0,this.processErrorMessage=e.message})}detachFromEventLoop(){var e,A,t,r,n,o,i,a;null==(e=(A=this.child).unref)||e.call(A),null==(r=this.child.stdin)||null==(t=r.unref)||t.call(r),null==(o=this.child.stdout)||null==(n=o.unref)||n.call(o),null==(a=this.child.stderr)||null==(i=a.unref)||i.call(a)}async initializeHandshake(){let e=Date.now()+15e3;await this.request({method:"initialize",params:{clientInfo:{name:"midscene_codex_provider",title:"Midscene Codex Provider",version:"1.0.0"},capabilities:{experimentalApi:!1}},deadlineAt:e}),await this.sendMessage({method:"initialized"})}mapUsage(e){let{usage:A,modelConfig:t,turnId:r,startTime:n}=e,o=A.tokenUsage,i=(null==o?void 0:o.last)||(null==o?void 0:o.total);if(i)return{prompt_tokens:i.inputTokens??0,completion_tokens:i.outputTokens??0,total_tokens:i.totalTokens??0,cached_input:i.cachedInputTokens??0,time_cost:Date.now()-n,model_name:t.modelName,model_description:t.modelDescription,intent:t.intent,request_id:r}}isRequestMessage(e){return"string"==typeof(null==e?void 0:e.method)&&(null==e?void 0:e.id)!==void 0}isResponseMessage(e){return(null==e?void 0:e.id)!==void 0&&((null==e?void 0:e.result)!==void 0||(null==e?void 0:e.error)!==void 0)&&"string"!=typeof(null==e?void 0:e.method)}async request(e){let{method:A,params:t,deadlineAt:r,abortSignal:n}=e,o=this.nextRequestId++;for(await this.sendMessage({id:o,method:A,params:t});;){let e=await this.nextMessage({deadlineAt:r,abortSignal:n,includePending:!1});if(this.isResponseMessage(e)&&e.id===o){if(e.error)throw Error(`codex app-server ${A} failed: ${e.error.message||"unknown error"}`);return e.result||{}}if(this.isRequestMessage(e)){await this.respondToServerRequest(e);continue}this.pendingMessages.push(e)}}async respondToServerRequest(e){let A=e.id,t=e.method,r={};if("item/commandExecution/requestApproval"===t)r={decision:"decline"};else if("item/fileChange/requestApproval"===t)r={decision:"decline"};else if("mcpServer/elicitation/request"===t)r={action:"cancel",content:null};else{if("item/tool/requestUserInput"!==t)return void await this.sendMessage({id:A,error:{code:-32601,message:`unsupported server request: ${t}`}});r={answers:[]}}await this.sendMessage({id:A,result:r})}async nextMessage(e){let{deadlineAt:A,abortSignal:t,includePending:r=!0}=e;if(r&&this.pendingMessages.length)return this.pendingMessages.shift();for(;;){if(null==t?void 0:t.aborted)throw Error("codex app-server request aborted");if(A&&Date.now()>A)throw Error("codex app-server request timed out");if(this.lineBuffer.length){let e,A=this.lineBuffer.shift().trim();if(!A)continue;try{e=JSON.parse(A)}catch(e){em(`ignored non-JSON message from codex app-server: ${A}`);continue}return e}if(this.closed)throw this.createClosedConnectionError();await new Promise(e=>setTimeout(e,20))}}async sendMessage(e){if(this.closed)throw this.createClosedConnectionError();let A=JSON.stringify(e);await new Promise((e,t)=>{this.child.stdin.write(`${A}
|
|
5
|
+
`,A=>{A?t(Error(`failed writing to codex app-server stdin: ${A.message}`)):e()})})}createClosedConnectionError(){let e=this.stderrBuffer.trim();return this.processErrorMessage?Error(e?`codex app-server process error: ${this.processErrorMessage}. stderr=${e}`:`codex app-server process error: ${this.processErrorMessage}`):Error(e?`codex app-server connection closed (exitCode=${this.lastExitCode}). stderr=${e}`:`codex app-server connection closed (exitCode=${this.lastExitCode})`)}constructor(e,A){ep(this,"child",void 0),ep(this,"lineReader",void 0),ep(this,"pendingMessages",[]),ep(this,"lineBuffer",[]),ep(this,"nextRequestId",1),ep(this,"closed",!1),ep(this,"lastExitCode",null),ep(this,"processErrorMessage",null),ep(this,"stderrBuffer",""),this.child=e,this.lineReader=A}}new class{async runTurn(e){let{messages:A,modelConfig:t,stream:r,onChunk:n,deepThink:o,abortSignal:i}=e;return this.runner.run(async()=>{let e=await this.getConnection();try{return await e.runTurn({messages:A,modelConfig:t,stream:r,onChunk:n,deepThink:o,abortSignal:i})}catch(A){throw(e.isClosed()||!ef(A))&&await this.resetConnection(),A}})}async shutdownForTests(){await this.resetConnection()}async getConnection(){return(!this.connection||this.connection.isClosed())&&(this.connection=await ek.create(),eg("started long-lived codex app-server connection")),this.connection}async resetConnection(){if(!this.connection)return;let e=this.connection;this.connection=null,await e.dispose(),eg("reset codex app-server connection")}constructor(){ep(this,"connection",null),ep(this,"runner",new eh)}},t(6732),t(8963),t(5592);var eC=t(3078);(0,O.aZ)("img"),(0,O.aZ)("img");var eS=t(6244);(0,O.aZ)("ai:common");let eI=eS.z.object({left:eS.z.number(),top:eS.z.number()}),ex=eS.z.object({width:eS.z.number(),height:eS.z.number()});eI.and(ex).and(eS.z.object({zoom:eS.z.number().optional()}));let eR=eS.z.object({images:eS.z.array(eS.z.object({name:eS.z.string(),url:eS.z.string()})).optional(),convertHttpImage2Base64:eS.z.boolean().optional()}),ej=eS.z.union([eS.z.string(),eS.z.object({prompt:eS.z.string()}).and(eR.partial())]),ew=eS.z.object({prompt:ej,deepLocate:eS.z.boolean().optional(),deepThink:eS.z.boolean().optional().describe("@deprecated Use `deepLocate` instead."),cacheable:eS.z.boolean().optional(),xpath:eS.z.union([eS.z.string(),eS.z.boolean()]).optional()}).passthrough(),eP=(e,A)=>{var t;return e&&(null==(t=e._def)?void 0:t.typeName)==="ZodObject"&&e.shape?Object.keys(e.shape).filter(t=>{var r;let n=e.shape[t];return!!(e=>{var A,t;let r=e;if((null==(A=r._def)?void 0:A.typeName)==="ZodOptional"&&(r=r._def.innerType),(null==(t=r._def)?void 0:t.typeName)==="ZodObject"){let e=r._def.shape();if("midscene_location_field_flag"in e||"prompt"in e&&e.prompt)return!0}return!1})(n)&&(!A||(null==(r=n._def)?void 0:r.typeName)!=="ZodOptional")}):[]};(0,O.aZ)("auto-glm-parser"),(0,O.aZ)("ai:inspect"),(0,O.aZ)("ai:section"),(0,O.aZ)("planning"),(0,O.aZ)("planning",{console:!0}),(0,O.aZ)("auto-glm-actions"),(0,O.aZ)("auto-glm-planning");var eN=t(5409);let eO={0:{keyCode:48,key:"0",code:"Digit0"},1:{keyCode:49,key:"1",code:"Digit1"},2:{keyCode:50,key:"2",code:"Digit2"},3:{keyCode:51,key:"3",code:"Digit3"},4:{keyCode:52,key:"4",code:"Digit4"},5:{keyCode:53,key:"5",code:"Digit5"},6:{keyCode:54,key:"6",code:"Digit6"},7:{keyCode:55,key:"7",code:"Digit7"},8:{keyCode:56,key:"8",code:"Digit8"},9:{keyCode:57,key:"9",code:"Digit9"},Power:{key:"Power",code:"Power"},Eject:{key:"Eject",code:"Eject"},Abort:{keyCode:3,code:"Abort",key:"Cancel"},Help:{keyCode:6,code:"Help",key:"Help"},Backspace:{keyCode:8,code:"Backspace",key:"Backspace"},Tab:{keyCode:9,code:"Tab",key:"Tab"},Numpad5:{keyCode:12,shiftKeyCode:101,key:"Clear",code:"Numpad5",shiftKey:"5",location:3},NumpadEnter:{keyCode:13,code:"NumpadEnter",key:"Enter",text:"\r",location:3},Enter:{keyCode:13,code:"Enter",key:"Enter",text:"\r"},"\r":{keyCode:13,code:"Enter",key:"Enter",text:"\r"},"\n":{keyCode:13,code:"Enter",key:"Enter",text:"\r"},ShiftLeft:{keyCode:16,code:"ShiftLeft",key:"Shift",location:1},ShiftRight:{keyCode:16,code:"ShiftRight",key:"Shift",location:2},ControlLeft:{keyCode:17,code:"ControlLeft",key:"Control",location:1},ControlRight:{keyCode:17,code:"ControlRight",key:"Control",location:2},AltLeft:{keyCode:18,code:"AltLeft",key:"Alt",location:1},AltRight:{keyCode:18,code:"AltRight",key:"Alt",location:2},Pause:{keyCode:19,code:"Pause",key:"Pause"},CapsLock:{keyCode:20,code:"CapsLock",key:"CapsLock"},Escape:{keyCode:27,code:"Escape",key:"Escape"},Convert:{keyCode:28,code:"Convert",key:"Convert"},NonConvert:{keyCode:29,code:"NonConvert",key:"NonConvert"},Space:{keyCode:32,code:"Space",key:" "},Numpad9:{keyCode:33,shiftKeyCode:105,key:"PageUp",code:"Numpad9",shiftKey:"9",location:3},PageUp:{keyCode:33,code:"PageUp",key:"PageUp"},Numpad3:{keyCode:34,shiftKeyCode:99,key:"PageDown",code:"Numpad3",shiftKey:"3",location:3},PageDown:{keyCode:34,code:"PageDown",key:"PageDown"},End:{keyCode:35,code:"End",key:"End"},Numpad1:{keyCode:35,shiftKeyCode:97,key:"End",code:"Numpad1",shiftKey:"1",location:3},Home:{keyCode:36,code:"Home",key:"Home"},Numpad7:{keyCode:36,shiftKeyCode:103,key:"Home",code:"Numpad7",shiftKey:"7",location:3},ArrowLeft:{keyCode:37,code:"ArrowLeft",key:"ArrowLeft"},Numpad4:{keyCode:37,shiftKeyCode:100,key:"ArrowLeft",code:"Numpad4",shiftKey:"4",location:3},Numpad8:{keyCode:38,shiftKeyCode:104,key:"ArrowUp",code:"Numpad8",shiftKey:"8",location:3},ArrowUp:{keyCode:38,code:"ArrowUp",key:"ArrowUp"},ArrowRight:{keyCode:39,code:"ArrowRight",key:"ArrowRight"},Numpad6:{keyCode:39,shiftKeyCode:102,key:"ArrowRight",code:"Numpad6",shiftKey:"6",location:3},Numpad2:{keyCode:40,shiftKeyCode:98,key:"ArrowDown",code:"Numpad2",shiftKey:"2",location:3},ArrowDown:{keyCode:40,code:"ArrowDown",key:"ArrowDown"},Select:{keyCode:41,code:"Select",key:"Select"},Open:{keyCode:43,code:"Open",key:"Execute"},PrintScreen:{keyCode:44,code:"PrintScreen",key:"PrintScreen"},Insert:{keyCode:45,code:"Insert",key:"Insert"},Numpad0:{keyCode:45,shiftKeyCode:96,key:"Insert",code:"Numpad0",shiftKey:"0",location:3},Delete:{keyCode:46,code:"Delete",key:"Delete"},NumpadDecimal:{keyCode:46,shiftKeyCode:110,code:"NumpadDecimal",key:"\0",shiftKey:".",location:3},Digit0:{keyCode:48,code:"Digit0",shiftKey:")",key:"0"},Digit1:{keyCode:49,code:"Digit1",shiftKey:"!",key:"1"},Digit2:{keyCode:50,code:"Digit2",shiftKey:"@",key:"2"},Digit3:{keyCode:51,code:"Digit3",shiftKey:"#",key:"3"},Digit4:{keyCode:52,code:"Digit4",shiftKey:"$",key:"4"},Digit5:{keyCode:53,code:"Digit5",shiftKey:"%",key:"5"},Digit6:{keyCode:54,code:"Digit6",shiftKey:"^",key:"6"},Digit7:{keyCode:55,code:"Digit7",shiftKey:"&",key:"7"},Digit8:{keyCode:56,code:"Digit8",shiftKey:"*",key:"8"},Digit9:{keyCode:57,code:"Digit9",shiftKey:"(",key:"9"},KeyA:{keyCode:65,code:"KeyA",shiftKey:"A",key:"a"},KeyB:{keyCode:66,code:"KeyB",shiftKey:"B",key:"b"},KeyC:{keyCode:67,code:"KeyC",shiftKey:"C",key:"c"},KeyD:{keyCode:68,code:"KeyD",shiftKey:"D",key:"d"},KeyE:{keyCode:69,code:"KeyE",shiftKey:"E",key:"e"},KeyF:{keyCode:70,code:"KeyF",shiftKey:"F",key:"f"},KeyG:{keyCode:71,code:"KeyG",shiftKey:"G",key:"g"},KeyH:{keyCode:72,code:"KeyH",shiftKey:"H",key:"h"},KeyI:{keyCode:73,code:"KeyI",shiftKey:"I",key:"i"},KeyJ:{keyCode:74,code:"KeyJ",shiftKey:"J",key:"j"},KeyK:{keyCode:75,code:"KeyK",shiftKey:"K",key:"k"},KeyL:{keyCode:76,code:"KeyL",shiftKey:"L",key:"l"},KeyM:{keyCode:77,code:"KeyM",shiftKey:"M",key:"m"},KeyN:{keyCode:78,code:"KeyN",shiftKey:"N",key:"n"},KeyO:{keyCode:79,code:"KeyO",shiftKey:"O",key:"o"},KeyP:{keyCode:80,code:"KeyP",shiftKey:"P",key:"p"},KeyQ:{keyCode:81,code:"KeyQ",shiftKey:"Q",key:"q"},KeyR:{keyCode:82,code:"KeyR",shiftKey:"R",key:"r"},KeyS:{keyCode:83,code:"KeyS",shiftKey:"S",key:"s"},KeyT:{keyCode:84,code:"KeyT",shiftKey:"T",key:"t"},KeyU:{keyCode:85,code:"KeyU",shiftKey:"U",key:"u"},KeyV:{keyCode:86,code:"KeyV",shiftKey:"V",key:"v"},KeyW:{keyCode:87,code:"KeyW",shiftKey:"W",key:"w"},KeyX:{keyCode:88,code:"KeyX",shiftKey:"X",key:"x"},KeyY:{keyCode:89,code:"KeyY",shiftKey:"Y",key:"y"},KeyZ:{keyCode:90,code:"KeyZ",shiftKey:"Z",key:"z"},MetaLeft:{keyCode:91,code:"MetaLeft",key:"Meta",location:1},MetaRight:{keyCode:92,code:"MetaRight",key:"Meta",location:2},ContextMenu:{keyCode:93,code:"ContextMenu",key:"ContextMenu"},NumpadMultiply:{keyCode:106,code:"NumpadMultiply",key:"*",location:3},NumpadAdd:{keyCode:107,code:"NumpadAdd",key:"+",location:3},NumpadSubtract:{keyCode:109,code:"NumpadSubtract",key:"-",location:3},NumpadDivide:{keyCode:111,code:"NumpadDivide",key:"/",location:3},F1:{keyCode:112,code:"F1",key:"F1"},F2:{keyCode:113,code:"F2",key:"F2"},F3:{keyCode:114,code:"F3",key:"F3"},F4:{keyCode:115,code:"F4",key:"F4"},F5:{keyCode:116,code:"F5",key:"F5"},F6:{keyCode:117,code:"F6",key:"F6"},F7:{keyCode:118,code:"F7",key:"F7"},F8:{keyCode:119,code:"F8",key:"F8"},F9:{keyCode:120,code:"F9",key:"F9"},F10:{keyCode:121,code:"F10",key:"F10"},F11:{keyCode:122,code:"F11",key:"F11"},F12:{keyCode:123,code:"F12",key:"F12"},F13:{keyCode:124,code:"F13",key:"F13"},F14:{keyCode:125,code:"F14",key:"F14"},F15:{keyCode:126,code:"F15",key:"F15"},F16:{keyCode:127,code:"F16",key:"F16"},F17:{keyCode:128,code:"F17",key:"F17"},F18:{keyCode:129,code:"F18",key:"F18"},F19:{keyCode:130,code:"F19",key:"F19"},F20:{keyCode:131,code:"F20",key:"F20"},F21:{keyCode:132,code:"F21",key:"F21"},F22:{keyCode:133,code:"F22",key:"F22"},F23:{keyCode:134,code:"F23",key:"F23"},F24:{keyCode:135,code:"F24",key:"F24"},NumLock:{keyCode:144,code:"NumLock",key:"NumLock"},ScrollLock:{keyCode:145,code:"ScrollLock",key:"ScrollLock"},AudioVolumeMute:{keyCode:173,code:"AudioVolumeMute",key:"AudioVolumeMute"},AudioVolumeDown:{keyCode:174,code:"AudioVolumeDown",key:"AudioVolumeDown"},AudioVolumeUp:{keyCode:175,code:"AudioVolumeUp",key:"AudioVolumeUp"},MediaTrackNext:{keyCode:176,code:"MediaTrackNext",key:"MediaTrackNext"},MediaTrackPrevious:{keyCode:177,code:"MediaTrackPrevious",key:"MediaTrackPrevious"},MediaStop:{keyCode:178,code:"MediaStop",key:"MediaStop"},MediaPlayPause:{keyCode:179,code:"MediaPlayPause",key:"MediaPlayPause"},Semicolon:{keyCode:186,code:"Semicolon",shiftKey:":",key:";"},Equal:{keyCode:187,code:"Equal",shiftKey:"+",key:"="},NumpadEqual:{keyCode:187,code:"NumpadEqual",key:"=",location:3},Comma:{keyCode:188,code:"Comma",shiftKey:"<",key:","},Minus:{keyCode:189,code:"Minus",shiftKey:"_",key:"-"},Period:{keyCode:190,code:"Period",shiftKey:">",key:"."},Slash:{keyCode:191,code:"Slash",shiftKey:"?",key:"/"},Backquote:{keyCode:192,code:"Backquote",shiftKey:"~",key:"`"},BracketLeft:{keyCode:219,code:"BracketLeft",shiftKey:"{",key:"["},Backslash:{keyCode:220,code:"Backslash",shiftKey:"|",key:"\\"},BracketRight:{keyCode:221,code:"BracketRight",shiftKey:"}",key:"]"},Quote:{keyCode:222,code:"Quote",shiftKey:'"',key:"'"},AltGraph:{keyCode:225,code:"AltGraph",key:"AltGraph"},Props:{keyCode:247,code:"Props",key:"CrSel"},Cancel:{keyCode:3,key:"Cancel",code:"Abort"},Clear:{keyCode:12,key:"Clear",code:"Numpad5",location:3},Shift:{keyCode:16,key:"Shift",code:"ShiftLeft",location:1},Control:{keyCode:17,key:"Control",code:"ControlLeft",location:1},Alt:{keyCode:18,key:"Alt",code:"AltLeft",location:1},Accept:{keyCode:30,key:"Accept"},ModeChange:{keyCode:31,key:"ModeChange"}," ":{keyCode:32,key:" ",code:"Space"},Print:{keyCode:42,key:"Print"},Execute:{keyCode:43,key:"Execute",code:"Open"},"\0":{keyCode:46,key:"\0",code:"NumpadDecimal",location:3},a:{keyCode:65,key:"a",code:"KeyA"},b:{keyCode:66,key:"b",code:"KeyB"},c:{keyCode:67,key:"c",code:"KeyC"},d:{keyCode:68,key:"d",code:"KeyD"},e:{keyCode:69,key:"e",code:"KeyE"},f:{keyCode:70,key:"f",code:"KeyF"},g:{keyCode:71,key:"g",code:"KeyG"},h:{keyCode:72,key:"h",code:"KeyH"},i:{keyCode:73,key:"i",code:"KeyI"},j:{keyCode:74,key:"j",code:"KeyJ"},k:{keyCode:75,key:"k",code:"KeyK"},l:{keyCode:76,key:"l",code:"KeyL"},m:{keyCode:77,key:"m",code:"KeyM"},n:{keyCode:78,key:"n",code:"KeyN"},o:{keyCode:79,key:"o",code:"KeyO"},p:{keyCode:80,key:"p",code:"KeyP"},q:{keyCode:81,key:"q",code:"KeyQ"},r:{keyCode:82,key:"r",code:"KeyR"},s:{keyCode:83,key:"s",code:"KeyS"},t:{keyCode:84,key:"t",code:"KeyT"},u:{keyCode:85,key:"u",code:"KeyU"},v:{keyCode:86,key:"v",code:"KeyV"},w:{keyCode:87,key:"w",code:"KeyW"},x:{keyCode:88,key:"x",code:"KeyX"},y:{keyCode:89,key:"y",code:"KeyY"},z:{keyCode:90,key:"z",code:"KeyZ"},Meta:{keyCode:91,key:"Meta",code:"MetaLeft",location:1},"*":{keyCode:106,key:"*",code:"NumpadMultiply",location:3},"+":{keyCode:107,key:"+",code:"NumpadAdd",location:3},"-":{keyCode:109,key:"-",code:"NumpadSubtract",location:3},"/":{keyCode:111,key:"/",code:"NumpadDivide",location:3},";":{keyCode:186,key:";",code:"Semicolon"},"=":{keyCode:187,key:"=",code:"Equal"},",":{keyCode:188,key:",",code:"Comma"},".":{keyCode:190,key:".",code:"Period"},"`":{keyCode:192,key:"`",code:"Backquote"},"[":{keyCode:219,key:"[",code:"BracketLeft"},"\\":{keyCode:220,key:"\\",code:"Backslash"},"]":{keyCode:221,key:"]",code:"BracketRight"},"'":{keyCode:222,key:"'",code:"Quote"},Attn:{keyCode:246,key:"Attn"},CrSel:{keyCode:247,key:"CrSel",code:"Props"},ExSel:{keyCode:248,key:"ExSel"},EraseEof:{keyCode:249,key:"EraseEof"},Play:{keyCode:250,key:"Play"},ZoomOut:{keyCode:251,key:"ZoomOut"},")":{keyCode:48,key:")",code:"Digit0"},"!":{keyCode:49,key:"!",code:"Digit1"},"@":{keyCode:50,key:"@",code:"Digit2"},"#":{keyCode:51,key:"#",code:"Digit3"},$:{keyCode:52,key:"$",code:"Digit4"},"%":{keyCode:53,key:"%",code:"Digit5"},"^":{keyCode:54,key:"^",code:"Digit6"},"&":{keyCode:55,key:"&",code:"Digit7"},"(":{keyCode:57,key:"(",code:"Digit9"},A:{keyCode:65,key:"A",code:"KeyA"},B:{keyCode:66,key:"B",code:"KeyB"},C:{keyCode:67,key:"C",code:"KeyC"},D:{keyCode:68,key:"D",code:"KeyD"},E:{keyCode:69,key:"E",code:"KeyE"},F:{keyCode:70,key:"F",code:"KeyF"},G:{keyCode:71,key:"G",code:"KeyG"},H:{keyCode:72,key:"H",code:"KeyH"},I:{keyCode:73,key:"I",code:"KeyI"},J:{keyCode:74,key:"J",code:"KeyJ"},K:{keyCode:75,key:"K",code:"KeyK"},L:{keyCode:76,key:"L",code:"KeyL"},M:{keyCode:77,key:"M",code:"KeyM"},N:{keyCode:78,key:"N",code:"KeyN"},O:{keyCode:79,key:"O",code:"KeyO"},P:{keyCode:80,key:"P",code:"KeyP"},Q:{keyCode:81,key:"Q",code:"KeyQ"},R:{keyCode:82,key:"R",code:"KeyR"},S:{keyCode:83,key:"S",code:"KeyS"},T:{keyCode:84,key:"T",code:"KeyT"},U:{keyCode:85,key:"U",code:"KeyU"},V:{keyCode:86,key:"V",code:"KeyV"},W:{keyCode:87,key:"W",code:"KeyW"},X:{keyCode:88,key:"X",code:"KeyX"},Y:{keyCode:89,key:"Y",code:"KeyY"},Z:{keyCode:90,key:"Z",code:"KeyZ"},":":{keyCode:186,key:":",code:"Semicolon"},"<":{keyCode:188,key:"<",code:"Comma"},_:{keyCode:189,key:"_",code:"Minus"},">":{keyCode:190,key:">",code:"Period"},"?":{keyCode:191,key:"?",code:"Slash"},"~":{keyCode:192,key:"~",code:"Backquote"},"{":{keyCode:219,key:"{",code:"BracketLeft"},"|":{keyCode:220,key:"|",code:"Backslash"},"}":{keyCode:221,key:"}",code:"BracketRight"},'"':{keyCode:222,key:'"',code:"Quote"},SoftLeft:{key:"SoftLeft",code:"SoftLeft",location:4},SoftRight:{key:"SoftRight",code:"SoftRight",location:4},Camera:{keyCode:44,key:"Camera",code:"Camera",location:4},Call:{key:"Call",code:"Call",location:4},EndCall:{keyCode:95,key:"EndCall",code:"EndCall",location:4},VolumeDown:{keyCode:182,key:"VolumeDown",code:"VolumeDown",location:4},VolumeUp:{keyCode:183,key:"VolumeUp",code:"VolumeUp",location:4}};Object.entries(eO).reduce((e,A)=>{let[t,r]=A,n=t.toLowerCase();return n!==t&&(e[n]=r),e},{});let eT="undefined"!=typeof window?/Mac|iPod|iPhone|iPad/.test(window.navigator.platform):"darwin"===eN.platform;eO.Enter.key,eO.Enter.key,eT?eO.Meta.key:eO.Control.key,eO.Shift.key,eO.Alt.key,eO.Space.key,eO.PageDown.key,eO.PageDown.key,eO.PageUp.key,eO.PageUp.key,t(2788),(0,O.aZ)("ui-tars-planning"),(0,O.aZ)("ui-tars-planning",{console:!0}),t(1182),t(3612),t(3198),t(9383),t(5409);let eM=(0,O.aZ)("yaml:utils");function eK(e,A){let t;eM("will call buildDetailedLocateParam",e,A);let r=e||(null==A?void 0:A.prompt)||(null==A?void 0:A.locate),n=!1,o=!0;return("object"==typeof A&&null!==A&&(n=A.deepLocate??A.deepThink??!1,o=A.cacheable??!0,t=A.xpath,e&&A.prompt&&e!==A.prompt&&console.warn("conflict prompt for item",e,A,"maybe you put the prompt in the wrong place"),r=r||A.prompt),r)?{prompt:r,deepLocate:n,cacheable:o,xpath:t}:void eM("no prompt, will return undefined in buildDetailedLocateParam",A)}t(5409),(0,O.aZ)("yaml-player");let eD=["aiQuery","aiBoolean","aiNumber","aiString","aiAsk","aiAssert","aiWaitFor"];async function eB(e,A){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!(null==e?void 0:e.paramSchema)||!("shape"in e.paramSchema))return[A.prompt||"",t];let r=e.paramSchema,n=r&&"shape"in r?Object.keys(r.shape):[],{deviceOptions:o,...i}=t,a={...i,...t.deviceOptions||{}};return n.forEach(e=>{void 0!==A[e]&&null!==A[e]&&""!==A[e]&&(a[e]=A[e])}),r&&eP(r).forEach(e=>{let r=A[e];if(r&&"string"==typeof r){let A=eK(r,{deepLocate:t.deepLocate,cacheable:!0});A&&(a[e]=A)}}),[a]}async function ez(e,A,t,r,n){"aiAct"!==A&&void 0!==n.deepThink&&console.warn("[Playground] Received deepThink in non-aiAct action options. deepThink is expected to be used with aiAct during migration.",{actionType:A,requestId:n.requestId,options:n});let o=null==t?void 0:t.find(e=>e.interfaceAlias===A||e.name===A);if(o&&"function"==typeof e.callActionInActionSpace)if(r.params){let A=await eB(o,r.params,n);return await e.callActionInActionSpace(o.name,A[0])}else{let A=r.prompt?eK(r.prompt,{deepLocate:n.deepLocate,cacheable:!0}):void 0,{deviceOptions:t,...i}=n,a={locate:A,...i,...n.deviceOptions||{}};return await e.callActionInActionSpace(o.name,a)}{let t=r.prompt;if("aiAssert"===A){var i;let{pass:A,thought:r}=await (null==e||null==(i=e.aiAssert)?void 0:i.call(e,t||"",void 0,{keepRawResponse:!0,...n}))||{};return{pass:A||!1,thought:r||""}}if(e&&"function"==typeof e[A])return await e[A](t,n);throw Error(`Unknown action type: ${A}`)}}var eQ=t(6970),eL=t(2801),eZ=t(8963).Buffer,eX={"node:fs"(e){e.exports=eL}},eJ={},eU=function e(A){var t=eJ[A];if(void 0!==t)return t.exports;var r=eJ[A]={exports:{}};return eX[A](r,r.exports,e),r.exports}("node:fs");Z.NB;let eF=Z.x3;function eq(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}class eV{static create(e,A){return new eV((0,Z.uR)(),e,A)}get id(){return this._id}get format(){return this._format}get extension(){return"jpeg"===this._format?"jpeg":"png"}get capturedAt(){return this._capturedAt}get base64(){if(null!==this._base64)return this._base64;if(null!==this._persistedPath){let e=(0,eQ.readFileSync)(this._persistedPath);return`data:image/${this._format};base64,${e.toString("base64")}`}if(null!==this._persistedHtmlPath){var e,A;let t,r,n=(e=this._persistedHtmlPath,A=this._id,t=`<script type="midscene-image" data-id="${A}">`,r=null,!function(e,A,t,r){let n=(0,eU.openSync)(e,"r"),o=(0,eU.statSync)(e).size,i=eZ.alloc(65536),a=0,s="",l=!1,c="";try{for(;a<o;){let e=(0,eU.readSync)(n,i,0,65536,a),o=s+i.toString("utf-8",0,e);a+=e;let d=0;for(;d<o.length;)if(l){let e=o.indexOf(t,d);if(-1!==e){if(c+=o.slice(d,e),r(c))return;l=!1,c="",d=e+t.length}else{c+=o.slice(d,-t.length),s=o.slice(-t.length);break}}else{let e=o.indexOf(A,d);if(-1!==e){l=!0;let n=(c=o.slice(e+A.length)).indexOf(t);if(-1!==n){if(r(c.slice(0,n)))return;l=!1,c="",d=e+A.length+n+t.length}else{s=c.slice(-t.length),c=c.slice(0,-t.length);break}}else{s=o.slice(-A.length);break}}}}finally{(0,eU.closeSync)(n)}}(e,t,"<\/script>",e=>(r=eF(e),!0)),r);if(n)return n;throw Error(`Screenshot ${this._id}: cannot recover from HTML (id not found in ${this._persistedHtmlPath})`)}throw Error(`Screenshot ${this._id}: base64 data released without recovery path`)}hasBase64(){return null!==this._base64}markPersistedInline(e){this._persistedAs={$screenshot:this._id,capturedAt:this._capturedAt},this._persistedHtmlPath=e,this._base64=null}markPersistedToPath(e,A){this._persistedAs={base64:e,capturedAt:this._capturedAt},this._persistedPath=A,this._base64=null}toSerializable(){return this._persistedAs??{$screenshot:this._id,capturedAt:this._capturedAt}}static isSerialized(e){return"object"==typeof e&&null!==e&&("$screenshot"in e&&"string"==typeof e.$screenshot||"base64"in e&&"string"==typeof e.base64)&&"capturedAt"in e&&"number"==typeof e.capturedAt}get rawBase64(){return this.base64.replace(/^data:image\/(png|jpeg|jpg);base64,/,"")}constructor(e,A,t){eq(this,"_id",void 0),eq(this,"_base64",void 0),eq(this,"_format",void 0),eq(this,"_capturedAt",void 0),eq(this,"_persistedAs",null),eq(this,"_persistedPath",null),eq(this,"_persistedHtmlPath",null),this._id=e,this._base64=A,this._format=function(e){return e.startsWith("data:image/jpeg")||e.startsWith("data:image/jpg")?"jpeg":"png"}(A),this._capturedAt=t}}var eH=t(8963).Buffer;function eG(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}function eW(e,A){var t,r;return A&&(null==(t=A.constructor)?void 0:t.name)==="Page"?"[Page object]":A&&(null==(r=A.constructor)?void 0:r.name)==="Browser"?"[Browser object]":A&&"function"==typeof A.toSerializable?A.toSerializable():A}function eY(e,A){return"screenshot"!==e||"object"!=typeof A||null===A||eV.isSerialized(A)||"base64"in A&&A.base64,A}class e_{serialize(e){return JSON.stringify(this.toJSON(),eW,e)}toJSON(){return{logTime:this.logTime,name:this.name,description:this.description,tasks:this.tasks.map(e=>({...e,recorder:e.recorder||[]})),aiActContext:this.aiActContext}}static fromSerializedString(e){return new e_(JSON.parse(e,eY))}static fromJSON(e){return new e_(e)}collectScreenshots(){let e=[];for(let t of this.tasks){var A;if((null==(A=t.uiContext)?void 0:A.screenshot)instanceof eV&&e.push(t.uiContext.screenshot),t.recorder)for(let A of t.recorder)A.screenshot instanceof eV&&e.push(A.screenshot)}return e}constructor(e){eG(this,"logTime",void 0),eG(this,"name",void 0),eG(this,"description",void 0),eG(this,"tasks",void 0),eG(this,"aiActContext",void 0),this.logTime=e.logTime,this.name=e.name,this.description=e.description,this.tasks=e.tasks,this.aiActContext=e.aiActContext}}class e${serialize(e){return JSON.stringify(this.toJSON(),eW,e)}serializeWithInlineScreenshots(e){let A=e=>e instanceof eV?{base64:e.base64,capturedAt:e.capturedAt}:Array.isArray(e)?e.map(A):e&&"object"==typeof e?Object.fromEntries(Object.entries(e).map(e=>{let[t,r]=e;return[t,A(r)]})):e;return JSON.stringify(A(this.toJSON()),null,e)}toJSON(){return{sdkVersion:this.sdkVersion,groupName:this.groupName,groupDescription:this.groupDescription,modelBriefs:this.modelBriefs,executions:this.executions.map(e=>e.toJSON()),deviceType:this.deviceType}}static fromSerializedString(e){return new e$(JSON.parse(e,eY))}static fromJSON(e){return new e$(e)}collectAllScreenshots(){let e=[];for(let A of this.executions)e.push(...A.collectScreenshots());return e}serializeToFiles(e){let A=`${e}.screenshots`;(0,eQ.existsSync)(A)||(0,eQ.mkdirSync)(A,{recursive:!0});let t={};for(let e of this.collectAllScreenshots())if(e.hasBase64()){let r=(0,eC.join)(A,`${e.id}.${e.extension}`),n=e.rawBase64;(0,eQ.writeFileSync)(r,eH.from(n,"base64")),t[e.id]=r}(0,eQ.writeFileSync)(`${e}.screenshots.json`,JSON.stringify(t),"utf-8"),(0,eQ.writeFileSync)(e,this.serialize(),"utf-8")}static fromFilesAsInlineJson(e){let A=(0,eQ.readFileSync)(e,"utf-8"),t=`${e}.screenshots.json`;if(!(0,eQ.existsSync)(t))return A;let r=JSON.parse((0,eQ.readFileSync)(t,"utf-8")),n={};for(let[e,A]of Object.entries(r))if((0,eQ.existsSync)(A)){let t=(0,eQ.readFileSync)(A),r=A.endsWith(".jpeg")||A.endsWith(".jpg")?"jpeg":"png";n[e]=`data:image/${r};base64,${t.toString("base64")}`}return JSON.stringify(function e(A,t){if("string"==typeof A)return A;if(Array.isArray(A))return A.map(A=>e(A,t));if("object"==typeof A&&null!==A){if("$screenshot"in A){let e=A.$screenshot,r="number"==typeof A.capturedAt?A.capturedAt:void 0;if("string"==typeof e){if(e.startsWith("data:image/")||e.startsWith("./")||e.startsWith("/"))return{base64:e,capturedAt:r};let A=null;return Object.defineProperties({},{base64:{get:()=>(null===A&&(A=t(e)),A),enumerable:!0},capturedAt:{value:r,enumerable:!0}})}return console.warn("Invalid $screenshot value type:",typeof e),{base64:""}}let r={};for(let[n,o]of Object.entries(A))r[n]=e(o,t);return r}return A}(JSON.parse(A),e=>n[e]??""))}static cleanupFiles(e){for(let A of[e,`${e}.screenshots.json`,`${e}.screenshots`])try{(0,eQ.rmSync)(A,{force:!0,recursive:!0})}catch{}}static getFilePaths(e){return[e,`${e}.screenshots.json`,`${e}.screenshots`]}constructor(e){eG(this,"sdkVersion",void 0),eG(this,"groupName",void 0),eG(this,"groupDescription",void 0),eG(this,"modelBriefs",void 0),eG(this,"executions",void 0),eG(this,"deviceType",void 0),this.sdkVersion=e.sdkVersion,this.groupName=e.groupName,this.groupDescription=e.groupDescription,this.modelBriefs=e.modelBriefs,this.executions=e.executions.map(e=>e instanceof e_?e:e_.fromJSON(e)),this.deviceType=e.deviceType}}function e0(e){return e.subType||e.type}function e1(e){if(!e)return"";if("string"==typeof e)return e;if("object"==typeof e){if("object"==typeof e.prompt&&null!==e.prompt&&e.prompt.prompt)return e.prompt.prompt;if("string"==typeof e.prompt)return e.prompt;if("string"==typeof e.description)return e.description}return""}function e2(e){var A,t,r,n,o,i,a,s,l,c;let d;if("Planning"===e.type&&(d="Locate"===e.subType?e1(null==e?void 0:e.param):(null==(A=e.output)?void 0:A.log)||(null==(t=e.param)?void 0:t.userInstruction)),"Insight"===e.type&&(d=function(e){if(!e)return{content:""};let A=e=>{var A;return(null==e||null==(A=e.multimodalPrompt)?void 0:A.images)&&Array.isArray(e.multimodalPrompt.images)?e.multimodalPrompt.images:void 0},t=e=>"string"==typeof e?e:JSON.stringify(e);if(e.demand)return{content:t(e.demand),images:A(e)};if(e.assertion)return{content:t(e.assertion),images:A(e)};if(e.dataDemand){let{dataDemand:r}=e;if("string"==typeof r)return{content:r};if("object"==typeof r)return{content:t(r.demand||r),images:A(r)}}return{content:""}}(null==e?void 0:e.param).content),"Action Space"===e.type){let A=null==e||null==(r=e.param)?void 0:r.locate,t=A?e1(A):"";(d=e.thought||"","number"==typeof(null==e||null==(n=e.param)?void 0:n.timeMs))?d=`${null==e||null==(o=e.param)?void 0:o.timeMs}ms`:"string"==typeof(null==e||null==(i=e.param)?void 0:i.scrollType)?d=(c=null==e?void 0:e.param)?`${c.direction||"down"}, ${c.scrollType||"singleAction"}, ${c.distance||"distance-not-set"}`:"":"string"==typeof(null==e||null==(a=e.param)?void 0:a.direction)&&(null==e?void 0:e.subType)==="PullGesture"?d=function(e){if(!e)return"";let A=[];return A.push(`direction: ${e.direction||"down"}`),e.distance&&A.push(`distance: ${e.distance}`),e.duration&&A.push(`duration: ${e.duration}ms`),A.join(", ")}(null==e?void 0:e.param):void 0!==(null==e||null==(s=e.param)?void 0:s.value)?d=null==e||null==(l=e.param)?void 0:l.value:(null==e?void 0:e.param)&&"object"==typeof(null==e?void 0:e.param)&&Object.keys((null==e?void 0:e.param)||{}).length>0&&(d=null==e?void 0:e.param),t&&(d=d&&"object"!=typeof d?`${t} - ${d}`:t)}if(void 0===d)return"";if("string"==typeof d)return d;if("object"==typeof d){let e=e1(d);return e||JSON.stringify(d,void 0,2)}return String(d)}(0,O.aZ)("ai:service"),(0,O.aZ)("task-timing"),(0,O.aZ)("task-runner"),t(3009),t(5207),t(1344),t(8963).Buffer,t(5409),t(8963).Buffer,t(9140),eS.z.object({locate:ew.describe("The element to be tapped")}),eS.z.object({locate:ew.describe("The element to be right clicked")}),eS.z.object({locate:ew.describe("The element to be double clicked")}),eS.z.object({locate:ew.describe("The element to be hovered")}),eS.z.object({value:eS.z.union([eS.z.string(),eS.z.number()]).transform(e=>String(e)).describe("The text to input. Provide the final content for replace/append modes, or an empty string when using clear mode to remove existing text."),locate:ew.describe("the position of the placeholder or text content in the target input field. If there is no content, locate the center of the input field.").optional(),mode:eS.z.enum(["replace","clear","typeOnly"]).default("replace").describe('Input mode: "replace" (default) - clear the field and input the value; "typeOnly" - type the value directly without clearing the field first; "clear" - clear the field without inputting new text.')}),eS.z.object({locate:ew.describe("The element to be clicked before pressing the key").optional(),keyName:eS.z.string().describe("The key to be pressed. Use '+' for key combinations, e.g., 'Control+A', 'Shift+Enter'")}),eS.z.object({scrollType:eS.z.enum(["singleAction","scrollToBottom","scrollToTop","scrollToRight","scrollToLeft"]).default("singleAction").describe('The scroll behavior: "singleAction" for a single scroll action, "scrollToBottom" for scrolling all the way to the bottom by rapidly scrolling 5-10 times (skipping intermediate content until reaching the bottom), "scrollToTop" for scrolling all the way to the top by rapidly scrolling 5-10 times (skipping intermediate content until reaching the top), "scrollToRight" for scrolling all the way to the right by rapidly scrolling multiple times, "scrollToLeft" for scrolling all the way to the left by rapidly scrolling multiple times'),direction:eS.z.enum(["down","up","right","left"]).default("down").describe('The direction to scroll. Only effective when scrollType is "singleAction".'),distance:eS.z.number().nullable().optional().describe("The distance in pixels to scroll"),locate:ew.optional().describe('Describe the target element to be scrolled on, like "the table" or "the list" or "the content area" or "the scrollable area". Do NOT provide a general intent like "scroll to find some element"')}),eS.z.object({from:ew.describe("The position to be dragged"),to:ew.describe("The position to be dropped")}),eS.z.object({locate:ew.describe("The element to be long pressed"),duration:eS.z.number().default(500).optional().describe("Long press duration in milliseconds")}),eS.z.object({start:ew.optional().describe("Starting point of the swipe gesture, if not specified, the center of the page will be used"),direction:eS.z.enum(["up","down","left","right"]).optional().describe("The direction to swipe (required when using distance). The direction means the direction of the finger swipe."),distance:eS.z.number().optional().describe("The distance in pixels to swipe (mutually exclusive with end)"),end:ew.optional().describe("Ending point of the swipe gesture (mutually exclusive with distance)"),duration:eS.z.number().default(300).describe("Duration of the swipe gesture in milliseconds"),repeat:eS.z.number().optional().describe("The number of times to repeat the swipe gesture. 1 for default, 0 for infinite (e.g. endless swipe until the end of the page)")}),eS.z.object({locate:ew.describe("The input field to be cleared").optional()}),eS.z.object({direction:eS.z.enum(["left","right"]).describe("The direction to move the cursor"),times:eS.z.number().int().min(1).default(1).describe("The number of times to move the cursor in the specified direction")}),eS.z.object({timeMs:eS.z.number().default(1e3).optional().describe("Sleep duration in milliseconds, defaults to 1000ms (1 second)")}),t(8586),t(9300),t(5409),t(8963).Buffer,(0,O.aZ)("cache"),(0,O.aZ)("agent:task-builder"),(0,O.aZ)("device-task-executor"),(0,O.aZ)("agent"),["read-only","read-write","write-only"].map(e=>`"${e}"`).join(", ");class e3{async getActionSpace(e){return[]}validateParams(e,A){if(!(null==A?void 0:A.paramSchema)||!this.actionNeedsStructuredParams(A))return{valid:!0};if(!e.params)return{valid:!1,errorMessage:"Parameters are required"};try{let t=this.prepareParamsForValidation(e.params,A);return A.paramSchema.parse(t),{valid:!0}}catch(e){return this.handleValidationError(e)}}createDisplayContent(e,A,t){return A&&e.params&&(null==t?void 0:t.paramSchema)?this.buildParamsDisplayList(e.params,t).join("\n")||e.prompt||"":e.prompt||""}formatBasicErrorMessage(e){return(null==e?void 0:e.message)||"Unknown error"}getSchemaKeys(e){if(!(null==e?void 0:e.paramSchema)||!("shape"in e.paramSchema))return[];let A=e.paramSchema;return A&&"shape"in A?Object.keys(A.shape):[]}filterValidParams(e){let A=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t={};return Object.keys(e).forEach(r=>{A.includes(r)||void 0===e[r]||null===e[r]||""===e[r]||(t[r]=e[r])}),t}actionNeedsStructuredParams(e){return"object"!=typeof e.paramSchema||!("shape"in e.paramSchema)||Object.keys(e.paramSchema.shape||{}).length>0}prepareParamsForValidation(e,A){let t={...e};return A.paramSchema&&eP(A.paramSchema).forEach(e=>{"string"==typeof t[e]&&(t[e]={midscene_location_field_flag:!0,prompt:t[e],center:[0,0],rect:{left:0,top:0,width:0,height:0}})}),t}handleValidationError(e){if(e.errors&&e.errors.length>0){let A=e.errors.filter(e=>{let A=e.path.join(".");return!A.includes("center")&&!A.includes("rect")&&!A.includes("midscene_location_field_flag")}).map(e=>{let A=e.path.join(".");return`${A}: ${e.message}`});if(A.length>0)return{valid:!1,errorMessage:`Validation error: ${A.join(", ")}`}}let A=e instanceof Error?e.message:"Unknown validation error";return{valid:!1,errorMessage:`Parameter validation failed: ${A}`}}buildParamsDisplayList(e,A){let t=[],r=A.paramSchema;if(!(r&&"shape"in r))return t;let n=eP(r);return Object.keys(r.shape).forEach(A=>{let r=e[A];if(this.isValidParamValue(r)){let e=this.capitalizeFirstLetter(A),o=this.formatParamValue(A,r,n.includes(A));t.push(`${e}: ${o}`)}}),t}isValidParamValue(e){return null!=e&&""!==e}capitalizeFirstLetter(e){return e.charAt(0).toUpperCase()+e.slice(1)}formatParamValue(e,A,t){return t||"string"==typeof A?`"${A}"`:"number"==typeof A&&"distance"===e?`${A}px`:`${A}`}}function e5(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}class e6 extends e3{get id(){return this._id}onDumpUpdate(e){this.dumpUpdateCallback=void 0,this.dumpUpdateCallback=e}setProgressCallback(e){this.progressCallback=void 0,this.progressCallback=e}async parseStructuredParams(e,A,t){return await eB(e,A,t)}formatErrorMessage(e){return((null==e?void 0:e.message)||"").includes("of different extension")?"Conflicting extension detected. Please disable the suspicious plugins and refresh the page. Guide: https://midscenejs.com/quick-experience.html#faq":this.formatBasicErrorMessage(e)}async getActionSpace(e){var A;if(!this.agent&&this.agentFactory)try{this.agent=await this.agentFactory()}catch(e){return console.warn("Failed to create agent for actionSpace:",e),[]}if(null==(A=this.agent)?void 0:A.getActionSpace)return await this.agent.getActionSpace();if(this.agent&&"interface"in this.agent&&"object"==typeof this.agent.interface){let e=this.agent.interface;if(null==e?void 0:e.actionSpace)return e.actionSpace()}return e&&"object"==typeof e&&"actionSpace"in e?e.actionSpace():[]}async checkStatus(){return!0}async overrideConfig(e){G(e),console.log("Config updated. Agent will be recreated on next execution.")}async detachDebuggerSafely(){try{var e,A;let t=null==(e=this.agent)?void 0:e.interface;await (null==t||null==(A=t.detachDebugger)?void 0:A.call(t))}catch(e){console.warn("Failed to detach debugger:",e)}}async executeAction(e,A,t){var r,n,o,i;let a;if(this.agentFactory){if(this.agent){console.log("Destroying old agent before execution...");try{await (null==(r=(n=this.agent).destroy)?void 0:r.call(n))}catch(e){console.warn("Failed to destroy old agent:",e)}this.agent=null}await this.recreateAgent()}if(!this.agent)throw Error("No agent available. Please provide either an agent instance or agentFactory.");let s=this.agent,l=await this.getActionSpace();try{null==(o=s.resetDump)||o.call(s)}catch(e){console.warn("Failed to reset dump before execution:",e)}t.requestId&&(this.currentRequestId=t.requestId,a=s.addDumpUpdateListener((e,A)=>{this.currentRequestId===t.requestId&&this.dumpUpdateCallback&&this.dumpUpdateCallback(e,A)}));try{let r=null,n=null;try{r=await ez(s,e,l,A,t)}catch(e){n=e}let o={result:r,dump:null,reportHTML:null,error:n?n instanceof Error?n.message:String(n):null};try{if(s.dumpDataString){let e=s.dumpDataString();e&&(o.dump=(null==(i=e$.fromSerializedString(e).executions)?void 0:i[0])||null)}}catch(e){console.warn("Failed to get dump from agent:",e)}try{s.reportHTMLString&&(o.reportHTML=s.reportHTMLString()||null)}catch(e){}try{s.writeOutActionDumps&&s.writeOutActionDumps()}catch(e){}return o}finally{a&&a()}}async recreateAgent(){if(!this.agentFactory)throw Error("Cannot recreate agent: factory function not provided. Please provide agentFactory in PlaygroundConfig to enable agent recreation.");console.log("Creating new agent with latest config...");try{this.agent=await this.agentFactory(),console.log("Agent created successfully")}catch(e){throw console.error("Failed to create agent:",e),e}}async cancelTask(e){var A,t,r;if(!this.agent)return{error:"No active agent found for this requestId"};let n=null,o=null;try{if("function"==typeof this.agent.dumpDataString){let e=this.agent.dumpDataString();e&&(n=(null==(A=e$.fromSerializedString(e).executions)?void 0:A[0])??null)}}catch(e){console.warn("[LocalExecutionAdapter] Failed to get dump data before cancel:",e)}try{if("function"==typeof this.agent.reportHTMLString){let e=this.agent.reportHTMLString();e&&"string"==typeof e&&!e.includes("REPLACE_ME_WITH_REPORT_HTML")&&(o=e)}}catch(e){console.warn("[LocalExecutionAdapter] reportHTMLString not available in this environment")}try{return await (null==(t=(r=this.agent).destroy)?void 0:t.call(r)),this.agent=null,{success:!0,dump:n,reportHTML:o}}catch(A){let e=A instanceof Error?A.message:"Unknown error";return console.error(`[LocalExecutionAdapter] Failed to cancel agent: ${e}`),{error:`Failed to cancel: ${e}`,dump:n,reportHTML:o}}}async getCurrentExecutionData(){let e={dump:null,reportHTML:null};try{var A,t,r;if(null==(A=this.agent)?void 0:A.dumpDataString){let A=this.agent.dumpDataString();A&&(e.dump=(null==(r=e$.fromSerializedString(A).executions)?void 0:r[0])||null)}(null==(t=this.agent)?void 0:t.reportHTMLString)&&(e.reportHTML=this.agent.reportHTMLString()||null)}catch(e){console.error("Failed to get current execution data:",e)}return e}async getInterfaceInfo(){var e,A,t;if(!(null==(e=this.agent)?void 0:e.interface))return null;try{let e=this.agent.interface.interfaceType||"Unknown",r=(null==(A=(t=this.agent.interface).describe)?void 0:A.call(t))||void 0;return{type:e,description:r}}catch(e){return console.error("Failed to get interface info:",e),null}}constructor(e,A){super(),e5(this,"agent",void 0),e5(this,"agentFactory",void 0),e5(this,"dumpUpdateCallback",void 0),e5(this,"progressCallback",void 0),e5(this,"_id",void 0),e5(this,"currentRequestId",void 0),this.agent=e??null,this.agentFactory=A,this._id=(0,Z.uR)()}}function e7(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}class e9 extends e3{onDumpUpdate(e){this.dumpUpdateCallback=void 0,this.dumpUpdateCallback=e}get id(){return this._id}validateParams(e,A){if(!(null==A?void 0:A.paramSchema)||!this.actionNeedsStructuredParams(A))return{valid:!0};if(!e.params)return{valid:!1,errorMessage:"Parameters are required"};if(A.paramSchema&&"object"==typeof A.paramSchema){let t=A.paramSchema;if(t.shape||"ZodObject"===t.type){let A=t.shape||{},r=Object.keys(A).filter(t=>{var r,n;let o=A[t];return!((null==o?void 0:o.isOptional)||(null==o||null==(r=o._def)?void 0:r.innerType)||(null==o||null==(n=o._def)?void 0:n.typeName)==="ZodOptional")&&(void 0===e.params[t]||""===e.params[t])});if(r.length>0)return{valid:!1,errorMessage:`Missing required parameters: ${r.join(", ")}`}}}return{valid:!0}}async parseStructuredParams(e,A,t){return await eB(e,A,t)}formatErrorMessage(e){let A=(null==e?void 0:e.message)||"",t=[{keyword:"adb",message:"ADB connection error. Please ensure device is connected and USB debugging is enabled."},{keyword:"UIAutomator",message:"UIAutomator error. Please ensure the UIAutomator server is running on the device."}].find(e=>{let{keyword:t}=e;return A.includes(t)});return t?t.message:this.formatBasicErrorMessage(e)}async executeAction(e,A,t){if(this.serverUrl&&"undefined"!=typeof window)return this.executeViaServer(e,A,t);throw Error("Remote execution adapter requires server URL for execution")}async executeViaServer(e,A,t){let r={type:e,prompt:A.prompt,...this.buildOptionalPayloadParams(t,A)};t.context&&(r.context=t.context),t.requestId&&this.dumpUpdateCallback&&this.startProgressPolling(t.requestId);try{let e=await fetch(`${this.serverUrl}/execute`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!e.ok){let A=await e.text().catch(()=>"Unknown error");throw Error(`Server request failed (${e.status}): ${A}`)}return await e.json()}catch(e){throw console.error("Execute via server failed:",e),e}finally{this.stopProgressPolling()}}buildOptionalPayloadParams(e,A){let t={};return[{key:"requestId",value:e.requestId},{key:"deepLocate",value:e.deepLocate},{key:"deepThink",value:e.deepThink},{key:"screenshotIncluded",value:e.screenshotIncluded},{key:"domIncluded",value:e.domIncluded},{key:"deviceOptions",value:e.deviceOptions},{key:"params",value:A.params}].forEach(e=>{let{key:A,value:r}=e;null!=r&&""!==r&&(t[A]=r)}),t}async getActionSpace(e){if(this.serverUrl&&"undefined"!=typeof window)try{let A=await fetch(`${this.serverUrl}/action-space`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({context:e})});if(!A.ok)throw Error(`Failed to get action space: ${A.statusText}`);let t=await A.json();return Array.isArray(t)?t:[]}catch(e){console.error("Failed to get action space from server:",e)}if(e&&"object"==typeof e&&"actionSpace"in e)try{let A=e.actionSpace,t=await A();return Array.isArray(t)?t:[]}catch(e){console.error("Failed to get action space from context:",e)}return[]}async checkStatus(){if(!this.serverUrl)return!1;try{let e=await fetch(`${this.serverUrl}/status`);if(200===e.status){try{let A=await e.json();A.id&&"string"==typeof A.id&&(this._id=A.id)}catch(e){console.debug("Failed to parse status response:",e)}return!0}return!1}catch(e){return console.warn("Server status check failed:",e),!1}}async overrideConfig(e){if(!this.serverUrl)throw Error("Server URL not configured");try{let A=await fetch(`${this.serverUrl}/config`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({aiConfig:e})});if(!A.ok){let e=await A.json().catch(()=>null),t=(null==e?void 0:e.error)||A.statusText;throw Error(t)}}catch(e){throw console.error("Failed to override server config:",e),e}}async getTaskProgress(e){if(!this.serverUrl)return{};if(!(null==e?void 0:e.trim()))return console.warn("Invalid requestId provided for task progress"),{};try{let A=await fetch(`${this.serverUrl}/task-progress/${encodeURIComponent(e)}`);if(!A.ok)return console.warn(`Task progress request failed: ${A.statusText}`),{};return await A.json()}catch(e){return console.error("Failed to poll task progress:",e),{}}}startProgressPolling(e){this.stopProgressPolling(),this.pollingIntervalId=setInterval(async()=>{try{let A=await this.getTaskProgress(e);A.executionDump&&this.dumpUpdateCallback&&this.dumpUpdateCallback("",A.executionDump)}catch(e){console.error("Error polling task progress:",e)}},500)}stopProgressPolling(){this.pollingIntervalId&&(clearInterval(this.pollingIntervalId),this.pollingIntervalId=void 0)}async cancelTask(e){if(!this.serverUrl)return{error:"No server URL configured"};if(!(null==e?void 0:e.trim()))return{error:"Invalid request ID"};try{let A=await fetch(`${this.serverUrl}/cancel/${encodeURIComponent(e)}`,{method:"POST"});if(!A.ok)return{error:`Cancel request failed: ${A.statusText}`};let t=await A.json();return{success:!0,...t}}catch(e){return console.error("Failed to cancel task:",e),{error:"Failed to cancel task"}}}async getScreenshot(){if(!this.serverUrl)return null;try{let e=await fetch(`${this.serverUrl}/screenshot`);if(!e.ok)return console.warn(`Screenshot request failed: ${e.statusText}`),null;return await e.json()}catch(e){return console.error("Failed to get screenshot:",e),null}}async getInterfaceInfo(){if(!this.serverUrl)return null;try{let e=await fetch(`${this.serverUrl}/interface-info`);if(!e.ok)return console.warn(`Interface info request failed: ${e.statusText}`),null;return await e.json()}catch(e){return console.error("Failed to get interface info:",e),null}}constructor(e){super(),e7(this,"serverUrl",void 0),e7(this,"_id",void 0),e7(this,"dumpUpdateCallback",void 0),e7(this,"pollingIntervalId",void 0),this.serverUrl=e}}class e8{createAdapter(e,A,t,r){switch(e){case"local-execution":if(!t&&!r)throw Error("Agent or agentFactory is required for local execution");return new e6(t,r);case"remote-execution":return new e9(A||("undefined"!=typeof window&&window.location.protocol.includes("http")?window.location.origin:"http://localhost:5800"));default:throw Error(`Unsupported execution type: ${e}`)}}async executeAction(e,A,t){return await this.adapter.executeAction(e,A,t)}async getActionSpace(e){return this.adapter.getActionSpace(e)}validateStructuredParams(e,A){return this.adapter.validateParams(e,A)}formatErrorMessage(e){return this.adapter.formatErrorMessage(e)}createDisplayContent(e,A,t){return this.adapter.createDisplayContent(e,A,t)}get id(){if(this.adapter instanceof e9||this.adapter instanceof e6)return this.adapter.id}async checkStatus(){return!(this.adapter instanceof e9)||this.adapter.checkStatus()}async overrideConfig(e){if(this.adapter instanceof e9)return this.adapter.overrideConfig(e)}async getTaskProgress(e){return this.adapter instanceof e9?this.adapter.getTaskProgress(e):{}}async cancelTask(e){return this.adapter instanceof e9?this.adapter.cancelTask(e):{error:"Cancel task not supported in local execution mode"}}onDumpUpdate(e){this.adapter instanceof e6?this.adapter.onDumpUpdate(e):this.adapter instanceof e9&&this.adapter.onDumpUpdate(e)}onProgressUpdate(e){this.adapter instanceof e6&&this.adapter.setProgressCallback(e)}async cancelExecution(e){if(this.adapter instanceof e9){let A=await this.adapter.cancelTask(e);if(A.success)return{dump:A.dump||null,reportHTML:A.reportHTML||null}}else if(this.adapter instanceof e6){let A=await this.adapter.cancelTask(e);if(A.success)return{dump:A.dump||null,reportHTML:A.reportHTML||null}}return null}async getCurrentExecutionData(){return this.adapter instanceof e6&&this.adapter.getCurrentExecutionData?await this.adapter.getCurrentExecutionData():{dump:null,reportHTML:null}}async getScreenshot(){return this.adapter instanceof e9?this.adapter.getScreenshot():null}async getInterfaceInfo(){return this.adapter instanceof e6||this.adapter instanceof e9?this.adapter.getInterfaceInfo():null}getServiceMode(){return this.adapter instanceof e6?"In-Browser-Extension":"Server"}constructor(e){!function(e,A,t){A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t}(this,"adapter",void 0),this.adapter=this.createAdapter(e.type,e.serverUrl,e.agent,e.agentFactory)}}function e4(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}let Ae=function(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0],[A,t]=(0,et.useState)(!0),{serviceMode:r}=N();return(0,et.useEffect)(()=>{let A=!1;if(e){var r;return Promise.resolve((r=function*(){for(;!A;){let e=new e8({type:"remote-execution"});(yield e.checkStatus())?t(!0):t(!1),yield new Promise(e=>setTimeout(e,1e3))}},function(){var e=this,A=arguments;return new Promise(function(t,n){var o=r.apply(e,A);function i(e){e4(o,t,n,i,a,"next",e)}function a(e){e4(o,t,n,i,a,"throw",e)}i(void 0)})})()),()=>{A=!0}}},[r,e]),A},AA=e=>{let{selectedDeviceId:A,scrcpyPlayerRef:t}=e,[n,o]=W.Ay.useMessage(),i=Ae(!0);return(0,et.useCallback)(()=>{t.current&&(t.current.disconnectDevice(),n.info("Device disconnected"))},[t,n]),(0,r.jsxs)("div",{className:"device-header",children:[o,(0,r.jsxs)("div",{className:"device-title-container",children:[(0,r.jsx)("h2",{className:"device-title",children:"Device"}),(0,r.jsxs)("div",{className:"device-info-display",children:[(0,r.jsxs)("div",{className:"device-icon-container",children:[(0,r.jsx)(ec.A,{className:"device-icon"}),A&&i&&(0,r.jsx)("div",{className:"status-indicator",children:(0,r.jsx)("span",{className:"status-dot",style:{color:"#52c41a"},children:"●"})})]}),A?(0,r.jsx)("span",{className:"device-name",children:A}):(0,r.jsx)("span",{className:"device-name no-device",children:"No device selected"})]})]})]})},At=e=>{let{hideLogo:A=!1}=e,{isDarkMode:t}=function(){let[e,A]=(0,et.useState)(!1);return(0,et.useEffect)(()=>{let e=()=>{var e;A("dark"===(null==(e=document.querySelector("[data-theme]"))?void 0:e.getAttribute("data-theme")))};e();let t=new MutationObserver(e),r=document.querySelector("[data-theme]")||document.documentElement;return t.observe(r,{attributes:!0,attributeFilter:["data-theme"]}),()=>t.disconnect()},[]),{isDarkMode:e}}();return A?null:(0,r.jsx)("div",{className:"logo",children:(0,r.jsx)("a",{href:"https://midscenejs.com/",target:"_blank",rel:"noreferrer",children:(0,r.jsx)("img",{alt:"Midscene_logo",src:t?"https://lf3-static.bytednsdoc.com/obj/eden-cn/nupipfups/Midscene/midscene_with_text_dark.png":"https://lf3-static.bytednsdoc.com/obj/eden-cn/nupipfups/Midscene/midscene_with_text_light.png"})})})};var Ar=t(4177),An=t(6766),Ao=t(6419),Ai=t(8594),Aa=t(505),As=t(4174);function Al(e){let{showTooltipWhenEmpty:A=!0,showModelName:t=!0,tooltipPlacement:n="bottom",mode:o="icon"}=e,{config:i,configString:a,loadConfig:s,syncFromStorage:l}=N(),[c,d]=(0,et.useState)(!1),[u,p]=(0,et.useState)(a),g=i.MIDSCENE_MODEL_NAME,m=(0,et.useRef)(null),h=e=>{l(),d(!0),e.preventDefault(),e.stopPropagation()};return(0,et.useEffect)(()=>{c&&p(a)},[c,a]),(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"10px",alignItems:"center",height:"100%",minHeight:"32px"},ref:m,children:[t?g:null,(0,r.jsx)(ee.A,{title:"Please set up your environment variables before using.",placement:n,align:{offset:[-10,5]},getPopupContainer:()=>m.current,open:!c&&(A?0===Object.keys(i).length:void 0),children:"icon"===o?(0,r.jsx)(Ai.A,{onClick:h}):(0,r.jsx)("span",{onClick:h,style:{color:"#006AFF",cursor:"pointer"},children:"set up"})}),(0,r.jsxs)(Aa.A,{title:"Model Env Config",open:c,onOk:()=>{d(!1),s(u)},onCancel:()=>{d(!1)},okText:"Save",style:{width:"800px",height:"100%",marginTop:"10%"},destroyOnClose:!0,maskClosable:!0,centered:!0,children:[(0,r.jsx)(As.A.TextArea,{rows:7,placeholder:"MIDSCENE_MODEL_API_KEY=sk-...\nMIDSCENE_MODEL_NAME=gpt-4o-2024-08-06\n...",value:u,onChange:e=>p(e.target.value),style:{whiteSpace:"nowrap",wordWrap:"break-word"}}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{children:"The format is KEY=VALUE and separated by new lines."}),(0,r.jsxs)("p",{children:["These data will be saved ",(0,r.jsx)("strong",{children:"locally in your browser"}),"."]})]})]})]})}function Ac(e){let{showEnvConfig:A=!0,showTooltipWhenEmpty:t=!1,showModelName:n=!1,githubUrl:o="https://github.com/web-infra-dev/midscene",helpUrl:i="https://midscenejs.com/quick-experience.html",className:a=""}=e;return(0,r.jsxs)("div",{className:`nav-actions ${a}`,children:[(0,r.jsx)(Ao.A.Link,{href:o,target:"_blank",children:(0,r.jsx)(Ar.A,{className:"nav-icon"})}),(0,r.jsx)(Ao.A.Link,{href:i,target:"_blank",children:(0,r.jsx)(An.A,{className:"nav-icon"})}),A&&(0,r.jsx)(Al,{showTooltipWhenEmpty:t,showModelName:n})]})}var Ad=t(4707),Au=t(9870),Ap=t(9877),Ag=t(3147),Am=t(6620),Ah=t(5810),Af=t(638);let Ay="Auto dismiss keyboard",AE={aiAct:{group:"interaction",title:"Auto Planning: plan the steps and execute"},aiTap:{group:"interaction",title:"Click an element"},aiDoubleClick:{group:"interaction",title:"Double-click an element"},aiHover:{group:"interaction",title:"Hover over an element"},aiInput:{group:"interaction",title:"Input text into an element"},aiRightClick:{group:"interaction",title:"Right-click an element"},aiKeyboardPress:{group:"interaction",title:"Press keyboard keys"},aiScroll:{group:"interaction",title:"Scroll the page or element"},aiLocate:{group:"interaction",title:"Locate an element on the page"},aiQuery:{group:"extraction",title:"Extract data directly from the UI"},aiBoolean:{group:"extraction",title:"Get true/false answer"},aiNumber:{group:"extraction",title:"Extract numeric value"},aiString:{group:"extraction",title:"Extract text value"},aiAsk:{group:"extraction",title:"Ask a question about the UI"},aiAssert:{group:"validation",title:"Assert a condition is true"},aiWaitFor:{group:"validation",title:"Wait for a condition to be met"}},Av=["aiAct","aiTap","aiQuery","aiAssert"],Ab=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"web page";return{type:"system",content:`
|
|
3
6
|
Welcome to Midscene.js Playground!
|
|
4
7
|
|
|
5
8
|
This is a panel for experimenting and testing Midscene.js features. You can use natural language instructions to operate the ${e}, such as clicking buttons, filling in forms, querying information, etc.
|
|
6
9
|
|
|
7
10
|
Please enter your instructions in the input box below to start experiencing.
|
|
8
|
-
`,loading:!1,result:void 0,replayScriptsInfo:null,replayCounter:0,loadingProgressText:"",verticalMode:!1}};Al();let Ac={result:void 0,dump:null,reportHTML:null,error:null},Ad="data:image/png;base64,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",Au="data:image/png;base64,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";function Ap(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}let Ag=(e,A,t)=>{let r,n=(r=e.width/e.height>=A/t?e.width:e.height/t*A)>400?.1:r>50?.2:.3,o=Math.min(A,r+A*n*2),i=Math.min(e.left-A*n,A-o);i=Math.max(i,0);let a=Math.min(e.top-t*n,t-t/A*o);return{left:Math.round(i),top:Math.round(a=Math.max(a,0)),width:Math.round(o)}},Am=e=>{var A;let t=e?Array.isArray(e.executions)?e:{sdkVersion:"",groupName:"Execution",modelBriefs:[],executions:[e]}:null;if(!t)return console.warn("[allScriptsFromDump] dump is empty"),{scripts:[],modelBriefs:[]};let r=(e=>{var A,t;let r,n,o=e.sdkVersion,i=new Set;if(null==(A=e.executions)||A.filter(Boolean).forEach(e=>{e.tasks.forEach(e=>{var A,t;if(null==(t=e.uiContext)||null==(A=t.shotSize)?void 0:A.width){let A=e.uiContext.shotSize.width,t=e.uiContext.shotSize.height;r||(r=A,n=t)}if(e.usage){let{model_name:A,model_description:t,intent:r}=e.usage;r&&A&&i.add(t?`${r}/${A}(${t})`:`${r}/${A}`)}})}),!r||!n)return console.warn("width or height is missing in dump file"),null;let a=(null==(t=e.modelBriefs)?void 0:t.length)?e.modelBriefs:[],s=(()=>{var e;let A=a.length?a:[...i];if(!A.length)return A;let t=null==(e=A[0])?void 0:e.split("/",2)[1];return t&&A.slice(1).every(e=>(null==e?void 0:e.split("/",2)[1])===t)?[t]:A})();return{width:r,height:n,sdkVersion:o,modelBriefs:s,deviceType:e.deviceType}})(t);if(!r)return{scripts:[],sdkVersion:t.sdkVersion,modelBriefs:[]};let{width:n,height:o}=r,i=[],a=(null==(A=t.executions)?void 0:A.filter(Boolean))||[];for(let e=0;e<a.length;e++){let A=Af(a[e],-1,n,o,e);A&&i.push(...A)}return{scripts:i.filter((e,A)=>A===i.length-1||"Done"!==e.title),width:n,height:o,sdkVersion:r.sdkVersion,modelBriefs:r.modelBriefs,deviceType:r.deviceType}},Af=function(e,A,t,r){let n;if(arguments.length>4&&void 0!==arguments[4]&&arguments[4],!e||!e.tasks.length||0===t||0===r)return null;let o=[];if(-1===A)o=e.tasks;else{let t=e.tasks.findIndex(e=>e===A);if(-1===t)return console.error("task not found, cannot generate animation scripts"),null;if(t===e.tasks.length-1)return null;for(let A=t;A<e.tasks.length&&(!(A>t)||"Planning"!==e.tasks[A].type||"Plan"!==e.tasks[A].subType);A++)o.push(e.tasks[A])}if(0===o.length)return null;let i=Ag({left:0,top:0,width:t,height:r},t,r),a=(e,A)=>{if(!A)return e;let t=Ap({},e),r=null;return Object.defineProperty(t,"img",{get:()=>(null===r&&(r=A.base64),r),enumerable:!0}),t},s=[],l=!1,c="";return o.forEach((e,A)=>{var d,u,p,g,m,f,h,y,E,v,b,k,C,S,I,R,x,j,P,w,N,O,T,K,M,B,D,z;let Q=null==(z=o[A])?void 0:z.taskId;if(0===A&&(c=eU(e)),"Planning"===e.type){let A=[];if("Plan"===e.subType){let t=(null==(u=e.output)?void 0:u.actions)||[];if(t.length>0){let e=t[0],r=["locate","start","end"];if(e.param)for(let t in r.forEach(t=>{e.param[t]&&"object"==typeof e.param[t]&&"center"in(e.param[t]||{})&&A.push(e.param[t])}),e.param)!r.includes(t)&&"object"==typeof e.param[t]&&"center"in(e.param[t]||{})&&A.push(e.param[t])}}else"Locate"===e.subType&&(null==(d=e.output)?void 0:d.element)&&(A=[e.output.element]);let o=eX(e),i=eU(e),c=e.uiContext;if(null==c?void 0:c.screenshot){let d=(null==(p=c.shotSize)?void 0:p.width)||t,u=(null==(g=c.shotSize)?void 0:g.height)||r,m=c.screenshot;s.push(a({type:"img",duration:300,title:o,subTitle:i,imageWidth:d,imageHeight:u,taskId:Q},m)),A.forEach(A=>{var p,g,f,h,y,E;y=Ap({},Ag(A.rect,d,u)),E=E={pointerLeft:A.center[0],pointerTop:A.center[1]},Object.getOwnPropertyDescriptors?Object.defineProperties(y,Object.getOwnPropertyDescriptors(E)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(E)).forEach(function(e){Object.defineProperty(y,e,Object.getOwnPropertyDescriptor(E,e))}),n=y,s.push(a({type:"insight",context:c,camera:n,highlightElement:A,searchArea:null==(g=e.log)||null==(p=g.taskInfo)?void 0:p.searchArea,duration:400,insightCameraDuration:800,title:o,subTitle:A.description||i,imageWidth:(null==(f=c.shotSize)?void 0:f.width)||t,imageHeight:(null==(h=c.shotSize)?void 0:h.height)||r,taskId:Q},m)),l=!0})}if(e.recorder&&e.recorder.length>0){let A=null==(m=e.recorder[0])?void 0:m.screenshot;s.push(a({type:"img",duration:900,title:eX(e),subTitle:eU(e),imageWidth:(null==(h=e.uiContext)||null==(f=h.shotSize)?void 0:f.width)||t,imageHeight:(null==(E=e.uiContext)||null==(y=E.shotSize)?void 0:y.height)||r,taskId:Q},A))}}else if("Action Space"===e.type){let A=eX(e),n=eU(e);s.push({type:"spinning-pointer",duration:300,title:A,subTitle:n,taskId:Q}),l&&(s.push({type:"clear-insight",duration:200,title:A,subTitle:n,taskId:Q}),l=!1),s.push({type:"pointer",img:Ad,duration:0,title:A,subTitle:n,taskId:Q});let o=null==(b=e.recorder)||null==(v=b[0])?void 0:v.screenshot;s.push(a({type:"img",duration:500,camera:"Sleep"===e.subType?i:void 0,title:A,subTitle:n,imageWidth:(null==(C=e.uiContext)||null==(k=C.shotSize)?void 0:k.width)||t,imageHeight:(null==(I=e.uiContext)||null==(S=I.shotSize)?void 0:S.height)||r,taskId:Q},o))}else{let A=eX(e),n=eU(e),o=null==(x=e.recorder)||null==(R=x[e.recorder.length-1])?void 0:R.screenshot;o&&s.push(a({type:"img",duration:900,camera:i,title:A,subTitle:n,imageWidth:(null==(P=e.uiContext)||null==(j=P.shotSize)?void 0:j.width)||t,imageHeight:(null==(N=e.uiContext)||null==(w=N.shotSize)?void 0:w.height)||r,taskId:Q},o))}if("finished"!==e.status){let A=eX(e),n=e.errorMessage||"unknown error",o=n.indexOf("NOT_IMPLEMENTED_AS_DESIGNED")>0?"Further actions cannot be performed in the current environment":n,l=null==(T=e.recorder)||null==(O=T[e.recorder.length-1])?void 0:O.screenshot;s.push(a({type:"img",camera:i,duration:900,title:A,subTitle:o,imageWidth:(null==(M=e.uiContext)||null==(K=M.shotSize)?void 0:K.width)||t,imageHeight:(null==(D=e.uiContext)||null==(B=D.shotSize)?void 0:B.height)||r,taskId:Q},l))}}),s.push({title:"End",subTitle:c,type:"img",duration:200,camera:i,taskId:void 0}),s};function Ah(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function Ay(e){return function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){Ah(o,r,n,i,a,"next",e)}function a(e){Ah(o,r,n,i,a,"throw",e)}i(void 0)})}}function AE(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}function Av(e,A){return A=null!=A?A:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(A)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(A)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(A,t))}),e}function Ab(e){var A;if(!e)return"";if("string"==typeof e)return e;if(null==e||null==(A=e.dump)?void 0:A.error)return e.dump.error;if(e.message)return String(e.message);try{return JSON.stringify(e)}catch(A){return String(e)}}function Ak(e,A){let t=new Set;return(null==e?void 0:e.tasks)&&Array.isArray(e.tasks)?e.tasks.forEach(e=>{if(e.usage){let{model_name:A,model_description:r,intent:n}=e.usage;n&&A&&t.add(r?`${n}/${A}(${r})`:`${n}/${A}`)}}):console.warn("[wrapExecutionDumpForReplay] Invalid dump structure:",e),{sdkVersion:"",groupName:"Playground Execution",modelBriefs:[...t],executions:[e],deviceType:A}}function AC(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}class AS{initDB(){return new Promise((e,A)=>{let t=indexedDB.open(this.dbName,this.version);t.onerror=()=>A(t.error),t.onsuccess=()=>e(t.result),t.onupgradeneeded=e=>{let A=e.target.result;this.storeConfigs.forEach(e=>{let{name:t,keyPath:r}=e;A.objectStoreNames.contains(t)||A.createObjectStore(t,{keyPath:r}).createIndex("timestamp","timestamp",{unique:!1})})}})}async withTransaction(e,A,t){let r=(await this.dbPromise).transaction(e,A);return t(Array.isArray(e)?e.map(e=>r.objectStore(e)):r.objectStore(e))}promisifyRequest(e){return new Promise((A,t)=>{e.onsuccess=()=>A(e.result),e.onerror=()=>t(e.error)})}async put(e,A){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.put(A))})}async get(e,A){return this.withTransaction(e,"readonly",async e=>this.promisifyRequest(e.get(A)))}async getAll(e){let A=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return this.withTransaction(e,"readonly",async e=>{let t=A?await this.promisifyRequest(e.index("timestamp").getAll()):await this.promisifyRequest(e.getAll());return A?t.sort((e,A)=>e.timestamp-A.timestamp):t})}async clear(e){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.clear())})}async delete(e,A){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.delete(A))})}async count(e){return this.withTransaction(e,"readonly",async e=>this.promisifyRequest(e.count()))}getDBPromise(){return this.dbPromise}constructor(e,A,t){AC(this,"dbPromise",void 0),AC(this,"dbName",void 0),AC(this,"version",void 0),AC(this,"storeConfigs",void 0),this.dbName=e,this.version=A,this.storeConfigs=t,this.dbPromise=this.initDB()}}let AI=async(e,A,t,r)=>{try{return await e()}catch(e){return console.error(A,e),e instanceof Error&&"QuotaExceededError"===e.name&&r&&(console.log("Storage quota exceeded, running cleanup..."),await r()),t}},AR=(e,A,t)=>async()=>{try{let r=await e.getAll(A);if(r.length>t){let n=r.sort((e,A)=>e.timestamp-A.timestamp).slice(0,r.length-t);await Promise.all(n.map(t=>e.delete(A,t.id)))}}catch(e){console.error(`Failed to cleanup ${A}:`,e)}};function Ax(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function Aj(e){return function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){Ax(o,r,n,i,a,"next",e)}function a(e){Ax(o,r,n,i,a,"throw",e)}i(void 0)})}}function AP(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}function Aw(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){AP(e,A,t[A])})}return e}function AN(e,A){return A=null!=A?A:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(A)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(A)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(A,t))}),e}let AO="playground_messages",AT="playground_results";class AK{saveMessages(e){return Aj(function*(){yield AI(()=>Aj(function*(){yield this.dbManager.clear(AO);let A=e.slice(-100);yield Promise.all(A.map((e,A)=>{let t=AN(Aw({},e),{result:"result"===e.type?void 0:e.result}),r={id:e.id||`msg-${A}`,data:t,timestamp:e.timestamp?e.timestamp.getTime():Date.now()+A};return this.dbManager.put(AO,r)}))}).call(this),"Failed to save messages to IndexedDB",void 0,this.messagesCleanup)}).call(this)}loadMessages(){return Aj(function*(){return(yield AI(()=>Aj(function*(){let e=yield this.dbManager.getAll(AO,!0);return 0===e.length?[]:Promise.all(e.map(e=>Aj(function*(){let A=e.data,t=AN(Aw({},A),{timestamp:new Date(A.timestamp)});if("result"===A.type&&A.id){let e=yield this.loadResult(A.id);e&&(t.result=e.result,t.replayScriptsInfo=e.replayScriptsInfo,t.replayCounter=e.replayCounter,t.verticalMode=e.verticalMode)}return t}).call(this)))}).call(this),"Failed to load messages from IndexedDB",[],this.messagesCleanup))||[]}).call(this)}clearMessages(){return Aj(function*(){yield AI(()=>Aj(function*(){yield Promise.all([this.dbManager.clear(AO),this.dbManager.clear(AT)])}).call(this),"Failed to clear messages from IndexedDB")}).call(this)}saveResult(e,A){return Aj(function*(){yield AI(()=>Aj(function*(){let t=this.compressResultForStorage(A),r={id:e,data:t,timestamp:Date.now(),size:JSON.stringify(t).length};yield this.dbManager.put(AT,r)}).call(this),"Failed to save result to IndexedDB",void 0,this.resultsCleanup)}).call(this)}loadResult(e){return Aj(function*(){return(yield AI(()=>Aj(function*(){let A=yield this.dbManager.get(AT,e);return(null==A?void 0:A.data)||null}).call(this),"Failed to load result from IndexedDB",null))||null}).call(this)}compressResultForStorage(e){var A,t;if(!(null==(t=e.result)||null==(A=t.dump)?void 0:A.tasks))return e;let r=e.result.dump.tasks.map(e=>{var A;return AN(Aw({},e),{uiContext:e.uiContext?AN(Aw({},e.uiContext),{screenshot:e.uiContext.screenshot}):e.uiContext,recorder:null==(A=e.recorder)?void 0:A.map(e=>AN(Aw({},e),{screenshot:e.screenshot}))})});return AN(Aw({},e),{result:AN(Aw({},e.result),{dump:AN(Aw({},e.result.dump),{tasks:r})})})}compressScreenshotIfNeeded(e){if(!e)return e;if(e.length>1048576){let A=Math.round(e.length/1024);return`[COMPRESSED: ${A}KB screenshot removed for storage]`}return e}getStorageStats(){return Aj(function*(){return(yield AI(()=>Aj(function*(){let[e,A]=yield Promise.all([this.dbManager.count(AO),this.dbManager.count(AT)]);return{messageCount:e,resultCount:A}}).call(this),"Failed to get storage statistics",{messageCount:0,resultCount:0}))||{messageCount:0,resultCount:0}}).call(this)}cleanup(){return Aj(function*(){yield Promise.all([this.messagesCleanup(),this.resultsCleanup()])}).call(this)}constructor(e="playground"){AP(this,"dbManager",void 0),AP(this,"namespace",void 0),AP(this,"messagesCleanup",void 0),AP(this,"resultsCleanup",void 0),this.namespace=e,this.dbManager=new AS(`midscene_playground_${e}`,1,[{name:AO,keyPath:"id"},{name:AT,keyPath:"id"}]),this.messagesCleanup=AR(this.dbManager,AO,100),this.resultsCleanup=AR(this.dbManager,AT,50)}}function AM(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function AB(e){return function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){AM(o,r,n,i,a,"next",e)}function a(e){AM(o,r,n,i,a,"throw",e)}i(void 0)})}}function AD(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}function Az(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){AD(e,A,t[A])})}return e}function AQ(e,A){return A=null!=A?A:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(A)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(A)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(A,t))}),e}class AL{checkStorageSpace(){try{let e="storage-test",A="x".repeat(102400);return localStorage.setItem(e,A),localStorage.removeItem(e),!0}catch(e){return!1}}saveMessages(e){return AB(function*(){try{this.checkStorageSpace()||(console.warn("Low storage space detected, clearing old data..."),yield this.handleQuotaExceeded());let A=e.slice(-this.maxStorageItems).map(e=>AQ(Az({},e),{result:"result"===e.type?void 0:e.result})),t=JSON.stringify(A);localStorage.setItem(this.messagesKey,t)}catch(A){if(A instanceof DOMException&&"QuotaExceededError"===A.name){console.warn("LocalStorage quota exceeded, attempting to clear old data and retry..."),yield this.handleQuotaExceeded();try{let A=e.slice(-10).map(e=>AQ(Az({},e),{result:"result"===e.type?void 0:e.result})),t=JSON.stringify(A);localStorage.setItem(this.messagesKey,t),console.info("Successfully saved recent messages after clearing storage")}catch(e){console.error("Failed to save even after clearing storage:",e),yield this.clearMessages()}}else console.error("Failed to save messages to localStorage:",A)}}).call(this)}loadMessages(){return AB(function*(){try{let e=localStorage.getItem(this.messagesKey);if(!e)return[];let A=JSON.parse(e);return yield Promise.all(A.map(e=>AB(function*(){if("result"===e.type&&e.id){let A=`${this.resultsKey}-${e.id}`,t=localStorage.getItem(A);if(t)try{let A=JSON.parse(t);return Az({},e,A)}catch(e){console.warn("Failed to parse stored result:",e)}}return e}).call(this)))}catch(e){return console.error("Failed to load messages from localStorage:",e),[]}}).call(this)}clearMessages(){return AB(function*(){try{localStorage.removeItem(this.messagesKey),Object.keys(localStorage).forEach(e=>{e.startsWith(this.resultsKey)&&localStorage.removeItem(e)})}catch(e){console.error("Failed to clear messages from localStorage:",e)}}).call(this)}saveResult(e,A){return AB(function*(){try{let t=`${this.resultsKey}-${e}`;localStorage.setItem(t,JSON.stringify(A))}catch(t){if(t instanceof DOMException&&"QuotaExceededError"===t.name){console.warn("LocalStorage quota exceeded when saving result, clearing old results..."),yield this.handleQuotaExceeded();try{let t=`${this.resultsKey}-${e}`;localStorage.setItem(t,JSON.stringify(A))}catch(e){console.error("Failed to save result even after clearing storage:",e)}}else console.error("Failed to save result to localStorage:",t)}}).call(this)}handleQuotaExceeded(){return AB(function*(){try{let e=Object.keys(localStorage),A=e.filter(e=>e.startsWith(this.resultsKey)),t=A.slice(0,Math.max(1,Math.floor(A.length/2)));t.forEach(e=>{localStorage.removeItem(e)}),console.info(`Cleared ${t.length} old result entries to free up storage space`);let r=e.filter(e=>e.includes("playground")||e.includes("agent")||e.startsWith("midscene"));if(r.length>10){let e=r.slice(0,Math.floor(r.length/3));e.forEach(e=>{e!==this.messagesKey&&localStorage.removeItem(e)}),console.info(`Cleared ${e.length} additional playground-related entries`)}}catch(e){console.error("Failed to handle quota exceeded:",e)}}).call(this)}constructor(e="playground"){AD(this,"messagesKey",void 0),AD(this,"resultsKey",void 0),AD(this,"maxStorageItems",50),this.messagesKey=`${e}-messages`,this.resultsKey=`${e}-results`}}class AZ{saveMessages(e){return AB(function*(){this.messages=[...e]}).call(this)}loadMessages(){return AB(function*(){return[...this.messages]}).call(this)}clearMessages(){return AB(function*(){this.messages=[],this.results.clear()}).call(this)}saveResult(e,A){return AB(function*(){this.results.set(e,A)}).call(this)}constructor(){AD(this,"messages",[]),AD(this,"results",new Map)}}class AX{saveMessages(e){return AB(function*(){})()}loadMessages(){return AB(function*(){return[]})()}clearMessages(){return AB(function*(){})()}saveResult(e,A){return AB(function*(){})()}}function AJ(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"indexeddb",A=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"playground";switch(e){case"indexeddb":if("undefined"!=typeof indexedDB)return new AK(A);return console.warn("IndexedDB not available, falling back to localStorage"),AJ("localStorage",A);case"localStorage":if("undefined"!=typeof localStorage)return new AL(A);return console.warn("localStorage not available, falling back to memory storage"),AJ("memory",A);case"memory":return new AZ;case"none":return new AX;default:throw Error(`Unknown storage type: ${e}`)}}function AU(){if("undefined"!=typeof indexedDB)try{return indexedDB.open("test",1).onerror=()=>{},"indexeddb"}catch(e){}if("undefined"!=typeof localStorage)try{return localStorage.setItem("test","test"),localStorage.removeItem("test"),"localStorage"}catch(e){}return"memory"}function AF(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function Aq(e){return function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){AF(o,r,n,i,a,"next",e)}function a(e){AF(o,r,n,i,a,"throw",e)}i(void 0)})}}function AV(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}function AH(e,A){return A=null!=A?A:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(A)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(A)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(A,t))}),e}let AG=e=>{var A;let t=e.highlightElements||[],n=e.highlightRect;if(!(null==(A=e.uiContext)?void 0:A.shotSize))return(0,r.jsx)("div",{className:"blackboard",children:(0,r.jsx)("div",{className:"blackboard-main-content",style:{padding:"20px"},children:"No UI context available"})});let{shotSize:o,screenshot:i}=e.uiContext,a=o.width,s=o.height,l=(0,et.useMemo)(()=>i?"object"==typeof i&&"base64"in i?i.base64:"string"==typeof i?i:"":"",[i]),c=t.map(e=>e.rect),d=null;return 1===c.length?d=(0,r.jsx)("div",{className:"bottom-tip",children:(0,r.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(c[0])]})}):c.length>1&&(d=(0,r.jsx)("div",{className:"bottom-tip",children:(0,r.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(c)]})})),(0,r.jsxs)("div",{className:"blackboard",children:[(0,r.jsxs)("div",{className:"blackboard-main-content",style:{width:"100%",position:"relative"},children:[l&&(0,r.jsx)("img",{src:l,alt:"screenshot",className:"blackboard-screenshot",draggable:!1}),(0,r.jsxs)("div",{className:"blackboard-overlay",style:{aspectRatio:`${a}/${s}`,"--ui-scale":Math.max(1,Math.sqrt(a/1920))},children:[n&&(0,r.jsx)("div",{className:"blackboard-rect blackboard-rect-search",style:{left:`${n.left/a*100}%`,top:`${n.top/s*100}%`,width:`${n.width/a*100}%`,height:`${n.height/s*100}%`},children:(0,r.jsx)("span",{className:"blackboard-rect-label",children:"Search Area"})}),t.map((e,A)=>(0,r.jsx)("div",{className:"blackboard-rect blackboard-rect-highlight",style:{left:`${e.rect.left/a*100}%`,top:`${e.rect.top/s*100}%`,width:`${e.rect.width/a*100}%`,height:`${e.rect.height/s*100}%`},children:e.content&&(0,r.jsx)("span",{className:"blackboard-rect-label",children:e.content})},e.id||A))]})]}),(0,r.jsx)("div",{className:"bottom-tip",style:{display:e.hideController?"none":"block"},children:d})]})};var AW=t(9783),AY=t(7294),A_=t(4985),A$=t(1090),A0=t(2946),A1=t(90),A2=t(3776);let A3=e=>{let{text:A,disabled:t=!1,speed:n=5,className:o="",colorTheme:i="blue"}=e,a={"--animation-duration":`${n}s`},s=`theme-${i}`;return(0,r.jsx)("div",{className:`shiny-text ${s} ${t?"disabled":""} ${o}`,style:a,children:A})},A5=(0,r.jsxs)("span",{children:["Don't worry, just one more step to launch the playground server.",(0,r.jsx)("br",{}),"Please run one of the commands under the midscene project directory:",(0,r.jsx)("br",{}),"a. ",(0,r.jsx)("strong",{children:"npx midscene-playground"}),(0,r.jsx)("br",{}),"b. ",(0,r.jsx)("strong",{children:"npx --yes @midscene/web"})]}),A6=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:A5;return(0,r.jsx)("div",{className:"server-tip",children:(0,r.jsx)(Ar.A,{message:"Playground Server Not Ready",description:e,type:"warning"})})},A7=(0,r.jsx)("div",{className:"result-empty-tip",style:{textAlign:"center"},children:(0,r.jsx)(A3,{disabled:!0,text:"The result will be shown here"})});var A9=JSON.parse('{"content":[{"content":"Swag Labs","rect":{"left":895,"top":38,"width":130,"height":32,"zoom":1},"center":[960,54],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"d6c5e2f100","attributes":{"nodeType":"TEXT Node"},"indexId":0},{"content":"Username","rect":{"left":814,"top":154,"width":292,"height":40,"zoom":1},"center":[960,174],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'a9021f480e\']","id":"a9021f480e","attributes":{"class":".input_error.form_input","placeholder":"Username","type":"text","data-test":"username","id":"user-name","name":"user-name","autocorrect":"off","autocapitalize":"none","htmlTagName":"<input>","nodeType":"FORM_ITEM Node"},"indexId":1},{"content":"Password","rect":{"left":814,"top":209,"width":292,"height":40,"zoom":1},"center":[960,229],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'580f3b761d\']","id":"580f3b761d","attributes":{"class":".input_error.form_input","placeholder":"Password","type":"password","data-test":"password","id":"password","name":"password","autocorrect":"off","autocapitalize":"none","htmlTagName":"<input>","nodeType":"FORM_ITEM Node"},"indexId":2},{"content":"","rect":{"left":814,"top":253,"width":292,"height":45,"zoom":1},"center":[960,275],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'3e1faf0fd6\']","id":"3e1faf0fd6","attributes":{"class":".error-message-container","nodeType":"CONTAINER Node"},"indexId":3},{"content":"Login","rect":{"left":814,"top":303,"width":292,"height":49,"zoom":1},"center":[960,327],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'6db0b64062\']","id":"6db0b64062","attributes":{"type":"submit","class":".submit-button.btn_action","data-test":"login-button","id":"login-button","name":"login-button","value":"Login","htmlTagName":"<input>","nodeType":"FORM_ITEM Node"},"indexId":4},{"content":"Accepted usernames are:","rect":{"left":570,"top":435,"width":221,"height":21,"zoom":1},"center":[680,445],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"5ca36a5942","attributes":{"nodeType":"TEXT Node"},"indexId":5},{"content":"standard_user","rect":{"left":570,"top":479,"width":109,"height":19,"zoom":1},"center":[624,488],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"fd2fe54174","attributes":{"nodeType":"TEXT Node"},"indexId":6},{"content":"locked_out_user","rect":{"left":570,"top":503,"width":126,"height":19,"zoom":1},"center":[633,512],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"403daee75b","attributes":{"nodeType":"TEXT Node"},"indexId":7},{"content":"problem_user","rect":{"left":570,"top":527,"width":101,"height":19,"zoom":1},"center":[620,536],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"2b34f1e161","attributes":{"nodeType":"TEXT Node"},"indexId":8},{"content":"performance_glitch_user","rect":{"left":570,"top":551,"width":193,"height":19,"zoom":1},"center":[666,560],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"6ae63a4d9e","attributes":{"nodeType":"TEXT Node"},"indexId":9},{"content":"error_user","rect":{"left":570,"top":575,"width":84,"height":19,"zoom":1},"center":[612,584],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"76030282f1","attributes":{"nodeType":"TEXT Node"},"indexId":10},{"content":"visual_user","rect":{"left":570,"top":599,"width":92,"height":19,"zoom":1},"center":[616,608],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"f34b057726","attributes":{"nodeType":"TEXT Node"},"indexId":11},{"content":"Password for all users:","rect":{"left":960,"top":435,"width":221,"height":21,"zoom":1},"center":[1070,445],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"e693f608cd","attributes":{"nodeType":"TEXT Node"},"indexId":12},{"content":"secret_sauce","rect":{"left":960,"top":477,"width":101,"height":19,"zoom":1},"center":[1010,486],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"cde9de9828","attributes":{"nodeType":"TEXT Node"},"indexId":13}],"size":{"width":1920,"height":1080},"screenshotBase64":"data:image/png;base64,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8xecP25c2/qkSycuun/hzOuuG3nIiEcWLlz56xfbBgYAAIBPMwEagO3AQ4sW9evb9/h3q2tdXd2EsWN/8eCDlbeXfPOKsy+84OBhww4YMmTrb108YUJ9fd3Io46ccMklZ5xy6ueHD6+s9+nd1Kd3U9thu/bdpbFHQ1EUpVJp3uzZzzz/3NAv/uV5Ey+dMHbsgP79t23gqqqqAf37V1VVVd7W19f1/9znKq//dKedpl151Xev/96Bo7647De/mTJpUmW9saHhntvn/tfLr3xp9PGTp0z5m+OOG3/m2MpHN98255Irrjjh6GMuu+jCmbfOOXz06AcffnjbBgMAAIBPki04ANgObNq0afYP5559+uk/vvvuoihOPOaYt9ata9vxefkrLxdFsf7tt2u6dNn6W2vWvrnnwD0+22/Xp5Y8PeywUa2trR9+leqqqjETxv/n88/X1NQseeaZR375y6OOOOKaG25o359lwzvvbNmyZff+/ZcuW3b131+3Q8+epVKptbX1C8MPbm1tnXvXneVyefkrL9/xk5+cfPzxN82eVRTFaytWvPXWuqIofnD77Xf/9KftOw8AAADkCNAAbB9u/dGPLvzyOQcNPeDRxY+PGzPmlttu27Jly4d/ZcYPbimXSzdMndqvb99Fjz9+2ZWTX1q+/EOO39zcvN/gwdOnTOnevfuGDe/s1NT06muvtffPUbyxZs3Y888//eSTr7rs8tdXrZo1d26lMg8a+Bc79Oz5DzfNbDtyS3Pze767+Mkn230eAAAAyBGgAdg+rFq9+q5/vHfcmDFda2t3auoz9647P/IrfZqarp0x4+rrruvT1HTjtGu+dtFXzrrwgqIoVq5evc+gQZVjamtrBw0ceO+CBZXjr7zssr867rjnli6tbC29zdO+tW7dpk2b+u6888pVqyp7QBel3z29cIfGxueWvnD6+HO6VFePOvTQ22fe/PN/+edfL1u29MVlL7z44hEnjK4cVl9XX1fX9b3n/Yh7uAEAAODTxR7QAGw3Zt465/BRo75+8cVz75y3bv36tvVyuVwul4uiKJXL5XK59G7qnTxx4pRJk+rr6tesXbvmzbUtLS2V9V88+OCIgw46eNiwno2NE8+/4E+6daus79q3b9farpUzHHX4EYcceFDbJUqlUrlcLhWl37149xK/z8aNGx9+7LFxY8bs0Nh44P77/+2J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QoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoCE6ZwSAAAInUlEQVQGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIOJ/AFTldxexlFiCAAAAAElFTkSuQmCC","screenshotBase64WithElementMarker":"data:image/png;base64,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vn9Zpk27K62tozJ7ztxMn/5g9t9vdGruvufebGqvPQen5nOf/1K+9e2L06mpqTE77NAv+++3X0495eTstNNOebVd8J9fy/cvuSwvpl+/fvnhD76fTgfsv1923nmnPPXUghz+pqNyyCFvSEPXrrlj6rQ899zz+dAH359vf+fivJj9998v69evz2lnvCvDhg5J//79M/ePf8xTTy1IfX19vvPtr6d//x2yse2375NzPvyhfO0b38qnJ3w2l1z2g4wZ84YsXbI00+68MytWrMzee++V17/+oAAAALDtqA8AAADbjPr6+vznBV/Orrvskttu+02m3XlX7pg6LTU77NAvJ580Pp/8xL+nqakxmxq178jMn/9kRreOysZGj25NTV1dkZEjhmdTp/3TKVm3bl2+9/3LMvPhWZn58Kz06NEjb37TEfnSFz+bL37pq7n7nnuzqeOPPy5fvfCirF69JnvvtWcqlUqq1WqWr1iRRx+dlwcffCg/nXh1fnLl5Rk6dEheTU8//UyefvqZvJiVq1ZnY926dcvEn/w4Hz7n3Myc+XBuvPGm1AwevEc+8R8fT+uoUfn2dy7Oixm8x+4596Mfzoc/8i+597778/Cs2amrKzJy5Ii8591n5vUHH5QX8oEPvDfb990+3734kjz11IL87Gc/T0337t0zfvwJ+cynPpGGhoYAAACw7ags3rC6GgAAALZJq1atyh//9EgG7rxT+vXrl83tySf/kuUrVmTI3nunrq7I/+RTn/lsfvazn+ezEz6dU045ORtbt25dzj3v47nttt/kiMP/IRd/95vZWqxZsyZ//OMj2WWXgenTp3derjVr1uZPf/pTXve616W5uWdeio6Ojvz1r4uyYMGC9OnTJ7vuukuKoggAAADbnvoAAACwzerevXtGt47KlrLLLgPzUt1yy22pOfbYo7OphoaGfOB9Z+W2236TeY89lq1JU1NTRo0amVeqqakx++47Mi9HURQZMKB/BgzoHwAAALZtRQAAAGArtF2vXqmZPWduXsjDD89KzfB99gkAAADwX+oDAAAAW6Gjj/7HfOe738v73n92xh1zVIYP3yev221Q5sz9Y+6774Hc/pvfpq6uLm95y7EBAAAA/kt9AAAAYCv0kQ9/MGvWrMlPJ/4sP7v6mvzs6muysZ49e+Rb3/ha3vCGgwMAAAD8l/oAAADAVqhSqeTf/+1f84EPvDd3/GFqnn7mmSxduiyDBu2avffeK4P32CONjQ0BAAAA/j/1AQAAgK1YS3Nzxo07OgAAAMD/rggAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEJ9AAC2pPaOpK092dCRakdHAAAAyqhSFEl9kXStS+qKAABsKfUBANhS1qxPZUNHGhsb06WpS+rq6gIAAFBG7e3tWb9+fdauXptqfZE0dQkAwJZQHwCALWFVW7rU1adHr+YAAACUXV1dXerq6tLY2JiVq1Zl/aq2pHvXAABsbkUAADa3NevTpa4+Pbp3DwAAwLamR/fu6VJXn6xZHwCAza0IAMDm1N6RyoaO9OjePQAAANuqHt27p7KhI2nvCADA5lQEAGBzamtPY2NjAAAAtnWNjY1JW3sAADanIgAAm9OGjnTp0iUAAADbui5duiQbOgIAsDkVAQDYjKodHamrqwsAAMC2rq6uLtWOjgAAbE5FAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohfoAAABsTSqVALymVKsBAADYWtQHAABga1OtBuA1oVIJAADA1qQIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCfQAAADaXSiUAAAAAbDlFAAAAAAAAACiFIgAAAFtaS0uqjz2WjB2bl2L9+vX55je/meXLl2dT3/ve9/L0008HAAAAgKQIAADAltTSkup116Wy2255qarVap566qm0t7dnUwsXLsy6desCAAAAQFIfAACALWXs2GTSpFQCAAAAwOZQHwAAgC1l8uTk619PJk1KJk/Oq23x4sW59tprs2DBguywww45+OCDM2rUqHS66667cv/99+f555/PLrvskje96U0ZOHBgaiZOnJgRI0Zk7ty5mT17ds4777zccMMNGTFiRB566KE88sgj6dmzZ4444oiMHDkyne6+++5MnTo1K1asyIABA3LMMcdk4MCB6ejoyEUXXZSjjjoqt912W55//vnsvvvuOfnkk3PHHXdk+vTpqVQq2X///XPEEUek07x58/L73/8+Tz31VPr27ZuDDjooo0ePDgAAAMBLUR8AAIAtZdCgZP78ZOzYbA7XX399+vXrl3e+851ZsGBBLr/88uy+++5pbm7OnXfemXvuuSennnpqWlpaMmPGjFx22WX5yEc+kt69e2fx4sWZNGlSxowZk3e9611pamrK4sWLc91112X8+PF561vfmvvvvz8TJ07MwIED07t378yePTu//vWv8573vCc77rhj7r777lx22WX59Kc/nZpFixbl9ttvzzve8Y5s2LAhEydOzIUXXpghQ4bknHPOycKFC/PjH/84AwYMyLBhw/KXv/wlEydOzIknnpg99tgj8+bNyzXXXJOuXbtm+PDhAQAAAPjfFAEAANhS5s/P5lStVvPss89m8eLFGTRoUD75yU+mR48eqbnrrrtyxBFHpLm5OdVqNSNHjswOO+yQWbNmpdOQIUMyduzYDBw4MEVRpGafffbJkCFD0tjYmDe84Q3p0aNHnnzyydQMGDAgZ599dnbcccesWLEiQ4YMSVtbWxYuXJhORxxxRHr37p1+/fpl9OjRWb16dY477rh069Yte+yxRwYPHpzHH388NdOnT88+++yTXXfdNevXr88uu+yS1tbWPPDAAwEAAAB4KeoDAACwlSuKIkVRZMOGDdlYtVrNhg0b0qVLl9ScfPLJue222/KDH/wgGzZsSGtra4488sjU/PWvf80vf/nLtLS0ZGNtbW3p1L9//2xqhx12SKdKpZK+fftm5cqVqalUKvnFL36RZcuWpaWlJZVKJTVr1qxJp759+6bT9ttvn549e6axsTGdtt9++yxbtiw1Tz/9dB577LE88cQT2VivXr0CAAAA8FLUBwAAYCtXX1+fAQMGZOHChenbt286Pffcc6lUKunfv386OjqyZs2avOUtb0lRFHnuuedy2WWXpW/fvjnwwAPTt2/fHH/88dlzzz3Tqb29PZVKJZ2KosimKpVKXsztt9+eXr165X3ve19q1q5dmwkTJmRjRVFkY5VKJS+mX79+2XXXXXPUUUelU0dHRwAAAABeqiIAAACvASNGjMgtt9ySRYsWpWbVqlWZNGlShg4dmrq6ulQqlVx66aWZOnVqarbbbrt069Yt7e3tqRk1alRuueWWrFq1KjWPP/54JkyYkOeffz6v1Pr167N+/fpUq9V0dHTkxhtvTKVSySs1YsSI3HfffXnqqadSs3z58lxwwQWZPn16AAAAAF6K+gAAALwGvPGNb8yGDRvy3e9+Nx0dHeno6Mjw4cNz4oknpqZSqeS0007LxIkTM3ny5HR0dGTXXXdNa2trag4//PCsXbs2F1xwQerr69PR0ZG3ve1t6du3b16pN7/5zbn88svzuc99Lh0dHdl///3Tv3//vFJ77LFHxo0blx//+MepVqtZvXp1Dj300IwePToAAAAAL0V9AAAAXiPe9KY35U1velOWLVuWnj17piiKbGyXXXbJxz/+8axcuTL19fVpbGxMp0qlknHjxuXoo4/OihUr0tLSko198IMfzKY++MEPZlPvfe97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3LuXoyeO4xZcsSKB5ctzN0d+/pl8m437VbFCBZ576mkSkhLZtW8fQYGB+JYqxelz50jPyKBW9er4+fpyN7du3ebnX07g5elFo/r1+D0XL18m6eZN7kdxb2/atmlDGb/S7D6wn8tXr9KkUSNu3brNz7+cwM3L04snW7agauXKnDl3ngOHD5GXn8+dqlSqROcXXsBms3PyzBl27d+H0+nExTAMmjdpwt3cSEgg5upVCioXEMATjzfH38+Pn45GceLUKZxOJ3fzWMNGWCxmjhw7hsPhQET+2MUjUZisnoiIiIg8LKYUW44TERERkYfEmZ5LjaZNkP+vj5a8T6cOHVj+yUpCQkMRERH5b1azWjVK+/nR65VX6PbSy1y4dImW7doiIiL/08UjUZisnoiIiIg8LBZERERERERERP4N40aMpFOHDrjt3r8fERERERER+c+wICIiIiJ/uQvRFzlwuDRXrsYiIiLy3+7ipWgOHjmMS0xsLPOXLEZERERERET+MyyIiIiIyF9uwdKlLFi6FBERkcLg3Q8+4N0PPkBERERERET+8wxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERET+cmX8/WncoAEPk4eHB61btMBsNiMiIv+ddm/Z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QdGiRek/YgRff/sNNrudkLlzCZ0ylZBx40lNS2PuwoWMGjyEe3X5yhWGjBnD/BkzCBk3nhsJCcyYN4/+vXvj9s6iRaz+cAWXjh3n1u3bTJkzm0cbNsDthbZt+fSfy3Dr3qkTZ86d48mOL+DidDrp3r8fq5Yv59juPeTk5jJ+2jQWzpnDvcq32ZgZNp9Rg4cwa/LbnDh9irkL36NhvXq4ha9ZTYO6dTnw7XYsFgs5OTkMnzAep9OJS2JSEj0G9Gdp2LvMeXsKWdnZfLltK59Gfo5LKR8foo/+jFvixWhcqjZuRHpGBiIifxW73U58YgJ/JDklhT+Sk5vDvys5JYU/I3x1BGs3buBOdoeDO+Xk5pCTm8PvuZmczB9xOBwkp6byR+x2O8kpKfyR5JQURERERERE5OEzpdhynIiIiIg8JM70XGo0bcJ/mtlsxt+vNPGJCfwZFrOZ0n6liU9M4N9RtkwA8YkJ/J5yAQEkJCXhcDj4s/xLlyY1NRWb3U5Bn//rI557+mnutGrtWsZMnYKbYRiUslpJTk3l95jNZvz9ShOfmMDv8fP1JS09HbvdjoiIiIiI/P9dPBKFyeqJiIiIyMNiQURERORvwG63E5+YwJ9ls9uJT0zg3xWfmMAfuZGQwL8r6eZN7mbQW6MpWqQId7p1O4+CHA4Hyamp/BG73U58YgJ/JDklBREREREREREREflrWRARERGRv4Ws7GxERERERERERESkcDMQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxEREZFCrE7t2rRu0YJ6jzzCw1Lc25tWzZvzoDVt3Bi/UqUQERERERERERERuVcGIiIiIoVYx7btGDloMJs/j2Rgnz48DFUqVWL9J5/yoC1fuJAmjR9FRERERERERERE5F5ZEBERESnE5i1ehMu7M2dRs1p15H/XuWNHalWvztyFCxEREREREREREZH/LhZERERE/gacODFhQv53zR9rwu28PEREREREREREROS/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2Wxw9PgJwldH4Fbaz4+lYe/SunlzihYtSv8RI/j622+4V6+/9hqjBg+hfNmynDh9im3ffUfDevXo9+abuFSrUoV506bzWKNGWMxmzkdH03/ECGKvxeHW+5XuTBw9ilJWH+KuX2f5Jyv5LDISlxfatuXTfy6joDPnzvFkxxcQEREREfm/7uKRKExWT0REREQeFlOKLceJiIiIyEPiTM+lRtMm/DfwL12a1NRUbHY7d+Pl6YVhmMjKzubP8vP1JS09Hbvdzt2ULFECu91Odk4OBQ3rP4BZkydzp8tXrtDs2WcoqGSJEthsdnJyc7gbT09PDJOJ7Jwc7lfsyVN4e3lxp0FvjWbTli24GYZBKauV5NRUfo+XpxfFPIqSkpbG7ynj709iUhIiIiIiIoXFxSNRmKyeiIiIiDwsFkRERETk/yfp5k3+SE5uDv+u5JQU/khGZiZ3E746grUbN3Anu8PBnTIyM/kjubm5/FkNW7fCxP+UlZ1NQQ6Hg+TUVP5ITm4OObk5/JHEpCRERERERERERETk3lkQERERkf/zbt++ze3bt/lPS01LQ0RERERERERERP7vMhARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgULIiIiIvJvqV2jBrm3bnH111+5m+Le3jRu0ACn08mps2dJS09HRERERERERERE5GGwICIiIiL/ljHD3+RK7FXmLlzI3fiXLs3IQYMp7edL2TIB1GnRHLvdjoiIiIiIiIiIiMiDZiAiIiIiD9WV2Fi6vt6Xrq+/Tmk/P3xLlUJERERERERERETkYTAQERERkb+E0+lERERERERERERE5GGyICIiIlKIbY1cy+TZs5g2YQKN6tXnl9OnmTJnNuejo3EJLF+edSs/4fbt28yYP4+eXbvR/tlnuBGfQLNnn8GluLc3oVND+McTT5Cfn893u3YxY9475OXn41aieAn+tWgxT7VqxZXYWN7/1wq27tjB/RjUty/dO3WmYmAgh48eZWbYfC7F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RERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMREREROSBKVq0KI8/9hitW7TAw8MDuX+B5cvTukULHn/sMYoWKcIfqVmtGkUsFh60IhYLrVu0oIjFgoiIiIiIiIiIyH8TAxERERF5IOo98ggXo47y7qzZTBk7FmvJksj9a1S/PiMHDWb5ewv51+Il/J4WTZtxYPsO3hw4iAfNarWyaVUEVqsVERERERERERGR/yYWREREROSB6NiuHTt27mTwmLeQP2/L9u1s2b6dl5/vwMRRo/g9p86e4cNPPmHLju38nt1bttDx1VfJzMpCRERERERERETk78CCiIiIiDwQ5cuWIyEpEXkwnE4nfyQzK4upoXP4PWX8/alTqzYmkwkREREREREREZG/CwsiIiIihdjWyLVMnj2LaRMm0KhefX45fZopc2ZzPjoat6DAQGZMmkTLps2IT0xk45bNvL9iBW5frV5DaT8/ItatxWIpwvD+/Snj70+dFs1JSEzkmX/8g5mTJlMuIACb3U6bJ/+BS5c+fYhPTMClVvXqhIwfT9PGj/LrtWt8vmED4asjcJs+YSLPPf00J8+cZv2XXxEaMpUaVasx6K3RbNqyhT1bt7Fh89e8OXAQu/ft45fTpxk5eDA79+5l+PhxuFhLliR0aghtWrfGYrGwa98+xk0LISMzE5dBfftiMpkoWyaALi++yG/xNwiPWM0XX3+Fm5+vL/OmTeeJxx8n7vp1tn3/He+vWIHT6cRtUN++dO/UmYqBgRw+epSZYfO5FBPDvSru7c17s+fwj1atyMvLIyMzE5fl4eGs/mI992L9J59QoVx5Ll+5wqC3RnPr1i0K2rQqggZ162Iymfhu4ybsDgdXYq/Sa/Bg3Px8fZk3bTpPPP44cdevs+3773h/xQqcTiduzR59lBGDBlE5KJivvtnG0o8+Iu76de5Fm9at6d+rN68NGojbgN59CA6qSEhoKC4mk4mpY8fRtk0bShQvzo979zBj/nzSMzJwCwoMZMakSbRs2oz4xEQ2btnM+ytW4PbV6jWU9vMjYt1aLJYiDO/fnzL+/tRp0ZyExEREREREREREROTvxTxx2pQZiIiIiDwst218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AFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAP5ve3BAAgAAgAAo+j+6H6ECFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwYYkQHKd0AqxtAAAAAElFTkSuQmCC","url":"https://www.saucedemo.com/"}');let A8=e=>{let{uiContextPreview:A,setUiContextPreview:t,showContextPreview:n}=e;return n?(0,r.jsxs)("div",{className:"form-part context-panel",children:[(0,r.jsx)("h3",{children:"UI Context"}),A?(0,r.jsx)(AG,{uiContext:A,hideController:!0}):(0,r.jsxs)("div",{children:[(e=>{switch(e){case"finished":case"passed":case"success":case"connected":return(0,r.jsx)("span",{style:{color:"#00AD4B"},children:(0,r.jsx)(AW.A,{})});case"finishedWithWarning":return(0,r.jsx)("span",{style:{color:"#f7bb05"},children:(0,r.jsx)(AY.A,{})});case"failed":case"closed":case"timedOut":case"interrupted":return(0,r.jsx)("span",{style:{color:"#FF0A0A"},children:(0,r.jsx)(A_.A,{})});case"pending":return(0,r.jsx)(A$.A,{});case"cancelled":case"skipped":return(0,r.jsx)(A0.A,{});case"running":return(0,r.jsx)(A1.A,{});default:return(0,r.jsx)(A2.A,{})}})("failed")," No UI context",(0,r.jsx)(eA.Ay,{type:"link",onClick:e=>{e.preventDefault(),t(A9)},children:"Load Demo"}),(0,r.jsx)("div",{children:"To load the UI context, you can either use the demo data above, or click the 'Send to Playground' in the report page."})]})]}):null};var A4=t(4291);let te=e=>{let{className:A=""}=e,{config:t}=N();return Object.keys(t||{}).length>=1?null:(0,r.jsxs)("div",{className:`env-config-reminder ${A}`,children:[(0,r.jsx)(A4.A,{className:"reminder-icon"}),(0,r.jsx)("span",{className:"reminder-text",children:"Please set up your environment variables before using."}),(0,r.jsx)(e9,{mode:"text",showTooltipWhenEmpty:!1})]})};var tA=t(6130),tt=t(2297),tr=t(7062),tn=t(5862),to=t(7615),ti=t(2107),ta=t(4544),ts=t(3616),tl=t(5625),tc=t(1269);let td=e=>{var A,t;return(0,r.jsx)("svg",(A=function(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),t=t={children:(0,r.jsx)("path",{fill:"currentColor",d:"M1.333 13v-2.5a.667.667 0 0 1 1.334 0V13c0 .184.149.333.333.333h2.5a.667.667 0 0 1 0 1.334H3c-.92 0-1.667-.746-1.667-1.667m12 0v-2.5a.667.667 0 0 1 1.334 0V13c0 .92-.746 1.667-1.667 1.667h-2.5a.667.667 0 0 1 0-1.334H13a.333.333 0 0 0 .333-.333m-12-7.5V3c0-.92.747-1.667 1.667-1.667h2.5a.667.667 0 0 1 0 1.334H3A.333.333 0 0 0 2.667 3v2.5a.667.667 0 0 1-1.334 0m12 0V3A.333.333 0 0 0 13 2.667h-2.5a.667.667 0 0 1 0-1.334H13c.92 0 1.667.747 1.667 1.667v2.5a.667.667 0 0 1-1.334 0M5.667 10.333h4.666V5.667H5.667zm6 .167c0 .644-.523 1.167-1.167 1.167h-5A1.167 1.167 0 0 1 4.333 10.5v-5c0-.644.523-1.167 1.167-1.167h5c.644 0 1.167.523 1.167 1.167z"})},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A))},tu=e=>{var A,t;return(0,r.jsxs)("svg",(A=function(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),t=t={children:[(0,r.jsx)("path",{stroke:"currentColor",strokeLinejoin:"round",strokeWidth:1.333,d:"M11.333 13.667 14.667 8l-3.334-5.667H4.667L1.333 8l3.334 5.667z"}),(0,r.jsx)("path",{stroke:"currentColor",strokeLinejoin:"round",strokeWidth:1.333,d:"M8 9.667a1.667 1.667 0 1 0 0-3.334 1.667 1.667 0 0 0 0 3.334Z"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A))};function tp(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}function tg(e,A){return{left:0,top:0,width:e,pointerLeft:Math.round(e/2),pointerTop:Math.round(A/2)}}function tm(e,A,t,r){if(!A.img)return;e.img&&A.img!==e.img&&(e.prevImg=e.img,e.imageChanged=!0);let n=A.imageWidth||t,o=A.imageHeight||r,i=e.imgW!==n||e.imgH!==o;if(e.img=A.img,e.imgW=n,e.imgH=o,i){let A=tg(n,o);e.camera=tp({},A),e.prevCamera=tp({},A),e.pointerMoved=!1}}function tf(e,A){return Math.abs(e.pointerLeft-A.pointerLeft)>1||Math.abs(e.pointerTop-A.pointerTop)>1}function th(e,A,t,r,n){let o=tg(t,r),i={img:"",imgW:t,imgH:r,camera:tp({},o),prevCamera:tp({},o),prevImg:null,insights:[],spinning:!1,spinningElapsedMs:0,pointerImg:Ad,title:"",subTitle:"",taskId:void 0,frameInScript:0,scriptIndex:0,imageChanged:!1,pointerMoved:!1,rawProgress:0};for(let o=0;o<e.length;o++){var a,s;let l=e[o],c=l.startFrame+l.durationInFrames;if(0===l.durationInFrames){l.startFrame<=A&&("pointer"===l.type&&l.pointerImg&&(i.pointerImg=l.pointerImg),i.title=l.title||i.title,i.subTitle=l.subTitle||i.subTitle,i.taskId=null!=(a=l.taskId)?a:i.taskId,i.scriptIndex=o);continue}if(A<l.startFrame)break;switch(i.title=l.title||i.title,i.subTitle=l.subTitle||i.subTitle,i.taskId=null!=(s=l.taskId)?s:i.taskId,i.scriptIndex=o,i.frameInScript=A-l.startFrame,i.rawProgress=Math.min(i.frameInScript/l.durationInFrames,1),l.type){case"img":!function(e,A,t,r,n){tm(e,A,r,n);let o=A.startFrame+A.durationInFrames;A.cameraTarget?(e.prevCamera=tp({},e.camera),e.camera=tp({},A.cameraTarget),e.pointerMoved=tf(e.prevCamera,e.camera)):t>=o&&(e.pointerMoved=!1,e.imageChanged=!1),e.spinning=!1}(i,l,A,t,r);break;case"insight":!function(e,A,t,r,n){if(tm(e,A,r,n),e.insights.some(e=>e.highlightElement===A.highlightElement&&e.searchArea===A.searchArea)||e.insights.push({highlightElement:A.highlightElement,searchArea:A.searchArea,alpha:1}),A.cameraTarget&&void 0!==A.insightPhaseFrames){let r=A.startFrame+A.insightPhaseFrames;t>=r&&(e.prevCamera=tp({},e.camera),e.camera=tp({},A.cameraTarget),e.rawProgress=Math.min((t-r)/(A.cameraPhaseFrames||1),1),e.pointerMoved=tf(e.prevCamera,e.camera))}e.spinning=!1}(i,l,A,t,r);break;case"clear-insight":!function(e,A,t){let r=A.startFrame+A.durationInFrames,n=1-e.rawProgress;e.insights=e.insights.map(e=>{var A,t;return A=tp({},e),t=t={alpha:n},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A}),t>=r&&(e.insights=[]),e.spinning=!1}(i,l,A);break;case"spinning-pointer":i.spinning=!0,i.spinningElapsedMs=i.frameInScript/n*1e3;break;case"sleep":i.spinning=!1}A>=c&&("clear-insight"!==l.type&&(i.imageChanged=!1),i.pointerMoved=!1,i.rawProgress=1,l.cameraTarget&&(i.prevCamera=tp({},i.camera)))}if(!i.img){let A=e.find(e=>"img"===e.type&&e.img);A&&(i.img=A.img,i.imgW=A.imageWidth||t,i.imgH=A.imageHeight||r)}return{img:i.img,imageWidth:i.imgW,imageHeight:i.imgH,prevImg:i.imageChanged?i.prevImg:null,camera:i.camera,prevCamera:i.prevCamera,insights:i.insights,spinning:i.spinning,spinningElapsedMs:i.spinningElapsedMs,currentPointerImg:i.pointerImg,title:i.title,subTitle:i.subTitle,taskId:i.taskId,frameInScript:i.frameInScript,scriptIndex:i.scriptIndex,imageChanged:i.imageChanged,pointerMoved:i.pointerMoved,rawProgress:i.rawProgress}}function ty(e,A,t,r){let n=Math.min(e/t,A/r),o=t*n,i=r*n;return{offsetX:(e-o)/2,offsetY:(A-i)/2,contentWidth:o,contentHeight:i}}let tE=e=>{let{frameMap:A,autoZoom:t,frame:n,width:o,height:i,fps:a}=e,{scriptFrames:s,imageWidth:l,imageHeight:c}=A,d=(0,et.useMemo)(()=>th(s,n,l,c,a),[s,n,l,c,a]);if(!d.img)return null;let{img:u,imageWidth:p,imageHeight:g,prevImg:m,camera:f,prevCamera:h,insights:y,spinning:E,spinningElapsedMs:v,currentPointerImg:b,title:k,subTitle:C,frameInScript:S,imageChanged:I,pointerMoved:R,rawProgress:x}=d,j=R?Math.min(x/.375,1):x,P=R?x<=.375?0:Math.min((x-.375)/.625,1):x,w=h.pointerLeft+(f.pointerLeft-h.pointerLeft)*j,N=h.pointerTop+(f.pointerTop-h.pointerTop)*j,O=t?h.left+(f.left-h.left)*P:0,T=t?h.top+(f.top-h.top)*P:0,K=t?h.width+(f.width-h.width)*P:p,{offsetX:M,offsetY:B,contentWidth:D,contentHeight:z}=ty(o,i,p,g),Q=-(D/p*O),L=-(z/g*T),Z=`scale(${p/K}) translate(${Q}px, ${L}px)`,X=g/p*K,J=(w-O)/K*D,U=(N-T)/X*z,F=f.pointerLeft!==Math.round(p/2)||f.pointerTop!==Math.round(g/2)||h.pointerLeft!==Math.round(p/2)||h.pointerTop!==Math.round(g/2),q=Math.max(1,Math.sqrt(p/1920)),V=I?Math.min(S/10,1):1,H=E?(Math.sin(v/500-Math.PI/2)+1)/2*Math.PI*2:0;return(0,r.jsx)("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,backgroundColor:"#000"},children:(0,r.jsx)("div",{style:{position:"absolute",left:M,top:B,width:D,height:z,overflow:"hidden"},children:(0,r.jsxs)("div",{style:{width:D,height:z,position:"relative",overflow:"hidden"},children:[I&&m&&V<1&&(0,r.jsx)("div",{style:{position:"absolute",width:D,height:z,overflow:"hidden",opacity:1-V},children:(0,r.jsx)("img",{alt:"",src:m,style:{width:D,height:z,transformOrigin:"0 0",transform:Z}})}),(0,r.jsxs)("div",{style:{position:"absolute",width:D,height:z,overflow:"hidden",opacity:I?V:1},children:[(0,r.jsx)("img",{alt:"",src:u,style:{width:D,height:z,transformOrigin:"0 0",transform:Z}}),(0,r.jsx)("div",{style:{position:"absolute",top:0,left:0,width:D,height:z,transformOrigin:"0 0",transform:Z,pointerEvents:"none"},children:0===y.length?null:y.map((e,A)=>{let t=[];if(e.highlightElement){let n=e.highlightElement.rect;t.push((0,r.jsx)("div",{style:{position:"absolute",left:n.left,top:n.top,width:n.width,height:n.height,background:"rgba(253, 89, 7, 0.4)",border:`${2*q}px solid #fd5907`,boxShadow:`${2*q}px ${2*q}px ${+q}px rgba(51, 51, 51, 0.3)`,opacity:e.alpha,pointerEvents:"none"}},`highlight-${A}`))}if(e.searchArea){let n=e.searchArea;t.push((0,r.jsx)("div",{style:{position:"absolute",left:n.left,top:n.top,width:n.width,height:n.height,background:"rgba(2, 131, 145, 0.4)",border:`${2*q}px solid #028391`,boxShadow:`${2*q}px ${2*q}px ${+q}px rgba(51, 51, 51, 0.3)`,opacity:e.alpha,pointerEvents:"none"}},`search-${A}`))}return t})})]}),E&&(0,r.jsx)("img",{alt:"",src:Au,style:{position:"absolute",left:J-22*q,top:U-28*q,width:44*q,height:56*q,transform:`rotate(${H}rad)`,transformOrigin:"center center",filter:"drop-shadow(0 1px 2px rgba(0,0,0,0.3))"}}),F&&!E&&(0,r.jsx)("img",{alt:"",src:b,style:{position:"absolute",left:J-6*q,top:U-4*q,width:44*q,height:56*q,filter:"drop-shadow(0 1px 2px rgba(0,0,0,0.3))"}})]})})})};function tv(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function tb(e){return function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){tv(o,r,n,i,a,"next",e)}function a(e){tv(o,r,n,i,a,"throw",e)}i(void 0)})}}function tk(e){return new Promise((A,t)=>{let r=new Image;r.crossOrigin="anonymous",r.onload=()=>A(r),r.onerror=t,r.src=e})}function tC(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function tS(e,A){let t=Math.floor(e/A),r=Math.floor(t/60);return`${String(r).padStart(2,"0")}:${String(t%60).padStart(2,"0")}`}function tI(e){var A,t;let n,{autoZoom:o,setAutoZoom:i,playbackSpeed:a,setPlaybackSpeed:s,subtitleEnabled:l,setSubtitleEnabled:c}=h();(0,et.useEffect)(()=>{(null==e?void 0:e.autoZoom)!==void 0&&i(e.autoZoom)},[null==e?void 0:e.autoZoom,i]);let d=null==e?void 0:e.replayScripts,u=(0,et.useMemo)(()=>d&&0!==d.length?function(e,A){let t=(null==A?void 0:A.imageWidth)||1920,r=(null==A?void 0:A.imageHeight)||1080;for(let A of e)if(("img"===A.type||"insight"===A.type)&&A.img){t=A.imageWidth||t,r=A.imageHeight||r;break}let n=[],o=0;for(let A of e){var i,a,s,l;let e=A.duration;switch(A.type){case"sleep":{let t=Math.ceil(e/1e3*30);n.push({type:"sleep",startFrame:o,durationInFrames:t,title:A.title,subTitle:A.subTitle,taskId:A.taskId}),o+=t;break}case"img":{let s=Math.max(Math.ceil(e/1e3*30),1),l=A.camera,c=A.imageWidth||t,d=A.imageHeight||r,u={type:"img",startFrame:o,durationInFrames:s,img:A.img,imageWidth:c,imageHeight:d,title:A.title,subTitle:A.subTitle,taskId:A.taskId};l&&(u.cameraTarget={left:l.left,top:l.top,width:l.width,pointerLeft:null!=(i=l.pointerLeft)?i:Math.round(c/2),pointerTop:null!=(a=l.pointerTop)?a:Math.round(d/2)}),n.push(u),o+=s;break}case"insight":{let i=Math.max(Math.ceil(e/1e3*30),1),a=Math.ceil((A.insightCameraDuration||0)/1e3*30),c=i+a,d=A.imageWidth||t,u=A.imageHeight||r,p=A.camera,g={type:"insight",startFrame:o,durationInFrames:c,img:A.img,imageWidth:d,imageHeight:u,insightPhaseFrames:i,cameraPhaseFrames:a,highlightElement:A.highlightElement,searchArea:A.searchArea,title:A.title,subTitle:A.subTitle,taskId:A.taskId};p&&(g.cameraTarget={left:p.left,top:p.top,width:p.width,pointerLeft:null!=(s=p.pointerLeft)?s:Math.round(d/2),pointerTop:null!=(l=p.pointerTop)?l:Math.round(u/2)}),n.push(g),o+=c;break}case"clear-insight":{let t=Math.max(Math.ceil(e/1e3*30),1);n.push({type:"clear-insight",startFrame:o,durationInFrames:t,title:A.title,subTitle:A.subTitle,taskId:A.taskId}),o+=t;break}case"spinning-pointer":{let t=Math.max(Math.ceil(e/1e3*30),1);n.push({type:"spinning-pointer",startFrame:o,durationInFrames:t,title:A.title,subTitle:A.subTitle,taskId:A.taskId}),o+=t;break}case"pointer":n.push({type:"pointer",startFrame:o,durationInFrames:0,pointerImg:A.img,title:A.title,subTitle:A.subTitle,taskId:A.taskId})}}let c=Math.max(o,1);return{scriptFrames:n,totalDurationInFrames:c,fps:30,stepsDurationInFrames:c,imageWidth:t,imageHeight:r}}(d,{imageWidth:null==e?void 0:e.imageWidth,imageHeight:null==e?void 0:e.imageHeight}):null,[null==e?void 0:e.imageHeight,null==e?void 0:e.imageWidth,d]),p=(0,et.useRef)(null),g=(0,et.useRef)(null),m=(0,et.useRef)(null),[f,y]=(0,et.useState)({width:0,height:0});(0,et.useEffect)(()=>{let e=g.current;if(!e)return;let A=new ResizeObserver(e=>{for(let A of e){let{width:e,height:t}=A.contentRect;y(A=>A.width===e&&A.height===t?A:{width:e,height:t})}});return A.observe(e),()=>A.disconnect()},[]);let E=function(e){var A,t;let{durationInFrames:r,fps:n,autoPlay:o=!1,loop:i=!1}=e,[a,s]=(0,et.useState)(0),[l,c]=(0,et.useState)(o),d=(0,et.useRef)(l),u=(0,et.useRef)(a),p=(0,et.useRef)(null!=(A=e.playbackRate)?A:1),g=(0,et.useRef)(r),m=(0,et.useRef)(n),f=(0,et.useRef)(i);d.current=l,u.current=a,p.current=null!=(t=e.playbackRate)?t:1,g.current=r,m.current=n,f.current=i,(0,et.useEffect)(()=>{let e;if(!l)return;let A=null,t=0,r=n=>{if(null!==A){let e=(n-A)*p.current;t+=e;let r=1e3/m.current;for(;t>=r;){t-=r;let e=u.current+1;if(e>=g.current)if(f.current)u.current=0,s(0);else{u.current=g.current-1,s(g.current-1),c(!1);return}else u.current=e,s(e)}}A=n,e=requestAnimationFrame(r)};return e=requestAnimationFrame(r),()=>cancelAnimationFrame(e)},[l]);let h=(0,et.useCallback)(()=>{u.current>=g.current-1&&(u.current=0,s(0)),c(!0)},[]),y=(0,et.useCallback)(()=>c(!1),[]);return{currentFrame:a,playing:l,play:h,pause:y,toggle:(0,et.useCallback)(()=>{d.current?c(!1):(u.current>=g.current-1&&(u.current=0,s(0)),c(!0))},[]),seekTo:(0,et.useCallback)(e=>{let A=Math.max(0,Math.min(e,g.current-1));u.current=A,s(A)},[])}}({durationInFrames:Math.max(null!=(A=null==u?void 0:u.totalDurationInFrames)?A:1,1),fps:null!=(t=null==u?void 0:u.fps)?t:30,autoPlay:!0,loop:!1,playbackRate:a});(0,et.useEffect)(()=>{if(!u||!(null==e?void 0:e.onTaskChange))return;let A=function(e,A){let t=null;for(let o of e){var r,n;if(0===o.durationInFrames){o.startFrame<=A&&(t=null!=(r=o.taskId)?r:t);continue}if(A<o.startFrame)break;t=null!=(n=o.taskId)?n:t}return t}(u.scriptFrames,E.currentFrame);A!==m.current&&(m.current=A,e.onTaskChange(A))},[u,null==e?void 0:e.onTaskChange,E.currentFrame]);let v=(0,et.useMemo)(()=>{var e;let A;return u?(e=E.currentFrame,(A=th(u.scriptFrames,e,u.imageWidth,u.imageHeight,u.fps)).img?A:null):null},[u,E.currentFrame]),b=(0,et.useMemo)(()=>v&&(v.title||v.subTitle)?{title:v.title,subTitle:v.subTitle}:null,[v]),[k,C]=(0,et.useState)(!0),S=(0,et.useRef)(null),I=(0,et.useCallback)(()=>{C(!0),S.current&&clearTimeout(S.current),S.current=setTimeout(()=>C(!1),3e3)},[]),R=(0,et.useCallback)(()=>{C(!0),S.current&&clearTimeout(S.current)},[]),x=(0,et.useCallback)(()=>{S.current&&clearTimeout(S.current),S.current=setTimeout(()=>C(!1),1e3)},[]),j=(0,et.useCallback)(e=>{"Space"===e.code&&(e.preventDefault(),E.toggle())},[E]),P=(0,et.useRef)(null),w=(0,et.useCallback)(e=>{if(!u||!P.current)return;let A=P.current;A.setPointerCapture(e.pointerId);let t=e=>{let t=A.getBoundingClientRect(),r=Math.max(0,Math.min(1,(e-t.left)/t.width));E.seekTo(Math.round(r*(u.totalDurationInFrames-1)))};t(e.clientX);let r=e=>t(e.clientX),n=()=>{A.removeEventListener("pointermove",r),A.removeEventListener("pointerup",n)};A.addEventListener("pointermove",r),A.addEventListener("pointerup",n)},[u,E]),[N,O]=(0,et.useState)(!1),T=(0,et.useCallback)(()=>{let e=p.current;e&&(document.fullscreenElement?document.exitFullscreen().then(()=>O(!1)):e.requestFullscreen().then(()=>O(!0)))},[]);(0,et.useEffect)(()=>{let e=()=>O(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[]);let[K,M]=(0,et.useState)(!1),[B,D]=(0,et.useState)(0),z=(0,et.useCallback)(()=>{var e;return(e=function*(){if(u&&!K){M(!0),D(0);try{var e;yield(e=e=>D(Math.round(100*e)),tb(function*(){let{totalDurationInFrames:A,fps:t}=u,r=new Set;for(let e of u.scriptFrames)e.img&&r.add(e.img);let n=new Map;yield Promise.all([...r].map(e=>tb(function*(){try{n.set(e,(yield tk(e)))}catch(e){}})()));let o=null,i=null;try{o=yield tk(Ad)}catch(e){}try{i=yield tk(Au)}catch(e){}let a=document.createElement("canvas");a.width=960,a.height=540;let s=a.getContext("2d"),l=a.captureStream(t),c=new MediaRecorder(l,{mimeType:"video/webm"}),d=[];return c.ondataavailable=e=>{e.data.size>0&&d.push(e.data)},new Promise((r,a)=>{c.onerror=()=>a(Error("MediaRecorder error")),c.onstop=()=>{if(0===d.length)return void a(Error("No video data"));let e=new Blob(d,{type:"video/webm"}),A=URL.createObjectURL(e),t=document.createElement("a");t.href=A,t.download="midscene_replay.webm",t.click(),l.getTracks().forEach(e=>e.stop()),setTimeout(()=>URL.revokeObjectURL(A),1e3),r()},c.start();let p=1e3/t,g=performance.now(),m=-1,f=()=>{let t=Math.min(Math.floor((performance.now()-g)/p),A-1);t>m&&(m=t,s.clearRect(0,0,960,540),function(e,A,t,r,n,o){var i,a,s,l,c,d,u,p,g,m;let f,{scriptFrames:h,imageWidth:y,imageHeight:E,fps:v}=t,b=th(h,A,y,E,v);if(!b.img)return;let{img:k,prevImg:C,imageWidth:S,imageHeight:I,camera:R,prevCamera:x,pointerMoved:j,imageChanged:P,rawProgress:w,frameInScript:N,spinning:O,spinningElapsedMs:T,insights:K}=b,M=j?Math.min(w/.375,1):w,B=j?w<=.375?0:Math.min((w-.375)/.625,1):w,D=(i=x.left,a=R.left,i+(a-i)*B),z=(s=x.top,l=R.top,s+(l-s)*B),Q=(c=x.width,d=R.width,c+(d-c)*B),L=(u=x.pointerLeft,p=R.pointerLeft,u+(p-u)*M),Z=(g=x.pointerTop,m=R.pointerTop,g+(m-g)*M),X=S/Q,{offsetX:J,offsetY:U,contentWidth:F,contentHeight:q}=ty(960,540,S,I),V=-(F/S*D),H=-(q/I*z),G=P?Math.min(Math.max(N/10,0),1):1;e.fillStyle="#000",e.fillRect(0,0,960,540);let W=(A,t)=>{let n=r.get(A);n&&!(t<=0)&&(e.save(),e.globalAlpha=t,e.beginPath(),e.rect(0,0,960,540),e.clip(),e.translate(J+V*X,U+H*X),e.scale(X,X),e.drawImage(n,0,0,F,q),e.restore())};P&&C&&G<1&&W(C,1-G),W(k,P?G:1),K.length>0&&function(e,A,t,r,n){for(let o of A)if(!(o.alpha<=0)){if(e.save(),e.globalAlpha*=o.alpha,o.highlightElement){let A=o.highlightElement.rect,i=r+(A.left*t.zoom+t.tx*t.zoom),a=n+(A.top*t.zoom+t.ty*t.zoom),s=A.width*t.zoom,l=A.height*t.zoom;e.fillStyle="rgba(253, 89, 7, 0.4)",e.fillRect(i,a,s,l),e.strokeStyle="#fd5907",e.lineWidth=1,e.strokeRect(i,a,s,l),e.shadowColor="rgba(51, 51, 51, 0.4)",e.shadowBlur=2,e.shadowOffsetX=4,e.shadowOffsetY=4,e.strokeRect(i,a,s,l),e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0}if(o.searchArea){let A=o.searchArea,i=r+(A.left*t.zoom+t.tx*t.zoom),a=n+(A.top*t.zoom+t.ty*t.zoom),s=A.width*t.zoom,l=A.height*t.zoom;e.fillStyle="rgba(2, 131, 145, 0.4)",e.fillRect(i,a,s,l),e.strokeStyle="#028391",e.lineWidth=1,e.strokeRect(i,a,s,l)}e.restore()}}(e,K,{zoom:X,tx:V,ty:H},J,U);let Y=I/S*Q,_=J+(L-D)/Q*F,$=U+(Z-z)/Y*q,ee=Math.abs(R.pointerLeft-Math.round(S/2))>1||Math.abs(R.pointerTop-Math.round(I/2))>1||Math.abs(x.pointerLeft-Math.round(S/2))>1||Math.abs(x.pointerTop-Math.round(I/2))>1;O&&o&&(f=(Math.sin(T/500-Math.PI/2)+1)/2*Math.PI*2,e.save(),e.translate(_,$),e.rotate(f),e.drawImage(o,-11,-14,22,28),e.restore()),!O&&ee&&n&&e.drawImage(n,_-3,$-2,22,28)}(s,t,u,n,o,i),null==e||e((t+1)/A)),t<A-1?requestAnimationFrame(f):setTimeout(()=>c.stop(),2*p)};requestAnimationFrame(f)})})()),W.Ay.success("Video exported")}catch(e){console.error("Export failed:",e),W.Ay.error("Export failed")}finally{M(!1),D(0)}}},function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){tC(o,r,n,i,a,"next",e)}function a(e){tC(o,r,n,i,a,"throw",e)}i(void 0)})})()},[u,K]),Q=(0,et.useMemo)(()=>{if(!u)return[];let{scriptFrames:e,totalDurationInFrames:A}=u;if(0===A)return[];let t=[];for(let r of e){if("img"!==r.type&&"insight"!==r.type||0===r.durationInFrames)continue;let e=r.startFrame,n=e/A*100;if(n>1&&n<99){let A=[r.title,r.subTitle].filter(Boolean);t.push({percent:n,title:A.length>0?A.join(": "):`Chapter ${t.length+1}`,frame:e})}}return t},[u]);if(!d||0===d.length||!u)return(0,r.jsx)("div",{className:"player-container"});let L=(null==v?void 0:v.imageWidth)||u.imageWidth,Z=(null==v?void 0:v.imageHeight)||u.imageHeight,X=Z>L,J=u.totalDurationInFrames,U=J>1?E.currentFrame/(J-1)*100:0;return(0,r.jsx)("div",{className:"player-container","data-fit-mode":null==e?void 0:e.fitMode,children:(0,r.jsxs)("div",{className:"canvas-container",ref:p,onKeyDown:j,onMouseMove:I,onMouseEnter:R,onMouseLeave:x,children:[(0,r.jsx)("div",{className:"player-wrapper","data-portrait":X?"":void 0,style:{aspectRatio:`${L}/${Z}`},children:(0,r.jsx)("div",{ref:g,style:{display:"flex",justifyContent:"center",alignItems:"center",width:"100%",height:"100%",overflow:"hidden"},onClick:E.toggle,children:(n=f.width>0&&f.height>0?Math.min(f.width/L,f.height/Z):1,(0,r.jsx)("div",{style:{width:L*n,height:Z*n,flexShrink:0,position:"relative",overflow:"hidden"},children:(0,r.jsx)("div",{style:{width:L,height:Z,transformOrigin:"0 0",transform:`scale(${n})`},children:(0,r.jsx)(tE,{frameMap:u,autoZoom:o,frame:E.currentFrame,width:L,height:Z,fps:u.fps})})}))})}),l&&b&&(0,r.jsxs)("div",{className:"player-subtitle",children:[b.title&&(0,r.jsx)("span",{className:"player-subtitle-badge",children:b.title}),b.subTitle&&(0,r.jsx)("span",{className:"player-subtitle-text",children:b.subTitle})]}),(0,r.jsxs)("div",{className:`control-bar ${k?"":"hidden"}`,onClick:e=>e.stopPropagation(),children:[(0,r.jsx)("div",{className:"status-icon",onClick:E.toggle,children:E.playing?(0,r.jsx)(tA.A,{}):(0,r.jsx)(tt.A,{})}),(0,r.jsxs)("span",{className:"time-display",children:[tS(E.currentFrame,u.fps)," /"," ",tS(J,u.fps)]}),(0,r.jsxs)("div",{className:"seek-bar-track",ref:P,onPointerDown:w,children:[(0,r.jsx)("div",{className:"seek-bar-fill",style:{width:`${U}%`}}),(0,r.jsx)("div",{className:"seek-bar-knob",style:{left:`${U}%`}}),Q.map(e=>(0,r.jsx)(ee.A,{title:e.title,overlayClassName:"chapter-tooltip",children:(0,r.jsx)("div",{className:"chapter-marker",style:{left:`${e.percent}%`},onClick:A=>{A.stopPropagation(),E.seekTo(e.frame)}})},e.percent))]}),(0,r.jsxs)("div",{className:"player-custom-controls",children:[(null==e?void 0:e.reportFileContent)&&(null==e?void 0:e.canDownloadReport)!==!1?(0,r.jsx)(ee.A,{title:"Download Report",children:(0,r.jsx)("div",{className:"status-icon",onClick:()=>{let A,t,r;return A=new Blob([e.reportFileContent],{type:"text/html"}),t=URL.createObjectURL(A),void((r=document.createElement("a")).href=t,r.download="midscene_report.html",r.click(),setTimeout(()=>URL.revokeObjectURL(t),0))},children:(0,r.jsx)(tr.A,{})})}):null,(0,r.jsx)(tl.A,{trigger:["hover","click"],placement:"topRight",overlayStyle:{minWidth:"148px"},dropdownRender:()=>(0,r.jsxs)("div",{className:"player-settings-dropdown",children:[(0,r.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",gap:"4px",height:"32px",padding:"0 8px",borderRadius:"4px",cursor:K?"not-allowed":"pointer",opacity:K?.5:1},onClick:K?void 0:z,children:[K?(0,r.jsx)($.A,{size:"small"}):(0,r.jsx)(tn.A,{style:{width:"16px",height:"16px"}}),(0,r.jsx)("span",{style:{fontSize:"14px"},children:K?`Exporting ${B}%`:"Export video"})]}),(0,r.jsx)("div",{className:"player-settings-divider"}),(0,r.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 8px",borderRadius:"4px"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[(0,r.jsx)(td,{style:{width:"16px",height:"16px"}}),(0,r.jsx)("span",{style:{fontSize:"14px",marginRight:"16px"},children:"Focus on cursor"})]}),(0,r.jsx)(tc.A,{size:"small",checked:o,onChange:e=>i(e)})]}),(0,r.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 8px",borderRadius:"4px"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[(0,r.jsx)(to.A,{style:{width:"16px",height:"16px"}}),(0,r.jsx)("span",{style:{fontSize:"14px",marginRight:"16px"},children:"Subtitle"})]}),(0,r.jsx)(tc.A,{size:"small",checked:l,onChange:e=>c(e)})]}),(0,r.jsx)("div",{className:"player-settings-divider"}),(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px",height:"32px",padding:"0 8px"},children:[(0,r.jsx)(ti.A,{style:{width:"16px",height:"16px"}}),(0,r.jsx)("span",{style:{fontSize:"14px"},children:"Playback speed"})]}),[.5,1,1.5,2].map(e=>(0,r.jsxs)("div",{onClick:()=>s(e),style:{height:"32px",lineHeight:"32px",padding:"0 8px 0 24px",fontSize:"14px",cursor:"pointer",borderRadius:"4px"},className:`player-speed-option${a===e?" active":""}`,children:[e,"x"]},e))]}),menu:{items:[]},children:(0,r.jsx)("div",{className:"status-icon",children:(0,r.jsx)(tu,{style:{width:"16px",height:"16px"}})})}),(0,r.jsx)("div",{className:"status-icon",onClick:T,children:N?(0,r.jsx)(ta.A,{}):(0,r.jsx)(ts.A,{})})]})]})]})})}let tR=e=>{let{result:A,loading:t,serverValid:n,serviceMode:o,replayScriptsInfo:i,replayCounter:a,loadingProgressText:s,verticalMode:l=!1,notReadyMessage:c,fitMode:d,autoZoom:u,actionType:p,canDownloadReport:g}=e,m="result-wrapper";l&&(m+=" vertical-mode-result"),i&&l&&(m+=" result-wrapper-compact");let f=A7,h=p&&eS.includes(p);if(n||"Server"!==o)if(t)f=(0,r.jsxs)("div",{className:"loading-container",children:[(0,r.jsx)($.A,{spinning:t,indicator:(0,r.jsx)(Ae.A,{spin:!0})}),(0,r.jsx)("div",{className:"loading-progress-text loading-progress-text-progress",children:(0,r.jsx)(A3,{text:s,speed:3})})]});else if(null==A?void 0:A.error){let e=(0,r.jsx)("pre",{style:{color:"#ff4d4f",whiteSpace:"pre-wrap"},children:null==A?void 0:A.error});f=A.reportHTML||i?(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"16px",height:"100%"},children:[(0,r.jsxs)("div",{style:{flex:"0 0 auto",maxHeight:"40%",overflow:"auto"},children:[(0,r.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Error:"}),e]}),(0,r.jsxs)("div",{style:{flex:"1 1 auto",minHeight:0},children:[(0,r.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,r.jsx)(tI,{replayScripts:null==i?void 0:i.scripts,imageWidth:null==i?void 0:i.width,imageHeight:null==i?void 0:i.height,reportFileContent:A.reportHTML||null,fitMode:d,autoZoom:u,canDownloadReport:null!=g?g:"In-Browser"!==o},a)]})]}):e}else if(h&&(null==A?void 0:A.result)!==void 0&&i){let e="string"==typeof(null==A?void 0:A.result)?(0,r.jsx)("pre",{children:null==A?void 0:A.result}):(0,r.jsx)("pre",{children:JSON.stringify(null==A?void 0:A.result,null,2)}),t=(null==A?void 0:A.reportHTML)||null;f=(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"16px",height:"100%"},children:[(0,r.jsxs)("div",{style:{flex:"0 0 auto"},children:[(0,r.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Output:"}),e]}),(0,r.jsxs)("div",{style:{flex:"1 1 auto",minHeight:0},children:[(0,r.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,r.jsx)(tI,{replayScripts:i.scripts,imageWidth:i.width,imageHeight:i.height,reportFileContent:t,fitMode:d,autoZoom:u,canDownloadReport:null!=g?g:"In-Browser"!==o},a)]})]})}else if(i){let e=(null==A?void 0:A.reportHTML)||null;f=(0,r.jsx)(tI,{replayScripts:i.scripts,imageWidth:i.width,imageHeight:i.height,reportFileContent:e,fitMode:d,autoZoom:u,canDownloadReport:null!=g?g:"In-Browser"!==o},a)}else if(h&&(null==A?void 0:A.result)!==void 0&&(null==A?void 0:A.reportHTML)){let e="string"==typeof(null==A?void 0:A.result)?(0,r.jsx)("pre",{children:null==A?void 0:A.result}):(0,r.jsx)("pre",{children:JSON.stringify(null==A?void 0:A.result,null,2)});f=(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"16px",height:"100%"},children:[(0,r.jsxs)("div",{style:{flex:"0 0 auto"},children:[(0,r.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Output:"}),e]}),(0,r.jsxs)("div",{style:{flex:"1 1 auto",minHeight:0},children:[(0,r.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,r.jsx)(tI,{reportFileContent:A.reportHTML,fitMode:d,autoZoom:u,canDownloadReport:null!=g?g:"In-Browser"!==o},a)]})]})}else h&&(null==A?void 0:A.result)!==void 0?f="string"==typeof(null==A?void 0:A.result)?(0,r.jsx)("pre",{children:null==A?void 0:A.result}):(0,r.jsx)("pre",{children:JSON.stringify(null==A?void 0:A.result,null,2)}):(null==A?void 0:A.reportHTML)?f=(0,r.jsx)(tI,{reportFileContent:A.reportHTML,fitMode:d,autoZoom:u,canDownloadReport:null!=g?g:"In-Browser"!==o},a):(null==A?void 0:A.result)!==void 0&&(f="string"==typeof(null==A?void 0:A.result)?(0,r.jsx)("pre",{children:null==A?void 0:A.result}):(0,r.jsx)("pre",{children:JSON.stringify(null==A?void 0:A.result,null,2)}));else f=A6(c);return(0,r.jsx)("div",{className:m,style:{height:"100%",display:"flex",flexDirection:"column",flex:"1 1 auto",justifyContent:"center"},children:f})},tx=e=>{var A,t;return(0,r.jsxs)("svg",(A=function(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}({xmlns:"http://www.w3.org/2000/svg",width:20,height:20,fill:"none","aria-label":"Playground",viewBox:"0 0 20 20"},e),t=t={children:[(0,r.jsx)("rect",{width:20,height:20,fill:"#2B83FF",rx:10}),(0,r.jsx)("path",{fill:"#2B83FF",stroke:"#fff",strokeLinejoin:"round",strokeWidth:1.125,d:"M6.866 5.882a.56.56 0 0 1 .667-.078l3.248 1.875 3.247 1.875a.563.563 0 0 1 0 .974l-3.247 1.875-3.248 1.875a.563.563 0 0 1-.784-.74l1.749-3.497-1.75-3.498a.56.56 0 0 1 .118-.661Z"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A))};var tj=t(8460),tP=t(3896),tw=t(1631),tN=t(4665),tO={};tO.d=(e,A)=>{for(var t in A)tO.o(A,t)&&!tO.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},tO.o=(e,A)=>Object.prototype.hasOwnProperty.call(e,A),tO.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var tT={};function tK(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}tO.r(tT),tO.d(tT,{create:()=>o.vt});let{create:tM}=tT,tB="midscene-prompt-history-v2",tD="midscene-last-selected-type",tz=tM((e,A)=>{let t;return{history:(t=localStorage.getItem(tB))?JSON.parse(t):{},lastSelectedType:localStorage.getItem(tD)||"aiAct",clearHistory:t=>{let r=tK({},A().history);delete r[t],e({history:r}),localStorage.setItem(tB,JSON.stringify(r))},addHistory:t=>{var r,n;let{type:o}=t,i=A().history,a=i[o]||[],s=JSON.stringify({prompt:t.prompt,params:t.params}),l=[t,...a.filter(e=>JSON.stringify({prompt:e.prompt,params:e.params})!==s)];l.length>10&&(l.length=10);let c=(r=tK({},i),n=n={[o]:l},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(n)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(n,e))}),r);e({history:c}),localStorage.setItem(tB,JSON.stringify(c))},getHistoryForType:e=>A().history[e]||[],setLastSelectedType:A=>{e({lastSelectedType:A}),localStorage.setItem(tD,A)}}}),tQ="ZodOptional",tL="ZodDefault",tZ="ZodNullable",tX="ZodObject",tJ="midscene_location_field_flag",tU=e=>"object"==typeof e&&null!==e&&("shape"in e||"ZodObject"===e.type),tF=e=>{var A,t,r;if((null==(A=e._def)?void 0:A.typeName)===tX){let A;if(e._def.shape&&(A="function"==typeof e._def.shape?e._def.shape():e._def.shape),!A&&e.shape&&(A=e.shape),A&&tJ in A)return!0;let r=(null==(t=e._def)?void 0:t.description)||e.description||"";if("string"==typeof r&&r.toLowerCase().includes("input field"))return!0}if("object"==typeof e&&null!==e){let A=e.description||(null==(r=e._def)?void 0:r.description)||"";if("string"==typeof A){let e=A.toLowerCase();if(e.includes("input field")||e.includes("element")||e.includes("locate"))return!0}if("ZodObject"===e.typeName||"ZodObject"===e.type)return"string"==typeof A&&A.toLowerCase().includes("input field")}return!1},tq=e=>{var A,t,r,n,o;let i=e,a=!1,s=!1;for(;(null==(A=i._def)?void 0:A.typeName)===tQ||(null==(t=i._def)?void 0:t.typeName)===tL||(null==(r=i._def)?void 0:r.typeName)===tZ;)(null==(n=i._def)?void 0:n.typeName)===tQ&&(a=!0),(null==(o=i._def)?void 0:o.typeName)===tL&&(s=!0),i=i._def.innerType||i;return{actualField:i,isOptional:a,hasDefault:s}},tV=e=>{if(!e)return"";let A=e.startsWith("ai")?e.slice(2):e;if(A.startsWith("IOS"))return A.substring(3).replace(/([A-Z])/g," $1").replace(/^/,"IOS").trim();let t=A.replace(/([A-Z])/g," $1").trim(),r=t.split(" ");return r.length>3?r.slice(-3).join(" "):t};var tH=t(6356);let tG=e=>{var A,t;return(0,r.jsx)("svg",(A=function(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}({xmlns:"http://www.w3.org/2000/svg",width:27,height:27,fill:"none",viewBox:"0 0 27 27"},e),t=t={children:(0,r.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.333,d:"M19.527 8.855h-2M14.86 7.522v2.667M14.86 8.855H7.527M10.194 13.522H7.527M12.86 12.189v2.666M20.193 13.522H12.86M19.527 18.189h-2M14.86 16.855v2.667M14.86 18.189H7.527"})},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A))},tW=e=>{let A,{showDeepLocateOption:t=!1,showDeepThinkOption:n=!1,enableTracking:o=!1,showDataExtractionOptions:i=!1,hideDomAndScreenshotOptions:a=!1,deviceType:s}=e,l=N(e=>e.forceSameTabNavigation),c=N(e=>e.setForceSameTabNavigation),d=N(e=>e.deepLocate),u=N(e=>e.setDeepLocate),p=N(e=>e.deepThink),g=N(e=>e.setDeepThink),m=N(e=>e.screenshotIncluded),f=N(e=>e.setScreenshotIncluded),h=N(e=>e.domIncluded),y=N(e=>e.setDomIncluded),E=N(e=>e.imeStrategy),v=N(e=>e.setImeStrategy),b=N(e=>e.autoDismissKeyboard),k=N(e=>e.setAutoDismissKeyboard),C=N(e=>e.keyboardDismissStrategy),S=N(e=>e.setKeyboardDismissStrategy),I=N(e=>e.alwaysRefreshScreenInfo),R=N(e=>e.setAlwaysRefreshScreenInfo);if(!o&&!t&&!n&&!i&&"android"!==s&&"ios"!==s)return null;let x=(A=[],o&&A.push({label:(0,r.jsx)(tH.A,{onChange:e=>c(e.target.checked),checked:l,children:"Limit popup to current tab"}),key:"track-config"}),t&&A.push({label:(0,r.jsx)(tH.A,{onChange:e=>{u(e.target.checked)},checked:d,children:"Deep Locate"}),key:"deep-locate-config"}),n&&A.push({label:(0,r.jsx)(tH.A,{onChange:e=>{g(e.target.checked)},checked:p,children:"Deep Think"}),key:"deep-think-config"}),i&&!a&&(A.push({label:(0,r.jsx)(tH.A,{onChange:e=>{f(e.target.checked)},checked:m,children:"Include screenshot in request"}),key:"screenshot-included-config"}),A.push({label:(0,r.jsxs)("div",{style:{padding:"4px 0"},children:[(0,r.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Include DOM info in request"}),(0,r.jsxs)(tN.A.Group,{size:"small",value:h,onChange:e=>y(e.target.value),children:[(0,r.jsx)(tN.A,{value:!1,children:"Off"}),(0,r.jsx)(tN.A,{value:!0,children:"All"}),(0,r.jsx)(tN.A,{value:"visible-only",children:"Visible only"})]})]}),key:"dom-included-config"})),"android"===s&&(A.push({label:(0,r.jsxs)("div",{style:{padding:"4px 0"},children:[(0,r.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"IME strategy"}),(0,r.jsxs)(tN.A.Group,{size:"small",value:E,onChange:e=>v(e.target.value),children:[(0,r.jsx)(tN.A,{value:"always-yadb",children:"Always YADB"}),(0,r.jsx)(tN.A,{value:"yadb-for-non-ascii",children:"YADB for non-ASCII"})]})]}),key:"ime-strategy-config"}),A.push({label:(0,r.jsx)(tH.A,{onChange:e=>k(e.target.checked),checked:b,children:Ai}),key:"auto-dismiss-keyboard-config"}),A.push({label:(0,r.jsxs)("div",{style:{padding:"4px 0"},children:[(0,r.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Keyboard dismiss strategy"}),(0,r.jsxs)(tN.A.Group,{size:"small",value:C,onChange:e=>S(e.target.value),children:[(0,r.jsx)(tN.A,{value:"esc-first",children:"ESC first"}),(0,r.jsx)(tN.A,{value:"back-first",children:"Back first"})]})]}),key:"keyboard-dismiss-strategy-config"}),A.push({label:(0,r.jsx)(tH.A,{onChange:e=>R(e.target.checked),checked:I,children:"Always refresh screen info"}),key:"always-refresh-screen-info-config"})),"ios"===s&&A.push({label:(0,r.jsx)(tH.A,{onChange:e=>k(e.target.checked),checked:b,children:Ai}),key:"auto-dismiss-keyboard-config"}),A);return(0,r.jsx)("div",{className:"selector-trigger",children:(0,r.jsx)(tl.A,{menu:{items:x},trigger:["click"],children:(0,r.jsx)(tG,{width:24,height:24})})})};var tY=t(9076),t_=t(5932);let{TextArea:t$}=e7.A,t0=(e,A)=>`${e}${A?" (Optional)":""}`,t1=e=>{let{name:A,label:t,isRequired:n,marginBottom:o,placeholder:i}=e,a=i||`Enter ${A}`;return(0,r.jsx)(An.A.Item,{name:["params",A],label:t0(t,!n),rules:n?[{required:!0,message:`Please input ${A}`}]:[],style:{marginBottom:o},colon:!1,children:(0,r.jsx)(e7.A,{placeholder:a})},A)},t2=e=>{let{name:A,label:t,isRequired:n,marginBottom:o,placeholder:i}=e,a=i||`Describe the ${A}, use natural language`;return(0,r.jsx)(An.A.Item,{name:["params",A],label:t0(t,!n),rules:n?[{required:!0,message:`The ${A} is required`}]:[],style:{marginBottom:o},colon:!1,children:(0,r.jsx)(t$,{rows:2,placeholder:a})},A)},t3=e=>{var A;let{name:t,label:n,fieldSchema:o,isRequired:i,marginBottom:a,placeholder:s}=e,l=((null==(A=o._def)?void 0:A.values)||[]).map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)}));return(0,r.jsx)(An.A.Item,{name:["params",t],label:n,rules:i?[{required:!0,message:`Please select ${t}`}]:[],style:{marginBottom:a},colon:!1,children:(0,r.jsx)(tY.A,{placeholder:s||`Select ${t}`,options:l})},t)},t5=e=>{let{name:A,label:t,isRequired:n,marginBottom:o,placeholder:i}=e,a=500*("distance"===A),s=i&&Number(i)||a,l="distance"===A?1e4:void 0;return(0,r.jsx)(An.A.Item,{name:["params",A],label:`${t}${"distance"===A?" (px)":""}`,rules:n?[{required:!0,message:`Please input ${A}`},{type:"number",min:0,message:`${t} must be at least 0`}]:[{type:"number",min:0,message:`${t} must be at least 0`}],style:{flex:"distance"===A?1:void 0,marginBottom:o},colon:!1,children:(0,r.jsx)(t_.A,{placeholder:s.toString(),min:0,max:l,step:"distance"===A?10:1,style:{width:"100%"}})},A)},t6=e=>{let{name:A,label:t,isRequired:n,marginBottom:o,placeholder:i}=e;return(0,r.jsx)(An.A.Item,{name:["params",A],label:t0(t,!n),rules:n?[{required:!0,message:`Please select ${A}`}]:[],style:{marginBottom:o},colon:!1,children:(0,r.jsx)(tY.A,{placeholder:i||`Select ${A}`,options:[{value:!0,label:"True"},{value:!1,label:"False"}]})},A)},t7=e=>{var A,t;return(0,r.jsx)("svg",(A=function(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}({xmlns:"http://www.w3.org/2000/svg",width:18,height:16,fill:"none",viewBox:"0 0 18 16"},e),t=t={children:(0,r.jsx)("path",{stroke:"#333",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.333,d:"m3.124 2.667 11.162 10.666M3.124 13.333 14.286 2.667"})},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A))},t9=e=>{var A,t;return(0,r.jsxs)("svg",(A=function(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}({xmlns:"http://www.w3.org/2000/svg",width:25,height:25,fill:"none",viewBox:"0 0 25 25"},e),t=t={children:[(0,r.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.33,d:"M6.63 9.021c-2.862 6.126 2.197 10.501 6.063 10.501a7 7 0 1 0-6.063-10.5"}),(0,r.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.33,d:"M12.695 8.322v4.203l2.967 2.968"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A))},t8=e=>{var A,t;return(0,r.jsxs)("svg",(A=function(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}({xmlns:"http://www.w3.org/2000/svg",width:19,height:19,fill:"none",viewBox:"0 0 19 19"},e),t=t={children:[(0,r.jsxs)("g",{stroke:"currentColor",strokeLinejoin:"round",strokeOpacity:.65,strokeWidth:1.5,clipPath:"url(#magnifying-glass_svg__a)",children:[(0,r.jsx)("path",{d:"M8.397 14.29a6.375 6.375 0 1 0 0-12.75 6.375 6.375 0 0 0 0 12.75Z"}),(0,r.jsx)("path",{strokeLinecap:"round",d:"M10.519 5.42a3 3 0 0 0-2.122-.88 3 3 0 0 0-2.121.88M12.98 12.499l3.182 3.182"})]}),(0,r.jsx)("defs",{children:(0,r.jsx)("clipPath",{id:"magnifying-glass_svg__a",children:(0,r.jsx)("path",{fill:"#fff",d:"M.522.04h18v18h-18z"})})})]},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A))},{Text:t4}=e3.A,re=e=>{let{onSelect:A,history:t,currentType:n}=e,[o,i]=(0,et.useState)(!1),[a,s]=(0,et.useState)(""),l=tz(e=>e.clearHistory),c=(0,et.useRef)(null),d=(0,et.useMemo)(()=>{let e=Date.now(),A=e-6048e5,r=e-31536e6,n=t.filter(e=>e.prompt.toLowerCase().includes(a.toLowerCase()));return{recent7Days:n.filter(e=>e.timestamp>=A),recent1Year:n.filter(e=>e.timestamp<A&&e.timestamp>=r),older:n.filter(e=>e.timestamp<r)}},[t,a]);(0,et.useEffect)(()=>{if(!o)return;let e=e=>{c.current&&!c.current.contains(e.target)&&i(!1)},A=setTimeout(()=>{document.addEventListener("click",e)},100);return()=>{clearTimeout(A),document.removeEventListener("click",e)}},[o]);let u=(e,t)=>0===t.length?null:(0,r.jsxs)("div",{className:"history-group",children:[(0,r.jsx)("div",{className:"history-group-title",children:e}),t.map((e,t)=>(0,r.jsx)("div",{className:"history-item",onClick:()=>{A(e),i(!1)},children:e.prompt},`${e.timestamp}-${t}`))]},e);return(0,r.jsxs)("div",{className:"history-selector-wrapper",children:[(0,r.jsx)("div",{className:"selector-trigger",onClick:()=>i(!0),children:(0,r.jsx)(t9,{width:24,height:24})}),o&&(0,r.jsx)("div",{className:"history-modal-overlay",ref:c,children:(0,r.jsxs)("div",{className:"history-modal-container",children:[(0,r.jsxs)("div",{className:"history-modal-header",children:[(0,r.jsxs)(t4,{strong:!0,style:{fontSize:"16px"},children:["History (",t.length,")"]}),(0,r.jsx)(eA.Ay,{size:"small",type:"text",icon:(0,r.jsx)(t7,{width:16,height:16}),onClick:()=>i(!1),className:"close-button"})]}),(0,r.jsx)("div",{className:"history-search-section",children:(0,r.jsxs)("div",{className:"search-input-wrapper",children:[(0,r.jsx)(e7.A,{placeholder:"Search",value:a,onChange:e=>s(e.target.value),prefix:(0,r.jsx)(t8,{width:18,height:18}),className:"search-input",allowClear:!0}),(0,r.jsx)(eA.Ay,{type:"link",onClick:()=>{l(n),s(""),i(!1)},className:"clear-button",disabled:0===t.length,children:"Clear"})]})}),(0,r.jsx)("div",{className:"history-content",children:0===t.length?(0,r.jsx)("div",{className:"no-results",children:(0,r.jsx)(t4,{type:"secondary",children:"No history record"})}):(0,r.jsxs)(r.Fragment,{children:[u("Last 7 days",d.recent7Days),u("Last 1 year",d.recent1Year),u("Earlier",d.older),a&&0===d.recent7Days.length&&0===d.recent1Year.length&&0===d.older.length&&(0,r.jsx)("div",{className:"no-results",children:(0,r.jsx)(t4,{type:"secondary",children:"No matching history record"})})]})})]})})]})};function rA(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}let{TextArea:rt}=e7.A,rr=e=>{let A,t,n,o,i,a,{runButtonEnabled:s,form:l,serviceMode:c,selectedType:d,dryMode:u,stoppable:p,loading:g,onRun:m,onStop:f,clearPromptAfterRun:h=!0,actionSpace:y,hideDomAndScreenshotOptions:E=!1,deviceType:v}=e,[b,k]=(0,et.useState)(!1),[C,S]=(0,et.useState)(""),I="aiQuery"===d?"What do you want to query?":"aiAssert"===d?"What do you want to assert?":"aiTap"===d?"What element do you want to tap?":"aiDoubleClick"===d?"What element do you want to double-click?":"aiHover"===d?"What element do you want to hover over?":"aiInput"===d?"Format: <value> | <element>\nExample: hello world | search box":"aiRightClick"===d?"What element do you want to right-click?":"aiKeyboardPress"===d?"Format: <key> | <element (optional)>\nExample: Enter | text field":"aiScroll"===d?"Format: <direction> <amount> | <element (optional)>\nExample: down 500 | main content":"aiLocate"===d?"What element do you want to locate?":"aiBoolean"===d?"What do you want to check (returns true/false)?":"aiNumber"===d?"What number do you want to extract?":"aiString"===d?"What text do you want to extract?":"aiAsk"===d?"What do you want to ask?":"aiWaitFor"===d?"What condition do you want to wait for?":"What do you want to do?",R=(0,et.useRef)(null),x=(0,et.useRef)(null),j=An.A.useWatch("params",l),P=(0,et.useRef)(null),w=tz(e=>e.history),N=tz(e=>e.lastSelectedType),O=tz(e=>e.addHistory),T=tz(e=>e.setLastSelectedType),K=(0,et.useMemo)(()=>w[d]||[],[w,d]),M=(0,et.useMemo)(()=>{if(y){let e=y.find(e=>e.interfaceAlias===d||e.name===d);return!!(null==e?void 0:e.paramSchema)&&(!tU(e.paramSchema)||Object.keys(e.paramSchema.shape||{}).length>0)}return!1},[d,y]),B=(0,et.useMemo)(()=>{if(y&&y.length>0){let e=y.find(e=>e.interfaceAlias===d||e.name===d);if(e){if(e.paramSchema&&tU(e.paramSchema)){let A=e.paramSchema.shape||{};return Object.keys(A).some(e=>{let{isOptional:t}=tq(A[e]);return!t})}return!!e.paramSchema}}return!0},[d,y]),D=(0,et.useMemo)(()=>["aiQuery","aiBoolean","aiNumber","aiString","aiAsk","aiAssert"].includes(d),[d]),z=(0,et.useMemo)(()=>{if("aiAct"===d||"aiLocate"===d)return!0;if(y){let e=y.find(e=>e.interfaceAlias===d||e.name===d);if((null==e?void 0:e.paramSchema)&&tU(e.paramSchema)){let A=e.paramSchema.shape||{};return Object.keys(A).some(e=>{let{actualField:t}=tq(A[e]);return tF(t)})}}return!1},[d,y]),Q=(0,et.useMemo)(()=>"aiAct"===d,[d]),L=(0,et.useMemo)(()=>{let e=D&&!E,A="android"===v||"ios"===v;return"In-Browser-Extension"===c||z||Q||e||A},[c,z,Q,D,E,v]),Z=(0,et.useMemo)(()=>{let e=Object.keys(Aa);if(!y||0===y.length)return e;let A=y.map(e=>e.interfaceAlias||e.name),t=new Set;return e.forEach(e=>{let r=Aa[e];(null==r?void 0:r.group)==="extraction"||(null==r?void 0:r.group)==="validation"?t.add(e):A.includes(e)&&t.add(e)}),A.forEach(e=>{t.add(e)}),Array.from(t)},[y]),X=(0,et.useCallback)(()=>{if(!M||!y)return{};let e=y.find(e=>e.interfaceAlias===d||e.name===d);if((null==e?void 0:e.paramSchema)&&tU(e.paramSchema)){let A={},t=e.paramSchema.shape||{};return Object.keys(t).forEach(e=>{let r=(e=>{var A;let t=e;for(;null==(A=t._def)?void 0:A.innerType;){if(t._def.typeName===tL&&t._def.defaultValue)return t._def.defaultValue();t=t._def.innerType}})(t[e]);void 0!==r&&(A[e]=r)}),A}return{}},[d,M,y]);(0,et.useEffect)(()=>{!l.getFieldValue("type")&&N&&l.setFieldValue("type",N)},[l,N]),(0,et.useEffect)(()=>{d&&d!==N&&T(d)},[d,N,T]);let J=(0,et.useCallback)(()=>{let e=x.current;if(!e)return;let A=null,t=e.querySelector(".ant-radio-button-wrapper-checked"),r=e.querySelector(".more-apis-button.selected-from-dropdown");if(t?A=t:r&&(A=r),A){let t=e.getBoundingClientRect(),r=A.getBoundingClientRect(),n=r.left-t.left+e.scrollLeft,o=r.width,i=t.width;e.scrollTo({left:Math.max(0,n-(i-o)/2),behavior:"smooth"})}},[]);(0,et.useEffect)(()=>{let e=K[0];if(!e||!P.current||e.timestamp!==P.current.timestamp)if(e)l.setFieldsValue({type:e.type,prompt:e.prompt||"",params:e.params}),S(e.prompt||""),P.current=e;else{let e=X();l.setFieldsValue({prompt:"",params:e}),S(""),P.current=null}},[d,K,l,X]),(0,et.useEffect)(()=>{let e=setTimeout(()=>{J()},100);return()=>clearTimeout(e)},[d,J]);let U=An.A.useWatch("prompt",l);(0,et.useEffect)(()=>{U!==C&&S(U||"")},[U,C]);let F=(0,et.useCallback)(e=>{l.setFieldsValue({prompt:e.prompt,type:e.type,params:e.params}),S(e.prompt)},[l]),q=(0,et.useCallback)(e=>{S(e.target.value)},[]),V=(0,et.useMemo)(()=>{if(!M||!y)return!1;let e=y.find(e=>e.interfaceAlias===d||e.name===d);return!!((null==e?void 0:e.paramSchema)&&tU(e.paramSchema))&&1===Object.keys(e.paramSchema.shape||{}).length},[d,M,y]),H=(0,et.useMemo)(()=>((e,A,t,r,n,o)=>{if(!e)return!1;if(!(()=>{if(r){let e=r.find(e=>e.interfaceAlias===n||e.name===n);if(e){if(!e.paramSchema)return!1;if("object"==typeof e.paramSchema&&"shape"in e.paramSchema)return Object.keys(e.paramSchema.shape||{}).length>0}}return!0})())return!0;if(A){let e=t||{},A=null==r?void 0:r.find(e=>e.interfaceAlias===n||e.name===n);if((null==A?void 0:A.paramSchema)&&tU(A.paramSchema)){let t=A.paramSchema.shape||{};return Object.keys(t).every(A=>{let{isOptional:r}=tq(t[A]),n=e[A];return r||void 0!==n&&""!==n&&null!==n})}return!0}return o.trim().length>0})(s,!!M,j,y,d,C),[s,M,d,y,C,j]),G=(0,et.useCallback)(()=>{let e=l.getFieldsValue(),A="";if(M&&e.params&&y){let t=y.find(e=>e.interfaceAlias===d||e.name===d);if((null==t?void 0:t.paramSchema)&&tU(t.paramSchema)){let r="",n=[],o=t.paramSchema.shape||{};Object.keys(o).forEach(A=>{var t;let i=null==(t=e.params)?void 0:t[A];if(null!=i&&""!==i){let{actualField:e}=tq(o[A]);tF(e)?r=String(i):"distance"===A?n.push(`${i}`):n.push(String(i))}});let i=n.join(" ");A=r?`${r} - ${i}`:i}else A=e.prompt||""}else A=e.prompt||"";let t={type:e.type,prompt:A,params:e.params,timestamp:Date.now()};if(O(t),m(),h)if(P.current=t,S(""),M){let e=X();l.setFieldValue("params",e)}else l.setFieldValue("prompt","")},[l,O,m,M,d,h,y,X]),W=(0,et.useCallback)(e=>{"Enter"===e.key&&e.metaKey&&H?(G(),e.preventDefault(),e.stopPropagation()):"Enter"===e.key&&setTimeout(()=>{if(R.current){var e;let A=null==(e=R.current.resizableTextArea)?void 0:e.textArea;if(A){let e=A.selectionStart,t=A.value.lastIndexOf("\n");(-1===t||e>t)&&(A.scrollTop=A.scrollHeight)}}},0)},[G,H]),Y=(0,et.useCallback)(e=>{"Enter"===e.key&&e.metaKey&&H&&(G(),e.preventDefault(),e.stopPropagation())},[G,H]),_=(0,et.useCallback)(()=>{if(!M)return null;if(y){let e=y.find(e=>e.interfaceAlias===d||e.name===d);if((null==e?void 0:e.paramSchema)&&tU(e.paramSchema)){let A=e.paramSchema.shape||{},t=Object.keys(A);if(1===t.length){let e=t[0],{actualField:n}=tq(A[e]),o=tF(n),i=(()=>{var A,t;if(null==(A=n._def)?void 0:A.description)return n._def.description;if(n.description)return n.description;if(y){let A=y.find(e=>e.interfaceAlias===d||e.name===d);if((null==A?void 0:A.paramSchema)&&"object"==typeof A.paramSchema&&"shape"in A.paramSchema){let r=(A.paramSchema.shape||{})[e];if(null==r||null==(t=r._def)?void 0:t.description)return r._def.description;if(null==r?void 0:r.description)return r.description}}return o?"Describe the element you want to interact with":"keyName"===e?"Enter key name or text to type":"value"===e?"Enter text to input":`Enter ${e}`})();return(0,r.jsx)(An.A.Item,{name:["params",e],style:{margin:0},children:(0,r.jsx)(e7.A.TextArea,{className:"main-side-console-input-textarea",rows:3,placeholder:i,autoFocus:!0,onKeyDown:Y})})}let n=[],o=t.sort((e,t)=>{let r=A[e],n=A[t],{isOptional:o}=tq(r),{isOptional:i}=tq(n);return!o&&i?-1:o&&!i?1:0});if(o.forEach((e,t)=>{var i,a,s;let{actualField:l,isOptional:c}=tq(A[e]),u=tF(l),p=e.charAt(0).toUpperCase()+e.slice(1),g=12*(t!==o.length-1),m=(()=>{var A,t;if(null==(A=l._def)?void 0:A.description)return l._def.description;if(l.description)return l.description;if(y){let A=y.find(e=>e.interfaceAlias===d||e.name===d);if((null==A?void 0:A.paramSchema)&&"object"==typeof A.paramSchema&&"shape"in A.paramSchema){let r=(A.paramSchema.shape||{})[e];if(null==r||null==(t=r._def)?void 0:t.description)return r._def.description;if(null==r?void 0:r.description)return r.description}}if(u)return"Describe the element you want to interact with"})(),f={name:e,label:p,fieldSchema:l,isRequired:!c,marginBottom:g,placeholder:m};u?n.push((0,r.jsx)(t2,rA({},f),e)):(null==(i=l._def)?void 0:i.typeName)==="ZodEnum"?n.push((0,r.jsx)(t3,rA({},f),e)):(null==(a=l._def)?void 0:a.typeName)==="ZodNumber"?n.push((0,r.jsx)(t5,rA({},f),e)):(null==(s=l._def)?void 0:s.typeName)==="ZodBoolean"?n.push((0,r.jsx)(t6,rA({},f),e)):n.push((0,r.jsx)(t1,rA({},f),e))}),"aiScroll"===d){let e=n.find(e=>et.isValidElement(e)&&"direction"===e.props.name),A=n.find(e=>et.isValidElement(e)&&"distance"===e.props.name),t=n.filter(e=>et.isValidElement(e)&&"direction"!==e.props.name&&"distance"!==e.props.name);if(e&&A)return(0,r.jsxs)("div",{className:"structured-params",children:[(0,r.jsxs)("div",{style:{display:"flex",gap:12,marginBottom:12},children:[e,A]}),t]})}return(0,r.jsx)("div",{className:"structured-params",children:n})}}return null},[d,M,y,Y]),$=(0,et.useCallback)(()=>{k(!0)},[]),er=(0,et.useCallback)(()=>{k(!1)},[]),en=(0,et.useCallback)(()=>{let e=e=>(0,r.jsx)(eA.Ay,{type:"primary",icon:(0,r.jsx)(tj.A,{}),style:{borderRadius:20,zIndex:999},onClick:G,disabled:!H,loading:g,children:e});return u?"aiAct"===d?(0,r.jsx)(ee.A,{title:"Start executing until some interaction actions need to be performed. You can see the process of planning and locating.",children:e("Dry Run")}):e("Run"):p?(0,r.jsx)(eA.Ay,{icon:(0,r.jsx)(tP.A,{}),onClick:f,style:{borderRadius:20,zIndex:999},children:"Stop"}):e("Run")},[u,g,G,f,H,d,p]);return(0,r.jsxs)("div",{className:"prompt-input-wrapper",children:[(0,r.jsxs)("div",{className:"mode-radio-group-wrapper",children:[(0,r.jsxs)("div",{className:"mode-radio-group",ref:x,children:[(0,r.jsx)(An.A.Item,{name:"type",style:{margin:0},children:(0,r.jsx)(tN.A.Group,{buttonStyle:"solid",disabled:!s,children:As.map(e=>{var A;return(0,r.jsx)(ee.A,{title:(null==(A=Aa[e])?void 0:A.title)||"",children:(0,r.jsx)(tN.A.Button,{value:e,children:tV(e)})},e)})})}),(0,r.jsx)(tl.A,{menu:(A=Z.filter(e=>!As.includes(e)),t=[],(n=A.filter(e=>{var A;return(null==(A=Aa[e])?void 0:A.group)==="interaction"})).length>0&&t.push({key:"interaction-group",type:"group",label:"Interaction APIs",children:n.map(e=>{var A;return{key:e,label:tV(e),title:(null==(A=Aa[e])?void 0:A.title)||"",onClick:()=>{l.setFieldValue("type",e)}}})}),(o=A.filter(e=>{var A;return(null==(A=Aa[e])?void 0:A.group)==="extraction"})).length>0&&t.push({key:"extraction-group",type:"group",label:"Data Extraction APIs",children:o.map(e=>{var A;return{key:e,label:tV(e),title:(null==(A=Aa[e])?void 0:A.title)||"",onClick:()=>{l.setFieldValue("type",e)}}})}),(i=A.filter(e=>{var A;return(null==(A=Aa[e])?void 0:A.group)==="validation"})).length>0&&t.push({key:"validation-group",type:"group",label:"Validation APIs",children:i.map(e=>{var A;return{key:e,label:tV(e),title:(null==(A=Aa[e])?void 0:A.title)||"",onClick:()=>{l.setFieldValue("type",e)}}})}),(a=A.filter(e=>!Aa[e])).length>0&&t.push({key:"device-specific-group",type:"group",label:"Device-Specific APIs",children:a.map(e=>({key:e,label:tV(e),title:"",onClick:()=>{l.setFieldValue("type",e)}}))}),{items:t}),placement:"bottomLeft",trigger:["click"],disabled:!s,overlayClassName:"more-apis-dropdown",children:(0,r.jsxs)(eA.Ay,{className:`more-apis-button ${!As.includes(d)?"selected-from-dropdown":""}`,children:[d&&!As.includes(d)?tV(d):"more",(0,r.jsx)(tw.A,{style:{fontSize:"10px",marginLeft:"2px"}})]})})]}),(0,r.jsxs)("div",{className:"action-icons",children:[L&&(0,r.jsx)("div",{className:b?"settings-wrapper settings-wrapper-hover":"settings-wrapper",onMouseEnter:$,onMouseLeave:er,children:(0,r.jsx)(tW,{enableTracking:"In-Browser-Extension"===c,showDeepLocateOption:z,showDeepThinkOption:Q,showDataExtractionOptions:D,hideDomAndScreenshotOptions:E,deviceType:v})}),(0,r.jsx)(re,{onSelect:F,history:K,currentType:d})]})]}),(0,r.jsxs)("div",{className:`main-side-console-input ${!s?"disabled":""} ${g?"loading":""}`,children:[B?M?V?_():(0,r.jsx)("div",{className:"structured-params-container",children:_()}):(0,r.jsx)(An.A.Item,{name:"prompt",style:{margin:0},children:(0,r.jsx)(rt,{className:"main-side-console-input-textarea",disabled:!s,rows:3,placeholder:I,autoFocus:!0,onKeyDown:W,onChange:q,ref:R})}):(0,r.jsxs)("div",{className:"no-input-method",style:{padding:"20px",textAlign:"center",color:"#666",fontSize:"14px"},children:['Click "Run" to execute ',tV(d)]}),(0,r.jsx)("div",{className:"form-controller-wrapper",children:en()})]})]})};function rn(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function ro(e){return function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){rn(o,r,n,i,a,"next",e)}function a(e){rn(o,r,n,i,a,"throw",e)}i(void 0)})}}let{Text:ri}=e3.A;function ra(e){let{error:A}=e;if(!A)return null;let t=A.replace(/^(Error:\s*)+/,"Error: ");return(0,r.jsx)(Ar.A,{message:(0,r.jsx)("span",{style:{color:"#ff4d4f"},children:t}),type:"error",showIcon:!0})}function rs(e){let{playgroundSDK:A,storage:t,contextProvider:n,config:o={},branding:i={},className:a="",dryMode:s=!1,showContextPreview:l=!0}=e,[c]=An.A.useForm(),{config:d}=N(),[u,p]=(0,et.useState)(!1);(0,et.useEffect)(()=>{c.setFieldsValue({type:As["0"]})},[c]),(0,et.useEffect)(()=>{ro(function*(){if(A&&"function"==typeof A.checkStatus)try{yield A.checkStatus(),p(!0)}catch(e){console.warn("Failed to initialize SDK, using default namespace:",e),p(!0)}else p(!0)})()},[A]);let g=(0,et.useMemo)(()=>{if(t)return t;if(!u)return null;let e=o.storageNamespace||(A&&A.id&&"string"==typeof A.id?`agent-${A.id}`:"playground-default"),r=AU();return console.log(`Using ${r} storage for namespace: ${e}`),AJ(r,e)},[t,u,o.storageNamespace,A]),{loading:m,setLoading:f,infoList:h,setInfoList:y,actionSpace:E,actionSpaceLoading:v,uiContextPreview:b,setUiContextPreview:k,showScrollToBottomButton:C,verticalMode:S,replayCounter:I,setReplayCounter:R,infoListRef:x,currentRunningIdRef:j,interruptedFlagRef:P,clearInfoList:w,handleScrollToBottom:O}=function(e,A,t,r){let[n,o]=(0,et.useState)(!1),[i,a]=(0,et.useState)([]),[s,l]=(0,et.useState)([]),[c,d]=(0,et.useState)(!0),[u,p]=(0,et.useState)(),[g,m]=(0,et.useState)(!1),[f,h]=(0,et.useState)(!0),y=(0,et.useRef)(0),[E,v]=(0,et.useState)(!1),[b,k]=(0,et.useState)(0),C=(0,et.useRef)(null),S=(0,et.useRef)(null),I=(0,et.useRef)({}),R=(0,et.useRef)(!1);(0,et.useEffect)(()=>{let e=()=>Aq(function*(){let e=AH(AV({},Al(r)),{id:"welcome",timestamp:new Date});if(null==A?void 0:A.loadMessages)try{let t=yield A.loadMessages();0===t.length&&(t=yield Aq(function*(){let e=AJ(AU(),"playground-default");try{if(null==e?void 0:e.loadMessages){let t=yield e.loadMessages();if(t.length>1)return console.log("Found data in old namespace, migrating..."),(null==A?void 0:A.saveMessages)&&(yield A.saveMessages(t)),e.clearMessages&&(yield e.clearMessages()),t}}catch(e){console.debug("No data found in old namespace:",e)}return[]})()),t.some(e=>"welcome"===e.id)?a(t):a([e,...t])}catch(A){console.error("Failed to load messages:",A),a([e])}else a([e])})();A&&!R.current?(R.current=!0,e()):A||0!==i.length||e()},[A]),(0,et.useEffect)(()=>{(null==A?void 0:A.saveMessages)&&i.length>1&&A.saveMessages(i).catch(e=>{e instanceof DOMException&&"QuotaExceededError"===e.name?console.warn("Storage quota exceeded - some messages may not be saved persistently"):console.error("Failed to save messages:",e)})},[i,A]),(0,et.useEffect)(()=>{(null==t?void 0:t.getUIContext)&&!u&&t.getUIContext().then(e=>p(e)).catch(e=>{console.error("Failed to get UI context:",e)})},[t,u]),(0,et.useEffect)(()=>{Aq(function*(){d(!0);try{var A;if(!e)return void l([]);let r=u||(yield null==t||null==(A=t.getUIContext)?void 0:A.call(t)),n=yield e.getActionSpace(r);l(n||[])}catch(e){console.error("Failed to load action space:",e),l([])}finally{d(!1)}})()},[e,u,t]),(0,et.useEffect)(()=>{v(window.innerWidth<750);let e=()=>{v(window.innerWidth<750)};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let x=(0,et.useCallback)(()=>{setTimeout(()=>{C.current&&(C.current.scrollTop=C.current.scrollHeight)},100)},[]),j=(0,et.useCallback)(()=>{if(C.current){let{scrollTop:e,scrollHeight:A,clientHeight:t}=C.current,r=e+t>=A-10;m(!r);let n=e<y.current;y.current=e,r?h(!0):n&&h(!1)}},[]),P=(0,et.useCallback)(()=>{C.current&&(C.current.scrollTo({top:C.current.scrollHeight,behavior:"smooth"}),m(!1),h(!0))},[]);(0,et.useEffect)(()=>{i.length>0&&f&&x()},[i,x,f]),(0,et.useEffect)(()=>{let e=C.current;if(e)return e.addEventListener("scroll",j),j(),()=>{e.removeEventListener("scroll",j)}},[j]);let w=(0,et.useCallback)(()=>Aq(function*(){if(a([AH(AV({},Al(r)),{id:"welcome",timestamp:new Date})]),null==A?void 0:A.clearMessages)try{yield A.clearMessages()}catch(e){console.error("Failed to clear stored messages:",e)}})(),[A,r]),N=(0,et.useCallback)(()=>Aq(function*(){if(null==t?void 0:t.refreshContext)try{let e=yield t.refreshContext();p(e)}catch(e){console.error("Failed to refresh context:",e)}})(),[t]);return{loading:n,setLoading:o,infoList:i,setInfoList:a,actionSpace:s,actionSpaceLoading:c,uiContextPreview:u,setUiContextPreview:p,showScrollToBottomButton:g,verticalMode:E,replayCounter:b,setReplayCounter:k,infoListRef:C,currentRunningIdRef:S,interruptedFlagRef:I,clearInfoList:w,refreshContext:N,handleScrollToBottom:P,scrollToBottom:x}}(A,g,n,i.targetName),{handleRun:T,handleStop:K,canStop:M}=function(e){let{playgroundSDK:A,storage:t,actionSpace:r,loading:n,setLoading:o,setInfoList:i,replayCounter:a,setReplayCounter:s,verticalMode:l,currentRunningIdRef:c,interruptedFlagRef:d,deviceType:u}=e,{deepLocate:p,deepThink:g,screenshotIncluded:m,domIncluded:f,imeStrategy:h,autoDismissKeyboard:y,keyboardDismissStrategy:E,alwaysRefreshScreenInfo:v}=N(),b=(0,et.useCallback)(e=>Ay(function*(){if(!A)return void console.warn("PlaygroundSDK is not available");let r=Date.now(),n=e.type,b=`${e.type}: ${e.prompt||JSON.stringify(e.params)}`,k={id:`user-${Date.now()}`,type:"user",content:b,timestamp:new Date};i(e=>[...e,k]),o(!0);let C=AE({},Ac),S={id:`system-${r}`,type:"system",content:"",timestamp:new Date,loading:!0,loadingProgressText:""};i(e=>[...e,S]);try{c.current=r,d.current[r]=!1,A.onDumpUpdate&&A.onDumpUpdate((e,A)=>{var t;if(d.current[r]||!(null==A||null==(t=A.tasks)?void 0:t.length))return;let n=A.tasks.map((e,A)=>{var t;let n,o;return{id:`progress-${r}-task-${A}`,type:"progress",content:(n=eX(e),(o=eU(e))?`${n} - ${o}`:n),timestamp:new Date((null==(t=e.timing)?void 0:t.start)||Date.now()),result:e.error?{error:Ab(e.error),result:null}:void 0}});i(e=>{let A=e.findIndex(e=>e.id===`system-${r}`);if(-1===A)return e;let t=e.filter(e=>!("progress"===e.type&&e.id.startsWith(`progress-${r}-`)));return[...t.slice(0,A+1),...n,...t.slice(A+1)]})}),"aiAct"!==n&&g&&console.warn("[Playground] Non-aiAct action will be executed without deepThink. deepThink is only forwarded for aiAct.",{actionType:n,requestId:r.toString()});let t=Av(AE({requestId:r.toString(),deepLocate:p},"aiAct"===n?{deepThink:g}:{}),{screenshotIncluded:m,domIncluded:f,deviceOptions:{imeStrategy:h,autoDismissKeyboard:y,keyboardDismissStrategy:E,alwaysRefreshScreenInfo:v}});if(C.result=yield A.executeAction(n,e,t),"object"==typeof C.result&&null!==C.result){let e=C.result;e.dump&&(C.dump=e.dump),e.reportHTML&&(C.reportHTML=e.reportHTML),e.error&&(C.error=Ab(e.error)),"result"in e&&(C.result=e.result)}}catch(e){C.error=Ab(e),console.error("Playground execution error:",e),"object"==typeof e&&null!==e&&(e.dump&&(C.dump=e.dump),e.reportHTML&&(C.reportHTML=e.reportHTML))}if(d.current[r])return;o(!1),c.current=null;let I=null,R=a;if((null==C?void 0:C.dump)&&C.dump.tasks&&Array.isArray(C.dump.tasks)){let e=Am(Ak(C.dump,u));s(e=>e+1),I=e,R=a+1}i(e=>e.map(e=>e.id===`system-${r}`?Av(AE({},e),{content:"",loading:!1,loadingProgressText:""}):e));let x={id:`result-${r}`,type:"result",content:"Execution result",timestamp:new Date,result:C,loading:!1,replayScriptsInfo:I,replayCounter:R,loadingProgressText:"",verticalMode:l,actionType:n};if(i(e=>[...e,x]),null==t?void 0:t.saveResult)try{yield t.saveResult(x.id,x)}catch(e){console.error("Failed to save result:",e)}let j={id:`separator-${r}`,type:"separator",content:"New Session",timestamp:new Date};i(e=>[...e,j])})(),[A,t,r,o,i,a,s,l,c,d,p,g,m,f,u,h,y,E,v]),k=(0,et.useCallback)(()=>Ay(function*(){let e=c.current;if(e&&A&&A.cancelExecution)try{let r=yield A.cancelExecution(e.toString()),n=null;if(r)n=r;else if(A.getCurrentExecutionData)try{n=yield A.getCurrentExecutionData()}catch(e){console.error("Failed to get execution data before stop:",e)}if(d.current[e]=!0,o(!1),A.onProgressUpdate&&A.onProgressUpdate(()=>{}),A.onDumpUpdate&&A.onDumpUpdate(()=>{}),i(A=>A.map(A=>A.id===`system-${e}`?Av(AE({},A),{content:"",loading:!1,loadingProgressText:""}):A)),n&&(n.dump||n.reportHTML)){var t;let A=null,r=a;if((null==(t=n.dump)?void 0:t.tasks)&&Array.isArray(n.dump.tasks)){let e=Ak(n.dump,u);A=Am(e),s(e=>e+1),r=a+1}let o={id:`stop-result-${e}`,type:"result",content:"Execution stopped by user",timestamp:new Date,result:{result:null,dump:n.dump,reportHTML:n.reportHTML,error:null},loading:!1,verticalMode:l,replayScriptsInfo:A,replayCounter:r};i(e=>[...e,o])}else{let A={id:`stop-${e}`,type:"system",content:"Operation stopped",timestamp:new Date,loading:!1};i(e=>[...e,A])}let c={id:`separator-${e}`,type:"separator",content:"New Session",timestamp:new Date};i(e=>[...e,c])}catch(e){console.error("Failed to stop execution:",e)}})(),[A,c,d,o,i,l,a,u]);return{handleRun:b,handleStop:k,canStop:n&&!!c.current&&!!A&&!!A.cancelExecution}}({playgroundSDK:A,storage:g,actionSpace:E,loading:m,setLoading:f,setInfoList:y,replayCounter:I,setReplayCounter:R,verticalMode:S,currentRunningIdRef:j,interruptedFlagRef:P,deviceType:o.deviceType});(0,et.useEffect)(()=>{(null==A?void 0:A.overrideConfig)&&d&&A.overrideConfig(d).catch(e=>{console.error("Failed to override SDK config:",e);let A=e instanceof Error?e.message:String(e);W.Ay.error(`Failed to apply AI configuration: ${A}`)})},[A,d]);let B=(0,et.useCallback)(()=>ro(function*(){try{let e=c.getFieldsValue();yield T(e)}catch(e){W.Ay.error((null==e?void 0:e.message)||"Execution failed")}})(),[c,T]),D=Object.keys(d||{}).length>=1,z=o.serverMode||!s&&!v&&D,Q=An.A.useWatch("type",c),L=(0,et.useMemo)(()=>A&&"function"==typeof A.getServiceMode?A.getServiceMode():"Server",[A]),Z=l&&!1!==o.showContextPreview,X=o.layout||"vertical",J=!1!==o.showVersionInfo,U=o.deviceType;return(0,r.jsx)("div",{className:`playground-container ${X}-mode ${a}`.trim(),children:(0,r.jsxs)(An.A,{form:c,onFinish:B,className:"command-form",children:[Z&&(0,r.jsx)("div",{className:"context-preview-section",children:(0,r.jsx)(A8,{uiContextPreview:b,setUiContextPreview:k,showContextPreview:Z})}),(0,r.jsxs)("div",{className:"middle-dialog-area",children:[h.length>1&&(0,r.jsx)("div",{className:"clear-button-container",children:(0,r.jsx)(eA.Ay,{size:"small",icon:(0,r.jsx)(e4.A,{}),onClick:w,type:"text",className:"clear-button"})}),(0,r.jsx)("div",{ref:x,className:"info-list-container",children:(0,r.jsx)(Ao.A,{itemLayout:"vertical",dataSource:h,renderItem:e=>{var A,t,n,o;let a,s,l,c,d,u;return(0,r.jsx)(Ao.A.Item,{className:"list-item",children:"user"===e.type?(0,r.jsx)("div",{className:"user-message-container",children:(0,r.jsx)("div",{className:"user-message-bubble",children:e.content})}):"progress"===e.type?(0,r.jsx)("div",{children:(s=null==(A=(a=e.content.split(" - "))[0])?void 0:A.trim(),l=a.slice(1).join(" - ").trim(),c=h.findIndex(A=>A.id===e.id),d=h.slice(c+1).some(e=>"progress"===e.type),u=m&&!d,(0,r.jsxs)(r.Fragment,{children:[s&&(0,r.jsxs)("span",{className:"progress-action-item",children:[s,(0,r.jsx)("span",{className:`progress-status-icon ${u?"loading":(null==(t=e.result)?void 0:t.error)?"error":"completed"}`,children:u?(0,r.jsx)(Ae.A,{spin:!0}):(null==(n=e.result)?void 0:n.error)?"✗":"✓"})]}),l&&(0,r.jsx)("div",{children:(0,r.jsx)(A3,{text:l,className:"progress-description",disabled:!u})}),(null==(o=e.result)?void 0:o.error)&&(0,r.jsx)(ra,{error:e.result.error})]}))}):"separator"===e.type?(0,r.jsxs)("div",{className:"new-conversation-separator",children:[(0,r.jsx)("div",{className:"separator-line"}),(0,r.jsx)("div",{className:"separator-text-container",children:(0,r.jsx)(ri,{type:"secondary",className:"separator-text",children:e.content})})]}):(0,r.jsxs)("div",{className:"system-message-container",children:[(0,r.jsxs)("div",{className:"system-message-header",children:[(0,r.jsx)(AA.A,{component:i.icon||tx,style:{fontSize:20}}),(0,r.jsx)("span",{className:"system-message-title",children:i.title||"Playground"})]}),(e.content||e.result)&&(0,r.jsx)("div",{className:"system-message-content",children:"result"===e.type?(0,r.jsx)(tR,{result:e.result||null,loading:e.loading||!1,serverValid:!0,serviceMode:L,replayScriptsInfo:e.replayScriptsInfo||null,replayCounter:e.replayCounter||0,loadingProgressText:e.loadingProgressText||"",verticalMode:e.verticalMode||!1,fitMode:"width",actionType:e.actionType}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"system-message-text",children:e.content}),e.loading&&e.loadingProgressText&&(0,r.jsx)("div",{className:"loading-progress-text",children:(0,r.jsx)("span",{children:e.loadingProgressText})})]})})]})},e.id)}})}),C&&!1!==o.enableScrollToBottom&&(0,r.jsx)(eA.Ay,{className:"scroll-to-bottom-button",type:"primary",shape:"circle",icon:(0,r.jsx)(At.A,{}),onClick:O,size:"large"})]}),(0,r.jsxs)("div",{className:"bottom-input-section",children:[o.showEnvConfigReminder?(0,r.jsx)(te,{}):null,(0,r.jsx)(rr,{runButtonEnabled:z,form:c,serviceMode:L,selectedType:Q,dryMode:s,stoppable:M,loading:m,onRun:B,onStop:K,actionSpace:E,deviceType:U})]}),J&&i.version&&(0,r.jsx)("div",{className:"version-info-section",children:(0,r.jsxs)("span",{className:"version-text",children:["Midscene.js version: ",i.version]})})]})})}function rl(){let{config:e}=N(),A=(0,et.useMemo)(()=>new eW({type:"remote-execution"}),[]);return(0,et.useEffect)(()=>{(async()=>{try{let e=await A.checkStatus();console.log("[DEBUG] Android playground server status:",e,"ID:",A.id)}catch(e){console.error("Failed to check android playground server status:",e)}})()},[A]),(0,et.useEffect)(()=>{A.overrideConfig&&e&&A.overrideConfig(e).catch(e=>{console.error("Failed to override SDK config:",e)})},[A,e]),(0,r.jsxs)("div",{className:"playground-panel",children:[(0,r.jsx)("div",{className:"playground-panel-header",children:(0,r.jsxs)("div",{className:"header-row",children:[(0,r.jsx)(e0,{}),(0,r.jsx)(e8,{showTooltipWhenEmpty:!1,showModelName:!1})]})}),(0,r.jsx)("div",{className:"playground-panel-playground",children:(0,r.jsx)(rs,{playgroundSDK:A,config:{showContextPreview:!1,layout:"vertical",showVersionInfo:!0,enableScrollToBottom:!0,serverMode:!0,showEnvConfigReminder:!0,deviceType:"android"},branding:{title:"Android Playground",version:"1.5.5"},className:"playground-container"})})]})}var rc=t(4093),rd=t(3393),ru=t(6418),rp=t(4452),rg=t(5094),rm=t(5656),rf=t(4540),rh=t(9582);let ry=e=>(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16",...e,children:(0,r.jsx)("path",{fill:"#000",fillOpacity:.25,fillRule:"evenodd",d:"M9.68 2c1.2-1.2 3.2-1.28 4.4-.08s1.12 3.2-.08 4.4l-2.16 2.16c-.24.24-.56.24-.8 0s-.24-.56 0-.8l2.16-2.16c.8-.8.8-2.08.08-2.8s-2-.72-2.8.08L8.32 4.96c-.24.24-.56.24-.8 0s-.24-.56 0-.8zM5.6 13.2l2.16-2.16c.24-.24.56-.24.8 0s.24.56 0 .8L6.4 14c-1.2 1.2-3.12 1.36-4.4.08-1.36-1.28-1.2-3.2.08-4.4l2.16-2.16c.24-.24.56-.24.8 0s.24.56 0 .8l-2.16 2.16c-.8.8-.88 2-.08 2.8s2 .72 2.8-.08m4.64-8.24c.24-.24.64-.24.96 0 .24.24.24.64 0 .96L5.92 11.2c-.24.24-.64.24-.96 0-.24-.24-.24-.64 0-.96z",clipRule:"evenodd"})}),rE=e=>(0,r.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16",...e,children:[(0,r.jsxs)("g",{fill:"#606266",clipPath:"url(#screenshot_svg__a)",children:[(0,r.jsx)("path",{d:"m4.883 2.663-.858 2.001h-2.69v8.673h13.341V4.664H11.32l-.859-2zm-1.738.667.858-2.001h7.338l.858 2.001h2.477a1.334 1.334 0 0 1 1.334 1.334v8.673a1.335 1.335 0 0 1-1.334 1.334H1.334A1.334 1.334 0 0 1 0 13.337V4.664A1.334 1.334 0 0 1 1.334 3.33z"}),(0,r.jsx)("path",{d:"M8.005 10.001a1.334 1.334 0 1 0 0-2.668 1.334 1.334 0 0 0 0 2.668m0 1.335a2.668 2.668 0 1 1 0-5.337 2.668 2.668 0 0 1 0 5.337m3.336-6.004h.667q.667 0 .667.667 0 .666-.667.667h-.667q-.667 0-.667-.667t.667-.667"})]}),(0,r.jsx)("defs",{children:(0,r.jsx)("clipPath",{id:"screenshot_svg__a",children:(0,r.jsx)("path",{fill:"#fff",d:"M0 0h16v16H0z"})})})]}),rv=e=>(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16",...e,children:(0,r.jsx)("path",{fill:"#FF4550",d:"M14.08 1.92C12.88.72 10.88.8 9.68 2L7.52 4.16c-.24.24-.24.56 0 .8s.56.24.8 0l2.16-2.16c.8-.8 2.08-.8 2.8-.08s.72 2-.08 2.8l-2.16 2.16c-.24.24-.24.56 0 .8s.56.24.8 0L14 6.32c1.2-1.2 1.28-3.2.08-4.4m-6.32 9.12L5.6 13.2c-.8.8-2 .88-2.8.08s-.72-2 .08-2.8l2.16-2.16c.24-.24.24-.56 0-.8s-.56-.24-.8 0L2.08 9.68C.8 10.88.64 12.8 2 14.08c1.28 1.28 3.2 1.12 4.4-.08l2.16-2.16c.24-.24.24-.56 0-.8s-.56-.24-.8 0M5.92 4.96c-.24-.24-.64-.24-.96 0-.24.24-.24.64 0 .96l5.28 5.28c.24.24.64.24.96 0 .24-.24.24-.64 0-.96z"})}),{Text:rb}=e3.A,rk=(0,et.forwardRef)((e,A)=>{let{serverUrl:t,maxSize:n=1024,autoConnect:o=!0,autoReconnect:i=!0,reconnectInterval:a=5e3}=e,[s,l]=(0,et.useState)(!1),[c,d]=(0,et.useState)(!1),[u,p]=(0,et.useState)(null),[g,m]=(0,et.useState)(""),f=(0,et.useRef)(null),h=(0,et.useRef)(null),y=(0,et.useRef)(null),E=(0,et.useRef)(null),v=(0,et.useRef)(null),b=(0,et.useRef)(null),k=e_(!0),C=(0,et.useCallback)(e=>{if(e)try{for(;e.firstChild;)try{e.removeChild(e.firstChild)}catch(A){if(console.warn("Failed to remove child, skipping:",A),e.firstChild){e.innerHTML="";break}}}catch(A){console.error("Error clearing container:",A);try{e.innerHTML=""}catch(e){console.error("Failed to reset innerHTML:",e)}}},[]),S=(0,et.useCallback)(()=>{if(!y.current||!h.current||!u)return;let e=h.current,A=y.current,t=e.clientWidth,r=e.clientHeight,{width:n,height:o}=u,i=r-40,a=n/o,s=t,l=t/a;l>i&&(l=i,s=i*a),A.width=n,A.height=o,A.style.width=`${s}px`,A.style.height=`${l}px`,A.style.marginTop="20px",A.style.marginBottom="20px"},[u]);(0,et.useEffect)(()=>{let e=()=>{S()};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[S]),(0,et.useEffect)(()=>{S()},[u,S]);let I=async()=>{if(ru.p.isSupported){let e=new ru.p;return{renderer:e,element:e.canvas}}let e=new rp.x;return{renderer:e,element:e.canvas}},R=async e=>{if(!rd.p.isSupported)throw Error("Current browser does not support WebCodecs API, please use the latest version of Chrome/Edge browser");let{renderer:A,element:t}=await I();if(y.current=t,h.current){let e=h.current.querySelector(".canvas-wrapper");e&&(C(e),e.appendChild(y.current))}return new rd.p({codec:e,renderer:A})},x=async()=>{if(E.current)try{let e=await E.current.snapshot();if(e){let A=URL.createObjectURL(e),t=document.createElement("a");t.href=A,t.download=`screenshot_${new Date().toISOString().replace(/:/g,"-")}.png`,t.click(),URL.revokeObjectURL(A)}}catch(e){console.error("screenshot failed:",e),alert("screenshot failed")}},j=(0,et.useCallback)(()=>{if(E.current)try{E.current.dispose(),E.current=null}catch(e){console.error("Error disposing decoder:",e)}h.current&&C(h.current.querySelector(".canvas-wrapper")),f.current&&(f.current.disconnect(),f.current=null),v.current&&(clearTimeout(v.current),v.current=null),b.current&&(clearTimeout(b.current),b.current=null),d(!1),l(!1),p(null)},[C]);(0,et.useImperativeHandle)(A,()=>({disconnectDevice:j}),[j]);let P=(0,et.useCallback)(async()=>{try{if(j(),d(!1),l(!0),p(null),await new Promise(e=>setTimeout(e,150)),!t){console.error("Cannot connect: missing server URL"),l(!1);return}let e=()=>{b.current&&(clearTimeout(b.current),b.current=null),b.current=setTimeout(()=>{var A;if(null==(A=f.current)?void 0:A.connected)try{f.current.emit("connect-device",{maxSize:n}),e()}catch(e){console.error("Failed to request connection:",e),W.Ay.error("connection request failed, please refresh the page")}else try{f.current&&setTimeout(()=>{f.current&&f.current.connect()},500)}catch(e){console.error("Failed to reconnect:",e),W.Ay.error("reconnection failed, please refresh the page")}},5e3)};if(f.current)f.current.connected?(f.current.emit("connect-device",{maxSize:n}),e()):f.current.connect();else try{f.current=(0,el.io)(t,{withCredentials:!0,reconnection:!0,reconnectionAttempts:5,reconnectionDelay:1e3,timeout:1e4}),f.current.on("connect",()=>{var A,t;(null==(A=f.current)?void 0:A.id)&&m(f.current.id),v.current&&(clearTimeout(v.current),v.current=null),null==(t=f.current)||t.emit("connect-device",{maxSize:n}),e()}),f.current.on("video-metadata",async e=>{try{let A,t,r;if(b.current&&(clearTimeout(b.current),b.current=null),E.current)try{E.current.dispose(),E.current=null}catch(e){console.error("Error disposing old decoder:",e)}if(h.current){let e=h.current.querySelector(".canvas-wrapper");C(e)}let n=(null==e?void 0:e.codec)?e.codec:rc.n.H264;if(E.current=await R(n),!E.current)throw Error("Failed to create decoder");E.current.sizeChanged(e=>{let{width:A,height:t}=e;p({width:A,height:t})}),(A=!1,t=[],r=new TransformStream({transform(e,r){let n={type:e.type,data:new Uint8Array(e.data),timestamp:e.timestamp};"configuration"===n.type?(r.enqueue(n),A=!0,t.length>0&&(t.forEach(e=>r.enqueue(e)),t=[])):"data"===n.type?A?r.enqueue(n):t.push(n):r.enqueue(n)}}),new ReadableStream({start(e){let A=!1,t=t=>{if(!A)try{e.enqueue(t)}catch(e){console.error("error occurred while enqueuing video data:",e),A=!0,o()}},r=t=>{console.error("stream error:",t),A||(e.error(Error(t.message)),A=!0,o())},n=()=>{A||(e.close(),A=!0,o())},o=()=>{f.current&&(f.current.off("video-data",t),f.current.off("error",r),f.current.off("disconnect",n))};return f.current&&(f.current.on("video-data",t),f.current.on("error",r),f.current.on("disconnect",n)),()=>{A=!0,o()}}}).pipeThrough(r)).pipeTo(E.current.writable).catch(e=>{console.error("video stream processing error:",e)}),d(!0),l(!1)}catch(e){console.error("Failed to initialize decoder:",e),l(!1)}}),f.current.on("error",e=>{console.error("server error:",e),W.Ay.error("server error"),l(!1),b.current&&(clearTimeout(b.current),b.current=null)}),f.current.on("disconnect",()=>{d(!1),b.current&&(clearTimeout(b.current),b.current=null),E.current&&(E.current.dispose(),E.current=null),h.current&&C(h.current.querySelector(".canvas-wrapper")),i&&!v.current&&(v.current=setTimeout(()=>{v.current=null,P()},a))})}catch(e){console.error("Failed to create socket connection:",e),l(!1),i&&!v.current&&(v.current=setTimeout(()=>{v.current=null,P()},a))}}catch(e){l(!1),console.error(`Failed to connect: ${e.message}`),W.Ay.error("connection failed"),i&&!v.current&&(v.current=setTimeout(()=>{v.current=null,P()},a))}},[t,n,i,a,j]);return(0,et.useEffect)(()=>{if(o&&!c&&!s){let e=setTimeout(()=>{P()},300);return()=>clearTimeout(e)}},[o,c,s,P]),(0,et.useEffect)(()=>()=>{if(E.current)try{E.current.dispose(),E.current=null}catch(e){console.error("Error disposing decoder during unmount:",e)}if(h.current)try{let e=h.current.querySelector(".canvas-wrapper");e&&(e.innerHTML="")}catch(e){console.error("Error clearing canvas wrapper during unmount:",e)}f.current&&(f.current.disconnect(),f.current=null),v.current&&(clearTimeout(v.current),v.current=null),b.current&&(clearTimeout(b.current),b.current=null)},[]),(0,r.jsx)("div",{className:"scrcpy-container",children:(0,r.jsxs)(rg.A,{children:[c&&(0,r.jsxs)("div",{className:"header-bar",children:[(0,r.jsxs)("div",{className:"header-left",children:[(0,r.jsx)(rb,{style:{fontWeight:600,fontSize:12},children:"Screen Projection"}),(0,r.jsx)(ee.A,{placement:"bottom",title:`Device ID: ${g||"Unknown"}`,children:(0,r.jsx)(Y.A,{})})]}),(0,r.jsx)("div",{className:"screen-info",children:(0,r.jsxs)(rb,{type:"secondary",children:["size : ",null==u?void 0:u.width,"\xd7",null==u?void 0:u.height]})}),(0,r.jsxs)("div",{className:"header-right",children:[(0,r.jsx)(ee.A,{placement:"bottom",title:"Screenshot",children:(0,r.jsx)(eA.Ay,{icon:(0,r.jsx)(rE,{}),onClick:x})}),(0,r.jsx)(rm.A,{type:"vertical",style:{margin:"0 16px"}}),(0,r.jsx)(ee.A,{placement:"bottom",title:"Connect Device",children:(0,r.jsx)(eA.Ay,{disabled:c,style:{backgroundColor:"#fff"},icon:(0,r.jsx)(ry,{}),onClick:P})}),c&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(rm.A,{type:"vertical",style:{margin:"0 16px"}}),(0,r.jsx)(ee.A,{title:"Disconnect Device",children:(0,r.jsx)(eA.Ay,{icon:(0,r.jsx)(rv,{}),onClick:j})})]})]})]}),(0,r.jsx)(rf.A,{gutter:[16,16],children:(0,r.jsx)(rh.A,{span:24,children:(0,r.jsx)("div",{className:"video-section",children:(0,r.jsxs)("div",{ref:h,className:"video-container",children:[(0,r.jsx)("div",{className:"canvas-wrapper"}),!c&&k&&(0,r.jsxs)("div",{className:"empty-state",children:[(0,r.jsx)("div",{className:"empty-state-icon",children:"\uD83D\uDCF1"}),(0,r.jsx)("div",{className:"empty-state-text",children:s?"Connecting to device...":"No device connected"}),!s&&(0,r.jsx)(eA.Ay,{type:"primary",onClick:()=>{P()},children:"Connect now"}),s&&(0,r.jsx)("div",{className:"loading-spinner",children:(0,r.jsx)($.A,{size:"large"})})]}),!k&&(0,r.jsx)("span",{children:"Please launch playground server!"})]})})})})]})})}),{Content:rC}=ei.A,rS=document.getElementById("root");rS&&n.createRoot(rS).render((0,r.jsx)(function(){let[e,A]=(0,et.useState)(null),[t,n]=(0,et.useState)(!1),[o,i]=W.Ay.useMessage(),[a,s]=(0,et.useState)(`http://${window.location.hostname}:5700`),[l,c]=(0,et.useState)(!1),[d,u]=(0,et.useState)(!1),{config:p}=N();(0,et.useEffect)(()=>{!function(e){let A=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=!(arguments.length>2)||void 0===arguments[2]||arguments[2];try{G(e,A)}catch(A){let e=A instanceof Error?A:Error(String(A));return console.error("Failed to override AI config:",e),t&&W.Ay.error(`Failed to apply AI configuration: ${e.message}`),!1}}(p)},[p]),(0,et.useEffect)(()=>{let e=window.SCRCPY_PORT;e&&s(`http://${window.location.hostname}:${e}`)},[]);let g=(0,et.useRef)(null),m=(0,et.useRef)(null);return(0,et.useEffect)(()=>{if(!a)return;let e=(0,el.io)(a,{withCredentials:!0,reconnectionAttempts:5,reconnectionDelay:1e3,timeout:5e3});return e.on("connect",()=>{e.emit("get-devices")}),e.on("devices-list",e=>{e.currentDeviceId&&(A(e.currentDeviceId),n(!0))}),e.on("connect_error",e=>{console.error("Socket.IO connection error:",e),o.error("Waiting for device server connection, please try again later")}),e.on("error",e=>{console.error("Socket.IO error:",e),o.error(`Error occurred while communicating with the server: ${e.message||"Unknown error"}`)}),g.current=e,()=>{e.disconnect()}},[o,a]),(0,et.useEffect)(()=>{if(t){let e=setTimeout(()=>{n(!1)},800);return()=>clearTimeout(e)}},[t]),(0,et.useEffect)(()=>{let e=()=>{c(window.innerWidth<=1024)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),(0,et.useEffect)(()=>{u(!!e&&/^\d+\.\d+\.\d+\.\d+:\d+$/.test(e))},[e]),(0,r.jsxs)(ea.Ay,{theme:{token:{colorPrimary:"#2B83FF"},components:{Layout:{headerHeight:60,headerPadding:"0 30px",headerBg:"#FFF",bodyBg:"#FFF"}}},children:[i,(0,r.jsx)(ei.A,{className:"app-container playground-container vertical-mode",children:(0,r.jsx)(rC,{className:"app-content",children:(0,r.jsxs)(es.YZ,{autoSaveId:"android-playground-layout",direction:l?"vertical":"horizontal",children:[(0,r.jsx)(es.Zk,{defaultSize:l?67:32,maxSize:l?85:60,minSize:l?67:25,className:"app-panel left-panel",children:(0,r.jsx)("div",{className:"panel-content left-panel-content",children:(0,r.jsx)(rl,{})})}),(0,r.jsx)(es.TW,{className:`panel-resize-handle ${l?"vertical":"horizontal"}`}),(0,r.jsx)(es.Zk,{className:"app-panel right-panel",children:(0,r.jsxs)("div",{className:"panel-content right-panel-content",children:[(0,r.jsx)(e$,{selectedDeviceId:e,scrcpyPlayerRef:m}),d?(0,r.jsx)(eo,{getScreenshot:()=>fetch("/screenshot").then(e=>e.json()),getInterfaceInfo:()=>fetch("/interface-info").then(e=>e.json()),serverOnline:!0,isUserOperating:!1}):(0,r.jsx)(rk,{ref:m,serverUrl:a,autoConnect:t})]})})]})})})]})},{}))},1182(){},3198(e,A,t){"use strict";t.d(A,{ZH:()=>u});var r=t(3244),n=t(5207),o=t(3078),i=t.n(o),a=t(217),s=t(9368),l=t(9152),c=t(5409);let d="midscene_run",u=e=>{if(!l.$9)return"";let A=(()=>{if(!l.$9)return"";let e=i().resolve(c.cwd(),l.$9?(0,a.j)(s.Tr)||d:"");if(!(0,r.existsSync)(e))try{(0,r.mkdirSync)(e,{recursive:!0})}catch(A){e=i().join((0,n.tmpdir)(),d),(0,r.mkdirSync)(e,{recursive:!0})}return e})(),t=i().join(A,e);return(0,r.existsSync)(t)||(0,r.mkdirSync)(t,{recursive:!0}),t}},217(e,A,t){"use strict";t.d(A,{j:()=>o});var r=t(9368),n=t(5409);let o=e=>{if(!r.Wh.includes(e))throw Error(`getBasicEnvValue with key ${e} is not supported.`);return n.env[e]}},9368(e,A,t){"use strict";t.d(A,{$:()=>R,$H:()=>p,$L:()=>l,$l:()=>i,AU:()=>b,BQ:()=>x,CA:()=>I,Cn:()=>es,DL:()=>ey,El:()=>D,FU:()=>d,HR:()=>n,I2:()=>r,IQ:()=>u,JM:()=>P,Jq:()=>k,Km:()=>h,Lg:()=>ev,Lh:()=>F,M1:()=>v,NF:()=>N,OK:()=>eo,OY:()=>ed,Od:()=>j,Sk:()=>K,T4:()=>X,TN:()=>Q,Tr:()=>L,UH:()=>eI,V7:()=>H,VM:()=>E,Vb:()=>eu,W4:()=>f,Wh:()=>ef,XE:()=>eb,YK:()=>z,Yf:()=>J,Yg:()=>V,Z$:()=>ea,Z7:()=>q,ZX:()=>s,_j:()=>eC,_q:()=>Z,aK:()=>y,aO:()=>eg,ag:()=>ei,b6:()=>S,c$:()=>eh,d8:()=>B,fS:()=>ee,ho:()=>M,iw:()=>c,jG:()=>C,j_:()=>T,kX:()=>U,mZ:()=>et,n0:()=>a,nc:()=>$,pp:()=>O,rd:()=>eE,rg:()=>g,sg:()=>el,tk:()=>ek,u1:()=>ep,v:()=>Y,v4:()=>o,vC:()=>G,wu:()=>ec,xP:()=>eA,xg:()=>W,y2:()=>_,yR:()=>em,yb:()=>w,zD:()=>m,zG:()=>en,zQ:()=>er});let r="MIDSCENE_MODEL_INIT_CONFIG_JSON",n="MIDSCENE_MODEL_NAME",o="MIDSCENE_DEBUG_MODEL_PROFILE",i="MIDSCENE_DEBUG_MODEL_RESPONSE",a="MIDSCENE_DEBUG_MODE",s="MIDSCENE_LANGSMITH_DEBUG",l="MIDSCENE_LANGFUSE_DEBUG",c="MIDSCENE_MODEL_SOCKS_PROXY",d="MIDSCENE_MODEL_HTTP_PROXY",u="MIDSCENE_MODEL_API_KEY",p="MIDSCENE_MODEL_BASE_URL",g="MIDSCENE_MODEL_MAX_TOKENS",m="MIDSCENE_MODEL_TIMEOUT",f="MIDSCENE_MODEL_TEMPERATURE",h="MIDSCENE_MODEL_RETRY_COUNT",y="MIDSCENE_MODEL_RETRY_INTERVAL",E="MIDSCENE_MODEL_REASONING_EFFORT",v="MIDSCENE_MODEL_REASONING_ENABLED",b="MIDSCENE_MODEL_REASONING_BUDGET",k="OPENAI_API_KEY",C="OPENAI_BASE_URL",S="MIDSCENE_OPENAI_INIT_CONFIG_JSON",I="MIDSCENE_OPENAI_HTTP_PROXY",R="MIDSCENE_OPENAI_SOCKS_PROXY",x="OPENAI_MAX_TOKENS",j="MIDSCENE_CACHE",P="MIDSCENE_USE_VLM_UI_TARS",w="MIDSCENE_USE_QWEN_VL",N="MIDSCENE_USE_QWEN3_VL",O="MIDSCENE_USE_DOUBAO_VISION",T="MIDSCENE_USE_GEMINI",K="MATCH_BY_POSITION",M="MIDSCENE_REPORT_TAG_NAME",B="MIDSCENE_REPORT_QUIET",D="MIDSCENE_PREFERRED_LANGUAGE",z="MIDSCENE_CACHE_MAX_FILENAME_LENGTH",Q="MIDSCENE_REPLANNING_CYCLE_LIMIT",L="MIDSCENE_RUN_DIR",Z="MIDSCENE_INSIGHT_MODEL_NAME",X="MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY",J="MIDSCENE_INSIGHT_MODEL_HTTP_PROXY",U="MIDSCENE_INSIGHT_MODEL_BASE_URL",F="MIDSCENE_INSIGHT_MODEL_API_KEY",q="MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON",V="MIDSCENE_INSIGHT_MODEL_TIMEOUT",H="MIDSCENE_INSIGHT_MODEL_TEMPERATURE",G="MIDSCENE_INSIGHT_MODEL_RETRY_COUNT",W="MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL",Y="MIDSCENE_INSIGHT_MODEL_FAMILY",_="MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT",$="MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED",ee="MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET",eA="MIDSCENE_PLANNING_MODEL_NAME",et="MIDSCENE_PLANNING_MODEL_SOCKS_PROXY",er="MIDSCENE_PLANNING_MODEL_HTTP_PROXY",en="MIDSCENE_PLANNING_MODEL_BASE_URL",eo="MIDSCENE_PLANNING_MODEL_API_KEY",ei="MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON",ea="MIDSCENE_PLANNING_MODEL_TIMEOUT",es="MIDSCENE_PLANNING_MODEL_TEMPERATURE",el="MIDSCENE_PLANNING_MODEL_RETRY_COUNT",ec="MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL",ed="MIDSCENE_PLANNING_MODEL_FAMILY",eu="MIDSCENE_PLANNING_MODEL_REASONING_EFFORT",ep="MIDSCENE_PLANNING_MODEL_REASONING_ENABLED",eg="MIDSCENE_PLANNING_MODEL_REASONING_BUDGET",em="MIDSCENE_MODEL_FAMILY",ef=[a,o,i,L],eh=[j,"MIDSCENE_MCP_USE_PUPPETEER_MODE","MIDSCENE_MCP_ANDROID_MODE",s,l,B],ey=[g,z,Q],eE=[g,x,"MIDSCENE_ADB_PATH","MIDSCENE_ADB_REMOTE_HOST","MIDSCENE_ADB_REMOTE_PORT","MIDSCENE_ANDROID_IME_STRATEGY","MIDSCENE_IOS_DEVICE_UDID","MIDSCENE_IOS_SIMULATOR_UDID",M,D,K,"MIDSCENE_MCP_CHROME_PATH","DOCKER_CONTAINER"],ev=[...eh,...ey,...eE],eb=[n,r,u,p,c,d,m,f,h,y,E,v,b,P,w,N,O,T,"MIDSCENE_USE_VL_MODEL",k,C,S,I,R,Z,X,J,U,F,q,V,H,G,W,Y,_,$,ee,eA,et,er,en,eo,ei,ea,es,el,ec,ed,eu,ep,eg,em],ek=["MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG",...ef,...ev,...eb],eC=["doubao-vision","doubao-seed","gemini","qwen2.5-vl","qwen3-vl","qwen3.5","vlm-ui-tars","vlm-ui-tars-doubao","vlm-ui-tars-doubao-1.5","glm-v","auto-glm","auto-glm-multilingual","gpt-5"];var eS,eI=((eS={}).V1_0="1.0",eS.V1_5="1.5",eS.DOUBAO_1_5_15B="doubao-1.5-15B",eS.DOUBAO_1_5_20B="doubao-1.5-20B",eS)},4565(e,A,t){"use strict";t.d(A,{Nw:()=>f,aZ:()=>function e(A,t){let r=`${p}:${A}`,o=(null==t?void 0:t.console)??!1,a=o?`${r}:withConsole`:r;if(!m.has(a))if(o){let t=e(A);m.set(a,function(){for(var e=arguments.length,A=Array(e),r=0;r<e;r++)A[r]=arguments[r];t(...A),console.warn("[Midscene]",...A)})}else{let e=c()(r);m.set(a,function(){for(var t=arguments.length,r=Array(t),o=0;o<t;o++)r[o]=arguments[o];u.$9&&function(e,A){if(!u.$9)return;let t=function(e){let A=e.replace(/:/g,"-");if(!g.has(A)){let e=i().join((0,d.ZH)("log"),`${A}.log`),t=n().createWriteStream(e,{flags:"a"});g.set(A,t)}return g.get(A)}(e),r=new Date,o=r.toLocaleDateString("sv-SE"),a=r.toLocaleTimeString("sv-SE"),s=r.getMilliseconds().toString().padStart(3,"0"),l=r.getTimezoneOffset(),c=Math.floor(Math.abs(l)/60).toString().padStart(2,"0"),p=(Math.abs(l)%60).toString().padStart(2,"0"),m=`${l<=0?"+":"-"}${c}:${p}`,f=`${o}T${a}.${s}${m}`;t.write(`[${f}] ${A}
|
|
9
|
-
`)}(A,s().format(...r)),e(...r)})}return m.get(a)}});var r=t(3244),n=t.n(r),o=t(3078),i=t.n(o),a=t(1344),s=t.n(a),l=t(7617),c=t.n(l),d=t(3198),u=t(9152);let p="midscene",g=new Map,m=new Map;function
|
|
10
|
-
//# sourceMappingURL=index.
|
|
11
|
+
`,loading:!1,result:void 0,replayScriptsInfo:null,replayCounter:0,loadingProgressText:"",verticalMode:!1}};Ab();let Ak={result:void 0,dump:null,reportHTML:null,error:null},AC="data:image/png;base64,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",AS="data:image/png;base64,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";function AI(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}let Ax=(e,A,t)=>{let r,n=(r=e.width/e.height>=A/t?e.width:e.height/t*A)>400?.1:r>50?.2:.3,o=Math.min(A,r+A*n*2),i=Math.min(e.left-A*n,A-o);i=Math.max(i,0);let a=Math.min(e.top-t*n,t-t/A*o);return{left:Math.round(i),top:Math.round(a=Math.max(a,0)),width:Math.round(o)}},AR=e=>{var A;let t=e?Array.isArray(e.executions)?e:{sdkVersion:"",groupName:"Execution",modelBriefs:[],executions:[e]}:null;if(!t)return console.warn("[allScriptsFromDump] dump is empty"),{scripts:[],modelBriefs:[]};let r=(e=>{var A,t;let r,n,o=e.sdkVersion,i=new Set;if(null==(A=e.executions)||A.filter(Boolean).forEach(e=>{e.tasks.forEach(e=>{var A,t;if(null==(t=e.uiContext)||null==(A=t.shotSize)?void 0:A.width){let A=e.uiContext.shotSize.width,t=e.uiContext.shotSize.height;r||(r=A,n=t)}if(e.usage){let{model_name:A,model_description:t,intent:r}=e.usage;r&&A&&i.add(t?`${r}/${A}(${t})`:`${r}/${A}`)}})}),!r||!n)return console.warn("width or height is missing in dump file"),null;let a=(null==(t=e.modelBriefs)?void 0:t.length)?e.modelBriefs:[],s=(()=>{var e;let A=a.length?a:[...i];if(!A.length)return A;let t=null==(e=A[0])?void 0:e.split("/",2)[1];return t&&A.slice(1).every(e=>(null==e?void 0:e.split("/",2)[1])===t)?[t]:A})();return{width:r,height:n,sdkVersion:o,modelBriefs:s,deviceType:e.deviceType}})(t);if(!r)return{scripts:[],sdkVersion:t.sdkVersion,modelBriefs:[]};let{width:n,height:o}=r,i=[],a=(null==(A=t.executions)?void 0:A.filter(Boolean))||[];for(let e=0;e<a.length;e++){let A=Aj(a[e],-1,n,o,e);A&&i.push(...A)}return{scripts:i.filter((e,A)=>A===i.length-1||"Done"!==e.title),width:n,height:o,sdkVersion:r.sdkVersion,modelBriefs:r.modelBriefs,deviceType:r.deviceType}},Aj=function(e,A,t,r){let n;if(arguments.length>4&&void 0!==arguments[4]&&arguments[4],!e||!e.tasks.length||0===t||0===r)return null;let o=[];if(-1===A)o=e.tasks;else{let t=e.tasks.findIndex(e=>e===A);if(-1===t)return console.error("task not found, cannot generate animation scripts"),null;if(t===e.tasks.length-1)return null;for(let A=t;A<e.tasks.length&&(!(A>t)||"Planning"!==e.tasks[A].type||"Plan"!==e.tasks[A].subType);A++)o.push(e.tasks[A])}if(0===o.length)return null;let i=Ax({left:0,top:0,width:t,height:r},t,r),a=(e,A)=>{if(!A)return e;let t=AI({},e),r=null;return Object.defineProperty(t,"img",{get:()=>(null===r&&(r=A.base64),r),enumerable:!0}),t},s=[],l=!1,c="";return o.forEach((e,A)=>{var d,u,p,g,m,h,f,y,E,v,b,k,C,S,I,x,R,j,w,P,N,O,T,M,K,D,B,z;let Q=null==(z=o[A])?void 0:z.taskId;if(0===A&&(c=e2(e)),"Planning"===e.type){let A=[];if("Plan"===e.subType){let t=(null==(u=e.output)?void 0:u.actions)||[];if(t.length>0){let e=t[0],r=["locate","start","end"];if(e.param)for(let t in r.forEach(t=>{e.param[t]&&"object"==typeof e.param[t]&&"center"in(e.param[t]||{})&&A.push(e.param[t])}),e.param)!r.includes(t)&&"object"==typeof e.param[t]&&"center"in(e.param[t]||{})&&A.push(e.param[t])}}else"Locate"===e.subType&&(null==(d=e.output)?void 0:d.element)&&(A=[e.output.element]);let o=e0(e),i=e2(e),c=e.uiContext;if(null==c?void 0:c.screenshot){let d=(null==(p=c.shotSize)?void 0:p.width)||t,u=(null==(g=c.shotSize)?void 0:g.height)||r,m=c.screenshot;s.push(a({type:"img",duration:300,title:o,subTitle:i,imageWidth:d,imageHeight:u,taskId:Q},m)),A.forEach(A=>{var p,g,h,f,y,E;y=AI({},Ax(A.rect,d,u)),E=E={pointerLeft:A.center[0],pointerTop:A.center[1]},Object.getOwnPropertyDescriptors?Object.defineProperties(y,Object.getOwnPropertyDescriptors(E)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(E)).forEach(function(e){Object.defineProperty(y,e,Object.getOwnPropertyDescriptor(E,e))}),n=y,s.push(a({type:"insight",context:c,camera:n,highlightElement:A,searchArea:null==(g=e.log)||null==(p=g.taskInfo)?void 0:p.searchArea,duration:400,insightCameraDuration:800,title:o,subTitle:A.description||i,imageWidth:(null==(h=c.shotSize)?void 0:h.width)||t,imageHeight:(null==(f=c.shotSize)?void 0:f.height)||r,taskId:Q},m)),l=!0})}if(e.recorder&&e.recorder.length>0){let A=null==(m=e.recorder[0])?void 0:m.screenshot;s.push(a({type:"img",duration:900,title:e0(e),subTitle:e2(e),imageWidth:(null==(f=e.uiContext)||null==(h=f.shotSize)?void 0:h.width)||t,imageHeight:(null==(E=e.uiContext)||null==(y=E.shotSize)?void 0:y.height)||r,taskId:Q},A))}}else if("Action Space"===e.type){let A=e0(e),n=e2(e);s.push({type:"spinning-pointer",duration:300,title:A,subTitle:n,taskId:Q}),l&&(s.push({type:"clear-insight",duration:200,title:A,subTitle:n,taskId:Q}),l=!1),s.push({type:"pointer",img:AC,duration:0,title:A,subTitle:n,taskId:Q});let o=null==(b=e.recorder)||null==(v=b[0])?void 0:v.screenshot;s.push(a({type:"img",duration:500,camera:"Sleep"===e.subType?i:void 0,title:A,subTitle:n,imageWidth:(null==(C=e.uiContext)||null==(k=C.shotSize)?void 0:k.width)||t,imageHeight:(null==(I=e.uiContext)||null==(S=I.shotSize)?void 0:S.height)||r,taskId:Q},o))}else{let A=e0(e),n=e2(e),o=null==(R=e.recorder)||null==(x=R[e.recorder.length-1])?void 0:x.screenshot;o&&s.push(a({type:"img",duration:900,camera:i,title:A,subTitle:n,imageWidth:(null==(w=e.uiContext)||null==(j=w.shotSize)?void 0:j.width)||t,imageHeight:(null==(N=e.uiContext)||null==(P=N.shotSize)?void 0:P.height)||r,taskId:Q},o))}if("finished"!==e.status){let A=e0(e),n=e.errorMessage||"unknown error",o=n.indexOf("NOT_IMPLEMENTED_AS_DESIGNED")>0?"Further actions cannot be performed in the current environment":n,l=null==(T=e.recorder)||null==(O=T[e.recorder.length-1])?void 0:O.screenshot;s.push(a({type:"img",camera:i,duration:900,title:A,subTitle:o,imageWidth:(null==(K=e.uiContext)||null==(M=K.shotSize)?void 0:M.width)||t,imageHeight:(null==(B=e.uiContext)||null==(D=B.shotSize)?void 0:D.height)||r,taskId:Q},l))}}),s.push({title:"End",subTitle:c,type:"img",duration:200,camera:i,taskId:void 0}),s};function Aw(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function AP(e){return function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){Aw(o,r,n,i,a,"next",e)}function a(e){Aw(o,r,n,i,a,"throw",e)}i(void 0)})}}function AN(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}function AO(e,A){return A=null!=A?A:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(A)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(A)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(A,t))}),e}function AT(e){var A;if(!e)return"";if("string"==typeof e)return e;if(null==e||null==(A=e.dump)?void 0:A.error)return e.dump.error;if(e.message)return String(e.message);try{return JSON.stringify(e)}catch(A){return String(e)}}function AM(e,A){let t=new Set;return(null==e?void 0:e.tasks)&&Array.isArray(e.tasks)?e.tasks.forEach(e=>{if(e.usage){let{model_name:A,model_description:r,intent:n}=e.usage;n&&A&&t.add(r?`${n}/${A}(${r})`:`${n}/${A}`)}}):console.warn("[wrapExecutionDumpForReplay] Invalid dump structure:",e),{sdkVersion:"",groupName:"Playground Execution",modelBriefs:[...t],executions:[e],deviceType:A}}function AK(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}class AD{initDB(){return new Promise((e,A)=>{let t=indexedDB.open(this.dbName,this.version);t.onerror=()=>A(t.error),t.onsuccess=()=>e(t.result),t.onupgradeneeded=e=>{let A=e.target.result;this.storeConfigs.forEach(e=>{let{name:t,keyPath:r}=e;A.objectStoreNames.contains(t)||A.createObjectStore(t,{keyPath:r}).createIndex("timestamp","timestamp",{unique:!1})})}})}async withTransaction(e,A,t){let r=(await this.dbPromise).transaction(e,A);return t(Array.isArray(e)?e.map(e=>r.objectStore(e)):r.objectStore(e))}promisifyRequest(e){return new Promise((A,t)=>{e.onsuccess=()=>A(e.result),e.onerror=()=>t(e.error)})}async put(e,A){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.put(A))})}async get(e,A){return this.withTransaction(e,"readonly",async e=>this.promisifyRequest(e.get(A)))}async getAll(e){let A=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return this.withTransaction(e,"readonly",async e=>{let t=A?await this.promisifyRequest(e.index("timestamp").getAll()):await this.promisifyRequest(e.getAll());return A?t.sort((e,A)=>e.timestamp-A.timestamp):t})}async clear(e){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.clear())})}async delete(e,A){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.delete(A))})}async count(e){return this.withTransaction(e,"readonly",async e=>this.promisifyRequest(e.count()))}getDBPromise(){return this.dbPromise}constructor(e,A,t){AK(this,"dbPromise",void 0),AK(this,"dbName",void 0),AK(this,"version",void 0),AK(this,"storeConfigs",void 0),this.dbName=e,this.version=A,this.storeConfigs=t,this.dbPromise=this.initDB()}}let AB=async(e,A,t,r)=>{try{return await e()}catch(e){return console.error(A,e),e instanceof Error&&"QuotaExceededError"===e.name&&r&&(console.log("Storage quota exceeded, running cleanup..."),await r()),t}},Az=(e,A,t)=>async()=>{try{let r=await e.getAll(A);if(r.length>t){let n=r.sort((e,A)=>e.timestamp-A.timestamp).slice(0,r.length-t);await Promise.all(n.map(t=>e.delete(A,t.id)))}}catch(e){console.error(`Failed to cleanup ${A}:`,e)}};function AQ(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function AL(e){return function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){AQ(o,r,n,i,a,"next",e)}function a(e){AQ(o,r,n,i,a,"throw",e)}i(void 0)})}}function AZ(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}function AX(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){AZ(e,A,t[A])})}return e}function AJ(e,A){return A=null!=A?A:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(A)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(A)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(A,t))}),e}let AU="playground_messages",AF="playground_results";class Aq{saveMessages(e){return AL(function*(){yield AB(()=>AL(function*(){yield this.dbManager.clear(AU);let A=e.slice(-100);yield Promise.all(A.map((e,A)=>{let t=AJ(AX({},e),{result:"result"===e.type?void 0:e.result}),r={id:e.id||`msg-${A}`,data:t,timestamp:e.timestamp?e.timestamp.getTime():Date.now()+A};return this.dbManager.put(AU,r)}))}).call(this),"Failed to save messages to IndexedDB",void 0,this.messagesCleanup)}).call(this)}loadMessages(){return AL(function*(){return(yield AB(()=>AL(function*(){let e=yield this.dbManager.getAll(AU,!0);return 0===e.length?[]:Promise.all(e.map(e=>AL(function*(){let A=e.data,t=AJ(AX({},A),{timestamp:new Date(A.timestamp)});if("result"===A.type&&A.id){let e=yield this.loadResult(A.id);e&&(t.result=e.result,t.replayScriptsInfo=e.replayScriptsInfo,t.replayCounter=e.replayCounter,t.verticalMode=e.verticalMode)}return t}).call(this)))}).call(this),"Failed to load messages from IndexedDB",[],this.messagesCleanup))||[]}).call(this)}clearMessages(){return AL(function*(){yield AB(()=>AL(function*(){yield Promise.all([this.dbManager.clear(AU),this.dbManager.clear(AF)])}).call(this),"Failed to clear messages from IndexedDB")}).call(this)}saveResult(e,A){return AL(function*(){yield AB(()=>AL(function*(){let t=this.compressResultForStorage(A),r={id:e,data:t,timestamp:Date.now(),size:JSON.stringify(t).length};yield this.dbManager.put(AF,r)}).call(this),"Failed to save result to IndexedDB",void 0,this.resultsCleanup)}).call(this)}loadResult(e){return AL(function*(){return(yield AB(()=>AL(function*(){let A=yield this.dbManager.get(AF,e);return(null==A?void 0:A.data)||null}).call(this),"Failed to load result from IndexedDB",null))||null}).call(this)}compressResultForStorage(e){var A,t;if(!(null==(t=e.result)||null==(A=t.dump)?void 0:A.tasks))return e;let r=e.result.dump.tasks.map(e=>{var A;return AJ(AX({},e),{uiContext:e.uiContext?AJ(AX({},e.uiContext),{screenshot:e.uiContext.screenshot}):e.uiContext,recorder:null==(A=e.recorder)?void 0:A.map(e=>AJ(AX({},e),{screenshot:e.screenshot}))})});return AJ(AX({},e),{result:AJ(AX({},e.result),{dump:AJ(AX({},e.result.dump),{tasks:r})})})}compressScreenshotIfNeeded(e){if(!e)return e;if(e.length>1048576){let A=Math.round(e.length/1024);return`[COMPRESSED: ${A}KB screenshot removed for storage]`}return e}getStorageStats(){return AL(function*(){return(yield AB(()=>AL(function*(){let[e,A]=yield Promise.all([this.dbManager.count(AU),this.dbManager.count(AF)]);return{messageCount:e,resultCount:A}}).call(this),"Failed to get storage statistics",{messageCount:0,resultCount:0}))||{messageCount:0,resultCount:0}}).call(this)}cleanup(){return AL(function*(){yield Promise.all([this.messagesCleanup(),this.resultsCleanup()])}).call(this)}constructor(e="playground"){AZ(this,"dbManager",void 0),AZ(this,"namespace",void 0),AZ(this,"messagesCleanup",void 0),AZ(this,"resultsCleanup",void 0),this.namespace=e,this.dbManager=new AD(`midscene_playground_${e}`,1,[{name:AU,keyPath:"id"},{name:AF,keyPath:"id"}]),this.messagesCleanup=Az(this.dbManager,AU,100),this.resultsCleanup=Az(this.dbManager,AF,50)}}function AV(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function AH(e){return function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){AV(o,r,n,i,a,"next",e)}function a(e){AV(o,r,n,i,a,"throw",e)}i(void 0)})}}function AG(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}function AW(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){AG(e,A,t[A])})}return e}function AY(e,A){return A=null!=A?A:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(A)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(A)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(A,t))}),e}class A_{checkStorageSpace(){try{let e="storage-test",A="x".repeat(102400);return localStorage.setItem(e,A),localStorage.removeItem(e),!0}catch(e){return!1}}saveMessages(e){return AH(function*(){try{this.checkStorageSpace()||(console.warn("Low storage space detected, clearing old data..."),yield this.handleQuotaExceeded());let A=e.slice(-this.maxStorageItems).map(e=>AY(AW({},e),{result:"result"===e.type?void 0:e.result})),t=JSON.stringify(A);localStorage.setItem(this.messagesKey,t)}catch(A){if(A instanceof DOMException&&"QuotaExceededError"===A.name){console.warn("LocalStorage quota exceeded, attempting to clear old data and retry..."),yield this.handleQuotaExceeded();try{let A=e.slice(-10).map(e=>AY(AW({},e),{result:"result"===e.type?void 0:e.result})),t=JSON.stringify(A);localStorage.setItem(this.messagesKey,t),console.info("Successfully saved recent messages after clearing storage")}catch(e){console.error("Failed to save even after clearing storage:",e),yield this.clearMessages()}}else console.error("Failed to save messages to localStorage:",A)}}).call(this)}loadMessages(){return AH(function*(){try{let e=localStorage.getItem(this.messagesKey);if(!e)return[];let A=JSON.parse(e);return yield Promise.all(A.map(e=>AH(function*(){if("result"===e.type&&e.id){let A=`${this.resultsKey}-${e.id}`,t=localStorage.getItem(A);if(t)try{let A=JSON.parse(t);return AW({},e,A)}catch(e){console.warn("Failed to parse stored result:",e)}}return e}).call(this)))}catch(e){return console.error("Failed to load messages from localStorage:",e),[]}}).call(this)}clearMessages(){return AH(function*(){try{localStorage.removeItem(this.messagesKey),Object.keys(localStorage).forEach(e=>{e.startsWith(this.resultsKey)&&localStorage.removeItem(e)})}catch(e){console.error("Failed to clear messages from localStorage:",e)}}).call(this)}saveResult(e,A){return AH(function*(){try{let t=`${this.resultsKey}-${e}`;localStorage.setItem(t,JSON.stringify(A))}catch(t){if(t instanceof DOMException&&"QuotaExceededError"===t.name){console.warn("LocalStorage quota exceeded when saving result, clearing old results..."),yield this.handleQuotaExceeded();try{let t=`${this.resultsKey}-${e}`;localStorage.setItem(t,JSON.stringify(A))}catch(e){console.error("Failed to save result even after clearing storage:",e)}}else console.error("Failed to save result to localStorage:",t)}}).call(this)}handleQuotaExceeded(){return AH(function*(){try{let e=Object.keys(localStorage),A=e.filter(e=>e.startsWith(this.resultsKey)),t=A.slice(0,Math.max(1,Math.floor(A.length/2)));t.forEach(e=>{localStorage.removeItem(e)}),console.info(`Cleared ${t.length} old result entries to free up storage space`);let r=e.filter(e=>e.includes("playground")||e.includes("agent")||e.startsWith("midscene"));if(r.length>10){let e=r.slice(0,Math.floor(r.length/3));e.forEach(e=>{e!==this.messagesKey&&localStorage.removeItem(e)}),console.info(`Cleared ${e.length} additional playground-related entries`)}}catch(e){console.error("Failed to handle quota exceeded:",e)}}).call(this)}constructor(e="playground"){AG(this,"messagesKey",void 0),AG(this,"resultsKey",void 0),AG(this,"maxStorageItems",50),this.messagesKey=`${e}-messages`,this.resultsKey=`${e}-results`}}class A${saveMessages(e){return AH(function*(){this.messages=[...e]}).call(this)}loadMessages(){return AH(function*(){return[...this.messages]}).call(this)}clearMessages(){return AH(function*(){this.messages=[],this.results.clear()}).call(this)}saveResult(e,A){return AH(function*(){this.results.set(e,A)}).call(this)}constructor(){AG(this,"messages",[]),AG(this,"results",new Map)}}class A0{saveMessages(e){return AH(function*(){})()}loadMessages(){return AH(function*(){return[]})()}clearMessages(){return AH(function*(){})()}saveResult(e,A){return AH(function*(){})()}}function A1(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"indexeddb",A=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"playground";switch(e){case"indexeddb":if("undefined"!=typeof indexedDB)return new Aq(A);return console.warn("IndexedDB not available, falling back to localStorage"),A1("localStorage",A);case"localStorage":if("undefined"!=typeof localStorage)return new A_(A);return console.warn("localStorage not available, falling back to memory storage"),A1("memory",A);case"memory":return new A$;case"none":return new A0;default:throw Error(`Unknown storage type: ${e}`)}}function A2(){if("undefined"!=typeof indexedDB)try{return indexedDB.open("test",1).onerror=()=>{},"indexeddb"}catch(e){}if("undefined"!=typeof localStorage)try{return localStorage.setItem("test","test"),localStorage.removeItem("test"),"localStorage"}catch(e){}return"memory"}function A3(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function A5(e){return function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){A3(o,r,n,i,a,"next",e)}function a(e){A3(o,r,n,i,a,"throw",e)}i(void 0)})}}function A6(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}function A7(e,A){return A=null!=A?A:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(A)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(A)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(A,t))}),e}let A9=e=>{var A;let t=e.highlightElements||[],n=e.highlightRect;if(!(null==(A=e.uiContext)?void 0:A.shotSize))return(0,r.jsx)("div",{className:"blackboard",children:(0,r.jsx)("div",{className:"blackboard-main-content",style:{padding:"20px"},children:"No UI context available"})});let{shotSize:o,screenshot:i}=e.uiContext,a=o.width,s=o.height,l=(0,et.useMemo)(()=>i?"object"==typeof i&&"base64"in i?i.base64:"string"==typeof i?i:"":"",[i]),c=t.map(e=>e.rect),d=null;return 1===c.length?d=(0,r.jsx)("div",{className:"bottom-tip",children:(0,r.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(c[0])]})}):c.length>1&&(d=(0,r.jsx)("div",{className:"bottom-tip",children:(0,r.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(c)]})})),(0,r.jsxs)("div",{className:"blackboard",children:[(0,r.jsxs)("div",{className:"blackboard-main-content",style:{width:"100%",position:"relative"},children:[l&&(0,r.jsx)("img",{src:l,alt:"screenshot",className:"blackboard-screenshot",draggable:!1}),(0,r.jsxs)("div",{className:"blackboard-overlay",style:{aspectRatio:`${a}/${s}`,"--ui-scale":Math.max(1,Math.sqrt(a/1920))},children:[n&&(0,r.jsx)("div",{className:"blackboard-rect blackboard-rect-search",style:{left:`${n.left/a*100}%`,top:`${n.top/s*100}%`,width:`${n.width/a*100}%`,height:`${n.height/s*100}%`},children:(0,r.jsx)("span",{className:"blackboard-rect-label",children:"Search Area"})}),t.map((e,A)=>(0,r.jsx)("div",{className:"blackboard-rect blackboard-rect-highlight",style:{left:`${e.rect.left/a*100}%`,top:`${e.rect.top/s*100}%`,width:`${e.rect.width/a*100}%`,height:`${e.rect.height/s*100}%`},children:e.content&&(0,r.jsx)("span",{className:"blackboard-rect-label",children:e.content})},e.id||A))]})]}),(0,r.jsx)("div",{className:"bottom-tip",style:{display:e.hideController?"none":"block"},children:d})]})};var A8=t(9783),A4=t(7294),te=t(4985),tA=t(1090),tt=t(2946),tr=t(90),tn=t(3776);let to=e=>{let{text:A,disabled:t=!1,speed:n=5,className:o="",colorTheme:i="blue"}=e,a={"--animation-duration":`${n}s`},s=`theme-${i}`;return(0,r.jsx)("div",{className:`shiny-text ${s} ${t?"disabled":""} ${o}`,style:a,children:A})},ti=(0,r.jsxs)("span",{children:["Don't worry, just one more step to launch the playground server.",(0,r.jsx)("br",{}),"Please run one of the commands under the midscene project directory:",(0,r.jsx)("br",{}),"a. ",(0,r.jsx)("strong",{children:"npx midscene-playground"}),(0,r.jsx)("br",{}),"b. ",(0,r.jsx)("strong",{children:"npx --yes @midscene/web"})]}),ta=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ti;return(0,r.jsx)("div",{className:"server-tip",children:(0,r.jsx)(Am.A,{message:"Playground Server Not Ready",description:e,type:"warning"})})},ts=(0,r.jsx)("div",{className:"result-empty-tip",style:{textAlign:"center"},children:(0,r.jsx)(to,{disabled:!0,text:"The result will be shown here"})});var tl=JSON.parse('{"content":[{"content":"Swag Labs","rect":{"left":895,"top":38,"width":130,"height":32,"zoom":1},"center":[960,54],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"d6c5e2f100","attributes":{"nodeType":"TEXT Node"},"indexId":0},{"content":"Username","rect":{"left":814,"top":154,"width":292,"height":40,"zoom":1},"center":[960,174],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'a9021f480e\']","id":"a9021f480e","attributes":{"class":".input_error.form_input","placeholder":"Username","type":"text","data-test":"username","id":"user-name","name":"user-name","autocorrect":"off","autocapitalize":"none","htmlTagName":"<input>","nodeType":"FORM_ITEM Node"},"indexId":1},{"content":"Password","rect":{"left":814,"top":209,"width":292,"height":40,"zoom":1},"center":[960,229],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'580f3b761d\']","id":"580f3b761d","attributes":{"class":".input_error.form_input","placeholder":"Password","type":"password","data-test":"password","id":"password","name":"password","autocorrect":"off","autocapitalize":"none","htmlTagName":"<input>","nodeType":"FORM_ITEM Node"},"indexId":2},{"content":"","rect":{"left":814,"top":253,"width":292,"height":45,"zoom":1},"center":[960,275],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'3e1faf0fd6\']","id":"3e1faf0fd6","attributes":{"class":".error-message-container","nodeType":"CONTAINER Node"},"indexId":3},{"content":"Login","rect":{"left":814,"top":303,"width":292,"height":49,"zoom":1},"center":[960,327],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'6db0b64062\']","id":"6db0b64062","attributes":{"type":"submit","class":".submit-button.btn_action","data-test":"login-button","id":"login-button","name":"login-button","value":"Login","htmlTagName":"<input>","nodeType":"FORM_ITEM Node"},"indexId":4},{"content":"Accepted usernames are:","rect":{"left":570,"top":435,"width":221,"height":21,"zoom":1},"center":[680,445],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"5ca36a5942","attributes":{"nodeType":"TEXT Node"},"indexId":5},{"content":"standard_user","rect":{"left":570,"top":479,"width":109,"height":19,"zoom":1},"center":[624,488],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"fd2fe54174","attributes":{"nodeType":"TEXT Node"},"indexId":6},{"content":"locked_out_user","rect":{"left":570,"top":503,"width":126,"height":19,"zoom":1},"center":[633,512],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"403daee75b","attributes":{"nodeType":"TEXT Node"},"indexId":7},{"content":"problem_user","rect":{"left":570,"top":527,"width":101,"height":19,"zoom":1},"center":[620,536],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"2b34f1e161","attributes":{"nodeType":"TEXT Node"},"indexId":8},{"content":"performance_glitch_user","rect":{"left":570,"top":551,"width":193,"height":19,"zoom":1},"center":[666,560],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"6ae63a4d9e","attributes":{"nodeType":"TEXT Node"},"indexId":9},{"content":"error_user","rect":{"left":570,"top":575,"width":84,"height":19,"zoom":1},"center":[612,584],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"76030282f1","attributes":{"nodeType":"TEXT Node"},"indexId":10},{"content":"visual_user","rect":{"left":570,"top":599,"width":92,"height":19,"zoom":1},"center":[616,608],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"f34b057726","attributes":{"nodeType":"TEXT Node"},"indexId":11},{"content":"Password for all users:","rect":{"left":960,"top":435,"width":221,"height":21,"zoom":1},"center":[1070,445],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"e693f608cd","attributes":{"nodeType":"TEXT Node"},"indexId":12},{"content":"secret_sauce","rect":{"left":960,"top":477,"width":101,"height":19,"zoom":1},"center":[1010,486],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"cde9de9828","attributes":{"nodeType":"TEXT Node"},"indexId":13}],"size":{"width":1920,"height":1080},"screenshotBase64":"data:image/png;base64,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8xecP25c2/qkSycuun/hzOuuG3nIiEcWLlz56xfbBgYAAIBPMwEagO3AQ4sW9evb9/h3q2tdXd2EsWN/8eCDlbeXfPOKsy+84OBhww4YMmTrb108YUJ9fd3Io46ccMklZ5xy6ueHD6+s9+nd1Kd3U9thu/bdpbFHQ1EUpVJp3uzZzzz/3NAv/uV5Ey+dMHbsgP79t23gqqqqAf37V1VVVd7W19f1/9znKq//dKedpl151Xev/96Bo7647De/mTJpUmW9saHhntvn/tfLr3xp9PGTp0z5m+OOG3/m2MpHN98255Irrjjh6GMuu+jCmbfOOXz06AcffnjbBgMAAIBPki04ANgObNq0afYP5559+uk/vvvuoihOPOaYt9ata9vxefkrLxdFsf7tt2u6dNn6W2vWvrnnwD0+22/Xp5Y8PeywUa2trR9+leqqqjETxv/n88/X1NQseeaZR375y6OOOOKaG25o359lwzvvbNmyZff+/ZcuW3b131+3Q8+epVKptbX1C8MPbm1tnXvXneVyefkrL9/xk5+cfPzxN82eVRTFaytWvPXWuqIofnD77Xf/9KftOw8AAADkCNAAbB9u/dGPLvzyOQcNPeDRxY+PGzPmlttu27Jly4d/ZcYPbimXSzdMndqvb99Fjz9+2ZWTX1q+/EOO39zcvN/gwdOnTOnevfuGDe/s1NT06muvtffPUbyxZs3Y888//eSTr7rs8tdXrZo1d26lMg8a+Bc79Oz5DzfNbDtyS3Pze767+Mkn230eAAAAyBGgAdg+rFq9+q5/vHfcmDFda2t3auoz9647P/IrfZqarp0x4+rrruvT1HTjtGu+dtFXzrrwgqIoVq5evc+gQZVjamtrBw0ceO+CBZXjr7zssr867rjnli6tbC29zdO+tW7dpk2b+u6888pVqyp7QBel3z29cIfGxueWvnD6+HO6VFePOvTQ22fe/PN/+edfL1u29MVlL7z44hEnjK4cVl9XX1fX9b3n/Yh7uAEAAODTxR7QAGw3Zt465/BRo75+8cVz75y3bv36tvVyuVwul4uiKJXL5XK59G7qnTxx4pRJk+rr6tesXbvmzbUtLS2V9V88+OCIgw46eNiwno2NE8+/4E+6daus79q3b9farpUzHHX4EYcceFDbJUqlUrlcLhWl37149xK/z8aNGx9+7LFxY8bs0Nh44P77/+2J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QoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoCE6ZwSAAAInUlEQVQGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIOJ/AFTldxexlFiCAAAAAElFTkSuQmCC","screenshotBase64WithElementMarker":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB4AAAAQ4CAYAAADo08FDAACysElEQVR4AezBCZzXBYEH7O//NwMzwzGDIAgqiikqICCDZ6HYarkqaoZaump2rJ2WuW7tbhd2l67dWWppaZFpiZp5dUCCt4jIUSYqJmio3OfAzP/9/NvPvC/Lq7tqwuKP53kqizesrgYAAAAAAACA17wiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAIBt2tq168L/jbVr1+WOqdNy7733BwAAAF4N9QEAAGCb88tfTsott92e2bPnZtGiRdlpxx0zcuTwjB9/Qg49ZEy2VRf+59czbdqd+ehHP5xDDxmTze3555/Lu9793vTvv0PumPLbAAAAwN+rPgAAAGwz2ts78oUvfjlXXvXT1DQ2NmTYsKF59NF5+fXNt+bW227PZz71yZxyysnZFv3lL3/JrNlzsmzpsgAAAMBrUX0AAADYZvx+8uRcedVP09LSkgu+8sW8/vUHpaGhIW1tbfnRj6/KVy+4KJ+e8NkM22doRgzfJwAAAMBrSxEAAAC2GVOm3JGaD7z/rLzxjWPT0NCQmq5du+af3/OuHHvsMamZese0AAAAAK89RQAAANhmLFiwMDUNDQ15If906ttzxhn/lD7b98nmsnr16jwxf37Wr1+fl6O9vSPz5z+ZtWvXZWtXrVbz1FMLsnjxkrwSCxYuTHt7R16OFStWZt68x7Js+fIAAACw7aoPAAAA24w99xycO6ZOy4033pQTx5+QhoaGbGx066iMbh2VTitWrMyRRx2b7Xr1yk2/ui6dvnvxJbnqqp+muaU5t/z6hnS65NIf5IorrsxZZ707Z77j9HSqVqv5wQ9/lKuvvibzn3wy1Wo1dXVFhg4ZkgkTPpURw/fJi3l41ux87WvfzPQHZ2TVqlUpiiK9e2+XSirpdOCB++drF12Q/2tPPvmXTDj/83lwxkNZuXJlalqam3PKKW/L2R96f7p27ZoXs2bN2nzhi1/O734/Jc8++2x69uyRAw84IKeffmpef/BBeTHXTboh3/nu9zJ//pPptNNOO+UD7z8rJ580PgAAAGxbigAAALDNOP30U9PY2JAHpj+Yt59yeh6Y/mD+Jz179kj3bt3yyJ//nGefey6dpt15Z5597rnMm/dYHn/iiXR6YPqDefa55zJ4jz2ysfd/4MP5ylcvzFMLFqR11L45+qgj07VrQx6eNTsnv+3UzJz5cF7Iw7Nm58x3vid3TJ2WHj2659hjj0nv3tvlueeez7PPPZfmluYcdPCBGT58n/xfu/uee3P8CSfljqnT0q1bt4wbd3T23nuvLFu+PN/7/qU5+yPn5sW0tbXl3f/8vlz982tTFJWMHDkiHR3V/Oa3v8v73v+hzJz5cF7IT376s3zs4/+Rp556KvsMG5q3nnB8dt/9dVmwYEE+8cnP5MdX/iQAAABsW+oDAADANmOnHXfMt775tfzLeR/PrNlz8vZTTs+egwfnlFNOzvi3viVNTU3Z1KhRI/PE/PmZM2duxh56SNrb2/Pww7NSV1ekvb0j0x94MLsNGpSaOXPmpiiKjBw5PJ3uvff+/PZ3v09TU2NuunFSBg7cOTVr1qzJ5z7/pVxz7S/z1QsuylVXXp5Nff7zX8ry5Sty7kc/kvee9e4URZH29o5ceNHXctlll2fwHnvkogu/kq3Bt799cVauXJm3v/3kfO78T6fTH//4p5x48qn53e8m5957788BB+yXTS1evCTr1s3Nt755Uf7xyDenZv369fnyVy7Mj6/8Sc563wdz042T0qdP72zssh9cnprPf+78nDj+hHS69hfX5d//41P59ne+l9NPOzWVSiUAAABsG4oAAACwTTls7KH51Q3X5T3veWd69eqVR/7855z/2S/kkEMPzwUXfi2rV6/Oxkbtu29q5sz5Y2pmz5mbNWvW5qh/PDI10x+ckZolS5bkmWf+mj123z09evRIpwULF+bYY4/J+RM+nYEDd06npqamvP3tJ6fmgekPpr29PRtbvXp1Hpr5cJqamnL6aaekKIrU1NUVeec7Tk9dXZG77r4nHR0d+b+2evXq7LDDDnnL8cfmY+edm43tvfdeOfigA1Nz73335cV88APvzT8e+eZ06tKlSz71yX/PiBHD8/zzi3PPvfdlU4sXL0nNbrsNysbGv/Ut+fSn/iNn/fO7s2rVqgAAALDtqA8AAADbnAED+ufj//ov+ehHzs5tt/82P//5tbn7nntzyaU/yAMPTM9ll16cHj16pGbUqJGpmTNnbmoefHBGao4//tjcd/8DeWD6g6mZM+ePqRk1amQ2dsJbjssJbzkundauXZc1a1anZueddkpLS0uWLVuWhQufzsCBO6fTkiVL0t7enpaW5nTr1i0ba2lpSbdu3bJy5cqsW9eWpqbG/F/q1q1b/vPCL6dTtVrN8uXL09HRkZr99mvN5Cl/yPz5T+bFnHzyiXkhJ5341syc+XBmzZqdo486Mhs7+KAD89vf/T4f/7dP5JyPnJ1Ro0ZmxwEDUqlUcvpppwYAAIBtT30AAADYZnXt2jXjjjkq4445Knffc28+/JF/yQPTH8xnP/fFfPUrX0zN4MGD061bt8yZOzc1DzzwYCqVSkaN2jf7jW7Nr2++NcuWLcucuXNT0zpq32xq1uw5ueSSH+See+/N4sVL8kLWrl2bje24445pbu6ZZ575a+6YOi1jDz0knW697fasWLEyo0aNTFNTY7YGa9euy8+u/nmu/vm1efLJv6StrS2bWrt2XV5Ic3PPtDQ354UM3Hnn1MyePSeb+sqXP59/Oe/fMnXanfnouf+amubmnhk+fJ8c/g9vzKmnvD11dUUAAADYdtQHAACAbUJ7e0dWrVqVoqikR48e2dRBBx6Qiy78St757rMy7c6706mursiI4fvknnvvy8qVK/PA9AczeI890tLcnNGjW3PTr2/Jgw8+lDlz5qZm1Kh9s7H77rs/73jnP2f9+vU5+KADs9dee6ZHjx7p9MPLf5TVq1dnU5VKJR8++4P5/Be+nPP+9d8z7pijcvBBB+aOqdNy069vTqVSyRmn/VO2Bu3tHTn7Ix/N5Ml/SJ8+vXPcscekX7++KYq61MyeMye///2UvJiiqMuLKeqK1HR0dGRTLS0tuezSi7N06dLc/pvf5Te//V3uv/+BTJt2V6ZNuyvXXXd9fjbxynTt2jUAAABsG+oDAADANmHFiuU54KBDUldXl5kz7kuXLl2yqQMO2C/19fVZtGhRnn3uufTdfvvUjBo1Mnffc29u/83vsmjRohx++GGpGd06KjUPTH8ws+fMTUtLSwYN2jUbu/A/v57169fnHWeclk9+4t+yseXLV+Q73/1eXkxzc3Nqli5dmqt+MjFX/WRiarp06ZLPf25Cxo07OluDu+++J5Mn/yFdu3bNjTf8Mn233z4b++KXvpr/ydKlS7Nq1ap07949m1qwYGFqhg0bmhfTq1evnHTiW3PSiW9NtVrNgzMeyulnvCsPz5qdu+6+J2MPPSQAAABsG+oDAADANqFXr14ZMmTvzJkzN1P+cEeOOPwfsqklS5Zmw4YN6devX/puv306jdp339Rc9ZOJqdlvdGtq9tprr3Tv3j1Tp07L/PlP5tBDxqRSqWRjf/zTI6k57thjsqk//OGOVKvVvJB58x7Lpz59fvbac3Au/u63Mm/eY3li/vwMGbJ3Ro4YkcbGhmwt/vTII6k5+KAD03f77bOxDRs2ZNq0u/K/ueGGm3LKKSdnUzfc8KvUDBs6JBu7//4H8t2LL0m/HfrlS1/4bCqVSmoqlUpaR+2b4449Jtf+4rpMn/5gxh56SAAAANg21AcAAIBtxmFjD8mcOXPz2c99MTvvvHP23mvPdFq1alU++akJqRl76JhsbN99R6Rm5syHUzN6dGtq6uqKjBo1MlOn3pmaUaP2zab22P11mfnwrPzmt7/LiBHD0+nRR+flU5/5bF7MVT+ZmHXr1uVtbzspAwfunIEDd87W6nWv2y019953f5YvX5Hm5p7p9JkJn8sjf/5z/jdf+8a3sscer8v++++Xmmq1mu99/7Lcdfc96dGjR/bff79sbNCgQZk67c5Uq9WMHD48p5xycjqtW7cu0+68KzX7jhwZAAAAth31AQAAYJtx9oc+kL88tSA33nhT3jr+bTnowAMyaNCuWbx4ce66+54sXrwkw/cZlo9+9MPZ2HbbbZddd90l8+c/mf79d8hOO+6YTvuNbs3UqXemZtSokdnUCSccn5kPz8r3vn9Zpk27K62tozJ7ztxMn/5g9t9vdGruvufebGqvPQen5nOf/1K+9e2L06mpqTE77NAv+++3X0495eTstNNOebVd8J9fy/cvuSwvpl+/fvnhD76fTgfsv1923nmnPPXUghz+pqNyyCFvSEPXrrlj6rQ899zz+dAH359vf+fivJj9998v69evz2lnvCvDhg5J//79M/ePf8xTTy1IfX19vvPtr6d//x2yse2375NzPvyhfO0b38qnJ3w2l1z2g4wZ84YsXbI00+68MytWrMzee++V17/+oAAAALDtqA8AAADbjPr6+vznBV/Orrvskttu+02m3XlX7pg6LTU77NAvJ580Pp/8xL+nqakxmxq178jMn/9kRreOysZGj25NTV1dkZEjhmdTp/3TKVm3bl2+9/3LMvPhWZn58Kz06NEjb37TEfnSFz+bL37pq7n7nnuzqeOPPy5fvfCirF69JnvvtWcqlUqq1WqWr1iRRx+dlwcffCg/nXh1fnLl5Rk6dEheTU8//UyefvqZvJiVq1ZnY926dcvEn/w4Hz7n3Myc+XBuvPGm1AwevEc+8R8fT+uoUfn2dy7Oixm8x+4596Mfzoc/8i+597778/Cs2amrKzJy5Ii8591n5vUHH5QX8oEPvDfb990+3734kjz11IL87Gc/T0337t0zfvwJ+cynPpGGhoYAAACw7ags3rC6GgAAALZJq1atyh//9EgG7rxT+vXrl83tySf/kuUrVmTI3nunrq7I/+RTn/lsfvazn+ezEz6dU045ORtbt25dzj3v47nttt/kiMP/IRd/95vZWqxZsyZ//OMj2WWXgenTp3derjVr1uZPf/pTXve616W5uWdeio6Ojvz1r4uyYMGC9OnTJ7vuukuKoggAAADbnvoAAACwzerevXtGt47KlrLLLgPzUt1yy22pOfbYo7OphoaGfOB9Z+W2236TeY89lq1JU1NTRo0amVeqqakx++47Mi9HURQZMKB/BgzoHwAAALZtRQAAAGArtF2vXqmZPWduXsjDD89KzfB99gkAAADwX+oDAAAAW6Gjj/7HfOe738v73n92xh1zVIYP3yev221Q5sz9Y+6774Hc/pvfpq6uLm95y7EBAAAA/kt9AAAAYCv0kQ9/MGvWrMlPJ/4sP7v6mvzs6muysZ49e+Rb3/ha3vCGgwMAAAD8l/oAAADAVqhSqeTf/+1f84EPvDd3/GFqnn7mmSxduiyDBu2avffeK4P32CONjQ0BAAAA/j/1AQAAgK1YS3Nzxo07OgAAAMD/rggAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEJ9AAC2pPaOpK092dCRakdHAAAAyqhSFEl9kXStS+qKAABsKfUBANhS1qxPZUNHGhsb06WpS+rq6gIAAFBG7e3tWb9+fdauXptqfZE0dQkAwJZQHwCALWFVW7rU1adHr+YAAACUXV1dXerq6tLY2JiVq1Zl/aq2pHvXAABsbkUAADa3NevTpa4+Pbp3DwAAwLamR/fu6VJXn6xZHwCAza0IAMDm1N6RyoaO9OjePQAAANuqHt27p7KhI2nvCADA5lQEAGBzamtPY2NjAAAAtnWNjY1JW3sAADanIgAAm9OGjnTp0iUAAADbui5duiQbOgIAsDkVAQDYjKodHamrqwsAAMC2rq6uLtWOjgAAbE5FAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohfoAAABsTSqVALymVKsBAADYWtQHAABga1OtBuA1oVIJAADA1qQIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCfQAAADaXSiUAAAAAbDlFAAAAAAAAACiFIgAAAFtaS0uqjz2WjB2bl2L9+vX55je/meXLl2dT3/ve9/L0008HAAAAgKQIAADAltTSkup116Wy2255qarVap566qm0t7dnUwsXLsy6desCAAAAQFIfAACALWXs2GTSpFQCAAAAwOZQHwAAgC1l8uTk619PJk1KJk/Oq23x4sW59tprs2DBguywww45+OCDM2rUqHS66667cv/99+f555/PLrvskje96U0ZOHBgaiZOnJgRI0Zk7ty5mT17ds4777zccMMNGTFiRB566KE88sgj6dmzZ4444oiMHDkyne6+++5MnTo1K1asyIABA3LMMcdk4MCB6ejoyEUXXZSjjjoqt912W55//vnsvvvuOfnkk3PHHXdk+vTpqVQq2X///XPEEUek07x58/L73/8+Tz31VPr27ZuDDjooo0ePDgAAAMBLUR8AAIAtZdCgZP78ZOzYbA7XX399+vXrl3e+851ZsGBBLr/88uy+++5pbm7OnXfemXvuuSennnpqWlpaMmPGjFx22WX5yEc+kt69e2fx4sWZNGlSxowZk3e9611pamrK4sWLc91112X8+PF561vfmvvvvz8TJ07MwIED07t378yePTu//vWv8573vCc77rhj7r777lx22WX59Kc/nZpFixbl9ttvzzve8Y5s2LAhEydOzIUXXpghQ4bknHPOycKFC/PjH/84AwYMyLBhw/KXv/wlEydOzIknnpg99tgj8+bNyzXXXJOuXbtm+PDhAQAAAPjfFAEAANhS5s/P5lStVvPss89m8eLFGTRoUD75yU+mR48eqbnrrrtyxBFHpLm5OdVqNSNHjswOO+yQWbNmpdOQIUMyduzYDBw4MEVRpGafffbJkCFD0tjYmDe84Q3p0aNHnnzyydQMGDAgZ599dnbcccesWLEiQ4YMSVtbWxYuXJhORxxxRHr37p1+/fpl9OjRWb16dY477rh069Yte+yxRwYPHpzHH388NdOnT88+++yTXXfdNevXr88uu+yS1tbWPPDAAwEAAAB4KeoDAACwlSuKIkVRZMOGDdlYtVrNhg0b0qVLl9ScfPLJue222/KDH/wgGzZsSGtra4488sjU/PWvf80vf/nLtLS0ZGNtbW3p1L9//2xqhx12SKdKpZK+fftm5cqVqalUKvnFL36RZcuWpaWlJZVKJTVr1qxJp759+6bT9ttvn549e6axsTGdtt9++yxbtiw1Tz/9dB577LE88cQT2VivXr0CAAAA8FLUBwAAYCtXX1+fAQMGZOHChenbt286Pffcc6lUKunfv386OjqyZs2avOUtb0lRFHnuuedy2WWXpW/fvjnwwAPTt2/fHH/88dlzzz3Tqb29PZVKJZ2KosimKpVKXsztt9+eXr165X3ve19q1q5dmwkTJmRjRVFkY5VKJS+mX79+2XXXXXPUUUelU0dHRwAAAABeqiIAAACvASNGjMgtt9ySRYsWpWbVqlWZNGlShg4dmrq6ulQqlVx66aWZOnVqarbbbrt069Yt7e3tqRk1alRuueWWrFq1KjWPP/54JkyYkOeffz6v1Pr167N+/fpUq9V0dHTkxhtvTKVSySs1YsSI3HfffXnqqadSs3z58lxwwQWZPn16AAAAAF6K+gAAALwGvPGNb8yGDRvy3e9+Nx0dHeno6Mjw4cNz4oknpqZSqeS0007LxIkTM3ny5HR0dGTXXXdNa2trag4//PCsXbs2F1xwQerr69PR0ZG3ve1t6du3b16pN7/5zbn88svzuc99Lh0dHdl///3Tv3//vFJ77LFHxo0blx//+MepVqtZvXp1Dj300IwePToAAAAAL0V9AAAAXiPe9KY35U1velOWLVuWnj17piiKbGyXXXbJxz/+8axcuTL19fVpbGxMp0qlknHjxuXoo4/OihUr0tLSko198IMfzKY++MEPZlPvfe97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3LuXoyeO4xZcsSKB5ctzN0d+/pl8m437VbFCBZ576mkSkhLZtW8fQYGB+JYqxelz50jPyKBW9er4+fpyN7du3ebnX07g5elFo/r1+D0XL18m6eZN7kdxb2/atmlDGb/S7D6wn8tXr9KkUSNu3brNz7+cwM3L04snW7agauXKnDl3ngOHD5GXn8+dqlSqROcXXsBms3PyzBl27d+H0+nExTAMmjdpwt3cSEgg5upVCioXEMATjzfH38+Pn45GceLUKZxOJ3fzWMNGWCxmjhw7hsPhQET+2MUjUZisnoiIiIg8LKYUW44TERERkYfEmZ5LjaZNkP+vj5a8T6cOHVj+yUpCQkMRERH5b1azWjVK+/nR65VX6PbSy1y4dImW7doiIiL/08UjUZisnoiIiIg8LBZERERERERERP4N40aMpFOHDrjt3r8fERERERER+c+wICIiIiJ/uQvRFzlwuDRXrsYiIiLy3+7ipWgOHjmMS0xsLPOXLEZERERERET+MyyIiIiIyF9uwdKlLFi6FBERkcLg3Q8+4N0PPkBERERERET+8wxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERET+cmX8/WncoAEPk4eHB61btMBsNiMiIv+ddm/Z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QdGiRek/YgRff/sNNrudkLlzCZ0ylZBx40lNS2PuwoWMGjyEe3X5yhWGjBnD/BkzCBk3nhsJCcyYN4/+vXvj9s6iRaz+cAWXjh3n1u3bTJkzm0cbNsDthbZt+fSfy3Dr3qkTZ86d48mOL+DidDrp3r8fq5Yv59juPeTk5jJ+2jQWzpnDvcq32ZgZNp9Rg4cwa/LbnDh9irkL36NhvXq4ha9ZTYO6dTnw7XYsFgs5OTkMnzAep9OJS2JSEj0G9Gdp2LvMeXsKWdnZfLltK59Gfo5LKR8foo/+jFvixWhcqjZuRHpGBiIifxW73U58YgJ/JDklhT+Sk5vDvys5JYU/I3x1BGs3buBOdoeDO+Xk5pCTm8PvuZmczB9xOBwkp6byR+x2O8kpKfyR5JQURERERERE5OEzpdhynIiIiIg8JM70XGo0bcJ/mtlsxt+vNPGJCfwZFrOZ0n6liU9M4N9RtkwA8YkJ/J5yAQEkJCXhcDj4s/xLlyY1NRWb3U5Bn//rI557+mnutGrtWsZMnYKbYRiUslpJTk3l95jNZvz9ShOfmMDv8fP1JS09HbvdjoiIiIiI/P9dPBKFyeqJiIiIyMNiQURERORvwG63E5+YwJ9ls9uJT0zg3xWfmMAfuZGQwL8r6eZN7mbQW6MpWqQId7p1O4+CHA4Hyamp/BG73U58YgJ/JDklBREREREREREREflrWRARERGRv4Ws7GxERERERERERESkcDMQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxEREZFCrE7t2rRu0YJ6jzzCw1Lc25tWzZvzoDVt3Bi/UqUQERERERERERERuVcGIiIiIoVYx7btGDloMJs/j2Rgnz48DFUqVWL9J5/yoC1fuJAmjR9FRERERERERERE5F5ZEBERESnE5i1ehMu7M2dRs1p15H/XuWNHalWvztyFCxEREREREREREZH/LhZERERE/gacODFhQv53zR9rwu28PEREREREREREROS/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2Wxw9PgJwldH4Fbaz4+lYe/SunlzihYtSv8RI/j622+4V6+/9hqjBg+hfNmynDh9im3ffUfDevXo9+abuFSrUoV506bzWKNGWMxmzkdH03/ECGKvxeHW+5XuTBw9ilJWH+KuX2f5Jyv5LDISlxfatuXTfy6joDPnzvFkxxcQEREREfm/7uKRKExWT0REREQeFlOKLceJiIiIyEPiTM+lRtMm/DfwL12a1NRUbHY7d+Pl6YVhmMjKzubP8vP1JS09Hbvdzt2ULFECu91Odk4OBQ3rP4BZkydzp8tXrtDs2WcoqGSJEthsdnJyc7gbT09PDJOJ7Jwc7lfsyVN4e3lxp0FvjWbTli24GYZBKauV5NRUfo+XpxfFPIqSkpbG7ynj709iUhIiIiIiIoXFxSNRmKyeiIiIiDwsFkRERETk/yfp5k3+SE5uDv+u5JQU/khGZiZ3E746grUbN3Anu8PBnTIyM/kjubm5/FkNW7fCxP+UlZ1NQQ6Hg+TUVP5ITm4OObk5/JHEpCRERERERERERETk3lkQERERkf/zbt++ze3bt/lPS01LQ0RERERERERERP7vMhARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgULIiIiIvJvqV2jBrm3bnH111+5m+Le3jRu0ACn08mps2dJS09HRERERERERERE5GGwICIiIiL/ljHD3+RK7FXmLlzI3fiXLs3IQYMp7edL2TIB1GnRHLvdjoiIiIiIiIiIiMiDZiAiIiIiD9WV2Fi6vt6Xrq+/Tmk/P3xLlUJERERERERERETkYTAQERERkb+E0+lERERERERERERE5GGyICIiIlKIbY1cy+TZs5g2YQKN6tXnl9OnmTJnNuejo3EJLF+edSs/4fbt28yYP4+eXbvR/tlnuBGfQLNnn8GluLc3oVND+McTT5Cfn893u3YxY9475OXn41aieAn+tWgxT7VqxZXYWN7/1wq27tjB/RjUty/dO3WmYmAgh48eZWbYfC7F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RERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMREREROSBKVq0KI8/9hitW7TAw8MDuX+B5cvTukULHn/sMYoWKcIfqVmtGkUsFh60IhYLrVu0oIjFgoiIiIiIiIiIyH8TAxERERF5IOo98ggXo47y7qzZTBk7FmvJksj9a1S/PiMHDWb5ewv51+Il/J4WTZtxYPsO3hw4iAfNarWyaVUEVqsVERERERERERGR/yYWREREROSB6NiuHTt27mTwmLeQP2/L9u1s2b6dl5/vwMRRo/g9p86e4cNPPmHLju38nt1bttDx1VfJzMpCRERERERERETk78CCiIiIiDwQ5cuWIyEpEXkwnE4nfyQzK4upoXP4PWX8/alTqzYmkwkREREREREREZG/CwsiIiIihdjWyLVMnj2LaRMm0KhefX45fZopc2ZzPjoat6DAQGZMmkTLps2IT0xk45bNvL9iBW5frV5DaT8/ItatxWIpwvD+/Snj70+dFs1JSEzkmX/8g5mTJlMuIACb3U6bJ/+BS5c+fYhPTMClVvXqhIwfT9PGj/LrtWt8vmED4asjcJs+YSLPPf00J8+cZv2XXxEaMpUaVasx6K3RbNqyhT1bt7Fh89e8OXAQu/ft45fTpxk5eDA79+5l+PhxuFhLliR0aghtWrfGYrGwa98+xk0LISMzE5dBfftiMpkoWyaALi++yG/xNwiPWM0XX3+Fm5+vL/OmTeeJxx8n7vp1tn3/He+vWIHT6cRtUN++dO/UmYqBgRw+epSZYfO5FBPDvSru7c17s+fwj1atyMvLIyMzE5fl4eGs/mI992L9J59QoVx5Ll+5wqC3RnPr1i0K2rQqggZ162Iymfhu4ybsDgdXYq/Sa/Bg3Px8fZk3bTpPPP44cdevs+3773h/xQqcTiduzR59lBGDBlE5KJivvtnG0o8+Iu76de5Fm9at6d+rN68NGojbgN59CA6qSEhoKC4mk4mpY8fRtk0bShQvzo979zBj/nzSMzJwCwoMZMakSbRs2oz4xEQ2btnM+ytW4PbV6jWU9vMjYt1aLJYiDO/fnzL+/tRp0ZyExEREREREREREROTvxTxx2pQZiIiIiDwst218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AFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAP5ve3BAAgAAgAAo+j+6H6ECFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwYYkQHKd0AqxtAAAAAElFTkSuQmCC","url":"https://www.saucedemo.com/"}');let tc=e=>{let{uiContextPreview:A,setUiContextPreview:t,showContextPreview:n}=e;return n?(0,r.jsxs)("div",{className:"form-part context-panel",children:[(0,r.jsx)("h3",{children:"UI Context"}),A?(0,r.jsx)(A9,{uiContext:A,hideController:!0}):(0,r.jsxs)("div",{children:[(e=>{switch(e){case"finished":case"passed":case"success":case"connected":return(0,r.jsx)("span",{style:{color:"#00AD4B"},children:(0,r.jsx)(A8.A,{})});case"finishedWithWarning":return(0,r.jsx)("span",{style:{color:"#f7bb05"},children:(0,r.jsx)(A4.A,{})});case"failed":case"closed":case"timedOut":case"interrupted":return(0,r.jsx)("span",{style:{color:"#FF0A0A"},children:(0,r.jsx)(te.A,{})});case"pending":return(0,r.jsx)(tA.A,{});case"cancelled":case"skipped":return(0,r.jsx)(tt.A,{});case"running":return(0,r.jsx)(tr.A,{});default:return(0,r.jsx)(tn.A,{})}})("failed")," No UI context",(0,r.jsx)(eA.Ay,{type:"link",onClick:e=>{e.preventDefault(),t(tl)},children:"Load Demo"}),(0,r.jsx)("div",{children:"To load the UI context, you can either use the demo data above, or click the 'Send to Playground' in the report page."})]})]}):null};var td=t(4291);let tu=e=>{let{className:A=""}=e,{config:t}=N();return Object.keys(t||{}).length>=1?null:(0,r.jsxs)("div",{className:`env-config-reminder ${A}`,children:[(0,r.jsx)(td.A,{className:"reminder-icon"}),(0,r.jsx)("span",{className:"reminder-text",children:"Please set up your environment variables before using."}),(0,r.jsx)(Al,{mode:"text",showTooltipWhenEmpty:!1})]})};var tp=t(6130),tg=t(2297),tm=t(7062),th=t(5862),tf=t(7615),ty=t(2107),tE=t(4544),tv=t(3616),tb=t(5625),tk=t(1269);let tC=e=>{var A,t;return(0,r.jsx)("svg",(A=function(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),t=t={children:(0,r.jsx)("path",{fill:"currentColor",d:"M1.333 13v-2.5a.667.667 0 0 1 1.334 0V13c0 .184.149.333.333.333h2.5a.667.667 0 0 1 0 1.334H3c-.92 0-1.667-.746-1.667-1.667m12 0v-2.5a.667.667 0 0 1 1.334 0V13c0 .92-.746 1.667-1.667 1.667h-2.5a.667.667 0 0 1 0-1.334H13a.333.333 0 0 0 .333-.333m-12-7.5V3c0-.92.747-1.667 1.667-1.667h2.5a.667.667 0 0 1 0 1.334H3A.333.333 0 0 0 2.667 3v2.5a.667.667 0 0 1-1.334 0m12 0V3A.333.333 0 0 0 13 2.667h-2.5a.667.667 0 0 1 0-1.334H13c.92 0 1.667.747 1.667 1.667v2.5a.667.667 0 0 1-1.334 0M5.667 10.333h4.666V5.667H5.667zm6 .167c0 .644-.523 1.167-1.167 1.167h-5A1.167 1.167 0 0 1 4.333 10.5v-5c0-.644.523-1.167 1.167-1.167h5c.644 0 1.167.523 1.167 1.167z"})},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A))},tS=e=>{var A,t;return(0,r.jsxs)("svg",(A=function(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),t=t={children:[(0,r.jsx)("path",{stroke:"currentColor",strokeLinejoin:"round",strokeWidth:1.333,d:"M11.333 13.667 14.667 8l-3.334-5.667H4.667L1.333 8l3.334 5.667z"}),(0,r.jsx)("path",{stroke:"currentColor",strokeLinejoin:"round",strokeWidth:1.333,d:"M8 9.667a1.667 1.667 0 1 0 0-3.334 1.667 1.667 0 0 0 0 3.334Z"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A))};function tI(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}function tx(e,A){return{left:0,top:0,width:e,pointerLeft:Math.round(e/2),pointerTop:Math.round(A/2)}}function tR(e,A,t,r){if(!A.img)return;e.img&&A.img!==e.img&&(e.prevImg=e.img,e.imageChanged=!0);let n=A.imageWidth||t,o=A.imageHeight||r,i=e.imgW!==n||e.imgH!==o;if(e.img=A.img,e.imgW=n,e.imgH=o,i){let A=tx(n,o);e.camera=tI({},A),e.prevCamera=tI({},A),e.pointerMoved=!1}}function tj(e,A){return Math.abs(e.pointerLeft-A.pointerLeft)>1||Math.abs(e.pointerTop-A.pointerTop)>1}function tw(e,A,t,r,n){let o=tx(t,r),i={img:"",imgW:t,imgH:r,camera:tI({},o),prevCamera:tI({},o),prevImg:null,insights:[],spinning:!1,spinningElapsedMs:0,pointerImg:AC,title:"",subTitle:"",taskId:void 0,frameInScript:0,scriptIndex:0,imageChanged:!1,pointerMoved:!1,rawProgress:0};for(let o=0;o<e.length;o++){var a,s;let l=e[o],c=l.startFrame+l.durationInFrames;if(0===l.durationInFrames){l.startFrame<=A&&("pointer"===l.type&&l.pointerImg&&(i.pointerImg=l.pointerImg),i.title=l.title||i.title,i.subTitle=l.subTitle||i.subTitle,i.taskId=null!=(a=l.taskId)?a:i.taskId,i.scriptIndex=o);continue}if(A<l.startFrame)break;switch(i.title=l.title||i.title,i.subTitle=l.subTitle||i.subTitle,i.taskId=null!=(s=l.taskId)?s:i.taskId,i.scriptIndex=o,i.frameInScript=A-l.startFrame,i.rawProgress=Math.min(i.frameInScript/l.durationInFrames,1),l.type){case"img":!function(e,A,t,r,n){tR(e,A,r,n);let o=A.startFrame+A.durationInFrames;A.cameraTarget?(e.prevCamera=tI({},e.camera),e.camera=tI({},A.cameraTarget),e.pointerMoved=tj(e.prevCamera,e.camera)):t>=o&&(e.pointerMoved=!1,e.imageChanged=!1),e.spinning=!1}(i,l,A,t,r);break;case"insight":!function(e,A,t,r,n){if(tR(e,A,r,n),e.insights.some(e=>e.highlightElement===A.highlightElement&&e.searchArea===A.searchArea)||e.insights.push({highlightElement:A.highlightElement,searchArea:A.searchArea,alpha:1}),A.cameraTarget&&void 0!==A.insightPhaseFrames){let r=A.startFrame+A.insightPhaseFrames;t>=r&&(e.prevCamera=tI({},e.camera),e.camera=tI({},A.cameraTarget),e.rawProgress=Math.min((t-r)/(A.cameraPhaseFrames||1),1),e.pointerMoved=tj(e.prevCamera,e.camera))}e.spinning=!1}(i,l,A,t,r);break;case"clear-insight":!function(e,A,t){let r=A.startFrame+A.durationInFrames,n=1-e.rawProgress;e.insights=e.insights.map(e=>{var A,t;return A=tI({},e),t=t={alpha:n},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A}),t>=r&&(e.insights=[]),e.spinning=!1}(i,l,A);break;case"spinning-pointer":i.spinning=!0,i.spinningElapsedMs=i.frameInScript/n*1e3;break;case"sleep":i.spinning=!1}A>=c&&("clear-insight"!==l.type&&(i.imageChanged=!1),i.pointerMoved=!1,i.rawProgress=1,l.cameraTarget&&(i.prevCamera=tI({},i.camera)))}if(!i.img){let A=e.find(e=>"img"===e.type&&e.img);A&&(i.img=A.img,i.imgW=A.imageWidth||t,i.imgH=A.imageHeight||r)}return{img:i.img,imageWidth:i.imgW,imageHeight:i.imgH,prevImg:i.imageChanged?i.prevImg:null,camera:i.camera,prevCamera:i.prevCamera,insights:i.insights,spinning:i.spinning,spinningElapsedMs:i.spinningElapsedMs,currentPointerImg:i.pointerImg,title:i.title,subTitle:i.subTitle,taskId:i.taskId,frameInScript:i.frameInScript,scriptIndex:i.scriptIndex,imageChanged:i.imageChanged,pointerMoved:i.pointerMoved,rawProgress:i.rawProgress}}function tP(e,A,t,r){let n=Math.min(e/t,A/r),o=t*n,i=r*n;return{offsetX:(e-o)/2,offsetY:(A-i)/2,contentWidth:o,contentHeight:i}}let tN=e=>{let{frameMap:A,autoZoom:t,frame:n,width:o,height:i,fps:a}=e,{scriptFrames:s,imageWidth:l,imageHeight:c}=A,d=(0,et.useMemo)(()=>tw(s,n,l,c,a),[s,n,l,c,a]);if(!d.img)return null;let{img:u,imageWidth:p,imageHeight:g,prevImg:m,camera:h,prevCamera:f,insights:y,spinning:E,spinningElapsedMs:v,currentPointerImg:b,title:k,subTitle:C,frameInScript:S,imageChanged:I,pointerMoved:x,rawProgress:R}=d,j=x?Math.min(R/.375,1):R,w=x?R<=.375?0:Math.min((R-.375)/.625,1):R,P=f.pointerLeft+(h.pointerLeft-f.pointerLeft)*j,N=f.pointerTop+(h.pointerTop-f.pointerTop)*j,O=t?f.left+(h.left-f.left)*w:0,T=t?f.top+(h.top-f.top)*w:0,M=t?f.width+(h.width-f.width)*w:p,{offsetX:K,offsetY:D,contentWidth:B,contentHeight:z}=tP(o,i,p,g),Q=-(B/p*O),L=-(z/g*T),Z=`scale(${p/M}) translate(${Q}px, ${L}px)`,X=g/p*M,J=(P-O)/M*B,U=(N-T)/X*z,F=h.pointerLeft!==Math.round(p/2)||h.pointerTop!==Math.round(g/2)||f.pointerLeft!==Math.round(p/2)||f.pointerTop!==Math.round(g/2),q=Math.max(1,Math.sqrt(p/1920)),V=I?Math.min(S/10,1):1,H=E?(Math.sin(v/500-Math.PI/2)+1)/2*Math.PI*2:0;return(0,r.jsx)("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,backgroundColor:"#000"},children:(0,r.jsx)("div",{style:{position:"absolute",left:K,top:D,width:B,height:z,overflow:"hidden"},children:(0,r.jsxs)("div",{style:{width:B,height:z,position:"relative",overflow:"hidden"},children:[I&&m&&V<1&&(0,r.jsx)("div",{style:{position:"absolute",width:B,height:z,overflow:"hidden",opacity:1-V},children:(0,r.jsx)("img",{alt:"",src:m,style:{width:B,height:z,transformOrigin:"0 0",transform:Z}})}),(0,r.jsxs)("div",{style:{position:"absolute",width:B,height:z,overflow:"hidden",opacity:I?V:1},children:[(0,r.jsx)("img",{alt:"",src:u,style:{width:B,height:z,transformOrigin:"0 0",transform:Z}}),(0,r.jsx)("div",{style:{position:"absolute",top:0,left:0,width:B,height:z,transformOrigin:"0 0",transform:Z,pointerEvents:"none"},children:0===y.length?null:y.map((e,A)=>{let t=[];if(e.highlightElement){let n=e.highlightElement.rect;t.push((0,r.jsx)("div",{style:{position:"absolute",left:n.left,top:n.top,width:n.width,height:n.height,background:"rgba(253, 89, 7, 0.4)",border:`${2*q}px solid #fd5907`,boxShadow:`${2*q}px ${2*q}px ${+q}px rgba(51, 51, 51, 0.3)`,opacity:e.alpha,pointerEvents:"none"}},`highlight-${A}`))}if(e.searchArea){let n=e.searchArea;t.push((0,r.jsx)("div",{style:{position:"absolute",left:n.left,top:n.top,width:n.width,height:n.height,background:"rgba(2, 131, 145, 0.4)",border:`${2*q}px solid #028391`,boxShadow:`${2*q}px ${2*q}px ${+q}px rgba(51, 51, 51, 0.3)`,opacity:e.alpha,pointerEvents:"none"}},`search-${A}`))}return t})})]}),E&&(0,r.jsx)("img",{alt:"",src:AS,style:{position:"absolute",left:J-22*q,top:U-28*q,width:44*q,height:56*q,transform:`rotate(${H}rad)`,transformOrigin:"center center",filter:"drop-shadow(0 1px 2px rgba(0,0,0,0.3))"}}),F&&!E&&(0,r.jsx)("img",{alt:"",src:b,style:{position:"absolute",left:J-6*q,top:U-4*q,width:44*q,height:56*q,filter:"drop-shadow(0 1px 2px rgba(0,0,0,0.3))"}})]})})})};function tO(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function tT(e){return function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){tO(o,r,n,i,a,"next",e)}function a(e){tO(o,r,n,i,a,"throw",e)}i(void 0)})}}function tM(e){return new Promise((A,t)=>{let r=new Image;r.crossOrigin="anonymous",r.onload=()=>A(r),r.onerror=t,r.src=e})}function tK(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function tD(e,A){let t=Math.floor(e/A),r=Math.floor(t/60);return`${String(r).padStart(2,"0")}:${String(t%60).padStart(2,"0")}`}function tB(e){var A,t;let n,{autoZoom:o,setAutoZoom:i,playbackSpeed:a,setPlaybackSpeed:s,subtitleEnabled:l,setSubtitleEnabled:c}=f();(0,et.useEffect)(()=>{(null==e?void 0:e.autoZoom)!==void 0&&i(e.autoZoom)},[null==e?void 0:e.autoZoom,i]);let d=null==e?void 0:e.replayScripts,u=(0,et.useMemo)(()=>d&&0!==d.length?function(e,A){let t=(null==A?void 0:A.imageWidth)||1920,r=(null==A?void 0:A.imageHeight)||1080;for(let A of e)if(("img"===A.type||"insight"===A.type)&&A.img){t=A.imageWidth||t,r=A.imageHeight||r;break}let n=[],o=0;for(let A of e){var i,a,s,l;let e=A.duration;switch(A.type){case"sleep":{let t=Math.ceil(e/1e3*30);n.push({type:"sleep",startFrame:o,durationInFrames:t,title:A.title,subTitle:A.subTitle,taskId:A.taskId}),o+=t;break}case"img":{let s=Math.max(Math.ceil(e/1e3*30),1),l=A.camera,c=A.imageWidth||t,d=A.imageHeight||r,u={type:"img",startFrame:o,durationInFrames:s,img:A.img,imageWidth:c,imageHeight:d,title:A.title,subTitle:A.subTitle,taskId:A.taskId};l&&(u.cameraTarget={left:l.left,top:l.top,width:l.width,pointerLeft:null!=(i=l.pointerLeft)?i:Math.round(c/2),pointerTop:null!=(a=l.pointerTop)?a:Math.round(d/2)}),n.push(u),o+=s;break}case"insight":{let i=Math.max(Math.ceil(e/1e3*30),1),a=Math.ceil((A.insightCameraDuration||0)/1e3*30),c=i+a,d=A.imageWidth||t,u=A.imageHeight||r,p=A.camera,g={type:"insight",startFrame:o,durationInFrames:c,img:A.img,imageWidth:d,imageHeight:u,insightPhaseFrames:i,cameraPhaseFrames:a,highlightElement:A.highlightElement,searchArea:A.searchArea,title:A.title,subTitle:A.subTitle,taskId:A.taskId};p&&(g.cameraTarget={left:p.left,top:p.top,width:p.width,pointerLeft:null!=(s=p.pointerLeft)?s:Math.round(d/2),pointerTop:null!=(l=p.pointerTop)?l:Math.round(u/2)}),n.push(g),o+=c;break}case"clear-insight":{let t=Math.max(Math.ceil(e/1e3*30),1);n.push({type:"clear-insight",startFrame:o,durationInFrames:t,title:A.title,subTitle:A.subTitle,taskId:A.taskId}),o+=t;break}case"spinning-pointer":{let t=Math.max(Math.ceil(e/1e3*30),1);n.push({type:"spinning-pointer",startFrame:o,durationInFrames:t,title:A.title,subTitle:A.subTitle,taskId:A.taskId}),o+=t;break}case"pointer":n.push({type:"pointer",startFrame:o,durationInFrames:0,pointerImg:A.img,title:A.title,subTitle:A.subTitle,taskId:A.taskId})}}let c=Math.max(o,1);return{scriptFrames:n,totalDurationInFrames:c,fps:30,stepsDurationInFrames:c,imageWidth:t,imageHeight:r}}(d,{imageWidth:null==e?void 0:e.imageWidth,imageHeight:null==e?void 0:e.imageHeight}):null,[null==e?void 0:e.imageHeight,null==e?void 0:e.imageWidth,d]),p=(0,et.useRef)(null),g=(0,et.useRef)(null),m=(0,et.useRef)(null),[h,y]=(0,et.useState)({width:0,height:0});(0,et.useEffect)(()=>{let e=g.current;if(!e)return;let A=new ResizeObserver(e=>{for(let A of e){let{width:e,height:t}=A.contentRect;y(A=>A.width===e&&A.height===t?A:{width:e,height:t})}});return A.observe(e),()=>A.disconnect()},[]);let E=function(e){var A,t;let{durationInFrames:r,fps:n,autoPlay:o=!1,loop:i=!1}=e,[a,s]=(0,et.useState)(0),[l,c]=(0,et.useState)(o),d=(0,et.useRef)(l),u=(0,et.useRef)(a),p=(0,et.useRef)(null!=(A=e.playbackRate)?A:1),g=(0,et.useRef)(r),m=(0,et.useRef)(n),h=(0,et.useRef)(i);d.current=l,u.current=a,p.current=null!=(t=e.playbackRate)?t:1,g.current=r,m.current=n,h.current=i,(0,et.useEffect)(()=>{let e;if(!l)return;let A=null,t=0,r=n=>{if(null!==A){let e=(n-A)*p.current;t+=e;let r=1e3/m.current;for(;t>=r;){t-=r;let e=u.current+1;if(e>=g.current)if(h.current)u.current=0,s(0);else{u.current=g.current-1,s(g.current-1),c(!1);return}else u.current=e,s(e)}}A=n,e=requestAnimationFrame(r)};return e=requestAnimationFrame(r),()=>cancelAnimationFrame(e)},[l]);let f=(0,et.useCallback)(()=>{u.current>=g.current-1&&(u.current=0,s(0)),c(!0)},[]),y=(0,et.useCallback)(()=>c(!1),[]);return{currentFrame:a,playing:l,play:f,pause:y,toggle:(0,et.useCallback)(()=>{d.current?c(!1):(u.current>=g.current-1&&(u.current=0,s(0)),c(!0))},[]),seekTo:(0,et.useCallback)(e=>{let A=Math.max(0,Math.min(e,g.current-1));u.current=A,s(A)},[])}}({durationInFrames:Math.max(null!=(A=null==u?void 0:u.totalDurationInFrames)?A:1,1),fps:null!=(t=null==u?void 0:u.fps)?t:30,autoPlay:!0,loop:!1,playbackRate:a});(0,et.useEffect)(()=>{if(!u||!(null==e?void 0:e.onTaskChange))return;let A=function(e,A){let t=null;for(let o of e){var r,n;if(0===o.durationInFrames){o.startFrame<=A&&(t=null!=(r=o.taskId)?r:t);continue}if(A<o.startFrame)break;t=null!=(n=o.taskId)?n:t}return t}(u.scriptFrames,E.currentFrame);A!==m.current&&(m.current=A,e.onTaskChange(A))},[u,null==e?void 0:e.onTaskChange,E.currentFrame]);let v=(0,et.useMemo)(()=>{var e;let A;return u?(e=E.currentFrame,(A=tw(u.scriptFrames,e,u.imageWidth,u.imageHeight,u.fps)).img?A:null):null},[u,E.currentFrame]),b=(0,et.useMemo)(()=>v&&(v.title||v.subTitle)?{title:v.title,subTitle:v.subTitle}:null,[v]),[k,C]=(0,et.useState)(!0),S=(0,et.useRef)(null),I=(0,et.useCallback)(()=>{C(!0),S.current&&clearTimeout(S.current),S.current=setTimeout(()=>C(!1),3e3)},[]),x=(0,et.useCallback)(()=>{C(!0),S.current&&clearTimeout(S.current)},[]),R=(0,et.useCallback)(()=>{S.current&&clearTimeout(S.current),S.current=setTimeout(()=>C(!1),1e3)},[]),j=(0,et.useCallback)(e=>{"Space"===e.code&&(e.preventDefault(),E.toggle())},[E]),w=(0,et.useRef)(null),P=(0,et.useCallback)(e=>{if(!u||!w.current)return;let A=w.current;A.setPointerCapture(e.pointerId);let t=e=>{let t=A.getBoundingClientRect(),r=Math.max(0,Math.min(1,(e-t.left)/t.width));E.seekTo(Math.round(r*(u.totalDurationInFrames-1)))};t(e.clientX);let r=e=>t(e.clientX),n=()=>{A.removeEventListener("pointermove",r),A.removeEventListener("pointerup",n)};A.addEventListener("pointermove",r),A.addEventListener("pointerup",n)},[u,E]),[N,O]=(0,et.useState)(!1),T=(0,et.useCallback)(()=>{let e=p.current;e&&(document.fullscreenElement?document.exitFullscreen().then(()=>O(!1)):e.requestFullscreen().then(()=>O(!0)))},[]);(0,et.useEffect)(()=>{let e=()=>O(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[]);let[M,K]=(0,et.useState)(!1),[D,B]=(0,et.useState)(0),z=(0,et.useCallback)(()=>{var e;return(e=function*(){if(u&&!M){K(!0),B(0);try{var e;yield(e=e=>B(Math.round(100*e)),tT(function*(){let{totalDurationInFrames:A,fps:t}=u,r=new Set;for(let e of u.scriptFrames)e.img&&r.add(e.img);let n=new Map;yield Promise.all([...r].map(e=>tT(function*(){try{n.set(e,(yield tM(e)))}catch(e){}})()));let o=null,i=null;try{o=yield tM(AC)}catch(e){}try{i=yield tM(AS)}catch(e){}let a=document.createElement("canvas");a.width=960,a.height=540;let s=a.getContext("2d"),l=a.captureStream(t),c=new MediaRecorder(l,{mimeType:"video/webm"}),d=[];return c.ondataavailable=e=>{e.data.size>0&&d.push(e.data)},new Promise((r,a)=>{c.onerror=()=>a(Error("MediaRecorder error")),c.onstop=()=>{if(0===d.length)return void a(Error("No video data"));let e=new Blob(d,{type:"video/webm"}),A=URL.createObjectURL(e),t=document.createElement("a");t.href=A,t.download="midscene_replay.webm",t.click(),l.getTracks().forEach(e=>e.stop()),setTimeout(()=>URL.revokeObjectURL(A),1e3),r()},c.start();let p=1e3/t,g=performance.now(),m=-1,h=()=>{let t=Math.min(Math.floor((performance.now()-g)/p),A-1);t>m&&(m=t,s.clearRect(0,0,960,540),function(e,A,t,r,n,o){var i,a,s,l,c,d,u,p,g,m;let h,{scriptFrames:f,imageWidth:y,imageHeight:E,fps:v}=t,b=tw(f,A,y,E,v);if(!b.img)return;let{img:k,prevImg:C,imageWidth:S,imageHeight:I,camera:x,prevCamera:R,pointerMoved:j,imageChanged:w,rawProgress:P,frameInScript:N,spinning:O,spinningElapsedMs:T,insights:M}=b,K=j?Math.min(P/.375,1):P,D=j?P<=.375?0:Math.min((P-.375)/.625,1):P,B=(i=R.left,a=x.left,i+(a-i)*D),z=(s=R.top,l=x.top,s+(l-s)*D),Q=(c=R.width,d=x.width,c+(d-c)*D),L=(u=R.pointerLeft,p=x.pointerLeft,u+(p-u)*K),Z=(g=R.pointerTop,m=x.pointerTop,g+(m-g)*K),X=S/Q,{offsetX:J,offsetY:U,contentWidth:F,contentHeight:q}=tP(960,540,S,I),V=-(F/S*B),H=-(q/I*z),G=w?Math.min(Math.max(N/10,0),1):1;e.fillStyle="#000",e.fillRect(0,0,960,540);let W=(A,t)=>{let n=r.get(A);n&&!(t<=0)&&(e.save(),e.globalAlpha=t,e.beginPath(),e.rect(0,0,960,540),e.clip(),e.translate(J+V*X,U+H*X),e.scale(X,X),e.drawImage(n,0,0,F,q),e.restore())};w&&C&&G<1&&W(C,1-G),W(k,w?G:1),M.length>0&&function(e,A,t,r,n){for(let o of A)if(!(o.alpha<=0)){if(e.save(),e.globalAlpha*=o.alpha,o.highlightElement){let A=o.highlightElement.rect,i=r+(A.left*t.zoom+t.tx*t.zoom),a=n+(A.top*t.zoom+t.ty*t.zoom),s=A.width*t.zoom,l=A.height*t.zoom;e.fillStyle="rgba(253, 89, 7, 0.4)",e.fillRect(i,a,s,l),e.strokeStyle="#fd5907",e.lineWidth=1,e.strokeRect(i,a,s,l),e.shadowColor="rgba(51, 51, 51, 0.4)",e.shadowBlur=2,e.shadowOffsetX=4,e.shadowOffsetY=4,e.strokeRect(i,a,s,l),e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0}if(o.searchArea){let A=o.searchArea,i=r+(A.left*t.zoom+t.tx*t.zoom),a=n+(A.top*t.zoom+t.ty*t.zoom),s=A.width*t.zoom,l=A.height*t.zoom;e.fillStyle="rgba(2, 131, 145, 0.4)",e.fillRect(i,a,s,l),e.strokeStyle="#028391",e.lineWidth=1,e.strokeRect(i,a,s,l)}e.restore()}}(e,M,{zoom:X,tx:V,ty:H},J,U);let Y=I/S*Q,_=J+(L-B)/Q*F,$=U+(Z-z)/Y*q,ee=Math.abs(x.pointerLeft-Math.round(S/2))>1||Math.abs(x.pointerTop-Math.round(I/2))>1||Math.abs(R.pointerLeft-Math.round(S/2))>1||Math.abs(R.pointerTop-Math.round(I/2))>1;O&&o&&(h=(Math.sin(T/500-Math.PI/2)+1)/2*Math.PI*2,e.save(),e.translate(_,$),e.rotate(h),e.drawImage(o,-11,-14,22,28),e.restore()),!O&&ee&&n&&e.drawImage(n,_-3,$-2,22,28)}(s,t,u,n,o,i),null==e||e((t+1)/A)),t<A-1?requestAnimationFrame(h):setTimeout(()=>c.stop(),2*p)};requestAnimationFrame(h)})})()),W.Ay.success("Video exported")}catch(e){console.error("Export failed:",e),W.Ay.error("Export failed")}finally{K(!1),B(0)}}},function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){tK(o,r,n,i,a,"next",e)}function a(e){tK(o,r,n,i,a,"throw",e)}i(void 0)})})()},[u,M]),Q=(0,et.useMemo)(()=>{if(!u)return[];let{scriptFrames:e,totalDurationInFrames:A}=u;if(0===A)return[];let t=[];for(let r of e){if("img"!==r.type&&"insight"!==r.type||0===r.durationInFrames)continue;let e=r.startFrame,n=e/A*100;if(n>1&&n<99){let A=[r.title,r.subTitle].filter(Boolean);t.push({percent:n,title:A.length>0?A.join(": "):`Chapter ${t.length+1}`,frame:e})}}return t},[u]);if(!d||0===d.length||!u)return(0,r.jsx)("div",{className:"player-container"});let L=(null==v?void 0:v.imageWidth)||u.imageWidth,Z=(null==v?void 0:v.imageHeight)||u.imageHeight,X=Z>L,J=u.totalDurationInFrames,U=J>1?E.currentFrame/(J-1)*100:0;return(0,r.jsx)("div",{className:"player-container","data-fit-mode":null==e?void 0:e.fitMode,children:(0,r.jsxs)("div",{className:"canvas-container",ref:p,onKeyDown:j,onMouseMove:I,onMouseEnter:x,onMouseLeave:R,children:[(0,r.jsx)("div",{className:"player-wrapper","data-portrait":X?"":void 0,style:{aspectRatio:`${L}/${Z}`},children:(0,r.jsx)("div",{ref:g,style:{display:"flex",justifyContent:"center",alignItems:"center",width:"100%",height:"100%",overflow:"hidden"},onClick:E.toggle,children:(n=h.width>0&&h.height>0?Math.min(h.width/L,h.height/Z):1,(0,r.jsx)("div",{style:{width:L*n,height:Z*n,flexShrink:0,position:"relative",overflow:"hidden"},children:(0,r.jsx)("div",{style:{width:L,height:Z,transformOrigin:"0 0",transform:`scale(${n})`},children:(0,r.jsx)(tN,{frameMap:u,autoZoom:o,frame:E.currentFrame,width:L,height:Z,fps:u.fps})})}))})}),l&&b&&(0,r.jsxs)("div",{className:"player-subtitle",children:[b.title&&(0,r.jsx)("span",{className:"player-subtitle-badge",children:b.title}),b.subTitle&&(0,r.jsx)("span",{className:"player-subtitle-text",children:b.subTitle})]}),(0,r.jsxs)("div",{className:`control-bar ${k?"":"hidden"}`,onClick:e=>e.stopPropagation(),children:[(0,r.jsx)("div",{className:"status-icon",onClick:E.toggle,children:E.playing?(0,r.jsx)(tp.A,{}):(0,r.jsx)(tg.A,{})}),(0,r.jsxs)("span",{className:"time-display",children:[tD(E.currentFrame,u.fps)," /"," ",tD(J,u.fps)]}),(0,r.jsxs)("div",{className:"seek-bar-track",ref:w,onPointerDown:P,children:[(0,r.jsx)("div",{className:"seek-bar-fill",style:{width:`${U}%`}}),(0,r.jsx)("div",{className:"seek-bar-knob",style:{left:`${U}%`}}),Q.map(e=>(0,r.jsx)(ee.A,{title:e.title,overlayClassName:"chapter-tooltip",children:(0,r.jsx)("div",{className:"chapter-marker",style:{left:`${e.percent}%`},onClick:A=>{A.stopPropagation(),E.seekTo(e.frame)}})},e.percent))]}),(0,r.jsxs)("div",{className:"player-custom-controls",children:[(null==e?void 0:e.reportFileContent)&&(null==e?void 0:e.canDownloadReport)!==!1?(0,r.jsx)(ee.A,{title:"Download Report",children:(0,r.jsx)("div",{className:"status-icon",onClick:()=>{let A,t,r;return A=new Blob([e.reportFileContent],{type:"text/html"}),t=URL.createObjectURL(A),void((r=document.createElement("a")).href=t,r.download="midscene_report.html",r.click(),setTimeout(()=>URL.revokeObjectURL(t),0))},children:(0,r.jsx)(tm.A,{})})}):null,(0,r.jsx)(tb.A,{trigger:["hover","click"],placement:"topRight",overlayStyle:{minWidth:"148px"},dropdownRender:()=>(0,r.jsxs)("div",{className:"player-settings-dropdown",children:[(0,r.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",gap:"4px",height:"32px",padding:"0 8px",borderRadius:"4px",cursor:M?"not-allowed":"pointer",opacity:M?.5:1},onClick:M?void 0:z,children:[M?(0,r.jsx)($.A,{size:"small"}):(0,r.jsx)(th.A,{style:{width:"16px",height:"16px"}}),(0,r.jsx)("span",{style:{fontSize:"14px"},children:M?`Exporting ${D}%`:"Export video"})]}),(0,r.jsx)("div",{className:"player-settings-divider"}),(0,r.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 8px",borderRadius:"4px"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[(0,r.jsx)(tC,{style:{width:"16px",height:"16px"}}),(0,r.jsx)("span",{style:{fontSize:"14px",marginRight:"16px"},children:"Focus on cursor"})]}),(0,r.jsx)(tk.A,{size:"small",checked:o,onChange:e=>i(e)})]}),(0,r.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 8px",borderRadius:"4px"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[(0,r.jsx)(tf.A,{style:{width:"16px",height:"16px"}}),(0,r.jsx)("span",{style:{fontSize:"14px",marginRight:"16px"},children:"Subtitle"})]}),(0,r.jsx)(tk.A,{size:"small",checked:l,onChange:e=>c(e)})]}),(0,r.jsx)("div",{className:"player-settings-divider"}),(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px",height:"32px",padding:"0 8px"},children:[(0,r.jsx)(ty.A,{style:{width:"16px",height:"16px"}}),(0,r.jsx)("span",{style:{fontSize:"14px"},children:"Playback speed"})]}),[.5,1,1.5,2].map(e=>(0,r.jsxs)("div",{onClick:()=>s(e),style:{height:"32px",lineHeight:"32px",padding:"0 8px 0 24px",fontSize:"14px",cursor:"pointer",borderRadius:"4px"},className:`player-speed-option${a===e?" active":""}`,children:[e,"x"]},e))]}),menu:{items:[]},children:(0,r.jsx)("div",{className:"status-icon",children:(0,r.jsx)(tS,{style:{width:"16px",height:"16px"}})})}),(0,r.jsx)("div",{className:"status-icon",onClick:T,children:N?(0,r.jsx)(tE.A,{}):(0,r.jsx)(tv.A,{})})]})]})]})})}let tz=e=>{let{result:A,loading:t,serverValid:n,serviceMode:o,replayScriptsInfo:i,replayCounter:a,loadingProgressText:s,verticalMode:l=!1,notReadyMessage:c,fitMode:d,autoZoom:u,actionType:p,canDownloadReport:g}=e,m="result-wrapper";l&&(m+=" vertical-mode-result"),i&&l&&(m+=" result-wrapper-compact");let h=ts,f=p&&eD.includes(p);if(n||"Server"!==o)if(t)h=(0,r.jsxs)("div",{className:"loading-container",children:[(0,r.jsx)($.A,{spinning:t,indicator:(0,r.jsx)(Au.A,{spin:!0})}),(0,r.jsx)("div",{className:"loading-progress-text loading-progress-text-progress",children:(0,r.jsx)(to,{text:s,speed:3})})]});else if(null==A?void 0:A.error){let e=(0,r.jsx)("pre",{style:{color:"#ff4d4f",whiteSpace:"pre-wrap"},children:null==A?void 0:A.error});h=A.reportHTML||i?(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"16px",height:"100%"},children:[(0,r.jsxs)("div",{style:{flex:"0 0 auto",maxHeight:"40%",overflow:"auto"},children:[(0,r.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Error:"}),e]}),(0,r.jsxs)("div",{style:{flex:"1 1 auto",minHeight:0},children:[(0,r.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,r.jsx)(tB,{replayScripts:null==i?void 0:i.scripts,imageWidth:null==i?void 0:i.width,imageHeight:null==i?void 0:i.height,reportFileContent:A.reportHTML||null,fitMode:d,autoZoom:u,canDownloadReport:null!=g?g:"In-Browser"!==o},a)]})]}):e}else if(f&&(null==A?void 0:A.result)!==void 0&&i){let e="string"==typeof(null==A?void 0:A.result)?(0,r.jsx)("pre",{children:null==A?void 0:A.result}):(0,r.jsx)("pre",{children:JSON.stringify(null==A?void 0:A.result,null,2)}),t=(null==A?void 0:A.reportHTML)||null;h=(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"16px",height:"100%"},children:[(0,r.jsxs)("div",{style:{flex:"0 0 auto"},children:[(0,r.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Output:"}),e]}),(0,r.jsxs)("div",{style:{flex:"1 1 auto",minHeight:0},children:[(0,r.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,r.jsx)(tB,{replayScripts:i.scripts,imageWidth:i.width,imageHeight:i.height,reportFileContent:t,fitMode:d,autoZoom:u,canDownloadReport:null!=g?g:"In-Browser"!==o},a)]})]})}else if(i){let e=(null==A?void 0:A.reportHTML)||null;h=(0,r.jsx)(tB,{replayScripts:i.scripts,imageWidth:i.width,imageHeight:i.height,reportFileContent:e,fitMode:d,autoZoom:u,canDownloadReport:null!=g?g:"In-Browser"!==o},a)}else if(f&&(null==A?void 0:A.result)!==void 0&&(null==A?void 0:A.reportHTML)){let e="string"==typeof(null==A?void 0:A.result)?(0,r.jsx)("pre",{children:null==A?void 0:A.result}):(0,r.jsx)("pre",{children:JSON.stringify(null==A?void 0:A.result,null,2)});h=(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"16px",height:"100%"},children:[(0,r.jsxs)("div",{style:{flex:"0 0 auto"},children:[(0,r.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Output:"}),e]}),(0,r.jsxs)("div",{style:{flex:"1 1 auto",minHeight:0},children:[(0,r.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,r.jsx)(tB,{reportFileContent:A.reportHTML,fitMode:d,autoZoom:u,canDownloadReport:null!=g?g:"In-Browser"!==o},a)]})]})}else f&&(null==A?void 0:A.result)!==void 0?h="string"==typeof(null==A?void 0:A.result)?(0,r.jsx)("pre",{children:null==A?void 0:A.result}):(0,r.jsx)("pre",{children:JSON.stringify(null==A?void 0:A.result,null,2)}):(null==A?void 0:A.reportHTML)?h=(0,r.jsx)(tB,{reportFileContent:A.reportHTML,fitMode:d,autoZoom:u,canDownloadReport:null!=g?g:"In-Browser"!==o},a):(null==A?void 0:A.result)!==void 0&&(h="string"==typeof(null==A?void 0:A.result)?(0,r.jsx)("pre",{children:null==A?void 0:A.result}):(0,r.jsx)("pre",{children:JSON.stringify(null==A?void 0:A.result,null,2)}));else h=ta(c);return(0,r.jsx)("div",{className:m,style:{height:"100%",display:"flex",flexDirection:"column",flex:"1 1 auto",justifyContent:"center"},children:h})},tQ=e=>{var A,t;return(0,r.jsxs)("svg",(A=function(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}({xmlns:"http://www.w3.org/2000/svg",width:20,height:20,fill:"none","aria-label":"Playground",viewBox:"0 0 20 20"},e),t=t={children:[(0,r.jsx)("rect",{width:20,height:20,fill:"#2B83FF",rx:10}),(0,r.jsx)("path",{fill:"#2B83FF",stroke:"#fff",strokeLinejoin:"round",strokeWidth:1.125,d:"M6.866 5.882a.56.56 0 0 1 .667-.078l3.248 1.875 3.247 1.875a.563.563 0 0 1 0 .974l-3.247 1.875-3.248 1.875a.563.563 0 0 1-.784-.74l1.749-3.497-1.75-3.498a.56.56 0 0 1 .118-.661Z"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A))};var tL=t(8460),tZ=t(3896),tX=t(1631),tJ=t(4665),tU={};tU.d=(e,A)=>{for(var t in A)tU.o(A,t)&&!tU.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},tU.o=(e,A)=>Object.prototype.hasOwnProperty.call(e,A),tU.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var tF={};function tq(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}tU.r(tF),tU.d(tF,{create:()=>o.vt});let{create:tV}=tF,tH="midscene-prompt-history-v2",tG="midscene-last-selected-type",tW=tV((e,A)=>{let t;return{history:(t=localStorage.getItem(tH))?JSON.parse(t):{},lastSelectedType:localStorage.getItem(tG)||"aiAct",clearHistory:t=>{let r=tq({},A().history);delete r[t],e({history:r}),localStorage.setItem(tH,JSON.stringify(r))},addHistory:t=>{var r,n;let{type:o}=t,i=A().history,a=i[o]||[],s=JSON.stringify({prompt:t.prompt,params:t.params}),l=[t,...a.filter(e=>JSON.stringify({prompt:e.prompt,params:e.params})!==s)];l.length>10&&(l.length=10);let c=(r=tq({},i),n=n={[o]:l},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(n)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(n,e))}),r);e({history:c}),localStorage.setItem(tH,JSON.stringify(c))},getHistoryForType:e=>A().history[e]||[],setLastSelectedType:A=>{e({lastSelectedType:A}),localStorage.setItem(tG,A)}}}),tY="ZodOptional",t_="ZodDefault",t$="ZodNullable",t0="ZodObject",t1="midscene_location_field_flag",t2=e=>"object"==typeof e&&null!==e&&("shape"in e||"ZodObject"===e.type),t3=e=>{var A,t,r;if((null==(A=e._def)?void 0:A.typeName)===t0){let A;if(e._def.shape&&(A="function"==typeof e._def.shape?e._def.shape():e._def.shape),!A&&e.shape&&(A=e.shape),A&&t1 in A)return!0;let r=(null==(t=e._def)?void 0:t.description)||e.description||"";if("string"==typeof r&&r.toLowerCase().includes("input field"))return!0}if("object"==typeof e&&null!==e){let A=e.description||(null==(r=e._def)?void 0:r.description)||"";if("string"==typeof A){let e=A.toLowerCase();if(e.includes("input field")||e.includes("element")||e.includes("locate"))return!0}if("ZodObject"===e.typeName||"ZodObject"===e.type)return"string"==typeof A&&A.toLowerCase().includes("input field")}return!1},t5=e=>{var A,t,r,n,o;let i=e,a=!1,s=!1;for(;(null==(A=i._def)?void 0:A.typeName)===tY||(null==(t=i._def)?void 0:t.typeName)===t_||(null==(r=i._def)?void 0:r.typeName)===t$;)(null==(n=i._def)?void 0:n.typeName)===tY&&(a=!0),(null==(o=i._def)?void 0:o.typeName)===t_&&(s=!0),i=i._def.innerType||i;return{actualField:i,isOptional:a,hasDefault:s}},t6=e=>{if(!e)return"";let A=e.startsWith("ai")?e.slice(2):e;if(A.startsWith("IOS"))return A.substring(3).replace(/([A-Z])/g," $1").replace(/^/,"IOS").trim();let t=A.replace(/([A-Z])/g," $1").trim(),r=t.split(" ");return r.length>3?r.slice(-3).join(" "):t};var t7=t(6356);let t9=e=>{var A,t;return(0,r.jsx)("svg",(A=function(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}({xmlns:"http://www.w3.org/2000/svg",width:27,height:27,fill:"none",viewBox:"0 0 27 27"},e),t=t={children:(0,r.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.333,d:"M19.527 8.855h-2M14.86 7.522v2.667M14.86 8.855H7.527M10.194 13.522H7.527M12.86 12.189v2.666M20.193 13.522H12.86M19.527 18.189h-2M14.86 16.855v2.667M14.86 18.189H7.527"})},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A))},t8=e=>{let A,{showDeepLocateOption:t=!1,showDeepThinkOption:n=!1,enableTracking:o=!1,showDataExtractionOptions:i=!1,hideDomAndScreenshotOptions:a=!1,deviceType:s}=e,l=N(e=>e.forceSameTabNavigation),c=N(e=>e.setForceSameTabNavigation),d=N(e=>e.deepLocate),u=N(e=>e.setDeepLocate),p=N(e=>e.deepThink),g=N(e=>e.setDeepThink),m=N(e=>e.screenshotIncluded),h=N(e=>e.setScreenshotIncluded),f=N(e=>e.domIncluded),y=N(e=>e.setDomIncluded),E=N(e=>e.imeStrategy),v=N(e=>e.setImeStrategy),b=N(e=>e.autoDismissKeyboard),k=N(e=>e.setAutoDismissKeyboard),C=N(e=>e.keyboardDismissStrategy),S=N(e=>e.setKeyboardDismissStrategy),I=N(e=>e.alwaysRefreshScreenInfo),x=N(e=>e.setAlwaysRefreshScreenInfo);if(!o&&!t&&!n&&!i&&"android"!==s&&"ios"!==s)return null;let R=(A=[],o&&A.push({label:(0,r.jsx)(t7.A,{onChange:e=>c(e.target.checked),checked:l,children:"Limit popup to current tab"}),key:"track-config"}),t&&A.push({label:(0,r.jsx)(t7.A,{onChange:e=>{u(e.target.checked)},checked:d,children:"Deep Locate"}),key:"deep-locate-config"}),n&&A.push({label:(0,r.jsx)(t7.A,{onChange:e=>{g(e.target.checked)},checked:p,children:"Deep Think"}),key:"deep-think-config"}),i&&!a&&(A.push({label:(0,r.jsx)(t7.A,{onChange:e=>{h(e.target.checked)},checked:m,children:"Include screenshot in request"}),key:"screenshot-included-config"}),A.push({label:(0,r.jsxs)("div",{style:{padding:"4px 0"},children:[(0,r.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Include DOM info in request"}),(0,r.jsxs)(tJ.A.Group,{size:"small",value:f,onChange:e=>y(e.target.value),children:[(0,r.jsx)(tJ.A,{value:!1,children:"Off"}),(0,r.jsx)(tJ.A,{value:!0,children:"All"}),(0,r.jsx)(tJ.A,{value:"visible-only",children:"Visible only"})]})]}),key:"dom-included-config"})),"android"===s&&(A.push({label:(0,r.jsxs)("div",{style:{padding:"4px 0"},children:[(0,r.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"IME strategy"}),(0,r.jsxs)(tJ.A.Group,{size:"small",value:E,onChange:e=>v(e.target.value),children:[(0,r.jsx)(tJ.A,{value:"always-yadb",children:"Always YADB"}),(0,r.jsx)(tJ.A,{value:"yadb-for-non-ascii",children:"YADB for non-ASCII"})]})]}),key:"ime-strategy-config"}),A.push({label:(0,r.jsx)(t7.A,{onChange:e=>k(e.target.checked),checked:b,children:Ay}),key:"auto-dismiss-keyboard-config"}),A.push({label:(0,r.jsxs)("div",{style:{padding:"4px 0"},children:[(0,r.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Keyboard dismiss strategy"}),(0,r.jsxs)(tJ.A.Group,{size:"small",value:C,onChange:e=>S(e.target.value),children:[(0,r.jsx)(tJ.A,{value:"esc-first",children:"ESC first"}),(0,r.jsx)(tJ.A,{value:"back-first",children:"Back first"})]})]}),key:"keyboard-dismiss-strategy-config"}),A.push({label:(0,r.jsx)(t7.A,{onChange:e=>x(e.target.checked),checked:I,children:"Always refresh screen info"}),key:"always-refresh-screen-info-config"})),"ios"===s&&A.push({label:(0,r.jsx)(t7.A,{onChange:e=>k(e.target.checked),checked:b,children:Ay}),key:"auto-dismiss-keyboard-config"}),A);return(0,r.jsx)("div",{className:"selector-trigger",children:(0,r.jsx)(tb.A,{menu:{items:R},trigger:["click"],children:(0,r.jsx)(t9,{width:24,height:24})})})};var t4=t(9076),re=t(5932);let{TextArea:rA}=As.A,rt=(e,A)=>`${e}${A?" (Optional)":""}`,rr=e=>{let{name:A,label:t,isRequired:n,marginBottom:o,placeholder:i}=e,a=i||`Enter ${A}`;return(0,r.jsx)(Ah.A.Item,{name:["params",A],label:rt(t,!n),rules:n?[{required:!0,message:`Please input ${A}`}]:[],style:{marginBottom:o},colon:!1,children:(0,r.jsx)(As.A,{placeholder:a})},A)},rn=e=>{let{name:A,label:t,isRequired:n,marginBottom:o,placeholder:i}=e,a=i||`Describe the ${A}, use natural language`;return(0,r.jsx)(Ah.A.Item,{name:["params",A],label:rt(t,!n),rules:n?[{required:!0,message:`The ${A} is required`}]:[],style:{marginBottom:o},colon:!1,children:(0,r.jsx)(rA,{rows:2,placeholder:a})},A)},ro=e=>{var A;let{name:t,label:n,fieldSchema:o,isRequired:i,marginBottom:a,placeholder:s}=e,l=((null==(A=o._def)?void 0:A.values)||[]).map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)}));return(0,r.jsx)(Ah.A.Item,{name:["params",t],label:n,rules:i?[{required:!0,message:`Please select ${t}`}]:[],style:{marginBottom:a},colon:!1,children:(0,r.jsx)(t4.A,{placeholder:s||`Select ${t}`,options:l})},t)},ri=e=>{let{name:A,label:t,isRequired:n,marginBottom:o,placeholder:i}=e,a=500*("distance"===A),s=i&&Number(i)||a,l="distance"===A?1e4:void 0;return(0,r.jsx)(Ah.A.Item,{name:["params",A],label:`${t}${"distance"===A?" (px)":""}`,rules:n?[{required:!0,message:`Please input ${A}`},{type:"number",min:0,message:`${t} must be at least 0`}]:[{type:"number",min:0,message:`${t} must be at least 0`}],style:{flex:"distance"===A?1:void 0,marginBottom:o},colon:!1,children:(0,r.jsx)(re.A,{placeholder:s.toString(),min:0,max:l,step:"distance"===A?10:1,style:{width:"100%"}})},A)},ra=e=>{let{name:A,label:t,isRequired:n,marginBottom:o,placeholder:i}=e;return(0,r.jsx)(Ah.A.Item,{name:["params",A],label:rt(t,!n),rules:n?[{required:!0,message:`Please select ${A}`}]:[],style:{marginBottom:o},colon:!1,children:(0,r.jsx)(t4.A,{placeholder:i||`Select ${A}`,options:[{value:!0,label:"True"},{value:!1,label:"False"}]})},A)},rs=e=>{var A,t;return(0,r.jsx)("svg",(A=function(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}({xmlns:"http://www.w3.org/2000/svg",width:18,height:16,fill:"none",viewBox:"0 0 18 16"},e),t=t={children:(0,r.jsx)("path",{stroke:"#333",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.333,d:"m3.124 2.667 11.162 10.666M3.124 13.333 14.286 2.667"})},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A))},rl=e=>{var A,t;return(0,r.jsxs)("svg",(A=function(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}({xmlns:"http://www.w3.org/2000/svg",width:25,height:25,fill:"none",viewBox:"0 0 25 25"},e),t=t={children:[(0,r.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.33,d:"M6.63 9.021c-2.862 6.126 2.197 10.501 6.063 10.501a7 7 0 1 0-6.063-10.5"}),(0,r.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.33,d:"M12.695 8.322v4.203l2.967 2.968"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A))},rc=e=>{var A,t;return(0,r.jsxs)("svg",(A=function(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}({xmlns:"http://www.w3.org/2000/svg",width:19,height:19,fill:"none",viewBox:"0 0 19 19"},e),t=t={children:[(0,r.jsxs)("g",{stroke:"currentColor",strokeLinejoin:"round",strokeOpacity:.65,strokeWidth:1.5,clipPath:"url(#magnifying-glass_svg__a)",children:[(0,r.jsx)("path",{d:"M8.397 14.29a6.375 6.375 0 1 0 0-12.75 6.375 6.375 0 0 0 0 12.75Z"}),(0,r.jsx)("path",{strokeLinecap:"round",d:"M10.519 5.42a3 3 0 0 0-2.122-.88 3 3 0 0 0-2.121.88M12.98 12.499l3.182 3.182"})]}),(0,r.jsx)("defs",{children:(0,r.jsx)("clipPath",{id:"magnifying-glass_svg__a",children:(0,r.jsx)("path",{fill:"#fff",d:"M.522.04h18v18h-18z"})})})]},Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(t)):(function(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(A,e,Object.getOwnPropertyDescriptor(t,e))}),A))},{Text:rd}=Ao.A,ru=e=>{let{onSelect:A,history:t,currentType:n}=e,[o,i]=(0,et.useState)(!1),[a,s]=(0,et.useState)(""),l=tW(e=>e.clearHistory),c=(0,et.useRef)(null),d=(0,et.useMemo)(()=>{let e=Date.now(),A=e-6048e5,r=e-31536e6,n=t.filter(e=>e.prompt.toLowerCase().includes(a.toLowerCase()));return{recent7Days:n.filter(e=>e.timestamp>=A),recent1Year:n.filter(e=>e.timestamp<A&&e.timestamp>=r),older:n.filter(e=>e.timestamp<r)}},[t,a]);(0,et.useEffect)(()=>{if(!o)return;let e=e=>{c.current&&!c.current.contains(e.target)&&i(!1)},A=setTimeout(()=>{document.addEventListener("click",e)},100);return()=>{clearTimeout(A),document.removeEventListener("click",e)}},[o]);let u=(e,t)=>0===t.length?null:(0,r.jsxs)("div",{className:"history-group",children:[(0,r.jsx)("div",{className:"history-group-title",children:e}),t.map((e,t)=>(0,r.jsx)("div",{className:"history-item",onClick:()=>{A(e),i(!1)},children:e.prompt},`${e.timestamp}-${t}`))]},e);return(0,r.jsxs)("div",{className:"history-selector-wrapper",children:[(0,r.jsx)("div",{className:"selector-trigger",onClick:()=>i(!0),children:(0,r.jsx)(rl,{width:24,height:24})}),o&&(0,r.jsx)("div",{className:"history-modal-overlay",ref:c,children:(0,r.jsxs)("div",{className:"history-modal-container",children:[(0,r.jsxs)("div",{className:"history-modal-header",children:[(0,r.jsxs)(rd,{strong:!0,style:{fontSize:"16px"},children:["History (",t.length,")"]}),(0,r.jsx)(eA.Ay,{size:"small",type:"text",icon:(0,r.jsx)(rs,{width:16,height:16}),onClick:()=>i(!1),className:"close-button"})]}),(0,r.jsx)("div",{className:"history-search-section",children:(0,r.jsxs)("div",{className:"search-input-wrapper",children:[(0,r.jsx)(As.A,{placeholder:"Search",value:a,onChange:e=>s(e.target.value),prefix:(0,r.jsx)(rc,{width:18,height:18}),className:"search-input",allowClear:!0}),(0,r.jsx)(eA.Ay,{type:"link",onClick:()=>{l(n),s(""),i(!1)},className:"clear-button",disabled:0===t.length,children:"Clear"})]})}),(0,r.jsx)("div",{className:"history-content",children:0===t.length?(0,r.jsx)("div",{className:"no-results",children:(0,r.jsx)(rd,{type:"secondary",children:"No history record"})}):(0,r.jsxs)(r.Fragment,{children:[u("Last 7 days",d.recent7Days),u("Last 1 year",d.recent1Year),u("Earlier",d.older),a&&0===d.recent7Days.length&&0===d.recent1Year.length&&0===d.older.length&&(0,r.jsx)("div",{className:"no-results",children:(0,r.jsx)(rd,{type:"secondary",children:"No matching history record"})})]})})]})})]})};function rp(e){for(var A=1;A<arguments.length;A++){var t=null!=arguments[A]?arguments[A]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(A){var r;r=t[A],A in e?Object.defineProperty(e,A,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[A]=r})}return e}let{TextArea:rg}=As.A,rm=e=>{let A,t,n,o,i,a,{runButtonEnabled:s,form:l,serviceMode:c,selectedType:d,dryMode:u,stoppable:p,loading:g,onRun:m,onStop:h,clearPromptAfterRun:f=!0,actionSpace:y,hideDomAndScreenshotOptions:E=!1,deviceType:v}=e,[b,k]=(0,et.useState)(!1),[C,S]=(0,et.useState)(""),I="aiQuery"===d?"What do you want to query?":"aiAssert"===d?"What do you want to assert?":"aiTap"===d?"What element do you want to tap?":"aiDoubleClick"===d?"What element do you want to double-click?":"aiHover"===d?"What element do you want to hover over?":"aiInput"===d?"Format: <value> | <element>\nExample: hello world | search box":"aiRightClick"===d?"What element do you want to right-click?":"aiKeyboardPress"===d?"Format: <key> | <element (optional)>\nExample: Enter | text field":"aiScroll"===d?"Format: <direction> <amount> | <element (optional)>\nExample: down 500 | main content":"aiLocate"===d?"What element do you want to locate?":"aiBoolean"===d?"What do you want to check (returns true/false)?":"aiNumber"===d?"What number do you want to extract?":"aiString"===d?"What text do you want to extract?":"aiAsk"===d?"What do you want to ask?":"aiWaitFor"===d?"What condition do you want to wait for?":"What do you want to do?",x=(0,et.useRef)(null),R=(0,et.useRef)(null),j=Ah.A.useWatch("params",l),w=(0,et.useRef)(null),P=tW(e=>e.history),N=tW(e=>e.lastSelectedType),O=tW(e=>e.addHistory),T=tW(e=>e.setLastSelectedType),M=(0,et.useMemo)(()=>P[d]||[],[P,d]),K=(0,et.useMemo)(()=>{if(y){let e=y.find(e=>e.interfaceAlias===d||e.name===d);return!!(null==e?void 0:e.paramSchema)&&(!t2(e.paramSchema)||Object.keys(e.paramSchema.shape||{}).length>0)}return!1},[d,y]),D=(0,et.useMemo)(()=>{if(y&&y.length>0){let e=y.find(e=>e.interfaceAlias===d||e.name===d);if(e){if(e.paramSchema&&t2(e.paramSchema)){let A=e.paramSchema.shape||{};return Object.keys(A).some(e=>{let{isOptional:t}=t5(A[e]);return!t})}return!!e.paramSchema}}return!0},[d,y]),B=(0,et.useMemo)(()=>["aiQuery","aiBoolean","aiNumber","aiString","aiAsk","aiAssert"].includes(d),[d]),z=(0,et.useMemo)(()=>{if("aiAct"===d||"aiLocate"===d)return!0;if(y){let e=y.find(e=>e.interfaceAlias===d||e.name===d);if((null==e?void 0:e.paramSchema)&&t2(e.paramSchema)){let A=e.paramSchema.shape||{};return Object.keys(A).some(e=>{let{actualField:t}=t5(A[e]);return t3(t)})}}return!1},[d,y]),Q=(0,et.useMemo)(()=>"aiAct"===d,[d]),L=(0,et.useMemo)(()=>{let e=B&&!E,A="android"===v||"ios"===v;return"In-Browser-Extension"===c||z||Q||e||A},[c,z,Q,B,E,v]),Z=(0,et.useMemo)(()=>{let e=Object.keys(AE);if(!y||0===y.length)return e;let A=y.map(e=>e.interfaceAlias||e.name),t=new Set;return e.forEach(e=>{let r=AE[e];(null==r?void 0:r.group)==="extraction"||(null==r?void 0:r.group)==="validation"?t.add(e):A.includes(e)&&t.add(e)}),A.forEach(e=>{t.add(e)}),Array.from(t)},[y]),X=(0,et.useCallback)(()=>{if(!K||!y)return{};let e=y.find(e=>e.interfaceAlias===d||e.name===d);if((null==e?void 0:e.paramSchema)&&t2(e.paramSchema)){let A={},t=e.paramSchema.shape||{};return Object.keys(t).forEach(e=>{let r=(e=>{var A;let t=e;for(;null==(A=t._def)?void 0:A.innerType;){if(t._def.typeName===t_&&t._def.defaultValue)return t._def.defaultValue();t=t._def.innerType}})(t[e]);void 0!==r&&(A[e]=r)}),A}return{}},[d,K,y]);(0,et.useEffect)(()=>{!l.getFieldValue("type")&&N&&l.setFieldValue("type",N)},[l,N]),(0,et.useEffect)(()=>{d&&d!==N&&T(d)},[d,N,T]);let J=(0,et.useCallback)(()=>{let e=R.current;if(!e)return;let A=null,t=e.querySelector(".ant-radio-button-wrapper-checked"),r=e.querySelector(".more-apis-button.selected-from-dropdown");if(t?A=t:r&&(A=r),A){let t=e.getBoundingClientRect(),r=A.getBoundingClientRect(),n=r.left-t.left+e.scrollLeft,o=r.width,i=t.width;e.scrollTo({left:Math.max(0,n-(i-o)/2),behavior:"smooth"})}},[]);(0,et.useEffect)(()=>{let e=M[0];if(!e||!w.current||e.timestamp!==w.current.timestamp)if(e)l.setFieldsValue({type:e.type,prompt:e.prompt||"",params:e.params}),S(e.prompt||""),w.current=e;else{let e=X();l.setFieldsValue({prompt:"",params:e}),S(""),w.current=null}},[d,M,l,X]),(0,et.useEffect)(()=>{let e=setTimeout(()=>{J()},100);return()=>clearTimeout(e)},[d,J]);let U=Ah.A.useWatch("prompt",l);(0,et.useEffect)(()=>{U!==C&&S(U||"")},[U,C]);let F=(0,et.useCallback)(e=>{l.setFieldsValue({prompt:e.prompt,type:e.type,params:e.params}),S(e.prompt)},[l]),q=(0,et.useCallback)(e=>{S(e.target.value)},[]),V=(0,et.useMemo)(()=>{if(!K||!y)return!1;let e=y.find(e=>e.interfaceAlias===d||e.name===d);return!!((null==e?void 0:e.paramSchema)&&t2(e.paramSchema))&&1===Object.keys(e.paramSchema.shape||{}).length},[d,K,y]),H=(0,et.useMemo)(()=>((e,A,t,r,n,o)=>{if(!e)return!1;if(!(()=>{if(r){let e=r.find(e=>e.interfaceAlias===n||e.name===n);if(e){if(!e.paramSchema)return!1;if("object"==typeof e.paramSchema&&"shape"in e.paramSchema)return Object.keys(e.paramSchema.shape||{}).length>0}}return!0})())return!0;if(A){let e=t||{},A=null==r?void 0:r.find(e=>e.interfaceAlias===n||e.name===n);if((null==A?void 0:A.paramSchema)&&t2(A.paramSchema)){let t=A.paramSchema.shape||{};return Object.keys(t).every(A=>{let{isOptional:r}=t5(t[A]),n=e[A];return r||void 0!==n&&""!==n&&null!==n})}return!0}return o.trim().length>0})(s,!!K,j,y,d,C),[s,K,d,y,C,j]),G=(0,et.useCallback)(()=>{let e=l.getFieldsValue(),A="";if(K&&e.params&&y){let t=y.find(e=>e.interfaceAlias===d||e.name===d);if((null==t?void 0:t.paramSchema)&&t2(t.paramSchema)){let r="",n=[],o=t.paramSchema.shape||{};Object.keys(o).forEach(A=>{var t;let i=null==(t=e.params)?void 0:t[A];if(null!=i&&""!==i){let{actualField:e}=t5(o[A]);t3(e)?r=String(i):"distance"===A?n.push(`${i}`):n.push(String(i))}});let i=n.join(" ");A=r?`${r} - ${i}`:i}else A=e.prompt||""}else A=e.prompt||"";let t={type:e.type,prompt:A,params:e.params,timestamp:Date.now()};if(O(t),m(),f)if(w.current=t,S(""),K){let e=X();l.setFieldValue("params",e)}else l.setFieldValue("prompt","")},[l,O,m,K,d,f,y,X]),W=(0,et.useCallback)(e=>{"Enter"===e.key&&e.metaKey&&H?(G(),e.preventDefault(),e.stopPropagation()):"Enter"===e.key&&setTimeout(()=>{if(x.current){var e;let A=null==(e=x.current.resizableTextArea)?void 0:e.textArea;if(A){let e=A.selectionStart,t=A.value.lastIndexOf("\n");(-1===t||e>t)&&(A.scrollTop=A.scrollHeight)}}},0)},[G,H]),Y=(0,et.useCallback)(e=>{"Enter"===e.key&&e.metaKey&&H&&(G(),e.preventDefault(),e.stopPropagation())},[G,H]),_=(0,et.useCallback)(()=>{if(!K)return null;if(y){let e=y.find(e=>e.interfaceAlias===d||e.name===d);if((null==e?void 0:e.paramSchema)&&t2(e.paramSchema)){let A=e.paramSchema.shape||{},t=Object.keys(A);if(1===t.length){let e=t[0],{actualField:n}=t5(A[e]),o=t3(n),i=(()=>{var A,t;if(null==(A=n._def)?void 0:A.description)return n._def.description;if(n.description)return n.description;if(y){let A=y.find(e=>e.interfaceAlias===d||e.name===d);if((null==A?void 0:A.paramSchema)&&"object"==typeof A.paramSchema&&"shape"in A.paramSchema){let r=(A.paramSchema.shape||{})[e];if(null==r||null==(t=r._def)?void 0:t.description)return r._def.description;if(null==r?void 0:r.description)return r.description}}return o?"Describe the element you want to interact with":"keyName"===e?"Enter key name or text to type":"value"===e?"Enter text to input":`Enter ${e}`})();return(0,r.jsx)(Ah.A.Item,{name:["params",e],style:{margin:0},children:(0,r.jsx)(As.A.TextArea,{className:"main-side-console-input-textarea",rows:3,placeholder:i,autoFocus:!0,onKeyDown:Y})})}let n=[],o=t.sort((e,t)=>{let r=A[e],n=A[t],{isOptional:o}=t5(r),{isOptional:i}=t5(n);return!o&&i?-1:o&&!i?1:0});if(o.forEach((e,t)=>{var i,a,s;let{actualField:l,isOptional:c}=t5(A[e]),u=t3(l),p=e.charAt(0).toUpperCase()+e.slice(1),g=12*(t!==o.length-1),m=(()=>{var A,t;if(null==(A=l._def)?void 0:A.description)return l._def.description;if(l.description)return l.description;if(y){let A=y.find(e=>e.interfaceAlias===d||e.name===d);if((null==A?void 0:A.paramSchema)&&"object"==typeof A.paramSchema&&"shape"in A.paramSchema){let r=(A.paramSchema.shape||{})[e];if(null==r||null==(t=r._def)?void 0:t.description)return r._def.description;if(null==r?void 0:r.description)return r.description}}if(u)return"Describe the element you want to interact with"})(),h={name:e,label:p,fieldSchema:l,isRequired:!c,marginBottom:g,placeholder:m};u?n.push((0,r.jsx)(rn,rp({},h),e)):(null==(i=l._def)?void 0:i.typeName)==="ZodEnum"?n.push((0,r.jsx)(ro,rp({},h),e)):(null==(a=l._def)?void 0:a.typeName)==="ZodNumber"?n.push((0,r.jsx)(ri,rp({},h),e)):(null==(s=l._def)?void 0:s.typeName)==="ZodBoolean"?n.push((0,r.jsx)(ra,rp({},h),e)):n.push((0,r.jsx)(rr,rp({},h),e))}),"aiScroll"===d){let e=n.find(e=>et.isValidElement(e)&&"direction"===e.props.name),A=n.find(e=>et.isValidElement(e)&&"distance"===e.props.name),t=n.filter(e=>et.isValidElement(e)&&"direction"!==e.props.name&&"distance"!==e.props.name);if(e&&A)return(0,r.jsxs)("div",{className:"structured-params",children:[(0,r.jsxs)("div",{style:{display:"flex",gap:12,marginBottom:12},children:[e,A]}),t]})}return(0,r.jsx)("div",{className:"structured-params",children:n})}}return null},[d,K,y,Y]),$=(0,et.useCallback)(()=>{k(!0)},[]),er=(0,et.useCallback)(()=>{k(!1)},[]),en=(0,et.useCallback)(()=>{let e=e=>(0,r.jsx)(eA.Ay,{type:"primary",icon:(0,r.jsx)(tL.A,{}),style:{borderRadius:20,zIndex:999},onClick:G,disabled:!H,loading:g,children:e});return u?"aiAct"===d?(0,r.jsx)(ee.A,{title:"Start executing until some interaction actions need to be performed. You can see the process of planning and locating.",children:e("Dry Run")}):e("Run"):p?(0,r.jsx)(eA.Ay,{icon:(0,r.jsx)(tZ.A,{}),onClick:h,style:{borderRadius:20,zIndex:999},children:"Stop"}):e("Run")},[u,g,G,h,H,d,p]);return(0,r.jsxs)("div",{className:"prompt-input-wrapper",children:[(0,r.jsxs)("div",{className:"mode-radio-group-wrapper",children:[(0,r.jsxs)("div",{className:"mode-radio-group",ref:R,children:[(0,r.jsx)(Ah.A.Item,{name:"type",style:{margin:0},children:(0,r.jsx)(tJ.A.Group,{buttonStyle:"solid",disabled:!s,children:Av.map(e=>{var A;return(0,r.jsx)(ee.A,{title:(null==(A=AE[e])?void 0:A.title)||"",children:(0,r.jsx)(tJ.A.Button,{value:e,children:t6(e)})},e)})})}),(0,r.jsx)(tb.A,{menu:(A=Z.filter(e=>!Av.includes(e)),t=[],(n=A.filter(e=>{var A;return(null==(A=AE[e])?void 0:A.group)==="interaction"})).length>0&&t.push({key:"interaction-group",type:"group",label:"Interaction APIs",children:n.map(e=>{var A;return{key:e,label:t6(e),title:(null==(A=AE[e])?void 0:A.title)||"",onClick:()=>{l.setFieldValue("type",e)}}})}),(o=A.filter(e=>{var A;return(null==(A=AE[e])?void 0:A.group)==="extraction"})).length>0&&t.push({key:"extraction-group",type:"group",label:"Data Extraction APIs",children:o.map(e=>{var A;return{key:e,label:t6(e),title:(null==(A=AE[e])?void 0:A.title)||"",onClick:()=>{l.setFieldValue("type",e)}}})}),(i=A.filter(e=>{var A;return(null==(A=AE[e])?void 0:A.group)==="validation"})).length>0&&t.push({key:"validation-group",type:"group",label:"Validation APIs",children:i.map(e=>{var A;return{key:e,label:t6(e),title:(null==(A=AE[e])?void 0:A.title)||"",onClick:()=>{l.setFieldValue("type",e)}}})}),(a=A.filter(e=>!AE[e])).length>0&&t.push({key:"device-specific-group",type:"group",label:"Device-Specific APIs",children:a.map(e=>({key:e,label:t6(e),title:"",onClick:()=>{l.setFieldValue("type",e)}}))}),{items:t}),placement:"bottomLeft",trigger:["click"],disabled:!s,overlayClassName:"more-apis-dropdown",children:(0,r.jsxs)(eA.Ay,{className:`more-apis-button ${!Av.includes(d)?"selected-from-dropdown":""}`,children:[d&&!Av.includes(d)?t6(d):"more",(0,r.jsx)(tX.A,{style:{fontSize:"10px",marginLeft:"2px"}})]})})]}),(0,r.jsxs)("div",{className:"action-icons",children:[L&&(0,r.jsx)("div",{className:b?"settings-wrapper settings-wrapper-hover":"settings-wrapper",onMouseEnter:$,onMouseLeave:er,children:(0,r.jsx)(t8,{enableTracking:"In-Browser-Extension"===c,showDeepLocateOption:z,showDeepThinkOption:Q,showDataExtractionOptions:B,hideDomAndScreenshotOptions:E,deviceType:v})}),(0,r.jsx)(ru,{onSelect:F,history:M,currentType:d})]})]}),(0,r.jsxs)("div",{className:`main-side-console-input ${!s?"disabled":""} ${g?"loading":""}`,children:[D?K?V?_():(0,r.jsx)("div",{className:"structured-params-container",children:_()}):(0,r.jsx)(Ah.A.Item,{name:"prompt",style:{margin:0},children:(0,r.jsx)(rg,{className:"main-side-console-input-textarea",disabled:!s,rows:3,placeholder:I,autoFocus:!0,onKeyDown:W,onChange:q,ref:x})}):(0,r.jsxs)("div",{className:"no-input-method",style:{padding:"20px",textAlign:"center",color:"#666",fontSize:"14px"},children:['Click "Run" to execute ',t6(d)]}),(0,r.jsx)("div",{className:"form-controller-wrapper",children:en()})]})]})};function rh(e,A,t,r,n,o,i){try{var a=e[o](i),s=a.value}catch(e){t(e);return}a.done?A(s):Promise.resolve(s).then(r,n)}function rf(e){return function(){var A=this,t=arguments;return new Promise(function(r,n){var o=e.apply(A,t);function i(e){rh(o,r,n,i,a,"next",e)}function a(e){rh(o,r,n,i,a,"throw",e)}i(void 0)})}}let{Text:ry}=Ao.A;function rE(e){let{error:A}=e;if(!A)return null;let t=A.replace(/^(Error:\s*)+/,"Error: ");return(0,r.jsx)(Am.A,{message:(0,r.jsx)("span",{style:{color:"#ff4d4f"},children:t}),type:"error",showIcon:!0})}function rv(e){let{playgroundSDK:A,storage:t,contextProvider:n,config:o={},branding:i={},className:a="",dryMode:s=!1,showContextPreview:l=!0}=e,[c]=Ah.A.useForm(),{config:d}=N(),[u,p]=(0,et.useState)(!1);(0,et.useEffect)(()=>{c.setFieldsValue({type:Av["0"]})},[c]),(0,et.useEffect)(()=>{rf(function*(){if(A&&"function"==typeof A.checkStatus)try{yield A.checkStatus(),p(!0)}catch(e){console.warn("Failed to initialize SDK, using default namespace:",e),p(!0)}else p(!0)})()},[A]);let g=(0,et.useMemo)(()=>{if(t)return t;if(!u)return null;let e=o.storageNamespace||(A&&A.id&&"string"==typeof A.id?`agent-${A.id}`:"playground-default"),r=A2();return console.log(`Using ${r} storage for namespace: ${e}`),A1(r,e)},[t,u,o.storageNamespace,A]),{loading:m,setLoading:h,infoList:f,setInfoList:y,actionSpace:E,actionSpaceLoading:v,uiContextPreview:b,setUiContextPreview:k,showScrollToBottomButton:C,verticalMode:S,replayCounter:I,setReplayCounter:x,infoListRef:R,currentRunningIdRef:j,interruptedFlagRef:w,clearInfoList:P,handleScrollToBottom:O}=function(e,A,t,r){let[n,o]=(0,et.useState)(!1),[i,a]=(0,et.useState)([]),[s,l]=(0,et.useState)([]),[c,d]=(0,et.useState)(!0),[u,p]=(0,et.useState)(),[g,m]=(0,et.useState)(!1),[h,f]=(0,et.useState)(!0),y=(0,et.useRef)(0),[E,v]=(0,et.useState)(!1),[b,k]=(0,et.useState)(0),C=(0,et.useRef)(null),S=(0,et.useRef)(null),I=(0,et.useRef)({}),x=(0,et.useRef)(!1);(0,et.useEffect)(()=>{let e=()=>A5(function*(){let e=A7(A6({},Ab(r)),{id:"welcome",timestamp:new Date});if(null==A?void 0:A.loadMessages)try{let t=yield A.loadMessages();0===t.length&&(t=yield A5(function*(){let e=A1(A2(),"playground-default");try{if(null==e?void 0:e.loadMessages){let t=yield e.loadMessages();if(t.length>1)return console.log("Found data in old namespace, migrating..."),(null==A?void 0:A.saveMessages)&&(yield A.saveMessages(t)),e.clearMessages&&(yield e.clearMessages()),t}}catch(e){console.debug("No data found in old namespace:",e)}return[]})()),t.some(e=>"welcome"===e.id)?a(t):a([e,...t])}catch(A){console.error("Failed to load messages:",A),a([e])}else a([e])})();A&&!x.current?(x.current=!0,e()):A||0!==i.length||e()},[A]),(0,et.useEffect)(()=>{(null==A?void 0:A.saveMessages)&&i.length>1&&A.saveMessages(i).catch(e=>{e instanceof DOMException&&"QuotaExceededError"===e.name?console.warn("Storage quota exceeded - some messages may not be saved persistently"):console.error("Failed to save messages:",e)})},[i,A]),(0,et.useEffect)(()=>{(null==t?void 0:t.getUIContext)&&!u&&t.getUIContext().then(e=>p(e)).catch(e=>{console.error("Failed to get UI context:",e)})},[t,u]),(0,et.useEffect)(()=>{A5(function*(){d(!0);try{var A;if(!e)return void l([]);let r=u||(yield null==t||null==(A=t.getUIContext)?void 0:A.call(t)),n=yield e.getActionSpace(r);l(n||[])}catch(e){console.error("Failed to load action space:",e),l([])}finally{d(!1)}})()},[e,u,t]),(0,et.useEffect)(()=>{v(window.innerWidth<750);let e=()=>{v(window.innerWidth<750)};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let R=(0,et.useCallback)(()=>{setTimeout(()=>{C.current&&(C.current.scrollTop=C.current.scrollHeight)},100)},[]),j=(0,et.useCallback)(()=>{if(C.current){let{scrollTop:e,scrollHeight:A,clientHeight:t}=C.current,r=e+t>=A-10;m(!r);let n=e<y.current;y.current=e,r?f(!0):n&&f(!1)}},[]),w=(0,et.useCallback)(()=>{C.current&&(C.current.scrollTo({top:C.current.scrollHeight,behavior:"smooth"}),m(!1),f(!0))},[]);(0,et.useEffect)(()=>{i.length>0&&h&&R()},[i,R,h]),(0,et.useEffect)(()=>{let e=C.current;if(e)return e.addEventListener("scroll",j),j(),()=>{e.removeEventListener("scroll",j)}},[j]);let P=(0,et.useCallback)(()=>A5(function*(){if(a([A7(A6({},Ab(r)),{id:"welcome",timestamp:new Date})]),null==A?void 0:A.clearMessages)try{yield A.clearMessages()}catch(e){console.error("Failed to clear stored messages:",e)}})(),[A,r]),N=(0,et.useCallback)(()=>A5(function*(){if(null==t?void 0:t.refreshContext)try{let e=yield t.refreshContext();p(e)}catch(e){console.error("Failed to refresh context:",e)}})(),[t]);return{loading:n,setLoading:o,infoList:i,setInfoList:a,actionSpace:s,actionSpaceLoading:c,uiContextPreview:u,setUiContextPreview:p,showScrollToBottomButton:g,verticalMode:E,replayCounter:b,setReplayCounter:k,infoListRef:C,currentRunningIdRef:S,interruptedFlagRef:I,clearInfoList:P,refreshContext:N,handleScrollToBottom:w,scrollToBottom:R}}(A,g,n,i.targetName),{handleRun:T,handleStop:M,canStop:K}=function(e){let{playgroundSDK:A,storage:t,actionSpace:r,loading:n,setLoading:o,setInfoList:i,replayCounter:a,setReplayCounter:s,verticalMode:l,currentRunningIdRef:c,interruptedFlagRef:d,deviceType:u}=e,{deepLocate:p,deepThink:g,screenshotIncluded:m,domIncluded:h,imeStrategy:f,autoDismissKeyboard:y,keyboardDismissStrategy:E,alwaysRefreshScreenInfo:v}=N(),b=(0,et.useCallback)(e=>AP(function*(){if(!A)return void console.warn("PlaygroundSDK is not available");let r=Date.now(),n=e.type,b=`${e.type}: ${e.prompt||JSON.stringify(e.params)}`,k={id:`user-${Date.now()}`,type:"user",content:b,timestamp:new Date};i(e=>[...e,k]),o(!0);let C=AN({},Ak),S={id:`system-${r}`,type:"system",content:"",timestamp:new Date,loading:!0,loadingProgressText:""};i(e=>[...e,S]);try{c.current=r,d.current[r]=!1,A.onDumpUpdate&&A.onDumpUpdate((e,A)=>{var t;if(d.current[r]||!(null==A||null==(t=A.tasks)?void 0:t.length))return;let n=A.tasks.map((e,A)=>{var t;let n,o;return{id:`progress-${r}-task-${A}`,type:"progress",content:(n=e0(e),(o=e2(e))?`${n} - ${o}`:n),timestamp:new Date((null==(t=e.timing)?void 0:t.start)||Date.now()),result:e.error?{error:AT(e.error),result:null}:void 0}});i(e=>{let A=e.findIndex(e=>e.id===`system-${r}`);if(-1===A)return e;let t=e.filter(e=>!("progress"===e.type&&e.id.startsWith(`progress-${r}-`)));return[...t.slice(0,A+1),...n,...t.slice(A+1)]})}),"aiAct"!==n&&g&&console.warn("[Playground] Non-aiAct action will be executed without deepThink. deepThink is only forwarded for aiAct.",{actionType:n,requestId:r.toString()});let t=AO(AN({requestId:r.toString(),deepLocate:p},"aiAct"===n?{deepThink:g}:{}),{screenshotIncluded:m,domIncluded:h,deviceOptions:{imeStrategy:f,autoDismissKeyboard:y,keyboardDismissStrategy:E,alwaysRefreshScreenInfo:v}});if(C.result=yield A.executeAction(n,e,t),"object"==typeof C.result&&null!==C.result){let e=C.result;e.dump&&(C.dump=e.dump),e.reportHTML&&(C.reportHTML=e.reportHTML),e.error&&(C.error=AT(e.error)),"result"in e&&(C.result=e.result)}}catch(e){C.error=AT(e),console.error("Playground execution error:",e),"object"==typeof e&&null!==e&&(e.dump&&(C.dump=e.dump),e.reportHTML&&(C.reportHTML=e.reportHTML))}if(d.current[r])return;o(!1),c.current=null;let I=null,x=a;if((null==C?void 0:C.dump)&&C.dump.tasks&&Array.isArray(C.dump.tasks)){let e=AR(AM(C.dump,u));s(e=>e+1),I=e,x=a+1}i(e=>e.map(e=>e.id===`system-${r}`?AO(AN({},e),{content:"",loading:!1,loadingProgressText:""}):e));let R={id:`result-${r}`,type:"result",content:"Execution result",timestamp:new Date,result:C,loading:!1,replayScriptsInfo:I,replayCounter:x,loadingProgressText:"",verticalMode:l,actionType:n};if(i(e=>[...e,R]),null==t?void 0:t.saveResult)try{yield t.saveResult(R.id,R)}catch(e){console.error("Failed to save result:",e)}let j={id:`separator-${r}`,type:"separator",content:"New Session",timestamp:new Date};i(e=>[...e,j])})(),[A,t,r,o,i,a,s,l,c,d,p,g,m,h,u,f,y,E,v]),k=(0,et.useCallback)(()=>AP(function*(){let e=c.current;if(e&&A&&A.cancelExecution)try{let r=yield A.cancelExecution(e.toString()),n=null;if(r)n=r;else if(A.getCurrentExecutionData)try{n=yield A.getCurrentExecutionData()}catch(e){console.error("Failed to get execution data before stop:",e)}if(d.current[e]=!0,o(!1),A.onProgressUpdate&&A.onProgressUpdate(()=>{}),A.onDumpUpdate&&A.onDumpUpdate(()=>{}),i(A=>A.map(A=>A.id===`system-${e}`?AO(AN({},A),{content:"",loading:!1,loadingProgressText:""}):A)),n&&(n.dump||n.reportHTML)){var t;let A=null,r=a;if((null==(t=n.dump)?void 0:t.tasks)&&Array.isArray(n.dump.tasks)){let e=AM(n.dump,u);A=AR(e),s(e=>e+1),r=a+1}let o={id:`stop-result-${e}`,type:"result",content:"Execution stopped by user",timestamp:new Date,result:{result:null,dump:n.dump,reportHTML:n.reportHTML,error:null},loading:!1,verticalMode:l,replayScriptsInfo:A,replayCounter:r};i(e=>[...e,o])}else{let A={id:`stop-${e}`,type:"system",content:"Operation stopped",timestamp:new Date,loading:!1};i(e=>[...e,A])}let c={id:`separator-${e}`,type:"separator",content:"New Session",timestamp:new Date};i(e=>[...e,c])}catch(e){console.error("Failed to stop execution:",e)}})(),[A,c,d,o,i,l,a,u]);return{handleRun:b,handleStop:k,canStop:n&&!!c.current&&!!A&&!!A.cancelExecution}}({playgroundSDK:A,storage:g,actionSpace:E,loading:m,setLoading:h,setInfoList:y,replayCounter:I,setReplayCounter:x,verticalMode:S,currentRunningIdRef:j,interruptedFlagRef:w,deviceType:o.deviceType});(0,et.useEffect)(()=>{(null==A?void 0:A.overrideConfig)&&d&&A.overrideConfig(d).catch(e=>{console.error("Failed to override SDK config:",e);let A=e instanceof Error?e.message:String(e);W.Ay.error(`Failed to apply AI configuration: ${A}`)})},[A,d]);let D=(0,et.useCallback)(()=>rf(function*(){try{let e=c.getFieldsValue();yield T(e)}catch(e){W.Ay.error((null==e?void 0:e.message)||"Execution failed")}})(),[c,T]),B=Object.keys(d||{}).length>=1,z=o.serverMode||!s&&!v&&B,Q=Ah.A.useWatch("type",c),L=(0,et.useMemo)(()=>A&&"function"==typeof A.getServiceMode?A.getServiceMode():"Server",[A]),Z=l&&!1!==o.showContextPreview,X=o.layout||"vertical",J=!1!==o.showVersionInfo,U=o.deviceType;return(0,r.jsx)("div",{className:`playground-container ${X}-mode ${a}`.trim(),children:(0,r.jsxs)(Ah.A,{form:c,onFinish:D,className:"command-form",children:[Z&&(0,r.jsx)("div",{className:"context-preview-section",children:(0,r.jsx)(tc,{uiContextPreview:b,setUiContextPreview:k,showContextPreview:Z})}),(0,r.jsxs)("div",{className:"middle-dialog-area",children:[f.length>1&&(0,r.jsx)("div",{className:"clear-button-container",children:(0,r.jsx)(eA.Ay,{size:"small",icon:(0,r.jsx)(Ad.A,{}),onClick:P,type:"text",className:"clear-button"})}),(0,r.jsx)("div",{ref:R,className:"info-list-container",children:(0,r.jsx)(Af.A,{itemLayout:"vertical",dataSource:f,renderItem:e=>{var A,t,n,o;let a,s,l,c,d,u;return(0,r.jsx)(Af.A.Item,{className:"list-item",children:"user"===e.type?(0,r.jsx)("div",{className:"user-message-container",children:(0,r.jsx)("div",{className:"user-message-bubble",children:e.content})}):"progress"===e.type?(0,r.jsx)("div",{children:(s=null==(A=(a=e.content.split(" - "))[0])?void 0:A.trim(),l=a.slice(1).join(" - ").trim(),c=f.findIndex(A=>A.id===e.id),d=f.slice(c+1).some(e=>"progress"===e.type),u=m&&!d,(0,r.jsxs)(r.Fragment,{children:[s&&(0,r.jsxs)("span",{className:"progress-action-item",children:[s,(0,r.jsx)("span",{className:`progress-status-icon ${u?"loading":(null==(t=e.result)?void 0:t.error)?"error":"completed"}`,children:u?(0,r.jsx)(Au.A,{spin:!0}):(null==(n=e.result)?void 0:n.error)?"✗":"✓"})]}),l&&(0,r.jsx)("div",{children:(0,r.jsx)(to,{text:l,className:"progress-description",disabled:!u})}),(null==(o=e.result)?void 0:o.error)&&(0,r.jsx)(rE,{error:e.result.error})]}))}):"separator"===e.type?(0,r.jsxs)("div",{className:"new-conversation-separator",children:[(0,r.jsx)("div",{className:"separator-line"}),(0,r.jsx)("div",{className:"separator-text-container",children:(0,r.jsx)(ry,{type:"secondary",className:"separator-text",children:e.content})})]}):(0,r.jsxs)("div",{className:"system-message-container",children:[(0,r.jsxs)("div",{className:"system-message-header",children:[(0,r.jsx)(Ap.A,{component:i.icon||tQ,style:{fontSize:20}}),(0,r.jsx)("span",{className:"system-message-title",children:i.title||"Playground"})]}),(e.content||e.result)&&(0,r.jsx)("div",{className:"system-message-content",children:"result"===e.type?(0,r.jsx)(tz,{result:e.result||null,loading:e.loading||!1,serverValid:!0,serviceMode:L,replayScriptsInfo:e.replayScriptsInfo||null,replayCounter:e.replayCounter||0,loadingProgressText:e.loadingProgressText||"",verticalMode:e.verticalMode||!1,fitMode:"width",actionType:e.actionType}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"system-message-text",children:e.content}),e.loading&&e.loadingProgressText&&(0,r.jsx)("div",{className:"loading-progress-text",children:(0,r.jsx)("span",{children:e.loadingProgressText})})]})})]})},e.id)}})}),C&&!1!==o.enableScrollToBottom&&(0,r.jsx)(eA.Ay,{className:"scroll-to-bottom-button",type:"primary",shape:"circle",icon:(0,r.jsx)(Ag.A,{}),onClick:O,size:"large"})]}),(0,r.jsxs)("div",{className:"bottom-input-section",children:[o.showEnvConfigReminder?(0,r.jsx)(tu,{}):null,(0,r.jsx)(rm,{runButtonEnabled:z,form:c,serviceMode:L,selectedType:Q,dryMode:s,stoppable:K,loading:m,onRun:D,onStop:M,actionSpace:E,deviceType:U})]}),J&&i.version&&(0,r.jsx)("div",{className:"version-info-section",children:(0,r.jsxs)("span",{className:"version-text",children:["Midscene.js version: ",i.version]})})]})})}function rb(){let{config:e}=N(),A=(0,et.useMemo)(()=>new e8({type:"remote-execution"}),[]);return(0,et.useEffect)(()=>{(async()=>{try{let e=await A.checkStatus();console.log("[DEBUG] Android playground server status:",e,"ID:",A.id)}catch(e){console.error("Failed to check android playground server status:",e)}})()},[A]),(0,et.useEffect)(()=>{A.overrideConfig&&e&&A.overrideConfig(e).catch(e=>{console.error("Failed to override SDK config:",e)})},[A,e]),(0,r.jsxs)("div",{className:"playground-panel",children:[(0,r.jsx)("div",{className:"playground-panel-header",children:(0,r.jsxs)("div",{className:"header-row",children:[(0,r.jsx)(At,{}),(0,r.jsx)(Ac,{showTooltipWhenEmpty:!1,showModelName:!1})]})}),(0,r.jsx)("div",{className:"playground-panel-playground",children:(0,r.jsx)(rv,{playgroundSDK:A,config:{showContextPreview:!1,layout:"vertical",showVersionInfo:!0,enableScrollToBottom:!0,serverMode:!0,showEnvConfigReminder:!0,deviceType:"android"},branding:{title:"Android Playground",version:"1.5.6"},className:"playground-container"})})]})}var rk=t(4093),rC=t(3393),rS=t(6418),rI=t(4452),rx=t(5094),rR=t(5656),rj=t(4540),rw=t(9582);let rP=e=>(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16",...e,children:(0,r.jsx)("path",{fill:"#000",fillOpacity:.25,fillRule:"evenodd",d:"M9.68 2c1.2-1.2 3.2-1.28 4.4-.08s1.12 3.2-.08 4.4l-2.16 2.16c-.24.24-.56.24-.8 0s-.24-.56 0-.8l2.16-2.16c.8-.8.8-2.08.08-2.8s-2-.72-2.8.08L8.32 4.96c-.24.24-.56.24-.8 0s-.24-.56 0-.8zM5.6 13.2l2.16-2.16c.24-.24.56-.24.8 0s.24.56 0 .8L6.4 14c-1.2 1.2-3.12 1.36-4.4.08-1.36-1.28-1.2-3.2.08-4.4l2.16-2.16c.24-.24.56-.24.8 0s.24.56 0 .8l-2.16 2.16c-.8.8-.88 2-.08 2.8s2 .72 2.8-.08m4.64-8.24c.24-.24.64-.24.96 0 .24.24.24.64 0 .96L5.92 11.2c-.24.24-.64.24-.96 0-.24-.24-.24-.64 0-.96z",clipRule:"evenodd"})}),rN=e=>(0,r.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16",...e,children:[(0,r.jsxs)("g",{fill:"#606266",clipPath:"url(#screenshot_svg__a)",children:[(0,r.jsx)("path",{d:"m4.883 2.663-.858 2.001h-2.69v8.673h13.341V4.664H11.32l-.859-2zm-1.738.667.858-2.001h7.338l.858 2.001h2.477a1.334 1.334 0 0 1 1.334 1.334v8.673a1.335 1.335 0 0 1-1.334 1.334H1.334A1.334 1.334 0 0 1 0 13.337V4.664A1.334 1.334 0 0 1 1.334 3.33z"}),(0,r.jsx)("path",{d:"M8.005 10.001a1.334 1.334 0 1 0 0-2.668 1.334 1.334 0 0 0 0 2.668m0 1.335a2.668 2.668 0 1 1 0-5.337 2.668 2.668 0 0 1 0 5.337m3.336-6.004h.667q.667 0 .667.667 0 .666-.667.667h-.667q-.667 0-.667-.667t.667-.667"})]}),(0,r.jsx)("defs",{children:(0,r.jsx)("clipPath",{id:"screenshot_svg__a",children:(0,r.jsx)("path",{fill:"#fff",d:"M0 0h16v16H0z"})})})]}),rO=e=>(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16",...e,children:(0,r.jsx)("path",{fill:"#FF4550",d:"M14.08 1.92C12.88.72 10.88.8 9.68 2L7.52 4.16c-.24.24-.24.56 0 .8s.56.24.8 0l2.16-2.16c.8-.8 2.08-.8 2.8-.08s.72 2-.08 2.8l-2.16 2.16c-.24.24-.24.56 0 .8s.56.24.8 0L14 6.32c1.2-1.2 1.28-3.2.08-4.4m-6.32 9.12L5.6 13.2c-.8.8-2 .88-2.8.08s-.72-2 .08-2.8l2.16-2.16c.24-.24.24-.56 0-.8s-.56-.24-.8 0L2.08 9.68C.8 10.88.64 12.8 2 14.08c1.28 1.28 3.2 1.12 4.4-.08l2.16-2.16c.24-.24.24-.56 0-.8s-.56-.24-.8 0M5.92 4.96c-.24-.24-.64-.24-.96 0-.24.24-.24.64 0 .96l5.28 5.28c.24.24.64.24.96 0 .24-.24.24-.64 0-.96z"})}),{Text:rT}=Ao.A,rM=(0,et.forwardRef)((e,A)=>{let{serverUrl:t,maxSize:n=1024,autoConnect:o=!0,autoReconnect:i=!0,reconnectInterval:a=5e3}=e,[s,l]=(0,et.useState)(!1),[c,d]=(0,et.useState)(!1),[u,p]=(0,et.useState)(null),[g,m]=(0,et.useState)(""),h=(0,et.useRef)(null),f=(0,et.useRef)(null),y=(0,et.useRef)(null),E=(0,et.useRef)(null),v=(0,et.useRef)(null),b=(0,et.useRef)(null),k=Ae(!0),C=(0,et.useCallback)(e=>{if(e)try{for(;e.firstChild;)try{e.removeChild(e.firstChild)}catch(A){if(console.warn("Failed to remove child, skipping:",A),e.firstChild){e.innerHTML="";break}}}catch(A){console.error("Error clearing container:",A);try{e.innerHTML=""}catch(e){console.error("Failed to reset innerHTML:",e)}}},[]),S=(0,et.useCallback)(()=>{if(!y.current||!f.current||!u)return;let e=f.current,A=y.current,t=e.clientWidth,r=e.clientHeight,{width:n,height:o}=u,i=r-40,a=n/o,s=t,l=t/a;l>i&&(l=i,s=i*a),A.width=n,A.height=o,A.style.width=`${s}px`,A.style.height=`${l}px`,A.style.marginTop="20px",A.style.marginBottom="20px"},[u]);(0,et.useEffect)(()=>{let e=()=>{S()};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[S]),(0,et.useEffect)(()=>{S()},[u,S]);let I=async()=>{if(rS.p.isSupported){let e=new rS.p;return{renderer:e,element:e.canvas}}let e=new rI.x;return{renderer:e,element:e.canvas}},x=async e=>{if(!rC.p.isSupported)throw Error("Current browser does not support WebCodecs API, please use the latest version of Chrome/Edge browser");let{renderer:A,element:t}=await I();if(y.current=t,f.current){let e=f.current.querySelector(".canvas-wrapper");e&&(C(e),e.appendChild(y.current))}return new rC.p({codec:e,renderer:A})},R=async()=>{if(E.current)try{let e=await E.current.snapshot();if(e){let A=URL.createObjectURL(e),t=document.createElement("a");t.href=A,t.download=`screenshot_${new Date().toISOString().replace(/:/g,"-")}.png`,t.click(),URL.revokeObjectURL(A)}}catch(e){console.error("screenshot failed:",e),alert("screenshot failed")}},j=(0,et.useCallback)(()=>{if(E.current)try{E.current.dispose(),E.current=null}catch(e){console.error("Error disposing decoder:",e)}f.current&&C(f.current.querySelector(".canvas-wrapper")),h.current&&(h.current.disconnect(),h.current=null),v.current&&(clearTimeout(v.current),v.current=null),b.current&&(clearTimeout(b.current),b.current=null),d(!1),l(!1),p(null)},[C]);(0,et.useImperativeHandle)(A,()=>({disconnectDevice:j}),[j]);let w=(0,et.useCallback)(async()=>{try{if(j(),d(!1),l(!0),p(null),await new Promise(e=>setTimeout(e,150)),!t){console.error("Cannot connect: missing server URL"),l(!1);return}let e=()=>{b.current&&(clearTimeout(b.current),b.current=null),b.current=setTimeout(()=>{var A;if(null==(A=h.current)?void 0:A.connected)try{h.current.emit("connect-device",{maxSize:n}),e()}catch(e){console.error("Failed to request connection:",e),W.Ay.error("connection request failed, please refresh the page")}else try{h.current&&setTimeout(()=>{h.current&&h.current.connect()},500)}catch(e){console.error("Failed to reconnect:",e),W.Ay.error("reconnection failed, please refresh the page")}},5e3)};if(h.current)h.current.connected?(h.current.emit("connect-device",{maxSize:n}),e()):h.current.connect();else try{h.current=(0,el.io)(t,{withCredentials:!0,reconnection:!0,reconnectionAttempts:5,reconnectionDelay:1e3,timeout:1e4}),h.current.on("connect",()=>{var A,t;(null==(A=h.current)?void 0:A.id)&&m(h.current.id),v.current&&(clearTimeout(v.current),v.current=null),null==(t=h.current)||t.emit("connect-device",{maxSize:n}),e()}),h.current.on("video-metadata",async e=>{try{let A,t,r;if(b.current&&(clearTimeout(b.current),b.current=null),E.current)try{E.current.dispose(),E.current=null}catch(e){console.error("Error disposing old decoder:",e)}if(f.current){let e=f.current.querySelector(".canvas-wrapper");C(e)}let n=(null==e?void 0:e.codec)?e.codec:rk.n.H264;if(E.current=await x(n),!E.current)throw Error("Failed to create decoder");E.current.sizeChanged(e=>{let{width:A,height:t}=e;p({width:A,height:t})}),(A=!1,t=[],r=new TransformStream({transform(e,r){let n={type:e.type,data:new Uint8Array(e.data),timestamp:e.timestamp};"configuration"===n.type?(r.enqueue(n),A=!0,t.length>0&&(t.forEach(e=>r.enqueue(e)),t=[])):"data"===n.type?A?r.enqueue(n):t.push(n):r.enqueue(n)}}),new ReadableStream({start(e){let A=!1,t=t=>{if(!A)try{e.enqueue(t)}catch(e){console.error("error occurred while enqueuing video data:",e),A=!0,o()}},r=t=>{console.error("stream error:",t),A||(e.error(Error(t.message)),A=!0,o())},n=()=>{A||(e.close(),A=!0,o())},o=()=>{h.current&&(h.current.off("video-data",t),h.current.off("error",r),h.current.off("disconnect",n))};return h.current&&(h.current.on("video-data",t),h.current.on("error",r),h.current.on("disconnect",n)),()=>{A=!0,o()}}}).pipeThrough(r)).pipeTo(E.current.writable).catch(e=>{console.error("video stream processing error:",e)}),d(!0),l(!1)}catch(e){console.error("Failed to initialize decoder:",e),l(!1)}}),h.current.on("error",e=>{console.error("server error:",e),W.Ay.error("server error"),l(!1),b.current&&(clearTimeout(b.current),b.current=null)}),h.current.on("disconnect",()=>{d(!1),b.current&&(clearTimeout(b.current),b.current=null),E.current&&(E.current.dispose(),E.current=null),f.current&&C(f.current.querySelector(".canvas-wrapper")),i&&!v.current&&(v.current=setTimeout(()=>{v.current=null,w()},a))})}catch(e){console.error("Failed to create socket connection:",e),l(!1),i&&!v.current&&(v.current=setTimeout(()=>{v.current=null,w()},a))}}catch(e){l(!1),console.error(`Failed to connect: ${e.message}`),W.Ay.error("connection failed"),i&&!v.current&&(v.current=setTimeout(()=>{v.current=null,w()},a))}},[t,n,i,a,j]);return(0,et.useEffect)(()=>{if(o&&!c&&!s){let e=setTimeout(()=>{w()},300);return()=>clearTimeout(e)}},[o,c,s,w]),(0,et.useEffect)(()=>()=>{if(E.current)try{E.current.dispose(),E.current=null}catch(e){console.error("Error disposing decoder during unmount:",e)}if(f.current)try{let e=f.current.querySelector(".canvas-wrapper");e&&(e.innerHTML="")}catch(e){console.error("Error clearing canvas wrapper during unmount:",e)}h.current&&(h.current.disconnect(),h.current=null),v.current&&(clearTimeout(v.current),v.current=null),b.current&&(clearTimeout(b.current),b.current=null)},[]),(0,r.jsx)("div",{className:"scrcpy-container",children:(0,r.jsxs)(rx.A,{children:[c&&(0,r.jsxs)("div",{className:"header-bar",children:[(0,r.jsxs)("div",{className:"header-left",children:[(0,r.jsx)(rT,{style:{fontWeight:600,fontSize:12},children:"Screen Projection"}),(0,r.jsx)(ee.A,{placement:"bottom",title:`Device ID: ${g||"Unknown"}`,children:(0,r.jsx)(Y.A,{})})]}),(0,r.jsx)("div",{className:"screen-info",children:(0,r.jsxs)(rT,{type:"secondary",children:["size : ",null==u?void 0:u.width,"\xd7",null==u?void 0:u.height]})}),(0,r.jsxs)("div",{className:"header-right",children:[(0,r.jsx)(ee.A,{placement:"bottom",title:"Screenshot",children:(0,r.jsx)(eA.Ay,{icon:(0,r.jsx)(rN,{}),onClick:R})}),(0,r.jsx)(rR.A,{type:"vertical",style:{margin:"0 16px"}}),(0,r.jsx)(ee.A,{placement:"bottom",title:"Connect Device",children:(0,r.jsx)(eA.Ay,{disabled:c,style:{backgroundColor:"#fff"},icon:(0,r.jsx)(rP,{}),onClick:w})}),c&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(rR.A,{type:"vertical",style:{margin:"0 16px"}}),(0,r.jsx)(ee.A,{title:"Disconnect Device",children:(0,r.jsx)(eA.Ay,{icon:(0,r.jsx)(rO,{}),onClick:j})})]})]})]}),(0,r.jsx)(rj.A,{gutter:[16,16],children:(0,r.jsx)(rw.A,{span:24,children:(0,r.jsx)("div",{className:"video-section",children:(0,r.jsxs)("div",{ref:f,className:"video-container",children:[(0,r.jsx)("div",{className:"canvas-wrapper"}),!c&&k&&(0,r.jsxs)("div",{className:"empty-state",children:[(0,r.jsx)("div",{className:"empty-state-icon",children:"\uD83D\uDCF1"}),(0,r.jsx)("div",{className:"empty-state-text",children:s?"Connecting to device...":"No device connected"}),!s&&(0,r.jsx)(eA.Ay,{type:"primary",onClick:()=>{w()},children:"Connect now"}),s&&(0,r.jsx)("div",{className:"loading-spinner",children:(0,r.jsx)($.A,{size:"large"})})]}),!k&&(0,r.jsx)("span",{children:"Please launch playground server!"})]})})})})]})})}),{Content:rK}=ei.A,rD=document.getElementById("root");rD&&n.createRoot(rD).render((0,r.jsx)(function(){let[e,A]=(0,et.useState)(null),[t,n]=(0,et.useState)(!1),[o,i]=W.Ay.useMessage(),[a,s]=(0,et.useState)(`http://${window.location.hostname}:5700`),[l,c]=(0,et.useState)(!1),[d,u]=(0,et.useState)(!1),{config:p}=N();(0,et.useEffect)(()=>{!function(e){let A=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=!(arguments.length>2)||void 0===arguments[2]||arguments[2];try{G(e,A)}catch(A){let e=A instanceof Error?A:Error(String(A));return console.error("Failed to override AI config:",e),t&&W.Ay.error(`Failed to apply AI configuration: ${e.message}`),!1}}(p)},[p]),(0,et.useEffect)(()=>{let e=window.SCRCPY_PORT;e&&s(`http://${window.location.hostname}:${e}`)},[]);let g=(0,et.useRef)(null),m=(0,et.useRef)(null);return(0,et.useEffect)(()=>{if(!a)return;let e=(0,el.io)(a,{withCredentials:!0,reconnectionAttempts:5,reconnectionDelay:1e3,timeout:5e3});return e.on("connect",()=>{e.emit("get-devices")}),e.on("devices-list",e=>{e.currentDeviceId&&(A(e.currentDeviceId),n(!0))}),e.on("connect_error",e=>{console.error("Socket.IO connection error:",e),o.error("Waiting for device server connection, please try again later")}),e.on("error",e=>{console.error("Socket.IO error:",e),o.error(`Error occurred while communicating with the server: ${e.message||"Unknown error"}`)}),g.current=e,()=>{e.disconnect()}},[o,a]),(0,et.useEffect)(()=>{if(t){let e=setTimeout(()=>{n(!1)},800);return()=>clearTimeout(e)}},[t]),(0,et.useEffect)(()=>{let e=()=>{c(window.innerWidth<=1024)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),(0,et.useEffect)(()=>{u(!!e&&/^\d+\.\d+\.\d+\.\d+:\d+$/.test(e))},[e]),(0,r.jsxs)(ea.Ay,{theme:{token:{colorPrimary:"#2B83FF"},components:{Layout:{headerHeight:60,headerPadding:"0 30px",headerBg:"#FFF",bodyBg:"#FFF"}}},children:[i,(0,r.jsx)(ei.A,{className:"app-container playground-container vertical-mode",children:(0,r.jsx)(rK,{className:"app-content",children:(0,r.jsxs)(es.YZ,{autoSaveId:"android-playground-layout",direction:l?"vertical":"horizontal",children:[(0,r.jsx)(es.Zk,{defaultSize:l?67:32,maxSize:l?85:60,minSize:l?67:25,className:"app-panel left-panel",children:(0,r.jsx)("div",{className:"panel-content left-panel-content",children:(0,r.jsx)(rb,{})})}),(0,r.jsx)(es.TW,{className:`panel-resize-handle ${l?"vertical":"horizontal"}`}),(0,r.jsx)(es.Zk,{className:"app-panel right-panel",children:(0,r.jsxs)("div",{className:"panel-content right-panel-content",children:[(0,r.jsx)(AA,{selectedDeviceId:e,scrcpyPlayerRef:m}),d?(0,r.jsx)(eo,{getScreenshot:()=>fetch("/screenshot").then(e=>e.json()),getInterfaceInfo:()=>fetch("/interface-info").then(e=>e.json()),serverOnline:!0,isUserOperating:!1}):(0,r.jsx)(rM,{ref:m,serverUrl:a,autoConnect:t})]})})]})})})]})},{}))},1182(){},3198(e,A,t){"use strict";t.d(A,{ZH:()=>u});var r=t(3244),n=t(5207),o=t(3078),i=t.n(o),a=t(217),s=t(9368),l=t(9152),c=t(5409);let d="midscene_run",u=e=>{if(!l.$9)return"";let A=(()=>{if(!l.$9)return"";let e=i().resolve(c.cwd(),l.$9?(0,a.j)(s.Tr)||d:"");if(!(0,r.existsSync)(e))try{(0,r.mkdirSync)(e,{recursive:!0})}catch(A){e=i().join((0,n.tmpdir)(),d),(0,r.mkdirSync)(e,{recursive:!0})}return e})(),t=i().join(A,e);return(0,r.existsSync)(t)||(0,r.mkdirSync)(t,{recursive:!0}),t}},217(e,A,t){"use strict";t.d(A,{j:()=>o});var r=t(9368),n=t(5409);let o=e=>{if(!r.Wh.includes(e))throw Error(`getBasicEnvValue with key ${e} is not supported.`);return n.env[e]}},9368(e,A,t){"use strict";t.d(A,{$:()=>x,$H:()=>p,$L:()=>l,$l:()=>i,AU:()=>b,BQ:()=>R,CA:()=>I,Cn:()=>es,DL:()=>ey,El:()=>B,FU:()=>d,HR:()=>n,I2:()=>r,IQ:()=>u,JM:()=>w,Jq:()=>k,Km:()=>f,Lg:()=>ev,Lh:()=>F,M1:()=>v,NF:()=>N,OK:()=>eo,OY:()=>ed,Od:()=>j,Sk:()=>M,T4:()=>X,TN:()=>Q,Tr:()=>L,UH:()=>eI,V7:()=>H,VM:()=>E,Vb:()=>eu,W4:()=>h,Wh:()=>eh,XE:()=>eb,YK:()=>z,Yf:()=>J,Yg:()=>V,Z$:()=>ea,Z7:()=>q,ZX:()=>s,_j:()=>eC,_q:()=>Z,aK:()=>y,aO:()=>eg,ag:()=>ei,b6:()=>S,c$:()=>ef,d8:()=>D,fS:()=>ee,ho:()=>K,iw:()=>c,jG:()=>C,j_:()=>T,kX:()=>U,mZ:()=>et,n0:()=>a,nc:()=>$,pp:()=>O,rd:()=>eE,rg:()=>g,sg:()=>el,tk:()=>ek,u1:()=>ep,v:()=>Y,v4:()=>o,vC:()=>G,wu:()=>ec,xP:()=>eA,xg:()=>W,y2:()=>_,yR:()=>em,yb:()=>P,zD:()=>m,zG:()=>en,zQ:()=>er});let r="MIDSCENE_MODEL_INIT_CONFIG_JSON",n="MIDSCENE_MODEL_NAME",o="MIDSCENE_DEBUG_MODEL_PROFILE",i="MIDSCENE_DEBUG_MODEL_RESPONSE",a="MIDSCENE_DEBUG_MODE",s="MIDSCENE_LANGSMITH_DEBUG",l="MIDSCENE_LANGFUSE_DEBUG",c="MIDSCENE_MODEL_SOCKS_PROXY",d="MIDSCENE_MODEL_HTTP_PROXY",u="MIDSCENE_MODEL_API_KEY",p="MIDSCENE_MODEL_BASE_URL",g="MIDSCENE_MODEL_MAX_TOKENS",m="MIDSCENE_MODEL_TIMEOUT",h="MIDSCENE_MODEL_TEMPERATURE",f="MIDSCENE_MODEL_RETRY_COUNT",y="MIDSCENE_MODEL_RETRY_INTERVAL",E="MIDSCENE_MODEL_REASONING_EFFORT",v="MIDSCENE_MODEL_REASONING_ENABLED",b="MIDSCENE_MODEL_REASONING_BUDGET",k="OPENAI_API_KEY",C="OPENAI_BASE_URL",S="MIDSCENE_OPENAI_INIT_CONFIG_JSON",I="MIDSCENE_OPENAI_HTTP_PROXY",x="MIDSCENE_OPENAI_SOCKS_PROXY",R="OPENAI_MAX_TOKENS",j="MIDSCENE_CACHE",w="MIDSCENE_USE_VLM_UI_TARS",P="MIDSCENE_USE_QWEN_VL",N="MIDSCENE_USE_QWEN3_VL",O="MIDSCENE_USE_DOUBAO_VISION",T="MIDSCENE_USE_GEMINI",M="MATCH_BY_POSITION",K="MIDSCENE_REPORT_TAG_NAME",D="MIDSCENE_REPORT_QUIET",B="MIDSCENE_PREFERRED_LANGUAGE",z="MIDSCENE_CACHE_MAX_FILENAME_LENGTH",Q="MIDSCENE_REPLANNING_CYCLE_LIMIT",L="MIDSCENE_RUN_DIR",Z="MIDSCENE_INSIGHT_MODEL_NAME",X="MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY",J="MIDSCENE_INSIGHT_MODEL_HTTP_PROXY",U="MIDSCENE_INSIGHT_MODEL_BASE_URL",F="MIDSCENE_INSIGHT_MODEL_API_KEY",q="MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON",V="MIDSCENE_INSIGHT_MODEL_TIMEOUT",H="MIDSCENE_INSIGHT_MODEL_TEMPERATURE",G="MIDSCENE_INSIGHT_MODEL_RETRY_COUNT",W="MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL",Y="MIDSCENE_INSIGHT_MODEL_FAMILY",_="MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT",$="MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED",ee="MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET",eA="MIDSCENE_PLANNING_MODEL_NAME",et="MIDSCENE_PLANNING_MODEL_SOCKS_PROXY",er="MIDSCENE_PLANNING_MODEL_HTTP_PROXY",en="MIDSCENE_PLANNING_MODEL_BASE_URL",eo="MIDSCENE_PLANNING_MODEL_API_KEY",ei="MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON",ea="MIDSCENE_PLANNING_MODEL_TIMEOUT",es="MIDSCENE_PLANNING_MODEL_TEMPERATURE",el="MIDSCENE_PLANNING_MODEL_RETRY_COUNT",ec="MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL",ed="MIDSCENE_PLANNING_MODEL_FAMILY",eu="MIDSCENE_PLANNING_MODEL_REASONING_EFFORT",ep="MIDSCENE_PLANNING_MODEL_REASONING_ENABLED",eg="MIDSCENE_PLANNING_MODEL_REASONING_BUDGET",em="MIDSCENE_MODEL_FAMILY",eh=[a,o,i,L],ef=[j,"MIDSCENE_MCP_USE_PUPPETEER_MODE","MIDSCENE_MCP_ANDROID_MODE",s,l,D],ey=[g,z,Q],eE=[g,R,"MIDSCENE_ADB_PATH","MIDSCENE_ADB_REMOTE_HOST","MIDSCENE_ADB_REMOTE_PORT","MIDSCENE_ANDROID_IME_STRATEGY","MIDSCENE_IOS_DEVICE_UDID","MIDSCENE_IOS_SIMULATOR_UDID",K,B,M,"MIDSCENE_MCP_CHROME_PATH","DOCKER_CONTAINER"],ev=[...ef,...ey,...eE],eb=[n,r,u,p,c,d,m,h,f,y,E,v,b,w,P,N,O,T,"MIDSCENE_USE_VL_MODEL",k,C,S,I,x,Z,X,J,U,F,q,V,H,G,W,Y,_,$,ee,eA,et,er,en,eo,ei,ea,es,el,ec,ed,eu,ep,eg,em],ek=["MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG",...eh,...ev,...eb],eC=["doubao-vision","doubao-seed","gemini","qwen2.5-vl","qwen3-vl","qwen3.5","vlm-ui-tars","vlm-ui-tars-doubao","vlm-ui-tars-doubao-1.5","glm-v","auto-glm","auto-glm-multilingual","gpt-5"];var eS,eI=((eS={}).V1_0="1.0",eS.V1_5="1.5",eS.DOUBAO_1_5_15B="doubao-1.5-15B",eS.DOUBAO_1_5_20B="doubao-1.5-20B",eS)},4565(e,A,t){"use strict";t.d(A,{Nw:()=>h,aZ:()=>function e(A,t){let r=`${p}:${A}`,o=(null==t?void 0:t.console)??!1,a=o?`${r}:withConsole`:r;if(!m.has(a))if(o){let t=e(A);m.set(a,function(){for(var e=arguments.length,A=Array(e),r=0;r<e;r++)A[r]=arguments[r];t(...A),console.warn("[Midscene]",...A)})}else{let e=c()(r);m.set(a,function(){for(var t=arguments.length,r=Array(t),o=0;o<t;o++)r[o]=arguments[o];u.$9&&function(e,A){if(!u.$9)return;let t=function(e){let A=e.replace(/:/g,"-");if(!g.has(A)){let e=i().join((0,d.ZH)("log"),`${A}.log`),t=n().createWriteStream(e,{flags:"a"});g.set(A,t)}return g.get(A)}(e),r=new Date,o=r.toLocaleDateString("sv-SE"),a=r.toLocaleTimeString("sv-SE"),s=r.getMilliseconds().toString().padStart(3,"0"),l=r.getTimezoneOffset(),c=Math.floor(Math.abs(l)/60).toString().padStart(2,"0"),p=(Math.abs(l)%60).toString().padStart(2,"0"),m=`${l<=0?"+":"-"}${c}:${p}`,h=`${o}T${a}.${s}${m}`;t.write(`[${h}] ${A}
|
|
12
|
+
`)}(A,s().format(...r)),e(...r)})}return m.get(a)}});var r=t(3244),n=t.n(r),o=t(3078),i=t.n(o),a=t(1344),s=t.n(a),l=t(7617),c=t.n(l),d=t(3198),u=t(9152);let p="midscene",g=new Map,m=new Map;function h(e){u.$9||c().enable(`${p}:${e}`)}},9152(e,A,t){"use strict";t.d(A,{$9:()=>l,NB:()=>E,Qd:()=>k,gQ:()=>g,gV:()=>b,ht:()=>a,rS:()=>s,tD:()=>u,uR:()=>c,vA:()=>p,x3:()=>v});var r,n=t(7086),o=t(3961),i=t(5409);let a="undefined"!=typeof window,s="undefined"!=typeof WorkerGlobalScope,l=void 0!==i&&(null==(r=i.versions)?void 0:r.node);function c(){return(0,o.A)()}let d={};function u(e){let A=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=JSON.stringify({content:A,rect:e}),r=5,o="",i=n.sha256.create().update(t).hex().split("").map(e=>String.fromCharCode(97+Number.parseInt(e,16)%26)).join("");for(;r<i.length-1;){if(d[o=i.slice(0,r)]&&d[o]!==t){r++;continue}d[o]=t;break}return o}function p(e,A){if(!e)throw Error(A||"Assertion failed")}function g(){for(var e=arguments.length,A=Array(e),t=0;t<e;t++)A[t]=arguments[t];console.log(...A)}let m=/</g,h=/>/g,f="__midscene_lt__",y="__midscene_gt__",E=e=>e.replace(m,f).replace(h,y),v=e=>{let A=RegExp(f,"g"),t=RegExp(y,"g");return e.replace(A,"<").replace(t,">")};function b(e){return e.replace(/[:*?"<>|# ]/g,"-")}function k(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}},4678(e){"use strict";if("undefined"==typeof sharp){var A=Error("Cannot find module 'sharp'");throw A.code="MODULE_NOT_FOUND",A}e.exports=sharp},6122(){},7407(){},9140(){},3009(){},2801(){},6970(){},3612(){},3244(){},5592(){}},s={};function l(e){var A=s[e];if(void 0!==A)return A.exports;var t=s[e]={exports:{}};return a[e].call(t.exports,t,t.exports,l),t.exports}l.m=a,l.n=e=>{var A=e&&e.__esModule?()=>e.default:()=>e;return l.d(A,{a:A}),A},A=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,l.t=function(t,r){if(1&r&&(t=this(t)),8&r||"object"==typeof t&&t&&(4&r&&t.__esModule||16&r&&"function"==typeof t.then))return t;var n=Object.create(null);l.r(n);var o={};e=e||[null,A({}),A([]),A(A)];for(var i=2&r&&t;("object"==typeof i||"function"==typeof i)&&!~e.indexOf(i);i=A(i))Object.getOwnPropertyNames(i).forEach(e=>{o[e]=()=>t[e]});return o.default=()=>t,l.d(n,o),n},l.d=(e,A)=>{for(var t in A)l.o(A,t)&&!l.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce((A,t)=>(l.f[t](e,A),A),[])),l.u=e=>"static/js/async/"+e+"."+({195:"cb0ab30e",236:"a5d2c1b1",271:"fab7ea08",467:"c7c737b5",985:"5e49bd21"})[e]+".js",l.miniCssF=e=>""+e+".css",l.g=(()=>{if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}})(),l.o=(e,A)=>Object.prototype.hasOwnProperty.call(e,A),t={},l.l=function(e,A,r,n){if(t[e])return void t[e].push(A);if(void 0!==r)for(var o,i,a=document.getElementsByTagName("script"),s=0;s<a.length;s++){var c=a[s];if(c.getAttribute("src")==e||c.getAttribute("data-rspack")=="android-playground:"+r){o=c;break}}o||(i=!0,(o=document.createElement("script")).timeout=120,l.nc&&o.setAttribute("nonce",l.nc),o.setAttribute("data-rspack","android-playground:"+r),o.src=e),t[e]=[A];var d=function(A,r){o.onerror=o.onload=null,clearTimeout(u);var n=t[e];if(delete t[e],o.parentNode&&o.parentNode.removeChild(o),n&&n.forEach(function(e){return e(r)}),A)return A(r)},u=setTimeout(d.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=d.bind(null,o.onerror),o.onload=d.bind(null,o.onload),i&&document.head.appendChild(o)},l.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r=[],l.O=(e,A,t,n)=>{if(A){n=n||0;for(var o=r.length;o>0&&r[o-1][2]>n;o--)r[o]=r[o-1];r[o]=[A,t,n];return}for(var i=1/0,o=0;o<r.length;o++){for(var[A,t,n]=r[o],a=!0,s=0;s<A.length;s++)(!1&n||i>=n)&&Object.keys(l.O).every(e=>l.O[e](A[s]))?A.splice(s--,1):(a=!1,n<i&&(i=n));if(a){r.splice(o--,1);var c=t();void 0!==c&&(e=c)}}return e},l.p="/",l.b=document.baseURI||self.location.href,n={410:0},l.f.j=function(e,A){var t=l.o(n,e)?n[e]:void 0;if(0!==t)if(t)A.push(t[2]);else{var r=new Promise((A,r)=>t=n[e]=[A,r]);A.push(t[2]=r);var o=l.p+l.u(e),i=Error();l.l(o,function(A){if(l.o(n,e)&&(0!==(t=n[e])&&(n[e]=void 0),t)){var r=A&&("load"===A.type?"missing":A.type),o=A&&A.target&&A.target.src;i.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",i.name="ChunkLoadError",i.type=r,i.request=o,t[1](i)}},"chunk-"+e,e)}},l.O.j=e=>0===n[e],o=(e,A)=>{var t,r,[o,i,a]=A,s=0;if(o.some(e=>0!==n[e])){for(t in i)l.o(i,t)&&(l.m[t]=i[t]);if(a)var c=a(l)}for(e&&e(A);s<o.length;s++)r=o[s],l.o(n,r)&&n[r]&&n[r][0](),n[r]=0;return l.O(c)},(i=self.webpackChunkandroid_playground=self.webpackChunkandroid_playground||[]).forEach(o.bind(null,0)),i.push=o.bind(null,i.push.bind(i));var c=l.O(void 0,["783","970"],()=>l(5723));c=l.O(c)})();
|
|
13
|
+
//# sourceMappingURL=index.369ca451.js.map
|