@runtypelabs/persona 4.6.1 → 4.8.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.
- package/dist/animations/glyph-cycle.cjs +2 -2
- package/dist/animations/glyph-cycle.d.cts +1 -1
- package/dist/animations/glyph-cycle.d.ts +1 -1
- package/dist/animations/glyph-cycle.js +2 -2
- package/dist/animations/{types-CSmiKRVa.d.cts → types-BsZtXPKK.d.cts} +43 -3
- package/dist/animations/{types-CSmiKRVa.d.ts → types-BsZtXPKK.d.ts} +43 -3
- package/dist/animations/wipe.cjs +2 -2
- package/dist/animations/wipe.d.cts +1 -1
- package/dist/animations/wipe.d.ts +1 -1
- package/dist/chunk-5EIIHQLQ.js +1 -0
- package/dist/codegen.cjs +12 -12
- package/dist/codegen.js +14 -14
- package/dist/index.cjs +91 -68
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +918 -174
- package/dist/index.d.ts +918 -174
- package/dist/index.global.js +81 -57
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +89 -66
- package/dist/index.js.map +1 -1
- package/dist/install.global.js +1 -1
- package/dist/install.global.js.map +1 -1
- package/dist/launcher.global.js +3 -2
- package/dist/launcher.global.js.map +1 -1
- package/dist/markdown-parsers.js +24 -24
- package/dist/plugin-kit.cjs +1 -1
- package/dist/plugin-kit.js +1 -1
- package/dist/runtype-tts-entry-UJAEF7NZ.js +1 -0
- package/dist/runtype-tts.js +1 -1
- package/dist/session-reconnect-JKIJBHS5.js +1 -0
- package/dist/smart-dom-reader.cjs +17 -17
- package/dist/smart-dom-reader.d.cts +753 -15
- package/dist/smart-dom-reader.d.ts +753 -15
- package/dist/smart-dom-reader.js +17 -17
- package/dist/testing.cjs +3 -3
- package/dist/testing.js +3 -3
- package/dist/theme-editor-preview.cjs +81 -58
- package/dist/theme-editor-preview.d.cts +761 -15
- package/dist/theme-editor-preview.d.ts +761 -15
- package/dist/theme-editor-preview.js +81 -58
- package/dist/theme-editor.cjs +6 -6
- package/dist/theme-editor.d.cts +753 -15
- package/dist/theme-editor.d.ts +753 -15
- package/dist/theme-editor.js +10 -10
- package/dist/theme-reference.cjs +1 -1
- package/dist/theme-reference.d.cts +74 -0
- package/dist/theme-reference.d.ts +74 -0
- package/dist/theme-reference.js +1 -1
- package/dist/voice-worklet-player.cjs +2 -2
- package/dist/voice-worklet-player.js +2 -2
- package/dist/webmcp-polyfill.js +2 -2
- package/dist/widget.css +1 -1
- package/package.json +2 -3
- package/src/artifacts-session.test.ts +178 -0
- package/src/client.test.ts +500 -1
- package/src/client.ts +285 -93
- package/src/components/artifact-card.test.ts +333 -0
- package/src/components/artifact-card.ts +75 -28
- package/src/components/artifact-inline.test.ts +1328 -0
- package/src/components/artifact-inline.ts +920 -0
- package/src/components/artifact-pane.test.ts +1042 -0
- package/src/components/artifact-pane.ts +440 -131
- package/src/components/artifact-preview.test.ts +1155 -0
- package/src/components/artifact-preview.ts +994 -0
- package/src/components/pill-composer-builder.test.ts +6 -2
- package/src/components/pill-composer-builder.ts +6 -6
- package/src/components/reasoning-bubble.ts +1 -13
- package/src/components/registry.ts +38 -3
- package/src/components/tool-bubble.ts +1 -13
- package/src/defaults.ts +1 -0
- package/src/generated/runtype-openapi-contract.ts +55 -3
- package/src/index-core.ts +20 -1
- package/src/index.ts +8 -0
- package/src/markdown-parsers-loader.test.ts +158 -0
- package/src/markdown-parsers-loader.ts +74 -9
- package/src/runtime/host-layout.test.ts +163 -0
- package/src/runtime/host-layout.ts +110 -7
- package/src/runtime/init.ts +18 -61
- package/src/runtime/persist-state.test.ts +118 -0
- package/src/session.ts +76 -22
- package/src/styles/widget.css +773 -26
- package/src/theme-editor/preview.ts +2 -0
- package/src/theme-editor/sections.test.ts +26 -1
- package/src/theme-editor/sections.ts +10 -2
- package/src/theme-reference.ts +2 -2
- package/src/tool-call-display-defaults.test.ts +1 -0
- package/src/types/theme.ts +77 -0
- package/src/types.ts +516 -17
- package/src/ui.artifact-pane-gating.test.ts +636 -0
- package/src/ui.component-directive.test.ts +104 -0
- package/src/ui.composer-bar.test.ts +60 -2
- package/src/ui.detached-panel.test.ts +1049 -0
- package/src/ui.scroll-additive.test.ts +1 -1
- package/src/ui.streaming-coalescing.test.ts +312 -0
- package/src/ui.tool-display.test.ts +51 -0
- package/src/ui.ts +933 -214
- package/src/utils/artifact-custom-actions.ts +128 -0
- package/src/utils/artifact-display.test.ts +42 -0
- package/src/utils/artifact-display.ts +84 -0
- package/src/utils/artifact-file.test.ts +116 -0
- package/src/utils/artifact-file.ts +117 -0
- package/src/utils/artifact-gate.test.ts +112 -5
- package/src/utils/artifact-gate.ts +39 -14
- package/src/utils/artifact-loading-status.ts +55 -0
- package/src/utils/artifact-status-label.ts +190 -0
- package/src/utils/buttons.ts +7 -1
- package/src/utils/code-highlight.test.ts +186 -0
- package/src/utils/code-highlight.ts +400 -0
- package/src/utils/icons.ts +2 -0
- package/src/utils/roving-tablist.test.ts +152 -0
- package/src/utils/roving-tablist.ts +111 -0
- package/src/utils/spinner.ts +45 -0
- package/src/utils/theme.test.ts +48 -0
- package/src/utils/theme.ts +7 -0
- package/src/utils/tokens.ts +91 -0
- package/src/utils/tool-loading-animation.test.ts +32 -0
- package/src/utils/tool-loading-animation.ts +24 -0
- package/dist/chunk-DFBSCFYN.js +0 -1
- package/dist/runtype-tts-entry-HFUV2UF7.js +0 -1
- package/dist/session-reconnect-U77QFUR7.js +0 -1
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
"use strict";var M=Object.defineProperty;var tt=Object.getOwnPropertyDescriptor;var et=Object.getOwnPropertyNames;var nt=Object.prototype.hasOwnProperty;var rt=(s,e,t)=>e in s?M(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var st=(s,e)=>{for(var t in e)M(s,t,{get:e[t],enumerable:!0})},ot=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of et(e))!nt.call(s,r)&&r!==t&&M(s,r,{get:()=>e[r],enumerable:!(n=tt(e,r))||n.enumerable});return s};var it=s=>ot(M({},"__esModule",{value:!0}),s);var R=(s,e,t)=>rt(s,typeof e!="symbol"?e+"":e,t);var wt={};st(wt,{collectSmartDomContext:()=>Z,createSmartDomReaderContextProvider:()=>$t,smartDomResultToEnriched:()=>k});module.exports=it(wt);var q=Object.defineProperty,at=Object.getOwnPropertyDescriptor,ct=Object.getOwnPropertyNames,B=Object.prototype.hasOwnProperty,T=(s,e)=>()=>(s&&(e=s(s=0)),e),lt=(s,e)=>{let t={};for(var n in s)q(t,n,{get:s[n],enumerable:!0});return e||q(t,Symbol.toStringTag,{value:"Module"}),t},ut=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(var r=ct(e),i=0,a=r.length,o;i<a;i++)o=r[i],!B.call(s,o)&&o!==t&&q(s,o,{get:(c=>e[c]).bind(null,o),enumerable:!(n=at(e,o))||n.enumerable});return s},dt=s=>B.call(s,"module.exports")?s["module.exports"]:ut(q({},"__esModule",{value:!0}),s),ft=void 0,w,z=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,P=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,_=T((()=>{var s;P(),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}},R(s,"INTERACTIVE_SELECTORS",["button","a[href]",'input:not([type="hidden"])',"textarea","select",'[role="button"]',"[onclick]",'[contenteditable="true"]',"summary",'[tabindex]:not([tabindex="-1"])']),R(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 ht(s){var e;return((e=s.selector)==null?void 0:e.css)||""}function mt(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 X(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 O(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=ht(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 gt(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 pt(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(O(a,e))}if(s.links.length){t.push("Links:");for(let a of n(s.links))t.push(O(a,e))}if(s.inputs.length){t.push("Inputs:");for(let a of n(s.inputs))t.push(O(a,e))}if(s.clickable.length){t.push("Other Clickable:");for(let a of n(s.clickable))t.push(O(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
|
|
1
|
+
"use strict";var $=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var Q=Object.prototype.hasOwnProperty;var Z=(o,e,t)=>e in o?$(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var tt=(o,e)=>{for(var t in e)$(o,t,{get:e[t],enumerable:!0})},et=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of J(e))!Q.call(o,r)&&r!==t&&$(o,r,{get:()=>e[r],enumerable:!(n=Y(e,r))||n.enumerable});return o};var nt=o=>et($({},"__esModule",{value:!0}),o);var w=(o,e,t)=>Z(o,typeof e!="symbol"?e+"":e,t);var At={};tt(At,{collectSmartDomContext:()=>K,createSmartDomReaderContextProvider:()=>vt,smartDomResultToEnriched:()=>N});module.exports=nt(At);var D=Object.defineProperty,rt=Object.getOwnPropertyDescriptor,ot=Object.getOwnPropertyNames,F=Object.prototype.hasOwnProperty,C=(o,e)=>()=>(o&&(e=o(o=0)),e),st=(o,e)=>{let t={};for(var n in o)D(t,n,{get:o[n],enumerable:!0});return e||D(t,Symbol.toStringTag,{value:"Module"}),t},at=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(var r=ot(e),s=0,a=r.length,i;s<a;s++)i=r[s],!F.call(o,i)&&i!==t&&D(o,i,{get:(c=>e[c]).bind(null,i),enumerable:!(n=rt(e,i))||n.enumerable});return o},it=o=>F.call(o,"module.exports")?o["module.exports"]:at(D({},"__esModule",{value:!0}),o),ct=void 0,T,V=C((()=>{T=class S{static findMainContent(e){let t=e.querySelector('main, [role="main"]');return t||(e.body?S.detectMainContent(e.body):e.documentElement)}static detectMainContent(e){let t=[];if(S.collectCandidates(e,t,15),t.length===0)return e;t.sort((r,s)=>S.calculateContentScore(s)-S.calculateContentScore(r));let n=t[0];for(let r=1;r<t.length;r++){let s=t[r];!t.some((a,i)=>i!==r&&a.contains(s))&&S.calculateContentScore(s)>S.calculateContentScore(n)&&(n=s)}return n}static collectCandidates(e,t,n){S.calculateContentScore(e)>=n&&t.push(e),Array.from(e.children).forEach(r=>{S.collectCandidates(r,t,n)})}static calculateContentScore(e){let t=0,n=["article","content","main-container","main","main-content","post","entry"],r=["content","main","article","post","entry"];n.forEach(u=>{e.classList.contains(u)&&(t+=10)}),r.forEach(u=>{e.id?.toLowerCase().includes(u)&&(t+=10)});let s=e.tagName.toLowerCase();["article","main","section"].includes(s)&&(t+=8);let a=e.getElementsByTagName("p").length;t+=Math.min(a*2,10);let i=e.querySelectorAll("h1, h2, h3").length;t+=Math.min(i*3,9);let c=e.textContent?.trim().length||0;c>300&&(t+=Math.min(Math.floor(c/300)*2,10));let l=S.calculateLinkDensity(e);l<.3?t+=5:l>.5&&(t-=5),(e.hasAttribute("data-main")||e.hasAttribute("data-content")||e.hasAttribute("itemprop"))&&(t+=8);let d=e.getAttribute("role");return(d==="main"||d==="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){let t=e.getElementsByTagName("a"),n=0;for(let s of Array.from(t))n+=s.textContent?.length||0;let r=e.textContent?.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 s=e.querySelectorAll(r);t[n]=Array.from(s)}return t}}})),b,I=C((()=>{b=class x{static generateSelectors(e){let t=e.ownerDocument||document,n=[];e.id&&x.isUniqueId(e.id,t)&&n.push({type:"id",value:`#${CSS.escape(e.id)}`,score:100});let r=x.getDataTestId(e);if(r){let h=`[data-testid="${CSS.escape(r)}"]`;n.push({type:"data-testid",value:h,score:90+(x.isUniqueSelectorSafe(h,t)?5:0)})}let s=e.getAttribute("role"),a=e.getAttribute("aria-label");if(s&&a){let h=`[role="${CSS.escape(s)}"][aria-label="${CSS.escape(a)}"]`;n.push({type:"role-aria",value:h,score:85+(x.isUniqueSelectorSafe(h,t)?5:0)})}let i=e.getAttribute("name");if(i){let h=`[name="${CSS.escape(i)}"]`;n.push({type:"name",value:h,score:78+(x.isUniqueSelectorSafe(h,t)?5:0)})}let c=x.generateCSSSelector(e,t),l=(c.match(/:nth-child\(/g)||[]).length*10,d=c.includes(".")?8:0,u=Math.max(0,70+d-l);n.push({type:"class-path",value:c,score:u});let f=x.generateXPath(e,t);n.push({type:"xpath",value:f,score:40});let m=x.generateTextBasedSelector(e);m&&n.push({type:"text",value:m,score:30}),n.sort((h,L)=>L.score-h.score);let y={css:n.find(h=>h.type!=="xpath"&&h.type!=="text")?.value||c,xpath:f,candidates:n};return m&&(y.textBased=m),r&&(y.dataTestId=r),a&&(y.ariaLabel=a),y}static generateCSSSelector(e,t){if(e.id&&x.isUniqueId(e.id,t))return`#${CSS.escape(e.id)}`;let n=x.getDataTestId(e);if(n)return`[data-testid="${CSS.escape(n)}"]`;let r=[],s=e;for(;s&&s.nodeType===Node.ELEMENT_NODE;){let a=s.nodeName.toLowerCase();if(s.id&&x.isUniqueId(s.id,t)){a=`#${CSS.escape(s.id)}`,r.unshift(a);break}let i=x.getMeaningfulClasses(s);i.length>0&&(a+=`.${i.map(l=>CSS.escape(l)).join(".")}`);let c=s.parentElement?.children;if(c&&c.length>1){let l=Array.from(c).indexOf(s);(l>0||!x.isUniqueSelector(a,s.parentElement))&&(a+=`:nth-child(${l+1})`)}r.unshift(a),s=s.parentElement}return x.optimizePath(r,e,t)}static generateXPath(e,t){if(e.id&&x.isUniqueId(e.id,t))return`//*[@id="${e.id}"]`;let n=[],r=e;for(;r&&r.nodeType===Node.ELEMENT_NODE;){let s=r.nodeName.toLowerCase();if(r.id&&x.isUniqueId(r.id,t)){n.unshift(`//*[@id="${r.id}"]`);break}let a=s,i=r.parentElement?.children;if(i){let c=Array.from(i).filter(l=>l.nodeName.toLowerCase()===s);if(c.length>1){let l=c.indexOf(r)+1;a+=`[${l}]`}}n.unshift(a),r=r.parentElement}return`//${n.join("/")}`}static generateTextBasedSelector(e){let t=e.textContent?.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(s=>s.test(r))).slice(0,2)}static optimizePath(e,t,n){for(let r=0;r<e.length-1;r++){let s=e.slice(r).join(" > ");try{let a=n.querySelectorAll(s);if(a.length===1&&a[0]===t)return s}catch{}}return e.join(" > ")}static getContextPath(e){let t=[],n=e,r=0,s=5;for(;n&&n!==e.ownerDocument?.body&&r<s;){let a=n.nodeName.toLowerCase(),i=a;if(n.id)i=`${a}#${n.id}`;else if(n.className&&typeof n.className=="string"){let l=n.className.split(" ")[0];l&&(i=`${a}.${l}`)}let c=n.getAttribute("role");c&&(i+=`[role="${c}"]`),t.unshift(i),n=n.parentElement,r++}return t}}})),g,U=C((()=>{var o;I(),g=(o=class{static isVisible(t,n){let r=t.getBoundingClientRect(),s=n||t.ownerDocument?.defaultView?.getComputedStyle(t);return s?r.width>0&&r.height>0&&s.display!=="none"&&s.visibility!=="hidden"&&s.opacity!=="0"&&t.offsetParent!==null:!1}static isInViewport(t,n){let r=t.getBoundingClientRect(),s=n||{width:t.ownerDocument?.defaultView?.innerWidth||0,height:t.ownerDocument?.defaultView?.innerHeight||0};return r.top<s.height&&r.bottom>0&&r.left<s.width&&r.right>0}static passesFilter(t,n){if(!n)return!0;let r=t;if(n.excludeSelectors?.length){for(let a of n.excludeSelectors)if(t.matches(a))return!1}if(n.includeSelectors?.length){let a=!1;for(let i of n.includeSelectors)if(t.matches(i)){a=!0;break}if(!a)return!1}if(n.tags?.length&&!n.tags.includes(t.tagName.toLowerCase()))return!1;let s=r.textContent?.toLowerCase()||"";if(n.textContains?.length){let a=!1;for(let i of n.textContains)if(s.includes(i.toLowerCase())){a=!0;break}if(!a)return!1}if(n.textMatches?.length){let a=!1;for(let i of n.textMatches)if(i.test(s)){a=!0;break}if(!a)return!1}if(n.hasAttributes?.length){for(let a of n.hasAttributes)if(!t.hasAttribute(a))return!1}if(n.attributeValues)for(let[a,i]of Object.entries(n.attributeValues)){let c=t.getAttribute(a);if(!c)return!1;if(typeof i=="string"){if(c!==i)return!1}else if(i instanceof RegExp&&!i.test(c))return!1}if(n.withinSelectors?.length){let a=!1;for(let i of n.withinSelectors)if(t.closest(i)){a=!0;break}if(!a)return!1}if(n.interactionTypes?.length){let a=o.getInteractionInfo(t),i=!1;for(let c of n.interactionTypes)if(a[c]){i=!0;break}if(!i)return!1}if(n.nearText){let a=t.parentElement;if(!a||!a.textContent?.toLowerCase().includes(n.nearText.toLowerCase()))return!1}return!0}static extractElement(t,n,r=0){if(n.maxDepth&&r>n.maxDepth||!n.includeHidden&&!o.isVisible(t)||n.viewportOnly&&!o.isInViewport(t)||!o.passesFilter(t,n.filter))return null;let s=t,a={tag:t.tagName.toLowerCase(),text:o.getElementText(t,n),selector:b.generateSelectors(t),attributes:o.getRelevantAttributes(t,n),context:o.getElementContext(t),interaction:o.getInteractionInfo(t)};if(n.mode==="full"&&o.isSemanticContainer(t)){let i=[];if(n.includeShadowDOM&&s.shadowRoot){let l=o.extractChildren(s.shadowRoot,n,r+1);i.push(...l)}let c=o.extractChildren(t,n,r+1);i.push(...c),i.length>0&&(a.children=i)}return a}static extractChildren(t,n,r){let s=[],a=t.querySelectorAll("*");for(let i of Array.from(a)){if(o.hasExtractedAncestor(i,a))continue;let c=o.extractElement(i,n,r);c&&s.push(c)}return s}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){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"],s={},a=n.attributeTruncateLength??100,i=n.dataAttributeTruncateLength??50;for(let c of r){let l=t.getAttribute(c);l&&(s[c]=l.length>a?`${l.substring(0,a)}...`:l)}for(let c of t.attributes)c.name.startsWith("data-")&&!r.includes(c.name)&&(s[c.name]=c.value.length>i?`${c.value.substring(0,i)}...`:c.value);return s}static getElementContext(t){let n={parentChain:b.getContextPath(t)},r=t.closest("form");r&&(n.nearestForm=b.generateSelectors(r).css);let s=t.closest('section, [role="region"]');s&&(n.nearestSection=b.generateSelectors(s).css);let a=t.closest('main, [role="main"]');a&&(n.nearestMain=b.generateSelectors(a).css);let i=t.closest('nav, [role="navigation"]');return i&&(n.nearestNav=b.generateSelectors(i).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),o.isVisible(t)||(r.hidden=!0);let s=t.getAttribute("role");if(s&&(r.role=s),t.matches("input, textarea, select, button")){let a=t.form||t.closest("form");a&&(r.form=b.generateSelectors(a).css)}return r}static getElementText(t,n){if(t.matches("input, textarea")){let a=t;return a.value||a.placeholder||""}if(t.matches("img"))return t.alt||"";let r=t.textContent?.trim()||"",s=n?.textTruncateLength;return s&&r.length>s?`${r.substring(0,s)}...`: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=[],s=o.INTERACTIVE_SELECTORS.join(", "),a=t.querySelectorAll(s);for(let i of Array.from(a)){let c=o.extractElement(i,n);c&&r.push(c)}if(n.customSelectors)for(let i of n.customSelectors)try{let c=t.querySelectorAll(i);for(let l of Array.from(c)){let d=o.extractElement(l,n);d&&r.push(d)}}catch{console.warn(`Invalid custom selector: ${i}`)}return r}static getSemanticElements(t,n){let r=[],s=o.SEMANTIC_SELECTORS.join(", "),a=t.querySelectorAll(s);for(let i of Array.from(a)){let c=o.extractElement(i,n);c&&r.push(c)}return r}},w(o,"INTERACTIVE_SELECTORS",["button","a[href]",'input:not([type="hidden"])',"textarea","select",'[role="button"]',"[onclick]",'[contenteditable="true"]',"summary",'[tabindex]:not([tabindex="-1"])']),w(o,"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"]']),o)}));function A(o,e){let t=(o??"").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(),s=n.map(l=>({k:l,i:r.indexOf(l)})).find(l=>l.i>-1),a=Math.max(0,Math.floor(e*.66));if(s&&s.i>a){let l=Math.max(12,e-a-5),d=Math.max(0,s.i-Math.floor(l/2)),u=Math.min(t.length,d+l);return`${t.slice(0,a).trimEnd()} \u2026 ${t.slice(d,u).trim()}\u2026`}let i=t.slice(0,e),c=i.lastIndexOf(" ");return`${c>32?i.slice(0,c):i}\u2026`}function lt(o){return o.selector?.css||""}function ut(o){let e=5381;for(let t=0;t<o.length;t++)e=e*33^o.charCodeAt(t);return`sec-${(e>>>0).toString(36)}`}function W(o){switch(o){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 M(o,e){let t=A(o.text||o.attributes?.ariaLabel,e?.maxTextLength??80),n=lt(o),r=o.tag.toLowerCase(),s=o.interaction?.submit?"submit":o.interaction?.click?"click":o.interaction?.change?"change":void 0,a=s?` (${s})`:"";return`- ${r.toUpperCase()}: ${t||"(no text)"} \u2192 \`${n}\`${a}`}function dt(o){let e=[];e.push(...o.buttons.map(i=>i.selector?.css||"")),e.push(...o.links.map(i=>i.selector?.css||"")),e.push(...o.inputs.map(i=>i.selector?.css||"")),e.push(...o.clickable.map(i=>i.selector?.css||""));let t=e.length||1,n=e.filter(i=>i.startsWith("#")).length,r=e.filter(i=>/\[data-testid=/.test(i)).length,s=e.filter(i=>/:nth-child\(/.test(i)).length,a=n+r;return`Selector quality: ${Math.round(a/t*100)}% stable (ID/data-testid), ${Math.round(s/t*100)}% structural (:nth-child)`}function ft(o,e){let t=[],n=r=>typeof e?.maxElements=="number"?r.slice(0,e.maxElements):r;if(o.buttons.length){t.push("Buttons:");for(let r of n(o.buttons))t.push(M(r,e))}if(o.links.length){t.push("Links:");for(let r of n(o.links))t.push(M(r,e))}if(o.inputs.length){t.push("Inputs:");for(let r of n(o.inputs))t.push(M(r,e))}if(o.clickable.length){t.push("Other Clickable:");for(let r of n(o.clickable))t.push(M(r,e))}if(o.forms.length){t.push("Forms:");for(let r of n(o.forms))t.push(`- FORM: action=${r.action??"-"} method=${r.method??"-"} \u2192 \`${r.selector}\``)}return t.join(`
|
|
2
|
+
`)}function k(o){let e=W("region"),t=ut(`${o.selector}|${o.label??""}|${o.role??""}`),n=o.label?` ${o.label}`:"",r=[];o.buttonCount&&r.push(`${o.buttonCount} buttons`),o.linkCount&&r.push(`${o.linkCount} links`),o.inputCount&&r.push(`${o.inputCount} inputs`),o.textPreview&&r.push(`\u201C${A(o.textPreview,80)}\u201D`);let s=r.length?`: ${r.join(", ")}`:"";return`${e} ${n} \u2192 \`${o.selector}\` [${t}]${s}`}function q(o,e,t="section"){return`<page ${[e?.title?`title="${H(e?.title)}"`:null,e?.url?`url="${H(e?.url)}"`:null].filter(Boolean).join(" ")}>
|
|
3
3
|
<${t}><![CDATA[
|
|
4
|
-
${
|
|
4
|
+
${o}
|
|
5
5
|
]]></${t}>
|
|
6
|
-
</page>`}function
|
|
7
|
-
`),t,"outline")}static region(
|
|
8
|
-
`),t,"section")}static content(
|
|
9
|
-
`),t,"content")}}}));function bt(){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 ft=="function"){let s=(Y(),dt(Et));if(s&&typeof s.SmartDOMReader=="function")return s.SmartDOMReader;if(s&&typeof s.default=="function")return s.default}}catch{}}var K,yt=T((()=>{z(),P(),_(),K=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:bt();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,H,j;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 F=(x=e.ownerDocument)==null?void 0:x.getElementById(L);F&&(d=(C=F.textContent)==null?void 0:C.trim())}}else{let L=e.querySelector("h1, h2, h3");L&&(d=(H=L.textContent)==null?void 0:H.trim())}let h=((j=e.textContent)==null?void 0:j.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}}})),St=T((()=>{})),Et=lt({ContentDetection:()=>w,MarkdownFormatter:()=>G,ProgressiveExtractor:()=>K,SelectorGenerator:()=>E,SmartDOMReader:()=>A,default:()=>A}),A,Y=T((()=>{z(),P(),_(),xt(),yt(),St(),A=class D{constructor(e={}){R(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 D({...t,mode:"interactive"}).extract(e)}static extractFull(e,t={}){return new D({...t,mode:"full"}).extract(e)}static extractFromElement(e,t="interactive",n={}){return new D({...n,mode:t}).extract(e)}}}));Y();var vt=new Set(["id","data-testid","role-aria","name","class-path","css-path"]);function J(s){let e=s.trim();return e.startsWith("/")||e.startsWith("(")||e.startsWith("./")}function Ct(s){let e=s.selector.candidates;if(e&&e.length>0){let n=null;for(let r of e)vt.has(r.type)&&(!r.value||J(r.value)||(!n||r.score>n.score)&&(n=r));if(n)return n.value}let t=s.selector.css;return t&&!J(t)?t:null}function At(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 Tt(s){let e={...s.attributes},t=s.interaction.role;return t&&!e.role&&(e.role=t),e}function Lt(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 k(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(Lt(f,n))return!0;let h=Ct(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:At(f),attributes:Tt(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 I=100;function Q(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
|
-
${
|
|
6
|
+
</page>`}function H(o){return o.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function j(o){return o.charAt(0).toUpperCase()+o.slice(1)}var B,mt=C((()=>{B=class{static structure(o,e={},t){let n=[];n.push("# Page Outline"),(t?.title||t?.url)&&(n.push(`Title: ${t?.title??""}`.trim()),n.push(`URL: ${t?.url??""}`.trim())),n.push("");let r=o.regions,s=[["header",r.header],["navigation",r.navigation],["main",r.main],["sections",r.sections],["sidebar",r.sidebar],["footer",r.footer],["modals",r.modals]];for(let[a,i]of s){if(!i)continue;let c=W(a);if(Array.isArray(i)){if(!i.length)continue;n.push(`## ${c} ${j(a)}`);for(let l of i)n.push(k(l))}else n.push(`## ${c} ${j(a)}`),n.push(k(i));n.push("")}if(o.suggestions?.length){n.push("## Suggestions");for(let a of o.suggestions)n.push(`- ${a}`);n.push("")}return n.push("Next: choose a region (by selector or [sectionId]) and call dom_extract_region for actionable details."),q(n.join(`
|
|
7
|
+
`),t,"outline")}static region(o,e={},t){let n=[];n.push("# Region Details"),(t?.title||t?.url)&&(n.push(`Title: ${t?.title??""}`.trim()),n.push(`URL: ${t?.url??""}`.trim())),n.push("");let r=o.interactive;if(o.page){let i=[o.page.hasErrors?"errors: yes":"errors: no",o.page.isLoading?"loading: yes":"loading: no",o.page.hasModals?"modals: yes":"modals: no"];n.push(`Page state: ${i.join(", ")}`)}let s=[],a=i=>i?i.length:0;return s.push(`${a(r.buttons)} buttons`),s.push(`${a(r.links)} links`),s.push(`${a(r.inputs)} inputs`),r.forms?.length&&s.push(`${a(r.forms)} forms`),n.push(`Summary: ${s.join(", ")}`),n.push(dt(r)),n.push(""),n.push(ft(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."),q(n.join(`
|
|
8
|
+
`),t,"section")}static content(o,e={},t){let n=[];if(n.push("# Content"),n.push(`Selector: \`${o.selector}\``),n.push(""),o.text.headings?.length){n.push("Headings:");for(let r of o.text.headings)n.push(`- H${r.level}: ${A(r.text,e.maxTextLength??120)}`);n.push("")}if(o.text.paragraphs?.length){let r=typeof e.maxElements=="number"?e.maxElements:o.text.paragraphs.length;n.push("Paragraphs:");for(let s of o.text.paragraphs.slice(0,r))n.push(`- ${A(s,e.maxTextLength??200)}`);n.push("")}if(o.text.lists?.length){n.push("Lists:");for(let r of o.text.lists){n.push(`- ${r.type.toUpperCase()}:`);let s=typeof e.maxElements=="number"?e.maxElements:r.items.length;for(let a of r.items.slice(0,s))n.push(` - ${A(a,e.maxTextLength??120)}`)}n.push("")}if(o.tables?.length){n.push("Tables:");for(let r of o.tables){n.push(`- Headers: ${r.headers.join(" | ")}`);let s=typeof e.maxElements=="number"?e.maxElements:r.rows.length;for(let a of r.rows.slice(0,s))n.push(` - ${a.join(" | ")}`)}n.push("")}if(o.media?.length){n.push("Media:");let r=typeof e.maxElements=="number"?e.maxElements:o.media.length;for(let s of o.media.slice(0,r))n.push(`- ${s.type.toUpperCase()}: ${s.alt??""} ${s.src?`\u2192 ${s.src}`:""}`.trim());n.push("")}return n.push("Next: if text is insufficient for targeting, call dom_extract_region for interactive selectors."),q(n.join(`
|
|
9
|
+
`),t,"content")}}}));function ht(){if(typeof window<"u"){let o=window,e=o.SmartDOMReader;if(typeof e=="function")return e;let t=o.SmartDOMReaderNamespace;if(t&&typeof t.SmartDOMReader=="function")return t.SmartDOMReader}try{if(typeof ct=="function"){let o=(_(),it(xt));if(o&&typeof o.SmartDOMReader=="function")return o.SmartDOMReader;if(o&&typeof o.default=="function")return o.default}}catch{}}var z,gt=C((()=>{V(),I(),U(),z=class p{static extractStructure(e){let t={},n=e.querySelector('header, [role="banner"], .header, #header');n&&(t.header=p.analyzeRegion(n));let r=e.querySelectorAll('nav, [role="navigation"], .nav, .navigation');if(r.length>0&&(t.navigation=Array.from(r).map(u=>p.analyzeRegion(u))),e instanceof Document){let u=T.findMainContent(e);if(u){t.main=p.analyzeRegion(u);let f=u.querySelectorAll('section, article, [role="region"]');f.length>0&&(t.sections=Array.from(f).filter(m=>!m.closest("nav, header, footer")).map(m=>p.analyzeRegion(m)))}}else{t.main=p.analyzeRegion(e);let u=e.querySelectorAll('section, article, [role="region"]');u.length>0&&(t.sections=Array.from(u).filter(f=>!f.closest("nav, header, footer")).map(f=>p.analyzeRegion(f)))}let s=e.querySelectorAll('aside, [role="complementary"], .sidebar, #sidebar');s.length>0&&(t.sidebar=Array.from(s).map(u=>p.analyzeRegion(u)));let a=e.querySelector('footer, [role="contentinfo"], .footer, #footer');a&&(t.footer=p.analyzeRegion(a));let i=e.querySelectorAll('[role="dialog"], .modal, .popup, .overlay'),c=Array.from(i).filter(u=>g.isVisible(u));c.length>0&&(t.modals=c.map(u=>p.analyzeRegion(u)));let l=p.extractFormOverview(e),d=p.calculateSummary(e,t,l);return{regions:t,forms:l,summary:d,suggestions:p.generateSuggestions(t,d)}}static extractRegion(e,t,n={},r){let s=t.querySelector(e);if(!s)return null;let a=r??ht();if(!a)throw new Error("SmartDOMReader is unavailable. Ensure the Smart DOM Reader module is loaded before calling extractRegion.");return new a(n).extract(s,n)}static extractContent(e,t,n={}){let r=t.querySelector(e);if(!r)return null;let s={selector:e,text:{},metadata:{wordCount:0,hasInteractive:!1}};if(n.includeHeadings!==!1){let c=r.querySelectorAll("h1, h2, h3, h4, h5, h6");s.text.headings=Array.from(c).map(l=>({level:Number.parseInt(l.tagName[1],10),text:p.getTextContent(l,n.maxTextLength)}))}let a=r.querySelectorAll("p");if(a.length>0&&(s.text.paragraphs=Array.from(a).map(c=>p.getTextContent(c,n.maxTextLength)).filter(c=>c.length>0)),n.includeLists!==!1){let c=r.querySelectorAll("ul, ol");s.text.lists=Array.from(c).map(l=>({type:l.tagName.toLowerCase(),items:Array.from(l.querySelectorAll("li")).map(d=>p.getTextContent(d,n.maxTextLength))}))}if(n.includeTables!==!1){let c=r.querySelectorAll("table");s.tables=Array.from(c).map(l=>({headers:Array.from(l.querySelectorAll("th")).map(d=>p.getTextContent(d)),rows:Array.from(l.querySelectorAll("tr")).filter(d=>d.querySelector("td")).map(d=>Array.from(d.querySelectorAll("td")).map(u=>p.getTextContent(u)))}))}if(n.includeMedia!==!1){let c=r.querySelectorAll("img"),l=r.querySelectorAll("video"),d=r.querySelectorAll("audio");s.media=[...Array.from(c).map(u=>{let f={type:"img"},m=u.getAttribute("alt"),y=u.getAttribute("src");return m&&(f.alt=m),y&&(f.src=y),f}),...Array.from(l).map(u=>{let f={type:"video"},m=u.getAttribute("src");return m&&(f.src=m),f}),...Array.from(d).map(u=>{let f={type:"audio"},m=u.getAttribute("src");return m&&(f.src=m),f})]}let i=r.textContent||"";return s.metadata.wordCount=i.trim().split(/\s+/).length,s.metadata.hasInteractive=r.querySelectorAll("button, a, input, textarea, select").length>0,s}static analyzeRegion(e){let t=b.generateSelectors(e).css,n=e.querySelectorAll('button, [role="button"]'),r=e.querySelectorAll("a[href]"),s=e.querySelectorAll("input, textarea, select"),a=e.querySelectorAll("form"),i=e.querySelectorAll("ul, ol"),c=e.querySelectorAll("table"),l=e.querySelectorAll("img, video, audio"),d=n.length+r.length+s.length,u,f=e.getAttribute("aria-label");if(f)u=f;else if(e.getAttribute("aria-labelledby")){let v=e.getAttribute("aria-labelledby");if(v){let P=e.ownerDocument?.getElementById(v);P&&(u=P.textContent?.trim())}}else{let v=e.querySelector("h1, h2, h3");v&&(u=v.textContent?.trim())}let m=e.textContent?.trim()||"",y=m.length>50?`${m.substring(0,50)}...`:m,h={selector:t,interactiveCount:d,hasForm:a.length>0,hasList:i.length>0,hasTable:c.length>0,hasMedia:l.length>0};u&&(h.label=u);let L=e.getAttribute("role");return L&&(h.role=L),n.length>0&&(h.buttonCount=n.length),r.length>0&&(h.linkCount=r.length),s.length>0&&(h.inputCount=s.length),y.length>0&&(h.textPreview=y),h}static extractFormOverview(e){let t=e.querySelectorAll("form");return Array.from(t).map(n=>{let r=n.querySelectorAll("input, textarea, select"),s=b.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 i,c=n.getAttribute("id")?.toLowerCase(),l=n.getAttribute("class")?.toLowerCase(),d=n.getAttribute("action")?.toLowerCase(),u=n.querySelector('input[type="email"]'),f=n.querySelector('input[type="password"]');n.querySelector('input[type="search"]')||c?.includes("search")||l?.includes("search")?i="search":f&&u?i="login":f?i="authentication":c?.includes("contact")||l?.includes("contact")?i="contact":c?.includes("subscribe")||l?.includes("subscribe")?i="subscription":(d?.includes("checkout")||l?.includes("checkout"))&&(i="checkout");let m={selector:s,location:a,inputCount:r.length};return i&&(m.purpose=i),m})}static calculateSummary(e,t,n){let r=e.querySelectorAll("button, a[href], input, textarea, select"),s=e.querySelectorAll('section, article, [role="region"]'),a=(t.modals?.length||0)>0,i=[".error",".alert-danger",'[role="alert"]'].some(u=>{let f=e.querySelector(u);return f?g.isVisible(f):!1}),c=[".loading",".spinner",'[aria-busy="true"]'].some(u=>{let f=e.querySelector(u);return f?g.isVisible(f):!1}),l={totalInteractive:r.length,totalForms:n.length,totalSections:s.length,hasModals:a,hasErrors:i,isLoading:c},d=t.main?.selector;return d&&(l.mainContentSelector=d),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){let n=e.textContent?.trim()||"";return t&&n.length>t?`${n.substring(0,t)}...`:n}}})),pt=C((()=>{})),xt=st({ContentDetection:()=>T,MarkdownFormatter:()=>B,ProgressiveExtractor:()=>z,SelectorGenerator:()=>b,SmartDOMReader:()=>E,default:()=>E}),E,_=C((()=>{V(),I(),U(),mt(),gt(),pt(),E=class R{constructor(e={}){w(this,"options");this.options={mode:e.mode||"interactive",maxDepth:e.maxDepth||5,includeHidden:e.includeHidden||!1,includeShadowDOM:e.includeShadowDOM??!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,s={...this.options,...t},a=e instanceof Document?r:e;s.mainContentOnly&&e instanceof Document&&(a=T.findMainContent(r));let i=this.extractPageState(r),c=this.extractLandmarks(r),l=this.extractInteractiveElements(a,s),d={mode:s.mode,timestamp:n,page:i,landmarks:c,interactive:l};if(s.mode==="full"){let u=this.extractSemanticElements(a,s),f=this.extractMetadata(r,a,s);return{...d,semantic:u,metadata:f}}return d}extractPageState(e){let t=this.getFocusedElement(e);return{url:e.location?.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=T.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=>b.generateSelectors(t).css)}extractInteractiveElements(e,t){let n=[],r=[],s=[],a=[];return e.querySelectorAll('button, [role="button"], input[type="button"], input[type="submit"]').forEach(i=>{if(this.shouldIncludeElement(i,t)){let c=g.extractElement(i,t);c&&n.push(c)}}),e.querySelectorAll("a[href]").forEach(i=>{if(this.shouldIncludeElement(i,t)){let c=g.extractElement(i,t);c&&r.push(c)}}),e.querySelectorAll('input:not([type="button"]):not([type="submit"]), textarea, select').forEach(i=>{if(this.shouldIncludeElement(i,t)){let c=g.extractElement(i,t);c&&s.push(c)}}),t.customSelectors&&t.customSelectors.forEach(i=>{e.querySelectorAll(i).forEach(c=>{if(this.shouldIncludeElement(c,t)){let l=g.extractElement(c,t);l&&a.push(l)}})}),{buttons:n,links:r,inputs:s,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 s=[],a=[];r.querySelectorAll('input:not([type="button"]):not([type="submit"]), textarea, select').forEach(d=>{let u=g.extractElement(d,t);u&&s.push(u)}),r.querySelectorAll('button, input[type="button"], input[type="submit"]').forEach(d=>{let u=g.extractElement(d,t);u&&a.push(u)});let i=r.getAttribute("action"),c=r.getAttribute("method"),l={selector:b.generateSelectors(r).css,inputs:s,buttons:a};i&&(l.action=i),c&&(l.method=c),n.push(l)}),n}extractSemanticElements(e,t){let n=[],r=[],s=[],a=[],i=[];return e.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(c=>{if(this.shouldIncludeElement(c,t)){let l=g.extractElement(c,t);l&&n.push(l)}}),e.querySelectorAll("img").forEach(c=>{if(this.shouldIncludeElement(c,t)){let l=g.extractElement(c,t);l&&r.push(l)}}),e.querySelectorAll("table").forEach(c=>{if(this.shouldIncludeElement(c,t)){let l=g.extractElement(c,t);l&&s.push(l)}}),e.querySelectorAll("ul, ol").forEach(c=>{if(this.shouldIncludeElement(c,t)){let l=g.extractElement(c,t);l&&a.push(l)}}),e.querySelectorAll('article, [role="article"]').forEach(c=>{if(this.shouldIncludeElement(c,t)){let l=g.extractElement(c,t);l&&i.push(l)}}),{headings:n,images:r,tables:s,lists:a,articles:i}}extractMetadata(e,t,n){let r=t.querySelectorAll("*"),s=t.querySelectorAll("button, a, input, textarea, select, h1, h2, h3, h4, h5, h6, img, table, ul, ol, article").length,a={totalElements:r.length,extractedElements:s};n.mainContentOnly&&t instanceof Element&&(a.mainContent=b.generateSelectors(t).css);let i=e.documentElement.getAttribute("lang");return i&&(a.language=i),a}shouldIncludeElement(e,t){return!(!t.includeHidden&&!g.isVisible(e)||t.viewportOnly&&!g.isInViewport(e)||t.filter&&!g.passesFilter(e,t.filter))}detectErrors(e){return[".error",".alert-danger",'[role="alert"]',".error-message"].some(t=>{let n=e.querySelector(t);return n?g.isVisible(n):!1})}detectLoading(e){return[".loading",".spinner",'[aria-busy="true"]',".loader"].some(t=>{let n=e.querySelector(t);return n?g.isVisible(n):!1})}detectModals(e){return['[role="dialog"]',".modal",".popup",".overlay"].some(t=>{let n=e.querySelector(t);return n?g.isVisible(n):!1})}getFocusedElement(e){let t=e.activeElement;if(t&&t!==e.body)return b.generateSelectors(t).css}static extractInteractive(e,t={}){return new R({...t,mode:"interactive"}).extract(e)}static extractFull(e,t={}){return new R({...t,mode:"full"}).extract(e)}static extractFromElement(e,t="interactive",n={}){return new R({...n,mode:t}).extract(e)}}}));_();var bt=new Set(["id","data-testid","role-aria","name","class-path","css-path"]);function X(o){let e=o.trim();return e.startsWith("/")||e.startsWith("(")||e.startsWith("./")}function yt(o){let e=o.selector.candidates;if(e&&e.length>0){let n=null;for(let r of e)bt.has(r.type)&&(!r.value||X(r.value)||(!n||r.score>n.score)&&(n=r));if(n)return n.value}let t=o.selector.css;return t&&!X(t)?t:null}function St(o){let e=o.tag.toLowerCase(),t=o.interaction.role??o.attributes.role;return e==="a"&&(o.interaction.nav||o.attributes.href!=null)?"navigable":e==="input"||e==="select"||e==="textarea"||t==="textbox"||t==="combobox"||t==="listbox"||t==="spinbutton"||o.interaction.change&&!o.interaction.click?"input":e==="button"||t==="button"||o.interaction.click||o.interaction.submit?"clickable":"static"}function Et(o){let e={...o.attributes},t=o.interaction.role;return t&&!e.role&&(e.role=t),e}function Ct(o,e){return e?[o.selector.css,o.selector.xpath,o.context.nearestForm,o.context.nearestSection,o.context.nearestMain,o.context.nearestNav,...o.selector.candidates?.map(n=>n.value)??[],...o.context.parentChain].some(n=>!!n&&n.includes(e)):!1}function N(o,e={}){let t=e.includeSemantic??!0,n=e.excludeSelector??".persona-host",r=e.maxTextLength??200,s=[o.interactive.buttons,o.interactive.links,o.interactive.inputs,o.interactive.clickable];t&&o.semantic&&s.push(o.semantic.headings,o.semantic.images,o.semantic.tables,o.semantic.lists,o.semantic.articles);let a=[],i=new Set,c=l=>{if(Ct(l,n))return!0;let d=yt(l);if(d&&!i.has(d)&&(i.add(d),a.push({selector:d,tagName:l.tag.toLowerCase(),text:(l.text??"").trim().substring(0,r),role:l.interaction.role??l.attributes.role??null,interactivity:St(l),attributes:Et(l)}),e.maxElements&&a.length>=e.maxElements))return!1;if(l.children){for(let u of l.children)if(!c(u))return!1}return!0};for(let l of s)if(l){for(let d of l)if(!c(d))return a}return a}var O=100;function G(o,e={}){if(o.length===0)return"No page elements found.";let t=e.mode??"structured",n=[];if(t==="structured"){let s=o.map(a=>a.formattedSummary).filter(a=>!!a&&a.length>0);s.length>0&&n.push(`Structured summaries:
|
|
10
|
+
${s.map(a=>`- ${a.split(`
|
|
11
11
|
`).join(`
|
|
12
12
|
`)}`).join(`
|
|
13
|
-
`)}`)}let r={clickable:[],navigable:[],input:[],static:[]};for(let
|
|
14
|
-
${
|
|
15
|
-
`)}`)}if(r.navigable.length>0){let
|
|
16
|
-
${
|
|
17
|
-
`)}`)}if(r.input.length>0){let
|
|
18
|
-
${
|
|
19
|
-
`)}`)}if(r.static.length>0){let
|
|
20
|
-
${
|
|
13
|
+
`)}`)}let r={clickable:[],navigable:[],input:[],static:[]};for(let s of o)t==="structured"&&s.formattedSummary||r[s.interactivity].push(s);if(r.clickable.length>0){let s=r.clickable.map(a=>`- ${a.selector}: "${a.text.substring(0,O)}" (clickable)`);n.push(`Interactive elements:
|
|
14
|
+
${s.join(`
|
|
15
|
+
`)}`)}if(r.navigable.length>0){let s=r.navigable.map(a=>`- ${a.selector}${a.attributes.href?`[href="${a.attributes.href}"]`:""}: "${a.text.substring(0,O)}" (navigable)`);n.push(`Navigation links:
|
|
16
|
+
${s.join(`
|
|
17
|
+
`)}`)}if(r.input.length>0){let s=r.input.map(a=>`- ${a.selector}${a.attributes.type?`[type="${a.attributes.type}"]`:""}: "${a.text.substring(0,O)}" (input)`);n.push(`Form inputs:
|
|
18
|
+
${s.join(`
|
|
19
|
+
`)}`)}if(r.static.length>0){let s=r.static.map(a=>`- ${a.selector}: "${a.text.substring(0,O)}"`);n.push(`Content:
|
|
20
|
+
${s.join(`
|
|
21
21
|
`)}`)}return n.join(`
|
|
22
22
|
|
|
23
|
-
`)}function
|
|
23
|
+
`)}function K(o={}){let e=o.mode??"interactive",t;if(o.root)t=E.extractFromElement(o.root,e,o.extractionOptions);else{let n=o.document??(typeof document<"u"?document:void 0);if(!n)return[];t=e==="full"?E.extractFull(n,o.extractionOptions):E.extractInteractive(n,o.extractionOptions)}return N(t,{includeSemantic:o.includeSemantic??e==="full",excludeSelector:o.excludeSelector,maxTextLength:o.maxTextLength,maxElements:o.maxElements})}function vt(o={}){let e=o.contextKey??"pageContext";return()=>{let t=K(o);return t.length===0?{}:{[e]:G(t)}}}0&&(module.exports={collectSmartDomContext,createSmartDomReaderContextProvider,smartDomResultToEnriched});
|