diff --git a/extension/package-lock.json b/extension/package-lock.json index 0a2e42f..75c6ef1 100644 --- a/extension/package-lock.json +++ b/extension/package-lock.json @@ -1,12 +1,12 @@ { "name": "gravity-bridge", - "version": "0.5.88", + "version": "0.5.89", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "gravity-bridge", - "version": "0.5.88", + "version": "0.5.89", "dependencies": { "cheerio": "^1.2.0", "ws": "^8.19.0" diff --git a/extension/package.json b/extension/package.json index 22a63b5..cb78907 100644 --- a/extension/package.json +++ b/extension/package.json @@ -2,7 +2,7 @@ "name": "gravity-bridge", "displayName": "Gravity Bridge", "description": "Discord-based unified approval system for Antigravity AI interactions.", - "version": "0.5.88", + "version": "0.5.89", "publisher": "variet", "engines": { "vscode": "^1.100.0" diff --git a/extension/src/observer-script.ts b/extension/src/observer-script.ts index 0b99638..b41ff86 100644 --- a/extension/src/observer-script.ts +++ b/extension/src/observer-script.ts @@ -1077,6 +1077,40 @@ export function generateApprovalObserverScript(_port: number): string { var desc=extractContext(b); + // v28: One-shot DOM structure dump for button context analysis + if (!window._btnDomDumped && txtLow.includes('run')) { + window._btnDomDumped = true; + var dumpLines = []; + var cur = b; + for (var dd = 0; dd < 10 && cur; dd++) { + var childSummary = []; + if (cur.children) { + for (var ci2 = 0; ci2 < Math.min(cur.children.length, 8); ci2++) { + var ch = cur.children[ci2]; + var chTag = (ch.tagName || '?').toLowerCase(); + var chCls = (typeof ch.className === 'string' ? ch.className : '').substring(0, 40); + var chText = (ch.textContent || '').substring(0, 30).replace(/\\n/g, ' '); + childSummary.push(chTag + '.' + chCls.split(' ')[0] + '=' + chText); + } + } + var sibSummary = []; + if (cur.parentElement) { + for (var si2 = 0; si2 < Math.min(cur.parentElement.children.length, 6); si2++) { + var sib = cur.parentElement.children[si2]; + var sibTag = (sib.tagName || '?').toLowerCase(); + var sibCls = (typeof sib.className === 'string' ? sib.className : '').substring(0, 30); + sibSummary.push(sibTag + '.' + sibCls.split(' ')[0] + (sib === cur ? '*' : '')); + } + } + dumpLines.push('d' + dd + ':' + (cur.tagName || '?').toLowerCase() + ' cls=' + (typeof cur.className === 'string' ? cur.className : '').substring(0, 50) + ' | children=[' + childSummary.join(', ') + '] | siblings=[' + sibSummary.join(', ') + ']'); + cur = cur.parentElement; + } + log('BTN-DOM-DUMP txt=' + txt + ' desc=' + desc.substring(0, 40)); + for (var ddi = 0; ddi < dumpLines.length; ddi++) { + log('BTN-DOM-DUMP ' + dumpLines[ddi]); + } + } + var rid=now.toString()+'_'+Math.random().toString(36).substring(2,6); _sent[groupKey]={rid:rid,ts:now};