@midscene/harmony 1.16.1 → 1.16.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es/cli.mjs +1 -1
- package/dist/lib/cli.js +1 -1
- package/package.json +4 -4
- package/static/index.html +1 -1
- package/static/static/js/{index.b3706c8e.js → index.5f8b8c07.js} +16 -16
- package/static/static/js/index.5f8b8c07.js.map +1 -0
- package/static/static/js/index.b3706c8e.js.map +0 -1
- /package/static/static/js/{index.b3706c8e.js.LICENSE.txt → index.5f8b8c07.js.LICENSE.txt} +0 -0
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
/*! For license information please see index.
|
|
1
|
+
/*! For license information please see index.5f8b8c07.js.LICENSE.txt */
|
|
2
2
|
(()=>{var e,t,r,n,o,i,a,s={95902(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=95902,e.exports=t},75845(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=75845,e.exports=t},57125(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=57125,e.exports=t},39545(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=39545,e.exports=t},54593(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=54593,e.exports=t},8297(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=8297,e.exports=t},73657(e,t,r){"use strict";let n,o;var i,a=r(65723),s=r(22155),l=r(58997);let c=e=>{let{hideLogo:t=!1,lightSrc:r="https://lf3-static.bytednsdoc.com/obj/eden-cn/nupipfups/Midscene/midscene_with_text_light.png",darkSrc:n="https://lf3-static.bytednsdoc.com/obj/eden-cn/nupipfups/Midscene/midscene_with_text_dark.png"}=e,{isDarkMode:o}=function(){let[e,t]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{let e=()=>{var e;t("dark"===(null==(e=document.querySelector("[data-theme]"))?void 0:e.getAttribute("data-theme")))};e();let r=new MutationObserver(e),n=document.querySelector("[data-theme]")||document.documentElement;return r.observe(n,{attributes:!0,attributeFilter:["data-theme"]}),()=>r.disconnect()},[]),{isDarkMode:e}}();return t?null:(0,a.jsx)("div",{className:"logo",children:(0,a.jsx)("a",{href:"https://midscenejs.com/",target:"_blank",rel:"noreferrer",children:(0,a.jsx)("img",{alt:"Midscene_logo",src:o?n:r})})})};var A=r(4177),u=r(56766),d=r(66419),p=r(28594),h=r(49488),m=r(18926),f={};f.d=(e,t)=>{for(var r in t)f.o(t,r)&&!f.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},f.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var g={};f.r(g),f.d(g,{create:()=>m.vt});let{create:y}=g,v="midscene-auto-zoom",b="midscene-background-visible",w="midscene-elements-visible",E="midscene-model-call-details",x="midscene-dark-mode",k="midscene-playback-speed",S="midscene-subtitle-enabled",I=e=>{if("undefined"==typeof window)return;var t=new URLSearchParams(window.location.search).get(e);if(null===t)return;let r=t.trim().toLowerCase();return!!["1","true","yes","on"].includes(r)||!["0","false","no","off"].includes(r)&&void 0},C=y(e=>{let t="false"!==localStorage.getItem(v),r="false"!==localStorage.getItem(b),n="false"!==localStorage.getItem(w),o="true"===localStorage.getItem(E),i="true"===localStorage.getItem(x),a=Number.parseFloat(localStorage.getItem(k)||"1"),s=Number.isNaN(a)?1:a,l="false"!==localStorage.getItem(S),c=I("focusOnCursor"),A=I("showElementMarkers"),u=I("darkMode"),d=void 0===u?i:u;return void 0!==u&&localStorage.setItem(x,d.toString()),{backgroundVisible:r,elementsVisible:void 0===A?n:A,autoZoom:void 0===c?t:c,modelCallDetailsEnabled:o,darkModeEnabled:d,playbackSpeed:[.5,1,1.5,2].includes(s)?s:1,setBackgroundVisible:t=>{e({backgroundVisible:t}),localStorage.setItem(b,t.toString())},setElementsVisible:t=>{e({elementsVisible:t}),localStorage.setItem(w,t.toString())},setAutoZoom:t=>{e({autoZoom:t}),localStorage.setItem(v,t.toString())},setModelCallDetailsEnabled:t=>{e({modelCallDetailsEnabled:t}),localStorage.setItem(E,t.toString())},setDarkModeEnabled:t=>{e({darkModeEnabled:t}),localStorage.setItem(x,t.toString())},setPlaybackSpeed:t=>{e({playbackSpeed:t}),localStorage.setItem(k,t.toString())},subtitleEnabled:l,setSubtitleEnabled:t=>{e({subtitleEnabled:t}),localStorage.setItem(S,t.toString())}}}),O="midscene-env-config",R="midscene-service-mode",j="midscene-tracking-active-tab",P="midscene-deep-locate",M="midscene-deep-think",T="midscene-screenshot-included",N="midscene-dom-included",D="midscene-ime-strategy",z="midscene-screenshot-strategy",B="midscene-auto-dismiss-keyboard",F="midscene-keyboard-dismiss-strategy",L="midscene-always-refresh-screen-info",U=()=>localStorage.getItem(O)||"",K=e=>{let t=e.split("\n"),r={};return t.forEach(e=>{let t=e.trim();if(t.startsWith("#"))return;let n=t.replace(/^export\s+/i,"").replace(/;$/,"").trim().match(/^(\w+)\s*=\s*(.*)$/);if(n){let[,e,t]=n,o=t.trim();(o.startsWith("'")&&o.endsWith("'")||o.startsWith('"')&&o.endsWith('"'))&&(o=o.slice(1,-1)),r[e]=o}}),r},Z=y((e,t)=>{let r=U(),n=K(r),o=window.location.href.startsWith("chrome-extension"),i=localStorage.getItem(R),a="false"!==localStorage.getItem(j),s="true"===localStorage.getItem(P),l=localStorage.getItem(M),c="false"!==localStorage.getItem(T),A=localStorage.getItem(N)||"false";return{serviceMode:o?"In-Browser-Extension":i||"Server",setServiceMode:t=>{if(o)throw Error("serviceMode cannot be set in extension");e({serviceMode:t}),localStorage.setItem(R,t)},config:n,configString:r,setConfig:t=>e({config:t}),loadConfig:t=>{e({config:K(t),configString:t}),localStorage.setItem(O,t)},syncFromStorage:()=>{let t=U();e({config:K(t),configString:t})},forceSameTabNavigation:a,setForceSameTabNavigation:t=>{e({forceSameTabNavigation:t}),localStorage.setItem(j,t.toString())},deepLocate:s,setDeepLocate:t=>{e({deepLocate:t}),localStorage.setItem(P,t.toString())},deepThink:"true"===l||"false"!==l&&"unset",setDeepThink:t=>{e({deepThink:t}),localStorage.setItem(M,t.toString())},screenshotIncluded:c,setScreenshotIncluded:t=>{e({screenshotIncluded:t}),localStorage.setItem(T,t.toString())},domIncluded:"visible-only"===A?"visible-only":"true"===A,setDomIncluded:t=>{e({domIncluded:t}),localStorage.setItem(N,t.toString())},popupTab:"playground",setPopupTab:t=>{e({popupTab:t})},imeStrategy:localStorage.getItem(D)||"yadb-for-non-ascii",setImeStrategy:t=>{e({imeStrategy:t}),localStorage.setItem(D,t)},screenshotStrategy:localStorage.getItem(z)||"auto",setScreenshotStrategy:t=>{e({screenshotStrategy:t}),localStorage.setItem(z,t)},autoDismissKeyboard:"false"!==localStorage.getItem(B),setAutoDismissKeyboard:t=>{e({autoDismissKeyboard:t}),localStorage.setItem(B,t.toString())},keyboardDismissStrategy:localStorage.getItem(F)||"esc-first",setKeyboardDismissStrategy:t=>{e({keyboardDismissStrategy:t}),localStorage.setItem(F,t)},alwaysRefreshScreenInfo:"true"===localStorage.getItem(L),setAlwaysRefreshScreenInfo:t=>{e({alwaysRefreshScreenInfo:t}),localStorage.setItem(L,t.toString())}}});var J=r(64174),Q=r(68928),q=r(65584),X=r(7991),W=r(56620),H=r(25656);function Y(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function G(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){Y(i,n,o,a,s,"next",e)}function s(e){Y(i,n,o,a,s,"throw",e)}a(void 0)})}}let{TextArea:V}=J.A,$={},_=[{key:"MIDSCENE_MODEL_BASE_URL",placeholder:"https://dashscope.aliyuncs.com/compatible-mode/v1"},{key:"MIDSCENE_MODEL_API_KEY",placeholder:"sk-..."},{key:"MIDSCENE_MODEL_NAME",placeholder:"qwen3-vl-plus"},{key:"MIDSCENE_MODEL_FAMILY",placeholder:"qwen3-vl"}],ee=[{key:"replanningCycleLimit",label:"Replanning Cycle Limit",placeholder:"Model default"},{key:"waitAfterAction",label:"Wait After Action (ms)",placeholder:"Default: 300"},{key:"screenshotShrinkFactor",label:"Screenshot Shrink Factor",placeholder:"Default: 1"}];function et(e){var t,r,n,o,i,a;return{replanningCycleLimit:null!=(o=null==(t=e.replanningCycleLimit)?void 0:t.toString())?o:"",waitAfterAction:null!=(i=null==(r=e.waitAfterAction)?void 0:r.toString())?i:"",screenshotShrinkFactor:null!=(a=null==(n=e.screenshotShrinkFactor)?void 0:n.toString())?a:""}}function er(e){let t={};for(let r of e.split(/\r?\n/)){let e=r.trim();if(!e||e.startsWith("#"))continue;let n=e.indexOf("=");if(n<=0)continue;let o=e.slice(0,n).trim(),i=e.slice(n+1).trim();o&&(t[o]=i.replace(/^['"]|['"]$/g,""))}return t}function en(e,t,r){let n=e.split(/\r?\n/).filter(Boolean),o=n.findIndex(e=>e.trim().startsWith(`${t}=`));return r?o>=0?n[o]=`${t}=${r}`:n.push(`${t}=${r}`):o>=0&&n.splice(o,1),n.join("\n")}function eo(){return(0,a.jsx)("svg",{"aria-hidden":"true",fill:"none",height:"16",viewBox:"0 0 16 16",width:"16",children:(0,a.jsx)("path",{d:"M5 8.00002V3.95856L8.5 5.97929L12 8.00002L8.5 10.0208L5 12.0415V8.00002Z",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.33333"})})}function ei(e){let{isLoading:t}=e;return(0,a.jsx)("span",{className:"midscene-config-modal-verify-icon",children:t?(0,a.jsx)("svg",{"aria-hidden":"true",className:"midscene-config-modal-spinner",fill:"none",height:"16",viewBox:"0 0 16 16",width:"16",children:(0,a.jsx)("path",{d:"M8 1.5A6.5 6.5 0 1 0 14.5 8",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"1.5"})}):(0,a.jsx)(eo,{})})}function ea(e){var t,r,n;let{open:o,className:i,width:l=640,textValue:c="",agentOptionsValue:A=$,initialTab:u="text",showEnvStyleSelect:p=!1,envTextareaMinRows:h=7,envTextareaAutoSize:m=!0,showAgentOptions:f=!0,envFields:g=_,parseEnvText:y=er,setEnvFieldValue:v=en,validateEnvText:b,onClose:w,onSave:E,onVerify:x}=e,[k,S]=(0,s.useState)(u),[I,C]=(0,s.useState)(c),[O,R]=(0,s.useState)(()=>et(A)),[j,P]=(0,s.useState)({kind:"idle"}),[M,T]=(0,s.useState)(!1),[N,D]=(0,s.useState)(null),z=(0,s.useRef)(0);(0,s.useEffect)(()=>{o&&(z.current+=1,S(u),C(c),R(et(A)),P({kind:"idle"}),D(null))},[A,u,o,c]);let B=(0,s.useMemo)(()=>y(I),[y,I]),F=(0,s.useMemo)(()=>(function(e){let t={},r=e.replanningCycleLimit.trim(),n=e.waitAfterAction.trim(),o=e.screenshotShrinkFactor.trim();if(r){let e=Number(r);if(!Number.isInteger(e)||e<0)return{options:null,error:"Replanning cycle limit must be an integer greater than or equal to 0."};t.replanningCycleLimit=e}if(n){let e=Number(n);if(!Number.isFinite(e)||e<0)return{options:null,error:"Wait after action must be a number greater than or equal to 0."};t.waitAfterAction=e}if(o){let e=Number(o);if(!Number.isFinite(e)||e<1)return{options:null,error:"Screenshot shrink factor must be a number greater than or equal to 1."};t.screenshotShrinkFactor=e}return{options:t,error:null}})(O),[O]),L=null!=(t=null==b?void 0:b(I))?t:null,U=null!=L?L:"error"===j.kind?j.message:null,K=()=>{z.current+=1,P(e=>"idle"===e.kind?e:{kind:"idle"}),D(null)};return(0,a.jsx)(Q.A,{centered:!0,className:["midscene-config-modal",`midscene-config-modal--${k}`,i].filter(Boolean).join(" "),destroyOnClose:!0,footer:(0,a.jsxs)("div",{className:"midscene-config-modal-footer-actions",children:[(0,a.jsx)(q.Ay,{onClick:w,children:"Cancel"}),(0,a.jsx)(q.Ay,{disabled:!F.options,loading:M,onClick:()=>void G(function*(){if(F.options&&!M){T(!0),D(null);try{yield E({text:I,agentOptions:F.options})}catch(e){D(e instanceof Error?e.message:String(e))}finally{T(!1)}}})(),type:"primary",children:"Save"})]}),maskClosable:!0,onCancel:w,open:o,title:"Config",width:l,children:(0,a.jsxs)("div",{className:"midscene-config-modal-body-content",children:[(0,a.jsxs)("section",{className:"midscene-config-modal-env-section",children:[(0,a.jsxs)("div",{className:"midscene-config-modal-section-heading",children:[(0,a.jsxs)("div",{className:"midscene-config-modal-heading-copy",children:[(0,a.jsx)(d.A.Text,{strong:!0,children:"Model Env Config"}),(0,a.jsxs)(d.A.Text,{type:"secondary",children:["The format is KEY=VALUE and separated by new lines. These data will be saved ",(0,a.jsx)("strong",{children:"locally in your browser"}),"."]})]}),p?(0,a.jsx)(X.A,{"aria-label":"Model env config style",className:"midscene-config-modal-env-style-select",onChange:e=>{K(),S(e)},options:[{label:".env Style",value:"text"},{label:"Form Style",value:"form"}],value:k}):null]}),"form"===k&&p?(0,a.jsx)("div",{className:"midscene-config-modal-env-fields",children:g.map(e=>{var t;return(0,a.jsxs)("div",{className:"midscene-config-modal-env-field",children:[(0,a.jsx)("label",{htmlFor:`config-modal-${e.key}`,children:(0,a.jsx)(d.A.Text,{children:e.key})}),(0,a.jsx)(J.A,{"aria-label":`${e.key} value`,id:`config-modal-${e.key}`,onChange:t=>{K(),C(v(I,e.key,t.target.value))},placeholder:e.placeholder,value:null!=(t=B[e.key])?t:""})]},e.key)})}):(0,a.jsx)(V,{"aria-label":"Model environment configuration",className:"midscene-config-modal-env-textarea",onChange:e=>{K(),C(e.target.value)},autoSize:!!m&&{minRows:h},placeholder:"MIDSCENE_MODEL_BASE_URL=...\nMIDSCENE_MODEL_API_KEY=...\nMIDSCENE_MODEL_NAME=...\nMIDSCENE_MODEL_FAMILY=...",rows:h,value:I,wrap:"off"}),(0,a.jsxs)("div",{className:`midscene-config-modal-verify-row${U?" midscene-config-modal-verify-row--error":""}`,children:["success"===j.kind?(0,a.jsx)(W.A,{className:"midscene-config-modal-verify-alert",message:"Verified",showIcon:!0,type:"success"}):U?(0,a.jsx)(W.A,{className:"midscene-config-modal-verify-alert",message:U,showIcon:!0,type:"error"}):(0,a.jsx)("span",{}),x?(0,a.jsx)(q.Ay,{className:"midscene-config-modal-verify-button",disabled:!!L||"running"===j.kind,icon:(0,a.jsx)(ei,{isLoading:"running"===j.kind}),onClick:()=>void G(function*(){if(!x||L||"running"===j.kind)return;let e=z.current+1;z.current=e,P({kind:"running"});try{let t=yield x(B);if(z.current!==e)return;if(t.passed)return void P({kind:"success"});P({kind:"error",message:t.message||"Connectivity test failed without details."})}catch(t){if(z.current!==e)return;P({kind:"error",message:t instanceof Error?t.message:String(t)})}})(),children:"running"===j.kind?"Verifying":"Verify"}):null]})]}),f?(0,a.jsxs)("section",{className:"midscene-config-modal-agent-options",children:[(0,a.jsx)(H.A,{}),(0,a.jsxs)("div",{className:"midscene-config-modal-heading-copy",children:[(0,a.jsx)(d.A.Text,{strong:!0,children:"Agent Option Config"}),(0,a.jsx)(d.A.Text,{type:"secondary",children:"Leave a field empty to use the default value. Changes apply on the next Agent connection."})]}),(0,a.jsx)("div",{className:"midscene-config-modal-option-fields",children:ee.map(e=>(0,a.jsxs)("div",{className:"midscene-config-modal-option-field",children:[(0,a.jsx)("label",{htmlFor:`config-modal-${e.key}`,children:(0,a.jsx)(d.A.Text,{children:e.label})}),(0,a.jsx)(J.A,{"aria-label":e.label,id:`config-modal-${e.key}`,min:+("screenshotShrinkFactor"===e.key),onChange:t=>{K(),R(r=>{var n,o;return n=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},r),o=o={[e.key]:t.target.value},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(o)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(o,e))}),n})},placeholder:e.placeholder,type:"number",value:O[e.key]})]},e.key))}),(null!=(r=F.error)?r:N)?(0,a.jsx)(W.A,{message:null!=(n=F.error)?n:N,showIcon:!0,type:"error"}):null]}):null]})})}function es(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function el(e){let{showTooltipWhenEmpty:t=!0,showModelName:r=!0,tooltipPlacement:n="bottom",mode:o="icon",playgroundSDK:i,onVerify:l,agentOptions:c,onAgentOptionsSave:A,configModalClassName:u,configModalWidth:d,envTextareaAutoSize:m,envTextareaMinRows:f}=e,{config:g,configString:y,loadConfig:v,syncFromStorage:b}=Z(),[w,E]=(0,s.useState)(!1),x=g.MIDSCENE_MODEL_NAME,k=(0,s.useRef)(null),S=null!=l?l:(null==i?void 0:i.runConnectivityTest)?i.runConnectivityTest.bind(i):void 0,I=e=>{b(),E(!0),e.preventDefault(),e.stopPropagation()};return(0,s.useEffect)(()=>{w&&b()},[w,b]),(0,a.jsxs)("div",{ref:k,style:{alignItems:"center",display:"flex",gap:"10px",height:"100%",justifyContent:"flex-end",minHeight:"32px"},children:[r?x:null,(0,a.jsx)(h.A,{align:{offset:[-10,5]},getPopupContainer:()=>k.current,open:!w&&(t?0===Object.keys(g).length:void 0),placement:n,title:"Please set up your environment variables before using.",children:"icon"===o?(0,a.jsx)(p.A,{onClick:I}):(0,a.jsx)("span",{onClick:I,style:{color:"#006AFF",cursor:"pointer"},children:"set up"})}),(0,a.jsx)(ea,{agentOptionsValue:c,className:u,envTextareaAutoSize:m,envTextareaMinRows:f,width:d,onClose:()=>E(!1),onSave:e=>{var t;let{text:r,agentOptions:n}=e;return(t=function*(){let e=!1,t=!1;try{yield null==A?void 0:A(n),e=!!A,t=!0,v(r),E(!1)}catch(n){let r=[];if(t)try{v(y)}catch(e){r.push(e)}if(e)try{yield null==A?void 0:A(null!=c?c:{})}catch(e){r.push(e)}if(r.length>0)throw Error(`Saving configuration failed and rollback was incomplete. Original error: ${String(n)}. Rollback errors: ${r.map(String).join("; ")}`);throw n}},function(){var e=this,r=arguments;return new Promise(function(n,o){var i=t.apply(e,r);function a(e){es(i,n,o,a,s,"next",e)}function s(e){es(i,n,o,a,s,"throw",e)}a(void 0)})})()},onVerify:S?e=>S(e):void 0,open:w,parseEnvText:K,showAgentOptions:!!A,textValue:y})]})}function ec(e){let{showEnvConfig:t=!0,showTooltipWhenEmpty:r=!1,showModelName:n=!1,githubUrl:o="https://github.com/web-infra-dev/midscene",helpUrl:i="https://midscenejs.com/quick-start.html#chrome-extension",className:s="",playgroundSDK:l,onVerify:c,agentOptions:p,onAgentOptionsSave:h,configModalClassName:m,configModalWidth:f,envTextareaAutoSize:g,envTextareaMinRows:y}=e;return(0,a.jsxs)("div",{className:`nav-actions ${s}`,children:[(0,a.jsx)(d.A.Link,{href:o,target:"_blank",children:(0,a.jsx)(A.A,{className:"nav-icon"})}),(0,a.jsx)(d.A.Link,{href:i,target:"_blank",children:(0,a.jsx)(u.A,{className:"nav-icon"})}),t&&(0,a.jsx)(el,{showTooltipWhenEmpty:r,showModelName:n,playgroundSDK:l,onVerify:c,agentOptions:p,configModalClassName:m,configModalWidth:f,envTextareaAutoSize:g,envTextareaMinRows:y,onAgentOptionsSave:h})]})}var eA=r(46453),eu=r(34458);let ed=e=>{var t,r;return(0,a.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none",viewBox:"0 0 24 24"},e),r=r={children:[(0,a.jsx)("path",{stroke:"#6D6D6D",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M22 9.483A14.53 14.53 0 0 0 9.75 5.674M19 12.9a9.85 9.85 0 0 0-4.75-2.642M5 12.9a10 10 0 0 1 2.18-1.65M8 16.157a5.63 5.63 0 0 1 2.5-1.455"}),(0,a.jsx)("path",{fill:"#6D6D6D",fillRule:"evenodd",d:"M12 20a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5",clipRule:"evenodd"}),(0,a.jsx)("path",{stroke:"#6D6D6D",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M20 20 4 4M2 9.483a15 15 0 0 1 1.75-1.42"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};function ep(e){let{title:t="Connect to a device"}=e;return(0,a.jsx)("div",{style:{display:"flex",height:"100%",width:"100%",alignItems:"center",justifyContent:"center"},children:(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",gap:4},children:[(0,a.jsx)(ed,{"aria-hidden":"true",style:{width:24,height:24,objectFit:"contain"}}),(0,a.jsx)("h2",{style:{margin:0,whiteSpace:"nowrap",textAlign:"center",fontSize:13,lineHeight:"24px",fontWeight:400,color:"rgba(0, 0, 0, 0.85)"},children:t})]})})}var eh=r(1352),em=r(80955),ef=r(16921);function eg(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function ey(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){eg(i,n,o,a,s,"next",e)}function s(e){eg(i,n,o,a,s,"throw",e)}a(void 0)})}}function ev(e){let{getScreenshot:t,getInterfaceInfo:r,serverOnline:n,isUserOperating:o=!1,mjpegUrl:i,mode:l="default",contentRef:c}=e,[A,u]=(0,s.useState)(null),[d,p]=(0,s.useState)(!1),[m,f]=(0,s.useState)(null),[g,y]=(0,s.useState)(0),[v,b]=(0,s.useState)(null),[w,E]=(0,s.useState)(()=>String(Date.now())),x=(0,s.useRef)(null),k=!!(i&&n),S=["screenshot-viewer","screen-only"===l&&"screen-only"].filter(Boolean).join(" "),I=(0,s.useRef)(null),C=(0,s.useRef)(!1);(0,s.useEffect)(()=>{if(!k)return;let e=()=>{let e=x.current;!e||e.naturalWidth>0||e.naturalHeight>0||E(String(Date.now()))},t=window.setTimeout(e,2500),r=window.setInterval(e,2500);return()=>{window.clearTimeout(t),window.clearInterval(r)}},[k,w,i]);let O=(0,s.useCallback)(function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return ey(function*(){if(n){p(!0),e&&f(null);try{let e=yield t();if(console.log("Screenshot API response:",e),null==e?void 0:e.screenshot){let t=e.screenshot.toString().trim();t?(u(t),f(null),y(Date.now())):f("Empty screenshot data received")}else f("No screenshot data in response")}catch(e){console.error("Screenshot fetch error:",e),f(e instanceof Error?e.message:"Failed to fetch screenshot")}finally{p(!1)}}})()},[t,n]),R=(0,s.useCallback)(()=>ey(function*(){if(n&&r)try{let e=yield r();e&&b(e)}catch(e){console.error("Interface info fetch error:",e)}})(),[r,n]),j=(0,s.useCallback)(()=>{I.current&&clearInterval(I.current),console.log("Starting screenshot polling (5s interval)"),I.current=setInterval(()=>{!C.current&&n&&O(!1)},5e3)},[O,n]),P=(0,s.useCallback)(()=>{I.current&&(console.log("Stopping screenshot polling"),clearInterval(I.current),I.current=null)},[]),M=(0,s.useCallback)(()=>{console.log("Pausing screenshot polling"),C.current=!0},[]),T=(0,s.useCallback)(()=>{console.log("Resuming screenshot polling"),C.current=!1},[]),N=(0,s.useCallback)(()=>{O(!0)},[O]);if((0,s.useEffect)(()=>{if(!n){u(null),f(null),b(null),P();return}return(R(),k)?void P():(O(!1),j(),()=>{P()})},[n,k,j,P,O,R]),(0,s.useEffect)(()=>{n&&!k&&(o?M():(T(),O(!1)))},[o,M,T,O,n,k]),(0,s.useEffect)(()=>()=>{P()},[P]),!n)return(0,a.jsx)("div",{className:`${S} offline`,children:(0,a.jsxs)("div",{className:"screenshot-placeholder",children:[(0,a.jsx)("h3",{children:"\uD83D\uDCF1 Screen Preview"}),(0,a.jsx)("p",{children:"Start the playground server to see real-time screenshots"})]})});if(!k&&d&&!A)return(0,a.jsxs)("div",{className:`${S} loading`,children:[(0,a.jsx)(ef.A,{size:"large"}),(0,a.jsx)("p",{children:"Loading screenshot..."})]});if(!k&&m&&!A)return(0,a.jsx)("div",{className:`${S} error`,children:(0,a.jsxs)("div",{className:"screenshot-placeholder",children:[(0,a.jsx)("h3",{children:"\uD83D\uDCF1 Screen Preview"}),(0,a.jsx)("p",{className:"error-message",children:m})]})});let D=(0,a.jsx)("div",{className:"screenshot-content",ref:c,children:k?(0,a.jsx)("div",{className:"screenshot-image-shell",children:(0,a.jsx)("img",{ref:x,src:w?`${i}${(null==i?void 0:i.includes("?"))?"&":"?"}_mjpegRetry=${encodeURIComponent(w)}`:i,alt:"Device Live Stream",className:"screenshot-image",onError:()=>{window.setTimeout(()=>E(String(Date.now())),500)}},w||"initial")}):A?(0,a.jsx)("div",{className:"screenshot-image-shell",children:(0,a.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)),f("Failed to load screenshot image")}})}):(0,a.jsx)("div",{className:"screenshot-placeholder",children:(0,a.jsx)("p",{children:"No screenshot available"})})});return"screen-only"===l?(0,a.jsx)("div",{className:S,children:D}):(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("div",{className:"screenshot-header",children:(0,a.jsx)("div",{className:"screenshot-title",children:(0,a.jsx)("h3",{children:(null==v?void 0:v.type)?v.type:"Device Name"})})}),(0,a.jsxs)("div",{className:"screenshot-container",children:[(0,a.jsxs)("div",{className:"screenshot-overlay",children:[(0,a.jsxs)("div",{className:"device-name-overlay",children:["Device Name",(0,a.jsx)(h.A,{title:null==v?void 0:v.description,children:(0,a.jsx)(eh.A,{size:16,className:"info-icon"})})]}),!k&&(0,a.jsxs)("div",{className:"screenshot-controls",children:[g>0&&(0,a.jsxs)("span",{className:"last-update-time",children:["Last updated ",(e=>{if(!e)return"";let t=Math.floor((Date.now()-e)/1e3);return t<60?`${t}s ago`:t<3600?`${Math.floor(t/60)}m ago`:new Date(e).toLocaleTimeString()})(g)]}),(0,a.jsx)(h.A,{title:"Refresh screenshot",children:(0,a.jsx)(q.Ay,{icon:(0,a.jsx)(em.A,{}),onClick:N,loading:d,size:"small"})}),o&&(0,a.jsxs)("span",{className:"operation-indicator",children:[(0,a.jsx)(ef.A,{size:"small"})," Operating..."]})]})]}),D]})]})}var eb=r(43393),ew=r(2651),eE=r(22397);let ex=new Set(["Backspace","Delete","Enter","Tab","Escape","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End","PageUp","PageDown"]),ek=new Set(["Alt","Control","Meta","Shift"]);function eS(e,t){let r=t.width/t.height;if(e.height<=0||e.width<=0)return e;if(e.width/e.height>r){let t=e.height*r;return{left:e.left+(e.width-t)/2,top:e.top,width:t,height:e.height}}let n=e.width/r;return{left:e.left,top:e.top+(e.height-n)/2,width:e.width,height:n}}function eI(e){let{enabled:t,deviceSize:r,onTap:n,onSwipe:o,scrollEnabled:i=!1,onWheelScroll:l,keyboardEnabled:c=!1,onTextInput:A,onKeyboardPress:u,contentRef:d,tapMaxDistance:p=8,tapMaxDurationMs:h=250,style:m}=e,f=(0,s.useRef)(null),g=(0,s.useRef)(null),y=(0,s.useRef)(null),v=(0,s.useRef)(!1),b=(0,s.useRef)(!1),w=(0,s.useRef)(0),E=(0,s.useRef)(null),x=(0,s.useRef)(null),k=(0,s.useRef)(null),S=(0,s.useCallback)(()=>{if(c){b.current=!0;let e=g.current;e&&document.activeElement!==e&&e.focus({preventScroll:!0})}},[c]),I=(0,s.useCallback)((e,t)=>{c&&Promise.resolve(t).catch(()=>void 0).then(()=>{window.setTimeout(()=>{b.current&&w.current===e&&S()},0)})},[S,c]),C=(0,s.useCallback)((e,t)=>{let r=f.current,n=g.current;if(!r||!n)return;let o=r.getBoundingClientRect();n.style.left=`${Math.max(0,e-o.left)}px`,n.style.top=`${Math.max(0,t-o.top)}px`},[]),O=(0,s.useCallback)((e,t,n)=>{if(!r)return null;let o=(e-n.left)/n.width,i=(t-n.top)/n.height;return{x:Math.max(0,Math.min(r.width-1,Math.round(o*r.width))),y:Math.max(0,Math.min(r.height-1,Math.round(i*r.height)))}},[r]),R=(0,s.useCallback)(e=>{var n;if(!t||!r||!f.current||0!==e.button&&"mouse"===e.pointerType)return;let o=eS((null!=(n=null==d?void 0:d.current)?n:f.current).getBoundingClientRect(),r);if(e.clientX<o.left||e.clientX>o.left+o.width||e.clientY<o.top||e.clientY>o.top+o.height){b.current=!1;return}C(e.clientX,e.clientY);let i=w.current+1;w.current=i,S();try{f.current.setPointerCapture(e.pointerId)}catch(e){}y.current={startX:e.clientX,startY:e.clientY,startTime:performance.now(),contentRect:o,keyboardFocusRequestId:i},e.preventDefault()},[d,t,r,S,C]),j=(0,s.useCallback)((e,t)=>{let r=y.current;if(y.current=null,!r)return;try{var i;null==(i=f.current)||i.releasePointerCapture(e.pointerId)}catch(e){}if(t)return;let a=e.clientX-r.startX,s=e.clientY-r.startY,l=Math.sqrt(a*a+s*s),c=Math.max(0,performance.now()-r.startTime),A=O(r.startX,r.startY,r.contentRect),u=O(e.clientX,e.clientY,r.contentRect);A&&u&&(E.current=u,l<=p&&c<=h?I(r.keyboardFocusRequestId,null==n?void 0:n(A)):null==o||o(A,u,Math.round(c)))},[n,o,O,I,p,h]),P=(0,s.useCallback)(e=>j(e,!1),[j]),M=(0,s.useCallback)(e=>j(e,!0),[j]),T=(0,s.useCallback)(()=>{let e=x.current;x.current=null,k.current&&(clearTimeout(k.current),k.current=null),e&&(null==l||l(e.point,{deltaX:e.deltaX,deltaY:e.deltaY}))},[l]),N=(0,s.useCallback)(e=>{var n;if(!t||!i||!r||!f.current)return;let o=eS((null!=(n=null==d?void 0:d.current)?n:f.current).getBoundingClientRect(),r);if(e.clientX<o.left||e.clientX>o.left+o.width||e.clientY<o.top||e.clientY>o.top+o.height)return;let a=O(e.clientX,e.clientY,o);if(!a)return;e.preventDefault(),e.stopPropagation();let s=x.current;x.current={point:a,deltaX:((null==s?void 0:s.deltaX)||0)+e.deltaX,deltaY:((null==s?void 0:s.deltaY)||0)+e.deltaY},k.current&&clearTimeout(k.current),k.current=setTimeout(T,80)},[d,r,t,T,O,i]),D=(0,s.useCallback)(()=>{var e;(null==(e=g.current)?void 0:e.value)&&(g.current.value="")},[]),z=(0,s.useCallback)(e=>{var t;if(c&&b.current){if(!e.altKey&&(e.metaKey||e.ctrlKey)&&"c"===e.key.toLowerCase()&&function(e){let t=window.getSelection();if(!t||t.isCollapsed||!e)return!1;let{anchorNode:r,focusNode:n}=t;return!!r&&!!n&&!e.contains(r)&&!e.contains(n)}(f.current)){b.current=!1;return}if(!v.current&&!e.isComposing&&!function(e){if("F5"===e.key||"F11"===e.key||"F12"===e.key)return!0;if(!(e.metaKey||e.ctrlKey))return!1;let t=e.key.toLowerCase();return!!e.altKey&&"i"===t||!!e.shiftKey&&("i"===t||"j"===t)||new Set(["r","q","w","m","h","n","t","+","=","-","_","0"]).has(t)}(e)&&(ex.has(e.key)||e.altKey||e.ctrlKey||e.metaKey)){let r=function(e){if(ek.has(e.key))return null;let t=[];return e.ctrlKey&&t.push("Control"),e.metaKey&&t.push("Meta"),e.altKey&&t.push("Alt"),e.shiftKey&&"Shift"!==e.key&&t.push("Shift"),t.push(" "===e.key?"Space":e.key),t.join("+")}(e);if(!r)return;e.preventDefault(),e.stopPropagation(),null==u||u(r,null!=(t=E.current)?t:void 0)}}},[c,u]),B=(0,s.useCallback)(e=>{var t;if(!c||!b.current)return;let r=e.clipboardData.getData("text");r&&(e.preventDefault(),e.stopPropagation(),null==A||A(r,null!=(t=E.current)?t:void 0))},[c,A]),F=(0,s.useCallback)(e=>{var t,r,n,o,i;if(!c||!b.current){v.current||D();return}if(v.current)return;let a=e.nativeEvent;if("insertLineBreak"===a.inputType){D(),e.preventDefault(),e.stopPropagation(),null==u||u("Enter",null!=(r=E.current)?r:void 0);return}if("deleteContentBackward"===a.inputType){D(),e.preventDefault(),e.stopPropagation(),null==u||u("Backspace",null!=(n=E.current)?n:void 0);return}if("deleteContentForward"===a.inputType){D(),e.preventDefault(),e.stopPropagation(),null==u||u("Delete",null!=(o=E.current)?o:void 0);return}let s=a.data||(null==(t=g.current)?void 0:t.value)||"";D(),s&&(e.preventDefault(),e.stopPropagation(),null==A||A(s,null!=(i=E.current)?i:void 0))},[D,c,u,A]);return((0,s.useEffect)(()=>{t||(y.current=null,x.current=null,k.current&&(clearTimeout(k.current),k.current=null),v.current=!1,b.current=!1,E.current=null)},[t]),(0,s.useEffect)(()=>{if(!t||!c){b.current=!1;return}let e=e=>{let t=f.current;t&&e.target instanceof Node&&t.contains(e.target)||(b.current=!1)};return window.addEventListener("keydown",z,!0),window.addEventListener("pointerdown",e,!0),()=>{window.removeEventListener("keydown",z,!0),window.removeEventListener("pointerdown",e,!0)}},[t,z,c]),(0,s.useEffect)(()=>()=>{k.current&&(clearTimeout(k.current),k.current=null)},[]),(0,s.useEffect)(()=>{let e=f.current;if(e&&t&&i)return e.addEventListener("wheel",N,{passive:!1}),()=>{e.removeEventListener("wheel",N)}},[t,N,i]),t&&r)?(0,a.jsx)("div",{ref:f,onPointerDown:R,onPointerUp:P,onPointerCancel:M,onContextMenu:e=>e.preventDefault(),"data-midscene-device-interaction-layer":"true",style:function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({position:"absolute",inset:0,zIndex:5,cursor:c?"default":"crosshair",outline:"none",color:"transparent",caretColor:"transparent",touchAction:"none",userSelect:"none"},m),children:c?(0,a.jsx)("textarea",{ref:g,"data-midscene-keyboard-sink":"true",tabIndex:-1,onPaste:B,onCompositionStart:()=>{b.current=!0,v.current=!0},onCompositionEnd:e=>{var t,r;if(!c||!b.current)return;v.current=!1;let n=e.data||(null==(t=g.current)?void 0:t.value)||"";D(),n&&(null==A||A(n,null!=(r=E.current)?r:void 0))},onInput:F,style:{position:"absolute",left:0,top:0,width:32,height:24,opacity:0,pointerEvents:"none",appearance:"none",boxShadow:"none",overflow:"hidden",resize:"none",border:0,padding:0,margin:0,outline:"none",background:"transparent",color:"transparent",caretColor:"transparent",fontSize:16,lineHeight:"20px",transform:"translate(-50%, -50%)"}}):null}):null}var eC=r(94093),eO=r(96418),eR=r(34452),ej=r(72644);let eP=[1e3,2e3,3e3,3e3];function eM(){return"Preparing Android device connection…"}function eT(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function eN(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){eT(i,n,o,a,s,"next",e)}function s(e){eT(i,n,o,a,s,"throw",e)}a(void 0)})}}function eD(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}let{Text:ez}=d.A;function eB(e){let{connectingOverlay:t,deviceId:r,onIntrinsicSize:n,onStatusChange:o,renderErrorOverlay:i,serverUrl:l,metadataTimeoutMs:c=55e3,viewportStyle:A,contentRef:u}=e,d=(0,s.useRef)(null),p=(0,s.useRef)(null),h=(0,s.useRef)(null),m=(0,s.useRef)(null),f=(0,s.useRef)(null),g=(0,s.useRef)(null),y=(0,s.useRef)(!1),v=(0,s.useRef)(0),[b,w]=(0,s.useState)("connecting"),[E,x]=(0,s.useState)(null),[k,S]=(0,s.useState)(()=>eM()),[I,C]=(0,s.useState)(!0),[O,R]=(0,s.useState)(0),j=(0,s.useMemo)(()=>(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eM();switch(e){case"connected":return"Live scrcpy preview connected";case"waiting-for-stream":case"recovering":return t;case"error":return"Unable to start scrcpy preview";case"disconnected":return"scrcpy preview disconnected, retrying…";default:return"Connecting to scrcpy preview server…"}})(b,k),[b,k]),P=("error"===b||"disconnected"===b)&&!!i,M=(0,s.useCallback)(()=>{w("connecting"),x(null),S(eM()),R(e=>e+1)},[]);(0,s.useEffect)(()=>{null==o||o(b,j)},[o,b,j]);let T=()=>{let e=d.current;e&&e.replaceChildren()},N=()=>{h.current&&(h.current.dispose(),h.current=null)},D=()=>{m.current&&(clearTimeout(m.current),m.current=null)};return(0,s.useEffect)(()=>{if(!l){w("error"),x("scrcpy preview metadata is missing a server URL.");return}if(!eb.p.isSupported){C(!1),w("error"),x("Current browser does not support WebCodecs, so live scrcpy preview is unavailable.");return}let e=!1,t=null,o=Date.now(),i=1,a=()=>{t&&(clearTimeout(t),t=null),D(),g.current&&(clearTimeout(g.current),g.current=null),f.current&&(clearTimeout(f.current),f.current=null),p.current&&(p.current.disconnect(),p.current=null),N(),T(),null==n||n(null)},s=function(t){var r,s;let l,c=!(arguments.length>1)||void 0===arguments[1]||arguments[1],u=i+1,d=Date.now()-o;if(e||f.current)return;if(!c||!(u<=5)||!(d<15e3)){w("error"),x(t),S(eM()),D(),g.current&&(clearTimeout(g.current),g.current=null),y.current=!0,null==(s=p.current)||s.disconnect(),p.current=null,N(),T(),null==n||n(null);return}let h=(l=Math.max(0,Math.min(i-1,eP.length-1)),eP[l]);w("recovering"),x(null),S(`Preview interrupted. Recovering (${u}/5)…`),D(),g.current&&(clearTimeout(g.current),g.current=null),y.current=!0,null==(r=p.current)||r.disconnect(),p.current=null,N(),T(),null==n||n(null),f.current=setTimeout(()=>{f.current=null,a(),i=u,A()},h)},A=()=>{if(e)return;let t=v.current+1;v.current=t;let a=()=>!e&&v.current===t;y.current=!1,w("connecting"),x(null),S(eM());let A=(0,ej.io)(l,{withCredentials:!0,reconnection:!1,timeout:1e4,transports:["websocket"]});p.current=A;let u=function(e){let t,r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o="waiting-for-configuration",i=!1,a=[],s=()=>{if(!i){var e;i=!0,null==(e=n.onFirstDataPacket)||e.call(n)}};return new ReadableStream({start(n){let i=()=>null===n.desiredSize||n.desiredSize>0,l=(e,l)=>{try{var c;if("configuration"!==e.type&&"boolean"!=typeof e.keyFrame)throw Error("Scrcpy video data packet is missing keyFrame metadata");let t=(c=e.data)instanceof Uint8Array?c:c instanceof ArrayBuffer?new Uint8Array(c):new Uint8Array(c.buffer,c.byteOffset,c.byteLength),l="configuration"===e.type?{type:"configuration",data:t}:{type:"data",data:t,keyframe:e.keyFrame};if("configuration"===l.type){o="waiting-for-keyframe",r=void 0,n.enqueue(l),a.length>0&&(o="ready",s(),a.forEach(e=>n.enqueue(e))),a=[];return}if("waiting-for-configuration"===o)return void(l.keyframe?a=[l]:a.length>0&&a.length<2?a.push(l):a=[]);if("waiting-for-keyframe"===o){if(!l.keyframe){r=void 0;return}i()?(r=void 0,o="ready",s(),n.enqueue(l)):r=l;return}if(i()){s(),n.enqueue(l);return}o="waiting-for-keyframe",r=l.keyframe?l:void 0}catch(e){null==t||t(),n.error(e)}finally{null==l||l()}},c=()=>{null==t||t(),n.close()},A=e=>{null==t||t(),n.error(e)};t=()=>{e.off("video-data",l),e.off("disconnect",c),e.off("error",A)},e.on("video-data",l),e.on("disconnect",c),e.on("error",A)},pull(e){r&&(null===e.desiredSize||e.desiredSize>0)&&(s(),e.enqueue(r),r=void 0,o="ready")},cancel(){null==t||t(),r=void 0,a=[],o="waiting-for-configuration"}},{highWaterMark:4})}(A,{onFirstDataPacket:()=>{a()&&!g.current&&(D(),S("Verifying video stream stability…"),g.current=setTimeout(()=>{g.current=null,a()&&(o=Date.now(),i=1,x(null),S(eM()),w("connected"))},2e3))}});A.on("connect",()=>{if(a()){var e,t;w("waiting-for-stream"),S(eM()),D(),m.current=setTimeout(()=>{a()&&(y.current=!0,s(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:55e3,t=Math.max(1,Math.round(e/1e3));return`Timed out waiting ${t}s for scrcpy video stream data.`}(c)))},c),A.emit("connect-device",(e=eD({},"string"==typeof r&&r.trim()?{deviceId:r.trim()}:{}),t=t={maxSize:1600,videoBitRate:8e6},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e))}}),A.on("preview-status",e=>{var t;a()&&"object"==typeof(t=e)&&null!==t&&"message"in t&&"string"==typeof t.message&&(w("waiting-for-stream"),S(e.message))}),A.on("video-metadata",e=>eN(function*(){try{if(!a())return;N(),S("Starting video decoder…"),"number"==typeof e.width&&e.width>0&&"number"==typeof e.height&&e.height>0&&(null==n||n({width:e.width,height:e.height}));let t=e.codec?e.codec:eC.n.H264,r=yield eN(function*(){var e;let r=eO.p.isSupported?new eO.p:new eR.x,n=r.canvas;return n.style.width="100%",n.style.height="100%",n.style.objectFit="contain",T(),null==(e=d.current)||e.appendChild(n),new eb.p({codec:t,renderer:r})})();h.current=r,u.pipeTo(r.writable).catch(e=>{a()&&s(e.message)}),w("waiting-for-stream")}catch(e){if(!a())return;s(e instanceof Error?e.message:"Failed to start decoder.")}})()),A.on("disconnect",()=>{if(a()){if(D(),y.current){y.current=!1;return}s("scrcpy preview disconnected.")}}),A.on("connect_error",e=>{a()&&(D(),s(e.message))}),A.on("preview-error",e=>{a()&&"object"==typeof e&&null!==e&&"string"==typeof e.message&&"string"==typeof e.reason&&"boolean"==typeof e.recoverable&&"string"==typeof e.sessionId&&s(e.message,e.recoverable)}),A.on("error",e=>{a()&&(D(),s(e.message))})};return t=setTimeout(()=>{t=null,A()},0),()=>{e=!0,a()}},[r,c,O,l]),(0,a.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column"},children:[E&&!P?(0,a.jsx)(W.A,{type:"warning",showIcon:!0,style:{marginBottom:12},message:j,description:E}):null,(0,a.jsxs)("div",{className:["scrcpy-panel-viewport","connected"===b&&"scrcpy-panel-viewport-connected"].filter(Boolean).join(" "),ref:u,style:eD({position:"relative",flex:1,minHeight:0,display:"flex",alignItems:"center",justifyContent:"center",background:"#111827",borderRadius:8,overflow:"hidden"},A),children:[(0,a.jsx)("div",{ref:d,style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center"}}),"connected"!==b?P&&i?(0,a.jsx)("div",{style:{position:"absolute",inset:0,zIndex:1},children:i({errorMessage:E,retry:M,status:b,statusText:j})}):"error"!==b&&"disconnected"!==b&&t?(0,a.jsx)("div",{style:{position:"absolute",inset:0,zIndex:1},children:t}):(0,a.jsxs)("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,color:"#fff",background:"rgba(17, 24, 39, 0.78)",textAlign:"center",padding:24,zIndex:1},children:["error"===b?null:(0,a.jsx)(ef.A,{spinning:!0}),(0,a.jsx)(ez,{style:{color:"#fff"},children:j}),"error"===b?(0,a.jsx)(ez,{style:{color:"#d1d5db"},children:"Reconnect the preview to try again."}):null,!I&&(0,a.jsx)(ez,{style:{color:"#d1d5db"},children:"Please use a modern Chromium browser to view the stream."})]}):null]})]})}let eF=["android","ios","web","harmony","computer"],eL=["countdown-before-run"];function eU(e,t){var r;for(let t of[null==e?void 0:e.platformId,null==e||null==(r=e.interface)?void 0:r.type].filter(e=>!!e)){let e=t.toLowerCase();if(eF.includes(e))return e}return t}function eK(e){return((null==e?void 0:e.executionUxHints)||[]).filter(e=>eL.includes(e))}function eZ(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function eJ(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){eZ(i,n,o,a,s,"next",e)}function s(e){eZ(i,n,o,a,s,"throw",e)}a(void 0)})}}function eQ(e){var t,r;let{connectingOverlay:n,onDeviceSizeChange:o,onScrcpyStatusChange:i,renderErrorOverlay:l,scrcpyViewportStyle:c,screenshotViewerMode:A,playgroundSDK:u,runtimeInfo:d,serverUrl:p,serverOnline:h,isUserOperating:m}=e,{message:f}=ew.A.useApp(),g=function(e,t){let r=null==e?void 0:e.preview;if(!r||"none"===r.kind||"custom"===r.kind)return{type:"none"};let n=t||"undefined"!=typeof window&&window.location.origin||"";if("mjpeg"===r.kind){let e=r.mjpegPath||"/mjpeg";return n?{type:"mjpeg",mjpegUrl:new URL(e,`${n}/`).toString()}:{type:"screenshot"}}if("scrcpy"===r.kind){var o,i;let t="string"==typeof(null==e||null==(o=e.metadata)?void 0:o.deviceId)?e.metadata.deviceId.trim():void 0;if("string"==typeof t&&/^\d+\.\d+\.\d+\.\d+:\d+$/.test(t))return{type:"screenshot"};let a=Number(null==(i=r.custom)?void 0:i.scrcpyPort),s=Number.isFinite(a)?a:void 0,l=s&&n?(()=>{let e=new URL(n);if(["localhost","127.0.0.1","[::1]"].includes(e.hostname)){var t;let n="string"==typeof(null==(t=r.custom)?void 0:t.scrcpyHost)?r.custom.scrcpyHost.trim():"";n&&"0.0.0.0"!==n&&"::"!==n?e.hostname=n.includes(":")&&!n.startsWith("[")?`[${n}]`:n:"::"===n?e.hostname="[::1]":("0.0.0.0"===n||"localhost"===e.hostname)&&(e.hostname="127.0.0.1")}return e.port=String(s),e.pathname="/",e.search="",e.hash="",e.toString()})():void 0;return{deviceId:t,type:"scrcpy",scrcpyPort:s,scrcpyUrl:l}}return{type:"screenshot"}}(d,p),[y,v]=(0,s.useState)(null),[b,w]=(0,s.useState)(null),[E,x]=(0,s.useState)(null),[k,S]=(0,s.useState)("connecting"),I=(0,s.useRef)(Promise.resolve()),C=(0,s.useRef)(""),O=(0,s.useRef)(null),R=(0,s.useRef)(null),j=(0,s.useRef)(null),P=(0,s.useRef)(null),M=null!=(t=null==E?void 0:E.includes("Tap"))&&t,T=(null==E?void 0:E.includes("Swipe"))?"Swipe":"DragAndDrop",N=(null==E?void 0:E.includes("KeyboardPress"))||(null==E?void 0:E.includes("Input"))||!1,D=null!=(r=null==E?void 0:E.includes("Scroll"))&&r,z=(0,s.useCallback)(e=>{let t=I.current.then(e,e);return I.current=t.catch(()=>void 0),t},[f]);(0,s.useEffect)(()=>{if(!h){v(null),x(null);return}let e=!1,t=()=>eJ(function*(){var t;let r;try{r=yield u.getInterfaceInfo()}catch(e){return}if(e)return;if((null==r||null==(t=r.size)?void 0:t.width)&&r.size.height){let{size:e}=r;v(t=>t&&t.width===e.width&&t.height===e.height?t:{width:e.width,height:e.height})}let n=Array.isArray(null==r?void 0:r.actionTypes)?r.actionTypes:null;x(e=>null===e&&null===n||e&&n&&e.length===n.length&&e.every((e,t)=>e===n[t])?e:n)})();t();let r=setInterval(t,5e3);return()=>{e=!0,clearInterval(r)}},[u,h]),(0,s.useEffect)(()=>{null==o||o(null!=b?b:y)},[y,o,b]);let B="scrcpy"===g.type&&eb.p.isSupported,F="screenshot"===g.type||"scrcpy"===g.type&&!B,L="scrcpy"===g.type&&!eb.p.isSupported&&function(){try{let{protocol:e,hostname:t}=window.location;if("http:"!==e)return!1;return"localhost"!==t&&"127.0.0.1"!==t&&"::1"!==t}catch(e){return!1}}(),U="none"!==g.type&&(!B||"connected"===k),K=(0,s.useCallback)((e,t)=>{f.open({type:"error",content:t||e,key:"manual-control-error"})},[]),Z=(0,s.useCallback)(()=>{R.current&&(clearTimeout(R.current),R.current=null)},[]),J=(0,s.useCallback)(()=>{var e,t;Z();let r=C.current,n=O.current;if(!r)return null!=(e=j.current)?e:Promise.resolve();C.current="",O.current=null;let o=(null!=(t=j.current)?t:Promise.resolve()).catch(()=>void 0).then(()=>eJ(function*(){let e=yield z(()=>u.interact(function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({actionType:"Input",value:r,mode:"typeOnly"},n?{x:n.x,y:n.y}:{})));e.ok||K("Input failed",e.error)})()).finally(()=>{j.current===o&&(j.current=null)});return j.current=o,j.current},[Z,z,u,K]),Q=(0,s.useCallback)(e=>eJ(function*(){yield J();let t=yield z(()=>u.interact({actionType:"Tap",x:e.x,y:e.y}));t.ok||K("Tap failed",t.error)})(),[z,J,u,K]),q=(0,s.useCallback)((e,t,r)=>eJ(function*(){yield J();let n=yield z(()=>{var n,o,i,a,s,l;let c;return u.interact((n=T,o=e,i=t,a=r,c={actionType:n,x:o.x,y:o.y,endX:i.x,endY:i.y},"DragAndDrop"===n?c:(s=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},c),l=l={duration:a},Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(l)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(l)).forEach(function(e){Object.defineProperty(s,e,Object.getOwnPropertyDescriptor(l,e))}),s)))});n.ok||K(`${T} failed`,n.error)})(),[z,J,T,u,K]),X=(0,s.useCallback)((e,t)=>{e&&(C.current+=e,t&&(O.current=t),Z(),R.current=setTimeout(()=>{J()},120))},[Z,J]);(0,s.useEffect)(()=>{h&&U&&N||(Z(),C.current="",O.current=null)},[Z,N,U,h]),(0,s.useEffect)(()=>()=>{h&&U&&N&&C.current?J():(Z(),O.current=null)},[Z,J,N,g.type,U,d,h,p]);let H=(0,s.useCallback)(e=>eJ(function*(){if(!e)return;yield J();let t=yield z(()=>u.interact({actionType:"KeyboardPress",keyName:e}));t.ok||K("Keyboard press failed",t.error)})(),[z,J,u,K]),Y=(0,s.useCallback)((e,t)=>eJ(function*(){yield J();let r=yield z(()=>{let r,n,o;return u.interact((n=(r=Math.abs(t.deltaY)>=Math.abs(t.deltaX))?Math.abs(t.deltaY):Math.abs(t.deltaX),o=r?t.deltaY>=0?"down":"up":t.deltaX>=0?"right":"left",{actionType:"Scroll",x:e.x,y:e.y,scrollType:"singleAction",direction:o,distance:Math.max(1,Math.round(n))}))});r.ok||K("Scroll failed",r.error)})(),[z,J,u,K]),G=(0,s.useCallback)((e,t)=>{S(e),null==i||i(e,t)},[i]);return(0,a.jsxs)("div",{style:{flex:1,minHeight:0,height:"100%",position:"relative"},children:[L&&(0,a.jsx)(eE.A,{content:(0,a.jsxs)("div",{style:{maxWidth:360},children:[(0,a.jsx)("p",{style:{margin:"0 0 8px"},children:"Live scrcpy streaming is unavailable because WebCodecs API is disabled in non-secure (HTTP) contexts with non-localhost addresses."}),(0,a.jsx)("p",{style:{margin:"0 0 8px"},children:"Currently using screenshot polling as fallback. To enable scrcpy streaming:"}),(0,a.jsxs)("ol",{style:{margin:0,paddingLeft:18},children:[(0,a.jsxs)("li",{children:["Open"," ",(0,a.jsx)("code",{children:"chrome://flags/#unsafely-treat-insecure-origin-as-secure"})]}),(0,a.jsxs)("li",{children:["Add ",(0,a.jsx)("code",{children:window.location.origin})]}),(0,a.jsxs)("li",{children:["Set to ",(0,a.jsx)("b",{children:"Enabled"})," and relaunch Chrome"]})]})]}),title:"Screenshot polling mode",trigger:"click",placement:"bottomRight",children:(0,a.jsx)("button",{type:"button",style:{position:"absolute",top:8,right:8,zIndex:10,background:"#faad14",border:"none",borderRadius:"50%",width:28,height:28,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",boxShadow:"0 2px 6px rgba(0,0,0,0.2)"},children:(0,a.jsx)("span",{style:{color:"#fff",fontSize:14,fontWeight:"bold",lineHeight:1},children:"!"})})}),"none"===g.type?(0,a.jsx)(W.A,{type:"warning",showIcon:!0,message:"Preview unavailable",description:"This session did not expose a preview capability in runtime metadata."}):B?(0,a.jsx)(eB,{connectingOverlay:n,deviceId:g.deviceId,onIntrinsicSize:w,onStatusChange:G,renderErrorOverlay:l,serverUrl:g.scrcpyUrl,viewportStyle:c,contentRef:P}):(0,a.jsx)(ev,{getScreenshot:()=>F?u.getScreenshot():Promise.resolve(null),getInterfaceInfo:()=>u.getInterfaceInfo(),serverOnline:h,isUserOperating:m,mjpegUrl:g.mjpegUrl,mode:null!=A?A:"screen-only",contentRef:P}),(0,a.jsx)(eI,{enabled:M&&h&&U,deviceSize:y,contentRef:P,onTap:Q,onSwipe:q,scrollEnabled:D,onWheelScroll:Y,keyboardEnabled:N,onTextInput:X,onKeyboardPress:H})]})}function eq(e){return(0,a.jsx)(eQ,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},e))}var eX=r(22770);function eW(e){let{children:t}=e;return(0,a.jsx)(eX.Ay,{theme:{token:{colorPrimary:"#2B83FF"},components:{Layout:{headerHeight:60,headerPadding:"0 30px",headerBg:"#FFF",bodyBg:"#FFF"}}},children:(0,a.jsx)(ew.A,{component:!1,children:t})})}var eH=r(19152),eY=r(13353);function eG(e){try{let t=e.match(/^\s*(\{[\s\S]*\})\s*$/);if(t)return t[1];let r=e.match(/```(?:json)?\s*(\{[\s\S]*?\})\s*```/);if(r)return r[1];let n=e.match(/\{[\s\S]*\}/);if(n)return n[0]}catch{}return e}function eV(e){if(!e||"object"!=typeof e||Array.isArray(e)){let t=Array.isArray(e)?"array":null===e?"null":typeof e;throw Error(`LLM response is valid JSON but does not match the expected schema. Expected to be a JSON object, got ${t}: ${JSON.stringify(e)}.`)}}function e$(e){try{return JSON.parse(e)}catch{return JSON.parse((0,eY.m)(e))}}function e_(e,t){let r,n=eG(e);try{r=e$(n)}catch(o){let t=n;if(t===n)throw Error(`failed to parse LLM response into JSON. Error - ${String(o)}. Response -
|
|
3
3
|
${e}`);try{r=e$(t)}catch(t){throw Error(`failed to parse LLM response into JSON. First error - ${String(o)}. Second error - ${String(t)}. Response -
|
|
4
|
-
${e}`)}}return function e(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==t)return t;if(Array.isArray(t))return t.map(t=>e(t,r));if("object"==typeof t){let o={};for(let[i,a]of Object.entries(t)){var n;let t=i.trim(),s=(null==(n=r.preserveStringValueKeys)?void 0:n.includes(t))??!1,l="string"==typeof a?s?a:a.trim():e(a,r);o[t]=l}return o}return"string"==typeof t?t.trim():t}(r,t)}var e0=r(
|
|
4
|
+
${e}`)}}return function e(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==t)return t;if(Array.isArray(t))return t.map(t=>e(t,r));if("object"==typeof t){let o={};for(let[i,a]of Object.entries(t)){var n;let t=i.trim(),s=(null==(n=r.preserveStringValueKeys)?void 0:n.includes(t))??!1,l="string"==typeof a?s?a:a.trim():e(a,r);o[t]=l}return o}return"string"==typeof t?t.trim():t}(r,t)}var e0=r(26103),e1=r(85409),e2=r(8963).Buffer;function e3(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let e5=(0,e0.aZ)("ai:call:codex"),e4=(0,e0.aZ)("ai:call:codex",{console:!0});class e7{async run(e){let t,r=this.tail;this.tail=new Promise(e=>{t=e}),await r;try{return await e()}finally{t()}}constructor(){e3(this,"tail",Promise.resolve())}}let e8=e=>{if(!e)return!1;if(e instanceof Error&&"AbortError"===e.name)return!0;let t=e instanceof Error?e.message:String(e??"unknown error");return/aborted|abort/i.test(t)},e6=e=>{if("string"==typeof e)return e.trim()||void 0},e9=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e1.platform;if(!e.startsWith("file://"))return e;try{let r=new URL(e),n=decodeURIComponent(r.pathname),o=r.hostname.toLowerCase();if("win32"===t){let e=n.replace(/\//g,"\\").replace(/^\\([A-Za-z]:)/,"$1");if(o&&"localhost"!==o)return`\\\\${r.hostname}${e}`;return e}if(o&&"localhost"!==o)return`//${r.hostname}${n}`;return n}catch{return decodeURIComponent(e.slice(7))}},te=e=>{let{content:t}=e;return"string"==typeof t?t:t.map(e=>"text"===e.type?e.text:"").filter(Boolean).join("\n")},tt=(e,t)=>{let{content:r}=e;if(!Array.isArray(r))return[];let n=[];for(let e of r){if("image"!==e.type)continue;let r=e6(e.url),o=t({imageDetail:e.detail});if(r){if(r.startsWith("/")||r.startsWith("./")||r.startsWith("../")||r.startsWith("file://")){let e=r.startsWith("file://")?e9(r):r;n.push({type:"localImage",path:e,detail:o});continue}n.push({type:"image",url:r,detail:o})}}return n};class tr{static async create(){if(eH.ht)throw Error("codex app-server provider is not supported in browser runtime");let{spawn:e}=await r(39545)("node:child_process"),t=await r(57125)("node:readline"),n=e("codex",["app-server"],{stdio:["pipe","pipe","pipe"]});if(!n.stdin||!n.stdout||!n.stderr)throw Error("failed to start codex app-server: stdio unavailable");let o=t.createInterface({input:n.stdout,crlfDelay:1/0}),i=new tr(n,o);return i.detachFromEventLoop(),i.attachProcessListeners(),await i.initializeHandshake(),i}isClosed(){return this.closed}async runTurn(e){let t,r,n,o,{messages:i,resolveImageDetail:a,modelConfig:s,stream:l,onChunk:c,params:A,abortSignal:u,onRecordEvent:d}=e,p=!!(l&&c),{developerInstructions:h,input:m}=((e,t)=>{let r=[],n=[],o=[];for(let i of e){let e=(()=>{if("role"in i)return i;if("input-message"===i.type)return i.message;if("chat-completion"!==i.output.type)throw Error("Cannot replay Responses output in a Codex conversation");return{role:"assistant",content:i.output.rawValue.content??""}})(),{role:a}=e,s=te(e);if("system"===a){s.trim()&&r.push(s.trim());continue}let l=a.toUpperCase();s.trim()?n.push(`[${l}]
|
|
5
5
|
${s.trim()}`):n.push(`[${l}]
|
|
6
6
|
(no text content)`),"user"===a&&o.push(...tt(e,t))}let i=n.join("\n\n"),a=[{type:"text",text:(i.length>262144?i.slice(-262144):i)||"Please answer the latest user request.",text_elements:[]},...o];return{developerInstructions:r.length?r.join("\n\n"):void 0,input:a}})(i,a),f="",g="",y=e=>{let{content:t,reasoning:r,isComplete:n,usage:o}=e;p&&c&&c({content:t,reasoning_content:r,accumulated:f,isComplete:n,usage:o})};try{var v,b,w,E,x,k,S,I,C;let e,i={model:s.modelName,cwd:e1.cwd(),approvalPolicy:"never",sandbox:"read-only",ephemeral:!0,experimentalRawEvents:!1,persistExtendedHistory:!1,developerInstructions:h||null};null==d||d({type:"request",protocol:{direction:"client",method:"thread/start",params:i}});let a=await this.request({method:"thread/start",params:i,abortSignal:u});if(null==d||d({type:"chunk",protocol:{direction:"server",method:"thread/start",result:a}}),!(t=null==a||null==(v=a.thread)?void 0:v.id))throw Error("thread/start did not return a thread id");let l={...A,threadId:t,input:m};null==d||d({type:"request",protocol:{direction:"client",method:"turn/start",params:l}});let c=await this.request({method:"turn/start",params:l,abortSignal:u});if(null==d||d({type:"chunk",protocol:{direction:"server",method:"turn/start",result:c}}),!(r=null==c||null==(b=c.turn)?void 0:b.id))throw Error("turn/start did not return a turn id");for(;!e;){let i=await this.nextMessage({abortSignal:u});if(this.isResponseMessage(i))continue;if(this.isRequestMessage(i)){await this.respondToServerRequest(i);continue}let a=i.method,s=i.params||{};if(s.threadId===t&&(s.turnId===r||(null==(w=s.turn)?void 0:w.id)===r)&&(null==d||d({type:"chunk",protocol:{direction:"server",method:a,params:s}})),"error"===a){let e=(null==(S=s.error)?void 0:S.message)||s.message||"codex app-server reported turn error";n=String(e);continue}if("item/agentMessage/delta"===a&&s.threadId===t&&s.turnId===r){let e=String(s.delta||"");e&&(f+=e,y({content:e,reasoning:"",isComplete:!1}));continue}if(("item/reasoning/summaryTextDelta"===a||"item/reasoning/textDelta"===a)&&s.threadId===t&&s.turnId===r){let e=String(s.delta||"");e&&(g+=e,y({content:"",reasoning:e,isComplete:!1}));continue}if("item/completed"===a&&s.threadId===t&&s.turnId===r&&(null==(E=s.item)?void 0:E.type)==="agentMessage"&&"string"==typeof(null==(x=s.item)?void 0:x.text)&&!f){f=s.item.text;continue}if("thread/tokenUsage/updated"===a&&s.threadId===t&&s.turnId===r){o=this.mapUsage(s);continue}if("turn/completed"===a&&s.threadId===t&&(null==(k=s.turn)?void 0:k.id)===r){e=String(s.turn.status||""),n=(null==(C=s.turn)||null==(I=C.error)?void 0:I.message)||n||void 0;break}}if("completed"!==e)throw Error(n||`codex turn finished with status "${e||"unknown"}"`);return p&&y({content:"",reasoning:"",isComplete:!0,usage:o}),{content:f,reasoning_content:g||void 0,usage:o,isStreamed:p,protocolMetadata:{transport:"json-rpc",threadId:t,turnId:r,turnStatus:e}}}catch(e){throw e8(e)&&t&&r&&await this.request({method:"turn/interrupt",params:{threadId:t,turnId:r},deadlineAt:Date.now()+5e3}).catch(()=>{}),e}finally{t&&await this.request({method:"thread/unsubscribe",params:{threadId:t},deadlineAt:Date.now()+8e3}).catch(e=>{e4(`failed to unsubscribe codex thread ${t}: ${String(e)}`)})}}async dispose(){var e,t,r,n,o,i,a;if(!this.closed){this.closed=!0;try{null==(t=this.lineReader)||null==(e=t.close)||e.call(t)}catch{}try{null==(o=this.child)||null==(n=o.stdin)||null==(r=n.end)||r.call(n)}catch{}try{null==(a=this.child)||null==(i=a.kill)||i.call(a)}catch{}}}attachProcessListeners(){this.lineReader.on("line",e=>{this.lineBuffer.push(e)}),this.child.stderr.on("data",e=>{let t=e2.isBuffer(e)?e.toString("utf8"):String(e);this.stderrBuffer+=t,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,t,r,n,o,i,a,s;null==(e=(t=this.child).unref)||e.call(t),null==(n=this.child.stdin)||null==(r=n.unref)||r.call(n),null==(i=this.child.stdout)||null==(o=i.unref)||o.call(i),null==(s=this.child.stderr)||null==(a=s.unref)||a.call(s)}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 t=e.tokenUsage,r=(null==t?void 0:t.last)||(null==t?void 0:t.total);if(r)return{prompt_tokens:r.inputTokens??0,completion_tokens:r.outputTokens??0,total_tokens:r.totalTokens??0,prompt_tokens_details:{cached_tokens:r.cachedInputTokens??0},completion_tokens_details:{reasoning_tokens:r.reasoningOutputTokens??0}}}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:t,params:r,deadlineAt:n,abortSignal:o}=e;null==o||o.throwIfAborted();let i=this.nextRequestId++;for(await this.sendMessage({id:i,method:t,params:r});;){let e=await this.nextMessage({deadlineAt:n,abortSignal:o,includePending:!1});if(this.isResponseMessage(e)&&e.id===i){if(e.error)throw Error(`codex app-server ${t} 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 t=e.id,r=e.method,n={};if("item/commandExecution/requestApproval"===r)n={decision:"decline"};else if("item/fileChange/requestApproval"===r)n={decision:"decline"};else if("mcpServer/elicitation/request"===r)n={action:"cancel",content:null};else{if("item/tool/requestUserInput"!==r)return void await this.sendMessage({id:t,error:{code:-32601,message:`unsupported server request: ${r}`}});n={answers:[]}}await this.sendMessage({id:t,result:n})}async nextMessage(e){let{deadlineAt:t,abortSignal:r,includePending:n=!0}=e;if(n&&this.pendingMessages.length)return this.pendingMessages.shift();for(;;){if(null==r?void 0:r.aborted)throw Error("codex app-server request aborted");if(t&&Date.now()>t)throw Error("codex app-server request timed out");if(this.lineBuffer.length){let e,t=this.lineBuffer.shift().trim();if(!t)continue;try{e=JSON.parse(t)}catch(e){e4(`ignored non-JSON message from codex app-server: ${t}`);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 t=JSON.stringify(e);await new Promise((e,r)=>{this.child.stdin.write(`${t}
|
|
7
7
|
`,t=>{t?r(Error(`failed writing to codex app-server stdin: ${t.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,t){e3(this,"child",void 0),e3(this,"lineReader",void 0),e3(this,"pendingMessages",[]),e3(this,"lineBuffer",[]),e3(this,"nextRequestId",1),e3(this,"closed",!1),e3(this,"lastExitCode",null),e3(this,"processErrorMessage",null),e3(this,"stderrBuffer",""),this.child=e,this.lineReader=t}}let tn=new class{async runTurn(e){let{messages:t,resolveImageDetail:r,modelConfig:n,stream:o,onChunk:i,params:a,abortSignal:s,onRecordEvent:l}=e;return this.runner.run(async()=>{null==s||s.throwIfAborted();let e=await this.getConnection();null==s||s.throwIfAborted();try{return await e.runTurn({messages:t,resolveImageDetail:r,modelConfig:n,stream:o,onChunk:i,params:a,abortSignal:s,onRecordEvent:l})}catch(t){throw(e.isClosed()||!e8(t))&&await this.resetConnection(),t}})}async shutdownForTests(){await this.resetConnection()}async getConnection(){return(!this.connection||this.connection.isClosed())&&(this.connection=await tr.create(),e5("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(),e5("reset codex app-server connection")}constructor(){e3(this,"connection",null),e3(this,"runner",new e7)}};async function to(e,t,r){if(eH.ht)throw Error("codex app-server provider is not supported in browser runtime");return tn.runTurn({messages:e,modelConfig:t,resolveImageDetail:r.resolveImageDetail,stream:null==r?void 0:r.stream,onChunk:null==r?void 0:r.onChunk,params:null==r?void 0:r.params,abortSignal:null==r?void 0:r.abortSignal,onRecordEvent:null==r?void 0:r.onRecordEvent})}let ti=async(e,t)=>{let{modelRuntime:r,options:n,recordEvent:o,requestSignal:i}=e,{messages:a,resolveImageDetail:s,requestParams:l}=t,{config:c}=r,A=0,u=Date.now(),d=o?e=>{if("chunk"===e.type){A+=1,o({...e,attempt:1,sequence:A,provider:"codex-app-server"});return}o({...e,attempt:1,provider:"codex-app-server"})}:void 0;try{let e=await to(a,c,{stream:null==n?void 0:n.stream,onChunk:null==n?void 0:n.onChunk,params:l,resolveImageDetail:s,abortSignal:i,onRecordEvent:d});i.throwIfAborted();let{protocolMetadata:t,usage:r,...A}=e,p=Date.now()-u;return null==o||o({type:"response",attempt:1,provider:"codex-app-server",final:{content:A.content,reasoningContent:A.reasoning_content,usage:r,timeCost:p,protocol:t}}),{...A,rawUsage:r,timeCost:p,requestId:t.turnId}}catch(e){throw null==o||o({type:"error",attempt:1,provider:"codex-app-server",error:e instanceof Error?{name:e.name,message:e.message,stack:e.stack}:String(e)}),e}};var ta=r(94504),ts=r(13078),tl=r.n(ts),tc=r(83198),tA=r(50217),tu=r(29368),td=r(85409);function tp(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let th=(0,e0.aZ)("ai:model-record",{console:!0});function tm(){if(eH.ht||eH.rS)return!1;let e=(0,tA.j)(tu._E);return"true"===e||"1"===e}let tf=new class{async initializeFilePath(){try{let e=tl().join((0,tc.y9)(),"model-requests");await (0,ta.mkdir)(e,{recursive:!0}),this.filePath=tl().join(e,`${this.processStartTime}-${td.pid}.jsonl`)}catch(e){th("Failed to initialize model call recorder",e)}return this.filePath}getFilePath(){return this.filePath||!tm()?Promise.resolve(this.filePath):(this.filePathPromise||(this.filePathPromise=this.initializeFilePath().finally(()=>{this.filePathPromise=void 0})),this.filePathPromise)}async writeEvent(e){let t=await this.getFilePath();t&&await (0,ta.appendFile)(t,`${JSON.stringify({timestamp:new Date().toISOString(),...e})}
|
|
8
|
-
`)}record(e){let t=this.writeQueue.then(()=>this.writeEvent(e));return this.writeQueue=t.catch(e=>{th("Failed to write model call record",e)}),this.writeQueue}constructor(){tp(this,"processStartTime",new Date().toISOString().replace(/[:.]/g,"-")),tp(this,"filePath",void 0),tp(this,"filePathPromise",void 0),tp(this,"writeQueue",Promise.resolve())}};function tg(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class ty extends Error{constructor(e,t,r,n,o){super(e),tg(this,"usage",void 0),tg(this,"rawResponse",void 0),tg(this,"rawAssistantOutput",void 0),tg(this,"reasoningContent",void 0),this.name="AIResponseParseError",this.rawResponse=t,this.usage=r,this.rawAssistantOutput=n,this.reasoningContent=o}}let tv="_midscene_call_id",tb=0;function tw(e){try{return JSON.stringify(e)}catch(t){return String(e)}}function tE(e){return e instanceof Error?e:Error(String(e))}let tx=e=>"string"==typeof e&&e.trim().length>0,tk=e=>{try{let t=new URL(e);if(t.username)return t.password="****",t.href;return e}catch{return e}},tS=async e=>{let{socksProxy:t,httpProxy:n}=e,o=(0,e0.aZ)("ai:call:proxy",{console:!0}),i=(0,e0.aZ)("ai:call:proxy");if(n)if(i("using http proxy",tk(n)),eH.ht)o("HTTP proxy is configured but not supported in browser environment");else{let{loadUndici:e}=await r.e("749").then(r.bind(r,17964)),{ProxyAgent:t}=await e();return new t({uri:n})}else if(t)if(i("using socks proxy",tk(t)),eH.ht)o("SOCKS proxy is configured but not supported in browser environment");else try{let{loadFetchSocks:e}=await r.e("749").then(r.bind(r,17964)),{socksDispatcher:n}=await e(),o=new URL(t);if(!o.hostname)throw Error("SOCKS proxy URL must include a valid hostname");let a=Number.parseInt(o.port,10);if(!o.port||Number.isNaN(a))throw Error("SOCKS proxy URL must include a valid port");let s=o.protocol.replace(":",""),l="socks4"===s?4:5,c=n({type:l,host:o.hostname,port:a,...o.username?{userId:decodeURIComponent(o.username),password:decodeURIComponent(o.password||"")}:{}});return i("socks proxy configured successfully",{type:l,host:o.hostname,port:a}),c}catch(e){throw o("Failed to configure SOCKS proxy:",e),Error(`Invalid SOCKS proxy URL: ${t}. Expected format: socks4://host:port, socks5://host:port, or with authentication: socks5://user:pass@host:port`)}},tI=e=>{let{content:t,reasoningContent:r,useReasoningAsContentFallback:n}=e;return!tx(t)&&n&&tx(r)?((0,e0.aZ)("ai:call",{console:!0})("empty content from AI model, using reasoning content"),r):t},tC=async e=>{var t;let{completion:r,openAIRequestContext:n,extractContentAndReasoning:o,useReasoningAsContentFallback:i,requestBodyParams:a,requestSignal:s}=e;s.throwIfAborted();let l=await r.create({...a,stream:!1},{signal:s});s.throwIfAborted();let c=l._request_id??(null==(t=n.responseRequestId)?void 0:t.requestId);if(!l.choices)throw Error(`invalid response from LLM service: ${JSON.stringify(l)}`);let A={type:"chat-completion",rawValue:l.choices[0].message},u=o(l.choices[0].message),d=u.reasoning_content,p=tI({content:u.content,reasoningContent:d,useReasoningAsContentFallback:i});if(!tx(p))throw new ty("empty content from AI model",p||"",void 0,A);return{content:p,reasoningContent:d,rawAssistantOutput:A,rawUsage:l.usage,requestId:c,responseModelName:l.model}},tO=async e=>{var t,r,n;let o,i,{completion:a,openAIRequestContext:s,extractContentAndReasoning:l,useReasoningAsContentFallback:c,requestBodyParams:A,requestSignal:u,onChunk:d,recordEvent:p}=e;(0,eH.vA)("function"==typeof d,"onChunk is required when stream is true");let h="",m="";u.throwIfAborted();let f=a.stream({...A,stream_options:{...A.stream_options,include_usage:!0}},{signal:u}),g=0;for await(let e of f){u.throwIfAborted(),g+=1,null==p||p({type:"chunk",sequence:g,chunk:e});let t=l(null==(n=e.choices)||null==(r=n[0])?void 0:r.delta),a=t.content||"",s=t.reasoning_content||"";e.usage&&(o=e.usage),e.model&&(i=e.model),(a||s)&&(h+=a,m+=s,d({content:a,reasoning_content:s,accumulated:h,isComplete:!1,usage:void 0}))}let y=(await f.finalChatCompletion()).choices[0].message,v=null==(t=s.responseRequestId)?void 0:t.requestId;return d({content:"",accumulated:h=tI({content:h,reasoningContent:m,useReasoningAsContentFallback:c})||"",reasoning_content:"",isComplete:!0,usage:o}),{content:h,reasoningContent:m,rawAssistantOutput:{type:"chat-completion",rawValue:y},rawUsage:o,requestId:v,responseModelName:i}},tR=async e=>{var t;let{messages:r,modelRuntime:n,options:o}=e,i=(0,e0.aZ)("ai:call"),{config:a,adapter:s}=n,l={intent:a.intent,userConfig:{temperature:a.temperature,reasoningEnabled:a.reasoningEnabled,reasoningEffort:a.reasoningEffort,reasoningBudget:a.reasoningBudget,responseFormat:a.responseFormat},semanticRetryAttempt:null==o?void 0:o.semanticRetryAttempt,requiresOriginalImageDetail:null==o?void 0:o.requiresOriginalImageDetail,expectedJsonObjectResponse:null==o?void 0:o.expectedJsonObjectResponse},{config:c}=s.chatCompletion.buildChatCompletionParams(l);i(`adapter chat completion params: ${tw({config:c})}`);let A={model:a.modelName,messages:(t=e=>{let{imageDetail:t}=e;return s.resolveImageDetail({imageDetail:t,intent:a.intent,requiresOriginalImageDetail:null==o?void 0:o.requiresOriginalImageDetail})},r.map(e=>{if("type"in e&&"model-output"===e.type){if("chat-completion"!==e.output.type)throw Error("Cannot replay Responses output in a Chat Completions conversation");return e.output.rawValue}let r="role"in e?e:e.message;return{role:r.role,content:"string"==typeof r.content?r.content:r.content.map(e=>"text"===e.type?{type:"text",text:e.text}:{type:"image_url",image_url:{url:e.url,detail:t({imageDetail:e.detail})}})}})),...c,...a.extraBody??{}},u=await tS({socksProxy:a.socksProxy,httpProxy:a.httpProxy});return{requestParams:A,extractContentAndReasoning:s.chatCompletion.extractContentAndReasoning,useReasoningAsContentFallback:s.chatCompletion.useReasoningAsContentFallback,proxyAgent:u}},tj=()=>{let e=(0,tA.j)(tu.v4),t="";e&&(console.warn("MIDSCENE_DEBUG_MODEL_PROFILE is deprecated, use DEBUG=midscene:ai:profile instead"),t="ai:profile"),(0,tA.j)(tu.$l)&&(console.warn("MIDSCENE_DEBUG_MODEL_RESPONSE is deprecated, use DEBUG=midscene:ai:response instead"),t=t?"ai:*":"ai:call"),t&&(0,e0.Nw)(t)};var tP=r(85409);function tM(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let tT={modelName:tu._q,socksProxy:tu.T4,httpProxy:tu.Yf,openaiBaseURL:tu.kX,openaiApiKey:tu.Lh,openaiExtraConfig:tu.Z7,extraBody:tu.Pm,protocol:tu.ju,streamMode:tu.R9,modelFamily:tu.v,timeout:tu.Yg,temperature:tu.V7,retryCount:tu.vC,retryInterval:tu.xg,reasoningEffort:tu.y2,reasoningEnabled:tu.nc,reasoningBudget:tu.fS,responseFormat:tu.k8},tN={modelName:tu.SP,socksProxy:tu.l8,httpProxy:tu.S7,openaiBaseURL:tu.AW,openaiApiKey:tu.lp,openaiExtraConfig:tu.hC,extraBody:tu.Tf,protocol:tu.Js,streamMode:tu.pG,modelFamily:tu.Jm,timeout:tu.a0,temperature:tu.fF,retryCount:tu.mk,retryInterval:tu.T8,reasoningEffort:tu.Qu,reasoningEnabled:tu.VY,reasoningBudget:tu.Xx,responseFormat:tu.EH},tD={modelName:tu.xP,socksProxy:tu.mZ,httpProxy:tu.zQ,openaiBaseURL:tu.zG,openaiApiKey:tu.OK,openaiExtraConfig:tu.ag,extraBody:tu.WH,protocol:tu.kb,streamMode:tu.Gl,modelFamily:tu.OY,timeout:tu.Z$,temperature:tu.Cn,retryCount:tu.sg,retryInterval:tu.wu,reasoningEffort:tu.Vb,reasoningEnabled:tu.u1,reasoningBudget:tu.aO,responseFormat:tu.lV},tz={modelName:tu.HR,socksProxy:tu.iw,httpProxy:tu.FU,openaiBaseURL:tu.$H,openaiApiKey:tu.IQ,openaiExtraConfig:tu.I2,extraBody:tu.G0,protocol:tu.CR,streamMode:tu.cD,modelFamily:tu.yR,timeout:tu.zD,temperature:tu.W4,retryCount:tu.Km,retryInterval:tu.aK,reasoningEffort:tu.VM,reasoningEnabled:tu.M1,reasoningBudget:tu.AU,responseFormat:tu.fh},tB=function(e){let t=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 r=e.substring(0,3),n=e.substring(e.length-3),o=e.length-6,i=t.repeat(o);return`${r}${i}${n}`},tF=e=>Object.fromEntries(Object.entries(e).map(e=>{let[t,r]=e;if(!r)return[t,r];if("string"==typeof r&&/key/i.test(t))return[t,tB(r)];if("object"==typeof r){let e=JSON.stringify(r);if(/key/i.test(e))return[t,tB(e)]}return[t,r]})),tL=(e,t)=>{if(t)try{return JSON.parse(t)}catch(t){throw Error(`Failed to parse ${e} as a JSON. ${t.message}`,{cause:t})}},tU={locate:tN,insight:tT,planning:tD,default:tz},tK=(e,t)=>{let r=(0,e0.aZ)("ai:config");r("will decideModelConfig base on agent.modelConfig()",e,tF(t));let n=tU[e];if(!t[n.modelName])return void r("no modelName found for intent",e);let o=(e=>{var t,r,n;let o,{keys:i,provider:a,useLegacyLogic:s=!1}=e;tj(),(0,e0.aZ)("ai:config")("enter parseOpenaiSdkConfig with keys:",i);let l=s?a[tu.Jq]:void 0,c=s?a[tu.jG]:void 0,A=s?a[tu.$]:void 0,u=s?a[tu.CA]:void 0,d=s?a[tu.b6]:void 0,p=s?(e=>{let t=e[tu.pp],r=e[tu.yb],n=e[tu.NF],o=e[tu.JM],i=e[tu.j_],a=[t&&tu.pp,r&&tu.yb,n&&tu.NF,o&&tu.JM,i&&tu.j_].filter(Boolean);if(a.length>1)throw Error(`Only one vision mode can be enabled at a time. Currently enabled modes: ${a.join(", ")}. Please disable all but one mode.`);if(n)return"qwen3-vl";if(r)return"qwen2.5-vl";if(t)return"doubao-vision";if(i)return"gemini";if(o)if("1"===o)return"vlm-ui-tars";else if("DOUBAO"===o||"DOUBAO-1.5"===o)return"vlm-ui-tars-doubao-1.5";else return"vlm-ui-tars-doubao"})(a):void 0,h=a[i.modelFamily]||p,m=a[i.openaiApiKey]||l,f=a[i.openaiBaseURL]||c,g=a[i.socksProxy]||A,y=a[i.httpProxy]||u,v=a[i.modelName],b=a[i.openaiExtraConfig],w=tL(i.openaiExtraConfig,b||d),E=a[i.extraBody],x=tL(i.extraBody,E),k=(e=>{if(void 0===e||""===e)return;let t=Number(e);return Number.isFinite(t)?t:void 0})(a[i.temperature]);if(h&&!tu._j.includes(h))throw Error(`Invalid MIDSCENE_MODEL_FAMILY value: ${h}. Current version v1.16.1 accepts the following model families: ${tu._j.join(", ")}. You can also visit https://midscenejs.com/model-common-config.html for the latest configuration information.`);let S="vlm-ui-tars"===h?tu.UH.V1_0:"vlm-ui-tars-doubao"===h||"vlm-ui-tars-doubao-1.5"===h?tu.UH.DOUBAO_1_5_20B:void 0,I=S?`UI-TARS=${S}`:h?`${h} mode`:"";return{socksProxy:g,httpProxy:y,openaiBaseURL:f,openaiApiKey:m,openaiExtraConfig:(e=>{if(!e||"object"!=typeof e||Array.isArray(e))return;let{defaultHeaders:t,extra_headers:r,extraHeaders:n,...o}=e,i=t??r??n;return void 0!==i?{...o,defaultHeaders:i}:o})(w),extraBody:x,protocol:(()=>{let e=a[i.protocol];if(void 0!==e){if("openai-chat"===e||"openai-responses"===e)return e;throw Error(`${i.protocol} must be one of: openai-chat, openai-responses. Got: ${e}`)}})(),modelFamily:h,uiTarsModelVersion:S,modelName:v,modelDescription:I,intent:"-",slot:"-",timeout:(()=>{let e=a[i.timeout];if(void 0===e)return;let t=Number(e);if(""===e.trim()||!Number.isFinite(t)||t<0)throw Error(`${i.timeout} must be a finite number greater than or equal to 0, got ${JSON.stringify(e)}`);return t})(),temperature:k,streamMode:(()=>{var e;let t=(null==(e=a[i.streamMode])?void 0:e.trim())??"non-stream";if("stream"===t||"non-stream"===t)return t;throw Error(`Invalid ${i.streamMode}: "${t}". Expected "stream" or "non-stream".`)})(),retryCount:(()=>{if(!a[i.retryCount])return 1;let e=Number(a[i.retryCount]);if(!Number.isFinite(e))return 1;if(e<0)throw Error(`${i.retryCount} must be non-negative, got ${e}`);return e})(),retryInterval:(()=>{if(!a[i.retryInterval])return 2e3;let e=Number(a[i.retryInterval]);if(!Number.isFinite(e))return 2e3;if(e<0)throw Error(`${i.retryInterval} must be non-negative, got ${e}`);return e})(),reasoningEffort:(null==(t=a[i.reasoningEffort])?void 0:t.trim())||void 0,reasoningEnabled:"true"===(o=null==(n=a[i.reasoningEnabled])||null==(r=n.trim())?void 0:r.toLowerCase())||"1"===o||"false"!==o&&"0"!==o&&("default"===o?"default":void 0),reasoningBudget:(()=>{var e;let t=null==(e=a[i.reasoningBudget])?void 0:e.trim();if(!t)return;let r=Number(t);return Number.isFinite(r)?r:void 0})(),responseFormat:(()=>{var e,t;let r=null==(t=a[i.responseFormat])||null==(e=t.trim())?void 0:e.toLowerCase();if(!r||"auto"===r)return"auto";if("none"===r)return"none";throw Error(`${i.responseFormat} must be one of: none, auto. Got: ${r}`)})()}})({keys:n,provider:t,useLegacyLogic:"default"===e});return o.intent=e,o.slot=e,r("decideModelConfig result by agent.modelConfig() with intent",e,tF({...o})),(0,eH.vA)(o.openaiBaseURL,`failed to get base URL of model (intent=${e}). See https://midscenejs.com/model-strategy`),o.modelName||console.warn(`modelName is not set for intent ${e}, this may cause unexpected behavior. See https://midscenejs.com/model-strategy`),o};function tZ(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class tJ{initialize(){var e;let t;if(this.isInitialized)return;this.modelConfig?(this.isolatedMode=!0,t=this.normalizeModelConfig(this.modelConfig)):t=(null==(e=this.globalConfigManager)?void 0:e.getAllEnvConfig())||{};let r=tK("default",t);if(!r)throw Error("Model configuration is incomplete: model name (MIDSCENE_MODEL_NAME) is required. See https://midscenejs.com/model-strategy.html");if("jev"===r.modelFamily)throw Error("Jev cannot be the default model. Configure a general-purpose MIDSCENE_MODEL_FAMILY and use Jev in Locate, Planning, or Insight.");let n=tK("insight",t),o=tK("planning",t),i=tK("locate",t);this.modelConfigMap={default:{...r,intent:"default",slot:"default",createOpenAIClient:this.createOpenAIClientFn},locate:{...i||r,intent:"locate",slot:i?"locate":"default",createOpenAIClient:this.createOpenAIClientFn},insight:{...n||r,intent:"insight",slot:n?"insight":"default",createOpenAIClient:this.createOpenAIClientFn},planning:{...o||r,intent:"planning",slot:o?"planning":"default",createOpenAIClient:this.createOpenAIClientFn}},this.isInitialized=!0}normalizeModelConfig(e){return Object.entries(e).reduce((e,t)=>{let[r,n]=t;return null==n||(e[r]=String(n)),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(){let e=this.getModelConfig("locate");if(!e.modelFamily)throw Error(`${"locate"===e.slot?"MIDSCENE_LOCATE_MODEL_FAMILY":"MIDSCENE_MODEL_FAMILY"} is not set to a multimodal model with UI localization, so element localization cannot be achieved. Check your model configuration. See https://midscenejs.com/model-strategy.html`)}constructor(e,t){tZ(this,"modelConfigMap",void 0),tZ(this,"isInitialized",!1),tZ(this,"isolatedMode",!1),tZ(this,"globalConfigManager",void 0),tZ(this,"modelConfig",void 0),tZ(this,"createOpenAIClientFn",void 0),this.modelConfig=e,this.createOpenAIClientFn=t}}let tQ=new tJ,tq=new class{getAllEnvConfig(){let e=tu.tk.reduce((e,t)=>(e[t]=tP.env[t],e),Object.create(null));if(!this.override)return e;{let{newConfig:t,extendMode:r}=this.override;return r?{...e,...t}:{...t}}}getEnvConfigValue(e){let t=this.getAllEnvConfig();if(e===tu.Sk)throw Error("MATCH_BY_POSITION is discarded, use MIDSCENE_MODEL_FAMILY instead");if(!tu.rd.includes(e))throw Error(`getEnvConfigValue with key ${e} is not supported.`);let r=t[e];return(this.keysHaveBeenRead[e]=!0,"string"==typeof r)?r.trim():r}getEnvConfigInBoolean(e){let t=this.getAllEnvConfig();if(!tu.c$.includes(e))throw Error(`getEnvConfigInBoolean with key ${e} is not supported`);let r=t[e];return this.keysHaveBeenRead[e]=!0,!!r&&(!!/^(true|1)$/i.test(r)||!/^(false|0)$/i.test(r)&&!!r.trim())}getEnvConfigValueAsNumber(e){if(!tu.rd.includes(e)&&!tu.DL.includes(e))throw Error(`getEnvConfigValueAsNumber with key ${e} is not supported.`);let t=this.getAllEnvConfig()[e];if(this.keysHaveBeenRead[e]=!0,"string"!=typeof t)return;let r=t.trim();if(!r)return;let n=Number(r);return Number.isNaN(n)?void 0:n}registerModelConfigManager(e){this.globalModelConfigManager=e}overrideAIConfig(e){var t;let r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];for(let t in e){if(![...tu.Lg,...tu.XE].includes(t))throw Error(`Failed to override AI config, invalid key: ${t}`);let r=e[t];if("string"!=typeof r)throw Error(`Failed to override AI config, value for key ${t} must be a string, but got with type ${typeof r}`);this.keysHaveBeenRead[t]&&console.warn(`Warning: try to override AI config with key ${t} ,but it has been read.`)}let n=r?{...null==(t=this.override)?void 0:t.newConfig,...e}:e;if(this.override={newConfig:{...n},extendMode:r},!this.globalModelConfigManager)throw Error("globalModelConfigManager is not registered, which should not happen");this.globalModelConfigManager.clearModelConfigMap()}constructor(){tM(this,"override",void 0),tM(this,"keysHaveBeenRead",{}),tM(this,"globalModelConfigManager",void 0),tj()}};tq.registerModelConfigManager(tQ),tQ.registerGlobalConfigManager(tq);let tX=()=>{let e=tq.getEnvConfigValue(tu.El);return e?e:"Asia/Shanghai"===Intl.DateTimeFormat().resolvedOptions().timeZone?"Chinese":"English"},tW=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];tq.overrideAIConfig(e,t)};var tH=r(35966),tY=r(13009),tG=r(76970);r(35207);var tV=r(1344);let t$="undefined"!=typeof __MIDSCENE_REPORT_BUILD__&&__MIDSCENE_REPORT_BUILD__;var t_=r(8963).Buffer,t0=r(85409);let t1=new Map,t2=new Map;function t3(){if(t$)return"";let e="REPLACE_ME_WITH_REPORT_HTML";if(e.includes("REPLACE_ME_WITH_REPORT_HTML"))throw Error('Report template contains an unresolved placeholder. Build Report with "pnpm exec nx build @midscene/report", or run "pnpm --filter @midscene/core sync-report-template" if apps/report/dist/index.html already exists.');return e}function t5(e,t){let r=e.lastIndexOf("</html>");return -1===r?e+t:`${e.slice(0,r)}${t}
|
|
8
|
+
`)}record(e){let t=this.writeQueue.then(()=>this.writeEvent(e));return this.writeQueue=t.catch(e=>{th("Failed to write model call record",e)}),this.writeQueue}constructor(){tp(this,"processStartTime",new Date().toISOString().replace(/[:.]/g,"-")),tp(this,"filePath",void 0),tp(this,"filePathPromise",void 0),tp(this,"writeQueue",Promise.resolve())}};function tg(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class ty extends Error{constructor(e,t,r,n,o){super(e),tg(this,"usage",void 0),tg(this,"rawResponse",void 0),tg(this,"rawAssistantOutput",void 0),tg(this,"reasoningContent",void 0),this.name="AIResponseParseError",this.rawResponse=t,this.usage=r,this.rawAssistantOutput=n,this.reasoningContent=o}}let tv="_midscene_call_id",tb=0;function tw(e){try{return JSON.stringify(e)}catch(t){return String(e)}}function tE(e){return e instanceof Error?e:Error(String(e))}let tx=e=>"string"==typeof e&&e.trim().length>0,tk=e=>{try{let t=new URL(e);if(t.username)return t.password="****",t.href;return e}catch{return e}},tS=async e=>{let{socksProxy:t,httpProxy:n}=e,o=(0,e0.aZ)("ai:call:proxy",{console:!0}),i=(0,e0.aZ)("ai:call:proxy");if(n)if(i("using http proxy",tk(n)),eH.ht)o("HTTP proxy is configured but not supported in browser environment");else{let{loadUndici:e}=await r.e("749").then(r.bind(r,17964)),{ProxyAgent:t}=await e();return new t({uri:n})}else if(t)if(i("using socks proxy",tk(t)),eH.ht)o("SOCKS proxy is configured but not supported in browser environment");else try{let{loadFetchSocks:e}=await r.e("749").then(r.bind(r,17964)),{socksDispatcher:n}=await e(),o=new URL(t);if(!o.hostname)throw Error("SOCKS proxy URL must include a valid hostname");let a=Number.parseInt(o.port,10);if(!o.port||Number.isNaN(a))throw Error("SOCKS proxy URL must include a valid port");let s=o.protocol.replace(":",""),l="socks4"===s?4:5,c=n({type:l,host:o.hostname,port:a,...o.username?{userId:decodeURIComponent(o.username),password:decodeURIComponent(o.password||"")}:{}});return i("socks proxy configured successfully",{type:l,host:o.hostname,port:a}),c}catch(e){throw o("Failed to configure SOCKS proxy:",e),Error(`Invalid SOCKS proxy URL: ${t}. Expected format: socks4://host:port, socks5://host:port, or with authentication: socks5://user:pass@host:port`)}},tI=e=>{let{content:t,reasoningContent:r,useReasoningAsContentFallback:n}=e;return!tx(t)&&n&&tx(r)?((0,e0.aZ)("ai:call",{console:!0})("empty content from AI model, using reasoning content"),r):t},tC=async e=>{var t;let{completion:r,openAIRequestContext:n,extractContentAndReasoning:o,useReasoningAsContentFallback:i,requestBodyParams:a,requestSignal:s}=e;s.throwIfAborted();let l=await r.create({...a,stream:!1},{signal:s});s.throwIfAborted();let c=l._request_id??(null==(t=n.responseRequestId)?void 0:t.requestId);if(!l.choices)throw Error(`invalid response from LLM service: ${JSON.stringify(l)}`);let A={type:"chat-completion",rawValue:l.choices[0].message},u=o(l.choices[0].message),d=u.reasoning_content,p=tI({content:u.content,reasoningContent:d,useReasoningAsContentFallback:i});if(!tx(p))throw new ty("empty content from AI model",p||"",void 0,A);return{content:p,reasoningContent:d,rawAssistantOutput:A,rawUsage:l.usage,requestId:c,responseModelName:l.model}},tO=async e=>{var t,r,n;let o,i,{completion:a,openAIRequestContext:s,extractContentAndReasoning:l,useReasoningAsContentFallback:c,requestBodyParams:A,requestSignal:u,onChunk:d,recordEvent:p}=e;(0,eH.vA)("function"==typeof d,"onChunk is required when stream is true");let h="",m="";u.throwIfAborted();let f=a.stream({...A,stream_options:{...A.stream_options,include_usage:!0}},{signal:u}),g=0;for await(let e of f){u.throwIfAborted(),g+=1,null==p||p({type:"chunk",sequence:g,chunk:e});let t=l(null==(n=e.choices)||null==(r=n[0])?void 0:r.delta),a=t.content||"",s=t.reasoning_content||"";e.usage&&(o=e.usage),e.model&&(i=e.model),(a||s)&&(h+=a,m+=s,d({content:a,reasoning_content:s,accumulated:h,isComplete:!1,usage:void 0}))}let y=(await f.finalChatCompletion()).choices[0].message,v=null==(t=s.responseRequestId)?void 0:t.requestId;return d({content:"",accumulated:h=tI({content:h,reasoningContent:m,useReasoningAsContentFallback:c})||"",reasoning_content:"",isComplete:!0,usage:o}),{content:h,reasoningContent:m,rawAssistantOutput:{type:"chat-completion",rawValue:y},rawUsage:o,requestId:v,responseModelName:i}},tR=async e=>{var t;let{messages:r,modelRuntime:n,options:o}=e,i=(0,e0.aZ)("ai:call"),{config:a,adapter:s}=n,l={intent:a.intent,userConfig:{temperature:a.temperature,reasoningEnabled:a.reasoningEnabled,reasoningEffort:a.reasoningEffort,reasoningBudget:a.reasoningBudget,responseFormat:a.responseFormat},semanticRetryAttempt:null==o?void 0:o.semanticRetryAttempt,requiresOriginalImageDetail:null==o?void 0:o.requiresOriginalImageDetail,expectedJsonObjectResponse:null==o?void 0:o.expectedJsonObjectResponse},{config:c}=s.chatCompletion.buildChatCompletionParams(l);i(`adapter chat completion params: ${tw({config:c})}`);let A={model:a.modelName,messages:(t=e=>{let{imageDetail:t}=e;return s.resolveImageDetail({imageDetail:t,intent:a.intent,requiresOriginalImageDetail:null==o?void 0:o.requiresOriginalImageDetail})},r.map(e=>{if("type"in e&&"model-output"===e.type){if("chat-completion"!==e.output.type)throw Error("Cannot replay Responses output in a Chat Completions conversation");return e.output.rawValue}let r="role"in e?e:e.message;return{role:r.role,content:"string"==typeof r.content?r.content:r.content.map(e=>"text"===e.type?{type:"text",text:e.text}:{type:"image_url",image_url:{url:e.url,detail:t({imageDetail:e.detail})}})}})),...c,...a.extraBody??{}},u=await tS({socksProxy:a.socksProxy,httpProxy:a.httpProxy});return{requestParams:A,extractContentAndReasoning:s.chatCompletion.extractContentAndReasoning,useReasoningAsContentFallback:s.chatCompletion.useReasoningAsContentFallback,proxyAgent:u}},tj=()=>{let e=(0,tA.j)(tu.v4),t="";e&&(console.warn("MIDSCENE_DEBUG_MODEL_PROFILE is deprecated, use DEBUG=midscene:ai:profile instead"),t="ai:profile"),(0,tA.j)(tu.$l)&&(console.warn("MIDSCENE_DEBUG_MODEL_RESPONSE is deprecated, use DEBUG=midscene:ai:response instead"),t=t?"ai:*":"ai:call"),t&&(0,e0.Nw)(t)};var tP=r(85409);function tM(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let tT={modelName:tu._q,socksProxy:tu.T4,httpProxy:tu.Yf,openaiBaseURL:tu.kX,openaiApiKey:tu.Lh,openaiExtraConfig:tu.Z7,extraBody:tu.Pm,protocol:tu.ju,streamMode:tu.R9,modelFamily:tu.v,timeout:tu.Yg,temperature:tu.V7,retryCount:tu.vC,retryInterval:tu.xg,reasoningEffort:tu.y2,reasoningEnabled:tu.nc,reasoningBudget:tu.fS,responseFormat:tu.k8},tN={modelName:tu.SP,socksProxy:tu.l8,httpProxy:tu.S7,openaiBaseURL:tu.AW,openaiApiKey:tu.lp,openaiExtraConfig:tu.hC,extraBody:tu.Tf,protocol:tu.Js,streamMode:tu.pG,modelFamily:tu.Jm,timeout:tu.a0,temperature:tu.fF,retryCount:tu.mk,retryInterval:tu.T8,reasoningEffort:tu.Qu,reasoningEnabled:tu.VY,reasoningBudget:tu.Xx,responseFormat:tu.EH},tD={modelName:tu.xP,socksProxy:tu.mZ,httpProxy:tu.zQ,openaiBaseURL:tu.zG,openaiApiKey:tu.OK,openaiExtraConfig:tu.ag,extraBody:tu.WH,protocol:tu.kb,streamMode:tu.Gl,modelFamily:tu.OY,timeout:tu.Z$,temperature:tu.Cn,retryCount:tu.sg,retryInterval:tu.wu,reasoningEffort:tu.Vb,reasoningEnabled:tu.u1,reasoningBudget:tu.aO,responseFormat:tu.lV},tz={modelName:tu.HR,socksProxy:tu.iw,httpProxy:tu.FU,openaiBaseURL:tu.$H,openaiApiKey:tu.IQ,openaiExtraConfig:tu.I2,extraBody:tu.G0,protocol:tu.CR,streamMode:tu.cD,modelFamily:tu.yR,timeout:tu.zD,temperature:tu.W4,retryCount:tu.Km,retryInterval:tu.aK,reasoningEffort:tu.VM,reasoningEnabled:tu.M1,reasoningBudget:tu.AU,responseFormat:tu.fh},tB=function(e){let t=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 r=e.substring(0,3),n=e.substring(e.length-3),o=e.length-6,i=t.repeat(o);return`${r}${i}${n}`},tF=e=>Object.fromEntries(Object.entries(e).map(e=>{let[t,r]=e;if(!r)return[t,r];if("string"==typeof r&&/key/i.test(t))return[t,tB(r)];if("object"==typeof r){let e=JSON.stringify(r);if(/key/i.test(e))return[t,tB(e)]}return[t,r]})),tL=(e,t)=>{if(t)try{return JSON.parse(t)}catch(t){throw Error(`Failed to parse ${e} as a JSON. ${t.message}`,{cause:t})}},tU={locate:tN,insight:tT,planning:tD,default:tz},tK=(e,t)=>{let r=(0,e0.aZ)("ai:config");r("will decideModelConfig base on agent.modelConfig()",e,tF(t));let n=tU[e];if(!t[n.modelName])return void r("no modelName found for intent",e);let o=(e=>{var t,r,n;let o,{keys:i,provider:a,useLegacyLogic:s=!1}=e;tj(),(0,e0.aZ)("ai:config")("enter parseOpenaiSdkConfig with keys:",i);let l=s?a[tu.Jq]:void 0,c=s?a[tu.jG]:void 0,A=s?a[tu.$]:void 0,u=s?a[tu.CA]:void 0,d=s?a[tu.b6]:void 0,p=s?(e=>{let t=e[tu.pp],r=e[tu.yb],n=e[tu.NF],o=e[tu.JM],i=e[tu.j_],a=[t&&tu.pp,r&&tu.yb,n&&tu.NF,o&&tu.JM,i&&tu.j_].filter(Boolean);if(a.length>1)throw Error(`Only one vision mode can be enabled at a time. Currently enabled modes: ${a.join(", ")}. Please disable all but one mode.`);if(n)return"qwen3-vl";if(r)return"qwen2.5-vl";if(t)return"doubao-vision";if(i)return"gemini";if(o)if("1"===o)return"vlm-ui-tars";else if("DOUBAO"===o||"DOUBAO-1.5"===o)return"vlm-ui-tars-doubao-1.5";else return"vlm-ui-tars-doubao"})(a):void 0,h=a[i.modelFamily]||p,m=a[i.openaiApiKey]||l,f=a[i.openaiBaseURL]||c,g=a[i.socksProxy]||A,y=a[i.httpProxy]||u,v=a[i.modelName],b=a[i.openaiExtraConfig],w=tL(i.openaiExtraConfig,b||d),E=a[i.extraBody],x=tL(i.extraBody,E),k=(e=>{if(void 0===e||""===e)return;let t=Number(e);return Number.isFinite(t)?t:void 0})(a[i.temperature]);if(h&&!tu._j.includes(h))throw Error(`Invalid MIDSCENE_MODEL_FAMILY value: ${h}. Current version v1.16.2 accepts the following model families: ${tu._j.join(", ")}. You can also visit https://midscenejs.com/model-api-setup.html for the latest configuration information.`);let S="vlm-ui-tars"===h?tu.UH.V1_0:"vlm-ui-tars-doubao"===h||"vlm-ui-tars-doubao-1.5"===h?tu.UH.DOUBAO_1_5_20B:void 0,I=S?`UI-TARS=${S}`:h?`${h} mode`:"";return{socksProxy:g,httpProxy:y,openaiBaseURL:f,openaiApiKey:m,openaiExtraConfig:(e=>{if(!e||"object"!=typeof e||Array.isArray(e))return;let{defaultHeaders:t,extra_headers:r,extraHeaders:n,...o}=e,i=t??r??n;return void 0!==i?{...o,defaultHeaders:i}:o})(w),extraBody:x,protocol:(()=>{let e=a[i.protocol];if(void 0!==e){if("openai-chat"===e||"openai-responses"===e)return e;throw Error(`${i.protocol} must be one of: openai-chat, openai-responses. Got: ${e}`)}})(),modelFamily:h,uiTarsModelVersion:S,modelName:v,modelDescription:I,intent:"-",slot:"-",timeout:(()=>{let e=a[i.timeout];if(void 0===e)return;let t=Number(e);if(""===e.trim()||!Number.isFinite(t)||t<0)throw Error(`${i.timeout} must be a finite number greater than or equal to 0, got ${JSON.stringify(e)}`);return t})(),temperature:k,streamMode:(()=>{var e;let t=(null==(e=a[i.streamMode])?void 0:e.trim())??"non-stream";if("stream"===t||"non-stream"===t)return t;throw Error(`Invalid ${i.streamMode}: "${t}". Expected "stream" or "non-stream".`)})(),retryCount:(()=>{if(!a[i.retryCount])return 1;let e=Number(a[i.retryCount]);if(!Number.isFinite(e))return 1;if(e<0)throw Error(`${i.retryCount} must be non-negative, got ${e}`);return e})(),retryInterval:(()=>{if(!a[i.retryInterval])return 2e3;let e=Number(a[i.retryInterval]);if(!Number.isFinite(e))return 2e3;if(e<0)throw Error(`${i.retryInterval} must be non-negative, got ${e}`);return e})(),reasoningEffort:(null==(t=a[i.reasoningEffort])?void 0:t.trim())||void 0,reasoningEnabled:"true"===(o=null==(n=a[i.reasoningEnabled])||null==(r=n.trim())?void 0:r.toLowerCase())||"1"===o||"false"!==o&&"0"!==o&&("default"===o?"default":void 0),reasoningBudget:(()=>{var e;let t=null==(e=a[i.reasoningBudget])?void 0:e.trim();if(!t)return;let r=Number(t);return Number.isFinite(r)?r:void 0})(),responseFormat:(()=>{var e,t;let r=null==(t=a[i.responseFormat])||null==(e=t.trim())?void 0:e.toLowerCase();if(!r||"auto"===r)return"auto";if("none"===r)return"none";throw Error(`${i.responseFormat} must be one of: none, auto. Got: ${r}`)})()}})({keys:n,provider:t,useLegacyLogic:"default"===e});return o.intent=e,o.slot=e,r("decideModelConfig result by agent.modelConfig() with intent",e,tF({...o})),(0,eH.vA)(o.openaiBaseURL,`failed to get base URL of model (intent=${e}). See https://midscenejs.com/model-api-setup`),o.modelName||console.warn(`modelName is not set for intent ${e}, this may cause unexpected behavior. See https://midscenejs.com/model-api-setup`),o};function tZ(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class tJ{initialize(){var e;let t;if(this.isInitialized)return;this.modelConfig?(this.isolatedMode=!0,t=this.normalizeModelConfig(this.modelConfig)):t=(null==(e=this.globalConfigManager)?void 0:e.getAllEnvConfig())||{};let r=tK("default",t);if(!r)throw Error("Model configuration is incomplete: model name (MIDSCENE_MODEL_NAME) is required. See https://midscenejs.com/model-api-setup");if("jev"===r.modelFamily)throw Error("Jev cannot be the default model. Configure a general-purpose MIDSCENE_MODEL_FAMILY and use Jev in Locate, Planning, or Insight.");let n=tK("insight",t),o=tK("planning",t),i=tK("locate",t);this.modelConfigMap={default:{...r,intent:"default",slot:"default",createOpenAIClient:this.createOpenAIClientFn},locate:{...i||r,intent:"locate",slot:i?"locate":"default",createOpenAIClient:this.createOpenAIClientFn},insight:{...n||r,intent:"insight",slot:n?"insight":"default",createOpenAIClient:this.createOpenAIClientFn},planning:{...o||r,intent:"planning",slot:o?"planning":"default",createOpenAIClient:this.createOpenAIClientFn}},this.isInitialized=!0}normalizeModelConfig(e){return Object.entries(e).reduce((e,t)=>{let[r,n]=t;return null==n||(e[r]=String(n)),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(){let e=this.getModelConfig("locate");if(!e.modelFamily)throw Error(`${"locate"===e.slot?"MIDSCENE_LOCATE_MODEL_FAMILY":"MIDSCENE_MODEL_FAMILY"} is not set to a multimodal model with UI localization, so element localization cannot be achieved. Check your model configuration. See https://midscenejs.com/model-api-setup`)}constructor(e,t){tZ(this,"modelConfigMap",void 0),tZ(this,"isInitialized",!1),tZ(this,"isolatedMode",!1),tZ(this,"globalConfigManager",void 0),tZ(this,"modelConfig",void 0),tZ(this,"createOpenAIClientFn",void 0),this.modelConfig=e,this.createOpenAIClientFn=t}}let tQ=new tJ,tq=new class{getAllEnvConfig(){let e=tu.tk.reduce((e,t)=>(e[t]=tP.env[t],e),Object.create(null));if(!this.override)return e;{let{newConfig:t,extendMode:r}=this.override;return r?{...e,...t}:{...t}}}getEnvConfigValue(e){let t=this.getAllEnvConfig();if(e===tu.Sk)throw Error("MATCH_BY_POSITION is discarded, use MIDSCENE_MODEL_FAMILY instead");if(!tu.rd.includes(e))throw Error(`getEnvConfigValue with key ${e} is not supported.`);let r=t[e];return(this.keysHaveBeenRead[e]=!0,"string"==typeof r)?r.trim():r}getEnvConfigInBoolean(e){let t=this.getAllEnvConfig();if(!tu.c$.includes(e))throw Error(`getEnvConfigInBoolean with key ${e} is not supported`);let r=t[e];return this.keysHaveBeenRead[e]=!0,!!r&&(!!/^(true|1)$/i.test(r)||!/^(false|0)$/i.test(r)&&!!r.trim())}getEnvConfigValueAsNumber(e){if(!tu.rd.includes(e)&&!tu.DL.includes(e))throw Error(`getEnvConfigValueAsNumber with key ${e} is not supported.`);let t=this.getAllEnvConfig()[e];if(this.keysHaveBeenRead[e]=!0,"string"!=typeof t)return;let r=t.trim();if(!r)return;let n=Number(r);return Number.isNaN(n)?void 0:n}registerModelConfigManager(e){this.globalModelConfigManager=e}overrideAIConfig(e){var t;let r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];for(let t in e){if(![...tu.Lg,...tu.XE].includes(t))throw Error(`Failed to override AI config, invalid key: ${t}`);let r=e[t];if("string"!=typeof r)throw Error(`Failed to override AI config, value for key ${t} must be a string, but got with type ${typeof r}`);this.keysHaveBeenRead[t]&&console.warn(`Warning: try to override AI config with key ${t} ,but it has been read.`)}let n=r?{...null==(t=this.override)?void 0:t.newConfig,...e}:e;if(this.override={newConfig:{...n},extendMode:r},!this.globalModelConfigManager)throw Error("globalModelConfigManager is not registered, which should not happen");this.globalModelConfigManager.clearModelConfigMap()}constructor(){tM(this,"override",void 0),tM(this,"keysHaveBeenRead",{}),tM(this,"globalModelConfigManager",void 0),tj()}};tq.registerModelConfigManager(tQ),tQ.registerGlobalConfigManager(tq);let tX=()=>{let e=tq.getEnvConfigValue(tu.El);return e?e:"Asia/Shanghai"===Intl.DateTimeFormat().resolvedOptions().timeZone?"Chinese":"English"},tW=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];tq.overrideAIConfig(e,t)};var tH=r(35966),tY=r(13009),tG=r(76970);r(35207);var tV=r(1344);let t$="undefined"!=typeof __MIDSCENE_REPORT_BUILD__&&__MIDSCENE_REPORT_BUILD__;var t_=r(8963).Buffer,t0=r(85409);let t1=new Map,t2=new Map;function t3(){if(t$)return"";let e="REPLACE_ME_WITH_REPORT_HTML";if(e.includes("REPLACE_ME_WITH_REPORT_HTML"))throw Error('Report template contains an unresolved placeholder. Build Report with "pnpm exec nx build @midscene/report", or run "pnpm --filter @midscene/core sync-report-template" if apps/report/dist/index.html already exists.');return e}function t5(e,t){let r=e.lastIndexOf("</html>");return -1===r?e+t:`${e.slice(0,r)}${t}
|
|
9
9
|
${e.slice(r)}`}function t4(e,t,r){let n=!(arguments.length>3)||void 0===arguments[3]||arguments[3];if(t$)return"";let o="";if(n&&!(o=t3()))return console.warn("reportTpl is not set, will not write report"),"";let i=t&&!eH.ht,a="",s="<\/script>";if("string"==typeof e)a='<script type="midscene_web_dump" type="application/json" data-group-id="'+encodeURIComponent((()=>{if(!t||!r)return(0,eH.uR)();let e=t2.get(t);if(e)return e;let n=(0,eH.uR)();return t2.set(t,n),n})())+'">\n'+(0,eH.NB)(e)+"\n"+s;else{let{dumpString:t,attributes:r}=e;a='<script type="midscene_web_dump" type="application/json" '+Object.entries(r||{}).filter(e=>void 0!==e[1]&&null!==e[1]).map(e=>{let[t,r]=e;return`${t}="${encodeURIComponent(r)}"`}).join(" ")+">\n"+(0,eH.NB)(t)+"\n"+s}return i?(r?(t1.get(t)||((0,tG.writeFileSync)(t,o,{flag:"w"}),t1.set(t,!0)),!function(e,t){let r="</html>",n=(0,tG.statSync)(e),o=Math.min(n.size,4096),i=Math.max(0,n.size-o),a=t_.alloc(n.size-i),s=(0,tG.openSync)(e,"r");(0,tG.readSync)(s,a,0,a.length,i),(0,tG.closeSync)(s);let l=a.toString("utf8"),c=l.lastIndexOf(r);if(-1===c)throw Error(`No </html> found in file:${e}`);let A=l.slice(0,c),u=i+t_.byteLength(A,"utf8");(0,tG.truncateSync)(e,u),(0,tG.appendFileSync)(e,`${t}
|
|
10
10
|
${r}
|
|
11
|
-
`)}(t,a)):(0,tG.writeFileSync)(t,t5(o,a),{flag:"w"}),t):t5(o,a)}function t7(){return"1.16.1"}function t8(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];t0.env[tu.n0]&&console.log("[Midscene]",...t)}let t6=null,t9="";async function re(e){let{testUrl:t,serverUrl:r}=e;if(!r)return;let{repoUrl:n,userEmail:o}=await function(){if(t6)return t6;let e=(0,tV.promisify)(tY.execFile);return t6=Promise.all([e("git",["config","--get","remote.origin.url"]).then(e=>{let{stdout:t}=e;return t.trim()},()=>""),e("git",["config","--get","user.email"]).then(e=>{let{stdout:t}=e;return t.trim()},()=>"")]).then(e=>{let[t,r]=e;return{repoUrl:t,userEmail:r}})}();(n?n!==t9:t)&&(t8("Uploading test info to server",{serverUrl:r,repoUrl:n,testUrl:t,userEmail:o}),fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repo_url:n,test_url:t,user_email:o})}).then(e=>e.json()).then(e=>{t8("Successfully uploaded test info to server:",e)}).catch(e=>t8("Failed to upload test info to server:",e)),t9=n)}let rt=(0,e0.aZ)("ai:call");function rr(e,t){return e.length<=t?e:`${e.slice(0,t)}... [truncated, ${e.length} chars total]`}function rn(e){if(e instanceof Error){let t=function(e){if(!e||"object"!=typeof e)return;let t=e.code;return"string"==typeof t?t:void 0}(e),r=t?` [${t}]`:"";return`${e.name}${r}: ${e.message}`}return String(e)}let ro=async e=>{let t,{openaiBaseURL:n,openaiApiKey:o,openaiExtraConfig:i,createOpenAIClient:a,effectiveTimeoutMs:s,proxyAgent:l,executionId:c,openAIRequestContext:A}=e,u=(0,e0.aZ)("ai:call",{console:!0}),d={baseURL:n,apiKey:o,...l?{fetchOptions:{dispatcher:l}}:{},...i,defaultHeaders:{...null==i?void 0:i.defaultHeaders,"x-midscene-version":t7(),"x-midscene-execution-id":c},fetch:(t=function(){if("function"==typeof globalThis.fetch)return globalThis.fetch;throw Error("`fetch` is not defined as a global; check that the runtime provides globalThis.fetch or polyfill it before creating the OpenAI client")}(),async(e,r)=>{var n,o,i;let a;if(A.recordEvent){let t=new Request(e,r);A.recordEvent({type:"request",request:{url:t.url,method:t.method,body:await t.clone().text().catch(()=>void 0)}})}try{a=await t(e,r)}catch(o){let e,t,r=(e=[rn(o)],void 0!==(t=o&&"object"==typeof o?o.cause:void 0)&&e.push(`Cause: ${rn(t)}`),rr(e.join("\n"),4e3));throw rt("OpenAI-compatible fetch failed",r),A.fetchError=r,null==(n=A.recordEvent)||n.call(A,{type:"error",error:r}),o}let s=a.headers.get("x-request-id")??a.headers.get("x-model-request-id");if(s&&(A.responseRequestId={requestId:s,status:a.status,ok:a.ok}),a.ok||(A.rawResponseBody=await a.clone().text().catch(()=>void 0)),A.recordEvent){let e,t=(null==(o=a.headers.get("content-type"))?void 0:o.includes("text/event-stream"))?void 0:await a.clone().text().catch(()=>void 0),r={status:a.status,ok:a.ok,headers:(i=a.headers,e=[],new Headers(i).forEach((t,r)=>e.push([r,t])),e),...void 0===t?{}:{body:t}};A.httpResponse=r,a.ok||A.recordEvent({type:"error",...r})}return a}),maxRetries:0,...null!==s?{timeout:s}:{},dangerouslyAllowBrowser:!0},p=new tH.Ay(d),h=p;if(h&&tq.getEnvConfigInBoolean(tu.ZX)){if(eH.ht)throw Error("langsmith is not supported in browser");u("DEBUGGING MODE: langsmith wrapper enabled");let{wrapOpenAI:e}=await r(8297)("langsmith/wrappers");h=e(h)}if(h&&tq.getEnvConfigInBoolean(tu.$L)){if(eH.ht)throw Error("langfuse is not supported in browser");u("DEBUGGING MODE: langfuse wrapper enabled");let{observeOpenAI:e}=await r(54593)("@langfuse/openai");h=e(h)}if(a){let e=await a(p,d);e&&(h=e)}return h};async function ri(e){let{modelConfig:t,proxyAgent:r,effectiveTimeoutMs:n,executionId:o,recordEvent:i}=e,{openaiBaseURL:a,openaiApiKey:s,openaiExtraConfig:l,createOpenAIClient:c}=t,A={recordEvent:i};return{openai:await ro({openaiBaseURL:a,openaiApiKey:s,openaiExtraConfig:l,createOpenAIClient:c,effectiveTimeoutMs:n,proxyAgent:r,executionId:o,openAIRequestContext:A}),openAIRequestContext:A}}function ra(e){var t,r;if("completed"!==e.status)throw Error(`Responses request ${e.status}: ${(null==(t=e.error)?void 0:t.message)??(null==(r=e.incomplete_details)?void 0:r.reason)??"response did not complete"}`);return{content:e.output.flatMap(e=>"message"===e.type?e.content.flatMap(e=>"output_text"===e.type?[e.text]:[]):[]).join(""),reasoningContent:e.output.flatMap(e=>{var t;return"reasoning"!==e.type?[]:((null==(t=e.content)?void 0:t.length)?e.content:e.summary).map(e=>e.text)}).join(""),rawAssistantOutput:{type:"responses",rawValue:e.output},rawUsage:function(e){if(e)return{prompt_tokens:e.input_tokens,completion_tokens:e.output_tokens,total_tokens:e.total_tokens,prompt_tokens_details:e.input_tokens_details,completion_tokens_details:e.output_tokens_details}}(e.usage),responseModelName:e.model}}async function rs(e){var t;let{responses:r,requestBodyParams:n,requestSignal:o,openAIRequestContext:i}=e;o.throwIfAborted();let a=await r.create({...n,stream:!1},{signal:o});o.throwIfAborted();let s=ra(a);if(!tx(s.content))throw new ty("empty content from AI model",s.content,void 0,s.rawAssistantOutput);return{...s,requestId:a._request_id??(null==(t=i.responseRequestId)?void 0:t.requestId)}}async function rl(e){var t,r;let n,{responses:o,requestBodyParams:i,requestSignal:a,openAIRequestContext:s,onChunk:l,recordEvent:c}=e;(0,eH.vA)("function"==typeof l,"onChunk is required when stream is true"),a.throwIfAborted();let{data:A,request_id:u}=await o.create({...i,stream:!0},{signal:a}).withResponse(),d="",p=new Map,h=0;for await(let e of A){if(a.throwIfAborted(),null==c||c({type:"chunk",sequence:++h,chunk:e}),"error"===e.type)throw Error(e.message);("response.failed"===e.type||"response.incomplete"===e.type)&&ra(e.response),"response.output_item.done"===e.type&&p.set(e.output_index,e.item),"response.completed"===e.type&&(n=e.response);let t="response.output_text.delta"===e.type?e.delta:"",r="response.reasoning_summary_text.delta"===e.type||"response.reasoning_text.delta"===e.type?e.delta:"";(t||r)&&(d+=t,l({content:t,reasoning_content:r,accumulated:d,isComplete:!1}))}a.throwIfAborted(),(0,eH.vA)(n,"Responses stream ended without a completed response");let m=ra((null==(t=n.output)?void 0:t.length)?n:{...n,output:[...p.entries()].sort((e,t)=>{let[r]=e,[n]=t;return r-n}).map(e=>{let[,t]=e;return t})});if(!tx(m.content))throw new ty("empty content from AI model",m.content,void 0,m.rawAssistantOutput);return l({content:"",reasoning_content:"",accumulated:m.content,isComplete:!0,usage:m.rawUsage}),{...m,requestId:u??(null==(r=s.responseRequestId)?void 0:r.requestId)}}async function rc(e){var t;let{messages:r,modelRuntime:n,options:o}=e,i=(0,e0.aZ)("ai:call"),{config:a,adapter:s}=n,l={intent:a.intent,userConfig:{temperature:a.temperature,reasoningEnabled:a.reasoningEnabled,reasoningEffort:a.reasoningEffort,reasoningBudget:a.reasoningBudget,responseFormat:a.responseFormat},semanticRetryAttempt:null==o?void 0:o.semanticRetryAttempt,requiresOriginalImageDetail:null==o?void 0:o.requiresOriginalImageDetail,expectedJsonObjectResponse:null==o?void 0:o.expectedJsonObjectResponse},{config:c}=s.responses.buildResponsesParams(l);i(`adapter responses params: ${tw({config:c})}`);let A={...c,...a.extraBody};if(!0===A.background)throw Error("Responses background mode is not supported");return{requestParams:{store:!1,...A,model:a.modelName,input:(t=e=>{let{imageDetail:t}=e;return s.resolveImageDetail({imageDetail:t,intent:a.intent,requiresOriginalImageDetail:null==o?void 0:o.requiresOriginalImageDetail})},r.flatMap(e=>{if("type"in e&&"model-output"===e.type){if("responses"!==e.output.type)throw Error("Cannot replay Chat Completions output in a Responses conversation");return e.output.rawValue}let r="role"in e?e:e.message;return"string"==typeof r.content?[{role:r.role,content:r.content}]:"assistant"===r.role?[{role:r.role,content:r.content.map(e=>e.text).join("")}]:[{role:r.role,content:r.content.map(e=>"text"===e.type?{type:"input_text",text:e.text}:{type:"input_image",image_url:e.url,detail:t({imageDetail:e.detail})})}]}))},proxyAgent:await tS({socksProxy:a.socksProxy,httpProxy:a.httpProxy})}}async function rA(e,t){var r,n,o;let{modelRuntime:i,options:a,executionId:s,recordEvent:l,requestSignal:c,effectiveTimeoutMs:A}=e,{config:u}=i,{modelName:d}=u,p=(null==a?void 0:a.stream)??"stream"===u.streamMode,{openai:h,openAIRequestContext:m}=await ri({modelConfig:u,proxyAgent:t.input.proxyAgent,effectiveTimeoutMs:A,executionId:s,recordEvent:l}),f=(0,e0.aZ)("ai:call");f(`sending ${p?"streaming ":""}request to ${d}`);let g={requestSignal:c,openAIRequestContext:m,onChunk:(null==a?void 0:a.onChunk)??(()=>void 0),recordEvent:l};try{let e=Date.now(),{reasoningContent:o,...i}="responses"===t.protocol?await (r={...g,responses:h.responses,requestBodyParams:t.input.requestParams},p?rl(r):rs(r)):await (n={...g,completion:h.chat.completions,requestBodyParams:t.input.requestParams,extractContentAndReasoning:t.input.extractContentAndReasoning,useReasoningAsContentFallback:t.input.useReasoningAsContentFallback},p?tO(n):tC(n));c.throwIfAborted();let a=Date.now()-e;return f(`response reasoning content: ${o}`),f(`response content: ${i.content}`),null==l||l({type:"response",http:m.httpResponse,final:{content:i.content,reasoningContent:o,usage:i.rawUsage,requestId:i.requestId,timeCost:a,responseModelName:i.responseModelName}}),{...i,reasoning_content:o,isStreamed:p,timeCost:a}}catch(e){if((null==(o=m.httpResponse)?void 0:o.ok)&&(null==l||l({type:"error",...m.httpResponse,error:e instanceof Error?e.message:String(e)})),(0,e0.aZ)("ai:call",{console:!0})("call AI error",e),e instanceof ty)throw e;throw Error(`failed to call ${p?"streaming ":""}AI model service (${d}): ${e.message}${function(e,t){let r=[];if(void 0!==t.rawResponseBody&&r.push(`OpenAI raw error response body: ${rr(t.rawResponseBody,4e3)}`),t.responseRequestId&&!t.responseRequestId.ok){let{requestId:e,status:n}=t.responseRequestId;r.push(`OpenAI error response request ID (status ${n}): ${e}`)}return(void 0!==t.fetchError&&r.push(`OpenAI fetch error: ${t.fetchError}`),r.length)?`
|
|
11
|
+
`)}(t,a)):(0,tG.writeFileSync)(t,t5(o,a),{flag:"w"}),t):t5(o,a)}function t7(){return"1.16.2"}function t8(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];t0.env[tu.n0]&&console.log("[Midscene]",...t)}let t6=null,t9="";async function re(e){let{testUrl:t,serverUrl:r}=e;if(!r)return;let{repoUrl:n,userEmail:o}=await function(){if(t6)return t6;let e=(0,tV.promisify)(tY.execFile);return t6=Promise.all([e("git",["config","--get","remote.origin.url"]).then(e=>{let{stdout:t}=e;return t.trim()},()=>""),e("git",["config","--get","user.email"]).then(e=>{let{stdout:t}=e;return t.trim()},()=>"")]).then(e=>{let[t,r]=e;return{repoUrl:t,userEmail:r}})}();(n?n!==t9:t)&&(t8("Uploading test info to server",{serverUrl:r,repoUrl:n,testUrl:t,userEmail:o}),fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repo_url:n,test_url:t,user_email:o})}).then(e=>e.json()).then(e=>{t8("Successfully uploaded test info to server:",e)}).catch(e=>t8("Failed to upload test info to server:",e)),t9=n)}let rt=(0,e0.aZ)("ai:call");function rr(e,t){return e.length<=t?e:`${e.slice(0,t)}... [truncated, ${e.length} chars total]`}function rn(e){if(e instanceof Error){let t=function(e){if(!e||"object"!=typeof e)return;let t=e.code;return"string"==typeof t?t:void 0}(e),r=t?` [${t}]`:"";return`${e.name}${r}: ${e.message}`}return String(e)}let ro=async e=>{let t,{openaiBaseURL:n,openaiApiKey:o,openaiExtraConfig:i,createOpenAIClient:a,effectiveTimeoutMs:s,proxyAgent:l,executionId:c,openAIRequestContext:A}=e,u=(0,e0.aZ)("ai:call",{console:!0}),d={baseURL:n,apiKey:o,...l?{fetchOptions:{dispatcher:l}}:{},...i,defaultHeaders:{...null==i?void 0:i.defaultHeaders,"x-midscene-version":t7(),"x-midscene-execution-id":c},fetch:(t=function(){if("function"==typeof globalThis.fetch)return globalThis.fetch;throw Error("`fetch` is not defined as a global; check that the runtime provides globalThis.fetch or polyfill it before creating the OpenAI client")}(),async(e,r)=>{var n,o,i;let a;if(A.recordEvent){let t=new Request(e,r);A.recordEvent({type:"request",request:{url:t.url,method:t.method,body:await t.clone().text().catch(()=>void 0)}})}try{a=await t(e,r)}catch(o){let e,t,r=(e=[rn(o)],void 0!==(t=o&&"object"==typeof o?o.cause:void 0)&&e.push(`Cause: ${rn(t)}`),rr(e.join("\n"),4e3));throw rt("OpenAI-compatible fetch failed",r),A.fetchError=r,null==(n=A.recordEvent)||n.call(A,{type:"error",error:r}),o}let s=a.headers.get("x-request-id")??a.headers.get("x-model-request-id");if(s&&(A.responseRequestId={requestId:s,status:a.status,ok:a.ok}),a.ok||(A.rawResponseBody=await a.clone().text().catch(()=>void 0)),A.recordEvent){let e,t=(null==(o=a.headers.get("content-type"))?void 0:o.includes("text/event-stream"))?void 0:await a.clone().text().catch(()=>void 0),r={status:a.status,ok:a.ok,headers:(i=a.headers,e=[],new Headers(i).forEach((t,r)=>e.push([r,t])),e),...void 0===t?{}:{body:t}};A.httpResponse=r,a.ok||A.recordEvent({type:"error",...r})}return a}),maxRetries:0,...null!==s?{timeout:s}:{},dangerouslyAllowBrowser:!0},p=new tH.Ay(d),h=p;if(h&&tq.getEnvConfigInBoolean(tu.ZX)){if(eH.ht)throw Error("langsmith is not supported in browser");u("DEBUGGING MODE: langsmith wrapper enabled");let{wrapOpenAI:e}=await r(8297)("langsmith/wrappers");h=e(h)}if(h&&tq.getEnvConfigInBoolean(tu.$L)){if(eH.ht)throw Error("langfuse is not supported in browser");u("DEBUGGING MODE: langfuse wrapper enabled");let{observeOpenAI:e}=await r(54593)("@langfuse/openai");h=e(h)}if(a){let e=await a(p,d);e&&(h=e)}return h};async function ri(e){let{modelConfig:t,proxyAgent:r,effectiveTimeoutMs:n,executionId:o,recordEvent:i}=e,{openaiBaseURL:a,openaiApiKey:s,openaiExtraConfig:l,createOpenAIClient:c}=t,A={recordEvent:i};return{openai:await ro({openaiBaseURL:a,openaiApiKey:s,openaiExtraConfig:l,createOpenAIClient:c,effectiveTimeoutMs:n,proxyAgent:r,executionId:o,openAIRequestContext:A}),openAIRequestContext:A}}function ra(e){var t,r;if("completed"!==e.status)throw Error(`Responses request ${e.status}: ${(null==(t=e.error)?void 0:t.message)??(null==(r=e.incomplete_details)?void 0:r.reason)??"response did not complete"}`);return{content:e.output.flatMap(e=>"message"===e.type?e.content.flatMap(e=>"output_text"===e.type?[e.text]:[]):[]).join(""),reasoningContent:e.output.flatMap(e=>{var t;return"reasoning"!==e.type?[]:((null==(t=e.content)?void 0:t.length)?e.content:e.summary).map(e=>e.text)}).join(""),rawAssistantOutput:{type:"responses",rawValue:e.output},rawUsage:function(e){if(e)return{prompt_tokens:e.input_tokens,completion_tokens:e.output_tokens,total_tokens:e.total_tokens,prompt_tokens_details:e.input_tokens_details,completion_tokens_details:e.output_tokens_details}}(e.usage),responseModelName:e.model}}async function rs(e){var t;let{responses:r,requestBodyParams:n,requestSignal:o,openAIRequestContext:i}=e;o.throwIfAborted();let a=await r.create({...n,stream:!1},{signal:o});o.throwIfAborted();let s=ra(a);if(!tx(s.content))throw new ty("empty content from AI model",s.content,void 0,s.rawAssistantOutput);return{...s,requestId:a._request_id??(null==(t=i.responseRequestId)?void 0:t.requestId)}}async function rl(e){var t,r;let n,{responses:o,requestBodyParams:i,requestSignal:a,openAIRequestContext:s,onChunk:l,recordEvent:c}=e;(0,eH.vA)("function"==typeof l,"onChunk is required when stream is true"),a.throwIfAborted();let{data:A,request_id:u}=await o.create({...i,stream:!0},{signal:a}).withResponse(),d="",p=new Map,h=0;for await(let e of A){if(a.throwIfAborted(),null==c||c({type:"chunk",sequence:++h,chunk:e}),"error"===e.type)throw Error(e.message);("response.failed"===e.type||"response.incomplete"===e.type)&&ra(e.response),"response.output_item.done"===e.type&&p.set(e.output_index,e.item),"response.completed"===e.type&&(n=e.response);let t="response.output_text.delta"===e.type?e.delta:"",r="response.reasoning_summary_text.delta"===e.type||"response.reasoning_text.delta"===e.type?e.delta:"";(t||r)&&(d+=t,l({content:t,reasoning_content:r,accumulated:d,isComplete:!1}))}a.throwIfAborted(),(0,eH.vA)(n,"Responses stream ended without a completed response");let m=ra((null==(t=n.output)?void 0:t.length)?n:{...n,output:[...p.entries()].sort((e,t)=>{let[r]=e,[n]=t;return r-n}).map(e=>{let[,t]=e;return t})});if(!tx(m.content))throw new ty("empty content from AI model",m.content,void 0,m.rawAssistantOutput);return l({content:"",reasoning_content:"",accumulated:m.content,isComplete:!0,usage:m.rawUsage}),{...m,requestId:u??(null==(r=s.responseRequestId)?void 0:r.requestId)}}async function rc(e){var t;let{messages:r,modelRuntime:n,options:o}=e,i=(0,e0.aZ)("ai:call"),{config:a,adapter:s}=n,l={intent:a.intent,userConfig:{temperature:a.temperature,reasoningEnabled:a.reasoningEnabled,reasoningEffort:a.reasoningEffort,reasoningBudget:a.reasoningBudget,responseFormat:a.responseFormat},semanticRetryAttempt:null==o?void 0:o.semanticRetryAttempt,requiresOriginalImageDetail:null==o?void 0:o.requiresOriginalImageDetail,expectedJsonObjectResponse:null==o?void 0:o.expectedJsonObjectResponse},{config:c}=s.responses.buildResponsesParams(l);i(`adapter responses params: ${tw({config:c})}`);let A={...c,...a.extraBody};if(!0===A.background)throw Error("Responses background mode is not supported");return{requestParams:{store:!1,...A,model:a.modelName,input:(t=e=>{let{imageDetail:t}=e;return s.resolveImageDetail({imageDetail:t,intent:a.intent,requiresOriginalImageDetail:null==o?void 0:o.requiresOriginalImageDetail})},r.flatMap(e=>{if("type"in e&&"model-output"===e.type){if("responses"!==e.output.type)throw Error("Cannot replay Chat Completions output in a Responses conversation");return e.output.rawValue}let r="role"in e?e:e.message;return"string"==typeof r.content?[{role:r.role,content:r.content}]:"assistant"===r.role?[{role:r.role,content:r.content.map(e=>e.text).join("")}]:[{role:r.role,content:r.content.map(e=>"text"===e.type?{type:"input_text",text:e.text}:{type:"input_image",image_url:e.url,detail:t({imageDetail:e.detail})})}]}))},proxyAgent:await tS({socksProxy:a.socksProxy,httpProxy:a.httpProxy})}}async function rA(e,t){var r,n,o;let{modelRuntime:i,options:a,executionId:s,recordEvent:l,requestSignal:c,effectiveTimeoutMs:A}=e,{config:u}=i,{modelName:d}=u,p=(null==a?void 0:a.stream)??"stream"===u.streamMode,{openai:h,openAIRequestContext:m}=await ri({modelConfig:u,proxyAgent:t.input.proxyAgent,effectiveTimeoutMs:A,executionId:s,recordEvent:l}),f=(0,e0.aZ)("ai:call");f(`sending ${p?"streaming ":""}request to ${d}`);let g={requestSignal:c,openAIRequestContext:m,onChunk:(null==a?void 0:a.onChunk)??(()=>void 0),recordEvent:l};try{let e=Date.now(),{reasoningContent:o,...i}="responses"===t.protocol?await (r={...g,responses:h.responses,requestBodyParams:t.input.requestParams},p?rl(r):rs(r)):await (n={...g,completion:h.chat.completions,requestBodyParams:t.input.requestParams,extractContentAndReasoning:t.input.extractContentAndReasoning,useReasoningAsContentFallback:t.input.useReasoningAsContentFallback},p?tO(n):tC(n));c.throwIfAborted();let a=Date.now()-e;return f(`response reasoning content: ${o}`),f(`response content: ${i.content}`),null==l||l({type:"response",http:m.httpResponse,final:{content:i.content,reasoningContent:o,usage:i.rawUsage,requestId:i.requestId,timeCost:a,responseModelName:i.responseModelName}}),{...i,reasoning_content:o,isStreamed:p,timeCost:a}}catch(e){if((null==(o=m.httpResponse)?void 0:o.ok)&&(null==l||l({type:"error",...m.httpResponse,error:e instanceof Error?e.message:String(e)})),(0,e0.aZ)("ai:call",{console:!0,warning:{kind:"model-request-detail",modelName:d,error:e}})("call AI error",e),e instanceof ty)throw e;throw Error(`failed to call ${p?"streaming ":""}AI model service (${d}): ${e.message}${function(e,t){let r=[];if(void 0!==t.rawResponseBody&&r.push(`OpenAI raw error response body: ${rr(t.rawResponseBody,4e3)}`),t.responseRequestId&&!t.responseRequestId.ok){let{requestId:e,status:n}=t.responseRequestId;r.push(`OpenAI error response request ID (status ${n}): ${e}`)}return(void 0!==t.fetchError&&r.push(`OpenAI fetch error: ${t.fetchError}`),r.length)?`
|
|
12
12
|
${r.join("\n")}`:""}(0,m)}
|
|
13
|
-
Trouble shooting: https://midscenejs.com/model-
|
|
13
|
+
Trouble shooting: https://midscenejs.com/model-config#verify-model-connectivity`,{cause:e})}}function ru(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class rd extends Error{constructor(e){super(`AI call hard timeout after ${e}ms (full request time exceeded)`),ru(this,"timeoutMs",void 0),ru(this,"code",void 0),this.timeoutMs=e,this.code="AI_CALL_HARD_TIMEOUT",this.name="AIRequestTimeoutError"}}async function rp(e,t){let r;e.throwIfAborted();let n=new Promise((t,n)=>{r=()=>n(e.reason),e.addEventListener("abort",r,{once:!0})});try{return await Promise.race([t(),n])}finally{r&&e.removeEventListener("abort",r)}}function rh(e,t){return null==t||t.throwIfAborted(),new Promise((r,n)=>{let o=()=>{clearTimeout(a),null==t||t.removeEventListener("abort",i)},i=()=>{o(),n(null==t?void 0:t.reason)},a=setTimeout(()=>{o(),r()},e);null==t||t.addEventListener("abort",i,{once:!0})})}var rm=r(88403);let rf=rm.ai().min(0).max(1),rg=rm.gM("type",[rm.Ik({type:rm.eu("noul"),noul:rf}),rm.Ik({type:rm.eu("choice"),choice:rm.Yj()}),rm.Ik({type:rm.eu("box"),box:rm.Ik({left:rf,right:rf,top:rf,bottom:rf}).refine(e=>e.left<e.right&&e.top<e.bottom,"Invalid box edges")})]),ry=rm.Ik({model:rm.Yj().optional(),answers:rm.g1(rg),usage:rm.Ik({input_tokens:rm.ai().nonnegative().nullable().optional(),output_tokens:rm.ai().nonnegative().nullable().optional()}).optional()});async function rv(e,t){var r;(0,eH.vA)(e.openaiBaseURL,"Jev requires MIDSCENE_*_MODEL_BASE_URL"),(0,eH.vA)(e.openaiApiKey,"Jev requires MIDSCENE_*_MODEL_API_KEY"),(0,eH.vA)(!e.protocol||"openai-chat"===e.protocol,"Jev uses System One, not the Responses API");let n=e.openaiBaseURL.replace(/\/+$/,""),o=`${n}${n.endsWith("/v1")?"":"/v1"}/systemone`,i="openrouter.ai"===new URL(n).hostname,a={},s=Object.fromEntries(Object.entries(t.images??{}).map(e=>{let[t,r]=e;if(i)return[t,{type:"image_url",image_url:{url:r}}];let n=(0,eH.uR)(),o=/^data:image\/(png|jpeg);base64,(.+)$/.exec(r);return(0,eH.vA)(o,"System One images must be prepared PNG or JPEG data URLs"),a[n]={type:"image",format:"png"===o[1]?"png":"jpg",data_base64:o[2]},[t,n]})),l=JSON.stringify({...e.extraBody,model:e.modelName,state:{...t.state,...s},questions:t.questions,...!i&&Object.keys(a).length?{assets:a}:{}});return(0,eH.vA)(new TextEncoder().encode(l).length<=0x2000000,"Jev request exceeds the 32 MiB body limit"),{url:o,body:l,questions:t.questions,headers:{...null==(r=e.openaiExtraConfig)?void 0:r.defaultHeaders,Authorization:`Bearer ${e.openaiApiKey}`,"Content-Type":"application/json","TypeSafe-Danger-Zone-Images":"true"},dispatcher:await tS({socksProxy:e.socksProxy,httpProxy:e.httpProxy})}}async function rb(e,t){var r,n,o,i,a,s,l,c;(0,eH.vA)(!(null==(r=e.options)?void 0:r.stream),"Jev does not support streaming output");let A=Date.now();null==(n=e.recordEvent)||n.call(e,{type:"request",request:{url:t.url,method:"POST",body:t.body}});try{let r=await fetch(t.url,{method:"POST",headers:t.headers,body:t.body,signal:e.requestSignal,...t.dispatcher?{dispatcher:t.dispatcher}:{}}),n=await r.text(),c={status:r.status,ok:r.ok,body:n};if(!r.ok)throw null==(l=e.recordEvent)||l.call(e,{type:"error",http:c}),Error(`Jev request failed (${r.status}): ${n.slice(0,4e3)}`);let u=ry.parse(JSON.parse(n));for(let[e,r]of Object.entries(t.questions))(0,eH.vA)((null==(o=u.answers[e])?void 0:o.type)===r.type,`Missing or invalid Jev answer: ${e}`);for(let[e,r]of Object.entries(t.questions)){let t=u.answers[e];"choice"===r.type&&"choice"===t.type&&(0,eH.vA)(Object.hasOwn(r.criteria,t.choice),`Invalid Jev choice: ${e}`)}let d=null==(i=u.usage)?void 0:i.input_tokens,p=null==(a=u.usage)?void 0:a.output_tokens,h={content:n,isStreamed:!1,rawUsage:null!=d&&null!=p?{prompt_tokens:d,completion_tokens:p,total_tokens:d+p}:void 0,timeCost:Date.now()-A,requestId:r.headers.get("x-request-id"),responseModelName:u.model};return null==(s=e.recordEvent)||s.call(e,{type:"response",http:c,final:h}),h}catch(t){throw null==(c=e.recordEvent)||c.call(e,{type:"error",error:t instanceof Error?t.message:String(t)}),t}}async function rw(e,t,r){var n;null==r||null==(n=r.abortSignal)||n.throwIfAborted(),(null==r?void 0:r.stream)===!0&&(0,eH.vA)("function"==typeof(null==r?void 0:r.onChunk),"onChunk is required when stream: true is explicitly specified");let o=t.executionId??`unscoped-${(0,eH.uR)()}`,i=(tb+=1,`call_${tb}`),{config:a}=t,s=async()=>{var n;if(null==r?void 0:r.systemOneRequest)return(0,eH.vA)("jev"===a.modelFamily,"System One requests require the Jev model family"),{protocol:"system-one",input:await rv(a,r.systemOneRequest)};let o={messages:e,modelRuntime:t,options:r};if((n=a.openaiBaseURL)&&n.trim().toLowerCase().startsWith("codex://"))return{protocol:"codex",input:(e=>{let{messages:t,modelRuntime:r,options:n}=e,{config:o,adapter:i}=r,{config:a}=i.buildCodexAppServerParams({intent:o.intent,userConfig:{reasoningEnabled:o.reasoningEnabled,reasoningEffort:o.reasoningEffort,reasoningBudget:o.reasoningBudget},requiresOriginalImageDetail:null==n?void 0:n.requiresOriginalImageDetail});return{messages:t,resolveImageDetail:e=>{let{imageDetail:t}=e;return i.resolveImageDetail({imageDetail:t,intent:o.intent,requiresOriginalImageDetail:null==n?void 0:n.requiresOriginalImageDetail})},requestParams:a}})(o)};let i=a.protocol??"openai-chat";return((0,eH.vA)(t.adapter.supportedProtocols.includes(i),`Model adapter "${a.modelFamily??"default"}" does not support protocol "${i}"`),"openai-responses"===i)?{protocol:"responses",input:await rc(o)}:{protocol:"chat-completion",input:await tR(o)}},l=(null==r?void 0:r.abortSignal)?await rp(r.abortSignal,s):await s(),{rawUsage:c,timeCost:A,totalTimeCost:u,retryCount:d,requestId:p,responseModelName:h,...m}=await rx({messages:e,modelRuntime:t,options:r,executionId:o,internalCallId:i,prepared:l}),f=(e=>{var t;let{apiProtocol:r,stream:n,usageData:o,requestId:i,timeCost:a,totalTimeCost:s,retryCount:l,modelName:c,modelDescription:A,responseModelName:u,slot:d,internalCallId:p}=e;if(!o)return;let h=null==o||null==(t=o.prompt_tokens_details)?void 0:t.cached_tokens;return{...o,api_protocol:r,stream:n,prompt_tokens:o.prompt_tokens??0,completion_tokens:o.completion_tokens??0,total_tokens:o.total_tokens??0,cached_input:h??0,time_cost:a??0,total_time_cost:s,retry_count:l,model_name:c,model_description:A,response_model_name:u,slot:d,intent:void 0,request_id:i??void 0,[tv]:p}})({apiProtocol:l.protocol,stream:m.isStreamed,usageData:c,timeCost:A,totalTimeCost:u,retryCount:d,requestId:p,responseModelName:h,modelName:a.modelName,modelDescription:a.modelDescription,slot:a.slot,internalCallId:i}),g=f?{...f,modelRouting:t.modelRouting}:void 0,y=(0,e0.aZ)("ai:profile:stats"),v=(0,e0.aZ)("ai:profile:detail");return y(`model, ${a.modelName}, mode, ${a.modelFamily||"default"}, streaming, ${m.isStreamed}, prompt-tokens, ${(null==g?void 0:g.prompt_tokens)??""}, completion-tokens, ${(null==g?void 0:g.completion_tokens)??""}, total-tokens, ${(null==g?void 0:g.total_tokens)??""}, cached-input, ${(null==g?void 0:g.cached_input)??""}, cost-ms, ${A??""}, requestId, ${p??""}, slot, ${a.slot}, configured-temperature, ${a.temperature??""}`),v(`model usage detail: ${JSON.stringify(g)}`),g&&t.onUsage&&t.onUsage(g),{...m,usage:g}}class rE extends Error{constructor(e){super(e.message,{cause:e}),function(e,t,r){t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(this,"cause",void 0),this.cause=e}}async function rx(e){var t,r,n;let o=Date.now(),{modelRuntime:{config:i},options:a}=e,s=("number"==typeof(t=i.retryCount)&&Number.isFinite(t)?Math.max(0,Math.floor(t)):1)+1,l=i.retryInterval??2e3,c=[];for(let t=1;;t++){null==a||null==(r=a.abortSignal)||r.throwIfAborted();try{return{...await rk(e,t),totalTimeCost:Date.now()-o,retryCount:t-1}}catch(o){if(null==a||null==(n=a.abortSignal)||n.throwIfAborted(),o instanceof rE)throw o.cause;let r=tE(o);if(c.push({attempt:t,error:r}),t===s)throw function(e,t,r){let n=t.length,o=Math.max(0,n-1),i=e.message,a=t.slice(0,-1);if(e.message=`AI model request failed after ${o} ${1===o?"retry":"retries"} (${n}/${r} attempts). Last error: ${i}`,0===a.length)return e;let s=a.map(e=>{let{attempt:t,error:r}=e;return`Attempt ${t}: ${r instanceof Error?r.message:String(r)}`}).join("\n");return e.message=`${e.message}
|
|
14
14
|
Previous AI call attempt errors:
|
|
15
|
-
${s}`,e}(
|
|
15
|
+
${s}`,e}(r,c,s);(0,e0.aZ)("ai:call",{console:!0,warning:{kind:"model-request-retry",modelName:i.modelName,error:r,callId:e.internalCallId,attempt:t,maxAttempts:s,delayMs:l}})(`AI call failed (attempt ${t}/${s}), retrying in ${l}ms... Error: ${r.message}`)}await rh(l,null==a?void 0:a.abortSignal)}}async function rk(e,t){var r,n;let{messages:o,modelRuntime:i,options:a,executionId:s,internalCallId:l,prepared:c}=e,{config:A}=i,u=tm(),d=u||i.onRequest?e=>{var r,n;if("request"===e.type){let t=e.request;null==(r=i.onRequest)||r.call(i,null==t?void 0:t.url)}u&&(n={executionId:s,callId:l,semanticRetryAttempt:null==a?void 0:a.semanticRetryAttempt,slot:A.slot,intent:A.intent,modelFamily:A.modelFamily,modelRouting:i.modelRouting,...e,attempt:t},tf.record(n))}:void 0,p=void 0===(r=A.timeout)?18e4:0===r?null:r,{signal:h,cleanup:m}=function(e,t){let r,n=new AbortController;if(null==t?void 0:t.aborted)return n.abort(t.reason),{signal:n.signal,cleanup:()=>{}};null!==e&&"function"==typeof(r=setTimeout(()=>{n.abort(new rd(e))},e)).unref&&r.unref();let o=t?()=>n.abort(t.reason):void 0;return t&&o&&t.addEventListener("abort",o,{once:!0}),{signal:n.signal,cleanup:()=>{r&&clearTimeout(r),t&&o&&t.removeEventListener("abort",o)}}}(p,null==a?void 0:a.abortSignal),f=!1,g=null==a?void 0:a.onChunk,y={messages:o,modelRuntime:i,executionId:s,recordEvent:d,requestSignal:h,effectiveTimeoutMs:p,options:g?{...a,onChunk:e=>{h.throwIfAborted(),f=!0,g(e)}}:a};try{return await rp(h,()=>"system-one"===c.protocol?rb(y,c.input):"codex"===c.protocol?ti(y,c.input):rA(y,c))}catch(t){null==a||null==(n=a.abortSignal)||n.throwIfAborted();let e=tE(t);if(f)throw new rE(e);throw e}finally{m()}}function rS(e,t){if(!t)return e;let r=t instanceof Error?t.message:String(t);return[...e,{role:"user",content:`The previous response was invalid:
|
|
16
16
|
${r}
|
|
17
17
|
|
|
18
18
|
Please avoid the validation error above in this response.`}]}async function rI(e){let{callAi:t,parseResponse:r,toParseError:n,parseRetryTimes:o=0,parseRetryInterval:i=0,abortSignal:a,onParseRetry:s}=e,l=Number.isFinite(o)?Math.max(0,Math.floor(o)):0,c=Number.isFinite(i)?Math.max(0,i):0,A=async(e,o,i)=>{null==a||a.throwIfAborted();let l=await t(o,i);try{let e=await r(l);return null==a||a.throwIfAborted(),e}catch(t){if(null==a||a.throwIfAborted(),e>0)return null==s||s(t,l),c>0&&await rh(c,a),null==a||a.throwIfAborted(),A(e-1,o+1,t);throw n(t,l)}};return A(l,0)}async function rC(e,t,r){let{config:n}=t;return rI({callAi:(n,o)=>rw(rS(e,o),t,{abortSignal:null==r?void 0:r.abortSignal,expectedJsonObjectResponse:!0,semanticRetryAttempt:n}),parseResponse:e=>(function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"generic-object",{adapter:n}=t;(0,eH.vA)(e,"empty response");let o=n.jsonParser(e.content,{source:r});return eV(o),{content:o,contentString:e.content,usage:e.usage,reasoning_content:e.reasoning_content,rawAssistantOutput:e.rawAssistantOutput}})(e,t,null==r?void 0:r.jsonParserSource),toParseError:(e,t)=>new ty(e instanceof Error?e.message:String(e),t.content,t.usage,t.rawAssistantOutput,t.reasoning_content),parseRetryTimes:(null==r?void 0:r.retryTimes)??n.retryCount,parseRetryInterval:(null==r?void 0:r.retryInterval)??n.retryInterval,abortSignal:null==r?void 0:r.abortSignal})}async function rO(e,t,r){let{content:n,usage:o,rawAssistantOutput:i}=await rw(e,t,r);return{content:n,usage:o,rawAssistantOutput:i}}function rR(e){let{temperature:t,userTemperature:r,semanticRetryAttempt:n=0}=e;return n>0&&void 0===r&&0===t?.2:t}let rj=e=>{let{midsceneDefaults:t,userConfig:r}=e;return{config:{temperature:r.temperature??t.temperature}}},rP={temperature:0},rM=e=>{var t;let{userConfig:r={}}=e;if(!0!==r.reasoningEnabled)return{config:{effort:"none"}};let n=null==(t=r.reasoningEffort)?void 0:t.trim().toLowerCase();return{config:{effort:n&&["none","minimal","low","medium","high","xhigh"].includes(n)?n:"medium"}}};function rT(e,t){let r=e.toLowerCase(),n=t.toLowerCase(),o=`</${n}>`,i=`<${n}>`,a=r.lastIndexOf(o);if(-1===a){let t=r.lastIndexOf(i);if(-1===t)return;let n=t+i.length,o=e.substring(n),a=o.indexOf("<");return(-1===a?o:o.substring(0,a)).trim()}let s=r.substring(0,a).lastIndexOf(i);if(-1===s)return;let l=s+i.length;return e.substring(l,a).trim()}function rN(e,t){let r=t[0],n=t.at(-1),o=RegExp(`<${r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}>`,"i").exec(e);if((null==o?void 0:o.index)===void 0)return"";let i=e.slice(o.index),a=RegExp(`</${n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}>`,"gi"),s=[...i.matchAll(a)].at(-1),l=(null==s?void 0:s.index)!==void 0?s.index+s[0].length:i.length;return i.slice(0,l)}let rD="data-json",rz=e=>{let{jsonParser:t}=e;return{dataOutput:{tagNames:[rD],rules:"",placeholder:`<${rD}>the extracted data as JSON. Make sure both the value and scheme meet the DATA_DEMAND. If you want to write some description in this field, use the same language as the DATA_DEMAND.</${rD}>`,buildExample:e=>`<${rD}>
|
|
19
19
|
${e}
|
|
20
|
-
</${rD}>`,parse:e=>{let r=rT(e,rD);if(!r)throw Error("Missing required field: data-json");try{return t(r,{source:"generic-object"})}catch(e){throw Error(`Failed to parse data-json: ${e}`)}}}}};function rB(e){return Array.isArray(e)&&Array.isArray(e[0])?e[0]:e}function rF(e,t){let r=rB(e),n="string"==typeof r?r.trim().split(/[\s,]+/).filter(Boolean):r;if(!Array.isArray(n))throw Error(`invalid ${t} data: ${JSON.stringify(e)} `);let o=n.map(e=>"number"==typeof e?e:Number(e));if(!o.every(e=>Number.isFinite(e)))throw Error(`invalid ${t} data: ${JSON.stringify(e)} `);return o}function rL(e,t){return"point"===e.shape?{coordinates:[t[0],t[1]],coordinatesMeta:e}:{coordinates:[t[0],t[1],t[2],t[3]],coordinatesMeta:e}}function rU(e){return"bbox"===e.coordinatesMeta.shape}function rK(e,t,r){return Math.min(Math.max(e,t),r)}function rZ(e){return Math.max(e-1,0)}function rJ(e,t,r,n){let o=e*r/t;switch(n){case"round":return Math.round(o);case"trunc":return Math.trunc(o);case"none":return o;default:throw Error(`Invalid coordinate rounding: ${n}`)}}function rQ(e,t){let[r,n]=e,{width:o,height:i}=t;return[rK(r,0,rZ(o)),rK(n,0,rZ(i))]}function rq(e){return Array.isArray(e)?`[${e.join(", ")}]`:JSON.stringify(e)}let rX=[[100,100,200,200],[345,442,458,483],[120,180,380,210],[120,240,380,270],[50,100,200,200],[300,400,500,500],[600,100,800,250],[50,600,250,750]];function rW(e){let{shape:t}=e,{plural:r=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"bbox"===t?r?"bounding boxes":"bounding box":r?"points":"point"}function rH(e){if(void 0!==e.normalizedBy&&e.normalizedBy<=0)throw Error(`locate result coordinates normalizedBy must be positive: ${e.normalizedBy}`);return{shape:e.shape,order:e.order??"xy",normalizedBy:e.normalizedBy,rounding:e.rounding??"round"}}function rY(e){let t=rH(e.coordinates),r=e.parseRawLocateValue??(e=>(function(e,t){if("point"===e.shape){let r=rF(t,"point");if(r.length<2)throw Error(`invalid point data: ${JSON.stringify(t)} `);return rL(e,r)}let r=rF(t,"bbox");if(4!==r.length)throw Error(`invalid bbox data: ${JSON.stringify(t)} `);return rL(e,r)})(t,e));return{promptSpec:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{resultKey:t.resultKey??function(e){let{shape:t}=e;return"point"===t?"point":"bbox"}(e),resultKeyAliases:t.resultKeyAliases??[],resultValueSchema:function(e){let{shape:t}=e;return"point"===t?"[number, number]":"[number, number, number, number]"}(e),resultValueDescription:function(e){let{shape:t,order:r,normalizedBy:n}=e,o="point"===t?"point":"2d bounding box",i=void 0!==n?`normalized to 0-${n} relative to the screenshot. Do NOT use pixel coordinates or screenshot width/height`:"in actual pixel coordinates relative to the screenshot";return"point"===t?`${o}, should be ${"yx"===r?"[y, x]":"[x, y]"} ${i}.`:`${o}, should be ${"yx"===r?"[ymin, xmin, ymax, xmax]":"[xmin, ymin, xmax, ymax]"} ${i}.`}(e),resultNoun:rW(e),resultNounPlural:rW(e,{plural:!0}),exampleValues:rX.map(t=>(function(e,t){let[r,n,o,i]=t;if("point"===e.shape){let t=Math.round((r+o)/2),a=Math.round((n+i)/2);return"yx"===e.order?[a,t]:[t,a]}return"yx"===e.order?[n,r,i,o]:t})(e,t))}}(t,{resultKey:e.resultKey,resultKeyAliases:e.resultKeyAliases}),toPixelResult:(e,t)=>{let n=r(e),{preparedSize:o,contentSize:i=o}=t;return!function(e){if(!e||"object"!=typeof e)throw Error(`invalid parsed locate result: expected object, got ${JSON.stringify(e)}`);let t=e.coordinatesMeta,r=(null==t?void 0:t.shape)==="bbox"?4:2*((null==t?void 0:t.shape)==="point");if(!r)throw Error(`invalid parsed locate result: unsupported coordinatesMeta.shape ${JSON.stringify(null==t?void 0:t.shape)}`);let n=e.coordinates;if(!Array.isArray(n)||n.length!==r||!n.every(e=>"number"==typeof e&&Number.isFinite(e)))throw Error(`invalid parsed locate result: ${t.shape} coordinates must be ${r} finite numbers, got ${JSON.stringify(n)}`);let{order:o,normalizedBy:i,rounding:a}=t;if(!["round","trunc","none"].includes(a))throw Error(`invalid locate coordinate rounding: ${a}`);if("xy"!==o&&"yx"!==o)throw Error(`invalid locate coordinate order: ${JSON.stringify(o)}`);if(void 0!==i&&(!Number.isFinite(i)||i<=0))throw Error(`locate result normalizedBy must be positive and finite: ${i}`)}(n),function(e,t,r){let n,o,i=e.coordinatesMeta,{normalizedBy:a}=i,s=void 0!==(o=(n=e.coordinatesMeta).normalizedBy)?e.coordinates.map(()=>o):"bbox"===n.shape?"yx"===n.order?[r,t,r,t]:[t,r,t,r]:"yx"===n.order?[r,t]:[t,r];if(e.coordinates.some((e,t)=>e<0||e>s[t])){let n=void 0!==a?`normalized range [0, ${a}]`:`image size [0, ${t}]x[0, ${r}]`,o=void 0!==a?` normalizedBy=${a}`:"";throw Error(`locate result coordinates ${JSON.stringify(e.coordinates)} exceed ${n}. shape=${i.shape} order=${i.order}${o} limits=${JSON.stringify(s)}`)}if(rU(e)&&(e.coordinates[2]<e.coordinates[0]||e.coordinates[3]<e.coordinates[1]))throw Error(`invalid locate bbox coordinate order: ${JSON.stringify(e.coordinates)}`)}(n,o.width-1,o.height-1),{center:rQ(function(e,t){let{width:r,height:n}=t,{order:o,normalizedBy:i,rounding:a}=e.coordinatesMeta,[s,l]=rU(e)?[(e.coordinates[0]+e.coordinates[2])/2,(e.coordinates[1]+e.coordinates[3])/2]:e.coordinates,[c,A]="yx"===o?[l,s]:[s,l];return void 0===i?[c,A]:[rJ(c,i,r,a),rJ(A,i,n,a)]}(n,o),i),rect:rU(n)?function(e){let[t,r,n,o]=e;return{left:t,top:r,width:n-t+1,height:o-r+1}}(function(e,t){let[r,n,o,i]=e;return[...rQ([r,n],t),...rQ([o,i],t)]}(function(e,t){let{width:r,height:n}=t,{normalizedBy:o,order:i,rounding:a}=e.coordinatesMeta,[s,l,c,A]=e.coordinates,u="yx"===i?[l,s,A,c]:e.coordinates;return void 0===o?u:[rJ(u[0],o,r,a),rJ(u[1],o,n,a),rJ(u[2],o,r,a),rJ(u[3],o,n,a)]}(n,o),i)):void 0}}}}function rG(e,t){let r=t.find(t=>t.name===e);if(!r){let r=t.map(e=>e.name).join(", ");throw Error(`Action type '${e}' is not in the current action space. Available actions: ${r||"(none)"}`)}return r}function rV(e,t){let r=[];for(let n of e){let e=n.type,o=rG(e,t),i=o.interfaceAlias||e,a=o.paramSchema?r6(n.param||{},o.paramSchema):{},s="Launch"===o.name||"launch"===o.interfaceAlias||"Terminate"===o.name||"terminate"===o.interfaceAlias?"uri":"RunAdbShell"===o.name||"runAdbShell"===o.interfaceAlias||"RunHdcShell"===o.name||"runHdcShell"===o.interfaceAlias?"command":void 0,l=s?Object.keys(a):[],c=s&&1===l.length&&l[0]===s&&"string"==typeof a[s]?{[i]:a[s]}:{[i]:"",...a};r.push(c)}return r}let r$=rm.Ik({left:rm.ai(),top:rm.ai()}),r_=rm.Ik({width:rm.ai(),height:rm.ai()});r$.and(r_).and(rm.Ik({zoom:rm.ai().optional()}));let r0=rm.Ik({images:rm.YO(rm.Ik({name:rm.Yj(),url:rm.Yj()})).optional(),convertHttpImage2Base64:rm.zM().optional()}),r1=rm.KC([rm.Yj(),rm.Ik({prompt:rm.Yj()}).and(r0.partial())]),r2=e=>"string"==typeof e?e:e.prompt,r3=e=>{if("string"!=typeof e&&e.images)return{images:e.images,convertHttpImage2Base64:!!e.convertHttpImage2Base64}},r5=rm.Ik({prompt:r1,deepLocate:rm.zM().optional(),deepThink:rm.zM().optional().describe("@deprecated Use `deepLocate` instead."),cacheable:rm.zM().optional(),xpath:rm.KC([rm.Yj(),rm.zM()]).optional()}).passthrough(),r4=e=>{let t=e.prompt;if(Array.isArray(e.images)&&e.images.length>0){let r=e.images.length;t+=` (with ${r} image${r>1?"s":""})`}return t},r7=(e,t)=>{var r;return e&&(null==(r=e._def)?void 0:r.typeName)==="ZodObject"&&e.shape?Object.keys(e.shape).filter(r=>{var n;let o=e.shape[r];return!!(e=>{var t,r;let n=e;if((null==(t=n._def)?void 0:t.typeName)==="ZodOptional"&&(n=n._def.innerType),(null==(r=n._def)?void 0:r.typeName)==="ZodObject"){let e=n._def.shape();if("prompt"in e&&e.prompt)return!0}return!1})(o)&&(!t||(null==(n=o._def)?void 0:n.typeName)!=="ZodOptional")}):[]};function r8(e,t){for(let r of r7(t,!0))if(!(null==e?void 0:e[r]))throw Error(`${r}: Required locate field is not provided`)}let r6=(e,t)=>{if(!(0,eH.Qd)(e))return{};let r=r7(t),n={...e};for(let e of r){let t=n[e];t&&("string"==typeof t?n[e]=t:"object"==typeof t&&t.prompt&&("string"==typeof t.prompt?n[e]=t.prompt:"object"==typeof t.prompt&&t.prompt.prompt&&(n[e]=r4(t.prompt))))}return n},r9=(e,t,r)=>{if(!t)return;let n=e??{},o=r7(t);if(0===o.length)return t.parse(n);let i={};for(let e of o)e in n&&(i[e]=n[e]);let a={};for(let e in n)o.includes(e)?a[e]={prompt:"_dummy_"}:a[e]=n[e];let s=t.parse(a),l=null==r?void 0:r.shrunkShotToLogicalRatio;for(let e in i){let t=i[e];void 0!==l&&t&&"object"==typeof t&&t.center&&(t={...t,center:[Math.round(t.center[0]/l),Math.round(t.center[1]/l)]}),s[e]=t}return s},ne=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"YYYY-MM-DD HH:mm:ss",t=arguments.length>1?arguments[1]:void 0,r=void 0!==t?new Date(t):new Date,n=r.getFullYear(),o=String(r.getMonth()+1).padStart(2,"0"),i=String(r.getDate()).padStart(2,"0"),a=String(r.getHours()).padStart(2,"0"),s=String(r.getMinutes()).padStart(2,"0"),l=String(r.getSeconds()).padStart(2,"0"),c=e.replace("YYYY",String(n)).replace("MM",o).replace("DD",i).replace("HH",a).replace("mm",s).replace("ss",l);return`${c} (${e})`};var nt=r(52801),nr=r(16390),nn=r(86704);let no="midscene_test_run_dump";var ni=r(8963).Buffer,na={"node:fs"(e){e.exports=nt}},ns={};function nl(e){var t=ns[e];if(void 0!==t)return t.exports;var r=ns[e]={exports:{}};return na[e](r,r.exports,nl),r.exports}var nc=nl("node:fs");function nA(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let nu=eH.NB,nd=eH.x3;function np(e){return String(e??"N/A").replace(/\0/g,"").replace(/--/g,"- -")}function nh(e){let t=e.intent||"default",r=e.name||"unknown",n=e.modelDescription?` (${e.modelDescription})`:"";return`${t}: ${r}${n}`}function nm(e){var t;let r=Array.isArray(e.executions)?e.executions:[],n=r.reduce((e,t)=>e+(Array.isArray(t.tasks)?t.tasks.length:0),0),o=(null==(t=e.modelBriefs)?void 0:t.length)?e.modelBriefs.map(nh).join("; "):function(e){let t=new Map;for(let r of Array.isArray(e.executions)?e.executions:[])for(let e of Array.isArray(r.tasks)?r.tasks:[])for(let[r,n]of[["main",e.usage],["searchArea",e.searchAreaUsage]]){if(!(n&&(n.model_name||n.response_model_name||n.model_description||n.intent)))continue;let e=function(e,t){let r=t.intent||e,n=t.model_name||t.response_model_name||"unknown",o=t.model_description?` (${t.model_description})`:"";return`${r}: ${n}${o}`}(r,n);t.set(e,e)}return Array.from(t.values()).join("; ")}(e)||"No model metadata recorded",i=["For Agent Analysis:",`Report: ${np(e.groupName)}`,`SDK: ${np(e.sdkVersion)}`,`Device: ${np(e.deviceType)}`,`Executions: ${r.length}; Tasks: ${n}`,`Models: ${np(o)}`,'Structured report JSON is stored in script[type="midscene_web_dump"] tags near this comment.','Screenshots are stored as script[type="midscene-image"] tags or files referenced by screenshot refs.',"For AI analysis, inspect each execution task for type, status, timing, param, output, usage, searchAreaUsage, recorder, and screenshot refs.","Use the Markdown export when available; it contains the same report context plus image links for agent review."];return`
|
|
20
|
+
</${rD}>`,parse:e=>{let r=rT(e,rD);if(!r)throw Error("Missing required field: data-json");try{return t(r,{source:"generic-object"})}catch(e){throw Error(`Failed to parse data-json: ${e}`)}}}}};function rB(e){return Array.isArray(e)&&Array.isArray(e[0])?e[0]:e}function rF(e,t){let r=rB(e),n="string"==typeof r?r.trim().split(/[\s,]+/).filter(Boolean):r;if(!Array.isArray(n))throw Error(`invalid ${t} data: ${JSON.stringify(e)} `);let o=n.map(e=>"number"==typeof e?e:"string"==typeof e&&/^[+-]?(?:\d+\.?\d*|\.\d+)$/.test(e.trim())?Number(e):NaN);if(!o.every(e=>Number.isFinite(e)))throw Error(`invalid ${t} data: ${JSON.stringify(e)} `);return o}function rL(e,t){return"point"===e.shape?{coordinates:[t[0],t[1]],coordinatesMeta:e}:{coordinates:[t[0],t[1],t[2],t[3]],coordinatesMeta:e}}function rU(e){return"bbox"===e.coordinatesMeta.shape}function rK(e,t,r){return Math.min(Math.max(e,t),r)}function rZ(e){return Math.max(e-1,0)}function rJ(e,t,r,n){let o=e*r/t;switch(n){case"round":return Math.round(o);case"trunc":return Math.trunc(o);case"none":return o;default:throw Error(`Invalid coordinate rounding: ${n}`)}}function rQ(e,t){let[r,n]=e,{width:o,height:i}=t;return[rK(r,0,rZ(o)),rK(n,0,rZ(i))]}function rq(e){return Array.isArray(e)?`[${e.join(", ")}]`:JSON.stringify(e)}let rX=[[100,100,200,200],[345,442,458,483],[120,180,380,210],[120,240,380,270],[50,100,200,200],[300,400,500,500],[600,100,800,250],[50,600,250,750]];function rW(e){let{shape:t}=e,{plural:r=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"bbox"===t?r?"bounding boxes":"bounding box":r?"points":"point"}function rH(e){if(void 0!==e.normalizedBy&&e.normalizedBy<=0)throw Error(`locate result coordinates normalizedBy must be positive: ${e.normalizedBy}`);return{shape:e.shape,order:e.order??"xy",normalizedBy:e.normalizedBy,rounding:e.rounding??"round"}}function rY(e){let t=rH(e.coordinates),r=e.parseRawLocateValue??(e=>(function(e,t){if("point"===e.shape){let r=rF(t,"point");if(2!==r.length)throw Error(`invalid point data: ${JSON.stringify(t)} `);return rL(e,r)}let r=rF(t,"bbox");if(4!==r.length)throw Error(`invalid bbox data: ${JSON.stringify(t)} `);return rL(e,r)})(t,e));return{promptSpec:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{resultKey:t.resultKey??function(e){let{shape:t}=e;return"point"===t?"point":"bbox"}(e),resultKeyAliases:t.resultKeyAliases??[],resultValueSchema:function(e){let{shape:t}=e;return"point"===t?"[number, number]":"[number, number, number, number]"}(e),resultValueDescription:function(e){let{shape:t,order:r,normalizedBy:n}=e,o="point"===t?"point":"2d bounding box",i=void 0!==n?`normalized to 0-${n} relative to the screenshot. Do NOT use pixel coordinates or screenshot width/height`:"in actual pixel coordinates relative to the screenshot";return"point"===t?`${o}, should be ${"yx"===r?"[y, x]":"[x, y]"} ${i}.`:`${o}, should be ${"yx"===r?"[ymin, xmin, ymax, xmax]":"[xmin, ymin, xmax, ymax]"} ${i}.`}(e),resultNoun:rW(e),resultNounPlural:rW(e,{plural:!0}),exampleValues:rX.map(t=>(function(e,t){let[r,n,o,i]=t;if("point"===e.shape){let t=Math.round((r+o)/2),a=Math.round((n+i)/2);return"yx"===e.order?[a,t]:[t,a]}return"yx"===e.order?[n,r,i,o]:t})(e,t))}}(t,{resultKey:e.resultKey,resultKeyAliases:e.resultKeyAliases}),toPixelResult:(e,t)=>{let n=r(e),{preparedSize:o,contentSize:i=o}=t;return!function(e){if(!e||"object"!=typeof e)throw Error(`invalid parsed locate result: expected object, got ${JSON.stringify(e)}`);let t=e.coordinatesMeta,r=(null==t?void 0:t.shape)==="bbox"?4:2*((null==t?void 0:t.shape)==="point");if(!r)throw Error(`invalid parsed locate result: unsupported coordinatesMeta.shape ${JSON.stringify(null==t?void 0:t.shape)}`);let n=e.coordinates;if(!Array.isArray(n)||n.length!==r||!n.every(e=>"number"==typeof e&&Number.isFinite(e)))throw Error(`invalid parsed locate result: ${t.shape} coordinates must be ${r} finite numbers, got ${JSON.stringify(n)}`);let{order:o,normalizedBy:i,rounding:a}=t;if(!["round","trunc","none"].includes(a))throw Error(`invalid locate coordinate rounding: ${a}`);if("xy"!==o&&"yx"!==o)throw Error(`invalid locate coordinate order: ${JSON.stringify(o)}`);if(void 0!==i&&(!Number.isFinite(i)||i<=0))throw Error(`locate result normalizedBy must be positive and finite: ${i}`)}(n),function(e,t,r){let n,o,i=e.coordinatesMeta,{normalizedBy:a}=i,s=void 0!==(o=(n=e.coordinatesMeta).normalizedBy)?e.coordinates.map(()=>o):"bbox"===n.shape?"yx"===n.order?[r,t,r,t]:[t,r,t,r]:"yx"===n.order?[r,t]:[t,r];if(e.coordinates.some((e,t)=>e<0||e>s[t])){let n=void 0!==a?`normalized range [0, ${a}]`:`image size [0, ${t}]x[0, ${r}]`,o=void 0!==a?` normalizedBy=${a}`:"";throw Error(`locate result coordinates ${JSON.stringify(e.coordinates)} exceed ${n}. shape=${i.shape} order=${i.order}${o} limits=${JSON.stringify(s)}`)}if(rU(e)&&(e.coordinates[2]<e.coordinates[0]||e.coordinates[3]<e.coordinates[1]))throw Error(`invalid locate bbox coordinate order: ${JSON.stringify(e.coordinates)}`)}(n,o.width-1,o.height-1),{center:rQ(function(e,t){let{width:r,height:n}=t,{order:o,normalizedBy:i,rounding:a}=e.coordinatesMeta,[s,l]=rU(e)?[(e.coordinates[0]+e.coordinates[2])/2,(e.coordinates[1]+e.coordinates[3])/2]:e.coordinates,[c,A]="yx"===o?[l,s]:[s,l];return void 0===i?[c,A]:[rJ(c,i,r,a),rJ(A,i,n,a)]}(n,o),i),rect:rU(n)?function(e){let[t,r,n,o]=e;return{left:t,top:r,width:n-t+1,height:o-r+1}}(function(e,t){let[r,n,o,i]=e;return[...rQ([r,n],t),...rQ([o,i],t)]}(function(e,t){let{width:r,height:n}=t,{normalizedBy:o,order:i,rounding:a}=e.coordinatesMeta,[s,l,c,A]=e.coordinates,u="yx"===i?[l,s,A,c]:e.coordinates;return void 0===o?u:[rJ(u[0],o,r,a),rJ(u[1],o,n,a),rJ(u[2],o,r,a),rJ(u[3],o,n,a)]}(n,o),i)):void 0}}}}function rG(e,t){let r=t.find(t=>t.name===e);if(!r){let r=t.map(e=>e.name).join(", ");throw Error(`Action type '${e}' is not in the current action space. Available actions: ${r||"(none)"}`)}return r}function rV(e,t){let r=[];for(let n of e){let e=n.type,o=rG(e,t),i=o.interfaceAlias||e,a=o.paramSchema?r6(n.param||{},o.paramSchema):{},s="Launch"===o.name||"launch"===o.interfaceAlias||"Terminate"===o.name||"terminate"===o.interfaceAlias?"uri":"RunAdbShell"===o.name||"runAdbShell"===o.interfaceAlias||"RunHdcShell"===o.name||"runHdcShell"===o.interfaceAlias?"command":void 0,l=s?Object.keys(a):[],c=s&&1===l.length&&l[0]===s&&"string"==typeof a[s]?{[i]:a[s]}:{[i]:"",...a};r.push(c)}return r}let r$=rm.Ik({left:rm.ai(),top:rm.ai()}),r_=rm.Ik({width:rm.ai(),height:rm.ai()});r$.and(r_).and(rm.Ik({zoom:rm.ai().optional()}));let r0=rm.Ik({images:rm.YO(rm.Ik({name:rm.Yj(),url:rm.Yj()})).optional(),convertHttpImage2Base64:rm.zM().optional()}),r1=rm.KC([rm.Yj(),rm.Ik({prompt:rm.Yj()}).and(r0.partial())]),r2=e=>"string"==typeof e?e:e.prompt,r3=e=>{if("string"!=typeof e&&e.images)return{images:e.images,convertHttpImage2Base64:!!e.convertHttpImage2Base64}},r5=rm.Ik({prompt:r1,deepLocate:rm.zM().optional(),deepThink:rm.zM().optional().describe("@deprecated Use `deepLocate` instead."),cacheable:rm.zM().optional(),xpath:rm.KC([rm.Yj(),rm.zM()]).optional()}).passthrough(),r4=e=>{let t=e.prompt;if(Array.isArray(e.images)&&e.images.length>0){let r=e.images.length;t+=` (with ${r} image${r>1?"s":""})`}return t},r7=(e,t)=>{var r;return e&&(null==(r=e._def)?void 0:r.typeName)==="ZodObject"&&e.shape?Object.keys(e.shape).filter(r=>{var n;let o=e.shape[r];return!!(e=>{var t,r;let n=e;if((null==(t=n._def)?void 0:t.typeName)==="ZodOptional"&&(n=n._def.innerType),(null==(r=n._def)?void 0:r.typeName)==="ZodObject"){let e=n._def.shape();if("prompt"in e&&e.prompt)return!0}return!1})(o)&&(!t||(null==(n=o._def)?void 0:n.typeName)!=="ZodOptional")}):[]};function r8(e,t){for(let r of r7(t,!0))if(!(null==e?void 0:e[r]))throw Error(`${r}: Required locate field is not provided`)}let r6=(e,t)=>{if(!(0,eH.Qd)(e))return{};let r=r7(t),n={...e};for(let e of r){let t=n[e];t&&("string"==typeof t?n[e]=t:"object"==typeof t&&t.prompt&&("string"==typeof t.prompt?n[e]=t.prompt:"object"==typeof t.prompt&&t.prompt.prompt&&(n[e]=r4(t.prompt))))}return n},r9=(e,t,r)=>{if(!t)return;let n=e??{},o=r7(t);if(0===o.length)return t.parse(n);let i={};for(let e of o)e in n&&(i[e]=n[e]);let a={};for(let e in n)o.includes(e)?a[e]={prompt:"_dummy_"}:a[e]=n[e];let s=t.parse(a),l=null==r?void 0:r.shrunkShotToLogicalRatio;for(let e in i){let t=i[e];void 0!==l&&t&&"object"==typeof t&&t.center&&(t={...t,center:[Math.round(t.center[0]/l),Math.round(t.center[1]/l)]}),s[e]=t}return s},ne=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"YYYY-MM-DD HH:mm:ss",t=arguments.length>1?arguments[1]:void 0,r=void 0!==t?new Date(t):new Date,n=r.getFullYear(),o=String(r.getMonth()+1).padStart(2,"0"),i=String(r.getDate()).padStart(2,"0"),a=String(r.getHours()).padStart(2,"0"),s=String(r.getMinutes()).padStart(2,"0"),l=String(r.getSeconds()).padStart(2,"0"),c=e.replace("YYYY",String(n)).replace("MM",o).replace("DD",i).replace("HH",a).replace("mm",s).replace("ss",l);return`${c} (${e})`};var nt=r(52801),nr=r(16390),nn=r(86704);let no="midscene_test_run_dump";var ni=r(8963).Buffer,na={"node:fs"(e){e.exports=nt}},ns={};function nl(e){var t=ns[e];if(void 0!==t)return t.exports;var r=ns[e]={exports:{}};return na[e](r,r.exports,nl),r.exports}var nc=nl("node:fs");function nA(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let nu=eH.NB,nd=eH.x3;function np(e){return String(e??"N/A").replace(/\0/g,"").replace(/--/g,"- -")}function nh(e){let t=e.intent||"default",r=e.name||"unknown",n=e.modelDescription?` (${e.modelDescription})`:"";return`${t}: ${r}${n}`}function nm(e){var t;let r=Array.isArray(e.executions)?e.executions:[],n=r.reduce((e,t)=>e+(Array.isArray(t.tasks)?t.tasks.length:0),0),o=(null==(t=e.modelBriefs)?void 0:t.length)?e.modelBriefs.map(nh).join("; "):function(e){let t=new Map;for(let r of Array.isArray(e.executions)?e.executions:[])for(let e of Array.isArray(r.tasks)?r.tasks:[])for(let[r,n]of[["main",e.usage],["searchArea",e.searchAreaUsage]]){if(!(n&&(n.model_name||n.response_model_name||n.model_description||n.intent)))continue;let e=function(e,t){let r=t.intent||e,n=t.model_name||t.response_model_name||"unknown",o=t.model_description?` (${t.model_description})`:"";return`${r}: ${n}${o}`}(r,n);t.set(e,e)}return Array.from(t.values()).join("; ")}(e)||"No model metadata recorded",i=["For Agent Analysis:",`Report: ${np(e.groupName)}`,`SDK: ${np(e.sdkVersion)}`,`Device: ${np(e.deviceType)}`,`Executions: ${r.length}; Tasks: ${n}`,`Models: ${np(o)}`,'Structured report JSON is stored in script[type="midscene_web_dump"] tags near this comment.','Screenshots are stored as script[type="midscene-image"] tags or files referenced by screenshot refs.',"For AI analysis, inspect each execution task for type, status, timing, param, output, usage, searchAreaUsage, recorder, and screenshot refs.","Use the Markdown export when available; it contains the same report context plus image links for agent review."];return`
|
|
21
21
|
<!--
|
|
22
22
|
${i.join("\n")}
|
|
23
23
|
-->
|
|
@@ -221,7 +221,7 @@ REMEMBER:
|
|
|
221
221
|
16. 在做游戏任务时如果在战斗页面如果有自动战斗一定要开启自动战斗,如果多轮历史状态相似要检查自动战斗是否开启。
|
|
222
222
|
17. 如果没有合适的搜索结果,可能是因为搜索页面不对,请返回到搜索页面的上一级尝试重新搜索,如果尝试三次返回上一级搜索后仍然没有符合要求的结果,执行 finish(message="原因")。
|
|
223
223
|
18. 在结束任务前请一定要仔细检查任务是否完整准确的完成,如果出现错选、漏选、多选的情况,请返回之前的步骤进行纠正。
|
|
224
|
-
`,historyImageLimit:1,buildAssistantContent:e=>`<think>${e.response.think}</think><answer>${e.response.content}</answer>`},coordinates:{shape:"point",order:"xy",normalizedBy:1e3},parseResponse:e=>{let t,r;return r=function(e){o7("Parsing action:",e);let t="";try{if((t=e.content.trim()).startsWith('do(action="Type"')||t.startsWith('do(action="Type_Name"')){let r=o8(t,'text="');return{_metadata:"do",action:"Type",text:r,think:e.think}}if(t.startsWith("finish(message=")){let r=o8(t,'finish(message="');return
|
|
224
|
+
`,historyImageLimit:1,buildAssistantContent:e=>`<think>${e.response.think}</think><answer>${e.response.content}</answer>`},coordinates:{shape:"point",order:"xy",normalizedBy:1e3},parseResponse:e=>{let t,r;return r=function(e){o7("Parsing action:",e);let t="";try{if((t=e.content.trim()).startsWith('do(action="Type"')||t.startsWith('do(action="Type_Name"')){let r=o8(t,'text="');return{_metadata:"do",action:"Type",text:r,think:e.think}}if(t.startsWith("finish(message=")){let r=o8(t,'finish(message="');return!t.endsWith('")')&&r.endsWith(")")&&(r=r.slice(0,-1)),{_metadata:"finish",message:r,think:e.think}}if(t.startsWith("do(")){let r=t.match(/do\(action="([^"]+)"/);if(!r)throw Error(`Failed to extract action type from do() call; raw="${t}"`);let n=r[1],o={_metadata:"do",think:e.think};switch(n){case"Tap":{let e=t.match(/element=\[(\d+),(\d+)\]/);if(!e)throw Error(`Failed to extract element coordinates for Tap; raw="${t}"`);return{...o,action:"Tap",element:[Number(e[1]),Number(e[2])]}}case"Double Tap":{let e=t.match(/element=\[(\d+),(\d+)\]/);if(!e)throw Error(`Failed to extract element coordinates for Double Tap; raw="${t}"`);return{...o,action:"Double Tap",element:[Number(e[1]),Number(e[2])]}}case"Swipe":{let e=t.match(/start=\[(\d+),(\d+)\]/),r=t.match(/end=\[(\d+),(\d+)\]/);if(!e||!r)throw Error(`Failed to extract start/end coordinates for Swipe; raw="${t}"`);return{...o,action:"Swipe",start:[Number(e[1]),Number(e[2])],end:[Number(r[1]),Number(r[2])]}}case"Long Press":{let e=t.match(/element=\[(\d+),(\d+)\]/);if(!e)throw Error(`Failed to extract element coordinates for Long Press; raw="${t}"`);return{...o,action:"Long Press",element:[Number(e[1]),Number(e[2])]}}case"Launch":{let e=o8(t,'app="');return{...o,action:"Launch",app:e}}case"Back":return{...o,action:"Back"};case"Home":return{...o,action:"Home"};case"Wait":{let e=t.match(/duration=(?:["\[])?(\d+)/);if(!e)throw Error(`Failed to extract duration for Wait; raw="${t}"`);let r=Number.parseInt(e[1],10);return{...o,action:"Wait",durationMs:1e3*r}}case"Interact":return{...o,action:"Interact"};case"Call_API":{let e=o8(t,'instruction="');return{...o,action:"Call_API",instruction:e}}case"Take_over":{let e=o8(t,'message="');return{...o,action:"Take_over",message:e}}case"Note":{let e=o8(t,'message="');return{...o,action:"Note",message:e}}default:throw Error(`Unknown action type: ${n}; raw="${t}"`)}}throw Error(`Failed to parse action: ${t}`)}catch(r){let e=r instanceof Error?r.message:String(r);throw Error(`Failed to parse action: ${e}; raw="${t}"`)}}(t=function(e){let t;if(e.includes("finish(message=")){let r=e.split("finish(message=");t={think:r[0].trim(),content:`finish(message=${r[1]}`}}else if(e.includes("do(action=")){let r=e.split("do(action=");t={think:r[0].trim(),content:`do(action=${r[1]}`}}else if(e.includes("<answer>")){let r=e.split("<answer>");t={think:r[0].replace(/<think>/g,"").replace(/<\/think>/g,"").trim(),content:r[1].replace(/<\/answer>/g,"").trim()}}else t={think:"",content:e};return o7("autoGLM rawResponse:",e),o7("thinking in response:",t.think),o7("action in response:",t.content),t}(e)),{response:t,action:r}},transformActions:(e,t)=>{var r;let{options:n,coordinateSystem:o}=t;return(0,eH.vA)(o,"Auto-GLM planning requires coordinate system"),function(e,t){let{actionSpace:r,coordinateDistanceToPixels:n}=t;try{switch(e._metadata){case"finish":return o2("Transform finish action:",e),[{type:"Finished",param:{},thought:e.message}];case"do":switch(e.action){case"Tap":return o2("Transform Tap action:",e),[{type:"Tap",param:{locate:{point:e.element,prompt:""}}}];case"Double Tap":return o2("Transform Double Tap action:",e),[{type:"DoubleClick",param:{locate:{point:e.element,prompt:""}}}];case"Type":return o2("Transform Type action:",e),[{type:"Input",param:{value:e.text}}];case"Swipe":{let t,r;o2("Transform Swipe action:",e);let o=e.end[0]-e.start[0],i=e.end[1]-e.start[1],a=Math.abs(o);return Math.abs(i)>a?(r=n(i,"y"),t=i>0?"up":"down"):(r=n(o,"x"),t=o>0?"left":"right"),o2(`Calculate swipe direction: ${t}, distance: ${r}`),[{type:"Scroll",param:{locate:{point:e.start,prompt:""},distance:r,direction:t},thought:e.think||""}]}case"Long Press":return o2("Transform Long Press action:",e),[{type:"LongPress",param:{locate:{point:e.element,prompt:""}},thought:e.think||""}];case"Back":return o2("Transform Back action:",e),[{type:o4(r,o3,"AndroidBackButton"),param:{},thought:e.think||""}];case"Home":return o2("Transform Home action:",e),[{type:o4(r,o5,"AndroidHomeButton"),param:{},thought:e.think||""}];case"Wait":return o2("Transform Wait action:",e),[{type:"Sleep",param:{timeMs:e.durationMs},thought:e.think||""}];case"Launch":return o2("Transform Launch action:",e),[{type:"Launch",param:{uri:e.app},thought:e.think||""}];case"Interact":throw Error('Action "Interact" from auto-glm is not supported in the current implementation.');case"Call_API":throw Error('Action "Call_API" from auto-glm is not supported in the current implementation.');case"Take_over":throw Error('Action "Take_over" from auto-glm is not supported in the current implementation.');case"Note":throw Error('Action "Note" from auto-glm is not supported in the current implementation.');default:throw Error(`Unknown do() action type: ${e.action}`)}default:throw Error(`Unknown action metadata: ${e._metadata}`)}}catch(t){let e=t instanceof Error?t.message:String(t);throw o2("Transform error:",e),Error(`Failed to transform action: ${e}`)}}(e.action,{actionSpace:n.actionSpace,coordinateDistanceToPixels:(r=n.context.shotSize,(e,t)=>{if(void 0===o.normalizedBy)return Math.round(Math.abs(e));let n="x"===t?r.width:r.height;return rJ(Math.abs(e),o.normalizedBy,n,o.rounding)})})},shouldContinuePlanning:e=>"finish"!==e.action._metadata,buildResponseLog:(e,t)=>t}},locate:{kind:"custom",planningTapLocator:{buildSystemPrompt:()=>e?`
|
|
225
225
|
The current date: ${o0()}
|
|
226
226
|
|
|
227
227
|
# Setup
|
|
@@ -309,14 +309,14 @@ If the request is "the edit icon in the row whose project name is Apollo", retur
|
|
|
309
309
|
The first ref-box pair must represent the target element. Every remaining pair must represent a reference element needed to identify the target. If no reference element is needed, return only the target pair. Each pair must contain exactly one ${e.resultNoun}.
|
|
310
310
|
Coordinate values must be integers.
|
|
311
311
|
Coordinate requirements: ${e.resultValueDescription}
|
|
312
|
-
The origin is the top-left of the full screenshot.`},buildUserPrompt:e=>`Locate the target and the reference elements needed to distinguish it: ${e}`,expectedJsonObjectResponse:!1,parseRawResponse:function(e){let t=Array.from(e.matchAll(ie),e=>e[1]);if(0===t.length)throw Error("DeepSeek search-area response does not contain a valid <||ref||>label<||/ref||><||box||>[[x1,y1,x2,y2]]<||/box||> result");let[r,...n]=t;return{kind:"located",target:r,...n.length>0?{references:n}:{}}}},resultFormat:{coordinates:io,parseRawLocateValue:function(e){return rL(io,ii(e,4,"bbox"))}}}}}},is={chatCompletion:{unsupportedUserConfig:["reasoningEnabled","reasoningEffort","reasoningBudget"],useReasoningAsContentFallback:!0}},il={shape:"bbox",order:"xy",normalizedBy:1e3,rounding:"round"},ic={shape:"point",order:"xy",normalizedBy:1e3,rounding:"round"},iA=/(?:^|[^a-zA-Z0-9])(\d+(?:[^a-zA-Z0-9]+\d+)+)(?=$|[^a-zA-Z0-9])/g,iu={jsonParser:e_,chatCompletion:{unsupportedUserConfig:["reasoningBudget"],buildChatCompletionParams:e=>{let{midsceneDefaults:t,userConfig:r}=e,{reasoningEnabled:n,reasoningEffort:o}=r,i={};void 0!==r.temperature&&(i.temperature=r.temperature),"none"!==r.responseFormat&&e.expectedJsonObjectResponse&&(i.response_format={type:"json_object"});let a={};return"default"!==n&&(a.thinking={type:n?"enabled":"disabled"},o&&(a.reasoning_effort=o)),{config:{...t,...i,...a}}},useReasoningAsContentFallback:!0},locate:{element:{resultFormat:{coordinates:il,parseRawLocateValue:function(e){let t=rB(e),r=Array.isArray(t)&&4===t.length&&t.every(e=>"number"==typeof e&&Number.isFinite(e))?t:function(e){let t=JSON.stringify(e);if(!t)return[];let r=Array.from(t.matchAll(iA),e=>{var t;return(null==(t=e[1].match(/\d+/g))?void 0:t.map(Number))??[]}),n=Math.max(0,...r.map(e=>e.length)),o=r.filter(e=>e.length===n);return 1!==o.length?[]:o[0]}(t);if(4===r.length||5===r.length)return rL(il,[r[0],r[1],r[2],r[3]]);if(6===r.length||2===r.length||3===r.length||7===r.length)return rL(ic,[r[0],r[1]]);if(8===r.length)return rL(il,[r[0],r[1],r[4],r[5]]);throw Error(`invalid bbox data for doubao-vision mode: ${JSON.stringify(t)} `)}}}}},id=e=>{let{geminiReasoningContent:t,providerReasoningContent:r}=e;return t&&r?`thoughtParts:${t}; reasoning_content:${r}`:t||r||""},ip={gemini:{chatCompletion:{unsupportedUserConfig:["reasoningBudget"],buildChatCompletionParams:e=>{let{midsceneDefaults:t,userConfig:r}=e,{reasoningEnabled:n,reasoningEffort:o}=r,i={};void 0!==r.temperature&&(i.temperature=r.temperature);let a={};return"default"!==n&&(a.extra_body={google:{thinking_config:{include_thoughts:!0,thinking_level:n?o??"medium":"minimal"}}}),{config:{...t,...i,...a}}},messageExtraction:{kind:"custom",extractContentAndReasoning:e=>{var t;let r;if(!e)return{content:"",reasoning_content:""};if(Array.isArray(e.content)){let t=(e=>{let t=[],r=[];for(let n of e){if(!(n&&"object"==typeof n&&!Array.isArray(n)))continue;let e="string"==typeof n.text?n.text:void 0;e&&(!0===n.thought?r.push(e):t.push(e))}return{content:t.join(""),geminiReasoningContent:r.join("")}})(e.content);return{content:t.content,reasoning_content:id({geminiReasoningContent:t.geminiReasoningContent,providerReasoningContent:"string"==typeof e.reasoning_content?e.reasoning_content:""})}}let n="string"==typeof e.content?e.content:"",o=(null==(r=n.match(/<thought>([\s\S]*?)<\/thought>/i))||null==(t=r[1])?void 0:t.trim())||"";return{content:n,reasoning_content:id({geminiReasoningContent:o,providerReasoningContent:"string"==typeof e.reasoning_content?e.reasoning_content:""})}}}},locate:{element:{resultFormat:{coordinates:{shape:"bbox",order:"yx",normalizedBy:1e3}}}}}},ih={"glm-v":{chatCompletion:{unsupportedUserConfig:["reasoningEffort","reasoningBudget"],buildChatCompletionParams:e=>{let{midsceneDefaults:t,userConfig:r}=e,{reasoningEnabled:n}=r,o={};void 0!==r.temperature&&(o.temperature=r.temperature),"none"!==r.responseFormat&&e.expectedJsonObjectResponse&&(o.response_format={type:"json_object"});let i={};return"default"!==n&&(i.thinking={type:n?"enabled":"disabled"}),{config:{...t,...o,...i}}},useReasoningAsContentFallback:!0},locate:{element:{resultFormat:{coordinates:{shape:"bbox",order:"xy",normalizedBy:1e3}}}}}},im=e=>"locate"===e.intent||e.requiresOriginalImageDetail?"original":e.imageDetail??"high",ig=e=>{let{reasoningEnabled:t,reasoningEffort:r}=e;if("default"!==t)return!0===t?r??"medium":"none"},iy=e=>{let{reasoningEnabled:t,reasoningEffort:r}=e;if("default"!==t)return!0===t?r??"medium":"low"},iv={"gpt-5":{supportedProtocols:["openai-chat","openai-responses"],resolveImageDetail:im,responses:{replayRawAssistantOutput:!1,unsupportedUserConfig:["reasoningBudget"],buildResponsesParams:e=>{let{midsceneDefaults:t,userConfig:r,expectedJsonObjectResponse:n}=e,o={};void 0!==r.temperature&&(o.temperature=r.temperature),"none"!==r.responseFormat&&n&&(o.text={format:{type:"json_object"}});let i=ig(r);return{config:{...t,...o,reasoning:{effort:i,context:"current_turn"}}}}},buildCodexAppServerParams:e=>({config:{effort:ig(e.userConfig??{})}}),chatCompletion:{unsupportedUserConfig:["reasoningBudget"],buildChatCompletionParams:e=>{let{midsceneDefaults:t,userConfig:r}=e,n={};void 0!==r.temperature&&(n.temperature=r.temperature),"none"!==e.userConfig.responseFormat&&e.expectedJsonObjectResponse&&(n.response_format={type:"json_object"});let o=ig(r);return{config:{...t,...n,reasoning_effort:o}}}},locate:{element:{resultFormat:{coordinates:{shape:"bbox",order:"xy"}}}}},"gpt-6":{supportedProtocols:["openai-chat","openai-responses"],resolveImageDetail:im,responses:{replayRawAssistantOutput:!1,unsupportedUserConfig:["temperature","reasoningBudget"],buildResponsesParams:e=>{let{midsceneDefaults:t,userConfig:r,expectedJsonObjectResponse:n}=e,{responseFormat:o}=r,i={};i.temperature=void 0,"none"!==o&&n&&(i.text={format:{type:"json_object"}});let a=iy(r);return{config:{...t,...i,reasoning:{effort:a,context:"current_turn"}}}}},buildCodexAppServerParams:e=>({config:{effort:iy(e.userConfig??{})}}),chatCompletion:{unsupportedUserConfig:["temperature","reasoningBudget"],buildChatCompletionParams:e=>{let{midsceneDefaults:t,userConfig:r,expectedJsonObjectResponse:n}=e,{responseFormat:o}=r,i={};i.temperature=void 0,"none"!==o&&n&&(i.response_format={type:"json_object"});let a=iy(r);return{config:{...t,...i,reasoning_effort:a}}}},locate:{element:{resultFormat:{coordinates:{shape:"bbox",order:"xy"}}}}}};async function ib(e){let t=await ol(e,!0),r=await nV(t),n=Math.min(1,1568/r.width,1568/r.height),o={width:Math.max(1,Math.round(r.width*n)),height:Math.max(1,Math.round(r.height*n))},i=await oe(t,{targetSize:o}),a=await ou(i,280);return(0,eH.vA)(nK.Buffer.from(oc(a.imageBase64).body,"base64").length<=0x1000000,"Jev image exceeds 16 MiB"),{...a,contentSize:o,sourceSize:{width:r.width,height:r.height}}}let iw="https://midscenejs.com/model-config";function iE(e){return"planning"===e?`Planning model family is required because aiAct is asking the planning model to return locate coordinates. Configure MIDSCENE_PLANNING_MODEL_FAMILY for the planning model, or remove the separate planning model config and configure MIDSCENE_MODEL_FAMILY on the default model. ${iw}`:`Default model family is required because aiAct is asking the default model to return locate coordinates during planning. Configure MIDSCENE_MODEL_FAMILY so Midscene can parse planning locate coordinates correctly. ${iw}`}function ix(){return`## Important Notes for Locating Elements:
|
|
312
|
+
The origin is the top-left of the full screenshot.`},buildUserPrompt:e=>`Locate the target and the reference elements needed to distinguish it: ${e}`,expectedJsonObjectResponse:!1,parseRawResponse:function(e){let t=Array.from(e.matchAll(ie),e=>e[1]);if(0===t.length)throw Error("DeepSeek search-area response does not contain a valid <||ref||>label<||/ref||><||box||>[[x1,y1,x2,y2]]<||/box||> result");let[r,...n]=t;return{kind:"located",target:r,...n.length>0?{references:n}:{}}}},resultFormat:{coordinates:io,parseRawLocateValue:function(e){return rL(io,ii(e,4,"bbox"))}}}}}},is={chatCompletion:{unsupportedUserConfig:["reasoningEnabled","reasoningEffort","reasoningBudget"],useReasoningAsContentFallback:!0}},il={shape:"bbox",order:"xy",normalizedBy:1e3,rounding:"round"},ic={shape:"point",order:"xy",normalizedBy:1e3,rounding:"round"},iA=/(?:^|[^a-zA-Z0-9])(\d+(?:[^a-zA-Z0-9]+\d+)+)(?=$|[^a-zA-Z0-9])/g,iu={jsonParser:e_,chatCompletion:{unsupportedUserConfig:["reasoningBudget"],buildChatCompletionParams:e=>{let{midsceneDefaults:t,userConfig:r}=e,{reasoningEnabled:n,reasoningEffort:o}=r,i={};void 0!==r.temperature&&(i.temperature=r.temperature),"none"!==r.responseFormat&&e.expectedJsonObjectResponse&&(i.response_format={type:"json_object"});let a={};return"default"!==n&&(a.thinking={type:n?"enabled":"disabled"},o&&(a.reasoning_effort=o)),{config:{...t,...i,...a}}},useReasoningAsContentFallback:!0},locate:{element:{resultFormat:{coordinates:il,parseRawLocateValue:function(e){let t=rB(e),r=Array.isArray(t)&&4===t.length&&t.every(e=>"number"==typeof e&&Number.isFinite(e))?t:function(e){let t=JSON.stringify(e);if(!t)return[];let r=Array.from(t.matchAll(iA),e=>{var t;return(null==(t=e[1].match(/\d+/g))?void 0:t.map(Number))??[]}),n=Math.max(0,...r.map(e=>e.length)),o=r.filter(e=>e.length===n);return 1!==o.length?[]:o[0]}(t);if(4===r.length||5===r.length)return rL(il,[r[0],r[1],r[2],r[3]]);if(6===r.length||2===r.length||3===r.length||7===r.length)return rL(ic,[r[0],r[1]]);if(8===r.length)return rL(il,[r[0],r[1],r[4],r[5]]);throw Error(`invalid bbox data for doubao-vision mode: ${JSON.stringify(t)} `)}}}}},id=e=>{let{geminiReasoningContent:t,providerReasoningContent:r}=e;return t&&r?`thoughtParts:${t}; reasoning_content:${r}`:t||r||""},ip={gemini:{chatCompletion:{unsupportedUserConfig:["reasoningBudget"],buildChatCompletionParams:e=>{let{midsceneDefaults:t,userConfig:r}=e,{reasoningEnabled:n,reasoningEffort:o}=r,i={};void 0!==r.temperature&&(i.temperature=r.temperature);let a={};return"default"!==n&&(a.extra_body={google:{thinking_config:{include_thoughts:!0,thinking_level:n?o??"medium":"minimal"}}}),{config:{...t,...i,...a}}},messageExtraction:{kind:"custom",extractContentAndReasoning:e=>{var t;let r;if(!e)return{content:"",reasoning_content:""};if(Array.isArray(e.content)){let t=(e=>{let t=[],r=[];for(let n of e){if(!(n&&"object"==typeof n&&!Array.isArray(n)))continue;let e="string"==typeof n.text?n.text:void 0;e&&(!0===n.thought?r.push(e):t.push(e))}return{content:t.join(""),geminiReasoningContent:r.join("")}})(e.content);return{content:t.content,reasoning_content:id({geminiReasoningContent:t.geminiReasoningContent,providerReasoningContent:"string"==typeof e.reasoning_content?e.reasoning_content:""})}}let n="string"==typeof e.content?e.content:"",o=(null==(r=n.match(/<thought>([\s\S]*?)<\/thought>/i))||null==(t=r[1])?void 0:t.trim())||"";return{content:n,reasoning_content:id({geminiReasoningContent:o,providerReasoningContent:"string"==typeof e.reasoning_content?e.reasoning_content:""})}}}},locate:{element:{resultFormat:{coordinates:{shape:"bbox",order:"yx",normalizedBy:1e3}}}}}},ih={"glm-v":{chatCompletion:{unsupportedUserConfig:["reasoningEffort","reasoningBudget"],buildChatCompletionParams:e=>{let{midsceneDefaults:t,userConfig:r}=e,{reasoningEnabled:n}=r,o={};void 0!==r.temperature&&(o.temperature=r.temperature),"none"!==r.responseFormat&&e.expectedJsonObjectResponse&&(o.response_format={type:"json_object"});let i={};return"default"!==n&&(i.thinking={type:n?"enabled":"disabled"}),{config:{...t,...o,...i}}},useReasoningAsContentFallback:!0},locate:{element:{resultFormat:{coordinates:{shape:"bbox",order:"xy",normalizedBy:1e3}}}}}},im=e=>"locate"===e.intent||e.requiresOriginalImageDetail?"original":e.imageDetail??"high",ig=e=>{let{reasoningEnabled:t,reasoningEffort:r}=e;if("default"!==t)return!0===t?r??"medium":"none"},iy=e=>{let{reasoningEnabled:t,reasoningEffort:r}=e;if("default"!==t)return!0===t?r??"medium":"low"},iv={"gpt-5":{supportedProtocols:["openai-chat","openai-responses"],resolveImageDetail:im,responses:{replayRawAssistantOutput:!1,unsupportedUserConfig:["reasoningBudget"],buildResponsesParams:e=>{let{midsceneDefaults:t,userConfig:r,expectedJsonObjectResponse:n}=e,o={};void 0!==r.temperature&&(o.temperature=r.temperature),"none"!==r.responseFormat&&n&&(o.text={format:{type:"json_object"}});let i=ig(r);return{config:{...t,...o,reasoning:{effort:i,context:"current_turn"}}}}},buildCodexAppServerParams:e=>({config:{effort:ig(e.userConfig??{})}}),chatCompletion:{unsupportedUserConfig:["reasoningBudget"],buildChatCompletionParams:e=>{let{midsceneDefaults:t,userConfig:r}=e,n={};void 0!==r.temperature&&(n.temperature=r.temperature),"none"!==e.userConfig.responseFormat&&e.expectedJsonObjectResponse&&(n.response_format={type:"json_object"});let o=ig(r);return{config:{...t,...n,reasoning_effort:o}}}},locate:{element:{resultFormat:{coordinates:{shape:"bbox",order:"xy"}}}}},"gpt-6":{supportedProtocols:["openai-chat","openai-responses"],resolveImageDetail:im,responses:{replayRawAssistantOutput:!1,unsupportedUserConfig:["temperature","reasoningBudget"],buildResponsesParams:e=>{let{midsceneDefaults:t,userConfig:r,expectedJsonObjectResponse:n}=e,{responseFormat:o}=r,i={};i.temperature=void 0,"none"!==o&&n&&(i.text={format:{type:"json_object"}});let a=iy(r);return{config:{...t,...i,reasoning:{effort:a,context:"current_turn"}}}}},buildCodexAppServerParams:e=>({config:{effort:iy(e.userConfig??{})}}),chatCompletion:{unsupportedUserConfig:["temperature","reasoningBudget"],buildChatCompletionParams:e=>{let{midsceneDefaults:t,userConfig:r,expectedJsonObjectResponse:n}=e,{responseFormat:o}=r,i={};i.temperature=void 0,"none"!==o&&n&&(i.response_format={type:"json_object"});let a=iy(r);return{config:{...t,...i,reasoning_effort:a}}}},locate:{element:{resultFormat:{coordinates:{shape:"bbox",order:"xy"}}}}}};async function ib(e){let t=await ol(e,!0),r=await nV(t),n=Math.min(1,1568/r.width,1568/r.height),o={width:Math.max(1,Math.round(r.width*n)),height:Math.max(1,Math.round(r.height*n))},i=await oe(t,{targetSize:o}),a=await ou(i,280);return(0,eH.vA)(nK.Buffer.from(oc(a.imageBase64).body,"base64").length<=0x1000000,"Jev image exceeds 16 MiB"),{...a,contentSize:o,sourceSize:{width:r.width,height:r.height}}}let iw="https://midscenejs.com/model-config#common-configuration-errors";function iE(e){return"planning"===e?`Planning model family is required because aiAct is asking the planning model to return locate coordinates. Configure MIDSCENE_PLANNING_MODEL_FAMILY for the planning model, or remove the separate planning model config and configure MIDSCENE_MODEL_FAMILY on the default model. ${iw}`:`Default model family is required because aiAct is asking the default model to return locate coordinates during planning. Configure MIDSCENE_MODEL_FAMILY so Midscene can parse planning locate coordinates correctly. ${iw}`}function ix(){return`## Important Notes for Locating Elements:
|
|
313
313
|
- First identify the target primitive from the user's description, then locate that primitive only. Treat labels, owners, rows, columns, and surrounding text as context unless the description says they are the target.
|
|
314
314
|
- If the target itself is visible text, link text, status text, table cell text, or header text, return only the tight visible text region, not the entire control, row, sentence, or container.
|
|
315
315
|
- If a text or link target wraps across multiple lines, do not return one large box covering the whole wrapped text. Return a tight box around a distinctive visible segment of the target text; for CJK link labels, the first 2-4 visible characters are enough when unique.
|
|
316
316
|
- If the target is an input/select/filter field body, current value area, or blank field region, return that field/control body or value region. Do not retarget to a trailing search icon, dropdown arrow, clear button, or nearby table header.
|
|
317
317
|
- If the target is an icon, arrow, checkbox, radio, or accessory control, return only that glyph/control region. Do not return adjacent owner text.
|
|
318
318
|
- If the target is a tiny icon/control among adjacent similar icons, use the described local order or relative position within that group and return only that glyph/control.
|
|
319
|
-
- If the same text appears in multiple regions, obey the described owner region first, such as filter bar vs table header.`}let ik=["legacy","sequential","bulk"],iS=rm.Ik({locate:r5.describe("The element to be tapped")}),iI=rm.Ik({files:rm.KC([rm.Yj(),rm.YO(rm.Yj())]).describe("File path(s) within the current aiAct call's fileChooserAllowedDir to use whenever a later action triggers a file chooser. fileChooserAllowedDir must be provided for this action. This setting replaces any previously registered file path(s).")});rm.Ik({locate:r5.describe("The element to be right clicked")}),rm.Ik({locate:r5.describe("The element to be double clicked")}),rm.Ik({locate:r5.describe("The element to be hovered")});let iC=rm.Ik({value:rm.KC([rm.Yj(),rm.ai()]).transform(e=>String(e)).describe("The text to input. Provide the final content for replace mode, only the inserted characters for typeOnly mode, or an empty string when using clear mode to remove existing text."),locate:r5.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:rm.k5(["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, and should be set explicitly for incremental edits after moving the cursor; "clear" - clear the field without inputting new text.'),autoDismissKeyboard:rm.zM().optional().describe("If true, the keyboard will be dismissed after the input is completed. Do not set it unless the user asks you to do so."),keyboardTypeDelay:rm.ai().finite().nonnegative().optional().describe("Delay in milliseconds between keystrokes when typing. Passed through from device/user configuration. Do not set it unless the user asks you to do so."),inputStrategy:rm.k5(ik).optional().describe('Text input strategy: "legacy" (default) preserves the current platform behavior; "sequential" enters one Unicode code point at a time; "bulk" sends the complete text through one platform input operation when supported and requires keyboardTypeDelay to be omitted or set to 0. Do not set it unless the user asks you to do so.')});rm.Ik({locate:r5.describe("The optional element to click before pressing the key. Omit this when the key should operate on the currently focused element, especially when copying or cutting an existing text selection.").optional(),keyName:rm.Yj().describe("The key to be pressed. Use '+' for key combinations, e.g., 'Control+A', 'Shift+Enter'")}),rm.Ik({scrollType:rm.k5(["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:rm.k5(["down","up","right","left"]).default("down").describe('The direction toward the off-screen content to reveal. "down" reveals content below the current viewport, "up" reveals content above, "right" reveals content to the right, and "left" reveals content to the left. This does not describe the movement direction of the content currently visible on the screen. Only effective when scrollType is "singleAction".'),distance:rm.ai().positive().nullable().optional().describe('Positive requested scroll amount in screen-coordinate units. On touch platforms, it controls the length of the swipe gesture used to scroll; on web and desktop platforms, it controls or approximates the wheel scroll delta. Only effective when scrollType is "singleAction".'),locate:r5.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"')}),rm.Ik({from:r5.describe("The position to be dragged"),to:r5.describe("The position to be dropped")}),rm.Ik({locate:r5.describe("The element to be long pressed"),duration:rm.ai().optional().describe("Long press duration in milliseconds")}),o="finger",rm.Ik({start:r5.optional().describe(`Optional starting point of the ${o} movement. Available in both relative and endpoint forms. If omitted, the center of the page is used.`),direction:rm.k5(["up","down","left","right"]).optional().describe("Finger movement direction. Required together with a positive distance for a relative swipe. Omit when using end."),distance:rm.ai().positive().optional().describe(`Positive length of the ${o} movement in pixels. Required together with direction for a relative swipe. Omit when using end.`),end:r5.optional().describe(`Endpoint of the ${o} movement. Use for an endpoint swipe, optionally with start. Do not provide direction or distance when using end.`),duration:rm.ai().default(300).describe("Duration of the swipe gesture in milliseconds"),repeat:rm.ai().optional().describe("The number of times to repeat the swipe gesture. 1 for default, 0 for
|
|
319
|
+
- If the same text appears in multiple regions, obey the described owner region first, such as filter bar vs table header.`}let ik=["legacy","sequential","bulk"],iS=rm.Ik({locate:r5.describe("The element to be tapped")}),iI=rm.Ik({files:rm.KC([rm.Yj(),rm.YO(rm.Yj())]).describe("File path(s) within the current aiAct call's fileChooserAllowedDir to use whenever a later action triggers a file chooser. fileChooserAllowedDir must be provided for this action. This setting replaces any previously registered file path(s).")});rm.Ik({locate:r5.describe("The element to be right clicked")}),rm.Ik({locate:r5.describe("The element to be double clicked")}),rm.Ik({locate:r5.describe("The element to be hovered")});let iC=rm.Ik({value:rm.KC([rm.Yj(),rm.ai()]).transform(e=>String(e)).describe("The text to input. Provide the final content for replace mode, only the inserted characters for typeOnly mode, or an empty string when using clear mode to remove existing text."),locate:r5.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:rm.k5(["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, and should be set explicitly for incremental edits after moving the cursor; "clear" - clear the field without inputting new text.'),autoDismissKeyboard:rm.zM().optional().describe("If true, the keyboard will be dismissed after the input is completed. Do not set it unless the user asks you to do so."),keyboardTypeDelay:rm.ai().finite().nonnegative().optional().describe("Delay in milliseconds between keystrokes when typing. Passed through from device/user configuration. Do not set it unless the user asks you to do so."),inputStrategy:rm.k5(ik).optional().describe('Text input strategy: "legacy" (default) preserves the current platform behavior; "sequential" enters one Unicode code point at a time; "bulk" sends the complete text through one platform input operation when supported and requires keyboardTypeDelay to be omitted or set to 0. Do not set it unless the user asks you to do so.')});rm.Ik({locate:r5.describe("The optional element to click before pressing the key. Omit this when the key should operate on the currently focused element, especially when copying or cutting an existing text selection.").optional(),keyName:rm.Yj().describe("The key to be pressed. Use '+' for key combinations, e.g., 'Control+A', 'Shift+Enter'")}),rm.Ik({scrollType:rm.k5(["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:rm.k5(["down","up","right","left"]).default("down").describe('The direction toward the off-screen content to reveal. "down" reveals content below the current viewport, "up" reveals content above, "right" reveals content to the right, and "left" reveals content to the left. This does not describe the movement direction of the content currently visible on the screen. Only effective when scrollType is "singleAction".'),distance:rm.ai().positive().nullable().optional().describe('Positive requested scroll amount in screen-coordinate units. On touch platforms, it controls the length of the swipe gesture used to scroll; on web and desktop platforms, it controls or approximates the wheel scroll delta. Only effective when scrollType is "singleAction".'),locate:r5.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"')}),rm.Ik({from:r5.describe("The position to be dragged"),to:r5.describe("The position to be dropped")}),rm.Ik({locate:r5.describe("The element to be long pressed"),duration:rm.ai().optional().describe("Long press duration in milliseconds")}),o="finger",rm.Ik({start:r5.optional().describe(`Optional starting point of the ${o} movement. Available in both relative and endpoint forms. If omitted, the center of the page is used.`),direction:rm.k5(["up","down","left","right"]).optional().describe("Finger movement direction. Required together with a positive distance for a relative swipe. Omit when using end."),distance:rm.ai().finite().positive().optional().describe(`Positive length of the ${o} movement in pixels. Required together with direction for a relative swipe. Omit when using end.`),end:r5.optional().describe(`Endpoint of the ${o} movement. Use for an endpoint swipe, optionally with start. Do not provide direction or distance when using end.`),duration:rm.ai().finite().positive().default(300).describe("Duration of the swipe gesture in milliseconds"),repeat:rm.ai().finite().int().nonnegative().optional().describe("The number of times to repeat the swipe gesture. 1 for default, 0 for continuous mode capped at 10 repeats")}),rm.Ik({locate:r5.describe("The input field to be cleared").optional()}),rm.Ik({direction:rm.k5(["left","right"]).describe("The direction to move the cursor"),times:rm.ai().int().min(1).default(1).describe("The number of times to move the cursor in the specified direction")}),rm.Ik({locate:r5.optional().describe("The element to pinch on. If not specified, the center of the screen will be used"),direction:rm.k5(["in","out"]).describe('Pinch direction. "in" = pinch fingers together (zoom out / shrink), "out" = spread fingers apart (zoom in / enlarge).'),distance:rm.ai().positive().optional().describe("How far each finger moves in pixels. Defaults to a quarter of the shorter screen dimension."),duration:rm.ai().default(500).optional().describe("Duration of the pinch gesture in milliseconds")});let iO=rm.Ik({timeMs:rm.ai().default(1e3).optional().describe("Sleep duration in milliseconds, defaults to 1000ms (1 second)")}),iR=e=>({name:"Sleep",description:"Wait for a specified duration before continuing. Defaults to 1 second (1000ms) if not specified.",paramSchema:iO,sample:{timeMs:2e3},call:async(t,r)=>{let n=e??(null==r?void 0:r.signal),o=(null==t?void 0:t.timeMs)??1e3;(0,e0.aZ)("device:common-action")(`Sleeping for ${o}ms`),null==n||n.throwIfAborted(),await new Promise((e,t)=>{let r=()=>{clearTimeout(i),t(null==n?void 0:n.reason)},i=setTimeout(()=>{null==n||n.removeEventListener("abort",r),e()},o);null==n||n.addEventListener("abort",r,{once:!0})})}}),ij=(e,t)=>{let{locatePromptSpec:r,locateResultExampleIndex:n=0,buildActionOutput:o}=t;if(!e.sample||"object"!=typeof e.sample)return;let i=r7(e.paramSchema),a=r?((e,t,r,n)=>{let o={...e},i=n;for(let e of t)o[e]&&"object"==typeof o[e]&&o[e].prompt&&(o[e]={...o[e],[r.resultKey]:r.exampleValues[i%r.exampleValues.length]},i++);return o})(e.sample,i,r,n):e.sample;return o({actionName:e.name,param:a,locateFields:i,locateResultKey:null==r?void 0:r.resultKey})},iP=e=>({name:"Tap",paramSchema:iS,sample:{locate:{prompt:e}}}),iM=e=>({name:"Input",paramSchema:iC,sample:{value:e}});var iT=r(79383);let iN=e=>{var t,r;let n=e.prefix?[e.prefix]:[];if(e.planning&&n.push(`<planning>${e.planning}</planning>`),null==(t=e.updateSubGoals)?void 0:t.length){let t=e.updateSubGoals.map(e=>{let{index:t,status:r,description:n}=e;return` <sub-goal index="${t}" status="${r}">${n}</sub-goal>`}).join("\n");n.push(`<update-plan-content>
|
|
320
320
|
${t}
|
|
321
321
|
</update-plan-content>`)}if(null==(r=e.markSubGoalsDone)?void 0:r.length){let t=e.markSubGoalsDone.map(e=>` <sub-goal index="${e}" status="finished" />`).join("\n");n.push(`<mark-sub-goal-done>
|
|
322
322
|
${t}
|
|
@@ -666,7 +666,7 @@ ${b}`:o.pendingFeedbackMessage?"":`
|
|
|
666
666
|
No previous actions have been executed in this aiAct execution yet. If the instruction asks for actions, choose the first action to execute.`,E=o.memoriesToText(),x=E?`
|
|
667
667
|
|
|
668
668
|
${E}`:"";o.pendingFeedbackMessage?(r={role:"user",content:[{type:"text",text:`${o.pendingFeedbackMessage}. The previous action has been executed, here is the latest screenshot. Please continue according to the instruction.${x}${w}`},{type:"image",url:f}]},o.resetPendingFeedbackMessageIfExists()):r={role:"user",content:[{type:"text",text:`This is the current screenshot.${x}${w}`},{type:"image",url:f}]},o.appendMessage(r),o.compressHistory(50,20);let k=[{role:"system",content:h},...v,...o.snapshot(t.imagesIncludeCount)],{response:{content:S,usage:I,reasoning_content:C,rawAssistantOutput:O},planFromAI:R,actions:j}=await iJ({messages:k,modelRuntime:i,abortSignal:t.abortSignal,includeLocateInPlanning:t.includeLocateInPlanning,actionSpace:t.actionSpace,locateResultCodec:A,locateResultContext:{preparedSize:m.preparedSize,contentSize:m.contentSize},includeThought:d,includeLog:p}),P=rV(j,t.actionSpace),M=!0;void 0!==R.finalizeSuccess&&(iK("task completed via <complete> tag, stop planning"),M=!1,u&&o.markAllSubGoalsFinished());let T={...R,actions:j,rawResponse:S,rawAssistantOutput:O,usage:I,reasoning_content:C,yamlFlow:P,shouldContinuePlanning:M};if((0,eH.vA)(R,"can't get plans from AI"),u){var N,D;if((null==(N=R.updateSubGoals)?void 0:N.length)&&o.mergeSubGoals(R.updateSubGoals),null==(D=R.markFinishedIndexes)?void 0:D.length)for(let e of R.markFinishedIndexes)o.markSubGoalFinished(e);R.log&&o.appendSubGoalLog(R.log)}else R.log&&o.appendHistoricalLog(R.log);R.memory&&o.appendMemory(R.memory);let z=(null==O?void 0:O.type)==="responses"&&i.adapter.responses.replayRawAssistantOutput||(null==O?void 0:O.type)==="chat-completion"&&i.adapter.chatCompletion.replayRawAssistantMessage;return O&&z?o.appendModelOutput(O):(O||iK("Raw assistant output is unavailable; saving only response text in conversation history."),o.appendMessage({role:"assistant",content:[{type:"text",text:S}]})),T}let iq=async(e,t)=>{var r,n;let o=t.conversationHistory,i=async r=>{(0,eH.vA)(t.getDefaultModelRuntime,"Default model runtime is required for Jev planning delegation");let n=t.getDefaultModelRuntime();(0,eH.vA)("jev"!==n.config.modelFamily,"Jev cannot delegate planning to itself");let o={...n,config:{...n.config,intent:"planning"},executionId:t.modelRuntime.executionId,onUsage:n.onUsage?e=>{var t;return null==(t=n.onUsage)?void 0:t.call(n,{...e,intent:"planning"})}:void 0,modelRouting:{requestedModel:t.modelRuntime.config.modelName,requestedSlot:t.modelRuntime.config.slot,task:"planning",reason:r}};return("custom"===o.adapter.planning.kind?o.adapter.planning.planFn:iQ)(e,{...t,modelRuntime:o,includeLocateInPlanning:!1})},a=await ib(t.context.screenshot.base64),s=await Promise.all(e.referenceImages.map(async(e,t)=>({key:`reference_${t}`,name:e.name,image:await ib(e.url)}))),l={goal:e.text,context:t.actionContext,history:o.historicalLogsToText(),memory:o.memoriesToText(),feedback:o.pendingFeedbackMessage,references:s.map(e=>{let{key:t,name:r}=e;return{image:`\`${t}\``,name:r}}),availableActions:t.actionSpace.map(e=>{let{name:t,description:r}=e;return{name:t,description:r}})},c={Complete:"The entire user goal is already satisfied, confirmed by the current screenshot and execution feedback. No text answer is requested.",Delegate:"The next step requires text input, generated output, an action or parameters not covered by the other choices. Also use for impossible tasks needing explanation."};for(let e of t.actionSpace)("Tap"===e.name||"Scroll"===e.name||"Sleep"===e.name)&&(c[e.name]="Sleep"===e.name?"Wait 800 ms for a transient loading state.":e.description??e.name);let A=await rw([],t.modelRuntime,{abortSignal:t.abortSignal,systemOneRequest:{state:l,images:{screenshot:a.imageBase64,...Object.fromEntries(s.map(e=>{let{key:t,image:r}=e;return[t,r.imageBase64]}))},questions:{action:{type:"choice",instructions:"Choose exactly the next step toward `goal` using the current `screenshot`, context, history and feedback. History records proposed actions; feedback and current screenshot establish what actually happened. Do not repeat completed steps. Reference images describe targets, not the current page.",criteria:c},...c.Scroll?{direction:{type:"choice",instructions:"If scrolling is the next step toward `goal`, which direction reveals the desired off-screen content? Evaluate from the screenshot and history independently of the action question.",criteria:{down:"Reveal content below",up:"Reveal content above",left:"Reveal content to the left",right:"Reveal content to the right"}}}:{}}}}),{answers:u}=ry.parse(JSON.parse(A.content));(0,eH.vA)("choice"===u.action.type,"Invalid Jev planning action");let d=u.action.choice;if("Delegate"===d)return i("The next step requires parameters or output that Jev cannot generate");if(("Tap"===d||"Scroll"===d)&&(null==(r=t.locateModelRuntime)?void 0:r.config.modelFamily)!=="jev")return i("The configured Locate model requires a concrete target description from a general-purpose planner");let p={prompt:`Locate the single ${"Scroll"===d?"scrollable region to scroll":"element to tap"} for the NEXT step toward this goal. Use the current screenshot as authoritative. Previous proposals may have failed; use feedback. Task context: ${JSON.stringify(l)}`,images:e.referenceImages},h="Complete"===d?[]:"Sleep"===d?[{type:"Sleep",param:{timeMs:800}}]:"Tap"===d?[{type:"Tap",param:{locate:p}}]:((0,eH.vA)("Scroll"===d&&(null==(n=u.direction)?void 0:n.type)==="choice","Invalid Jev scroll action"),[{type:"Scroll",param:{locate:p,direction:u.direction.choice,scrollType:"singleAction"}}]),m=`Jev selected ${d}`,f=o.pendingFeedbackMessage;return o.resetPendingFeedbackMessageIfExists(),o.appendMessage({role:"user",content:`Goal: ${e.text}
|
|
669
|
-
Execution feedback: ${f}`}),o.appendMessage({role:"assistant",content:JSON.stringify({actions:h,log:m})}),o.appendHistoricalLog(`${m}: ${JSON.stringify(h.map(e=>{let{type:t,param:r}=e;return{type:t,direction:null==r?void 0:r.direction}}))}`),o.compressHistory(50,20),{actions:h,log:m,rawResponse:A.content,usage:A.usage,shouldContinuePlanning:"Complete"!==d,..."Complete"===d?{finalizeSuccess:!0}:{},yamlFlow:rV(h,t.actionSpace)}};async function iX(e){let{referenceImages:t}=await op(e),r=await Promise.all(t.map(async(e,t)=>({key:`reference_${t}`,name:e.name,image:await ib(e.url)})));return{references:r.map(e=>{let{key:t,name:r}=e;return{image:`\`${t}\``,name:r}}),images:Object.fromEntries(r.map(e=>{let{key:t,image:r}=e;return[t,r.imageBase64]}))}}let iW=async e=>{var t;let r,n,o,i,a,{targetElementDescription:s,locateImage:l,options:c}=e,A=await ib(l.imageBase64),u=await iX(s),d=r2(s),p=await rw([],c.modelRuntime,{abortSignal:c.abortSignal,systemOneRequest:{state:{target:d,references:u.references},images:{screenshot:A.imageBase64,...u.images},questions:{present:{type:"noul",instructions:"Is the target described in `target` present in `screenshot`? Reference images, if any, describe the target; they are not the screenshot."},target:{type:"box",instructions:"The single target described in `target`, in `screenshot`."}}}}),{answers:h}=ry.parse(JSON.parse(p.content));return(0,eH.vA)("noul"===h.present.type&&"box"===h.target.type,"Invalid Jev locate answers"),{rawResponse:p.content,usage:p.usage,...h.present.noul>=.5?{locatedPixelResult:(t=h.target.box,r=t.left*A.width*l.width/A.contentSize.width,n=t.top*A.height*l.height/A.contentSize.height,o=t.right*A.width*l.width/A.contentSize.width,a=[(r+o)/2,(n+(i=t.bottom*A.height*l.height/A.contentSize.height))/2],(0,eH.vA)(a[0]>=0&&a[0]<l.width&&a[1]>=0&&a[1]<l.height,"Jev returned a target in image padding, outside the screenshot"),{center:a,rect:{left:r,top:n,width:o-r,height:i-n}})}:{errors:["The target is not present in the screenshot"]}}},iH=async e=>{var t,r,n;let o=await iX({prompt:"",...e.multimodalPrompt}),i=(null==(t=e.extractOption)?void 0:t.screenshotIncluded)===!1?[]:(null==(r=e.context.screenshotSequence)?void 0:r.length)?e.context.screenshotSequence:[e.context.screenshot],a=await Promise.all(i.map(e=>ib(e.base64))),s=await rw([],e.modelRuntime,{abortSignal:e.abortSignal,systemOneRequest:{state:{statement:e.dataQuery,context:null==(n=e.extractOption)?void 0:n.context,pageDescription:e.pageDescription,frames:a.map((e,t)=>`\`frame_${t}\``),references:o.references},images:{...Object.fromEntries(a.map((e,t)=>[`frame_${t}`,e.imageBase64])),...o.images},questions:{result:{type:"noul",instructions:"Is `statement` true? Screenshots in `frames` are ordered earliest to latest. For current state use the latest frame; for events use the relevant frames. Reference images are supporting context, not screenshots, unless the statement requests comparison. Use the provided context and page description when present."}}}}),l=ry.parse(JSON.parse(s.content)).answers.result;return(0,eH.vA)("noul"===l.type,"Invalid Jev boolean answer"),{value:l.noul>=.5,rawResponse:s.content,usage:s.usage}},iY={shape:"point",order:"xy",normalizedBy:1,rounding:"round"},iG={shape:"point",order:"xy",rounding:"round"};function iV(e){let t=rF(e,"point");if(t.length<2)throw Error(`invalid point data: ${JSON.stringify(e)} `);let[r,n]=t;return rL(r<=1&&n<=1?iY:iG,[r,n])}let i$={shape:"bbox",order:"xy",rounding:"round"},i_={shape:"point",order:"xy",rounding:"round"},i0={chatCompletion:{unsupportedUserConfig:["reasoningEffort"],buildChatCompletionParams:e=>{let{midsceneDefaults:t,userConfig:r}=e,{reasoningEnabled:n,reasoningBudget:o}=r,i={};void 0!==r.temperature&&(i.temperature=r.temperature);let a={};return"default"!==n&&(a.enable_thinking=n??!1,void 0!==o&&(a.thinking_budget=o)),{config:{...t,...i,...a}}},messageExtraction:{kind:"default",reasoningContentKeys:["reasoning_content","reasoning"]},useReasoningAsContentFallback:!0},locate:{element:{resultFormat:{resultKey:"bbox_2d",resultKeyAliases:["bbox"],coordinates:{shape:"bbox",order:"xy",normalizedBy:1e3,rounding:"round"}}}}},i1={"qwen2.5-vl":{chatCompletion:{unsupportedUserConfig:["reasoningEnabled","reasoningEffort","reasoningBudget"],buildChatCompletionParams:e=>{let{midsceneDefaults:t,userConfig:r}=e,n={};return void 0!==r.temperature&&(n.temperature=r.temperature),{config:{...t,...n,vl_high_resolution_images:!0}}}},imagePreprocess:{padBlockSize:28},locate:{element:{resultFormat:{resultKey:"bbox_2d",resultKeyAliases:["bbox"],coordinates:i$,parseRawLocateValue:function(e){let t=rB(e);if(t.length<2)throw Error(`invalid bbox data for qwen-vl mode: ${JSON.stringify(t)} `);return"number"==typeof t[2]&&"number"==typeof t[3]?rL(i$,[t[0],t[1],t[2],t[3]]):rL(i_,[t[0],t[1]])}}}}},"qwen3-vl":i0,qwen3:i0,"qwen3.5":i0,"qwen3.6":i0};var i2=r(85409);let i3={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}},i5=Object.entries(i3).reduce((e,t)=>{let[r,n]=t,o=r.toLowerCase();return o!==r&&(e[o]=n),e},{}),i4=e=>{let t=e.toLowerCase();return i5[t]?i5[t].key:e},i7="undefined"!=typeof window?/Mac|iPod|iPhone|iPad/.test(window.navigator.platform):"darwin"===i2.platform,i8={return:i3.Enter.key,enter:i3.Enter.key,command:i3.Meta.key,cmd:i3.Meta.key,ctrl:i7?i3.Meta.key:i3.Control.key,shift:i3.Shift.key,alt:i3.Alt.key,space:i3.Space.key,"page down":i3.PageDown.key,pagedown:i3.PageDown.key,"page up":i3.PageUp.key,pageup:i3.PageUp.key},i6=(0,e0.aZ)("ui-tars-planning"),i9=(0,e0.aZ)("ui-tars-planning",{console:!0});function ae(e){let[t,r]=JSON.parse(e);return(0,eH.vA)("number"==typeof t&&Number.isFinite(t)&&"number"==typeof r&&Number.isFinite(r),`invalid point data for ui-tars planning: ${e}`),[t,r]}var at=r(22788);let ar=(0,e0.aZ)("ui-tars-planning");function an(){let e=tX();return`
|
|
669
|
+
Execution feedback: ${f}`}),o.appendMessage({role:"assistant",content:JSON.stringify({actions:h,log:m})}),o.appendHistoricalLog(`${m}: ${JSON.stringify(h.map(e=>{let{type:t,param:r}=e;return{type:t,direction:null==r?void 0:r.direction}}))}`),o.compressHistory(50,20),{actions:h,log:m,rawResponse:A.content,usage:A.usage,shouldContinuePlanning:"Complete"!==d,..."Complete"===d?{finalizeSuccess:!0}:{},yamlFlow:rV(h,t.actionSpace)}};async function iX(e){let{referenceImages:t}=await op(e),r=await Promise.all(t.map(async(e,t)=>({key:`reference_${t}`,name:e.name,image:await ib(e.url)})));return{references:r.map(e=>{let{key:t,name:r}=e;return{image:`\`${t}\``,name:r}}),images:Object.fromEntries(r.map(e=>{let{key:t,image:r}=e;return[t,r.imageBase64]}))}}let iW=async e=>{var t;let r,n,o,i,a,{targetElementDescription:s,locateImage:l,options:c}=e,A=await ib(l.imageBase64),u=await iX(s),d=r2(s),p=await rw([],c.modelRuntime,{abortSignal:c.abortSignal,systemOneRequest:{state:{target:d,references:u.references},images:{screenshot:A.imageBase64,...u.images},questions:{present:{type:"noul",instructions:"Is the target described in `target` present in `screenshot`? Reference images, if any, describe the target; they are not the screenshot."},target:{type:"box",instructions:"The single target described in `target`, in `screenshot`."}}}}),{answers:h}=ry.parse(JSON.parse(p.content));return(0,eH.vA)("noul"===h.present.type&&"box"===h.target.type,"Invalid Jev locate answers"),{rawResponse:p.content,usage:p.usage,...h.present.noul>=.5?{locatedPixelResult:(t=h.target.box,r=t.left*A.width*l.width/A.contentSize.width,n=t.top*A.height*l.height/A.contentSize.height,o=t.right*A.width*l.width/A.contentSize.width,a=[(r+o)/2,(n+(i=t.bottom*A.height*l.height/A.contentSize.height))/2],(0,eH.vA)(a[0]>=0&&a[0]<l.width&&a[1]>=0&&a[1]<l.height,"Jev returned a target in image padding, outside the screenshot"),{center:a,rect:{left:r,top:n,width:o-r,height:i-n}})}:{errors:["The target is not present in the screenshot"]}}},iH=async e=>{var t,r,n;let o=await iX({prompt:"",...e.multimodalPrompt}),i=(null==(t=e.extractOption)?void 0:t.screenshotIncluded)===!1?[]:(null==(r=e.context.screenshotSequence)?void 0:r.length)?e.context.screenshotSequence:[e.context.screenshot],a=await Promise.all(i.map(e=>ib(e.base64))),s=await rw([],e.modelRuntime,{abortSignal:e.abortSignal,systemOneRequest:{state:{statement:e.dataQuery,context:null==(n=e.extractOption)?void 0:n.context,pageDescription:e.pageDescription,frames:a.map((e,t)=>`\`frame_${t}\``),references:o.references},images:{...Object.fromEntries(a.map((e,t)=>[`frame_${t}`,e.imageBase64])),...o.images},questions:{result:{type:"noul",instructions:"Is `statement` true? Screenshots in `frames` are ordered earliest to latest. For current state use the latest frame; for events use the relevant frames. Reference images are supporting context, not screenshots, unless the statement requests comparison. Use the provided context and page description when present."}}}}),l=ry.parse(JSON.parse(s.content)).answers.result;return(0,eH.vA)("noul"===l.type,"Invalid Jev boolean answer"),{value:l.noul>=.5,rawResponse:s.content,usage:s.usage}},iY={shape:"point",order:"xy",normalizedBy:1,rounding:"round"},iG={shape:"point",order:"xy",rounding:"round"};function iV(e){let t=rF(e,"point");if(2!==t.length)throw Error(`invalid point data: ${JSON.stringify(e)} `);let[r,n]=t;return rL(r<=1&&n<=1?iY:iG,[r,n])}let i$={shape:"bbox",order:"xy",rounding:"round"},i_={shape:"point",order:"xy",rounding:"round"},i0={chatCompletion:{unsupportedUserConfig:["reasoningEffort"],buildChatCompletionParams:e=>{let{midsceneDefaults:t,userConfig:r}=e,{reasoningEnabled:n,reasoningBudget:o}=r,i={};void 0!==r.temperature&&(i.temperature=r.temperature);let a={};return"default"!==n&&(a.enable_thinking=n??!1,void 0!==o&&(a.thinking_budget=o)),{config:{...t,...i,...a}}},messageExtraction:{kind:"default",reasoningContentKeys:["reasoning_content","reasoning"]},useReasoningAsContentFallback:!0},locate:{element:{resultFormat:{resultKey:"bbox_2d",resultKeyAliases:["bbox"],coordinates:{shape:"bbox",order:"xy",normalizedBy:1e3,rounding:"round"}}}}},i1={"qwen2.5-vl":{chatCompletion:{unsupportedUserConfig:["reasoningEnabled","reasoningEffort","reasoningBudget"],buildChatCompletionParams:e=>{let{midsceneDefaults:t,userConfig:r}=e,n={};return void 0!==r.temperature&&(n.temperature=r.temperature),{config:{...t,...n,vl_high_resolution_images:!0}}}},imagePreprocess:{padBlockSize:28},locate:{element:{resultFormat:{resultKey:"bbox_2d",resultKeyAliases:["bbox"],coordinates:i$,parseRawLocateValue:function(e){let t=rB(e);if(t.length<2)throw Error(`invalid bbox data for qwen-vl mode: ${JSON.stringify(t)} `);return"number"==typeof t[2]&&"number"==typeof t[3]?rL(i$,[t[0],t[1],t[2],t[3]]):rL(i_,[t[0],t[1]])}}}}},"qwen3-vl":i0,qwen3:i0,"qwen3.5":i0,"qwen3.6":i0};var i2=r(85409);let i3={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}},i5=Object.entries(i3).reduce((e,t)=>{let[r,n]=t,o=r.toLowerCase();return o!==r&&(e[o]=n),e},{}),i4=e=>{let t=e.toLowerCase();return i5[t]?i5[t].key:e},i7="undefined"!=typeof window?/Mac|iPod|iPhone|iPad/.test(window.navigator.platform):"darwin"===i2.platform,i8={return:i3.Enter.key,enter:i3.Enter.key,command:i3.Meta.key,cmd:i3.Meta.key,ctrl:i7?i3.Meta.key:i3.Control.key,shift:i3.Shift.key,alt:i3.Alt.key,space:i3.Space.key,"page down":i3.PageDown.key,pagedown:i3.PageDown.key,"page up":i3.PageUp.key,pageup:i3.PageUp.key},i6=(0,e0.aZ)("ui-tars-planning"),i9=(0,e0.aZ)("ui-tars-planning",{console:!0});function ae(e){let[t,r]=JSON.parse(e);return(0,eH.vA)("number"==typeof t&&Number.isFinite(t)&&"number"==typeof r&&Number.isFinite(r),`invalid point data for ui-tars planning: ${e}`),[t,r]}var at=r(22788);let ar=(0,e0.aZ)("ui-tars-planning");function an(){let e=tX();return`
|
|
670
670
|
You are a GUI agent. You are given a task and your action history, with screenshots. You need to perform the next action to complete the task.
|
|
671
671
|
|
|
672
672
|
## Output Format
|
|
@@ -842,7 +842,7 @@ ${n}
|
|
|
842
842
|
${nC(c,this.getDumpScriptAttributes())}
|
|
843
843
|
${l.join("\n")}
|
|
844
844
|
${ng(a)}
|
|
845
|
-
${nm(i)}`;(0,tG.mkdirSync)((0,ts.dirname)(this.reportPath),{recursive:!0});let u=`${this.reportPath}.runner-${(0,eH.uR)()}.tmp`;try{await (0,s3.writeFile)(u,A),await (0,s3.rename)(u,this.reportPath)}finally{await (0,s3.unlink)(u).catch(e=>{if("ENOENT"!==e.code)throw e})}this.initialized=!0,this.firstWriteDone||(this.firstWriteDone=!0,this.printReportPath())}),await this.flush(),this.reportPath}enableSourceSnapshots(){this.screenshotStore.enableFileCopies()}async serializeSourceDump(e,t){this.enableSourceSnapshots();let r=(null==e?void 0:e.executions)??[...this.executionsByKey.values()],n=new Map;for(let e of t??r.flatMap(e=>e.collectScreenshots()))await this.screenshotStore.persist(e);for(let e of r)for(let[t,r]of(await this.persistReferenceImages(e)))n.set(t,r);let o=e??new aG({...this.lastReportMeta??{sdkVersion:"",groupName:"YAML execution",modelBriefs:[]},executions:r}),i=new Map;return{serialized:JSON.stringify(JSON.parse(o.serializeWithReferenceImages(n)),(e,t)=>{let r=nT(t);if(!r)return t;let n={...r,storage:"file",path:`./screenshots/${r.id}.${nD(r)}`};return i.set(r.id,n),n}),images:i}}async createSourceSnapshot(e,t){if(this.assertOpen(),!e||(0,ts.basename)(e)!==e)throw Error("Invalid report scope ID");let r=new Date().toISOString(),n=t?new Set(t):void 0,o=[...this.executionsByKey.values()].filter(e=>!n||e.id&&n.has(e.id)),i=o.flatMap(e=>e.collectScreenshots()),a=aG.fromSerializedString(new aG({...this.lastReportMeta??{sdkVersion:"",groupName:"YAML execution",modelBriefs:[]},executions:o}).serialize()),s=(async()=>{let{serialized:t}=await this.serializeSourceDump(a,i),n=`${this.reportPath}.${e}.${(0,eH.uR)()}.json`;return(0,tG.mkdirSync)((0,ts.dirname)(n),{recursive:!0}),await (0,s3.writeFile)(n,t,{flag:"wx"}),{sourcePath:this.reportPath,dumpPath:n,collection:{status:"complete",capturedAt:r}}})();this.sourcePublications.add(s);try{return await s}finally{this.sourcePublications.delete(s)}}printReportPath(){this.autoPrint&&this.reportPath&&(tq.getEnvConfigInBoolean(tu.d8)||("directory"===this.screenshotMode?(0,
|
|
845
|
+
${nm(i)}`;(0,tG.mkdirSync)((0,ts.dirname)(this.reportPath),{recursive:!0});let u=`${this.reportPath}.runner-${(0,eH.uR)()}.tmp`;try{await (0,s3.writeFile)(u,A),await (0,s3.rename)(u,this.reportPath)}finally{await (0,s3.unlink)(u).catch(e=>{if("ENOENT"!==e.code)throw e})}this.initialized=!0,this.firstWriteDone||(this.firstWriteDone=!0,this.printReportPath())}),await this.flush(),this.reportPath}enableSourceSnapshots(){this.screenshotStore.enableFileCopies()}async serializeSourceDump(e,t){this.enableSourceSnapshots();let r=(null==e?void 0:e.executions)??[...this.executionsByKey.values()],n=new Map;for(let e of t??r.flatMap(e=>e.collectScreenshots()))await this.screenshotStore.persist(e);for(let e of r)for(let[t,r]of(await this.persistReferenceImages(e)))n.set(t,r);let o=e??new aG({...this.lastReportMeta??{sdkVersion:"",groupName:"YAML execution",modelBriefs:[]},executions:r}),i=new Map;return{serialized:JSON.stringify(JSON.parse(o.serializeWithReferenceImages(n)),(e,t)=>{let r=nT(t);if(!r)return t;let n={...r,storage:"file",path:`./screenshots/${r.id}.${nD(r)}`};return i.set(r.id,n),n}),images:i}}async createSourceSnapshot(e,t){if(this.assertOpen(),!e||(0,ts.basename)(e)!==e)throw Error("Invalid report scope ID");let r=new Date().toISOString(),n=t?new Set(t):void 0,o=[...this.executionsByKey.values()].filter(e=>!n||e.id&&n.has(e.id)),i=o.flatMap(e=>e.collectScreenshots()),a=aG.fromSerializedString(new aG({...this.lastReportMeta??{sdkVersion:"",groupName:"YAML execution",modelBriefs:[]},executions:o}).serialize()),s=(async()=>{let{serialized:t}=await this.serializeSourceDump(a,i),n=`${this.reportPath}.${e}.${(0,eH.uR)()}.json`;return(0,tG.mkdirSync)((0,ts.dirname)(n),{recursive:!0}),await (0,s3.writeFile)(n,t,{flag:"wx"}),{sourcePath:this.reportPath,dumpPath:n,collection:{status:"complete",capturedAt:r}}})();this.sourcePublications.add(s);try{return await s}finally{this.sourcePublications.delete(s)}}printReportPath(){this.autoPrint&&this.reportPath&&(tq.getEnvConfigInBoolean(tu.d8)||("directory"===this.screenshotMode?(0,e0.TO)(`Midscene - report file updated: npx serve ${(0,ts.dirname)(this.reportPath)}`):(0,e0.TO)(`Midscene - report file updated: ${this.reportPath}`)))}async doWriteExecution(e,t){let r=this.wrapAsReportDump(e,t),n=await this.writeExecution(e,r);this.shouldPersistExecutionDump&&await this.persistExecutionDumpToFile(e,r,n),this.firstWriteDone||(this.firstWriteDone=!0,this.printReportPath())}mergeReportAttributes(e){if(e)for(let[t,r]of Object.entries(e))null!=r&&(this.reportAttributes[t]=String(r))}hydrateStateFromExistingReport(){if(!(0,tG.existsSync)(this.reportPath)||(this.initialized=!0,!this.shouldPersistExecutionDump||!(0,tG.existsSync)(this.executionDumpDir)))return;let e=(0,tG.readdirSync)(this.executionDumpDir).map(e=>{var t;return null==(t=/^(\d+)\.execution\.json$/.exec(e))?void 0:t[1]}).filter(e=>!!e).map(e=>Number.parseInt(e,10)).filter(e=>Number.isFinite(e));e.length>0&&(this.executionLogIndex=Math.max(...e))}getDumpScriptAttributes(){return{"data-group-id":this.reportStreamId,[nI]:this.screenshotMode,...this.reportAttributes}}wrapAsReportDump(e,t){return new aG({sdkVersion:t.sdkVersion,groupName:t.groupName,groupDescription:t.groupDescription,modelBriefs:t.modelBriefs,deviceType:t.deviceType,executions:[e]})}async writeExecution(e,t){let r=(0,ts.dirname)(this.reportPath);if((0,tG.existsSync)(r)||(0,tG.mkdirSync)(r,{recursive:!0}),!this.initialized){let e="directory"===this.screenshotMode?nS():"";await (0,s3.writeFile)(this.reportPath,`${t3()}${e}`),this.initialized=!0}for(let t of e.collectScreenshots())await this.screenshotStore.persist(t);let n=await this.persistReferenceImages(e),o=t.serializeWithReferenceImages(n);return await (0,s3.appendFile)(this.reportPath,`
|
|
846
846
|
${nC(o,this.getDumpScriptAttributes())}`),n}async persistReferenceImages(e){let t=new Map;for(let r of e.getReferenceImageUrls()){let e=await this.screenshotStore.persistReferenceImage(r);t.set(r,e)}return t}async appendAgentReportComment(){if(this.agentCommentWritten||!this.lastReportMeta||0===this.executionsByKey.size)return;let e=new aG({sdkVersion:this.lastReportMeta.sdkVersion,groupName:this.lastReportMeta.groupName,groupDescription:this.lastReportMeta.groupDescription,modelBriefs:this.lastReportMeta.modelBriefs,deviceType:this.lastReportMeta.deviceType,executions:Array.from(this.executionsByKey.values())});await (0,s3.appendFile)(this.reportPath,`
|
|
847
847
|
${nm(e)}`),this.agentCommentWritten=!0}getExecutionLogKey(e){if(!e.id)throw Error("ReportGenerator: execution.id is required for persisting execution dumps");return`id:${e.id}`}getExecutionCommentKey(e){if(e.id)return`id:${e.id}`;let t=this.executionCommentKeyByObject.get(e);if(t)return t;let r=`no-id:${this.executionCommentKeyIndex++}`;return this.executionCommentKeyByObject.set(e,r),r}get executionDumpDir(){return"inline"===this.screenshotMode?(0,ts.join)((0,ts.dirname)(this.reportPath),".execution-dumps",(0,ts.basename)(this.reportPath)):(0,ts.dirname)(this.reportPath)}async persistExecutionDumpToFile(e,t,r){let n=this.executionDumpDir;(0,tG.existsSync)(n)||(0,tG.mkdirSync)(n,{recursive:!0});let o=this.getExecutionLogKey(e),i=this.executionLogFileIndexByExecutionKey.get(o);i||(this.executionLogIndex+=1,i=this.executionLogIndex,this.executionLogFileIndexByExecutionKey.set(o,i));let a=`${i}.execution.json`,s=(0,ts.join)(n,a),l=t.serializeWithReferenceImages(r,2);"inline"===this.screenshotMode&&(l=JSON.stringify(JSON.parse(l),(e,t)=>{let r=nT(t);return r?{...r,storage:"file",path:`../../screenshots/${r.id}.${nD(r)}`}:t},2)),await (0,s3.writeFile)(s,l,"utf-8")}constructor(e){lc(this,"reportPath",void 0),lc(this,"screenshotMode",void 0),lc(this,"shouldPersistExecutionDump",void 0),lc(this,"autoPrint",void 0),lc(this,"firstWriteDone",!1),lc(this,"executionLogIndex",0),lc(this,"executionLogFileIndexByExecutionKey",new Map),lc(this,"reportStreamId",void 0),lc(this,"screenshotStore",void 0),lc(this,"initialized",!1),lc(this,"lastExecution",void 0),lc(this,"lastReportMeta",void 0),lc(this,"executionsByKey",new Map),lc(this,"executionCommentKeyByObject",new WeakMap),lc(this,"executionCommentKeyIndex",0),lc(this,"reportAttributes",{}),lc(this,"agentCommentWritten",!1),lc(this,"writeQueue",Promise.resolve()),lc(this,"finalization",void 0),lc(this,"sourcePublications",new Set),this.reportPath=e.reportPath,this.screenshotMode=e.screenshotMode,this.shouldPersistExecutionDump=e.persistExecutionDump??!1,this.autoPrint=e.autoPrint??!0,this.reportStreamId=(0,eH.uR)(),this.screenshotStore=new aU({mode:"inline"===this.screenshotMode?"inline":"directory",reportPath:this.reportPath,screenshotsDir:(0,ts.join)((0,ts.dirname)(this.reportPath),"screenshots"),writeInlineImage:async(e,t)=>{await (0,s3.appendFile)(this.reportPath,`
|
|
848
848
|
${nk(e,t)}`)},alsoWriteFileCopy:this.shouldPersistExecutionDump,reuseExistingReport:e.reuseExistingReport}),e.reuseExistingReport&&this.hydrateStateFromExistingReport()}}function lh(e){return e.endsWith(".html")?e:`${e}.html`}var lm=r(73840);function lf(e){var t,r,n,o,i;let a=null==(t=e.execution)?void 0:t.document,s=[...(null==a?void 0:a.hostErrors)??[]],l=(e,t)=>{void 0!==t&&s.push({phase:e,error:t})};for(let t of(l("setup",e.setupError),l("execution",e.executionError),e.cleanupErrors))l("cleanup",t);for(let t of(l("report",e.reportError),e.publicationErrors??[]))l("publication",t);for(let t of e.observerErrors??[])l("observer",t);let c=e.projectName??(null==a?void 0:a.projectName)??e.platform;return{document:{plan:(null==a?void 0:a.plan)??(0,lm.V)(e.document),documentId:e.document.documentId,documentRunId:e.runId,attemptIndex:e.attemptIndex,projectId:e.document.projectId,projectName:c,sourcePath:e.sourcePath,status:s.length||(null==a?void 0:a.status)==="failed"?"failed":"success",startedAt:e.startedAt,endedAt:e.endedAt,durationMs:e.durationMs,beforeAll:(null==a?void 0:a.beforeAll)??[],afterAll:(null==a?void 0:a.afterAll)??[],...s.length?{hostErrors:s}:{},...(null==a||null==(r=a.executionErrors)?void 0:r.length)?{executionErrors:a.executionErrors}:{},...(null==a||null==(n=a.teardownErrors)?void 0:n.length)?{teardownErrors:a.teardownErrors}:{},reportScopeId:(null==a?void 0:a.reportScopeId)??e.runId,reportPaths:[...e.reportPaths],...(null==(o=e.reportSources)?void 0:o.length)?{reportSources:[...e.reportSources]}:{}},cases:(null==(i=e.execution)?void 0:i.cases)??e.document.cases.map(e=>({caseId:e.caseId,projectName:c,name:e.definition.name,sourcePath:e.sourcePath,caseIndex:e.caseIndex,status:"not-run",notRunReason:"document-start-failed"}))}}function lg(e,t){if(0===e.length)throw Error("A report requires at least one execution record.");let r=new Map;for(let t of e){let e=t.document.projectId,n=r.get(e)??[];n.push(t),r.set(e,n)}let n={total:0,passed:0,failed:0,notRun:0,filtered:0,collectionErrors:0,documentFailures:0,projectFailures:0},o=[];for(let[e,t]of r){let r=t[0].platform,c=t[0].projectName??r,A=new Map,u=new Map;for(let e of t){let t=e.document.documentId;0!==e.attemptIndex&&u.has(t)||u.set(t,e.runId),A.set(u.get(t),e)}for(let e of A.values()){var i,a,s,l;let t=null==(i=e.execution)?void 0:i.cases;n.total+=e.document.cases.length,n.passed+=(null==t?void 0:t.filter(e=>"success"===e.status).length)??0,n.failed+=(null==t?void 0:t.filter(e=>"failed"===e.status).length)??0,n.notRun+=(null==t?void 0:t.filter(e=>"not-run"===e.status).length)??e.document.cases.length,(void 0!==e.setupError||void 0!==e.executionError||void 0!==e.reportError||((null==(a=e.publicationErrors)?void 0:a.length)??0)>0||((null==(s=e.observerErrors)?void 0:s.length)??0)>0||e.cleanupErrors.length||(null==(l=e.execution)?void 0:l.document.status)==="failed")&&(n.documentFailures+=1)}let d=t.map(lf),p=d.map(e=>e.document);o.push({projectId:e,name:c,platform:r,status:[...A.values()].some(e=>"failed"===e.status)?"failed":"success",retry:Math.max(...t.map(e=>e.attemptIndex)),documents:p,collectionErrors:[],cases:d.flatMap(e=>e.cases.map(t=>({...t,documentId:e.document.documentId,documentRunId:e.document.documentRunId})))})}let c=t.startedAt??e.map(e=>e.startedAt).sort()[0],A=t.endedAt??e.map(e=>e.endedAt).sort().at(-1);return{runId:t.runId,startedAt:c,endedAt:A,durationMs:Math.max(0,Date.parse(A)-Date.parse(c)),status:o.some(e=>"failed"===e.status)?"failed":"success",summary:n,projects:o}}async function ly(e){var t,r,n,o,i,a,s,l;let c,{agent:A,runId:u}=e,d=e.record;if(A){let e=await (null==(i=A._writeYamlExecutionReport)?void 0:i.call(A,d))??A.reportFile,t=await (null==(a=A._createReportSource)?void 0:a.call(A,u));return t&&(d=Object.freeze({...d,reportSources:[t]})),{record:d,reportFile:e}}if(eH.ht||eH.rS||(c=(s=e.script).page??s.browser??s.web??s.target,((null==(l=s.agent)?void 0:l.generateReport)??(null==c?void 0:c.generateReport))===!1))return{record:d};let p=lp.create(e.fallbackReportFileName??(null==(t=e.script.agent)?void 0:t.reportFileName)??(null==(r=e.script.agent)?void 0:r.testId)??(e.scriptPath?(0,ts.basename)(e.scriptPath).replace(/\.ya?ml$/i,""):`script-${u}`),e.script.agent??{}),h=await (null==(n=p.writeRunnerReport)?void 0:n.call(p,lg([d],{runId:u}),u,{groupName:"YAML execution",sdkVersion:t7(),modelBriefs:[]})),m=await (null==(o=p.createSourceSnapshot)?void 0:o.call(p,u));return await p.finalize(),m&&(d=Object.freeze({...d,reportSources:[m]})),{record:d,reportFile:h}}var lv=r(70875);let lb=e=>{if(!e)return!1;let t=null==e?void 0:e._def;if(!(null==t?void 0:t.typeName))return!1;switch(t.typeName){case rm.kY.ZodString:case rm.kY.ZodEnum:case rm.kY.ZodNativeEnum:return!0;case rm.kY.ZodLiteral:return"string"==typeof t.value;case rm.kY.ZodOptional:case rm.kY.ZodNullable:case rm.kY.ZodDefault:return lb(t.innerType);case rm.kY.ZodEffects:return lb(t.schema);case rm.kY.ZodPipeline:return lb(t.out);case rm.kY.ZodUnion:{let e=t.options;return!!Array.isArray(e)&&e.every(e=>lb(e))}default:return!1}};function lw(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if("object"!=typeof e||null===e||Array.isArray(e))return{node:"legacyValidationError",input:{message:"flow item must be an object"},meta:{continueOnError:!1}};let{name:r,...n}=e,o=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return{node:e,input:t,meta:{continueOnError:!1,...n?{captureResult:!0,..."string"==typeof r&&r.length>0?{resultName:r}:{}}:{}}}},i=e=>o("legacyValidationError",{message:e});if("Finalize"in n)return o("Finalize",{});if("aiAct"in n||"aiAction"in n||"ai"in n){let{aiAct:t,aiAction:r,ai:n,instruction:a,...s}=e,l=t??r??n,c=e=>"string"==typeof e&&e||e&&"object"==typeof e&&"string"==typeof e.prompt&&e.prompt,A=c(a)?a:c(l)?l:void 0;return A?o("aiAct",{prompt:A,options:s}):i("missing prompt for ai (aiAct)")}if("runGherkinScenario"in n)return n.runGherkinScenario?o("runGherkinScenario",{scenario:n.runGherkinScenario,options:{cacheable:!1}}):i("missing scenario for runGherkinScenario");if("aiAssert"in n){let{aiAssert:t,errorMessage:r,...a}=n;return t?Object.hasOwn(e,"observe")?i("`observe` is not supported in YAML aiAssert. Use agent.startObserving() from code instead."):o("aiAssert",{prompt:t,options:{...a,keepRawResponse:!0},message:r},!0):i("missing prompt for aiAssert")}for(let t of["aiQuery","aiNumber","aiString","aiBoolean","aiAsk","aiLocate"])if(t in n){let{[t]:r,...a}=n;if(!r)return i(`missing prompt for ${t}`);if(Object.hasOwn(e,"observe"))return i("`observe` is not supported in YAML flow items. Use agent.startObserving() from code instead.");return o(t,{prompt:r,options:a},!0)}if("aiWaitFor"in n){let{aiWaitFor:t,timeout:r,...n}=e;return t?o("aiWaitFor",{prompt:t,options:{...n,...void 0===r?{}:{timeout:r,timeoutMs:r}}}):i("missing prompt for aiWaitFor")}if("sleep"in n){let e="string"==typeof n.sleep?Number.parseInt(n.sleep,10):n.sleep;return!Number.isFinite(e)||e<=0?i(`ms for sleep must be greater than 0, but got ${n.sleep}`):o("sleep",{ms:e})}if("javascript"in n)return o("javascript",{script:n.javascript},!0);if("recordToReport"in n||"logScreenshot"in n)return o("recordToReport",{title:n.recordToReport??n.logScreenshot??"untitled",options:{content:n.content||""}});if("aiInput"in n){let{aiInput:t,value:r,...n}=e,i=n.locate||t||"",a=n.locate&&t||r;return o("action",{name:"Input",params:{...n,...void 0===a?{}:{value:String(a)},...i?{locate:sS(i,n)}:{}}})}if("aiKeyboardPress"in n){let{aiKeyboardPress:t,...r}=e,n=r.locate?r.locate:r.keyName?t:void 0,i=r.locate?t:r.keyName||t;return o("action",{name:"KeyboardPress",params:{...r,...i?{keyName:i}:{},...n?{locate:sS(n,r)}:{}}})}if("aiScroll"in n){let{aiScroll:t,locate:r,...n}=e;return o("aiScroll",{prompt:r??t??void 0,options:n})}if("aiTap"in n){let t,{aiTap:r,prompt:n,locate:a,...s}=e,l=a??("object"==typeof r&&null!==r?r.locate:void 0),c=s;if("string"==typeof r&&r)t=r;else if(l&&"object"==typeof l&&l.prompt){let{prompt:e,...r}=l;t=e,c={...r,...s}}else t=r&&"object"==typeof r&&"string"==typeof r.prompt&&r.prompt?Object.hasOwn(r,"images")||Object.hasOwn(r,"convertHttpImage2Base64")?r:r.prompt:n||l;return t?o("aiTap",{prompt:t,options:c}):i("missing prompt for aiTap")}if("string"==typeof n.runAdbShell&&"number"==typeof n.timeout)return o("runAdbShell",{command:n.runAdbShell,timeout:n.timeout},!0);let a=t.find(e=>e.interfaceAlias&&Object.hasOwn(n,e.interfaceAlias)||Object.hasOwn(n,e.name));if(!a)return o("legacyAction",{flow:n},!0);let s=(null==a?void 0:a.interfaceAlias)&&Object.hasOwn(n,a.interfaceAlias)?a.interfaceAlias:a.name,l=n[s];if("string"==typeof l){var c,A;let e=(c=a.name,A=a.interfaceAlias,"Launch"===c||"launch"===A||"Terminate"===c||"terminate"===A?{uri:l}:"RunAdbShell"===c||"runAdbShell"===A||"RunHdcShell"===c||"runHdcShell"===A?{command:l}:void 0);if(e)return o("action",{name:a.name,params:e},!0);if(lb(a.paramSchema))return o("action",{name:a.name,params:l},!0)}let u="string"==typeof l?l:"",d=u?{...n,prompt:u}:l&&"object"==typeof l?l:n,{locateParam:p,restParams:h}=sI(u,d,[a.name,a.interfaceAlias??""]);return o("action",{name:a.name,params:{...h,locate:p}},!0)}let lE=e=>`legacy-yaml:${e}`,lx=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"<inline-yaml>",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],o=lE(r);return{caseId:`${o}:task:${t}`,projectId:"legacy-yaml",sourcePath:r,caseIndex:t,definition:{name:e.name,onFailure:e.continueOnError?"continue":"stop-document",steps:Array.isArray(e.flow)?e.flow.map(e=>lw(e,n)):[{node:"legacyValidationError",input:{message:"missing flow in task"},meta:{continueOnError:!1}}]}}},lk=(e,t)=>({documentId:lE(e),projectId:"legacy-yaml",sourcePath:e,lifecycle:{beforeAll:[],beforeEach:[],afterEach:[],afterAll:[]},cases:t}),lS=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"<inline-yaml>",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];return lk(r,[lx(e,t,r,n)])},lI=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"<inline-yaml>",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=arguments.length>3?arguments[3]:void 0,o=lk(t,(e.tasks??[]).map((e,n)=>lx(e,n,t,r)));return n?{...o,documentId:n.documentId,projectId:n.projectId,cases:o.cases.map(e=>({...e,projectId:n.projectId,caseId:n.cases.find(t=>t.caseIndex===e.caseIndex).caseId}))}:o};var lC=r(64564);let lO=["default","aiAct","aiTap","aiRightClick","aiDoubleClick","aiHover","aiInput","aiKeyboardPress","aiScroll","aiPinch","aiLongPress","aiClearInput","aiLocate","aiQuery","aiBoolean","aiNumber","aiString","aiAsk","aiAssert","aiWaitFor"],lR=e=>"string"==typeof e&&lO.includes(e),lj=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"an Agent";return t=>({name:t.name??t.method,...void 0===t.title?{}:{title:t.title},...void 0===t.description?{}:{description:t.description},...void 0===t.stringInputKey?{}:{stringInputKey:t.stringInputKey},inputSchema:t.inputSchema,async execute(r,n,o){var i;if("object"!=typeof r||null===r||"function"!=typeof r[t.method])throw TypeError(`getAgent() must return ${e} with ${t.method}().`);let a=r[t.method],s=await a.apply(r,t.toArgs(n,o));return null==(i=t.toResult)?void 0:i.call(t,s,n)}})},lP=e=>lC.Yj().regex(/\S/,"value must contain a non-whitespace character").describe(e),lM=lC.re({name:lP("The name used to identify this reference image."),url:lP("The URL, data URL, or file path of this reference image.")}),lT=lC.re({prompt:lP("The natural-language prompt."),images:lC.YO(lM).min(1).optional(),convertHttpImage2Base64:lC.zM().optional().describe("Whether HTTP reference images are converted to base64 first.")}),lN=lC.KC([lP("The natural-language prompt."),lT]),lD=lC.re({effort:lC.k5(["fast","balance","deepThink"]).optional().describe("Action planning effort: fast, balanced, or deeper reasoning."),cacheable:lC.zM().optional().describe("Whether this action may use the Midscene cache."),fileChooserAccept:lC.KC([lC.Yj(),lC.YO(lC.Yj())]).optional().describe("Accepted file types for a file chooser."),fileChooserAllowedDir:lC.Yj().optional().describe("Directory allowed for prompt-driven file uploads."),deepThink:lC.KC([lC.eu("unset"),lC.zM()]).optional().describe("Whether to enable deep thinking for this action."),deepLocate:lC.zM().optional().describe("Whether to use deep element location."),context:lC.Yj().optional().describe("Additional facts, rules, constraints, or output requirements for this AI call. Overrides inherited aiContexts; an empty string disables inherited user context.")}),lz=lC.re({target:lC.k5(lO).describe("The AI API to configure, e.g. aiAct or aiAssert. Use default as the shared fallback for all AI APIs when neither the call nor the API has its own context."),context:lC.Yj().optional().describe("Agent-level guidance. Omit to remove the selected context; an empty string disables inherited context.")}),lB=lC.re({prompt:lN,options:lD.optional()}),lF=lC.re({domIncluded:lC.KC([lC.zM(),lC.eu("visible-only")]).optional().describe("How DOM information is included."),screenshotIncluded:lC.zM().optional().describe("Whether the request includes a screenshot."),context:lC.Yj().optional().describe("Additional facts, rules, constraints, or output requirements for this AI call. Overrides inherited aiContexts; an empty string disables inherited user context.")}),lL=lF.extend({keepRawResponse:lC.zM().optional().describe("Whether the Agent returns the structured assertion result.")}),lU=lC.re({prompt:lN,message:lC.Yj().optional().describe("The assertion failure message."),options:lL.optional()}),lK=lC.re({context:lC.Yj().optional().describe("Additional facts, rules, constraints, or output requirements for this AI call. Overrides inherited aiContexts; an empty string disables inherited user context."),deepLocate:lC.zM().optional().describe("Whether to use deep element location."),deepThink:lC.zM().optional().describe("Deprecated alias for deepLocate."),cacheable:lC.zM().optional().describe("Whether this location may use the Midscene cache."),xpath:lC.Yj().optional().describe("A web XPath location hint."),fileChooserAccept:lC.KC([lC.Yj(),lC.YO(lC.Yj())]).optional().describe("Files accepted when tapping opens a file chooser.")}),lZ=lC.re({prompt:lN,options:lK.optional()}),lJ=lC.re({prompt:lN,value:lC.KC([lC.Yj(),lC.ai()]),options:lK.extend({mode:lC.k5(["replace","clear","typeOnly","append"]).optional(),autoDismissKeyboard:lC.zM().optional(),keyboardTypeDelay:lC.ai().nonnegative().optional(),inputStrategy:lC.k5(ik).optional()}).optional()}),lQ=lC.re({prompt:lN.optional(),keyName:lP("The key or key combination to press."),options:lK.optional()}),lq=lC.re({prompt:lN.optional(),options:lK.extend({direction:lC.k5(["down","up","right","left"]).optional(),scrollType:lC.k5(["singleAction","scrollToBottom","scrollToTop","scrollToRight","scrollToLeft","once","untilBottom","untilTop","untilRight","untilLeft"]).optional(),distance:lC.ai().nullable().optional()}).optional()}),lX=lC.re({prompt:lN.optional(),direction:lC.k5(["in","out"]),options:lK.extend({distance:lC.ai().optional(),duration:lC.ai().nonnegative().optional()}).optional()}),lW=lC.re({prompt:lN,options:lK.extend({duration:lC.ai().nonnegative().optional()}).optional()}),lH=lC.re({from:lN,to:lN,options:lK.optional()}),lY=lC.re({prompt:lC.KC([lP("The extraction request."),lC.g1(lC.Yj(),lC.Yj())]),options:lF.optional()}),lG=lF.extend({timeoutMs:lC.ai().positive().optional(),checkIntervalMs:lC.ai().positive().optional()}).superRefine((e,t)=>{(e.checkIntervalMs??3e3)>(e.timeoutMs??15e3)&&t.addIssue({code:"custom",path:["checkIntervalMs"],message:"checkIntervalMs must not exceed timeoutMs"})}),lV=lC.re({prompt:lN,options:lG.optional()}),l$=lC.re({script:lP("JavaScript to evaluate through the current interface.")}),l_=lC.re({scenario:lP("The Gherkin scenario to execute."),options:lD.optional()}),l0=lC.re({name:lP("The ActionSpace action name, for example DragAndDrop."),params:lC.L5().optional()}),l1=lC.re({prompt:lN,options:lF.optional()}),l2=lC.re({base64:lC.Yj().min(1).describe("A base64-encoded screenshot."),description:lC.Yj().optional().describe("What the screenshot shows.")}),l3=lC.re({content:lC.Yj().optional().describe("The report text content."),screenshotBase64:lC.Yj().optional().describe("One base64-encoded screenshot."),screenshots:lC.YO(l2).min(1).optional().describe("Screenshots attached to the report section.")}).superRefine((e,t)=>{void 0!==e.screenshotBase64&&void 0!==e.screenshots&&t.addIssue({code:"custom",message:"screenshotBase64 and screenshots are mutually exclusive"})}),l5=lC.re({title:lC.Yj().optional().describe("The report section title."),options:l3.optional()}),l4=lj("an Agent"),l7=lj("an Agent"),l8=e=>"string"==typeof e?e:e.prompt,l6=e=>({data:e}),l9=l4({method:"aiAct",description:"Perform a natural-language task with a Midscene UI Agent.",stringInputKey:"prompt",inputSchema:lB,toArgs:(e,t)=>[e.prompt,{...e.options,abortSignal:t.signal}],toResult:e=>void 0===e?void 0:{summary:e}}),ce=l4({method:"aiTap",description:"Locate and tap an element with a Midscene UI Agent.",stringInputKey:"prompt",inputSchema:lZ,toArgs:e=>[e.prompt,e.options],toResult:(e,t)=>({summary:`Tapped: ${l8(t.prompt)}`})}),ct=l4({method:"aiAssert",description:"Assert a natural-language condition with a Midscene UI Agent.",stringInputKey:"prompt",inputSchema:lU,toArgs:(e,t)=>[e.prompt,e.message,{keepRawResponse:!0,...e.options,abortSignal:t.signal}],toResult(e,t){let r={summary:`Assertion ${(null==e?void 0:e.pass)===!1?"failed":"passed"}: ${l8(t.prompt)}`,...void 0===e?{}:{data:{pass:e.pass,...void 0===e.thought?{}:{thought:e.thought},...void 0===e.message?{}:{message:e.message}}}};if((null==e?void 0:e.pass)===!1)throw new sq.h2("aiAssert",Error(e.message||t.message||e.thought||`Assertion failed: ${l8(t.prompt)}`),r);return r}}),cr=e=>l7({method:e,description:{aiHover:"Locate and hover over an element with a Midscene UI Agent.",aiDoubleClick:"Locate and double-click an element with a Midscene UI Agent.",aiRightClick:"Locate and right-click an element with a Midscene UI Agent.",aiClearInput:"Locate an input element and clear its value with a Midscene UI Agent."}[e],stringInputKey:"prompt",inputSchema:lZ,toArgs:e=>[e.prompt,e.options],toResult:(t,r)=>({summary:`${e}: ${l8(r.prompt)}`})}),cn=[l7({method:"setAIContext",description:"Set or remove Agent-level AI guidance for subsequent calls on the same Agent.",inputSchema:lz,toArgs:e=>[e.target,e.context]}),cr("aiHover"),cr("aiDoubleClick"),cr("aiRightClick"),cr("aiClearInput"),l7({method:"aiInput",description:"Locate an input element and enter a value with a Midscene UI Agent.",inputSchema:lJ,toArgs:e=>[e.prompt,{...e.options,value:e.value}]}),l7({method:"aiKeyboardPress",description:"Press a key or key combination, optionally targeting a located element.",stringInputKey:"keyName",inputSchema:lQ,toArgs:e=>[e.prompt,{...e.options,keyName:e.keyName}]}),l7({method:"aiScroll",description:"Scroll the page or a located region with a Midscene UI Agent.",stringInputKey:"prompt",inputSchema:lq,toArgs:e=>[e.prompt,{...e.options}]}),l7({method:"aiPinch",description:"Perform a pinch-in or pinch-out gesture with a Midscene UI Agent.",inputSchema:lX,toArgs:e=>[e.prompt,{...e.options,direction:e.direction}]}),l7({method:"aiLongPress",description:"Locate and long-press an element with a Midscene UI Agent.",stringInputKey:"prompt",inputSchema:lW,toArgs:e=>[e.prompt,e.options]}),l7({method:"callActionInActionSpace",name:"aiDragAndDrop",description:"Locate source and destination elements, then drag the source to the destination.",inputSchema:lH,toArgs:e=>["DragAndDrop",{from:sS(e.from,e.options),to:sS(e.to,e.options)}]}),l7({method:"aiLocate",description:"Locate an element from a natural-language description and store the result.",stringInputKey:"prompt",inputSchema:lZ,toArgs:(e,t)=>[e.prompt,{...e.options,abortSignal:t.signal}],toResult:l6}),l7({method:"aiQuery",description:"Extract structured data from the current interface and store the result.",stringInputKey:"prompt",inputSchema:lY,toArgs:(e,t)=>[e.prompt,{...e.options,abortSignal:t.signal}],toResult:l6}),l7({method:"aiWaitFor",description:"Wait until a natural-language condition is satisfied.",stringInputKey:"prompt",inputSchema:lV,toArgs:(e,t)=>[e.prompt,{...e.options,abortSignal:t.signal}]}),l7({method:"evaluateJavaScript",name:"javascript",description:"Evaluate JavaScript in the current interface and store the result.",stringInputKey:"script",inputSchema:l$,toArgs:e=>[e.script],toResult:l6}),l7({method:"runGherkinScenario",description:"Execute a Gherkin scenario with the current Midscene UI Agent.",stringInputKey:"scenario",inputSchema:l_,toArgs:(e,t)=>[e.scenario,{...e.options,abortSignal:t.signal}]}),l7({method:"callActionInActionSpace",name:"action",description:"Call a platform or custom action. Its ActionSpace schema validates params when the action executes.",inputSchema:l0,toArgs:e=>[e.name,e.params],toResult:e=>void 0===e?void 0:l6(e)})],co=e=>l4({method:e,description:`Run ${e} with a Midscene UI Agent and store its value.`,stringInputKey:"prompt",inputSchema:l1,toArgs:(e,t)=>[e.prompt,{...e.options,abortSignal:t.signal}],toResult:t=>({summary:`${e} returned ${"aiString"===e||"aiAsk"===e?JSON.stringify(t):t}`,data:{value:t}})}),ci=l4({method:"recordToReport",description:"Add text or screenshots to the current Midscene report.",stringInputKey:"title",inputSchema:l5,toArgs:e=>[e.title,e.options],toResult:(e,t)=>({summary:`Recorded to report: ${t.title??"untitled"}`})}),ca=[l7({method:"sleep",description:"Wait for a fixed number of milliseconds, recording standard UI snapshots and honoring cancellation.",inputSchema:lC.re({ms:lC.ai().positive()}),toArgs(e,t){let{signal:r}=t;return r.throwIfAborted(),[e.ms,{abortSignal:r}]}}),l9,ce,ct,co("aiBoolean"),co("aiNumber"),co("aiString"),co("aiAsk"),ci,...cn],cs={name:"Finalize",inputSchema:lC.re({}),execute:()=>void 0},cl={name:"runAdbShell",inputSchema:lC.re({command:lC.Yj(),timeout:lC.ai()}),async execute(e,t){let r=t.command,n=t.timeout,o=e.runAdbShell?await e.runAdbShell(r,{timeout:n}):await e.callActionInActionSpace("RunAdbShell",{command:r,timeout:n});return void 0===o?void 0:{data:o}}},cc={name:"legacyAction",inputSchema:lC.re({flow:lC.g1(lC.Yj(),lC.L5())}),async execute(e,t,r){r.signal.throwIfAborted();let n=await e.getActionSpace();r.signal.throwIfAborted();let o=lw(t.flow,n);(0,eH.vA)("legacyAction"!==o.node,`unknown flowItem in yaml: ${JSON.stringify(t.flow)}`);let i=ch.find(e=>e.name===o.node);(0,eH.vA)(i,`Unknown Agent Node: ${o.node}`);let a=await i.inputSchema.parseAsync(o.input);return r.signal.throwIfAborted(),i.execute(e,a,r)}},cA={name:"legacyValidationError",inputSchema:lC.re({message:lC.Yj()}),execute(e,t){throw Error(t.message)}},cu=lC.re({prompt:lC.L5(),options:lC.g1(lC.Yj(),lC.L5()).optional()}),cd=new Map([...["aiAct","aiTap","aiLocate","aiQuery","aiNumber","aiString","aiBoolean","aiAsk","aiWaitFor","aiScroll"].map(e=>[e,cu]),["aiAssert",cu.extend({message:lC.L5()})],["javascript",lC.re({script:lC.L5()})],["runGherkinScenario",lC.re({scenario:lC.L5(),options:lC.g1(lC.Yj(),lC.L5()).optional()})],["sleep",lC.re({ms:lC.ai().positive()})],["action",lC.re({name:lC.Yj(),params:lC.L5()})],["recordToReport",lC.re({title:lC.L5(),options:lC.g1(lC.Yj(),lC.L5()).optional()})]]),cp=new Map(ca.map(e=>[e.name,e])),ch=[...Array.from(cd,e=>{let[t,r]=e,n=cp.get(t);return(0,eH.vA)(n,`Missing shared Agent Node for legacy YAML: ${t}`),{...n,inputSchema:r}}),cs,cl,cc,cA],cm=new Set(["aiBoolean","aiNumber","aiString","aiAsk"]),cf=(0,e0.aZ)("yaml-player"),cg=async(e,t,r,n)=>{let o=e.recordErrorToReport;if("function"==typeof o)try{await o.call(e,`YAML task failed - ${t.name}`,{error:n,content:`Step ${r} failed while running YAML task "${t.name}".`})}catch(e){cf("failed to record yaml error to report",e)}},cy=(e,t,r,n,o,i)=>{let a,s;return(0,lv.runWorkflowDocument)(e,{...i??{},isFatalError:e=>{var t;return[...e.beforeEach,...e.steps,...e.afterEach].some(e=>{var t;return sK(null==(t=e.error)?void 0:t.cause)})||((null==i||null==(t=i.isFatalError)?void 0:t.call(i,e))??!1)},onStepResult:async(e,r)=>{var n,o,a;r.meta.captureResult&&r.output&&Object.hasOwn(r.output,"data")&&await t.setResult(r.meta.resultName,(o=r.node,a=r.output,cm.has(o)?a.data.value:a.data)),await (null==i||null==(n=i.onStepResult)?void 0:n.call(i,e,r))},resolveNode:(a=new Map(ch.map(e=>[e.name,e])),s=new Map,e=>{let i=s.get(e);if(i)return i;let l=a.get(e);(0,eH.vA)(l,`Unknown Agent Node: ${e}`);let c=(0,lv.defineNode)({name:e,inputSchema:l.inputSchema,execute:e=>s$(async()=>{var i,a,s,c;e.signal.throwIfAborted(),(0,lv.admitResourceOperation)(t.agent,e.signal,!1),(0,eH.vA)("case"===e.scope,"YAML task requires a Case scope");let A=e.case.caseIndex,u=e.case.stepIndex,d=r(A);(0,eH.vA)(d,`missing YAML task at index ${A}`),(0,eH.vA)(d.flow,"missing flow in task");let p=(null==(a=t.agent.dump)||null==(i=a.executions)?void 0:i.length)??0,h=o?t.agent.addDumpUpdateListener:void 0,m="function"==typeof h?h.call(t.agent,(t,r)=>{!e.signal.aborted&&(null==r?void 0:r.id)&&e.report.addTrace({type:"midscene-execution",executionId:r.id})}):void 0,f=!0,g=()=>{f&&(f=!1,null==m||m())},y=(0,lv.trackResourceOperation)(t.agent,Promise.resolve().then(()=>(e.signal.throwIfAborted(),l.execute(t.agent,e.input,{signal:e.signal}))),e.signal),v=s0(t.agent,e.signal),b=()=>{g()};e.signal.addEventListener("abort",b,{once:!0});try{return await y}catch(o){let r=(s=t.agent,"failed"===function(e){for(let t of e)for(let e of t.tasks??[])if("failed"===function(e){let t="finished"===e.status;return"failed"===e.status||t&&(e.error||e.errorMessage)?"failed":t&&"WaitFor"===e.subType&&!1===e.output?"warning":"Assert"===e.subType&&t&&!1===e.output?"failed":"pending"===e.status?"pending":"running"===e.status?"running":"cancelled"===e.status?"cancelled":"passed"}(e))return"failed";return"passed"}(((null==(c=s.dump)?void 0:c.executions)??[]).slice(p)));throw e.signal.aborted||!n||r||await cg(t.agent,d,u,o),o}finally{e.signal.removeEventListener("abort",b),g(),v()}})});return s.set(e,c),c}),projectContext:t.agent,retry:0,resolveCaseReportScopeId:(e,t,r)=>r})},cv=e=>{var t,r,n;let o=[...(null==(t=e.run)?void 0:t.beforeEach)??[],...(null==(r=e.run)?void 0:r.steps)??[],...(null==(n=e.run)?void 0:n.afterEach)??[]].find(e=>"success"!==e.status),i=null==o?void 0:o.error;return(null==i?void 0:i.code)==="NODE_EXECUTION_ERROR"&&i.cause instanceof Error?i.cause:i??Error(`Task "${e.name}" failed`)},cb=Symbol.for("@midscene/core/yaml-player-state/v1"),cw=globalThis;cw[cb]??(cw[cb]=new WeakMap);let cE=cw[cb];function cx(e){let t=cE.get(e);if(!t)throw Error("Expected an initialized YAML ScriptPlayer.");return t}var ck=r(85409);function cS(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let cI=(0,e0.aZ)("yaml-player");class cC{setResult(e,t){let r=e||this.unnamedResultIndex++;return this.result[r]&&(0,e0.aZ)("yaml-player",{console:!0})(`result key ${r} already exists, will overwrite`),this.result[r]=t,this.flushResult()}setPlayerStatus(e,t){this.status=e,this.errorInSetup=t}notifyCurrentTaskStatusChange(e){var t;let r="number"==typeof e?e:this.currentTaskIndex;if("number"!=typeof r)return;let n=this.taskStatusList[r];null==(t=this.onTaskStatusChange)||t.call(this,n)}async setTaskStatus(e,t,r){this.taskStatusList[e].status=t,r&&(this.taskStatusList[e].error=r),this.notifyCurrentTaskStatusChange(e)}setTaskIndex(e){this.currentTaskIndex=e}async flushResult(){if(this.output){let e=(0,ts.resolve)(ck.cwd(),this.output);await this.publish(e,async()=>{let t=(0,ts.dirname)(e);await (0,sC.mkdir)(t,{recursive:!0}),await (0,sC.writeFile)(e,JSON.stringify(this.result||{},void 0,2))})}}async flushUnstableLogContent(){if(this.unstableLogContent){var e;let t=null==(e=this.interfaceAgent)?void 0:e._unstableLogContent(),r=(0,ts.resolve)(ck.cwd(),this.unstableLogContent);await this.publish(r,async()=>{let e=(0,ts.dirname)(r);await (0,sC.mkdir)(e,{recursive:!0}),await (0,sC.writeFile)(r,JSON.stringify(t,null,2))})}}async publish(e,t){try{await t()}catch(r){let t=new sJ.gX("write-result",e,r);throw this.publicationErrors.push(t),t}}createRuntime(e){var t;let r;return r=(t={agent:e,actionSpace:this.actionSpace,sourcePath:this.scriptPath,setResult:(e,t)=>this.setResult(e,t)}).sourcePath??"<inline-yaml>",{waitForIdle:()=>(0,lv.waitForResourceIdle)(t.agent),runScript:(e,n)=>cy((null==n?void 0:n.document)??lI(e,r,t.actionSpace),t,t=>{var r;return null==(r=e.tasks)?void 0:r[t]},!0,!0,n),runTask:(e,n,o)=>cy(lS(e,n,r,t.actionSpace),t,()=>e,!1,!1,o)}}async playTask(e,t){let{flow:r}=e;(0,eH.vA)(r,"missing flow in task");let n=this.taskStatusList.indexOf(e),o=e.index,i=n>=0?n:"number"==typeof o&&Number.isInteger(o)?o:0,a=cx(this);a.executionResult=await this.createRuntime(t).runTask(e,i,{signal:this.abortSignal??s_(t),onStepStart:t=>{"case"===t.scope&&"steps"===t.case.phase&&(e.currentStep=t.case.stepIndex)}});let s=a.executionResult.cases[0];if(!s||"not-run"===s.status)throw Error(`Task "${e.name}" did not run.`);if("failed"===s.status)throw cv(s);this.reportFile=t.reportFile,await this.flushUnstableLogContent()}async run(){return s$(()=>this.runInContext())}async runInContext(){var e,t,r,n,o,i;let a,s,l,c,A,u,d,p,h=new Date,m=(0,eH.uR)(),f=cx(this);f.executionResult=void 0,f.executionRecord=void 0,this.publicationErrors=[];let{android:g,ios:y,harmony:v,computer:b}=this.script,w=null==(e=sE(this.script))?void 0:e.target;this.setPlayerStatus("running");let E=null,x=[];try{let{agent:e,freeFn:r}=await this.setupAgent(w||g||y||v||b);E=e,A=s2(E),x=[...r||[]],null==(t=E._prepareForTestRunner)||t.call(E),null==(c=this.abortSignal??s_(E))||c.throwIfAborted(),this.actionSpace=await E.getActionSpace();let n=E.onTaskStartTip;E.onTaskStartTip=e=>{"running"===this.status&&(this.agentStatusTip=e),null==n||n(e)},x.push({name:"restore-agent-onTaskStartTip",fn:()=>{E&&(E.onTaskStartTip=n)}})}catch(e){if(e instanceof s1)throw e;a=e,this.setPlayerStatus("error",e)}this.interfaceAgent=E;let k=lI(this.script,this.scriptPath??"<inline-yaml>",this.actionSpace),S=E&&!a?this.createRuntime(E):void 0;try{if(S&&E){f.executionResult=await S.runScript(this.script,{document:k,signal:c,createDocumentRunId:()=>m,onCaseStart:e=>{let t=e.caseIndex;return this.setTaskIndex(t),this.setTaskStatus(t,"running")},onStepStart:e=>{if("case"!==e.scope||"steps"!==e.case.phase)return;let t=this.taskStatusList[e.case.caseIndex];t&&(t.currentStep=e.case.stepIndex)},onCaseOutcome:async e=>{if("not-run"===e.status)return;let t=e.caseIndex,r=this.taskStatusList[t];if((0,eH.vA)(r,`missing YAML task at index ${t}`),this.reportFile=null==E?void 0:E.reportFile,"success"===e.status){await this.setTaskStatus(t,"done"),await this.flushUnstableLogContent();return}let n=cv(e);await this.setTaskStatus(t,"error",n)}});let e=f.executionResult.cases.some(e=>{var t;return"failed"===e.status&&(!(null==(t=this.taskStatusList[e.caseIndex])?void 0:t.continueOnError)||sK(cv(e)))});this.setPlayerStatus(e||(null==c?void 0:c.aborted)?"error":"done")}}catch(e){s=e,e instanceof sJ.CW&&(f.executionResult=e.result),this.setPlayerStatus("error",e)}this.reportFile=null==E?void 0:E.reportFile,this.agentStatusTip="";try{(null==A?void 0:A.isRoot)&&E?await (0,sz.oL)([E],()=>sQ(x),{owner:this,signal:c,onDeferredError:e=>(0,e0.aZ)("yaml-player",{console:!0})(`Deferred YAML cleanup failed: ${String(e)}`)}):await sQ(x)}catch(e){l=e,this.setPlayerStatus("error",a??s??e)}let I=new Date,C=l instanceof AggregateError?l.errors:void 0===l?[]:[l];if(d=void 0!==(r={runId:m,attemptIndex:0,script:this.script,document:k,startedAt:h,endedAt:I,execution:f.executionResult,setupError:a,executionError:s,cleanupErrors:C,aborted:(null==c?void 0:c.aborted)??!1,publicationErrors:this.publicationErrors,outputs:this.result,reportFile:null==E?void 0:E.reportFile,children:null==A?void 0:A.children}).setupError||void 0!==r.executionError||r.cleanupErrors.length>0||r.aborted||(null==(n=r.execution)?void 0:n.document.status)==="failed"||(null==(o=r.execution)?void 0:o.cases.some(e=>"success"!==e.status)),f.executionRecord=Object.freeze({runId:r.runId,attemptIndex:r.attemptIndex,sourcePath:r.document.sourcePath,projectName:r.projectName,platform:(p=r.script).android?"android":p.ios?"ios":p.harmony?"harmony":p.computer?"computer":p.interface?"interface":"web",document:r.document,status:d?"failed":"success",startedAt:r.startedAt.toISOString(),endedAt:r.endedAt.toISOString(),durationMs:Math.max(0,r.endedAt.getTime()-r.startedAt.getTime()),...r.execution?{execution:r.execution}:{},...void 0===r.setupError?{}:{setupError:r.setupError},...void 0===r.executionError?{}:{executionError:r.executionError},cleanupErrors:Object.freeze([...r.cleanupErrors]),...r.publicationErrors.length?{publicationErrors:Object.freeze([...r.publicationErrors])}:{},outputs:Object.freeze({...r.outputs}),reportPaths:Object.freeze(r.reportFile?[r.reportFile]:[]),...(null==(i=r.children)?void 0:i.length)?{children:Object.freeze([...r.children])}:{}}),!A||A.isRoot)try{let e=await ly({agent:E,record:f.executionRecord,runId:m,script:this.script,scriptPath:this.scriptPath,fallbackReportFileName:f.fallbackReportFileName});this.reportFile=e.reportFile,f.executionRecord=e.record}catch(e){u=e,this.setPlayerStatus("error",a??s??l??e),f.executionRecord=Object.freeze({...f.executionRecord,status:"failed",reportError:e})}if(null==A||A.finish(f.executionRecord),(null==E?void 0:E.destroyed)&&!sV(E))try{await E.finalizeReport()}catch(e){u=u?AggregateError([u,e],"YAML report publication failed"):e,this.setPlayerStatus("error",u),f.executionRecord=Object.freeze({...f.executionRecord,status:"failed",reportError:u})}if(u){let e=[a,s,...C,u].filter(e=>void 0!==e);throw 1===e.length?u:AggregateError(e,"YAML execution/report finalization failed")}if(s&&l)throw AggregateError([s,...C],"YAML execution and cleanup failed");if(s)throw s;if(l)throw l}constructor(e,t,r,n,o){var i;cS(this,"script",void 0),cS(this,"setupAgent",void 0),cS(this,"onTaskStatusChange",void 0),cS(this,"abortSignal",void 0),cS(this,"currentTaskIndex",void 0),cS(this,"taskStatusList",void 0),cS(this,"status",void 0),cS(this,"reportFile",void 0),cS(this,"result",void 0),cS(this,"unnamedResultIndex",void 0),cS(this,"publicationErrors",void 0),cS(this,"output",void 0),cS(this,"unstableLogContent",void 0),cS(this,"errorInSetup",void 0),cS(this,"interfaceAgent",void 0),cS(this,"agentStatusTip",void 0),cS(this,"target",void 0),cS(this,"actionSpace",void 0),cS(this,"scriptPath",void 0),this.script=e,this.setupAgent=t,this.onTaskStatusChange=r,this.abortSignal=o,this.taskStatusList=[],this.status="init",this.unnamedResultIndex=0,this.publicationErrors=[],this.interfaceAgent=null,this.actionSpace=[],this.scriptPath=n,lI(e,n),cE.set(this,{}),this.result={},this.target=(null==(i=sE(e))?void 0:i.target)||e.android||e.ios||e.harmony||e.computer||e.config;const a=function(e){var t,r,n;let o=(null==(t=sE(e))?void 0:t.target)??e.android??e.ios??e.harmony??e.computer;return{output:(null==o?void 0:o.output)??(null==(r=e.config)?void 0:r.output),unstableLogContent:(null==o?void 0:o.unstableLogContent)??(null==(n=e.config)?void 0:n.unstableLogContent)}}(e);if(eH.ht||eH.rS)this.output=void 0,cI("output is undefined in browser or worker");else if(a.output)this.output=(0,ts.resolve)(ck.cwd(),a.output),cI("setting output by config.output",this.output);else{const e=this.scriptPath?(0,ts.basename)(this.scriptPath,".yaml").replace(/\.(ya?ml)$/i,""):"script";this.output=(0,ts.join)((0,tc.ZH)("output"),`${e}-${(0,eH.uR)()}.json`),cI("setting output by script path",this.output)}eH.ht||eH.rS?this.unstableLogContent=void 0:"string"==typeof a.unstableLogContent?this.unstableLogContent=(0,ts.resolve)(ck.cwd(),a.unstableLogContent):!0===a.unstableLogContent&&(this.unstableLogContent=(0,ts.join)((0,tc.ZH)("output"),"unstableLogContent.json")),this.taskStatusList=(e.tasks||[]).map((e,t)=>{var r;return{...e,index:t,status:"init",totalSteps:(null==(r=e.flow)?void 0:r.length)||0}})}}let cO=["aiQuery","aiBoolean","aiNumber","aiString","aiAsk"],cR=["aiAssert","aiWaitFor"];[...cO,...cR];let cj=new Set(["aiAct","runMarkdown","aiQuery","aiBoolean","aiNumber","aiString","aiAsk","aiWaitFor"]);async function cP(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!(null==e?void 0:e.paramSchema)||!("shape"in e.paramSchema))return[t.prompt||"",r];let n=e.paramSchema,o=n&&"shape"in n?Object.keys(n.shape):[],{deviceOptions:i,abortSignal:a,...s}=r,l={...s,...r.deviceOptions||{}};return o.forEach(e=>{void 0!==t[e]&&null!==t[e]&&""!==t[e]&&(l[e]=t[e])}),n&&r7(n).forEach(e=>{let n=t[e];if(n&&"string"==typeof n){let t=sS(n,{deepLocate:r.deepLocate,cacheable:!0});t&&(l[e]=t)}}),[l]}async function cM(e,t,r,n,o){"aiAct"!==t&&"runMarkdown"!==t&&void 0!==o.deepThink&&console.warn("[Playground] Received deepThink in non-aiAct action options. deepThink is expected to be used with aiAct/runMarkdown during migration.",{actionType:t,requestId:o.requestId,options:o});let i=null==r?void 0:r.find(e=>e.interfaceAlias===t||e.name===t),a=o.abortSignal?[o.abortSignal]:[];if(i&&"function"==typeof e.callActionInActionSpace)if(n.params){let t=await cP(i,n.params,o);return await e.callActionInActionSpace(i.name,t[0],...a)}else{let t=n.prompt?sS(n.prompt,{deepLocate:o.deepLocate,cacheable:!0}):void 0,{deviceOptions:r,reportDisplay:s,abortSignal:l,...c}=o,A={locate:t,...c,...o.deviceOptions||{}};return await e.callActionInActionSpace(i.name,A,...a)}{let r=n.prompt;if("aiAssert"===t){var s;let{reportDisplay:t,...n}=o,{pass:i,thought:a}=await (null==e||null==(s=e.aiAssert)?void 0:s.call(e,r||"",void 0,{keepRawResponse:!0,...n}))||{};return{pass:i||!1,thought:a||""}}let i=function(e,t){if(!cj.has(t))return;let r=e[t];if("function"==typeof r)return async(t,n)=>r.call(e,t||"",n)}(e,t);if(i){let{reportDisplay:e,...t}=o,n=e?{...t,_internalReportDisplay:e}:t;return await i(r,n)}throw Error(`Unknown action type: ${t}`)}}let cT=(0,e0.aZ)("task-timing");function cN(e,t){if(!e)return void cT(`[warning] timing object missing, skip set. field=${t}`);let r=Date.now(),n=e[t];void 0!==n?cT(`[warning] duplicate timing field set ignored. field=${t}, existing=${n}, incoming=${r}`):e[t]=r}function cD(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let cz=(0,e0.aZ)("task-runner");class cB{async emitSnapshotChange(e){this.onSnapshotChange&&await this.onSnapshotChange(this,e)}async emitTaskEvent(e,t){if(this.onTaskEvent)try{await this.onTaskEvent({kind:e,task:t,runner:this})}catch(e){console.error("Error in onTaskEvent listener",e)}}async getUiContext(e){var t,r,n,o;null==(t=this.abortSignal)||t.throwIfAborted();let i=Date.now();if(!(null==e?void 0:e.forceRefresh)&&this.lastUiContext&&i-this.lastUiContext.capturedAt<=300&&(null==(r=this.lastUiContext)?void 0:r.context))return cz(`reuse cached uiContext captured ${i-this.lastUiContext.capturedAt}ms ago`),null==(n=this.lastUiContext)?void 0:n.context;try{let e=await this.uiContextBuilder(this.abortSignal);return null==(o=this.abortSignal)||o.throwIfAborted(),e?this.lastUiContext={context:e,capturedAt:Date.now()}:this.lastUiContext=void 0,e}catch(e){throw this.lastUiContext=void 0,e}}async captureScreenshot(){try{let e=await this.getUiContext({forceRefresh:!0});return null==e?void 0:e.screenshot}catch(e){console.error("error while capturing screenshot",e)}}attachRecorderItem(e,t,r){if(!r||!t)return;let n={type:"screenshot",ts:Date.now(),screenshot:t,timing:r};if(!e.recorder){e.recorder=[n];return}e.recorder.push(n)}markTaskAsPending(e){return{taskId:(0,eH.uR)(),status:"pending",...e}}normalizeStatusFromError(e,t){var r,n;"error"===this.status&&((0,eH.vA)(null==e?void 0:e.allowWhenError,t||`task runner is in error state, cannot proceed
|
|
@@ -851,7 +851,7 @@ ${null==(n=this.latestErrorTask())?void 0:n.errorStack}`),this.status=this.tasks
|
|
|
851
851
|
error=${null==(n=this.latestErrorTask())?void 0:n.errorMessage}
|
|
852
852
|
${null==(o=this.latestErrorTask())?void 0:o.errorStack}`);let i=[];for(let t of(Array.isArray(e)?i.push(...e.map(e=>this.markTaskAsPending(e))):i.push(this.markTaskAsPending(e)),this.tasks.push(...i),"running"!==this.status&&(this.status="pending"),await this.emitSnapshotChange(),i))await this.emitTaskEvent("append",t)}async appendAndFlush(e,t){return await this.append(e,t),this.flush(t)}async flush(e){var t,r,n,o,i,a,s,l;let c,A;"init"===this.status&&this.tasks.length>0&&console.warn("illegal state for task runner, status is init but tasks are not empty"),this.normalizeStatusFromError(e,"task runner is in error state"),(0,eH.vA)("running"!==this.status,"task runner is already running"),(0,eH.vA)("completed"!==this.status,"task runner is already completed");let u=this.tasks.findIndex(e=>"pending"===e.status);if(u<0)return;this.status="running",await this.emitSnapshotChange();let d=u,p=!0;for(;d<this.tasks.length;){let e=this.tasks[d];(0,eH.vA)("pending"===e.status,`task status should be pending, but got: ${e.status}`);let l=!1;try{let A;null==(t=this.abortSignal)||t.throwIfAborted(),l=!0,e.timing={start:Date.now()},e.status="running",await this.emitSnapshotChange(),await this.emitTaskEvent("start",e),null==(r=this.abortSignal)||r.throwIfAborted();try{this.onTaskStart&&await this.onTaskStart(e,this.abortSignal)}catch(e){console.error("error in onTaskStart",e)}null==(n=this.abortSignal)||n.throwIfAborted(),(0,eH.vA)(["Insight","Action Space","Planning"].indexOf(e.type)>=0,`unsupported task type: ${e.type}`);let{executor:u}=e;(0,eH.vA)(u,`executor is required for task type: ${e.type}`);let p="Insight"===e.type;cN(e.timing,"getUiContextStart");let h=await this.getUiContext({forceRefresh:p});cN(e.timing,"getUiContextEnd"),null==(o=this.abortSignal)||o.throwIfAborted(),e.uiContext=h;let m={task:e,element:null==c?void 0:c.element,uiContext:h,signal:this.abortSignal};if("Insight"===e.type)(0,eH.vA)("Query"===e.subType||"Assert"===e.subType||"WaitFor"===e.subType||"Boolean"===e.subType||"Number"===e.subType||"String"===e.subType,`unsupported service subType: ${e.subType}`),A=await e.executor(m);else if("Planning"===e.type)A=await e.executor(m),"Locate"===e.subType&&(c=null==A?void 0:A.output);else if("Action Space"===e.type)try{A=await e.executor(m)}finally{this.lastUiContext=void 0}else console.warn(`unsupported task type: ${e.type}, will try to execute it directly`),A=await e.executor(m);if(null==(i=this.abortSignal)||i.throwIfAborted(),d===this.tasks.length-1){cN(e.timing,"captureAfterCallingSnapshotStart");let t=await this.captureScreenshot();null==(s=this.abortSignal)||s.throwIfAborted(),this.attachRecorderItem(e,t,"after-calling"),cN(e.timing,"captureAfterCallingSnapshotEnd")}null==(a=this.abortSignal)||a.throwIfAborted(),Object.assign(e,A),e.status="finished",e.timing.end=Date.now(),e.timing.cost=e.timing.end-e.timing.start,await this.emitSnapshotChange(),await this.emitTaskEvent("finish",e),d++}catch(r){p=!1;let t=sD(r);e.error=t,e.errorMessage=t.message,e.errorStack=t.stack,e.status=l?"failed":"cancelled",l&&e.timing&&(e.timing.end=Date.now(),e.timing.cost=e.timing.end-e.timing.start),await this.emitSnapshotChange(),await this.emitTaskEvent(l?"error":"cancel",e);break}}let h=[];for(let e=d+1;e<this.tasks.length;e++)this.tasks[e].status="cancelled",h.push(this.tasks[e]);if(h.length>0)for(let e of(await this.emitSnapshotChange(),h))await this.emitTaskEvent("cancel",e);if(p)this.status="completed",await this.emitSnapshotChange();else{this.status="error";let e=this.latestErrorTask();A=new cF((null==e?void 0:e.error)??((null==(l=this.abortSignal)?void 0:l.aborted)?sD(this.abortSignal.reason):{name:"Error",message:"Task execution failed"}),function(e){if(e)return{taskId:sM(e.taskId),type:e.type,...void 0===e.subType?{}:{subType:sM(e.subType)},status:e.status,...void 0===e.thought?{}:{thought:sM(e.thought)},...void 0===e.errorMessage?{}:{errorMessage:sM(e.errorMessage)}}}(e)),await this.emitSnapshotChange(A)}if(A)throw A;if(this.tasks.length){let e=Math.min(d,this.tasks.length-1),{thought:t,output:r}=this.tasks[e];return{thought:t,output:r}}}isInErrorState(){return"error"===this.status}latestErrorTask(){if("error"!==this.status)return null;for(let e=this.tasks.length-1;e>=0;e--)if("failed"===this.tasks[e].status)return this.tasks[e];return null}dump(){return new aY({id:this.id,logTime:this.executionLogTime,name:this.name,tasks:this.tasks},{referenceImageUrls:[...this.referenceImageUrls]})}async appendErrorPlan(e){return await this.appendAndFlush({type:"Action Space",subType:"Error",param:{thought:e},thought:e,executor:async()=>{throw Error(e||"error without thought")}}),{output:void 0,runner:this}}constructor(e,t,r){for(const n of(cD(this,"id",void 0),cD(this,"name",void 0),cD(this,"tasks",void 0),cD(this,"status",void 0),cD(this,"onTaskStart",void 0),cD(this,"uiContextBuilder",void 0),cD(this,"abortSignal",void 0),cD(this,"onSnapshotChange",void 0),cD(this,"onTaskEvent",void 0),cD(this,"executionLogTime",void 0),cD(this,"referenceImageUrls",new Set),cD(this,"lastUiContext",void 0),this.id=(0,eH.uR)(),this.status=(null==r?void 0:r.tasks)&&r.tasks.length>0?"pending":"init",this.name=e,this.tasks=((null==r?void 0:r.tasks)||[]).map(e=>this.markTaskAsPending(e)),this.onTaskStart=null==r?void 0:r.onTaskStart,this.uiContextBuilder=t,this.abortSignal=null==r?void 0:r.abortSignal,this.onSnapshotChange=null==r?void 0:r.onSnapshotChange,this.onTaskEvent=null==r?void 0:r.onTaskEvent,this.executionLogTime=Date.now(),(null==r?void 0:r.referenceImages)??[]))this.referenceImageUrls.add(n.url)}}class cF extends Error{toJSON(){return{name:this.name,code:this.code,message:this.message,...void 0===this.stack?{}:{stack:this.stack},cause:this.cause,...void 0===this.task?{}:{task:this.task}}}constructor(e,t){super(e.message,{cause:e}),cD(this,"code","TASK_EXECUTION_FAILED"),cD(this,"cause",void 0),cD(this,"task",void 0),this.name="TaskExecutionError",this.cause=e,this.task=t,this.stack&&(this.stack=sM(this.stack))}}var cL=r(58973);let cU=Symbol("midscene.observationArtifactAdapter");var cK=r(9140);function cZ(e,t){if(!Number.isFinite(e.width)||!Number.isFinite(e.height))throw Error(`Invalid ${t}: width and height must be finite numbers. Received width: ${e.width}, height: ${e.height}`);if(e.width<=0||e.height<=0)throw Error(`Invalid ${t}: width and height must be positive numbers. Received width: ${e.width}, height: ${e.height}`)}async function cJ(e,t){let r=(null==t?void 0:t.shrinkFactor)??1;if(!Number.isFinite(r)||r<1)throw Error(`Invalid screenshotShrinkFactor: must be a finite number >= 1. Received: ${r}`);let n=await nV(e);cZ(n,"screenshot dimensions");let o=r>1?{width:Math.round(n.width/r),height:Math.round(n.height/r)}:{...n};return cZ(o,"prepared screenshot dimensions"),{base64:await oe(e,{sourceSize:n,targetSize:o,jpegQuality:90}),originalSize:n,shotSize:o}}async function cQ(e,t){return 1===((null==t?void 0:t.shrinkFactor)??1)?n9(e,90):(await cJ(e,t)).base64}var cq=r(88586),cX=r.n(cq),cW=r(8963).Buffer;function cH(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let cY=(0,e0.aZ)("cache"),cG=(0,e0.aZ)("cache",{console:!0}),cV=".cache.yaml";class c${matchCache(e,t){if(!this.isCacheResultUsed)return;let r=this.promptKey(e);for(let n=0;n<this.cacheOriginalLength;n++){let o=this.cache.caches[n],i=`${t}:${r}:${n}`;if(o.type===t&&(0,tV.isDeepStrictEqual)(o.prompt,e)&&!this.matchedCacheIndices.has(i)){"locate"===o.type&&(!o.cache&&Array.isArray(o.xpaths)&&(o.cache={xpaths:o.xpaths}),"xpaths"in o&&(o.xpaths=void 0)),this.matchedCacheIndices.add(i);let a=`${t}:${r}`,s=this.consumedCacheIndices.get(a)??[];return s.push(n),this.consumedCacheIndices.set(a,s),cY("cache found and marked as used, type: %s, prompt: %s, index: %d",t,e,n),{cacheContent:o,cacheUsable:!0,updateFn:r=>{(cY("will call updateFn to update cache, type: %s, prompt: %s, index: %d",t,e,n),r(o),this.readOnlyMode)?cY("read-only mode, cache updated in memory but not flushed to file"):(cY("cache updated, will flush to file, type: %s, prompt: %s, index: %d",t,e,n),this.flushCacheToFile())}}}}cY("no unused cache found, type: %s, prompt: %s",t,e)}matchPlanCache(e){let t=this.matchCache(e,"plan");if(!t)return;let r=t.cacheContent.yamlWorkflow;if(!(null==r?void 0:r.trim()))return cY("plan cache matched but yamlWorkflow is empty, treat as cache miss"),{...t,cacheUsable:!1};try{var n;let e=iT.Ay.load(r);if(!(null==e||null==(n=e.tasks)?void 0:n.some(e=>Array.isArray(e.flow)&&e.flow.length>0)))return cY("plan cache matched but flow is empty, treat as cache miss"),{...t,cacheUsable:!1}}catch{return cY("plan cache matched but yamlWorkflow is invalid, treat as cache miss"),{...t,cacheUsable:!1}}return t}matchLocateCache(e){return this.matchCache(e,"locate")}appendCache(e){(cY("will append cache",e),this.cache.caches.push(e),this.readOnlyMode)?cY("read-only mode, cache appended to memory but not flushed to file"):this.flushCacheToFile()}loadCacheFromFile(){let e=this.cacheFilePath;if(nU()(e,"cache file path is required"),!(0,cK.existsSync)(e))return void cY("no cache file found, path: %s",e);let t=e.replace(cV,".json");if((0,cK.existsSync)(t)&&this.isCacheResultUsed)return void console.warn(`An outdated cache file from an earlier version of Midscene has been detected. Since version 0.17, we have implemented an improved caching strategy. Please delete the old file located at: ${t}.`);try{let t=(0,cK.readFileSync)(e,"utf8"),r=iT.Ay.load(t);if(!c6())return void cY("no midscene version info, will not read cache from file");if(cX().lt(r.midsceneVersion,"0.16.10")&&!r.midsceneVersion.includes("beta"))return void console.warn(`You are using an old version of Midscene cache file, and we cannot match any info from it. Starting from Midscene v0.17, we changed our strategy to use xpath for cache info, providing better performance.
|
|
853
853
|
Please delete the existing cache and rebuild it. Sorry for the inconvenience.
|
|
854
|
-
cache file: ${e}`);return cY("cache loaded from file, path: %s, cache version: %s, record length: %s",e,r.midsceneVersion,r.caches.length),r.midsceneVersion=c6(),r}catch(t){cY("cache file exists but load failed, path: %s, error: %s",e,t);return}}flushCacheToFile(e){if(!c6())return void cY("no midscene version info, will not write cache to file");if(!this.cacheFilePath)return void cY("no cache file path, will not write cache to file");if(null==e?void 0:e.cleanUnused)if(this.isCacheResultUsed){let e=this.cache.caches.length,t=new Set;for(let e of this.matchedCacheIndices){let r=e.split(":"),n=Number.parseInt(r[r.length-1],10);Number.isNaN(n)||t.add(n)}this.cache.caches=this.cache.caches.filter((e,r)=>{let n=t.has(r),o=r>=this.cacheOriginalLength;return n||o});let r=e-this.cache.caches.length;r>0?cY("cleaned %d unused cache record(s)",r):cY("no unused cache to clean")}else cY("skip cleaning: cache is not used for reading");try{let e=(0,ts.dirname)(this.cacheFilePath);(0,cK.existsSync)(e)||((0,cK.mkdirSync)(e,{recursive:!0}),cY("created cache directory: %s",e));let t=[...this.cache.caches].sort((e,t)=>"plan"===e.type&&"locate"===t.type?-1:+("locate"===e.type&&"plan"===t.type)),r={...this.cache,caches:t},n=iT.Ay.dump(r,{lineWidth:-1});(0,cK.writeFileSync)(this.cacheFilePath,n),cY("cache flushed to file: %s",this.cacheFilePath)}catch(e){cG(`write cache to file failed, path: ${this.cacheFilePath}, error: ${e}`)}}promptKey(e){return"string"==typeof e?e:JSON.stringify(e)}applyRecordInto(e,t){"plan"===t.type?e.yamlWorkflow=t.yamlWorkflow:(e.cache=t.cache,"xpaths"in e&&(e.xpaths=void 0))}updateOrAppendCacheRecord(e,t){if(t)t.updateFn(t=>{this.applyRecordInto(t,e)});else{var r;let t=`${e.type}:${this.promptKey(e.prompt)}`,n=null==(r=this.staleCacheIndices.get(t))?void 0:r.pop();void 0!==n&&this.cache.caches[n]?(cY("replacing stale cache entry in place, type: %s, prompt: %s, index: %d",e.type,e.prompt,n),this.replaceCacheRecord(n,e)):this.appendCache(e)}}markLocateCacheStale(e){var t;let r=`locate:${this.promptKey(e)}`,n=null==(t=this.consumedCacheIndices.get(r))?void 0:t.pop();if(void 0===n)return;let o=this.staleCacheIndices.get(r)??[];o.push(n),this.staleCacheIndices.set(r,o),cY("marked locate cache entry as stale, prompt: %s, index: %d",e,n)}replaceCacheRecord(e,t){let r=this.cache.caches[e];(nU()(r.type===t.type,`cache record type mismatch on replace: expected ${t.type}, got ${r.type}`),this.applyRecordInto(r,t),this.readOnlyMode)?cY("read-only mode, cache replaced in memory but not flushed to file"):this.flushCacheToFile()}constructor(e,t,r,n={}){var o;let i;if(cH(this,"cacheId",void 0),cH(this,"cacheFilePath",void 0),cH(this,"cache",void 0),cH(this,"isCacheResultUsed",void 0),cH(this,"cacheOriginalLength",void 0),cH(this,"readOnlyMode",void 0),cH(this,"writeOnlyMode",void 0),cH(this,"matchedCacheIndices",new Set),cH(this,"consumedCacheIndices",new Map),cH(this,"staleCacheIndices",new Map),nU()(e,"cacheId is required"),void 0!==n.cacheDir&&("string"!=typeof n.cacheDir||!n.cacheDir.trim()))throw Error("cacheDir must be a non-empty string when provided");const a=null==(o=n.cacheDir)?void 0:o.trim();let s=(0,eH.gV)(e);const l=tq.getEnvConfigValueAsNumber(tu.YK)??200;if(cW.byteLength(s,"utf8")>l){const e=s.slice(0,32),t=(0,eH.tD)(void 0,s);s=`${e}-${t}`}this.cacheId=s,this.cacheFilePath=eH.ht||eH.rS?void 0:r||(0,ts.join)(a||(0,tc.ZH)("cache"),`${this.cacheId}${cV}`);const c=!!(null==n?void 0:n.readOnly),A=!!(null==n?void 0:n.writeOnly);if(c&&A)throw Error("TaskCache cannot be both read-only and write-only");this.isCacheResultUsed=!A&&t,this.readOnlyMode=c,this.writeOnlyMode=A,this.cacheFilePath&&!this.writeOnlyMode&&(i=this.loadCacheFromFile()),i||(i={midsceneVersion:c6(),cacheId:this.cacheId,caches:[]}),this.cache=i,this.cacheOriginalLength=this.isCacheResultUsed?this.cache.caches.length:0}}var c_=r(59300),c0=r.n(c_);function c1(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"web",t=tq.getEnvConfigValue(tu.ho),r=c0()().format("YYYY-MM-DD_HH-mm-ss"),n=(0,eH.uR)().substring(0,8);return`${t||e}-${r}-${n}`}var c2=r(85409);(0,e0.aZ)("agent");let c3={once:"singleAction",untilBottom:"scrollToBottom",untilTop:"scrollToTop",untilRight:"scrollToRight",untilLeft:"scrollToLeft"};async function c5(e,t){var r;let n=(0,e0.aZ)("commonContextParser");(0,eH.vA)(e,"interfaceInstance is required"),n("Getting interface description");let o=(null==(r=e.describe)?void 0:r.call(e))||"";n("Interface description end"),n("Uploading test info to server"),re({testUrl:o,serverUrl:t.uploadServerUrl}),n("UploadTestInfoToServer end"),n("will get size");let i=await e.size(),{width:a,height:s}=i;if(i.dpr&&console.warn("Warning: return value of interface.size() include a dpr property, which is not expected and ignored. "),!Number.isFinite(a)||!Number.isFinite(s))throw Error(`Invalid interface size: width and height must be finite numbers. Received width: ${a}, height: ${s}`);if(a<=0||s<=0)throw Error(`Invalid interface size: width and height must be positive numbers. Received width: ${a}, height: ${s}`);n(`size: ${a}x${s}`);let l=await e.screenshotBase64(),c=Date.now();(0,eH.vA)(l,"screenshotBase64 is required");let A=t.screenshotShrinkFactor??1;n("will get screenshot dimensions");let u=await cJ(l,{shrinkFactor:A}),{width:d,height:p}=u.originalSize;n("screenshot dimensions",d,"x",p);let h=a<s,m=d<p,f=a;h!==m&&(n(`Orientation mismatch detected: logical size ${a}x${s} (${h?"portrait":"landscape"}) vs screenshot ${d}x${p} (${m?"portrait":"landscape"}). Swapping logical dimensions.`),f=s);let g=d/f;n("calculated dpr:",g);let y=g/A;return n("shrunkShotToLogicalRatio",y),A>1&&n(`Applied screenshot shrink factor: ${A} (physical: ${d}x${p} -> target: ${u.shotSize.width}x${u.shotSize.height})`),{shotSize:u.shotSize,deprecatedDpr:g,screenshot:nF.create(u.base64,c),shrunkShotToLogicalRatio:y}}function c4(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{fileExists:r=cK.existsSync,isInBrowser:n=eH.ht,resolvePath:o=ts.resolve,wslDistroName:i=c2.env.WSL_DISTRO_NAME,cwd:a=c2.cwd()}=t;if(n)throw Error("File chooser is not supported in browser environment");return e.map(e=>{let t=o(e);if(!r(t))throw Error(`File not found: ${e}. Resolved to: ${t}. Current working directory: ${a}`);if(!i)return t;let n=t.match(/^\/mnt\/([a-z])\//);return n?`${n[1].toUpperCase()}:\\${t.slice(7).replace(/\//g,"\\")}`:`\\\\wsl$\\${i}${t.replace(/\//g,"\\")}`})}function c7(e){let t=e.locatedPixelResult;if(!t||"object"!=typeof t||!("center"in t))return!1;let r=t.center;return Array.isArray(r)&&2===r.length&&r.every(e=>"number"==typeof e&&Number.isFinite(e))}async function c8(e,t,r,n){var o;if(t){if(!1===n)return void cY("cache disabled for prompt: %s",r);if(null==(o=e.taskCache)?void 0:o.isCacheResultUsed){if(!e.interfaceInstance.rectMatchesCacheFeature)return void cY("interface does not implement rectMatchesCacheFeature, skip cache");try{let n=await e.interfaceInstance.rectMatchesCacheFeature(t),o={center:[n.left+n.width/2,n.top+n.height/2],rect:n,description:"string"==typeof r?r:r.prompt||""};return cY("cache hit, prompt: %s",r),o}catch(e){cY("rectMatchesCacheFeature error: %s",e);return}}}}let c6=()=>"1.16.1",c9=e=>"string"==typeof e?{textPrompt:e,multimodalPrompt:void 0}:{textPrompt:e.prompt,multimodalPrompt:e.images?{images:e.images,convertHttpImage2Base64:!!e.convertHttpImage2Base64}:void 0},Ae=(e,t)=>1===t?e:{...e,center:[e.center[0]*t,e.center[1]*t],...e.rect?{rect:At(e.rect,t)}:{}},At=(e,t)=>1===t?e:{...e,left:Math.round(e.left*t),top:Math.round(e.top*t),width:Math.round(e.width*t),height:Math.round(e.height*t)};function Ar(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let An=(0,e0.aZ)("agent",{console:!0});class Ao{get opts(){return this.context.getOptions()}get dump(){return this.reportState.dump}set dump(e){this.reportState.dump=e}get reportFile(){return this.reportState.file}set reportFile(e){this.reportState.file=e}get reportFileName(){return this.reportState.fileName}set reportFileName(e){this.reportState.fileName=e}_prepareForTestRunner(){var e,t;null==(e=(t=this.reportState.generator).enableSourceSnapshots)||e.call(t)}async _createReportSource(e,t){var r,n;return null==(r=(n=this.reportState.generator).createSourceSnapshot)?void 0:r.call(n,e,t)}async _writeYamlExecutionReport(e){let t=this.reportState,r=t.yamlRecords.findIndex(t=>t.runId===e.runId),n=r<0?t.yamlRecords.length:r;t.yamlRecords[n]=e;try{var o,i;let e=await (null==(o=(i=t.generator).writeRunnerReport)?void 0:o.call(i,this.buildYamlReportInput(),t.yamlScopeId,this.getReportMeta()));return t.file=e??t.file,e}catch(r){throw t.yamlRecords[n]=Object.freeze({...e,status:"failed",reportError:r}),r}}buildYamlReportInput(){return lg(this.reportState.yamlRecords.map(e=>({...e,...e.execution?{execution:{document:{...e.execution.document,reportScopeId:this.reportState.yamlScopeId},cases:e.execution.cases.map(e=>({...e,...e.run?{run:{...e.run,reportScopeId:this.reportState.yamlScopeId}}:{},...e.attempts?{attempts:e.attempts.map(e=>({...e,reportScopeId:this.reportState.yamlScopeId}))}:{}}))}}:{}})),{runId:this.reportState.yamlScopeId})}createEmptyDump(){return new aG({sdkVersion:t7(),groupName:this.opts.groupName,groupDescription:this.opts.groupDescription,executions:[],modelBriefs:[],deviceType:this.context.getDeviceType()})}createReportState(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{dump:this.createEmptyDump(),fileName:e,generator:lp.create(e,{generateReport:this.opts.generateReport,persistExecutionDump:this.opts.persistExecutionDump,outputFormat:this.opts.outputFormat,autoPrintReportMsg:this.opts.autoPrintReportMsg,reuseExistingReport:t}),executionIndexByRunner:new WeakMap,yamlScopeId:(0,eH.uR)(),yamlRecords:[],activeOperations:new Set}}clearDumpInMemory(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.reportState;e.dump=this.createEmptyDump(),e.executionIndexByRunner=new WeakMap,e.lastExecution=void 0,e.yamlRecords.length=0}assertReportIdle(){(0,eH.vA)(!this.reportState.activeOperations.size&&!this.context.isExternallyBusy(),"Cannot reset or finalize a report while the Agent is executing. Await the active operation first.")}assertReportWritable(){let e=this.reportState;return(0,eH.vA)(!this.context.isDestroyed(),"Cannot execute using a destroyed Agent."),(0,eH.vA)(!this.reportReset,"Report reset is in progress. Await resetDump() first."),(0,eH.vA)(!e.finalization,"The report has been finalized. Call and await resetDump() before executing again."),e}async withReportOperation(e){let t=this.assertReportWritable(),r=Promise.resolve().then(e);t.activeOperations.add(r);try{return await r}finally{t.activeOperations.delete(r)}}async resetDump(){if((0,eH.vA)(!this.context.isDestroyed(),"Cannot reset a report using a destroyed Agent."),this.reportReset)return this.reportReset;this.assertReportIdle(),this.reportReset=(async()=>{try{await this.finalizeReport()}catch(e){An(`Failed to finalize previous report; resetting dump: ${String(e)}`)}(0,eH.vA)(!this.context.isDestroyed(),"Cannot reset a report using a destroyed Agent.");let e=c1(this.opts.testId||this.context.getDeviceType()||"web");return this.reportState=this.createReportState(e),this.dump})();try{return await this.reportReset}finally{this.reportReset=void 0}}async finalizeReport(){let e=this.reportState;return e.finalization||(this.assertReportIdle(),e.finalization=(async()=>{await e.generator.flush();let t=await e.generator.finalize();return e.file=t,this.clearDumpInMemory(e),t})()),e.finalization}appendExecutionDump(e,t){(0,eH.vA)(!this.reportState.finalization,"Cannot append to a finalized report. Await resetDump() first.");let r=this.dump;if(t){let n=this.reportState.executionIndexByRunner.get(t);if(void 0!==n){r.executions[n]=e;return}r.executions.push(e),this.reportState.executionIndexByRunner.set(t,r.executions.length-1);return}r.executions.push(e)}dumpDataString(e){return(this.dump.groupName=this.opts.groupName,this.dump.groupDescription=this.opts.groupDescription,eH.ht||(null==e?void 0:e.inlineScreenshots))?this.dump.serializeWithInlineScreenshots():this.dump.serialize()}reportHTMLString(e){if(t$)return"";let t=e();if(!this.reportState.yamlRecords.length)return t4(t);let r=this.reportState.yamlScopeId,n=ll(this.buildYamlReportInput(),this.dump,{reportId:r,scopeId:this.reportState.yamlScopeId,sourcePath:this.reportFile??"<inline-agent-report>"});return`${t4({dumpString:t,attributes:{"data-group-id":r,"data-report-id":r}})}
|
|
854
|
+
cache file: ${e}`);return cY("cache loaded from file, path: %s, cache version: %s, record length: %s",e,r.midsceneVersion,r.caches.length),r.midsceneVersion=c6(),r}catch(t){cY("cache file exists but load failed, path: %s, error: %s",e,t);return}}flushCacheToFile(e){if(!c6())return void cY("no midscene version info, will not write cache to file");if(!this.cacheFilePath)return void cY("no cache file path, will not write cache to file");if(null==e?void 0:e.cleanUnused)if(this.isCacheResultUsed){let e=this.cache.caches.length,t=new Set;for(let e of this.matchedCacheIndices){let r=e.split(":"),n=Number.parseInt(r[r.length-1],10);Number.isNaN(n)||t.add(n)}this.cache.caches=this.cache.caches.filter((e,r)=>{let n=t.has(r),o=r>=this.cacheOriginalLength;return n||o});let r=e-this.cache.caches.length;r>0?cY("cleaned %d unused cache record(s)",r):cY("no unused cache to clean")}else cY("skip cleaning: cache is not used for reading");try{let e=(0,ts.dirname)(this.cacheFilePath);(0,cK.existsSync)(e)||((0,cK.mkdirSync)(e,{recursive:!0}),cY("created cache directory: %s",e));let t=[...this.cache.caches].sort((e,t)=>"plan"===e.type&&"locate"===t.type?-1:+("locate"===e.type&&"plan"===t.type)),r={...this.cache,caches:t},n=iT.Ay.dump(r,{lineWidth:-1});(0,cK.writeFileSync)(this.cacheFilePath,n),cY("cache flushed to file: %s",this.cacheFilePath)}catch(e){cG(`write cache to file failed, path: ${this.cacheFilePath}, error: ${e}`)}}promptKey(e){return"string"==typeof e?e:JSON.stringify(e)}applyRecordInto(e,t){"plan"===t.type?e.yamlWorkflow=t.yamlWorkflow:(e.cache=t.cache,"xpaths"in e&&(e.xpaths=void 0))}updateOrAppendCacheRecord(e,t){if(t)t.updateFn(t=>{this.applyRecordInto(t,e)});else{var r;let t=`${e.type}:${this.promptKey(e.prompt)}`,n=null==(r=this.staleCacheIndices.get(t))?void 0:r.pop();void 0!==n&&this.cache.caches[n]?(cY("replacing stale cache entry in place, type: %s, prompt: %s, index: %d",e.type,e.prompt,n),this.replaceCacheRecord(n,e)):this.appendCache(e)}}markLocateCacheStale(e){var t;let r=`locate:${this.promptKey(e)}`,n=null==(t=this.consumedCacheIndices.get(r))?void 0:t.pop();if(void 0===n)return;let o=this.staleCacheIndices.get(r)??[];o.push(n),this.staleCacheIndices.set(r,o),cY("marked locate cache entry as stale, prompt: %s, index: %d",e,n)}replaceCacheRecord(e,t){let r=this.cache.caches[e];(nU()(r.type===t.type,`cache record type mismatch on replace: expected ${t.type}, got ${r.type}`),this.applyRecordInto(r,t),this.readOnlyMode)?cY("read-only mode, cache replaced in memory but not flushed to file"):this.flushCacheToFile()}constructor(e,t,r,n={}){var o;let i;if(cH(this,"cacheId",void 0),cH(this,"cacheFilePath",void 0),cH(this,"cache",void 0),cH(this,"isCacheResultUsed",void 0),cH(this,"cacheOriginalLength",void 0),cH(this,"readOnlyMode",void 0),cH(this,"writeOnlyMode",void 0),cH(this,"matchedCacheIndices",new Set),cH(this,"consumedCacheIndices",new Map),cH(this,"staleCacheIndices",new Map),nU()(e,"cacheId is required"),void 0!==n.cacheDir&&("string"!=typeof n.cacheDir||!n.cacheDir.trim()))throw Error("cacheDir must be a non-empty string when provided");const a=null==(o=n.cacheDir)?void 0:o.trim();let s=(0,eH.gV)(e);const l=tq.getEnvConfigValueAsNumber(tu.YK)??200;if(cW.byteLength(s,"utf8")>l){const e=s.slice(0,32),t=(0,eH.tD)(void 0,s);s=`${e}-${t}`}this.cacheId=s,this.cacheFilePath=eH.ht||eH.rS?void 0:r||(0,ts.join)(a||(0,tc.ZH)("cache"),`${this.cacheId}${cV}`);const c=!!(null==n?void 0:n.readOnly),A=!!(null==n?void 0:n.writeOnly);if(c&&A)throw Error("TaskCache cannot be both read-only and write-only");this.isCacheResultUsed=!A&&t,this.readOnlyMode=c,this.writeOnlyMode=A,this.cacheFilePath&&!this.writeOnlyMode&&(i=this.loadCacheFromFile()),i||(i={midsceneVersion:c6(),cacheId:this.cacheId,caches:[]}),this.cache=i,this.cacheOriginalLength=this.isCacheResultUsed?this.cache.caches.length:0}}var c_=r(59300),c0=r.n(c_);function c1(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"web",t=tq.getEnvConfigValue(tu.ho),r=c0()().format("YYYY-MM-DD_HH-mm-ss"),n=(0,eH.uR)().substring(0,8);return`${t||e}-${r}-${n}`}var c2=r(85409);(0,e0.aZ)("agent");let c3={once:"singleAction",untilBottom:"scrollToBottom",untilTop:"scrollToTop",untilRight:"scrollToRight",untilLeft:"scrollToLeft"};async function c5(e,t){var r;let n=(0,e0.aZ)("commonContextParser");(0,eH.vA)(e,"interfaceInstance is required"),n("Getting interface description");let o=(null==(r=e.describe)?void 0:r.call(e))||"";n("Interface description end"),n("Uploading test info to server"),re({testUrl:o,serverUrl:t.uploadServerUrl}),n("UploadTestInfoToServer end"),n("will get size");let i=await e.size(),{width:a,height:s}=i;if(i.dpr&&console.warn("Warning: return value of interface.size() include a dpr property, which is not expected and ignored. "),!Number.isFinite(a)||!Number.isFinite(s))throw Error(`Invalid interface size: width and height must be finite numbers. Received width: ${a}, height: ${s}`);if(a<=0||s<=0)throw Error(`Invalid interface size: width and height must be positive numbers. Received width: ${a}, height: ${s}`);n(`size: ${a}x${s}`);let l=await e.screenshotBase64(),c=Date.now();(0,eH.vA)(l,"screenshotBase64 is required");let A=t.screenshotShrinkFactor??1;n("will get screenshot dimensions");let u=await cJ(l,{shrinkFactor:A}),{width:d,height:p}=u.originalSize;n("screenshot dimensions",d,"x",p);let h=a<s,m=d<p,f=a;h!==m&&(n(`Orientation mismatch detected: logical size ${a}x${s} (${h?"portrait":"landscape"}) vs screenshot ${d}x${p} (${m?"portrait":"landscape"}). Swapping logical dimensions.`),f=s);let g=d/f;n("calculated dpr:",g);let y=g/A;return n("shrunkShotToLogicalRatio",y),A>1&&n(`Applied screenshot shrink factor: ${A} (physical: ${d}x${p} -> target: ${u.shotSize.width}x${u.shotSize.height})`),{shotSize:u.shotSize,deprecatedDpr:g,screenshot:nF.create(u.base64,c),shrunkShotToLogicalRatio:y}}function c4(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{fileExists:r=cK.existsSync,isInBrowser:n=eH.ht,resolvePath:o=ts.resolve,wslDistroName:i=c2.env.WSL_DISTRO_NAME,cwd:a=c2.cwd()}=t;if(n)throw Error("File chooser is not supported in browser environment");return e.map(e=>{let t=o(e);if(!r(t))throw Error(`File not found: ${e}. Resolved to: ${t}. Current working directory: ${a}`);if(!i)return t;let n=t.match(/^\/mnt\/([a-z])\//);return n?`${n[1].toUpperCase()}:\\${t.slice(7).replace(/\//g,"\\")}`:`\\\\wsl$\\${i}${t.replace(/\//g,"\\")}`})}function c7(e){let t=e.locatedPixelResult;if(!t||"object"!=typeof t||!("center"in t))return!1;let r=t.center;return Array.isArray(r)&&2===r.length&&r.every(e=>"number"==typeof e&&Number.isFinite(e))}async function c8(e,t,r,n){var o;if(t){if(!1===n)return void cY("cache disabled for prompt: %s",r);if(null==(o=e.taskCache)?void 0:o.isCacheResultUsed){if(!e.interfaceInstance.rectMatchesCacheFeature)return void cY("interface does not implement rectMatchesCacheFeature, skip cache");try{let n=await e.interfaceInstance.rectMatchesCacheFeature(t),o={center:[n.left+n.width/2,n.top+n.height/2],rect:n,description:"string"==typeof r?r:r.prompt||""};return cY("cache hit, prompt: %s",r),o}catch(e){cY("rectMatchesCacheFeature error: %s",e);return}}}}let c6=()=>"1.16.2",c9=e=>"string"==typeof e?{textPrompt:e,multimodalPrompt:void 0}:{textPrompt:e.prompt,multimodalPrompt:e.images?{images:e.images,convertHttpImage2Base64:!!e.convertHttpImage2Base64}:void 0},Ae=(e,t)=>1===t?e:{...e,center:[e.center[0]*t,e.center[1]*t],...e.rect?{rect:At(e.rect,t)}:{}},At=(e,t)=>1===t?e:{...e,left:Math.round(e.left*t),top:Math.round(e.top*t),width:Math.round(e.width*t),height:Math.round(e.height*t)};function Ar(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let An=(0,e0.aZ)("agent",{console:!0});class Ao{get opts(){return this.context.getOptions()}get dump(){return this.reportState.dump}set dump(e){this.reportState.dump=e}get reportFile(){return this.reportState.file}set reportFile(e){this.reportState.file=e}get reportFileName(){return this.reportState.fileName}set reportFileName(e){this.reportState.fileName=e}_prepareForTestRunner(){var e,t;null==(e=(t=this.reportState.generator).enableSourceSnapshots)||e.call(t)}async _createReportSource(e,t){var r,n;return null==(r=(n=this.reportState.generator).createSourceSnapshot)?void 0:r.call(n,e,t)}async _writeYamlExecutionReport(e){let t=this.reportState,r=t.yamlRecords.findIndex(t=>t.runId===e.runId),n=r<0?t.yamlRecords.length:r;t.yamlRecords[n]=e;try{var o,i;let e=await (null==(o=(i=t.generator).writeRunnerReport)?void 0:o.call(i,this.buildYamlReportInput(),t.yamlScopeId,this.getReportMeta()));return t.file=e??t.file,e}catch(r){throw t.yamlRecords[n]=Object.freeze({...e,status:"failed",reportError:r}),r}}buildYamlReportInput(){return lg(this.reportState.yamlRecords.map(e=>({...e,...e.execution?{execution:{document:{...e.execution.document,reportScopeId:this.reportState.yamlScopeId},cases:e.execution.cases.map(e=>({...e,...e.run?{run:{...e.run,reportScopeId:this.reportState.yamlScopeId}}:{},...e.attempts?{attempts:e.attempts.map(e=>({...e,reportScopeId:this.reportState.yamlScopeId}))}:{}}))}}:{}})),{runId:this.reportState.yamlScopeId})}createEmptyDump(){return new aG({sdkVersion:t7(),groupName:this.opts.groupName,groupDescription:this.opts.groupDescription,executions:[],modelBriefs:[],deviceType:this.context.getDeviceType()})}createReportState(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{dump:this.createEmptyDump(),fileName:e,generator:lp.create(e,{generateReport:this.opts.generateReport,persistExecutionDump:this.opts.persistExecutionDump,outputFormat:this.opts.outputFormat,autoPrintReportMsg:this.opts.autoPrintReportMsg,reuseExistingReport:t}),executionIndexByRunner:new WeakMap,yamlScopeId:(0,eH.uR)(),yamlRecords:[],activeOperations:new Set}}clearDumpInMemory(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.reportState;e.dump=this.createEmptyDump(),e.executionIndexByRunner=new WeakMap,e.lastExecution=void 0,e.yamlRecords.length=0}assertReportIdle(){(0,eH.vA)(!this.reportState.activeOperations.size&&!this.context.isExternallyBusy(),"Cannot reset or finalize a report while the Agent is executing. Await the active operation first.")}assertReportWritable(){let e=this.reportState;return(0,eH.vA)(!this.context.isDestroyed(),"Cannot execute using a destroyed Agent."),(0,eH.vA)(!this.reportReset,"Report reset is in progress. Await resetDump() first."),(0,eH.vA)(!e.finalization,"The report has been finalized. Call and await resetDump() before executing again."),e}async withReportOperation(e){let t=this.assertReportWritable(),r=Promise.resolve().then(e);t.activeOperations.add(r);try{return await r}finally{t.activeOperations.delete(r)}}async resetDump(){if((0,eH.vA)(!this.context.isDestroyed(),"Cannot reset a report using a destroyed Agent."),this.reportReset)return this.reportReset;this.assertReportIdle(),this.reportReset=(async()=>{try{await this.finalizeReport()}catch(e){An(`Failed to finalize previous report; resetting dump: ${String(e)}`)}(0,eH.vA)(!this.context.isDestroyed(),"Cannot reset a report using a destroyed Agent.");let e=c1(this.opts.testId||this.context.getDeviceType()||"web");return this.reportState=this.createReportState(e),this.dump})();try{return await this.reportReset}finally{this.reportReset=void 0}}async finalizeReport(){let e=this.reportState;return e.finalization||(this.assertReportIdle(),e.finalization=(async()=>{await e.generator.flush();let t=await e.generator.finalize();return e.file=t,this.clearDumpInMemory(e),t})()),e.finalization}appendExecutionDump(e,t){(0,eH.vA)(!this.reportState.finalization,"Cannot append to a finalized report. Await resetDump() first.");let r=this.dump;if(t){let n=this.reportState.executionIndexByRunner.get(t);if(void 0!==n){r.executions[n]=e;return}r.executions.push(e),this.reportState.executionIndexByRunner.set(t,r.executions.length-1);return}r.executions.push(e)}dumpDataString(e){return(this.dump.groupName=this.opts.groupName,this.dump.groupDescription=this.opts.groupDescription,eH.ht||(null==e?void 0:e.inlineScreenshots))?this.dump.serializeWithInlineScreenshots():this.dump.serialize()}reportHTMLString(e){if(t$)return"";let t=e();if(!this.reportState.yamlRecords.length)return t4(t);let r=this.reportState.yamlScopeId,n=ll(this.buildYamlReportInput(),this.dump,{reportId:r,scopeId:this.reportState.yamlScopeId,sourcePath:this.reportFile??"<inline-agent-report>"});return`${t4({dumpString:t,attributes:{"data-group-id":r,"data-report-id":r}})}
|
|
855
855
|
${ng(n)}`}writeOutActionDumps(e){let t=this.reportState;if(t.finalization){if(e)throw new sq.s8("Cannot append to a finalized report. Await resetDump() first.",{code:"REPORT_FINALIZED"});return}let r=e||t.lastExecution;r&&(t.lastExecution=r,t.generator.onExecutionUpdate(r,this.getReportMeta(),this.opts.reportAttributes)),t.file=t.generator.getReportPath()}async flushReport(){this.reportReset&&await this.reportReset;let e=this.reportState;return e.finalization?e.finalization:(this.writeOutActionDumps(),await e.generator.flush(),e.lastExecution?e.file??void 0:void 0)}getReportMeta(){return{groupName:this.dump.groupName,groupDescription:this.dump.groupDescription,sdkVersion:this.dump.sdkVersion,modelBriefs:this.dump.modelBriefs,deviceType:this.dump.deviceType}}get onDumpUpdate(){return this.dumpUpdateListeners[0]}set onDumpUpdate(e){this.dumpUpdateListeners=[],e&&this.dumpUpdateListeners.push(e)}addDumpUpdateListener(e){return this.dumpUpdateListeners.push(e),()=>{this.removeDumpUpdateListener(e)}}removeDumpUpdateListener(e){let t=this.dumpUpdateListeners.indexOf(e);t>-1&&this.dumpUpdateListeners.splice(t,1)}clearDumpUpdateListeners(){this.dumpUpdateListeners=[]}notifyDumpUpdateListeners(e){let t=this.dumpDataString();for(let r of this.dumpUpdateListeners)try{r(t,e)}catch(e){console.error("Error in onDumpUpdate listener",e)}}bindRunner(e){this.reportByRunner.set(e,this.reportState)}assertRunnerCurrent(e){let t=this.reportByRunner.get(e);(0,eH.vA)(t===this.reportState&&!t.finalization,"Cannot write a late execution update into a different or finalized report.")}async flushPendingWrites(){await this.reportState.generator.flush()}async waitForOperations(){for(;this.reportState.activeOperations.size;)await Promise.allSettled([...this.reportState.activeOperations])}async waitForReset(){this.reportReset&&await this.reportReset.catch(()=>{})}constructor(e){var t;Ar(this,"context",void 0),Ar(this,"reportState",void 0),Ar(this,"reportReset",void 0),Ar(this,"reportByRunner",void 0),Ar(this,"dumpUpdateListeners",void 0),this.context=e,this.reportByRunner=new WeakMap,this.dumpUpdateListeners=[];const r=this.opts,n=r.reportFileName??c1(r.testId||e.getDeviceType()||"web");this.reportState=this.createReportState(n,(null==(t=r.reportAttributes)?void 0:t["data-group-id"])===n)}}let Ai=["read-only","read-write","write-only"],Aa=Ai.map(e=>`"${e}"`).join(", ");function As(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class Al{async register(e){await this.replaceAcceptedFiles(c4(Array.isArray(e)?e:[e]))}async registerFromAllowedDir(e,t){let r;await this.replaceAcceptedFiles((r=(0,ts.resolve)(t),c4((Array.isArray(e)?e:[e]).map(e=>{let t=(0,ts.resolve)(r,e),n=(0,ts.relative)(r,t);if(".."===n||n.startsWith(`..${ts.sep}`)||(0,ts.isAbsolute)(n))throw Error(`File chooser path must be inside the configured fileChooserAllowedDir: ${e}`);return t}))))}async replaceAcceptedFiles(e){let t=await this.clear();if(t)throw t;if(e.length){if(!this.interfaceInstance.registerFileChooserListener)throw Error(`File upload is not supported on ${this.interfaceInstance.interfaceType}`);this.registration=await this.interfaceInstance.registerFileChooserListener(async t=>{await t.accept(e)})}}async clear(){let e=this.registration;if(this.registration=void 0,e)try{return await e.getError()}finally{e.dispose()}}constructor(e){As(this,"interfaceInstance",void 0),As(this,"registration",void 0),this.interfaceInstance=e}}async function Ac(e,t,r){if(!(null==t?void 0:t.length))return r();if(!e.registerFileChooserListener)throw Error(`File upload is not supported on ${e.interfaceType}`);let n=async e=>{await e.accept(t)},{dispose:o,getError:i}=await e.registerFileChooserListener(n);try{let e=await r(),t=await i();if(t)throw t;return e}finally{o()}}class AA{async append(e,t){await this.runner.append(e,t)}async appendAndRun(e,t){return this.runner.appendAndFlush(e,t)}async run(e){return this.runner.flush(e)}isInErrorState(){return this.runner.isInErrorState()}latestErrorTask(){return this.runner.latestErrorTask()}appendErrorPlan(e){return this.runner.appendErrorPlan(e)}getRunner(){return this.runner}constructor(e,t,r){!function(e,t,r){t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(this,"runner",void 0),this.runner=new cB(e,t,r)}}function Au(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let Ad=(0,e0.aZ)("agent-progress-bus",{console:!0});class Ap{subscribe(e){return this.listeners.push(e),()=>{this.unsubscribe(e)}}unsubscribe(e){let t=this.listeners.indexOf(e);t>-1&&this.listeners.splice(t,1)}clear(){this.listeners=[]}get listenerCount(){return this.listeners.length}constructor(){Au(this,"listeners",[]),Au(this,"sequence",0),Au(this,"publish",async(e,t,r)=>{let n={scope:e,phase:t,sequence:++this.sequence,data:r};for(let e of this.listeners)try{await e(n)}catch(e){Ad("error in progress listener",e)}})}}function Ah(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function Am(e){return null==e?e:"string"==typeof e?e.length>180?`${e.slice(0,177)}...`:e:"number"==typeof e||"boolean"==typeof e?e:Array.isArray(e)?e.slice(0,5).map(Am):Ah(e)&&"string"==typeof e.prompt?Am(e.prompt):Ah(e)?Object.fromEntries(Object.entries(e).slice(0,6).map(e=>{let[t,r]=e;return[t,Am(r)]})):String(e)}function Af(e){return e instanceof Error?e.message:String(e)}function Ag(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Ay(e){let t=e.center;if(Array.isArray(t)&&t.length>=2){let e=Ag(t[0]),r=Ag(t[1]);if(void 0!==e&&void 0!==r)return[e,r]}}function Av(e){return!!Ah(e)&&("locatedPixelResult"in e||"center"in e||"rect"in e||"point"in e||"bbox"in e||"prompt"in e||"description"in e)}let Ab=["locate","from","to","start","end"],Aw=(0,e0.aZ)("agent:usage-intent",{console:!0});function AE(e,t){if(e)return e.intent?(Aw(`intent is already set to "${e.intent}", skipping overwrite to "${t}"`),e):{...e,intent:t}}function Ax(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let Ak=(0,e0.aZ)("agent:task-builder");function AS(e){return null!=e&&"object"==typeof e&&Object.keys(e).length>0}function AI(e){if("string"==typeof e)return{prompt:e};let{deepThink:t,...r}=e,n=r.deepLocate??t;return void 0===n?r:{...r,deepLocate:n}}function AC(e){return{type:"Locate",param:AI(e),thought:""}}class AO{async build(e,t,r,n){let o=[],i={tasks:o,planningModel:t,locateModel:r,cacheable:null==n?void 0:n.cacheable,multimodalPrompt:null==n?void 0:n.multimodalPrompt,deepLocate:null==n?void 0:n.deepLocate,abortSignal:null==n?void 0:n.abortSignal},a=new Map([["Locate",e=>this.handleLocatePlan(e,i)],["Finished",e=>this.handleFinishedPlan(e,i)]]),s=e=>this.handleActionPlan(e,i);for(let t of e){var l;null==(l=i.abortSignal)||l.throwIfAborted();let e=a.get(t.type)??s;await e(t)}return{tasks:o}}handleFinishedPlan(e,t){let r={type:"Action Space",subType:"Finished",param:null,thought:e.thought,executor:async()=>{}};t.tasks.push(r)}async handleLocatePlan(e,t){let r=this.createLocateTask(e,e.param,t);t.tasks.push(r)}async handleActionPlan(e,t){let r=e.type,n=rG(r,this.actionSpace),o=e.param,i=r7(n.paramSchema);r8(o,n.paramSchema),i.forEach(e=>{if(null==o?void 0:o[e]){let n=AC(o[e]);Ak("will prepend locate param for field",`action.type=${r}`,`param=${JSON.stringify(o[e])}`,`locatePlan=${JSON.stringify(n)}`,`hasLocatedPixelResult=${c7(o[e])}`);let i=this.createLocateTask(n,o[e],t,t=>{o[e]=t});t.tasks.push(i)}else Ak(`field '${e}' is not provided for action ${r}`)});let a={type:"Action Space",subType:r,thought:e.thought,param:e.param,planningFeedbackMaxLength:n.planningFeedbackMaxLength,executor:async e=>{var i,a,s,l,c,A,u;let d=t.abortSignal??e.signal,p=e.task.timing;Ak("executing action",r,o,`taskContext.element.center: ${null==(i=e.element)?void 0:i.center}`);let h=e.uiContext;(0,eH.vA)(h,"uiContext is required for Action task"),r8(o,n.paramSchema);let{shrunkShotToLogicalRatio:m}=h;if(void 0===m)throw Error("shrunkShotToLogicalRatio is not defined in Action task");let f=(()=>{if(!n.paramSchema)return o;try{return r9(o,n.paramSchema,{shrunkShotToLogicalRatio:m})}catch(e){throw Error(`Invalid parameters for action ${n.name}: ${e.message}
|
|
856
856
|
Parameters: ${JSON.stringify(o)}`,{cause:e})}})(),g=!this.actionReadiness;e.task.actionReadiness=g?"default":"custom",null==d||d.throwIfAborted(),cN(p,"beforeInvokeActionHookStart");let y=g?n.delayBeforeRunner??200:0;try{let e=(await Promise.allSettled([null==(a=(s=this.interface).beforeInvokeAction)?void 0:a.call(s,n.name,o,d),y>0?iR(d).call({timeMs:y}):Promise.resolve()])).find(e=>"rejected"===e.status);if((null==e?void 0:e.status)==="rejected")throw e.reason}catch(e){throw Error(`error in running beforeInvokeAction for ${n.name}: ${(null==e?void 0:e.message)||String(e)}`,{cause:e})}finally{cN(p,"beforeInvokeActionHookEnd")}null==d||d.throwIfAborted(),cN(p,"callActionStart"),Ak("calling action",n.name);let v=await n.call.call(this.interface,f,g?{...e,signal:d}:{...e,signal:d,skipDefaultWait:!0});cN(p,"callActionEnd"),Ak("called action",n.name,"result:",v),null==d||d.throwIfAborted(),cN(p,"afterInvokeActionHookStart"),cN(p,"waitForActionReadyStart");try{if(g){let e=n.delayAfterRunner??this.waitAfterAction??300;e>0&&await iR(d).call({timeMs:e}),await (null==(l=(c=this.interface).defaultActionWait)?void 0:l.call(c,n.name,f,d))}else await this.actionReadiness.wait({id:e.task.taskId,name:n.name,param:f},d,this.operationResource)}finally{cN(p,"waitForActionReadyEnd")}null==d||d.throwIfAborted();try{await (null==(A=(u=this.interface).afterInvokeAction)?void 0:A.call(u,n.name,f,d))}catch(e){throw Error(`error in running afterInvokeAction for ${n.name}: ${(null==e?void 0:e.message)||String(e)}`,{cause:e})}finally{cN(p,"afterInvokeActionHookEnd")}return{output:v}}};t.tasks.push(a)}createLocateTask(e,t,r,n){var o,i,a,s;let{cacheable:l,locateModel:c,deepLocate:A}=r,u=AI(t);return(null==(i=r.multimodalPrompt)||null==(o=i.images)?void 0:o.length)&&u.prompt&&!(null==(s=r3(u.prompt))||null==(a=s.images)?void 0:a.length)&&(u={...u,prompt:{...r.multimodalPrompt,prompt:r2(u.prompt)}}),void 0!==l&&(u={...u,cacheable:l}),A&&!u.deepLocate&&(u={...u,deepLocate:!0}),{type:"Planning",subType:"Locate",param:u,thought:e.thought,executor:async e=>{var t,o,i,a,s;let l,A,d,p,h,m,f=r.abortSignal??e.signal;null==f||f.throwIfAborted();let{task:g}=e,{uiContext:y}=e,v=c7(u)?u:void 0;(0,eH.vA)((null==u?void 0:u.prompt)||v,`No prompt or id or position or locatedPixelResult to locate, param=${JSON.stringify(u)}`),y||(y=await this.service.contextRetrieverFn(f),null==f||f.throwIfAborted()),(0,eH.vA)(y,"uiContext is required for Service task");let{shrunkShotToLogicalRatio:b}=y;if(void 0===b)throw Error("shrunkShotToLogicalRatio is not defined in locate task");let w=e=>{var t,r,n,o,i,a,s;e&&(l=e,g.log={dump:e,rawResponse:null==(t=e.taskInfo)?void 0:t.rawResponse,rawAssistantOutput:null==(r=e.taskInfo)?void 0:r.rawAssistantOutput,searchAreaRawChoiceMessage:null==(n=e.taskInfo)?void 0:n.searchAreaRawChoiceMessage},g.usage=AE(null==(o=e.taskInfo)?void 0:o.usage,"locate"),g.searchArea=null==(i=e.taskInfo)?void 0:i.searchArea,(null==(a=e.taskInfo)?void 0:a.searchAreaUsage)&&(g.searchAreaUsage=AE(e.taskInfo.searchAreaUsage,"locate")),(null==(s=e.taskInfo)?void 0:s.reasoning_content)&&(g.reasoning_content=e.taskInfo.reasoning_content))},E=v?function(e){var t;if(!e)return;let{center:r,rect:n}=e.locatedPixelResult;return{center:[...r],description:"string"==typeof e.prompt?e.prompt:(null==(t=e.prompt)?void 0:t.prompt)||"",...n?{rect:n}:{}}}(v):void 0,x=u.deepLocate?void 0:E,k=!!x;if(!k&&u.xpath&&this.interface.rectMatchesCacheFeature)try{d=await this.interface.rectMatchesCacheFeature({xpaths:[u.xpath]})}catch{}let S=d?Ae({center:[d.left+d.width/2,d.top+d.height/2],description:"string"==typeof u.prompt?u.prompt:(null==(t=u.prompt)?void 0:t.prompt)||"",rect:d},b):void 0,I=!!S,C=u.prompt,O=null==(o=this.taskCache)?void 0:o.matchLocateCache(C),R=null==O||null==(i=O.cacheContent)?void 0:i.cache,j=k||I?null:await c8({taskCache:this.taskCache,interfaceInstance:this.interface},R,C,u.cacheable),P=j?Ae(j,b):void 0,M=!!P,T=e.task.timing;if(!I&&!M&&!k)try{cN(T,"callAiStart"),A=await this.service.locate(u,{context:y,planLocatedElement:E},c,f),w(A.dump),p=A.element}catch(e){throw e instanceof aM&&w(e.dump),e}finally{cN(T,"callAiEnd")}let N=x||S||P||p;if(N){let e=function(e){var t,r,n;let o=[null==(t=e.center)?void 0:t[0],null==(r=e.center)?void 0:r[1]];if((null==(n=e.center)?void 0:n.length)!==2||o.some(e=>"number"!=typeof e||!Number.isFinite(e)))return`Invalid locate result coordinates: ${JSON.stringify(e)}`}(N);if(e){if(l)throw new aM(e,l);throw Error(e)}}let D=AS(null==O||null==(a=O.cacheContent)?void 0:a.cache);if(N&&this.taskCache&&!M&&(!k||!D)&&!1!==u.cacheable)if(this.interface.cacheFeatureForPoint)try{let e=[Math.round(N.center[0]/b),Math.round(N.center[1]/b)],t=this.getDefaultModelRuntime(),r=await this.interface.cacheFeatureForPoint(e,{targetDescription:"string"==typeof u.prompt?u.prompt:null==(s=u.prompt)?void 0:s.prompt,modelRuntime:{...t,executionId:c.executionId}});AS(r)?(Ak("update cache, prompt: %s, cache: %o",C,r),h=r,this.taskCache.updateOrAppendCacheRecord({type:"locate",prompt:C,cache:r},O)):Ak("no cache data returned, skip cache update, prompt: %s",C)}catch(e){Ak("cacheFeatureForPoint failed: %s",e)}else Ak("cacheFeatureForPoint is not supported, skip cache update");if(!N){if(l)throw new aM(`Element not found : ${u.prompt}`,l);throw Error(`Element not found: ${u.prompt}`)}k&&v?m={from:"Plan",context:{locatedPixelResult:v.locatedPixelResult}}:I?m={from:"User expected path",context:{xpath:u.xpath}}:M&&(m={from:"Cache",context:{cacheEntry:R,cacheToSave:h}});let z=u.promptDisplay,B=z?{...N,description:z}:N;return z&&(null==l?void 0:l.matchedElement)&&(l.matchedElement=l.matchedElement.map(e=>({...e,description:z}))),null==n||n(B),{output:{element:{...B,dpr:y.deprecatedDpr}},hitBy:m}}}}constructor({getDefaultModelRuntime:e,interfaceInstance:t,service:r,taskCache:n,actionSpace:o,waitAfterAction:i,actionReadiness:a,operationResource:s}){Ax(this,"interface",void 0),Ax(this,"service",void 0),Ax(this,"getDefaultModelRuntime",void 0),Ax(this,"taskCache",void 0),Ax(this,"actionSpace",void 0),Ax(this,"waitAfterAction",void 0),Ax(this,"actionReadiness",void 0),Ax(this,"operationResource",void 0),this.getDefaultModelRuntime=e,this.interface=t,this.service=r,this.taskCache=n,this.actionSpace=o,this.waitAfterAction=i,this.actionReadiness=a,this.operationResource=s??t}}function AR(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:150;return void 0===e?"":("object"==typeof e&&(e=JSON.stringify(e)),"number"==typeof e)?e.toString():"string"==typeof e&&e.length>t?`${e.slice(0,t)}...`:"string"==typeof e?e.trim():""}function Aj(e){return e.subType||e.type}function AP(e){if(!e)return"";if("string"==typeof e)return e;if("object"==typeof e){if("string"==typeof e.promptDisplay)return e.promptDisplay;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 AM(e){if(!e)return{content:""};let t=e=>{var t;return(null==e||null==(t=e.multimodalPrompt)?void 0:t.images)&&Array.isArray(e.multimodalPrompt.images)?e.multimodalPrompt.images:void 0},r=e=>"string"==typeof e?e:JSON.stringify(e);if(e.demand)return{content:r(e.demand),images:t(e)};if(e.assertion)return{content:r(e.assertion),images:t(e)};if(e.dataDemand){let{dataDemand:n}=e;if("string"==typeof n)return{content:n};if("object"==typeof n)return{content:r(n.demand||n),images:t(n)}}return{content:""}}function AT(e,t){return t?`${e} - ${t}`:e}function AN(e){var t,r,n,o,i,a,s,l,c,A,u;let d;if("Planning"===e.type&&(d="Locate"===e.subType?AP(null==e?void 0:e.param):(null==(t=e.output)?void 0:t.log)||(null==(r=e.param)?void 0:r.userInstructionDisplay)||((null==(n=e.param)?void 0:n.userInstruction)?r2(e.param.userInstruction):void 0)),"Insight"===e.type&&(d=AM(null==e?void 0:e.param).content),"Action Space"===e.type){let t=null==e||null==(o=e.param)?void 0:o.locate,r=t?AP(t):"";(d=e.thought||"","number"==typeof(null==e||null==(i=e.param)?void 0:i.timeMs))?d=`${null==e||null==(a=e.param)?void 0:a.timeMs}ms`:"string"==typeof(null==e||null==(s=e.param)?void 0:s.scrollType)?d=(u=null==e?void 0:e.param)?`${u.direction||"down"}, ${u.scrollType||"singleAction"}, ${u.distance||"distance-not-set"}`:"":"string"==typeof(null==e||null==(l=e.param)?void 0:l.direction)&&(null==e?void 0:e.subType)==="PullGesture"?d=function(e){if(!e)return"";let t=[];return t.push(`direction: ${e.direction||"down"}`),e.distance&&t.push(`distance: ${e.distance}`),e.duration&&t.push(`duration: ${e.duration}ms`),t.join(", ")}(null==e?void 0:e.param):void 0!==(null==e||null==(c=e.param)?void 0:c.value)?d=null==e||null==(A=e.param)?void 0:A.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),r&&(d=d&&"object"!=typeof d?`${r} - ${d}`:r)}if(void 0===d)return"";if("string"==typeof d)return d;if("object"==typeof d){let e=AP(d);if(e)return e;let t=Object.entries(d);if(0===t.length)return"";let r=e=>"string"==typeof e?e:null==e?String(e):"object"==typeof e?JSON.stringify(e):String(e);if(1===t.length){let[e,n]=t[0];return`${e}: ${r(n)}`}return t.map(e=>{let[t,n]=e;return`${t}: ${r(n)}`}).join(", ")}return String(d)}function AD(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let Az=(0,e0.aZ)("device-task-executor"),AB=(0,e0.aZ)("device-task-executor",{console:!0});class AF{get page(){return this.interface}createExecutionSession(e,t){var r,n,o;let i=new AA(e,e=>(null==t?void 0:t.uiContext)?Promise.resolve(t.uiContext):Promise.resolve(this.service.contextRetrieverFn(e)),{abortSignal:(null==t?void 0:t.abortSignal)??(null==(r=this.getAbortSignal)?void 0:r.call(this)),onTaskStart:this.onTaskStartCallback,tasks:null==t?void 0:t.tasks,referenceImages:null==t?void 0:t.referenceImages,onSnapshotChange:async(e,r)=>{var n,o,i;await (null==(o=this.hooks)||null==(n=o.onSnapshotChange)?void 0:n.call(o,e,r)),await (null==t||null==(i=t.onSnapshotChange)?void 0:i.call(t,e,r))},...(null==t?void 0:t.onTaskEvent)?{onTaskEvent:t.onTaskEvent}:{}});return null==(o=this.hooks)||null==(n=o.onExecutionCreated)||n.call(o,i.getRunner()),i}getActionSpace(){return this.providedActionSpace}async emitProgress(e,t,r){var n,o;await (null==(o=this.hooks)||null==(n=o.onProgress)?void 0:n.call(o,e,t,r))}emitAiActProgress(e,t){return this.emitProgress("aiAct",e,t)}setPendingFeedbackMessage(e,t,r){e.pendingFeedbackMessage=r?`Time: ${t}, ${r}`:`Current time: ${t}`}collectPlanningFeedback(e){let t=e.flatMap(e=>{let{planningFeedback:t,planningFeedbackMaxLength:r}=e;return t?[function(e,t){if("unlimited"===t)return e;let r=t&&Number.isFinite(t)&&t>0?Math.floor(t):500;return e.length<=r?e:`${e.slice(0,r)}
|
|
857
857
|
...[truncated, ${e.length-r} more characters]`}(t,r)]:[]});return t.length>0?t.join("\n\n"):void 0}async getTimeString(e){if(this.useDeviceTime)if(this.interface.getDeviceLocalTimeString)try{return await this.interface.getDeviceLocalTimeString(e)}catch(e){AB(`Failed to get device time string, falling back to runtime time: ${e}`)}else AB("useDeviceTime is enabled but getDeviceLocalTimeString is not implemented, falling back to runtime time.");return ne(e)}async convertPlanToExecutable(e,t,r,n){return this.taskBuilder.build(e,t,r,n)}async loadYamlFlowAsPlanning(e,t,r){var n;let o=this.createExecutionSession(AT((null==r?void 0:r.type)||"Act",(null==r?void 0:r.prompt)||r2(e)),{referenceImages:null==(n=r3(e))?void 0:n.images}),i={type:"Planning",subType:"LoadYaml",param:{userInstruction:e,...(null==r?void 0:r.prompt)?{userInstructionDisplay:r.prompt}:{}},executor:async e=>{let{uiContext:r}=e;return(0,eH.vA)(r,"uiContext is required for Planning task"),{output:{actions:[],shouldContinuePlanning:!1,log:"",yamlString:t},cache:{hit:!0},hitBy:{from:"Cache",context:{yamlString:t}}}}},a=o.getRunner();return await o.appendAndRun(i),{runner:a}}async sleep(e,t){var r;t??(t=null==(r=this.getAbortSignal)?void 0:r.call(this));let n=this.createExecutionSession("Sleep",{abortSignal:t}),o=iR(t);await n.appendAndRun({type:"Action Space",subType:o.name,param:{timeMs:e},executor:async t=>{let{task:r}=t;(0,eH.vA)(Number.isFinite(e)&&e>0,`ms for sleep must be a finite number greater than 0, but got ${e}`),cN(r.timing,"callActionStart");try{await o.call({timeMs:e})}finally{cN(r.timing,"callActionEnd")}}})}async runPlans(e,t,r,n,o){var i;let a=(null==o?void 0:o.abortSignal)??(null==(i=this.getAbortSignal)?void 0:i.call(this)),s=this.createExecutionSession(e,{...o,abortSignal:a}),l=s.getRunner(),c={...r,executionId:l.id},A={...n,executionId:l.id},{tasks:u}=await this.convertPlanToExecutable(t,c,A,{abortSignal:a}),{output:d}=await s.appendAndRun(u)??{};return{output:d,runner:l}}async action(e,t,r,n,o,i){let a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"balance",s=arguments.length>7?arguments[7]:void 0,l=arguments.length>8?arguments[8]:void 0,c=arguments.length>9?arguments[9]:void 0,A=arguments.length>10?arguments[10]:void 0;return null==c||c.throwIfAborted(),Ac(this.interface,s,async()=>this.runAction(e,t,r,n,o,i,a,l,c,A))}invalidateFailedCacheHitLocates(e,t){if(this.taskCache)for(let o=t;o<e.tasks.length;o++){var r,n;let t=e.tasks[o];if("Planning"===t.type&&"Locate"===t.subType&&(null==(r=t.hitBy)?void 0:r.from)==="Cache"){let e=null==(n=t.param)?void 0:n.prompt;e&&this.taskCache.markLocateCacheStale(e)}}}async runAction(e,t,r,n,o,i){var a,s;let l,c,A,u,d=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"balance",p=arguments.length>7?arguments[7]:void 0,h=arguments.length>8?arguments[8]:void 0,m=arguments.length>9?arguments[9]:void 0;h??(h=null==(a=this.getAbortSignal)?void 0:a.call(this));let f=new oy,g=(null==m?void 0:m.prompt)||r2(e),y=this.createExecutionSession(AT((null==m?void 0:m.type)||"Act",g),{abortSignal:h,referenceImages:null==(s=r3(e))?void 0:s.images,onTaskEvent:async e=>{await (null==c?void 0:c(e))}}),v=y.getRunner();t={...t,executionId:v.id},r={...r,executionId:v.id};let b="default"===t.config.slot&&"default"===r.config.slot,w="deepThink"!==d&&b,E="deepThink"===d?2:1;Az("setting includeLocateInPlanning to",w,{effort:d,noIndividualLocateModel:b});let x=0,k=[],S=i??this.replanningCycleLimit;if(void 0===S)throw Error("replanningCycleLimit is required for TaskExecutor.action");await this.emitAiActProgress("start",{prompt:g,planLimit:S});let I=async(e,t)=>(await this.emitAiActProgress("failed",{...t?{planIndex:t}:{},planLimit:S,error:e}),y.appendErrorPlan(e)),C=0,O=0;if(null==h?void 0:h.aborted)return I(`Task aborted: ${h.reason||"abort signal received"}`);let R=()=>(l??(l=op(e)),l);for(;;){let i,a=x+1;if(O=a,null==h?void 0:h.aborted)return I(`Task aborted: ${h.reason||"abort signal received"}`,a);let s=f.subGoalsToText()||void 0,l=f.memoriesToText()||void 0,g=await y.appendAndRun({type:"Planning",subType:"Plan",param:{userInstruction:e,...(null==m?void 0:m.prompt)?{userInstructionDisplay:m.prompt}:{},replanningCycleLimit:S,aiActContext:n,imagesIncludeCount:E,effort:d,...s?{subGoalStatus:s}:{},...l?{memoriesStatus:l}:{}},executor:async e=>{let o,{uiContext:i}=e;(0,eH.vA)(i,"uiContext is required for Planning task");let s=e.task.timing;await this.emitAiActProgress("plan_thinking",{planIndex:a,planLimit:S,screenshot:i.screenshot});let l=this.getActionSpace();Az("actionSpace for this interface is:",l.map(e=>e.name).join(", ")),(0,eH.vA)(Array.isArray(l),"actionSpace must be an array"),0===l.length&&console.warn(`ActionSpace for ${this.interface.interfaceType} is empty. This may lead to unexpected behavior.`);let c="custom"===t.adapter.planning.kind?t.adapter.planning.planFn:iQ;try{let e=await R();cN(s,"callAiStart"),o=await c(e,{context:i,actionContext:aC(n),actionSpace:l,modelRuntime:t,locateModelRuntime:r,getDefaultModelRuntime:this.getDefaultModelRuntime,conversationHistory:f,includeLocateInPlanning:w,imagesIncludeCount:E,effort:d,abortSignal:h})}catch(t){throw t instanceof ty&&(e.task.usage=AE(t.usage,"planning"),e.task.log={...e.task.log||{},rawResponse:t.rawResponse,rawAssistantOutput:t.rawAssistantOutput}),await this.emitAiActProgress("plan_failed",{planIndex:a,planLimit:S,error:Af(t)}),t}finally{cN(s,"callAiEnd")}Az("planResult",JSON.stringify(o,null,2));let{actions:u,thought:p,log:m,memory:g,error:y,usage:v,rawResponse:b,rawAssistantOutput:x,reasoning_content:k,finalizeSuccess:I,finalizeMessage:C,updateSubGoals:O,markFinishedIndexes:j}=o;if(A=C,e.task.log={...e.task.log||{},rawResponse:b,rawAssistantOutput:x},e.task.usage=AE(v,"planning"),e.task.reasoning_content=k,e.task.output={actions:u||[],log:m,thought:p,memory:g,yamlFlow:o.yamlFlow,output:C,shouldContinuePlanning:o.shouldContinuePlanning,updateSubGoals:O,markFinishedIndexes:j},e.uiContext=i,(m||p)&&await this.emitAiActProgress("plan_planned",{planIndex:a,planLimit:S,...m?{log:m}:{},...p?{thought:p}:{}}),y){let e=`Failed to continue: ${y}
|
|
@@ -871,6 +871,6 @@ ${t}`)}return{result:r.result}}async evaluateJavaScript(e){return(0,eH.vA)(this.
|
|
|
871
871
|
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.
|
|
872
872
|
|
|
873
873
|
Please enter your instructions in the input box below to start experiencing.
|
|
874
|
-
`,loading:!1,result:void 0,replayScriptsInfo:null,replayCounter:0,loadingProgressText:"",verticalMode:!1}};uH();let uY={result:void 0,dump:null,reportHTML:null,report:null,error:null},uG="data:image/png;base64,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",uV="data:image/png;base64,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";function u$(e){return"object"==typeof e&&null!==e}let u_=e=>({left:e.center[0]-4,top:e.center[1]-4,width:8,height:8});function u0(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}let u1=(e,t,r)=>{let n,o=(n=e.width/e.height>=t/r?e.width:e.height/r*t)>400?.1:n>50?.2:.3,i=Math.min(t,n+t*o*2),a=Math.min(e.left-t*o,t-i);a=Math.max(a,0);let s=Math.min(e.top-r*o,r-r/t*i);return{left:Math.round(a),top:Math.round(s=Math.max(s,0)),width:Math.round(i)}},u2=(e,t)=>u1({left:0,top:0,width:e,height:t},e,t),u3=(e,t,r)=>{var n;let o=null==e||null==(n=e.uiContext)?void 0:n.shotSize;return{width:(null==o?void 0:o.width)||t,height:(null==o?void 0:o.height)||r}},u5=e=>e.map((e,t)=>({execution:e,index:t})).sort((e,t)=>(Number.isFinite(e.execution.logTime)?e.execution.logTime:1/0)-(Number.isFinite(t.execution.logTime)?t.execution.logTime:1/0)||e.index-t.index).map(e=>{let{execution:t}=e;return t}),u4=e=>{var t,r;let n,o,i,a,s=e?Array.isArray(e.executions)?e:{sdkVersion:"",groupName:"Execution",modelBriefs:[],executions:[e]}:null;if(!s)return console.warn("[allScriptsFromDump] dump is empty"),{scripts:[],modelBriefs:[]};let l=(i=s.sdkVersion,a=[],(u5((null==(r=s.executions)?void 0:r.filter(Boolean))||[]).forEach(e=>{e.tasks.forEach(e=>{var t,r;let i=null==(t=e.uiContext)?void 0:t.shotSize;if(i){let e=i.width,t=i.height;n||(n=e,o=t)}if(e.usage){let{model_name:t,model_description:n,intent:o}=e.usage;r={intent:o,name:t,modelDescription:n},a.some(e=>e.intent===r.intent&&e.name===r.name&&e.modelDescription===r.modelDescription)||a.push(r)}})}),n&&o)?{width:n,height:o,sdkVersion:i,modelBriefs:a,deviceType:s.deviceType}:(console.warn("width or height is missing in dump file"),null));if(!l)return{scripts:[],sdkVersion:s.sdkVersion,modelBriefs:[]};let{width:c,height:A}=l,u=[],d=u5((null==(t=s.executions)?void 0:t.filter(Boolean))||[]);for(let e=0;e<d.length;e++){let t=u7(d[e],-1,c,A,e);t&&u.push(...t)}return{scripts:u.filter((e,t)=>t===u.length-1||"Done"!==e.title),width:c,height:A,sdkVersion:l.sdkVersion,modelBriefs:l.modelBriefs,deviceType:l.deviceType}},u7=function(e,t,r,n){let o,i;if(arguments.length>4&&void 0!==arguments[4]&&arguments[4],!e||!e.tasks.length||0===r||0===n)return null;let a=[];if(-1===t)a=e.tasks;else{let r=e.tasks.findIndex(e=>e===t);if(-1===r)return console.error("task not found, cannot generate animation scripts"),null;if(r===e.tasks.length-1)return null;for(let t=r;t<e.tasks.length&&(!(t>r)||"Planning"!==e.tasks[t].type||"Plan"!==e.tasks[t].subType);t++)a.push(e.tasks[t])}if(0===a.length)return null;let s=(e,t)=>{if(!t)return e;let r=u0({},e),n=null;return Object.defineProperty(r,"img",{get:()=>(null===n&&(n=t.base64),n),enumerable:!0}),r},l=[],c=!1,A="";a.forEach((e,t)=>{var u,d,p,h,m,f,g,y,v,b;let w=null==(b=a[t])?void 0:b.taskId;if(i=w,0===t&&(A=AN(e)),"Planning"===e.type){let t=[];if("Plan"===e.subType){let r=(null==(d=e.output)?void 0:d.actions)||[];if(r.length>0){let e=r[0],n=["locate","start","end"];if(e.param)for(let r in n.forEach(r=>{e.param[r]&&"object"==typeof e.param[r]&&"center"in(e.param[r]||{})&&t.push(e.param[r])}),e.param)!n.includes(r)&&"object"==typeof e.param[r]&&"center"in(e.param[r]||{})&&t.push(e.param[r])}}else"Locate"===e.subType&&(null==(u=e.output)?void 0:u.element)&&(t=[e.output.element]);let i=Aj(e),a=AN(e),A=e.uiContext,h=null==A?void 0:A.screenshot;if(A&&h){let{width:u,height:d}=u3(e,r,n);l.push(s({type:"img",duration:300,title:i,subTitle:a,imageWidth:u,imageHeight:d,taskId:w},h)),t.forEach(t=>{var r,n,p,m,f;let g;r=u0({},u1(u_(t),u,d)),n=n={pointerLeft:t.center[0],pointerTop:t.center[1]},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(n)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(n,e))}),o=r,l.push(s({type:"insight",context:A,camera:o,highlightElement:t,searchArea:(null==e?void 0:e.searchArea)??(null==(m=u$(g=null==e?void 0:e.log)&&u$(f=g.dump)&&"string"==typeof f.type&&u$(f.taskInfo)?g.dump:null)||null==(p=m.taskInfo)?void 0:p.searchArea),duration:400,insightCameraDuration:800,title:i,subTitle:t.description||a,imageWidth:u,imageHeight:d,taskId:w},h)),c=!0})}if(e.recorder&&e.recorder.length>0){let t=null==(p=e.recorder[0])?void 0:p.screenshot,{width:o,height:i}=u3(e,r,n);l.push(s({type:"img",duration:900,title:Aj(e),subTitle:AN(e),imageWidth:o,imageHeight:i,taskId:w},t))}}else if("Action Space"===e.type){let t=Aj(e),o=AN(e);l.push({type:"spinning-pointer",duration:300,title:t,subTitle:o,taskId:w}),c&&(l.push({type:"clear-insight",duration:200,title:t,subTitle:o,taskId:w}),c=!1),l.push({type:"pointer",img:uG,duration:0,title:t,subTitle:o,taskId:w});let i=null==(m=e.recorder)||null==(h=m[0])?void 0:h.screenshot,{width:a,height:A}=u3(e,r,n);l.push(s({type:"img",duration:500,camera:"Sleep"===e.subType?u2(a,A):void 0,title:t,subTitle:o,imageWidth:a,imageHeight:A,taskId:w},i))}else{let t=Aj(e),o=AN(e),i=null==(g=e.recorder)||null==(f=g[e.recorder.length-1])?void 0:f.screenshot;if(i){let{width:a,height:c}=u3(e,r,n);l.push(s({type:"img",duration:900,camera:u2(a,c),title:t,subTitle:o,imageWidth:a,imageHeight:c,taskId:w},i))}}if("finished"!==e.status){let t=Aj(e),o=e.errorMessage||"unknown error",i=o.indexOf("NOT_IMPLEMENTED_AS_DESIGNED")>0?"Further actions cannot be performed in the current environment":o,a=null==(v=e.recorder)||null==(y=v[e.recorder.length-1])?void 0:y.screenshot,{width:c,height:A}=u3(e,r,n);l.push(s({type:"img",camera:u2(c,A),duration:900,title:t,subTitle:i,imageWidth:c,imageHeight:A,taskId:w},a))}}),c&&(l.push({type:"clear-insight",duration:200,title:"",subTitle:"",taskId:i}),c=!1);let u=a.length>0?u3(a[a.length-1],r,n):{width:r,height:n};return l.push({title:"End",subTitle:A,type:"img",duration:200,camera:u2(u.width,u.height),taskId:void 0}),l};function u8(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function u6(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){u8(i,n,o,a,s,"next",e)}function s(e){u8(i,n,o,a,s,"throw",e)}a(void 0)})}}function u9(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function de(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function dt(e){if(!e)return"Unknown error";if("string"==typeof e)return e;if("object"==typeof e){var t,r;if(null==(t=e.dump)?void 0:t.error)return dt(e.dump.error);if(e.message)return String(e.message);if(null==(r=e.cause)?void 0:r.message)return String(e.cause.message)}try{let t=JSON.stringify(e);if(t&&"{}"!==t)return t}catch(e){}let n=String(e);return"[object Object]"===n?"Unknown error (an empty error object was received)":n}function dr(e,t){return e?Array.isArray(null==e?void 0:e.executions)?u4(e):e.tasks&&Array.isArray(e.tasks)?u4({sdkVersion:"",groupName:"Playground Execution",modelBriefs:[],executions:[e],deviceType:t}):null:null}function dn(e,t){return(null==e?void 0:e.dump)?dr(e.dump,t):(null==e?void 0:e.reportHTML)?function(e,t){try{var r;let n=(r=function(e){let t={};for(let r of e.matchAll(/<script type="midscene-image" data-id="([^"]+)">([\s\S]*?)<\/script>/g)){let[,e,n]=r;t[e]=nd(n)}return t}(e),e=>{let t=r[e.id];if(!t)throw Error(`Missing inline report image "${e.id}"`);return t}),o=aT(JSON.parse(function(e){let t=nf(),r=e.lastIndexOf('<script type="midscene_web_dump"');if(-1===r)throw Error("No dump script found in HTML");let n=e.indexOf(">",r);if(-1===n)throw Error("No dump script found in HTML");let o=e.indexOf(t,n);if(-1===o)throw Error("No dump script found in HTML");return nd(e.substring(n+1,o))}(e)),n);return dr(o,t)}catch(e){return console.error("Failed to restore replay from playground report:",e),null}}(e.reportHTML,t):null}function di(e){return u6(function*(){var t,r,n;if(!e.dump&&(null==(t=e.report)?void 0:t.replayUrl))try{let t=yield fetch(e.report.replayUrl);if(!t.ok)throw Error(`Report replay request failed (${t.status})`);r=yield t.json(),n=e.report.url,e.dump=aT(r,e=>new URL("file"===e.storage&&e.path?e.path:`./screenshots/${encodeURIComponent(e.id)}.${nD(e)}`,n).toString())}catch(e){console.error("Failed to load playground report replay:",e)}})()}function da(e){return"aiAct"===e||"runMarkdown"===e}function ds(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class dl{initDB(){return new Promise((e,t)=>{let r=indexedDB.open(this.dbName,this.version);r.onerror=()=>t(r.error),r.onsuccess=()=>e(r.result),r.onupgradeneeded=e=>{let t=e.target.result;this.storeConfigs.forEach(e=>{let{name:r,keyPath:n}=e;t.objectStoreNames.contains(r)||t.createObjectStore(r,{keyPath:n}).createIndex("timestamp","timestamp",{unique:!1})})}})}async withTransaction(e,t,r){let n=(await this.dbPromise).transaction(e,t);return r(Array.isArray(e)?e.map(e=>n.objectStore(e)):n.objectStore(e))}promisifyRequest(e){return new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error)})}async put(e,t){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.put(t))})}async get(e,t){return this.withTransaction(e,"readonly",async e=>this.promisifyRequest(e.get(t)))}async getAll(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return this.withTransaction(e,"readonly",async e=>{let r=t?await this.promisifyRequest(e.index("timestamp").getAll()):await this.promisifyRequest(e.getAll());return t?r.sort((e,t)=>e.timestamp-t.timestamp):r})}async clear(e){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.clear())})}async delete(e,t){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.delete(t))})}async count(e){return this.withTransaction(e,"readonly",async e=>this.promisifyRequest(e.count()))}getDBPromise(){return this.dbPromise}constructor(e,t,r){ds(this,"dbPromise",void 0),ds(this,"dbName",void 0),ds(this,"version",void 0),ds(this,"storeConfigs",void 0),this.dbName=e,this.version=t,this.storeConfigs=r,this.dbPromise=this.initDB()}}let dc=async(e,t,r,n)=>{try{return await e()}catch(e){return console.error(t,e),e instanceof Error&&"QuotaExceededError"===e.name&&n&&(console.log("Storage quota exceeded, running cleanup..."),await n()),r}},dA=(e,t,r)=>async()=>{try{let n=await e.getAll(t);if(n.length>r){let o=n.sort((e,t)=>e.timestamp-t.timestamp).slice(0,n.length-r);await Promise.all(o.map(r=>e.delete(t,r.id)))}}catch(e){console.error(`Failed to cleanup ${t}:`,e)}};function du(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function dd(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){du(i,n,o,a,s,"next",e)}function s(e){du(i,n,o,a,s,"throw",e)}a(void 0)})}}function dp(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function dh(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){dp(e,t,r[t])})}return e}function dm(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}let df="playground_messages",dg="playground_results";class dy{saveMessages(e){return dd(function*(){yield dc(()=>dd(function*(){yield this.dbManager.clear(df);let t=e.slice(-100);yield Promise.all(t.map((e,t)=>{let r=dm(dh({},e),{result:"result"===e.type?void 0:e.result}),n={id:e.id||`msg-${t}`,data:r,timestamp:e.timestamp?e.timestamp.getTime():Date.now()+t};return this.dbManager.put(df,n)}))}).call(this),"Failed to save messages to IndexedDB",void 0,this.messagesCleanup)}).call(this)}loadMessages(){return dd(function*(){return(yield dc(()=>dd(function*(){let e=yield this.dbManager.getAll(df,!0);return 0===e.length?[]:Promise.all(e.map(e=>dd(function*(){let t=e.data,r=dm(dh({},t),{timestamp:new Date(t.timestamp)});if("result"===t.type&&t.id){let e=yield this.loadResult(t.id);e&&(r.result=e.result,r.replayScriptsInfo=e.replayScriptsInfo,r.replayCounter=e.replayCounter,r.verticalMode=e.verticalMode)}return r}).call(this)))}).call(this),"Failed to load messages from IndexedDB",[],this.messagesCleanup))||[]}).call(this)}clearMessages(){return dd(function*(){yield dc(()=>dd(function*(){yield Promise.all([this.dbManager.clear(df),this.dbManager.clear(dg)])}).call(this),"Failed to clear messages from IndexedDB")}).call(this)}saveResult(e,t){return dd(function*(){yield dc(()=>dd(function*(){let r=this.compressResultForStorage(t),n={id:e,data:r,timestamp:Date.now(),size:JSON.stringify(r).length};yield this.dbManager.put(dg,n)}).call(this),"Failed to save result to IndexedDB",void 0,this.resultsCleanup)}).call(this)}loadResult(e){return dd(function*(){return(yield dc(()=>dd(function*(){let t=yield this.dbManager.get(dg,e);return(null==t?void 0:t.data)||null}).call(this),"Failed to load result from IndexedDB",null))||null}).call(this)}compressResultForStorage(e){let t=e.result,r=null==t?void 0:t.dump;return t&&r?Array.isArray(null==r?void 0:r.executions)?dm(dh({},e),{result:dm(dh({},t),{dump:dm(dh({},r),{executions:r.executions.map(e=>dm(dh({},e),{tasks:this.compressExecutionTasks(e.tasks)}))})})}):r.tasks?dm(dh({},e),{result:dm(dh({},t),{dump:dm(dh({},r),{tasks:this.compressExecutionTasks(r.tasks)})})}):e:e}compressExecutionTasks(e){return e.map(e=>{var t;return dm(dh({},e),{uiContext:e.uiContext?dm(dh({},e.uiContext),{screenshot:e.uiContext.screenshot}):e.uiContext,recorder:null==(t=e.recorder)?void 0:t.map(e=>dm(dh({},e),{screenshot:e.screenshot}))})})}compressScreenshotIfNeeded(e){if(!e)return e;if(e.length>1048576){let t=Math.round(e.length/1024);return`[COMPRESSED: ${t}KB screenshot removed for storage]`}return e}getStorageStats(){return dd(function*(){return(yield dc(()=>dd(function*(){let[e,t]=yield Promise.all([this.dbManager.count(df),this.dbManager.count(dg)]);return{messageCount:e,resultCount:t}}).call(this),"Failed to get storage statistics",{messageCount:0,resultCount:0}))||{messageCount:0,resultCount:0}}).call(this)}cleanup(){return dd(function*(){yield Promise.all([this.messagesCleanup(),this.resultsCleanup()])}).call(this)}constructor(e="playground"){dp(this,"dbManager",void 0),dp(this,"namespace",void 0),dp(this,"messagesCleanup",void 0),dp(this,"resultsCleanup",void 0),this.namespace=e,this.dbManager=new dl(`midscene_playground_${e}`,1,[{name:df,keyPath:"id"},{name:dg,keyPath:"id"}]),this.messagesCleanup=dA(this.dbManager,df,100),this.resultsCleanup=dA(this.dbManager,dg,50)}}function dv(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function db(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){dv(i,n,o,a,s,"next",e)}function s(e){dv(i,n,o,a,s,"throw",e)}a(void 0)})}}function dw(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function dE(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){dw(e,t,r[t])})}return e}function dx(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}class dk{checkStorageSpace(){try{let e="storage-test",t="x".repeat(102400);return localStorage.setItem(e,t),localStorage.removeItem(e),!0}catch(e){return!1}}saveMessages(e){return db(function*(){try{this.checkStorageSpace()||(console.warn("Low storage space detected, clearing old data..."),yield this.handleQuotaExceeded());let t=e.slice(-this.maxStorageItems).map(e=>dx(dE({},e),{result:"result"===e.type?void 0:e.result})),r=JSON.stringify(t);localStorage.setItem(this.messagesKey,r)}catch(t){if(t instanceof DOMException&&"QuotaExceededError"===t.name){console.warn("LocalStorage quota exceeded, attempting to clear old data and retry..."),yield this.handleQuotaExceeded();try{let t=e.slice(-10).map(e=>dx(dE({},e),{result:"result"===e.type?void 0:e.result})),r=JSON.stringify(t);localStorage.setItem(this.messagesKey,r),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:",t)}}).call(this)}loadMessages(){return db(function*(){try{let e=localStorage.getItem(this.messagesKey);if(!e)return[];let t=JSON.parse(e);return yield Promise.all(t.map(e=>db(function*(){if("result"===e.type&&e.id){let t=`${this.resultsKey}-${e.id}`,r=localStorage.getItem(t);if(r)try{let t=JSON.parse(r);return dE({},e,t)}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 db(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,t){return db(function*(){try{let r=`${this.resultsKey}-${e}`;localStorage.setItem(r,JSON.stringify(t))}catch(r){if(r instanceof DOMException&&"QuotaExceededError"===r.name){console.warn("LocalStorage quota exceeded when saving result, clearing old results..."),yield this.handleQuotaExceeded();try{let r=`${this.resultsKey}-${e}`;localStorage.setItem(r,JSON.stringify(t))}catch(e){console.error("Failed to save result even after clearing storage:",e)}}else console.error("Failed to save result to localStorage:",r)}}).call(this)}handleQuotaExceeded(){return db(function*(){try{let e=Object.keys(localStorage),t=e.filter(e=>e.startsWith(this.resultsKey)),r=t.slice(0,Math.max(1,Math.floor(t.length/2)));r.forEach(e=>{localStorage.removeItem(e)}),console.info(`Cleared ${r.length} old result entries to free up storage space`);let n=e.filter(e=>e.includes("playground")||e.includes("agent")||e.startsWith("midscene"));if(n.length>10){let e=n.slice(0,Math.floor(n.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"){dw(this,"messagesKey",void 0),dw(this,"resultsKey",void 0),dw(this,"maxStorageItems",50),this.messagesKey=`${e}-messages`,this.resultsKey=`${e}-results`}}class dS{saveMessages(e){return db(function*(){this.messages=[...e]}).call(this)}loadMessages(){return db(function*(){return[...this.messages]}).call(this)}clearMessages(){return db(function*(){this.messages=[],this.results.clear()}).call(this)}saveResult(e,t){return db(function*(){this.results.set(e,t)}).call(this)}constructor(){dw(this,"messages",[]),dw(this,"results",new Map)}}class dI{saveMessages(e){return db(function*(){})()}loadMessages(){return db(function*(){return[]})()}clearMessages(){return db(function*(){})()}saveResult(e,t){return db(function*(){})()}}function dC(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"indexeddb",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"playground";switch(e){case"indexeddb":if("undefined"!=typeof indexedDB)return new dy(t);return console.warn("IndexedDB not available, falling back to localStorage"),dC("localStorage",t);case"localStorage":if("undefined"!=typeof localStorage)return new dk(t);return console.warn("localStorage not available, falling back to memory storage"),dC("memory",t);case"memory":return new dS;case"none":return new dI;default:throw Error(`Unknown storage type: ${e}`)}}function dO(){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 dR(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function dj(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){dR(i,n,o,a,s,"next",e)}function s(e){dR(i,n,o,a,s,"throw",e)}a(void 0)})}}function dP(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function dM(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}let dT=e=>{var t;let r=e.highlightElements||[],n=e.highlightRect,o=null==(t=e.uiContext)?void 0:t.shotSize;if(!o)return(0,a.jsx)("div",{className:"blackboard",children:(0,a.jsx)("div",{className:"blackboard-main-content",style:{padding:"20px"},children:"No UI context available"})});let i=e.uiContext,l=o.width,c=o.height,A=s.useMemo(()=>(function(e){if(!(null==e?void 0:e.length))return[];let t=new Map;return e.forEach((e,r)=>{var n;if(!(null==e?void 0:e.center))return;let o="content"in e&&e.content?e.content:"description"in e&&e.description?e.description:void 0,i=["id"in e?e.id:"",o||"",(n=e.center,`${n[0]}:${n[1]}`)].join("|");t.has(i)||t.set(i,{key:"id"in e&&e.id||`${i||"highlight"}-${r}`,label:o,center:e.center})}),Array.from(t.values())})(r),[r]),u=s.useMemo(()=>{var e;return(null==i||null==(e=i.screenshot)?void 0:e.base64)||""},[i]),d=A.map(e=>u_(e)),p=null;return 1===d.length?p=(0,a.jsx)("div",{className:"bottom-tip",children:(0,a.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(d[0])]})}):d.length>1&&(p=(0,a.jsx)("div",{className:"bottom-tip",children:(0,a.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(d)]})})),(0,a.jsxs)("div",{className:"blackboard",children:[(0,a.jsxs)("div",{className:"blackboard-main-content",style:{width:"fit-content",maxWidth:"100%",position:"relative"},children:[u&&(0,a.jsx)("img",{src:u,alt:"screenshot",className:"blackboard-screenshot",draggable:!1}),(0,a.jsxs)("div",{className:"blackboard-overlay",style:{aspectRatio:`${l}/${c}`,"--ui-scale":Math.max(1,Math.sqrt(l/1920))},children:[n&&(0,a.jsx)("div",{className:"blackboard-rect blackboard-rect-search",style:{left:`${n.left/l*100}%`,top:`${n.top/c*100}%`,width:`${n.width/l*100}%`,height:`${n.height/c*100}%`},children:(0,a.jsx)("span",{className:"blackboard-rect-label",children:"Search Area"})}),A.map(e=>{let t=u_(e);return(0,a.jsx)("div",{className:"blackboard-rect blackboard-rect-highlight",style:{left:`${t.left/l*100}%`,top:`${t.top/c*100}%`,width:`${t.width/l*100}%`,height:`${t.height/c*100}%`}},`${e.key}-rect`)})]})]}),(0,a.jsx)("div",{className:"bottom-tip",style:{display:e.hideController?"none":"block"},children:p})]})};var dN=r(49783),dD=r(37294),dz=r(14985),dB=r(31090),dF=r(92946),dL=r(60090),dU=r(53776);let dK=e=>{let{text:t,disabled:r=!1,speed:n=5,className:o="",colorTheme:i="blue"}=e,s={"--animation-duration":`${n}s`},l=`theme-${i}`;return(0,a.jsx)("div",{className:`shiny-text ${l} ${r?"disabled":""} ${o}`,style:s,children:t})},dZ=(0,a.jsxs)("span",{children:["Don't worry, just one more step to launch the playground server.",(0,a.jsx)("br",{}),"Please run one of the commands under the midscene project directory:",(0,a.jsx)("br",{}),"a. ",(0,a.jsx)("strong",{children:"npx midscene-playground"}),(0,a.jsx)("br",{}),"b. ",(0,a.jsx)("strong",{children:"npx --yes @midscene/web"})]}),dJ=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:dZ;return(0,a.jsx)("div",{className:"server-tip",children:(0,a.jsx)(W.A,{message:"Playground Server Not Ready",description:e,type:"warning"})})},dQ=(0,a.jsx)("div",{className:"result-empty-tip",style:{textAlign:"center"},children:(0,a.jsx)(dK,{disabled:!0,text:"The result will be shown here"})});var dq=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+/tRp0ZyExEREREREREREROTvxTxx2pQZiIiIiDwst2188NFH/KeEjB9P+2eeZe2mTSwL/5i6jzzCyEGDWfPFF+Tl5eFjtbJt3Xqijh1n3LQQfjl1mlFDBuPhUYyo48dw+SkqCpvNxphhwynu7c28xYtY8emnXI2NxeFwkJiUxA97dlM5OJhTZ88yefYsvtq2jd9u3MDhdFK+bFm2rVvPvp9+Ysqc2Zy9cIHZb79NTm4ux0+dxOV8dDRHj59gzpQpVK1ciZWr17B4+XKOn/yF3Fu3mDd9BhcvXWJW2HzemTaN3xLimTB9Ou+ETOOb77/nZnIyC+eEEhRYgZ4DB7Fxy2Z6dnsFu93O8VMncWnbpg3jhr/JhUvRTJ/3Drdv5zF/xgxWro4g99YtihYpwra160jNSGf025M5ceo0E0eNIi09ndPnzuEyqG9fBvTuw8yw+Sxetpzy5coya/LbrN20kVu3b3Mv3psTim+pUvQeMpjdBw7Qv1cvxk+bxuZvv8HhdOJWq3p1nnj8ccJXR3CnIz8fY8ePO5k4ahRHjx8nNi6Ogg4dPcrOvXt4tUsXXun3Buu/+pLvdu0iPSMDl6JFirBt7TpSM9IZ/fZkTpw6zcRRo0hLT+f0uXN4eXnx5sCB1KhajamhoXy1bSs9OnemWuUq7PjxR+5Fgzp16dD2OcJXr8btuaefplJQRTZ/+y0uL7Zrz8A+fXh14ABWr1/HK506EVi+AvsP/YSLj9XKtnXriTp2nHHTQvjl1GlGDRmMh0cxoo4fw+WnqChsNhtjhg2nuLc38xYvYsWnn3I1NhaHw4GIiIiI/N8yYuAgTMWKICIiIvKwGIiIiIgUct/v3k346giijh9n9OTJlPH359GGDXF5skVLnE4nEevXYRgGsdfiiNy4kVe7dMEtNi6O89HRWEuWZPj4cXzz/fccPXGcfJsNl6zsbC7FxJCRmUl6RjqXYmK4FBODzW7HpV2bZ/j1+jVmzJ/H+ehotu/8gRnz59G3Rw/cEhITOXHqFC4frVpFxLq1HD1xnJS0NNy++PorTpw6RUpqKpu2bOHshQvEXb9OxcBAXD741wr6DhvGjcQE4hMS2LJ9Oy+2b09BmVlZTJ41i1Nnz/LPjz/i6q+/8vSTT+JSv05dgipWZMhbb3H2wgV+3LeXrq/3JTbuGm59X32N8NURxFy9itliZu2mTbi0at6ce9Wgbl0+37CBuOvXORQVxU9HjlCtSmVsdjv3KvZaHGfOnyc7J4eiRYpwp9i4OK7++isuMVevcikmhl+vXcOtfp26BFWsyJC33uLshQv8uG8vXV/vS2zcNQoKmRvKoagoDh09ypIPP6RdmzaYTCYelLSMdKxWK9UqVyY1LY1egwezfGU4bk+2aInT6SRi/ToMwyD2WhyRGzfyapcuuMXGxXE+OhpryZIMHz+Ob77/nqMnjpNvsyEiIiIiIiIiIn8/FkREREQKuQOHD+GWmZXFyTOnqVW9Orv376dO7Vr4lirFZ8uWU5DdZuNOv8XH81t8PPerbu3anLt4kYLOXrhArRo1sJjN2Ox2Coo6doy7sdlsuOXn27iTbylf5k2fQeXgYDKzsihZogS5ubkUdDDqCHa7HbfLV64QWK48LnVq1+LCpWjybTbcLl+5wuUrV3ApWqQINapWpV/PXvTu3gO3zKwsfKw+3KutO3bQu0d3Tp07S2D58rRo1pTFHy7nr1Sndi0uXIom32bD7fKVK1y+coWCzkdH43bh0iXK+PtTpEgR8vLyeBD2HjxI2JIljB46jFUfNuDipWhmzg9j1/59uNSpXQvfUqX4bNlyCrLbbNzpt/h4fouPR0RERERERERE/t4siIiIiBRyjerXZ9t33+Hi4eHBIzVrsnDZMlyiL8dw8fJl2nfripuXpxeensW4k9Pp5M+4FBPDGz17UlDloGCuxMZis9v5H5zcN5PJxDshIaz8fA2fRUbiMmrIEF7r0pWCHA4nv+dSTAyVgytRkK+PD1arlSuxseTl5xMbF8ekmTPZtX8fbmXLBJCSlsq9sljMVCxfgS2RkdxMTubtWbM5dPQof6VLMTFUDq5EQb4+PlitVq7ExuLmcDj4s26mJBPgXwaz2Yzdbsfl0YYNyMzKwq1CuXJs2rqF8NURFPf2ZvTQoSwNC6NuyxY4nU6iL8dw8fJl2nfripuXpxeensW4k9PpRERERERERERExEBERESkkOv20ss83ao1fr6+TBkzhvx8Gz8fP47LnoMHqBIczBs9e1LEYqFcQABbIiN5qf3zuBmGgWEycDEMA8MwuB/f7d5FQBl/Rg4ejI/VSs1q1Xh7zBi++uYb3EwmE4ZhwsVkmDAMg/thNgwqVwrGMAxcalarxsA+fbgfx06eJC8vj2njJ1CsWDGCAgPZ8NkqnnvqKdy+3LaVaRMmEFi+PEUsFnp1e4Vv1q/HbDZzL0oUL86bAwcxZOwY2nXtygs9erD6i/UUZDKZMAwDk8mEi2EYGIZBQYZhYBgGLibDwDAMTCYTBd1ISCAxKYmXnu9AKR8fint743bs5Eny8vKYNn4CxYoVIygwkA2freK5p57iQTl89CiGYTCgd2+8vbzo1KEDrZq3oKAX27Xny4gIyvj7k5ObS9LNmzicTtz2HDxAleBg3ujZkyIWC+UCAtgSGclL7Z/HzTAMDJOBi2EYGIaBiIiIiIiIiIj8fVkQERERKeQ2b/+WFYsW4WO1cv3GDXoPGUJyaiouiUlJ9BjQn6Vh7zLn7SlkZWfz5batfBr5OS6lfHyIPvozbokXo3Gp2rgR6RkZ3ItLMTH0GTqUd2fOYurYceTk5rJ200bmL1mM256t23ikZk1cjv64C5c+Q4fwzfffcy9sdjshc+cSOmUqIePGk5qWxtyFCxk1+P9hD17g/ZAL/oF/ft9zjM1jF7NNbl2IZ81d7KEUmsY/ityKXAojI1SuiVGruSVyKffHlMsjKYSenn8qt8wT/5DLmNao7cx2NrZzdjiX/+v8X6/zeu21Px7Job7e7/eheb3a29uz23775ZJzz82hX/hC2tracssv7silU6emz7fPOSdDBg/OXbfdnuampjz0yCOZeMwxaW9vz+uxuK0tzz73XH508SV54cUXM2KVVTLruWdz4je+mXvu/116/fAHF+fj222XPi1PTk+v7T+9ax78wx8yauTIPHrPvelzzSWXptcZ552bM847L326u7tz+nnn5qgvHppzJk/OE089lQ/tMD692tvbs9t+++WSc8/NoV/4Qtra2nLLL+7IpVOn5s3ycmdnTj3j9Bx5yKE57YQT89AjD+db3zk7G2+wQfpc9sOrs9H66+fu225Pc3Nz2traMvHYY9LT05NeLXPn5jMHHZjzzzgz3zzxa1m0eHF+custufKaH6XXsKFDM/2B/06flienp9fam26ShS+8EAAAAADeeRrzO9t6AgDQT3oWtmfdLTbP2+Wx+36XQ7/y5fz23nszYpVVMqelJa9m+MorZ8HChenq6sobcf4ZZ2Z+6/yc/O1v59WMWGWVtLa2prOrK/2huakpqwxfJbNb5uTvMXzYsCx84YV0dnXllTQ3NWXI4MGZ19qapR124EE57YQTsqynn3kmY7cfl8022jg3Tp2azT+2XVrmzk0pJRP23z+77rRTxu+2W94Ow4cNy8IXXkhnV1f+Fj+6+JJ8fLvtsqyrrr02Xz7pa+lTSsmwIUMyr7U1r6apqSkjhq+S2S1z8mqGr7xyFixcmK6urgAA8M/ryfunpTFkYAAA+ktzAADeAbq7uzOnpSWvZd78+XmjVhw0KOuuvXamXv/feS1zn38+/amzqyuzW+bk7zWvtTWvpbOrK/NaW7Osy66emmt/fEOW1dXdnV6DV1opTaXkX1ZcMS1z56anpyerDB+egSsMzNtlXmtr3ogJRx+VAcstl2Ut6XgpS+vu7s681ta8lq6ursxumZPXMm/+/AAAAADA/6Q5AAD8XY6YMCFf/+oxmfbgg/n5L+7IO1lHR0c6Ojryan5z7z25/qabcvsNP05ra2tWHjYsL730Uj5/+MT8s1m0eHEAAAAA4B9NcwAAKrbVDuOzaNGi9KdLrroql199dRa3tYXX1tXVlS+f9LV85esn5f3vWztLOpZk1nPPpaenJwAAAADA3685AAAVa12wIP1tyZIl4W/T09OTJ59+KgAAAADAm6sEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVmgMAULkJ+++fvXb9dNZcY4387oEHcuoZp+epGTPSa43VVst1l1+Rjo6OTDp9SvbZfY/suP24/HX2nIzdflx63XT1D7PK8OGZet21aW5eLhMPPDAjR4zImK22zJyWlvTaafz4HHrA5zN6vfXyfx55JOdcdGF+e++96bXGaqvlusuvSEdHRyadPiX77L5Hdtx+XP46e07Gbj8ur8fHPvKRHPi5fbP3hIPT56B998u711ozX588Ob1GjhiRk77y1Wy79daZ39qam2+/LWedf36Wts2HP5wvTTgkG62/fh59/LFccOllueN//1d6rbHaarnu8ivS0dGRSadPyT6775Edtx+Xv86ek7HbjwsAAAAA8I+v6biTvzYpAAD9paMz37vkkrxdJuy/fw7ad7+cesbp+e6FF2W1d62a0044Mdfe+OMs6ehIe3t7fnXXXdlwzJhMPPCgPD59er5x5pm5/qab0vL83PS6d9q0dHZ25suHTcy/rLhipnz3nPzgyivzp5kz093dnY995CO5+Lvn5twffD+nn3duuro6c87kb+XOu+/K7JaWtLe351d33ZUNx4zJxAMPyuPTp+cbZ56Z62+6KS3Pz83rsdGY9fOJ8R/PZVdfnT4f3267vGetNfOz225Lr5OPPTZDBg/Ovocekt/cc08mn3RSHnnsscycNSu9Ntto41z9gx/kgksvyaQpU7Jg4Qv57re+lXvu/13+Mnt22tvb86u77sqGY8Zk4oEH5fHp0/ONM8/M9TfdlJbn5wYAAPj7HXHwhDRWWC4AAP2lOQAAFdv/s3vnsqunZsaf/pSm5qZce+ON2XOXXbP1llvm5ttvz8udnXlqxoz8+dlZWX/06Bx5wvFZ1sxZs/L49OkZMnhwJh7z1fxl9uwsbe899silV12VH/7Hf6TX9KefzgYfGJM9PrVLHnr44bzc2ZmnZszIn5+dlfVHj86RJxyf/rBg4QtZf/QH8p4118pDD/8hY7cfl56envTZ69O75pd33pn7Hnggyy+/fB546MH85p57stsnP5lpDz6Ylzs789SMGfnzs7Oy/ujROfKE4wMAAAAA/HNpDgBApQYst1zWXXvtfGGfz2XfvT6TPi8uWpShQ4ZmWdMe/H1ey19mz85fZs/Ostb/19G57Ze/zNIee+KJ7DDuY1nWtAd/n/5y/iUXp5RGvnf66Vlz9dVz9/335/hTJ+WZmTPTa8y/js5aa6yRqy76fpbWuqA1y5r24O8DAAAAAPzzaQ4AQKVeevnlzJw1K8efemp+dddv02fVkaMyf0FrltXTk9fU09OTV/LUMzPyobFjc8NPf5o+73n3Wpn+9Iwsq6cnb8jz8+dl1IiRaWpqSldXV3pttvFGeXHRovQZNXJkzjr//Ew+++yMGjkyF5xxZk48+ss5+Kgj02v6jKdz77T7882zzkqflYcOzcudnVlWT08AAAAAgH9CJQAAFfvJrbfk5GOPzRqrrZblmpvzuT32zM+vvz5NTU3pU0pJo9FIr1JKGo1GllZKSWmU9CqlpJSSpd1068+z8/gd8skddswKK6yQcdtskz132TU333F7+pRS0mg00quUkkajkb/F7x54IKWUHLTvvllx0KDs+olPZOstt8rSJh13XKacckoGDRyUBQsXZsELC9Pd3Z0+P/v5bdl3r89ky823SKPRyKYbbZT7fvlfWWuNNdKnlJJGo5FepZQ0Go0AAAAAAP88GvM723oCANBPeha2Z90tNs/bpZSSKaeckj132TXNTU156JFHMvnss3PvtPvTa6fx43PlBRdmaY8+9lg+uvNO6TVs6NBMf+C/s6y1N90kC194IX0OP/jgHHHwhAwbOjQtz8/Nt77znfzohhvSa6fx43PlBRdmaY8+9lg+uvNO+VscsPfeOfKQQ7PaqqvmoUcezq2/+EU23mCDfOHww9Nrnfe9L1NOPiUf3GSTNDc15fHp03PgEUdk5rOz0mffPffKcUcdmWFDhmbWc8/loisuz79fc0167TR+fK684MIs7dHHHstHd94pAADAm+PJ+6elMWRgAAD6S2N+Z1tPAAD6Sc/C9qy7xeZ5uzU3NWXI4MGZ19qa/tJoNDJqxMjMbpmTv9XMPzycFQcNyrImHH1Ubrz55vQppWTYkCGZ19qaVzNo4KCssPyAzF+wIK9m5IgRaZk7NwAAwFvryfunpTFkYAAA+ktzAADeATq7ujKvtTX9qaenJ7Nb5uSN2PgjW6eR/9+ixYuztO7u7sxrbc1raWtvS1t7W15Ly9y5AQAAAADq0xwAAN52rQsWBAAAAADg71UCAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAD/z3rrrJPlmpvzdhgzenQ+stVW2eADHwgAAAAAwBtVAgBAttpibO6+/Y4cfvCEvB12Hr9DvjThkPzsR9fk4P32CwAAAADAG9EcAADy8B8fzfevuCI333F73g5TvntOep156mlZb533BwAAAADgjWgOAAB5cdGinDT5m3m79aQnjTQCAAAAAPBGNAcAoFLbb7ttjj3iS9nps59JR0dH+hz9xcOy9nvfm8OPPSa9rr/iiqz+rtXy9DPPZMLRR2XJkiVZ2sgRI3LSV76abbfeOvNbW3Pz7bflrPPPT5+vHn54ep11/vnpc+FZZ+WXv/51brz55vRad+11MuWUU7LJhhvmxUWLcvX11+eM887Nm2XY0KG55drrstNn9krrggXptdlGG+e0E0/MJ/baM3322nXX7LvnXln3/e/P3ffdl7MvuCCPPPbH9FlrjTUy6fjj86EtxmZ2S0t+fPPPct4PfpA+pxx7XD6+3Xb5w6OP5Pqf3JTJXz8p6669TiYcfVRuvPnmAAAAAABvrxIAgEr9+u67s+bqq2e3nXdOn4EDB2biQQfll3femT7HfP3kTDjqyHxo7NhssemmWdZXJk7MoEEDs+0nd87EY47J5/feJx/Zaqv0GTViZEaNGJmlrbX6Ghk6eEh6NRqNXHvZZXn0icez+ce2yxHHHZuJBx2U9dZZJ2+WpqamrLfOOmlqakqfQYMGZp33vjd9Vlt11Zxx6mn59nfPyb+N+1hm/OlPmXLKKekzdMiQ3HjV1Px51rMZv/tumTRlSj7z6U/nsAMPSp/vX3lFjjn55OzxqV1y/NFH5aLLr8gOu++eO3/72wAAAAAAb7/mAABU6qWXXsplV0/NhP33z49uuCG99txll7y4aFFuvuP29Jn57Kz0WtzWlgHLLZdlLVj4QtYf/YG8Z8218tDDf8jY7celp6cnr1dzU1MOmHhYHnviiQwYMCAPP/po7vnd7/LJHXfMmd/7Xt4q7UuWpKurK+uus06mz5iRyd85OysPG5ZGo5Genp58dKsPpaenJ1Ovvy6llMx8dlau+fGP89nddsuFl12aXnNaWvLii4vS65KrrsoNP/1pAAAAAIB/HM0BAKjY5T/8YY469IvZcvMtcu+0+3PIAQfk4iuvTFdXV16v8y+5OKU08r3TT8+aq6+eu++/P8efOinPzJyZ1+Plzs5stvHGOW/KlKy00kppb1+SVUeOzF/nzMlbqXXBghz0pS9l/89+Nqcdf0LmzpuXS6dOzYWXXZpeY0b/a1YeNiz/fuFFWVpXZ2deybTf/z4AAAAAwD+W5gAAVGze/Pm5/qaf5JADDsgKyy+fVUeOytTrr8vfYtTIkTnr/PMz+eyzM2rkyFxwxpk58egv5+Cjjkyv5+fPz0ZjxqTP8ssvnzGjR+cnt96aXqNGjsypxx+fj3/603l8+vT0uv6KK/JmenHRorz00ktZ/V3vyvPz5qXXZhttnDQa6bPy0KF5fPqT2f+wL2a55uaM22abXHXR9/OLX/3vPDVjRqY/PSNPPv10dtxj9/QZNHBQBg5cIa+oJwAAAADAP5gSAIDKXXT5Fdlh3Lh87StfydTrrs2ixYuztFJKSinp1SglpZQ0Go30mXTccZlyyikZNHBQFixcmAUvLEx3d3f6/PLOO7P1llvmQ2PHZtjQoTnuS0fmX1ZcMX3WWn31rLD8CimlpNFo5JM77JgP/9uWWVqj0UgpJY000mg0UkpJo9HI69XR0ZHf3ndfDjnggKw8dGj+7YMfzOf23DNLW2P11XPvL/4zG44Zk5c7OzO7pSXd3d3p7u5Or1/fc3fe9+535/P77JPlmpvzrlGjcvM11+RTO/6v9Gk0GimlkV6N0kgpJQAAAADAP47G/M62ngAA9JOehe1Zd4vN83a79tLLss3WW2ezbT6a5/761/QZNXJkHr3n3izrjPPOzRnnnZde67zvfZly8in54CabpLmpKY9Pn54DjzgiM5+dlV6NRiOnT5qUPT61S5YfMCA33nJLmppKHnjwoVx29dSUUvLdb307e+26axYtXpyH//jH3PfAAxm5yir58klfS6+Zf3g4Kw4alKW1t7dnzQ3Wz+u11RZjM+m447LxBhtkzty5mXT6lHzr6ydnvc0/mD5Hf/Gw7LvXXhk6ZEgGLLdcTj/v3Hzv4ovTZ5MNN8z5Z5yZ96y5ZhYtXpyf3HpLTvzGN9Ld3Z1ev7n15/nAeutlaft98dD8/D//MwAAwP/syfunpTFkYAAA+ktjfmdbTwAA+knPwvasu8XmqcGggYOywvIDMn/BgrySgQMHpjQaWdzWlley4qBBGTBgQFoXLMjf6rADD8ppJ5yQZT39zDMZu/24LG2V4cPz/Lx5eS3vGjUqLc8/n66urryS4SuvnAULF6arqysAAMCb58n7p6UxZGAAAPpLcwAAeF3a2tvS1t6WV9Pe3p7XsritLYvb2vJGXHb11Fz74xuyrK7u7izr+Xnz8j/565w5eS3z5s8PAAAAAPDPpzkAAPzD6+joSEdHRwAAAAAAXksJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAPSjlzs7M3illQIAAPBON3illfJyZ2cAAPpTCQBAP1ryUkc222ijAAAAvNNtttHGWfJSRwAA+lMJAEA/Gjx8aPbeffcAAAC80+29+24ZPHxoAAD6UwkAQH8a0JzNN90023546wAAALxTbfvhrbP5ppsmA5oDANCfSgAA+tmKw4fknMmTs/EGGwQAAOCdZuMNNsg5kydnxeFDAgDQ30oAAPpbc1NWHD4k1156aT6/9z4BAAB4p/j83vvk2ksvzYrDhyTNTQEA6G/NAQB4KyzXlKaVBuaIQw/JkYcckmkP/j5/fOKJdHZ2BgAAoCbNzc35wHrrZfNNNk13I2laaWDSVAIA8FZoDgDAW6WpZKVRKyfdPdlm3LbZZrtt0pOeAAAA1KSRRlIaSVNJSiMAAG+l5gAAvNVKIylN6dUIAAAAAABvlhIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAP5ve3BAAgAAgAAo+j+6H6ECFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwYYkQHKd0AqxtAAAAAElFTkSuQmCC","url":"https://www.saucedemo.com/"}');let dX=e=>{let{uiContextPreview:t,setUiContextPreview:r,showContextPreview:n}=e;return n?(0,a.jsxs)("div",{className:"form-part context-panel",children:[(0,a.jsx)("h3",{children:"UI Context"}),t?(0,a.jsx)(dT,{uiContext:t,hideController:!0}):(0,a.jsxs)("div",{children:[(e=>{switch(e){case"finished":case"passed":case"success":case"connected":return(0,a.jsx)("span",{style:{color:"#00AD4B"},children:(0,a.jsx)(dN.A,{})});case"finishedWithWarning":return(0,a.jsx)("span",{style:{color:"#f7bb05"},children:(0,a.jsx)(dD.A,{})});case"failed":case"closed":case"timedOut":case"interrupted":return(0,a.jsx)("span",{style:{color:"#FF0A0A"},children:(0,a.jsx)(dz.A,{})});case"pending":return(0,a.jsx)(dB.A,{});case"cancelled":case"skipped":return(0,a.jsx)("span",{style:{color:"#8c8c8c"},children:(0,a.jsx)(dF.A,{})});case"running":return(0,a.jsx)(dL.A,{});default:return(0,a.jsx)(dU.A,{})}})("failed")," No UI context",(0,a.jsx)(q.Ay,{type:"link",onClick:e=>{e.preventDefault(),r(dq)},children:"Load Demo"}),(0,a.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 dW=r(54291);let dH=e=>{let{className:t="",playgroundSDK:r,onVerify:n,agentOptions:o,onAgentOptionsSave:i,configModalClassName:s,configModalWidth:l,envTextareaAutoSize:c,envTextareaMinRows:A}=e,{config:u}=Z();return Object.keys(u||{}).length>=1?null:(0,a.jsxs)("div",{className:`env-config-reminder ${t}`,children:[(0,a.jsx)(dW.A,{className:"reminder-icon"}),(0,a.jsx)("span",{className:"reminder-text",children:"Please set up your environment variables before using."}),(0,a.jsx)(el,{agentOptions:o,configModalClassName:s,configModalWidth:l,envTextareaAutoSize:c,envTextareaMinRows:A,mode:"text",onAgentOptionsSave:i,onVerify:n,playgroundSDK:r,showTooltipWhenEmpty:!1})]})};var dY=r(67062),dG=r(36130),dV=r(12297),d$=r(15862),d_=r(17615),d0=r(52107),d1=r(74544),d2=r(91235),d3=r(61879),d5=r(99876),d4=r(11269);let d7=e=>{var t,r;return(0,a.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:(0,a.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(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},d8=e=>{var t,r;return(0,a.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:[(0,a.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,a.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(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};function d6(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function d9(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function pe(e,t){return{left:0,top:0,width:e,pointerLeft:Math.round(e/2),pointerTop:Math.round(t/2)}}function pt(e,t,r,n){if(!t.img)return;e.img&&t.img!==e.img&&(e.prevImg=e.img,e.imageChanged=!0);let o=t.imageWidth||r,i=t.imageHeight||n,a=e.imgW!==o||e.imgH!==i;if(e.img=t.img,e.imgW=o,e.imgH=i,a){let t=pe(o,i);e.camera=d9({},t),e.prevCamera=d9({},t),e.pointerMoved=!1}}function pr(e,t){return Math.abs(e.pointerLeft-t.pointerLeft)>1||Math.abs(e.pointerTop-t.pointerTop)>1}function pn(e,t,r,n,o){let i=Math.round(n/2),a=Math.round(o/2);return e||Math.abs(t.pointerLeft-i)>1||Math.abs(t.pointerTop-a)>1||Math.abs(r.pointerLeft-i)>1||Math.abs(r.pointerTop-a)>1}function po(e,t,r,n,o){let i=pe(r,n),a={img:"",imgW:r,imgH:n,camera:d9({},i),prevCamera:d9({},i),prevImg:null,insights:[],spinning:!1,spinningElapsedMs:0,pointerImg:uG,pointerVisible:!1,title:"",subTitle:"",taskId:void 0,frameInScript:0,scriptIndex:0,imageChanged:!1,pointerMoved:!1,rawProgress:0};for(let i=0;i<e.length;i++){var s,l;let c=e[i],A=c.startFrame+c.durationInFrames;if(0===c.durationInFrames){c.startFrame<=t&&("pointer"===c.type&&c.pointerImg&&(a.pointerImg=c.pointerImg,a.pointerVisible=!0),a.title=c.title||a.title,a.subTitle=c.subTitle||a.subTitle,a.taskId=null!=(s=c.taskId)?s:a.taskId,a.scriptIndex=i);continue}if(t<c.startFrame)break;switch(a.title=c.title||a.title,a.subTitle=c.subTitle||a.subTitle,a.taskId=null!=(l=c.taskId)?l:a.taskId,a.scriptIndex=i,a.frameInScript=t-c.startFrame,a.rawProgress=Math.min(a.frameInScript/c.durationInFrames,1),c.type){case"img":!function(e,t,r,n,o){pt(e,t,n,o);let i=t.startFrame+t.durationInFrames;t.cameraTarget?(e.prevCamera=d9({},e.camera),e.camera=d9({},t.cameraTarget),e.pointerMoved=pr(e.prevCamera,e.camera)):r>=i&&(e.pointerMoved=!1,e.imageChanged=!1),e.spinning=!1}(a,c,t,r,n);break;case"insight":!function(e,t,r,n,o){if(pt(e,t,n,o),e.insights.some(e=>e.highlightElement===t.highlightElement&&e.searchArea===t.searchArea)||e.insights.push({highlightElement:t.highlightElement,searchArea:t.searchArea,alpha:1}),t.cameraTarget&&void 0!==t.insightPhaseFrames){let n=t.startFrame+t.insightPhaseFrames;r>=n&&(e.prevCamera=d9({},e.camera),e.camera=d9({},t.cameraTarget),e.rawProgress=Math.min((r-n)/(t.cameraPhaseFrames||1),1),e.pointerMoved=pr(e.prevCamera,e.camera))}e.spinning=!1}(a,c,t,r,n);break;case"clear-insight":!function(e,t,r){let n=t.startFrame+t.durationInFrames,o=1-e.rawProgress;e.insights=e.insights.map(e=>{var t,r;return t=d9({},e),r=r={alpha:o},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t}),r>=n&&(e.insights=[]),e.spinning=!1}(a,c,t);break;case"spinning-pointer":a.spinning=!0,a.spinningElapsedMs=a.frameInScript/o*1e3;break;case"sleep":a.spinning=!1}t>=A&&("clear-insight"!==c.type&&(a.imageChanged=!1),a.pointerMoved=!1,a.rawProgress=1,c.cameraTarget&&(a.prevCamera=d9({},a.camera)))}if(!a.img){let t=e.find(e=>"img"===e.type&&e.img);t&&(a.img=t.img,a.imgW=t.imageWidth||r,a.imgH=t.imageHeight||n)}return{img:a.img,imageWidth:a.imgW,imageHeight:a.imgH,prevImg:a.imageChanged?a.prevImg:null,camera:a.camera,prevCamera:a.prevCamera,insights:a.insights,spinning:a.spinning,spinningElapsedMs:a.spinningElapsedMs,currentPointerImg:a.pointerImg,pointerVisible:a.pointerVisible,title:a.title,subTitle:a.subTitle,taskId:a.taskId,frameInScript:a.frameInScript,scriptIndex:a.scriptIndex,imageChanged:a.imageChanged,pointerMoved:a.pointerMoved,rawProgress:a.rawProgress}}function pi(e,t,r,n){let o=Math.min(e/r,t/n),i=r*o,a=n*o;return{offsetX:(e-i)/2,offsetY:(t-a)/2,contentWidth:i,contentHeight:a}}function pa(e,t){if(!Number.isFinite(e)||e<=0)throw Error(`${t} must be a positive finite number`)}function ps(e){return{scale:e,width:44*e,height:56*e,hotspotX:6*e,hotspotY:4*e,centerOffsetX:44*e/2,centerOffsetY:56*e/2}}function pl(e){return pa(e,"imageWidth"),ps(Math.max(1,Math.sqrt(e/1920)))}function pc(e){let t=e.height;return{size:t,centerOffset:t/2}}let pA=e=>{let{frameMap:t,autoZoom:r,frame:n,width:o,height:i,fps:l}=e,{scriptFrames:c,imageWidth:A,imageHeight:u}=t,d=(0,s.useMemo)(()=>po(c,n,A,u,l),[c,n,A,u,l]);if(!d.img)return null;let{img:p,imageWidth:h,imageHeight:m,prevImg:f,camera:g,prevCamera:y,insights:v,spinning:b,spinningElapsedMs:w,currentPointerImg:E,pointerVisible:x,title:k,subTitle:S,frameInScript:I,imageChanged:C,pointerMoved:O,rawProgress:R}=d,j=r?O?Math.min(R/.375,1):R:1,P=O?R<=.375?0:Math.min((R-.375)/.625,1):R,M=y.pointerLeft+(g.pointerLeft-y.pointerLeft)*j,T=y.pointerTop+(g.pointerTop-y.pointerTop)*j,N=r?y.left+(g.left-y.left)*P:0,D=r?y.top+(g.top-y.top)*P:0,z=r?y.width+(g.width-y.width)*P:h,{offsetX:B,offsetY:F,contentWidth:L,contentHeight:U}=pi(o,i,h,m),K=h/z,Z=-(L/h*N),J=-(U/m*D),Q=`scale(${K}) translate(${Z}px, ${J}px)`,q=m/h*z,X=(M-N)/z*L,W=(T-D)/q*U,H=pn(x,g,y,h,m),Y=pl(h),G=pc(Y),V=Y.scale,$=C?Math.min(I/10,1):1,_=b?(Math.sin(w/500-Math.PI/2)+1)/2*Math.PI*2:0;return(0,a.jsx)("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,backgroundColor:"#000"},children:(0,a.jsx)("div",{style:{position:"absolute",left:B,top:F,width:L,height:U,overflow:"hidden"},children:(0,a.jsxs)("div",{style:{width:L,height:U,position:"relative",overflow:"hidden"},children:[C&&f&&$<1&&(0,a.jsx)("div",{style:{position:"absolute",width:L,height:U,overflow:"hidden",opacity:1-$},children:(0,a.jsx)("img",{alt:"",src:f,style:{width:L,height:U,transformOrigin:"0 0",transform:Q}})}),(0,a.jsxs)("div",{style:{position:"absolute",width:L,height:U,overflow:"hidden",opacity:C?$:1},children:[(0,a.jsx)("img",{alt:"",src:p,style:{width:L,height:U,transformOrigin:"0 0",transform:Q}}),(0,a.jsx)("div",{style:{position:"absolute",top:0,left:0,width:L,height:U,transformOrigin:"0 0",transform:Q,pointerEvents:"none"},children:0===v.length?null:v.map((e,t)=>{let r=[];if(e.highlightElement){let n=u_(e.highlightElement);r.push((0,a.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*V}px solid #fd5907`,boxShadow:`${2*V}px ${2*V}px ${+V}px rgba(51, 51, 51, 0.3)`,opacity:e.alpha,pointerEvents:"none"}},`highlight-${t}`))}if(e.searchArea){let n=e.searchArea;r.push((0,a.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*V}px solid #028391`,boxShadow:`${2*V}px ${2*V}px ${+V}px rgba(51, 51, 51, 0.3)`,opacity:e.alpha,pointerEvents:"none"}},`search-${t}`))}return r})})]}),b&&(0,a.jsx)("img",{alt:"",src:uV,style:{position:"absolute",left:X-G.centerOffset,top:W-G.centerOffset,width:G.size,height:G.size,transform:`rotate(${_}rad)`,transformOrigin:"center center",filter:"drop-shadow(0 1px 2px rgba(0,0,0,0.3))"}}),H&&!b&&(0,a.jsx)("img",{alt:"",src:E,style:{position:"absolute",left:X-Y.hotspotX,top:W-Y.hotspotY,width:Y.width,height:Y.height,filter:"drop-shadow(0 1px 2px rgba(0,0,0,0.3))"}})]})})})};function pu(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function pd(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){pu(i,n,o,a,s,"next",e)}function s(e){pu(i,n,o,a,s,"throw",e)}a(void 0)})}}let pp=!1;function ph(e){return new Promise((t,r)=>{let n=new Image;n.crossOrigin="anonymous",n.onload=()=>t(n),n.onerror=r,n.src=e})}function pm(e,t,r){let n=r.contentWidth/r.imageWidth,o=r.contentHeight/r.imageHeight;return{left:r.offsetX+(e.left*n+t.tx)*t.zoom,top:r.offsetY+(e.top*o+t.ty)*t.zoom,width:e.width*n*t.zoom,height:e.height*o*t.zoom}}function pf(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function pg(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){pf(i,n,o,a,s,"next",e)}function s(e){pf(i,n,o,a,s,"throw",e)}a(void 0)})}}function py(e,t){let r=Math.floor(e/t),n=Math.floor(r/60);return`${String(n).padStart(2,"0")}:${String(r%60).padStart(2,"0")}`}function pv(e){var t,r,n,o,i;let l,{message:c}=ew.A.useApp(),{autoZoom:A,setAutoZoom:u,playbackSpeed:d,setPlaybackSpeed:p,subtitleEnabled:m,setSubtitleEnabled:f}=C();(0,s.useEffect)(()=>{(null==e?void 0:e.autoZoom)!==void 0&&u(e.autoZoom)},[null==e?void 0:e.autoZoom,u]);let g=null==e?void 0:e.replayScripts,y=(0,s.useMemo)(()=>g&&0!==g.length?function(e,t){let r=(null==t?void 0:t.imageWidth)||1920,n=(null==t?void 0:t.imageHeight)||1080;for(let t of e)if(("img"===t.type||"insight"===t.type)&&t.img){r=t.imageWidth||r,n=t.imageHeight||n;break}let o=[],i=0;for(let t of e){var a,s,l,c;let e=t.duration;switch(t.type){case"sleep":{let r=Math.ceil(e/1e3*30);o.push({type:"sleep",startFrame:i,durationInFrames:r,title:t.title,subTitle:t.subTitle,taskId:t.taskId}),i+=r;break}case"img":{let l=Math.max(Math.ceil(e/1e3*30),1),c=t.camera,A=t.imageWidth||r,u=t.imageHeight||n,d={type:"img",startFrame:i,durationInFrames:l,img:t.img,imageWidth:A,imageHeight:u,title:t.title,subTitle:t.subTitle,taskId:t.taskId};c&&(d.cameraTarget={left:c.left,top:c.top,width:c.width,pointerLeft:null!=(a=c.pointerLeft)?a:Math.round(A/2),pointerTop:null!=(s=c.pointerTop)?s:Math.round(u/2)}),o.push(d),i+=l;break}case"insight":{let a=Math.max(Math.ceil(e/1e3*30),1),s=Math.ceil((t.insightCameraDuration||0)/1e3*30),A=a+s,u=t.imageWidth||r,d=t.imageHeight||n,p=t.camera,h={type:"insight",startFrame:i,durationInFrames:A,img:t.img,imageWidth:u,imageHeight:d,insightPhaseFrames:a,cameraPhaseFrames:s,highlightElement:t.highlightElement,searchArea:t.searchArea,title:t.title,subTitle:t.subTitle,taskId:t.taskId};p&&(h.cameraTarget={left:p.left,top:p.top,width:p.width,pointerLeft:null!=(l=p.pointerLeft)?l:Math.round(u/2),pointerTop:null!=(c=p.pointerTop)?c:Math.round(d/2)}),o.push(h),i+=A;break}case"clear-insight":{let r=Math.max(Math.ceil(e/1e3*30),1);o.push({type:"clear-insight",startFrame:i,durationInFrames:r,title:t.title,subTitle:t.subTitle,taskId:t.taskId}),i+=r;break}case"spinning-pointer":{let r=Math.max(Math.ceil(e/1e3*30),1);o.push({type:"spinning-pointer",startFrame:i,durationInFrames:r,title:t.title,subTitle:t.subTitle,taskId:t.taskId}),i+=r;break}case"pointer":o.push({type:"pointer",startFrame:i,durationInFrames:0,pointerImg:t.img,title:t.title,subTitle:t.subTitle,taskId:t.taskId})}}let A=Math.max(i,1);return{scriptFrames:o,totalDurationInFrames:A,fps:30,stepsDurationInFrames:A,imageWidth:r,imageHeight:n}}(g,{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,g]),v=(0,s.useRef)(null),b=(0,s.useRef)(null),w=(0,s.useRef)(null),[E,x]=(0,s.useState)({width:0,height:0});(0,s.useEffect)(()=>{let e=b.current;if(!e)return;let t=new ResizeObserver(e=>{for(let t of e){let{width:e,height:r}=t.contentRect;x(t=>t.width===e&&t.height===r?t:{width:e,height:r})}});return t.observe(e),()=>t.disconnect()},[]);let k=function(e){var t,r;let{durationInFrames:n,fps:o,autoPlay:i=!1,loop:a=!1}=e,[l,c]=(0,s.useState)(0),[A,u]=(0,s.useState)(i),d=(0,s.useRef)(A),p=(0,s.useRef)(l),h=(0,s.useRef)(null!=(t=e.playbackRate)?t:1),m=(0,s.useRef)(n),f=(0,s.useRef)(o),g=(0,s.useRef)(a);d.current=A,p.current=l,h.current=null!=(r=e.playbackRate)?r:1,m.current=n,f.current=o,g.current=a,(0,s.useEffect)(()=>{let e;if(!A)return;let t=null,r=0,n=o=>{if(null!==t){let e=(o-t)*h.current;r+=e;let n=1e3/f.current;for(;r>=n;){r-=n;let e=p.current+1;if(e>=m.current)if(g.current)p.current=0,c(0);else{p.current=m.current-1,c(m.current-1),u(!1);return}else p.current=e,c(e)}}t=o,e=requestAnimationFrame(n)};return e=requestAnimationFrame(n),()=>cancelAnimationFrame(e)},[A]);let y=()=>{p.current>=m.current-1&&(p.current=0,c(0))},v=(0,s.useCallback)(()=>{y(),u(!0)},[]),b=(0,s.useCallback)(()=>u(!1),[]);return{currentFrame:l,playing:A,play:v,pause:b,toggle:(0,s.useCallback)(()=>{d.current?u(!1):(y(),u(!0))},[]),seekTo:(0,s.useCallback)(e=>{let t=Math.max(0,Math.min(e,m.current-1));p.current=t,c(t)},[])}}({durationInFrames:Math.max(null!=(t=null==y?void 0:y.totalDurationInFrames)?t:1,1),fps:null!=(r=null==y?void 0:y.fps)?r:30,autoPlay:null==(n=null==e?void 0:e.autoPlay)||n,loop:!1,playbackRate:d}),S=(0,s.useMemo)(()=>{if(!y)return 0;for(let e=y.scriptFrames.length-1;e>=0;e--){let t=y.scriptFrames[e];if(t.taskId)return t.startFrame+t.durationInFrames-1}return Math.max(0,y.totalDurationInFrames-1)},[y]),I=(0,s.useCallback)(()=>{var e;k.playing?k.pause():(e=k.currentFrame,S>0&&e>=S&&k.seekTo(0),k.play())},[S,k.currentFrame,k.pause,k.play,k.playing,k.seekTo]);(0,s.useEffect)(()=>{!y||k.playing||!(k.currentFrame<y.totalDurationInFrames-1)&&S>0&&k.seekTo(S)},[S,y,k.currentFrame,k.playing,k.seekTo]),(0,s.useEffect)(()=>{if(!y||!(null==e?void 0:e.onTaskChange))return;if(!k.playing){null!==w.current&&(w.current=null,e.onTaskChange(null));return}let t=function(e,t){let r=null;for(let i of e){var n,o;if(0===i.durationInFrames){i.startFrame<=t&&(r=null!=(n=i.taskId)?n:r);continue}if(t<i.startFrame)break;r=null!=(o=i.taskId)?o:r}return r}(y.scriptFrames,k.currentFrame);t!==w.current&&(w.current=t,e.onTaskChange(t))},[y,null==e?void 0:e.onTaskChange,k.currentFrame,k.playing]);let O=(0,s.useMemo)(()=>{var e;let t;return y?(e=k.currentFrame,(t=po(y.scriptFrames,e,y.imageWidth,y.imageHeight,y.fps)).img?t:null):null},[y,k.currentFrame]),R=(0,s.useCallback)(()=>pg(function*(){if((null==e?void 0:e.reportFormat)==="html-and-external-assets"&&e.reportUrl)return void globalThis.open(e.reportUrl,"_blank","noopener,noreferrer");try{var t,r;let n=null==e?void 0:e.reportFileContent;if(!n&&(null==e?void 0:e.reportUrl)){let t=yield fetch(e.reportUrl);if(!t.ok)throw Error(`Report request failed (${t.status})`);n=yield t.text()}if(!n)return;yield(t={content:n,onDownloadReport:null==e?void 0:e.onDownloadReport},(r=function*(){let{content:e,defaultFileName:r="midscene_report.html",onDownloadReport:n,documentRef:o,urlRef:i,blobFactory:a,scheduleRevoke:s}=t;if(n)return void(yield n({content:e,defaultFileName:r}));let l=null!=o?o:globalThis.document;if(!l)throw Error("Report download requires a document context.");let c=null!=i?i:globalThis.URL;if(!(null==c?void 0:c.createObjectURL)||!(null==c?void 0:c.revokeObjectURL))throw Error("Report download requires URL.createObjectURL support.");let A=(null!=a?a:(e,t)=>new Blob(e,t))([e],{type:"text/html"}),u=c.createObjectURL(A),d=l.createElement("a");d.href=u,d.download=r,d.style.display="none",l.body.appendChild(d);try{d.click()}finally{l.body.removeChild(d),(null!=s?s:e=>setTimeout(e,0))(()=>{c.revokeObjectURL(u)})}},function(){var e=this,t=arguments;return new Promise(function(n,o){var i=r.apply(e,t);function a(e){d6(i,n,o,a,s,"next",e)}function s(e){d6(i,n,o,a,s,"throw",e)}a(void 0)})})())}catch(e){uv(e,{title:"Failed to download report"})}})(),[null==e?void 0:e.onDownloadReport,null==e?void 0:e.reportFileContent,null==e?void 0:e.reportFormat,null==e?void 0:e.reportUrl]),j=(0,s.useMemo)(()=>O&&(O.title||O.subTitle)?{title:O.title,subTitle:O.subTitle}:null,[O]),[P,M]=(0,s.useState)(!1),[T,N]=(0,s.useState)(0),D=(0,s.useRef)(!1),[z,B]=(0,s.useState)(!0),F=(0,s.useRef)(null),L=(0,s.useCallback)(()=>{B(!0),F.current&&clearTimeout(F.current),P||(F.current=setTimeout(()=>B(!1),3e3))},[P]),U=(0,s.useCallback)(()=>{B(!0),F.current&&clearTimeout(F.current)},[]),K=(0,s.useCallback)(()=>{F.current&&clearTimeout(F.current),P||(F.current=setTimeout(()=>B(!1),1e3))},[P]);(0,s.useEffect)(()=>{P&&(B(!0),F.current&&(clearTimeout(F.current),F.current=null))},[P]),(0,s.useEffect)(()=>{let e=e=>{var t;let r=null==(t=e.target)?void 0:t.tagName;"INPUT"!==r&&"TEXTAREA"!==r&&"SELECT"!==r&&"Space"===e.code&&(e.preventDefault(),I())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[I]);let Z=(0,s.useRef)(null),J=(0,s.useCallback)(e=>{if(!y||!Z.current)return;let t=Z.current;t.setPointerCapture(e.pointerId);let r=e=>{let r=t.getBoundingClientRect(),n=Math.max(0,Math.min(1,(e-r.left)/r.width));k.seekTo(Math.round(n*S))};r(e.clientX);let n=e=>r(e.clientX),o=()=>{t.removeEventListener("pointermove",n),t.removeEventListener("pointerup",o)};t.addEventListener("pointermove",n),t.addEventListener("pointerup",o)},[y,k,S]),[Q,X]=(0,s.useState)(!1),W=(0,s.useCallback)(()=>{let e=v.current;e&&(document.fullscreenElement?document.exitFullscreen().then(()=>X(!1)):e.requestFullscreen().then(()=>X(!0)))},[]);(0,s.useEffect)(()=>{let e=()=>X(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[]);let H=(0,s.useCallback)(()=>pg(function*(){if(y&&!D.current){D.current=!0,M(!0),N(0);try{var e,t;yield(e={autoZoom:A},t=e=>N(Math.round(100*e)),pd(function*(){if(pp)throw Error("Video export is already in progress");pp=!0;try{var r,n,o;yield(r=y,n=e,o=t,pd(function*(){var e;let{totalDurationInFrames:t,fps:i}=r,a=null==(e=null==n?void 0:n.autoZoom)||e,s=new Set;for(let e of r.scriptFrames)e.img&&s.add(e.img);let l=new Map;yield Promise.all([...s].map(e=>pd(function*(){try{l.set(e,(yield ph(e)))}catch(e){}})()));let c=new Set([uG]);for(let e of r.scriptFrames)e.pointerImg&&c.add(e.pointerImg);let A=new Map;yield Promise.all([...c].map(e=>pd(function*(){try{A.set(e,(yield ph(e)))}catch(e){}})()));let u=null;try{u=yield ph(uV)}catch(e){}let d=document.createElement("canvas");d.width=960,d.height=540;let p=d.getContext("2d"),h=d.captureStream(i),m=new MediaRecorder(h,{mimeType:"video/webm"}),f=[];return m.ondataavailable=e=>{e.data.size>0&&f.push(e.data)},new Promise((e,n)=>{let s=null,c=!1,d=0,g=performance.now(),y=g,v=null,b=null,w=1e3/i,E=()=>{v&&clearTimeout(v),b&&clearTimeout(b),document.removeEventListener("visibilitychange",k),h.getTracks().forEach(e=>e.stop())},x=e=>{c||s||(s=e,"inactive"!==m.state?m.stop():(E(),c=!0,n(e)))},k=()=>{document.hidden&&x(Error("Video export was interrupted because the report tab was hidden"))};m.onerror=()=>{x(Error("MediaRecorder error"))},m.onstop=()=>{if(E(),c)return;if(c=!0,s)return void n(s);if(0===f.length)return void n(Error("No video data"));let t=new Blob(f,{type:"video/webm"}),r=URL.createObjectURL(t),o=document.createElement("a");o.href=r,o.download="midscene_replay.webm",o.click(),setTimeout(()=>URL.revokeObjectURL(r),1e3),e()},document.addEventListener("visibilitychange",k),m.start();let S=e=>{if(!c&&"inactive"!==m.state){if(d>0&&e-y>Math.max(2e3,10*w))return void x(Error("Video export was interrupted because rendering stalled"));y=e,p.clearRect(0,0,960,540),function(e,t,r,n,o,i,a){var s,l,c,A,u,d,p,h,m,f,g,y,v,b,w,E,x;let k,{scriptFrames:S,imageWidth:I,imageHeight:C,fps:O}=r,R=po(S,t,I,C,O);if(!R.img)return;let{img:j,prevImg:P,imageWidth:M,imageHeight:T,camera:N,prevCamera:D,pointerMoved:z,imageChanged:B,rawProgress:F,frameInScript:L,spinning:U,spinningElapsedMs:K,currentPointerImg:Z,pointerVisible:J,insights:Q}=R,q=a?z?Math.min(F/.375,1):F:1,{camLeft:X,camTop:W,camWidth:H}=(h=D,m=N,f=M,g=z?F<=.375?0:Math.min((F-.375)/.625,1):F,a?{camLeft:(y=h.left,v=m.left,y+(v-y)*g),camTop:(b=h.top,w=m.top,b+(w-b)*g),camWidth:(E=h.width,x=m.width,E+(x-E)*g)}:{camLeft:0,camTop:0,camWidth:f}),Y=(l=D.pointerLeft,c=N.pointerLeft,l+(c-l)*q),G=(A=D.pointerTop,u=N.pointerTop,A+(u-A)*q),V=M/H,{offsetX:$,offsetY:_,contentWidth:ee,contentHeight:et}=pi(960,540,M,T),er=-(ee/M*X),en=-(et/T*W),eo=B?Math.min(Math.max(L/10,0),1):1;e.fillStyle="#000",e.fillRect(0,0,960,540);let ei=(t,r)=>{let o=n.get(t);o&&!(r<=0)&&(e.save(),e.globalAlpha=r,e.beginPath(),e.rect(0,0,960,540),e.clip(),e.translate($+er*V,_+en*V),e.scale(V,V),e.drawImage(o,0,0,ee,et),e.restore())};B&&P&&eo<1&&ei(P,1-eo),ei(j,B?eo:1),Q.length>0&&function(e,t,r,n){for(let o of(e.save(),e.beginPath(),e.rect(n.offsetX,n.offsetY,n.contentWidth,n.contentHeight),e.clip(),t))if(!(o.alpha<=0)){if(e.save(),e.globalAlpha*=o.alpha,o.highlightElement){let t=pm(u_(o.highlightElement),r,n);e.fillStyle="rgba(253, 89, 7, 0.4)",e.fillRect(t.left,t.top,t.width,t.height),e.strokeStyle="#fd5907",e.lineWidth=1,e.strokeRect(t.left,t.top,t.width,t.height),e.shadowColor="rgba(51, 51, 51, 0.4)",e.shadowBlur=2,e.shadowOffsetX=4,e.shadowOffsetY=4,e.strokeRect(t.left,t.top,t.width,t.height),e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0}if(o.searchArea){let t=pm(o.searchArea,r,n);e.fillStyle="rgba(2, 131, 145, 0.4)",e.fillRect(t.left,t.top,t.width,t.height),e.strokeStyle="#028391",e.lineWidth=1,e.strokeRect(t.left,t.top,t.width,t.height)}e.restore()}e.restore()}(e,Q,{zoom:V,tx:er,ty:en},{offsetX:$,offsetY:_,contentWidth:ee,contentHeight:et,imageWidth:M,imageHeight:T});let ea=T/M*H,es=$+(Y-X)/H*ee,el=_+(G-W)/ea*et,ec=(pa(ee,"contentWidth"),ps(pl(M).scale*(ee/M))),eA=pc(ec),eu=null!=(s=o.get(Z))?s:o.get(uG),ed=pn(J,N,D,M,T);U&&i&&(d=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},ec),p=p={width:eA.size,height:eA.size,centerOffsetX:eA.centerOffset,centerOffsetY:eA.centerOffset},Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(p)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(p)).forEach(function(e){Object.defineProperty(d,e,Object.getOwnPropertyDescriptor(p,e))}),k=(Math.sin(K/500-Math.PI/2)+1)/2*Math.PI*2,e.save(),e.translate(es,el),e.rotate(k),e.drawImage(i,-d.centerOffsetX,-d.centerOffsetY,d.width,d.height),e.restore()),!U&&ed&&eu&&e.drawImage(eu,es-ec.hotspotX,el-ec.hotspotY,ec.width,ec.height)}(p,d,r,l,A,u,a),null==o||o((d+1)/t),(d+=1)<t?(g+=w,b=setTimeout(()=>{requestAnimationFrame(S)},Math.max(0,g-performance.now()))):v=setTimeout(()=>{"inactive"!==m.state&&m.stop()},2*w)}};requestAnimationFrame(e=>{y=e,g=e,S(e)})})})())}finally{pp=!1}})()),c.success("Video exported")}catch(e){console.error("Export failed:",e),uv(e,{title:"Video export failed"})}finally{D.current=!1,M(!1),N(0)}}})(),[A,y]),Y=(0,s.useMemo)(()=>{if(!y||S<=0)return[];let e=[];for(let t of y.scriptFrames){if("img"!==t.type&&"insight"!==t.type||0===t.durationInFrames)continue;let r=t.startFrame,n=r/S*100;if(n>1&&n<99){let o=[t.title,t.subTitle].filter(Boolean);e.push({percent:n,title:o.length>0?o.join(": "):`Chapter ${e.length+1}`,frame:r})}}return e},[y,S]),G=!!((null!=(o=null==e?void 0:e.reportFileContent)?o:null)||(null==e?void 0:e.reportUrl)),V=(null==e?void 0:e.reportFormat)==="html-and-external-assets"?"Open report":"Download report",$=(null==e?void 0:e.canDownloadReport)!==!1,_=null!=(i=null==e?void 0:e.presentation)?i:"default";if(!g||0===g.length||!y)return G&&$?(0,a.jsx)("div",{className:"player-container player-container-empty","data-presentation":_,children:(0,a.jsxs)("div",{className:"player-empty-state",children:[(0,a.jsx)("span",{className:"player-empty-text",children:"No replay available"}),(0,a.jsx)(q.Ay,{icon:(0,a.jsx)(dY.A,{}),onClick:()=>{R()},children:V})]})}):null;let ee=(null==O?void 0:O.imageWidth)||y.imageWidth,et=(null==O?void 0:O.imageHeight)||y.imageHeight,er=et>ee,en=S>0?Math.min(100,k.currentFrame/S*100):0;return(0,a.jsx)("div",{className:"player-container","data-fit-mode":null==e?void 0:e.fitMode,"data-presentation":_,children:(0,a.jsxs)("div",{className:"canvas-container",ref:v,onMouseMove:L,onMouseEnter:U,onMouseLeave:K,children:[(0,a.jsx)("div",{className:"player-wrapper","data-portrait":er?"":void 0,style:{aspectRatio:`${ee}/${et}`},children:(0,a.jsx)("div",{ref:b,style:{display:"flex",justifyContent:"center",alignItems:"center",width:"100%",height:"100%",overflow:"hidden"},onClick:I,children:(l=E.width>0&&E.height>0?Math.min(E.width/ee,E.height/et):1,(0,a.jsx)("div",{style:{width:ee*l,height:et*l,flexShrink:0,position:"relative",overflow:"hidden"},children:(0,a.jsx)("div",{style:{width:ee,height:et,transformOrigin:"0 0",transform:`scale(${l})`},children:(0,a.jsx)(pA,{frameMap:y,autoZoom:A&&k.playing,frame:k.currentFrame,width:ee,height:et,fps:y.fps})})}))})}),m&&j&&(0,a.jsxs)("div",{className:"player-subtitle",children:[j.title&&(0,a.jsx)("span",{className:"player-subtitle-badge",children:j.title}),j.subTitle&&(0,a.jsx)("span",{className:"player-subtitle-text",children:j.subTitle})]}),!(null==e?void 0:e.hideControls)&&(0,a.jsxs)("div",{className:`control-bar ${z?"":"hidden"}`,onClick:e=>e.stopPropagation(),children:[(0,a.jsx)("div",{className:"status-icon",onClick:I,children:k.playing?(0,a.jsx)(dG.A,{}):(0,a.jsx)(dV.A,{})}),(0,a.jsxs)("span",{className:"time-display",children:[py(Math.min(k.currentFrame,S),y.fps)," ","/ ",py(S+1,y.fps)]}),(0,a.jsxs)("div",{className:"seek-bar-track",ref:Z,onPointerDown:J,children:[(0,a.jsx)("div",{className:"seek-bar-fill",style:{width:`${en}%`}}),(0,a.jsx)("div",{className:"seek-bar-knob",style:{left:`${en}%`}}),Y.map(e=>(0,a.jsx)(h.A,{title:e.title,overlayClassName:"chapter-tooltip",children:(0,a.jsx)("div",{className:"chapter-marker",style:{left:`${e.percent}%`},onClick:t=>{t.stopPropagation(),k.seekTo(e.frame)}})},e.percent))]}),(0,a.jsxs)("div",{className:"player-custom-controls",children:[G&&$?(0,a.jsx)(h.A,{title:V,children:(0,a.jsx)("div",{className:"status-icon",onClick:()=>{R()},children:(0,a.jsx)(dY.A,{})})}):null,(0,a.jsx)(d3.A,{trigger:["hover","click"],placement:"topRight",overlayStyle:{minWidth:"148px"},dropdownRender:()=>(0,a.jsxs)("div",{className:"player-settings-dropdown",children:[(0,a.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",gap:"4px",height:"32px",padding:"0 8px",borderRadius:"4px",cursor:P?"not-allowed":"pointer",opacity:P?.5:1},onClick:P?void 0:H,children:[(0,a.jsx)("span",{style:{width:16,height:16,display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:P?(0,a.jsx)(d5.A,{type:"circle",percent:T,size:16,strokeWidth:14,showInfo:!1,strokeColor:"#1677ff",trailColor:"rgba(0, 0, 0, 0.12)"}):(0,a.jsx)(d$.A,{style:{width:"16px",height:"16px"}})}),(0,a.jsx)("span",{className:"player-export-label",children:P?`Exporting ${T}%`:"Export video"})]}),(0,a.jsx)("div",{className:"player-settings-divider"}),(0,a.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 8px",borderRadius:"4px"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[(0,a.jsx)(d7,{style:{width:"16px",height:"16px"}}),(0,a.jsx)("span",{style:{fontSize:"14px",marginRight:"16px"},children:"Focus on cursor"})]}),(0,a.jsx)(d4.A,{size:"small",checked:A,onChange:e=>u(e)})]}),(0,a.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 8px",borderRadius:"4px"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[(0,a.jsx)(d_.A,{style:{width:"16px",height:"16px"}}),(0,a.jsx)("span",{style:{fontSize:"14px",marginRight:"16px"},children:"Subtitle"})]}),(0,a.jsx)(d4.A,{size:"small",checked:m,onChange:e=>f(e)})]}),(0,a.jsx)("div",{className:"player-settings-divider"}),(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px",height:"32px",padding:"0 8px"},children:[(0,a.jsx)(d0.A,{style:{width:"16px",height:"16px"}}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"Playback speed"})]}),[.5,1,1.5,2].map(e=>(0,a.jsxs)("div",{onClick:()=>p(e),style:{height:"32px",lineHeight:"32px",padding:"0 8px 0 28px",fontSize:"14px",cursor:"pointer",borderRadius:"4px"},className:`player-speed-option${d===e?" active":""}`,children:[e,"x"]},e))]}),menu:{items:[]},children:(0,a.jsx)("div",{className:"status-icon",children:(0,a.jsx)(d8,{style:{width:"16px",height:"16px"}})})}),!(null==e?void 0:e.hideFullscreenControl)&&(0,a.jsx)("div",{className:"status-icon",onClick:W,children:Q?(0,a.jsx)(d1.A,{}):(0,a.jsx)(d2.A,{})})]})]})]})})}let pb=e=>{let{result:t,loading:r,serverValid:n,serviceMode:o,replayScriptsInfo:i,replayCounter:s,loadingProgressText:l,verticalMode:c=!1,notReadyMessage:A,fitMode:u,autoZoom:d,showOutputAlongsideReport:p=!1,canDownloadReport:h,onDownloadReport:m,playerPresentation:f,hidePlayerFullscreenControl:g}=e,y="result-wrapper";c&&(y+=" vertical-mode-result"),i&&c&&(y+=" result-wrapper-compact");let v=dQ;if(n||"Server"!==o){var b,w,E,x,k,S,I,C,O,R;if(r)v=(0,a.jsxs)("div",{className:"loading-container",children:[(0,a.jsx)(ef.A,{spinning:r,indicator:(0,a.jsx)(uK.A,{spin:!0})}),(0,a.jsx)("div",{className:"loading-progress-text loading-progress-text-progress",children:(0,a.jsx)(dK,{text:l,speed:3})})]});else if(null==t?void 0:t.error){let e=(0,a.jsx)("pre",{style:{color:"#ff4d4f",whiteSpace:"pre-wrap"},children:null==t?void 0:t.error});v=t.reportHTML||t.report||i?(0,a.jsxs)("div",{className:"combined-result-layout",children:[(0,a.jsxs)("div",{style:{flex:"0 0 auto",maxHeight:"40%",overflow:"auto"},children:[(0,a.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Error:"}),e]}),(0,a.jsxs)("div",{className:"combined-result-section",children:[(0,a.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,a.jsx)("div",{className:"combined-result-player",children:(0,a.jsx)(pv,{replayScripts:null==i?void 0:i.scripts,imageWidth:null==i?void 0:i.width,imageHeight:null==i?void 0:i.height,reportFileContent:t.reportHTML||null,reportUrl:null==(b=t.report)?void 0:b.url,reportFormat:null==(w=t.report)?void 0:w.format,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==o,onDownloadReport:m,presentation:f,hideFullscreenControl:g},s)})]})]}):e}else if(p&&(null==t?void 0:t.result)!==void 0&&i){let e="string"==typeof(null==t?void 0:t.result)?(0,a.jsx)("pre",{children:null==t?void 0:t.result}):(0,a.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)}),r=(null==t?void 0:t.reportHTML)||null;v=(0,a.jsxs)("div",{className:"combined-result-layout",children:[(0,a.jsxs)("div",{style:{flex:"0 0 auto"},children:[(0,a.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Output:"}),e]}),(0,a.jsxs)("div",{className:"combined-result-section",children:[(0,a.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,a.jsx)("div",{className:"combined-result-player",children:(0,a.jsx)(pv,{replayScripts:i.scripts,imageWidth:i.width,imageHeight:i.height,reportFileContent:r,reportUrl:null==(E=t.report)?void 0:E.url,reportFormat:null==(x=t.report)?void 0:x.format,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==o,onDownloadReport:m,presentation:f,hideFullscreenControl:g},s)})]})]})}else if(i){let e=(null==t?void 0:t.reportHTML)||null;v=(0,a.jsx)(pv,{replayScripts:i.scripts,imageWidth:i.width,imageHeight:i.height,reportFileContent:e,reportUrl:null==t||null==(k=t.report)?void 0:k.url,reportFormat:null==t||null==(S=t.report)?void 0:S.format,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==o,onDownloadReport:m,presentation:f,hideFullscreenControl:g},s)}else if(p&&(null==t?void 0:t.result)!==void 0&&((null==t?void 0:t.reportHTML)||(null==t?void 0:t.report))){let e="string"==typeof(null==t?void 0:t.result)?(0,a.jsx)("pre",{children:null==t?void 0:t.result}):(0,a.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)});v=(0,a.jsxs)("div",{className:"combined-result-layout",children:[(0,a.jsxs)("div",{style:{flex:"0 0 auto"},children:[(0,a.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Output:"}),e]}),(0,a.jsxs)("div",{className:"combined-result-section",children:[(0,a.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,a.jsx)("div",{className:"combined-result-player",children:(0,a.jsx)(pv,{reportFileContent:t.reportHTML||null,reportUrl:null==(I=t.report)?void 0:I.url,reportFormat:null==(C=t.report)?void 0:C.format,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==o,onDownloadReport:m,presentation:f,hideFullscreenControl:g},s)})]})]})}else p&&(null==t?void 0:t.result)!==void 0?v="string"==typeof(null==t?void 0:t.result)?(0,a.jsx)("pre",{children:null==t?void 0:t.result}):(0,a.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)}):(null==t?void 0:t.reportHTML)||(null==t?void 0:t.report)?v=(0,a.jsx)(pv,{reportFileContent:t.reportHTML||null,reportUrl:null==(O=t.report)?void 0:O.url,reportFormat:null==(R=t.report)?void 0:R.format,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==o,onDownloadReport:m,presentation:f,hideFullscreenControl:g},s):(null==t?void 0:t.result)!==void 0&&(v="string"==typeof(null==t?void 0:t.result)?(0,a.jsx)("pre",{children:null==t?void 0:t.result}):(0,a.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)}))}else v=dJ(A);return(0,a.jsx)("div",{className:y,style:{height:"100%",display:"flex",flexDirection:"column",flex:"1 1 auto",justifyContent:"center"},children:v})},pw=e=>{var t,r;return(0,a.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:20,height:20,fill:"none","aria-label":"Playground",viewBox:"0 0 20 20"},e),r=r={children:[(0,a.jsx)("rect",{width:20,height:20,fill:"#2B83FF",rx:10}),(0,a.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(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};function pE(){return(0,s.createElement)("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":!0,focusable:!1},(0,s.createElement)("path",{d:"M3 7.99984L6.33333 11.3332L13 4.6665",stroke:"#188F4D",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"}))}function px(){return(0,s.createElement)("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":!0,focusable:!1},(0,s.createElement)("path",{d:"M5 5L11 11M11 5L5 11",stroke:"#FF4D4F",strokeWidth:"1.2",strokeLinecap:"round"}))}let pk="ZodOptional",pS="ZodDefault",pI="ZodNullable",pC="ZodObject",pO=e=>"object"==typeof e&&null!==e&&("shape"in e||"ZodObject"===e.type),pR=e=>{var t,r,n;let o=e=>!!(null==e?void 0:e.prompt);if((null==(t=e._def)?void 0:t.typeName)===pC){let t;if(e._def.shape&&(t="function"==typeof e._def.shape?e._def.shape():e._def.shape),!t&&e.shape&&(t=e.shape),t&&"prompt"in t&&t.prompt||o(t))return!0;let n=(null==(r=e._def)?void 0:r.description)||e.description||"";if("string"==typeof n&&n.toLowerCase().includes("input field"))return!0}if("object"==typeof e&&null!==e){let t=e.description||(null==(n=e._def)?void 0:n.description)||"";if("string"==typeof t){let e=t.toLowerCase();if(e.includes("input field")||e.includes("element")||e.includes("locate"))return!0}if("ZodObject"===e.typeName||"ZodObject"===e.type)return!!o(e.shape)||"string"==typeof t&&t.toLowerCase().includes("input field")}return!1},pj=e=>{var t,r,n,o,i;let a=e,s=!1,l=!1;for(;(null==(t=a._def)?void 0:t.typeName)===pk||(null==(r=a._def)?void 0:r.typeName)===pS||(null==(n=a._def)?void 0:n.typeName)===pI;)(null==(o=a._def)?void 0:o.typeName)===pk&&(s=!0),(null==(i=a._def)?void 0:i.typeName)===pS&&(l=!0),a=a._def.innerType||a;return{actualField:a,isOptional:s,hasDefault:l}},pP=(e,t)=>null==e?void 0:e.find(e=>e.interfaceAlias===t||e.name===t),pM=(e,t)=>{var r,n;if(!(null==e?void 0:e.length)||!t)return null;let o=pP(e,t);if(!(null==o?void 0:o.paramSchema)||!pO(o.paramSchema))return null;let i=o.paramSchema.shape||{},a=Object.keys(i);if(1!==a.length)return null;let[s]=a,{actualField:l}=pj(i[s]),c=pR(l);if(!("ZodString"===(null==(r=l._def)?void 0:r.typeName)||c))return null;let A=(null==(n=l._def)?void 0:n.description)||l.description||(c?"Describe the element you want to interact with":`Enter ${s}`);return{name:s,placeholder:A}};var pT=r(28460),pN=r(3246),pD=r(91631),pz=r(64665);let pB=e=>{var t,r;return(0,a.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:6,height:10,fill:"none",viewBox:"0 0 6 10"},e),r=r={children:(0,a.jsx)("path",{fill:"#000",fillOpacity:.25,fillRule:"evenodd",d:"M.195 9.138a.667.667 0 0 1 0-.943l3.529-3.528L.195 1.138a.667.667 0 0 1 .943-.943l4 4c.26.26.26.683 0 .943l-4 4a.667.667 0 0 1-.943 0",clipRule:"evenodd"})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},pF=e=>{var t,r;return(0,a.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:[(0,a.jsx)("path",{stroke:"#878787",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.33,d:"M1.505 4.164c-2.862 6.126 2.197 10.501 6.063 10.501a7 7 0 1 0-6.063-10.5"}),(0,a.jsx)("path",{stroke:"#878787",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.33,d:"M7.57 3.465v4.203l2.967 2.968"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};var pL={};pL.d=(e,t)=>{for(var r in t)pL.o(t,r)&&!pL.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},pL.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),pL.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var pU={};function pK(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}pL.r(pU),pL.d(pU,{create:()=>m.vt});let{create:pZ}=pU,pJ="midscene-prompt-history-v2",pQ="midscene-last-selected-type",pq=pZ((e,t)=>{let r;return{history:(r=localStorage.getItem(pJ))?JSON.parse(r):{},lastSelectedType:localStorage.getItem(pQ)||"aiAct",clearHistory:r=>{let n=pK({},t().history);delete n[r],e({history:n}),localStorage.setItem(pJ,JSON.stringify(n))},addHistory:r=>{var n,o;let{type:i}=r,a=t().history,s=a[i]||[],l=JSON.stringify({prompt:r.prompt,params:r.params}),c=[r,...s.filter(e=>JSON.stringify({prompt:e.prompt,params:e.params})!==l)];c.length>10&&(c.length=10);let A=(n=pK({},a),o=o={[i]:c},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(o)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(o,e))}),n);e({history:A}),localStorage.setItem(pJ,JSON.stringify(A))},getHistoryForType:e=>t().history[e]||[],setLastSelectedType:t=>{e({lastSelectedType:t}),localStorage.setItem(pQ,t)}}}),pX=e=>{if(!e)return"";if("aiAct"===e)return"Action";let t=e.startsWith("ai")?e.slice(2):e;if(t.startsWith("IOS"))return t.substring(3).replace(/([A-Z])/g," $1").replace(/^/,"IOS").trim();let r=t.replace(/([A-Z])/g," $1").trim(),n=r.split(" ");return(n.length>3?n.slice(-3).join(" "):r).replace(/\b\w/g,e=>e.toUpperCase())};function pW(e){return{supportsImeStrategy:"android"===e,supportsScreenshotStrategy:"android"===e,supportsKeyboardDismissStrategy:"android"===e||"harmony"===e,supportsAutoDismissKeyboard:"android"===e||"ios"===e||"harmony"===e,supportsAlwaysRefreshScreenInfo:"android"===e}}function pH(e){return Object.values(pW(e)).some(Boolean)}var pY=r(16356);let pG=e=>{var t,r;return(0,a.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:27,height:27,fill:"none",viewBox:"0 0 27 27"},e),r=r={children:(0,a.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(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},pV=e=>{let t,{showDeepLocateOption:r=!1,showDeepThinkOption:n=!1,enableTracking:o=!1,showDataExtractionOptions:i=!1,hideDomAndScreenshotOptions:s=!1,deviceType:l,trigger:c,popupPlacement:A="bottomRight"}=e,u=Z(e=>e.forceSameTabNavigation),d=Z(e=>e.setForceSameTabNavigation),p=Z(e=>e.deepLocate),m=Z(e=>e.setDeepLocate),f=Z(e=>e.deepThink),g=Z(e=>e.setDeepThink),y=Z(e=>e.screenshotIncluded),v=Z(e=>e.setScreenshotIncluded),b=Z(e=>e.domIncluded),w=Z(e=>e.setDomIncluded),E=Z(e=>e.imeStrategy),x=Z(e=>e.setImeStrategy),k=Z(e=>e.screenshotStrategy),S=Z(e=>e.setScreenshotStrategy),I=Z(e=>e.autoDismissKeyboard),C=Z(e=>e.setAutoDismissKeyboard),O=Z(e=>e.keyboardDismissStrategy),R=Z(e=>e.setKeyboardDismissStrategy),j=Z(e=>e.alwaysRefreshScreenInfo),P=Z(e=>e.setAlwaysRefreshScreenInfo),M=pW(l),T=pH(l);if(!o&&!r&&!n&&!i&&!T)return null;let N=(t=[],o&&t.push({label:(0,a.jsx)(pY.A,{onChange:e=>d(e.target.checked),checked:u,children:"Limit popup to current tab"}),key:"track-config"}),r&&t.push({label:(0,a.jsx)(pY.A,{onChange:e=>{m(e.target.checked)},checked:p,children:"Deep Locate"}),key:"deep-locate-config"}),n&&t.push({label:(0,a.jsxs)("div",{style:{padding:"4px 0"},children:[(0,a.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Deep Think"}),(0,a.jsxs)(pz.A.Group,{size:"small",value:f,onChange:e=>g(e.target.value),children:[(0,a.jsx)(h.A,{title:"Controlled by MIDSCENE_MODEL_REASONING_ENABLED env variable",children:(0,a.jsx)(pz.A,{value:"unset",children:"Auto"})}),(0,a.jsx)(pz.A,{value:!0,children:"On"}),(0,a.jsx)(pz.A,{value:!1,children:"Off"})]})]}),key:"deep-think-config"}),i&&!s&&(t.push({label:(0,a.jsx)(pY.A,{onChange:e=>{v(e.target.checked)},checked:y,children:"Include screenshot in request"}),key:"screenshot-included-config"}),t.push({label:(0,a.jsxs)("div",{style:{padding:"4px 0"},children:[(0,a.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Include DOM info in request"}),(0,a.jsxs)(pz.A.Group,{size:"small",value:b,onChange:e=>w(e.target.value),children:[(0,a.jsx)(pz.A,{value:!1,children:"Off"}),(0,a.jsx)(pz.A,{value:!0,children:"All"}),(0,a.jsx)(pz.A,{value:"visible-only",children:"Visible only"})]})]}),key:"dom-included-config"})),M.supportsImeStrategy&&(t.push({label:(0,a.jsxs)("div",{style:{padding:"4px 0"},children:[(0,a.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"IME strategy"}),(0,a.jsxs)(pz.A.Group,{size:"small",value:E,onChange:e=>x(e.target.value),children:[(0,a.jsx)(pz.A,{value:"always-yadb",children:"Always YADB"}),(0,a.jsx)(pz.A,{value:"yadb-for-non-ascii",children:"YADB for non-ASCII"})]})]}),key:"ime-strategy-config"}),M.supportsScreenshotStrategy&&t.push({label:(0,a.jsxs)("div",{style:{padding:"4px 0"},children:[(0,a.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Screenshot strategy"}),(0,a.jsxs)(pz.A.Group,{size:"small",value:k,onChange:e=>S(e.target.value),children:[(0,a.jsx)(pz.A,{value:"auto",children:"Auto"}),(0,a.jsx)(pz.A,{value:"always-yadb",children:"Always YADB"})]})]}),key:"screenshot-strategy-config"}),M.supportsAutoDismissKeyboard&&t.push({label:(0,a.jsx)(pY.A,{onChange:e=>C(e.target.checked),checked:I,children:uq}),key:"auto-dismiss-keyboard-config"}),M.supportsKeyboardDismissStrategy&&t.push({label:(0,a.jsxs)("div",{style:{padding:"4px 0"},children:[(0,a.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Keyboard dismiss strategy"}),(0,a.jsxs)(pz.A.Group,{size:"small",value:O,onChange:e=>R(e.target.value),children:[(0,a.jsx)(pz.A,{value:"esc-first",children:"ESC first"}),(0,a.jsx)(pz.A,{value:"back-first",children:"Back first"})]})]}),key:"keyboard-dismiss-strategy-config"}),M.supportsAlwaysRefreshScreenInfo&&t.push({label:(0,a.jsx)(pY.A,{onChange:e=>P(e.target.checked),checked:j,children:"Always refresh screen info"}),key:"always-refresh-screen-info-config"})),!M.supportsImeStrategy&&M.supportsAutoDismissKeyboard&&t.push({label:(0,a.jsx)(pY.A,{onChange:e=>C(e.target.checked),checked:I,children:uq}),key:"auto-dismiss-keyboard-config"}),t),D=null!=c?c:(0,a.jsx)("button",{"aria-label":"Open run configuration",className:"selector-trigger-button",type:"button",children:(0,a.jsx)(pG,{width:24,height:24})});return(0,a.jsx)("div",{className:"selector-trigger",children:(0,a.jsx)(d3.A,{getPopupContainer:e=>e.ownerDocument.body,menu:{items:N},overlayClassName:"config-selector-dropdown",overlayStyle:{zIndex:10010},placement:A,trigger:["click"],children:D})})};var p$=r(82752);let{TextArea:p_}=J.A,p0=(e,t)=>`${e}${t?" (Optional)":""}`,p1=e=>{let{name:t,label:r,isRequired:n,marginBottom:o,placeholder:i}=e,s=i||`Enter ${t}`;return(0,a.jsx)(ub.A.Item,{name:["params",t],label:p0(r,!n),rules:n?[{required:!0,message:`Please input ${t}`}]:[],style:{marginBottom:o},colon:!1,children:(0,a.jsx)(J.A,{placeholder:s})},t)},p2=e=>{let{name:t,label:r,isRequired:n,marginBottom:o,placeholder:i}=e,s=i||`Describe the ${t}, use natural language`;return(0,a.jsx)(ub.A.Item,{name:["params",t],label:p0(r,!n),rules:n?[{required:!0,message:`The ${t} is required`}]:[],style:{marginBottom:o},colon:!1,children:(0,a.jsx)(p_,{rows:2,placeholder:s})},t)},p3=e=>{var t;let{name:r,label:n,fieldSchema:o,isRequired:i,marginBottom:s,placeholder:l}=e,c=((null==(t=o._def)?void 0:t.values)||[]).map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)}));return(0,a.jsx)(ub.A.Item,{name:["params",r],label:n,rules:i?[{required:!0,message:`Please select ${r}`}]:[],style:{marginBottom:s},colon:!1,children:(0,a.jsx)(X.A,{placeholder:l||`Select ${r}`,options:c})},r)},p5=e=>{let{name:t,label:r,isRequired:n,marginBottom:o,placeholder:i}=e,s=500*("distance"===t),l=i&&Number(i)||s,c="distance"===t?1e4:void 0;return(0,a.jsx)(ub.A.Item,{name:["params",t],label:`${r}${"distance"===t?" (px)":""}`,rules:n?[{required:!0,message:`Please input ${t}`},{type:"number",min:0,message:`${r} must be at least 0`}]:[{type:"number",min:0,message:`${r} must be at least 0`}],style:{flex:"distance"===t?1:void 0,marginBottom:o},colon:!1,children:(0,a.jsx)(p$.A,{placeholder:l.toString(),min:0,max:c,step:"distance"===t?10:1,style:{width:"100%"}})},t)},p4=e=>{let{name:t,label:r,isRequired:n,marginBottom:o,placeholder:i}=e;return(0,a.jsx)(ub.A.Item,{name:["params",t],label:p0(r,!n),rules:n?[{required:!0,message:`Please select ${t}`}]:[],style:{marginBottom:o},colon:!1,children:(0,a.jsx)(X.A,{placeholder:i||`Select ${t}`,options:[{value:!0,label:"True"},{value:!1,label:"False"}]})},t)};var p7=r(70316);let p8=e=>{var t,r;return(0,a.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:18,height:16,fill:"none",viewBox:"0 0 18 16"},e),r=r={children:(0,a.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(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},p6=e=>{var t,r;return(0,a.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:25,height:25,fill:"none",viewBox:"0 0 25 25"},e),r=r={children:[(0,a.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,a.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(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},p9=e=>{var t,r;return(0,a.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:19,height:19,fill:"none",viewBox:"0 0 19 19"},e),r=r={children:[(0,a.jsxs)("g",{stroke:"currentColor",strokeLinejoin:"round",strokeOpacity:.65,strokeWidth:1.5,clipPath:"url(#magnifying-glass_svg__a)",children:[(0,a.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,a.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,a.jsx)("defs",{children:(0,a.jsx)("clipPath",{id:"magnifying-glass_svg__a",children:(0,a.jsx)("path",{fill:"#fff",d:"M.522.04h18v18h-18z"})})})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},{Text:he}=d.A,ht=e=>{let{onSelect:t,history:r,currentType:n,trigger:o,popupPlacement:i="bottom",title:l="History",showClear:c=!0,onClear:A,searchPlaceholder:u="Search",emptyText:d="No history record",noMatchText:p="No matching history record",renderItemActions:h,renderItemLabel:m,overlayClassName:f,popupWidth:g=320,popupHeight:y=400,portalContainerSelector:v}=e,[b,w]=(0,s.useState)(!1),[E,x]=(0,s.useState)(""),[k,S]=(0,s.useState)(0),I=pq(e=>e.clearHistory),C=(0,s.useRef)(null),O=(0,s.useRef)(null),[R,j]=(0,s.useState)(null),[P,M]=(0,s.useState)(null),[T,N]=(0,s.useState)(!1),D=(0,s.useMemo)(()=>{let e=Date.now(),t=e-6048e5,n=e-31536e6,o=r.filter(e=>e.prompt.toLowerCase().includes(E.toLowerCase()));return{recent7Days:o.filter(e=>e.timestamp>=t),recent1Year:o.filter(e=>e.timestamp<t&&e.timestamp>=n),older:o.filter(e=>e.timestamp<n)}},[r,E]),z=()=>{w(!1)};(0,s.useEffect)(()=>{if(!b)return;let e=()=>{var e,t;if(!O.current)return;let r=O.current.getBoundingClientRect(),n=v?O.current.closest(v):null,o=null==n?void 0:n.getBoundingClientRect(),a=null!=(e=null==o?void 0:o.width)?e:window.innerWidth,s=null!=(t=null==o?void 0:o.height)?t:window.innerHeight,l=o?r.right-o.left:r.right,c=o?r.top-o.top:r.top,A=o?r.bottom-o.top:r.bottom,u=Math.max(16,a-g-16),d=Math.max(16,s-y-16);j({left:Math.min(Math.max(16,l-g),u),top:Math.min(Math.max(16,"top"===i?c-y-8:A+8),d)}),M(null!=n?n:document.body),N(!!n)},t=e=>{C.current&&!C.current.contains(e.target)&&O.current&&!O.current.contains(e.target)&&w(!1)};e();let r=setTimeout(()=>{document.addEventListener("click",t)},100);return window.addEventListener("resize",e),window.addEventListener("scroll",e,!0),()=>{clearTimeout(r),document.removeEventListener("click",t),window.removeEventListener("resize",e),window.removeEventListener("scroll",e,!0)}},[b,y,i,g,v]);let B=(e,r)=>0===r.length?null:(0,a.jsxs)("div",{className:"history-group",children:[(0,a.jsx)("div",{className:"history-group-title",children:e}),r.map((e,r)=>(0,a.jsxs)("div",{className:"history-item",onClick:()=>{t(e),w(!1)},children:[(0,a.jsx)("span",{className:"history-item-label",children:m?m(e,{close:z}):e.prompt}),h?(0,a.jsx)("span",{className:"history-item-actions",onClick:e=>e.stopPropagation(),children:h(e,{close:z,scrollVersion:k})}):null]},`${e.timestamp}-${r}`))]},e);return(0,a.jsxs)("div",{className:"history-selector-wrapper",children:[(0,a.jsx)("div",{className:"selector-trigger",onClick:()=>w(e=>!e),ref:O,children:null!=o?o:(0,a.jsx)(p6,{width:24,height:24})}),b&&R&&P&&(0,p7.createPortal)((0,a.jsx)("div",{className:f?`history-modal-overlay ${f}${T?" history-modal-overlay-in-container":""}`:`history-modal-overlay${T?" history-modal-overlay-in-container":""}`,ref:C,style:R,children:(0,a.jsxs)("div",{className:"history-modal-container",children:[(0,a.jsxs)("div",{className:"history-modal-header",children:[(0,a.jsxs)(he,{strong:!0,style:{fontSize:"16px"},children:[l," (",r.length,")"]}),(0,a.jsx)(q.Ay,{size:"small",type:"text",icon:(0,a.jsx)(p8,{width:16,height:16}),onClick:()=>w(!1),className:"close-button"})]}),(0,a.jsx)("div",{className:"history-search-section",children:(0,a.jsxs)("div",{className:"search-input-wrapper",children:[(0,a.jsx)(J.A,{placeholder:u,value:E,onChange:e=>x(e.target.value),prefix:(0,a.jsx)(p9,{width:18,height:18}),className:"search-input",allowClear:!0}),c?(0,a.jsx)(q.Ay,{type:"link",onClick:()=>{A?A():I(n),x(""),w(!1)},className:"clear-button",disabled:0===r.length,children:"Clear"}):null]})}),(0,a.jsx)("div",{className:"history-content",onScroll:()=>{S(e=>e+1)},children:0===r.length?(0,a.jsx)("div",{className:"no-results",children:(0,a.jsx)(he,{type:"secondary",children:d})}):(0,a.jsxs)(a.Fragment,{children:[B("Last 7 days",D.recent7Days),B("Last 1 year",D.recent1Year),B("Earlier",D.older),E&&0===D.recent7Days.length&&0===D.recent1Year.length&&0===D.older.length&&(0,a.jsx)("div",{className:"no-results",children:(0,a.jsx)(he,{type:"secondary",children:p})})]})})]})}),P)]})};function hr(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}let{TextArea:hn}=J.A;function ho(){return(0,a.jsx)("span",{"aria-hidden":"true",className:"prompt-stop-square-icon"})}let hi=e=>{var t,r,n,o,i,l,c,A;let{runButtonEnabled:u,form:d,serviceMode:p,selectedType:m,dryMode:f,stoppable:g,loading:y,onRun:v,onStop:b,clearPromptAfterRun:w=!0,actionSpace:E,hideDomAndScreenshotOptions:x=!1,deviceType:k,chrome:S}=e,[I,C]=(0,s.useState)(!1),[O,R]=(0,s.useState)(""),j="aiQuery"===m?"What do you want to query?":"aiAssert"===m?"What do you want to assert?":"aiTap"===m?"What element do you want to tap?":"aiDoubleClick"===m?"What element do you want to double-click?":"aiHover"===m?"What element do you want to hover over?":"aiInput"===m?"Format: <value> | <element>\nExample: hello world | search box":"aiRightClick"===m?"What element do you want to right-click?":"aiKeyboardPress"===m?"Format: <key> | <element (optional)>\nExample: Enter | text field":"aiScroll"===m?"Format: <direction> <amount> | <element (optional)>\nExample: down 500 | main content":"aiLocate"===m?"What element do you want to locate?":"aiBoolean"===m?"What do you want to check (returns true/false)?":"aiNumber"===m?"What number do you want to extract?":"aiString"===m?"What text do you want to extract?":"aiAsk"===m?"What do you want to ask?":"aiWaitFor"===m?"What condition do you want to wait for?":"What do you want to do?",P=(null==S?void 0:S.variant)==="minimal",M=(null==S?void 0:S.placeholder)||j,T=(A=null==S?void 0:S.primaryActionLabel)?A:pX(m)||"Action",N=null!=(i=null==S?void 0:S.settingsPlacement)?i:"toolbar",D=(0,s.useRef)(null),z=(0,s.useRef)(null),B=ub.A.useWatch("params",d),F=(0,s.useRef)(null),L=pq(e=>e.history),U=pq(e=>e.lastSelectedType),K=pq(e=>e.addHistory),Z=pq(e=>e.setLastSelectedType),Q=(0,s.useMemo)(()=>L[m]||[],[L,m]),X=(0,s.useMemo)(()=>pP(E,m),[E,m]),{markExplicitSelection:W,skipNextRestore:H,shouldSkipRestoreOnce:Y}=function(e){let{enabled:t,form:r,selectedType:n,onAfterReset:o,defaultType:i="aiAct"}=e,[a,l]=(0,s.useState)(!1),c=(0,s.useRef)(!1);(0,s.useEffect)(()=>{t&&!a&&n&&n!==i&&(c.current=!1,r.setFieldsValue({type:i,prompt:"",params:{}}),null==o||o())},[t,a,n,i,r,o]);let A=(0,s.useCallback)(()=>{t&&l(!0)},[t]),u=(0,s.useCallback)(()=>{c.current=!0},[]),d=(0,s.useCallback)(()=>!!c.current&&(c.current=!1,!0),[]);return(0,s.useMemo)(()=>({markExplicitSelection:A,skipNextRestore:u,shouldSkipRestoreOnce:d}),[A,u,d])}({enabled:P,form:d,selectedType:m,onAfterReset:(0,s.useCallback)(()=>{F.current=null,R("")},[])}),G=(0,s.useMemo)(()=>!!E&&!!(null==X?void 0:X.paramSchema)&&(!pO(X.paramSchema)||Object.keys(X.paramSchema.shape||{}).length>0),[m,X,E]),V=(0,s.useMemo)(()=>{if(E&&E.length>0&&X){if(X.paramSchema&&pO(X.paramSchema)){let e=X.paramSchema.shape||{};return Object.keys(e).some(t=>{let{isOptional:r}=pj(e[t]);return!r})}return!!X.paramSchema}return!0},[m,X,E]),$=(0,s.useMemo)(()=>["aiQuery","aiBoolean","aiNumber","aiString","aiAsk","aiAssert"].includes(m),[m]),_=(0,s.useMemo)(()=>{if("aiAct"===m||"aiLocate"===m)return!0;if(E&&(null==X?void 0:X.paramSchema)&&pO(X.paramSchema)){let e=X.paramSchema.shape||{};return Object.keys(e).some(t=>{let{actualField:r}=pj(e[t]);return pR(r)})}return!1},[m,X,E]),ee=(0,s.useMemo)(()=>"aiAct"===m,[m]),et=(0,s.useMemo)(()=>{let e="In-Browser-Extension"===p,t=$&&!x,r=pH(k);return e||_||ee||t||r},[p,_,ee,$,x,k]),er=(0,s.useMemo)(()=>(e=>{let t=Object.keys(uX);if(!(null==e?void 0:e.length))return t;let r=e.map(e=>e.interfaceAlias||e.name),n=new Set;return t.forEach(e=>{let t=uX[e];"aiAct"===e||(null==t?void 0:t.group)==="extraction"||(null==t?void 0:t.group)==="validation"?n.add(e):r.includes(e)&&n.add(e)}),r.forEach(e=>{n.add(e)}),Array.from(n)})(E),[E]),en=(0,s.useMemo)(()=>er.filter(e=>!uW.includes(e)),[er]),eo=(0,s.useCallback)(e=>{W(),d.setFieldValue("type",e)},[d,W]),ei=(0,s.useMemo)(()=>[{key:"interaction-group",label:"Interaction APIs",match:e=>{var t;return(null==(t=uX[e])?void 0:t.group)==="interaction"}},{key:"extraction-group",label:"Data Extraction APIs",match:e=>{var t;return(null==(t=uX[e])?void 0:t.group)==="extraction"}},{key:"validation-group",label:"Validation APIs",match:e=>{var t;return(null==(t=uX[e])?void 0:t.group)==="validation"}},{key:"device-specific-group",label:"Device-Specific APIs",match:e=>!uX[e]}],[]),ea=(0,s.useCallback)(e=>{var t;return{key:e,label:pX(e),title:(null==(t=uX[e])?void 0:t.title)||"",onClick:()=>eo(e)}},[eo]),es=(0,s.useMemo)(()=>{let e=[];for(let t of ei){let r=en.filter(t.match);0!==r.length&&e.push({key:t.key,type:"group",label:t.label,children:r.map(ea)})}return e},[ei,en,ea]),el=(0,s.useMemo)(()=>{let e=uW.filter(e=>er.includes(e)),t=[];return e.length>0&&t.push({key:"primary-group",type:"group",label:"Primary APIs",children:e.map(ea)}),t.push(...es),{items:t}},[er,ea,es]),ec=(0,s.useMemo)(()=>({items:es}),[es]),eA=(0,s.useCallback)(()=>{if(!G||!E)return{};if((null==X?void 0:X.paramSchema)&&pO(X.paramSchema)){let e={},t=X.paramSchema.shape||{};return Object.keys(t).forEach(r=>{let n=(e=>{var t;let r=e;for(;null==(t=r._def)?void 0:t.innerType;){if(r._def.typeName===pS){if("function"==typeof r._def.defaultValue)return r._def.defaultValue();if(void 0!==r._def._serializedDefaultValue)return r._def._serializedDefaultValue}r=r._def.innerType}})(t[r]);void 0!==n&&(e[r]=n)}),e}return{}},[m,G,X,E]);(0,s.useEffect)(()=>{P||d.getFieldValue("type")||!U||d.setFieldValue("type",U)},[d,P,U]),(0,s.useEffect)(()=>{!P&&m&&m!==U&&Z(m)},[m,P,U,Z]);let eu=(0,s.useCallback)(()=>{let e=z.current;if(!e)return;let t=null,r=e.querySelector(".ant-radio-button-wrapper-checked"),n=e.querySelector(".more-apis-button.selected-from-dropdown");if(r?t=r:n&&(t=n),t){let r=e.getBoundingClientRect(),n=t.getBoundingClientRect(),o=n.left-r.left+e.scrollLeft,i=n.width,a=r.width;e.scrollTo({left:Math.max(0,o-(a-i)/2),behavior:"smooth"})}},[]);(0,s.useEffect)(()=>{if(Y())return;if(P){let e=eA();d.setFieldsValue({prompt:"",params:e}),R(""),F.current=null;return}let e=Q[0];if(!e||!F.current||e.timestamp!==F.current.timestamp)if(e)d.setFieldsValue({type:e.type,prompt:e.prompt||"",params:e.params}),R(e.prompt||""),F.current=e;else{let e=eA();d.setFieldsValue({prompt:"",params:e}),R(""),F.current=null}},[m,Q,d,eA,P,Y]),(0,s.useEffect)(()=>{let e=setTimeout(()=>{eu()},100);return()=>clearTimeout(e)},[m,eu]);let ed=ub.A.useWatch("prompt",d);(0,s.useEffect)(()=>{ed!==O&&R(ed||"")},[ed,O]);let ep=(0,s.useCallback)(e=>{W(),e.type!==m&&H(),d.setFieldsValue({prompt:e.prompt,type:e.type,params:e.params}),R(e.prompt)},[d,W,m,H]),eh=(0,s.useCallback)(e=>{R(e.target.value)},[]),em=(0,s.useMemo)(()=>!!G&&!!E&&!!((null==X?void 0:X.paramSchema)&&pO(X.paramSchema))&&1===Object.keys(X.paramSchema.shape||{}).length,[m,G,X,E]),ef=(0,s.useMemo)(()=>P?pM(E,m):null,[E,P,m]),eg=(0,s.useMemo)(()=>((e,t,r,n,o)=>{if(!e)return!1;if(!(()=>{if(n){if(!n.paramSchema)return!1;if("object"==typeof n.paramSchema&&"shape"in n.paramSchema)return Object.keys(n.paramSchema.shape||{}).length>0}return!0})())return!0;if(t){let e=r||{};if((null==n?void 0:n.paramSchema)&&pO(n.paramSchema)){let t=n.paramSchema.shape||{};return Object.keys(t).every(r=>{let{isOptional:n}=pj(t[r]),o=e[r];return n||void 0!==o&&""!==o&&null!==o})}return!0}return o.trim().length>0})(u,!!G,B,X,O),[u,G,X,O,B]),ey=V&&!G&&!O.trim()&&!y&&!g,ev=(0,s.useCallback)(()=>{let e=d.getFieldsValue(),t="";if(G&&e.params&&E)if((null==X?void 0:X.paramSchema)&&pO(X.paramSchema)){let r="",n=[],o=X.paramSchema.shape||{};Object.keys(o).forEach(t=>{var i;let a=null==(i=e.params)?void 0:i[t];if(null!=a&&""!==a){let{actualField:e}=pj(o[t]);pR(e)?r=String(a):"distance"===t?n.push(`${a}`):n.push(String(a))}});let i=n.join(" ");t=r?`${r} - ${i}`:i}else t=e.prompt||"";else t=e.prompt||"";let r={type:e.type,prompt:t,params:e.params,timestamp:Date.now()};if(K(r),v(),w)if(F.current=r,R(""),G){let e=eA();d.setFieldValue("params",e)}else d.setFieldValue("prompt","")},[d,K,v,G,m,w,E,X,eA]),eb=(0,s.useCallback)(e=>{"Enter"===e.key&&e.metaKey&&eg?(ev(),e.preventDefault(),e.stopPropagation()):"Enter"===e.key&&setTimeout(()=>{if(D.current){var e;let t=null==(e=D.current.resizableTextArea)?void 0:e.textArea;if(t){let e=t.selectionStart,r=t.value.lastIndexOf("\n");(-1===r||e>r)&&(t.scrollTop=t.scrollHeight)}}},0)},[ev,eg]),ew=(0,s.useCallback)(e=>{"Enter"===e.key&&e.metaKey&&eg&&(ev(),e.preventDefault(),e.stopPropagation())},[ev,eg]),eE=(0,s.useCallback)(()=>{if(!G)return null;if(E&&(null==X?void 0:X.paramSchema)&&pO(X.paramSchema)){let e=X.paramSchema.shape||{},t=Object.keys(e);if(1===t.length){let r=t[0],{actualField:n}=pj(e[r]),o=pR(n),i=(()=>{var e,t;if(null==(e=n._def)?void 0:e.description)return n._def.description;if(n.description)return n.description;if(E&&(null==X?void 0:X.paramSchema)&&"object"==typeof X.paramSchema&&"shape"in X.paramSchema){let e=(X.paramSchema.shape||{})[r];if(null==e||null==(t=e._def)?void 0:t.description)return e._def.description;if(null==e?void 0:e.description)return e.description}return o?"Describe the element you want to interact with":"keyName"===r?"Enter key name or text to type":"value"===r?"Enter text to input":`Enter ${r}`})();return(0,a.jsx)(ub.A.Item,{name:["params",r],style:{margin:0},children:(0,a.jsx)(J.A.TextArea,{className:"main-side-console-input-textarea",rows:3,placeholder:i,autoFocus:!0,onKeyDown:ew})})}let r=[],n=t.sort((t,r)=>{let n=e[t],o=e[r],{isOptional:i}=pj(n),{isOptional:a}=pj(o);return!i&&a?-1:i&&!a?1:0});if(n.forEach((t,o)=>{var i,s,l;let{actualField:c,isOptional:A}=pj(e[t]),u=pR(c),d=t.charAt(0).toUpperCase()+t.slice(1),p=12*(o!==n.length-1),h=(()=>{var e,r;if(null==(e=c._def)?void 0:e.description)return c._def.description;if(c.description)return c.description;if(E&&(null==X?void 0:X.paramSchema)&&"object"==typeof X.paramSchema&&"shape"in X.paramSchema){let e=(X.paramSchema.shape||{})[t];if(null==e||null==(r=e._def)?void 0:r.description)return e._def.description;if(null==e?void 0:e.description)return e.description}if(u)return"Describe the element you want to interact with"})(),m={name:t,label:d,fieldSchema:c,isRequired:!A,marginBottom:p,placeholder:h};u?r.push((0,a.jsx)(p2,hr({},m),t)):(null==(i=c._def)?void 0:i.typeName)==="ZodEnum"?r.push((0,a.jsx)(p3,hr({},m),t)):(null==(s=c._def)?void 0:s.typeName)==="ZodNumber"?r.push((0,a.jsx)(p5,hr({},m),t)):(null==(l=c._def)?void 0:l.typeName)==="ZodBoolean"?r.push((0,a.jsx)(p4,hr({},m),t)):r.push((0,a.jsx)(p1,hr({},m),t))}),"aiScroll"===m){let e=r.find(e=>s.isValidElement(e)&&"direction"===e.props.name),t=r.find(e=>s.isValidElement(e)&&"distance"===e.props.name),n=r.filter(e=>s.isValidElement(e)&&"direction"!==e.props.name&&"distance"!==e.props.name);if(e&&t)return(0,a.jsxs)("div",{className:"structured-params",children:[(0,a.jsxs)("div",{style:{display:"flex",gap:12,marginBottom:12},children:[e,t]}),n]})}return(0,a.jsx)("div",{className:"structured-params",children:r})}return null},[m,G,E,X,ew]),ex=(0,s.useCallback)(()=>{C(!0)},[]),ek=(0,s.useCallback)(()=>{C(!1)},[]),eS=(0,s.useCallback)(()=>{let e=e=>(0,a.jsx)(q.Ay,{type:"primary",icon:(0,a.jsx)(pT.A,{}),style:{borderRadius:20,zIndex:999},onClick:ev,disabled:!eg,loading:y,children:e});return f?"aiAct"===m?(0,a.jsx)(h.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"):g?(0,a.jsx)(q.Ay,{className:"prompt-stop-button",icon:(0,a.jsx)(ho,{}),onClick:b,style:{borderRadius:20,zIndex:999},children:"Stop"}):e("Run")},[f,y,ev,b,eg,m,g]),eI=(0,s.useCallback)(()=>{let e=e=>(0,a.jsx)(q.Ay,{"aria-label":e,className:"minimal-run-trigger",type:"primary",icon:(0,a.jsx)(pN.A,{}),onClick:ev,disabled:!eg,loading:y});return f?"aiAct"===m?(0,a.jsx)(h.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"):g?(0,a.jsx)(q.Ay,{"aria-label":"Stop running",className:"minimal-run-trigger minimal-run-trigger-stop prompt-stop-button",icon:(0,a.jsx)(ho,{}),onClick:b}):e("Run")},[f,y,ev,eg,b,m,g]),eC=null!=(l=null==S||null==(t=S.icons)?void 0:t.action)?l:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAAASdJREFUeAHtlt3NgjAUhg8/CVx+G8gGX5xAnUDdQMcgkIgJBLbQEXQD3MAR6gZewgXgOUn9iRp6vAC96JM07YG36Zv+nBZAwySO4ymWgUoXRdEfaYGJyRElSbKyLGuHJVdpHcc5khb7RMCAZcA0TU82PYZ8IPsoZ4ttoEu0ga8bMB6DNE1X8H6jTUBuLmQL7SxkLbDkzz/ruhZBEKxfDGRZNm2aZgc9UFXVLAzDPbVvS1AUxQGrE3SPwHK8BganBy7NBuTU+r5vKLSNbG5RuwQF+hRoA9rA76RifMl4+JjI4Z5yu0KUZTnE8c4U3GbAdd3/HgYnPNu2R9eg98uIvmOGfL2M2tCpWBv4BQPiqW7j9IGWZ4CODT7X5pRAVFrUjEn7eNQ0bVwAyWpjMDlJKpAAAAAASUVORK5CYII=",eO=null==S||null==(r=S.icons)?void 0:r.actionChevron,eR=null!=(c=null==S||null==(n=S.icons)?void 0:n.settings)?c:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAAAaFJREFUeAHtlt9tgzAQxi8EJa/pBMkIHYENygalG7RvSQQKlfjz2I5ANkg3oBukG6QbtI9IIPq5ihHQOBXmFImqPwnZBvtsf9ydTfQPA77vz4IguCENDGJgOp3ux+PxLgxDnzrCsgAw/zZmGPOO48iUFci4wE42xITKXlEUO9d1X34s4NjZISZU9qCSjeKqastKWZYpMaKyNxqNto02MRDHcXmsJqvV6q7LWBYnxK4+SBOTeHDw2HAwn4aGlg9EUfQE2e+xYwchtaUeaPmAmFyUyH4W9aThA9jZ7alOiN39crl8O/FpoRpzjrq96hcgj2/wwVcNQlxb6/X6VdRrYaeNtGfUVvXbgE9iRNprOCHktPF/Z+3OeZ4fPM9LZbumgHjX2Qnr9rSioE/ma6MVBZDvWWQ/cbLR0GE5jEQoQhFLpGIkpvcuY1nOAkyeiBKJSRSXPw37UCkgbrWmaSZwsBkxoLInHBgJ6EG2KwUgn801+Tl78hyRVApkWfaIexxp4rRfqOzBUdN6+29cyYAMvQN1hCUMIbc1mUyu4VzDz4wX5wvRfah9kIOcwwAAAABJRU5ErkJggg==",ej=null==S||null==(o=S.icons)?void 0:o.history,eP=(0,s.useCallback)(()=>et&&"input"===N?(0,a.jsx)("div",{className:I?"settings-wrapper settings-wrapper-hover":"settings-wrapper",onMouseEnter:ex,onMouseLeave:ek,children:(0,a.jsx)(pV,{enableTracking:"In-Browser-Extension"===p,showDeepLocateOption:_,showDeepThinkOption:ee,showDataExtractionOptions:$,hideDomAndScreenshotOptions:x,deviceType:k,popupPlacement:"topLeft",trigger:(0,a.jsx)("button",{"aria-label":"Open run configuration",className:"input-icon-trigger",type:"button",children:(0,a.jsx)("img",{alt:"",className:"input-toolbar-icon",src:eR})})})}):null,[k,ex,ek,et,x,I,eR,p,N,$,_,ee]),eM=V?G?ef?(0,a.jsx)(ub.A.Item,{name:["params",ef.name],style:{margin:0},children:(0,a.jsx)(hn,{className:"main-side-console-input-textarea",disabled:!u,rows:3,placeholder:"prompt"===ef.name?M:ef.placeholder,autoFocus:!0,onKeyDown:ew})}):em?eE():(0,a.jsx)("div",{className:"structured-params-container",children:eE()}):(0,a.jsx)(ub.A.Item,{name:"prompt",style:{margin:0},children:(0,a.jsx)(hn,{className:"main-side-console-input-textarea",disabled:!u,rows:3,placeholder:M,autoFocus:!0,onKeyDown:eb,onChange:eh,ref:D})}):(0,a.jsxs)("div",{className:"no-input-method",children:['Click "Run" to execute ',pX(m)]});return P?(0,a.jsxs)("div",{className:"prompt-input-wrapper prompt-input-wrapper-minimal",children:[(0,a.jsx)(ub.A.Item,{hidden:!0,name:"type",style:{margin:0},children:(0,a.jsx)(J.A,{})}),(0,a.jsxs)("div",{className:`main-side-console-input minimal-main-side-console-input ${!u?"disabled":""} ${y?"loading":""} ${ey?"prompt-input-empty":""}`,children:[eM,(0,a.jsxs)("div",{className:"minimal-toolbar-row",children:[(0,a.jsxs)("div",{className:"minimal-toolbar-left",children:[(0,a.jsx)(d3.A,{menu:el,placement:"topLeft",trigger:["click"],disabled:!u,overlayClassName:"more-apis-dropdown",children:(0,a.jsxs)("button",{"aria-label":`Select action type (current: ${T})`,className:"minimal-action-trigger",disabled:!u,type:"button",children:[(0,a.jsx)("img",{alt:"",className:"minimal-action-icon",src:eC}),(0,a.jsx)("span",{className:"minimal-action-label",children:T}),eO?(0,a.jsx)("img",{alt:"",className:"minimal-action-chevron",src:eO}):(0,a.jsx)(pB,{"aria-hidden":"true",className:"minimal-action-chevron",focusable:"false"})]})}),(0,a.jsx)(ht,{onSelect:ep,history:Q,currentType:m,popupPlacement:"top",trigger:(0,a.jsx)("button",{"aria-label":"Open prompt history",className:"minimal-icon-trigger",type:"button",children:ej?(0,a.jsx)("img",{alt:"",className:"minimal-toolbar-icon minimal-toolbar-icon-history",src:ej}):(0,a.jsx)(pF,{"aria-hidden":"true",className:"minimal-toolbar-icon minimal-toolbar-icon-history",focusable:"false"})})}),et&&"hidden"!==N?(0,a.jsx)("div",{className:I?"settings-wrapper settings-wrapper-hover":"settings-wrapper",onMouseEnter:ex,onMouseLeave:ek,children:(0,a.jsx)(pV,{enableTracking:"In-Browser-Extension"===p,showDeepLocateOption:_,showDeepThinkOption:ee,showDataExtractionOptions:$,hideDomAndScreenshotOptions:x,deviceType:k,popupPlacement:"topRight",trigger:(0,a.jsx)("button",{"aria-label":"Open run configuration",className:"minimal-icon-trigger",type:"button",children:(0,a.jsx)("img",{alt:"",className:"minimal-toolbar-icon",src:eR})})})}):null]}),(0,a.jsxs)("div",{className:"form-controller-wrapper",children:[null==S?void 0:S.inputActions,eI()]})]})]})]}):(0,a.jsxs)("div",{className:"prompt-input-wrapper",children:[(0,a.jsxs)("div",{className:"mode-radio-group-wrapper",children:[(0,a.jsxs)("div",{className:"mode-radio-group",ref:z,children:[(0,a.jsx)(ub.A.Item,{name:"type",style:{margin:0},children:(0,a.jsx)(pz.A.Group,{buttonStyle:"solid",disabled:!u,children:uW.map(e=>{var t;return(0,a.jsx)(h.A,{title:(null==(t=uX[e])?void 0:t.title)||"",children:(0,a.jsx)(pz.A.Button,{value:e,children:pX(e)})},e)})})}),(0,a.jsx)(d3.A,{menu:ec,placement:"bottomLeft",trigger:["click"],disabled:!u,overlayClassName:"more-apis-dropdown",children:(0,a.jsxs)(q.Ay,{className:`more-apis-button ${!uW.includes(m)?"selected-from-dropdown":""}`,children:[m&&!uW.includes(m)?pX(m):"more",(0,a.jsx)(pD.A,{style:{fontSize:"10px",marginLeft:"2px"}})]})})]}),(0,a.jsxs)("div",{className:"action-icons",children:[(0,a.jsx)(ht,{onSelect:ep,history:Q,currentType:m}),et&&"toolbar"===N&&(0,a.jsx)("div",{className:I?"settings-wrapper settings-wrapper-hover":"settings-wrapper",onMouseEnter:ex,onMouseLeave:ek,children:(0,a.jsx)(pV,{enableTracking:"In-Browser-Extension"===p,showDeepLocateOption:_,showDeepThinkOption:ee,showDataExtractionOptions:$,hideDomAndScreenshotOptions:x,deviceType:k})})]})]}),(0,a.jsxs)("div",{className:`main-side-console-input ${!u?"disabled":""} ${y?"loading":""} ${ey?"prompt-input-empty":""}`,children:[eM,(0,a.jsxs)("div",{className:"form-controller-wrapper",children:[(0,a.jsxs)("div",{className:"input-actions-wrapper",children:[eP(),null==S?void 0:S.inputActions]}),eS()]})]})]})};function ha(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}let hs=[...cO,...cR,"aiAct"];function hl(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function hc(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){hl(i,n,o,a,s,"next",e)}function s(e){hl(i,n,o,a,s,"throw",e)}a(void 0)})}}function hA(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}let hu=new Set;function hd(e){let{error:t}=e;if(!t)return null;let r=t.replace(/^(Error:\s*)+/,"Error: ");return(0,a.jsx)(W.A,{message:(0,a.jsx)("span",{style:{color:"#ff4d4f"},children:r}),type:"error",showIcon:!0})}function hp(e){let{action:t,content:r,description:n,error:o,shouldShowLoading:i}=e,{ref:l,truncated:c}=function(e,t){let r=(0,s.useRef)(null),[n,o]=(0,s.useState)(!1),i=(0,s.useCallback)(()=>{var e;o((e=r.current,!!e&&("multi-line"===t?e.scrollHeight-e.clientHeight>1:e.scrollWidth>e.clientWidth)))},[t]);return(0,s.useLayoutEffect)(()=>{if(i(),window.addEventListener("resize",i),"undefined"==typeof ResizeObserver||!r.current)return()=>window.removeEventListener("resize",i);let e=new ResizeObserver(i);return e.observe(r.current),()=>{window.removeEventListener("resize",i),e.disconnect()}},[e,i]),{ref:r,truncated:n}}(r,"multi-line"),A=(0,a.jsxs)("div",{className:"progress-row-content",children:[(0,a.jsxs)("div",{className:"progress-row-copy",ref:l,children:[t?(0,a.jsx)("span",{className:"progress-action-item",children:t}):null,n?(0,a.jsx)("div",{className:"progress-description-wrap",children:i?(0,a.jsx)(dK,{text:n,className:"progress-description"}):(0,a.jsx)("span",{className:"progress-description",children:n})}):null]}),o&&(0,a.jsx)(hd,{error:o})]});return c?(0,a.jsx)(h.A,{title:r,children:A}):A}function hh(e){var t,r,n,o,i,l,c;let{playgroundSDK:A,storage:u,contextProvider:d,config:p={},envConfigReminderProps:h,branding:m={},className:f="",dryMode:g=!1,showContextPreview:y=!0}=e,[v]=ub.A.useForm(),{config:b}=Z(),[w,E]=(0,s.useState)(!1),x=(0,s.useRef)(null);(0,s.useEffect)(()=>{hc(function*(){if(A&&"function"==typeof A.checkStatus)try{yield A.checkStatus(),E(!0)}catch(e){console.warn("Failed to initialize SDK, using default namespace:",e),E(!0)}else E(!0)})()},[A]);let k=p.storageNamespace,S=k?void 0:A&&A.id&&"string"==typeof A.id?`agent-${A.id}`:"playground-default",I=(0,s.useMemo)(()=>{if(!1===p.persistMessages)return null;if(u)return u;if(!w)return null;let e=k||S,t=dO();return console.log(`Using ${t} storage for namespace: ${e}`),dC(t,e)},[u,w,k,p.persistMessages,S]),{loading:C,setLoading:O,infoList:R,setInfoList:j,actionSpace:P,actionSpaceLoading:M,uiContextPreview:T,setUiContextPreview:N,showScrollToBottomButton:D,verticalMode:z,replayCounter:B,setReplayCounter:F,messagesInitialized:L,infoListRef:U,currentRunningIdRef:K,interruptedFlagRef:J,clearInfoList:Q,handleScrollToBottom:X}=function(e,t,r,n){let o=!(arguments.length>4)||void 0===arguments[4]||arguments[4],[i,a]=(0,s.useState)(!1),[l,c]=(0,s.useState)([]),[A,u]=(0,s.useState)([]),[d,p]=(0,s.useState)(!0),[h,m]=(0,s.useState)(),[f,g]=(0,s.useState)(!1),[y,v]=(0,s.useState)(!0),b=(0,s.useRef)(0),[w,E]=(0,s.useState)(!1),[x,k]=(0,s.useState)(0),S=(0,s.useRef)(null),I=(0,s.useRef)(null),C=(0,s.useRef)({}),O=(0,s.useRef)(),[,R]=(0,s.useState)(0);(0,s.useEffect)(()=>{let e=!1,r=null!=t?t:null,i=t=>{e||c(t)};return O.current!==r&&(t||0===l.length)&&dj(function*(){let a=dM(dP({},uH(n)),{id:"welcome",timestamp:new Date});if(null==t?void 0:t.loadMessages)try{let e=yield t.loadMessages();0===e.length&&(e=yield dj(function*(){if(!o)return[];let e=dC(dO(),"playground-default");try{if(null==e?void 0:e.loadMessages){let r=yield e.loadMessages();if(r.length>1)return console.log("Found data in old namespace, migrating..."),(null==t?void 0:t.saveMessages)&&(yield t.saveMessages(r)),e.clearMessages&&(yield e.clearMessages()),r}}catch(e){console.debug("No data found in old namespace:",e)}return[]})()),e.some(e=>"welcome"===e.id)?i(e):i([a,...e])}catch(e){console.error("Failed to load messages:",e),i([a])}else i([a]);e||(O.current=r,R(e=>e+1))})(),()=>{e=!0}},[o,t]),(0,s.useEffect)(()=>{(null==t?void 0:t.saveMessages)&&l.length>1&&t.saveMessages(l).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)})},[l,t]),(0,s.useEffect)(()=>{(null==r?void 0:r.getUIContext)&&!h&&r.getUIContext().then(e=>m(e)).catch(e=>{console.error("Failed to get UI context:",e)})},[r,h]),(0,s.useEffect)(()=>{dj(function*(){p(!0);try{var t;if(!e)return void u([]);let n=h||(yield null==r||null==(t=r.getUIContext)?void 0:t.call(r)),o=yield e.getActionSpace(n);u(o||[])}catch(e){console.error("Failed to load action space:",e),u([])}finally{p(!1)}})()},[e,h,r]),(0,s.useEffect)(()=>{E(window.innerWidth<750);let e=()=>{E(window.innerWidth<750)};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let j=(0,s.useCallback)(()=>{setTimeout(()=>{S.current&&(S.current.scrollTop=S.current.scrollHeight)},100)},[]),P=(0,s.useCallback)(()=>{if(S.current){let{scrollTop:e,scrollHeight:t,clientHeight:r}=S.current,n=e+r>=t-10;g(!n);let o=e<b.current;b.current=e,n?v(!0):o&&v(!1)}},[]),M=(0,s.useCallback)(()=>{S.current&&(S.current.scrollTo({top:S.current.scrollHeight,behavior:"smooth"}),g(!1),v(!0))},[]);(0,s.useEffect)(()=>{l.length>0&&y&&j()},[l,j,y]),(0,s.useEffect)(()=>{let e=S.current;if(e)return e.addEventListener("scroll",P),P(),()=>{e.removeEventListener("scroll",P)}},[P]);let T=(0,s.useCallback)(()=>dj(function*(){if(c([dM(dP({},uH(n)),{id:"welcome",timestamp:new Date})]),null==t?void 0:t.clearMessages)try{yield t.clearMessages()}catch(e){console.error("Failed to clear stored messages:",e)}})(),[t,n]),N=(0,s.useCallback)(()=>dj(function*(){if(null==r?void 0:r.refreshContext)try{let e=yield r.refreshContext();m(e)}catch(e){console.error("Failed to refresh context:",e)}})(),[r]);return{loading:i,setLoading:a,infoList:l,setInfoList:c,messagesInitialized:O.current===(null!=t?t:null),actionSpace:A,actionSpaceLoading:d,uiContextPreview:h,setUiContextPreview:m,showScrollToBottomButton:f,verticalMode:w,replayCounter:x,setReplayCounter:k,infoListRef:S,currentRunningIdRef:I,interruptedFlagRef:C,clearInfoList:T,refreshContext:N,handleScrollToBottom:M,scrollToBottom:j}}(A,I,d,m.targetName,!1!==p.persistMessages&&!p.storageNamespace),{handleRun:W,handleStop:H,cancelCurrentExecution:Y,canStop:G}=function(e){let{playgroundSDK:t,storage:r,actionSpace:n,loading:o,setLoading:i,setInfoList:a,replayCounter:l,setReplayCounter:c,verticalMode:A,currentRunningIdRef:u,interruptedFlagRef:d,deviceType:p}=e,{deepLocate:h,deepThink:m,screenshotIncluded:f,domIncluded:g,imeStrategy:y,screenshotStrategy:v,autoDismissKeyboard:b,keyboardDismissStrategy:w,alwaysRefreshScreenInfo:E}=Z(),x=(0,s.useCallback)(function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return u6(function*(){if(!t)return void console.warn("PlaygroundSDK is not available");let o=Date.now(),s=e.type,x=n.displayContent||`${e.type}: ${e.prompt||JSON.stringify(e.params)}`,k={id:`user-${Date.now()}`,type:"user",content:x,timestamp:new Date};a(e=>[...e,k]),i(!0);let S=u9({},uY),I={id:`system-${o}`,type:"system",content:"",timestamp:new Date,loading:!0,loadingProgressText:""};a(e=>[...e,I]);try{u.current=o,d.current[o]=!1,t.onDumpUpdate&&t.onDumpUpdate((e,t)=>{var r;if(d.current[o]||!(null==t||null==(r=t.tasks)?void 0:r.length))return;let n=t.tasks.map((e,t)=>{var r;let n,i;return{id:`progress-${o}-task-${t}`,type:"progress",content:(n=Aj(e),(i=AN(e))?`${n} - ${i}`:n),actionKind:Aj(e),timestamp:new Date((null==(r=e.timing)?void 0:r.start)||Date.now()),result:e.error?{error:dt(e.error),result:null}:void 0}});a(e=>{let t=e.findIndex(e=>e.id===`system-${o}`);if(-1===t)return e;let r=e.filter(e=>!("progress"===e.type&&e.id.startsWith(`progress-${o}-`)));return[...r.slice(0,t+1),...n,...r.slice(t+1)]})}),da(s)||!0!==m||console.warn("[Playground] Non-aiAct action will be executed without deepThink. deepThink is only forwarded for aiAct and runMarkdown.",{actionType:s,requestId:o.toString()});let r="unset"===m?void 0:m,i=u9(de(u9({requestId:o.toString(),deepLocate:h},da(s)&&void 0!==r?{deepThink:r}:{}),{screenshotIncluded:f,domIncluded:g,deviceOptions:{imeStrategy:y,screenshotStrategy:v,autoDismissKeyboard:b,keyboardDismissStrategy:w,alwaysRefreshScreenInfo:E}}),n.reportDisplay?{reportDisplay:n.reportDisplay}:{});if(S.result=yield t.executeAction(s,e,i),"object"==typeof S.result&&null!==S.result){let e=S.result;e.dump&&(S.dump=e.dump),e.reportHTML&&(S.reportHTML=e.reportHTML),e.report&&(S.report=e.report),e.error&&(S.error=dt(e.error)),"result"in e&&(S.result=e.result)}}catch(e){if(d.current[o])return;S.error=dt(e),console.error("Playground execution error:",e),"object"==typeof e&&null!==e&&(e.dump&&(S.dump=e.dump),e.reportHTML&&(S.reportHTML=e.reportHTML),e.report&&(S.report=e.report))}if(yield di(S),d.current[o])return;i(!1),u.current=null;let C=null,O=l,R=dn(S,p);R&&(c(e=>e+1),C=R,O=l+1),a(e=>e.map(e=>e.id===`system-${o}`?de(u9({},e),{content:"",loading:!1,loadingProgressText:""}):e));let j={id:`result-${o}`,type:"result",content:"Execution result",timestamp:new Date,result:S,loading:!1,replayScriptsInfo:C,replayCounter:O,loadingProgressText:"",verticalMode:A,actionType:s};if(a(e=>[...e,j]),null==r?void 0:r.saveResult)try{yield r.saveResult(j.id,j)}catch(e){console.error("Failed to save result:",e)}})()},[t,r,n,i,a,l,c,A,u,d,h,m,f,g,p,y,v,b,w,E]),k=(0,s.useCallback)(function(){let{appendStopMessage:e=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return u6(function*(){let r=u.current;if(!(r&&t&&t.cancelExecution))return;d.current[r]=!0,u.current=null,i(!1);let n=t=>{a(n=>{let o=n.map(e=>e.id===`system-${r}`?de(u9({},e),{content:"",loading:!1,loadingProgressText:""}):e);if(!e||o.some(e=>e.id===`stop-${r}`||e.id===`stop-result-${r}`))return o;if(t&&(t.dump||t.reportHTML||t.report)){let e=null,n=l;return(e=dn(t,p))&&(c(e=>e+1),n=l+1),[...o,{id:`stop-result-${r}`,type:"result",content:"Execution stopped by user",timestamp:new Date,result:{result:null,dump:t.dump,reportHTML:t.reportHTML,report:t.report||null,error:null},loading:!1,verticalMode:A,replayScriptsInfo:e,replayCounter:n}]}return[...o,{id:`stop-${r}`,type:"system",content:"Operation stopped",timestamp:new Date,loading:!1}]})};try{let e=yield t.cancelExecution(r.toString()),o=null;if(e)o=e;else if(t.getCurrentExecutionData)try{o=yield t.getCurrentExecutionData()}catch(e){console.error("Failed to get execution data before stop:",e)}o&&(yield di(o)),n(o)}catch(e){console.error("Failed to stop execution:",e),n()}})()},[t,u,d,i,a,A,l,c,p]),S=(0,s.useCallback)(()=>u6(function*(){u.current&&(yield k({appendStopMessage:!0}))})(),[k,u]);return{cancelCurrentExecution:k,handleRun:x,handleStop:S,canStop:o&&!!u.current&&!!t&&!!t.cancelExecution}}({playgroundSDK:A,storage:I,actionSpace:P,loading:C,setLoading:O,setInfoList:j,replayCounter:B,setReplayCounter:F,verticalMode:z,currentRunningIdRef:K,interruptedFlagRef:J,deviceType:p.deviceType}),V=(0,s.useRef)(Y),$=(0,s.useRef)(p.onExecutionStatusChange),_=(0,s.useRef)(p.onBeforeExecutionStart),ee=null!=(t=p.executionScopeKey)?t:null,et=(0,s.useRef)(ee);(0,s.useEffect)(()=>{V.current=Y},[Y]),(0,s.useEffect)(()=>{$.current=p.onExecutionStatusChange},[p.onExecutionStatusChange]),(0,s.useEffect)(()=>{_.current=p.onBeforeExecutionStart},[p.onBeforeExecutionStart]);let er=(0,s.useCallback)(()=>(function(e){var t;return(t=function*(e){let{clearTimeline:t,clearTimelineBeforeRun:r=!1,onBeforeExecutionStart:n}=e;yield null==n?void 0:n(),r&&(yield t())},function(){var e=this,r=arguments;return new Promise(function(n,o){var i=t.apply(e,r);function a(e){ha(i,n,o,a,s,"next",e)}function s(e){ha(i,n,o,a,s,"throw",e)}a(void 0)})}).apply(this,arguments)})({clearTimeline:Q,clearTimelineBeforeRun:p.clearTimelineBeforeRun,onBeforeExecutionStart:_.current}),[Q,p.clearTimelineBeforeRun]);(0,s.useEffect)(()=>{var e;null==(e=p.onExecutionStatusChange)||e.call(p,{running:C,stoppable:G,stop:H})},[G,p.onExecutionStatusChange,H,C]),(0,s.useEffect)(()=>()=>{var e;V.current(),null==(e=$.current)||e.call($,{running:!1,stoppable:!1,stop:()=>void 0})},[]),(0,s.useEffect)(()=>{et.current!==ee&&(et.current=ee,Y())},[Y,ee]),(0,s.useEffect)(()=>{(null==A?void 0:A.overrideConfig)&&b&&A.overrideConfig(b).catch(e=>{console.error("Failed to override SDK config:",e),p.suppressConfigErrorToast||uv(e,{title:"Failed to apply AI configuration"})})},[A,b,p.suppressConfigErrorToast]);let en=(0,s.useCallback)(()=>hc(function*(){try{let e=v.getFieldsValue();yield er(),yield W(e)}catch(e){uv(e,{title:"Execution failed"})}})(),[v,W,er]);(0,s.useEffect)(()=>{let e=p.externalRunRequest;if(e&&function(e){let{request:t,handledRequestIds:r,lastRequestId:n,sdkReady:o,messagesInitialized:i}=e;return!!(t&&t.id!==n&&!(null==r?void 0:r.has(t.id))&&o&&i)}({request:e,handledRequestIds:hu,lastRequestId:x.current,sdkReady:w,messagesInitialized:L})){if(x.current=e.id,hu.add(e.id),hu.size>100){let e=hu.values().next().value;e&&hu.delete(e)}hc(function*(){yield er(),yield W(e.value,hA({displayContent:e.displayContent},e.reportDisplay?{reportDisplay:e.reportDisplay}:{}))})().catch(e=>{uv(e,{title:"Execution failed"})})}},[p.externalRunRequest,W,L,er,w]);let eo=Object.keys(b||{}).length>=1,ei=p.serverMode||!g&&!M&&eo,ea=ub.A.useWatch("type",v)||uW["0"],es=(0,s.useMemo)(()=>A&&"function"==typeof A.getServiceMode?A.getServiceMode():"Server",[A]),el=y&&!1!==p.showContextPreview,ec=p.layout||"vertical",eA=!1!==p.showVersionInfo,eu=p.deviceType,ed=null!=(r=p.executionFlow)?r:{},ep=!0===ed.collapsible,eh=null!=(n=ed.label)?n:"Execution Flow",[em,ef]=(0,s.useState)(()=>new Set),eg=(0,s.useCallback)(e=>{ef(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),{firstInProgressGroup:ey,visibleInfoList:ev}=(0,s.useMemo)(()=>{let e=new Set,t=[],r=null,n=R.length>1;for(let o of R)if(!n||"welcome"!==o.id)if("progress"===o.type){if(null===r){r=o.id,e.add(o.id),t.push(o);continue}ep&&em.has(r)||t.push(o)}else r=null,t.push(o);return{firstInProgressGroup:e,visibleInfoList:t}},[em,ep,R]),eb=(0,s.useMemo)(()=>{for(let e=R.length-1;e>=0;e--)if("progress"===R[e].type)return R[e].id;return null},[R]),ew=(0,s.useMemo)(()=>(function(e){let t=new Set;for(let n=0;n<e.length;n++){var r;let o=e[n];(null==o?void 0:o.type)==="progress"&&(null==(r=e[n+1])?void 0:r.type)!=="progress"&&t.add(o.id)}return t})(ev),[ev]),eE=void 0!==p.emptyState&&1===ev.length&&(null==(i=ev[0])?void 0:i.id)==="welcome",ex=(0,s.useMemo)(()=>eE&&((e,t)=>{if(!(null==e?void 0:e.length)||!t||pM(e,t))return!1;let r=pP(e,t);return!!(null==r?void 0:r.paramSchema)&&!!pO(r.paramSchema)&&Object.keys(r.paramSchema.shape||{}).length>1})(P,ea),[P,eE,ea]),ek=!eE;(0,s.useEffect)(()=>{if(!ex)return;let e=()=>{let e=U.current;if(!e)return;let t=e.querySelector(".playground-empty-state-wrapper"),r=null==t?void 0:t.querySelector("[data-playground-empty-state-content-start]"),n=null==t?void 0:t.querySelector("[data-playground-empty-state-content-end]");if(!(r instanceof HTMLElement)||!(n instanceof HTMLElement))return;let o=e.getBoundingClientRect(),i=r.getBoundingClientRect(),a=n.getBoundingClientRect(),s=function(e){let{currentScrollTop:t,maxScrollTop:r,containerTop:n,containerBottom:o,contentStartTop:i,contentEndBottom:a,topSafeMargin:s=24,bottomSafeMargin:l=24}=e;return Math.max(0,Math.round(Math.min(t+a-(o-l),t+i-(n+s),r)))}({currentScrollTop:e.scrollTop,maxScrollTop:Math.max(0,e.scrollHeight-e.clientHeight),containerTop:o.top,containerBottom:o.bottom,contentStartTop:i.top,contentEndBottom:a.bottom});e.scrollTo({top:s,behavior:"auto"})},t=window.requestAnimationFrame(e),r=window.setTimeout(e,160);return()=>{window.cancelAnimationFrame(t),window.clearTimeout(r)}},[U,ea,ex]);let eS=["playground-empty-state-wrapper",ex?"playground-empty-state-wrapper-offset-for-prompt":""].filter(Boolean).join(" "),eI=!1!==p.showClearButton,eC=(0,s.useCallback)(()=>{Y().finally(()=>{Q()})},[Y,Q]),eO=eI&&ek?(0,a.jsx)("div",{className:"clear-button-container",children:(0,a.jsx)(q.Ay,{size:"small",icon:(0,a.jsx)(uL.A,{}),onClick:eC,type:"text",className:"clear-button"})}):null,eR=null!=(o=p.timelineWrapper)?o:(e,t)=>e,ej=p.hidePromptInput?null:(0,a.jsxs)("div",{className:"bottom-input-section",children:[p.showEnvConfigReminder?(0,a.jsx)(dH,(l=hA({},h),c=c={playgroundSDK:A},Object.getOwnPropertyDescriptors?Object.defineProperties(l,Object.getOwnPropertyDescriptors(c)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(c)).forEach(function(e){Object.defineProperty(l,e,Object.getOwnPropertyDescriptor(c,e))}),l)):null,(0,a.jsx)(hi,{runButtonEnabled:ei,form:v,serviceMode:es,selectedType:ea,dryMode:g,stoppable:G,loading:C,onRun:en,onStop:H,actionSpace:P,chrome:p.promptInputChrome,deviceType:eu})]}),eP="before-timeline"===p.promptInputPlacement;return(0,a.jsx)("div",{className:`playground-container ${ec}-mode ${f}`.trim(),children:(0,a.jsxs)(ub.A,{form:v,onFinish:en,className:"command-form",initialValues:{type:uW["0"]},children:[el&&(0,a.jsx)("div",{className:"context-preview-section",children:(0,a.jsx)(dX,{uiContextPreview:T,setUiContextPreview:N,showContextPreview:el})}),eP?ej:null,(0,a.jsx)("div",{className:"playground-timeline-region",children:eR((0,a.jsxs)("div",{className:["middle-dialog-area",eE?"middle-dialog-area-empty":""].filter(Boolean).join(" "),children:[p.timelineHeader,(0,a.jsx)("div",{ref:U,className:["info-list-container",eE?"info-list-container-empty":""].filter(Boolean).join(" "),children:eE?(0,a.jsx)("div",{className:eS,children:p.emptyState}):(0,a.jsx)(uQ.A,{itemLayout:"vertical",dataSource:ev,renderItem:e=>{var t,r,n,o;let i,l,c,A,u,d,h,f,g=ep&&ey.has(e.id),y=g&&em.has(e.id);return(0,a.jsxs)(uQ.A.Item,{className:"list-item",children:[g?(0,a.jsxs)("button",{type:"button",className:`progress-group-toggle ${em.has(e.id)?"is-collapsed":"is-expanded"}`,"aria-expanded":!em.has(e.id),onClick:()=>eg(e.id),children:[(0,a.jsx)("span",{className:"progress-group-toggle-label",children:eh}),(0,a.jsx)(uU.A,{className:"progress-group-toggle-chevron"})]}):null,y?null:"user"===e.type?(0,a.jsx)("div",{className:"user-message-container",children:(0,a.jsx)("div",{className:"user-message-bubble",children:e.content})}):"progress"===e.type?(0,a.jsx)("div",{children:(l=null==(t=(i=e.content.split(" - "))[0])?void 0:t.trim(),c=i.slice(1).join(" - ").trim(),A=e.id===eb,u=ew.has(e.id),f="completed"==(h=(d=C&&A)?"loading":(null==(r=e.result)?void 0:r.error)?"error":"completed")?function(e,t){if(!e)return null;if(t){let r=t(e);if(void 0!==r)return r}return(0,s.createElement)(pE)}(e.actionKind,ed.resolveActionIcon):null,(0,a.jsxs)("div",{className:`progress-row ${u?"progress-row-last":""}`,children:[l?(0,a.jsx)("span",{className:`progress-status-icon ${h}`,children:"loading"===h?(0,a.jsx)(uK.A,{spin:!0}):"error"===h?(0,s.createElement)(px):null!==f?f:"✓"}):null,(0,a.jsx)(hp,{action:l,content:e.content,description:c,error:null==(n=e.result)?void 0:n.error,shouldShowLoading:d})]}))}):(0,a.jsxs)("div",{className:"system-message-container",children:[!1!==p.showSystemMessageHeader&&(0,a.jsxs)("div",{className:"system-message-header",children:[(0,a.jsx)(uZ.A,{className:"system-message-icon",component:m.icon||pw,style:{fontSize:20}}),(0,a.jsx)("span",{className:"system-message-title",children:m.title||"Playground"})]}),(e.content||e.result)&&(0,a.jsx)("div",{className:"system-message-content",children:"result"===e.type?(0,a.jsx)(pb,{result:e.result||null,loading:e.loading||!1,serverValid:!0,serviceMode:es,replayScriptsInfo:e.replayScriptsInfo||null,replayCounter:e.replayCounter||0,loadingProgressText:e.loadingProgressText||"",verticalMode:e.verticalMode||!1,fitMode:"width",showOutputAlongsideReport:void 0!==(o=e.actionType)&&hs.includes(o),onDownloadReport:p.onDownloadReport,playerPresentation:"timeline",hidePlayerFullscreenControl:p.hidePlayerFullscreenControl}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"system-message-text",children:e.content}),e.loading&&e.loadingProgressText&&(0,a.jsx)("div",{className:"loading-progress-text",children:(0,a.jsx)("span",{children:e.loadingProgressText})})]})})]})]},e.id)}})}),ek&&D&&!1!==p.enableScrollToBottom&&(0,a.jsx)(q.Ay,{"aria-label":"Scroll to latest message",className:"scroll-to-bottom-button",shape:"circle",icon:(0,a.jsx)(uJ.A,{}),onClick:X})]}),{empty:eE,headerAction:eO})}),eP?null:ej,eA&&m.version&&(0,a.jsx)("div",{className:"version-info-section",children:(0,a.jsxs)("span",{className:"version-text",children:["Midscene.js version: ",m.version]})})]})})}let hm=e=>{var t,r;return(0,a.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:(0,a.jsx)("path",{stroke:"#333",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.333,d:"m12 6-4 4-4-4"})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},hf=e=>{var t,r;return(0,a.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:55,height:52,fill:"none",viewBox:"0 0 55 52"},e),r=r={children:[(0,a.jsxs)("mask",{id:"midscene-logo_svg__a",width:55.371,height:52.35,x:-.202,y:-.201,fill:"#000",maskUnits:"userSpaceOnUse",children:[(0,a.jsx)("path",{fill:"#fff",d:"M-.202-.201h55.371v52.35H-.202z"}),(0,a.jsx)("path",{fillRule:"evenodd",d:"M35.38 1.812c1.168 0 1.762 1.405.948 2.244l-.83.853a23.38 23.38 0 0 1 13.968 14.069c2.56 2.523 3.834 6.176 3.714 13.116-.083 4.799-1.883 7.946-4.24 9.99-2.23 1.933-4.832 2.754-6.322 3.224l-.069.022-.088.029q-.675.212-1.328.378a23.22 23.22 0 0 1-13.634 4.399 23.22 23.22 0 0 1-13.632-4.399q-.653-.165-1.328-.379l-.09-.028-.067-.022c-1.49-.47-4.092-1.29-6.323-3.224-2.357-2.044-4.157-5.191-4.24-9.99C1.7 25.154 2.975 21.5 5.535 18.978a23.39 23.39 0 0 1 14.02-14.089l-.81-.833c-.814-.839-.22-2.244.948-2.244zM20.254 6.747A21.4 21.4 0 0 0 7.25 20.086C5.046 22.067 3.68 25.032 3.803 32.06c.146 8.506 6.254 10.434 9.244 11.378l.09.029q.811.256 1.586.437A21.24 21.24 0 0 0 27.5 48.152l.001-.001a21.24 21.24 0 0 1-12.776-4.247 22 22 0 0 1-1.586-.437l-.09-.029c-2.99-.944-9.097-2.872-9.243-11.379-.122-7.027 1.243-9.992 3.447-11.973a21.4 21.4 0 0 1 13.003-13.34m11.359 41.007q.128-.023.255-.05h.002zm.88-.191.215-.051.002-.001zM21.084 6.465h.001",clipRule:"evenodd"})]}),(0,a.jsx)("path",{fill:"#3A4953",fillRule:"evenodd",d:"M35.38 1.812c1.168 0 1.762 1.405.948 2.244l-.83.853a23.38 23.38 0 0 1 13.968 14.069c2.56 2.523 3.834 6.176 3.714 13.116-.083 4.799-1.883 7.946-4.24 9.99-2.23 1.933-4.832 2.754-6.322 3.224l-.069.022-.088.029q-.675.212-1.328.378a23.22 23.22 0 0 1-13.634 4.399 23.22 23.22 0 0 1-13.632-4.399q-.653-.165-1.328-.379l-.09-.028-.067-.022c-1.49-.47-4.092-1.29-6.323-3.224-2.357-2.044-4.157-5.191-4.24-9.99C1.7 25.154 2.975 21.5 5.535 18.978a23.39 23.39 0 0 1 14.02-14.089l-.81-.833c-.814-.839-.22-2.244.948-2.244zM20.254 6.747A21.4 21.4 0 0 0 7.25 20.086C5.046 22.067 3.68 25.032 3.803 32.06c.146 8.506 6.254 10.434 9.244 11.378l.09.029q.811.256 1.586.437A21.24 21.24 0 0 0 27.5 48.152l.001-.001a21.24 21.24 0 0 1-12.776-4.247 22 22 0 0 1-1.586-.437l-.09-.029c-2.99-.944-9.097-2.872-9.243-11.379-.122-7.027 1.243-9.992 3.447-11.973a21.4 21.4 0 0 1 13.003-13.34m11.359 41.007q.128-.023.255-.05h.002zm.88-.191.215-.051.002-.001zM21.084 6.465h.001",clipRule:"evenodd"}),(0,a.jsx)("path",{fill:"#3A4953",d:"m36.328 4.056 1.3 1.263zm-.83.853L34.2 3.646l-1.95 2.006 2.628.96zm13.968 14.069-1.707.609.14.39.295.291zm3.714 13.116 1.812.031zm-4.24 9.99 1.187 1.369zm-6.322 3.224.543 1.73.002-.002zm-.069.022-.543-1.729-.012.004zm-.088.029.546 1.727.01-.003zm-1.328.378-.446-1.757-.335.086-.28.202zm-13.634 4.399v1.812zm-13.632-4.399 1.06-1.47-.28-.202-.334-.084zm-1.328-.379-.55 1.727.004.001zm-.09-.028-.55 1.727zm-.067-.022.55-1.726-.005-.002zm-6.323-3.224-1.187 1.369zm-4.24-9.99-1.811.031zm3.715-13.116 1.272 1.29.295-.29.14-.391zm14.02-14.089.618 1.704 2.636-.955-1.954-2.011zm-.81-.833-1.3 1.262zm.948-2.244V0zm.563 4.935.615 1.704-1.23-3.409zM7.25 20.086l1.211 1.347.357-.32.151-.456zM3.803 32.06l-1.812.03zm9.244 11.378.55-1.726-.004-.002zm.09.029-.55 1.727h.004zm1.586.437 1.087-1.45-.304-.227-.369-.087zM27.5 48.152v1.812h.75l.532-.531zm.001-.001 1.282 1.281 3.093-3.093H27.5zm-12.776-4.247 1.087-1.45-.304-.227-.369-.087zm-1.586-.437-.55 1.727h.004zm-.09-.029.55-1.726-.004-.002zM3.805 32.06l-1.812.032zm3.447-11.973 1.211 1.347.357-.32.151-.456zm24.043 27.727.32 1.784-.64-3.567zm-.573.096-.271-1.792.542 3.584zm.892-.155-.348-1.778.695 3.557zm.255-.05.37 1.774.23-.048.21-.105zm.002 0 .81 1.62-1.179-3.395zm.623-.141L32.07 45.8l.845 3.524zm.215-.051.441 1.757.192-.048.177-.089zm.002-.001.81 1.62-1.251-3.378zM21.084 6.465V4.653h-.278l-.266.084zm-.572.191-.593-1.712 1.186 3.424zm.573-.19.545 1.728-.545-3.54zM35.38 1.811v1.812a.49.49 0 0 1-.351-.83l1.3 1.262 1.3 1.262C39.558 3.33 38.15 0 35.379 0zm.949 2.244-1.3-1.264-.829.854 1.3 1.263 1.298 1.263.83-.853zm-.83.853-.621 1.702a21.57 21.57 0 0 1 12.882 12.976l1.707-.61 1.706-.608A25.2 25.2 0 0 0 36.12 3.207zm13.968 14.069-1.272 1.29c2.043 2.015 3.29 5.063 3.174 11.795l1.812.03 1.812.032c.123-7.147-1.178-11.405-4.254-14.438zm3.714 13.116-1.812-.031c-.074 4.3-1.658 6.955-3.615 8.651l1.187 1.37 1.187 1.369c2.758-2.391 4.773-6.03 4.865-11.328zm-4.24 9.99-1.187-1.37c-1.919 1.663-4.188 2.395-5.68 2.866l.545 1.728.545 1.728c1.488-.469 4.421-1.379 6.964-3.583zm-6.322 3.224-.543-1.728-.069.021.543 1.729.544 1.729.068-.022zm-.069.022-.555-1.725-.089.029.556 1.724.556 1.725.088-.028zm-.088.029-.546-1.728q-.626.197-1.228.35l.446 1.756.445 1.756q.704-.178 1.429-.407zm-1.328.378-1.06-1.47a21.4 21.4 0 0 1-12.574 4.057v3.624c5.48 0 10.562-1.759 14.694-4.742zm-13.634 4.399v-1.812a21.4 21.4 0 0 1-12.571-4.056l-1.06 1.469-1.061 1.47a25.03 25.03 0 0 0 14.692 4.74zm-13.632-4.399.446-1.757q-.602-.151-1.228-.35l-.546 1.728-.546 1.728q.723.229 1.429.407zm-1.328-.379.55-1.726-.09-.029-.55 1.727-.55 1.727.09.028zm-.09-.028.55-1.727-.067-.021-.55 1.726-.55 1.727.067.022zm-.067-.022.545-1.728c-1.492-.47-3.762-1.202-5.681-2.866l-1.187 1.37-1.187 1.369c2.543 2.204 5.477 3.114 6.964 3.583zm-6.323-3.224 1.187-1.37c-1.957-1.696-3.54-4.35-3.615-8.651l-1.811.03-1.812.032c.091 5.297 2.106 8.937 4.864 11.328zm-4.24-9.99 1.812-.031c-.116-6.733 1.13-9.78 3.175-11.795l-1.272-1.29-1.272-1.29C1.185 20.72-.115 24.977.008 32.124zm3.715-13.116 1.707.609A21.57 21.57 0 0 1 20.172 6.593l-.617-1.704-.618-1.703a25.2 25.2 0 0 0-15.11 15.183zm14.02-14.089 1.3-1.262-.81-.834-1.3 1.263-1.3 1.262.811.834zm-.81-.833 1.3-1.263a.49.49 0 0 1-.351.831V1.812L19.691 0c-2.771 0-4.177 3.332-2.247 5.318zm.948-2.244v1.812H35.38V0H19.692zm.563 4.935-.616-1.705A23.2 23.2 0 0 0 5.53 19.514l1.72.572 1.72.571a19.58 19.58 0 0 1 11.9-12.206zM7.25 20.086l-1.212-1.348C3.27 21.228 1.866 24.83 1.99 32.091l1.812-.032 1.811-.03c-.117-6.794 1.208-9.122 2.847-10.596zM3.803 32.06l-1.812.03c.082 4.753 1.861 7.854 4.18 9.864 2.236 1.938 4.852 2.746 6.33 3.212l.546-1.728.546-1.728c-1.511-.477-3.445-1.105-5.047-2.494-1.519-1.316-2.867-3.433-2.932-7.188zm9.244 11.378-.55 1.727.09.029.55-1.727.55-1.727-.09-.028zm.09.029-.546 1.728q.875.276 1.718.474l.414-1.765.414-1.764q-.706-.164-1.454-.401zm1.586.437-1.086 1.45a23.05 23.05 0 0 0 13.862 4.61V46.34a19.43 19.43 0 0 1-11.69-3.886zM27.5 48.152l1.282 1.281v-.001l-1.28-1.281-1.282-1.282-.001.001zm.001-.001v-1.812a19.43 19.43 0 0 1-11.69-3.885l-1.086 1.45-1.086 1.45A23.05 23.05 0 0 0 27.5 49.964zm-12.776-4.247.414-1.764c-.472-.11-.954-.243-1.454-.401l-.546 1.728-.546 1.728q.875.276 1.718.474zm-1.586-.437.55-1.727-.09-.028-.55 1.726-.55 1.727.09.029zm-.09-.029.546-1.728c-1.511-.477-3.444-1.105-5.047-2.494-1.518-1.316-2.866-3.433-2.93-7.188l-1.812.032-1.812.03c.082 4.752 1.86 7.853 4.18 9.864 2.235 1.938 4.85 2.745 6.33 3.212zM3.805 32.06l1.811-.03c-.117-6.794 1.208-9.122 2.847-10.596l-1.211-1.347-1.212-1.348c-2.767 2.49-4.172 6.092-4.047 13.353zm3.447-11.973 1.72.571A19.58 19.58 0 0 1 20.87 8.451l-.615-1.704-.616-1.705A23.2 23.2 0 0 0 5.532 19.514zm24.043 27.727-.32-1.783q-.266.048-.524.087l.271 1.792.271 1.791q.319-.048.622-.103zm-.573.096.272 1.791q.316-.048.622-.103l-.32-1.784-.321-1.783a20 20 0 0 1-.524.087zm.892-.155.347 1.779c.061-.012.179-.034.278-.055l-.37-1.774-.369-1.774c-.071.015-.124.025-.234.046zm.255-.05.81 1.621h.003l-.81-1.622-.811-1.62h-.002zm.002 0-.369-1.775-.235.047.347 1.778.347 1.779.28-.056zm.623-.141.422 1.762c.023-.006.159-.037.234-.056l-.441-1.757-.441-1.758-.197.047zm.215-.051.81 1.62h.002l-.81-1.621-.81-1.621h-.002zm.002-.001-.441-1.758-.199.047.423 1.763.422 1.762.236-.057zM21.084 6.465l-.544-1.728q-.325.104-.621.207l.593 1.712.593 1.712q.273-.095.524-.174zm-.572.191.594 1.712q.27-.093.524-.174l-.545-1.729-.544-1.728q-.323.103-.622.207zm.573-.19V4.652zv1.812z",mask:"url(#midscene-logo_svg__a)"}),(0,a.jsx)("mask",{id:"midscene-logo_svg__b",width:53,height:50,x:1,y:1,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"},children:(0,a.jsx)("path",{fill:"#F0F0F0",fillRule:"evenodd",d:"M24.214 12.537a4.63 4.63 0 0 0 6.64 0l6.608-6.805a23.4 23.4 0 0 1 12 13.247c2.56 2.524 3.833 6.176 3.714 13.114-.083 4.8-1.883 7.947-4.24 9.991-2.231 1.934-4.833 2.755-6.322 3.225l-.158.05q-.675.213-1.328.378a23.22 23.22 0 0 1-13.632 4.399 23.22 23.22 0 0 1-13.632-4.399q-.654-.165-1.33-.378l-.157-.05c-1.49-.47-4.092-1.291-6.322-3.225-2.358-2.044-4.157-5.192-4.24-9.99-.12-6.941 1.155-10.593 3.716-13.117a23.4 23.4 0 0 1 12.05-13.27zM35.38 1.812c1.168 0 1.763 1.406.949 2.244l-6.895 7.1c-.52.534-1.21.8-1.899.8h-.012a2.65 2.65 0 0 1-1.536-.503 2.7 2.7 0 0 1-.35-.299L19.552 4.89l.001-.001-.808-.833c-.814-.838-.22-2.244.949-2.244z",clipRule:"evenodd"})}),(0,a.jsxs)("g",{mask:"url(#midscene-logo_svg__b)",children:[(0,a.jsx)("path",{fill:"#fff",d:"M-4.044-9.086h63.087V65.49H-4.044z"}),(0,a.jsx)("g",{filter:"url(#midscene-logo_svg__c)",opacity:.8,children:(0,a.jsx)("path",{fill:"#005EEC",fillOpacity:.01,d:"M41.85 43.36c-.378-.748-3.453.67-7.362 2.242s-7.175 2.702-6.798 3.45c.378.746 3.853.078 7.763-1.494s6.773-3.452 6.396-4.199"})})]}),(0,a.jsx)("path",{fill:"url(#midscene-logo_svg__d)",d:"M5.773 18.412h43.601v24.223H5.773z"}),(0,a.jsx)("path",{fill:"url(#midscene-logo_svg__e)",d:"M5.773 18.473h43.086v24.454H5.773z"}),(0,a.jsx)("path",{fill:"url(#midscene-logo_svg__f)",d:"M5.926 18.075h43.092v24.457H5.926z"}),(0,a.jsx)("foreignObject",{width:27.157,height:19.138,x:21.193,y:36.687,children:(0,a.jsx)("div",{xmlns:"http://www.w3.org/1999/xhtml",style:{backdropFilter:"blur(2.96px)",clipPath:"url(#midscene-logo_svg__g)",height:"100%",width:"100%"}})}),(0,a.jsx)("path",{fill:"#3A4953",fillRule:"evenodd",stroke:"#3A4953",strokeWidth:.514,d:"m14.619 40.412.082.025c2.186.657 4.053.825 6.578.932.365.016.704-.127.932-.363l3.08-5.674c.94-1.735 3.484-1.735 4.426 0l3.08 5.674c.227.236.566.379.931.363 2.525-.107 4.392-.275 6.578-.932l.082-.025c1.384-.416 3.235-.984 4.774-2.253 1.475-1.216 2.74-3.144 2.8-6.483.066-3.66-.372-5.858-1.066-7.316-.672-1.411-1.641-2.254-2.965-3.093-1.305-.828-2.922-1.54-4.435-1.54H37.44c-1.566 0-3.128.159-4.66.473l-.265.055a24.45 24.45 0 0 1-10.02-.043 22 22 0 0 0-4.582-.484h-2.402c-1.895 0-3.3.818-4.435 1.539-1.359.862-2.325 1.704-2.988 3.106-.686 1.45-1.11 3.637-1.043 7.303.06 3.339 1.325 5.267 2.8 6.483 1.539 1.269 3.39 1.837 4.774 2.253Zm17.133 1.319-3.146-5.796c-.463-.854-1.742-.854-2.205 0l-3.146 5.796a2.48 2.48 0 0 1-2.03.901c-2.556-.11-4.549-.282-6.888-.985l-.082-.024c-2.74-.824-8.339-2.505-8.473-9.924-.136-7.494 1.7-9.65 4.617-11.5 1.164-.738 2.832-1.735 5.112-1.735h2.402c1.63 0 3.256.172 4.847.512 3.127.67 6.368.683 9.5.04l.266-.054a24.5 24.5 0 0 1 4.914-.498h2.056c1.865 0 3.727.857 5.112 1.736 2.852 1.808 4.753 4.005 4.618 11.499-.135 7.419-5.733 9.1-8.474 9.924l-.082.024c-2.339.703-4.332.876-6.888.985a2.48 2.48 0 0 1-2.03-.901Z",clipRule:"evenodd","data-figma-bg-blur-radius":5.911}),(0,a.jsxs)("defs",{children:[(0,a.jsx)("pattern",{id:"midscene-logo_svg__d",width:1,height:1,patternContentUnits:"objectBoundingBox",children:(0,a.jsx)("use",{xlinkHref:"#midscene-logo_svg__h",transform:"scale(.00483 .0087)"})}),(0,a.jsx)("pattern",{id:"midscene-logo_svg__e",width:1,height:1,patternContentUnits:"objectBoundingBox",children:(0,a.jsx)("use",{xlinkHref:"#midscene-logo_svg__i",transform:"scale(.009 .01587)"})}),(0,a.jsx)("pattern",{id:"midscene-logo_svg__f",width:1,height:1,patternContentUnits:"objectBoundingBox",children:(0,a.jsx)("use",{xlinkHref:"#midscene-logo_svg__j",transform:"scale(.009 .01587)"})}),(0,a.jsx)("image",{xlinkHref:"data:image/png;base64,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",id:"midscene-logo_svg__h",width:207,height:115,preserveAspectRatio:"none"}),(0,a.jsx)("image",{xlinkHref:"data:image/png;base64,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",id:"midscene-logo_svg__i",width:111,height:63,preserveAspectRatio:"none"}),(0,a.jsx)("image",{xlinkHref:"data:image/png;base64,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",id:"midscene-logo_svg__j",width:111,height:63,preserveAspectRatio:"none"}),(0,a.jsx)("clipPath",{id:"midscene-logo_svg__g",transform:"translate(-21.193 -36.687)",children:(0,a.jsx)("path",{fillRule:"evenodd",d:"m14.619 40.412.082.025c2.186.657 4.053.825 6.578.932.365.016.704-.127.932-.363l3.08-5.674c.94-1.735 3.484-1.735 4.426 0l3.08 5.674c.227.236.566.379.931.363 2.525-.107 4.392-.275 6.578-.932l.082-.025c1.384-.416 3.235-.984 4.774-2.253 1.475-1.216 2.74-3.144 2.8-6.483.066-3.66-.372-5.858-1.066-7.316-.672-1.411-1.641-2.254-2.965-3.093-1.305-.828-2.922-1.54-4.435-1.54H37.44c-1.566 0-3.128.159-4.66.473l-.265.055a24.45 24.45 0 0 1-10.02-.043 22 22 0 0 0-4.582-.484h-2.402c-1.895 0-3.3.818-4.435 1.539-1.359.862-2.325 1.704-2.988 3.106-.686 1.45-1.11 3.637-1.043 7.303.06 3.339 1.325 5.267 2.8 6.483 1.539 1.269 3.39 1.837 4.774 2.253m17.133 1.319-3.146-5.796c-.463-.854-1.742-.854-2.205 0l-3.146 5.796a2.48 2.48 0 0 1-2.03.901c-2.556-.11-4.549-.282-6.888-.985l-.082-.024c-2.74-.824-8.339-2.505-8.473-9.924-.136-7.494 1.7-9.65 4.617-11.5 1.164-.738 2.832-1.735 5.112-1.735h2.402c1.63 0 3.256.172 4.847.512 3.127.67 6.368.683 9.5.04l.266-.054a24.5 24.5 0 0 1 4.914-.498h2.056c1.865 0 3.727.857 5.112 1.736 2.852 1.808 4.753 4.005 4.618 11.499-.135 7.419-5.733 9.1-8.474 9.924l-.082.024c-2.339.703-4.332.876-6.888.985a2.48 2.48 0 0 1-2.03-.901",clipRule:"evenodd"})}),(0,a.jsxs)("filter",{id:"midscene-logo_svg__c",width:27.157,height:19.138,x:21.193,y:36.687,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse",children:[(0,a.jsx)("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),(0,a.jsx)("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),(0,a.jsx)("feGaussianBlur",{result:"effect1_foregroundBlur_8049_134028",stdDeviation:3.212})]})]})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};function hg(e){var t;return null==e||null==(t=e.platformSelector)?void 0:t.fieldKey}function hy(){return(0,a.jsx)(hm,{"aria-hidden":"true",className:"session-setup-select-icon"})}let hv="Create Agent";function hb(e){var t,r,n,o;let{form:i,sessionSetup:s,sessionSetupError:l,sessionViewState:c,sessionLoading:A,sessionMutating:u,onCreateSession:d}=e,p=u||A||"blocked"===c.setupState,h=null!=(t=null==s?void 0:s.primaryActionLabel)?t:hv,m=null!=(r=null==s?void 0:s.title)?r:hv,f=null!=(n=null==s?void 0:s.description)?n:"Create a platform session before running actions.";return(0,a.jsx)("div",{className:"session-setup-panel",children:(0,a.jsxs)("div",{className:"session-setup-card",children:[(0,a.jsx)(hf,{"aria-hidden":"true",className:"session-setup-logo"}),(0,a.jsx)("h1",{className:"session-setup-title",children:m}),(0,a.jsx)("p",{className:"session-setup-description",children:f}),"blocked"===c.setupState&&c.setupBlockingReason&&(0,a.jsx)(W.A,{type:"error",showIcon:!0,message:"Setup blocked",description:c.setupBlockingReason,className:"session-setup-alert"}),l?(0,a.jsx)(W.A,{type:"error",showIcon:!0,message:"Failed to load setup",description:l,className:"session-setup-alert"}):null,(null==s?void 0:s.notice)?(0,a.jsx)(W.A,{type:s.notice.type,showIcon:!0,message:s.notice.message,description:s.notice.description,className:"session-setup-alert"}):null,(0,a.jsxs)(ub.A,{form:i,layout:"vertical",className:"session-setup-form",onFinish:()=>{p||d()},children:[(null!=(o=null==s?void 0:s.fields)?o:[]).map(e=>(0,a.jsx)(ub.A.Item,{label:e.label,name:e.key,tooltip:e.description,rules:e.required?[{required:!0,message:`${e.label} is required`}]:void 0,children:function(e,t){if("number"===e.type)return(0,a.jsx)(p$.A,{style:{width:"100%"},placeholder:e.placeholder});if("select"===e.type){var r,n;let o=hg(t),i=function(e,t){var r;if(hg(t)!==e.key||!(null==t||null==(r=t.platformRegistry)?void 0:r.length))return e.options;let n=t.platformRegistry.map(e=>({label:e.label,value:e.id,description:[e.description,e.unavailableReason].filter(Boolean).join(" \xb7 ")||void 0}));return n.length>0?n:e.options}(e,t);return o===e.key&&(null==t||null==(r=t.platformSelector)?void 0:r.variant)==="cards"?(0,a.jsx)(pz.A.Group,{className:"platform-selector-group",children:(i||[]).map(e=>(0,a.jsxs)(pz.A.Button,{value:e.value,className:"platform-selector-card",children:[(0,a.jsx)("div",{className:"platform-selector-title",children:e.label}),e.description?(0,a.jsx)("div",{className:"platform-selector-description",children:e.description}):null]},String(e.value)))}):(0,a.jsx)(X.A,{placeholder:e.placeholder,suffixIcon:(0,a.jsx)(hy,{}),options:(null!=(n=null!=i?i:e.options)?n:[]).map(e=>({label:e.label,value:e.value,description:e.description})),optionRender:e=>{let t=e.data.description;return t?(0,a.jsxs)("div",{className:"session-select-option",children:[(0,a.jsx)("div",{className:"session-select-option-label",children:e.data.label}),(0,a.jsx)("div",{className:"session-select-option-description",children:t})]}):e.data.label}})}return(0,a.jsx)(J.A,{placeholder:e.placeholder})}(e,s)},e.key)),(0,a.jsx)("button",{type:"submit",className:"session-setup-submit",disabled:p,children:u?"Creating...":h})]})]})})}function hw(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function hE(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function hx(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function hk(e){var t,r,n,o,i,s;let l,{controller:c,appVersion:A,title:u="Playground",branding:d,playgroundConfig:p,header:h,className:m,playgroundClassName:f,notConnectedFallback:g}=e,{state:y,actions:v}=c,b=hE(hw({},l={showContextPreview:!1,layout:"vertical",showVersionInfo:!1,enableScrollToBottom:!1,serverMode:!0,showEnvConfigReminder:!1,showClearButton:!1,showSystemMessageHeader:!1,promptInputChrome:{variant:"minimal"},executionFlow:{collapsible:!0},deviceType:y.deviceType,executionUx:{hints:y.executionUxHints,countdownSeconds:y.countdownSeconds}},p),{executionFlow:hw({},l.executionFlow,null==p?void 0:p.executionFlow),executionUx:hw({},l.executionUx,null==p?void 0:p.executionUx)}),w=(t=y.runtimeInfo,r=y.deviceType,hE(hw({},d),{title:null!=(n=null==t?void 0:t.title)?n:u,version:A,targetName:null!=(s=null!=(i=null!=(o=null==t?void 0:t.platformId)?o:null==d?void 0:d.targetName)?i:r)?s:"screen"}));return(0,a.jsxs)("div",{className:["playground-conversation-panel",m].filter(Boolean).join(" "),children:[(0,a.jsx)(Q.A,{open:null!==y.countdown,footer:(0,a.jsx)(q.Ay,{onClick:v.finishCountdown,type:"default",children:"Skip countdown"}),closable:!0,maskClosable:!0,onCancel:v.finishCountdown,centered:!0,width:400,styles:{mask:{backgroundColor:"rgba(0, 0, 0, 0.75)"}},children:(0,a.jsxs)("div",{style:{textAlign:"center",padding:"40px 20px"},children:[(0,a.jsx)("div",{style:{fontSize:"120px",fontWeight:"bold",color:"GO!"===y.countdown?"#52c41a":"#1890ff",marginBottom:"24px",lineHeight:1},children:y.countdown}),(0,a.jsx)("div",{style:{fontSize:"18px",fontWeight:500,marginBottom:"12px"},children:"Automation Starting Soon"}),(0,a.jsxs)("div",{style:{fontSize:"14px",color:"var(--midscene-text-secondary)"},children:["The selected session requested a countdown before execution.",(0,a.jsx)("br",{}),"Please wait until the run starts."]})]})}),h,(0,a.jsx)("div",{className:"playground-conversation-body",children:y.serverOnline?y.sessionViewState.connected?(0,a.jsx)(hh,{playgroundSDK:y.playgroundSDK,config:b,branding:w,className:["playground-container","playground-conversation-skin",f].filter(Boolean).join(" ")}):void 0!==g?(0,a.jsx)(a.Fragment,{children:g}):(0,a.jsx)(hb,{form:y.form,sessionSetup:y.sessionSetup,sessionSetupError:y.sessionSetupError,sessionViewState:y.sessionViewState,sessionLoading:y.sessionLoading,sessionMutating:y.sessionMutating,onCreateSession:()=>{var e;return(e=function*(){yield v.createSession()},function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){hx(i,n,o,a,s,"next",e)}function s(e){hx(i,n,o,a,s,"throw",e)}a(void 0)})})()}}):(0,a.jsx)("div",{className:"playground-conversation-offline",children:(0,a.jsx)(W.A,{type:"warning",showIcon:!0,message:"Playground server offline",description:"Reconnect the runtime to continue using the Android playground."})})})]})}let{Content:hS}=eA.A;function hI(e){var t;let{serverUrl:r,appVersion:n,title:o="Playground",defaultDeviceType:i="web",branding:l,playgroundConfig:A,offlineTitle:u="Midscene Playground",offlineStatusText:d="Server offline...",pollIntervalMs:p=5e3}=e,[h,m]=(0,s.useState)(!1),f=function(e){var t;let{serverUrl:r,defaultDeviceType:n="web",pollIntervalMs:o=5e3,countdownSeconds:i=3,initialFormValues:l,onCountdownFinish:c}=e,{message:A}=ew.A.useApp(),[u]=ub.A.useForm(),d=(0,s.useRef)(l);(0,s.useLayoutEffect)(()=>{let e=d.current;if(e)for(let[t,r]of Object.entries(e))void 0===u.getFieldValue(t)&&u.setFieldsValue({[t]:r})},[u]);let p=null!=(t=ub.A.useWatch([],u))?t:{},[h,m]=(0,s.useState)(null),[f,g]=(0,s.useState)(null),[y,v]=(0,s.useState)(null),[b,w]=(0,s.useState)(!1),[E,x]=(0,s.useState)(!1),k=Z(e=>e.config),S=(0,s.useMemo)(()=>JSON.stringify(Object.entries(k).sort((e,t)=>{let[r]=e,[n]=t;return r.localeCompare(n)})),[k]),I=uz(f),C="string"==typeof I?p[I]:void 0,O=(0,s.useMemo)(()=>new ug({type:"remote-execution",serverUrl:r}),[r]),{serverOnline:R,isUserOperating:j,deviceType:P,runtimeInfo:M,executionUxHints:T,refreshServerState:N}=function(e,t,r){let[n,o]=(0,s.useState)(!1),[i,a]=(0,s.useState)(!1),[l,c]=(0,s.useState)(t),[A,u]=(0,s.useState)(null),[d,p]=(0,s.useState)([]),h=(0,s.useRef)(null),m=(0,s.useRef)(!0);(0,s.useEffect)(()=>(m.current=!0,()=>{m.current=!1}),[]),(0,s.useEffect)(()=>{h.current=A},[A]),(0,s.useEffect)(()=>{e.onProgressUpdate(e=>{a(!!e)})},[e]);let f=(0,s.useCallback)(()=>{var r;return(r=function*(){try{let a=yield e.checkStatus();if(!m.current)return;if(o(a),!a){h.current=null,u(null),p([]);return}try{let r=yield e.getRuntimeInfo();if(!m.current)return;if(r){h.current=r,u(r),c(eU(r,t)),p(eK(r));return}}catch(e){console.warn("Failed to get runtime info:",e)}try{var r,n,i;let o=yield e.getInterfaceInfo();if(!m.current||!(null==o?void 0:o.type))return;let a=(r=h.current,n=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},r),i=i={interface:o,preview:(null==r?void 0:r.preview)||{kind:"none",capabilities:[]},executionUxHints:(null==r?void 0:r.executionUxHints)||[],metadata:(null==r?void 0:r.metadata)||{}},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(i)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(i)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(i,e))}),n);h.current=a,u(a),c(eU(a,t)),p(eK(a))}catch(e){console.warn("Failed to get interface info:",e)}}catch(e){if(!m.current)return;console.error("Failed to check server status:",e),o(!1)}},function(){var e=this,t=arguments;return new Promise(function(n,o){var i=r.apply(e,t);function a(e){ux(i,n,o,a,s,"next",e)}function s(e){ux(i,n,o,a,s,"throw",e)}a(void 0)})})()},[t,e]);return(0,s.useEffect)(()=>{f();let e=window.setInterval(()=>{f()},r);return()=>{window.clearInterval(e)}},[r,f]),{serverOnline:n,isUserOperating:i,deviceType:l,runtimeInfo:A,executionUxHints:d,refreshServerState:f}}(O,n,o),D=(0,s.useMemo)(()=>{let e,t;return t=(e=(null==M?void 0:M.metadata)||{}).setupState,{connected:!!e.sessionConnected,displayName:"string"==typeof e.sessionDisplayName?e.sessionDisplayName:void 0,setupState:"blocked"===t||"ready"===t||"required"===t?t:"ready",setupBlockingReason:"string"==typeof e.setupBlockingReason?e.setupBlockingReason:void 0}},[M]),z=(0,s.useRef)(null),B=(0,s.useRef)(null),F=(0,s.useRef)(!0),L=(0,s.useRef)(void 0),U=(0,s.useRef)(null),K=(0,s.useRef)(null),J=(0,s.useRef)(!1),Q=(0,s.useRef)(null),q=(0,s.useRef)(null),X=(0,s.useRef)(null),W=(0,s.useCallback)(()=>uN(function*(){if(!uS(k))return Q.current=null,X.current=null,!0;if(Q.current===S)return!0;let e=X.current;if((null==e?void 0:e.signature)===S)return e.promise;let t={promise:Promise.resolve(!0),signature:S},r=uN(function*(){try{var e;return yield(e=function*(){return!!uS(k)&&(yield O.overrideConfig(k),!0)},function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){uk(i,n,o,a,s,"next",e)}function s(e){uk(i,n,o,a,s,"throw",e)}a(void 0)})})(),Q.current=S,!0}catch(e){return uv(e,{title:"Failed to apply AI configuration"}),!1}finally{X.current===t&&(X.current=null)}})();return t.promise=r,X.current=t,r})(),[k,S,O]),H=(0,s.useCallback)(()=>{let e=null!==z.current;null!==z.current&&(window.clearInterval(z.current),z.current=null);let t=B.current;B.current=null,F.current&&m(null),null==t||t(),e&&F.current&&(null==c||c())},[c]),Y=(0,s.useCallback)(()=>uN(function*(){if(!(i<=0))return H(),new Promise(e=>{B.current=e;let t=i;F.current&&m(t),z.current=window.setInterval(()=>{if((t-=1)>0){F.current&&m(t);return}if(0===t){F.current&&m("GO!");return}H()},1e3)})})(),[i,H]);(0,s.useEffect)(()=>(F.current=!0,()=>{F.current=!1,H()}),[H]),(0,s.useEffect)(()=>T.includes("countdown-before-run")?(O.setBeforeActionHook(()=>uN(function*(){yield Y()})()),()=>{O.setBeforeActionHook(void 0)}):void O.setBeforeActionHook(void 0),[T,O,Y]);let G=(0,s.useCallback)(e=>uN(function*(){let t=uD({},u.getFieldsValue(!0),e||{});w(!0);try{let r=yield O.getSessionSetup(e);g(r),v(null);let n=uz(r);L.current=n&&"string"==typeof t[n]?t[n]:void 0,u.setFieldsValue(uw(r,t))}catch(e){console.error("Failed to load session setup:",e),v(e instanceof Error?e.message:"Failed to load session setup")}finally{w(!1)}})(),[u,O]),V=(0,s.useCallback)((e,t)=>uN(function*(){if(q.current)return q.current;let r=uN(function*(){var r;let n;try{if(J.current=!0,x(!0),!(yield W()))return!1;let r=null!=e?e:yield u.validateFields();return n=r,yield O.createSession(r),(null==t?void 0:t.silent)||(K.current=null),(null==t?void 0:t.silent)||A.success("Agent created"),yield N(),!0}catch(e){if(e.errorFields)return!1;if(null==t?void 0:t.silent)return K.current=uI(n),!1;return uv(e,null!=(r=function(e){let t;if(t=uj(e).toLowerCase(),uR.test(t)&&(t.includes("puppeteer browsers install chrome")||t.includes("cache path")||t.includes("puppeteer")))return{description:(0,a.jsx)(uM,{error:e}),duration:0,title:"Failed to create Agent"}}(e))?r:{title:"Failed to create Agent"}),!1}finally{J.current=!1,x(!1)}})(),n={promise:null};return n.promise=r.finally(()=>{q.current===n.promise&&(q.current=null)}),q.current=n.promise,n.promise})(),[W,u,A,O,N]),$=(0,s.useCallback)(()=>uN(function*(){try{K.current=uI(uE(f,u.getFieldsValue(!0))),J.current=!0,x(!0),yield O.destroySession(),A.success("Session disconnected"),yield N(),yield G()}catch(e){uv(e,{title:"Failed to disconnect session"})}finally{J.current=!1,x(!1)}})(),[u,A,O,N,G,f]);return(0,s.useEffect)(()=>{R&&W()},[W,R]),(0,s.useEffect)(()=>{if(!R||D.connected)return;let e=!1,t=!1,r=()=>uN(function*(){if(!e&&!t){t=!0;try{yield G(u.getFieldsValue(!0))}finally{t=!1}}})();r();let n=window.setInterval(()=>{r()},o);return()=>{e=!0,window.clearInterval(n)}},[u,o,G,R,D.connected]),(0,s.useEffect)(()=>{if(!R||D.connected||!C)return;let e=uz(f);if(e&&L.current!==C){var t,r;G((t=uD({},u.getFieldsValue(!0)),r=r={[e]:C},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))}},[u,G,C,R,f,D.connected]),(0,s.useEffect)(()=>{if(D.connected){U.current=null;return}if(!R||b||E||J.current||y)return;let e=uE(f,u.getFieldsValue(!0)),{signature:t,shouldCreate:r}=function(e){let{autoCreateInput:t,lastAttemptedSignature:r,blockedSignature:n}=e,o=uI(t);return o?{signature:o,shouldCreate:o!==r&&o!==n}:{signature:null,shouldCreate:!1}}({autoCreateInput:e,lastAttemptedSignature:U.current,blockedSignature:K.current});if(!r||!t){t||(U.current=null);return}U.current=t,uN(function*(){(yield V(null!=e?e:void 0,{silent:!0}))||(U.current=null)})()},[V,u,R,b,E,f,y,D.connected]),{state:{playgroundSDK:O,form:u,formValues:p,serverOnline:R,isUserOperating:j,deviceType:P,runtimeInfo:M,executionUxHints:T,sessionViewState:D,sessionSetup:f,sessionSetupError:y,sessionLoading:b,sessionMutating:E,countdown:h,countdownSeconds:i},actions:{refreshServerState:N,refreshSessionSetup:G,createSession:V,destroySession:$,finishCountdown:H}}}({serverUrl:r,defaultDeviceType:i,countdownSeconds:null==A||null==(t=A.executionUx)?void 0:t.countdownSeconds,pollIntervalMs:p});return((0,s.useEffect)(()=>{let e=()=>{m(window.innerWidth<=1024)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),f.state.serverOnline)?(0,a.jsx)(eW,{children:(0,a.jsx)(eA.A,{className:"app-container playground-container",children:(0,a.jsx)(hS,{className:"app-content",children:(0,a.jsxs)(eu.YZ,{autoSaveId:"playground-layout",direction:h?"vertical":"horizontal",children:[(0,a.jsx)(eu.Zk,{defaultSize:h?67:32,maxSize:h?85:60,minSize:h?67:25,className:"app-panel left-panel",children:(0,a.jsxs)("div",{className:"panel-content left-panel-content",children:[(0,a.jsx)("div",{className:"playground-panel-header",children:(0,a.jsxs)("div",{className:"header-row",children:[(0,a.jsx)(c,{}),(0,a.jsx)(ec,{showTooltipWhenEmpty:!1,showModelName:!1,playgroundSDK:f.state.playgroundSDK})]})}),(0,a.jsx)("div",{className:"playground-panel-playground",children:(0,a.jsx)(hk,{controller:f,appVersion:n,branding:l,playgroundConfig:A,title:o})})]})}),(0,a.jsx)(eu.TW,{className:"panel-resize-handle"}),(0,a.jsx)(eu.Zk,{defaultSize:h?33:68,minSize:h?15:40,className:"app-panel right-panel",children:(0,a.jsx)("div",{className:"panel-content right-panel-content",children:f.state.sessionViewState.connected?(0,a.jsx)(eq,{playgroundSDK:f.state.playgroundSDK,runtimeInfo:f.state.runtimeInfo,serverUrl:r,serverOnline:f.state.serverOnline,isUserOperating:f.state.isUserOperating}):(0,a.jsx)(ep,{})})})]})})})}):(0,a.jsx)(eW,{children:(0,a.jsx)("div",{className:"server-offline-container",children:(0,a.jsxs)("div",{className:"server-offline-message",children:[(0,a.jsx)(c,{}),(0,a.jsxs)("div",{className:"server-offline-content",children:[(0,a.jsxs)("div",{className:"server-offline-icon",children:[(0,a.jsx)(uB,{className:"icon-background"}),(0,a.jsx)(uF,{className:"icon-foreground"})]}),(0,a.jsx)("h1",{children:u}),(0,a.jsx)("p",{className:"connection-status",children:d})]})]})})})}let hC=document.getElementById("root");if(!hC)throw Error("Root element not found");(0,l.createRoot)(hC).render((0,a.jsx)(s.StrictMode,{children:(0,a.jsx)(function(){return(0,a.jsx)(hI,{serverUrl:"",appVersion:"1.16.1",title:"Playground",offlineTitle:"Midscene Playground"})},{})}))},33675(e,t,r){"use strict";r.d(t,{l:()=>a});let n=["intent","slot","model_name","response_model_name","model_description","prompt_tokens","cached_input","completion_tokens","total_tokens","time_cost","request_id"];function o(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function i(e,t){return Math.max(0,o(e[t])??0)}function a(e){let t,r,a,s,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e||!Array.isArray(e.executions))throw Error("collectReportSummary: report.executions must be an array");let c=0,A=0,u=new Map,d=e=>{let n=o(e);void 0!==n&&(t=void 0===t?n:Math.min(t,n),r=void 0===r?n:Math.max(r,n))},p=e=>{let t;if(!(e&&n.some(t=>void 0!==e[t]&&null!==e[t])))return;let r=e.model_name||e.response_model_name||e.model_description||e.intent||"Unknown",a=u.get(r)??{modelName:r,callCount:0,promptTokens:0,cachedInputTokens:0,completionTokens:0,totalTokens:0,modelCallTimeMs:0},s=i(e,"time_cost");u.set(r,{modelName:r,callCount:a.callCount+1,promptTokens:a.promptTokens+i(e,"prompt_tokens"),cachedInputTokens:a.cachedInputTokens+i(e,"cached_input"),completionTokens:a.completionTokens+i(e,"completion_tokens"),totalTokens:a.totalTokens+(void 0!==(t=o(e.total_tokens))&&t>0?t:i(e,"prompt_tokens")+i(e,"completion_tokens")),modelCallTimeMs:a.modelCallTimeMs+s}),c+=1,A+=s};for(let t of e.executions)for(let e of t.tasks){var h,m;d(null==(h=e.timing)?void 0:h.start),d(null==(m=e.timing)?void 0:m.end),p(e.usage),p(e.searchAreaUsage)}let f=Array.from(u.values()),g=f.reduce((e,t)=>({promptTokens:e.promptTokens+t.promptTokens,cachedInputTokens:e.cachedInputTokens+t.cachedInputTokens,completionTokens:e.completionTokens+t.completionTokens,totalTokens:e.totalTokens+t.totalTokens}),{promptTokens:0,cachedInputTokens:0,completionTokens:0,totalTokens:0}),y=o(l.wallTimeFallbackMs);return void 0!==t&&void 0!==r?(a=Math.max(0,r-t),s="task-timestamps"):void 0!==y&&y>=0?(a=y,s="fallback"):s="unavailable",{timing:{wallTimeMs:a,wallTimeStart:"task-timestamps"===s?t:void 0,wallTimeEnd:"task-timestamps"===s?r:void 0,wallTimeSource:s,modelCallTimeMs:A,modelCallCount:c},tokens:g,models:f}}},68629(e,t,r){"use strict";r(58188),r(20875),r(28492)},27430(e,t,r){"use strict";r.d(t,{U:()=>p});var n=r(64565),o=r(19152),i=r(584),a=r(73840),s=r(4130),l=r(43545),c=r(27533),A=r(21749),u=r(47339),d=r(69087);function p(e,t){var r,p;let h,m,f=(null==(r=t.createDocumentRunId)?void 0:r.call(t))??(0,o.uR)(),g=t.plan??(0,a.V)(e,{defaultTimeoutMs:t.defaultTimeoutMs,retry:{scope:"case",count:(null==(p=t.project)?void 0:p.retry)??0}}),y=new Date,v=[],b=[],w={beforeAll:e.lifecycle.beforeAll.map(e=>t.resolveNode(e.node)),afterAll:e.lifecycle.afterAll.map(e=>t.resolveNode(e.node))},E=t.project??Object.freeze({projectId:e.projectId,name:e.projectId,retry:0}),x=t.projectContext,k=(0,c.d5)(t.signal),S=k.signal;(0,c.Wl)(S,{scopeId:f});let I=[],C=!0,O=!1,R=new Set,j=[],P=new Map,M=[],T=[],N=!1,D=function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=new Date,o=(0,c.Jo)(S),i=(0,c.CK)(S),a={beforeAll:(0,A.V)(e.lifecycle.beforeAll.length,v),afterAll:(0,A.V)(e.lifecycle.afterAll.length,b)};return{plan:g,documentId:e.documentId,documentRunId:f,...void 0===t.documentAttemptIndex?{}:{attemptIndex:t.documentAttemptIndex},projectId:e.projectId,projectName:E.name,sourcePath:e.sourcePath,status:M.length>0||T.length>0||v.some(e=>"success"!==e.status)||b.some(e=>"success"!==e.status)||"pending"===o.status||"failed"===o.status||i.length>0||r.length>0?"failed":"success",executionStatus:Object.values(a).some(e=>"failed"===e.status)?"failed":Object.values(a).some(e=>"not-run"===e.status)||T.some(e=>{let{phase:t}=e;return"setup"===t})||S.aborted&&!v.length&&!b.length?"not-run":"success",phases:a,cleanup:o,...i.length?{pendingOperations:i}:{},startedAt:y.toISOString(),endedAt:n.toISOString(),durationMs:Math.max(0,n.getTime()-y.getTime()),beforeAll:[...v],afterAll:[...b],...M.length?{executionErrors:M.filter(e=>!T.some(t=>t.error===e)).map(l.rN)}:{},...T.length?{hostErrors:[...T]}:{},...r.length>0?{teardownErrors:[...r]}:{},...R.size>0?{reportPaths:[...R]}:{},...P.size||j.length?{reportSources:[...P.values(),...j]}:{}}},z=async function(r,n){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:S;for(let[u,d]of e.lifecycle[r].entries()){var a,l,A;let p=u>0?await (0,c.$G)(o):0,h={documentId:e.documentId,documentRunId:f,projectId:e.projectId,projectName:E.name,sourcePath:e.sourcePath,phase:r,stepIndex:u},m={scope:"document",node:d.node,stepCount:e.lifecycle[r].length,document:h};await (null==(a=t.onStepStart)?void 0:a.call(t,m));let g=await (0,s.I)(d,w[r][u],{scope:"document",document:h},x,{signal:o,defaultTimeoutMs:t.defaultTimeoutMs,onTeardown(t,r){if(!C)throw new i.Uu("Node teardown can only be registered while a workflow document is running.",{documentId:e.documentId,documentRunId:f,node:t});if("function"!=typeof r)throw new i.Uu("Node onTeardown() requires a teardown function.",{documentId:e.documentId,documentRunId:f,node:t});I.push({registrationIndex:I.length,node:t,teardown:r})}});for(let e of(p>0&&(g.waitForPreviousOperationMs=p),n.push(g),(null==(l=g.report)?void 0:l.sources)??[]))P.set(`${e.sourcePath}\u0000${e.dumpPath??""}`,e);if(await (null==(A=t.onStepResult)?void 0:A.call(t,m,g)),"success"!==g.status&&!g.continuedAfterError)break}};return{signal:S,get context(){return x},get canRunCases(){return O&&0===M.length&&0===T.length&&!S.aborted&&!v.some(e=>"success"!==e.status)},async start(){if(O)throw new i.Uu("Workflow document runtime has already started.",{documentId:e.documentId,documentRunId:f});if(O=!0,!S.aborted&&t.documentSetup){N=!0;try{await (0,d.q)(async()=>{try{x=await t.documentSetup.setup({project:E,projectContext:t.projectContext,document:{documentId:e.documentId,documentRunId:f,sourcePath:e.sourcePath,attemptIndex:t.documentAttemptIndex??0},signal:S,onTeardown(r){if(!N||"function"!=typeof r)throw new i.Uu("Document setup onTeardown() requires a function registered during setup.",{documentId:e.documentId,documentRunId:f});I.push({registrationIndex:I.length,node:t.documentSetup.name,teardown:r,host:!0})}})}finally{N=!1}},S,k.abort,t.setupTimeoutMs)}catch(e){T.push({phase:"setup",error:(0,l.rN)(e)})}}try{S.aborted||T.length||await z("beforeAll",v)}catch(e){throw M.push(e),new l.CW(D(),[...M])}return D()},async finish(){if(m)return m;if(!O)throw new i.Uu("Workflow document runtime must start before it can finish.",{documentId:e.documentId,documentRunId:f});return m=(async()=>{var r,o;let a=[],s=[],A=!1,d=async()=>{let e=a.length;for(let{registrationIndex:e,node:t,teardown:r,host:n}of(C=!1,I.reverse()))try{let e=await r();for(let t of(j.push(...(null==e?void 0:e.reportSources)??[]),(0,u.H)(e)))R.add(t)}catch(r){if(n){let e=(0,l.rN)(r);T.push({phase:"cleanup",error:e}),M.push(e),s.push(r);continue}a.push(new i.Lu(r,{scope:"document",scopeId:f,node:t,registrationIndex:e}))}{let t=[...s,...a.slice(e)];if(t.length)throw AggregateError(t,"Document cleanup failed")}};try{e.lifecycle.afterAll.length||I.length||void 0!==t.setupTimeoutMs&&(0,c.CK)(S).length?await (0,c.Cv)(S,d,{totalTimeoutMs:null==(r=t.teardownTimeoutMs)?void 0:r.call(t),beforeCleanup:async e=>{try{T.some(e=>"setup"===e.phase)||await z("afterAll",b,e)}catch(e){M.push(e),s.push(e)}},onDeferredError:e=>(0,n.aZ)("runner:cleanup",{console:!0})(`Deferred document cleanup failed: ${String(e)}`)}):C=!1}catch(e){(A=e instanceof c.Gv)||(C=!1),A||a.length||s.length||a.push(new i.Lu(e,{scope:"document",scopeId:f,node:"resource-drain",registrationIndex:-1}))}h=D(a);try{await (null==(o=t.onResult)?void 0:o.call(t,h))}catch(e){M.push(e),h=D(a)}if(k.dispose(),M.length)throw new l.CW(h,[...M]);return h})()}}}},4130(e,t,r){"use strict";r.d(t,{I:()=>c});var n=r(584),o=r(27533);function i(e,t){if(void 0!==e){if("object"!=typeof e||null===e||Array.isArray(e))throw new n.h2(t,TypeError("Node output must be an object or undefined."));if("summary"in e&&void 0!==e.summary&&"string"!=typeof e.summary)throw new n.h2(t,TypeError("Node output summary must be a string."));return e}}function a(e,t,r,n){let o=new Date;return{node:e.node,phase:r,stepIndex:n,input:e.input,meta:e.meta,startedAt:t.toISOString(),endedAt:o.toISOString(),durationMs:Math.max(0,o.getTime()-t.getTime())}}async function s(e,t,r,s,l){let c,A,u,d=new Date,p=new AbortController,h=l.parentSignal;(0,o.XT)(p.signal,h),(0,o.Wl)(p.signal,l.identity);let m=(0,o.Px)(p.signal,l.onEvent),f=()=>p.abort(null==h?void 0:h.reason);(null==h?void 0:h.aborted)?f():null==h||h.addEventListener("abort",f,{once:!0});let g=e.meta.timeoutMs??l.defaultTimeoutMs,y=Promise.resolve().then(()=>(p.signal.throwIfAborted(),t(p.signal))),v=(0,o.rf)(y,p.signal,"node");(0,o.DL)({},y,p.signal,"node",v);let b="failed",w=new Promise((e,t)=>{u=()=>{A=setTimeout(()=>{t(p.signal.reason)},0)},p.signal.aborted?u():p.signal.addEventListener("abort",u,{once:!0})}),E=void 0===g?void 0:new Promise((t,r)=>{c=setTimeout(()=>{if(p.signal.aborted)return void r(p.signal.reason);let t=new n.o1(g,e.node);p.abort(t),r(t)},g)}),x=Promise.race([y,w,...void 0===E?[]:[E]]);try{let t=i(await x,e.node);return b="success",{...a(e,d,r,s),status:"success",continuedAfterError:!1,...void 0===t?{}:{output:t}}}catch(c){let t;if((0,o.kr)(c))return b="not-run",{node:e.node,phase:r,stepIndex:s,input:e.input,meta:e.meta,status:"not-run",notRunReason:c.message,...c.blockedBy?{blockedBy:c.blockedBy}:{},continuedAfterError:e.meta.continueOnError,error:c};let l=c;if(c instanceof n.h2&&void 0!==c.output)try{t=i(c.output,e.node)}catch(e){l=e}return{...a(e,d,r,s),status:"failed",continuedAfterError:e.meta.continueOnError,error:(0,n.au)(l,e.node),...void 0===t?{}:{output:t}}}finally{v.runnerReturned(b),m(),void 0!==c&&clearTimeout(c),void 0!==A&&clearTimeout(A),void 0!==u&&p.signal.removeEventListener("abort",u),null==h||h.removeEventListener("abort",f)}}async function l(e,t){if(!e.inputSchema)return t;let r=await e.inputSchema.safeParseAsync(t);if(!r.success)throw n.OL.fromZod(e.name,r.error);return r.data}async function c(e,t,r,o){var i,a,c;let A,u,d,p,h=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},m="case"===r.scope?r.case.phase:r.document.phase,f="case"===r.scope?r.case.stepIndex:r.document.stepIndex,g=(i=e.node,A=new Map,u=[],d=!0,{collector:Object.freeze({onSnapshot(e){if(!d||"function"!=typeof e)throw new n.s8("A report snapshot callback must be registered while the Step is running.",{code:"REPORT_SNAPSHOT_REGISTRATION"});u.push(e)},addTrace(e){if(!d)throw new n.h2(i,Error("Report traces can only be added while the current Step is running."));if(!e||"object"!=typeof e||"midscene-execution"!==e.type)throw new n.h2(i,TypeError('Report trace type must be "midscene-execution".'));if("string"!=typeof e.executionId||0===e.executionId.trim().length)throw new n.h2(i,TypeError("Report trace executionId must be non-empty."));let t=Object.freeze({type:"midscene-execution",executionId:e.executionId,...e.metrics?{metrics:structuredClone(e.metrics)}:{}});A.set(`${t.type}:${t.executionId}`,t)}}),async close(){let e;d=!1;let t=Object.freeze([...A.values()]);if(!u.length)return Object.freeze({traces:t});let r=new AbortController,o=new Promise((t,o)=>{e=setTimeout(()=>{let e=new n.s8("Agent report snapshot collection timed out.",{code:"REPORT_SNAPSHOT_TIMEOUT",details:{timeoutMs:5e3}});r.abort(e),o(e)},5e3)}),i=await Promise.all(u.map(async e=>{try{var i,a;let n=await Promise.race([Promise.resolve().then(()=>e(r.signal,t)),o]);if(!n||"string"!=typeof n.sourcePath||!n.sourcePath.trim()||void 0!==n.dumpPath&&("string"!=typeof n.dumpPath||!n.dumpPath.trim()))throw Error("Agent report capture must return sourcePath and a valid optional dumpPath.");let s=n.dumpPath?n:{...n,collection:{status:"partial",capturedAt:(null==(i=n.collection)?void 0:i.capturedAt)??new Date().toISOString(),reason:(null==(a=n.collection)?void 0:a.reason)??"HTML report captures do not guarantee an immutable cutoff."}};return{source:Object.freeze({...s,...s.collection?{collection:Object.freeze({...s.collection})}:{}})}}catch(e){return{error:e instanceof n.s8?e:new n.s8(`Agent report snapshot collection failed: ${String(e)}`,{code:"REPORT_SNAPSHOT_FAILED",cause:e})}}}));void 0!==e&&clearTimeout(e);let a=i.flatMap(e=>e.source?[e.source]:[]),s=i.flatMap(e=>e.error?[e.error]:[]);return Object.freeze({traces:t,...a.length?{sources:Object.freeze(a)}:{},...s.length?{collectionErrors:Object.freeze(s)}:{}})}}),y=[],v="case"===r.scope?r.case.runId:r.document.documentRunId;try{p=await s(e,async i=>{let a=await l(t,e.input);i.throwIfAborted();let s={input:a,$:e.meta,signal:i,context:o,report:g.collector,onTeardown:t=>{if(!h.onTeardown)throw new n.h2(e.node,Error("The current execution scope cannot register teardown."));h.onTeardown(e.node,t)}};return"case"===r.scope?t.execute({...s,scope:"case",case:r.case}):t.execute({...s,scope:"document",document:r.document})},m,f,{parentSignal:h.signal,defaultTimeoutMs:h.defaultTimeoutMs,identity:{scopeId:v,stepId:`${v}:${m}:${f}`,node:e.node},onEvent:e=>y.push(e)})}finally{let e=await g.close();p&&(p={...p,operations:Object.freeze({capturedAt:new Date().toISOString(),events:Object.freeze([...y])})}),(e.traces.length||(null==(a=e.sources)?void 0:a.length)||(null==(c=e.collectionErrors)?void 0:c.length))&&p&&(p={...p,report:e})}if(!p)throw new n.h2(e.node,Error("Step execution completed without a result."));return p}},43545(e,t,r){"use strict";r.d(t,{CW:()=>a,gX:()=>s,rN:()=>l});var n=r(584);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let i=e=>e&&"object"==typeof e&&"message"in e&&"string"==typeof e.message?e.message:String(e);class a extends n.s8{constructor(e,t){super(t.map(i).join("; "),{code:"WORKFLOW_EXECUTION_FAILURE",cause:t[0]}),o(this,"result",void 0),o(this,"errors",void 0),this.result=e,this.errors=t}}class s extends n.s8{constructor(e,t,r){super(`Failed to ${e} at ${t}: ${r instanceof Error?r.message:String(r)}`,{code:"WORKFLOW_PUBLICATION_FAILED",details:{operation:e,path:t},cause:r})}}let l=e=>e instanceof n.s8?e:new n.s8(i(e),{code:"WORKFLOW_EXECUTION_FAILURE",cause:e})},92298(e,t,r){"use strict";r.d(t,{admitResourceOperation:()=>i.lJ,runWorkflowDocument:()=>n.o,trackResourceOperation:()=>i.DL,waitForResourceIdle:()=>i.TH}),r(68629),r(27430),r(20875),r(28492);var n=r(2909),o=r(25725);r.o(o,"waitForResourceIdle")&&r.d(t,{waitForResourceIdle:function(){return o.waitForResourceIdle}}),r.o(o,"defineNode")&&r.d(t,{defineNode:function(){return o.defineNode}}),r.o(o,"admitResourceOperation")&&r.d(t,{admitResourceOperation:function(){return o.admitResourceOperation}}),r.o(o,"trackResourceOperation")&&r.d(t,{trackResourceOperation:function(){return o.trackResourceOperation}}),r(58666),r(4130),r(47339),r(43545);var i=r(27533)},58666(e,t,r){"use strict";r(584),r(27533),r(69087),r(85409)},20875(e,t,r){"use strict";r(584),r(38042)},27533(e,t,r){"use strict";r.d(t,{$G:()=>D,CK:()=>b,Cv:()=>L,DL:()=>T,Gv:()=>z,Jo:()=>v,Px:()=>S,TH:()=>N,Wl:()=>I,XT:()=>E,d5:()=>k,kr:()=>j,lJ:()=>P,ni:()=>w,oL:()=>F,rf:()=>O});var n=r(64565),o=r(19152),i=r(584),a=r(57073);function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let l=Symbol.for("@midscene/core/resource-admission-error"),c=Symbol.for("@midscene/core/resource-operations/v4"),A=globalThis;A[c]??(A[c]={resources:new WeakMap,scopes:new WeakMap,parents:new WeakMap,cleanupOwners:new WeakMap,identities:new WeakMap,listeners:new WeakMap});let{resources:u,scopes:d,parents:p,cleanupOwners:h,identities:m,listeners:f}=A[c],g=e=>{let t=u.get(e);return t||(t={operations:new Map,retiring:new Set},u.set(e,t)),t};function y(e){let t=new Map,r=new Set,n=e=>{if(!r.has(e))for(let o of(r.add(e),e.settled||t.set(e.operationId,{operationId:e.operationId,...e.identity}),e.blockers??[]))n(o)};for(let t of e)n(t);return[...t.values()]}function v(e){var t;let r=null==(t=u.get(e))?void 0:t.cleanupState;return C({capturedAt:new Date().toISOString(),status:(null==r?void 0:r.status)??"not-required",...(null==r?void 0:r.operationId)?{operationId:r.operationId}:{},...(null==r?void 0:r.status)==="pending"?{blockingOperations:y(r.blockers)}:{},...(null==r?void 0:r.error)===void 0?{}:{error:(0,a.EQ)(r.error)}})}function b(e){var t;return C(y([...(null==(t=d.get(e))?void 0:t.operations.keys())??[]].flatMap(e=>{var t;return[...(null==(t=u.get(e))?void 0:t.operations.values())??[]]})))}let w=e=>{var t;return((null==(t=u.get(e))?void 0:t.operations.size)??0)>0};function E(e,t){t&&t!==e&&p.set(e,t)}function*x(e){let t=new Set;for(let r=e;r&&!t.has(r);r=p.get(r))t.add(r),yield r}function k(e){let t=new AbortController,r={operations:new Map,resources:new Set};d.set(t.signal,r),E(t.signal,e);let n=()=>t.abort(null==e?void 0:e.reason);return(null==e?void 0:e.aborted)?n():null==e||e.addEventListener("abort",n,{once:!0}),{signal:t.signal,abort(e){t.abort(e)},dispose(){null==e||e.removeEventListener("abort",n),r.resources=void 0,r.operations.size||d.delete(t.signal)}}}function S(e,t){let r=f.get(e)??new Set;return f.set(e,r),r.add(t),()=>{r.delete(t),r.size||f.delete(e)}}function I(e,t){m.set(e,Object.freeze({...t}))}function C(e){if("object"==typeof e&&null!==e&&!Object.isFrozen(e)){for(let t of Object.values(e))C(t);Object.freeze(e)}return e}function O(e,t,r){let i=[...x(t)],s=i.map(e=>m.get(e)).find(Boolean),l={signal:t,operationId:(0,o.uR)(),identity:s},c=new Set(i.flatMap(e=>[...f.get(e)??[]])),A=!1,u=e=>{let t=C({...s,operationId:l.operationId,operationKind:r,at:new Date().toISOString(),...e});for(let e of c)try{e(t)}catch(e){(0,n.aZ)("runner:operations",{console:!0})(`Operation observer failed: ${String(e)}`)}},d=()=>u({kind:"cancel-requested",error:(0,a.EQ)(t.reason)});u({kind:"started"}),t.aborted?d():t.addEventListener("abort",d,{once:!0});let p=(e,r)=>{A=!0,l.settled=!0,t.removeEventListener("abort",d),u({kind:"settled",status:e,..."success"!==e?{error:(0,a.EQ)(r)}:{}})};return e.then(()=>p("success"),e=>p(j(e)?"not-run":"failed",e)),{record:l,runnerReturned(e){u({kind:"runner-returned",status:e,pending:!A})},cleanupDeferred(e){u({kind:"cleanup-deferred",blockingOperations:y(e)})}}}class R extends i.s8{constructor(e,t){var r,n;super("The Agent is occupied by an unfinished operation or pending cleanup; this action was not started.",{code:e,details:{blockingOperations:t.map(e=>{let{operationId:t,identity:r}=e;return{operationId:t,...r}})}}),s(this,"blockedBy",void 0),s(this,l,!0),this.blockedBy=null==(n=t.find(e=>{var t;return null==(t=e.identity)?void 0:t.stepId}))||null==(r=n.identity)?void 0:r.stepId}}function j(e){return"object"==typeof e&&null!==e&&!0===e[l]}function P(e,t){let r,n=!(arguments.length>2)||void 0===arguments[2]||arguments[2];try{r=function(e){var t,r;let n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=arguments.length>2?arguments[2]:void 0,a=null==(t=u.get(e))?void 0:t.retiring,s=[...x(o)].some(e=>{let t=h.get(e);return void 0!==t&&(null==a?void 0:a.has(t))});if((null==a?void 0:a.size)&&!s)throw new i.s8("A resource cannot execute overlapping Runner operations while its cleanup is pending.",{code:"RESOURCE_CLEANUP_PENDING"});let l=null==(r=u.get(e))?void 0:r.operations;if(n&&(null==l?void 0:l.size))throw new i.s8("The same Agent instance cannot execute overlapping Runner operations.",{code:"RESOURCE_OPERATION_PENDING"});if(l&&[...l.values()].some(e=>e.signal.aborted))throw new i.s8("Cannot reuse an Agent while an aborted YAML action or Runner operation is still running.",{code:"RESOURCE_OPERATION_PENDING"});return s}(e,n,t)}catch(t){var o,a;if(t instanceof i.s8&&["RESOURCE_OPERATION_PENDING","RESOURCE_CLEANUP_PENDING"].includes(t.code))throw new R(t.code,[...(null==(o=u.get(e))?void 0:o.operations.values())??[],...[...(null==(a=u.get(e))?void 0:a.retiring)??[]].flatMap(e=>[...e.blockers])]);throw t}return r}let M=(e,t)=>{e.resources.add(t);let r=g(t);for(let t of r.operations.values())e.blockers.add(t);r.retiring.add(e)};function T(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"resource",o=arguments.length>4?arguments[4]:void 0,i=o??O(t,r,n),a=g(e).operations;a.set(t,i.record);let s=[],l=!1;for(let t of x(r)){let r=d.get(t)??{operations:new Map};d.set(t,r),r.operations.set(e,(r.operations.get(e)??0)+1),s.push([t,r]),!l&&r.resources&&(r.resources.add(e),l=!0);let n=h.get(t);n&&(n.blockers.add(i.record),M(n,e))}let c=()=>{for(let[r,n]of(a.delete(t),s)){let t=n.operations.get(e)-1;t?n.operations.set(e,t):n.operations.delete(e),n.operations.size||n.resources||d.delete(r)}};return t.then(c,c),t}async function N(e){for(var t,r;null==(r=u.get(e))||null==(t=r.operations)?void 0:t.size;)await Promise.allSettled([...u.get(e).operations.keys()])}async function D(e){let t,r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3e4;e.throwIfAborted();let o=Date.now(),a=()=>{var t,r;let n=[];for(let o of(null==(t=d.get(e))?void 0:t.operations.keys())??[])for(let[t,i]of(null==(r=u.get(o))?void 0:r.operations)??[]){let r=i.signal;r.aborted&&[...x(r)].includes(e)&&n.push({operation:t,signal:r,resource:o,record:i})}return n},s=a();if(!s.length)return 0;let l=new Promise((a,l)=>{r=()=>l(e.reason),e.addEventListener("abort",r,{once:!0}),t=setTimeout(()=>{var e,t;let r=y(s.map(e=>{let{record:t}=e;return t})),a=r.every(e=>{var t;let{stepId:n}=e;return n===(null==(t=r[0])?void 0:t.stepId)})?null==(e=r[0])?void 0:e.stepId:void 0;l(new i.s8(`The previous operation was still running after ${n/1e3} s. Later steps were not started.`,{code:"RESOURCE_RECOVERY_TIMEOUT",details:{graceMs:n,waitedMs:Date.now()-o,resourceCount:new Set(s.map(e=>{let{resource:t}=e;return t})).size,blockingOperations:r,blockedByStepId:a},cause:null==(t=s[0])?void 0:t.signal.reason}))},n)});try{for(;s.length;)await Promise.race([Promise.allSettled(s.map(e=>{let{operation:t}=e;return t})),l]),e.throwIfAborted(),s=a();return Date.now()-o}finally{clearTimeout(t),e.removeEventListener("abort",r)}}class z extends i.s8{constructor(e,t,r=[]){super(`Resource cleanup did not finish within ${e}ms. Resources remain quarantined until cleanup settles.`,{code:"RESOURCE_CLEANUP_DEFERRED",details:{graceMs:e,resourceCount:t,blockingOperations:r.map(e=>{let{operationId:t,identity:r}=e;return{operationId:t,...r}})}})}}async function B(e,t,r,n){let o,a,s={resources:new Set,blockers:new Set,signal:null==n?void 0:n.signal};for(let t of e)M(s,t);s.signal&&h.set(s.signal,s);let l=r.signal?d.get(r.signal):void 0;l&&(l.cleanupOwner=s);let c=new Promise(e=>{o=()=>{void 0!==r.totalTimeoutMs&&(null==n||n.abort(new i.s8(`Resource cleanup timed out after ${r.totalTimeoutMs}ms.`,{code:"TEARDOWN_TIMEOUT",details:{timeoutMs:r.totalTimeoutMs}}))),e({deferred:!0})}}),A=r.totalTimeoutMs??r.graceMs??1e3,u=async()=>{void 0===r.totalTimeoutMs&&(a=setTimeout(o,A));try{for(;;){let e=[...s.resources].filter(e=>g(e).operations.size);if(!e.length)return;await Promise.all(e.map(N))}}finally{void 0===r.totalTimeoutMs&&clearTimeout(a)}},p=(async()=>{void 0!==r.totalTimeoutMs&&(a=setTimeout(o,Math.max(0,r.totalTimeoutMs)));try{return n&&await n.run(n.signal),await u(),void 0===r.totalTimeoutMs&&(A=r.graceMs??1e4,a=setTimeout(o,A)),await t()}finally{for(let e of(clearTimeout(a),s.signal&&h.delete(s.signal),(null==l?void 0:l.cleanupOwner)===s&&(l.cleanupOwner=void 0),s.resources))g(e).retiring.delete(s)}})(),m=r.signal?O(p,r.signal,"cleanup"):void 0,f=r.owner??(null==n?void 0:n.signal)??e[0],y={status:"pending",operationId:null==m?void 0:m.record.operationId,blockers:s.blockers};m&&(m.record.blockers=s.blockers),f&&(g(f).cleanup=p,g(f).cleanupState=y),p.then(()=>{y.status="completed"},e=>{y.status="failed",y.error=e});let v=await Promise.race([p.then(e=>({value:e})),c]);if("deferred"in v)throw null==m||m.cleanupDeferred(s.blockers),p.catch(e=>{try{r.onDeferredError(e)}catch{}}),r.signal&&T({},p,r.signal,"cleanup",m),new z(A,s.resources.size,[...s.blockers]);return v.value}function F(e,t,r){return B(e,t,r)}async function L(e,t,r){let n=new AbortController,o=n.signal;E(o,e);let i=d.get(e);return B([...(null==i?void 0:i.resources)??[],...(null==i?void 0:i.operations.keys())??[]],t,{...r,owner:e,signal:e},r.beforeCleanup?{signal:o,abort:e=>n.abort(e),run:r.beforeCleanup}:void 0)}},21749(e,t,r){"use strict";function n(e,t){let r=t.filter(e=>"not-run"!==e.status).length;return{plannedStepCount:e,executedStepCount:r,status:0===e?"not-required":t.some(e=>"failed"===e.status)?"failed":r<e?"not-run":"success"}}function o(e){let t=e.infrastructureError?"infrastructure-error":e.cleanupPending?"cleanup-pending":e.cleanupFailed?"cleanup-failed":e.operationPending?"operation-pending":e.fatalError?"fatal-error":e.interrupted?"interrupted":e.shouldStop?"bail":"success"===e.status?"passed":e.attemptIndex>=e.retryCount?"budget-exhausted":"attempt-failed";return{scope:e.scope,retryCount:e.retryCount,attemptIndex:e.attemptIndex,decision:"attempt-failed"===t?"retry":"stop",reason:t}}r.d(t,{V:()=>n,t:()=>o})},28492(e,t,r){"use strict";r.d(t,{V:()=>u});var n=r(64565),o=r(19152),i=r(584),a=r(4130),s=r(43545),l=r(27533),c=r(21749),A=r(47339);async function u(e,t){var r,u,d;let p={beforeEach:t.beforeEach??[],steps:e.definition.steps,afterEach:t.afterEach??[]},h={beforeEach:p.beforeEach.map(e=>t.resolveNode(e.node)),steps:p.steps.map(e=>t.resolveNode(e.node)),afterEach:p.afterEach.map(e=>t.resolveNode(e.node))},m=(0,l.d5)(t.signal),f=m.signal,g=(null==(r=t.createRunId)?void 0:r.call(t))??(0,o.uR)(),y=new Date;(0,l.Wl)(f,{scopeId:g});let v=[],b=[],w=[],E=new Map,x=[],k=!0,S=(e,t)=>{if(!k)throw new i.Uu("Node teardown can only be registered while a case attempt is running.",{runId:g,node:e});if("function"!=typeof t)throw new i.Uu("Node onTeardown() requires a teardown function.",{runId:g,node:e});x.push({registrationIndex:x.length,node:e,teardown:t})},I=async function(r,n){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:f;for(let[A,u]of p[r].entries()){var i,s,c;let d=A>0?await (0,l.$G)(o):0,m={caseId:e.caseId,runId:g,projectName:t.projectName??e.projectId,attemptIndex:t.attemptIndex??0,name:e.definition.name,sourcePath:e.sourcePath,caseIndex:e.caseIndex,phase:r,stepIndex:A},f={scope:"case",node:u.node,stepCount:p[r].length,case:m};await (null==(i=t.onStepStart)?void 0:i.call(t,f));let y=await (0,a.I)(u,h[r][A],{scope:"case",case:m},t.context,{signal:o,defaultTimeoutMs:t.defaultTimeoutMs,onTeardown:S});for(let e of(d>0&&(y.waitForPreviousOperationMs=d),n.push(y),(null==(s=y.report)?void 0:s.sources)??[]))E.set(`${e.sourcePath}\u0000${e.dumpPath??""}`,e);if(await (null==(c=t.onStepResult)?void 0:c.call(t,f,y)),"success"!==y.status&&!y.continuedAfterError)break}},C=[];try{await I("beforeEach",v),v.some(e=>"success"!==e.status)||await I("steps",b)}catch(e){C.push(e)}let O=[],R=new Set,j=[],P=[],M=!1,T=async()=>{let e=O.length;for(let{registrationIndex:e,node:t,teardown:r}of(k=!1,x.reverse()))try{let e=await r();for(let t of(j.push(...(null==e?void 0:e.reportSources)??[]),(0,A.H)(e)))R.add(t)}catch(r){O.push(new i.Lu(r,{scope:"case",scopeId:g,node:t,registrationIndex:e}))}{let t=[...P,...O.slice(e)];if(t.length)throw AggregateError(t,"Case cleanup failed")}};try{p.afterEach.length||x.length?await (0,l.Cv)(f,T,{totalTimeoutMs:null==(u=t.teardownTimeoutMs)?void 0:u.call(t),beforeCleanup:async e=>{try{await I("afterEach",w,e)}catch(e){C.push(e),P.push(e)}},onDeferredError:e=>(0,n.aZ)("runner:cleanup",{console:!0})(`Deferred Case cleanup failed: ${String(e)}`)}):k=!1}catch(e){(M=e instanceof l.Gv)||(k=!1),M||O.length||P.length||O.push(new i.Lu(e,{scope:"case",scopeId:g,node:"resource-drain",registrationIndex:-1}))}let N=new Date,D=(0,l.Jo)(f),z=(0,l.CK)(f),B={beforeEach:(0,c.V)(p.beforeEach.length,v),steps:(0,c.V)(p.steps.length,b),afterEach:(0,c.V)(p.afterEach.length,w)},F={caseId:e.caseId,runId:g,projectName:t.projectName??e.projectId,attemptIndex:t.attemptIndex??0,name:e.definition.name,sourcePath:e.sourcePath,caseIndex:e.caseIndex,status:C.length>0||v.some(e=>"success"!==e.status)||b.some(e=>"success"!==e.status)||w.some(e=>"success"!==e.status)||"pending"===D.status||"failed"===D.status||z.length>0||O.length>0?"failed":"success",beforeEach:[...v],steps:[...b],afterEach:[...w],executionStatus:Object.values(B).some(e=>"failed"===e.status)?"failed":Object.values(B).some(e=>"not-run"===e.status)?"not-run":"success",phases:B,cleanup:D,...z.length?{pendingOperations:z}:{},...C.length?{executionErrors:C.map(s.rN)}:{},...O.length>0?{teardownErrors:[...O]}:{},...R.size>0?{reportPaths:[...R]}:{},...E.size||j.length?{reportSources:[...E.values(),...j]}:{},...t.reportScopeId?{reportScopeId:t.reportScopeId}:{},startedAt:y.toISOString(),endedAt:N.toISOString(),durationMs:Math.max(0,N.getTime()-y.getTime())};try{await (null==(d=t.onResult)?void 0:d.call(t,F))}catch(e){C.push(e),F.status="failed",F.executionErrors=C.map(s.rN)}if(m.dispose(),C.length)throw new s.CW(F,C);return F}},2909(e,t,r){"use strict";r.d(t,{o:()=>A});var n=r(584),o=r(73840),i=r(27430),a=r(43545),s=r(21749),l=r(28492);let c=(e,t,r)=>({caseId:e.caseId,projectName:t,name:e.definition.name,sourcePath:e.sourcePath,caseIndex:e.caseIndex,...e.definition.onFailure?{onFailure:e.definition.onFailure}:{},status:"not-run",notRunReason:r});async function A(e,t){var r,A,u,d,p,h,m,f,g,y,v,b,w,E,x,k,S,I;let C,O,R=t.signal??new AbortController().signal,j=t.createDocumentRunId,P=t.createCaseRunId,M=(null==(r=t.project)?void 0:r.name)??e.projectId,T=t.retry??(null==(A=t.project)?void 0:A.retry)??0;if(!Number.isInteger(T)||T<0)throw TypeError("Workflow document retry must be a non-negative integer.");let N=(0,i.U)(e,{plan:t.plan??(0,o.V)(e,{defaultTimeoutMs:t.defaultTimeoutMs,retry:{scope:"case",count:T}}),documentSetup:t.documentSetup,setupTimeoutMs:t.setupTimeoutMs,teardownTimeoutMs:t.teardownTimeoutMs,documentAttemptIndex:t.documentAttemptIndex,resolveNode:t.resolveNode,project:t.project,projectContext:t.projectContext,signal:R,defaultTimeoutMs:t.defaultTimeoutMs,onStepStart:t.onStepStart,onStepResult:t.onStepResult,onResult:async e=>{var r,n,o;await (null==(n=t.documentSetup)||null==(r=n.onDocumentResult)?void 0:r.call(n,e,N.context)),await (null==(o=t.onDocumentResult)?void 0:o.call(t,e))},createDocumentRunId:j?()=>j(e):void 0}),D=[],z=!1,B=[],F=!1;try{z=!0;let r=await N.start();if(N.canRunCases)for(let o of e.cases){if(O||F||R.aborted||(null==(u=t.shouldStop)?void 0:u.call(t))){let e=c(o,M,R.aborted?(null==(m=t.stopReason)?void 0:m.call(t))??"interrupted":F?"fatal-error":O??(null==(f=t.stopReason)?void 0:f.call(t))??"interrupted");D.push(e),await (null==(g=t.onCaseOutcome)?void 0:g.call(t,e));continue}await (null==(d=t.onCaseStart)?void 0:d.call(t,o));let i=[];for(let c=0;c<=T;c+=1){let A,u=!1,d=await (0,l.V)(o,{resolveNode:t.resolveNode,beforeEach:e.lifecycle.beforeEach,afterEach:e.lifecycle.afterEach,context:N.context,projectName:M,attemptIndex:c,signal:N.signal,defaultTimeoutMs:t.defaultTimeoutMs,teardownTimeoutMs:t.teardownTimeoutMs,onStepStart:t.onStepStart,onStepResult:t.onStepResult,onResult:async e=>{var r,o,i,a,l,A,d,p;u=(null==(r=t.isFatalError)?void 0:r.call(t,e))??!1,e.retryDecision=(0,s.t)({scope:"case",retryCount:T,attemptIndex:c,status:e.status,cleanupPending:(null==(o=e.cleanup)?void 0:o.status)==="pending",operationPending:!!(null==(i=e.pendingOperations)?void 0:i.length),cleanupFailed:(null==(a=e.cleanup)?void 0:a.status)==="failed"||!!(null==(l=e.teardownErrors)?void 0:l.length),infrastructureError:null==(A=e.executionErrors)?void 0:A.some(e=>!(0,n.iK)(e)),fatalError:u,interrupted:R.aborted,shouldStop:null==(d=t.shouldStop)?void 0:d.call(t)}),await (null==(p=t.onCaseResult)?void 0:p.call(t,e))},reportScopeId:null==(y=t.resolveCaseReportScopeId)?void 0:y.call(t,o,c,r.documentRunId),createRunId:P?()=>P(o,c):void 0}).catch(e=>{if(!(e instanceof a.CW))throw e;return(A=e).result});if(i.push(d),A&&!A.errors.every(n.iK))throw d.retryDecision=(0,s.t)({scope:"case",retryCount:T,attemptIndex:c,status:d.status,infrastructureError:!0}),D.push({caseId:o.caseId,projectName:M,name:o.definition.name,sourcePath:o.sourcePath,caseIndex:o.caseIndex,...o.definition.onFailure?{onFailure:o.definition.onFailure}:{},status:"failed",run:d,attempts:i}),A;if(F=u,d.retryDecision=(0,s.t)({scope:"case",retryCount:T,attemptIndex:c,status:d.status,cleanupPending:(null==(v=d.cleanup)?void 0:v.status)==="pending",cleanupFailed:(null==(b=d.cleanup)?void 0:b.status)==="failed"||!!(null==(w=d.teardownErrors)?void 0:w.length),operationPending:!!(null==(E=d.pendingOperations)?void 0:E.length),fatalError:F||!!(null==(x=d.executionErrors)?void 0:x.some(n.iK)),interrupted:R.aborted,shouldStop:null==(k=t.shouldStop)?void 0:k.call(t)}),(null==(S=d.retryDecision)?void 0:S.decision)!=="retry")break}let A=i.at(-1),I={caseId:o.caseId,projectName:M,name:o.definition.name,sourcePath:o.sourcePath,caseIndex:o.caseIndex,...o.definition.onFailure?{onFailure:o.definition.onFailure}:{},status:A.status,run:A,attempts:i};D.push(I);let C=null==(p=A.retryDecision)?void 0:p.reason;O="cleanup-pending"===C||"cleanup-failed"===C||"operation-pending"===C||"fatal-error"===C?C:"failed"===I.status&&"stop-document"===o.definition.onFailure?"bail":void 0,await (null==(h=t.onCaseOutcome)?void 0:h.call(t,I))}else{let r=R.aborted?(null==(I=t.stopReason)?void 0:I.call(t))??"interrupted":"document-start-failed";D.push(...e.cases.map(e=>c(e,M,r)))}}catch(e){B.push(...e instanceof a.CW?e.errors:[e])}finally{if(z)try{C=await N.finish()}catch(e){if(e instanceof a.CW)for(let t of(C=e.result,e.errors))B.includes(t)||B.push(t);else B.push(e)}}if(!C){if(B.length)throw AggregateError(B,"Workflow execution did not produce a document result.");throw Error(`Workflow document "${e.sourcePath}" did not produce a result.`)}if(B.length){let t=new Set(D.map(e=>e.caseId));throw D.push(...e.cases.filter(e=>!t.has(e.caseId)).map(e=>c(e,M,B.every(n.iK)?"operation-pending":"interrupted"))),C.status="failed",C.executionErrors=B.filter(e=>{var t;return!(null==(t=C.hostErrors)?void 0:t.some(t=>t.error===e))}).map(a.rN),new a.CW({document:C,cases:D},B)}return{document:C,cases:D}}},47339(e,t,r){"use strict";r.d(t,{H:()=>o});var n=r(13078);let o=e=>{if(void 0===e)return[];if("object"!=typeof e||null===e||Array.isArray(e))throw TypeError("Node teardown result must be an object or undefined.");let t=e.reportPaths;if(void 0===t)return[];if(!Array.isArray(t))throw TypeError("Node teardown reportPaths must be an array.");return t.map((e,t)=>{if("string"!=typeof e||0===e.trim().length)throw TypeError(`Node teardown reportPaths[${t}] must be a non-empty string.`);if(!(0,n.isAbsolute)(e))throw TypeError(`Node teardown reportPaths[${t}] must be an absolute path.`);return e})}},69087(e,t,r){"use strict";r.d(t,{q:()=>i});var n=r(584),o=r(27533);async function i(e,t,r,i){let a,s;if(void 0===i)return e();t.throwIfAborted();let l=Promise.resolve().then(e);(0,o.DL)({},l,t);let c=new Promise((e,o)=>{s=()=>o(t.reason),t.addEventListener("abort",s,{once:!0}),a=setTimeout(()=>{r(new n.s8(`Environment setup timed out after ${i}ms.`,{code:"SETUP_TIMEOUT",details:{timeoutMs:i}}))},i)});try{return await Promise.race([l,c])}finally{clearTimeout(a),t.removeEventListener("abort",s)}}},25725(){},584(e,t,r){"use strict";r.d(t,{Lu:()=>d,OL:()=>l,Uu:()=>u,au:()=>p,h2:()=>A,iK:()=>m,o1:()=>c,s8:()=>a,ww:()=>s});var n=r(57073);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let i=Symbol.for("@midscene/core/workflow-error");class a extends Error{toJSON(){return{...(0,n.EQ)(this)}}constructor(e,t={}){super(e,{cause:t.cause}),o(this,i,!0),o(this,"code",void 0),o(this,"details",void 0),this.name=new.target.name,this.code=t.code??"WORKFLOW_ERROR",this.details=t.details}}class s extends a{constructor(e,t){super(e,{code:"NODE_DEFINITION_ERROR",details:t})}}class l extends a{static fromZod(e,t){let r=t.issues.map(e=>({code:e.code,path:e.path.map(String).join("."),message:e.message})),n=r[0],o=(null==n?void 0:n.path)||"<root>",i=(null==n?void 0:n.message)??"invalid input";return new l(`Node "${e}" input validation failed at "${o}": ${i}`,{node:e,issues:r})}constructor(e,t){super(e,{code:"NODE_INPUT_VALIDATION_ERROR",details:t})}}class c extends a{constructor(e,t){super(t?`Node "${t}" timed out after ${e}ms.`:`Step timed out after ${e}ms.`,{code:"STEP_TIMEOUT",details:{timeoutMs:e,...void 0===t?{}:{node:t}}}),o(this,"timeoutMs",void 0),o(this,"node",void 0),this.timeoutMs=e,this.node=t}}class A extends a{constructor(e,t,r){super(`Node "${e}" failed: ${t instanceof Error?t.message:String(t??"Unknown error")}`,{code:"NODE_EXECUTION_ERROR",details:{node:e},cause:t}),o(this,"output",void 0),o(this,"node",void 0),this.output=r,this.node=e}}class u extends a{constructor(e,t){super(e,{code:"WORKFLOW_LIFECYCLE_ERROR",details:t})}}class d extends a{constructor(e,t){super(`${"case"===t.scope?"Case attempt":"Workflow document"} node teardown failed for "${t.node}": ${e instanceof Error?e.message:String(e??"Unknown error")}`,{code:"NODE_SCOPE_TEARDOWN_ERROR",details:t,cause:e})}}function p(e,t){return h(e)?e:new A(t,e)}function h(e){return"object"==typeof e&&null!==e&&!0===e[i]}let m=e=>h(e)&&"RESOURCE_RECOVERY_TIMEOUT"===e.code},70875(e,t,r){"use strict";r.d(t,{admitResourceOperation:()=>n.admitResourceOperation,defineNode:()=>o.defineNode,runWorkflowDocument:()=>n.runWorkflowDocument,trackResourceOperation:()=>n.trackResourceOperation,waitForResourceIdle:()=>n.waitForResourceIdle});var n=r(92298);r.o(n,"defineNode")&&r.d(t,{defineNode:function(){return n.defineNode}}),r(584);var o=r(10852);r(58188),r(38015)},38042(e,t,r){"use strict";r.d(t,{E:()=>a});var n=r(64564),o=r(584);let i=(e,t,r)=>{if(void 0!==e&&("string"!=typeof e||0===e.trim().length))throw new o.ww(`Node "${r}" ${t} must be a non-empty string.`,{node:r,field:t})};function a(e){if(!e||"object"!=typeof e)throw new o.ww("Node definition must be an object.");if("string"!=typeof e.name||0===e.name.trim().length)throw new o.ww("Node name must be a non-empty string.");if(i(e.title,"title",e.name),i(e.description,"description",e.name),void 0!==e.stringInputKey&&!1!==e.stringInputKey&&("string"!=typeof e.stringInputKey||0===e.stringInputKey.trim().length))throw new o.ww(`Node "${e.name}" stringInputKey must be a non-empty string or false.`,{node:e.name,field:"stringInputKey"});var t=e.inputSchema,r=e.name;if(void 0!==t){if(!(t instanceof n.bv))throw new o.ww(`Node "${r}" inputSchema must be a Zod object schema.`,{node:r,field:"inputSchema"});if("$"in t.shape)throw new o.ww(`Node "${r}" inputSchema must not declare "$" as an input property.`,{node:r,field:"inputSchema.$"})}if("string"==typeof e.stringInputKey&&e.inputSchema instanceof n.bv&&!(e.stringInputKey in e.inputSchema.shape))throw new o.ww(`Node "${e.name}" stringInputKey must reference a field in inputSchema.`,{node:e.name,field:"stringInputKey"});if("function"!=typeof e.execute)throw new o.ww(`Node "${e.name}" must provide an execute function.`,{node:e.name});return e}},10852(e,t,r){"use strict";r.d(t,{defineNode:()=>n.E});var n=r(38042)},58188(e,t,r){"use strict";r(584)},56339(e,t,r){"use strict";r.d(t,{Y:()=>i,p:()=>o});var n=r(33675);function o(e){let t=(0,n.l)(e),r=e.executions.flatMap(e=>e.tasks),o=e=>!!e&&Object.values(e).some(e=>null!=e),i=r.flatMap(e=>[e.usage,e.searchAreaUsage].filter(o)),a=r.some(e=>{var t;return(null==(t=e.timing)?void 0:t.callAiStart)!==void 0&&("pending"===e.status||"running"===e.status)}),s=r.some(e=>{var t;return(null==(t=e.timing)?void 0:t.callAiStart)!==void 0&&!o(e.usage)}),l=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0,c=i.filter(e=>l(e.time_cost)).length,A=i.filter(e=>l(e.total_tokens)||l(e.prompt_tokens)&&l(e.completion_tokens)).length,u=[];a&&u.push("A model request was still running when usage was captured."),s&&u.push("A model request started but its usage was not recorded."),c<i.length&&u.push("Some model usage records do not include request duration."),A<i.length&&u.push("Some model usage records do not include token counts.");let d=(e,t)=>t?e>0?"partial":"unknown":"complete",p={modelCallCount:d(t.timing.modelCallCount,a||s),modelTimeMs:d(c,a||s||c<i.length),totalTokens:d(A,a||s||A<i.length)};return{modelCallCount:t.timing.modelCallCount,modelTimeMs:t.timing.modelCallTimeMs,...t.tokens,collection:{status:u.length?t.timing.modelCallCount>0?"partial":"unknown":"complete",expectedExecutionCount:0,capturedExecutionCount:0,reasons:u,fields:p}}}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={modelCallCount:0,modelTimeMs:0,promptTokens:0,cachedInputTokens:0,completionTokens:0,totalTokens:0};for(let t of e)for(let e of Object.keys(r))"collection"!==e&&(r[e]+=t[e]);let n=Object.fromEntries(["modelCallCount","modelTimeMs","totalTokens"].map(r=>{let n=e.map(e=>{var t,n,o;return(null==(n=e.collection)||null==(t=n.fields)?void 0:t[r])??(null==(o=e.collection)?void 0:o.status)??"complete"});return t.length&&n.push("unknown"),[r,n.every(e=>"complete"===e)?"complete":n.every(e=>"unknown"===e)?"unknown":"partial"]}));return r.collection={status:Object.values(n).every(e=>"complete"===e)?"complete":Object.values(n).every(e=>"unknown"===e)?"unknown":"partial",fields:n,expectedExecutionCount:0,capturedExecutionCount:0,reasons:[...new Set([...e.flatMap(e=>{var t;return(null==(t=e.collection)?void 0:t.reasons)??[]}),...t])]},r}},57073(e,t,r){"use strict";r.d(t,{EQ:()=>c,pA:()=>l,pT:()=>s});let n=["password","passwd","secret","token","authorization","cookie","apikey"],o=e=>{let t=e.toLowerCase().replace(/[^a-z0-9]/g,"");return n.some(e=>t.includes(e))},i=(e,t)=>/^[A-Za-z_$][\w$]*$/.test(t)?`${e}.${t}`:`${e}[${JSON.stringify(t)}]`,a=e=>new TextEncoder().encode(e).byteLength;function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2e3;return e.length<=t?e:`${e.slice(0,t)}… [truncated]`}function l(e){let t=new Set,r=new Set,n=new WeakSet,s=65536,l=(e,r)=>(s-=a(r))>=0||(t.add(e),!1),c=(e,a,A)=>{if(s<=0)return t.add(a),"[Truncated: size limit]";if(null===e||"boolean"==typeof e)return l(a,String(e)),e;if("string"==typeof e){if(e.length>2e3){t.add(a);let r=`${e.slice(0,2e3)}… [truncated]`;return l(a,r),r}return l(a,e),e}if("number"==typeof e)return Number.isFinite(e)?(l(a,String(e)),e):(t.add(a),`[Unsupported number: ${String(e)}]`);if("bigint"==typeof e)return t.add(a),`[Unsupported bigint: ${String(e)}]`;if(void 0===e||"function"==typeof e||"symbol"==typeof e)return t.add(a),`[Unsupported ${typeof e}]`;if(A>=6)return t.add(a),"[Truncated: maximum depth]";if(e instanceof Date){let t=Number.isNaN(e.getTime())?"[Invalid Date]":e.toISOString();return l(a,t),t}if(n.has(e))return t.add(a),"[Unsupported circular value]";if(Array.isArray(e)){n.add(e);let r=[],o=Math.min(e.length,50);for(let t=0;t<o&&!(s<=0);t+=1)r.push(c(e[t],`${a}[${t}]`,A+1));return e.length>r.length&&t.add(a),n.delete(e),r}let u=Object.getPrototypeOf(e);if(u!==Object.prototype&&null!==u){var d;t.add(a);let r=(null==(d=e.constructor)?void 0:d.name)??"object";return`[Unsupported object: ${r}]`}n.add(e);let p={},h=Object.keys(e);for(let t of h.slice(0,50)){let n=i(a,t);if(!l(n,t)||(o(t)?(p[t]="[REDACTED]",r.add(n)):p[t]=c(e[t],n,A+1),s<=0))break}return h.length>Object.keys(p).length&&t.add(a),n.delete(e),p},A=c(e,"$",0),u=JSON.stringify(A);return void 0===u||a(u)>65536?{value:"[Truncated: display value exceeded 64 KiB]",truncatedPaths:["$"]}:{value:A,...t.size>0?{truncatedPaths:[...t]}:{},...r.size>0?{redactedPaths:[...r]}:{}}}function c(e){let t=e=>e.replace(/\bBearer\s+[A-Za-z0-9._~+/=-]+/gi,"Bearer [REDACTED]").replace(/(https?:\/\/)[^\s/@]+:[^\s/@]+@/gi,"$1[REDACTED]@").replace(/(["']?\b(?:password|passwd|secret|token|authorization|cookie|api[_-]?key)\b["']?\s*[:=]\s*)(?:\[REDACTED\]|"[^"]*"|'[^']*'|[^\s,;}\]]+)/gi,"$1[REDACTED]"),r=new WeakSet,n=64512,o=0,i=()=>({format:"midscene-error",name:"Error",message:"[Truncated: error cause chain]",truncated:!0}),c=(e,A)=>{if(A>=6||o++>=25||n<4096)return i();if("object"!=typeof e||null===e)return{format:"midscene-error",name:"Error",message:s(t(String(e)))};if(r.has(e))return i();r.add(e);let u={format:"midscene-error",...!0===e.truncated?{truncated:!0}:{},name:"string"==typeof e.name?s(e.name,200):"Error",message:s(t("string"==typeof e.message?e.message:String(e))),..."string"==typeof e.code?{code:s(e.code,200)}:{}};if(n-=a(JSON.stringify(u))+128,void 0!==e.details){let t="midscene-error"===e.format&&"object"==typeof e.details&&null!==e.details&&"value"in e.details?e.details:void 0,r=l(t?t.value:e.details);for(let e of["redactedPaths","truncatedPaths"]){let n=null==t?void 0:t[e];Array.isArray(n)&&(r[e]=[...new Set([...r[e]??[],...n.filter(e=>"string"==typeof e).slice(0,50).map(e=>s(e))])])}let o=a(JSON.stringify(r));o<n-4096?(u.details=r,n-=o):(u.details={value:"[Truncated: error details size limit]",truncatedPaths:["$"]},u.truncated=!0)}if(void 0!==e.cause&&(u.cause=c(e.cause,A+1)),Array.isArray(e.errors)){for(let t of(u.errors=[],e.errors.slice(0,10))){if(o>=25||n<4096){u.truncated=!0;break}u.errors.push(c(t,A+1))}u.errors.length<e.errors.length&&(u.truncated=!0)}if("string"==typeof e.stack&&e.stack){let r=t(e.stack),o=Math.max(0,n-128);if(a(JSON.stringify(r))>o){let e="\n… [truncated: stack trace size limit]",t=0,n=r.length;for(;t<n;){let i=Math.ceil((t+n)/2);a(JSON.stringify(r.slice(0,i)+e))<=o?t=i:n=i-1}r=t?r.slice(0,t)+e:"",u.truncated=!0}r&&(u.stack=r,n-=a(JSON.stringify(r)))}return r.delete(e),u},A=c(e,0);return 65536>=a(JSON.stringify(A))?A:{format:"midscene-error",name:A.name,message:A.message,...A.code?{code:A.code}:{},truncated:!0,cause:{format:"midscene-error",name:"Error",message:"[Truncated: serialized error exceeded 64 KiB]",truncated:!0}}}},73840(e,t,r){"use strict";r.d(t,{V:()=>o});var n=r(57073);function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=new Set(t.selectedCaseIds??e.cases.map(e=>e.caseId)),o=(r,o,i)=>r.map((r,a)=>{let s=r.templateInput??r.input,l=s.prompt??s.script??s.scenario??s.title,c="string"==typeof l?l:l&&"object"==typeof l&&"prompt"in l&&"string"==typeof l.prompt?l.prompt:void 0;return{id:`${e.documentId}:${i}:${o}:${a}`,phase:o,stepIndex:a,node:r.node,...c?{title:(0,n.pT)(c,240)}:{},input:(0,n.pA)(s),inputMode:r.templateInput?"template":"resolved",...(r.meta.timeoutMs??t.defaultTimeoutMs)===void 0?{}:{timeoutMs:r.meta.timeoutMs??t.defaultTimeoutMs},continueOnError:r.meta.continueOnError}}),i=e.cases.map(t=>({caseId:t.caseId,name:t.definition.name,caseIndex:t.caseIndex,selected:r.has(t.caseId),tags:[...t.definition.tags??[]],...t.definition.onFailure?{onFailure:t.definition.onFailure}:{},beforeEach:o(e.lifecycle.beforeEach,"beforeEach",t.caseId),steps:o(t.definition.steps,"steps",t.caseId),afterEach:o(e.lifecycle.afterEach,"afterEach",t.caseId)}));return{documentId:e.documentId,sourcePath:e.sourcePath,...e.sourceYaml?{sourceYaml:structuredClone(e.sourceYaml)}:{},retry:t.retry??{scope:"case",count:0},beforeAll:o(e.lifecycle.beforeAll,"beforeAll","document"),cases:i,afterAll:o(e.lifecycle.afterAll,"afterAll","document")}}},38015(e,t,r){"use strict";r.d(t,{O:()=>u});var n=r(56339),o=r(57073);let i=new Set(["aiAct","aiAssert","recordToReport"]),a=(e,t)=>`${e}\u0000${t}`,s=(e,t)=>e.sourcesByScope.get(t)??[],l=(e,t)=>{e.diagnostics.push(t)},c=(e,t,r,c,A)=>{var u,d,p,h,m,f;let g,y=`${c}:${e.phase}:${e.stepIndex}`;if("not-run"===e.status)return{id:y,...A?{planStepId:A.id,title:A.title}:{},phase:e.phase,stepIndex:e.stepIndex,node:e.node,status:"not-run",notRunReason:(0,o.pT)(e.notRunReason),...e.blockedBy?{blockedBy:e.blockedBy}:{},continuedAfterError:e.continuedAfterError,...e.waitForPreviousOperationMs?{waitForPreviousOperationMs:e.waitForPreviousOperationMs}:{},input:(0,o.pA)(e.input),...e.error?{error:(0,o.EQ)(e.error)}:{},...e.operations?{operations:{...e.operations,events:[...e.operations.events]}}:{}};let v=[],b=[],w=[],E=[];for(let n of(null==(u=e.report)?void 0:u.traces)??[]){r.tracedScopes.add(t);let e=r.executionMetrics.get(n.executionId)??n.metrics;e&&(r.executionMetrics.set(n.executionId,e),w.push(e)),r.expectedExecutions.add(a(t,n.executionId));let o=r.tracedScopeByExecution.get(n.executionId);if(o&&o!==t)throw Error(`Agent execution ${n.executionId} was traced by multiple test scopes (${o}, ${t}).`);r.tracedScopeByExecution.set(n.executionId,t);let i=r.detailsByScopeAndExecution.get(a(t,n.executionId));if(i)v.push(i),r.capturedExecutions.add(a(t,n.executionId));else if(b.push(n.executionId),!e){let e=`Model usage is unavailable for execution ${n.executionId}.`;E.push(e),r.missingMetrics.add(e)}}if(b.length>0){g=`Agent detail could not be resolved for ${b.join(", ")}.`;let e=s(r,t);for(let n of b)l(r,{level:"warning",code:"agent-detail-unresolved",message:`Agent detail could not be resolved for execution ${n} in test scope ${t}.`,scopeId:t,executionId:n,stepId:y,...e.length>0?{sourcePaths:e.map(e=>e.sourcePath)}:{}})}else 0===v.length&&i.has(e.node)&&(g="This Agent did not expose a stable execution reference for the Step.",l(r,{level:"warning",code:"agent-detail-unavailable",message:`No stable Agent execution reference was captured for ${e.node} in test scope ${t}.`,scopeId:t,stepId:y,...s(r,t).length>0?{sourcePaths:s(r,t).map(e=>e.sourcePath)}:{}}));let x=(null==(p=e.report)||null==(d=p.collectionErrors)?void 0:d.map(o.EQ))??[];for(let n of x)l(r,{level:"warning",code:"agent-source-unavailable",scopeId:t,stepId:y,error:n,message:`Report collection for ${e.node}: ${n.message}`});let k=(null==(m=e.report)||null==(h=m.sources)?void 0:h.flatMap(e=>e.collection?[e.collection]:[]))??[],S=k.length||x.length||v.length||b.length?{status:x.length||b.length||k.some(e=>"partial"===e.status)?v.length?"partial":"unknown":"complete",...k.length?{capturedAt:k.map(e=>e.capturedAt).sort().at(-1)}:{},...x.length?{errors:x}:{}}:void 0;if(!(null==(f=e.report)?void 0:f.traces.length)&&x.length&&!v.length){let e=`Model usage could not be collected for step ${y}.`;E.push(e),r.missingMetrics.add(e)}let I=e.input,C=(null==I?void 0:I.prompt)??(null==I?void 0:I.script)??(null==I?void 0:I.scenario)??(null==I?void 0:I.title),O="string"==typeof C?C:"object"==typeof C&&null!==C&&"prompt"in C&&"string"==typeof C.prompt?C.prompt:void 0;return{id:y,...A?{planStepId:A.id}:{},phase:e.phase,stepIndex:e.stepIndex,node:e.node,...O?{title:(0,o.pT)(O,240)}:{},status:e.status,continuedAfterError:e.continuedAfterError,...e.waitForPreviousOperationMs?{waitForPreviousOperationMs:e.waitForPreviousOperationMs}:{},startedAt:e.startedAt,endedAt:e.endedAt,durationMs:e.durationMs,...e.operations?{operations:{...e.operations,events:[...e.operations.events]}}:{},input:(0,o.pA)(e.input),...e.output?{output:{...void 0===e.output.summary?{}:{summary:(0,o.pT)(e.output.summary)},...void 0===e.output.data?{}:{data:(0,o.pA)(e.output.data)}}}:{},...e.error?{error:(0,o.EQ)(e.error)}:{},...v.length>0?{agentDetails:v}:{},...g?{agentDetailDiagnostic:g}:{},...w.length||E.length?{metrics:(0,n.Y)(w,E)}:{},...S?{evidenceCollection:{...S,...E.length?{modelUsageUnavailable:!0}:{}}}:{}}},A=(e,t,r,n,i)=>{var a,l,A,u;i??(i=null==t?void 0:t.plan);let d=(null==t?void 0:t.sourcePath)??(null==(a=r[0])?void 0:a.sourcePath)??"<unknown>",p=(null==t?void 0:t.status)??(r.some(e=>"success"!==e.status)?"failed":"success"),h=t?t.reportScopeId??t.documentRunId:void 0;return{documentId:e,...i?{plan:i}:{},...t?{logicalDocumentId:t.documentId,documentRunId:t.documentRunId,...void 0===t.attemptIndex?{}:{attemptIndex:t.attemptIndex}}:{},sourcePath:d,status:p,...(null==t?void 0:t.executionStatus)?{executionStatus:t.executionStatus}:{},...(null==t?void 0:t.phases)?{phases:t.phases}:{},...(null==t?void 0:t.cleanup)?{cleanup:t.cleanup}:{},...(null==t?void 0:t.pendingOperations)?{pendingOperations:t.pendingOperations}:{},...(null==t?void 0:t.retryDecision)?{retryDecision:t.retryDecision}:{},...t?{startedAt:t.startedAt,endedAt:t.endedAt,durationMs:t.durationMs}:{},beforeAll:((null==t?void 0:t.beforeAll)??[]).map(e=>c(e,h,n,t.documentRunId,null==i?void 0:i.beforeAll[e.stepIndex])),cases:r.map(e=>{let t;return{...(t=null==i?void 0:i.cases.find(t=>t.caseId===e.caseId))?{plan:t}:{},caseId:e.caseId,name:e.name,caseIndex:e.caseIndex,status:e.status,...e.notRunReason?{notRunReason:e.notRunReason}:{},attempts:(e.attempts??(e.run?[e.run]:[])).map(e=>{var r,i;let a;return a=e.reportScopeId??e.runId,{attemptId:e.runId,attemptIndex:e.attemptIndex,status:e.status,...e.executionStatus?{executionStatus:e.executionStatus}:{},...e.phases?{phases:e.phases}:{},...e.cleanup?{cleanup:e.cleanup}:{},...e.pendingOperations?{pendingOperations:e.pendingOperations}:{},...e.retryDecision?{retryDecision:e.retryDecision}:{},startedAt:e.startedAt,endedAt:e.endedAt,durationMs:e.durationMs,beforeEach:e.beforeEach.map(r=>c(r,a,n,e.runId,null==t?void 0:t.beforeEach[r.stepIndex])),steps:e.steps.map(r=>c(r,a,n,e.runId,null==t?void 0:t.steps[r.stepIndex])),afterEach:e.afterEach.map(r=>c(r,a,n,e.runId,null==t?void 0:t.afterEach[r.stepIndex])),...(null==(r=e.executionErrors)?void 0:r.length)?{hostErrors:e.executionErrors.map(e=>({phase:"execution",error:(0,o.EQ)(e)}))}:{},...(null==(i=e.teardownErrors)?void 0:i.length)?{teardownErrors:e.teardownErrors.map(o.EQ)}:{},...s(n,a).length>0?{scopeReportIds:s(n,a).map(e=>e.reportId)}:{}}})}}),afterAll:((null==t?void 0:t.afterAll)??[]).map(e=>c(e,h,n,t.documentRunId,null==i?void 0:i.afterAll[e.stepIndex])),...(null==t||null==(l=t.hostErrors)?void 0:l.length)||(null==t||null==(A=t.executionErrors)?void 0:A.length)?{hostErrors:[...(null==t?void 0:t.hostErrors)??[],...((null==t?void 0:t.executionErrors)??[]).map(e=>({phase:"execution",error:e}))].map(e=>{let{phase:t,error:r}=e;return{phase:t,error:(0,o.EQ)(r)}})}:{},...(null==t||null==(u=t.teardownErrors)?void 0:u.length)?{teardownErrors:t.teardownErrors.map(o.EQ)}:{},...h&&s(n,h).length>0?{scopeReportIds:s(n,h).map(e=>e.reportId)}:{}}};function u(e,t){let r=new Map,i=new Map;for(let e of t.sources){let t=r.get(e.scopeId)??[];for(let n of(t.push(e),r.set(e.scopeId,t),e.executionIds))i.set(a(e.scopeId,n),{reportId:e.reportId,executionId:n})}let s={diagnostics:(t.diagnostics??[]).map(e=>({...e,message:(0,o.pT)(e.message)})),sourcesByScope:r,detailsByScopeAndExecution:i,tracedScopeByExecution:new Map,expectedExecutions:new Set,capturedExecutions:new Set,executionMetrics:new Map(Object.entries(t.executionMetrics??{})),missingMetrics:new Set,tracedScopes:new Set};for(let t of e.errors??[])l(s,{level:"error",code:"run-infrastructure-error",message:(0,o.EQ)(t).message,error:(0,o.EQ)(t)});for(let e of t.sources)0===e.executionIds.length&&l(s,{level:"warning",code:"source-without-executions",message:`Agent report contains no executions: ${e.sourcePath}`,scopeId:e.scopeId,sourcePaths:[e.sourcePath]});let c=e.projects.map(e=>((e,t)=>{var r,n,i;let a=new Map;for(let t of e.documents)a.set(t.documentId,(a.get(t.documentId)??0)+1);for(let t of e.cases)if((a.get(t.documentId)??0)>1&&!t.documentRunId)throw Error(`Case ${t.caseId} must identify its documentRunId when a document has multiple attempts.`);let s=[],l=new Map;for(let t of e.documents){let e=l.get(t.documentId);e&&t.attemptIndex||(e=[],s.push(e),l.set(t.documentId,e)),e.push(t)}let c=s.map(r=>{var n;let o=r[0],i=r.at(-1),a=s.filter(e=>e[0].documentId===o.documentId).length>1?`${o.documentId}:${o.documentRunId}`:o.documentId,l=new Map;for(let t of r)for(let r of e.cases.filter(e=>e.documentId===t.documentId&&(!e.documentRunId||e.documentRunId===t.documentRunId))){let e=l.get(r.caseId);l.set(r.caseId,{...r,attempts:[...(null==e?void 0:e.attempts)??[],...(r.attempts??(r.run?[r.run]:[])).map(e=>({...e,attemptIndex:t.attemptIndex??e.attemptIndex}))]})}let c=A(a,i,[...l.values()],t,null==(n=e.plans)?void 0:n.find(e=>e.documentId===i.documentId));return r.length>1&&(c.startedAt=o.startedAt,c.durationMs=Math.max(0,Date.parse(i.endedAt)-Date.parse(o.startedAt)),c.attempts=r.map(r=>{var n;let{cases:o,...i}=A(a,r,[],t,null==(n=e.plans)?void 0:n.find(e=>e.documentId===r.documentId));return i})),c});for(let n of new Set(e.cases.map(e=>e.documentId)))a.has(n)||c.push(A(n,void 0,e.cases.filter(e=>e.documentId===n),t,null==(r=e.plans)?void 0:r.find(e=>e.documentId===n)));return{...e.plans?{plans:e.plans}:{},projectId:e.projectId,name:e.name,...(null==(n=e.platform)?void 0:n.trim())?{platform:e.platform.trim()}:{},status:e.status,retry:e.retry,...e.lifecycle?{lifecycle:{status:e.lifecycle.status,startedAt:e.lifecycle.startedAt,endedAt:e.lifecycle.endedAt,durationMs:e.lifecycle.durationMs,...e.lifecycle.cleanup?{cleanup:e.lifecycle.cleanup}:{},...e.lifecycle.pendingOperations?{pendingOperations:e.lifecycle.pendingOperations}:{},...e.lifecycle.setupError?{setupError:(0,o.EQ)(e.lifecycle.setupError)}:{},...(null==(i=e.lifecycle.teardownErrors)?void 0:i.length)?{teardownErrors:e.lifecycle.teardownErrors.map(o.EQ)}:{}}}:{},documents:c,collectionErrors:e.collectionErrors.map(e=>({sourcePath:e.sourcePath,error:(0,o.EQ)(e.error)}))}})(e,s));for(let e of t.diagnostics??[])"agent-source-unavailable"!==e.code||e.scopeId&&s.tracedScopes.has(e.scopeId)||s.missingMetrics.add(e.message);let u=(0,n.Y)([...t.sources.length||!t.executionMetrics&&(t.metrics.modelCallCount||t.metrics.collection)?[t.capturedMetrics??t.metrics]:[],...[...s.executionMetrics.entries()].filter(e=>{var r;let[n]=e;return!(null==(r=t.executionMetrics)?void 0:r[n])}).map(e=>{let[,t]=e;return t})],[...s.missingMetrics]);return{schemaVersion:1,kind:"test-runner",runId:e.runId,...e.operationLog?{operationLogs:[{...e.operationLog}]}:{},status:e.status,startedAt:e.startedAt,endedAt:e.endedAt,durationMs:e.durationMs,summary:{...e.summary},metrics:{...u,collection:{...u.collection,expectedExecutionCount:s.expectedExecutions.size,capturedExecutionCount:s.capturedExecutions.size}},...t.executionMetrics||s.executionMetrics.size?{executionMetrics:Object.fromEntries(s.executionMetrics)}:{},projects:c,...s.diagnostics.length>0?{diagnostics:s.diagnostics}:{}}}},83198(e,t,r){"use strict";let n;r.d(t,{ZH:()=>h,y9:()=>p});var o=r(53244),i=r(35207),a=r(13078),s=r.n(a),l=r(50217),c=r(29368),A=r(19152),u=r(85409);let d="midscene_run",p=()=>{if(!A.$9)return"";let e=s().resolve(u.cwd(),A.$9?n??(0,l.j)(c.Tr)??d:"");if(!(0,o.existsSync)(e))try{(0,o.mkdirSync)(e,{recursive:!0})}catch(t){e=s().join((0,i.tmpdir)(),d),(0,o.mkdirSync)(e,{recursive:!0})}return e},h=e=>{if(!A.$9)return"";let t=p(),r=s().join(t,e);return(0,o.existsSync)(r)||(0,o.mkdirSync)(r,{recursive:!0}),r}},50217(e,t,r){"use strict";r.d(t,{j:()=>i});var n=r(29368),o=r(85409);let i=e=>{if(!n.Wh.includes(e))throw Error(`getBasicEnvValue with key ${e} is not supported.`);return o.env[e]}},29368(e,t,r){"use strict";r.d(t,{$:()=>M,$H:()=>h,$L:()=>A,$l:()=>s,AU:()=>w,AW:()=>ep,CA:()=>P,CR:()=>E,Cn:()=>eD,DL:()=>eW,EH:()=>eI,El:()=>Z,FU:()=>d,G0:()=>o,Gl:()=>k,HR:()=>i,I2:()=>n,IQ:()=>p,JM:()=>N,Jm:()=>ew,Jq:()=>O,Js:()=>eS,Km:()=>g,Lg:()=>eY,Lh:()=>V,M1:()=>b,NF:()=>z,OK:()=>eP,OY:()=>eF,Od:()=>T,Pm:()=>_,Qu:()=>eE,R9:()=>S,S7:()=>ed,SP:()=>eA,Sk:()=>L,T4:()=>H,T8:()=>eb,TN:()=>Q,Tf:()=>ef,Tr:()=>q,UH:()=>e0,V7:()=>et,VM:()=>v,VY:()=>ex,Vb:()=>eL,W4:()=>f,WH:()=>eT,Wh:()=>eq,XE:()=>eG,Xx:()=>ek,YK:()=>J,Yf:()=>Y,Yg:()=>ee,Z$:()=>eN,Z7:()=>$,ZX:()=>c,_E:()=>X,_j:()=>e$,_q:()=>W,a0:()=>eg,aK:()=>y,aO:()=>eK,ag:()=>eM,b6:()=>j,c$:()=>eX,cD:()=>I,d8:()=>K,fF:()=>ey,fS:()=>es,fh:()=>C,hC:()=>em,ho:()=>U,iw:()=>u,jG:()=>R,j_:()=>F,ju:()=>el,k8:()=>ec,kX:()=>G,kb:()=>eZ,l8:()=>eu,lV:()=>eJ,lp:()=>eh,mZ:()=>eO,mk:()=>ev,n0:()=>l,nc:()=>ea,pG:()=>x,pp:()=>B,rd:()=>eH,sg:()=>ez,tk:()=>eV,u1:()=>eU,v:()=>eo,v4:()=>a,vC:()=>er,wu:()=>eB,xP:()=>eC,xg:()=>en,y2:()=>ei,yR:()=>eQ,yb:()=>D,zD:()=>m,zG:()=>ej,zQ:()=>eR});let n="MIDSCENE_MODEL_INIT_CONFIG_JSON",o="MIDSCENE_MODEL_EXTRA_BODY_JSON",i="MIDSCENE_MODEL_NAME",a="MIDSCENE_DEBUG_MODEL_PROFILE",s="MIDSCENE_DEBUG_MODEL_RESPONSE",l="MIDSCENE_DEBUG_MODE",c="MIDSCENE_LANGSMITH_DEBUG",A="MIDSCENE_LANGFUSE_DEBUG",u="MIDSCENE_MODEL_SOCKS_PROXY",d="MIDSCENE_MODEL_HTTP_PROXY",p="MIDSCENE_MODEL_API_KEY",h="MIDSCENE_MODEL_BASE_URL",m="MIDSCENE_MODEL_TIMEOUT",f="MIDSCENE_MODEL_TEMPERATURE",g="MIDSCENE_MODEL_RETRY_COUNT",y="MIDSCENE_MODEL_RETRY_INTERVAL",v="MIDSCENE_MODEL_REASONING_EFFORT",b="MIDSCENE_MODEL_REASONING_ENABLED",w="MIDSCENE_MODEL_REASONING_BUDGET",E="MIDSCENE_MODEL_PROTOCOL",x="MIDSCENE_LOCATE_MODEL_STREAM_MODE",k="MIDSCENE_PLANNING_MODEL_STREAM_MODE",S="MIDSCENE_INSIGHT_MODEL_STREAM_MODE",I="MIDSCENE_MODEL_STREAM_MODE",C="MIDSCENE_MODEL_RESPONSE_FORMAT",O="OPENAI_API_KEY",R="OPENAI_BASE_URL",j="MIDSCENE_OPENAI_INIT_CONFIG_JSON",P="MIDSCENE_OPENAI_HTTP_PROXY",M="MIDSCENE_OPENAI_SOCKS_PROXY",T="MIDSCENE_CACHE",N="MIDSCENE_USE_VLM_UI_TARS",D="MIDSCENE_USE_QWEN_VL",z="MIDSCENE_USE_QWEN3_VL",B="MIDSCENE_USE_DOUBAO_VISION",F="MIDSCENE_USE_GEMINI",L="MATCH_BY_POSITION",U="MIDSCENE_REPORT_TAG_NAME",K="MIDSCENE_REPORT_QUIET",Z="MIDSCENE_PREFERRED_LANGUAGE",J="MIDSCENE_CACHE_MAX_FILENAME_LENGTH",Q="MIDSCENE_REPLANNING_CYCLE_LIMIT",q="MIDSCENE_RUN_DIR",X="MIDSCENE_RECORD_MODEL_CALL",W="MIDSCENE_INSIGHT_MODEL_NAME",H="MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY",Y="MIDSCENE_INSIGHT_MODEL_HTTP_PROXY",G="MIDSCENE_INSIGHT_MODEL_BASE_URL",V="MIDSCENE_INSIGHT_MODEL_API_KEY",$="MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON",_="MIDSCENE_INSIGHT_MODEL_EXTRA_BODY_JSON",ee="MIDSCENE_INSIGHT_MODEL_TIMEOUT",et="MIDSCENE_INSIGHT_MODEL_TEMPERATURE",er="MIDSCENE_INSIGHT_MODEL_RETRY_COUNT",en="MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL",eo="MIDSCENE_INSIGHT_MODEL_FAMILY",ei="MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT",ea="MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED",es="MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET",el="MIDSCENE_INSIGHT_MODEL_PROTOCOL",ec="MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT",eA="MIDSCENE_LOCATE_MODEL_NAME",eu="MIDSCENE_LOCATE_MODEL_SOCKS_PROXY",ed="MIDSCENE_LOCATE_MODEL_HTTP_PROXY",ep="MIDSCENE_LOCATE_MODEL_BASE_URL",eh="MIDSCENE_LOCATE_MODEL_API_KEY",em="MIDSCENE_LOCATE_MODEL_INIT_CONFIG_JSON",ef="MIDSCENE_LOCATE_MODEL_EXTRA_BODY_JSON",eg="MIDSCENE_LOCATE_MODEL_TIMEOUT",ey="MIDSCENE_LOCATE_MODEL_TEMPERATURE",ev="MIDSCENE_LOCATE_MODEL_RETRY_COUNT",eb="MIDSCENE_LOCATE_MODEL_RETRY_INTERVAL",ew="MIDSCENE_LOCATE_MODEL_FAMILY",eE="MIDSCENE_LOCATE_MODEL_REASONING_EFFORT",ex="MIDSCENE_LOCATE_MODEL_REASONING_ENABLED",ek="MIDSCENE_LOCATE_MODEL_REASONING_BUDGET",eS="MIDSCENE_LOCATE_MODEL_PROTOCOL",eI="MIDSCENE_LOCATE_MODEL_RESPONSE_FORMAT",eC="MIDSCENE_PLANNING_MODEL_NAME",eO="MIDSCENE_PLANNING_MODEL_SOCKS_PROXY",eR="MIDSCENE_PLANNING_MODEL_HTTP_PROXY",ej="MIDSCENE_PLANNING_MODEL_BASE_URL",eP="MIDSCENE_PLANNING_MODEL_API_KEY",eM="MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON",eT="MIDSCENE_PLANNING_MODEL_EXTRA_BODY_JSON",eN="MIDSCENE_PLANNING_MODEL_TIMEOUT",eD="MIDSCENE_PLANNING_MODEL_TEMPERATURE",ez="MIDSCENE_PLANNING_MODEL_RETRY_COUNT",eB="MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL",eF="MIDSCENE_PLANNING_MODEL_FAMILY",eL="MIDSCENE_PLANNING_MODEL_REASONING_EFFORT",eU="MIDSCENE_PLANNING_MODEL_REASONING_ENABLED",eK="MIDSCENE_PLANNING_MODEL_REASONING_BUDGET",eZ="MIDSCENE_PLANNING_MODEL_PROTOCOL",eJ="MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT",eQ="MIDSCENE_MODEL_FAMILY",eq=[l,a,s,q,X],eX=[T,c,A,K],eW=[J,Q],eH=["MIDSCENE_ADB_PATH","MIDSCENE_ADB_REMOTE_HOST","MIDSCENE_ADB_REMOTE_PORT","MIDSCENE_ANDROID_IME_STRATEGY","MIDSCENE_ANDROID_SCREENSHOT_STRATEGY","MIDSCENE_IOS_DEVICE_UDID","MIDSCENE_IOS_SIMULATOR_UDID",U,Z,L,"MIDSCENE_CHROME_PATH","MIDSCENE_MCP_CHROME_PATH","DOCKER_CONTAINER"],eY=[...eX,...eW,...eH],eG=[S,k,x,I,i,n,o,p,h,u,d,m,f,g,y,v,b,w,E,C,N,D,z,B,F,"MIDSCENE_USE_VL_MODEL",O,R,j,P,M,W,H,Y,G,V,$,_,ee,et,er,en,eo,ei,ea,es,el,ec,eA,eu,ed,ep,eh,em,ef,eg,ey,ev,eb,ew,eE,ex,ek,eS,eI,eC,eO,eR,ej,eP,eM,eT,eN,eD,ez,eB,eF,eL,eU,eK,eZ,eJ,eQ],eV=["MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG",...eq,...eY,...eG],e$=["jev","doubao-vision","doubao-seed","gemini","qwen2.5-vl","qwen3-vl","qwen3","qwen3.5","qwen3.6","vlm-ui-tars","vlm-ui-tars-doubao","vlm-ui-tars-doubao-1.5","glm-v","auto-glm","auto-glm-multilingual","gpt-5","gpt-6","deepseek","kimi","kimi3","xiaomi-mimo"];var e_,e0=((e_={}).V1_0="1.0",e_.V1_5="1.5",e_.DOUBAO_1_5_15B="doubao-1.5-15B",e_.DOUBAO_1_5_20B="doubao-1.5-20B",e_)},64565(e,t,r){"use strict";let n;r.d(t,{Nw:()=>b,aZ:()=>function e(t,r){let o=`${h}:${t}`,a=(null==r?void 0:r.console)??!1,l=a?`${o}:withConsole`:o;if(!v.has(l))if(a){let r=e(t);v.set(l,function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];r(...t);try{console.warn("[Midscene]",...t)}catch{}})}else{let e=u()(o);v.set(l,function(){for(var r=arguments.length,o=Array(r),a=0;a<r;a++)o[a]=arguments[a];p.$9&&function(e,t){if(!p.$9)return;let r=e.replace(/:/g,"-");if(g.has(r))return;let o=function(e){let t=e.replace(/:/g,"-");if(y.has(t))return null;let r=s().join((null==n?void 0:n())??(0,d.ZH)("log"),`${t}.log`),o=m.get(t);if(o&&f.get(t)!==r&&(o.end(),m.delete(t),f.delete(t)),!m.has(t)){let e=i().createWriteStream(r,{flags:"a"});e.on("error",()=>{y.add(t),g.delete(t),m.get(t)===e&&(m.delete(t),f.delete(t))}),m.set(t,e),f.set(t,r)}return m.get(t)??null}(e);if(!o)return;let a=new Date,l=a.toLocaleDateString("sv-SE"),c=a.toLocaleTimeString("sv-SE"),A=a.getMilliseconds().toString().padStart(3,"0"),u=a.getTimezoneOffset(),h=Math.floor(Math.abs(u)/60).toString().padStart(2,"0"),v=(Math.abs(u)%60).toString().padStart(2,"0"),b=`${u<=0?"+":"-"}${h}:${v}`,w=`${l}T${c}.${A}${b}`;try{o.write(`[${w}] ${t}
|
|
875
|
-
`)||(
|
|
876
|
-
//# sourceMappingURL=index.
|
|
874
|
+
`,loading:!1,result:void 0,replayScriptsInfo:null,replayCounter:0,loadingProgressText:"",verticalMode:!1}};uH();let uY={result:void 0,dump:null,reportHTML:null,report:null,error:null},uG="data:image/png;base64,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",uV="data:image/png;base64,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";function u$(e){return"object"==typeof e&&null!==e}let u_=e=>({left:e.center[0]-4,top:e.center[1]-4,width:8,height:8});function u0(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}let u1=(e,t,r)=>{let n,o=(n=e.width/e.height>=t/r?e.width:e.height/r*t)>400?.1:n>50?.2:.3,i=Math.min(t,n+t*o*2),a=Math.min(e.left-t*o,t-i);a=Math.max(a,0);let s=Math.min(e.top-r*o,r-r/t*i);return{left:Math.round(a),top:Math.round(s=Math.max(s,0)),width:Math.round(i)}},u2=(e,t)=>u1({left:0,top:0,width:e,height:t},e,t),u3=(e,t,r)=>{var n;let o=null==e||null==(n=e.uiContext)?void 0:n.shotSize;return{width:(null==o?void 0:o.width)||t,height:(null==o?void 0:o.height)||r}},u5=e=>e.map((e,t)=>({execution:e,index:t})).sort((e,t)=>(Number.isFinite(e.execution.logTime)?e.execution.logTime:1/0)-(Number.isFinite(t.execution.logTime)?t.execution.logTime:1/0)||e.index-t.index).map(e=>{let{execution:t}=e;return t}),u4=e=>{var t,r;let n,o,i,a,s=e?Array.isArray(e.executions)?e:{sdkVersion:"",groupName:"Execution",modelBriefs:[],executions:[e]}:null;if(!s)return console.warn("[allScriptsFromDump] dump is empty"),{scripts:[],modelBriefs:[]};let l=(i=s.sdkVersion,a=[],(u5((null==(r=s.executions)?void 0:r.filter(Boolean))||[]).forEach(e=>{e.tasks.forEach(e=>{var t,r;let i=null==(t=e.uiContext)?void 0:t.shotSize;if(i){let e=i.width,t=i.height;n||(n=e,o=t)}if(e.usage){let{model_name:t,model_description:n,intent:o}=e.usage;r={intent:o,name:t,modelDescription:n},a.some(e=>e.intent===r.intent&&e.name===r.name&&e.modelDescription===r.modelDescription)||a.push(r)}})}),n&&o)?{width:n,height:o,sdkVersion:i,modelBriefs:a,deviceType:s.deviceType}:(console.warn("width or height is missing in dump file"),null));if(!l)return{scripts:[],sdkVersion:s.sdkVersion,modelBriefs:[]};let{width:c,height:A}=l,u=[],d=u5((null==(t=s.executions)?void 0:t.filter(Boolean))||[]);for(let e=0;e<d.length;e++){let t=u7(d[e],-1,c,A,e);t&&u.push(...t)}return{scripts:u.filter((e,t)=>t===u.length-1||"Done"!==e.title),width:c,height:A,sdkVersion:l.sdkVersion,modelBriefs:l.modelBriefs,deviceType:l.deviceType}},u7=function(e,t,r,n){let o,i;if(arguments.length>4&&void 0!==arguments[4]&&arguments[4],!e||!e.tasks.length||0===r||0===n)return null;let a=[];if(-1===t)a=e.tasks;else{let r=e.tasks.findIndex(e=>e===t);if(-1===r)return console.error("task not found, cannot generate animation scripts"),null;if(r===e.tasks.length-1)return null;for(let t=r;t<e.tasks.length&&(!(t>r)||"Planning"!==e.tasks[t].type||"Plan"!==e.tasks[t].subType);t++)a.push(e.tasks[t])}if(0===a.length)return null;let s=(e,t)=>{if(!t)return e;let r=u0({},e),n=null;return Object.defineProperty(r,"img",{get:()=>(null===n&&(n=t.base64),n),enumerable:!0}),r},l=[],c=!1,A="";a.forEach((e,t)=>{var u,d,p,h,m,f,g,y,v,b;let w=null==(b=a[t])?void 0:b.taskId;if(i=w,0===t&&(A=AN(e)),"Planning"===e.type){let t=[];if("Plan"===e.subType){let r=(null==(d=e.output)?void 0:d.actions)||[];if(r.length>0){let e=r[0],n=["locate","start","end"];if(e.param)for(let r in n.forEach(r=>{e.param[r]&&"object"==typeof e.param[r]&&"center"in(e.param[r]||{})&&t.push(e.param[r])}),e.param)!n.includes(r)&&"object"==typeof e.param[r]&&"center"in(e.param[r]||{})&&t.push(e.param[r])}}else"Locate"===e.subType&&(null==(u=e.output)?void 0:u.element)&&(t=[e.output.element]);let i=Aj(e),a=AN(e),A=e.uiContext,h=null==A?void 0:A.screenshot;if(A&&h){let{width:u,height:d}=u3(e,r,n);l.push(s({type:"img",duration:300,title:i,subTitle:a,imageWidth:u,imageHeight:d,taskId:w},h)),t.forEach(t=>{var r,n,p,m,f;let g;r=u0({},u1(u_(t),u,d)),n=n={pointerLeft:t.center[0],pointerTop:t.center[1]},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(n)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(n,e))}),o=r,l.push(s({type:"insight",context:A,camera:o,highlightElement:t,searchArea:(null==e?void 0:e.searchArea)??(null==(m=u$(g=null==e?void 0:e.log)&&u$(f=g.dump)&&"string"==typeof f.type&&u$(f.taskInfo)?g.dump:null)||null==(p=m.taskInfo)?void 0:p.searchArea),duration:400,insightCameraDuration:800,title:i,subTitle:t.description||a,imageWidth:u,imageHeight:d,taskId:w},h)),c=!0})}if(e.recorder&&e.recorder.length>0){let t=null==(p=e.recorder[0])?void 0:p.screenshot,{width:o,height:i}=u3(e,r,n);l.push(s({type:"img",duration:900,title:Aj(e),subTitle:AN(e),imageWidth:o,imageHeight:i,taskId:w},t))}}else if("Action Space"===e.type){let t=Aj(e),o=AN(e);l.push({type:"spinning-pointer",duration:300,title:t,subTitle:o,taskId:w}),c&&(l.push({type:"clear-insight",duration:200,title:t,subTitle:o,taskId:w}),c=!1),l.push({type:"pointer",img:uG,duration:0,title:t,subTitle:o,taskId:w});let i=null==(m=e.recorder)||null==(h=m[0])?void 0:h.screenshot,{width:a,height:A}=u3(e,r,n);l.push(s({type:"img",duration:500,camera:"Sleep"===e.subType?u2(a,A):void 0,title:t,subTitle:o,imageWidth:a,imageHeight:A,taskId:w},i))}else{let t=Aj(e),o=AN(e),i=null==(g=e.recorder)||null==(f=g[e.recorder.length-1])?void 0:f.screenshot;if(i){let{width:a,height:c}=u3(e,r,n);l.push(s({type:"img",duration:900,camera:u2(a,c),title:t,subTitle:o,imageWidth:a,imageHeight:c,taskId:w},i))}}if("finished"!==e.status){let t=Aj(e),o=e.errorMessage||"unknown error",i=o.indexOf("NOT_IMPLEMENTED_AS_DESIGNED")>0?"Further actions cannot be performed in the current environment":o,a=null==(v=e.recorder)||null==(y=v[e.recorder.length-1])?void 0:y.screenshot,{width:c,height:A}=u3(e,r,n);l.push(s({type:"img",camera:u2(c,A),duration:900,title:t,subTitle:i,imageWidth:c,imageHeight:A,taskId:w},a))}}),c&&(l.push({type:"clear-insight",duration:200,title:"",subTitle:"",taskId:i}),c=!1);let u=a.length>0?u3(a[a.length-1],r,n):{width:r,height:n};return l.push({title:"End",subTitle:A,type:"img",duration:200,camera:u2(u.width,u.height),taskId:void 0}),l};function u8(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function u6(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){u8(i,n,o,a,s,"next",e)}function s(e){u8(i,n,o,a,s,"throw",e)}a(void 0)})}}function u9(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function de(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function dt(e){if(!e)return"Unknown error";if("string"==typeof e)return e;if("object"==typeof e){var t,r;if(null==(t=e.dump)?void 0:t.error)return dt(e.dump.error);if(e.message)return String(e.message);if(null==(r=e.cause)?void 0:r.message)return String(e.cause.message)}try{let t=JSON.stringify(e);if(t&&"{}"!==t)return t}catch(e){}let n=String(e);return"[object Object]"===n?"Unknown error (an empty error object was received)":n}function dr(e,t){return e?Array.isArray(null==e?void 0:e.executions)?u4(e):e.tasks&&Array.isArray(e.tasks)?u4({sdkVersion:"",groupName:"Playground Execution",modelBriefs:[],executions:[e],deviceType:t}):null:null}function dn(e,t){return(null==e?void 0:e.dump)?dr(e.dump,t):(null==e?void 0:e.reportHTML)?function(e,t){try{var r;let n=(r=function(e){let t={};for(let r of e.matchAll(/<script type="midscene-image" data-id="([^"]+)">([\s\S]*?)<\/script>/g)){let[,e,n]=r;t[e]=nd(n)}return t}(e),e=>{let t=r[e.id];if(!t)throw Error(`Missing inline report image "${e.id}"`);return t}),o=aT(JSON.parse(function(e){let t=nf(),r=e.lastIndexOf('<script type="midscene_web_dump"');if(-1===r)throw Error("No dump script found in HTML");let n=e.indexOf(">",r);if(-1===n)throw Error("No dump script found in HTML");let o=e.indexOf(t,n);if(-1===o)throw Error("No dump script found in HTML");return nd(e.substring(n+1,o))}(e)),n);return dr(o,t)}catch(e){return console.error("Failed to restore replay from playground report:",e),null}}(e.reportHTML,t):null}function di(e){return u6(function*(){var t,r,n;if(!e.dump&&(null==(t=e.report)?void 0:t.replayUrl))try{let t=yield fetch(e.report.replayUrl);if(!t.ok)throw Error(`Report replay request failed (${t.status})`);r=yield t.json(),n=e.report.url,e.dump=aT(r,e=>new URL("file"===e.storage&&e.path?e.path:`./screenshots/${encodeURIComponent(e.id)}.${nD(e)}`,n).toString())}catch(e){console.error("Failed to load playground report replay:",e)}})()}function da(e){return"aiAct"===e||"runMarkdown"===e}function ds(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class dl{initDB(){return new Promise((e,t)=>{let r=indexedDB.open(this.dbName,this.version);r.onerror=()=>t(r.error),r.onsuccess=()=>e(r.result),r.onupgradeneeded=e=>{let t=e.target.result;this.storeConfigs.forEach(e=>{let{name:r,keyPath:n}=e;t.objectStoreNames.contains(r)||t.createObjectStore(r,{keyPath:n}).createIndex("timestamp","timestamp",{unique:!1})})}})}async withTransaction(e,t,r){let n=(await this.dbPromise).transaction(e,t);return r(Array.isArray(e)?e.map(e=>n.objectStore(e)):n.objectStore(e))}promisifyRequest(e){return new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error)})}async put(e,t){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.put(t))})}async get(e,t){return this.withTransaction(e,"readonly",async e=>this.promisifyRequest(e.get(t)))}async getAll(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return this.withTransaction(e,"readonly",async e=>{let r=t?await this.promisifyRequest(e.index("timestamp").getAll()):await this.promisifyRequest(e.getAll());return t?r.sort((e,t)=>e.timestamp-t.timestamp):r})}async clear(e){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.clear())})}async delete(e,t){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.delete(t))})}async count(e){return this.withTransaction(e,"readonly",async e=>this.promisifyRequest(e.count()))}getDBPromise(){return this.dbPromise}constructor(e,t,r){ds(this,"dbPromise",void 0),ds(this,"dbName",void 0),ds(this,"version",void 0),ds(this,"storeConfigs",void 0),this.dbName=e,this.version=t,this.storeConfigs=r,this.dbPromise=this.initDB()}}let dc=async(e,t,r,n)=>{try{return await e()}catch(e){return console.error(t,e),e instanceof Error&&"QuotaExceededError"===e.name&&n&&(console.log("Storage quota exceeded, running cleanup..."),await n()),r}},dA=(e,t,r)=>async()=>{try{let n=await e.getAll(t);if(n.length>r){let o=n.sort((e,t)=>e.timestamp-t.timestamp).slice(0,n.length-r);await Promise.all(o.map(r=>e.delete(t,r.id)))}}catch(e){console.error(`Failed to cleanup ${t}:`,e)}};function du(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function dd(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){du(i,n,o,a,s,"next",e)}function s(e){du(i,n,o,a,s,"throw",e)}a(void 0)})}}function dp(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function dh(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){dp(e,t,r[t])})}return e}function dm(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}let df="playground_messages",dg="playground_results";class dy{saveMessages(e){return dd(function*(){yield dc(()=>dd(function*(){yield this.dbManager.clear(df);let t=e.slice(-100);yield Promise.all(t.map((e,t)=>{let r=dm(dh({},e),{result:"result"===e.type?void 0:e.result}),n={id:e.id||`msg-${t}`,data:r,timestamp:e.timestamp?e.timestamp.getTime():Date.now()+t};return this.dbManager.put(df,n)}))}).call(this),"Failed to save messages to IndexedDB",void 0,this.messagesCleanup)}).call(this)}loadMessages(){return dd(function*(){return(yield dc(()=>dd(function*(){let e=yield this.dbManager.getAll(df,!0);return 0===e.length?[]:Promise.all(e.map(e=>dd(function*(){let t=e.data,r=dm(dh({},t),{timestamp:new Date(t.timestamp)});if("result"===t.type&&t.id){let e=yield this.loadResult(t.id);e&&(r.result=e.result,r.replayScriptsInfo=e.replayScriptsInfo,r.replayCounter=e.replayCounter,r.verticalMode=e.verticalMode)}return r}).call(this)))}).call(this),"Failed to load messages from IndexedDB",[],this.messagesCleanup))||[]}).call(this)}clearMessages(){return dd(function*(){yield dc(()=>dd(function*(){yield Promise.all([this.dbManager.clear(df),this.dbManager.clear(dg)])}).call(this),"Failed to clear messages from IndexedDB")}).call(this)}saveResult(e,t){return dd(function*(){yield dc(()=>dd(function*(){let r=this.compressResultForStorage(t),n={id:e,data:r,timestamp:Date.now(),size:JSON.stringify(r).length};yield this.dbManager.put(dg,n)}).call(this),"Failed to save result to IndexedDB",void 0,this.resultsCleanup)}).call(this)}loadResult(e){return dd(function*(){return(yield dc(()=>dd(function*(){let t=yield this.dbManager.get(dg,e);return(null==t?void 0:t.data)||null}).call(this),"Failed to load result from IndexedDB",null))||null}).call(this)}compressResultForStorage(e){let t=e.result,r=null==t?void 0:t.dump;return t&&r?Array.isArray(null==r?void 0:r.executions)?dm(dh({},e),{result:dm(dh({},t),{dump:dm(dh({},r),{executions:r.executions.map(e=>dm(dh({},e),{tasks:this.compressExecutionTasks(e.tasks)}))})})}):r.tasks?dm(dh({},e),{result:dm(dh({},t),{dump:dm(dh({},r),{tasks:this.compressExecutionTasks(r.tasks)})})}):e:e}compressExecutionTasks(e){return e.map(e=>{var t;return dm(dh({},e),{uiContext:e.uiContext?dm(dh({},e.uiContext),{screenshot:e.uiContext.screenshot}):e.uiContext,recorder:null==(t=e.recorder)?void 0:t.map(e=>dm(dh({},e),{screenshot:e.screenshot}))})})}compressScreenshotIfNeeded(e){if(!e)return e;if(e.length>1048576){let t=Math.round(e.length/1024);return`[COMPRESSED: ${t}KB screenshot removed for storage]`}return e}getStorageStats(){return dd(function*(){return(yield dc(()=>dd(function*(){let[e,t]=yield Promise.all([this.dbManager.count(df),this.dbManager.count(dg)]);return{messageCount:e,resultCount:t}}).call(this),"Failed to get storage statistics",{messageCount:0,resultCount:0}))||{messageCount:0,resultCount:0}}).call(this)}cleanup(){return dd(function*(){yield Promise.all([this.messagesCleanup(),this.resultsCleanup()])}).call(this)}constructor(e="playground"){dp(this,"dbManager",void 0),dp(this,"namespace",void 0),dp(this,"messagesCleanup",void 0),dp(this,"resultsCleanup",void 0),this.namespace=e,this.dbManager=new dl(`midscene_playground_${e}`,1,[{name:df,keyPath:"id"},{name:dg,keyPath:"id"}]),this.messagesCleanup=dA(this.dbManager,df,100),this.resultsCleanup=dA(this.dbManager,dg,50)}}function dv(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function db(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){dv(i,n,o,a,s,"next",e)}function s(e){dv(i,n,o,a,s,"throw",e)}a(void 0)})}}function dw(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function dE(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){dw(e,t,r[t])})}return e}function dx(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}class dk{checkStorageSpace(){try{let e="storage-test",t="x".repeat(102400);return localStorage.setItem(e,t),localStorage.removeItem(e),!0}catch(e){return!1}}saveMessages(e){return db(function*(){try{this.checkStorageSpace()||(console.warn("Low storage space detected, clearing old data..."),yield this.handleQuotaExceeded());let t=e.slice(-this.maxStorageItems).map(e=>dx(dE({},e),{result:"result"===e.type?void 0:e.result})),r=JSON.stringify(t);localStorage.setItem(this.messagesKey,r)}catch(t){if(t instanceof DOMException&&"QuotaExceededError"===t.name){console.warn("LocalStorage quota exceeded, attempting to clear old data and retry..."),yield this.handleQuotaExceeded();try{let t=e.slice(-10).map(e=>dx(dE({},e),{result:"result"===e.type?void 0:e.result})),r=JSON.stringify(t);localStorage.setItem(this.messagesKey,r),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:",t)}}).call(this)}loadMessages(){return db(function*(){try{let e=localStorage.getItem(this.messagesKey);if(!e)return[];let t=JSON.parse(e);return yield Promise.all(t.map(e=>db(function*(){if("result"===e.type&&e.id){let t=`${this.resultsKey}-${e.id}`,r=localStorage.getItem(t);if(r)try{let t=JSON.parse(r);return dE({},e,t)}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 db(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,t){return db(function*(){try{let r=`${this.resultsKey}-${e}`;localStorage.setItem(r,JSON.stringify(t))}catch(r){if(r instanceof DOMException&&"QuotaExceededError"===r.name){console.warn("LocalStorage quota exceeded when saving result, clearing old results..."),yield this.handleQuotaExceeded();try{let r=`${this.resultsKey}-${e}`;localStorage.setItem(r,JSON.stringify(t))}catch(e){console.error("Failed to save result even after clearing storage:",e)}}else console.error("Failed to save result to localStorage:",r)}}).call(this)}handleQuotaExceeded(){return db(function*(){try{let e=Object.keys(localStorage),t=e.filter(e=>e.startsWith(this.resultsKey)),r=t.slice(0,Math.max(1,Math.floor(t.length/2)));r.forEach(e=>{localStorage.removeItem(e)}),console.info(`Cleared ${r.length} old result entries to free up storage space`);let n=e.filter(e=>e.includes("playground")||e.includes("agent")||e.startsWith("midscene"));if(n.length>10){let e=n.slice(0,Math.floor(n.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"){dw(this,"messagesKey",void 0),dw(this,"resultsKey",void 0),dw(this,"maxStorageItems",50),this.messagesKey=`${e}-messages`,this.resultsKey=`${e}-results`}}class dS{saveMessages(e){return db(function*(){this.messages=[...e]}).call(this)}loadMessages(){return db(function*(){return[...this.messages]}).call(this)}clearMessages(){return db(function*(){this.messages=[],this.results.clear()}).call(this)}saveResult(e,t){return db(function*(){this.results.set(e,t)}).call(this)}constructor(){dw(this,"messages",[]),dw(this,"results",new Map)}}class dI{saveMessages(e){return db(function*(){})()}loadMessages(){return db(function*(){return[]})()}clearMessages(){return db(function*(){})()}saveResult(e,t){return db(function*(){})()}}function dC(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"indexeddb",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"playground";switch(e){case"indexeddb":if("undefined"!=typeof indexedDB)return new dy(t);return console.warn("IndexedDB not available, falling back to localStorage"),dC("localStorage",t);case"localStorage":if("undefined"!=typeof localStorage)return new dk(t);return console.warn("localStorage not available, falling back to memory storage"),dC("memory",t);case"memory":return new dS;case"none":return new dI;default:throw Error(`Unknown storage type: ${e}`)}}function dO(){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 dR(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function dj(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){dR(i,n,o,a,s,"next",e)}function s(e){dR(i,n,o,a,s,"throw",e)}a(void 0)})}}function dP(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function dM(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}let dT=e=>{var t;let r=e.highlightElements||[],n=e.highlightRect,o=null==(t=e.uiContext)?void 0:t.shotSize;if(!o)return(0,a.jsx)("div",{className:"blackboard",children:(0,a.jsx)("div",{className:"blackboard-main-content",style:{padding:"20px"},children:"No UI context available"})});let i=e.uiContext,l=o.width,c=o.height,A=s.useMemo(()=>(function(e){if(!(null==e?void 0:e.length))return[];let t=new Map;return e.forEach((e,r)=>{var n;if(!(null==e?void 0:e.center))return;let o="content"in e&&e.content?e.content:"description"in e&&e.description?e.description:void 0,i=["id"in e?e.id:"",o||"",(n=e.center,`${n[0]}:${n[1]}`)].join("|");t.has(i)||t.set(i,{key:"id"in e&&e.id||`${i||"highlight"}-${r}`,label:o,center:e.center})}),Array.from(t.values())})(r),[r]),u=s.useMemo(()=>{var e;return(null==i||null==(e=i.screenshot)?void 0:e.base64)||""},[i]),d=A.map(e=>u_(e)),p=null;return 1===d.length?p=(0,a.jsx)("div",{className:"bottom-tip",children:(0,a.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(d[0])]})}):d.length>1&&(p=(0,a.jsx)("div",{className:"bottom-tip",children:(0,a.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(d)]})})),(0,a.jsxs)("div",{className:"blackboard",children:[(0,a.jsxs)("div",{className:"blackboard-main-content",style:{width:"fit-content",maxWidth:"100%",position:"relative"},children:[u&&(0,a.jsx)("img",{src:u,alt:"screenshot",className:"blackboard-screenshot",draggable:!1}),(0,a.jsxs)("div",{className:"blackboard-overlay",style:{aspectRatio:`${l}/${c}`,"--ui-scale":Math.max(1,Math.sqrt(l/1920))},children:[n&&(0,a.jsx)("div",{className:"blackboard-rect blackboard-rect-search",style:{left:`${n.left/l*100}%`,top:`${n.top/c*100}%`,width:`${n.width/l*100}%`,height:`${n.height/c*100}%`},children:(0,a.jsx)("span",{className:"blackboard-rect-label",children:"Search Area"})}),A.map(e=>{let t=u_(e);return(0,a.jsx)("div",{className:"blackboard-rect blackboard-rect-highlight",style:{left:`${t.left/l*100}%`,top:`${t.top/c*100}%`,width:`${t.width/l*100}%`,height:`${t.height/c*100}%`}},`${e.key}-rect`)})]})]}),(0,a.jsx)("div",{className:"bottom-tip",style:{display:e.hideController?"none":"block"},children:p})]})};var dN=r(49783),dD=r(37294),dz=r(14985),dB=r(31090),dF=r(92946),dL=r(60090),dU=r(53776);let dK=e=>{let{text:t,disabled:r=!1,speed:n=5,className:o="",colorTheme:i="blue"}=e,s={"--animation-duration":`${n}s`},l=`theme-${i}`;return(0,a.jsx)("div",{className:`shiny-text ${l} ${r?"disabled":""} ${o}`,style:s,children:t})},dZ=(0,a.jsxs)("span",{children:["Don't worry, just one more step to launch the playground server.",(0,a.jsx)("br",{}),"Please run one of the commands under the midscene project directory:",(0,a.jsx)("br",{}),"a. ",(0,a.jsx)("strong",{children:"npx midscene-playground"}),(0,a.jsx)("br",{}),"b. ",(0,a.jsx)("strong",{children:"npx --yes @midscene/web"})]}),dJ=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:dZ;return(0,a.jsx)("div",{className:"server-tip",children:(0,a.jsx)(W.A,{message:"Playground Server Not Ready",description:e,type:"warning"})})},dQ=(0,a.jsx)("div",{className:"result-empty-tip",style:{textAlign:"center"},children:(0,a.jsx)(dK,{disabled:!0,text:"The result will be shown here"})});var dq=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/jwURERGRv7la1asTMn48TRs/yq/XrvH5hg2Er47AzWw2M3XsOF5o2xbDMPj2hx9Y/OFybiYnczfD+g/gqVZPMHDUKNLS03EJCgxkxqRJtGzajPjERDZu2cz7K1bgZhgGMyZN4sV27XE6naxcs5r7Vdzbm9CpIfzjiSfIz8/nu127mDHvHfLy83EZ9+abuCxYuhS3ZQsW8MOePWzasoUOzz3H9AkTqVKpEqlpaTzVqhUuIaGh/LhvL/eiTevW9O/Vm9cGDcRtQO8+BAdVJCQ0FJcy/v5MHTuOp1q1IiU1lS3bv2XB0qUU9I8nnmDkoME0qFuXM+fP8c+Pw9nx405cAsuXZ93KT7h9+zYz5s+jZ9dutH/2GW7EJ9Ds2WcQERERERERERH5O7MgIiIi8jdWvmxZNq2KYP1XXzH73XepFBTM4rlzcTqdrFyzGpd506bTolkzRkycQF5+PpPfeovpEyYyYuIE7jRy8GD69ezFSz1fIy09HRcfq5VNqyLYumMHs8LCqBwUTGjIVGw2O8vCP8Zl2vgJdHj2Oea8t4DEpCTGvfkmFctX4F6ZTCbWfhxOdm4urw8fRhGLhZmT32b5woX0HzEClwD/MtwpqEIgPiWtuOw9eJDXBg1kypixZOfksPjD5bjciI/nXpUoXoJKwUEUVNrPj/Jly+I2dvhwvLw8eerFjpQtE8C68HCOHDvG3oMHcXm0QUPC3/+AkLmhjJg4gZbNHmf5e+/Rvd8bRB0/TkJiIn2HDWXKmLF8tHgJ23fu5LWBA0lLz0BEREREREREROTvzkBERETkb6xdm2f49fo1Zsyfx/noaLbv/IEZ8+fRt0cPXCxmM907d2LExAkcOnqUY7/8wsBRo/j2h+8xDIOCRg0ZQt9XX6Xjqz2IjYvD7ckWLXE6nUSsX4dhGMReiyNy40Ze7dIFt5eef54PP1nJhq+/Zu/Bg0yePRvDMLhXNapW5bHGjen35nCOnzzJkWPHGDR6FC+2a4+P1cq9yMzK4lJMDBmZmaSlp3MpJoZLMTFk5+TwIKWlZ1AuoCyVKgZx/uIFmj37DD+fOIFb986d+GH3bg4dPYqHhwdHTxxn78GDdHnxRVzybTYuxcTw67U4MjIzGTV5EvsPHeL0ubOIiIiIiIiIiIj83VkQERER+RurW7s25y5epKCzFy5Qq0YNLGYzlYKD8fL04sz587ilpafzzfffU5BhMtH7le5s3b6duOvXKahO7Vr4lirFZ8uWU5DdZsPF09OTihUqcODwYdzOnDtHWno696pO7drEXbtGdk4ObnHXr5Odk0OdWrU4cPgw/1cs/ehfGIaJD+bPp2KFChw4coRJM2dwJTYWlzq1ahMUGMiq5R9SUGpaKneKOn4MERERERERERER+X9ZEBEREfkbuxQTwxs9e1JQ5aBgrsTGYrPb+fXaNfLy86kSHMy5ixdxKVq0KNWrVOHcxYs4HA5cHE4nXfr0Ydv6dfx67TrhqyNwi74cw8XLl2nfrStuXp5eeHoWwyU3N5eExEQa1a/P2QsXcKkcHIyP1cq9uhQTQ6WgIMqXLctv8fG4+Pn6Utzbm+iYGFxupqTQoE4d3Dw8PKhTuzZfbtvGg3IzJZkA/zKYzWbsdjsujzZsQGZWFm4BZcqwYOlSQt97j4AyZfhn2Lu8/dYYBo4ehUt0zGV+ijrCnAULcPP18SHfZuNOTiciIiIiIiIiIiJSgIGIiIhIIWYymTAMAxMmTCYThmFgMplw+273LgLK+DNy8GB8rFZqVqvG22PG8NU33+CSl5fH97t2ETo1BD9fX3ysVsJmzmTiqNE4HA4Kir0WR9e+fZkwahTdXnoZtz0HD1AlOJg3evakiMVCuYAAtkRG8lL753HbuXcvA3r34dEGDQkKDOTtMWNxOBzcqzPnz3P5yhWmT5hIcMWKlPbzY8Gs2RyKiiIxKQmXH3bvplXz5rRs1oxSPj5MHDmK4t7e3OnE6VM0b9KESkFBWEuWpIjFwr06fPQohmEwoHdvvL286NShA62at6CgGRMnMm/6dLw8vUhLTyctIx2Hw4Hb5m++pXf3HjRv0hSTyUTjBg049MNOggIDcTMMA5PJhIthGJhMJkRERERERERERARMKbYcJyIiIiIPiTM9lxpNm/CfEnvyFN5eXhSUm5tLxXp1cfvHE0/w7sxZBFesSE5uLms3bWTyrFk4nU5cvL28+GjxEv7xxBPY7XYOHDnCuJCpXPvtN1zq16nDjo2bKFerJi6NGzTgi08+Zdi4cez4cScujerXZ2nYu1SqWJGs7Gy+3LaVt2fPxuFw4OLp6cknS//JU088gcPpZNXaSCoFBfPJmjVs3/kD96JCuXJ8/P4HNKpfH6fTyYFDhxg4ehSpaWm4mEwm5s+YQbeXXsajaFE2bd2K2Wxw9PgJwldH4Fbaz4+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/dO3WmYmAgh48eZWbYfC7FxOCyZ+s2Nmz+mjcHDmL3vn38cvo0IwcPZufevQwfP457Me7NN3FZsHQpbssWLOCHPXvYtGULLk0aNWLk4CE8/thjnL1wgfCICDZv/5aCBvXtS/dOnakYGMjho0eZGTafSzExuASWL8+6lZ9w+/ZtZsyfR8+u3Wj/7DPciE+g2bPPICIiIiIiIiIiIg+XgYiIiEghVrVyZVZ+sJTtP+zk1QH9SctIZ234SkoUL45LQmIifYcNJTYujo8WL+HW7du8NnAg/UeOxMVkMrH243DKBgTw+vBhDBs3lkb167N84UIK6t+rF7/Fx9PtjdfZuXcvKxYuonGDBtyrQX37MqB3H95ZvIhnX36Z89EX2fjZKnysVlxqVq9OgH8Zuvd7g84dO1KjejU69+lNpw4dqF2jBvciwL8MAf5lKCioQiA+Ja24mEwmFobO5dDRozz29FN8tOozFs2dSykfH9wG9e3LgN59eGfxIp59+WXOR19k42er8LFacUlITKTvsKHExsXx0eIl3Lp9m9cGDqT/yJGIiIiIiIiIiIjIw2cgIiIiUsh9v3s34asjiDp+nNGTJ1PG359HGzbEJd9m41JMDL9eiyMjM5NRkyex/9AhTp87i0uNqlV5rHFj+r05nOMnT3Lk2DEGjR7Fi+3a42O14hYdE8OM+fM4ceoU85cs5uTZszz/7LPcq76vvkb46ghirl7FbDGzdtMmXFo1b47bF19/xYlTp0hJTWXTli2cvXCBuOvXqRgYyIPgdDpJz8igSnAw/qVLs3XHDpo8/RTZ2dm49X31NcJXRxBz9Spmi5m1mzbh0qp5c1zybTYuxcTw67U4MjIzGTV5EvsPHeL0ubOIiIiIiIiIiIjIw2dBREREpJA7cPgQbplZWZw8c5pa1auze/9+Coo6fow71aldm7hr18jOycEt7vp1snNyqFOrFgcOH8blwOFDFHTw8GFqVqvOvShapAg1qlalX89e9O7eA7fMrCx8rD642Ww23PLzbTwMb015m2H9+rE1ci2G2czW7duZ9s5c8vLzKVqkCDWqVqVfz1707t4Dt8ysLHysPtwp6vgxRERERERERERE5K9lQURERKSQa1S/Ptu++w4XDw8PHqlZk4XLlnEnp5P/4VJMDJWCgihftiy/xcfj4ufrS3Fvb6JjYnBrVK8+BTWsV48z589xL/Ly84mNi2PSzJns2r8Pt7JlAkhJS+VBuZmSQoM6dXDz8PCgTu3afLltGy6enp44HA7emjKFt6ZMoWa1any1eg2/nDnNZ5GR5OXnExsXx6SZM9m1fx9uZcsEkJKWyp2cTkREREREREREROQvZiAiIiJSyHV76WWebtUaP19fpowZQ36+jZ+PH8fNMAxMJhMuhmFgMplwO3P+PJevXGH6hIkEV6xIaT8/FsyazaGoKBKTknCrX6cOfXr0wFqyJK+83InmTZvy4759uBmGgWEYuBiGgWEYFPTltq1MmzCBwPLlKWKx0KvbK3yzfj1ms5kH5Yfdu2nVvDktmzWjlI8PE0eOori3NwVtXvM5vbq9gtls5mZyMjm5uTgcTty+3LaVaRMmEFi+PEUsFnp1e4Vv1q/HbDbjZhgGJpMJF8MwMJlMiIiIiIiIiIiIyF/DgoiIiEght3n7t6xYtAgfq5XrN27Qe8gQklNTcXmhbVs+/ecy3Lp36sSZc+d4suMLuNjtdrr07cPH73/A4R924nQ6OXDoEL2HDqGg0IXvMajv67w3ew6ZWVnMWbCA3fv34zKs/wBmTZ6M25mDP+EyY/48ln70ES7vLFqEtWRJ9n+7HYvZzInTpxk+fjy5ubk8KMdO/kLkpo2sXvEvPIoWZdPWrWzY/DVuubm5jA0JYfyIEcyeMgUPDw+2fPstGzZ/jds7ixZhLVmS/d9ux2I2c+L0aYaPH09ubi4uL7Rty6f/XIZb906dOHPuHE92fAERERERERERERF5+EwpthwnIiIiIg+JMz2XGk2b8J9y7tBhhowdw76ffsK/dGkSEhP5s0qWKIHNZicnN4ffU8bfn+SUFOx2O3+GxWzGWrIkyamp3I8Gdeuy86uvuZs6LZqTkJiIm6enJ4bJRHZODr/Hr1QpsnNzuXXrFndjMZuxlixJcmoqIiIiIiJy7y4eicJk9URERETkYbEgIiIi8jfgcDhISEzk35GRmcn/JjEpiX+HzW4nOTWV+3X63DlqPPYod5Oank5Bubm5/G+SU1P5Iza7neTUVEREREREREREROT/FgsiIiIi8l/PbreTkpaGiIiIiIiIiIiI/L1ZEBERESnEWrRrS1ZWFiIiIiIiIiIiIiJ/BxZERERECrHUtDRERERERERERERE/i4MRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMREREROSBKVq0KI8/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 dX=e=>{let{uiContextPreview:t,setUiContextPreview:r,showContextPreview:n}=e;return n?(0,a.jsxs)("div",{className:"form-part context-panel",children:[(0,a.jsx)("h3",{children:"UI Context"}),t?(0,a.jsx)(dT,{uiContext:t,hideController:!0}):(0,a.jsxs)("div",{children:[(e=>{switch(e){case"finished":case"passed":case"success":case"connected":return(0,a.jsx)("span",{style:{color:"#00AD4B"},children:(0,a.jsx)(dN.A,{})});case"finishedWithWarning":return(0,a.jsx)("span",{style:{color:"#f7bb05"},children:(0,a.jsx)(dD.A,{})});case"failed":case"closed":case"timedOut":case"interrupted":return(0,a.jsx)("span",{style:{color:"#FF0A0A"},children:(0,a.jsx)(dz.A,{})});case"pending":return(0,a.jsx)(dB.A,{});case"cancelled":case"skipped":return(0,a.jsx)("span",{style:{color:"#8c8c8c"},children:(0,a.jsx)(dF.A,{})});case"running":return(0,a.jsx)(dL.A,{});default:return(0,a.jsx)(dU.A,{})}})("failed")," No UI context",(0,a.jsx)(q.Ay,{type:"link",onClick:e=>{e.preventDefault(),r(dq)},children:"Load Demo"}),(0,a.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 dW=r(54291);let dH=e=>{let{className:t="",playgroundSDK:r,onVerify:n,agentOptions:o,onAgentOptionsSave:i,configModalClassName:s,configModalWidth:l,envTextareaAutoSize:c,envTextareaMinRows:A}=e,{config:u}=Z();return Object.keys(u||{}).length>=1?null:(0,a.jsxs)("div",{className:`env-config-reminder ${t}`,children:[(0,a.jsx)(dW.A,{className:"reminder-icon"}),(0,a.jsx)("span",{className:"reminder-text",children:"Please set up your environment variables before using."}),(0,a.jsx)(el,{agentOptions:o,configModalClassName:s,configModalWidth:l,envTextareaAutoSize:c,envTextareaMinRows:A,mode:"text",onAgentOptionsSave:i,onVerify:n,playgroundSDK:r,showTooltipWhenEmpty:!1})]})};var dY=r(67062),dG=r(36130),dV=r(12297),d$=r(15862),d_=r(17615),d0=r(52107),d1=r(74544),d2=r(91235),d3=r(61879),d5=r(99876),d4=r(11269);let d7=e=>{var t,r;return(0,a.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:(0,a.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(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},d8=e=>{var t,r;return(0,a.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:[(0,a.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,a.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(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};function d6(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function d9(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function pe(e,t){return{left:0,top:0,width:e,pointerLeft:Math.round(e/2),pointerTop:Math.round(t/2)}}function pt(e,t,r,n){if(!t.img)return;e.img&&t.img!==e.img&&(e.prevImg=e.img,e.imageChanged=!0);let o=t.imageWidth||r,i=t.imageHeight||n,a=e.imgW!==o||e.imgH!==i;if(e.img=t.img,e.imgW=o,e.imgH=i,a){let t=pe(o,i);e.camera=d9({},t),e.prevCamera=d9({},t),e.pointerMoved=!1}}function pr(e,t){return Math.abs(e.pointerLeft-t.pointerLeft)>1||Math.abs(e.pointerTop-t.pointerTop)>1}function pn(e,t,r,n,o){let i=Math.round(n/2),a=Math.round(o/2);return e||Math.abs(t.pointerLeft-i)>1||Math.abs(t.pointerTop-a)>1||Math.abs(r.pointerLeft-i)>1||Math.abs(r.pointerTop-a)>1}function po(e,t,r,n,o){let i=pe(r,n),a={img:"",imgW:r,imgH:n,camera:d9({},i),prevCamera:d9({},i),prevImg:null,insights:[],spinning:!1,spinningElapsedMs:0,pointerImg:uG,pointerVisible:!1,title:"",subTitle:"",taskId:void 0,frameInScript:0,scriptIndex:0,imageChanged:!1,pointerMoved:!1,rawProgress:0};for(let i=0;i<e.length;i++){var s,l;let c=e[i],A=c.startFrame+c.durationInFrames;if(0===c.durationInFrames){c.startFrame<=t&&("pointer"===c.type&&c.pointerImg&&(a.pointerImg=c.pointerImg,a.pointerVisible=!0),a.title=c.title||a.title,a.subTitle=c.subTitle||a.subTitle,a.taskId=null!=(s=c.taskId)?s:a.taskId,a.scriptIndex=i);continue}if(t<c.startFrame)break;switch(a.title=c.title||a.title,a.subTitle=c.subTitle||a.subTitle,a.taskId=null!=(l=c.taskId)?l:a.taskId,a.scriptIndex=i,a.frameInScript=t-c.startFrame,a.rawProgress=Math.min(a.frameInScript/c.durationInFrames,1),c.type){case"img":!function(e,t,r,n,o){pt(e,t,n,o);let i=t.startFrame+t.durationInFrames;t.cameraTarget?(e.prevCamera=d9({},e.camera),e.camera=d9({},t.cameraTarget),e.pointerMoved=pr(e.prevCamera,e.camera)):r>=i&&(e.pointerMoved=!1,e.imageChanged=!1),e.spinning=!1}(a,c,t,r,n);break;case"insight":!function(e,t,r,n,o){if(pt(e,t,n,o),e.insights.some(e=>e.highlightElement===t.highlightElement&&e.searchArea===t.searchArea)||e.insights.push({highlightElement:t.highlightElement,searchArea:t.searchArea,alpha:1}),t.cameraTarget&&void 0!==t.insightPhaseFrames){let n=t.startFrame+t.insightPhaseFrames;r>=n&&(e.prevCamera=d9({},e.camera),e.camera=d9({},t.cameraTarget),e.rawProgress=Math.min((r-n)/(t.cameraPhaseFrames||1),1),e.pointerMoved=pr(e.prevCamera,e.camera))}e.spinning=!1}(a,c,t,r,n);break;case"clear-insight":!function(e,t,r){let n=t.startFrame+t.durationInFrames,o=1-e.rawProgress;e.insights=e.insights.map(e=>{var t,r;return t=d9({},e),r=r={alpha:o},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t}),r>=n&&(e.insights=[]),e.spinning=!1}(a,c,t);break;case"spinning-pointer":a.spinning=!0,a.spinningElapsedMs=a.frameInScript/o*1e3;break;case"sleep":a.spinning=!1}t>=A&&("clear-insight"!==c.type&&(a.imageChanged=!1),a.pointerMoved=!1,a.rawProgress=1,c.cameraTarget&&(a.prevCamera=d9({},a.camera)))}if(!a.img){let t=e.find(e=>"img"===e.type&&e.img);t&&(a.img=t.img,a.imgW=t.imageWidth||r,a.imgH=t.imageHeight||n)}return{img:a.img,imageWidth:a.imgW,imageHeight:a.imgH,prevImg:a.imageChanged?a.prevImg:null,camera:a.camera,prevCamera:a.prevCamera,insights:a.insights,spinning:a.spinning,spinningElapsedMs:a.spinningElapsedMs,currentPointerImg:a.pointerImg,pointerVisible:a.pointerVisible,title:a.title,subTitle:a.subTitle,taskId:a.taskId,frameInScript:a.frameInScript,scriptIndex:a.scriptIndex,imageChanged:a.imageChanged,pointerMoved:a.pointerMoved,rawProgress:a.rawProgress}}function pi(e,t,r,n){let o=Math.min(e/r,t/n),i=r*o,a=n*o;return{offsetX:(e-i)/2,offsetY:(t-a)/2,contentWidth:i,contentHeight:a}}function pa(e,t){if(!Number.isFinite(e)||e<=0)throw Error(`${t} must be a positive finite number`)}function ps(e){return{scale:e,width:44*e,height:56*e,hotspotX:6*e,hotspotY:4*e,centerOffsetX:44*e/2,centerOffsetY:56*e/2}}function pl(e){return pa(e,"imageWidth"),ps(Math.max(1,Math.sqrt(e/1920)))}function pc(e){let t=e.height;return{size:t,centerOffset:t/2}}let pA=e=>{let{frameMap:t,autoZoom:r,frame:n,width:o,height:i,fps:l}=e,{scriptFrames:c,imageWidth:A,imageHeight:u}=t,d=(0,s.useMemo)(()=>po(c,n,A,u,l),[c,n,A,u,l]);if(!d.img)return null;let{img:p,imageWidth:h,imageHeight:m,prevImg:f,camera:g,prevCamera:y,insights:v,spinning:b,spinningElapsedMs:w,currentPointerImg:E,pointerVisible:x,title:k,subTitle:S,frameInScript:I,imageChanged:C,pointerMoved:O,rawProgress:R}=d,j=r?O?Math.min(R/.375,1):R:1,P=O?R<=.375?0:Math.min((R-.375)/.625,1):R,M=y.pointerLeft+(g.pointerLeft-y.pointerLeft)*j,T=y.pointerTop+(g.pointerTop-y.pointerTop)*j,N=r?y.left+(g.left-y.left)*P:0,D=r?y.top+(g.top-y.top)*P:0,z=r?y.width+(g.width-y.width)*P:h,{offsetX:B,offsetY:F,contentWidth:L,contentHeight:U}=pi(o,i,h,m),K=h/z,Z=-(L/h*N),J=-(U/m*D),Q=`scale(${K}) translate(${Z}px, ${J}px)`,q=m/h*z,X=(M-N)/z*L,W=(T-D)/q*U,H=pn(x,g,y,h,m),Y=pl(h),G=pc(Y),V=Y.scale,$=C?Math.min(I/10,1):1,_=b?(Math.sin(w/500-Math.PI/2)+1)/2*Math.PI*2:0;return(0,a.jsx)("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,backgroundColor:"#000"},children:(0,a.jsx)("div",{style:{position:"absolute",left:B,top:F,width:L,height:U,overflow:"hidden"},children:(0,a.jsxs)("div",{style:{width:L,height:U,position:"relative",overflow:"hidden"},children:[C&&f&&$<1&&(0,a.jsx)("div",{style:{position:"absolute",width:L,height:U,overflow:"hidden",opacity:1-$},children:(0,a.jsx)("img",{alt:"",src:f,style:{width:L,height:U,transformOrigin:"0 0",transform:Q}})}),(0,a.jsxs)("div",{style:{position:"absolute",width:L,height:U,overflow:"hidden",opacity:C?$:1},children:[(0,a.jsx)("img",{alt:"",src:p,style:{width:L,height:U,transformOrigin:"0 0",transform:Q}}),(0,a.jsx)("div",{style:{position:"absolute",top:0,left:0,width:L,height:U,transformOrigin:"0 0",transform:Q,pointerEvents:"none"},children:0===v.length?null:v.map((e,t)=>{let r=[];if(e.highlightElement){let n=u_(e.highlightElement);r.push((0,a.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*V}px solid #fd5907`,boxShadow:`${2*V}px ${2*V}px ${+V}px rgba(51, 51, 51, 0.3)`,opacity:e.alpha,pointerEvents:"none"}},`highlight-${t}`))}if(e.searchArea){let n=e.searchArea;r.push((0,a.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*V}px solid #028391`,boxShadow:`${2*V}px ${2*V}px ${+V}px rgba(51, 51, 51, 0.3)`,opacity:e.alpha,pointerEvents:"none"}},`search-${t}`))}return r})})]}),b&&(0,a.jsx)("img",{alt:"",src:uV,style:{position:"absolute",left:X-G.centerOffset,top:W-G.centerOffset,width:G.size,height:G.size,transform:`rotate(${_}rad)`,transformOrigin:"center center",filter:"drop-shadow(0 1px 2px rgba(0,0,0,0.3))"}}),H&&!b&&(0,a.jsx)("img",{alt:"",src:E,style:{position:"absolute",left:X-Y.hotspotX,top:W-Y.hotspotY,width:Y.width,height:Y.height,filter:"drop-shadow(0 1px 2px rgba(0,0,0,0.3))"}})]})})})};function pu(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function pd(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){pu(i,n,o,a,s,"next",e)}function s(e){pu(i,n,o,a,s,"throw",e)}a(void 0)})}}let pp=!1;function ph(e){return new Promise((t,r)=>{let n=new Image;n.crossOrigin="anonymous",n.onload=()=>t(n),n.onerror=r,n.src=e})}function pm(e,t,r){let n=r.contentWidth/r.imageWidth,o=r.contentHeight/r.imageHeight;return{left:r.offsetX+(e.left*n+t.tx)*t.zoom,top:r.offsetY+(e.top*o+t.ty)*t.zoom,width:e.width*n*t.zoom,height:e.height*o*t.zoom}}function pf(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function pg(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){pf(i,n,o,a,s,"next",e)}function s(e){pf(i,n,o,a,s,"throw",e)}a(void 0)})}}function py(e,t){let r=Math.floor(e/t),n=Math.floor(r/60);return`${String(n).padStart(2,"0")}:${String(r%60).padStart(2,"0")}`}function pv(e){var t,r,n,o,i;let l,{message:c}=ew.A.useApp(),{autoZoom:A,setAutoZoom:u,playbackSpeed:d,setPlaybackSpeed:p,subtitleEnabled:m,setSubtitleEnabled:f}=C();(0,s.useEffect)(()=>{(null==e?void 0:e.autoZoom)!==void 0&&u(e.autoZoom)},[null==e?void 0:e.autoZoom,u]);let g=null==e?void 0:e.replayScripts,y=(0,s.useMemo)(()=>g&&0!==g.length?function(e,t){let r=(null==t?void 0:t.imageWidth)||1920,n=(null==t?void 0:t.imageHeight)||1080;for(let t of e)if(("img"===t.type||"insight"===t.type)&&t.img){r=t.imageWidth||r,n=t.imageHeight||n;break}let o=[],i=0;for(let t of e){var a,s,l,c;let e=t.duration;switch(t.type){case"sleep":{let r=Math.ceil(e/1e3*30);o.push({type:"sleep",startFrame:i,durationInFrames:r,title:t.title,subTitle:t.subTitle,taskId:t.taskId}),i+=r;break}case"img":{let l=Math.max(Math.ceil(e/1e3*30),1),c=t.camera,A=t.imageWidth||r,u=t.imageHeight||n,d={type:"img",startFrame:i,durationInFrames:l,img:t.img,imageWidth:A,imageHeight:u,title:t.title,subTitle:t.subTitle,taskId:t.taskId};c&&(d.cameraTarget={left:c.left,top:c.top,width:c.width,pointerLeft:null!=(a=c.pointerLeft)?a:Math.round(A/2),pointerTop:null!=(s=c.pointerTop)?s:Math.round(u/2)}),o.push(d),i+=l;break}case"insight":{let a=Math.max(Math.ceil(e/1e3*30),1),s=Math.ceil((t.insightCameraDuration||0)/1e3*30),A=a+s,u=t.imageWidth||r,d=t.imageHeight||n,p=t.camera,h={type:"insight",startFrame:i,durationInFrames:A,img:t.img,imageWidth:u,imageHeight:d,insightPhaseFrames:a,cameraPhaseFrames:s,highlightElement:t.highlightElement,searchArea:t.searchArea,title:t.title,subTitle:t.subTitle,taskId:t.taskId};p&&(h.cameraTarget={left:p.left,top:p.top,width:p.width,pointerLeft:null!=(l=p.pointerLeft)?l:Math.round(u/2),pointerTop:null!=(c=p.pointerTop)?c:Math.round(d/2)}),o.push(h),i+=A;break}case"clear-insight":{let r=Math.max(Math.ceil(e/1e3*30),1);o.push({type:"clear-insight",startFrame:i,durationInFrames:r,title:t.title,subTitle:t.subTitle,taskId:t.taskId}),i+=r;break}case"spinning-pointer":{let r=Math.max(Math.ceil(e/1e3*30),1);o.push({type:"spinning-pointer",startFrame:i,durationInFrames:r,title:t.title,subTitle:t.subTitle,taskId:t.taskId}),i+=r;break}case"pointer":o.push({type:"pointer",startFrame:i,durationInFrames:0,pointerImg:t.img,title:t.title,subTitle:t.subTitle,taskId:t.taskId})}}let A=Math.max(i,1);return{scriptFrames:o,totalDurationInFrames:A,fps:30,stepsDurationInFrames:A,imageWidth:r,imageHeight:n}}(g,{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,g]),v=(0,s.useRef)(null),b=(0,s.useRef)(null),w=(0,s.useRef)(null),[E,x]=(0,s.useState)({width:0,height:0});(0,s.useEffect)(()=>{let e=b.current;if(!e)return;let t=new ResizeObserver(e=>{for(let t of e){let{width:e,height:r}=t.contentRect;x(t=>t.width===e&&t.height===r?t:{width:e,height:r})}});return t.observe(e),()=>t.disconnect()},[]);let k=function(e){var t,r;let{durationInFrames:n,fps:o,autoPlay:i=!1,loop:a=!1}=e,[l,c]=(0,s.useState)(0),[A,u]=(0,s.useState)(i),d=(0,s.useRef)(A),p=(0,s.useRef)(l),h=(0,s.useRef)(null!=(t=e.playbackRate)?t:1),m=(0,s.useRef)(n),f=(0,s.useRef)(o),g=(0,s.useRef)(a);d.current=A,p.current=l,h.current=null!=(r=e.playbackRate)?r:1,m.current=n,f.current=o,g.current=a,(0,s.useEffect)(()=>{let e;if(!A)return;let t=null,r=0,n=o=>{if(null!==t){let e=(o-t)*h.current;r+=e;let n=1e3/f.current;for(;r>=n;){r-=n;let e=p.current+1;if(e>=m.current)if(g.current)p.current=0,c(0);else{p.current=m.current-1,c(m.current-1),u(!1);return}else p.current=e,c(e)}}t=o,e=requestAnimationFrame(n)};return e=requestAnimationFrame(n),()=>cancelAnimationFrame(e)},[A]);let y=()=>{p.current>=m.current-1&&(p.current=0,c(0))},v=(0,s.useCallback)(()=>{y(),u(!0)},[]),b=(0,s.useCallback)(()=>u(!1),[]);return{currentFrame:l,playing:A,play:v,pause:b,toggle:(0,s.useCallback)(()=>{d.current?u(!1):(y(),u(!0))},[]),seekTo:(0,s.useCallback)(e=>{let t=Math.max(0,Math.min(e,m.current-1));p.current=t,c(t)},[])}}({durationInFrames:Math.max(null!=(t=null==y?void 0:y.totalDurationInFrames)?t:1,1),fps:null!=(r=null==y?void 0:y.fps)?r:30,autoPlay:null==(n=null==e?void 0:e.autoPlay)||n,loop:!1,playbackRate:d}),S=(0,s.useMemo)(()=>{if(!y)return 0;for(let e=y.scriptFrames.length-1;e>=0;e--){let t=y.scriptFrames[e];if(t.taskId)return t.startFrame+t.durationInFrames-1}return Math.max(0,y.totalDurationInFrames-1)},[y]),I=(0,s.useCallback)(()=>{var e;k.playing?k.pause():(e=k.currentFrame,S>0&&e>=S&&k.seekTo(0),k.play())},[S,k.currentFrame,k.pause,k.play,k.playing,k.seekTo]);(0,s.useEffect)(()=>{!y||k.playing||!(k.currentFrame<y.totalDurationInFrames-1)&&S>0&&k.seekTo(S)},[S,y,k.currentFrame,k.playing,k.seekTo]),(0,s.useEffect)(()=>{if(!y||!(null==e?void 0:e.onTaskChange))return;if(!k.playing){null!==w.current&&(w.current=null,e.onTaskChange(null));return}let t=function(e,t){let r=null;for(let i of e){var n,o;if(0===i.durationInFrames){i.startFrame<=t&&(r=null!=(n=i.taskId)?n:r);continue}if(t<i.startFrame)break;r=null!=(o=i.taskId)?o:r}return r}(y.scriptFrames,k.currentFrame);t!==w.current&&(w.current=t,e.onTaskChange(t))},[y,null==e?void 0:e.onTaskChange,k.currentFrame,k.playing]);let O=(0,s.useMemo)(()=>{var e;let t;return y?(e=k.currentFrame,(t=po(y.scriptFrames,e,y.imageWidth,y.imageHeight,y.fps)).img?t:null):null},[y,k.currentFrame]),R=(0,s.useCallback)(()=>pg(function*(){if((null==e?void 0:e.reportFormat)==="html-and-external-assets"&&e.reportUrl)return void globalThis.open(e.reportUrl,"_blank","noopener,noreferrer");try{var t,r;let n=null==e?void 0:e.reportFileContent;if(!n&&(null==e?void 0:e.reportUrl)){let t=yield fetch(e.reportUrl);if(!t.ok)throw Error(`Report request failed (${t.status})`);n=yield t.text()}if(!n)return;yield(t={content:n,onDownloadReport:null==e?void 0:e.onDownloadReport},(r=function*(){let{content:e,defaultFileName:r="midscene_report.html",onDownloadReport:n,documentRef:o,urlRef:i,blobFactory:a,scheduleRevoke:s}=t;if(n)return void(yield n({content:e,defaultFileName:r}));let l=null!=o?o:globalThis.document;if(!l)throw Error("Report download requires a document context.");let c=null!=i?i:globalThis.URL;if(!(null==c?void 0:c.createObjectURL)||!(null==c?void 0:c.revokeObjectURL))throw Error("Report download requires URL.createObjectURL support.");let A=(null!=a?a:(e,t)=>new Blob(e,t))([e],{type:"text/html"}),u=c.createObjectURL(A),d=l.createElement("a");d.href=u,d.download=r,d.style.display="none",l.body.appendChild(d);try{d.click()}finally{l.body.removeChild(d),(null!=s?s:e=>setTimeout(e,0))(()=>{c.revokeObjectURL(u)})}},function(){var e=this,t=arguments;return new Promise(function(n,o){var i=r.apply(e,t);function a(e){d6(i,n,o,a,s,"next",e)}function s(e){d6(i,n,o,a,s,"throw",e)}a(void 0)})})())}catch(e){uv(e,{title:"Failed to download report"})}})(),[null==e?void 0:e.onDownloadReport,null==e?void 0:e.reportFileContent,null==e?void 0:e.reportFormat,null==e?void 0:e.reportUrl]),j=(0,s.useMemo)(()=>O&&(O.title||O.subTitle)?{title:O.title,subTitle:O.subTitle}:null,[O]),[P,M]=(0,s.useState)(!1),[T,N]=(0,s.useState)(0),D=(0,s.useRef)(!1),[z,B]=(0,s.useState)(!0),F=(0,s.useRef)(null),L=(0,s.useCallback)(()=>{B(!0),F.current&&clearTimeout(F.current),P||(F.current=setTimeout(()=>B(!1),3e3))},[P]),U=(0,s.useCallback)(()=>{B(!0),F.current&&clearTimeout(F.current)},[]),K=(0,s.useCallback)(()=>{F.current&&clearTimeout(F.current),P||(F.current=setTimeout(()=>B(!1),1e3))},[P]);(0,s.useEffect)(()=>{P&&(B(!0),F.current&&(clearTimeout(F.current),F.current=null))},[P]),(0,s.useEffect)(()=>{let e=e=>{var t;let r=null==(t=e.target)?void 0:t.tagName;"INPUT"!==r&&"TEXTAREA"!==r&&"SELECT"!==r&&"Space"===e.code&&(e.preventDefault(),I())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[I]);let Z=(0,s.useRef)(null),J=(0,s.useCallback)(e=>{if(!y||!Z.current)return;let t=Z.current;t.setPointerCapture(e.pointerId);let r=e=>{let r=t.getBoundingClientRect(),n=Math.max(0,Math.min(1,(e-r.left)/r.width));k.seekTo(Math.round(n*S))};r(e.clientX);let n=e=>r(e.clientX),o=()=>{t.removeEventListener("pointermove",n),t.removeEventListener("pointerup",o)};t.addEventListener("pointermove",n),t.addEventListener("pointerup",o)},[y,k,S]),[Q,X]=(0,s.useState)(!1),W=(0,s.useCallback)(()=>{let e=v.current;e&&(document.fullscreenElement?document.exitFullscreen().then(()=>X(!1)):e.requestFullscreen().then(()=>X(!0)))},[]);(0,s.useEffect)(()=>{let e=()=>X(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[]);let H=(0,s.useCallback)(()=>pg(function*(){if(y&&!D.current){D.current=!0,M(!0),N(0);try{var e,t;yield(e={autoZoom:A},t=e=>N(Math.round(100*e)),pd(function*(){if(pp)throw Error("Video export is already in progress");pp=!0;try{var r,n,o;yield(r=y,n=e,o=t,pd(function*(){var e;let{totalDurationInFrames:t,fps:i}=r,a=null==(e=null==n?void 0:n.autoZoom)||e,s=new Set;for(let e of r.scriptFrames)e.img&&s.add(e.img);let l=new Map;yield Promise.all([...s].map(e=>pd(function*(){try{l.set(e,(yield ph(e)))}catch(e){}})()));let c=new Set([uG]);for(let e of r.scriptFrames)e.pointerImg&&c.add(e.pointerImg);let A=new Map;yield Promise.all([...c].map(e=>pd(function*(){try{A.set(e,(yield ph(e)))}catch(e){}})()));let u=null;try{u=yield ph(uV)}catch(e){}let d=document.createElement("canvas");d.width=960,d.height=540;let p=d.getContext("2d"),h=d.captureStream(i),m=new MediaRecorder(h,{mimeType:"video/webm"}),f=[];return m.ondataavailable=e=>{e.data.size>0&&f.push(e.data)},new Promise((e,n)=>{let s=null,c=!1,d=0,g=performance.now(),y=g,v=null,b=null,w=1e3/i,E=()=>{v&&clearTimeout(v),b&&clearTimeout(b),document.removeEventListener("visibilitychange",k),h.getTracks().forEach(e=>e.stop())},x=e=>{c||s||(s=e,"inactive"!==m.state?m.stop():(E(),c=!0,n(e)))},k=()=>{document.hidden&&x(Error("Video export was interrupted because the report tab was hidden"))};m.onerror=()=>{x(Error("MediaRecorder error"))},m.onstop=()=>{if(E(),c)return;if(c=!0,s)return void n(s);if(0===f.length)return void n(Error("No video data"));let t=new Blob(f,{type:"video/webm"}),r=URL.createObjectURL(t),o=document.createElement("a");o.href=r,o.download="midscene_replay.webm",o.click(),setTimeout(()=>URL.revokeObjectURL(r),1e3),e()},document.addEventListener("visibilitychange",k),m.start();let S=e=>{if(!c&&"inactive"!==m.state){if(d>0&&e-y>Math.max(2e3,10*w))return void x(Error("Video export was interrupted because rendering stalled"));y=e,p.clearRect(0,0,960,540),function(e,t,r,n,o,i,a){var s,l,c,A,u,d,p,h,m,f,g,y,v,b,w,E,x;let k,{scriptFrames:S,imageWidth:I,imageHeight:C,fps:O}=r,R=po(S,t,I,C,O);if(!R.img)return;let{img:j,prevImg:P,imageWidth:M,imageHeight:T,camera:N,prevCamera:D,pointerMoved:z,imageChanged:B,rawProgress:F,frameInScript:L,spinning:U,spinningElapsedMs:K,currentPointerImg:Z,pointerVisible:J,insights:Q}=R,q=a?z?Math.min(F/.375,1):F:1,{camLeft:X,camTop:W,camWidth:H}=(h=D,m=N,f=M,g=z?F<=.375?0:Math.min((F-.375)/.625,1):F,a?{camLeft:(y=h.left,v=m.left,y+(v-y)*g),camTop:(b=h.top,w=m.top,b+(w-b)*g),camWidth:(E=h.width,x=m.width,E+(x-E)*g)}:{camLeft:0,camTop:0,camWidth:f}),Y=(l=D.pointerLeft,c=N.pointerLeft,l+(c-l)*q),G=(A=D.pointerTop,u=N.pointerTop,A+(u-A)*q),V=M/H,{offsetX:$,offsetY:_,contentWidth:ee,contentHeight:et}=pi(960,540,M,T),er=-(ee/M*X),en=-(et/T*W),eo=B?Math.min(Math.max(L/10,0),1):1;e.fillStyle="#000",e.fillRect(0,0,960,540);let ei=(t,r)=>{let o=n.get(t);o&&!(r<=0)&&(e.save(),e.globalAlpha=r,e.beginPath(),e.rect(0,0,960,540),e.clip(),e.translate($+er*V,_+en*V),e.scale(V,V),e.drawImage(o,0,0,ee,et),e.restore())};B&&P&&eo<1&&ei(P,1-eo),ei(j,B?eo:1),Q.length>0&&function(e,t,r,n){for(let o of(e.save(),e.beginPath(),e.rect(n.offsetX,n.offsetY,n.contentWidth,n.contentHeight),e.clip(),t))if(!(o.alpha<=0)){if(e.save(),e.globalAlpha*=o.alpha,o.highlightElement){let t=pm(u_(o.highlightElement),r,n);e.fillStyle="rgba(253, 89, 7, 0.4)",e.fillRect(t.left,t.top,t.width,t.height),e.strokeStyle="#fd5907",e.lineWidth=1,e.strokeRect(t.left,t.top,t.width,t.height),e.shadowColor="rgba(51, 51, 51, 0.4)",e.shadowBlur=2,e.shadowOffsetX=4,e.shadowOffsetY=4,e.strokeRect(t.left,t.top,t.width,t.height),e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0}if(o.searchArea){let t=pm(o.searchArea,r,n);e.fillStyle="rgba(2, 131, 145, 0.4)",e.fillRect(t.left,t.top,t.width,t.height),e.strokeStyle="#028391",e.lineWidth=1,e.strokeRect(t.left,t.top,t.width,t.height)}e.restore()}e.restore()}(e,Q,{zoom:V,tx:er,ty:en},{offsetX:$,offsetY:_,contentWidth:ee,contentHeight:et,imageWidth:M,imageHeight:T});let ea=T/M*H,es=$+(Y-X)/H*ee,el=_+(G-W)/ea*et,ec=(pa(ee,"contentWidth"),ps(pl(M).scale*(ee/M))),eA=pc(ec),eu=null!=(s=o.get(Z))?s:o.get(uG),ed=pn(J,N,D,M,T);U&&i&&(d=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},ec),p=p={width:eA.size,height:eA.size,centerOffsetX:eA.centerOffset,centerOffsetY:eA.centerOffset},Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(p)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(p)).forEach(function(e){Object.defineProperty(d,e,Object.getOwnPropertyDescriptor(p,e))}),k=(Math.sin(K/500-Math.PI/2)+1)/2*Math.PI*2,e.save(),e.translate(es,el),e.rotate(k),e.drawImage(i,-d.centerOffsetX,-d.centerOffsetY,d.width,d.height),e.restore()),!U&&ed&&eu&&e.drawImage(eu,es-ec.hotspotX,el-ec.hotspotY,ec.width,ec.height)}(p,d,r,l,A,u,a),null==o||o((d+1)/t),(d+=1)<t?(g+=w,b=setTimeout(()=>{requestAnimationFrame(S)},Math.max(0,g-performance.now()))):v=setTimeout(()=>{"inactive"!==m.state&&m.stop()},2*w)}};requestAnimationFrame(e=>{y=e,g=e,S(e)})})})())}finally{pp=!1}})()),c.success("Video exported")}catch(e){console.error("Export failed:",e),uv(e,{title:"Video export failed"})}finally{D.current=!1,M(!1),N(0)}}})(),[A,y]),Y=(0,s.useMemo)(()=>{if(!y||S<=0)return[];let e=[];for(let t of y.scriptFrames){if("img"!==t.type&&"insight"!==t.type||0===t.durationInFrames)continue;let r=t.startFrame,n=r/S*100;if(n>1&&n<99){let o=[t.title,t.subTitle].filter(Boolean);e.push({percent:n,title:o.length>0?o.join(": "):`Chapter ${e.length+1}`,frame:r})}}return e},[y,S]),G=!!((null!=(o=null==e?void 0:e.reportFileContent)?o:null)||(null==e?void 0:e.reportUrl)),V=(null==e?void 0:e.reportFormat)==="html-and-external-assets"?"Open report":"Download report",$=(null==e?void 0:e.canDownloadReport)!==!1,_=null!=(i=null==e?void 0:e.presentation)?i:"default";if(!g||0===g.length||!y)return G&&$?(0,a.jsx)("div",{className:"player-container player-container-empty","data-presentation":_,children:(0,a.jsxs)("div",{className:"player-empty-state",children:[(0,a.jsx)("span",{className:"player-empty-text",children:"No replay available"}),(0,a.jsx)(q.Ay,{icon:(0,a.jsx)(dY.A,{}),onClick:()=>{R()},children:V})]})}):null;let ee=(null==O?void 0:O.imageWidth)||y.imageWidth,et=(null==O?void 0:O.imageHeight)||y.imageHeight,er=et>ee,en=S>0?Math.min(100,k.currentFrame/S*100):0;return(0,a.jsx)("div",{className:"player-container","data-fit-mode":null==e?void 0:e.fitMode,"data-presentation":_,children:(0,a.jsxs)("div",{className:"canvas-container",ref:v,onMouseMove:L,onMouseEnter:U,onMouseLeave:K,children:[(0,a.jsx)("div",{className:"player-wrapper","data-portrait":er?"":void 0,style:{aspectRatio:`${ee}/${et}`},children:(0,a.jsx)("div",{ref:b,style:{display:"flex",justifyContent:"center",alignItems:"center",width:"100%",height:"100%",overflow:"hidden"},onClick:I,children:(l=E.width>0&&E.height>0?Math.min(E.width/ee,E.height/et):1,(0,a.jsx)("div",{style:{width:ee*l,height:et*l,flexShrink:0,position:"relative",overflow:"hidden"},children:(0,a.jsx)("div",{style:{width:ee,height:et,transformOrigin:"0 0",transform:`scale(${l})`},children:(0,a.jsx)(pA,{frameMap:y,autoZoom:A&&k.playing,frame:k.currentFrame,width:ee,height:et,fps:y.fps})})}))})}),m&&j&&(0,a.jsxs)("div",{className:"player-subtitle",children:[j.title&&(0,a.jsx)("span",{className:"player-subtitle-badge",children:j.title}),j.subTitle&&(0,a.jsx)("span",{className:"player-subtitle-text",children:j.subTitle})]}),!(null==e?void 0:e.hideControls)&&(0,a.jsxs)("div",{className:`control-bar ${z?"":"hidden"}`,onClick:e=>e.stopPropagation(),children:[(0,a.jsx)("div",{className:"status-icon",onClick:I,children:k.playing?(0,a.jsx)(dG.A,{}):(0,a.jsx)(dV.A,{})}),(0,a.jsxs)("span",{className:"time-display",children:[py(Math.min(k.currentFrame,S),y.fps)," ","/ ",py(S+1,y.fps)]}),(0,a.jsxs)("div",{className:"seek-bar-track",ref:Z,onPointerDown:J,children:[(0,a.jsx)("div",{className:"seek-bar-fill",style:{width:`${en}%`}}),(0,a.jsx)("div",{className:"seek-bar-knob",style:{left:`${en}%`}}),Y.map(e=>(0,a.jsx)(h.A,{title:e.title,overlayClassName:"chapter-tooltip",children:(0,a.jsx)("div",{className:"chapter-marker",style:{left:`${e.percent}%`},onClick:t=>{t.stopPropagation(),k.seekTo(e.frame)}})},e.percent))]}),(0,a.jsxs)("div",{className:"player-custom-controls",children:[G&&$?(0,a.jsx)(h.A,{title:V,children:(0,a.jsx)("div",{className:"status-icon",onClick:()=>{R()},children:(0,a.jsx)(dY.A,{})})}):null,(0,a.jsx)(d3.A,{trigger:["hover","click"],placement:"topRight",overlayStyle:{minWidth:"148px"},dropdownRender:()=>(0,a.jsxs)("div",{className:"player-settings-dropdown",children:[(0,a.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",gap:"4px",height:"32px",padding:"0 8px",borderRadius:"4px",cursor:P?"not-allowed":"pointer",opacity:P?.5:1},onClick:P?void 0:H,children:[(0,a.jsx)("span",{style:{width:16,height:16,display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:P?(0,a.jsx)(d5.A,{type:"circle",percent:T,size:16,strokeWidth:14,showInfo:!1,strokeColor:"#1677ff",trailColor:"rgba(0, 0, 0, 0.12)"}):(0,a.jsx)(d$.A,{style:{width:"16px",height:"16px"}})}),(0,a.jsx)("span",{className:"player-export-label",children:P?`Exporting ${T}%`:"Export video"})]}),(0,a.jsx)("div",{className:"player-settings-divider"}),(0,a.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 8px",borderRadius:"4px"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[(0,a.jsx)(d7,{style:{width:"16px",height:"16px"}}),(0,a.jsx)("span",{style:{fontSize:"14px",marginRight:"16px"},children:"Focus on cursor"})]}),(0,a.jsx)(d4.A,{size:"small",checked:A,onChange:e=>u(e)})]}),(0,a.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 8px",borderRadius:"4px"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[(0,a.jsx)(d_.A,{style:{width:"16px",height:"16px"}}),(0,a.jsx)("span",{style:{fontSize:"14px",marginRight:"16px"},children:"Subtitle"})]}),(0,a.jsx)(d4.A,{size:"small",checked:m,onChange:e=>f(e)})]}),(0,a.jsx)("div",{className:"player-settings-divider"}),(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px",height:"32px",padding:"0 8px"},children:[(0,a.jsx)(d0.A,{style:{width:"16px",height:"16px"}}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"Playback speed"})]}),[.5,1,1.5,2].map(e=>(0,a.jsxs)("div",{onClick:()=>p(e),style:{height:"32px",lineHeight:"32px",padding:"0 8px 0 28px",fontSize:"14px",cursor:"pointer",borderRadius:"4px"},className:`player-speed-option${d===e?" active":""}`,children:[e,"x"]},e))]}),menu:{items:[]},children:(0,a.jsx)("div",{className:"status-icon",children:(0,a.jsx)(d8,{style:{width:"16px",height:"16px"}})})}),!(null==e?void 0:e.hideFullscreenControl)&&(0,a.jsx)("div",{className:"status-icon",onClick:W,children:Q?(0,a.jsx)(d1.A,{}):(0,a.jsx)(d2.A,{})})]})]})]})})}let pb=e=>{let{result:t,loading:r,serverValid:n,serviceMode:o,replayScriptsInfo:i,replayCounter:s,loadingProgressText:l,verticalMode:c=!1,notReadyMessage:A,fitMode:u,autoZoom:d,showOutputAlongsideReport:p=!1,canDownloadReport:h,onDownloadReport:m,playerPresentation:f,hidePlayerFullscreenControl:g}=e,y="result-wrapper";c&&(y+=" vertical-mode-result"),i&&c&&(y+=" result-wrapper-compact");let v=dQ;if(n||"Server"!==o){var b,w,E,x,k,S,I,C,O,R;if(r)v=(0,a.jsxs)("div",{className:"loading-container",children:[(0,a.jsx)(ef.A,{spinning:r,indicator:(0,a.jsx)(uK.A,{spin:!0})}),(0,a.jsx)("div",{className:"loading-progress-text loading-progress-text-progress",children:(0,a.jsx)(dK,{text:l,speed:3})})]});else if(null==t?void 0:t.error){let e=(0,a.jsx)("pre",{style:{color:"#ff4d4f",whiteSpace:"pre-wrap"},children:null==t?void 0:t.error});v=t.reportHTML||t.report||i?(0,a.jsxs)("div",{className:"combined-result-layout",children:[(0,a.jsxs)("div",{style:{flex:"0 0 auto",maxHeight:"40%",overflow:"auto"},children:[(0,a.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Error:"}),e]}),(0,a.jsxs)("div",{className:"combined-result-section",children:[(0,a.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,a.jsx)("div",{className:"combined-result-player",children:(0,a.jsx)(pv,{replayScripts:null==i?void 0:i.scripts,imageWidth:null==i?void 0:i.width,imageHeight:null==i?void 0:i.height,reportFileContent:t.reportHTML||null,reportUrl:null==(b=t.report)?void 0:b.url,reportFormat:null==(w=t.report)?void 0:w.format,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==o,onDownloadReport:m,presentation:f,hideFullscreenControl:g},s)})]})]}):e}else if(p&&(null==t?void 0:t.result)!==void 0&&i){let e="string"==typeof(null==t?void 0:t.result)?(0,a.jsx)("pre",{children:null==t?void 0:t.result}):(0,a.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)}),r=(null==t?void 0:t.reportHTML)||null;v=(0,a.jsxs)("div",{className:"combined-result-layout",children:[(0,a.jsxs)("div",{style:{flex:"0 0 auto"},children:[(0,a.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Output:"}),e]}),(0,a.jsxs)("div",{className:"combined-result-section",children:[(0,a.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,a.jsx)("div",{className:"combined-result-player",children:(0,a.jsx)(pv,{replayScripts:i.scripts,imageWidth:i.width,imageHeight:i.height,reportFileContent:r,reportUrl:null==(E=t.report)?void 0:E.url,reportFormat:null==(x=t.report)?void 0:x.format,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==o,onDownloadReport:m,presentation:f,hideFullscreenControl:g},s)})]})]})}else if(i){let e=(null==t?void 0:t.reportHTML)||null;v=(0,a.jsx)(pv,{replayScripts:i.scripts,imageWidth:i.width,imageHeight:i.height,reportFileContent:e,reportUrl:null==t||null==(k=t.report)?void 0:k.url,reportFormat:null==t||null==(S=t.report)?void 0:S.format,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==o,onDownloadReport:m,presentation:f,hideFullscreenControl:g},s)}else if(p&&(null==t?void 0:t.result)!==void 0&&((null==t?void 0:t.reportHTML)||(null==t?void 0:t.report))){let e="string"==typeof(null==t?void 0:t.result)?(0,a.jsx)("pre",{children:null==t?void 0:t.result}):(0,a.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)});v=(0,a.jsxs)("div",{className:"combined-result-layout",children:[(0,a.jsxs)("div",{style:{flex:"0 0 auto"},children:[(0,a.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Output:"}),e]}),(0,a.jsxs)("div",{className:"combined-result-section",children:[(0,a.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,a.jsx)("div",{className:"combined-result-player",children:(0,a.jsx)(pv,{reportFileContent:t.reportHTML||null,reportUrl:null==(I=t.report)?void 0:I.url,reportFormat:null==(C=t.report)?void 0:C.format,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==o,onDownloadReport:m,presentation:f,hideFullscreenControl:g},s)})]})]})}else p&&(null==t?void 0:t.result)!==void 0?v="string"==typeof(null==t?void 0:t.result)?(0,a.jsx)("pre",{children:null==t?void 0:t.result}):(0,a.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)}):(null==t?void 0:t.reportHTML)||(null==t?void 0:t.report)?v=(0,a.jsx)(pv,{reportFileContent:t.reportHTML||null,reportUrl:null==(O=t.report)?void 0:O.url,reportFormat:null==(R=t.report)?void 0:R.format,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==o,onDownloadReport:m,presentation:f,hideFullscreenControl:g},s):(null==t?void 0:t.result)!==void 0&&(v="string"==typeof(null==t?void 0:t.result)?(0,a.jsx)("pre",{children:null==t?void 0:t.result}):(0,a.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)}))}else v=dJ(A);return(0,a.jsx)("div",{className:y,style:{height:"100%",display:"flex",flexDirection:"column",flex:"1 1 auto",justifyContent:"center"},children:v})},pw=e=>{var t,r;return(0,a.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:20,height:20,fill:"none","aria-label":"Playground",viewBox:"0 0 20 20"},e),r=r={children:[(0,a.jsx)("rect",{width:20,height:20,fill:"#2B83FF",rx:10}),(0,a.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(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};function pE(){return(0,s.createElement)("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":!0,focusable:!1},(0,s.createElement)("path",{d:"M3 7.99984L6.33333 11.3332L13 4.6665",stroke:"#188F4D",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"}))}function px(){return(0,s.createElement)("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":!0,focusable:!1},(0,s.createElement)("path",{d:"M5 5L11 11M11 5L5 11",stroke:"#FF4D4F",strokeWidth:"1.2",strokeLinecap:"round"}))}let pk="ZodOptional",pS="ZodDefault",pI="ZodNullable",pC="ZodObject",pO=e=>"object"==typeof e&&null!==e&&("shape"in e||"ZodObject"===e.type),pR=e=>{var t,r,n;let o=e=>!!(null==e?void 0:e.prompt);if((null==(t=e._def)?void 0:t.typeName)===pC){let t;if(e._def.shape&&(t="function"==typeof e._def.shape?e._def.shape():e._def.shape),!t&&e.shape&&(t=e.shape),t&&"prompt"in t&&t.prompt||o(t))return!0;let n=(null==(r=e._def)?void 0:r.description)||e.description||"";if("string"==typeof n&&n.toLowerCase().includes("input field"))return!0}if("object"==typeof e&&null!==e){let t=e.description||(null==(n=e._def)?void 0:n.description)||"";if("string"==typeof t){let e=t.toLowerCase();if(e.includes("input field")||e.includes("element")||e.includes("locate"))return!0}if("ZodObject"===e.typeName||"ZodObject"===e.type)return!!o(e.shape)||"string"==typeof t&&t.toLowerCase().includes("input field")}return!1},pj=e=>{var t,r,n,o,i;let a=e,s=!1,l=!1;for(;(null==(t=a._def)?void 0:t.typeName)===pk||(null==(r=a._def)?void 0:r.typeName)===pS||(null==(n=a._def)?void 0:n.typeName)===pI;)(null==(o=a._def)?void 0:o.typeName)===pk&&(s=!0),(null==(i=a._def)?void 0:i.typeName)===pS&&(l=!0),a=a._def.innerType||a;return{actualField:a,isOptional:s,hasDefault:l}},pP=(e,t)=>null==e?void 0:e.find(e=>e.interfaceAlias===t||e.name===t),pM=(e,t)=>{var r,n;if(!(null==e?void 0:e.length)||!t)return null;let o=pP(e,t);if(!(null==o?void 0:o.paramSchema)||!pO(o.paramSchema))return null;let i=o.paramSchema.shape||{},a=Object.keys(i);if(1!==a.length)return null;let[s]=a,{actualField:l}=pj(i[s]),c=pR(l);if(!("ZodString"===(null==(r=l._def)?void 0:r.typeName)||c))return null;let A=(null==(n=l._def)?void 0:n.description)||l.description||(c?"Describe the element you want to interact with":`Enter ${s}`);return{name:s,placeholder:A}};var pT=r(28460),pN=r(3246),pD=r(91631),pz=r(64665);let pB=e=>{var t,r;return(0,a.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:6,height:10,fill:"none",viewBox:"0 0 6 10"},e),r=r={children:(0,a.jsx)("path",{fill:"#000",fillOpacity:.25,fillRule:"evenodd",d:"M.195 9.138a.667.667 0 0 1 0-.943l3.529-3.528L.195 1.138a.667.667 0 0 1 .943-.943l4 4c.26.26.26.683 0 .943l-4 4a.667.667 0 0 1-.943 0",clipRule:"evenodd"})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},pF=e=>{var t,r;return(0,a.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:[(0,a.jsx)("path",{stroke:"#878787",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.33,d:"M1.505 4.164c-2.862 6.126 2.197 10.501 6.063 10.501a7 7 0 1 0-6.063-10.5"}),(0,a.jsx)("path",{stroke:"#878787",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.33,d:"M7.57 3.465v4.203l2.967 2.968"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};var pL={};pL.d=(e,t)=>{for(var r in t)pL.o(t,r)&&!pL.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},pL.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),pL.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var pU={};function pK(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}pL.r(pU),pL.d(pU,{create:()=>m.vt});let{create:pZ}=pU,pJ="midscene-prompt-history-v2",pQ="midscene-last-selected-type",pq=pZ((e,t)=>{let r;return{history:(r=localStorage.getItem(pJ))?JSON.parse(r):{},lastSelectedType:localStorage.getItem(pQ)||"aiAct",clearHistory:r=>{let n=pK({},t().history);delete n[r],e({history:n}),localStorage.setItem(pJ,JSON.stringify(n))},addHistory:r=>{var n,o;let{type:i}=r,a=t().history,s=a[i]||[],l=JSON.stringify({prompt:r.prompt,params:r.params}),c=[r,...s.filter(e=>JSON.stringify({prompt:e.prompt,params:e.params})!==l)];c.length>10&&(c.length=10);let A=(n=pK({},a),o=o={[i]:c},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(o)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(o,e))}),n);e({history:A}),localStorage.setItem(pJ,JSON.stringify(A))},getHistoryForType:e=>t().history[e]||[],setLastSelectedType:t=>{e({lastSelectedType:t}),localStorage.setItem(pQ,t)}}}),pX=e=>{if(!e)return"";if("aiAct"===e)return"Action";let t=e.startsWith("ai")?e.slice(2):e;if(t.startsWith("IOS"))return t.substring(3).replace(/([A-Z])/g," $1").replace(/^/,"IOS").trim();let r=t.replace(/([A-Z])/g," $1").trim(),n=r.split(" ");return(n.length>3?n.slice(-3).join(" "):r).replace(/\b\w/g,e=>e.toUpperCase())};function pW(e){return{supportsImeStrategy:"android"===e,supportsScreenshotStrategy:"android"===e,supportsKeyboardDismissStrategy:"android"===e||"harmony"===e,supportsAutoDismissKeyboard:"android"===e||"ios"===e||"harmony"===e,supportsAlwaysRefreshScreenInfo:"android"===e}}function pH(e){return Object.values(pW(e)).some(Boolean)}var pY=r(16356);let pG=e=>{var t,r;return(0,a.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:27,height:27,fill:"none",viewBox:"0 0 27 27"},e),r=r={children:(0,a.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(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},pV=e=>{let t,{showDeepLocateOption:r=!1,showDeepThinkOption:n=!1,enableTracking:o=!1,showDataExtractionOptions:i=!1,hideDomAndScreenshotOptions:s=!1,deviceType:l,trigger:c,popupPlacement:A="bottomRight"}=e,u=Z(e=>e.forceSameTabNavigation),d=Z(e=>e.setForceSameTabNavigation),p=Z(e=>e.deepLocate),m=Z(e=>e.setDeepLocate),f=Z(e=>e.deepThink),g=Z(e=>e.setDeepThink),y=Z(e=>e.screenshotIncluded),v=Z(e=>e.setScreenshotIncluded),b=Z(e=>e.domIncluded),w=Z(e=>e.setDomIncluded),E=Z(e=>e.imeStrategy),x=Z(e=>e.setImeStrategy),k=Z(e=>e.screenshotStrategy),S=Z(e=>e.setScreenshotStrategy),I=Z(e=>e.autoDismissKeyboard),C=Z(e=>e.setAutoDismissKeyboard),O=Z(e=>e.keyboardDismissStrategy),R=Z(e=>e.setKeyboardDismissStrategy),j=Z(e=>e.alwaysRefreshScreenInfo),P=Z(e=>e.setAlwaysRefreshScreenInfo),M=pW(l),T=pH(l);if(!o&&!r&&!n&&!i&&!T)return null;let N=(t=[],o&&t.push({label:(0,a.jsx)(pY.A,{onChange:e=>d(e.target.checked),checked:u,children:"Limit popup to current tab"}),key:"track-config"}),r&&t.push({label:(0,a.jsx)(pY.A,{onChange:e=>{m(e.target.checked)},checked:p,children:"Deep Locate"}),key:"deep-locate-config"}),n&&t.push({label:(0,a.jsxs)("div",{style:{padding:"4px 0"},children:[(0,a.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Deep Think"}),(0,a.jsxs)(pz.A.Group,{size:"small",value:f,onChange:e=>g(e.target.value),children:[(0,a.jsx)(h.A,{title:"Controlled by MIDSCENE_MODEL_REASONING_ENABLED env variable",children:(0,a.jsx)(pz.A,{value:"unset",children:"Auto"})}),(0,a.jsx)(pz.A,{value:!0,children:"On"}),(0,a.jsx)(pz.A,{value:!1,children:"Off"})]})]}),key:"deep-think-config"}),i&&!s&&(t.push({label:(0,a.jsx)(pY.A,{onChange:e=>{v(e.target.checked)},checked:y,children:"Include screenshot in request"}),key:"screenshot-included-config"}),t.push({label:(0,a.jsxs)("div",{style:{padding:"4px 0"},children:[(0,a.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Include DOM info in request"}),(0,a.jsxs)(pz.A.Group,{size:"small",value:b,onChange:e=>w(e.target.value),children:[(0,a.jsx)(pz.A,{value:!1,children:"Off"}),(0,a.jsx)(pz.A,{value:!0,children:"All"}),(0,a.jsx)(pz.A,{value:"visible-only",children:"Visible only"})]})]}),key:"dom-included-config"})),M.supportsImeStrategy&&(t.push({label:(0,a.jsxs)("div",{style:{padding:"4px 0"},children:[(0,a.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"IME strategy"}),(0,a.jsxs)(pz.A.Group,{size:"small",value:E,onChange:e=>x(e.target.value),children:[(0,a.jsx)(pz.A,{value:"always-yadb",children:"Always YADB"}),(0,a.jsx)(pz.A,{value:"yadb-for-non-ascii",children:"YADB for non-ASCII"})]})]}),key:"ime-strategy-config"}),M.supportsScreenshotStrategy&&t.push({label:(0,a.jsxs)("div",{style:{padding:"4px 0"},children:[(0,a.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Screenshot strategy"}),(0,a.jsxs)(pz.A.Group,{size:"small",value:k,onChange:e=>S(e.target.value),children:[(0,a.jsx)(pz.A,{value:"auto",children:"Auto"}),(0,a.jsx)(pz.A,{value:"always-yadb",children:"Always YADB"})]})]}),key:"screenshot-strategy-config"}),M.supportsAutoDismissKeyboard&&t.push({label:(0,a.jsx)(pY.A,{onChange:e=>C(e.target.checked),checked:I,children:uq}),key:"auto-dismiss-keyboard-config"}),M.supportsKeyboardDismissStrategy&&t.push({label:(0,a.jsxs)("div",{style:{padding:"4px 0"},children:[(0,a.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Keyboard dismiss strategy"}),(0,a.jsxs)(pz.A.Group,{size:"small",value:O,onChange:e=>R(e.target.value),children:[(0,a.jsx)(pz.A,{value:"esc-first",children:"ESC first"}),(0,a.jsx)(pz.A,{value:"back-first",children:"Back first"})]})]}),key:"keyboard-dismiss-strategy-config"}),M.supportsAlwaysRefreshScreenInfo&&t.push({label:(0,a.jsx)(pY.A,{onChange:e=>P(e.target.checked),checked:j,children:"Always refresh screen info"}),key:"always-refresh-screen-info-config"})),!M.supportsImeStrategy&&M.supportsAutoDismissKeyboard&&t.push({label:(0,a.jsx)(pY.A,{onChange:e=>C(e.target.checked),checked:I,children:uq}),key:"auto-dismiss-keyboard-config"}),t),D=null!=c?c:(0,a.jsx)("button",{"aria-label":"Open run configuration",className:"selector-trigger-button",type:"button",children:(0,a.jsx)(pG,{width:24,height:24})});return(0,a.jsx)("div",{className:"selector-trigger",children:(0,a.jsx)(d3.A,{getPopupContainer:e=>e.ownerDocument.body,menu:{items:N},overlayClassName:"config-selector-dropdown",overlayStyle:{zIndex:10010},placement:A,trigger:["click"],children:D})})};var p$=r(82752);let{TextArea:p_}=J.A,p0=(e,t)=>`${e}${t?" (Optional)":""}`,p1=e=>{let{name:t,label:r,isRequired:n,marginBottom:o,placeholder:i}=e,s=i||`Enter ${t}`;return(0,a.jsx)(ub.A.Item,{name:["params",t],label:p0(r,!n),rules:n?[{required:!0,message:`Please input ${t}`}]:[],style:{marginBottom:o},colon:!1,children:(0,a.jsx)(J.A,{placeholder:s})},t)},p2=e=>{let{name:t,label:r,isRequired:n,marginBottom:o,placeholder:i}=e,s=i||`Describe the ${t}, use natural language`;return(0,a.jsx)(ub.A.Item,{name:["params",t],label:p0(r,!n),rules:n?[{required:!0,message:`The ${t} is required`}]:[],style:{marginBottom:o},colon:!1,children:(0,a.jsx)(p_,{rows:2,placeholder:s})},t)},p3=e=>{var t;let{name:r,label:n,fieldSchema:o,isRequired:i,marginBottom:s,placeholder:l}=e,c=((null==(t=o._def)?void 0:t.values)||[]).map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)}));return(0,a.jsx)(ub.A.Item,{name:["params",r],label:n,rules:i?[{required:!0,message:`Please select ${r}`}]:[],style:{marginBottom:s},colon:!1,children:(0,a.jsx)(X.A,{placeholder:l||`Select ${r}`,options:c})},r)},p5=e=>{let{name:t,label:r,isRequired:n,marginBottom:o,placeholder:i}=e,s=500*("distance"===t),l=i&&Number(i)||s,c="distance"===t?1e4:void 0;return(0,a.jsx)(ub.A.Item,{name:["params",t],label:`${r}${"distance"===t?" (px)":""}`,rules:n?[{required:!0,message:`Please input ${t}`},{type:"number",min:0,message:`${r} must be at least 0`}]:[{type:"number",min:0,message:`${r} must be at least 0`}],style:{flex:"distance"===t?1:void 0,marginBottom:o},colon:!1,children:(0,a.jsx)(p$.A,{placeholder:l.toString(),min:0,max:c,step:"distance"===t?10:1,style:{width:"100%"}})},t)},p4=e=>{let{name:t,label:r,isRequired:n,marginBottom:o,placeholder:i}=e;return(0,a.jsx)(ub.A.Item,{name:["params",t],label:p0(r,!n),rules:n?[{required:!0,message:`Please select ${t}`}]:[],style:{marginBottom:o},colon:!1,children:(0,a.jsx)(X.A,{placeholder:i||`Select ${t}`,options:[{value:!0,label:"True"},{value:!1,label:"False"}]})},t)};var p7=r(70316);let p8=e=>{var t,r;return(0,a.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:18,height:16,fill:"none",viewBox:"0 0 18 16"},e),r=r={children:(0,a.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(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},p6=e=>{var t,r;return(0,a.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:25,height:25,fill:"none",viewBox:"0 0 25 25"},e),r=r={children:[(0,a.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,a.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(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},p9=e=>{var t,r;return(0,a.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:19,height:19,fill:"none",viewBox:"0 0 19 19"},e),r=r={children:[(0,a.jsxs)("g",{stroke:"currentColor",strokeLinejoin:"round",strokeOpacity:.65,strokeWidth:1.5,clipPath:"url(#magnifying-glass_svg__a)",children:[(0,a.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,a.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,a.jsx)("defs",{children:(0,a.jsx)("clipPath",{id:"magnifying-glass_svg__a",children:(0,a.jsx)("path",{fill:"#fff",d:"M.522.04h18v18h-18z"})})})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},{Text:he}=d.A,ht=e=>{let{onSelect:t,history:r,currentType:n,trigger:o,popupPlacement:i="bottom",title:l="History",showClear:c=!0,onClear:A,searchPlaceholder:u="Search",emptyText:d="No history record",noMatchText:p="No matching history record",renderItemActions:h,renderItemLabel:m,overlayClassName:f,popupWidth:g=320,popupHeight:y=400,portalContainerSelector:v}=e,[b,w]=(0,s.useState)(!1),[E,x]=(0,s.useState)(""),[k,S]=(0,s.useState)(0),I=pq(e=>e.clearHistory),C=(0,s.useRef)(null),O=(0,s.useRef)(null),[R,j]=(0,s.useState)(null),[P,M]=(0,s.useState)(null),[T,N]=(0,s.useState)(!1),D=(0,s.useMemo)(()=>{let e=Date.now(),t=e-6048e5,n=e-31536e6,o=r.filter(e=>e.prompt.toLowerCase().includes(E.toLowerCase()));return{recent7Days:o.filter(e=>e.timestamp>=t),recent1Year:o.filter(e=>e.timestamp<t&&e.timestamp>=n),older:o.filter(e=>e.timestamp<n)}},[r,E]),z=()=>{w(!1)};(0,s.useEffect)(()=>{if(!b)return;let e=()=>{var e,t;if(!O.current)return;let r=O.current.getBoundingClientRect(),n=v?O.current.closest(v):null,o=null==n?void 0:n.getBoundingClientRect(),a=null!=(e=null==o?void 0:o.width)?e:window.innerWidth,s=null!=(t=null==o?void 0:o.height)?t:window.innerHeight,l=o?r.right-o.left:r.right,c=o?r.top-o.top:r.top,A=o?r.bottom-o.top:r.bottom,u=Math.max(16,a-g-16),d=Math.max(16,s-y-16);j({left:Math.min(Math.max(16,l-g),u),top:Math.min(Math.max(16,"top"===i?c-y-8:A+8),d)}),M(null!=n?n:document.body),N(!!n)},t=e=>{C.current&&!C.current.contains(e.target)&&O.current&&!O.current.contains(e.target)&&w(!1)};e();let r=setTimeout(()=>{document.addEventListener("click",t)},100);return window.addEventListener("resize",e),window.addEventListener("scroll",e,!0),()=>{clearTimeout(r),document.removeEventListener("click",t),window.removeEventListener("resize",e),window.removeEventListener("scroll",e,!0)}},[b,y,i,g,v]);let B=(e,r)=>0===r.length?null:(0,a.jsxs)("div",{className:"history-group",children:[(0,a.jsx)("div",{className:"history-group-title",children:e}),r.map((e,r)=>(0,a.jsxs)("div",{className:"history-item",onClick:()=>{t(e),w(!1)},children:[(0,a.jsx)("span",{className:"history-item-label",children:m?m(e,{close:z}):e.prompt}),h?(0,a.jsx)("span",{className:"history-item-actions",onClick:e=>e.stopPropagation(),children:h(e,{close:z,scrollVersion:k})}):null]},`${e.timestamp}-${r}`))]},e);return(0,a.jsxs)("div",{className:"history-selector-wrapper",children:[(0,a.jsx)("div",{className:"selector-trigger",onClick:()=>w(e=>!e),ref:O,children:null!=o?o:(0,a.jsx)(p6,{width:24,height:24})}),b&&R&&P&&(0,p7.createPortal)((0,a.jsx)("div",{className:f?`history-modal-overlay ${f}${T?" history-modal-overlay-in-container":""}`:`history-modal-overlay${T?" history-modal-overlay-in-container":""}`,ref:C,style:R,children:(0,a.jsxs)("div",{className:"history-modal-container",children:[(0,a.jsxs)("div",{className:"history-modal-header",children:[(0,a.jsxs)(he,{strong:!0,style:{fontSize:"16px"},children:[l," (",r.length,")"]}),(0,a.jsx)(q.Ay,{size:"small",type:"text",icon:(0,a.jsx)(p8,{width:16,height:16}),onClick:()=>w(!1),className:"close-button"})]}),(0,a.jsx)("div",{className:"history-search-section",children:(0,a.jsxs)("div",{className:"search-input-wrapper",children:[(0,a.jsx)(J.A,{placeholder:u,value:E,onChange:e=>x(e.target.value),prefix:(0,a.jsx)(p9,{width:18,height:18}),className:"search-input",allowClear:!0}),c?(0,a.jsx)(q.Ay,{type:"link",onClick:()=>{A?A():I(n),x(""),w(!1)},className:"clear-button",disabled:0===r.length,children:"Clear"}):null]})}),(0,a.jsx)("div",{className:"history-content",onScroll:()=>{S(e=>e+1)},children:0===r.length?(0,a.jsx)("div",{className:"no-results",children:(0,a.jsx)(he,{type:"secondary",children:d})}):(0,a.jsxs)(a.Fragment,{children:[B("Last 7 days",D.recent7Days),B("Last 1 year",D.recent1Year),B("Earlier",D.older),E&&0===D.recent7Days.length&&0===D.recent1Year.length&&0===D.older.length&&(0,a.jsx)("div",{className:"no-results",children:(0,a.jsx)(he,{type:"secondary",children:p})})]})})]})}),P)]})};function hr(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}let{TextArea:hn}=J.A;function ho(){return(0,a.jsx)("span",{"aria-hidden":"true",className:"prompt-stop-square-icon"})}let hi=e=>{var t,r,n,o,i,l,c,A;let{runButtonEnabled:u,form:d,serviceMode:p,selectedType:m,dryMode:f,stoppable:g,loading:y,onRun:v,onStop:b,clearPromptAfterRun:w=!0,actionSpace:E,hideDomAndScreenshotOptions:x=!1,deviceType:k,chrome:S}=e,[I,C]=(0,s.useState)(!1),[O,R]=(0,s.useState)(""),j="aiQuery"===m?"What do you want to query?":"aiAssert"===m?"What do you want to assert?":"aiTap"===m?"What element do you want to tap?":"aiDoubleClick"===m?"What element do you want to double-click?":"aiHover"===m?"What element do you want to hover over?":"aiInput"===m?"Format: <value> | <element>\nExample: hello world | search box":"aiRightClick"===m?"What element do you want to right-click?":"aiKeyboardPress"===m?"Format: <key> | <element (optional)>\nExample: Enter | text field":"aiScroll"===m?"Format: <direction> <amount> | <element (optional)>\nExample: down 500 | main content":"aiLocate"===m?"What element do you want to locate?":"aiBoolean"===m?"What do you want to check (returns true/false)?":"aiNumber"===m?"What number do you want to extract?":"aiString"===m?"What text do you want to extract?":"aiAsk"===m?"What do you want to ask?":"aiWaitFor"===m?"What condition do you want to wait for?":"What do you want to do?",P=(null==S?void 0:S.variant)==="minimal",M=(null==S?void 0:S.placeholder)||j,T=(A=null==S?void 0:S.primaryActionLabel)?A:pX(m)||"Action",N=null!=(i=null==S?void 0:S.settingsPlacement)?i:"toolbar",D=(0,s.useRef)(null),z=(0,s.useRef)(null),B=ub.A.useWatch("params",d),F=(0,s.useRef)(null),L=pq(e=>e.history),U=pq(e=>e.lastSelectedType),K=pq(e=>e.addHistory),Z=pq(e=>e.setLastSelectedType),Q=(0,s.useMemo)(()=>L[m]||[],[L,m]),X=(0,s.useMemo)(()=>pP(E,m),[E,m]),{markExplicitSelection:W,skipNextRestore:H,shouldSkipRestoreOnce:Y}=function(e){let{enabled:t,form:r,selectedType:n,onAfterReset:o,defaultType:i="aiAct"}=e,[a,l]=(0,s.useState)(!1),c=(0,s.useRef)(!1);(0,s.useEffect)(()=>{t&&!a&&n&&n!==i&&(c.current=!1,r.setFieldsValue({type:i,prompt:"",params:{}}),null==o||o())},[t,a,n,i,r,o]);let A=(0,s.useCallback)(()=>{t&&l(!0)},[t]),u=(0,s.useCallback)(()=>{c.current=!0},[]),d=(0,s.useCallback)(()=>!!c.current&&(c.current=!1,!0),[]);return(0,s.useMemo)(()=>({markExplicitSelection:A,skipNextRestore:u,shouldSkipRestoreOnce:d}),[A,u,d])}({enabled:P,form:d,selectedType:m,onAfterReset:(0,s.useCallback)(()=>{F.current=null,R("")},[])}),G=(0,s.useMemo)(()=>!!E&&!!(null==X?void 0:X.paramSchema)&&(!pO(X.paramSchema)||Object.keys(X.paramSchema.shape||{}).length>0),[m,X,E]),V=(0,s.useMemo)(()=>{if(E&&E.length>0&&X){if(X.paramSchema&&pO(X.paramSchema)){let e=X.paramSchema.shape||{};return Object.keys(e).some(t=>{let{isOptional:r}=pj(e[t]);return!r})}return!!X.paramSchema}return!0},[m,X,E]),$=(0,s.useMemo)(()=>["aiQuery","aiBoolean","aiNumber","aiString","aiAsk","aiAssert"].includes(m),[m]),_=(0,s.useMemo)(()=>{if("aiAct"===m||"aiLocate"===m)return!0;if(E&&(null==X?void 0:X.paramSchema)&&pO(X.paramSchema)){let e=X.paramSchema.shape||{};return Object.keys(e).some(t=>{let{actualField:r}=pj(e[t]);return pR(r)})}return!1},[m,X,E]),ee=(0,s.useMemo)(()=>"aiAct"===m,[m]),et=(0,s.useMemo)(()=>{let e="In-Browser-Extension"===p,t=$&&!x,r=pH(k);return e||_||ee||t||r},[p,_,ee,$,x,k]),er=(0,s.useMemo)(()=>(e=>{let t=Object.keys(uX);if(!(null==e?void 0:e.length))return t;let r=e.map(e=>e.interfaceAlias||e.name),n=new Set;return t.forEach(e=>{let t=uX[e];"aiAct"===e||(null==t?void 0:t.group)==="extraction"||(null==t?void 0:t.group)==="validation"?n.add(e):r.includes(e)&&n.add(e)}),r.forEach(e=>{n.add(e)}),Array.from(n)})(E),[E]),en=(0,s.useMemo)(()=>er.filter(e=>!uW.includes(e)),[er]),eo=(0,s.useCallback)(e=>{W(),d.setFieldValue("type",e)},[d,W]),ei=(0,s.useMemo)(()=>[{key:"interaction-group",label:"Interaction APIs",match:e=>{var t;return(null==(t=uX[e])?void 0:t.group)==="interaction"}},{key:"extraction-group",label:"Data Extraction APIs",match:e=>{var t;return(null==(t=uX[e])?void 0:t.group)==="extraction"}},{key:"validation-group",label:"Validation APIs",match:e=>{var t;return(null==(t=uX[e])?void 0:t.group)==="validation"}},{key:"device-specific-group",label:"Device-Specific APIs",match:e=>!uX[e]}],[]),ea=(0,s.useCallback)(e=>{var t;return{key:e,label:pX(e),title:(null==(t=uX[e])?void 0:t.title)||"",onClick:()=>eo(e)}},[eo]),es=(0,s.useMemo)(()=>{let e=[];for(let t of ei){let r=en.filter(t.match);0!==r.length&&e.push({key:t.key,type:"group",label:t.label,children:r.map(ea)})}return e},[ei,en,ea]),el=(0,s.useMemo)(()=>{let e=uW.filter(e=>er.includes(e)),t=[];return e.length>0&&t.push({key:"primary-group",type:"group",label:"Primary APIs",children:e.map(ea)}),t.push(...es),{items:t}},[er,ea,es]),ec=(0,s.useMemo)(()=>({items:es}),[es]),eA=(0,s.useCallback)(()=>{if(!G||!E)return{};if((null==X?void 0:X.paramSchema)&&pO(X.paramSchema)){let e={},t=X.paramSchema.shape||{};return Object.keys(t).forEach(r=>{let n=(e=>{var t;let r=e;for(;null==(t=r._def)?void 0:t.innerType;){if(r._def.typeName===pS){if("function"==typeof r._def.defaultValue)return r._def.defaultValue();if(void 0!==r._def._serializedDefaultValue)return r._def._serializedDefaultValue}r=r._def.innerType}})(t[r]);void 0!==n&&(e[r]=n)}),e}return{}},[m,G,X,E]);(0,s.useEffect)(()=>{P||d.getFieldValue("type")||!U||d.setFieldValue("type",U)},[d,P,U]),(0,s.useEffect)(()=>{!P&&m&&m!==U&&Z(m)},[m,P,U,Z]);let eu=(0,s.useCallback)(()=>{let e=z.current;if(!e)return;let t=null,r=e.querySelector(".ant-radio-button-wrapper-checked"),n=e.querySelector(".more-apis-button.selected-from-dropdown");if(r?t=r:n&&(t=n),t){let r=e.getBoundingClientRect(),n=t.getBoundingClientRect(),o=n.left-r.left+e.scrollLeft,i=n.width,a=r.width;e.scrollTo({left:Math.max(0,o-(a-i)/2),behavior:"smooth"})}},[]);(0,s.useEffect)(()=>{if(Y())return;if(P){let e=eA();d.setFieldsValue({prompt:"",params:e}),R(""),F.current=null;return}let e=Q[0];if(!e||!F.current||e.timestamp!==F.current.timestamp)if(e)d.setFieldsValue({type:e.type,prompt:e.prompt||"",params:e.params}),R(e.prompt||""),F.current=e;else{let e=eA();d.setFieldsValue({prompt:"",params:e}),R(""),F.current=null}},[m,Q,d,eA,P,Y]),(0,s.useEffect)(()=>{let e=setTimeout(()=>{eu()},100);return()=>clearTimeout(e)},[m,eu]);let ed=ub.A.useWatch("prompt",d);(0,s.useEffect)(()=>{ed!==O&&R(ed||"")},[ed,O]);let ep=(0,s.useCallback)(e=>{W(),e.type!==m&&H(),d.setFieldsValue({prompt:e.prompt,type:e.type,params:e.params}),R(e.prompt)},[d,W,m,H]),eh=(0,s.useCallback)(e=>{R(e.target.value)},[]),em=(0,s.useMemo)(()=>!!G&&!!E&&!!((null==X?void 0:X.paramSchema)&&pO(X.paramSchema))&&1===Object.keys(X.paramSchema.shape||{}).length,[m,G,X,E]),ef=(0,s.useMemo)(()=>P?pM(E,m):null,[E,P,m]),eg=(0,s.useMemo)(()=>((e,t,r,n,o)=>{if(!e)return!1;if(!(()=>{if(n){if(!n.paramSchema)return!1;if("object"==typeof n.paramSchema&&"shape"in n.paramSchema)return Object.keys(n.paramSchema.shape||{}).length>0}return!0})())return!0;if(t){let e=r||{};if((null==n?void 0:n.paramSchema)&&pO(n.paramSchema)){let t=n.paramSchema.shape||{};return Object.keys(t).every(r=>{let{isOptional:n}=pj(t[r]),o=e[r];return n||void 0!==o&&""!==o&&null!==o})}return!0}return o.trim().length>0})(u,!!G,B,X,O),[u,G,X,O,B]),ey=V&&!G&&!O.trim()&&!y&&!g,ev=(0,s.useCallback)(()=>{let e=d.getFieldsValue(),t="";if(G&&e.params&&E)if((null==X?void 0:X.paramSchema)&&pO(X.paramSchema)){let r="",n=[],o=X.paramSchema.shape||{};Object.keys(o).forEach(t=>{var i;let a=null==(i=e.params)?void 0:i[t];if(null!=a&&""!==a){let{actualField:e}=pj(o[t]);pR(e)?r=String(a):"distance"===t?n.push(`${a}`):n.push(String(a))}});let i=n.join(" ");t=r?`${r} - ${i}`:i}else t=e.prompt||"";else t=e.prompt||"";let r={type:e.type,prompt:t,params:e.params,timestamp:Date.now()};if(K(r),v(),w)if(F.current=r,R(""),G){let e=eA();d.setFieldValue("params",e)}else d.setFieldValue("prompt","")},[d,K,v,G,m,w,E,X,eA]),eb=(0,s.useCallback)(e=>{"Enter"===e.key&&e.metaKey&&eg?(ev(),e.preventDefault(),e.stopPropagation()):"Enter"===e.key&&setTimeout(()=>{if(D.current){var e;let t=null==(e=D.current.resizableTextArea)?void 0:e.textArea;if(t){let e=t.selectionStart,r=t.value.lastIndexOf("\n");(-1===r||e>r)&&(t.scrollTop=t.scrollHeight)}}},0)},[ev,eg]),ew=(0,s.useCallback)(e=>{"Enter"===e.key&&e.metaKey&&eg&&(ev(),e.preventDefault(),e.stopPropagation())},[ev,eg]),eE=(0,s.useCallback)(()=>{if(!G)return null;if(E&&(null==X?void 0:X.paramSchema)&&pO(X.paramSchema)){let e=X.paramSchema.shape||{},t=Object.keys(e);if(1===t.length){let r=t[0],{actualField:n}=pj(e[r]),o=pR(n),i=(()=>{var e,t;if(null==(e=n._def)?void 0:e.description)return n._def.description;if(n.description)return n.description;if(E&&(null==X?void 0:X.paramSchema)&&"object"==typeof X.paramSchema&&"shape"in X.paramSchema){let e=(X.paramSchema.shape||{})[r];if(null==e||null==(t=e._def)?void 0:t.description)return e._def.description;if(null==e?void 0:e.description)return e.description}return o?"Describe the element you want to interact with":"keyName"===r?"Enter key name or text to type":"value"===r?"Enter text to input":`Enter ${r}`})();return(0,a.jsx)(ub.A.Item,{name:["params",r],style:{margin:0},children:(0,a.jsx)(J.A.TextArea,{className:"main-side-console-input-textarea",rows:3,placeholder:i,autoFocus:!0,onKeyDown:ew})})}let r=[],n=t.sort((t,r)=>{let n=e[t],o=e[r],{isOptional:i}=pj(n),{isOptional:a}=pj(o);return!i&&a?-1:i&&!a?1:0});if(n.forEach((t,o)=>{var i,s,l;let{actualField:c,isOptional:A}=pj(e[t]),u=pR(c),d=t.charAt(0).toUpperCase()+t.slice(1),p=12*(o!==n.length-1),h=(()=>{var e,r;if(null==(e=c._def)?void 0:e.description)return c._def.description;if(c.description)return c.description;if(E&&(null==X?void 0:X.paramSchema)&&"object"==typeof X.paramSchema&&"shape"in X.paramSchema){let e=(X.paramSchema.shape||{})[t];if(null==e||null==(r=e._def)?void 0:r.description)return e._def.description;if(null==e?void 0:e.description)return e.description}if(u)return"Describe the element you want to interact with"})(),m={name:t,label:d,fieldSchema:c,isRequired:!A,marginBottom:p,placeholder:h};u?r.push((0,a.jsx)(p2,hr({},m),t)):(null==(i=c._def)?void 0:i.typeName)==="ZodEnum"?r.push((0,a.jsx)(p3,hr({},m),t)):(null==(s=c._def)?void 0:s.typeName)==="ZodNumber"?r.push((0,a.jsx)(p5,hr({},m),t)):(null==(l=c._def)?void 0:l.typeName)==="ZodBoolean"?r.push((0,a.jsx)(p4,hr({},m),t)):r.push((0,a.jsx)(p1,hr({},m),t))}),"aiScroll"===m){let e=r.find(e=>s.isValidElement(e)&&"direction"===e.props.name),t=r.find(e=>s.isValidElement(e)&&"distance"===e.props.name),n=r.filter(e=>s.isValidElement(e)&&"direction"!==e.props.name&&"distance"!==e.props.name);if(e&&t)return(0,a.jsxs)("div",{className:"structured-params",children:[(0,a.jsxs)("div",{style:{display:"flex",gap:12,marginBottom:12},children:[e,t]}),n]})}return(0,a.jsx)("div",{className:"structured-params",children:r})}return null},[m,G,E,X,ew]),ex=(0,s.useCallback)(()=>{C(!0)},[]),ek=(0,s.useCallback)(()=>{C(!1)},[]),eS=(0,s.useCallback)(()=>{let e=e=>(0,a.jsx)(q.Ay,{type:"primary",icon:(0,a.jsx)(pT.A,{}),style:{borderRadius:20,zIndex:999},onClick:ev,disabled:!eg,loading:y,children:e});return f?"aiAct"===m?(0,a.jsx)(h.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"):g?(0,a.jsx)(q.Ay,{className:"prompt-stop-button",icon:(0,a.jsx)(ho,{}),onClick:b,style:{borderRadius:20,zIndex:999},children:"Stop"}):e("Run")},[f,y,ev,b,eg,m,g]),eI=(0,s.useCallback)(()=>{let e=e=>(0,a.jsx)(q.Ay,{"aria-label":e,className:"minimal-run-trigger",type:"primary",icon:(0,a.jsx)(pN.A,{}),onClick:ev,disabled:!eg,loading:y});return f?"aiAct"===m?(0,a.jsx)(h.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"):g?(0,a.jsx)(q.Ay,{"aria-label":"Stop running",className:"minimal-run-trigger minimal-run-trigger-stop prompt-stop-button",icon:(0,a.jsx)(ho,{}),onClick:b}):e("Run")},[f,y,ev,eg,b,m,g]),eC=null!=(l=null==S||null==(t=S.icons)?void 0:t.action)?l:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAAASdJREFUeAHtlt3NgjAUhg8/CVx+G8gGX5xAnUDdQMcgkIgJBLbQEXQD3MAR6gZewgXgOUn9iRp6vAC96JM07YG36Zv+nBZAwySO4ymWgUoXRdEfaYGJyRElSbKyLGuHJVdpHcc5khb7RMCAZcA0TU82PYZ8IPsoZ4ttoEu0ga8bMB6DNE1X8H6jTUBuLmQL7SxkLbDkzz/ruhZBEKxfDGRZNm2aZgc9UFXVLAzDPbVvS1AUxQGrE3SPwHK8BganBy7NBuTU+r5vKLSNbG5RuwQF+hRoA9rA76RifMl4+JjI4Z5yu0KUZTnE8c4U3GbAdd3/HgYnPNu2R9eg98uIvmOGfL2M2tCpWBv4BQPiqW7j9IGWZ4CODT7X5pRAVFrUjEn7eNQ0bVwAyWpjMDlJKpAAAAAASUVORK5CYII=",eO=null==S||null==(r=S.icons)?void 0:r.actionChevron,eR=null!=(c=null==S||null==(n=S.icons)?void 0:n.settings)?c:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAAAaFJREFUeAHtlt9tgzAQxi8EJa/pBMkIHYENygalG7RvSQQKlfjz2I5ANkg3oBukG6QbtI9IIPq5ihHQOBXmFImqPwnZBvtsf9ydTfQPA77vz4IguCENDGJgOp3ux+PxLgxDnzrCsgAw/zZmGPOO48iUFci4wE42xITKXlEUO9d1X34s4NjZISZU9qCSjeKqastKWZYpMaKyNxqNto02MRDHcXmsJqvV6q7LWBYnxK4+SBOTeHDw2HAwn4aGlg9EUfQE2e+xYwchtaUeaPmAmFyUyH4W9aThA9jZ7alOiN39crl8O/FpoRpzjrq96hcgj2/wwVcNQlxb6/X6VdRrYaeNtGfUVvXbgE9iRNprOCHktPF/Z+3OeZ4fPM9LZbumgHjX2Qnr9rSioE/ma6MVBZDvWWQ/cbLR0GE5jEQoQhFLpGIkpvcuY1nOAkyeiBKJSRSXPw37UCkgbrWmaSZwsBkxoLInHBgJ6EG2KwUgn801+Tl78hyRVApkWfaIexxp4rRfqOzBUdN6+29cyYAMvQN1hCUMIbc1mUyu4VzDz4wX5wvRfah9kIOcwwAAAABJRU5ErkJggg==",ej=null==S||null==(o=S.icons)?void 0:o.history,eP=(0,s.useCallback)(()=>et&&"input"===N?(0,a.jsx)("div",{className:I?"settings-wrapper settings-wrapper-hover":"settings-wrapper",onMouseEnter:ex,onMouseLeave:ek,children:(0,a.jsx)(pV,{enableTracking:"In-Browser-Extension"===p,showDeepLocateOption:_,showDeepThinkOption:ee,showDataExtractionOptions:$,hideDomAndScreenshotOptions:x,deviceType:k,popupPlacement:"topLeft",trigger:(0,a.jsx)("button",{"aria-label":"Open run configuration",className:"input-icon-trigger",type:"button",children:(0,a.jsx)("img",{alt:"",className:"input-toolbar-icon",src:eR})})})}):null,[k,ex,ek,et,x,I,eR,p,N,$,_,ee]),eM=V?G?ef?(0,a.jsx)(ub.A.Item,{name:["params",ef.name],style:{margin:0},children:(0,a.jsx)(hn,{className:"main-side-console-input-textarea",disabled:!u,rows:3,placeholder:"prompt"===ef.name?M:ef.placeholder,autoFocus:!0,onKeyDown:ew})}):em?eE():(0,a.jsx)("div",{className:"structured-params-container",children:eE()}):(0,a.jsx)(ub.A.Item,{name:"prompt",style:{margin:0},children:(0,a.jsx)(hn,{className:"main-side-console-input-textarea",disabled:!u,rows:3,placeholder:M,autoFocus:!0,onKeyDown:eb,onChange:eh,ref:D})}):(0,a.jsxs)("div",{className:"no-input-method",children:['Click "Run" to execute ',pX(m)]});return P?(0,a.jsxs)("div",{className:"prompt-input-wrapper prompt-input-wrapper-minimal",children:[(0,a.jsx)(ub.A.Item,{hidden:!0,name:"type",style:{margin:0},children:(0,a.jsx)(J.A,{})}),(0,a.jsxs)("div",{className:`main-side-console-input minimal-main-side-console-input ${!u?"disabled":""} ${y?"loading":""} ${ey?"prompt-input-empty":""}`,children:[eM,(0,a.jsxs)("div",{className:"minimal-toolbar-row",children:[(0,a.jsxs)("div",{className:"minimal-toolbar-left",children:[(0,a.jsx)(d3.A,{menu:el,placement:"topLeft",trigger:["click"],disabled:!u,overlayClassName:"more-apis-dropdown",children:(0,a.jsxs)("button",{"aria-label":`Select action type (current: ${T})`,className:"minimal-action-trigger",disabled:!u,type:"button",children:[(0,a.jsx)("img",{alt:"",className:"minimal-action-icon",src:eC}),(0,a.jsx)("span",{className:"minimal-action-label",children:T}),eO?(0,a.jsx)("img",{alt:"",className:"minimal-action-chevron",src:eO}):(0,a.jsx)(pB,{"aria-hidden":"true",className:"minimal-action-chevron",focusable:"false"})]})}),(0,a.jsx)(ht,{onSelect:ep,history:Q,currentType:m,popupPlacement:"top",trigger:(0,a.jsx)("button",{"aria-label":"Open prompt history",className:"minimal-icon-trigger",type:"button",children:ej?(0,a.jsx)("img",{alt:"",className:"minimal-toolbar-icon minimal-toolbar-icon-history",src:ej}):(0,a.jsx)(pF,{"aria-hidden":"true",className:"minimal-toolbar-icon minimal-toolbar-icon-history",focusable:"false"})})}),et&&"hidden"!==N?(0,a.jsx)("div",{className:I?"settings-wrapper settings-wrapper-hover":"settings-wrapper",onMouseEnter:ex,onMouseLeave:ek,children:(0,a.jsx)(pV,{enableTracking:"In-Browser-Extension"===p,showDeepLocateOption:_,showDeepThinkOption:ee,showDataExtractionOptions:$,hideDomAndScreenshotOptions:x,deviceType:k,popupPlacement:"topRight",trigger:(0,a.jsx)("button",{"aria-label":"Open run configuration",className:"minimal-icon-trigger",type:"button",children:(0,a.jsx)("img",{alt:"",className:"minimal-toolbar-icon",src:eR})})})}):null]}),(0,a.jsxs)("div",{className:"form-controller-wrapper",children:[null==S?void 0:S.inputActions,eI()]})]})]})]}):(0,a.jsxs)("div",{className:"prompt-input-wrapper",children:[(0,a.jsxs)("div",{className:"mode-radio-group-wrapper",children:[(0,a.jsxs)("div",{className:"mode-radio-group",ref:z,children:[(0,a.jsx)(ub.A.Item,{name:"type",style:{margin:0},children:(0,a.jsx)(pz.A.Group,{buttonStyle:"solid",disabled:!u,children:uW.map(e=>{var t;return(0,a.jsx)(h.A,{title:(null==(t=uX[e])?void 0:t.title)||"",children:(0,a.jsx)(pz.A.Button,{value:e,children:pX(e)})},e)})})}),(0,a.jsx)(d3.A,{menu:ec,placement:"bottomLeft",trigger:["click"],disabled:!u,overlayClassName:"more-apis-dropdown",children:(0,a.jsxs)(q.Ay,{className:`more-apis-button ${!uW.includes(m)?"selected-from-dropdown":""}`,children:[m&&!uW.includes(m)?pX(m):"more",(0,a.jsx)(pD.A,{style:{fontSize:"10px",marginLeft:"2px"}})]})})]}),(0,a.jsxs)("div",{className:"action-icons",children:[(0,a.jsx)(ht,{onSelect:ep,history:Q,currentType:m}),et&&"toolbar"===N&&(0,a.jsx)("div",{className:I?"settings-wrapper settings-wrapper-hover":"settings-wrapper",onMouseEnter:ex,onMouseLeave:ek,children:(0,a.jsx)(pV,{enableTracking:"In-Browser-Extension"===p,showDeepLocateOption:_,showDeepThinkOption:ee,showDataExtractionOptions:$,hideDomAndScreenshotOptions:x,deviceType:k})})]})]}),(0,a.jsxs)("div",{className:`main-side-console-input ${!u?"disabled":""} ${y?"loading":""} ${ey?"prompt-input-empty":""}`,children:[eM,(0,a.jsxs)("div",{className:"form-controller-wrapper",children:[(0,a.jsxs)("div",{className:"input-actions-wrapper",children:[eP(),null==S?void 0:S.inputActions]}),eS()]})]})]})};function ha(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}let hs=[...cO,...cR,"aiAct"];function hl(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function hc(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){hl(i,n,o,a,s,"next",e)}function s(e){hl(i,n,o,a,s,"throw",e)}a(void 0)})}}function hA(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}let hu=new Set;function hd(e){let{error:t}=e;if(!t)return null;let r=t.replace(/^(Error:\s*)+/,"Error: ");return(0,a.jsx)(W.A,{message:(0,a.jsx)("span",{style:{color:"#ff4d4f"},children:r}),type:"error",showIcon:!0})}function hp(e){let{action:t,content:r,description:n,error:o,shouldShowLoading:i}=e,{ref:l,truncated:c}=function(e,t){let r=(0,s.useRef)(null),[n,o]=(0,s.useState)(!1),i=(0,s.useCallback)(()=>{var e;o((e=r.current,!!e&&("multi-line"===t?e.scrollHeight-e.clientHeight>1:e.scrollWidth>e.clientWidth)))},[t]);return(0,s.useLayoutEffect)(()=>{if(i(),window.addEventListener("resize",i),"undefined"==typeof ResizeObserver||!r.current)return()=>window.removeEventListener("resize",i);let e=new ResizeObserver(i);return e.observe(r.current),()=>{window.removeEventListener("resize",i),e.disconnect()}},[e,i]),{ref:r,truncated:n}}(r,"multi-line"),A=(0,a.jsxs)("div",{className:"progress-row-content",children:[(0,a.jsxs)("div",{className:"progress-row-copy",ref:l,children:[t?(0,a.jsx)("span",{className:"progress-action-item",children:t}):null,n?(0,a.jsx)("div",{className:"progress-description-wrap",children:i?(0,a.jsx)(dK,{text:n,className:"progress-description"}):(0,a.jsx)("span",{className:"progress-description",children:n})}):null]}),o&&(0,a.jsx)(hd,{error:o})]});return c?(0,a.jsx)(h.A,{title:r,children:A}):A}function hh(e){var t,r,n,o,i,l,c;let{playgroundSDK:A,storage:u,contextProvider:d,config:p={},envConfigReminderProps:h,branding:m={},className:f="",dryMode:g=!1,showContextPreview:y=!0}=e,[v]=ub.A.useForm(),{config:b}=Z(),[w,E]=(0,s.useState)(!1),x=(0,s.useRef)(null);(0,s.useEffect)(()=>{hc(function*(){if(A&&"function"==typeof A.checkStatus)try{yield A.checkStatus(),E(!0)}catch(e){console.warn("Failed to initialize SDK, using default namespace:",e),E(!0)}else E(!0)})()},[A]);let k=p.storageNamespace,S=k?void 0:A&&A.id&&"string"==typeof A.id?`agent-${A.id}`:"playground-default",I=(0,s.useMemo)(()=>{if(!1===p.persistMessages)return null;if(u)return u;if(!w)return null;let e=k||S,t=dO();return console.log(`Using ${t} storage for namespace: ${e}`),dC(t,e)},[u,w,k,p.persistMessages,S]),{loading:C,setLoading:O,infoList:R,setInfoList:j,actionSpace:P,actionSpaceLoading:M,uiContextPreview:T,setUiContextPreview:N,showScrollToBottomButton:D,verticalMode:z,replayCounter:B,setReplayCounter:F,messagesInitialized:L,infoListRef:U,currentRunningIdRef:K,interruptedFlagRef:J,clearInfoList:Q,handleScrollToBottom:X}=function(e,t,r,n){let o=!(arguments.length>4)||void 0===arguments[4]||arguments[4],[i,a]=(0,s.useState)(!1),[l,c]=(0,s.useState)([]),[A,u]=(0,s.useState)([]),[d,p]=(0,s.useState)(!0),[h,m]=(0,s.useState)(),[f,g]=(0,s.useState)(!1),[y,v]=(0,s.useState)(!0),b=(0,s.useRef)(0),[w,E]=(0,s.useState)(!1),[x,k]=(0,s.useState)(0),S=(0,s.useRef)(null),I=(0,s.useRef)(null),C=(0,s.useRef)({}),O=(0,s.useRef)(),[,R]=(0,s.useState)(0);(0,s.useEffect)(()=>{let e=!1,r=null!=t?t:null,i=t=>{e||c(t)};return O.current!==r&&(t||0===l.length)&&dj(function*(){let a=dM(dP({},uH(n)),{id:"welcome",timestamp:new Date});if(null==t?void 0:t.loadMessages)try{let e=yield t.loadMessages();0===e.length&&(e=yield dj(function*(){if(!o)return[];let e=dC(dO(),"playground-default");try{if(null==e?void 0:e.loadMessages){let r=yield e.loadMessages();if(r.length>1)return console.log("Found data in old namespace, migrating..."),(null==t?void 0:t.saveMessages)&&(yield t.saveMessages(r)),e.clearMessages&&(yield e.clearMessages()),r}}catch(e){console.debug("No data found in old namespace:",e)}return[]})()),e.some(e=>"welcome"===e.id)?i(e):i([a,...e])}catch(e){console.error("Failed to load messages:",e),i([a])}else i([a]);e||(O.current=r,R(e=>e+1))})(),()=>{e=!0}},[o,t]),(0,s.useEffect)(()=>{(null==t?void 0:t.saveMessages)&&l.length>1&&t.saveMessages(l).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)})},[l,t]),(0,s.useEffect)(()=>{(null==r?void 0:r.getUIContext)&&!h&&r.getUIContext().then(e=>m(e)).catch(e=>{console.error("Failed to get UI context:",e)})},[r,h]),(0,s.useEffect)(()=>{dj(function*(){p(!0);try{var t;if(!e)return void u([]);let n=h||(yield null==r||null==(t=r.getUIContext)?void 0:t.call(r)),o=yield e.getActionSpace(n);u(o||[])}catch(e){console.error("Failed to load action space:",e),u([])}finally{p(!1)}})()},[e,h,r]),(0,s.useEffect)(()=>{E(window.innerWidth<750);let e=()=>{E(window.innerWidth<750)};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let j=(0,s.useCallback)(()=>{setTimeout(()=>{S.current&&(S.current.scrollTop=S.current.scrollHeight)},100)},[]),P=(0,s.useCallback)(()=>{if(S.current){let{scrollTop:e,scrollHeight:t,clientHeight:r}=S.current,n=e+r>=t-10;g(!n);let o=e<b.current;b.current=e,n?v(!0):o&&v(!1)}},[]),M=(0,s.useCallback)(()=>{S.current&&(S.current.scrollTo({top:S.current.scrollHeight,behavior:"smooth"}),g(!1),v(!0))},[]);(0,s.useEffect)(()=>{l.length>0&&y&&j()},[l,j,y]),(0,s.useEffect)(()=>{let e=S.current;if(e)return e.addEventListener("scroll",P),P(),()=>{e.removeEventListener("scroll",P)}},[P]);let T=(0,s.useCallback)(()=>dj(function*(){if(c([dM(dP({},uH(n)),{id:"welcome",timestamp:new Date})]),null==t?void 0:t.clearMessages)try{yield t.clearMessages()}catch(e){console.error("Failed to clear stored messages:",e)}})(),[t,n]),N=(0,s.useCallback)(()=>dj(function*(){if(null==r?void 0:r.refreshContext)try{let e=yield r.refreshContext();m(e)}catch(e){console.error("Failed to refresh context:",e)}})(),[r]);return{loading:i,setLoading:a,infoList:l,setInfoList:c,messagesInitialized:O.current===(null!=t?t:null),actionSpace:A,actionSpaceLoading:d,uiContextPreview:h,setUiContextPreview:m,showScrollToBottomButton:f,verticalMode:w,replayCounter:x,setReplayCounter:k,infoListRef:S,currentRunningIdRef:I,interruptedFlagRef:C,clearInfoList:T,refreshContext:N,handleScrollToBottom:M,scrollToBottom:j}}(A,I,d,m.targetName,!1!==p.persistMessages&&!p.storageNamespace),{handleRun:W,handleStop:H,cancelCurrentExecution:Y,canStop:G}=function(e){let{playgroundSDK:t,storage:r,actionSpace:n,loading:o,setLoading:i,setInfoList:a,replayCounter:l,setReplayCounter:c,verticalMode:A,currentRunningIdRef:u,interruptedFlagRef:d,deviceType:p}=e,{deepLocate:h,deepThink:m,screenshotIncluded:f,domIncluded:g,imeStrategy:y,screenshotStrategy:v,autoDismissKeyboard:b,keyboardDismissStrategy:w,alwaysRefreshScreenInfo:E}=Z(),x=(0,s.useCallback)(function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return u6(function*(){if(!t)return void console.warn("PlaygroundSDK is not available");let o=Date.now(),s=e.type,x=n.displayContent||`${e.type}: ${e.prompt||JSON.stringify(e.params)}`,k={id:`user-${Date.now()}`,type:"user",content:x,timestamp:new Date};a(e=>[...e,k]),i(!0);let S=u9({},uY),I={id:`system-${o}`,type:"system",content:"",timestamp:new Date,loading:!0,loadingProgressText:""};a(e=>[...e,I]);try{u.current=o,d.current[o]=!1,t.onDumpUpdate&&t.onDumpUpdate((e,t)=>{var r;if(d.current[o]||!(null==t||null==(r=t.tasks)?void 0:r.length))return;let n=t.tasks.map((e,t)=>{var r;let n,i;return{id:`progress-${o}-task-${t}`,type:"progress",content:(n=Aj(e),(i=AN(e))?`${n} - ${i}`:n),actionKind:Aj(e),timestamp:new Date((null==(r=e.timing)?void 0:r.start)||Date.now()),result:e.error?{error:dt(e.error),result:null}:void 0}});a(e=>{let t=e.findIndex(e=>e.id===`system-${o}`);if(-1===t)return e;let r=e.filter(e=>!("progress"===e.type&&e.id.startsWith(`progress-${o}-`)));return[...r.slice(0,t+1),...n,...r.slice(t+1)]})}),da(s)||!0!==m||console.warn("[Playground] Non-aiAct action will be executed without deepThink. deepThink is only forwarded for aiAct and runMarkdown.",{actionType:s,requestId:o.toString()});let r="unset"===m?void 0:m,i=u9(de(u9({requestId:o.toString(),deepLocate:h},da(s)&&void 0!==r?{deepThink:r}:{}),{screenshotIncluded:f,domIncluded:g,deviceOptions:{imeStrategy:y,screenshotStrategy:v,autoDismissKeyboard:b,keyboardDismissStrategy:w,alwaysRefreshScreenInfo:E}}),n.reportDisplay?{reportDisplay:n.reportDisplay}:{});if(S.result=yield t.executeAction(s,e,i),"object"==typeof S.result&&null!==S.result){let e=S.result;e.dump&&(S.dump=e.dump),e.reportHTML&&(S.reportHTML=e.reportHTML),e.report&&(S.report=e.report),e.error&&(S.error=dt(e.error)),"result"in e&&(S.result=e.result)}}catch(e){if(d.current[o])return;S.error=dt(e),console.error("Playground execution error:",e),"object"==typeof e&&null!==e&&(e.dump&&(S.dump=e.dump),e.reportHTML&&(S.reportHTML=e.reportHTML),e.report&&(S.report=e.report))}if(yield di(S),d.current[o])return;i(!1),u.current=null;let C=null,O=l,R=dn(S,p);R&&(c(e=>e+1),C=R,O=l+1),a(e=>e.map(e=>e.id===`system-${o}`?de(u9({},e),{content:"",loading:!1,loadingProgressText:""}):e));let j={id:`result-${o}`,type:"result",content:"Execution result",timestamp:new Date,result:S,loading:!1,replayScriptsInfo:C,replayCounter:O,loadingProgressText:"",verticalMode:A,actionType:s};if(a(e=>[...e,j]),null==r?void 0:r.saveResult)try{yield r.saveResult(j.id,j)}catch(e){console.error("Failed to save result:",e)}})()},[t,r,n,i,a,l,c,A,u,d,h,m,f,g,p,y,v,b,w,E]),k=(0,s.useCallback)(function(){let{appendStopMessage:e=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return u6(function*(){let r=u.current;if(!(r&&t&&t.cancelExecution))return;d.current[r]=!0,u.current=null,i(!1);let n=t=>{a(n=>{let o=n.map(e=>e.id===`system-${r}`?de(u9({},e),{content:"",loading:!1,loadingProgressText:""}):e);if(!e||o.some(e=>e.id===`stop-${r}`||e.id===`stop-result-${r}`))return o;if(t&&(t.dump||t.reportHTML||t.report)){let e=null,n=l;return(e=dn(t,p))&&(c(e=>e+1),n=l+1),[...o,{id:`stop-result-${r}`,type:"result",content:"Execution stopped by user",timestamp:new Date,result:{result:null,dump:t.dump,reportHTML:t.reportHTML,report:t.report||null,error:null},loading:!1,verticalMode:A,replayScriptsInfo:e,replayCounter:n}]}return[...o,{id:`stop-${r}`,type:"system",content:"Operation stopped",timestamp:new Date,loading:!1}]})};try{let e=yield t.cancelExecution(r.toString()),o=null;if(e)o=e;else if(t.getCurrentExecutionData)try{o=yield t.getCurrentExecutionData()}catch(e){console.error("Failed to get execution data before stop:",e)}o&&(yield di(o)),n(o)}catch(e){console.error("Failed to stop execution:",e),n()}})()},[t,u,d,i,a,A,l,c,p]),S=(0,s.useCallback)(()=>u6(function*(){u.current&&(yield k({appendStopMessage:!0}))})(),[k,u]);return{cancelCurrentExecution:k,handleRun:x,handleStop:S,canStop:o&&!!u.current&&!!t&&!!t.cancelExecution}}({playgroundSDK:A,storage:I,actionSpace:P,loading:C,setLoading:O,setInfoList:j,replayCounter:B,setReplayCounter:F,verticalMode:z,currentRunningIdRef:K,interruptedFlagRef:J,deviceType:p.deviceType}),V=(0,s.useRef)(Y),$=(0,s.useRef)(p.onExecutionStatusChange),_=(0,s.useRef)(p.onBeforeExecutionStart),ee=null!=(t=p.executionScopeKey)?t:null,et=(0,s.useRef)(ee);(0,s.useEffect)(()=>{V.current=Y},[Y]),(0,s.useEffect)(()=>{$.current=p.onExecutionStatusChange},[p.onExecutionStatusChange]),(0,s.useEffect)(()=>{_.current=p.onBeforeExecutionStart},[p.onBeforeExecutionStart]);let er=(0,s.useCallback)(()=>(function(e){var t;return(t=function*(e){let{clearTimeline:t,clearTimelineBeforeRun:r=!1,onBeforeExecutionStart:n}=e;yield null==n?void 0:n(),r&&(yield t())},function(){var e=this,r=arguments;return new Promise(function(n,o){var i=t.apply(e,r);function a(e){ha(i,n,o,a,s,"next",e)}function s(e){ha(i,n,o,a,s,"throw",e)}a(void 0)})}).apply(this,arguments)})({clearTimeline:Q,clearTimelineBeforeRun:p.clearTimelineBeforeRun,onBeforeExecutionStart:_.current}),[Q,p.clearTimelineBeforeRun]);(0,s.useEffect)(()=>{var e;null==(e=p.onExecutionStatusChange)||e.call(p,{running:C,stoppable:G,stop:H})},[G,p.onExecutionStatusChange,H,C]),(0,s.useEffect)(()=>()=>{var e;V.current(),null==(e=$.current)||e.call($,{running:!1,stoppable:!1,stop:()=>void 0})},[]),(0,s.useEffect)(()=>{et.current!==ee&&(et.current=ee,Y())},[Y,ee]),(0,s.useEffect)(()=>{(null==A?void 0:A.overrideConfig)&&b&&A.overrideConfig(b).catch(e=>{console.error("Failed to override SDK config:",e),p.suppressConfigErrorToast||uv(e,{title:"Failed to apply AI configuration"})})},[A,b,p.suppressConfigErrorToast]);let en=(0,s.useCallback)(()=>hc(function*(){try{let e=v.getFieldsValue();yield er(),yield W(e)}catch(e){uv(e,{title:"Execution failed"})}})(),[v,W,er]);(0,s.useEffect)(()=>{let e=p.externalRunRequest;if(e&&function(e){let{request:t,handledRequestIds:r,lastRequestId:n,sdkReady:o,messagesInitialized:i}=e;return!!(t&&t.id!==n&&!(null==r?void 0:r.has(t.id))&&o&&i)}({request:e,handledRequestIds:hu,lastRequestId:x.current,sdkReady:w,messagesInitialized:L})){if(x.current=e.id,hu.add(e.id),hu.size>100){let e=hu.values().next().value;e&&hu.delete(e)}hc(function*(){yield er(),yield W(e.value,hA({displayContent:e.displayContent},e.reportDisplay?{reportDisplay:e.reportDisplay}:{}))})().catch(e=>{uv(e,{title:"Execution failed"})})}},[p.externalRunRequest,W,L,er,w]);let eo=Object.keys(b||{}).length>=1,ei=p.serverMode||!g&&!M&&eo,ea=ub.A.useWatch("type",v)||uW["0"],es=(0,s.useMemo)(()=>A&&"function"==typeof A.getServiceMode?A.getServiceMode():"Server",[A]),el=y&&!1!==p.showContextPreview,ec=p.layout||"vertical",eA=!1!==p.showVersionInfo,eu=p.deviceType,ed=null!=(r=p.executionFlow)?r:{},ep=!0===ed.collapsible,eh=null!=(n=ed.label)?n:"Execution Flow",[em,ef]=(0,s.useState)(()=>new Set),eg=(0,s.useCallback)(e=>{ef(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),{firstInProgressGroup:ey,visibleInfoList:ev}=(0,s.useMemo)(()=>{let e=new Set,t=[],r=null,n=R.length>1;for(let o of R)if(!n||"welcome"!==o.id)if("progress"===o.type){if(null===r){r=o.id,e.add(o.id),t.push(o);continue}ep&&em.has(r)||t.push(o)}else r=null,t.push(o);return{firstInProgressGroup:e,visibleInfoList:t}},[em,ep,R]),eb=(0,s.useMemo)(()=>{for(let e=R.length-1;e>=0;e--)if("progress"===R[e].type)return R[e].id;return null},[R]),ew=(0,s.useMemo)(()=>(function(e){let t=new Set;for(let n=0;n<e.length;n++){var r;let o=e[n];(null==o?void 0:o.type)==="progress"&&(null==(r=e[n+1])?void 0:r.type)!=="progress"&&t.add(o.id)}return t})(ev),[ev]),eE=void 0!==p.emptyState&&1===ev.length&&(null==(i=ev[0])?void 0:i.id)==="welcome",ex=(0,s.useMemo)(()=>eE&&((e,t)=>{if(!(null==e?void 0:e.length)||!t||pM(e,t))return!1;let r=pP(e,t);return!!(null==r?void 0:r.paramSchema)&&!!pO(r.paramSchema)&&Object.keys(r.paramSchema.shape||{}).length>1})(P,ea),[P,eE,ea]),ek=!eE;(0,s.useEffect)(()=>{if(!ex)return;let e=()=>{let e=U.current;if(!e)return;let t=e.querySelector(".playground-empty-state-wrapper"),r=null==t?void 0:t.querySelector("[data-playground-empty-state-content-start]"),n=null==t?void 0:t.querySelector("[data-playground-empty-state-content-end]");if(!(r instanceof HTMLElement)||!(n instanceof HTMLElement))return;let o=e.getBoundingClientRect(),i=r.getBoundingClientRect(),a=n.getBoundingClientRect(),s=function(e){let{currentScrollTop:t,maxScrollTop:r,containerTop:n,containerBottom:o,contentStartTop:i,contentEndBottom:a,topSafeMargin:s=24,bottomSafeMargin:l=24}=e;return Math.max(0,Math.round(Math.min(t+a-(o-l),t+i-(n+s),r)))}({currentScrollTop:e.scrollTop,maxScrollTop:Math.max(0,e.scrollHeight-e.clientHeight),containerTop:o.top,containerBottom:o.bottom,contentStartTop:i.top,contentEndBottom:a.bottom});e.scrollTo({top:s,behavior:"auto"})},t=window.requestAnimationFrame(e),r=window.setTimeout(e,160);return()=>{window.cancelAnimationFrame(t),window.clearTimeout(r)}},[U,ea,ex]);let eS=["playground-empty-state-wrapper",ex?"playground-empty-state-wrapper-offset-for-prompt":""].filter(Boolean).join(" "),eI=!1!==p.showClearButton,eC=(0,s.useCallback)(()=>{Y().finally(()=>{Q()})},[Y,Q]),eO=eI&&ek?(0,a.jsx)("div",{className:"clear-button-container",children:(0,a.jsx)(q.Ay,{size:"small",icon:(0,a.jsx)(uL.A,{}),onClick:eC,type:"text",className:"clear-button"})}):null,eR=null!=(o=p.timelineWrapper)?o:(e,t)=>e,ej=p.hidePromptInput?null:(0,a.jsxs)("div",{className:"bottom-input-section",children:[p.showEnvConfigReminder?(0,a.jsx)(dH,(l=hA({},h),c=c={playgroundSDK:A},Object.getOwnPropertyDescriptors?Object.defineProperties(l,Object.getOwnPropertyDescriptors(c)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(c)).forEach(function(e){Object.defineProperty(l,e,Object.getOwnPropertyDescriptor(c,e))}),l)):null,(0,a.jsx)(hi,{runButtonEnabled:ei,form:v,serviceMode:es,selectedType:ea,dryMode:g,stoppable:G,loading:C,onRun:en,onStop:H,actionSpace:P,chrome:p.promptInputChrome,deviceType:eu})]}),eP="before-timeline"===p.promptInputPlacement;return(0,a.jsx)("div",{className:`playground-container ${ec}-mode ${f}`.trim(),children:(0,a.jsxs)(ub.A,{form:v,onFinish:en,className:"command-form",initialValues:{type:uW["0"]},children:[el&&(0,a.jsx)("div",{className:"context-preview-section",children:(0,a.jsx)(dX,{uiContextPreview:T,setUiContextPreview:N,showContextPreview:el})}),eP?ej:null,(0,a.jsx)("div",{className:"playground-timeline-region",children:eR((0,a.jsxs)("div",{className:["middle-dialog-area",eE?"middle-dialog-area-empty":""].filter(Boolean).join(" "),children:[p.timelineHeader,(0,a.jsx)("div",{ref:U,className:["info-list-container",eE?"info-list-container-empty":""].filter(Boolean).join(" "),children:eE?(0,a.jsx)("div",{className:eS,children:p.emptyState}):(0,a.jsx)(uQ.A,{itemLayout:"vertical",dataSource:ev,renderItem:e=>{var t,r,n,o;let i,l,c,A,u,d,h,f,g=ep&&ey.has(e.id),y=g&&em.has(e.id);return(0,a.jsxs)(uQ.A.Item,{className:"list-item",children:[g?(0,a.jsxs)("button",{type:"button",className:`progress-group-toggle ${em.has(e.id)?"is-collapsed":"is-expanded"}`,"aria-expanded":!em.has(e.id),onClick:()=>eg(e.id),children:[(0,a.jsx)("span",{className:"progress-group-toggle-label",children:eh}),(0,a.jsx)(uU.A,{className:"progress-group-toggle-chevron"})]}):null,y?null:"user"===e.type?(0,a.jsx)("div",{className:"user-message-container",children:(0,a.jsx)("div",{className:"user-message-bubble",children:e.content})}):"progress"===e.type?(0,a.jsx)("div",{children:(l=null==(t=(i=e.content.split(" - "))[0])?void 0:t.trim(),c=i.slice(1).join(" - ").trim(),A=e.id===eb,u=ew.has(e.id),f="completed"==(h=(d=C&&A)?"loading":(null==(r=e.result)?void 0:r.error)?"error":"completed")?function(e,t){if(!e)return null;if(t){let r=t(e);if(void 0!==r)return r}return(0,s.createElement)(pE)}(e.actionKind,ed.resolveActionIcon):null,(0,a.jsxs)("div",{className:`progress-row ${u?"progress-row-last":""}`,children:[l?(0,a.jsx)("span",{className:`progress-status-icon ${h}`,children:"loading"===h?(0,a.jsx)(uK.A,{spin:!0}):"error"===h?(0,s.createElement)(px):null!==f?f:"✓"}):null,(0,a.jsx)(hp,{action:l,content:e.content,description:c,error:null==(n=e.result)?void 0:n.error,shouldShowLoading:d})]}))}):(0,a.jsxs)("div",{className:"system-message-container",children:[!1!==p.showSystemMessageHeader&&(0,a.jsxs)("div",{className:"system-message-header",children:[(0,a.jsx)(uZ.A,{className:"system-message-icon",component:m.icon||pw,style:{fontSize:20}}),(0,a.jsx)("span",{className:"system-message-title",children:m.title||"Playground"})]}),(e.content||e.result)&&(0,a.jsx)("div",{className:"system-message-content",children:"result"===e.type?(0,a.jsx)(pb,{result:e.result||null,loading:e.loading||!1,serverValid:!0,serviceMode:es,replayScriptsInfo:e.replayScriptsInfo||null,replayCounter:e.replayCounter||0,loadingProgressText:e.loadingProgressText||"",verticalMode:e.verticalMode||!1,fitMode:"width",showOutputAlongsideReport:void 0!==(o=e.actionType)&&hs.includes(o),onDownloadReport:p.onDownloadReport,playerPresentation:"timeline",hidePlayerFullscreenControl:p.hidePlayerFullscreenControl}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"system-message-text",children:e.content}),e.loading&&e.loadingProgressText&&(0,a.jsx)("div",{className:"loading-progress-text",children:(0,a.jsx)("span",{children:e.loadingProgressText})})]})})]})]},e.id)}})}),ek&&D&&!1!==p.enableScrollToBottom&&(0,a.jsx)(q.Ay,{"aria-label":"Scroll to latest message",className:"scroll-to-bottom-button",shape:"circle",icon:(0,a.jsx)(uJ.A,{}),onClick:X})]}),{empty:eE,headerAction:eO})}),eP?null:ej,eA&&m.version&&(0,a.jsx)("div",{className:"version-info-section",children:(0,a.jsxs)("span",{className:"version-text",children:["Midscene.js version: ",m.version]})})]})})}let hm=e=>{var t,r;return(0,a.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:(0,a.jsx)("path",{stroke:"#333",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.333,d:"m12 6-4 4-4-4"})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},hf=e=>{var t,r;return(0,a.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:55,height:52,fill:"none",viewBox:"0 0 55 52"},e),r=r={children:[(0,a.jsxs)("mask",{id:"midscene-logo_svg__a",width:55.371,height:52.35,x:-.202,y:-.201,fill:"#000",maskUnits:"userSpaceOnUse",children:[(0,a.jsx)("path",{fill:"#fff",d:"M-.202-.201h55.371v52.35H-.202z"}),(0,a.jsx)("path",{fillRule:"evenodd",d:"M35.38 1.812c1.168 0 1.762 1.405.948 2.244l-.83.853a23.38 23.38 0 0 1 13.968 14.069c2.56 2.523 3.834 6.176 3.714 13.116-.083 4.799-1.883 7.946-4.24 9.99-2.23 1.933-4.832 2.754-6.322 3.224l-.069.022-.088.029q-.675.212-1.328.378a23.22 23.22 0 0 1-13.634 4.399 23.22 23.22 0 0 1-13.632-4.399q-.653-.165-1.328-.379l-.09-.028-.067-.022c-1.49-.47-4.092-1.29-6.323-3.224-2.357-2.044-4.157-5.191-4.24-9.99C1.7 25.154 2.975 21.5 5.535 18.978a23.39 23.39 0 0 1 14.02-14.089l-.81-.833c-.814-.839-.22-2.244.948-2.244zM20.254 6.747A21.4 21.4 0 0 0 7.25 20.086C5.046 22.067 3.68 25.032 3.803 32.06c.146 8.506 6.254 10.434 9.244 11.378l.09.029q.811.256 1.586.437A21.24 21.24 0 0 0 27.5 48.152l.001-.001a21.24 21.24 0 0 1-12.776-4.247 22 22 0 0 1-1.586-.437l-.09-.029c-2.99-.944-9.097-2.872-9.243-11.379-.122-7.027 1.243-9.992 3.447-11.973a21.4 21.4 0 0 1 13.003-13.34m11.359 41.007q.128-.023.255-.05h.002zm.88-.191.215-.051.002-.001zM21.084 6.465h.001",clipRule:"evenodd"})]}),(0,a.jsx)("path",{fill:"#3A4953",fillRule:"evenodd",d:"M35.38 1.812c1.168 0 1.762 1.405.948 2.244l-.83.853a23.38 23.38 0 0 1 13.968 14.069c2.56 2.523 3.834 6.176 3.714 13.116-.083 4.799-1.883 7.946-4.24 9.99-2.23 1.933-4.832 2.754-6.322 3.224l-.069.022-.088.029q-.675.212-1.328.378a23.22 23.22 0 0 1-13.634 4.399 23.22 23.22 0 0 1-13.632-4.399q-.653-.165-1.328-.379l-.09-.028-.067-.022c-1.49-.47-4.092-1.29-6.323-3.224-2.357-2.044-4.157-5.191-4.24-9.99C1.7 25.154 2.975 21.5 5.535 18.978a23.39 23.39 0 0 1 14.02-14.089l-.81-.833c-.814-.839-.22-2.244.948-2.244zM20.254 6.747A21.4 21.4 0 0 0 7.25 20.086C5.046 22.067 3.68 25.032 3.803 32.06c.146 8.506 6.254 10.434 9.244 11.378l.09.029q.811.256 1.586.437A21.24 21.24 0 0 0 27.5 48.152l.001-.001a21.24 21.24 0 0 1-12.776-4.247 22 22 0 0 1-1.586-.437l-.09-.029c-2.99-.944-9.097-2.872-9.243-11.379-.122-7.027 1.243-9.992 3.447-11.973a21.4 21.4 0 0 1 13.003-13.34m11.359 41.007q.128-.023.255-.05h.002zm.88-.191.215-.051.002-.001zM21.084 6.465h.001",clipRule:"evenodd"}),(0,a.jsx)("path",{fill:"#3A4953",d:"m36.328 4.056 1.3 1.263zm-.83.853L34.2 3.646l-1.95 2.006 2.628.96zm13.968 14.069-1.707.609.14.39.295.291zm3.714 13.116 1.812.031zm-4.24 9.99 1.187 1.369zm-6.322 3.224.543 1.73.002-.002zm-.069.022-.543-1.729-.012.004zm-.088.029.546 1.727.01-.003zm-1.328.378-.446-1.757-.335.086-.28.202zm-13.634 4.399v1.812zm-13.632-4.399 1.06-1.47-.28-.202-.334-.084zm-1.328-.379-.55 1.727.004.001zm-.09-.028-.55 1.727zm-.067-.022.55-1.726-.005-.002zm-6.323-3.224-1.187 1.369zm-4.24-9.99-1.811.031zm3.715-13.116 1.272 1.29.295-.29.14-.391zm14.02-14.089.618 1.704 2.636-.955-1.954-2.011zm-.81-.833-1.3 1.262zm.948-2.244V0zm.563 4.935.615 1.704-1.23-3.409zM7.25 20.086l1.211 1.347.357-.32.151-.456zM3.803 32.06l-1.812.03zm9.244 11.378.55-1.726-.004-.002zm.09.029-.55 1.727h.004zm1.586.437 1.087-1.45-.304-.227-.369-.087zM27.5 48.152v1.812h.75l.532-.531zm.001-.001 1.282 1.281 3.093-3.093H27.5zm-12.776-4.247 1.087-1.45-.304-.227-.369-.087zm-1.586-.437-.55 1.727h.004zm-.09-.029.55-1.726-.004-.002zM3.805 32.06l-1.812.032zm3.447-11.973 1.211 1.347.357-.32.151-.456zm24.043 27.727.32 1.784-.64-3.567zm-.573.096-.271-1.792.542 3.584zm.892-.155-.348-1.778.695 3.557zm.255-.05.37 1.774.23-.048.21-.105zm.002 0 .81 1.62-1.179-3.395zm.623-.141L32.07 45.8l.845 3.524zm.215-.051.441 1.757.192-.048.177-.089zm.002-.001.81 1.62-1.251-3.378zM21.084 6.465V4.653h-.278l-.266.084zm-.572.191-.593-1.712 1.186 3.424zm.573-.19.545 1.728-.545-3.54zM35.38 1.811v1.812a.49.49 0 0 1-.351-.83l1.3 1.262 1.3 1.262C39.558 3.33 38.15 0 35.379 0zm.949 2.244-1.3-1.264-.829.854 1.3 1.263 1.298 1.263.83-.853zm-.83.853-.621 1.702a21.57 21.57 0 0 1 12.882 12.976l1.707-.61 1.706-.608A25.2 25.2 0 0 0 36.12 3.207zm13.968 14.069-1.272 1.29c2.043 2.015 3.29 5.063 3.174 11.795l1.812.03 1.812.032c.123-7.147-1.178-11.405-4.254-14.438zm3.714 13.116-1.812-.031c-.074 4.3-1.658 6.955-3.615 8.651l1.187 1.37 1.187 1.369c2.758-2.391 4.773-6.03 4.865-11.328zm-4.24 9.99-1.187-1.37c-1.919 1.663-4.188 2.395-5.68 2.866l.545 1.728.545 1.728c1.488-.469 4.421-1.379 6.964-3.583zm-6.322 3.224-.543-1.728-.069.021.543 1.729.544 1.729.068-.022zm-.069.022-.555-1.725-.089.029.556 1.724.556 1.725.088-.028zm-.088.029-.546-1.728q-.626.197-1.228.35l.446 1.756.445 1.756q.704-.178 1.429-.407zm-1.328.378-1.06-1.47a21.4 21.4 0 0 1-12.574 4.057v3.624c5.48 0 10.562-1.759 14.694-4.742zm-13.634 4.399v-1.812a21.4 21.4 0 0 1-12.571-4.056l-1.06 1.469-1.061 1.47a25.03 25.03 0 0 0 14.692 4.74zm-13.632-4.399.446-1.757q-.602-.151-1.228-.35l-.546 1.728-.546 1.728q.723.229 1.429.407zm-1.328-.379.55-1.726-.09-.029-.55 1.727-.55 1.727.09.028zm-.09-.028.55-1.727-.067-.021-.55 1.726-.55 1.727.067.022zm-.067-.022.545-1.728c-1.492-.47-3.762-1.202-5.681-2.866l-1.187 1.37-1.187 1.369c2.543 2.204 5.477 3.114 6.964 3.583zm-6.323-3.224 1.187-1.37c-1.957-1.696-3.54-4.35-3.615-8.651l-1.811.03-1.812.032c.091 5.297 2.106 8.937 4.864 11.328zm-4.24-9.99 1.812-.031c-.116-6.733 1.13-9.78 3.175-11.795l-1.272-1.29-1.272-1.29C1.185 20.72-.115 24.977.008 32.124zm3.715-13.116 1.707.609A21.57 21.57 0 0 1 20.172 6.593l-.617-1.704-.618-1.703a25.2 25.2 0 0 0-15.11 15.183zm14.02-14.089 1.3-1.262-.81-.834-1.3 1.263-1.3 1.262.811.834zm-.81-.833 1.3-1.263a.49.49 0 0 1-.351.831V1.812L19.691 0c-2.771 0-4.177 3.332-2.247 5.318zm.948-2.244v1.812H35.38V0H19.692zm.563 4.935-.616-1.705A23.2 23.2 0 0 0 5.53 19.514l1.72.572 1.72.571a19.58 19.58 0 0 1 11.9-12.206zM7.25 20.086l-1.212-1.348C3.27 21.228 1.866 24.83 1.99 32.091l1.812-.032 1.811-.03c-.117-6.794 1.208-9.122 2.847-10.596zM3.803 32.06l-1.812.03c.082 4.753 1.861 7.854 4.18 9.864 2.236 1.938 4.852 2.746 6.33 3.212l.546-1.728.546-1.728c-1.511-.477-3.445-1.105-5.047-2.494-1.519-1.316-2.867-3.433-2.932-7.188zm9.244 11.378-.55 1.727.09.029.55-1.727.55-1.727-.09-.028zm.09.029-.546 1.728q.875.276 1.718.474l.414-1.765.414-1.764q-.706-.164-1.454-.401zm1.586.437-1.086 1.45a23.05 23.05 0 0 0 13.862 4.61V46.34a19.43 19.43 0 0 1-11.69-3.886zM27.5 48.152l1.282 1.281v-.001l-1.28-1.281-1.282-1.282-.001.001zm.001-.001v-1.812a19.43 19.43 0 0 1-11.69-3.885l-1.086 1.45-1.086 1.45A23.05 23.05 0 0 0 27.5 49.964zm-12.776-4.247.414-1.764c-.472-.11-.954-.243-1.454-.401l-.546 1.728-.546 1.728q.875.276 1.718.474zm-1.586-.437.55-1.727-.09-.028-.55 1.726-.55 1.727.09.029zm-.09-.029.546-1.728c-1.511-.477-3.444-1.105-5.047-2.494-1.518-1.316-2.866-3.433-2.93-7.188l-1.812.032-1.812.03c.082 4.752 1.86 7.853 4.18 9.864 2.235 1.938 4.85 2.745 6.33 3.212zM3.805 32.06l1.811-.03c-.117-6.794 1.208-9.122 2.847-10.596l-1.211-1.347-1.212-1.348c-2.767 2.49-4.172 6.092-4.047 13.353zm3.447-11.973 1.72.571A19.58 19.58 0 0 1 20.87 8.451l-.615-1.704-.616-1.705A23.2 23.2 0 0 0 5.532 19.514zm24.043 27.727-.32-1.783q-.266.048-.524.087l.271 1.792.271 1.791q.319-.048.622-.103zm-.573.096.272 1.791q.316-.048.622-.103l-.32-1.784-.321-1.783a20 20 0 0 1-.524.087zm.892-.155.347 1.779c.061-.012.179-.034.278-.055l-.37-1.774-.369-1.774c-.071.015-.124.025-.234.046zm.255-.05.81 1.621h.003l-.81-1.622-.811-1.62h-.002zm.002 0-.369-1.775-.235.047.347 1.778.347 1.779.28-.056zm.623-.141.422 1.762c.023-.006.159-.037.234-.056l-.441-1.757-.441-1.758-.197.047zm.215-.051.81 1.62h.002l-.81-1.621-.81-1.621h-.002zm.002-.001-.441-1.758-.199.047.423 1.763.422 1.762.236-.057zM21.084 6.465l-.544-1.728q-.325.104-.621.207l.593 1.712.593 1.712q.273-.095.524-.174zm-.572.191.594 1.712q.27-.093.524-.174l-.545-1.729-.544-1.728q-.323.103-.622.207zm.573-.19V4.652zv1.812z",mask:"url(#midscene-logo_svg__a)"}),(0,a.jsx)("mask",{id:"midscene-logo_svg__b",width:53,height:50,x:1,y:1,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"},children:(0,a.jsx)("path",{fill:"#F0F0F0",fillRule:"evenodd",d:"M24.214 12.537a4.63 4.63 0 0 0 6.64 0l6.608-6.805a23.4 23.4 0 0 1 12 13.247c2.56 2.524 3.833 6.176 3.714 13.114-.083 4.8-1.883 7.947-4.24 9.991-2.231 1.934-4.833 2.755-6.322 3.225l-.158.05q-.675.213-1.328.378a23.22 23.22 0 0 1-13.632 4.399 23.22 23.22 0 0 1-13.632-4.399q-.654-.165-1.33-.378l-.157-.05c-1.49-.47-4.092-1.291-6.322-3.225-2.358-2.044-4.157-5.192-4.24-9.99-.12-6.941 1.155-10.593 3.716-13.117a23.4 23.4 0 0 1 12.05-13.27zM35.38 1.812c1.168 0 1.763 1.406.949 2.244l-6.895 7.1c-.52.534-1.21.8-1.899.8h-.012a2.65 2.65 0 0 1-1.536-.503 2.7 2.7 0 0 1-.35-.299L19.552 4.89l.001-.001-.808-.833c-.814-.838-.22-2.244.949-2.244z",clipRule:"evenodd"})}),(0,a.jsxs)("g",{mask:"url(#midscene-logo_svg__b)",children:[(0,a.jsx)("path",{fill:"#fff",d:"M-4.044-9.086h63.087V65.49H-4.044z"}),(0,a.jsx)("g",{filter:"url(#midscene-logo_svg__c)",opacity:.8,children:(0,a.jsx)("path",{fill:"#005EEC",fillOpacity:.01,d:"M41.85 43.36c-.378-.748-3.453.67-7.362 2.242s-7.175 2.702-6.798 3.45c.378.746 3.853.078 7.763-1.494s6.773-3.452 6.396-4.199"})})]}),(0,a.jsx)("path",{fill:"url(#midscene-logo_svg__d)",d:"M5.773 18.412h43.601v24.223H5.773z"}),(0,a.jsx)("path",{fill:"url(#midscene-logo_svg__e)",d:"M5.773 18.473h43.086v24.454H5.773z"}),(0,a.jsx)("path",{fill:"url(#midscene-logo_svg__f)",d:"M5.926 18.075h43.092v24.457H5.926z"}),(0,a.jsx)("foreignObject",{width:27.157,height:19.138,x:21.193,y:36.687,children:(0,a.jsx)("div",{xmlns:"http://www.w3.org/1999/xhtml",style:{backdropFilter:"blur(2.96px)",clipPath:"url(#midscene-logo_svg__g)",height:"100%",width:"100%"}})}),(0,a.jsx)("path",{fill:"#3A4953",fillRule:"evenodd",stroke:"#3A4953",strokeWidth:.514,d:"m14.619 40.412.082.025c2.186.657 4.053.825 6.578.932.365.016.704-.127.932-.363l3.08-5.674c.94-1.735 3.484-1.735 4.426 0l3.08 5.674c.227.236.566.379.931.363 2.525-.107 4.392-.275 6.578-.932l.082-.025c1.384-.416 3.235-.984 4.774-2.253 1.475-1.216 2.74-3.144 2.8-6.483.066-3.66-.372-5.858-1.066-7.316-.672-1.411-1.641-2.254-2.965-3.093-1.305-.828-2.922-1.54-4.435-1.54H37.44c-1.566 0-3.128.159-4.66.473l-.265.055a24.45 24.45 0 0 1-10.02-.043 22 22 0 0 0-4.582-.484h-2.402c-1.895 0-3.3.818-4.435 1.539-1.359.862-2.325 1.704-2.988 3.106-.686 1.45-1.11 3.637-1.043 7.303.06 3.339 1.325 5.267 2.8 6.483 1.539 1.269 3.39 1.837 4.774 2.253Zm17.133 1.319-3.146-5.796c-.463-.854-1.742-.854-2.205 0l-3.146 5.796a2.48 2.48 0 0 1-2.03.901c-2.556-.11-4.549-.282-6.888-.985l-.082-.024c-2.74-.824-8.339-2.505-8.473-9.924-.136-7.494 1.7-9.65 4.617-11.5 1.164-.738 2.832-1.735 5.112-1.735h2.402c1.63 0 3.256.172 4.847.512 3.127.67 6.368.683 9.5.04l.266-.054a24.5 24.5 0 0 1 4.914-.498h2.056c1.865 0 3.727.857 5.112 1.736 2.852 1.808 4.753 4.005 4.618 11.499-.135 7.419-5.733 9.1-8.474 9.924l-.082.024c-2.339.703-4.332.876-6.888.985a2.48 2.48 0 0 1-2.03-.901Z",clipRule:"evenodd","data-figma-bg-blur-radius":5.911}),(0,a.jsxs)("defs",{children:[(0,a.jsx)("pattern",{id:"midscene-logo_svg__d",width:1,height:1,patternContentUnits:"objectBoundingBox",children:(0,a.jsx)("use",{xlinkHref:"#midscene-logo_svg__h",transform:"scale(.00483 .0087)"})}),(0,a.jsx)("pattern",{id:"midscene-logo_svg__e",width:1,height:1,patternContentUnits:"objectBoundingBox",children:(0,a.jsx)("use",{xlinkHref:"#midscene-logo_svg__i",transform:"scale(.009 .01587)"})}),(0,a.jsx)("pattern",{id:"midscene-logo_svg__f",width:1,height:1,patternContentUnits:"objectBoundingBox",children:(0,a.jsx)("use",{xlinkHref:"#midscene-logo_svg__j",transform:"scale(.009 .01587)"})}),(0,a.jsx)("image",{xlinkHref:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAM8AAABzCAYAAAA/iVZRAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAGpzSURBVHgB7b1dzG3XlSU059rnc2wqdK5fEAXV8megH/optlAjNTSVGwRPCCV5QOoqqTq5UBIVGkjCn1RIyNdFo+pONYorgLoQTccWP9VSQ9l5oUU3at8SgjzwYAcEEeLH10gQoW7hG6Fu/3zfXpO95hhjrnU+O4nt2I6r1Ce5Puc7Z5999l57jTnGHGuutd0+xo94/hu37CG7tL0/YdEfM9tvWcStHrv5db9068dGYdZ3PNffeq1/HsfzDyzsQT8+a/np8X73V3O7Hg9i8/vb8fmx3QO7eOi+33nmgf3tRz2e/3zcsjfs1ht2fXk06OXRana05aX1Fnv45WhHtOxozqN1/bhuNpo+W9jw+njV9Dr/a31z8+b384ps9mo0u+/Hv09eP/zynRf8Y30N3D5Gj3jxW7f2/sbn/do/bf368wcoLl0AOADiBzJiAKXvjvciP/PA87gYCaTx6ARS6Hk85TYxtj/+j3MfOBs77sflHP/Xe2GvhbcDXHkBX47eXnVvL58e/uTLfufu70tg/eU//vrl1RtXTxw9/DL29tgBhst9jyeOBrt1nP+tzvbJprXxz8fro0ENTTra2I/3RhNjl9GdMBn/9bwSPlo+d9XM80ps473ANge4vB2vW27/8vH65X6yb59O7eUvP/vIffsYPX7q4IkXn7+124PPH234RYv9tic4EjBHoNoTL7Zf+2SRnp/ndehHfEuwjKu2h67mGWgSUD13M04WVxhgyhdhvgDG+C7eOXrC+DjGM69+Xt3w1469f9ft9PLxq7/bTp94+ZEv371vv4cef+UXX3viCPZPRD99Onq/3fsBmPBP9TzXEZdGkzviE16PFvWupjv+Plo+207vATxLUwbAk397th6A1igGLNikxx8tEmY+mnw7fhjgOV4fB7RZNnvb/F73/lx7aLv35d/66QPppwae17/z25cPXfcvHkzy1aOJPzXYxMkwCY7jdey7rcxDQASuaudnAzSBmFag6Xivk43y6oF1EkMrgBQyzQs8+oolcPL5+Pq4whNAyV8Jro2vtx9EtJePz14+/v7d3T5x3+xv3X/0az9dlvrOr3z/8vqNIaG2Tx/NeYDFn+iDWbrfOgBzHHtTc45zHC3nBE5kEx7/AeNUcwI0es+imrIz6HRAJQiHsXsXUPK5eT73BIthuwEWAaYNiBkYKZno2OGGbQaQjtfH6dizdtqe+/K/98g9+yk9PnLwXH3nL90+fvSpAxi3R+cfTEMpJjAcqQ2enSwjtkF+gvzGx2UezFOskwxDYPQFUABNhlIz4CcWfaYrTiY6ruPRWaTlxnuNmF2BY6ktjo7n2fmgN46/T9nR3E/js+NwMqQe4Nle6nF69bjq949D/EHvDx3Pcbx/uv/Gm7cePH73C+8LYC999aXLfHF9uuz9+OenW623x66TRYbk8kuL7VaCoo/YNJ5bHiOa6vi3b6P1PNb3Bsug+Zwcb32JTxS/xtC0ME82zGQbY2wa4FHrE0BH8ySkKOHASttQzgMkYQLTkHCeeRGkXDslmBJAA0it+cutxTO//M1PPmcf8eMjA8/r33n+8sL9qaMXf1EyDOC4JtNIrvFZzFKMs4CIr6EvCKrKgaZUA7DAVrFe/XyIfSDdDCnRUA3Z0Vx7yq85wDYAQUAxTAKHx1U/OuvxE0dINUTzo9MeR7Uhso/XMbTHANXGvwfw8m/X58e/+3a8dwDBMy4cGfQep+MUtkwQDomF7/btcrLGdmy/DWDk62O747sbFO343g7gHMcT+M4RHMQw+Z2FbQQgSjTFn52xRu+PHj7YpXIggma0zE6YCFgkblMrJ7A8m5t5D/jJ5j/4DuN9giclWyMTDcAk+1DSTUDdP11sd/+Zrz/ykYHoQwdPvPT8rev+0FcONvmKxfWjU47tyGumVJNsi+zw+14AC+U1/RxAyT7RF4bpUSHSesyQ2ZHbEDxuk30csZFp1JAR/CiATUi2fF5znxEGwToInccvbA72ERsNsGz5PrY7MfqPq37KK38A5WiWRvAAJAmeBMgEF8CQgDvO5yJ/I4HRm3FbgFUAGseQjOICiAlsPV8vQDH8ncTM95KZogJHNtueDdGCzJPsPD5LMEi25QVHrOlG00BSTYzEHpefOqWdT0Mhm3azDF6GXCeZyAeJJ1iScQ4ZByBto9m3noBKEA3X9CLu3PlTf+c9+5AfHyp4rl76q7cjrr91sMul917MAsm1u1hlMQmKebws6LcZBW8D0Zk5EItdHYt5QJAIRA7mSUYaF6ovsg5GgRU5WXZ+yyscyz/mPpaggUQbHRSd97jSeA8hMtD5s9MPWbfvg6UGk5wopU4AzvhOPyWD7JNpLN8TqPQ6EozYd0+W8wGmAstgHf19nMOevRpssyfzOAA5WLNLorkVC6mp7Zx5xCjpw5g+TyN62tIgLtgCnk4Cm1IGAs0CS9JGTpRkPs0DW5hnBY9tzH3SRACQ2tEMfrI0F7aL3O2z7eLi6Tt3PzxjodmH8Hj9pRcv33rpr74Ysb94NNNjbhWErF67p0Zyxv9sNDQmtsugiBZOByYDVSvRlddwdPsMRS2/wPfxjzvJf60hS81/TFJFQu71nL+DHx2P7BOp48pBmP62l6gxUpZEHjdJrWRRgZcyM/e2A7AAbwdSk2F7saPwjsTDI3tyknJ+zQO0QUDDvah0L3t9fhtxKpP+cKucJYpVwb2xOI7jt8YudM5sDPzpBZbEQ+YyLuDEcn2DBxbzu5nPhEDEf/3GezhWqxxKSrxzo/p7x2lmEBiGbIDaRrtdX+d2X+r71SvPPf3/PWUf0uMDZ563vvviV45Df+o4u0ezw4zT3uWkHfQ6LktnztPplkFoj161uGirPMteNvYxxnlSWVGuxRm7lIRjL0o26YtZ0ElAle9Y/qfTDWLYzKtSgxLBfmBL/uPgrpRWq/uW0q0kUsq2TjbICH/KSE/pFpRmhjzoBInXT5nDgEkg5fqQb9xP79p+owTj/lKu8b3cD3KeTtbJnGjkPUHj4ID/nnlVky0NK9pgUUda0YgFXeZA5Tg2zQA5bgDWGTMR26b4kc3b9FnYmfufvXGO9ei104HzbNpetrVP9kknDubB8fp0jM6dnIw0Xmd8ve8P9c/e+dVH79sH+PjAmOf17x1s8z/e+2tHT3zmaNJHp4wasdxnhJYJnP+NFb5vA7JLPVWQT77Ck2hK9KL3xDYHz5O5HH9Tqy0M5fU5pTk/c7rSbvUT9aXJi3xZjykFdWoB0DLkWzoS2iSAurBimnCxiq3gZvhVPBH4e/XgDP/ZOGQQxBb1UMYF8pxXFNeYslVn9mIdy6dkkbMxnPWZV08sFkYzwevKGhk7Cjiu74edASwqpHEbfom/xz5QrCOfCK4gmapipmfarNSZ213a9fZ/PPfrHywLfSDMc/W9/+b2QSC/c7DCo2jJmcOkcuZgpi+VArCkd3YU5T5n+U12usFatuQ5fs40vBLcj3pmX0yEuW2U3qCZkLlPdfJIt42AnwBAB8UIene6cj4ZJ3+ikZVgFKRdRHcL6m1D1O9w1vgvhnvWK0/J/Ie5y/h3cTRPMzGQHYy0DzfvYKEd+2GuA6ZBjnOabluZA8NkGIyTDEObmseH/MbnAGizKY04jhNzcFQ8DFW45D7ZRGfACmQ6MATESNl2LiMhPzPYBVbGgSWZ5whQLKZmGgc5vpPqm0qd+Q/dtzGIelAN2GkwDpgI35OhMAZaD5F354NgoZ+Yea6+998+deDhyG/i0coHDG5kEsfQOYjT+Axv4srYwgLIYWLmLGASz3zFFwIoZmHrMdqRpSz0t808ypXu8LtpKePNqGhZpKbEBppkhlKnw0qSWsKjMgGPYplCnbvYxWeeBKMi0cp8emWbEfqDNTDZ13oxCWKKBWINcx0kMczKaxzZKsQXO+CQ8qArDzJ9ziMr97AOxed3dEgTODh5spvNtgPV13gPr36RpWwEiboJROVuPOY+h+wiQS4TtYc8oWyqvfM9FJMcgYf5UGYGntv0jNdx+7juL37r6689YT/h432DJ1556dab//N/9/xxUHcTHPMTM2gatLMvuuwAQvgNobZ08No2jYTZ+HiLIBpgmt/xAkXuoAEPvgDQCcoBGIEM20yzQlaGS9c1L7lHLPAyU/qV9iyGQlDI04ZPBXqS372E5bLIs52YyPN/U3tE6ZnODtbLEh7JCAvJ1BMTVGfSSglJwoqVEqFxqXkCfcnvKO2yImCcOtli2s4mTM4rjQqDMGG1L9vr7AOu9irTsI+AMVG4hh4wuXZ4PcyInvvbDRJt78yhxICy0yONixx3p6CJAZzxfj73Knl87Mj1XvqP/swPvmo/weN9gef1733n8q0333zxaNrPkaQRk02dSBddmp8PxSWxROUtjGhiDZpWAzDZ/xsZZgLjjLUGP1euY0vuY8t7fv4aCBp5UTtnJquvxTxEY/+aO4hZq4NTq7xMzUDYEUTo4bzKZWwwPrOtYkkIio2wbzhu44HI68VIdNNMrNKZaadX4hwAxRn0cuVi+Tlf5ValbWuuY6YOD6ADNLqkNsduDAOmEOUAECQdHTVfQBh5qI4WEJPFBGaaklG1czvyNByOxqFoUO7lNIJhBuMMgI3n62ODwTjXWSoJ8BxuXALsQNo3nvuN958HvWfwvP7Kdy6PTv3icRpPeHWSfNB+JSIkt4zD8PlK27qv/X+QUZsWdtjUeerGSkS9rOdz6WaLUUD2adOilkJLoFisYMqfajy8HPNsYiBbtzFbORRa1EGxQURNgjLW0M3t+d9+1pZuC+OwSKzaSqqQvbhLS9UvLK1HBYQOJDcRzO1K7Yp5JhAWsIaOslN7iRlsuuA4TNJYsQg2G8ZBMgNDXwbNzuC5yDSdmRfZufk0LdwX4lXDT1Y0x5h55V3O4AE2Simqz9MxRFOs8o6VYHa9D4Adacfe737rN37wvgD0nsAzgNOuthePtrhkO6gfqV10QQw1IXz4DNKl2rykUqh3ogbDnP6krx2YI2JR+k5jO87t6WkCMD7zmPH3mZRrLoDoPfT6lmzEjMao+Uws5ZJrAPZkS0beYC4UMZOkGc+d4qrazELWusu26yUic4xG+U/1OLZrYBA+v5+5EX5TdBDMX9Y8ZjmaWTUhMJm5DIEuUERZy66qgMAR6oJSXgFidfFNxoATIDEl3NyHBlNJriSTPCPEjy6ToQOtY4MdORpkHEBysEj3fL8vzhpYqeSdpJrGgVjMwmcA6nqPu9/6d947gN41eEaO41cXL9oAji9XxGbHscrdGQmX77OfrxlPVJ6gDRIHW5BwwBTo/OI10tUNUCkfsgUwvgIpBwdQqZuDqqAML8A02dZ17LX/CvaugzRfVePZJ6bYyWe8IcOAlfj4eQ6+k22sor/isb7OZFxmFOb7ZRKfnQSERGCN7VlCwzHKSqFm2Z9HjVMZ84Y4z0fMKgZKitUgagepMbmTV+ETDEMtmjRmBUaCEecak1FKAmK8COCyihUYa+pk0k45KUnJkqIothoSDvYgcilWi6v2eHx23fFcJsOecSyur+Pun//6D75i7+HxrsHz1t6/dZzyJaXG0nccp148w56m/rXkN9UdvMXSEc86q+gaH6lHynGTFCvg6DWMg6o08GIvI7Ph/Sa6Q0VhjfvwRVtBOfWYL7kSLbflMBHPxSwgBvYsvFEf4WRmr2QOgV5UdCAA8f2YqAqGekk8tHxk/tORRHu3WUkgbyJ/h8ULo5PvzHvEEmdM5MWoufM5zWBhj0DyXgwVOqzKX21pkJjbeJmAynloMJChwGZI/MOlJzkQO01JPmdlgZGF+DcZJ38o93NssHMUZN/hyO38d4wF+eG++ZBwKNaPb/yHv/HabXuXj3cFnqv//aWnjl/9PNuikmE4aiEppjQ1AaFnBFlj/zRRkDqlNsQPFf6cJkCLKdHIQGZ02AjAbaP7htLbc1YyKxCVqdDOADKrdsh24wcbcxn8NAG6tohPUnK5dMbvLURaMdcqecDrrLdR2GCsrw3x6MIQzbugq43hKlQ57FR/zH9uzsQggKJynOUnYsl/epzLupWJcCjm2peVfzifTYe3gMzIGthPyL9wbeNONpy2dyxSMn97NwIr6MDpWEMWdrlnCRRY0wKQQC4JRyubOc+eYILBkIzFPOjYzfPf+sZrl/YuHj8WPK+/8tLlcVZPzQQ5BT65IbwkTBA7jFw2M3PzM1mFi92cwdndCyx2xh75C5i4oe2Y9wgorRG7cswaTQHta7NiJPP5naz1EBPhsyHblAehsLN5gWlhoJi6dMmb+LQk8cUeJplVXYQt4aGySTCPLGvmNBYr/hZggftDHY+fo/lbAWJ+dVq5tKnPQCO5xXI4OzMH5ncpdcUStjBFH1MHMjdihTVyFAJn91n3NqUgGMOEdx0nK6/NGCP0+zoeHkvJtwLOIunScfMa+5EjN/KbPbctuQYW2rPIP99H/mO3rq78W/ZBgKf1YwCU4zbzaqpXzMhJNol6bxnwXHlF9nNUFsTh4oUxtA1ylxuGgJMhBDAwCmWakq4CV5wBa7ILP8d+lPsE5R48BZ4Q2EnnGF7sSafO57kVu1pgdNvWEy8mFhJmiDVbaMImzqw6W5XcqCeVBWbs5F0DmiaCEgOdWdKwtX1im9vryiJZzxMhHtPMg7yC9JrHhVxnAKEUpqSYgBZWOQ2YqexpzTCljMNh0N6WRY2Dw29nhSOkaTdNZgnUynZPy7rDsCALlVGwB42FPY0CmAUAUVaWD5m3g42CTtxn/oM/89qPHQP6keC5euWQa0eeowscFNHN50AlI2RUP2linBJjFsoXOF4znr0tLlvJqaboPt0yW0DRVgk2xmi2mFXVZKW2LTY2D0NsJKA1AXNzR20nWWdKuphAXt/zOVQ1/45Fk+qrKPXB2VuR8/ioScwHSVvSfhVVzvaen1LSYBO3FWTZE8hC2bkKt5UrOKqs3ZjX1HF3q/q0mAULSNwjFqYJ+Ge7z9wEecsEXZ8uiC1RlHiPYiOBAoffCTavwVHlQHOwVCZEgiLAUlXT5lPOyYVjfgc3bTJRSbtkm7jm+A/YZ7BQ+E4H7mq3p/7cr/9o+Xb6YR8MuZbVA+OP5kxQHbwuwGR9c4ma5dt83TB5A0VhDc85fbkvWqeZM/Y4sYxmbKaukPNvO2NYSjWODmSPbGhhmJsQT5BzmDM0QILqask7iWX8XEDC1YDAEu8zrVJCQO8hH5QLzhEoYhzV2d1rDItw0vdTaKGL8dzEZ47fIW9Pfq+gNRnH0KFdYVpJf051EstkDRuZYtTAHZtj3QGwU9fCHqbB0AYLmbmFiowmM+CSnjGJz46dr0FK87tlUdOc8JIgsbKSoofkG/ZG1guE3WD7MW/zpYflMUNcYxKWIoi6UOuhsipkyehOrggDmPsS6NFljy50K072jeOtL9gPefxQ5tnMnyo4qKajpBcHsTLSeng5Wuwwc+pMYs69BkDneSfLtBoQ1eszJpl/h2033m+sEhx/b/la7AVrOhlmmwzVFuYBG4m1KtfB7iYDChRRbp4XY9qMGTH9BD/TamvnEJucocKKXapZ5N+ilzjZCrDKt9XL4BWbxjW41xojgGTjdGlKRPYdM5ppnb1F+cJKfwRslBwzOwOOcF2JPKUbrJAp3fRdbTvYJx0yAA5OnOrgyFSdxDwE4x7FcthnTLJlAWtKOOQzWVWQZThgkCnfaBREbkO7emfN8mCeTgNhv05XDgx0bZ//d3/9h7tv78g8r7/yvUuLt764XmRGbAh9ls/oqhO7FTXRW6J0DC51w6m3tE2NWzhWewDxAwA9ZztqnA1s0hm9GxnG8zKBYToKF3P3GYvnpVUg7wuTZb7TFcoRA8FmDM0ZotIM4296BoMcsePoTYv1J9yXIuu8wmdsBFdxHELLAXLniXsVeTLAV1RlE/oyMFo2LVDDshvkOBxBR3n+TMq5n8AvqMONg0cnRjLenc6dGAwAc+LStbAXOzWmX5uknywP5lPrwh9kjs6rfD4tW9tQes1uU86bUesYS3twRCb9a2v/E9XlmiJjbw1tAccClxSDbJYU3FiU0mjMNObC4xjHpc4if2mZsKeOTe/ZOzzekXku2tVT5mKMup7FOuszCYgKV2Tq4qC1TIcdrc3SGXq7eaAVzdexGkmgqjnX4KfPHGZ9liM3mCrZJsg6PplnZSgny2hWFbZx5V9iO5yTqeLBNag6x5CmVce8B+frU2ZMJqPiCpGVVY4w26nSGbCBch183Ku3OwHBjoE2L7NgulyxDCzWKP102nxx3BjXCijcbmdcyFkRrkJQ00BpsVGRHr43P7eFMUyOXY37+GQwdOi+ggzsWfnQfj5gOs83WDjKZ47/lFWdec1w1DrY6Zrvj7zneoehcDBP5kI7/o2g95lv/FvvzD5vY57BOhHXXxSqXfm/nJagPZ0xC2oBb1GBC0kNvWSUtVYnzT5ClV6qOcdv6pKZjNES+owwldNs2G5IMoTzvES2OdKmzcCQ+Ay8jByIjEimAmOZ6jrGpA8uM4ParCQqdqumYzHT7DCYGlB0nao5ZzrAsYfMU3pYiqxsLpyYGwkasbeHlqydDGQYMJ9Svot5p1zTcfVqQlc9m1PWWbFKTPcLbOCSVn62Io7PdA+dnwE+MEDR5XwFT9mqck+OWfaeCRzlODJYIMzWXKd42B35GhcXWdqPTS97MIzWbcAfNCaBIdGQfUHebDA5WwZD8itt7ttkoI7Xm6mKYxRAv5193sY8m13dxinUQTvcYq7JUOX8dNwWaeYrc9Qhz0MNafKK4rKZdSqqCpBz1uJtjDHzF85w4t9rjuM13jOdNuesKXyXeZDe24rBAjnSHB8qS7tlQHD8bcqRKn11ndb6HhnHKOHc2I5FOiZxj36MrLrgxeJOphOEHBcipKxby1XojvEzSMQlV+F7c9VPfqcmqPZyvDJyxwQZI74YgMbCPkEWM3+Zwnm3kLcCFezlpOU2e0xmqeoFS1sZwNT+jLkVjjkdt7HNNZ5ToqGSGsy6Zw7kcd3neNB+aMqDXWr8Z/13PZy3ntuzfAdu3NWx0+tkq/jS3buv3bqJlbfnPO5fsSWnYRVBKuCUYMwVdIGBkxZYvEIRGzAH+hshDTZAhN9TlyYryHnK/KAPBmH4FOXo0nvtNwdOx7MYQfN1ejUxSwAUFlvUNAA5aMYhxhFq2waWIRGW5mnKg1y+kwCQLZULAjTyMpJSNynOhugvwIxFg8DYrjRIkdqowAK5DG1qdSrBTH5D2CRm2VfGFW/oXvDwa3koLfewZ5fdzlmmAOe0kBvXLjCxBiSUGNDp4rkXm6AeTZMrZBYoOaVLjt8IW5aqilWaMZdSh7Pz/EdMxV2KHVz9LPn9OK7QYMewo8eqOsGuk76QoVgUNA9iQ+KArsBuCtkYWC57dJUt/FOnrX/p+POZHwqeIdnc9ydwuYIYAl4aLWafGoqEAwuaKUqCiGSIbhJMnoXHTOi2qA6eHZhzfxSlAeIoWUXbJt/TAmNpWyMm53Tu8d3NccqsR688XFrFOYixmRYdIVjLS/WqdwH4jk6f03pzgwTLeK1Ef5xFy5/C0GKjOZYGQ5UeTTubLqXrmh5typ8tXQ+3wgpA7DjUx5WDltyqKmJbHKjssBAyY4Cw+2a1rFQBBWyQV6tzwDJUUqOqaSdY8NNVoOnotTQWZm0bWoFyEMMRaRi0YkVKt7K8S772gsvCRMzmNaJLfClX4DexxwRLywFSoB52dP5Wa+gu3tiYTkHQQK9jRCX3eSb5QkjO8zkA9Lmb4DmTbdspPqdAZ4shMF1ZyRMHC7UtnEWWvkg4LCqc4TdS5lC6+awvA5L0WaPVrNKbknO0nUtabaOWDd87DtZUmLadKK+2KdU2fgdlNl77WLfF9lG/1SjvKA+HhPNN5UC5OJhkYZoG0eZ5OWWg0zZnY+ACy5KXZM2F/KDp5NRlVcUMHMZGj6pARpboGjyknHKO34iJYpVN+NdK8gyw7FT1uW1n0abPXKgTDNcMm5BYsJcHm+wEyA5ZlfIpJZiDWXZIsuDIGuVZjM9pYcesSnDtQ2M/ZVsXUDg4q89kKNjO39ppU+McuAymCl8hLIJTE4L1br5INk+5xoqDYSRcZ6FojNdjoDSLSncMpt6+Kd1O50jyz6/yyJXrinUSuig3Rzjp6BgI62SHTtbosrXDyn0rPE6RLpFfg5+BDi0Gk5xjvAFLuX6b7MLgHOFlWQdlmTut8Vi/77CrHYQfOC9qOpeJmf0yJDDUZU00FVXZyQGTjFvH1WpbQ9kn+AkIaFj6EsM2eI3ZPGCgncSHNmO5m/If5IJIofmewBJrbkDrV67VnuACWc8cAzMv8dtjIcSQPY3CzbEAIt20zogYJkOhrinG+61ydMqqlILgEC/1G3BUp6cY7AP822U4kJQLONoHWUa9x9AT5FZSwiWlzzlRQSbyKW6TbsVCkOSMGkOsjKSJJm5JPR7XOKMRhu3NNA6eext4Xv/+MbZzbZ8JBEXi3XWkTic0/5PlORmTZHTog/Fqyw6EM6AUw1QauFmQbAiDGqZjZ7Q5PdmLExMQ6qFysSBvWDlgM0cjN8813QRuNH06b7oiDdt3cjcBO8gtNAGmJf5G7RQ5Opj1MAwC3PzAwCsjHdudzOmy1o10bmxcqcT8Xb3O6Nl0eOy4MctlFMmTNRoriIH/gAPmBXEyAz47dn/NtenAIK2S9bpNSO03JgsROOhjsYAk13cL5GRc9s45AIvvw+1zxSDlU/qOMweyVaDCoUM3n25aaW8N/PGgvPoHnr3QFY2ZJwAlp9g4CSnmTyL/gbrLIcZABt5I6Q1MyTTtYKx++x3Bc3HVnhjxiL8FyaXO6+xoOvDMd1pUhp1aEoyQh9nSMw7mD2Kd0THZsY0Ws0+ArQBozF1iRnw2EBgl2Owu9jDGOPbMClk+wWfKctl0meH7OExjgqAmnsBK/BFQXA1JE1zopEVohLLpalpdN6tEn0wzenIybP0bBdyO+AMgaR4EBjPda38u1mmBfMejKgyOv3evfGfKNOY2Q4KBKdoyzqLxF0ixznxIOQ0LL0ta8ZngGfvtPiVlVU5nR99tMgX4v2s7Xq4+IbMwStg5wMBsUrOhDAepSFhZwkGIu4zKmBzF1S8YhYDbHMqbl9E0mDpUd945kASYV8So0hFfx7ScO28Dz3ERP1OZnev/YlnZKYEOXBNyGU2Nul4rc5r0fcuXqmuf3Ws2F4KQ5FmiipeKHTx4GFGyDvyal7aZCk4SCIm93Yt9cjH1Dsah5IACYzVD7mawISUoWn4dP0KHHiuebk3jQNmkwSw5zZJts9keDLW4ygRrY1EGQYIxMJSzZX/FYOxkIOYljs8Gy+SKn0zGd+QYAIzbnH/jCaIyD2gVY/YQVzVVfiOw1QCpzVKejovmc5yHXiPYqQZFR8oEUCMuqZqAUhINJCmHGEer4Bw4Jee4Xa8QrUCkLshtU9HNagaihyxjKliwFUguALK7sRJEjAOPrrNr7WYqAR7t0gKK49j01le/+v3LZ5752ftn4DnQdhud2UPTfMM0IBq44L3zOLaQw2Y1aGqV79aoPPOFkHMFm9mofaZM84onK17NajBTf8fs5OaFUdMgaZJNtgJXDaBsy5xtz2rJQLWgabZYysgxtBw+j1nCl8VT+UOZCfA3ey1Rgzwmw+5k3mAMgC2dV8gDbBrUWGk2DEDk2NIo5OwAVScL7Q41H8xNMske0gygSlbie/lvfG+Mu+TYy0iSIa2y0qkWLjQm0ASN8iKYEWEqxSlTwpckfim9ofuW83gIrvxE9W3Bax7VwRduAWhlZBFENShq6/sl4mav4AWnjYZ29oJZQdJmoI56f4KIu2wec+IMnNiAVZXBHGxjeZ5ZoT1Y6PTQw585Nr9/Bp7jq592sgdLSfLeAAJ1sFM5PWwvR2n6iOhoQFFRZ7JALJGfZMx9oO+H1TIvZpRm4dMFl3bOOICOnZ+xaPJMFJipchvz+eU9eRYYE4C0qFCvXjlV+pMDr3smzvCNZIZIytlZHsXwoKBmJUmtYofh7gmGjk/Q5Jk23mPHId/yDgs5ioqprNn5CZzKd+r9cTSQcJBt7tdBR21o9eM3MBPTWYwJxihQ2WIwmBjFmCshfIc+w9iNujctaSBgbXkNlOKCdAz8uNE+0LYkDhOT2dLLbGUmapWSa7UtGGFWS0fF0gU1BRpOIDKXODbBcsFUxlMlN6LLphJLCCEsNHIVTxrzngTP1ff/19tW406lsBZp1gVZdnbj4GeXn4WPxqKGUU0prkRuwFCEc5B6tmWfvX4xh4FdXxdb57QGjiOhUbFoR2ce0vVjpsLVzOH0nWItsSvLdHRCdOh6hzmALKORZToQjmwfw9RNnaFjFLDVlZi2NK8qmlMOCCxuLdELQLnjcBrrUUezbtk9OmUcLOYGB81RsLk8Yybk2C40fTl9C1Ylt8A+sD0YiDlRQ6dX4SbZhzYM7GdlnYCMVsBaSm+8Pp8BRVdkkVudRoE6ezFYwBmLSmrYK4a/x9wjlr5OVoTOUM5Tre90sOpSY/9egVYXJyfQgQ8UXg3SLUdfwIYOC/JQ7a7Pf14/dcJ5+KWhegCTKkcE7KwQGLttG0Qf1S2yMFisZRm2OgVShZwHM23jTNyzbqQiRJhyefxVBkNFFDRkaUJTXEI7bQwbZKSYIB9/p73KhXNGh00uylu/Ic/BVUvXzaNynWYyO3Tj+WD9MfMlZhkSzjxyvFPXOpjTII1LdsE9vAo844MNUu3IVvcOqXYcCgsbyTACULpxknat8hd+nhY0cplj7IKsAqbJRTUKXBrzUWHlOETIPQ0tc0GOZLmOlNXLHfOdXbzGkxQUi32U+zDxp8uFAE7liqtXgp0T5IwqcoJFLt7i3MXcEAAS5tB/6QV0UxWHXDYEeGP/OBttIANIOeKkcnCr4abdiW+k2I+fgefA1RPNYk0i0NGFeeX60k8iESsDpGIPh3H9zCzXnWDd5phOtj4jBKVgQWUz5TpHLtOkf2CBt8lEBB/13WjK5jURJW3o8YMtHQt1/o4JckktaQRkOrPjcm3URtq9cq1ROZW3A1EbRQnufB7HNVryWlzqoHiZfxAMkGMAEm4NMsoVcrLeYJgBrpY3q+pkoj7Ato8xIHw+zgBMQyDloKWj1ssm83QXw8A0SMkWNgc20ZmCZ+3lvvnMYcpZM5gTKzAkIiTDRu+qvIcxrpfzNKuxFRolrwUidAV2qNUIKGChJyK2BO/7KjBZZQNSEZUdVBC1ZczGSVccGxfV9ZCfAxh1mzE3WLWFLn3rVw7T4LcO0wA5T/NPT3JMqgFYnVfeJXWixkkqIWFijI+lKVuNRmUk1nwZY9MEAQkzLkxhOp+CqG3VhF7ED5MWZdwauA3aMbmmMVsK+B1ldIgmmcfgYusiQvYRCKNCAPNvMb7b6XGOcN3JfIb3jfhJcu3U/oHKyCreHmEp69lsan3It7ynz2Cehruy5a0P2wZGmrLt6LANcutox573/LECkJjmeoCEQIJ0g1GQAAsNjB7bWaaKLtbB6L7z7zlPh+NCpkppgAXqVhJLSqCkWZRGUAh11r75XCuLlxwXWKgI44B7kESkJ8qsJHNZsR6mYWv8pRQKXTrXkFAZCOw20nbaM2kMo9eUf+zxypHM6OcG4nOnlZ267M2LUcIG8DTfPqXTUyVBtxpTUlJTOnKmdY1xtlwDgl/WVavtsU2fWXWpnY7pDBERq5MGDJOdDHlL49XU74c8flwdWRzGAVJsQ3HReA410a5zzKWn7FNe0mEcAEhyFLcGqce51ilp05GRpUK73OpQYO+mAsQUaeY2ySZ5m0VKsHGrkHGLxfF6H7c7TMkGada3o4NfyyDYEiyd1QgFHMtSGuQ9meOQjZqjBIWZX87btyqjwcoxNiep4Y6wnNYAfYpjVgdvbFaYxMFZzAB7dkyYRIGJ5ujA+g4joLJhQa3IAtrA5t/8PvtS1LAOklQBl5ghLshMZRppG6/ILC2l/NjVDfPL8KLHpo19EGdqurO9ikz9LdsvMz7ygj+phAbZsrnyKiwFHcKgVx9Rx3KxBZN3Uz7jBRIrRtmI8kx8qE03bpPjMhPzbDhvZNRtk7RDqKGEcsEppwvKDg94hZhtOgqbeCE6zb9lLQX0cMY8AEdjSBAGWIpy7Acs1esSgonQHDU6HqEJasgfoCan673h7mx9SxcOd4fb8lbPkGuRIKI50NJFGyC5bjlwaZNt9K9NtmmWgEApPsCR2wTrz4zMg0JQ66tkI0hkFOCqT1et8hsAYM1VXCI2jOO2hAAMAlyNKAlsZV/HGnAEOP6umQSKifdttrakhfIbBIiEsvuyVwnHmAUI1CLgg1lRbSW8JgipITVwyu5xPF3bZYInXnvl1jXuH+XMnHDUzRm9iVeBViw062dqPk9NFSBkqcf4PTQFR+hdA5ko3S8Ry5KKhi9CwpGX0R1BhF41b13t0hi9HMvW9I4xnAz7G2vVJjPBEMihmW3mPLksbwfLydOxtuRsIyxlhSGaHh0ulgpi5jiSFEB256nkWEzKNIcZcEiyvfEmVCw0HcAZLHTd53ZDwhEoyncOEDnZJu3sSNCEcexnAAnMA/v5sLEHk8QWZVEbQIXC0VpTwGgtkz2XZJ+tocHPsKjzlMfGrLbmF1mBsNf4e4Glurfek0EF8AUli2ztzHsW17mGQrQffgvQ0ddt/mhFc4ObZvNz2m3RlJNbFNYcs/ThM47vDcGy+WMJnmt7+AmV7RXEXXKKhVvq+zoKlKXwOG06bkRyyDhgVOLorYuJZi612cxflFtRiAWN0WqJQHGlg/VCZUNuJeWgYTmA23g5G2NM7xK14ISABMvfqXq5QPTIjoyBVFjQzcpvcqrg7IIbAYQbDYN1QhHcwVvGqUZQjJFVvj7YBnekHrnNVndyO1jkAFSCZIzTDBnXPPOX47x2ss41GSUB1Mg6e8q1km7XFrktchyaDB3VCLy7KwdKi3FMA5tzgFSfrSUzBAgYKUJxUmxkWYMXE1jFJuQj2tVuZ8xjVrVrohWPaR7MGH72XzGaLyiENUP1w6LMWNlq0pUkm7LxBc2iCYdQCWcxSy4IFX6Z4MHBu+QVYTv+3IJJshc0TbkX+YzA0XQEm1SsxC+0P02PhvysZuPnod/AwCckW2nQZCdWVncBdOaYJqOCiRPzGrSP7vOJtRTIONSo472e0q1R8XVY31uvKdlknbFwnnGqNowCTu3m2v55RrMU3rRaFu8dk/lLhs5crX9ruGvZ+P02bqw7wLIlC4ExCJ5jcCGl2wGqlGtLXgRDYAHRyINMrGM5I5LmwPE+2D3zHcg4XwdGc2Yqc5fiWBNAzFhJQADRbjFazUlemk7NXln5jgJxFKWwrSY1s6euy5Etsk1AmwBEosO/OYJeHh96fOeOE0T1S92rU7C3EM9EXI4XwLuOCZ7xwAQafDQu/+bxqQTP9W6XJ83m9JIcM7lXJ2nVVZ3AFMMUEII60sBHOBcBzFaq9sVrMHZofhfjRZyAhr3C5dtEsYxQBEoeU58SMRN5qyuVSjLHrOAuTPWrvXTIskx1MBiKmaPKmbaMxaH79UHPWhkHyIXoV2gOCcGEMAGGyYZPKYY5IgmSkftsiVPJs0MTwDQYQIlVrh1SbjDKAEYg17k+3rtCvpPfySnEjXNVjv2PeSmcYwPTwCL3kWaFzTUMMOaDq7kLMLg85FueHy5d6RRAyKsbU6qdscvaYxT8CjTVha1ctRmAtW8qdnSWdJo13aCYYiGe9e+ztxd2kqmwcgYUIQbOualEE86A8o0R/PEET/N2acuUYe6Og4hWe6kPhBszueBlWohC526mMRlRbGX1SUUlzSzF/vANW1JPgoZTHViBQCswMkcShwEewW1hwWKGJyvGWR1NcMFjN47hNFYjwFpn7pOAOfL4nklLlqexmjwri+UoNSsId1ReVElN5+TW7NjIeXAz3WQdACgBdWx4nQbBYKBTjGkE10cUuW4JnPzuKtdy9Zc0EzxXvczvGnOhbmQozu23NBNCbJJjQQg8+WwJ1socyDKavKbUVxJNxZ6QOipaEq+U+lnq4VbWqD6hSTUR0yowbhMY04mYQKvw21BitKQ27I+xUJrTvubHy/HC56KMw38mtIQddj0nt3la+1jBfPSpP/4r3788ZTEiPhMg0LVXMAWtZi9+8RmHABr3qv/0OtlQnuPVXFanNyOMlfx0W8aBJstoUBmRvVhIViiuN9dYtYW5OP1B+VGHEWKMdxAaIyFpGD/KlWkaGAajXH0CdXSh9BY6BztpUBSgoqI3qgDgEvZkmJ4WdUqtsDQDIiWbEvvm1wmClsZgsoxcNpoE1zARxEIJFMg1B+sExm2u6YMAXHDSrhsMFMwIpVxD7lMDonnWjOa0rKujV+7hxspp9E7VYKjfTDaZfUBhNyoMx7Jdr3FMWd8zVLu+y9hMxlnAp2utXp9/qMKACqwXJq0ejceI7ctmPmMqNwJPXYZ9RmnFG29kzuOXJDJJLTPzyjuAXuY5wQ8WfNMpM8k4IogdX+lYDbha1Fjvej7gGSwCSGYDs2BbmgqM8S7gZE+sC8MxH49zNmS7ag6QZLhNpyyPda/ZqhPYwzTAsgxpCtiZZZ0rQ4y97oI75riY1hSLGpRMQ8BQI5bRfsPktGQg5DmScQBJMg2eB+CuunMawgEaA9NcBSTacNhybOfoNFc7xl1GjrM7ikFrWkIC01ClQOCYYYo0XbSak4N1B5zS00pR9AUWUe6LZBwDWF0LmxnLsr3XmEiI/PmVmOoFwx4C4ISlKhkE7BmXeYyz1q0pEFuZFvg1Vml49Ys48xucDMVQzn2XHitgHcgZzONLruY0ANgvizHU02MmY7WzoGSaGhQ1RQCVoCYcB/o/KDaKM6vgk9gjm2WLUSbQX+Fyj9F7DcL5bLzzxpbUW/ZG4LrAbsa1uZwyQGSZXkEilOYAZJzypCzY3ploO9o8yDg7yvUxvhJe8g1FnZw6kLnJIsMk3RI0A0ib7ZJrI385bOYrGgXJQAUwFHweww2R+xnmRlYTlFU9y3POZomGFgFh7qM8zWQWlMNmOj9qNnplZ63NqemMW1G6yHQ9y9D2iryaVXvOWezBjLXKAmorjLxULw70VUm0knD7sk+GUUHJzJaf8wU7wcnDpvhNOJEVc4Ip4/UwZ04HV1+iA3OJUs7BjkmjJCKHTaa1CXT0NBQjJkPNQwkUFbLhTLZeHl5bfkNKM4rmXUHI1Irq+MQjC1lNtigHXidoui4DG25Kx3qVRgDfY1WBLcIimSeQB1WWldZ2z/th+mbV8Tq7mmRavoZ8yg6Vd2PmYGkl9Zm7pHtmKbsO+3ow0pBmV5Rp1yXd4MSN966SUVCeg8+zLCcHUnOlSy97OjAlAd2tKqod6RsNAqf6RE5j5bK5mKVu977azipFCpoDalNYuSE7aXZbU94rNYTQ6VFsVddf5kHJRpFQunjY5+isXFknqifOPAbdVgm/urHRJMKYDjku1jR955EJUePoG7OgHSEYrnUH86h/OnNwMJZkECfviy5iqTmzRWPpl7BxVAITcuRKxFlU3pQzOcnuzoWdCcJ+bl2azXhlknJW58wOz4l22Hf9JsiO6yT0LmEJixpqrDNt7cyuyhQgyBrPSvVzWy7oFGnxplMXHN/BajKjVi0FncGe9qBJwFuaH4C5bskQw1HzK0oy5DNG5hl5zxgMHYbBAB/k2CHl4LbZYKGxH5gC1wTkdVNelUaF82ZOyK86wD2X3M2RMa5NzQCgYlZThQCmW1fyr+5pYpxQsFfHNAy5Vq9dGQwAcLMaG6xi42lGZJ+WJssL24sfagCpVJUCKn3p6jXTenIrf61AtfOYnSM/XngXitHfm5az8ioGYFW6xanA4FY/nbtNA6pTpbqOugRqQUU45xAi5Zx8MpczzB8GuznzhilaKfk4PpNf2RT/l6MyW76zXsYF3CHxxbZlyRAGmiT1fE41SBDTnQNIuoBFYdJVtcAFwVCS4vSjGtdNg1CFRAvj1AGtVDOroI9TL0u5ZT6D3KW3lHBX+ZqMw3GdzHHScGgYIB3PAaYZSyelOYD38/XO7yPHCoAIv8lbGWIujm5k1RkqUD0QAgHcSitmCbVGfo6mmOYQQ87UEvVugSWK9tk7FDdn+LPZxapH+gKa+tunUcXaXfrKfC5w8igWNOXOcjGjyq/UF9UbraYByfUT9jxQNj3a+USxuJxWUaznoCBOerHGayQYOZIVy9jSxYEubzG1rr7exBqrbJN00thNya8FNJRrZjODA4vpN0R2Zw3n0zQYG/ZirfEepyZ05CioAWE+xDshoEK4EXgNN86lVMUiGEE7umFh8cx9TPVkBA4lXEa8KqvJOTdVSnMA+KpjIHSwSLLPkedcbynp8r3Md5jnTEnnMg5yBulelrgtuZUFq6ody9EaFy5MFoouy1l5q2MwMHxxTtOi7XVRck6ywBLqVsxz2BnZYaWOcC1K2VN9YN8IipqYFqXAaC9LxlXnLwCCI2JKkJJRCwXph4SIBuYpsFnMvk3QFiPZtK4blcT47yiwPh395tbk2EkmAhA7e3VWrtZDfTgtAYBl2tbo1FM5FkZ4mtOlm5KwT+xL3iV7hs3GsCgoEpTKaBzVAlMb8mesClF5IFHpMfVyxVWnIMwRYVgjvRLhkByFZMspCFuuyBmOaXVa2YAL/4GBfC7WgZo0Wcmj40cBgY5bAgisA9AMpw2u22SkzHka2ScB2VhZMN7jXQSSbUbFNRYQ4RrOKcvyVupRy+cyz6EM07m28i0LQJjEx3BNtSRmWd2xujryB3wGVVs+8/V9BmJ1crw7/z7LWaucatmW++GQi02DQBir/ueLIpw5Eb+jzjTOrFXOhQ7al/2++aY9NqzqW1zmlftusTbCwrU2gZJVuIz0jjiWpfeyG0vgmk5GeQ5NGzqWspRF3owjdXI8DXXsXvqWb7PRa7TBF9YJgN80qn3Ko8LUAi44USEzpmwoE6KBXxg8IEmiJF9wrlJH9bXkGkGkxLxYh9MIMKcODJJMYZBwZB1MJQjKMYz1JIgO6banpIOLxu9fu2SaEYQYGB1wz9tkNJw7C1JHsIsa32Er7Yx7VYpjHPREly3gKDWNctHCJ+OsHXjVGV5qRl3CJ9tgPRZ9j0Dp6h3GeEachC3iZaGmiShtKreYg6wm1rHK6wm4M6ctv4Mu5NPxNUm2BYgE1/HvxKyGe3fmNZPG+pJx0Eumnc2ZZtmxmppTvD1Bo3ObbASpFNWO1eGd4svQ+byCBKcY27S7ybRzJVPaqBXUBDNMVchzE9thMXVF2Oo0xVTcLpbPQ5MteA4dVdABFurMeXeeB5gmauJZzwFNLhU1nbbDKIiqkEbCPye4HXKNFQZpFDiZCCAkK6VR0FnfBqnoletsjvvRmC3HYSrFyYuzYxqTF+tM8BiHEkpz9AUWYpbZl20VLEUK4fOPOczqVuQERgxbgeBlBK2/UVoOM0kLcnUM87BCUmIekC0AsjgbrskSYZ9sWdvntixHqTyL7QMD4RjqyepigrxwjE7azxmCv56Rtzp8nULuoNUkqSjzYnBa0zJnYKUSfnivz31MRaxzrh+G6ybQuUDuG+8sMO91WmBD/Mz/VEGpmEX78ph3Jqh02TEpjtOsNb+e+dW46ij4NLKQxyzrB2gCdnGnRRzIcYy3wjDkI2OsIB01w0zQrBog8+zMcyjpwBzBtZUJsGSp8MqlxndznKfLKOC07MDcvp1OXJXoYI4QmMetVvW0KVdKAkflSIKWLtO0lE22tYsxguSULY6+BGHo63iQep0gZpNSKuJrEJaUgf2EL4MfU4Lxg2jVdcPPceFRBjqMnOpo6p6uwzauE+W4Zo0UMT45ddOPW8mcYlba6ZCkuv2FV2ee/btOWSCbsSGQKBsPBJuDUw00sLJitePM+WfzhWsN6bp9BseWSIK1Ju6UYpp31EWJpnMiXAL1b6DDZV4O10Wo71rM+ToJKA4jGmdg8ntZpVy5TsNI/5BtNljBJOGQqyQ4goOgE0jXWUmQUwqichsVk25zmjXs6qzUzjk7vWlZKRR75qS4zuoBWtXhtq5nnV1d82/EwOgLUdJKncxk8XhdFraMsvtYQiKTfTlMuIGZFxG1GbBM+68OEFUTkCoEl37KeV5urRRmE+deipPyWdXUUxAVO4Qto4ulRqfOKjbUlO82uSPZ+qTgTgaf3wyVEQHdyHNsaZwFHeqgamMrPbxsZ5W+ZARbVhe12SY8AF+/lO9L2RnmEpmOe7zbV9CHZCeOm78DqmesY78IdRZNwu5it5J+xvMiO0XIfYRFzffnErY5ao/ylyDjRAJqLhE1ZJdFLVA4AJMMMm5jrnxo3Gy2tZJtnGaA+T0dFQzXnEGaxaVjXzsnvcm8sFmUWje1bXa2DvUq11Tc2Wf+CNl2VnKjS6SpAJJsXMfWZyiNYgYwU599wIgBo5xXsAyv3InMUEzF/qCr3Hhw4BhXR69w7layvD4rQ5x7U15VdFCyET3aK3eGcU3QlYQ7/jz1ahhDiIG2wXvr6woZgtfCFkui3kMAWh9s0l6JXo7oS8o5ZZWIGxGm4UpFNUP+cqj+TdGy85LhS0FJsCSaUbK7V+TDNRHDJVi4umjPkUMscJfnw0XKWDHtsTDQcPeyE5KBhkzbVxZKhom6g9ou0JRNHchXBuBawJK2uU6BZooe8i1YHc3p2xgOTDvaCZINldWZ0zQzjSV1lejkgjxYq6ys6cDUk858MNh0ZJ7FejnvdgIHh7uKeRh3igaWrslLFtUfhB0zhX06qkiBXL0Nra84rZwn1O2wVdiZJa0de/OKwZXHu6QZjq10U+UssKS71dqVAFarREO2uY+c5/7xxqW+iH1pTysIZgDgdl6JUnglict+bHkyo+zNw8ycofs0SxC2cPIFZJ+Xonmsh1d/xPJbdPmCQUC/z2AmydkFnCVOArhQtjXrwXqVwxcbpd0bi7TjICgvF2Z8yigYEb/bumINijZpW+NZixiiOtrCJelyO+Q6wTWlc0Jd34vB4NxZjelQttGqzvNKVsqlG0J1bQ0r0LCLVhV1sG8SOEa5VcBgfCg/CD4Rt+9spnWOjQk68435GS/YBFjuu0csaFv7EuWUY9aurCkk7k7jweYoOY9DEkM/pnhQlEj+FCfJ8FUOlH5yfsFFjaZZqrH5a6de/cwLIFE9cLzVZgLSJ/MoIvQZZgQSunEzX5qod1xIVBkskWh2+H4DFGlCaKCWx1nkUa1rVWDdoxIu12aMqrQfGZsEjEC06/OUUa5jmyzwkMTURDetSRDGxBz7y6lUOyurMR1gzATtYCACbjfNAB1jMCjR4Q2YtIxU4rgklnOglbdHTwbJ24v4WHjHKafHylqsbIDM1Y15x3hNfr9jHCzf53Wc83eM4zuqMpjd2uaoGKUQNoSBywvX3JfcRVcboBO4SvCIIPSkX0cHEQiw61C3nIYVF2F0ZjTVh9yk9KDamIHJ86aJUVJcNnYtxeF1aOrRXizDbpd8w5q+09Z/cIJ+r29jfooYhZ0w1rMONZ3HzDWYk1SzsJVjMcvMcEvSbEv6qct+V8DQCAjmTq7lD3TWjI48PyuJpWCjaxLL8RcwTEBSYsxDnfI0x274PdasOWWaWAb9ofel81oOSurens6CTCzO0TuTfEq5rgULwTD53cbK5wSRVeVB5k5dIPKqV+vDOLgmkAbjNUTKHpz8ltID/SwnyOb61cxvmXyDfawCh0CyELeVgSAwqAKD/tvcSq9Iw4zkZLEpXHSxbUo2dgoxiky0JbQyd9JF8nLKcBJmpqLkymxIAjAGcsPpsnkNzuCYRXcEGE+B0s649pSfbTuGak5H49/nbLhlHIaVBL6cpkEfS+7U+E/Y+YnS4YvuN5q2zl2bL8wguq+PQpIBYAa3khAnktjBdcGNjlmI7brYBfucdXV5TJJ4jNTB7cB0nJFdMrDzh7iEFCqRk6QohzrlWsz73lxjea0DCLl4ByajORgo7WkDW+A9mAmYym1aQ5oLiOBUa2FCsutYbmEsxpeVzEy8O1klWCRexsH4WtN51nngXNk/632f16J3tTar6RfesNqWoDmP764VbyQCwqcq8MltUA2tonVxQBQeKvqfcdfZj7IDMSYzoSnHLGrf2nuFfZM0W0DHOygIYc5TUIlQBpzrV099ZKm6peFsBZ2toj8IMwoPTNL8rCNmMSk/nJ+PLyH5DysTxNfksaI+QONoXIF5KSI1RS63mHLQJ3PwNPK7XsdllHrBPiCwErhgEjp6GZn7jfcKQBzzIYh3dqzOc+sCQ4fr1jEGNUpm6HLluEtgAJWV1h2LBO6NTh1H/7WUHIpOKT0pyebUb8ilbKOs1kYn6GJYDy0UxHOWc4n3WZ6TyCr57oa6NnZfOV6hrsFOX+GrguCEEduceQxtaaZLdfmWSGnVT2p3CriuaLx+Jgoj2/gqFWlzEXZxbtf5osYWa1ldWqlEFo3ilwl+lOosQItRsHLkPO3+GQeqg7qSavZPSTObrRaraeDQ7ezDhmkFi8V8/j3KAMikc1Zx9WifLp4rDMXCGNyfCDCvQMnHIGKWbb3P86rcKFg2jI6VFzv3MfM1duDAxLYI5UfL3ziAYM1YjfVggDJWBy7Hb/J27W6suPa5iie7zAIqrDkfM5exCRydZjYk1hng8jy64wDkWg4ycUSjJFmtZT++W7dgZQ7bKJ+quzuXaIFUDr25dDzqI+THC8BcNrXPvCaiRrC9DGd1jnWv6o9WDFTpiyilvoZa7/poyivXcRlbwIu0iErouZjFRI60gfuJAg6W0clh8dPpdP90xKz7vVbA8TnWolAj8J+dzjwjM9aJKTsDHlBUGJU/KcITBZxpKt5VO5oRTK0s6Uro8aELfPPi8iDM65CCnZsKr3IzMopcJMof1Ap1XsNOmzqnHmCE0MkuYhmTBMxiy16AcuUOO6O8Vu3sDpt850Wl2wabO4GSc2aQn6CzO+bVkBncTYsGJvNtxcbJXiVKMAia+1QHSprbMhqQXRjjdaujCiiLieJLTsjObpNtIH7IGZQaSkpmbhCVU+YAaRkKdp5DmdTNGRKqfzE9YRQja8yhzfC6j5pJqoFtmjuNDlxYrksOFFM+OkWmfjuLz2WEOIpM5a7xPazifry+NxZ6v7L2oM1ON4Fj1QaKNhpU4tyX0r8CC09tUoFYROKz6sxkNrCh8Jl6v94gK/HIQ/mLGngCPQQI/S4uGn4nGK3Y+b1XHmS2gohyjKyzSDVemChw0BDoAPZqWStf2glc2MYZRXCb9eCKntmxW92BjQu3e3V6deSSaahcMLbZGEnN02s+gxivhfEWkdWmXm2sUgl0lTYDF/+tYzyYluhFMy6A+TKIxwXddRUdjqfAIXipfs3Ufdxm7oOTEnB8AkZBURi1lVkWQywg0xY9Bkx0UiDrGqbGd1pykqSL7bFtOMnGqRGSaQOgSToM8G2zV8fzad+uXrb9VG0SC2jmGOmUJ2cdN2yRdiSrCg+UXc7bbZSYZYdQaxUoolq89gkFK8vYxDZ1kDIUiFda2kK0Oq2VgjfZ3ujwsKCDgCmQMIfBYdAQKMZLMhrLRWkfIdctl6Iy3hbxsI7njaG6AOdYYD0/Z1dAkWpDKuZRC8LjPDvvCs5qFQXSDIHGwje2Vd0WlUlVi9kluWpyvqcT0UVTJ28zmGX/jirb4fgNvtOthBk6XixA8IVRKpZGWac2L53Vb7ktasKqM1Pta68KyAIRHYdeNEEQClzu2rPrtxZ282JI5jHaKDAf0gs4MMAl28bbW/55P8Hz+KOP3P8//8b1g6OhbpnWMVBwAWAxdVnMy7GPajA11bm0Q4Oybi3KDOFnoaBUuYdPCoqz6xtVeYCQlccXzsLMM0CVJcK6t6Ukh1Zz5UvwJHQ6lFuJ9D09NCs3USwkubb3PsEWQAcWbEe+g22Y48wcqBgsLWfM4+AdiGhs+LxoOGQ6aFhvfsqMxsYaNLahx/NA6/7GebezWCgCcczLFeguQZPN2gGYktl9du0pzWZSj06h3Ve5oal/O9M6OkBijUkZtv6X+3HJVFsfuPZdm04HymMeY1ozM9CjN66LIrrb9NxKinHjzA877ohjkolj6hLsCDyDefK2Tgmu+G6Ch0f58rGr21ZSCwc3K6TZiRmZzWxaw17RRJbyYj1DUpW0MOUfvrT2wix1rVd24vXeeSw2f3iWpjsZQ1rNK+fpRGLuY/mZvSvHMVrQ6FACgHIaElWOUY1z6YGpCPn7XZ1NeY/K/Z2stJTvsBKb99NGuzm9HOT6ppsueAufIdkYXZhTsEnyfrN7WDHTjKXkPp5o83I+ck95gzAGX4JfOGJPBKDmqEV2pz4VxcxQqEhsYRyearmZqwEdBB4HXNwqLa3YmEfQl2EcYzVBqKc1JoeuPGj2EtfMGCd62zQQvGRXLMyC31Se44uBUIyT+3VKN9wd7lB39ws8x4G9fBzQ7ZiRw6R3K7IrfSEi6pCZl/CosFyL0bv3uW0oUpstwMHBrVJLZoG0uH63LGMpOl0Z9ovep9Egppm/PcGlYynmIFC4b4GJRgIcQxgHct4iz1GWtWWxZsjmru9kjjRMh+S7xpyrkmVTl0sCbA2JVi3ICNfKt+OtHavu6FqTQlyKB2TD5HZ8qir1Ua+z5T27xnSFPEDX8ArLMSTn3GOOjRntXSbCPRYWUlxnBFqDm0loFeap1ATaBXIxg2Re/UJKRFUEmM3MRkJRbFPV1OJG/nq2iZPqXMWqdVw2QbT84y811q4lwziBQsBtTqMt70t2OG0eLxd4riK+i/UQQrEmGB5dA0RVuKkOaTopP5dwBQ3JIZ1lcODVlykBNuWZfnLa3fnfvlcjFhvVMZB6AB5cWib081hiJvvllPECCtBdDGUs248CGHsAFU/nwCX93LFjTtKr/AiHFTbL/NuUi1yjodpvLKC4c/CxLRoLQMJ6jJxloTUeG2kLwzfISxp+G6ZcLoB6/MZYp5+r+3mzkv/OSNuBadm/6EFhpnxhuQTLo7DjIZAXXwTf5tUik2m37C7BM2R3Z8fW96nKnDelsMm0NoES9bf6fqFbB1eO2wRI/t2sCmcYfcg4rsiCAMR2HF2fwBkyLu/weezjwX/99T94b+wjwbNdXLzQr/a/EEry+xwEuyHXSkYunVOfe8xnIyXIYCtnjPavpJlxnAfJ+9iwV3RO+qixmR2ddGUP/T5YIih7ooAw2UVAcUXTei6J1gkkAWcCzBem4vZG+9o58Bi1XTFLTHNsNEEaBKVHcEVDpgzFRsap5lq3pyxOXM1cZxGsR/dn7Lg1DufU8TLB2MftiUhimWiZ4mDuXfcxNq7rmFG5Kb0Kpt7oQBHVw91i+dviBsjOezyQMJMRU9K+YJLN5FI4XlLwHDgRRS6kH2Yty65MtrMvks/FKC7gZZ5jApNNFkp1Vs4a7k6D93Ltl7wj9vHey/rBBM/jj/qD/+3/uX712OXllBbs2Dx6dozKX9hxwRg1CW4B0GwgSR3EI3VC5VU0T4wOVckyY2fnj6njhwl0BYqYMsvKomXaw7o3rlXGc+C+MzDsMfV5cEXzAlA9xyo/AeIuBmGiGwKjzXEkxtNiV6rhvuZzinwRXoGwOYDSwFZDQuDm3Ik23E5otNW43SMmhOO4Dd73hp6KeQxeN/g2BmQYCt009hD8G3u/2amX9Ly6n02MCFOQ6GwcfZ9LU9UM3smtdY3tvP8vyY6Z6Mz97EcnB0X9NMG0jsu4AGWm3IWs20iYGUwEmpJrWCB2m+/lPZe3DcsMHuzz7TPwsLW+ffzyvySGWEDjAo2CQ3W2MhgqyqpzYY8zH8J4iEp23VdLGNt2dejKk+0cgNRG8/UEtNVAKKoBAFSCZc1/JOnQ/nuN+YA9qtzmxliQcL/3xUAhWFUcyt6CcFLsqLaxEutazLFx8cGNbp9uj5pRcnSizTG3fo+51tzmtQI7A9dIa8KYn44LrgmwrVEHZQ/prrbPY+rQ7uiMjEQNt+3qrMNHEuQUrGtnB6LozkNeadUi9FYm7FNJUWnUHhYmg/hTfr2CpjiEbde8gvkivUp94Q86bQuTTM+areEYMM0bV87tskUHEyXDULYRLDnGO24uOJhnO9k9uwme49hfOH7hK7r5k6RNydsMt2i5irY80WCR2yrtoiJzWZnBC4NndPQgMLWA99yWx0VQ+GSYYhtIK/bsaTcXa9DmtJJbHPkvkFeVMd/XdGytf1ByMFwmQunXvrArfzqN515tVvlgJYU5muzlSsE4ysOH1mptaQMOcIbeM9cM2lExh87kCFAj+dk2CJ3x0YbIAZDmT3OoBwYCrgmZJ0HcmT+hk+Y+MSxghQGXdGKhp9wu8zJoIEL9DDS4vsUS0IhWgClr2MwXz7tKeawe9eEcrSkQqcnPATNBhJSm/s5zYKVAgHWybHA4/9UmGwCTABvvp2Rr9up/effnzmXbePyhn7249798//q14+WjCgiGC5a/UmMmUVGCnTmM88Zc2h8nO42BXqcnUBWjmdnZHJwzeVQAJngFEKZGM8fo83s9zvZZZgEBuljTC7PEEpVtZR44NxzkxY5j5l1uGmhVHHXsRPIj1k7AUe1FGzHfywPignrjoO9fhz/b+v7dAwcPmu+3jpj3ueNCfil1Bngw++82zJSTZyn3OM5tSbDRFsNFAvq4RiEZWbkVrEHDnCI1THFEWr292lOuHHIXsQnCBglpMjlt3pKn6usUIwBiizkWwzwrJmBJStWAduZX8G8ptGTsGqvh+1yAlgyDxN8HMAQanEFrqCBqMATslAxkYKAEUVYfHO3bv23L47T+cXSEbx57e0q5mS5uBIMRQ41ZRXi+rsQ+wiRZwhcgnMkgXIxzENXn3c6kWJDEBYSxzd6nGlglnMrRY612ZiTIzzuXWboBHn537n8GCsP5aACRPBFn4NKhkHJnOyhcC1mS4ZCuVj0uGO13i9+8+7lPftXe/njhq7/92tOt+4vHdx5DR2M/Yk7HZpVEzBRnlLSNu2qN/W85qAW91bBGOER/m1Jg9M2h73ufQd+xhBVnNE+TFLTKkG5LkACjTfYhC/Mm40jWITSrLxhxW3LM1Ae82rX5VDpaPKSO0adGbCxdSwlmiyyT5WxReQ0HPtM7SZbZElgGtkkZfIAmWceHYn7kdHpmvSgr8dkrr8StNx5K9tEwWw0EGvMFw9oCtkgoRODpQ9IgmGpZHbtkXbEKepMkVoDvVlnnBQqBrtuZ2xY39r+AdM2D8rH3yTp92bZ+S/Nf5PhNsJekM2oyAc01PGJi3agLKonHM2VH6IraSr4oc+3pX/2nHnnafsTjq9967VZ7yF862uCxnDTXc+EPrMCzRz7n2tXHZ7no4fh7Ry6X23SQ1ADDnn97zUfCIiEJHA0xyN7HnSdrwJwBsi4mIRu2qgTTtqyzq4euDUti/EzrM+dnk+m/iLDeas9e41poP0i1TAkhx9qSx9w0A/j3BqnG3OaQbDAEBlCCzAPGcZgHB4ju/Re/+nOfXa9HW/94/HF/cBz8PUXVM+DUeWTDleWFE5/TmPkdmk043y5GIWvsmi/To8ZNdKGOzoCLye303R3/fHXCeAeAWh1Gf+d+lm3G8/Xcb4GnA2AxPtvr+1z5ZtkO++AszQhUG8TKZqHcTIEZyYhGtI3X3Epra7Qa+tvi1TevH/5N+zGPZ+48+uBghjsjiYUOR4Q8DakxouY2LnzMC59jEw4Nn8+N0mR0lIZkmNrFOZbhlCxKFPLjho7HkzBJJQQTWuPqsG3J4ul8ORORSuSpIb1axXG36RZn1nH9azAhXIOVGP3Heei89DsN4zvj32kwRps5S7YbmCTy+WR+Ouj5tKU0y3+nLbfJdjxe28XRrheHPnvoYnv25vXwm2987/tXt4/O+iKjocnyBaOwa6zRf8YDfs4SlWIGryjdJX+UR5RkW+znlRV4DOOxM8pLeple32QkK+aaDDNZZo7R9DP20veXJYMRGdbciqg4i6QKte6l0fNZn6EzZK4ypQbzhDIfut/51//JR561d/n41/7igxcPW//2LjYRA+1YvjdXzsnXuKnvdQalg4165A20xEYZLHYGCAUNrr+LWajTId05JtGZ5C95oVqB51LdQY4Gmcb8bNuywue3VXYTfTESrLKr1SDQAKgrpyHTYCCTMq1MgJRluHNtSxZxmwCbrARgVWBKBkrmOfn93/5X/t7Hb16H0803/vBhHHzv/766d7TcZ4Kitc6XCbBaR/8xr3aRaaA8g4OJwWSclbrL2Aojdq0HoI7aw+bAKn7TywQYv7PzhrTsuzSRigEoDaclvgBn/e0zsMpcsKjPJuGGrHI8KLg412oNQr6+gB6P9eJX7RT5+f6/+h6AMx6f2OLpq7DbN0cc0xTcObZkuPFDjvmU3W0+78aGBsCa9igOTWthA3Aa11/qyGnwmectWzV2swQJSjHkdVSoJVpEOuwuc+zQkC2xhcFIEWQhBqHFlbMy5lA6A/axmddk7uJBNqUJAKazkbNsHPDcJNcMLuWGHMfJ0Jn/JHCOvxNcLZ5+p+vQ3vHq7NdPU9dWoKRjMC9UcP0sNy4aEhz0ZO8zlcTMcpvehSpb8g2s2k93zljiLwAZb8OeQKCUGlEvrueuJO2wrhmicGp+yKwzCRaUdEEJKHnn+iz0WV/kIauji2lDEVdGQgWWMFstUo3X5TSbkkFMVmmD9ne8MD/q8af+6UfvnY7xhiEr8h9cooyUedEhQ+xUHQOdCBE3Zv0WO4rTUWIErglfy3mw8DT94DmBBr07sYoRfCcjYOPWZn2YOj0+Q14CduDvUe41RP78yVbWMRN7dOSUXjOPWZij5RhOMghlrJ1Smo1//JvOWUqy47MLtSG2jSHRLk7H58c/PNv9//hrP/fsO12H0zu9+Yf/4CP3/qf/680Xjq7w+cp5GXCycyBsekkPiZUC2/lAMCJ+UEqFxAxNBvTCs2nP6QzRKi/2mvJpkWjOvMMWRrHCaC/gzXGfBbjrPiVB5ilMecZ4YDUtRbaTFxWxMfp02NgCGogzq6GZct2Ov1/+k//4J5+19/G4uLY7B628gl9HW/BO13W4SQco37EtdW7Oys4l+sc2DbI8oy7u53UcE+opcbFZJ5Rs46j6bjQLmvsiX9k1nMxhc5zMaxIbegN23udYkc1cSs9hRjCW7cx25bNxQNPPTQGUz9gyNhPTLGiYBUoT4AgyCCQZaCjvNuZI7ch5Lo4fGrnPsbe7P+watB/2wVtv9a8dTw/Utep+nxlp9Zrtpcs1W1NaeF2eit+ghu41Cr8uhSvXLvu05uz0lWXmjNJcHabMBzIM5dlM+rudl9vYZCD+hkwLRw4VWEKKF3/Nv1JacjUfAlDJmmtgkWOF2bDS4QLRjO58Hf41e5+Pu7/w6P3T1p45HZntESEzcqZRMDoC/oFZ0kTITj/ujTc6xzAGlFT75jAT4FbBeTJfiyoho0waKt+vzD5RUaYDzrUkaoNdkPfBYp1YmQqtzIrwYhcXGy1sI6Yyya+Zl6gCAOMweB4sUqZAE6O4nuMiGcdzm9F29Rm+m4zzUEsj4XgvnvvWv/Czz/2wa/BDwfPk44/cP+LD02iQ8g9Xq9+Al6i/bHmHkXztaGcRHoBUtJfVrPcqpp+pJH4sCXY2yKpOvoKp134Xh63TIVucuxVwnVMl6zijflu5Hs/US7Z4DWErUoSkTkW8lCDZeVFlc0S+Z7/8Tzxyz36Chx+S75AOD0aHOi5+XEiyJWCyQ3jarA7Zgg4K16kcOHbMZB/SYpM7Zi1aJeUAFh2tlHpZWNmgImyRqwKT2TLiP2VsDvVowmblJQvAtiY72ZCXwAkMjvLbdNBmcq/3xv7y3E901iTJKNWGdBPIhqM22iwBc3G4agcAL0a+cxoOm9/fWnv6R7V/+1EffvrnHn5mWNfGUhOzCR1kNZBV7GkKvLiwusButnj5zjRJDW6maVtn+bgmo3HeTIdtXqykDj+BYDfA5THNgVgYZx3jkbMWZ7lMyR5I0XIOl5CBF6ikVL7Hb2DkvnKEQGGhx2SisSDV8cZF2I+8MO/mcfcLjz44fuqbJ1qrCZoESw74RXa+zSqf2ZAsZ2dm/VYWPcLeXSqITWMjmeKc5z8mI6QKWckQczxFAVc5i5f2MljiPpN8AXP5vBy03McG9sFxR7Q2GZyMk2AdgKlch2BiACmwDKCAeYYFTZZqeH+0HVlp5D0DrHd/68s/e/9HtX/7cRfo+jruHP3ivsUcGKNeg+YSnziSZ7m8UcySLRkaSYQsZtkPEECzIaqjriZDTMnGcRWZCkv1AEkrF9folfzXIucJrl4gipWJINFiYSmsnoOVceJ8QJZf7oELm0foM6fxGvgMCnQlz6OoMIKDc6PRn7vz2Ufu2wfwODTRM0d/+UFp/E2De0isE0wDEJtpLASg4jYEkuaw4OBrHGV8t5Xta+bnZgiZAmBSI1SbgLvc3wY0AMfPWOpG8g83jMDJZzClt6wyT3Y1sdFp46DmBgDh32Aan6yTDJPjOKZ/FyeM4ZwAJoeEy2P45p/75364XNPjx4JnyLejE93JjTmWsV67aXv2mpqCdzyUU0ZVECBfwlrQU8YRXVUlSVUHBulkkZi1bblPq1t6JHTpwvkEWeVF+Vt71NgPXUHzyThuC6PxvESiOizkdnVOxoG+G4OH6arZlCOu6l2rRHbk5U/bB/QY7DNyn4yujmi7rdFZ0jE7o8cqiTxzBidbGhgHg6yuTjxaZjsbT6ltkf4DFsrqMdBq8JLxHmYmOOkMQDMOqvo5aJjHQOLy2PV79RzFOqdFwqWzOPMcP/niOnLAc7TNBdnpgkCZeVCB6dWHLt68+27a/seCZzwOAN07OurX5KZZNlf1rdK3USXjVcYy9c58v0L1lEIzttdQkruqPixWaWU3Bj81kY27I8hqPs/KTsVGsbBN4HaEoYFgQ3mWWKrcCVVJT8t+nti0FLKyunHdAEXm1kxyY9gjv/ZBsY4ev/q5Tz19dIz7dJuqsoAzHzEYaDISjAbBzC0aqgjQwb0cwmkKcGAFuc7NHMZrUhkqB26AhBsjp6GEazU+U2UDqCJgTZrAvzhmW4MjdnR2r7GZba20kAwb2wVNgyiAnMhQCRwBaZgtKeVcEu6V49p99pk7jz94N+3+rsAzHk8+9vAzR794WrQeNqkY6Y/AQWcu5ui6V8cmpsym0VAAwm7W9xeptDJVMZNyFGP+UrNUbVYfEDBgrr6w1fJvaj9bC17TTK36PCNFzcNVBHAZKnM0kA6Sa3CP+Y/Zq3bdnrUP4xH2NZXryFGrDrj5Wa7gLNHx6boNOekzwnsBgyDwYhaXNGNO09A4qmDGeWuMBrpQ6z77NAcC6wEs82cKQ3LbvOTbxuPdZC+D4QJOYQIB4KAxciIYLgYDbXp/YSqaB8NRg2wb27cHx/H8Y8/c+dF5zvp41+AZjycf/8TdPfqvWWiwK+rKJYj6sro7bCr9mUW1Gh9KCLnPDIqyzMk2tbZaSSiygLn1qqh2U360s6TGOK1oMRDOx3VsAY0O0gqELP7k8RjyK2M+ZjzmaZgwcmLvU9NXB4szSQJ5tN39oFlHj3/jC4++cPSTeycOMs4RcxY2OjvjNnOeZso/bIn8lYOUhTyZhrVq7mVDYzBTPporWFC6mioBwucY11n5W5kH09QAgIxGSzJMU33aAEzWn83iTeQ/knEXBNMFDIQ4bTISpkR7aAOYLjCoPMB2ME377HsBzni8J/CMxz/4+CN3j+j9NH0BN1sHCtEb+WYxlFWAL0dX8oc9r3Ij63GeU3WOpok5DGDiooOTJfIOodNoKJbKz1SnM4GYv7XPch8ry1xHajgRPPnCgDETHP6Xsp85gM1nvtdQrHj/i3/soefsw3wcuRQctRoPudk5R/WNN5oGJeEaJsMpR/P5ndGRWVAwpRhPFgBD6xTgaMvnNaeblGufsZKgHLgzdnGZBMrPUJw6Cj5xDsFzSROkBkFRxAlLHrIL7IT8J+CiwcJHntPITI1sc0rp9+AUAzh/18vvtbnfM3jGYwDoOJOn6ZqEpEo2Kzbx5ZkSp8pXdKEhgzjAaBNopiRd73fdqckqp1l2gTouiwm+fcqv4kZJNQIRGtGyqmdlo5mmzXq9eU+vOoZiGg0cVlkKWBkl7zIL2IGftg/58atfePTe0VnuVR6wRPQ1t2mTSVQTpnNwUgPNjiXhz+9jMKjNmZiVGy0SL+G0zcUCxWCT5ZTbCKTgLVn8BbJNk9Tqb01M00AopVha9QAD8hs+k2ko41CSw+9e4Dv3PxH+5G+8D+CMx/sCz3g8+dgnnna7/sJxzj8AJWtkJMw1KSH74mIy6O+1wLTyJCtwRVStnKRfKa1F6k3t1WfCXzlVRP1bKgyWaRZmBRwZGMs/TWMG8jXfv/KamLkNBkF1KpIaAA6XELB49U/8I++t+PP9PmJP9kGJvWt+yjK46NMqPpsesTpqBgntJeeKlWx14QgeGCOskfOoAIpVN1mFUEAyLGhSA8d018Y60U22elOpTcvCzVmjNy1oMAz+lS2f4zqBsZwGx02slH+zvu2h480DV9+9eMg++6ffo1RbH+8bPOPx5OM/88LREE+OzsH2wWL0pnyAEsaY41RN2NxGEklvLSmFLUDwpdZMrtrMW5g/ERi+rudW9rctOxarkPnGp720mpn5MoA7szhfIkJ+R+cq5LdlMJB5DzpJ+B37iB6DfY7O91wSSCv72dqZOZCYmKzU5Ap65SdK3p3rLrhxQk3VogkUvjKZL+fvU/qZeZvbaHENt2mdj+kCi72e/SidM6fEbA1TBlxOGxhmAOdigKGpasAxB2epKrigOcA8ZxgIz3zyD7z52T/9C+8fOONxsp/wMcaBXnrltSe7P/LUcU5f7aoXrcp7lh0EOlcvO9sqj0BdiCmdqFo344zBfG5cmipmrbsSfRaiBqY8VEX2zH9u3DGbi5MEf0cuwJwKzNwpf5p3+FX0HL/VpE8MU3pN1cJ5NON/3VTfdlzkF37pH374nn2Ej8E+Ryf63BFMHk2AhMtlCxV6Zgfus3pgspChV6MyQvOsa0yYCxMxEcxfY1v51MJWRB1UcXi4R6l84K7KdFwmgmRdMbjB5Mg+ADbleI8vk9xmOVIOEmeBZ2hawRggHix0MRy1037n67/4sy/YB/D4iZhHjycff/TBH/n7H/7a0Zp3jpa8r4ZYRBYhhIFURqAcjcetWxTAOTKvTrmwQay3pZvUVVJuVj8sjKQ0BfkU85kaSFrOQCXz+rKf7ShxRQqdV16A65wXP8mUpTiR0wQ83nfx5/t9HOxz/ziub6qQcnH+KIvQOX3ToGbMJB4ybOY/xSrTIitTRLjwkrQ0Emoqwtl3a30Bl9s3B1fl9JF5ynUj20CmceCTUwgCdXycijGk3SldtkOqhV2slQQDOCe/d7roT379F/+eDwQ44/GBgEePf+gfeOTZT1x84skjPj1dwutttVGsyl4K2VwctQyispN7nFc0jIe6d+Jh3Biq3sSXlfRDfieEOOwks8BgFa6sw2xtMetidTdKwPk6mu5WYyJ1rhhJD3oJz/3CH/1wrOkf9/g7rD1zHN8DVxV1oyzLXAxBawMZ2UZ7TJFeFQVM3MJauaI1+cxLg625k61GQo3vlJvmLdbyHAxyznwMUq2FBng3LMjhpyq7Ye0e1xkY/y6Y0www6TVlHG1ou38YCZ/9s7/0d//EMu3m4wMFz3g8+bg/+KN/6JG7hyR4/GiDZ9Xh9LlyIUieOQag/IOvJZ+yG7vXGCl3gcwlwaG/rKQZZaGjvG7JjdbBVhPKKOeCdWlA4hwAFbU5YWg3C4vKLOGqLKY+N+5m/eE7bD/s8bUvPPrg6GTPoLLaczpCO+vI6v+IJcv7YBUuTVXpCnvKzcFQgs7ne1MCrvkQzAGysnIsW8d2mPugPq9KcMqidqMlzUoB2M+sHMDaDadZZTDctgfHfp7+1B9448k/+0s/e88+hIfbh/x48XuvX27Wnjrs4y9htJ83nO2OW6IbZ26yknqse15TA4z3Oc1nLNJh3F7v1U2muvIcreypyuy6C0JoIFTjU31OtLCFuzjiqjGbedG9bF/8vdRXcb581IIcF609+yf+2Cfu2E/xcff5126dIl56a7fL459d5b+wq2u8vubfue5BrsKDBVhyFZ7I11pVZ1wr3DSYdU/rgLPZ0oaIR3yz1DUD2swdb6gRAk7gKnsfK9kQfOW4ScYtdvV87a8dAPxmszeeebdlNu/38aGDR48BoiO+3T06+Re5Eg0vjC81ZmUf15TrvUBUhaEFnmvc2iPWNQpm/ZrMBIuz6uiYRLUvq1XIsB4vWHEiSzZJbPOybCGBMLEsgTTGEDQBDeUgcd8u7LN3fkqSbX3828+/9qXrPf7Cm4fZcrW7vXWgYgKHi4YAOPhbi4cw6OR09h5n9YS6uTFmy2uGsGWjZVIT64xZMyvHdZG9s4RpcSdvLhWFtdNYFZGuYUo258S3paZtVAlsEb95On34oNHjIwOPHgNE+749dVyk20eDX2IqANYSq7uoBab84g5rTjC49Tlpzee6BHNh9mUinE8A6a7VuvjlNJdc8zhbEScoVYwD6TUCn4WdnNBGKRGqzaoloPIC96fv/KM/c9c+Jo9f+53XXry6jtuDfW6C52oCJ665nlsyEdZ3y3KoXe2et4pk+ZOdLWoZ9A8mFTEgNfYwh/blzNNprNwEUJttu5TsLKzT7LyievN7R+x67uGLN174qECjx0cOnvXxX/0Pb37+6PBfPK7J58k6LOgEUFKqpSngZ0DpmAjn+4yGacbt3ZY5QV7rJShyUq3ZUtqzOnMkHkbIqDGLWBcF3zD+kP2AC2/ke8PdGXcWfWjzV+78/MN/n32MHnef/+u3+376aweAfIBnBY6ANKTaFeXbzuWrOoHENfEwH6oviyGa+XRKb/5qSKJhLMJoqBjAQdOAr28uTGKL66Z/sJxH7nY4ag+Oa/Kbx3b3/vyXP5x85t08fqrg0eMvv/T65ZVtBxP5F48Ld1ug6MxfxETFUlpFJ+a6BfuS70zAYPyo7r3To0zzCL/JPHLxnJZggQfuE5w01IRFzBKYSDlx8qpovvPP/vxHU03wXh53f+f/ffHqym4P8LzVD8l7ACnBwvznqnNlUQJqF2DG6qOdVepQAoGVk9Z8Jzjccz4mJl9ndd4cpkqKu6bBWhgVIYsbtXe6H46kmT84ru6zfuHf/k9+ioBZHx8L8KyP5weQ+nb7MBQ+d1y8I2LarQITHO7gCqHFPPuyTNQi40KzQ9cbV3Ve69VJO3+o3AYfVERMm7fnxdVCeSeV/ycL5boE93/5Mw8/bh/Dx92/9NdvX8fBPjvYB4zjMBBusI8WUTxbVJFF7h3OztnyxvmI1dznfKZ8SUfSkSeOLRuqHyCBvcp00JaQxWKd+8dI7rePv1/4i//ixwMw6+NjB56bj9/+769uX1/Fl3Zrnzku3OXqvMkcKPmmzxgJNc06bLnvaJxNPUDGi9Fxn/YziGhc061hE2nxHBdxTrbiBd9wn8rj9falX/7Mh1w5/RM8/s3//LXnr67i8wMgVzdzn57LDg+Z5vtceTSZZ8kvo9aUWIBD3LiIHMxtKhxJ1abZoc3PBmRv5jqjTX935DEPm3/7P/va+yvY/KgeP3F5zof9+IU/cnHveBr/7Fvfef3S+8Xt42J97nC6nzja/DHTgB6uIIIdTQWzqoaGb/Z2YU6FhhSId2BXduQaOm18eymGXB4c6ziC+8cZOONxAP7OAZDLgySfmAWuKHvJNG51xZjrIWlhkNGaFTlYWvWAKjZgiQ2bvZ0VhE7LXyzOGbdH8PnuEeJ+96Ejf7HtzXsvfO2jTfp/ksfHnnl+1OPff/GtA0DtkHl++7gWnz4Y59MHEG7VIiBc15pjRmUcjM4xp/jkw1d9Thv1bErBqsnBPFqVP0tBvvorn/3xC7V/HB5j7OdvvtG/cYz1fHEscA+XzUb+E8NQ2Gut67nw/SgpJANpIckaJl4mLeZD4JK71mzNHePVQ6a9fDTkvS327z785hsvv3D39w5Ybj5+T4PnnR7f+CtvPXHtfmvfT58+rvjjB2gOUB2A2uOJG2M9nMxH2LDKQQ3CJJdanIWKhjsQ1Ij3Fve27fprf/Kzn/xYy4t3evzL/+lrX7q66k8dgeexHCi95uBod96ahM5b1BgcjReu/5B3UmRdYmCFdkrdHxxMfd9HvtL3V1trL28X9vLP/K2/ef/3MlDe6fH7Djw/6nH3+bi1na6fGMvSHix1Gft2mRPdPC6PS3/rAMotDq1e0lu9lBuExTviwWGVvrpt7V5r19/+2k+4aOHH4fHPf+tvfGnf/TPHGNATB/M8caX79+Sz/eBopwdcYOV+jvtY3I/eDpDtrx7h47UW+w9OB1iuT9f37c03Htz7fQaQH/X4/wH+7zkJyd02dQAAAABJRU5ErkJggg==",id:"midscene-logo_svg__h",width:207,height:115,preserveAspectRatio:"none"}),(0,a.jsx)("image",{xlinkHref:"data:image/png;base64,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",id:"midscene-logo_svg__i",width:111,height:63,preserveAspectRatio:"none"}),(0,a.jsx)("image",{xlinkHref:"data:image/png;base64,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",id:"midscene-logo_svg__j",width:111,height:63,preserveAspectRatio:"none"}),(0,a.jsx)("clipPath",{id:"midscene-logo_svg__g",transform:"translate(-21.193 -36.687)",children:(0,a.jsx)("path",{fillRule:"evenodd",d:"m14.619 40.412.082.025c2.186.657 4.053.825 6.578.932.365.016.704-.127.932-.363l3.08-5.674c.94-1.735 3.484-1.735 4.426 0l3.08 5.674c.227.236.566.379.931.363 2.525-.107 4.392-.275 6.578-.932l.082-.025c1.384-.416 3.235-.984 4.774-2.253 1.475-1.216 2.74-3.144 2.8-6.483.066-3.66-.372-5.858-1.066-7.316-.672-1.411-1.641-2.254-2.965-3.093-1.305-.828-2.922-1.54-4.435-1.54H37.44c-1.566 0-3.128.159-4.66.473l-.265.055a24.45 24.45 0 0 1-10.02-.043 22 22 0 0 0-4.582-.484h-2.402c-1.895 0-3.3.818-4.435 1.539-1.359.862-2.325 1.704-2.988 3.106-.686 1.45-1.11 3.637-1.043 7.303.06 3.339 1.325 5.267 2.8 6.483 1.539 1.269 3.39 1.837 4.774 2.253m17.133 1.319-3.146-5.796c-.463-.854-1.742-.854-2.205 0l-3.146 5.796a2.48 2.48 0 0 1-2.03.901c-2.556-.11-4.549-.282-6.888-.985l-.082-.024c-2.74-.824-8.339-2.505-8.473-9.924-.136-7.494 1.7-9.65 4.617-11.5 1.164-.738 2.832-1.735 5.112-1.735h2.402c1.63 0 3.256.172 4.847.512 3.127.67 6.368.683 9.5.04l.266-.054a24.5 24.5 0 0 1 4.914-.498h2.056c1.865 0 3.727.857 5.112 1.736 2.852 1.808 4.753 4.005 4.618 11.499-.135 7.419-5.733 9.1-8.474 9.924l-.082.024c-2.339.703-4.332.876-6.888.985a2.48 2.48 0 0 1-2.03-.901",clipRule:"evenodd"})}),(0,a.jsxs)("filter",{id:"midscene-logo_svg__c",width:27.157,height:19.138,x:21.193,y:36.687,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse",children:[(0,a.jsx)("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),(0,a.jsx)("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),(0,a.jsx)("feGaussianBlur",{result:"effect1_foregroundBlur_8049_134028",stdDeviation:3.212})]})]})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};function hg(e){var t;return null==e||null==(t=e.platformSelector)?void 0:t.fieldKey}function hy(){return(0,a.jsx)(hm,{"aria-hidden":"true",className:"session-setup-select-icon"})}let hv="Create Agent";function hb(e){var t,r,n,o;let{form:i,sessionSetup:s,sessionSetupError:l,sessionViewState:c,sessionLoading:A,sessionMutating:u,onCreateSession:d}=e,p=u||A||"blocked"===c.setupState,h=null!=(t=null==s?void 0:s.primaryActionLabel)?t:hv,m=null!=(r=null==s?void 0:s.title)?r:hv,f=null!=(n=null==s?void 0:s.description)?n:"Create a platform session before running actions.";return(0,a.jsx)("div",{className:"session-setup-panel",children:(0,a.jsxs)("div",{className:"session-setup-card",children:[(0,a.jsx)(hf,{"aria-hidden":"true",className:"session-setup-logo"}),(0,a.jsx)("h1",{className:"session-setup-title",children:m}),(0,a.jsx)("p",{className:"session-setup-description",children:f}),"blocked"===c.setupState&&c.setupBlockingReason&&(0,a.jsx)(W.A,{type:"error",showIcon:!0,message:"Setup blocked",description:c.setupBlockingReason,className:"session-setup-alert"}),l?(0,a.jsx)(W.A,{type:"error",showIcon:!0,message:"Failed to load setup",description:l,className:"session-setup-alert"}):null,(null==s?void 0:s.notice)?(0,a.jsx)(W.A,{type:s.notice.type,showIcon:!0,message:s.notice.message,description:s.notice.description,className:"session-setup-alert"}):null,(0,a.jsxs)(ub.A,{form:i,layout:"vertical",className:"session-setup-form",onFinish:()=>{p||d()},children:[(null!=(o=null==s?void 0:s.fields)?o:[]).map(e=>(0,a.jsx)(ub.A.Item,{label:e.label,name:e.key,tooltip:e.description,rules:e.required?[{required:!0,message:`${e.label} is required`}]:void 0,children:function(e,t){if("number"===e.type)return(0,a.jsx)(p$.A,{style:{width:"100%"},placeholder:e.placeholder});if("select"===e.type){var r,n;let o=hg(t),i=function(e,t){var r;if(hg(t)!==e.key||!(null==t||null==(r=t.platformRegistry)?void 0:r.length))return e.options;let n=t.platformRegistry.map(e=>({label:e.label,value:e.id,description:[e.description,e.unavailableReason].filter(Boolean).join(" \xb7 ")||void 0}));return n.length>0?n:e.options}(e,t);return o===e.key&&(null==t||null==(r=t.platformSelector)?void 0:r.variant)==="cards"?(0,a.jsx)(pz.A.Group,{className:"platform-selector-group",children:(i||[]).map(e=>(0,a.jsxs)(pz.A.Button,{value:e.value,className:"platform-selector-card",children:[(0,a.jsx)("div",{className:"platform-selector-title",children:e.label}),e.description?(0,a.jsx)("div",{className:"platform-selector-description",children:e.description}):null]},String(e.value)))}):(0,a.jsx)(X.A,{placeholder:e.placeholder,suffixIcon:(0,a.jsx)(hy,{}),options:(null!=(n=null!=i?i:e.options)?n:[]).map(e=>({label:e.label,value:e.value,description:e.description})),optionRender:e=>{let t=e.data.description;return t?(0,a.jsxs)("div",{className:"session-select-option",children:[(0,a.jsx)("div",{className:"session-select-option-label",children:e.data.label}),(0,a.jsx)("div",{className:"session-select-option-description",children:t})]}):e.data.label}})}return(0,a.jsx)(J.A,{placeholder:e.placeholder})}(e,s)},e.key)),(0,a.jsx)("button",{type:"submit",className:"session-setup-submit",disabled:p,children:u?"Creating...":h})]})]})})}function hw(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function hE(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function hx(e,t,r,n,o,i,a){try{var s=e[i](a),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function hk(e){var t,r,n,o,i,s;let l,{controller:c,appVersion:A,title:u="Playground",branding:d,playgroundConfig:p,header:h,className:m,playgroundClassName:f,notConnectedFallback:g}=e,{state:y,actions:v}=c,b=hE(hw({},l={showContextPreview:!1,layout:"vertical",showVersionInfo:!1,enableScrollToBottom:!1,serverMode:!0,showEnvConfigReminder:!1,showClearButton:!1,showSystemMessageHeader:!1,promptInputChrome:{variant:"minimal"},executionFlow:{collapsible:!0},deviceType:y.deviceType,executionUx:{hints:y.executionUxHints,countdownSeconds:y.countdownSeconds}},p),{executionFlow:hw({},l.executionFlow,null==p?void 0:p.executionFlow),executionUx:hw({},l.executionUx,null==p?void 0:p.executionUx)}),w=(t=y.runtimeInfo,r=y.deviceType,hE(hw({},d),{title:null!=(n=null==t?void 0:t.title)?n:u,version:A,targetName:null!=(s=null!=(i=null!=(o=null==t?void 0:t.platformId)?o:null==d?void 0:d.targetName)?i:r)?s:"screen"}));return(0,a.jsxs)("div",{className:["playground-conversation-panel",m].filter(Boolean).join(" "),children:[(0,a.jsx)(Q.A,{open:null!==y.countdown,footer:(0,a.jsx)(q.Ay,{onClick:v.finishCountdown,type:"default",children:"Skip countdown"}),closable:!0,maskClosable:!0,onCancel:v.finishCountdown,centered:!0,width:400,styles:{mask:{backgroundColor:"rgba(0, 0, 0, 0.75)"}},children:(0,a.jsxs)("div",{style:{textAlign:"center",padding:"40px 20px"},children:[(0,a.jsx)("div",{style:{fontSize:"120px",fontWeight:"bold",color:"GO!"===y.countdown?"#52c41a":"#1890ff",marginBottom:"24px",lineHeight:1},children:y.countdown}),(0,a.jsx)("div",{style:{fontSize:"18px",fontWeight:500,marginBottom:"12px"},children:"Automation Starting Soon"}),(0,a.jsxs)("div",{style:{fontSize:"14px",color:"var(--midscene-text-secondary)"},children:["The selected session requested a countdown before execution.",(0,a.jsx)("br",{}),"Please wait until the run starts."]})]})}),h,(0,a.jsx)("div",{className:"playground-conversation-body",children:y.serverOnline?y.sessionViewState.connected?(0,a.jsx)(hh,{playgroundSDK:y.playgroundSDK,config:b,branding:w,className:["playground-container","playground-conversation-skin",f].filter(Boolean).join(" ")}):void 0!==g?(0,a.jsx)(a.Fragment,{children:g}):(0,a.jsx)(hb,{form:y.form,sessionSetup:y.sessionSetup,sessionSetupError:y.sessionSetupError,sessionViewState:y.sessionViewState,sessionLoading:y.sessionLoading,sessionMutating:y.sessionMutating,onCreateSession:()=>{var e;return(e=function*(){yield v.createSession()},function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){hx(i,n,o,a,s,"next",e)}function s(e){hx(i,n,o,a,s,"throw",e)}a(void 0)})})()}}):(0,a.jsx)("div",{className:"playground-conversation-offline",children:(0,a.jsx)(W.A,{type:"warning",showIcon:!0,message:"Playground server offline",description:"Reconnect the runtime to continue using the Android playground."})})})]})}let{Content:hS}=eA.A;function hI(e){var t;let{serverUrl:r,appVersion:n,title:o="Playground",defaultDeviceType:i="web",branding:l,playgroundConfig:A,offlineTitle:u="Midscene Playground",offlineStatusText:d="Server offline...",pollIntervalMs:p=5e3}=e,[h,m]=(0,s.useState)(!1),f=function(e){var t;let{serverUrl:r,defaultDeviceType:n="web",pollIntervalMs:o=5e3,countdownSeconds:i=3,initialFormValues:l,onCountdownFinish:c}=e,{message:A}=ew.A.useApp(),[u]=ub.A.useForm(),d=(0,s.useRef)(l);(0,s.useLayoutEffect)(()=>{let e=d.current;if(e)for(let[t,r]of Object.entries(e))void 0===u.getFieldValue(t)&&u.setFieldsValue({[t]:r})},[u]);let p=null!=(t=ub.A.useWatch([],u))?t:{},[h,m]=(0,s.useState)(null),[f,g]=(0,s.useState)(null),[y,v]=(0,s.useState)(null),[b,w]=(0,s.useState)(!1),[E,x]=(0,s.useState)(!1),k=Z(e=>e.config),S=(0,s.useMemo)(()=>JSON.stringify(Object.entries(k).sort((e,t)=>{let[r]=e,[n]=t;return r.localeCompare(n)})),[k]),I=uz(f),C="string"==typeof I?p[I]:void 0,O=(0,s.useMemo)(()=>new ug({type:"remote-execution",serverUrl:r}),[r]),{serverOnline:R,isUserOperating:j,deviceType:P,runtimeInfo:M,executionUxHints:T,refreshServerState:N}=function(e,t,r){let[n,o]=(0,s.useState)(!1),[i,a]=(0,s.useState)(!1),[l,c]=(0,s.useState)(t),[A,u]=(0,s.useState)(null),[d,p]=(0,s.useState)([]),h=(0,s.useRef)(null),m=(0,s.useRef)(!0);(0,s.useEffect)(()=>(m.current=!0,()=>{m.current=!1}),[]),(0,s.useEffect)(()=>{h.current=A},[A]),(0,s.useEffect)(()=>{e.onProgressUpdate(e=>{a(!!e)})},[e]);let f=(0,s.useCallback)(()=>{var r;return(r=function*(){try{let a=yield e.checkStatus();if(!m.current)return;if(o(a),!a){h.current=null,u(null),p([]);return}try{let r=yield e.getRuntimeInfo();if(!m.current)return;if(r){h.current=r,u(r),c(eU(r,t)),p(eK(r));return}}catch(e){console.warn("Failed to get runtime info:",e)}try{var r,n,i;let o=yield e.getInterfaceInfo();if(!m.current||!(null==o?void 0:o.type))return;let a=(r=h.current,n=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},r),i=i={interface:o,preview:(null==r?void 0:r.preview)||{kind:"none",capabilities:[]},executionUxHints:(null==r?void 0:r.executionUxHints)||[],metadata:(null==r?void 0:r.metadata)||{}},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(i)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(i)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(i,e))}),n);h.current=a,u(a),c(eU(a,t)),p(eK(a))}catch(e){console.warn("Failed to get interface info:",e)}}catch(e){if(!m.current)return;console.error("Failed to check server status:",e),o(!1)}},function(){var e=this,t=arguments;return new Promise(function(n,o){var i=r.apply(e,t);function a(e){ux(i,n,o,a,s,"next",e)}function s(e){ux(i,n,o,a,s,"throw",e)}a(void 0)})})()},[t,e]);return(0,s.useEffect)(()=>{f();let e=window.setInterval(()=>{f()},r);return()=>{window.clearInterval(e)}},[r,f]),{serverOnline:n,isUserOperating:i,deviceType:l,runtimeInfo:A,executionUxHints:d,refreshServerState:f}}(O,n,o),D=(0,s.useMemo)(()=>{let e,t;return t=(e=(null==M?void 0:M.metadata)||{}).setupState,{connected:!!e.sessionConnected,displayName:"string"==typeof e.sessionDisplayName?e.sessionDisplayName:void 0,setupState:"blocked"===t||"ready"===t||"required"===t?t:"ready",setupBlockingReason:"string"==typeof e.setupBlockingReason?e.setupBlockingReason:void 0}},[M]),z=(0,s.useRef)(null),B=(0,s.useRef)(null),F=(0,s.useRef)(!0),L=(0,s.useRef)(void 0),U=(0,s.useRef)(null),K=(0,s.useRef)(null),J=(0,s.useRef)(!1),Q=(0,s.useRef)(null),q=(0,s.useRef)(null),X=(0,s.useRef)(null),W=(0,s.useCallback)(()=>uN(function*(){if(!uS(k))return Q.current=null,X.current=null,!0;if(Q.current===S)return!0;let e=X.current;if((null==e?void 0:e.signature)===S)return e.promise;let t={promise:Promise.resolve(!0),signature:S},r=uN(function*(){try{var e;return yield(e=function*(){return!!uS(k)&&(yield O.overrideConfig(k),!0)},function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){uk(i,n,o,a,s,"next",e)}function s(e){uk(i,n,o,a,s,"throw",e)}a(void 0)})})(),Q.current=S,!0}catch(e){return uv(e,{title:"Failed to apply AI configuration"}),!1}finally{X.current===t&&(X.current=null)}})();return t.promise=r,X.current=t,r})(),[k,S,O]),H=(0,s.useCallback)(()=>{let e=null!==z.current;null!==z.current&&(window.clearInterval(z.current),z.current=null);let t=B.current;B.current=null,F.current&&m(null),null==t||t(),e&&F.current&&(null==c||c())},[c]),Y=(0,s.useCallback)(()=>uN(function*(){if(!(i<=0))return H(),new Promise(e=>{B.current=e;let t=i;F.current&&m(t),z.current=window.setInterval(()=>{if((t-=1)>0){F.current&&m(t);return}if(0===t){F.current&&m("GO!");return}H()},1e3)})})(),[i,H]);(0,s.useEffect)(()=>(F.current=!0,()=>{F.current=!1,H()}),[H]),(0,s.useEffect)(()=>T.includes("countdown-before-run")?(O.setBeforeActionHook(()=>uN(function*(){yield Y()})()),()=>{O.setBeforeActionHook(void 0)}):void O.setBeforeActionHook(void 0),[T,O,Y]);let G=(0,s.useCallback)(e=>uN(function*(){let t=uD({},u.getFieldsValue(!0),e||{});w(!0);try{let r=yield O.getSessionSetup(e);g(r),v(null);let n=uz(r);L.current=n&&"string"==typeof t[n]?t[n]:void 0,u.setFieldsValue(uw(r,t))}catch(e){console.error("Failed to load session setup:",e),v(e instanceof Error?e.message:"Failed to load session setup")}finally{w(!1)}})(),[u,O]),V=(0,s.useCallback)((e,t)=>uN(function*(){if(q.current)return q.current;let r=uN(function*(){var r;let n;try{if(J.current=!0,x(!0),!(yield W()))return!1;let r=null!=e?e:yield u.validateFields();return n=r,yield O.createSession(r),(null==t?void 0:t.silent)||(K.current=null),(null==t?void 0:t.silent)||A.success("Agent created"),yield N(),!0}catch(e){if(e.errorFields)return!1;if(null==t?void 0:t.silent)return K.current=uI(n),!1;return uv(e,null!=(r=function(e){let t;if(t=uj(e).toLowerCase(),uR.test(t)&&(t.includes("puppeteer browsers install chrome")||t.includes("cache path")||t.includes("puppeteer")))return{description:(0,a.jsx)(uM,{error:e}),duration:0,title:"Failed to create Agent"}}(e))?r:{title:"Failed to create Agent"}),!1}finally{J.current=!1,x(!1)}})(),n={promise:null};return n.promise=r.finally(()=>{q.current===n.promise&&(q.current=null)}),q.current=n.promise,n.promise})(),[W,u,A,O,N]),$=(0,s.useCallback)(()=>uN(function*(){try{K.current=uI(uE(f,u.getFieldsValue(!0))),J.current=!0,x(!0),yield O.destroySession(),A.success("Session disconnected"),yield N(),yield G()}catch(e){uv(e,{title:"Failed to disconnect session"})}finally{J.current=!1,x(!1)}})(),[u,A,O,N,G,f]);return(0,s.useEffect)(()=>{R&&W()},[W,R]),(0,s.useEffect)(()=>{if(!R||D.connected)return;let e=!1,t=!1,r=()=>uN(function*(){if(!e&&!t){t=!0;try{yield G(u.getFieldsValue(!0))}finally{t=!1}}})();r();let n=window.setInterval(()=>{r()},o);return()=>{e=!0,window.clearInterval(n)}},[u,o,G,R,D.connected]),(0,s.useEffect)(()=>{if(!R||D.connected||!C)return;let e=uz(f);if(e&&L.current!==C){var t,r;G((t=uD({},u.getFieldsValue(!0)),r=r={[e]:C},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))}},[u,G,C,R,f,D.connected]),(0,s.useEffect)(()=>{if(D.connected){U.current=null;return}if(!R||b||E||J.current||y)return;let e=uE(f,u.getFieldsValue(!0)),{signature:t,shouldCreate:r}=function(e){let{autoCreateInput:t,lastAttemptedSignature:r,blockedSignature:n}=e,o=uI(t);return o?{signature:o,shouldCreate:o!==r&&o!==n}:{signature:null,shouldCreate:!1}}({autoCreateInput:e,lastAttemptedSignature:U.current,blockedSignature:K.current});if(!r||!t){t||(U.current=null);return}U.current=t,uN(function*(){(yield V(null!=e?e:void 0,{silent:!0}))||(U.current=null)})()},[V,u,R,b,E,f,y,D.connected]),{state:{playgroundSDK:O,form:u,formValues:p,serverOnline:R,isUserOperating:j,deviceType:P,runtimeInfo:M,executionUxHints:T,sessionViewState:D,sessionSetup:f,sessionSetupError:y,sessionLoading:b,sessionMutating:E,countdown:h,countdownSeconds:i},actions:{refreshServerState:N,refreshSessionSetup:G,createSession:V,destroySession:$,finishCountdown:H}}}({serverUrl:r,defaultDeviceType:i,countdownSeconds:null==A||null==(t=A.executionUx)?void 0:t.countdownSeconds,pollIntervalMs:p});return((0,s.useEffect)(()=>{let e=()=>{m(window.innerWidth<=1024)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),f.state.serverOnline)?(0,a.jsx)(eW,{children:(0,a.jsx)(eA.A,{className:"app-container playground-container",children:(0,a.jsx)(hS,{className:"app-content",children:(0,a.jsxs)(eu.YZ,{autoSaveId:"playground-layout",direction:h?"vertical":"horizontal",children:[(0,a.jsx)(eu.Zk,{defaultSize:h?67:32,maxSize:h?85:60,minSize:h?67:25,className:"app-panel left-panel",children:(0,a.jsxs)("div",{className:"panel-content left-panel-content",children:[(0,a.jsx)("div",{className:"playground-panel-header",children:(0,a.jsxs)("div",{className:"header-row",children:[(0,a.jsx)(c,{}),(0,a.jsx)(ec,{showTooltipWhenEmpty:!1,showModelName:!1,playgroundSDK:f.state.playgroundSDK})]})}),(0,a.jsx)("div",{className:"playground-panel-playground",children:(0,a.jsx)(hk,{controller:f,appVersion:n,branding:l,playgroundConfig:A,title:o})})]})}),(0,a.jsx)(eu.TW,{className:"panel-resize-handle"}),(0,a.jsx)(eu.Zk,{defaultSize:h?33:68,minSize:h?15:40,className:"app-panel right-panel",children:(0,a.jsx)("div",{className:"panel-content right-panel-content",children:f.state.sessionViewState.connected?(0,a.jsx)(eq,{playgroundSDK:f.state.playgroundSDK,runtimeInfo:f.state.runtimeInfo,serverUrl:r,serverOnline:f.state.serverOnline,isUserOperating:f.state.isUserOperating}):(0,a.jsx)(ep,{})})})]})})})}):(0,a.jsx)(eW,{children:(0,a.jsx)("div",{className:"server-offline-container",children:(0,a.jsxs)("div",{className:"server-offline-message",children:[(0,a.jsx)(c,{}),(0,a.jsxs)("div",{className:"server-offline-content",children:[(0,a.jsxs)("div",{className:"server-offline-icon",children:[(0,a.jsx)(uB,{className:"icon-background"}),(0,a.jsx)(uF,{className:"icon-foreground"})]}),(0,a.jsx)("h1",{children:u}),(0,a.jsx)("p",{className:"connection-status",children:d})]})]})})})}let hC=document.getElementById("root");if(!hC)throw Error("Root element not found");(0,l.createRoot)(hC).render((0,a.jsx)(s.StrictMode,{children:(0,a.jsx)(function(){return(0,a.jsx)(hI,{serverUrl:"",appVersion:"1.16.2",title:"Playground",offlineTitle:"Midscene Playground"})},{})}))},33675(e,t,r){"use strict";r.d(t,{l:()=>a});let n=["intent","slot","model_name","response_model_name","model_description","prompt_tokens","cached_input","completion_tokens","total_tokens","time_cost","request_id"];function o(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function i(e,t){return Math.max(0,o(e[t])??0)}function a(e){let t,r,a,s,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e||!Array.isArray(e.executions))throw Error("collectReportSummary: report.executions must be an array");let c=0,A=0,u=new Map,d=e=>{let n=o(e);void 0!==n&&(t=void 0===t?n:Math.min(t,n),r=void 0===r?n:Math.max(r,n))},p=e=>{let t;if(!(e&&n.some(t=>void 0!==e[t]&&null!==e[t])))return;let r=e.model_name||e.response_model_name||e.model_description||e.intent||"Unknown",a=u.get(r)??{modelName:r,callCount:0,promptTokens:0,cachedInputTokens:0,completionTokens:0,totalTokens:0,modelCallTimeMs:0},s=i(e,"time_cost");u.set(r,{modelName:r,callCount:a.callCount+1,promptTokens:a.promptTokens+i(e,"prompt_tokens"),cachedInputTokens:a.cachedInputTokens+i(e,"cached_input"),completionTokens:a.completionTokens+i(e,"completion_tokens"),totalTokens:a.totalTokens+(void 0!==(t=o(e.total_tokens))&&t>0?t:i(e,"prompt_tokens")+i(e,"completion_tokens")),modelCallTimeMs:a.modelCallTimeMs+s}),c+=1,A+=s};for(let t of e.executions)for(let e of t.tasks){var h,m;d(null==(h=e.timing)?void 0:h.start),d(null==(m=e.timing)?void 0:m.end),p(e.usage),p(e.searchAreaUsage)}let f=Array.from(u.values()),g=f.reduce((e,t)=>({promptTokens:e.promptTokens+t.promptTokens,cachedInputTokens:e.cachedInputTokens+t.cachedInputTokens,completionTokens:e.completionTokens+t.completionTokens,totalTokens:e.totalTokens+t.totalTokens}),{promptTokens:0,cachedInputTokens:0,completionTokens:0,totalTokens:0}),y=o(l.wallTimeFallbackMs);return void 0!==t&&void 0!==r?(a=Math.max(0,r-t),s="task-timestamps"):void 0!==y&&y>=0?(a=y,s="fallback"):s="unavailable",{timing:{wallTimeMs:a,wallTimeStart:"task-timestamps"===s?t:void 0,wallTimeEnd:"task-timestamps"===s?r:void 0,wallTimeSource:s,modelCallTimeMs:A,modelCallCount:c},tokens:g,models:f}}},68629(e,t,r){"use strict";r(58188),r(20875),r(28492)},27430(e,t,r){"use strict";r.d(t,{U:()=>p});var n=r(26103),o=r(19152),i=r(584),a=r(73840),s=r(4130),l=r(43545),c=r(27533),A=r(21749),u=r(47339),d=r(69087);function p(e,t){var r,p;let h,m,f=(null==(r=t.createDocumentRunId)?void 0:r.call(t))??(0,o.uR)(),g=t.plan??(0,a.V)(e,{defaultTimeoutMs:t.defaultTimeoutMs,retry:{scope:"case",count:(null==(p=t.project)?void 0:p.retry)??0}}),y=new Date,v=[],b=[],w={beforeAll:e.lifecycle.beforeAll.map(e=>t.resolveNode(e.node)),afterAll:e.lifecycle.afterAll.map(e=>t.resolveNode(e.node))},E=t.project??Object.freeze({projectId:e.projectId,name:e.projectId,retry:0}),x=t.projectContext,k=(0,c.d5)(t.signal),S=k.signal;(0,c.Wl)(S,{scopeId:f});let I=[],C=!0,O=!1,R=new Set,j=[],P=new Map,M=[],T=[],N=!1,D=function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=new Date,o=(0,c.Jo)(S),i=(0,c.CK)(S),a={beforeAll:(0,A.V)(e.lifecycle.beforeAll.length,v),afterAll:(0,A.V)(e.lifecycle.afterAll.length,b)};return{plan:g,documentId:e.documentId,documentRunId:f,...void 0===t.documentAttemptIndex?{}:{attemptIndex:t.documentAttemptIndex},projectId:e.projectId,projectName:E.name,sourcePath:e.sourcePath,status:M.length>0||T.length>0||v.some(e=>"success"!==e.status)||b.some(e=>"success"!==e.status)||"pending"===o.status||"failed"===o.status||i.length>0||r.length>0?"failed":"success",executionStatus:Object.values(a).some(e=>"failed"===e.status)?"failed":Object.values(a).some(e=>"not-run"===e.status)||T.some(e=>{let{phase:t}=e;return"setup"===t})||S.aborted&&!v.length&&!b.length?"not-run":"success",phases:a,cleanup:o,...i.length?{pendingOperations:i}:{},startedAt:y.toISOString(),endedAt:n.toISOString(),durationMs:Math.max(0,n.getTime()-y.getTime()),beforeAll:[...v],afterAll:[...b],...M.length?{executionErrors:M.filter(e=>!T.some(t=>t.error===e)).map(l.rN)}:{},...T.length?{hostErrors:[...T]}:{},...r.length>0?{teardownErrors:[...r]}:{},...R.size>0?{reportPaths:[...R]}:{},...P.size||j.length?{reportSources:[...P.values(),...j]}:{}}},z=async function(r,n){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:S;for(let[u,d]of e.lifecycle[r].entries()){var a,l,A;let p=u>0?await (0,c.$G)(o):0,h={documentId:e.documentId,documentRunId:f,projectId:e.projectId,projectName:E.name,sourcePath:e.sourcePath,phase:r,stepIndex:u},m={scope:"document",node:d.node,stepCount:e.lifecycle[r].length,document:h};await (null==(a=t.onStepStart)?void 0:a.call(t,m));let g=await (0,s.I)(d,w[r][u],{scope:"document",document:h},x,{signal:o,defaultTimeoutMs:t.defaultTimeoutMs,onTeardown(t,r){if(!C)throw new i.Uu("Node teardown can only be registered while a workflow document is running.",{documentId:e.documentId,documentRunId:f,node:t});if("function"!=typeof r)throw new i.Uu("Node onTeardown() requires a teardown function.",{documentId:e.documentId,documentRunId:f,node:t});I.push({registrationIndex:I.length,node:t,teardown:r})}});for(let e of(p>0&&(g.waitForPreviousOperationMs=p),n.push(g),(null==(l=g.report)?void 0:l.sources)??[]))P.set(`${e.sourcePath}\u0000${e.dumpPath??""}`,e);if(await (null==(A=t.onStepResult)?void 0:A.call(t,m,g)),"success"!==g.status&&!g.continuedAfterError)break}};return{signal:S,get context(){return x},get canRunCases(){return O&&0===M.length&&0===T.length&&!S.aborted&&!v.some(e=>"success"!==e.status)},async start(){if(O)throw new i.Uu("Workflow document runtime has already started.",{documentId:e.documentId,documentRunId:f});if(O=!0,!S.aborted&&t.documentSetup){N=!0;try{await (0,d.q)(async()=>{try{x=await t.documentSetup.setup({project:E,projectContext:t.projectContext,document:{documentId:e.documentId,documentRunId:f,sourcePath:e.sourcePath,attemptIndex:t.documentAttemptIndex??0},signal:S,onTeardown(r){if(!N||"function"!=typeof r)throw new i.Uu("Document setup onTeardown() requires a function registered during setup.",{documentId:e.documentId,documentRunId:f});I.push({registrationIndex:I.length,node:t.documentSetup.name,teardown:r,host:!0})}})}finally{N=!1}},S,k.abort,t.setupTimeoutMs)}catch(e){T.push({phase:"setup",error:(0,l.rN)(e)})}}try{S.aborted||T.length||await z("beforeAll",v)}catch(e){throw M.push(e),new l.CW(D(),[...M])}return D()},async finish(){if(m)return m;if(!O)throw new i.Uu("Workflow document runtime must start before it can finish.",{documentId:e.documentId,documentRunId:f});return m=(async()=>{var r,o;let a=[],s=[],A=!1,d=async()=>{let e=a.length;for(let{registrationIndex:e,node:t,teardown:r,host:n}of(C=!1,I.reverse()))try{let e=await r();for(let t of(j.push(...(null==e?void 0:e.reportSources)??[]),(0,u.H)(e)))R.add(t)}catch(r){if(n){let e=(0,l.rN)(r);T.push({phase:"cleanup",error:e}),M.push(e),s.push(r);continue}a.push(new i.Lu(r,{scope:"document",scopeId:f,node:t,registrationIndex:e}))}{let t=[...s,...a.slice(e)];if(t.length)throw AggregateError(t,"Document cleanup failed")}};try{e.lifecycle.afterAll.length||I.length||void 0!==t.setupTimeoutMs&&(0,c.CK)(S).length?await (0,c.Cv)(S,d,{totalTimeoutMs:null==(r=t.teardownTimeoutMs)?void 0:r.call(t),beforeCleanup:async e=>{try{T.some(e=>"setup"===e.phase)||await z("afterAll",b,e)}catch(e){M.push(e),s.push(e)}},onDeferredError:e=>(0,n.aZ)("runner:cleanup",{console:!0})(`Deferred document cleanup failed: ${String(e)}`)}):C=!1}catch(e){(A=e instanceof c.Gv)||(C=!1),A||a.length||s.length||a.push(new i.Lu(e,{scope:"document",scopeId:f,node:"resource-drain",registrationIndex:-1}))}h=D(a);try{await (null==(o=t.onResult)?void 0:o.call(t,h))}catch(e){M.push(e),h=D(a)}if(k.dispose(),M.length)throw new l.CW(h,[...M]);return h})()}}}},4130(e,t,r){"use strict";r.d(t,{I:()=>c});var n=r(584),o=r(27533);function i(e,t){if(void 0!==e){if("object"!=typeof e||null===e||Array.isArray(e))throw new n.h2(t,TypeError("Node output must be an object or undefined."));if("summary"in e&&void 0!==e.summary&&"string"!=typeof e.summary)throw new n.h2(t,TypeError("Node output summary must be a string."));return e}}function a(e,t,r,n){let o=new Date;return{node:e.node,phase:r,stepIndex:n,input:e.input,meta:e.meta,startedAt:t.toISOString(),endedAt:o.toISOString(),durationMs:Math.max(0,o.getTime()-t.getTime())}}async function s(e,t,r,s,l){let c,A,u,d=new Date,p=new AbortController,h=l.parentSignal;(0,o.XT)(p.signal,h),(0,o.Wl)(p.signal,l.identity);let m=(0,o.Px)(p.signal,l.onEvent),f=()=>p.abort(null==h?void 0:h.reason);(null==h?void 0:h.aborted)?f():null==h||h.addEventListener("abort",f,{once:!0});let g=e.meta.timeoutMs??l.defaultTimeoutMs,y=Promise.resolve().then(()=>(p.signal.throwIfAborted(),t(p.signal))),v=(0,o.rf)(y,p.signal,"node");(0,o.DL)({},y,p.signal,"node",v);let b="failed",w=new Promise((e,t)=>{u=()=>{A=setTimeout(()=>{t(p.signal.reason)},0)},p.signal.aborted?u():p.signal.addEventListener("abort",u,{once:!0})}),E=void 0===g?void 0:new Promise((t,r)=>{c=setTimeout(()=>{if(p.signal.aborted)return void r(p.signal.reason);let t=new n.o1(g,e.node);p.abort(t),r(t)},g)}),x=Promise.race([y,w,...void 0===E?[]:[E]]);try{let t=i(await x,e.node);return b="success",{...a(e,d,r,s),status:"success",continuedAfterError:!1,...void 0===t?{}:{output:t}}}catch(c){let t;if((0,o.kr)(c))return b="not-run",{node:e.node,phase:r,stepIndex:s,input:e.input,meta:e.meta,status:"not-run",notRunReason:c.message,...c.blockedBy?{blockedBy:c.blockedBy}:{},continuedAfterError:e.meta.continueOnError,error:c};let l=c;if(c instanceof n.h2&&void 0!==c.output)try{t=i(c.output,e.node)}catch(e){l=e}return{...a(e,d,r,s),status:"failed",continuedAfterError:e.meta.continueOnError,error:(0,n.au)(l,e.node),...void 0===t?{}:{output:t}}}finally{v.runnerReturned(b),m(),void 0!==c&&clearTimeout(c),void 0!==A&&clearTimeout(A),void 0!==u&&p.signal.removeEventListener("abort",u),null==h||h.removeEventListener("abort",f)}}async function l(e,t){if(!e.inputSchema)return t;let r=await e.inputSchema.safeParseAsync(t);if(!r.success)throw n.OL.fromZod(e.name,r.error);return r.data}async function c(e,t,r,o){var i,a,c;let A,u,d,p,h=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},m="case"===r.scope?r.case.phase:r.document.phase,f="case"===r.scope?r.case.stepIndex:r.document.stepIndex,g=(i=e.node,A=new Map,u=[],d=!0,{collector:Object.freeze({onSnapshot(e){if(!d||"function"!=typeof e)throw new n.s8("A report snapshot callback must be registered while the Step is running.",{code:"REPORT_SNAPSHOT_REGISTRATION"});u.push(e)},addTrace(e){if(!d)throw new n.h2(i,Error("Report traces can only be added while the current Step is running."));if(!e||"object"!=typeof e||"midscene-execution"!==e.type)throw new n.h2(i,TypeError('Report trace type must be "midscene-execution".'));if("string"!=typeof e.executionId||0===e.executionId.trim().length)throw new n.h2(i,TypeError("Report trace executionId must be non-empty."));let t=Object.freeze({type:"midscene-execution",executionId:e.executionId,...e.metrics?{metrics:structuredClone(e.metrics)}:{}});A.set(`${t.type}:${t.executionId}`,t)}}),async close(){let e;d=!1;let t=Object.freeze([...A.values()]);if(!u.length)return Object.freeze({traces:t});let r=new AbortController,o=new Promise((t,o)=>{e=setTimeout(()=>{let e=new n.s8("Agent report snapshot collection timed out.",{code:"REPORT_SNAPSHOT_TIMEOUT",details:{timeoutMs:5e3}});r.abort(e),o(e)},5e3)}),i=await Promise.all(u.map(async e=>{try{var i,a;let n=await Promise.race([Promise.resolve().then(()=>e(r.signal,t)),o]);if(!n||"string"!=typeof n.sourcePath||!n.sourcePath.trim()||void 0!==n.dumpPath&&("string"!=typeof n.dumpPath||!n.dumpPath.trim()))throw Error("Agent report capture must return sourcePath and a valid optional dumpPath.");let s=n.dumpPath?n:{...n,collection:{status:"partial",capturedAt:(null==(i=n.collection)?void 0:i.capturedAt)??new Date().toISOString(),reason:(null==(a=n.collection)?void 0:a.reason)??"HTML report captures do not guarantee an immutable cutoff."}};return{source:Object.freeze({...s,...s.collection?{collection:Object.freeze({...s.collection})}:{}})}}catch(e){return{error:e instanceof n.s8?e:new n.s8(`Agent report snapshot collection failed: ${String(e)}`,{code:"REPORT_SNAPSHOT_FAILED",cause:e})}}}));void 0!==e&&clearTimeout(e);let a=i.flatMap(e=>e.source?[e.source]:[]),s=i.flatMap(e=>e.error?[e.error]:[]);return Object.freeze({traces:t,...a.length?{sources:Object.freeze(a)}:{},...s.length?{collectionErrors:Object.freeze(s)}:{}})}}),y=[],v="case"===r.scope?r.case.runId:r.document.documentRunId;try{p=await s(e,async i=>{let a=await l(t,e.input);i.throwIfAborted();let s={input:a,$:e.meta,signal:i,context:o,report:g.collector,onTeardown:t=>{if(!h.onTeardown)throw new n.h2(e.node,Error("The current execution scope cannot register teardown."));h.onTeardown(e.node,t)}};return"case"===r.scope?t.execute({...s,scope:"case",case:r.case}):t.execute({...s,scope:"document",document:r.document})},m,f,{parentSignal:h.signal,defaultTimeoutMs:h.defaultTimeoutMs,identity:{scopeId:v,stepId:`${v}:${m}:${f}`,node:e.node},onEvent:e=>y.push(e)})}finally{let e=await g.close();p&&(p={...p,operations:Object.freeze({capturedAt:new Date().toISOString(),events:Object.freeze([...y])})}),(e.traces.length||(null==(a=e.sources)?void 0:a.length)||(null==(c=e.collectionErrors)?void 0:c.length))&&p&&(p={...p,report:e})}if(!p)throw new n.h2(e.node,Error("Step execution completed without a result."));return p}},43545(e,t,r){"use strict";r.d(t,{CW:()=>a,gX:()=>s,rN:()=>l});var n=r(584);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let i=e=>e&&"object"==typeof e&&"message"in e&&"string"==typeof e.message?e.message:String(e);class a extends n.s8{constructor(e,t){super(t.map(i).join("; "),{code:"WORKFLOW_EXECUTION_FAILURE",cause:t[0]}),o(this,"result",void 0),o(this,"errors",void 0),this.result=e,this.errors=t}}class s extends n.s8{constructor(e,t,r){super(`Failed to ${e} at ${t}: ${r instanceof Error?r.message:String(r)}`,{code:"WORKFLOW_PUBLICATION_FAILED",details:{operation:e,path:t},cause:r})}}let l=e=>e instanceof n.s8?e:new n.s8(i(e),{code:"WORKFLOW_EXECUTION_FAILURE",cause:e})},92298(e,t,r){"use strict";r.d(t,{admitResourceOperation:()=>i.lJ,runWorkflowDocument:()=>n.o,trackResourceOperation:()=>i.DL,waitForResourceIdle:()=>i.TH}),r(68629),r(27430),r(20875),r(28492);var n=r(2909),o=r(25725);r.o(o,"waitForResourceIdle")&&r.d(t,{waitForResourceIdle:function(){return o.waitForResourceIdle}}),r.o(o,"defineNode")&&r.d(t,{defineNode:function(){return o.defineNode}}),r.o(o,"admitResourceOperation")&&r.d(t,{admitResourceOperation:function(){return o.admitResourceOperation}}),r.o(o,"trackResourceOperation")&&r.d(t,{trackResourceOperation:function(){return o.trackResourceOperation}}),r(58666),r(4130),r(47339),r(43545);var i=r(27533)},58666(e,t,r){"use strict";r(584),r(27533),r(69087),r(85409)},20875(e,t,r){"use strict";r(584),r(38042)},27533(e,t,r){"use strict";r.d(t,{$G:()=>D,CK:()=>b,Cv:()=>L,DL:()=>T,Gv:()=>z,Jo:()=>v,Px:()=>S,TH:()=>N,Wl:()=>I,XT:()=>E,d5:()=>k,kr:()=>j,lJ:()=>P,ni:()=>w,oL:()=>F,rf:()=>O});var n=r(26103),o=r(19152),i=r(584),a=r(57073);function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let l=Symbol.for("@midscene/core/resource-admission-error"),c=Symbol.for("@midscene/core/resource-operations/v4"),A=globalThis;A[c]??(A[c]={resources:new WeakMap,scopes:new WeakMap,parents:new WeakMap,cleanupOwners:new WeakMap,identities:new WeakMap,listeners:new WeakMap});let{resources:u,scopes:d,parents:p,cleanupOwners:h,identities:m,listeners:f}=A[c],g=e=>{let t=u.get(e);return t||(t={operations:new Map,retiring:new Set},u.set(e,t)),t};function y(e){let t=new Map,r=new Set,n=e=>{if(!r.has(e))for(let o of(r.add(e),e.settled||t.set(e.operationId,{operationId:e.operationId,...e.identity}),e.blockers??[]))n(o)};for(let t of e)n(t);return[...t.values()]}function v(e){var t;let r=null==(t=u.get(e))?void 0:t.cleanupState;return C({capturedAt:new Date().toISOString(),status:(null==r?void 0:r.status)??"not-required",...(null==r?void 0:r.operationId)?{operationId:r.operationId}:{},...(null==r?void 0:r.status)==="pending"?{blockingOperations:y(r.blockers)}:{},...(null==r?void 0:r.error)===void 0?{}:{error:(0,a.EQ)(r.error)}})}function b(e){var t;return C(y([...(null==(t=d.get(e))?void 0:t.operations.keys())??[]].flatMap(e=>{var t;return[...(null==(t=u.get(e))?void 0:t.operations.values())??[]]})))}let w=e=>{var t;return((null==(t=u.get(e))?void 0:t.operations.size)??0)>0};function E(e,t){t&&t!==e&&p.set(e,t)}function*x(e){let t=new Set;for(let r=e;r&&!t.has(r);r=p.get(r))t.add(r),yield r}function k(e){let t=new AbortController,r={operations:new Map,resources:new Set};d.set(t.signal,r),E(t.signal,e);let n=()=>t.abort(null==e?void 0:e.reason);return(null==e?void 0:e.aborted)?n():null==e||e.addEventListener("abort",n,{once:!0}),{signal:t.signal,abort(e){t.abort(e)},dispose(){null==e||e.removeEventListener("abort",n),r.resources=void 0,r.operations.size||d.delete(t.signal)}}}function S(e,t){let r=f.get(e)??new Set;return f.set(e,r),r.add(t),()=>{r.delete(t),r.size||f.delete(e)}}function I(e,t){m.set(e,Object.freeze({...t}))}function C(e){if("object"==typeof e&&null!==e&&!Object.isFrozen(e)){for(let t of Object.values(e))C(t);Object.freeze(e)}return e}function O(e,t,r){let i=[...x(t)],s=i.map(e=>m.get(e)).find(Boolean),l={signal:t,operationId:(0,o.uR)(),identity:s},c=new Set(i.flatMap(e=>[...f.get(e)??[]])),A=!1,u=e=>{let t=C({...s,operationId:l.operationId,operationKind:r,at:new Date().toISOString(),...e});for(let e of c)try{e(t)}catch(e){(0,n.aZ)("runner:operations",{console:!0})(`Operation observer failed: ${String(e)}`)}},d=()=>u({kind:"cancel-requested",error:(0,a.EQ)(t.reason)});u({kind:"started"}),t.aborted?d():t.addEventListener("abort",d,{once:!0});let p=(e,r)=>{A=!0,l.settled=!0,t.removeEventListener("abort",d),u({kind:"settled",status:e,..."success"!==e?{error:(0,a.EQ)(r)}:{}})};return e.then(()=>p("success"),e=>p(j(e)?"not-run":"failed",e)),{record:l,runnerReturned(e){u({kind:"runner-returned",status:e,pending:!A})},cleanupDeferred(e){u({kind:"cleanup-deferred",blockingOperations:y(e)})}}}class R extends i.s8{constructor(e,t){var r,n;super("The Agent is occupied by an unfinished operation or pending cleanup; this action was not started.",{code:e,details:{blockingOperations:t.map(e=>{let{operationId:t,identity:r}=e;return{operationId:t,...r}})}}),s(this,"blockedBy",void 0),s(this,l,!0),this.blockedBy=null==(n=t.find(e=>{var t;return null==(t=e.identity)?void 0:t.stepId}))||null==(r=n.identity)?void 0:r.stepId}}function j(e){return"object"==typeof e&&null!==e&&!0===e[l]}function P(e,t){let r,n=!(arguments.length>2)||void 0===arguments[2]||arguments[2];try{r=function(e){var t,r;let n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=arguments.length>2?arguments[2]:void 0,a=null==(t=u.get(e))?void 0:t.retiring,s=[...x(o)].some(e=>{let t=h.get(e);return void 0!==t&&(null==a?void 0:a.has(t))});if((null==a?void 0:a.size)&&!s)throw new i.s8("A resource cannot execute overlapping Runner operations while its cleanup is pending.",{code:"RESOURCE_CLEANUP_PENDING"});let l=null==(r=u.get(e))?void 0:r.operations;if(n&&(null==l?void 0:l.size))throw new i.s8("The same Agent instance cannot execute overlapping Runner operations.",{code:"RESOURCE_OPERATION_PENDING"});if(l&&[...l.values()].some(e=>e.signal.aborted))throw new i.s8("Cannot reuse an Agent while an aborted YAML action or Runner operation is still running.",{code:"RESOURCE_OPERATION_PENDING"});return s}(e,n,t)}catch(t){var o,a;if(t instanceof i.s8&&["RESOURCE_OPERATION_PENDING","RESOURCE_CLEANUP_PENDING"].includes(t.code))throw new R(t.code,[...(null==(o=u.get(e))?void 0:o.operations.values())??[],...[...(null==(a=u.get(e))?void 0:a.retiring)??[]].flatMap(e=>[...e.blockers])]);throw t}return r}let M=(e,t)=>{e.resources.add(t);let r=g(t);for(let t of r.operations.values())e.blockers.add(t);r.retiring.add(e)};function T(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"resource",o=arguments.length>4?arguments[4]:void 0,i=o??O(t,r,n),a=g(e).operations;a.set(t,i.record);let s=[],l=!1;for(let t of x(r)){let r=d.get(t)??{operations:new Map};d.set(t,r),r.operations.set(e,(r.operations.get(e)??0)+1),s.push([t,r]),!l&&r.resources&&(r.resources.add(e),l=!0);let n=h.get(t);n&&(n.blockers.add(i.record),M(n,e))}let c=()=>{for(let[r,n]of(a.delete(t),s)){let t=n.operations.get(e)-1;t?n.operations.set(e,t):n.operations.delete(e),n.operations.size||n.resources||d.delete(r)}};return t.then(c,c),t}async function N(e){for(var t,r;null==(r=u.get(e))||null==(t=r.operations)?void 0:t.size;)await Promise.allSettled([...u.get(e).operations.keys()])}async function D(e){let t,r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3e4;e.throwIfAborted();let o=Date.now(),a=()=>{var t,r;let n=[];for(let o of(null==(t=d.get(e))?void 0:t.operations.keys())??[])for(let[t,i]of(null==(r=u.get(o))?void 0:r.operations)??[]){let r=i.signal;r.aborted&&[...x(r)].includes(e)&&n.push({operation:t,signal:r,resource:o,record:i})}return n},s=a();if(!s.length)return 0;let l=new Promise((a,l)=>{r=()=>l(e.reason),e.addEventListener("abort",r,{once:!0}),t=setTimeout(()=>{var e,t;let r=y(s.map(e=>{let{record:t}=e;return t})),a=r.every(e=>{var t;let{stepId:n}=e;return n===(null==(t=r[0])?void 0:t.stepId)})?null==(e=r[0])?void 0:e.stepId:void 0;l(new i.s8(`The previous operation was still running after ${n/1e3} s. Later steps were not started.`,{code:"RESOURCE_RECOVERY_TIMEOUT",details:{graceMs:n,waitedMs:Date.now()-o,resourceCount:new Set(s.map(e=>{let{resource:t}=e;return t})).size,blockingOperations:r,blockedByStepId:a},cause:null==(t=s[0])?void 0:t.signal.reason}))},n)});try{for(;s.length;)await Promise.race([Promise.allSettled(s.map(e=>{let{operation:t}=e;return t})),l]),e.throwIfAborted(),s=a();return Date.now()-o}finally{clearTimeout(t),e.removeEventListener("abort",r)}}class z extends i.s8{constructor(e,t,r=[]){super(`Resource cleanup did not finish within ${e}ms. Resources remain quarantined until cleanup settles.`,{code:"RESOURCE_CLEANUP_DEFERRED",details:{graceMs:e,resourceCount:t,blockingOperations:r.map(e=>{let{operationId:t,identity:r}=e;return{operationId:t,...r}})}})}}async function B(e,t,r,n){let o,a,s={resources:new Set,blockers:new Set,signal:null==n?void 0:n.signal};for(let t of e)M(s,t);s.signal&&h.set(s.signal,s);let l=r.signal?d.get(r.signal):void 0;l&&(l.cleanupOwner=s);let c=new Promise(e=>{o=()=>{void 0!==r.totalTimeoutMs&&(null==n||n.abort(new i.s8(`Resource cleanup timed out after ${r.totalTimeoutMs}ms.`,{code:"TEARDOWN_TIMEOUT",details:{timeoutMs:r.totalTimeoutMs}}))),e({deferred:!0})}}),A=r.totalTimeoutMs??r.graceMs??1e3,u=async()=>{void 0===r.totalTimeoutMs&&(a=setTimeout(o,A));try{for(;;){let e=[...s.resources].filter(e=>g(e).operations.size);if(!e.length)return;await Promise.all(e.map(N))}}finally{void 0===r.totalTimeoutMs&&clearTimeout(a)}},p=(async()=>{void 0!==r.totalTimeoutMs&&(a=setTimeout(o,Math.max(0,r.totalTimeoutMs)));try{return n&&await n.run(n.signal),await u(),void 0===r.totalTimeoutMs&&(A=r.graceMs??1e4,a=setTimeout(o,A)),await t()}finally{for(let e of(clearTimeout(a),s.signal&&h.delete(s.signal),(null==l?void 0:l.cleanupOwner)===s&&(l.cleanupOwner=void 0),s.resources))g(e).retiring.delete(s)}})(),m=r.signal?O(p,r.signal,"cleanup"):void 0,f=r.owner??(null==n?void 0:n.signal)??e[0],y={status:"pending",operationId:null==m?void 0:m.record.operationId,blockers:s.blockers};m&&(m.record.blockers=s.blockers),f&&(g(f).cleanup=p,g(f).cleanupState=y),p.then(()=>{y.status="completed"},e=>{y.status="failed",y.error=e});let v=await Promise.race([p.then(e=>({value:e})),c]);if("deferred"in v)throw null==m||m.cleanupDeferred(s.blockers),p.catch(e=>{try{r.onDeferredError(e)}catch{}}),r.signal&&T({},p,r.signal,"cleanup",m),new z(A,s.resources.size,[...s.blockers]);return v.value}function F(e,t,r){return B(e,t,r)}async function L(e,t,r){let n=new AbortController,o=n.signal;E(o,e);let i=d.get(e);return B([...(null==i?void 0:i.resources)??[],...(null==i?void 0:i.operations.keys())??[]],t,{...r,owner:e,signal:e},r.beforeCleanup?{signal:o,abort:e=>n.abort(e),run:r.beforeCleanup}:void 0)}},21749(e,t,r){"use strict";function n(e,t){let r=t.filter(e=>"not-run"!==e.status).length;return{plannedStepCount:e,executedStepCount:r,status:0===e?"not-required":t.some(e=>"failed"===e.status)?"failed":r<e?"not-run":"success"}}function o(e){let t=e.infrastructureError?"infrastructure-error":e.cleanupPending?"cleanup-pending":e.cleanupFailed?"cleanup-failed":e.operationPending?"operation-pending":e.fatalError?"fatal-error":e.interrupted?"interrupted":e.shouldStop?"bail":"success"===e.status?"passed":e.attemptIndex>=e.retryCount?"budget-exhausted":"attempt-failed";return{scope:e.scope,retryCount:e.retryCount,attemptIndex:e.attemptIndex,decision:"attempt-failed"===t?"retry":"stop",reason:t}}r.d(t,{V:()=>n,t:()=>o})},28492(e,t,r){"use strict";r.d(t,{V:()=>u});var n=r(26103),o=r(19152),i=r(584),a=r(4130),s=r(43545),l=r(27533),c=r(21749),A=r(47339);async function u(e,t){var r,u,d;let p={beforeEach:t.beforeEach??[],steps:e.definition.steps,afterEach:t.afterEach??[]},h={beforeEach:p.beforeEach.map(e=>t.resolveNode(e.node)),steps:p.steps.map(e=>t.resolveNode(e.node)),afterEach:p.afterEach.map(e=>t.resolveNode(e.node))},m=(0,l.d5)(t.signal),f=m.signal,g=(null==(r=t.createRunId)?void 0:r.call(t))??(0,o.uR)(),y=new Date;(0,l.Wl)(f,{scopeId:g});let v=[],b=[],w=[],E=new Map,x=[],k=!0,S=(e,t)=>{if(!k)throw new i.Uu("Node teardown can only be registered while a case attempt is running.",{runId:g,node:e});if("function"!=typeof t)throw new i.Uu("Node onTeardown() requires a teardown function.",{runId:g,node:e});x.push({registrationIndex:x.length,node:e,teardown:t})},I=async function(r,n){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:f;for(let[A,u]of p[r].entries()){var i,s,c;let d=A>0?await (0,l.$G)(o):0,m={caseId:e.caseId,runId:g,projectName:t.projectName??e.projectId,attemptIndex:t.attemptIndex??0,name:e.definition.name,sourcePath:e.sourcePath,caseIndex:e.caseIndex,phase:r,stepIndex:A},f={scope:"case",node:u.node,stepCount:p[r].length,case:m};await (null==(i=t.onStepStart)?void 0:i.call(t,f));let y=await (0,a.I)(u,h[r][A],{scope:"case",case:m},t.context,{signal:o,defaultTimeoutMs:t.defaultTimeoutMs,onTeardown:S});for(let e of(d>0&&(y.waitForPreviousOperationMs=d),n.push(y),(null==(s=y.report)?void 0:s.sources)??[]))E.set(`${e.sourcePath}\u0000${e.dumpPath??""}`,e);if(await (null==(c=t.onStepResult)?void 0:c.call(t,f,y)),"success"!==y.status&&!y.continuedAfterError)break}},C=[];try{await I("beforeEach",v),v.some(e=>"success"!==e.status)||await I("steps",b)}catch(e){C.push(e)}let O=[],R=new Set,j=[],P=[],M=!1,T=async()=>{let e=O.length;for(let{registrationIndex:e,node:t,teardown:r}of(k=!1,x.reverse()))try{let e=await r();for(let t of(j.push(...(null==e?void 0:e.reportSources)??[]),(0,A.H)(e)))R.add(t)}catch(r){O.push(new i.Lu(r,{scope:"case",scopeId:g,node:t,registrationIndex:e}))}{let t=[...P,...O.slice(e)];if(t.length)throw AggregateError(t,"Case cleanup failed")}};try{p.afterEach.length||x.length?await (0,l.Cv)(f,T,{totalTimeoutMs:null==(u=t.teardownTimeoutMs)?void 0:u.call(t),beforeCleanup:async e=>{try{await I("afterEach",w,e)}catch(e){C.push(e),P.push(e)}},onDeferredError:e=>(0,n.aZ)("runner:cleanup",{console:!0})(`Deferred Case cleanup failed: ${String(e)}`)}):k=!1}catch(e){(M=e instanceof l.Gv)||(k=!1),M||O.length||P.length||O.push(new i.Lu(e,{scope:"case",scopeId:g,node:"resource-drain",registrationIndex:-1}))}let N=new Date,D=(0,l.Jo)(f),z=(0,l.CK)(f),B={beforeEach:(0,c.V)(p.beforeEach.length,v),steps:(0,c.V)(p.steps.length,b),afterEach:(0,c.V)(p.afterEach.length,w)},F={caseId:e.caseId,runId:g,projectName:t.projectName??e.projectId,attemptIndex:t.attemptIndex??0,name:e.definition.name,sourcePath:e.sourcePath,caseIndex:e.caseIndex,status:C.length>0||v.some(e=>"success"!==e.status)||b.some(e=>"success"!==e.status)||w.some(e=>"success"!==e.status)||"pending"===D.status||"failed"===D.status||z.length>0||O.length>0?"failed":"success",beforeEach:[...v],steps:[...b],afterEach:[...w],executionStatus:Object.values(B).some(e=>"failed"===e.status)?"failed":Object.values(B).some(e=>"not-run"===e.status)?"not-run":"success",phases:B,cleanup:D,...z.length?{pendingOperations:z}:{},...C.length?{executionErrors:C.map(s.rN)}:{},...O.length>0?{teardownErrors:[...O]}:{},...R.size>0?{reportPaths:[...R]}:{},...E.size||j.length?{reportSources:[...E.values(),...j]}:{},...t.reportScopeId?{reportScopeId:t.reportScopeId}:{},startedAt:y.toISOString(),endedAt:N.toISOString(),durationMs:Math.max(0,N.getTime()-y.getTime())};try{await (null==(d=t.onResult)?void 0:d.call(t,F))}catch(e){C.push(e),F.status="failed",F.executionErrors=C.map(s.rN)}if(m.dispose(),C.length)throw new s.CW(F,C);return F}},2909(e,t,r){"use strict";r.d(t,{o:()=>A});var n=r(584),o=r(73840),i=r(27430),a=r(43545),s=r(21749),l=r(28492);let c=(e,t,r)=>({caseId:e.caseId,projectName:t,name:e.definition.name,sourcePath:e.sourcePath,caseIndex:e.caseIndex,...e.definition.onFailure?{onFailure:e.definition.onFailure}:{},status:"not-run",notRunReason:r});async function A(e,t){var r,A,u,d,p,h,m,f,g,y,v,b,w,E,x,k,S,I;let C,O,R=t.signal??new AbortController().signal,j=t.createDocumentRunId,P=t.createCaseRunId,M=(null==(r=t.project)?void 0:r.name)??e.projectId,T=t.retry??(null==(A=t.project)?void 0:A.retry)??0;if(!Number.isInteger(T)||T<0)throw TypeError("Workflow document retry must be a non-negative integer.");let N=(0,i.U)(e,{plan:t.plan??(0,o.V)(e,{defaultTimeoutMs:t.defaultTimeoutMs,retry:{scope:"case",count:T}}),documentSetup:t.documentSetup,setupTimeoutMs:t.setupTimeoutMs,teardownTimeoutMs:t.teardownTimeoutMs,documentAttemptIndex:t.documentAttemptIndex,resolveNode:t.resolveNode,project:t.project,projectContext:t.projectContext,signal:R,defaultTimeoutMs:t.defaultTimeoutMs,onStepStart:t.onStepStart,onStepResult:t.onStepResult,onResult:async e=>{var r,n,o;await (null==(n=t.documentSetup)||null==(r=n.onDocumentResult)?void 0:r.call(n,e,N.context)),await (null==(o=t.onDocumentResult)?void 0:o.call(t,e))},createDocumentRunId:j?()=>j(e):void 0}),D=[],z=!1,B=[],F=!1;try{z=!0;let r=await N.start();if(N.canRunCases)for(let o of e.cases){if(O||F||R.aborted||(null==(u=t.shouldStop)?void 0:u.call(t))){let e=c(o,M,R.aborted?(null==(m=t.stopReason)?void 0:m.call(t))??"interrupted":F?"fatal-error":O??(null==(f=t.stopReason)?void 0:f.call(t))??"interrupted");D.push(e),await (null==(g=t.onCaseOutcome)?void 0:g.call(t,e));continue}await (null==(d=t.onCaseStart)?void 0:d.call(t,o));let i=[];for(let c=0;c<=T;c+=1){let A,u=!1,d=await (0,l.V)(o,{resolveNode:t.resolveNode,beforeEach:e.lifecycle.beforeEach,afterEach:e.lifecycle.afterEach,context:N.context,projectName:M,attemptIndex:c,signal:N.signal,defaultTimeoutMs:t.defaultTimeoutMs,teardownTimeoutMs:t.teardownTimeoutMs,onStepStart:t.onStepStart,onStepResult:t.onStepResult,onResult:async e=>{var r,o,i,a,l,A,d,p;u=(null==(r=t.isFatalError)?void 0:r.call(t,e))??!1,e.retryDecision=(0,s.t)({scope:"case",retryCount:T,attemptIndex:c,status:e.status,cleanupPending:(null==(o=e.cleanup)?void 0:o.status)==="pending",operationPending:!!(null==(i=e.pendingOperations)?void 0:i.length),cleanupFailed:(null==(a=e.cleanup)?void 0:a.status)==="failed"||!!(null==(l=e.teardownErrors)?void 0:l.length),infrastructureError:null==(A=e.executionErrors)?void 0:A.some(e=>!(0,n.iK)(e)),fatalError:u,interrupted:R.aborted,shouldStop:null==(d=t.shouldStop)?void 0:d.call(t)}),await (null==(p=t.onCaseResult)?void 0:p.call(t,e))},reportScopeId:null==(y=t.resolveCaseReportScopeId)?void 0:y.call(t,o,c,r.documentRunId),createRunId:P?()=>P(o,c):void 0}).catch(e=>{if(!(e instanceof a.CW))throw e;return(A=e).result});if(i.push(d),A&&!A.errors.every(n.iK))throw d.retryDecision=(0,s.t)({scope:"case",retryCount:T,attemptIndex:c,status:d.status,infrastructureError:!0}),D.push({caseId:o.caseId,projectName:M,name:o.definition.name,sourcePath:o.sourcePath,caseIndex:o.caseIndex,...o.definition.onFailure?{onFailure:o.definition.onFailure}:{},status:"failed",run:d,attempts:i}),A;if(F=u,d.retryDecision=(0,s.t)({scope:"case",retryCount:T,attemptIndex:c,status:d.status,cleanupPending:(null==(v=d.cleanup)?void 0:v.status)==="pending",cleanupFailed:(null==(b=d.cleanup)?void 0:b.status)==="failed"||!!(null==(w=d.teardownErrors)?void 0:w.length),operationPending:!!(null==(E=d.pendingOperations)?void 0:E.length),fatalError:F||!!(null==(x=d.executionErrors)?void 0:x.some(n.iK)),interrupted:R.aborted,shouldStop:null==(k=t.shouldStop)?void 0:k.call(t)}),(null==(S=d.retryDecision)?void 0:S.decision)!=="retry")break}let A=i.at(-1),I={caseId:o.caseId,projectName:M,name:o.definition.name,sourcePath:o.sourcePath,caseIndex:o.caseIndex,...o.definition.onFailure?{onFailure:o.definition.onFailure}:{},status:A.status,run:A,attempts:i};D.push(I);let C=null==(p=A.retryDecision)?void 0:p.reason;O="cleanup-pending"===C||"cleanup-failed"===C||"operation-pending"===C||"fatal-error"===C?C:"failed"===I.status&&"stop-document"===o.definition.onFailure?"bail":void 0,await (null==(h=t.onCaseOutcome)?void 0:h.call(t,I))}else{let r=R.aborted?(null==(I=t.stopReason)?void 0:I.call(t))??"interrupted":"document-start-failed";D.push(...e.cases.map(e=>c(e,M,r)))}}catch(e){B.push(...e instanceof a.CW?e.errors:[e])}finally{if(z)try{C=await N.finish()}catch(e){if(e instanceof a.CW)for(let t of(C=e.result,e.errors))B.includes(t)||B.push(t);else B.push(e)}}if(!C){if(B.length)throw AggregateError(B,"Workflow execution did not produce a document result.");throw Error(`Workflow document "${e.sourcePath}" did not produce a result.`)}if(B.length){let t=new Set(D.map(e=>e.caseId));throw D.push(...e.cases.filter(e=>!t.has(e.caseId)).map(e=>c(e,M,B.every(n.iK)?"operation-pending":"interrupted"))),C.status="failed",C.executionErrors=B.filter(e=>{var t;return!(null==(t=C.hostErrors)?void 0:t.some(t=>t.error===e))}).map(a.rN),new a.CW({document:C,cases:D},B)}return{document:C,cases:D}}},47339(e,t,r){"use strict";r.d(t,{H:()=>o});var n=r(13078);let o=e=>{if(void 0===e)return[];if("object"!=typeof e||null===e||Array.isArray(e))throw TypeError("Node teardown result must be an object or undefined.");let t=e.reportPaths;if(void 0===t)return[];if(!Array.isArray(t))throw TypeError("Node teardown reportPaths must be an array.");return t.map((e,t)=>{if("string"!=typeof e||0===e.trim().length)throw TypeError(`Node teardown reportPaths[${t}] must be a non-empty string.`);if(!(0,n.isAbsolute)(e))throw TypeError(`Node teardown reportPaths[${t}] must be an absolute path.`);return e})}},69087(e,t,r){"use strict";r.d(t,{q:()=>i});var n=r(584),o=r(27533);async function i(e,t,r,i){let a,s;if(void 0===i)return e();t.throwIfAborted();let l=Promise.resolve().then(e);(0,o.DL)({},l,t);let c=new Promise((e,o)=>{s=()=>o(t.reason),t.addEventListener("abort",s,{once:!0}),a=setTimeout(()=>{r(new n.s8(`Environment setup timed out after ${i}ms.`,{code:"SETUP_TIMEOUT",details:{timeoutMs:i}}))},i)});try{return await Promise.race([l,c])}finally{clearTimeout(a),t.removeEventListener("abort",s)}}},25725(){},584(e,t,r){"use strict";r.d(t,{Lu:()=>d,OL:()=>l,Uu:()=>u,au:()=>p,h2:()=>A,iK:()=>m,o1:()=>c,s8:()=>a,ww:()=>s});var n=r(57073);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let i=Symbol.for("@midscene/core/workflow-error");class a extends Error{toJSON(){return{...(0,n.EQ)(this)}}constructor(e,t={}){super(e,{cause:t.cause}),o(this,i,!0),o(this,"code",void 0),o(this,"details",void 0),this.name=new.target.name,this.code=t.code??"WORKFLOW_ERROR",this.details=t.details}}class s extends a{constructor(e,t){super(e,{code:"NODE_DEFINITION_ERROR",details:t})}}class l extends a{static fromZod(e,t){let r=t.issues.map(e=>({code:e.code,path:e.path.map(String).join("."),message:e.message})),n=r[0],o=(null==n?void 0:n.path)||"<root>",i=(null==n?void 0:n.message)??"invalid input";return new l(`Node "${e}" input validation failed at "${o}": ${i}`,{node:e,issues:r})}constructor(e,t){super(e,{code:"NODE_INPUT_VALIDATION_ERROR",details:t})}}class c extends a{constructor(e,t){super(t?`Node "${t}" timed out after ${e}ms.`:`Step timed out after ${e}ms.`,{code:"STEP_TIMEOUT",details:{timeoutMs:e,...void 0===t?{}:{node:t}}}),o(this,"timeoutMs",void 0),o(this,"node",void 0),this.timeoutMs=e,this.node=t}}class A extends a{constructor(e,t,r){super(`Node "${e}" failed: ${t instanceof Error?t.message:String(t??"Unknown error")}`,{code:"NODE_EXECUTION_ERROR",details:{node:e},cause:t}),o(this,"output",void 0),o(this,"node",void 0),this.output=r,this.node=e}}class u extends a{constructor(e,t){super(e,{code:"WORKFLOW_LIFECYCLE_ERROR",details:t})}}class d extends a{constructor(e,t){super(`${"case"===t.scope?"Case attempt":"Workflow document"} node teardown failed for "${t.node}": ${e instanceof Error?e.message:String(e??"Unknown error")}`,{code:"NODE_SCOPE_TEARDOWN_ERROR",details:t,cause:e})}}function p(e,t){return h(e)?e:new A(t,e)}function h(e){return"object"==typeof e&&null!==e&&!0===e[i]}let m=e=>h(e)&&"RESOURCE_RECOVERY_TIMEOUT"===e.code},70875(e,t,r){"use strict";r.d(t,{admitResourceOperation:()=>n.admitResourceOperation,defineNode:()=>o.defineNode,runWorkflowDocument:()=>n.runWorkflowDocument,trackResourceOperation:()=>n.trackResourceOperation,waitForResourceIdle:()=>n.waitForResourceIdle});var n=r(92298);r.o(n,"defineNode")&&r.d(t,{defineNode:function(){return n.defineNode}}),r(584);var o=r(10852);r(58188),r(38015)},38042(e,t,r){"use strict";r.d(t,{E:()=>a});var n=r(64564),o=r(584);let i=(e,t,r)=>{if(void 0!==e&&("string"!=typeof e||0===e.trim().length))throw new o.ww(`Node "${r}" ${t} must be a non-empty string.`,{node:r,field:t})};function a(e){if(!e||"object"!=typeof e)throw new o.ww("Node definition must be an object.");if("string"!=typeof e.name||0===e.name.trim().length)throw new o.ww("Node name must be a non-empty string.");if(i(e.title,"title",e.name),i(e.description,"description",e.name),void 0!==e.stringInputKey&&!1!==e.stringInputKey&&("string"!=typeof e.stringInputKey||0===e.stringInputKey.trim().length))throw new o.ww(`Node "${e.name}" stringInputKey must be a non-empty string or false.`,{node:e.name,field:"stringInputKey"});var t=e.inputSchema,r=e.name;if(void 0!==t){if(!(t instanceof n.bv))throw new o.ww(`Node "${r}" inputSchema must be a Zod object schema.`,{node:r,field:"inputSchema"});if("$"in t.shape)throw new o.ww(`Node "${r}" inputSchema must not declare "$" as an input property.`,{node:r,field:"inputSchema.$"})}if("string"==typeof e.stringInputKey&&e.inputSchema instanceof n.bv&&!(e.stringInputKey in e.inputSchema.shape))throw new o.ww(`Node "${e.name}" stringInputKey must reference a field in inputSchema.`,{node:e.name,field:"stringInputKey"});if("function"!=typeof e.execute)throw new o.ww(`Node "${e.name}" must provide an execute function.`,{node:e.name});return e}},10852(e,t,r){"use strict";r.d(t,{defineNode:()=>n.E});var n=r(38042)},58188(e,t,r){"use strict";r(584)},56339(e,t,r){"use strict";r.d(t,{Y:()=>i,p:()=>o});var n=r(33675);function o(e){let t=(0,n.l)(e),r=e.executions.flatMap(e=>e.tasks),o=e=>!!e&&Object.values(e).some(e=>null!=e),i=r.flatMap(e=>[e.usage,e.searchAreaUsage].filter(o)),a=r.some(e=>{var t;return(null==(t=e.timing)?void 0:t.callAiStart)!==void 0&&("pending"===e.status||"running"===e.status)}),s=r.some(e=>{var t;return(null==(t=e.timing)?void 0:t.callAiStart)!==void 0&&!o(e.usage)}),l=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0,c=i.filter(e=>l(e.time_cost)).length,A=i.filter(e=>l(e.total_tokens)||l(e.prompt_tokens)&&l(e.completion_tokens)).length,u=[];a&&u.push("A model request was still running when usage was captured."),s&&u.push("A model request started but its usage was not recorded."),c<i.length&&u.push("Some model usage records do not include request duration."),A<i.length&&u.push("Some model usage records do not include token counts."),i.some(e=>!l(e.prompt_tokens))&&u.push("Some model usage records do not include input token counts."),i.some(e=>!l(e.completion_tokens))&&u.push("Some model usage records do not include output token counts.");let d=(e,t)=>t?e>0?"partial":"unknown":"complete",p={modelCallCount:d(t.timing.modelCallCount,a||s),modelTimeMs:d(c,a||s||c<i.length),promptTokens:d(i.filter(e=>l(e.prompt_tokens)).length,a||s||i.some(e=>!l(e.prompt_tokens))),completionTokens:d(i.filter(e=>l(e.completion_tokens)).length,a||s||i.some(e=>!l(e.completion_tokens))),totalTokens:d(A,a||s||A<i.length)};return{modelCallCount:t.timing.modelCallCount,modelTimeMs:t.timing.modelCallTimeMs,...t.tokens,...t.models.length?{models:t.models}:{},collection:{status:u.length?t.timing.modelCallCount>0?"partial":"unknown":"complete",expectedExecutionCount:0,capturedExecutionCount:0,reasons:u,fields:p}}}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={modelCallCount:0,modelTimeMs:0,promptTokens:0,cachedInputTokens:0,completionTokens:0,totalTokens:0},n=["modelCallCount","modelTimeMs","promptTokens","cachedInputTokens","completionTokens","totalTokens"],o=new Map;for(let t of e){for(let e of n)r[e]+=t[e];for(let e of t.models??[]){let t=o.get(e.modelName);if(t)for(let r of["callCount","modelCallTimeMs","promptTokens","cachedInputTokens","completionTokens","totalTokens"])t[r]+=e[r];else o.set(e.modelName,{...e})}}o.size&&(r.models=[...o.values()]);let i=Object.fromEntries(["modelCallCount","modelTimeMs","totalTokens","promptTokens","completionTokens"].map(r=>{let n=e.map(e=>{var t,n,o;return(null==(n=e.collection)||null==(t=n.fields)?void 0:t[r])??(null==(o=e.collection)?void 0:o.status)??"complete"});return t.length&&n.push("unknown"),[r,n.every(e=>"complete"===e)?"complete":n.every(e=>"unknown"===e)?"unknown":"partial"]}));return r.collection={status:Object.values(i).every(e=>"complete"===e)?"complete":Object.values(i).every(e=>"unknown"===e)?"unknown":"partial",fields:i,expectedExecutionCount:0,capturedExecutionCount:0,reasons:[...new Set([...e.flatMap(e=>{var t;return(null==(t=e.collection)?void 0:t.reasons)??[]}),...t])]},r}},57073(e,t,r){"use strict";r.d(t,{EQ:()=>c,pA:()=>l,pT:()=>s});let n=["password","passwd","secret","token","authorization","cookie","apikey"],o=e=>{let t=e.toLowerCase().replace(/[^a-z0-9]/g,"");return n.some(e=>t.includes(e))},i=(e,t)=>/^[A-Za-z_$][\w$]*$/.test(t)?`${e}.${t}`:`${e}[${JSON.stringify(t)}]`,a=e=>new TextEncoder().encode(e).byteLength;function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2e3;return e.length<=t?e:`${e.slice(0,t)}… [truncated]`}function l(e){let t=new Set,r=new Set,n=new WeakSet,s=65536,l=(e,r)=>(s-=a(r))>=0||(t.add(e),!1),c=(e,a,A)=>{if(s<=0)return t.add(a),"[Truncated: size limit]";if(null===e||"boolean"==typeof e)return l(a,String(e)),e;if("string"==typeof e){if(e.length>2e3){t.add(a);let r=`${e.slice(0,2e3)}… [truncated]`;return l(a,r),r}return l(a,e),e}if("number"==typeof e)return Number.isFinite(e)?(l(a,String(e)),e):(t.add(a),`[Unsupported number: ${String(e)}]`);if("bigint"==typeof e)return t.add(a),`[Unsupported bigint: ${String(e)}]`;if(void 0===e||"function"==typeof e||"symbol"==typeof e)return t.add(a),`[Unsupported ${typeof e}]`;if(A>=6)return t.add(a),"[Truncated: maximum depth]";if(e instanceof Date){let t=Number.isNaN(e.getTime())?"[Invalid Date]":e.toISOString();return l(a,t),t}if(n.has(e))return t.add(a),"[Unsupported circular value]";if(Array.isArray(e)){n.add(e);let r=[],o=Math.min(e.length,50);for(let t=0;t<o&&!(s<=0);t+=1)r.push(c(e[t],`${a}[${t}]`,A+1));return e.length>r.length&&t.add(a),n.delete(e),r}let u=Object.getPrototypeOf(e);if(u!==Object.prototype&&null!==u){var d;t.add(a);let r=(null==(d=e.constructor)?void 0:d.name)??"object";return`[Unsupported object: ${r}]`}n.add(e);let p={},h=Object.keys(e);for(let t of h.slice(0,50)){let n=i(a,t);if(!l(n,t)||(o(t)?(p[t]="[REDACTED]",r.add(n)):p[t]=c(e[t],n,A+1),s<=0))break}return h.length>Object.keys(p).length&&t.add(a),n.delete(e),p},A=c(e,"$",0),u=JSON.stringify(A);return void 0===u||a(u)>65536?{value:"[Truncated: display value exceeded 64 KiB]",truncatedPaths:["$"]}:{value:A,...t.size>0?{truncatedPaths:[...t]}:{},...r.size>0?{redactedPaths:[...r]}:{}}}function c(e){let t=e=>e.replace(/\bBearer\s+[A-Za-z0-9._~+/=-]+/gi,"Bearer [REDACTED]").replace(/(https?:\/\/)[^\s/@]+:[^\s/@]+@/gi,"$1[REDACTED]@").replace(/(["']?\b(?:password|passwd|secret|token|authorization|cookie|api[_-]?key)\b["']?\s*[:=]\s*)(?:\[REDACTED\]|"[^"]*"|'[^']*'|[^\s,;}\]]+)/gi,"$1[REDACTED]"),r=new WeakSet,n=64512,o=0,i=()=>({format:"midscene-error",name:"Error",message:"[Truncated: error cause chain]",truncated:!0}),c=(e,A)=>{if(A>=6||o++>=25||n<4096)return i();if("object"!=typeof e||null===e)return{format:"midscene-error",name:"Error",message:s(t(String(e)))};if(r.has(e))return i();r.add(e);let u={format:"midscene-error",...!0===e.truncated?{truncated:!0}:{},name:"string"==typeof e.name?s(e.name,200):"Error",message:s(t("string"==typeof e.message?e.message:String(e))),..."string"==typeof e.code?{code:s(e.code,200)}:{}};if(n-=a(JSON.stringify(u))+128,void 0!==e.details){let t="midscene-error"===e.format&&"object"==typeof e.details&&null!==e.details&&"value"in e.details?e.details:void 0,r=l(t?t.value:e.details);for(let e of["redactedPaths","truncatedPaths"]){let n=null==t?void 0:t[e];Array.isArray(n)&&(r[e]=[...new Set([...r[e]??[],...n.filter(e=>"string"==typeof e).slice(0,50).map(e=>s(e))])])}let o=a(JSON.stringify(r));o<n-4096?(u.details=r,n-=o):(u.details={value:"[Truncated: error details size limit]",truncatedPaths:["$"]},u.truncated=!0)}if(void 0!==e.cause&&(u.cause=c(e.cause,A+1)),Array.isArray(e.errors)){for(let t of(u.errors=[],e.errors.slice(0,10))){if(o>=25||n<4096){u.truncated=!0;break}u.errors.push(c(t,A+1))}u.errors.length<e.errors.length&&(u.truncated=!0)}if("string"==typeof e.stack&&e.stack){let r=t(e.stack),o=Math.max(0,n-128);if(a(JSON.stringify(r))>o){let e="\n… [truncated: stack trace size limit]",t=0,n=r.length;for(;t<n;){let i=Math.ceil((t+n)/2);a(JSON.stringify(r.slice(0,i)+e))<=o?t=i:n=i-1}r=t?r.slice(0,t)+e:"",u.truncated=!0}r&&(u.stack=r,n-=a(JSON.stringify(r)))}return r.delete(e),u},A=c(e,0);return 65536>=a(JSON.stringify(A))?A:{format:"midscene-error",name:A.name,message:A.message,...A.code?{code:A.code}:{},truncated:!0,cause:{format:"midscene-error",name:"Error",message:"[Truncated: serialized error exceeded 64 KiB]",truncated:!0}}}},73840(e,t,r){"use strict";r.d(t,{V:()=>o});var n=r(57073);function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=new Set(t.selectedCaseIds??e.cases.map(e=>e.caseId)),o=(r,o,i)=>r.map((r,a)=>{let s=r.templateInput??r.input,l=s.prompt??s.script??s.scenario??s.title,c="string"==typeof l?l:l&&"object"==typeof l&&"prompt"in l&&"string"==typeof l.prompt?l.prompt:void 0;return{id:`${e.documentId}:${i}:${o}:${a}`,phase:o,stepIndex:a,node:r.node,...c?{title:(0,n.pT)(c,240)}:{},input:(0,n.pA)(s),inputMode:r.templateInput?"template":"resolved",...(r.meta.timeoutMs??t.defaultTimeoutMs)===void 0?{}:{timeoutMs:r.meta.timeoutMs??t.defaultTimeoutMs},continueOnError:r.meta.continueOnError}}),i=e.cases.map(t=>({caseId:t.caseId,name:t.definition.name,caseIndex:t.caseIndex,selected:r.has(t.caseId),tags:[...t.definition.tags??[]],...t.definition.onFailure?{onFailure:t.definition.onFailure}:{},beforeEach:o(e.lifecycle.beforeEach,"beforeEach",t.caseId),steps:o(t.definition.steps,"steps",t.caseId),afterEach:o(e.lifecycle.afterEach,"afterEach",t.caseId)}));return{documentId:e.documentId,sourcePath:e.sourcePath,...e.sourceYaml?{sourceYaml:structuredClone(e.sourceYaml)}:{},retry:t.retry??{scope:"case",count:0},beforeAll:o(e.lifecycle.beforeAll,"beforeAll","document"),cases:i,afterAll:o(e.lifecycle.afterAll,"afterAll","document")}}},38015(e,t,r){"use strict";r.d(t,{O:()=>u});var n=r(56339),o=r(57073);let i=new Set(["aiAct","aiAssert","recordToReport"]),a=(e,t)=>`${e}\u0000${t}`,s=(e,t)=>e.sourcesByScope.get(t)??[],l=(e,t)=>{e.diagnostics.push(t)},c=(e,t,r,c,A)=>{var u,d,p,h,m,f;let g,y=`${c}:${e.phase}:${e.stepIndex}`;if("not-run"===e.status)return{id:y,...A?{planStepId:A.id,title:A.title}:{},phase:e.phase,stepIndex:e.stepIndex,node:e.node,status:"not-run",notRunReason:(0,o.pT)(e.notRunReason),...e.blockedBy?{blockedBy:e.blockedBy}:{},continuedAfterError:e.continuedAfterError,...e.waitForPreviousOperationMs?{waitForPreviousOperationMs:e.waitForPreviousOperationMs}:{},input:(0,o.pA)(e.input),...e.error?{error:(0,o.EQ)(e.error)}:{},...e.operations?{operations:{...e.operations,events:[...e.operations.events]}}:{}};let v=[],b=[],w=[],E=[];for(let n of(null==(u=e.report)?void 0:u.traces)??[]){r.tracedScopes.add(t);let e=r.executionMetrics.get(n.executionId)??n.metrics;e&&(r.executionMetrics.set(n.executionId,e),w.push(e)),r.expectedExecutions.add(a(t,n.executionId));let o=r.tracedScopeByExecution.get(n.executionId);if(o&&o!==t)throw Error(`Agent execution ${n.executionId} was traced by multiple test scopes (${o}, ${t}).`);r.tracedScopeByExecution.set(n.executionId,t);let i=r.detailsByScopeAndExecution.get(a(t,n.executionId));if(i)v.push(i),r.capturedExecutions.add(a(t,n.executionId));else if(b.push(n.executionId),!e){let e=`Model usage is unavailable for execution ${n.executionId}.`;E.push(e),r.missingMetrics.add(e)}}if(b.length>0){g=`Agent detail could not be resolved for ${b.join(", ")}.`;let e=s(r,t);for(let n of b)l(r,{level:"warning",code:"agent-detail-unresolved",message:`Agent detail could not be resolved for execution ${n} in test scope ${t}.`,scopeId:t,executionId:n,stepId:y,...e.length>0?{sourcePaths:e.map(e=>e.sourcePath)}:{}})}else 0===v.length&&i.has(e.node)&&(g="This Agent did not expose a stable execution reference for the Step.",l(r,{level:"warning",code:"agent-detail-unavailable",message:`No stable Agent execution reference was captured for ${e.node} in test scope ${t}.`,scopeId:t,stepId:y,...s(r,t).length>0?{sourcePaths:s(r,t).map(e=>e.sourcePath)}:{}}));let x=(null==(p=e.report)||null==(d=p.collectionErrors)?void 0:d.map(o.EQ))??[];for(let n of x)l(r,{level:"warning",code:"agent-source-unavailable",scopeId:t,stepId:y,error:n,message:`Report collection for ${e.node}: ${n.message}`});let k=(null==(m=e.report)||null==(h=m.sources)?void 0:h.flatMap(e=>e.collection?[e.collection]:[]))??[],S=k.length||x.length||v.length||b.length?{status:x.length||b.length||k.some(e=>"partial"===e.status)?v.length?"partial":"unknown":"complete",...k.length?{capturedAt:k.map(e=>e.capturedAt).sort().at(-1)}:{},...x.length?{errors:x}:{}}:void 0;if(!(null==(f=e.report)?void 0:f.traces.length)&&x.length&&!v.length){let e=`Model usage could not be collected for step ${y}.`;E.push(e),r.missingMetrics.add(e)}let I=e.input,C=(null==I?void 0:I.prompt)??(null==I?void 0:I.script)??(null==I?void 0:I.scenario)??(null==I?void 0:I.title),O="string"==typeof C?C:"object"==typeof C&&null!==C&&"prompt"in C&&"string"==typeof C.prompt?C.prompt:void 0;return{id:y,...A?{planStepId:A.id}:{},phase:e.phase,stepIndex:e.stepIndex,node:e.node,...O?{title:(0,o.pT)(O,240)}:{},status:e.status,continuedAfterError:e.continuedAfterError,...e.waitForPreviousOperationMs?{waitForPreviousOperationMs:e.waitForPreviousOperationMs}:{},startedAt:e.startedAt,endedAt:e.endedAt,durationMs:e.durationMs,...e.operations?{operations:{...e.operations,events:[...e.operations.events]}}:{},input:(0,o.pA)(e.input),...e.output?{output:{...void 0===e.output.summary?{}:{summary:(0,o.pT)(e.output.summary)},...void 0===e.output.data?{}:{data:(0,o.pA)(e.output.data)}}}:{},...e.error?{error:(0,o.EQ)(e.error)}:{},...v.length>0?{agentDetails:v}:{},...g?{agentDetailDiagnostic:g}:{},...w.length||E.length?{metrics:(0,n.Y)(w,E)}:{},...S?{evidenceCollection:{...S,...E.length?{modelUsageUnavailable:!0}:{}}}:{}}},A=(e,t,r,n,i)=>{var a,l,A,u;i??(i=null==t?void 0:t.plan);let d=(null==t?void 0:t.sourcePath)??(null==(a=r[0])?void 0:a.sourcePath)??"<unknown>",p=(null==t?void 0:t.status)??(r.some(e=>"success"!==e.status)?"failed":"success"),h=t?t.reportScopeId??t.documentRunId:void 0;return{documentId:e,...i?{plan:i}:{},...t?{logicalDocumentId:t.documentId,documentRunId:t.documentRunId,...void 0===t.attemptIndex?{}:{attemptIndex:t.attemptIndex}}:{},sourcePath:d,status:p,...(null==t?void 0:t.executionStatus)?{executionStatus:t.executionStatus}:{},...(null==t?void 0:t.phases)?{phases:t.phases}:{},...(null==t?void 0:t.cleanup)?{cleanup:t.cleanup}:{},...(null==t?void 0:t.pendingOperations)?{pendingOperations:t.pendingOperations}:{},...(null==t?void 0:t.retryDecision)?{retryDecision:t.retryDecision}:{},...t?{startedAt:t.startedAt,endedAt:t.endedAt,durationMs:t.durationMs}:{},beforeAll:((null==t?void 0:t.beforeAll)??[]).map(e=>c(e,h,n,t.documentRunId,null==i?void 0:i.beforeAll[e.stepIndex])),cases:r.map(e=>{let t;return{...(t=null==i?void 0:i.cases.find(t=>t.caseId===e.caseId))?{plan:t}:{},caseId:e.caseId,name:e.name,caseIndex:e.caseIndex,status:e.status,...e.notRunReason?{notRunReason:e.notRunReason}:{},attempts:(e.attempts??(e.run?[e.run]:[])).map(e=>{var r,i;let a;return a=e.reportScopeId??e.runId,{attemptId:e.runId,attemptIndex:e.attemptIndex,status:e.status,...e.executionStatus?{executionStatus:e.executionStatus}:{},...e.phases?{phases:e.phases}:{},...e.cleanup?{cleanup:e.cleanup}:{},...e.pendingOperations?{pendingOperations:e.pendingOperations}:{},...e.retryDecision?{retryDecision:e.retryDecision}:{},startedAt:e.startedAt,endedAt:e.endedAt,durationMs:e.durationMs,beforeEach:e.beforeEach.map(r=>c(r,a,n,e.runId,null==t?void 0:t.beforeEach[r.stepIndex])),steps:e.steps.map(r=>c(r,a,n,e.runId,null==t?void 0:t.steps[r.stepIndex])),afterEach:e.afterEach.map(r=>c(r,a,n,e.runId,null==t?void 0:t.afterEach[r.stepIndex])),...(null==(r=e.executionErrors)?void 0:r.length)?{hostErrors:e.executionErrors.map(e=>({phase:"execution",error:(0,o.EQ)(e)}))}:{},...(null==(i=e.teardownErrors)?void 0:i.length)?{teardownErrors:e.teardownErrors.map(o.EQ)}:{},...s(n,a).length>0?{scopeReportIds:s(n,a).map(e=>e.reportId)}:{}}})}}),afterAll:((null==t?void 0:t.afterAll)??[]).map(e=>c(e,h,n,t.documentRunId,null==i?void 0:i.afterAll[e.stepIndex])),...(null==t||null==(l=t.hostErrors)?void 0:l.length)||(null==t||null==(A=t.executionErrors)?void 0:A.length)?{hostErrors:[...(null==t?void 0:t.hostErrors)??[],...((null==t?void 0:t.executionErrors)??[]).map(e=>({phase:"execution",error:e}))].map(e=>{let{phase:t,error:r}=e;return{phase:t,error:(0,o.EQ)(r)}})}:{},...(null==t||null==(u=t.teardownErrors)?void 0:u.length)?{teardownErrors:t.teardownErrors.map(o.EQ)}:{},...h&&s(n,h).length>0?{scopeReportIds:s(n,h).map(e=>e.reportId)}:{}}};function u(e,t){let r=new Map,i=new Map;for(let e of t.sources){let t=r.get(e.scopeId)??[];for(let n of(t.push(e),r.set(e.scopeId,t),e.executionIds))i.set(a(e.scopeId,n),{reportId:e.reportId,executionId:n})}let s={diagnostics:(t.diagnostics??[]).map(e=>({...e,message:(0,o.pT)(e.message)})),sourcesByScope:r,detailsByScopeAndExecution:i,tracedScopeByExecution:new Map,expectedExecutions:new Set,capturedExecutions:new Set,executionMetrics:new Map(Object.entries(t.executionMetrics??{})),missingMetrics:new Set,tracedScopes:new Set};for(let t of e.errors??[])l(s,{level:"error",code:"run-infrastructure-error",message:(0,o.EQ)(t).message,error:(0,o.EQ)(t)});for(let e of t.sources)0===e.executionIds.length&&l(s,{level:"warning",code:"source-without-executions",message:`Agent report contains no executions: ${e.sourcePath}`,scopeId:e.scopeId,sourcePaths:[e.sourcePath]});let c=e.projects.map(e=>((e,t)=>{var r,n,i;let a=new Map;for(let t of e.documents)a.set(t.documentId,(a.get(t.documentId)??0)+1);for(let t of e.cases)if((a.get(t.documentId)??0)>1&&!t.documentRunId)throw Error(`Case ${t.caseId} must identify its documentRunId when a document has multiple attempts.`);let s=[],l=new Map;for(let t of e.documents){let e=l.get(t.documentId);e&&t.attemptIndex||(e=[],s.push(e),l.set(t.documentId,e)),e.push(t)}let c=s.map(r=>{var n;let o=r[0],i=r.at(-1),a=s.filter(e=>e[0].documentId===o.documentId).length>1?`${o.documentId}:${o.documentRunId}`:o.documentId,l=new Map;for(let t of r)for(let r of e.cases.filter(e=>e.documentId===t.documentId&&(!e.documentRunId||e.documentRunId===t.documentRunId))){let e=l.get(r.caseId);l.set(r.caseId,{...r,attempts:[...(null==e?void 0:e.attempts)??[],...(r.attempts??(r.run?[r.run]:[])).map(e=>({...e,attemptIndex:t.attemptIndex??e.attemptIndex}))]})}let c=A(a,i,[...l.values()],t,null==(n=e.plans)?void 0:n.find(e=>e.documentId===i.documentId));return r.length>1&&(c.startedAt=o.startedAt,c.durationMs=Math.max(0,Date.parse(i.endedAt)-Date.parse(o.startedAt)),c.attempts=r.map(r=>{var n;let{cases:o,...i}=A(a,r,[],t,null==(n=e.plans)?void 0:n.find(e=>e.documentId===r.documentId));return i})),c});for(let n of new Set(e.cases.map(e=>e.documentId)))a.has(n)||c.push(A(n,void 0,e.cases.filter(e=>e.documentId===n),t,null==(r=e.plans)?void 0:r.find(e=>e.documentId===n)));return{...e.plans?{plans:e.plans}:{},projectId:e.projectId,name:e.name,...(null==(n=e.platform)?void 0:n.trim())?{platform:e.platform.trim()}:{},status:e.status,retry:e.retry,...e.lifecycle?{lifecycle:{status:e.lifecycle.status,startedAt:e.lifecycle.startedAt,endedAt:e.lifecycle.endedAt,durationMs:e.lifecycle.durationMs,...e.lifecycle.cleanup?{cleanup:e.lifecycle.cleanup}:{},...e.lifecycle.pendingOperations?{pendingOperations:e.lifecycle.pendingOperations}:{},...e.lifecycle.setupError?{setupError:(0,o.EQ)(e.lifecycle.setupError)}:{},...(null==(i=e.lifecycle.teardownErrors)?void 0:i.length)?{teardownErrors:e.lifecycle.teardownErrors.map(o.EQ)}:{}}}:{},documents:c,collectionErrors:e.collectionErrors.map(e=>({sourcePath:e.sourcePath,error:(0,o.EQ)(e.error)}))}})(e,s));for(let e of t.diagnostics??[])"agent-source-unavailable"!==e.code||e.scopeId&&s.tracedScopes.has(e.scopeId)||s.missingMetrics.add(e.message);let u=(0,n.Y)([...t.sources.length||!t.executionMetrics&&(t.metrics.modelCallCount||t.metrics.collection)?[t.capturedMetrics??t.metrics]:[],...[...s.executionMetrics.entries()].filter(e=>{var r;let[n]=e;return!(null==(r=t.executionMetrics)?void 0:r[n])}).map(e=>{let[,t]=e;return t})],[...s.missingMetrics]);return{schemaVersion:1,kind:"test-runner",runId:e.runId,...e.operationLog?{operationLogs:[{...e.operationLog}]}:{},status:e.status,startedAt:e.startedAt,endedAt:e.endedAt,durationMs:e.durationMs,summary:{...e.summary},metrics:{...u,collection:{...u.collection,expectedExecutionCount:s.expectedExecutions.size,capturedExecutionCount:s.capturedExecutions.size}},...t.executionMetrics||s.executionMetrics.size?{executionMetrics:Object.fromEntries(s.executionMetrics)}:{},projects:c,...s.diagnostics.length>0?{diagnostics:s.diagnostics}:{}}}},83198(e,t,r){"use strict";let n;r.d(t,{ZH:()=>h,y9:()=>p});var o=r(53244),i=r(35207),a=r(13078),s=r.n(a),l=r(50217),c=r(29368),A=r(19152),u=r(85409);let d="midscene_run",p=()=>{if(!A.$9)return"";let e=s().resolve(u.cwd(),A.$9?n??(0,l.j)(c.Tr)??d:"");if(!(0,o.existsSync)(e))try{(0,o.mkdirSync)(e,{recursive:!0})}catch(t){e=s().join((0,i.tmpdir)(),d),(0,o.mkdirSync)(e,{recursive:!0})}return e},h=e=>{if(!A.$9)return"";let t=p(),r=s().join(t,e);return(0,o.existsSync)(r)||(0,o.mkdirSync)(r,{recursive:!0}),r}},50217(e,t,r){"use strict";r.d(t,{j:()=>i});var n=r(29368),o=r(85409);let i=e=>{if(!n.Wh.includes(e))throw Error(`getBasicEnvValue with key ${e} is not supported.`);return o.env[e]}},29368(e,t,r){"use strict";r.d(t,{$:()=>M,$H:()=>h,$L:()=>A,$l:()=>s,AU:()=>w,AW:()=>ep,CA:()=>P,CR:()=>E,Cn:()=>eD,DL:()=>eW,EH:()=>eI,El:()=>Z,FU:()=>d,G0:()=>o,Gl:()=>k,HR:()=>i,I2:()=>n,IQ:()=>p,JM:()=>N,Jm:()=>ew,Jq:()=>O,Js:()=>eS,Km:()=>g,Lg:()=>eY,Lh:()=>V,M1:()=>b,NF:()=>z,OK:()=>eP,OY:()=>eF,Od:()=>T,Pm:()=>_,Qu:()=>eE,R9:()=>S,S7:()=>ed,SP:()=>eA,Sk:()=>L,T4:()=>H,T8:()=>eb,TN:()=>Q,Tf:()=>ef,Tr:()=>q,UH:()=>e0,V7:()=>et,VM:()=>v,VY:()=>ex,Vb:()=>eL,W4:()=>f,WH:()=>eT,Wh:()=>eq,XE:()=>eG,Xx:()=>ek,YK:()=>J,Yf:()=>Y,Yg:()=>ee,Z$:()=>eN,Z7:()=>$,ZX:()=>c,_E:()=>X,_j:()=>e$,_q:()=>W,a0:()=>eg,aK:()=>y,aO:()=>eK,ag:()=>eM,b6:()=>j,c$:()=>eX,cD:()=>I,d8:()=>K,fF:()=>ey,fS:()=>es,fh:()=>C,hC:()=>em,ho:()=>U,iw:()=>u,jG:()=>R,j_:()=>F,ju:()=>el,k8:()=>ec,kX:()=>G,kb:()=>eZ,l8:()=>eu,lV:()=>eJ,lp:()=>eh,mZ:()=>eO,mk:()=>ev,n0:()=>l,nc:()=>ea,pG:()=>x,pp:()=>B,rd:()=>eH,sg:()=>ez,tk:()=>eV,u1:()=>eU,v:()=>eo,v4:()=>a,vC:()=>er,wu:()=>eB,xP:()=>eC,xg:()=>en,y2:()=>ei,yR:()=>eQ,yb:()=>D,zD:()=>m,zG:()=>ej,zQ:()=>eR});let n="MIDSCENE_MODEL_INIT_CONFIG_JSON",o="MIDSCENE_MODEL_EXTRA_BODY_JSON",i="MIDSCENE_MODEL_NAME",a="MIDSCENE_DEBUG_MODEL_PROFILE",s="MIDSCENE_DEBUG_MODEL_RESPONSE",l="MIDSCENE_DEBUG_MODE",c="MIDSCENE_LANGSMITH_DEBUG",A="MIDSCENE_LANGFUSE_DEBUG",u="MIDSCENE_MODEL_SOCKS_PROXY",d="MIDSCENE_MODEL_HTTP_PROXY",p="MIDSCENE_MODEL_API_KEY",h="MIDSCENE_MODEL_BASE_URL",m="MIDSCENE_MODEL_TIMEOUT",f="MIDSCENE_MODEL_TEMPERATURE",g="MIDSCENE_MODEL_RETRY_COUNT",y="MIDSCENE_MODEL_RETRY_INTERVAL",v="MIDSCENE_MODEL_REASONING_EFFORT",b="MIDSCENE_MODEL_REASONING_ENABLED",w="MIDSCENE_MODEL_REASONING_BUDGET",E="MIDSCENE_MODEL_PROTOCOL",x="MIDSCENE_LOCATE_MODEL_STREAM_MODE",k="MIDSCENE_PLANNING_MODEL_STREAM_MODE",S="MIDSCENE_INSIGHT_MODEL_STREAM_MODE",I="MIDSCENE_MODEL_STREAM_MODE",C="MIDSCENE_MODEL_RESPONSE_FORMAT",O="OPENAI_API_KEY",R="OPENAI_BASE_URL",j="MIDSCENE_OPENAI_INIT_CONFIG_JSON",P="MIDSCENE_OPENAI_HTTP_PROXY",M="MIDSCENE_OPENAI_SOCKS_PROXY",T="MIDSCENE_CACHE",N="MIDSCENE_USE_VLM_UI_TARS",D="MIDSCENE_USE_QWEN_VL",z="MIDSCENE_USE_QWEN3_VL",B="MIDSCENE_USE_DOUBAO_VISION",F="MIDSCENE_USE_GEMINI",L="MATCH_BY_POSITION",U="MIDSCENE_REPORT_TAG_NAME",K="MIDSCENE_REPORT_QUIET",Z="MIDSCENE_PREFERRED_LANGUAGE",J="MIDSCENE_CACHE_MAX_FILENAME_LENGTH",Q="MIDSCENE_REPLANNING_CYCLE_LIMIT",q="MIDSCENE_RUN_DIR",X="MIDSCENE_RECORD_MODEL_CALL",W="MIDSCENE_INSIGHT_MODEL_NAME",H="MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY",Y="MIDSCENE_INSIGHT_MODEL_HTTP_PROXY",G="MIDSCENE_INSIGHT_MODEL_BASE_URL",V="MIDSCENE_INSIGHT_MODEL_API_KEY",$="MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON",_="MIDSCENE_INSIGHT_MODEL_EXTRA_BODY_JSON",ee="MIDSCENE_INSIGHT_MODEL_TIMEOUT",et="MIDSCENE_INSIGHT_MODEL_TEMPERATURE",er="MIDSCENE_INSIGHT_MODEL_RETRY_COUNT",en="MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL",eo="MIDSCENE_INSIGHT_MODEL_FAMILY",ei="MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT",ea="MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED",es="MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET",el="MIDSCENE_INSIGHT_MODEL_PROTOCOL",ec="MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT",eA="MIDSCENE_LOCATE_MODEL_NAME",eu="MIDSCENE_LOCATE_MODEL_SOCKS_PROXY",ed="MIDSCENE_LOCATE_MODEL_HTTP_PROXY",ep="MIDSCENE_LOCATE_MODEL_BASE_URL",eh="MIDSCENE_LOCATE_MODEL_API_KEY",em="MIDSCENE_LOCATE_MODEL_INIT_CONFIG_JSON",ef="MIDSCENE_LOCATE_MODEL_EXTRA_BODY_JSON",eg="MIDSCENE_LOCATE_MODEL_TIMEOUT",ey="MIDSCENE_LOCATE_MODEL_TEMPERATURE",ev="MIDSCENE_LOCATE_MODEL_RETRY_COUNT",eb="MIDSCENE_LOCATE_MODEL_RETRY_INTERVAL",ew="MIDSCENE_LOCATE_MODEL_FAMILY",eE="MIDSCENE_LOCATE_MODEL_REASONING_EFFORT",ex="MIDSCENE_LOCATE_MODEL_REASONING_ENABLED",ek="MIDSCENE_LOCATE_MODEL_REASONING_BUDGET",eS="MIDSCENE_LOCATE_MODEL_PROTOCOL",eI="MIDSCENE_LOCATE_MODEL_RESPONSE_FORMAT",eC="MIDSCENE_PLANNING_MODEL_NAME",eO="MIDSCENE_PLANNING_MODEL_SOCKS_PROXY",eR="MIDSCENE_PLANNING_MODEL_HTTP_PROXY",ej="MIDSCENE_PLANNING_MODEL_BASE_URL",eP="MIDSCENE_PLANNING_MODEL_API_KEY",eM="MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON",eT="MIDSCENE_PLANNING_MODEL_EXTRA_BODY_JSON",eN="MIDSCENE_PLANNING_MODEL_TIMEOUT",eD="MIDSCENE_PLANNING_MODEL_TEMPERATURE",ez="MIDSCENE_PLANNING_MODEL_RETRY_COUNT",eB="MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL",eF="MIDSCENE_PLANNING_MODEL_FAMILY",eL="MIDSCENE_PLANNING_MODEL_REASONING_EFFORT",eU="MIDSCENE_PLANNING_MODEL_REASONING_ENABLED",eK="MIDSCENE_PLANNING_MODEL_REASONING_BUDGET",eZ="MIDSCENE_PLANNING_MODEL_PROTOCOL",eJ="MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT",eQ="MIDSCENE_MODEL_FAMILY",eq=[l,a,s,q,X],eX=[T,c,A,K],eW=[J,Q],eH=["MIDSCENE_ADB_PATH","MIDSCENE_ADB_REMOTE_HOST","MIDSCENE_ADB_REMOTE_PORT","MIDSCENE_ANDROID_IME_STRATEGY","MIDSCENE_ANDROID_SCREENSHOT_STRATEGY","MIDSCENE_IOS_DEVICE_UDID","MIDSCENE_IOS_SIMULATOR_UDID",U,Z,L,"MIDSCENE_CHROME_PATH","MIDSCENE_MCP_CHROME_PATH","DOCKER_CONTAINER"],eY=[...eX,...eW,...eH],eG=[S,k,x,I,i,n,o,p,h,u,d,m,f,g,y,v,b,w,E,C,N,D,z,B,F,"MIDSCENE_USE_VL_MODEL",O,R,j,P,M,W,H,Y,G,V,$,_,ee,et,er,en,eo,ei,ea,es,el,ec,eA,eu,ed,ep,eh,em,ef,eg,ey,ev,eb,ew,eE,ex,ek,eS,eI,eC,eO,eR,ej,eP,eM,eT,eN,eD,ez,eB,eF,eL,eU,eK,eZ,eJ,eQ],eV=["MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG",...eq,...eY,...eG],e$=["jev","doubao-vision","doubao-seed","gemini","qwen2.5-vl","qwen3-vl","qwen3","qwen3.5","qwen3.6","vlm-ui-tars","vlm-ui-tars-doubao","vlm-ui-tars-doubao-1.5","glm-v","auto-glm","auto-glm-multilingual","gpt-5","gpt-6","deepseek","kimi","kimi3","xiaomi-mimo"];var e_,e0=((e_={}).V1_0="1.0",e_.V1_5="1.5",e_.DOUBAO_1_5_15B="doubao-1.5-15B",e_.DOUBAO_1_5_20B="doubao-1.5-20B",e_)},26103(e,t,r){"use strict";let n;r.d(t,{Nw:()=>S,aZ:()=>function e(t,r){let o=`${h}:${t}`,a=(null==r?void 0:r.console)??!1,l=a?`${o}:withConsole`:o;if(a&&(null==r?void 0:r.warning)){let n=e(t),i=r.warning;return function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];n(...t),k(o,t,i)}}if(!x.has(l))if(a){let r=e(t);x.set(l,function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];r(...t),k(o,t)})}else{let e=u()(o);x.set(l,function(){for(var r=arguments.length,o=Array(r),a=0;a<r;a++)o[a]=arguments[a];p.$9&&function(e,t){if(!p.$9)return;let r=e.replace(/:/g,"-");if(w.has(r))return;let o=function(e){let t=e.replace(/:/g,"-");if(E.has(t))return null;let r=s().join((null==n?void 0:n())??(0,d.ZH)("log"),`${t}.log`),o=v.get(t);if(o&&b.get(t)!==r&&(o.end(),v.delete(t),b.delete(t)),!v.has(t)){let e=i().createWriteStream(r,{flags:"a"});e.on("error",()=>{E.add(t),w.delete(t),v.get(t)===e&&(v.delete(t),b.delete(t))}),v.set(t,e),b.set(t,r)}return v.get(t)??null}(e);if(!o)return;let a=new Date,l=a.toLocaleDateString("sv-SE"),c=a.toLocaleTimeString("sv-SE"),A=a.getMilliseconds().toString().padStart(3,"0"),u=a.getTimezoneOffset(),h=Math.floor(Math.abs(u)/60).toString().padStart(2,"0"),m=(Math.abs(u)%60).toString().padStart(2,"0"),f=`${u<=0?"+":"-"}${h}:${m}`,g=`${l}T${c}.${A}${f}`;try{o.write(`[${g}] ${t}
|
|
875
|
+
`)||(w.add(r),o.once("drain",()=>{w.delete(r)}))}catch{E.add(r),w.delete(r)}}(t,c().format(...o)),e(...o)})}return x.get(l)},TO:()=>y});var o=r(53244),i=r.n(o),a=r(13078),s=r.n(a),l=r(1344),c=r.n(l),A=r(27617),u=r.n(A),d=r(83198),p=r(19152);let h="midscene",m=Symbol.for("@midscene/shared/console-context"),f=globalThis;f[m]??(f[m]={getStore:()=>void 0,run:(e,t)=>t()});let g=f[m];function y(e){let t=g.getStore();t?t({type:"report",topic:"midscene:report",message:e}):console.log(e)}let v=new Map,b=new Map,w=new Set,E=new Set,x=new Map;function k(e,t,r){let n=g.getStore();if(n)return void n({type:"warning",topic:e,message:c().format(...t),args:t,...r?{warning:r}:{}});try{console.warn("[Midscene]",...t)}catch{}}function S(e){p.$9||u().enable(`${h}:${e}`)}},19152(e,t,r){"use strict";r.d(t,{$9:()=>c,NB:()=>v,Qd:()=>E,gQ:()=>h,gV:()=>w,ht:()=>s,rS:()=>l,tD:()=>d,uR:()=>A,vA:()=>p,x3:()=>b});var n,o=r(87086),i=r(63961),a=r(85409);let s="undefined"!=typeof window,l="undefined"!=typeof WorkerGlobalScope,c=void 0!==a&&(null==(n=a.versions)?void 0:n.node);function A(){return(0,i.A)()}let u={};function d(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=JSON.stringify({content:t,rect:e}),n=5,i="",a=o.sha256.create().update(r).hex().split("").map(e=>String.fromCharCode(97+Number.parseInt(e,16)%26)).join("");for(;n<a.length-1;){if(u[i=a.slice(0,n)]&&u[i]!==r){n++;continue}u[i]=r;break}return i}function p(e,t){if(!e)throw Error(t||"Assertion failed")}function h(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];console.log(...t)}let m=/</g,f=/>/g,g="__midscene_lt__",y="__midscene_gt__",v=e=>e.replace(m,g).replace(f,y),b=e=>{let t=RegExp(g,"g"),r=RegExp(y,"g");return e.replace(t,"<").replace(r,">")};function w(e){return e.replace(/[:*?"<>|# ]/g,"-")}function E(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}},82297(e){"use strict";if("undefined"==typeof sharp){var t=Error("Cannot find module 'sharp'");throw t.code="MODULE_NOT_FOUND",t}e.exports=sharp},8908(){},10329(){},79476(){},26122(){},17407(){},20200(){},21460(){},50902(){},3710(){},9140(){},58973(){},94504(){},13009(){},52801(){},16390(){},76970(){},83147(){},80757(){},57012(){},53244(){},25592(){}},l={};function c(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={id:e,loaded:!1,exports:{}};return s[e].call(r.exports,r,r.exports,c),r.loaded=!0,r.exports}c.m=s,c.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return c.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(r,n){if(1&n&&(r=this(r)),8&n||"object"==typeof r&&r&&(4&n&&r.__esModule||16&n&&"function"==typeof r.then))return r;var o=Object.create(null);c.r(o);var i={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&r;("object"==typeof a||"function"==typeof a)&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach(e=>{i[e]=()=>r[e]});return i.default=()=>r,c.d(o,i),o},c.d=(e,t)=>{for(var r in t)c.o(t,r)&&!c.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce((t,r)=>(c.f[r](e,t),t),[])),c.u=e=>"static/js/async/"+e+"."+({195:"beaced02",236:"a5d2c1b1",749:"921ee4fd"})[e]+".js",c.miniCssF=e=>""+e+".css",c.g=(()=>{if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}})(),c.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},c.l=function(e,t,n,o){if(r[e])return void r[e].push(t);if(void 0!==n)for(var i,a,s=document.getElementsByTagName("script"),l=0;l<s.length;l++){var A=s[l];if(A.getAttribute("src")==e||A.getAttribute("data-rspack")=="playground:"+n){i=A;break}}i||(a=!0,(i=document.createElement("script")).timeout=120,c.nc&&i.setAttribute("nonce",c.nc),i.setAttribute("data-rspack","playground:"+n),i.src=e),r[e]=[t];var u=function(t,n){i.onerror=i.onload=null,clearTimeout(d);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(n)}),t)return t(n)},d=setTimeout(u.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=u.bind(null,i.onerror),i.onload=u.bind(null,i.onload),a&&document.head.appendChild(i)},c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n=[],c.O=(e,t,r,o)=>{if(t){o=o||0;for(var i=n.length;i>0&&n[i-1][2]>o;i--)n[i]=n[i-1];n[i]=[t,r,o];return}for(var a=1/0,i=0;i<n.length;i++){for(var[t,r,o]=n[i],s=!0,l=0;l<t.length;l++)(!1&o||a>=o)&&Object.keys(c.O).every(e=>c.O[e](t[l]))?t.splice(l--,1):(s=!1,o<a&&(a=o));if(s){n.splice(i--,1);var A=r();void 0!==A&&(e=A)}}return e},c.p="/",c.b=document.baseURI||self.location.href,o={410:0},c.f.j=function(e,t){var r=c.o(o,e)?o[e]:void 0;if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((t,n)=>r=o[e]=[t,n]);t.push(r[2]=n);var i=c.p+c.u(e),a=Error();c.l(i,function(t){if(c.o(o,e)&&(0!==(r=o[e])&&(o[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;a.message="Loading chunk "+e+" failed.\n("+n+": "+i+")",a.name="ChunkLoadError",a.type=n,a.request=i,r[1](a)}},"chunk-"+e,e)}},c.O.j=e=>0===o[e],i=(e,t)=>{var r,n,[i,a,s]=t,l=0;if(i.some(e=>0!==o[e])){for(r in a)c.o(a,r)&&(c.m[r]=a[r]);if(s)var A=s(c)}for(e&&e(t);l<i.length;l++)n=i[l],c.o(o,n)&&o[n]&&o[n][0](),o[n]=0;return c.O(A)},(a=self.webpackChunkplayground=self.webpackChunkplayground||[]).forEach(i.bind(null,0)),a.push=i.bind(null,a.push.bind(a));var A=c.O(void 0,["783","652"],()=>c(73657));A=c.O(A)})();
|
|
876
|
+
//# sourceMappingURL=index.5f8b8c07.js.map
|