devils-agent / baim /dom.js
devildasdf's picture
Upload experimental BAIM code, research checkpoints and measured evaluations
795f737 verified
Raw
History Blame Contribute Delete
608 Bytes
() => {
// Retain node objects outside page-authored attributes. Include open shadow roots.
const nodes = [], paths = [];
const walk = (root, parentPath) => {
let index = 0;
for (const el of root.children || []) {
const path = [...parentPath, index++];
if (el.matches('a[href],button,input,textarea,select,summary,[role],[tabindex],[contenteditable="true"],h1,h2,h3,p,output')) {
nodes.push(el);
paths.push(path.join('/'));
}
if (el.shadowRoot) walk(el.shadowRoot, path);
walk(el, path);
}
};
walk(document, []);
return {nodes, paths};
}