@runtypelabs/persona 3.21.3 → 3.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +67 -0
  2. package/dist/animations/glyph-cycle.cjs +2 -262
  3. package/dist/animations/glyph-cycle.d.cts +1 -1
  4. package/dist/animations/glyph-cycle.d.ts +1 -1
  5. package/dist/animations/glyph-cycle.js +2 -235
  6. package/dist/animations/{types-CWPIj66R.d.cts → types-BZVr1YOV.d.cts} +10 -0
  7. package/dist/animations/{types-CWPIj66R.d.ts → types-BZVr1YOV.d.ts} +10 -0
  8. package/dist/animations/wipe.cjs +2 -72
  9. package/dist/animations/wipe.d.cts +1 -1
  10. package/dist/animations/wipe.d.ts +1 -1
  11. package/dist/animations/wipe.js +2 -45
  12. package/dist/index.cjs +52 -45
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.cts +474 -6
  15. package/dist/index.d.ts +474 -6
  16. package/dist/index.global.js +107 -97
  17. package/dist/index.global.js.map +1 -1
  18. package/dist/index.js +52 -45
  19. package/dist/index.js.map +1 -1
  20. package/dist/smart-dom-reader.cjs +23 -0
  21. package/dist/smart-dom-reader.d.cts +4521 -0
  22. package/dist/smart-dom-reader.d.ts +4521 -0
  23. package/dist/smart-dom-reader.js +23 -0
  24. package/dist/testing.cjs +3 -84
  25. package/dist/testing.js +3 -55
  26. package/dist/theme-editor.cjs +57 -22501
  27. package/dist/theme-editor.d.cts +348 -1
  28. package/dist/theme-editor.d.ts +348 -1
  29. package/dist/theme-editor.js +57 -22503
  30. package/package.json +16 -6
  31. package/src/client.test.ts +165 -0
  32. package/src/client.ts +144 -23
  33. package/src/components/event-stream-view.ts +122 -1
  34. package/src/index.ts +26 -0
  35. package/src/session.test.ts +258 -0
  36. package/src/session.ts +886 -30
  37. package/src/session.webmcp.test.ts +815 -0
  38. package/src/smart-dom-reader.test.ts +135 -0
  39. package/src/smart-dom-reader.ts +135 -0
  40. package/src/theme-editor/color-utils.test.ts +59 -0
  41. package/src/theme-editor/color-utils.ts +38 -2
  42. package/src/theme-editor/index.ts +35 -0
  43. package/src/theme-editor/webmcp/coerce.test.ts +86 -0
  44. package/src/theme-editor/webmcp/coerce.ts +286 -0
  45. package/src/theme-editor/webmcp/index.ts +45 -0
  46. package/src/theme-editor/webmcp/summary.ts +324 -0
  47. package/src/theme-editor/webmcp/tools.test.ts +205 -0
  48. package/src/theme-editor/webmcp/tools.ts +795 -0
  49. package/src/theme-editor/webmcp/types.ts +87 -0
  50. package/src/types.ts +186 -0
  51. package/src/ui.composer-keyboard.test.ts +229 -0
  52. package/src/ui.ts +151 -8
  53. package/src/utils/composer-history.test.ts +128 -0
  54. package/src/utils/composer-history.ts +113 -0
  55. package/src/utils/message-fingerprint.test.ts +20 -0
  56. package/src/utils/message-fingerprint.ts +2 -0
  57. package/src/utils/smart-dom-adapter.test.ts +257 -0
  58. package/src/utils/smart-dom-adapter.ts +217 -0
  59. package/src/utils/throughput-tracker.test.ts +366 -0
  60. package/src/utils/throughput-tracker.ts +427 -0
  61. package/{LICENSE → src/vendor/smart-dom-reader/LICENSE} +2 -2
  62. package/src/vendor/smart-dom-reader/README.md +61 -0
  63. package/src/vendor/smart-dom-reader/index.d.ts +476 -0
  64. package/src/vendor/smart-dom-reader/index.js +1618 -0
  65. package/src/webmcp-bridge.test.ts +429 -0
  66. package/src/webmcp-bridge.ts +547 -0
@@ -0,0 +1,23 @@
1
+ var Q=Object.defineProperty;var Z=(s,e,t)=>e in s?Q(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var M=(s,e,t)=>Z(s,typeof e!="symbol"?e+"":e,t);var D=Object.defineProperty,tt=Object.getOwnPropertyDescriptor,et=Object.getOwnPropertyNames,U=Object.prototype.hasOwnProperty,T=(s,e)=>()=>(s&&(e=s(s=0)),e),nt=(s,e)=>{let t={};for(var n in s)D(t,n,{get:s[n],enumerable:!0});return e||D(t,Symbol.toStringTag,{value:"Module"}),t},rt=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(var r=et(e),i=0,a=r.length,o;i<a;i++)o=r[i],!U.call(s,o)&&o!==t&&D(s,o,{get:(c=>e[c]).bind(null,o),enumerable:!(n=tt(e,o))||n.enumerable});return s},st=s=>U.call(s,"module.exports")?s["module.exports"]:rt(D({},"__esModule",{value:!0}),s),ot=void 0,w,W=T((()=>{w=class v{static findMainContent(e){let t=e.querySelector('main, [role="main"]');return t||(e.body?v.detectMainContent(e.body):e.documentElement)}static detectMainContent(e){let t=[];if(v.collectCandidates(e,t,15),t.length===0)return e;t.sort((r,i)=>v.calculateContentScore(i)-v.calculateContentScore(r));let n=t[0];for(let r=1;r<t.length;r++){let i=t[r];!t.some((a,o)=>o!==r&&a.contains(i))&&v.calculateContentScore(i)>v.calculateContentScore(n)&&(n=i)}return n}static collectCandidates(e,t,n){v.calculateContentScore(e)>=n&&t.push(e),Array.from(e.children).forEach(r=>{v.collectCandidates(r,t,n)})}static calculateContentScore(e){var d;let t=0,n=["article","content","main-container","main","main-content","post","entry"],r=["content","main","article","post","entry"];n.forEach(f=>{e.classList.contains(f)&&(t+=10)}),r.forEach(f=>{var h;(h=e.id)!=null&&h.toLowerCase().includes(f)&&(t+=10)});let i=e.tagName.toLowerCase();["article","main","section"].includes(i)&&(t+=8);let a=e.getElementsByTagName("p").length;t+=Math.min(a*2,10);let o=e.querySelectorAll("h1, h2, h3").length;t+=Math.min(o*3,9);let c=((d=e.textContent)==null?void 0:d.trim().length)||0;c>300&&(t+=Math.min(Math.floor(c/300)*2,10));let l=v.calculateLinkDensity(e);l<.3?t+=5:l>.5&&(t-=5),(e.hasAttribute("data-main")||e.hasAttribute("data-content")||e.hasAttribute("itemprop"))&&(t+=8);let u=e.getAttribute("role");return(u==="main"||u==="article")&&(t+=10),e.matches("aside, nav, header, footer, .sidebar, .navigation, .menu, .ad, .advertisement")&&(t-=10),e.getElementsByTagName("form").length>2&&(t-=5),Math.max(0,t)}static calculateLinkDensity(e){var i,a;let t=e.getElementsByTagName("a"),n=0;for(let o of Array.from(t))n+=((i=o.textContent)==null?void 0:i.length)||0;let r=((a=e.textContent)==null?void 0:a.length)||1;return n/r}static isNavigation(e){if(e.tagName.toLowerCase()==="nav"||e.getAttribute("role")==="navigation")return!0;let t=[/nav/i,/menu/i,/sidebar/i,/toolbar/i],n=`${e.className} ${e.id}`.toLowerCase();return t.some(r=>r.test(n))}static isSupplementary(e){if(e.tagName.toLowerCase()==="aside"||e.getAttribute("role")==="complementary")return!0;let t=[/sidebar/i,/widget/i,/related/i,/advertisement/i,/social/i],n=`${e.className} ${e.id}`.toLowerCase();return t.some(r=>r.test(n))}static detectLandmarks(e){let t={navigation:[],main:[],complementary:[],contentinfo:[],banner:[],search:[],form:[],region:[]};for(let[n,r]of Object.entries({navigation:'nav, [role="navigation"]',main:'main, [role="main"]',complementary:'aside, [role="complementary"]',contentinfo:'footer, [role="contentinfo"]',banner:'header, [role="banner"]',search:'[role="search"]',form:'form[aria-label], form[aria-labelledby], [role="form"]',region:'section[aria-label], section[aria-labelledby], [role="region"]'})){let i=e.querySelectorAll(r);t[n]=Array.from(i)}return t}}})),E,N=T((()=>{E=class S{static generateSelectors(e){var p;let t=e.ownerDocument||document,n=[];e.id&&S.isUniqueId(e.id,t)&&n.push({type:"id",value:`#${CSS.escape(e.id)}`,score:100});let r=S.getDataTestId(e);if(r){let m=`[data-testid="${CSS.escape(r)}"]`;n.push({type:"data-testid",value:m,score:90+(S.isUniqueSelectorSafe(m,t)?5:0)})}let i=e.getAttribute("role"),a=e.getAttribute("aria-label");if(i&&a){let m=`[role="${CSS.escape(i)}"][aria-label="${CSS.escape(a)}"]`;n.push({type:"role-aria",value:m,score:85+(S.isUniqueSelectorSafe(m,t)?5:0)})}let o=e.getAttribute("name");if(o){let m=`[name="${CSS.escape(o)}"]`;n.push({type:"name",value:m,score:78+(S.isUniqueSelectorSafe(m,t)?5:0)})}let c=S.generateCSSSelector(e,t),l=(c.match(/:nth-child\(/g)||[]).length*10,u=c.includes(".")?8:0,d=Math.max(0,70+u-l);n.push({type:"class-path",value:c,score:d});let f=S.generateXPath(e,t);n.push({type:"xpath",value:f,score:40});let h=S.generateTextBasedSelector(e);h&&n.push({type:"text",value:h,score:30}),n.sort((m,x)=>x.score-m.score);let g={css:((p=n.find(m=>m.type!=="xpath"&&m.type!=="text"))==null?void 0:p.value)||c,xpath:f,candidates:n};return h&&(g.textBased=h),r&&(g.dataTestId=r),a&&(g.ariaLabel=a),g}static generateCSSSelector(e,t){var a;if(e.id&&S.isUniqueId(e.id,t))return`#${CSS.escape(e.id)}`;let n=S.getDataTestId(e);if(n)return`[data-testid="${CSS.escape(n)}"]`;let r=[],i=e;for(;i&&i.nodeType===Node.ELEMENT_NODE;){let o=i.nodeName.toLowerCase();if(i.id&&S.isUniqueId(i.id,t)){o=`#${CSS.escape(i.id)}`,r.unshift(o);break}let c=S.getMeaningfulClasses(i);c.length>0&&(o+=`.${c.map(u=>CSS.escape(u)).join(".")}`);let l=(a=i.parentElement)==null?void 0:a.children;if(l&&l.length>1){let u=Array.from(l).indexOf(i);(u>0||!S.isUniqueSelector(o,i.parentElement))&&(o+=`:nth-child(${u+1})`)}r.unshift(o),i=i.parentElement}return S.optimizePath(r,e,t)}static generateXPath(e,t){var i;if(e.id&&S.isUniqueId(e.id,t))return`//*[@id="${e.id}"]`;let n=[],r=e;for(;r&&r.nodeType===Node.ELEMENT_NODE;){let a=r.nodeName.toLowerCase();if(r.id&&S.isUniqueId(r.id,t)){n.unshift(`//*[@id="${r.id}"]`);break}let o=a,c=(i=r.parentElement)==null?void 0:i.children;if(c){let l=Array.from(c).filter(u=>u.nodeName.toLowerCase()===a);if(l.length>1){let u=l.indexOf(r)+1;o+=`[${u}]`}}n.unshift(o),r=r.parentElement}return`//${n.join("/")}`}static generateTextBasedSelector(e){var r;let t=(r=e.textContent)==null?void 0:r.trim();if(!t||t.length>50)return;let n=e.nodeName.toLowerCase();if(["button","a","label"].includes(n))return`${n}:contains("${t.replace(/['"\\]/g,"\\$&")}")`}static getDataTestId(e){return e.getAttribute("data-testid")||e.getAttribute("data-test-id")||e.getAttribute("data-test")||e.getAttribute("data-cy")||void 0}static isUniqueId(e,t){return t.querySelectorAll(`#${CSS.escape(e)}`).length===1}static isUniqueSelector(e,t){try{return t.querySelectorAll(e).length===1}catch{return!1}}static isUniqueSelectorSafe(e,t){try{return t.querySelectorAll(e).length===1}catch{return!1}}static getMeaningfulClasses(e){let t=Array.from(e.classList),n=[/^(p|m|w|h|text|bg|border|flex|grid|col|row)-/,/^(xs|sm|md|lg|xl|2xl):/,/^(hover|focus|active|disabled|checked):/,/^js-/,/^is-/,/^has-/];return t.filter(r=>r.length<3?!1:!n.some(i=>i.test(r))).slice(0,2)}static optimizePath(e,t,n){for(let r=0;r<e.length-1;r++){let i=e.slice(r).join(" > ");try{let a=n.querySelectorAll(i);if(a.length===1&&a[0]===t)return i}catch{}}return e.join(" > ")}static getContextPath(e){var a;let t=[],n=e,r=0,i=5;for(;n&&n!==((a=e.ownerDocument)==null?void 0:a.body)&&r<i;){let o=n.nodeName.toLowerCase(),c=o;if(n.id)c=`${o}#${n.id}`;else if(n.className&&typeof n.className=="string"){let u=n.className.split(" ")[0];u&&(c=`${o}.${u}`)}let l=n.getAttribute("role");l&&(c+=`[role="${l}"]`),t.unshift(c),n=n.parentElement,r++}return t}}})),b,B=T((()=>{var s;N(),b=(s=class{static isVisible(t,n){var a,o;let r=t.getBoundingClientRect(),i=n||((o=(a=t.ownerDocument)==null?void 0:a.defaultView)==null?void 0:o.getComputedStyle(t));return i?r.width>0&&r.height>0&&i.display!=="none"&&i.visibility!=="hidden"&&i.opacity!=="0"&&t.offsetParent!==null:!1}static isInViewport(t,n){var a,o,c,l;let r=t.getBoundingClientRect(),i=n||{width:((o=(a=t.ownerDocument)==null?void 0:a.defaultView)==null?void 0:o.innerWidth)||0,height:((l=(c=t.ownerDocument)==null?void 0:c.defaultView)==null?void 0:l.innerHeight)||0};return r.top<i.height&&r.bottom>0&&r.left<i.width&&r.right>0}static passesFilter(t,n){var a,o,c,l,u,d,f,h,g,p;if(!n)return!0;let r=t;if((a=n.excludeSelectors)!=null&&a.length){for(let m of n.excludeSelectors)if(t.matches(m))return!1}if((o=n.includeSelectors)!=null&&o.length){let m=!1;for(let x of n.includeSelectors)if(t.matches(x)){m=!0;break}if(!m)return!1}if((c=n.tags)!=null&&c.length&&!n.tags.includes(t.tagName.toLowerCase()))return!1;let i=((l=r.textContent)==null?void 0:l.toLowerCase())||"";if((u=n.textContains)!=null&&u.length){let m=!1;for(let x of n.textContains)if(i.includes(x.toLowerCase())){m=!0;break}if(!m)return!1}if((d=n.textMatches)!=null&&d.length){let m=!1;for(let x of n.textMatches)if(x.test(i)){m=!0;break}if(!m)return!1}if((f=n.hasAttributes)!=null&&f.length){for(let m of n.hasAttributes)if(!t.hasAttribute(m))return!1}if(n.attributeValues)for(let[m,x]of Object.entries(n.attributeValues)){let C=t.getAttribute(m);if(!C)return!1;if(typeof x=="string"){if(C!==x)return!1}else if(x instanceof RegExp&&!x.test(C))return!1}if((h=n.withinSelectors)!=null&&h.length){let m=!1;for(let x of n.withinSelectors)if(t.closest(x)){m=!0;break}if(!m)return!1}if((g=n.interactionTypes)!=null&&g.length){let m=s.getInteractionInfo(t),x=!1;for(let C of n.interactionTypes)if(m[C]){x=!0;break}if(!x)return!1}if(n.nearText){let m=t.parentElement;if(!m||!((p=m.textContent)!=null&&p.toLowerCase().includes(n.nearText.toLowerCase())))return!1}return!0}static extractElement(t,n,r=0){if(n.maxDepth&&r>n.maxDepth||!n.includeHidden&&!s.isVisible(t)||n.viewportOnly&&!s.isInViewport(t)||!s.passesFilter(t,n.filter))return null;let i=t,a={tag:t.tagName.toLowerCase(),text:s.getElementText(t,n),selector:E.generateSelectors(t),attributes:s.getRelevantAttributes(t,n),context:s.getElementContext(t),interaction:s.getInteractionInfo(t)};if(n.mode==="full"&&s.isSemanticContainer(t)){let o=[];if(n.includeShadowDOM&&i.shadowRoot){let l=s.extractChildren(i.shadowRoot,n,r+1);o.push(...l)}let c=s.extractChildren(t,n,r+1);o.push(...c),o.length>0&&(a.children=o)}return a}static extractChildren(t,n,r){let i=[],a=t.querySelectorAll("*");for(let o of Array.from(a)){if(s.hasExtractedAncestor(o,a))continue;let c=s.extractElement(o,n,r);c&&i.push(c)}return i}static hasExtractedAncestor(t,n){let r=t.parentElement;for(;r;){if(Array.from(n).includes(r))return!0;r=r.parentElement}return!1}static getRelevantAttributes(t,n){var c,l;let r=["id","class","name","type","value","placeholder","href","src","alt","title","action","method","aria-label","aria-describedby","aria-controls","role","disabled","readonly","required","checked","min","max","pattern","step","autocomplete","data-testid","data-test","data-cy"],i={},a=(c=n.attributeTruncateLength)!=null?c:100,o=(l=n.dataAttributeTruncateLength)!=null?l:50;for(let u of r){let d=t.getAttribute(u);d&&(i[u]=d.length>a?`${d.substring(0,a)}...`:d)}for(let u of t.attributes)u.name.startsWith("data-")&&!r.includes(u.name)&&(i[u.name]=u.value.length>o?`${u.value.substring(0,o)}...`:u.value);return i}static getElementContext(t){let n={parentChain:E.getContextPath(t)},r=t.closest("form");r&&(n.nearestForm=E.generateSelectors(r).css);let i=t.closest('section, [role="region"]');i&&(n.nearestSection=E.generateSelectors(i).css);let a=t.closest('main, [role="main"]');a&&(n.nearestMain=E.generateSelectors(a).css);let o=t.closest('nav, [role="navigation"]');return o&&(n.nearestNav=E.generateSelectors(o).css),n}static getInteractionInfo(t){let n=t,r={};(n.onclick||t.getAttribute("onclick")||t.matches('button, a[href], [role="button"], [tabindex]:not([tabindex="-1"])'))&&(r.click=!0),(n.onchange||t.getAttribute("onchange")||t.matches("input, select, textarea"))&&(r.change=!0),(n.onsubmit||t.getAttribute("onsubmit")||t.matches("form"))&&(r.submit=!0),t.matches('a[href], button[type="submit"]')&&(r.nav=!0),(n.hasAttribute("disabled")||n.getAttribute("aria-disabled")==="true")&&(r.disabled=!0),s.isVisible(t)||(r.hidden=!0);let i=t.getAttribute("role");if(i&&(r.role=i),t.matches("input, textarea, select, button")){let a=t.form||t.closest("form");a&&(r.form=E.generateSelectors(a).css)}return r}static getElementText(t,n){var a;if(t.matches("input, textarea")){let o=t;return o.value||o.placeholder||""}if(t.matches("img"))return t.alt||"";let r=((a=t.textContent)==null?void 0:a.trim())||"",i=n==null?void 0:n.textTruncateLength;return i&&r.length>i?`${r.substring(0,i)}...`:r}static isSemanticContainer(t){return t.matches('article, section, nav, aside, main, header, footer, form, table, ul, ol, dl, figure, details, dialog, [role="region"], [role="navigation"], [role="main"], [role="complementary"]')}static getInteractiveElements(t,n){let r=[],i=s.INTERACTIVE_SELECTORS.join(", "),a=t.querySelectorAll(i);for(let o of Array.from(a)){let c=s.extractElement(o,n);c&&r.push(c)}if(n.customSelectors)for(let o of n.customSelectors)try{let c=t.querySelectorAll(o);for(let l of Array.from(c)){let u=s.extractElement(l,n);u&&r.push(u)}}catch{console.warn(`Invalid custom selector: ${o}`)}return r}static getSemanticElements(t,n){let r=[],i=s.SEMANTIC_SELECTORS.join(", "),a=t.querySelectorAll(i);for(let o of Array.from(a)){let c=s.extractElement(o,n);c&&r.push(c)}return r}},M(s,"INTERACTIVE_SELECTORS",["button","a[href]",'input:not([type="hidden"])',"textarea","select",'[role="button"]',"[onclick]",'[contenteditable="true"]',"summary",'[tabindex]:not([tabindex="-1"])']),M(s,"SEMANTIC_SELECTORS",["h1","h2","h3","h4","h5","h6","article","section","nav","aside","main","header","footer","form","table","ul","ol","img[alt]","figure","video","audio",'[role="navigation"]','[role="main"]','[role="complementary"]','[role="contentinfo"]']),s)}));function $(s,e){let t=(s!=null?s:"").trim();if(!e||t.length<=e)return t;let n=["login","log in","sign in","sign up","submit","search","filter","add to cart","next","continue"],r=t.toLowerCase(),i=n.map(l=>({k:l,i:r.indexOf(l)})).find(l=>l.i>-1),a=Math.max(0,Math.floor(e*.66));if(i&&i.i>a){let l=Math.max(12,e-a-5),u=Math.max(0,i.i-Math.floor(l/2)),d=Math.min(t.length,u+l);return`${t.slice(0,a).trimEnd()} \u2026 ${t.slice(u,d).trim()}\u2026`}let o=t.slice(0,e),c=o.lastIndexOf(" ");return`${c>32?o.slice(0,c):o}\u2026`}function it(s){var e;return((e=s.selector)==null?void 0:e.css)||""}function at(s){let e=5381;for(let t=0;t<s.length;t++)e=e*33^s.charCodeAt(t);return`sec-${(e>>>0).toString(36)}`}function z(s){switch(s){case"header":return"\u{1F9ED}";case"navigation":return"\u{1F4D1}";case"main":return"\u{1F4C4}";case"sections":return"\u{1F5C2}\uFE0F";case"sidebar":return"\u{1F4DA}";case"footer":return"\u{1F53B}";case"modals":return"\u{1F4AC}";default:return"\u{1F539}"}}function R(s,e){var o,c,l,u,d;let t=$(s.text||((o=s.attributes)==null?void 0:o.ariaLabel),(c=e==null?void 0:e.maxTextLength)!=null?c:80),n=it(s),r=s.tag.toLowerCase(),i=(l=s.interaction)!=null&&l.submit?"submit":(u=s.interaction)!=null&&u.click?"click":(d=s.interaction)!=null&&d.change?"change":void 0,a=i?` (${i})`:"";return`- ${r.toUpperCase()}: ${t||"(no text)"} \u2192 \`${n}\`${a}`}function ct(s){let e=[];e.push(...s.buttons.map(o=>{var c;return((c=o.selector)==null?void 0:c.css)||""})),e.push(...s.links.map(o=>{var c;return((c=o.selector)==null?void 0:c.css)||""})),e.push(...s.inputs.map(o=>{var c;return((c=o.selector)==null?void 0:c.css)||""})),e.push(...s.clickable.map(o=>{var c;return((c=o.selector)==null?void 0:c.css)||""}));let t=e.length||1,n=e.filter(o=>o.startsWith("#")).length,r=e.filter(o=>/\[data-testid=/.test(o)).length,i=e.filter(o=>/:nth-child\(/.test(o)).length,a=n+r;return`Selector quality: ${Math.round(a/t*100)}% stable (ID/data-testid), ${Math.round(i/t*100)}% structural (:nth-child)`}function lt(s,e){var r,i;let t=[],n=a=>typeof(e==null?void 0:e.maxElements)=="number"?a.slice(0,e.maxElements):a;if(s.buttons.length){t.push("Buttons:");for(let a of n(s.buttons))t.push(R(a,e))}if(s.links.length){t.push("Links:");for(let a of n(s.links))t.push(R(a,e))}if(s.inputs.length){t.push("Inputs:");for(let a of n(s.inputs))t.push(R(a,e))}if(s.clickable.length){t.push("Other Clickable:");for(let a of n(s.clickable))t.push(R(a,e))}if(s.forms.length){t.push("Forms:");for(let a of n(s.forms))t.push(`- FORM: action=${(r=a.action)!=null?r:"-"} method=${(i=a.method)!=null?i:"-"} \u2192 \`${a.selector}\``)}return t.join(`
2
+ `)}function j(s){var a,o;let e=z("region"),t=at(`${s.selector}|${(a=s.label)!=null?a:""}|${(o=s.role)!=null?o:""}`),n=s.label?` ${s.label}`:"",r=[];s.buttonCount&&r.push(`${s.buttonCount} buttons`),s.linkCount&&r.push(`${s.linkCount} links`),s.inputCount&&r.push(`${s.inputCount} inputs`),s.textPreview&&r.push(`\u201C${$(s.textPreview,80)}\u201D`);let i=r.length?` \u2014 ${r.join(", ")}`:"";return`${e} ${n} \u2192 \`${s.selector}\` [${t}]${i}`}function I(s,e,t="section"){return`<page ${[e!=null&&e.title?`title="${F(e==null?void 0:e.title)}"`:null,e!=null&&e.url?`url="${F(e==null?void 0:e.url)}"`:null].filter(Boolean).join(" ")}>
3
+ <${t}><![CDATA[
4
+ ${s}
5
+ ]]></${t}>
6
+ </page>`}function F(s){return s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function V(s){return s.charAt(0).toUpperCase()+s.slice(1)}var _,ut=T((()=>{_=class{static structure(s,e={},t){var a,o,c;let n=[];n.push("# Page Outline"),(t!=null&&t.title||t!=null&&t.url)&&(n.push(`Title: ${(a=t==null?void 0:t.title)!=null?a:""}`.trim()),n.push(`URL: ${(o=t==null?void 0:t.url)!=null?o:""}`.trim())),n.push("");let r=s.regions,i=[["header",r.header],["navigation",r.navigation],["main",r.main],["sections",r.sections],["sidebar",r.sidebar],["footer",r.footer],["modals",r.modals]];for(let[l,u]of i){if(!u)continue;let d=z(l);if(Array.isArray(u)){if(!u.length)continue;n.push(`## ${d} ${V(l)}`);for(let f of u)n.push(j(f))}else n.push(`## ${d} ${V(l)}`),n.push(j(u));n.push("")}if((c=s.suggestions)!=null&&c.length){n.push("## Suggestions");for(let l of s.suggestions)n.push(`- ${l}`);n.push("")}return n.push("Next: choose a region (by selector or [sectionId]) and call dom_extract_region for actionable details."),I(n.join(`
7
+ `),t,"outline")}static region(s,e={},t){var o,c,l;let n=[];n.push("# Region Details"),(t!=null&&t.title||t!=null&&t.url)&&(n.push(`Title: ${(o=t==null?void 0:t.title)!=null?o:""}`.trim()),n.push(`URL: ${(c=t==null?void 0:t.url)!=null?c:""}`.trim())),n.push("");let r=s.interactive;if(s.page){let u=[s.page.hasErrors?"errors: yes":"errors: no",s.page.isLoading?"loading: yes":"loading: no",s.page.hasModals?"modals: yes":"modals: no"];n.push(`Page state: ${u.join(", ")}`)}let i=[],a=u=>u?u.length:0;return i.push(`${a(r.buttons)} buttons`),i.push(`${a(r.links)} links`),i.push(`${a(r.inputs)} inputs`),(l=r.forms)!=null&&l.length&&i.push(`${a(r.forms)} forms`),n.push(`Summary: ${i.join(", ")}`),n.push(ct(r)),n.push(""),n.push(lt(r,e)),n.push(""),n.push("Next: write a script using the most stable selectors above. If selectors look unstable, rerun dom_extract_region with higher detail or call dom_extract_content for text context."),I(n.join(`
8
+ `),t,"section")}static content(s,e={},t){var r,i,a,o,c,l,u,d,f;let n=[];if(n.push("# Content"),n.push(`Selector: \`${s.selector}\``),n.push(""),(r=s.text.headings)!=null&&r.length){n.push("Headings:");for(let h of s.text.headings)n.push(`- H${h.level}: ${$(h.text,(i=e.maxTextLength)!=null?i:120)}`);n.push("")}if((a=s.text.paragraphs)!=null&&a.length){let h=typeof e.maxElements=="number"?e.maxElements:s.text.paragraphs.length;n.push("Paragraphs:");for(let g of s.text.paragraphs.slice(0,h))n.push(`- ${$(g,(o=e.maxTextLength)!=null?o:200)}`);n.push("")}if((c=s.text.lists)!=null&&c.length){n.push("Lists:");for(let h of s.text.lists){n.push(`- ${h.type.toUpperCase()}:`);let g=typeof e.maxElements=="number"?e.maxElements:h.items.length;for(let p of h.items.slice(0,g))n.push(` - ${$(p,(l=e.maxTextLength)!=null?l:120)}`)}n.push("")}if((u=s.tables)!=null&&u.length){n.push("Tables:");for(let h of s.tables){n.push(`- Headers: ${h.headers.join(" | ")}`);let g=typeof e.maxElements=="number"?e.maxElements:h.rows.length;for(let p of h.rows.slice(0,g))n.push(` - ${p.join(" | ")}`)}n.push("")}if((d=s.media)!=null&&d.length){n.push("Media:");let h=typeof e.maxElements=="number"?e.maxElements:s.media.length;for(let g of s.media.slice(0,h))n.push(`- ${g.type.toUpperCase()}: ${(f=g.alt)!=null?f:""} ${g.src?`\u2192 ${g.src}`:""}`.trim());n.push("")}return n.push("Next: if text is insufficient for targeting, call dom_extract_region for interactive selectors."),I(n.join(`
9
+ `),t,"content")}}}));function dt(){if(typeof window!="undefined"){let s=window,e=s.SmartDOMReader;if(typeof e=="function")return e;let t=s.SmartDOMReaderNamespace;if(t&&typeof t.SmartDOMReader=="function")return t.SmartDOMReader}try{if(typeof ot=="function"){let s=(G(),st(mt));if(s&&typeof s.SmartDOMReader=="function")return s.SmartDOMReader;if(s&&typeof s.default=="function")return s.default}}catch{}}var X,ft=T((()=>{W(),N(),B(),X=class y{static extractStructure(e){let t={},n=e.querySelector('header, [role="banner"], .header, #header');n&&(t.header=y.analyzeRegion(n));let r=e.querySelectorAll('nav, [role="navigation"], .nav, .navigation');if(r.length>0&&(t.navigation=Array.from(r).map(d=>y.analyzeRegion(d))),e instanceof Document){let d=w.findMainContent(e);if(d){t.main=y.analyzeRegion(d);let f=d.querySelectorAll('section, article, [role="region"]');f.length>0&&(t.sections=Array.from(f).filter(h=>!h.closest("nav, header, footer")).map(h=>y.analyzeRegion(h)))}}else{t.main=y.analyzeRegion(e);let d=e.querySelectorAll('section, article, [role="region"]');d.length>0&&(t.sections=Array.from(d).filter(f=>!f.closest("nav, header, footer")).map(f=>y.analyzeRegion(f)))}let i=e.querySelectorAll('aside, [role="complementary"], .sidebar, #sidebar');i.length>0&&(t.sidebar=Array.from(i).map(d=>y.analyzeRegion(d)));let a=e.querySelector('footer, [role="contentinfo"], .footer, #footer');a&&(t.footer=y.analyzeRegion(a));let o=e.querySelectorAll('[role="dialog"], .modal, .popup, .overlay'),c=Array.from(o).filter(d=>b.isVisible(d));c.length>0&&(t.modals=c.map(d=>y.analyzeRegion(d)));let l=y.extractFormOverview(e),u=y.calculateSummary(e,t,l);return{regions:t,forms:l,summary:u,suggestions:y.generateSuggestions(t,u)}}static extractRegion(e,t,n={},r){let i=t.querySelector(e);if(!i)return null;let a=r!=null?r:dt();if(!a)throw new Error("SmartDOMReader is unavailable. Ensure the Smart DOM Reader module is loaded before calling extractRegion.");return new a(n).extract(i,n)}static extractContent(e,t,n={}){let r=t.querySelector(e);if(!r)return null;let i={selector:e,text:{},metadata:{wordCount:0,hasInteractive:!1}};if(n.includeHeadings!==!1){let c=r.querySelectorAll("h1, h2, h3, h4, h5, h6");i.text.headings=Array.from(c).map(l=>({level:Number.parseInt(l.tagName[1],10),text:y.getTextContent(l,n.maxTextLength)}))}let a=r.querySelectorAll("p");if(a.length>0&&(i.text.paragraphs=Array.from(a).map(c=>y.getTextContent(c,n.maxTextLength)).filter(c=>c.length>0)),n.includeLists!==!1){let c=r.querySelectorAll("ul, ol");i.text.lists=Array.from(c).map(l=>({type:l.tagName.toLowerCase(),items:Array.from(l.querySelectorAll("li")).map(u=>y.getTextContent(u,n.maxTextLength))}))}if(n.includeTables!==!1){let c=r.querySelectorAll("table");i.tables=Array.from(c).map(l=>({headers:Array.from(l.querySelectorAll("th")).map(u=>y.getTextContent(u)),rows:Array.from(l.querySelectorAll("tr")).filter(u=>u.querySelector("td")).map(u=>Array.from(u.querySelectorAll("td")).map(d=>y.getTextContent(d)))}))}if(n.includeMedia!==!1){let c=r.querySelectorAll("img"),l=r.querySelectorAll("video"),u=r.querySelectorAll("audio");i.media=[...Array.from(c).map(d=>{let f={type:"img"},h=d.getAttribute("alt"),g=d.getAttribute("src");return h&&(f.alt=h),g&&(f.src=g),f}),...Array.from(l).map(d=>{let f={type:"video"},h=d.getAttribute("src");return h&&(f.src=h),f}),...Array.from(u).map(d=>{let f={type:"audio"},h=d.getAttribute("src");return h&&(f.src=h),f})]}let o=r.textContent||"";return i.metadata.wordCount=o.trim().split(/\s+/).length,i.metadata.hasInteractive=r.querySelectorAll("button, a, input, textarea, select").length>0,i}static analyzeRegion(e){var x,C,P,k;let t=E.generateSelectors(e).css,n=e.querySelectorAll('button, [role="button"]'),r=e.querySelectorAll("a[href]"),i=e.querySelectorAll("input, textarea, select"),a=e.querySelectorAll("form"),o=e.querySelectorAll("ul, ol"),c=e.querySelectorAll("table"),l=e.querySelectorAll("img, video, audio"),u=n.length+r.length+i.length,d,f=e.getAttribute("aria-label");if(f)d=f;else if(e.getAttribute("aria-labelledby")){let L=e.getAttribute("aria-labelledby");if(L){let H=(x=e.ownerDocument)==null?void 0:x.getElementById(L);H&&(d=(C=H.textContent)==null?void 0:C.trim())}}else{let L=e.querySelector("h1, h2, h3");L&&(d=(P=L.textContent)==null?void 0:P.trim())}let h=((k=e.textContent)==null?void 0:k.trim())||"",g=h.length>50?`${h.substring(0,50)}...`:h,p={selector:t,interactiveCount:u,hasForm:a.length>0,hasList:o.length>0,hasTable:c.length>0,hasMedia:l.length>0};d&&(p.label=d);let m=e.getAttribute("role");return m&&(p.role=m),n.length>0&&(p.buttonCount=n.length),r.length>0&&(p.linkCount=r.length),i.length>0&&(p.inputCount=i.length),g.length>0&&(p.textPreview=g),p}static extractFormOverview(e){let t=e.querySelectorAll("form");return Array.from(t).map(n=>{var g,p,m;let r=n.querySelectorAll("input, textarea, select"),i=E.generateSelectors(n).css,a="unknown";n.closest('header, [role="banner"]')?a="header":n.closest('nav, [role="navigation"]')?a="navigation":n.closest('main, [role="main"]')?a="main":n.closest('aside, [role="complementary"]')?a="sidebar":n.closest('footer, [role="contentinfo"]')&&(a="footer");let o,c=(g=n.getAttribute("id"))==null?void 0:g.toLowerCase(),l=(p=n.getAttribute("class"))==null?void 0:p.toLowerCase(),u=(m=n.getAttribute("action"))==null?void 0:m.toLowerCase(),d=n.querySelector('input[type="email"]'),f=n.querySelector('input[type="password"]');n.querySelector('input[type="search"]')||c!=null&&c.includes("search")||l!=null&&l.includes("search")?o="search":f&&d?o="login":f?o="authentication":c!=null&&c.includes("contact")||l!=null&&l.includes("contact")?o="contact":c!=null&&c.includes("subscribe")||l!=null&&l.includes("subscribe")?o="subscription":(u!=null&&u.includes("checkout")||l!=null&&l.includes("checkout"))&&(o="checkout");let h={selector:i,location:a,inputCount:r.length};return o&&(h.purpose=o),h})}static calculateSummary(e,t,n){var d,f;let r=e.querySelectorAll("button, a[href], input, textarea, select"),i=e.querySelectorAll('section, article, [role="region"]'),a=(((d=t.modals)==null?void 0:d.length)||0)>0,o=[".error",".alert-danger",'[role="alert"]'].some(h=>{let g=e.querySelector(h);return g?b.isVisible(g):!1}),c=[".loading",".spinner",'[aria-busy="true"]'].some(h=>{let g=e.querySelector(h);return g?b.isVisible(g):!1}),l={totalInteractive:r.length,totalForms:n.length,totalSections:i.length,hasModals:a,hasErrors:o,isLoading:c},u=(f=t.main)==null?void 0:f.selector;return u&&(l.mainContentSelector=u),l}static generateSuggestions(e,t){let n=[];return t.hasErrors&&n.push("Page has error indicators - check error messages before interacting"),t.isLoading&&n.push("Page appears to be loading - wait or check loading state"),t.hasModals&&n.push("Modal/dialog is open - may need to interact with or close it first"),e.main&&e.main.interactiveCount>10&&n.push(`Main content has ${e.main.interactiveCount} interactive elements - consider filtering`),t.totalForms>0&&n.push(`Found ${t.totalForms} form(s) on the page`),e.main||n.push("No clear main content area detected - may need to explore regions"),n}static getTextContent(e,t){var r;let n=((r=e.textContent)==null?void 0:r.trim())||"";return t&&n.length>t?`${n.substring(0,t)}...`:n}}})),ht=T((()=>{})),mt=nt({ContentDetection:()=>w,MarkdownFormatter:()=>_,ProgressiveExtractor:()=>X,SelectorGenerator:()=>E,SmartDOMReader:()=>A,default:()=>A}),A,G=T((()=>{W(),N(),B(),ut(),ft(),ht(),A=class O{constructor(e={}){M(this,"options");var t;this.options={mode:e.mode||"interactive",maxDepth:e.maxDepth||5,includeHidden:e.includeHidden||!1,includeShadowDOM:(t=e.includeShadowDOM)!=null?t:!0,includeIframes:e.includeIframes||!1,viewportOnly:e.viewportOnly||!1,mainContentOnly:e.mainContentOnly||!1,customSelectors:e.customSelectors||[],...e.attributeTruncateLength!==void 0&&{attributeTruncateLength:e.attributeTruncateLength},...e.dataAttributeTruncateLength!==void 0&&{dataAttributeTruncateLength:e.dataAttributeTruncateLength},...e.textTruncateLength!==void 0&&{textTruncateLength:e.textTruncateLength},...e.filter!==void 0&&{filter:e.filter}}}extract(e=document,t){let n=Date.now(),r=e instanceof Document?e:e.ownerDocument,i={...this.options,...t},a=e instanceof Document?r:e;i.mainContentOnly&&e instanceof Document&&(a=w.findMainContent(r));let o=this.extractPageState(r),c=this.extractLandmarks(r),l=this.extractInteractiveElements(a,i),u={mode:i.mode,timestamp:n,page:o,landmarks:c,interactive:l};if(i.mode==="full"){let d=this.extractSemanticElements(a,i),f=this.extractMetadata(r,a,i);return{...u,semantic:d,metadata:f}}return u}extractPageState(e){var n;let t=this.getFocusedElement(e);return{url:((n=e.location)==null?void 0:n.href)||"",title:e.title||"",hasErrors:this.detectErrors(e),isLoading:this.detectLoading(e),hasModals:this.detectModals(e),...t!==void 0&&{hasFocus:t}}}extractLandmarks(e){let t=w.detectLandmarks(e);return{navigation:this.elementsToSelectors(t.navigation||[]),main:this.elementsToSelectors(t.main||[]),forms:this.elementsToSelectors(t.form||[]),headers:this.elementsToSelectors(t.banner||[]),footers:this.elementsToSelectors(t.contentinfo||[]),articles:this.elementsToSelectors(t.region||[]),sections:this.elementsToSelectors(t.region||[])}}elementsToSelectors(e){return e.map(t=>E.generateSelectors(t).css)}extractInteractiveElements(e,t){let n=[],r=[],i=[],a=[];return e.querySelectorAll('button, [role="button"], input[type="button"], input[type="submit"]').forEach(o=>{if(this.shouldIncludeElement(o,t)){let c=b.extractElement(o,t);c&&n.push(c)}}),e.querySelectorAll("a[href]").forEach(o=>{if(this.shouldIncludeElement(o,t)){let c=b.extractElement(o,t);c&&r.push(c)}}),e.querySelectorAll('input:not([type="button"]):not([type="submit"]), textarea, select').forEach(o=>{if(this.shouldIncludeElement(o,t)){let c=b.extractElement(o,t);c&&i.push(c)}}),t.customSelectors&&t.customSelectors.forEach(o=>{e.querySelectorAll(o).forEach(c=>{if(this.shouldIncludeElement(c,t)){let l=b.extractElement(c,t);l&&a.push(l)}})}),{buttons:n,links:r,inputs:i,forms:this.extractForms(e,t),clickable:a}}extractForms(e,t){let n=[];return e.querySelectorAll("form").forEach(r=>{if(!this.shouldIncludeElement(r,t))return;let i=[],a=[];r.querySelectorAll('input:not([type="button"]):not([type="submit"]), textarea, select').forEach(u=>{let d=b.extractElement(u,t);d&&i.push(d)}),r.querySelectorAll('button, input[type="button"], input[type="submit"]').forEach(u=>{let d=b.extractElement(u,t);d&&a.push(d)});let o=r.getAttribute("action"),c=r.getAttribute("method"),l={selector:E.generateSelectors(r).css,inputs:i,buttons:a};o&&(l.action=o),c&&(l.method=c),n.push(l)}),n}extractSemanticElements(e,t){let n=[],r=[],i=[],a=[],o=[];return e.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(c=>{if(this.shouldIncludeElement(c,t)){let l=b.extractElement(c,t);l&&n.push(l)}}),e.querySelectorAll("img").forEach(c=>{if(this.shouldIncludeElement(c,t)){let l=b.extractElement(c,t);l&&r.push(l)}}),e.querySelectorAll("table").forEach(c=>{if(this.shouldIncludeElement(c,t)){let l=b.extractElement(c,t);l&&i.push(l)}}),e.querySelectorAll("ul, ol").forEach(c=>{if(this.shouldIncludeElement(c,t)){let l=b.extractElement(c,t);l&&a.push(l)}}),e.querySelectorAll('article, [role="article"]').forEach(c=>{if(this.shouldIncludeElement(c,t)){let l=b.extractElement(c,t);l&&o.push(l)}}),{headings:n,images:r,tables:i,lists:a,articles:o}}extractMetadata(e,t,n){let r=t.querySelectorAll("*"),i=t.querySelectorAll("button, a, input, textarea, select, h1, h2, h3, h4, h5, h6, img, table, ul, ol, article").length,a={totalElements:r.length,extractedElements:i};n.mainContentOnly&&t instanceof Element&&(a.mainContent=E.generateSelectors(t).css);let o=e.documentElement.getAttribute("lang");return o&&(a.language=o),a}shouldIncludeElement(e,t){return!(!t.includeHidden&&!b.isVisible(e)||t.viewportOnly&&!b.isInViewport(e)||t.filter&&!b.passesFilter(e,t.filter))}detectErrors(e){return[".error",".alert-danger",'[role="alert"]',".error-message"].some(t=>{let n=e.querySelector(t);return n?b.isVisible(n):!1})}detectLoading(e){return[".loading",".spinner",'[aria-busy="true"]',".loader"].some(t=>{let n=e.querySelector(t);return n?b.isVisible(n):!1})}detectModals(e){return['[role="dialog"]',".modal",".popup",".overlay"].some(t=>{let n=e.querySelector(t);return n?b.isVisible(n):!1})}getFocusedElement(e){let t=e.activeElement;if(t&&t!==e.body)return E.generateSelectors(t).css}static extractInteractive(e,t={}){return new O({...t,mode:"interactive"}).extract(e)}static extractFull(e,t={}){return new O({...t,mode:"full"}).extract(e)}static extractFromElement(e,t="interactive",n={}){return new O({...n,mode:t}).extract(e)}}}));G();var gt=new Set(["id","data-testid","role-aria","name","class-path","css-path"]);function K(s){let e=s.trim();return e.startsWith("/")||e.startsWith("(")||e.startsWith("./")}function pt(s){let e=s.selector.candidates;if(e&&e.length>0){let n=null;for(let r of e)gt.has(r.type)&&(!r.value||K(r.value)||(!n||r.score>n.score)&&(n=r));if(n)return n.value}let t=s.selector.css;return t&&!K(t)?t:null}function xt(s){var n;let e=s.tag.toLowerCase(),t=(n=s.interaction.role)!=null?n:s.attributes.role;return e==="a"&&(s.interaction.nav||s.attributes.href!=null)?"navigable":e==="input"||e==="select"||e==="textarea"||t==="textbox"||t==="combobox"||t==="listbox"||t==="spinbutton"||s.interaction.change&&!s.interaction.click?"input":e==="button"||t==="button"||s.interaction.click||s.interaction.submit?"clickable":"static"}function bt(s){let e={...s.attributes},t=s.interaction.role;return t&&!e.role&&(e.role=t),e}function yt(s,e){var n,r;return e?[s.selector.css,s.selector.xpath,s.context.nearestForm,s.context.nearestSection,s.context.nearestMain,s.context.nearestNav,...(r=(n=s.selector.candidates)==null?void 0:n.map(i=>i.value))!=null?r:[],...s.context.parentChain].some(i=>!!i&&i.includes(e)):!1}function Y(s,e={}){var l,u,d;let t=(l=e.includeSemantic)!=null?l:!0,n=(u=e.excludeSelector)!=null?u:".persona-host",r=(d=e.maxTextLength)!=null?d:200,i=[s.interactive.buttons,s.interactive.links,s.interactive.inputs,s.interactive.clickable];t&&s.semantic&&i.push(s.semantic.headings,s.semantic.images,s.semantic.tables,s.semantic.lists,s.semantic.articles);let a=[],o=new Set,c=f=>{var g,p,m;if(yt(f,n))return!0;let h=pt(f);if(h&&!o.has(h)&&(o.add(h),a.push({selector:h,tagName:f.tag.toLowerCase(),text:((g=f.text)!=null?g:"").trim().substring(0,r),role:(m=(p=f.interaction.role)!=null?p:f.attributes.role)!=null?m:null,interactivity:xt(f),attributes:bt(f)}),e.maxElements&&a.length>=e.maxElements))return!1;if(f.children){for(let x of f.children)if(!c(x))return!1}return!0};for(let f of i)if(f){for(let h of f)if(!c(h))return a}return a}var q=100;function J(s,e={}){var i;if(s.length===0)return"No page elements found.";let t=(i=e.mode)!=null?i:"structured",n=[];if(t==="structured"){let a=s.map(o=>o.formattedSummary).filter(o=>!!o&&o.length>0);a.length>0&&n.push(`Structured summaries:
10
+ ${a.map(o=>`- ${o.split(`
11
+ `).join(`
12
+ `)}`).join(`
13
+ `)}`)}let r={clickable:[],navigable:[],input:[],static:[]};for(let a of s)t==="structured"&&a.formattedSummary||r[a.interactivity].push(a);if(r.clickable.length>0){let a=r.clickable.map(o=>`- ${o.selector}: "${o.text.substring(0,q)}" (clickable)`);n.push(`Interactive elements:
14
+ ${a.join(`
15
+ `)}`)}if(r.navigable.length>0){let a=r.navigable.map(o=>`- ${o.selector}${o.attributes.href?`[href="${o.attributes.href}"]`:""}: "${o.text.substring(0,q)}" (navigable)`);n.push(`Navigation links:
16
+ ${a.join(`
17
+ `)}`)}if(r.input.length>0){let a=r.input.map(o=>`- ${o.selector}${o.attributes.type?`[type="${o.attributes.type}"]`:""}: "${o.text.substring(0,q)}" (input)`);n.push(`Form inputs:
18
+ ${a.join(`
19
+ `)}`)}if(r.static.length>0){let a=r.static.map(o=>`- ${o.selector}: "${o.text.substring(0,q)}"`);n.push(`Content:
20
+ ${a.join(`
21
+ `)}`)}return n.join(`
22
+
23
+ `)}function St(s={}){var n,r,i;let e=(n=s.mode)!=null?n:"interactive",t;if(s.root)t=A.extractFromElement(s.root,e,s.extractionOptions);else{let a=(r=s.document)!=null?r:typeof document!="undefined"?document:void 0;if(!a)return[];t=e==="full"?A.extractFull(a,s.extractionOptions):A.extractInteractive(a,s.extractionOptions)}return Y(t,{includeSemantic:(i=s.includeSemantic)!=null?i:e==="full",excludeSelector:s.excludeSelector,maxTextLength:s.maxTextLength,maxElements:s.maxElements})}function Rt(s={}){var t;let e=(t=s.contextKey)!=null?t:"pageContext";return()=>{let n=St(s);return n.length===0?{}:{[e]:J(n)}}}export{St as collectSmartDomContext,Rt as createSmartDomReaderContextProvider,Y as smartDomResultToEnriched};
package/dist/testing.cjs CHANGED
@@ -1,85 +1,4 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";var m=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var n in e)m(t,n,{get:e[n],enumerable:!0})},p=(t,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of y(e))!M.call(t,r)&&r!==n&&m(t,r,{get:()=>e[r],enumerable:!(a=k(e,r))||a.enumerable});return t};var x=t=>p(m({},"__esModule",{value:!0}),t);var g={};l(g,{buildAssistantTurnFrames:()=>i,createMockSSEResponse:()=>o,createMockSSEStream:()=>d});module.exports=x(g);var E=new TextEncoder;function d(t,e){var s;let n=(s=e==null?void 0:e.delayMs)!=null?s:100,a=e!=null&&e.eventName?`event: ${e.eventName}
2
+ `:"",r=0;return new ReadableStream({async pull(S){if(r>=t.length){S.close();return}await new Promise(c=>setTimeout(c,n));let u=JSON.stringify(t[r]);S.enqueue(E.encode(`${a}data: ${u}
19
3
 
20
- // src/testing.ts
21
- var testing_exports = {};
22
- __export(testing_exports, {
23
- buildAssistantTurnFrames: () => buildAssistantTurnFrames,
24
- createMockSSEResponse: () => createMockSSEResponse,
25
- createMockSSEStream: () => createMockSSEStream
26
- });
27
- module.exports = __toCommonJS(testing_exports);
28
-
29
- // src/testing/mock-stream.ts
30
- var encoder = new TextEncoder();
31
- function createMockSSEStream(frames, options) {
32
- var _a;
33
- const delayMs = (_a = options == null ? void 0 : options.delayMs) != null ? _a : 100;
34
- const prefix = (options == null ? void 0 : options.eventName) ? `event: ${options.eventName}
35
- ` : "";
36
- let index = 0;
37
- return new ReadableStream({
38
- async pull(controller) {
39
- if (index >= frames.length) {
40
- controller.close();
41
- return;
42
- }
43
- await new Promise((resolve) => setTimeout(resolve, delayMs));
44
- const payload = JSON.stringify(frames[index]);
45
- controller.enqueue(encoder.encode(`${prefix}data: ${payload}
46
-
47
- `));
48
- index += 1;
49
- }
50
- });
51
- }
52
- function buildAssistantTurnFrames(options) {
53
- var _a, _b;
54
- const { executionId, text } = options;
55
- const turnId = (_a = options.turnId) != null ? _a : "turn-1";
56
- const chunkSize = Math.max(1, (_b = options.chunkSize) != null ? _b : 32);
57
- const frames = [{ type: "agent_turn_start", executionId, turnId }];
58
- for (let i = 0; i < text.length; i += chunkSize) {
59
- frames.push({
60
- type: "agent_turn_delta",
61
- executionId,
62
- turnId,
63
- delta: text.slice(i, i + chunkSize)
64
- });
65
- }
66
- frames.push({ type: "agent_turn_complete", executionId, turnId });
67
- return frames;
68
- }
69
- function createMockSSEResponse(frames, options) {
70
- var _a;
71
- const stream = createMockSSEStream(frames, options);
72
- return new Response(stream, {
73
- status: (_a = options == null ? void 0 : options.status) != null ? _a : 200,
74
- headers: {
75
- "Content-Type": "text/event-stream",
76
- ...options == null ? void 0 : options.headers
77
- }
78
- });
79
- }
80
- // Annotate the CommonJS export names for ESM import in node:
81
- 0 && (module.exports = {
82
- buildAssistantTurnFrames,
83
- createMockSSEResponse,
84
- createMockSSEStream
85
- });
4
+ `)),r+=1}})}function i(t){var S,u;let{executionId:e,text:n}=t,a=(S=t.turnId)!=null?S:"turn-1",r=Math.max(1,(u=t.chunkSize)!=null?u:32),s=[{type:"agent_turn_start",executionId:e,turnId:a}];for(let c=0;c<n.length;c+=r)s.push({type:"agent_turn_delta",executionId:e,turnId:a,delta:n.slice(c,c+r)});return s.push({type:"agent_turn_complete",executionId:e,turnId:a}),s}function o(t,e){var a;let n=d(t,e);return new Response(n,{status:(a=e==null?void 0:e.status)!=null?a:200,headers:{"Content-Type":"text/event-stream",...e==null?void 0:e.headers}})}0&&(module.exports={buildAssistantTurnFrames,createMockSSEResponse,createMockSSEStream});
package/dist/testing.js CHANGED
@@ -1,56 +1,4 @@
1
- // src/testing/mock-stream.ts
2
- var encoder = new TextEncoder();
3
- function createMockSSEStream(frames, options) {
4
- var _a;
5
- const delayMs = (_a = options == null ? void 0 : options.delayMs) != null ? _a : 100;
6
- const prefix = (options == null ? void 0 : options.eventName) ? `event: ${options.eventName}
7
- ` : "";
8
- let index = 0;
9
- return new ReadableStream({
10
- async pull(controller) {
11
- if (index >= frames.length) {
12
- controller.close();
13
- return;
14
- }
15
- await new Promise((resolve) => setTimeout(resolve, delayMs));
16
- const payload = JSON.stringify(frames[index]);
17
- controller.enqueue(encoder.encode(`${prefix}data: ${payload}
1
+ var d=new TextEncoder;function m(t,e){var s;let n=(s=e==null?void 0:e.delayMs)!=null?s:100,r=e!=null&&e.eventName?`event: ${e.eventName}
2
+ `:"",a=0;return new ReadableStream({async pull(S){if(a>=t.length){S.close();return}await new Promise(c=>setTimeout(c,n));let u=JSON.stringify(t[a]);S.enqueue(d.encode(`${r}data: ${u}
18
3
 
19
- `));
20
- index += 1;
21
- }
22
- });
23
- }
24
- function buildAssistantTurnFrames(options) {
25
- var _a, _b;
26
- const { executionId, text } = options;
27
- const turnId = (_a = options.turnId) != null ? _a : "turn-1";
28
- const chunkSize = Math.max(1, (_b = options.chunkSize) != null ? _b : 32);
29
- const frames = [{ type: "agent_turn_start", executionId, turnId }];
30
- for (let i = 0; i < text.length; i += chunkSize) {
31
- frames.push({
32
- type: "agent_turn_delta",
33
- executionId,
34
- turnId,
35
- delta: text.slice(i, i + chunkSize)
36
- });
37
- }
38
- frames.push({ type: "agent_turn_complete", executionId, turnId });
39
- return frames;
40
- }
41
- function createMockSSEResponse(frames, options) {
42
- var _a;
43
- const stream = createMockSSEStream(frames, options);
44
- return new Response(stream, {
45
- status: (_a = options == null ? void 0 : options.status) != null ? _a : 200,
46
- headers: {
47
- "Content-Type": "text/event-stream",
48
- ...options == null ? void 0 : options.headers
49
- }
50
- });
51
- }
52
- export {
53
- buildAssistantTurnFrames,
54
- createMockSSEResponse,
55
- createMockSSEStream
56
- };
4
+ `)),a+=1}})}function i(t){var S,u;let{executionId:e,text:n}=t,r=(S=t.turnId)!=null?S:"turn-1",a=Math.max(1,(u=t.chunkSize)!=null?u:32),s=[{type:"agent_turn_start",executionId:e,turnId:r}];for(let c=0;c<n.length;c+=a)s.push({type:"agent_turn_delta",executionId:e,turnId:r,delta:n.slice(c,c+a)});return s.push({type:"agent_turn_complete",executionId:e,turnId:r}),s}function o(t,e){var r;let n=m(t,e);return new Response(n,{status:(r=e==null?void 0:e.status)!=null?r:200,headers:{"Content-Type":"text/event-stream",...e==null?void 0:e.headers}})}export{i as buildAssistantTurnFrames,o as createMockSSEResponse,m as createMockSSEStream};