@mindstudio-ai/browser-agent 0.1.65 → 0.1.66

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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";var __MindStudioBrowserAgent=(()=>{var Ln=Object.defineProperty;var hs=Object.getOwnPropertyDescriptor;var gs=Object.getOwnPropertyNames;var ys=Object.prototype.hasOwnProperty;var Rn=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var bs=(e,t)=>{for(var n in t)Ln(e,n,{get:t[n],enumerable:!0})},ws=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of gs(t))!ys.call(e,o)&&o!==n&&Ln(e,o,{get:()=>t[o],enumerable:!(r=hs(t,o))||r.enumerable});return e};var vs=e=>ws(Ln({},"__esModule",{value:!0}),e);var Tf={};bs(Tf,{executeSteps:()=>xt,getRefMap:()=>He,resolveElement:()=>xe,takeSnapshot:()=>Ue,takeSnapshotSync:()=>Ot});var Fn="__ms";function Cs(){return{ws:{ws:null,clientId:null,reconnectDelay:1e3,closing:!1,busy:!1},cursor:{el:null,rippleEl:null,x:-100,y:-100,hasPosition:!1,hideTimer:null,executing:!1,targetElement:null,trackingFrame:null,settledResolve:null,visibilityState:"hidden",preSnapshotState:null},snapshot:{refCounter:0,refMap:new Map},networkIdle:{activeRequests:0},transport:{buffer:[],flushTimer:null,capturing:!1,captured:[],wsGetter:null},noteLayer:{host:null,overlay:null,cursorEl:null,notes:[],currentNote:null,pointerDown:!1,startX:0,startY:0,didDrag:!1,consumedByDeactivation:!1,dragPreview:null,movingNote:null,moveOffsetX:0,moveOffsetY:0},noteElement:{counter:0},notesMode:{active:!1,wasTouchActive:!1},messages:{handler:null},screenshot:{cameraEl:null,flashEl:null,capturing:!1},fonts:{initialized:!1,observer:null},zoom:{pipMode:!1,mobilePreview:!1},touch:{circleEl:null,active:!1,pressed:!1,dragging:!1,startX:0,startY:0,lastX:0,lastY:0,onMouseMove:null,onMouseDown:null,onMouseUp:null,onMouseLeave:null,onDragStart:null,momentumFrame:null,overscrollY:0,bouncing:!1,bounceTimer:null,scrollContainer:null,velocityX:0,velocityY:0,lastMoveTime:0},mirror:{recording:!1,stopFn:null}}}function E(){let e=window;return e[Fn]||(e[Fn]=Cs()),e[Fn]}var Ur="/__mindstudio_dev__/logs",Ss=2e3;function Vr(e){E().transport.wsGetter=e}function Gr(){let e=E().transport;if(e.buffer.length===0)return;let t=e.buffer;e.buffer=[];let n=e.wsGetter?.();if(n&&n.readyState===WebSocket.OPEN)try{n.send(JSON.stringify({type:"log",entries:t}));return}catch{}try{let r=new XMLHttpRequest;r.open("POST",Ur,!0),r.setRequestHeader("Content-Type","application/json"),r.send(JSON.stringify(t))}catch{}}function xs(){let e=E().transport;e.flushTimer||(e.flushTimer=setTimeout(()=>{e.flushTimer=null,Gr()},Ss))}function Is(){let e=E().transport;e.flushTimer&&(clearTimeout(e.flushTimer),e.flushTimer=null),Gr()}function pe(e){let t=E().transport;t.buffer.push(e),t.capturing&&t.captured.push(e),xs()}function _n(e){let t=E().transport;t.buffer.push(e),t.capturing&&t.captured.push(e),Is()}function $n(){let e=E().transport;e.capturing=!0,e.captured=[]}function On(){let e=E().transport;e.capturing=!1;let t=e.captured;return e.captured=[],t}function zr(){window.addEventListener("beforeunload",()=>{let e=E().transport;e.buffer.length>0&&navigator.sendBeacon&&navigator.sendBeacon(Ur,JSON.stringify(e.buffer))})}var Es={a:"link",button:"button",input:"textbox",textarea:"textbox",select:"combobox",option:"option",h1:"heading",h2:"heading",h3:"heading",h4:"heading",h5:"heading",h6:"heading",nav:"navigation",main:"main",header:"banner",footer:"contentinfo",aside:"complementary",dialog:"dialog",details:"group",summary:"button",img:"img",ul:"list",ol:"list",li:"listitem",table:"table",tr:"row",th:"columnheader",td:"cell",form:"form",article:"article",section:"region",label:"label",fieldset:"group",legend:"legend",p:"paragraph",blockquote:"blockquote",pre:"code",code:"code",hr:"separator",progress:"progressbar"};function ye(e){let t=e.getAttribute("role");if(t)return t==="presentation"||t==="none"?null:t;let n=e.tagName.toLowerCase();if(n==="a")return e.hasAttribute("href")?"link":null;if(n==="section")return e.hasAttribute("aria-label")||e.hasAttribute("aria-labelledby")?"region":null;if(n==="form")return e.hasAttribute("aria-label")||e.hasAttribute("aria-labelledby")?"form":null;if(n==="img")return e.alt===""?null:"img";if(n==="input")switch(e.type){case"checkbox":return"checkbox";case"radio":return"radio";case"range":return"slider";case"submit":case"button":case"reset":return"button";case"hidden":return null;default:return"textbox"}return Es[n]??null}function Yr(e){if(e.hasAttribute("onclick")||e.hasAttribute("tabindex")&&e.getAttribute("tabindex")!=="-1")return!0;try{if(getComputedStyle(e).cursor==="pointer")return!0}catch{}return!1}function Se(e){let t=e.getAttribute("aria-label");if(t)return t.trim();let n=e.getAttribute("aria-labelledby");if(n){let a=n.split(/\s+/).map(s=>{let c=document.getElementById(s);return c?Be(c):""}).filter(Boolean).join(" ");if(a)return a}let r=e.tagName.toLowerCase();if(r==="input"||r==="textarea"||r==="select"){let a=As(e);if(a)return a}if(r==="img"){let a=e.alt;if(a)return a.trim()}if(r==="fieldset"){let a=e.querySelector("legend");if(a)return Be(a)}let o=Be(e);if(o)return o;let i=e.getAttribute("title");return i?i.trim():""}function Be(e){if(!e.children.length)return(e.textContent||"").trim();let t=[];for(let n of Array.from(e.childNodes))if(n.nodeType===Node.TEXT_NODE){let r=(n.textContent||"").trim();r&&t.push(r)}else if(n.nodeType===Node.ELEMENT_NODE){let r=n;if(Ms(r))continue;let o=ks(r),i=Be(r);i&&(o&&t.length>0&&t.push(" "),t.push(i),o&&t.push(" "))}return t.join("").replace(/\s+/g," ").trim()}function As(e){if(e.id){let n=document.querySelector(`label[for="${CSS.escape(e.id)}"]`);if(n)return Be(n)}let t=e.closest("label");if(t){let n=t.cloneNode(!0),r=n.querySelector("input, textarea, select");r&&r.remove();let o=n.textContent?.trim();if(o)return o}return null}function ks(e){try{return!getComputedStyle(e).display.includes("inline")}catch{let t=e.tagName.toLowerCase();return["div","p","h1","h2","h3","h4","h5","h6","li","section","article","header","footer","nav","main","aside","blockquote","pre","form","fieldset","table","tr","br"].includes(t)}}function Ms(e){let t=e.tagName.toLowerCase();if(t==="script"||t==="style"||t==="noscript"||t==="template"||e.getAttribute("aria-hidden")==="true")return!0;try{let n=getComputedStyle(e);if(n.display==="none"||n.visibility==="hidden")return!0}catch{}return!1}function Dn(e,t){try{let n=getComputedStyle(e,t).content;if(!n||n==="none"||n==="normal")return"";let r=n.match(/^["'](.*)["']$/);return r?r[1]:""}catch{return""}}function $t(){E().networkIdle.activeRequests++}function pt(){let e=E().networkIdle;e.activeRequests=Math.max(0,e.activeRequests-1)}function qr(e=5e3,t=200){return new Promise((n,r)=>{let o=Date.now()+e,i=null;function a(){if(Date.now()>o){i&&clearTimeout(i),n();return}E().networkIdle.activeRequests===0?i||(i=setTimeout(()=>{E().networkIdle.activeRequests===0?n():(i=null,a())},t)):(i&&(clearTimeout(i),i=null),setTimeout(a,50))}a()})}function He(){return E().snapshot.refMap}async function Ue(){return await qr(),Ot()}function Ot(){let e=E().snapshot;e.refCounter=0,e.refMap=new Map;let t=document.body;if(!t)return"(empty page)";let n=jr(t);return Pn(n,0).trimEnd()}function he(e){let t=ye(e),n=Se(e),r=n.length>60?n.slice(0,57)+"...":n;if(t&&r)return`${t} "${r}"`;if(t)return t;if(r)return`"${r}"`;let o=e.tagName.toLowerCase();return e.id?`${o}#${e.id}`:o}function jr(e){if(Ns(e))return[];let t=ye(e),n=!t&&Yr(e),r=t||(n?"clickable":null),o="";if(r){o=Se(e);let u=Dn(e,"::before"),d=Dn(e,"::after");(u||d)&&(o=[u,o,d].filter(Boolean).join(" ")),o.length>80&&(o=o.slice(0,77)+"...")}let i=Ls(e),a=t==="button"||t==="link"||t==="textbox"||t==="combobox"||t==="checkbox"||t==="radio"||t==="slider"||t==="tab"||t==="menuitem"||n,s=r&&o&&!a,c=null;if(a||s){let u=E().snapshot;u.refCounter++,c=`e${u.refCounter}`,u.refMap.set(c,e)}let l=Ts(e);if(r){let u=l.length===0?"":Pn(l,0).trim();return[{tag:r,name:o,attrs:i,ref:c,children:u&&u===o?[]:l,element:e}]}if(l.length===0){let u=Be(e);if(u)return[{tag:null,name:u.length>80?u.slice(0,77)+"...":u,attrs:[],ref:null,children:[],element:e}]}return l}function Ts(e){let t=[];for(let n of Array.from(e.childNodes))n.nodeType===Node.ELEMENT_NODE&&t.push(...jr(n));return t}function Ns(e){let t=e.tagName.toLowerCase();if(t==="script"||t==="style"||t==="noscript"||t==="template"||t==="head"||e.getAttribute("aria-hidden")==="true"||e.id==="__mindstudio-browser-agent"||e.id==="__mindstudio-cursor"||e.id==="__mindstudio-cursor-ripple"||e.id==="__mindstudio-notes-host")return!0;try{let n=getComputedStyle(e);if(n.display==="none"||n.visibility==="hidden"&&n.position!=="static")return!0}catch{}return!1}function Ls(e){let t=[],n=e.tagName.toLowerCase();if((n==="dialog"&&e.open||n==="details"&&e.open)&&t.push("open"),e.disabled&&t.push("disabled"),n==="input"){let i=e;(i.type==="checkbox"||i.type==="radio")&&i.checked&&t.push("checked")}if(n==="input"){let i=e;i.type!=="checkbox"&&i.type!=="radio"&&i.type!=="hidden"&&i.type!=="submit"&&i.type!=="button"&&i.type!=="reset"&&(t.push(`value="${i.value}"`),i.placeholder&&t.push(`placeholder="${i.placeholder}"`))}if(n==="textarea"){let i=e;t.push(`value="${i.value}"`),i.placeholder&&t.push(`placeholder="${i.placeholder}"`)}if(n==="select"){let i=e,a=i.options[i.selectedIndex];a&&t.push(`value="${a.text}"`)}let r=n.match(/^h([1-6])$/);r&&t.push(`level=${r[1]}`);let o=e.getAttribute("aria-expanded");return o==="true"&&t.push("expanded"),o==="false"&&t.push("collapsed"),e.getAttribute("aria-selected")==="true"&&t.push("selected"),e.getAttribute("aria-pressed")==="true"&&t.push("pressed"),t}function Pn(e,t){let n="";for(let r of e)n+=Rs(r,t);return n}function Rs(e,t){let n=" ".repeat(t),r=[];e.tag&&r.push(e.tag),e.name&&r.push(`"${e.name}"`);for(let a of e.attrs)r.push(`[${a}]`);e.ref&&r.push(`[ref=${e.ref}]`);let o="";r.length>0&&(o+=`${n}${r.join(" ")}
2
- `);let i=r.length>0?t+1:t;return o+=Pn(e.children,i),o}function Zr(e){if(e===null)return"null";if(e===void 0)return"undefined";if(e instanceof Error)return e.stack||e.message||String(e);if(typeof e=="object")try{return JSON.stringify(e)}catch{return String(e)}return String(e)}function le(e){return new Promise(t=>setTimeout(t,e))}function Ke(){let e=null,t=0;for(let n of document.querySelectorAll("*")){let r=n,o=getComputedStyle(r).overflowY;if(o!=="auto"&&o!=="scroll")continue;let i=r.scrollHeight-r.clientHeight;i<=20||i>t&&(t=i,e=r)}return e??document.documentElement}var Fs=["log","info","warn","error","debug"];function Xr(){if(!console.__ms_patched){console.__ms_patched=!0;for(let e of Fs){let t=console[e];console[e]=(...n)=>{t&&t.apply(console,n),pe({type:"console",level:e,args:n.map(Zr),url:location.href})}}}}function Kr(){window.__ms_error_patched||(window.__ms_error_patched=!0,window.addEventListener("error",e=>{_n({type:"error",message:e.message,stack:e.error&&e.error.stack||"",source:e.filename,line:e.lineno,column:e.colno,url:location.href})}),window.addEventListener("unhandledrejection",e=>{let t=e.reason||{};_n({type:"error",message:t.message||String(t),stack:t.stack||"",url:location.href})}))}function Jr(){if(!window.fetch||window.fetch.__ms_patched)return;let e=window.fetch;window.fetch=function(t,n){let r=(n?.method||"GET").toUpperCase(),o=typeof t=="string"?t:t instanceof URL?t.href:t.url||String(t);if(o.includes("/__mindstudio_dev__/"))return e.apply(this,[t,n]);let i=Date.now();return $t(),e.apply(this,[t,n]).then(a=>{pt();let s={type:"network",method:r,url:o,status:a.status,statusText:a.statusText,duration:Date.now()-i,ok:a.ok};if(a.ok)pe(s);else try{a.clone().text().then(c=>{s.body=c.slice(0,1e3),pe(s)}).catch(()=>pe(s))}catch{pe(s)}return a},a=>{throw pt(),pe({type:"network",method:r,url:o,error:a.message||String(a),duration:Date.now()-i,ok:!1}),a})},window.fetch.__ms_patched=!0}function Qr(){document.__ms_click_patched||(document.__ms_click_patched=!0,document.addEventListener("click",e=>{let t=e.target,n=(t?.textContent||"").trim().slice(0,100);pe({type:"interaction",event:"click",target:he(t),text:n,url:location.href})},!0))}function eo(){if(XMLHttpRequest.prototype.open.__ms_patched)return;let e=window.XMLHttpRequest,t=e.prototype.open,n=e.prototype.send;e.prototype.open=function(r,o,...i){return this.__ms_method=r.toUpperCase(),this.__ms_url=String(o),t.apply(this,[r,o,...i])},e.prototype.send=function(r){let o=this.__ms_method||"GET",i=this.__ms_url||"";if(i.includes("/__mindstudio_dev__/"))return n.apply(this,[r]);let a=Date.now();return $t(),this.addEventListener("loadend",function(){pt(),pe({type:"network",method:o,url:i,status:this.status,statusText:this.statusText,duration:Date.now()-a,ok:this.status>=200&&this.status<300,...this.status>=400?{body:(this.responseText||"").slice(0,1e3)}:{},via:"xhr"})},{once:!0}),n.apply(this,[r])},XMLHttpRequest.prototype.open.__ms_patched=!0}function xe(e){let t=null;if(e.ref){let n=He(),r=n.get(e.ref);if(r&&r.isConnected)if(Ne(r))t={element:r,matched:`${he(r)} [ref=${e.ref}]`};else throw new Error(`Element [ref=${e.ref}] exists but is hidden (${Wn(r)}). It may be inside a closed dialog or collapsed section.`);else{let o=[...n.entries()].filter(([,i])=>i.isConnected&&Ne(i)).slice(0,10).map(([i,a])=>`${he(a)} [ref=${i}]`).join(", ");throw new Error(`Element [ref=${e.ref}] not found. `+(o?`Available refs: ${o}`:"No refs available \u2014 take a snapshot first."))}}if(!t&&(e.text||e.role&&e.text)){let n=e.text,r=e.role,o=to(n,r);if(o.length===0){let i=to(n,r,!0);if(i.length>0)throw new Error(`Found ${r?r+" ":""}"${n}" but it is hidden (${Wn(i[0])}). Wait for it to become visible or check if a dialog/modal needs to be opened first.`);let a=r?`${r} "${n}"`:`"${n}"`,s=no(r);throw new Error(`No element found matching ${a}. `+(s?`Visible ${r||"element"}s: ${s}`:"The page may still be loading \u2014 try a wait command first."))}if(o.length>1){let i=o.filter(ro),a=i.length===1?i[0]:o[0];t={element:a,matched:he(a)}}else t={element:o[0],matched:he(o[0])}}if(!t&&e.role&&!e.text){let n=e.role,r=_s(n);if(r.length===0){let o=no(n);throw new Error(`No visible element with role "${n}" found. `+(o?`Visible ${n}s: ${o}`:"The page may still be loading \u2014 try a wait command first."))}t={element:r[0],matched:he(r[0])}}if(!t&&e.label){let n=e.label,r=$s(n);if(!r){let o=[...document.querySelectorAll("label")].filter(Ne).map(i=>`"${(i.textContent||"").trim().slice(0,40)}"`).slice(0,8).join(", ");throw new Error(`No input found with label "${n}". `+(o?`Visible labels: ${o}`:"No labels found on the page."))}t={element:r,matched:`${he(r)} via label "${n}"`}}if(!t&&e.selector){let n=e.selector,r=document.querySelector(n);if(!r)throw new Error(`No element found for selector "${n}".`);if(!Ne(r))throw new Error(`Found element for selector "${n}" but it is hidden (${Wn(r)}).`);t={element:r,matched:`${he(r)} via selector "${n}"`}}if(!t)throw new Error("No targeting field provided (need ref, text, role, label, or selector)");return t}function to(e,t,n=!1){let r=[],o=e.toLowerCase();for(let i of document.querySelectorAll("*")){if(!n&&!Ne(i)||n&&!i.isConnected||t&&ye(i)!==t)continue;if(Se(i).toLowerCase().includes(o)){r.push(i);continue}i.children.length||(i.textContent||"").trim().toLowerCase().includes(o)&&r.push(i)}return r}function _s(e){let t=[];for(let n of document.querySelectorAll("*"))Ne(n)&&ye(n)===e&&t.push(n);return t}function $s(e){let t=e.toLowerCase();for(let n of document.querySelectorAll("label")){if(!(n.textContent||"").trim().toLowerCase().includes(t))continue;let o=n.getAttribute("for");if(o){let a=document.getElementById(o);if(a&&Ne(a))return a}let i=n.querySelector("input, textarea, select");if(i&&Ne(i))return i}return null}function Ne(e){if(!e.isConnected)return!1;try{let t=getComputedStyle(e);if(t.display==="none"||t.visibility==="hidden")return!1}catch{return!1}return!0}function ro(e){if(e.matches('a, button, input, textarea, select, [role="button"], [role="link"], [tabindex]'))return!0;try{return getComputedStyle(e).cursor==="pointer"}catch{return!1}}function Wn(e){try{let t=getComputedStyle(e);if(t.display==="none")return"display: none";if(t.visibility==="hidden")return"visibility: hidden"}catch{}return e.getAttribute("aria-hidden")==="true"?'aria-hidden="true"':"hidden"}function no(e){let t=[];for(let n of document.querySelectorAll("*"))if(Ne(n)&&(e?ye(n)===e&&t.push(n):ro(n)&&t.push(n),t.length>=10))break;return t.length===0?"":t.map(n=>`"${Se(n).slice(0,40)||he(n)}"`).join(", ")}function Bn(e){let t=e.getBoundingClientRect(),n=t.left+t.width/2,r=t.top+t.height/2,o={bubbles:!0,cancelable:!0,clientX:n,clientY:r,button:0};e.dispatchEvent(new PointerEvent("pointerdown",{...o,pointerId:1})),e.dispatchEvent(new MouseEvent("mousedown",o)),e instanceof HTMLElement&&e.focus(),e.dispatchEvent(new PointerEvent("pointerup",{...o,pointerId:1})),e.dispatchEvent(new MouseEvent("mouseup",o)),e.dispatchEvent(new MouseEvent("click",o))}var Os=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value")?.set,Ds=Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype,"value")?.set;async function ao(e,t,n={}){if(!(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement))throw new Error("type command requires an input or textarea element");e.focus(),Bn(e),n.clear&&(oo(e,""),e.dispatchEvent(new Event("input",{bubbles:!0})));for(let r=0;r<t.length;r++){let o=t[r];e.dispatchEvent(new KeyboardEvent("keydown",{key:o,code:`Key${o.toUpperCase()}`,bubbles:!0})),e.dispatchEvent(new KeyboardEvent("keypress",{key:o,code:`Key${o.toUpperCase()}`,bubbles:!0})),oo(e,e.value+o),e.dispatchEvent(new Event("input",{bubbles:!0})),e.dispatchEvent(new KeyboardEvent("keyup",{key:o,code:`Key${o.toUpperCase()}`,bubbles:!0})),await le(Ps(o,t.length))}e.dispatchEvent(new Event("change",{bubbles:!0}))}function Ps(e,t){let n=Math.random()*50-25,r;if(e===" "?r=120+n:/[.,!?;:\-]/.test(e)?r=140+n:/[A-Z]/.test(e)?r=115+n:r=85+n,t<=20)return r;let o=Math.max(.1,20/t);return r*o}function oo(e,t){let n=e instanceof HTMLTextAreaElement?Ds:Os;n?n.call(e,t):e.value=t}async function so(e){let t=e.timeout||5e3,n=Date.now(),r=n+t;for(;Date.now()<r;)try{return{...xe(e),elapsed:Date.now()-n}}catch{await le(100)}let o=e.text?`"${e.text}"`:e.role?`role "${e.role}"`:e.selector?`selector "${e.selector}"`:"element";throw new Error(`Timed out waiting for ${o} after ${t}ms`)}var io=Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype,"value")?.set;function lo(e,t){if(!(e instanceof HTMLSelectElement))throw new Error("select command requires a <select> element");let n=t.toLowerCase(),r=null;for(let o of e.options)if(o.text.toLowerCase().includes(n)||o.value.toLowerCase()===n||o.label.toLowerCase().includes(n)){r=o;break}if(!r){let o=[...e.options].map(i=>`"${i.text}"`).join(", ");throw new Error(`No option matching "${t}" in select. Available options: ${o}`)}return io?io.call(e,r.value):e.value=r.value,e.dispatchEvent(new Event("change",{bubbles:!0})),e.dispatchEvent(new Event("input",{bubbles:!0})),r.text}async function co(e){try{let n=!/\b(return|;|\{)\b/.test(e.trim())?`return (${e})`:e,o=new Function(n)();return o instanceof Promise?await o:o}catch(t){throw new Error(`evaluate failed: ${t instanceof Error?t.message:String(t)}`)}}var uo="__mindstudio-touch-circle",Hn="__mindstudio-touch-style",fo=44,mo=5,po=.95,Dt=.5,Un=.45,ho=600;function Bs(){document.getElementById(uo)?.remove();let e=document.createElement("div");return e.id=uo,e.style.cssText=["position: fixed","z-index: 2147483647","pointer-events: none",`width: ${fo}px`,`height: ${fo}px`,"border-radius: 50%","background: rgba(255, 255, 255, 0.08)","border: 2px solid rgba(255, 255, 255, 0.85)","box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.35), inset 0 0 0 0.5px rgba(0, 0, 0, 0.1)","backdrop-filter: blur(1px)","-webkit-backdrop-filter: blur(1.5px)","transform: translate(-50%, -50%) scale(1)","transition: transform 100ms ease, opacity 100ms ease, background 100ms ease","opacity: 0","will-change: left, top, transform, opacity"].join("; "),document.documentElement.appendChild(e),e}function Hs(e){e.style.transform="translate(-50%, -50%) scale(0.88)",e.style.background="rgba(255, 255, 255, 0.18)"}function go(e){e.style.transform="translate(-50%, -50%) scale(1)",e.style.background="rgba(255, 255, 255, 0.08)"}function yo(){window.parent!==window&&E().zoom.mobilePreview&&ht()}function ht(){let e=E().touch;if(e.active)return;e.active=!0,e.scrollContainer=Ke(),zs();let t=Bs();e.circleEl=t,e.onMouseMove=n=>{let r=E();if(r.cursor.executing||r.screenshot.capturing){t.style.opacity="0";return}if(t.style.left=`${n.clientX}px`,t.style.top=`${n.clientY}px`,t.style.opacity="1",e.pressed){let o=Math.abs(n.clientX-e.startX),i=Math.abs(n.clientY-e.startY);if(!e.dragging&&(o>mo||i>mo)&&(e.dragging=!0),e.dragging){let a=e.scrollContainer||document.documentElement,s=performance.now(),c=s-e.lastMoveTime||16,l=e.lastX-n.clientX,u=e.lastY-n.clientY;e.bouncing&&Gs();let d=a.scrollTop;a.scrollTop+=u,a.scrollLeft+=l;let m=a.scrollTop-d,p=u-m;if(Math.abs(p)>.5){let g=Un/(1+Math.abs(e.overscrollY)/200);e.overscrollY+=p*g,Vn()}else if(e.overscrollY!==0){let g=Un/(1+Math.abs(e.overscrollY)/200);e.overscrollY+=p*g,(e.overscrollY>0&&u<0||e.overscrollY<0&&u>0)&&(e.overscrollY*=.7),Vn()}e.velocityX=.8*(l/c)+.2*e.velocityX,e.velocityY=.8*(u/c)+.2*e.velocityY,e.lastMoveTime=s,n.preventDefault()}e.lastX=n.clientX,e.lastY=n.clientY}},e.onMouseDown=n=>{E().cursor.executing||(Pt(),e.pressed=!0,e.dragging=!1,e.startX=n.clientX,e.startY=n.clientY,e.lastX=n.clientX,e.lastY=n.clientY,e.velocityX=0,e.velocityY=0,e.lastMoveTime=performance.now(),Hs(t))},e.onMouseUp=()=>{let n=e.dragging;n&&document.addEventListener("click",Us,{capture:!0,once:!0}),e.pressed=!1,e.dragging=!1,go(t),n&&(e.overscrollY!==0&&vo(),(Math.abs(e.velocityX)>Dt/16||Math.abs(e.velocityY)>Dt/16)&&Vs())},e.onMouseLeave=()=>{e.pressed=!1,e.dragging=!1,Pt(),t.style.opacity="0",go(t)},e.onDragStart=n=>n.preventDefault(),document.addEventListener("mousemove",e.onMouseMove),document.addEventListener("mousedown",e.onMouseDown),document.addEventListener("mouseup",e.onMouseUp),document.addEventListener("mouseleave",e.onMouseLeave),document.addEventListener("dragstart",e.onDragStart)}function Wt(){let e=E().touch;e.active&&(e.active=!1,e.pressed=!1,e.dragging=!1,Pt(),e.overscrollY!==0&&(e.overscrollY=0,document.body.style.transition="",document.body.style.transform=""),Ys(),e.circleEl&&(e.circleEl.remove(),e.circleEl=null),e.onMouseMove&&document.removeEventListener("mousemove",e.onMouseMove),e.onMouseDown&&document.removeEventListener("mousedown",e.onMouseDown),e.onMouseUp&&document.removeEventListener("mouseup",e.onMouseUp),e.onMouseLeave&&document.removeEventListener("mouseleave",e.onMouseLeave),e.onDragStart&&document.removeEventListener("dragstart",e.onDragStart),e.onMouseMove=null,e.onMouseDown=null,e.onMouseUp=null,e.onMouseLeave=null,e.onDragStart=null)}function bo(){let{circleEl:e}=E().touch;e&&(e.style.opacity="0")}function wo(){let e=E().touch;e.active&&e.circleEl&&(e.circleEl.style.opacity="1")}function Us(e){e.preventDefault(),e.stopPropagation()}function Vs(){Pt();let e=E().touch,t=e.scrollContainer||document.documentElement,n=e.velocityX*16,r=e.velocityY*16;function o(){let i=E().touch;if(n*=po,r*=po,Math.abs(n)<Dt&&Math.abs(r)<Dt){i.momentumFrame=null,i.overscrollY!==0&&vo();return}let a=t.scrollTop;t.scrollTop+=r,t.scrollLeft+=n;let s=t.scrollTop-a,c=r-s;if(Math.abs(c)>.5){let l=Un*.5/(1+Math.abs(i.overscrollY)/200);i.overscrollY+=c*l,Vn(),r*=.7}i.momentumFrame=requestAnimationFrame(o)}e.momentumFrame=requestAnimationFrame(o)}function Pt(){let e=E().touch;e.momentumFrame!==null&&(cancelAnimationFrame(e.momentumFrame),e.momentumFrame=null)}function Vn(){let e=E().touch;document.body.style.transition="none",document.body.style.transform=`translateY(${-e.overscrollY}px)`}function vo(){let e=E().touch;e.bouncing=!0,e.overscrollY=0,document.body.style.transition=`transform ${ho}ms cubic-bezier(0.2, 0.9, 0.3, 1)`,document.body.style.transform="",e.bounceTimer&&clearTimeout(e.bounceTimer),e.bounceTimer=setTimeout(()=>{let t=E().touch;t.bouncing=!1,t.bounceTimer=null,document.body.style.transition="",document.body.style.transform=""},ho)}function Gs(){let e=E().touch;e.bouncing&&(e.bouncing=!1,e.bounceTimer&&(clearTimeout(e.bounceTimer),e.bounceTimer=null),document.body.style.transition="")}function zs(){document.getElementById(Hn)?.remove();let e=document.createElement("style");e.id=Hn,e.textContent=`
2
+ `);let i=r.length>0?t+1:t;return o+=Pn(e.children,i),o}function Zr(e){if(e===null)return"null";if(e===void 0)return"undefined";if(e instanceof Error)return e.stack||e.message||String(e);if(typeof e=="object")try{return JSON.stringify(e)}catch{return String(e)}return String(e)}function le(e){return new Promise(t=>setTimeout(t,e))}function Ke(){let e=null,t=0;for(let n of document.querySelectorAll("*")){let r=n,o=getComputedStyle(r).overflowY;if(o!=="auto"&&o!=="scroll")continue;let i=r.scrollHeight-r.clientHeight;i<=20||i>t&&(t=i,e=r)}return e??document.documentElement}var Fs=["log","info","warn","error","debug"];function Xr(){if(!console.__ms_patched){console.__ms_patched=!0;for(let e of Fs){let t=console[e];console[e]=(...n)=>{t&&t.apply(console,n),pe({type:"console",level:e,args:n.map(Zr),url:location.href})}}}}function Kr(){window.__ms_error_patched||(window.__ms_error_patched=!0,window.addEventListener("error",e=>{_n({type:"error",message:e.message,stack:e.error&&e.error.stack||"",source:e.filename,line:e.lineno,column:e.colno,url:location.href})}),window.addEventListener("unhandledrejection",e=>{let t=e.reason||{};_n({type:"error",message:t.message||String(t),stack:t.stack||"",url:location.href})}))}function Jr(){if(!window.fetch||window.fetch.__ms_patched)return;let e=window.fetch;window.fetch=function(t,n){let r=(n?.method||"GET").toUpperCase(),o=typeof t=="string"?t:t instanceof URL?t.href:t.url||String(t);if(o.includes("/__mindstudio_dev__/"))return e.apply(this,[t,n]);let i=Date.now();return $t(),e.apply(this,[t,n]).then(a=>{pt();let s={type:"network",method:r,url:o,status:a.status,statusText:a.statusText,duration:Date.now()-i,ok:a.ok};if(a.ok)pe(s);else try{a.clone().text().then(c=>{s.body=c.slice(0,1e3),pe(s)}).catch(()=>pe(s))}catch{pe(s)}return a},a=>{throw pt(),pe({type:"network",method:r,url:o,error:a.message||String(a),duration:Date.now()-i,ok:!1}),a})},window.fetch.__ms_patched=!0}function Qr(){document.__ms_click_patched||(document.__ms_click_patched=!0,document.addEventListener("click",e=>{let t=e.target,n=(t?.textContent||"").trim().slice(0,100);pe({type:"interaction",event:"click",target:he(t),text:n,url:location.href})},!0))}function eo(){if(XMLHttpRequest.prototype.open.__ms_patched)return;let e=window.XMLHttpRequest,t=e.prototype.open,n=e.prototype.send;e.prototype.open=function(r,o,...i){return this.__ms_method=r.toUpperCase(),this.__ms_url=String(o),t.apply(this,[r,o,...i])},e.prototype.send=function(r){let o=this.__ms_method||"GET",i=this.__ms_url||"";if(i.includes("/__mindstudio_dev__/"))return n.apply(this,[r]);let a=Date.now();return $t(),this.addEventListener("loadend",function(){pt(),pe({type:"network",method:o,url:i,status:this.status,statusText:this.statusText,duration:Date.now()-a,ok:this.status>=200&&this.status<300,...this.status>=400?{body:(this.responseText||"").slice(0,1e3)}:{},via:"xhr"})},{once:!0}),n.apply(this,[r])},XMLHttpRequest.prototype.open.__ms_patched=!0}function xe(e){let t=null;if(e.ref){let n=He(),r=n.get(e.ref);if(r&&r.isConnected)if(Ne(r))t={element:r,matched:`${he(r)} [ref=${e.ref}]`};else throw new Error(`Element [ref=${e.ref}] exists but is hidden (${Wn(r)}). It may be inside a closed dialog or collapsed section.`);else{let o=[...n.entries()].filter(([,i])=>i.isConnected&&Ne(i)).slice(0,10).map(([i,a])=>`${he(a)} [ref=${i}]`).join(", ");throw new Error(`Element [ref=${e.ref}] not found. `+(o?`Available refs: ${o}`:"No refs available \u2014 take a snapshot first."))}}if(!t&&(e.text||e.role&&e.text)){let n=e.text,r=e.role,o=to(n,r);if(o.length===0){let i=to(n,r,!0);if(i.length>0)throw new Error(`Found ${r?r+" ":""}"${n}" but it is hidden (${Wn(i[0])}). Wait for it to become visible or check if a dialog/modal needs to be opened first.`);let a=r?`${r} "${n}"`:`"${n}"`,s=no(r);throw new Error(`No element found matching ${a}. `+(s?`Visible ${r||"element"}s: ${s}`:"The page may still be loading \u2014 try a wait command first."))}if(o.length>1){let i=o.filter(ro),a=i.length===1?i[0]:o[0];t={element:a,matched:he(a)}}else t={element:o[0],matched:he(o[0])}}if(!t&&e.role&&!e.text){let n=e.role,r=_s(n);if(r.length===0){let o=no(n);throw new Error(`No visible element with role "${n}" found. `+(o?`Visible ${n}s: ${o}`:"The page may still be loading \u2014 try a wait command first."))}t={element:r[0],matched:he(r[0])}}if(!t&&e.label){let n=e.label,r=$s(n);if(!r){let o=[...document.querySelectorAll("label")].filter(Ne).map(i=>`"${(i.textContent||"").trim().slice(0,40)}"`).slice(0,8).join(", ");throw new Error(`No input found with label "${n}". `+(o?`Visible labels: ${o}`:"No labels found on the page."))}t={element:r,matched:`${he(r)} via label "${n}"`}}if(!t&&e.selector){let n=e.selector,r=document.querySelector(n);if(!r)throw new Error(`No element found for selector "${n}".`);if(!Ne(r))throw new Error(`Found element for selector "${n}" but it is hidden (${Wn(r)}).`);t={element:r,matched:`${he(r)} via selector "${n}"`}}if(!t)throw new Error("No targeting field provided (need ref, text, role, label, or selector)");return t}function to(e,t,n=!1){let r=[],o=e.toLowerCase();for(let i of document.querySelectorAll("*")){if(!n&&!Ne(i)||n&&!i.isConnected||t&&ye(i)!==t)continue;if(Se(i).toLowerCase().includes(o)){r.push(i);continue}i.children.length||(i.textContent||"").trim().toLowerCase().includes(o)&&r.push(i)}return r}function _s(e){let t=[];for(let n of document.querySelectorAll("*"))Ne(n)&&ye(n)===e&&t.push(n);return t}function $s(e){let t=e.toLowerCase();for(let n of document.querySelectorAll("label")){if(!(n.textContent||"").trim().toLowerCase().includes(t))continue;let o=n.getAttribute("for");if(o){let a=document.getElementById(o);if(a&&Ne(a))return a}let i=n.querySelector("input, textarea, select");if(i&&Ne(i))return i}return null}function Ne(e){if(!e.isConnected)return!1;try{let t=getComputedStyle(e);if(t.display==="none"||t.visibility==="hidden")return!1}catch{return!1}return!0}function ro(e){if(e.matches('a, button, input, textarea, select, [role="button"], [role="link"], [tabindex]'))return!0;try{return getComputedStyle(e).cursor==="pointer"}catch{return!1}}function Wn(e){try{let t=getComputedStyle(e);if(t.display==="none")return"display: none";if(t.visibility==="hidden")return"visibility: hidden"}catch{}return e.getAttribute("aria-hidden")==="true"?'aria-hidden="true"':"hidden"}function no(e){let t=[];for(let n of document.querySelectorAll("*"))if(Ne(n)&&(e?ye(n)===e&&t.push(n):ro(n)&&t.push(n),t.length>=10))break;return t.length===0?"":t.map(n=>`"${Se(n).slice(0,40)||he(n)}"`).join(", ")}function Bn(e){let t=e.getBoundingClientRect(),n=t.left+t.width/2,r=t.top+t.height/2,o={bubbles:!0,cancelable:!0,clientX:n,clientY:r,button:0};e.dispatchEvent(new PointerEvent("pointerdown",{...o,pointerId:1})),e.dispatchEvent(new MouseEvent("mousedown",o)),e instanceof HTMLElement&&e.focus(),e.dispatchEvent(new PointerEvent("pointerup",{...o,pointerId:1})),e.dispatchEvent(new MouseEvent("mouseup",o)),e.dispatchEvent(new MouseEvent("click",o))}var Os=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value")?.set,Ds=Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype,"value")?.set;async function ao(e,t,n={}){if(!(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement))throw new Error("type command requires an input or textarea element");e.focus(),Bn(e),n.clear&&(oo(e,""),e.dispatchEvent(new Event("input",{bubbles:!0})));for(let r=0;r<t.length;r++){let o=t[r];e.dispatchEvent(new KeyboardEvent("keydown",{key:o,code:`Key${o.toUpperCase()}`,bubbles:!0})),e.dispatchEvent(new KeyboardEvent("keypress",{key:o,code:`Key${o.toUpperCase()}`,bubbles:!0})),oo(e,e.value+o),e.dispatchEvent(new Event("input",{bubbles:!0})),e.dispatchEvent(new KeyboardEvent("keyup",{key:o,code:`Key${o.toUpperCase()}`,bubbles:!0})),await le(Ps(o,t.length))}e.dispatchEvent(new Event("change",{bubbles:!0}))}function Ps(e,t){let n=Math.random()*50-25,r;if(e===" "?r=120+n:/[.,!?;:\-]/.test(e)?r=140+n:/[A-Z]/.test(e)?r=115+n:r=85+n,t<=20)return r;let o=Math.max(.1,20/t);return r*o}function oo(e,t){let n=e instanceof HTMLTextAreaElement?Ds:Os;n?n.call(e,t):e.value=t}async function so(e){let t=e.timeout||5e3,n=Date.now(),r=n+t;for(;Date.now()<r;)try{return{...xe(e),elapsed:Date.now()-n}}catch{await le(100)}let o=e.text?`"${e.text}"`:e.role?`role "${e.role}"`:e.selector?`selector "${e.selector}"`:"element";throw new Error(`Timed out waiting for ${o} after ${t}ms`)}var io=Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype,"value")?.set;function lo(e,t){if(!(e instanceof HTMLSelectElement))throw new Error("select command requires a <select> element");let n=t.toLowerCase(),r=null;for(let o of e.options)if(o.text.toLowerCase().includes(n)||o.value.toLowerCase()===n||o.label.toLowerCase().includes(n)){r=o;break}if(!r){let o=[...e.options].map(i=>`"${i.text}"`).join(", ");throw new Error(`No option matching "${t}" in select. Available options: ${o}`)}return io?io.call(e,r.value):e.value=r.value,e.dispatchEvent(new Event("change",{bubbles:!0})),e.dispatchEvent(new Event("input",{bubbles:!0})),r.text}async function co(e){try{let t=e.trim(),r=/\breturn\b/.test(t)||/[;{]/.test(t)?e:`return (${e})`,i=new Function(r)();return i instanceof Promise?await i:i}catch(t){throw new Error(`evaluate failed: ${t instanceof Error?t.message:String(t)}`)}}var uo="__mindstudio-touch-circle",Hn="__mindstudio-touch-style",fo=44,mo=5,po=.95,Dt=.5,Un=.45,ho=600;function Bs(){document.getElementById(uo)?.remove();let e=document.createElement("div");return e.id=uo,e.style.cssText=["position: fixed","z-index: 2147483647","pointer-events: none",`width: ${fo}px`,`height: ${fo}px`,"border-radius: 50%","background: rgba(255, 255, 255, 0.08)","border: 2px solid rgba(255, 255, 255, 0.85)","box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.35), inset 0 0 0 0.5px rgba(0, 0, 0, 0.1)","backdrop-filter: blur(1px)","-webkit-backdrop-filter: blur(1.5px)","transform: translate(-50%, -50%) scale(1)","transition: transform 100ms ease, opacity 100ms ease, background 100ms ease","opacity: 0","will-change: left, top, transform, opacity"].join("; "),document.documentElement.appendChild(e),e}function Hs(e){e.style.transform="translate(-50%, -50%) scale(0.88)",e.style.background="rgba(255, 255, 255, 0.18)"}function go(e){e.style.transform="translate(-50%, -50%) scale(1)",e.style.background="rgba(255, 255, 255, 0.08)"}function yo(){window.parent!==window&&E().zoom.mobilePreview&&ht()}function ht(){let e=E().touch;if(e.active)return;e.active=!0,e.scrollContainer=Ke(),zs();let t=Bs();e.circleEl=t,e.onMouseMove=n=>{let r=E();if(r.cursor.executing||r.screenshot.capturing){t.style.opacity="0";return}if(t.style.left=`${n.clientX}px`,t.style.top=`${n.clientY}px`,t.style.opacity="1",e.pressed){let o=Math.abs(n.clientX-e.startX),i=Math.abs(n.clientY-e.startY);if(!e.dragging&&(o>mo||i>mo)&&(e.dragging=!0),e.dragging){let a=e.scrollContainer||document.documentElement,s=performance.now(),c=s-e.lastMoveTime||16,l=e.lastX-n.clientX,u=e.lastY-n.clientY;e.bouncing&&Gs();let d=a.scrollTop;a.scrollTop+=u,a.scrollLeft+=l;let m=a.scrollTop-d,p=u-m;if(Math.abs(p)>.5){let g=Un/(1+Math.abs(e.overscrollY)/200);e.overscrollY+=p*g,Vn()}else if(e.overscrollY!==0){let g=Un/(1+Math.abs(e.overscrollY)/200);e.overscrollY+=p*g,(e.overscrollY>0&&u<0||e.overscrollY<0&&u>0)&&(e.overscrollY*=.7),Vn()}e.velocityX=.8*(l/c)+.2*e.velocityX,e.velocityY=.8*(u/c)+.2*e.velocityY,e.lastMoveTime=s,n.preventDefault()}e.lastX=n.clientX,e.lastY=n.clientY}},e.onMouseDown=n=>{E().cursor.executing||(Pt(),e.pressed=!0,e.dragging=!1,e.startX=n.clientX,e.startY=n.clientY,e.lastX=n.clientX,e.lastY=n.clientY,e.velocityX=0,e.velocityY=0,e.lastMoveTime=performance.now(),Hs(t))},e.onMouseUp=()=>{let n=e.dragging;n&&document.addEventListener("click",Us,{capture:!0,once:!0}),e.pressed=!1,e.dragging=!1,go(t),n&&(e.overscrollY!==0&&vo(),(Math.abs(e.velocityX)>Dt/16||Math.abs(e.velocityY)>Dt/16)&&Vs())},e.onMouseLeave=()=>{e.pressed=!1,e.dragging=!1,Pt(),t.style.opacity="0",go(t)},e.onDragStart=n=>n.preventDefault(),document.addEventListener("mousemove",e.onMouseMove),document.addEventListener("mousedown",e.onMouseDown),document.addEventListener("mouseup",e.onMouseUp),document.addEventListener("mouseleave",e.onMouseLeave),document.addEventListener("dragstart",e.onDragStart)}function Wt(){let e=E().touch;e.active&&(e.active=!1,e.pressed=!1,e.dragging=!1,Pt(),e.overscrollY!==0&&(e.overscrollY=0,document.body.style.transition="",document.body.style.transform=""),Ys(),e.circleEl&&(e.circleEl.remove(),e.circleEl=null),e.onMouseMove&&document.removeEventListener("mousemove",e.onMouseMove),e.onMouseDown&&document.removeEventListener("mousedown",e.onMouseDown),e.onMouseUp&&document.removeEventListener("mouseup",e.onMouseUp),e.onMouseLeave&&document.removeEventListener("mouseleave",e.onMouseLeave),e.onDragStart&&document.removeEventListener("dragstart",e.onDragStart),e.onMouseMove=null,e.onMouseDown=null,e.onMouseUp=null,e.onMouseLeave=null,e.onDragStart=null)}function bo(){let{circleEl:e}=E().touch;e&&(e.style.opacity="0")}function wo(){let e=E().touch;e.active&&e.circleEl&&(e.circleEl.style.opacity="1")}function Us(e){e.preventDefault(),e.stopPropagation()}function Vs(){Pt();let e=E().touch,t=e.scrollContainer||document.documentElement,n=e.velocityX*16,r=e.velocityY*16;function o(){let i=E().touch;if(n*=po,r*=po,Math.abs(n)<Dt&&Math.abs(r)<Dt){i.momentumFrame=null,i.overscrollY!==0&&vo();return}let a=t.scrollTop;t.scrollTop+=r,t.scrollLeft+=n;let s=t.scrollTop-a,c=r-s;if(Math.abs(c)>.5){let l=Un*.5/(1+Math.abs(i.overscrollY)/200);i.overscrollY+=c*l,Vn(),r*=.7}i.momentumFrame=requestAnimationFrame(o)}e.momentumFrame=requestAnimationFrame(o)}function Pt(){let e=E().touch;e.momentumFrame!==null&&(cancelAnimationFrame(e.momentumFrame),e.momentumFrame=null)}function Vn(){let e=E().touch;document.body.style.transition="none",document.body.style.transform=`translateY(${-e.overscrollY}px)`}function vo(){let e=E().touch;e.bouncing=!0,e.overscrollY=0,document.body.style.transition=`transform ${ho}ms cubic-bezier(0.2, 0.9, 0.3, 1)`,document.body.style.transform="",e.bounceTimer&&clearTimeout(e.bounceTimer),e.bounceTimer=setTimeout(()=>{let t=E().touch;t.bouncing=!1,t.bounceTimer=null,document.body.style.transition="",document.body.style.transform=""},ho)}function Gs(){let e=E().touch;e.bouncing&&(e.bouncing=!1,e.bounceTimer&&(clearTimeout(e.bounceTimer),e.bounceTimer=null),document.body.style.transition="")}function zs(){document.getElementById(Hn)?.remove();let e=document.createElement("style");e.id=Hn,e.textContent=`
3
3
  *, *::before, *::after {
4
4
  cursor: none !important;
5
5
  user-select: none !important;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindstudio-ai/browser-agent",
3
- "version": "0.1.65",
3
+ "version": "0.1.66",
4
4
  "description": "Browser-side agent for MindStudio dev previews — captures logs, provides DOM snapshots, and enables remote interaction.",
5
5
  "main": "dist/index.js",
6
6
  "files": [