From 8ada5f7daf5ab0a121e6d1bdad634688337f6655 Mon Sep 17 00:00:00 2001 From: Variet Worker Date: Sun, 19 Apr 2026 15:18:11 +0900 Subject: [PATCH] =?UTF-8?q?fix(observer):=20v31=20=E2=80=94=20content=5Fco?= =?UTF-8?q?py=20=EC=95=84=EC=9D=B4=EC=BD=98=20=ED=95=84=ED=84=B0=20+=20?= =?UTF-8?q?=ED=9B=84=EB=B3=B4=20=EA=B8=B8=EC=9D=B4=EC=88=9C=20=EC=A0=95?= =?UTF-8?q?=EB=A0=AC=20+=20trailing=20icon=20strip=20(v0.5.96)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extension/package-lock.json | 4 ++-- extension/package.json | 2 +- extension/src/observer-script.ts | 30 ++++++++++++++++++------------ 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/extension/package-lock.json b/extension/package-lock.json index 06d9739..f59f869 100644 --- a/extension/package-lock.json +++ b/extension/package-lock.json @@ -1,12 +1,12 @@ { "name": "gravity-bridge", - "version": "0.5.95", + "version": "0.5.96", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "gravity-bridge", - "version": "0.5.95", + "version": "0.5.96", "dependencies": { "cheerio": "^1.2.0", "ws": "^8.19.0" diff --git a/extension/package.json b/extension/package.json index 710e31f..5e617e7 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.95", + "version": "0.5.96", "publisher": "variet", "engines": { "vscode": "^1.100.0" diff --git a/extension/src/observer-script.ts b/extension/src/observer-script.ts index a65dbc0..b229b62 100644 --- a/extension/src/observer-script.ts +++ b/extension/src/observer-script.ts @@ -205,31 +205,37 @@ export function generateApprovalObserverScript(_port: number): string { var rcEl = rcDivs[rci]; var rcChildCount = rcEl.children ? rcEl.children.length : 0; var rcTxt = (rcEl.textContent || '').trim(); - // Match leaf div with exact or near-exact "Running command" text if ((rcTxt === 'Running command' || (rcChildCount === 0 && rcTxt.indexOf('Running command') !== -1 && rcTxt.length < 30)) && rcEl.parentElement) { var rcP = rcEl.parentElement; - log('CONTEXT-v30 found RC header at d'+depth+' siblings='+rcP.children.length); + var rcCands = []; for (var rcsi = 0; rcsi < rcP.children.length; rcsi++) { if (rcP.children[rcsi] === rcEl) continue; var sibT = (rcP.children[rcsi].textContent || '').trim(); if (sibT.length < 5) continue; - // Skip button-bar text + if (/^(content_copy|content_paste|play_arrow|check_circle|chevron_|keyboard_arrow|more_horiz|more_vert|expand_|alternate_email|arrow_drop)/.test(sibT)) continue; if (/^(Always|Run|Allow|Cancel|Deny|keyboard_arrow)/i.test(sibT)) continue; if (sibT.indexOf('Always run') !== -1 && sibT.indexOf('Cancel') !== -1) continue; - // Try prompt marker extraction - var pM = sibT.match(/[\\u003e\\u00bb\\u276f]\\s+(.+)/); + rcCands.push(sibT); + } + rcCands.sort(function(a,b){ return b.length - a.length; }); + log('CONTEXT-v30 RC d='+depth+' cands='+rcCands.length+(rcCands.length>0?' best="'+rcCands[0].substring(0,60)+'"':'')); + for (var rcci = 0; rcci < rcCands.length; rcci++) { + var candT = rcCands[rcci]; + var pM = candT.match(/[\\u003e\\u00bb\\u276f]\\s+(.+)/); if (pM && pM[1].trim().length > 3) { - var cmdV = pM[1].trim().substring(0, 300); + var cmdV = pM[1].trim(); + cmdV = cmdV.replace(/\\s*(content_copy|content_paste|play_arrow|check_circle|keyboard_arrow[_a-z]*)\\s*$/, '').trim(); + if (cmdV.length < 3) continue; if (/^(Always|Run|Allow|Cancel|Deny)/i.test(cmdV)) continue; - log('CONTEXT-OK d='+depth+' src=running-cmd cmdV='+cmdV.substring(0,60)); + log('CONTEXT-OK d='+depth+' src=running-cmd cmdV='+cmdV.substring(0,80)); _lastContextDebug = _debugTrail.join(' '); - return 'Running command: ' + cmdV; + return 'Running command: ' + cmdV.substring(0, 300); } - // Fallback: use raw sibling text if it looks like a terminal line - if (sibT.length > 10 && /[\\u276f\\u003e]/.test(sibT)) { - log('CONTEXT-OK d='+depth+' src=running-cmd-raw sibT='+sibT.substring(0,60)); + if (candT.length > 10 && /[\\u276f\\u003e]/.test(candT)) { + var rawC = candT.replace(/\\s*(content_copy|content_paste|play_arrow)\\s*$/, '').trim(); + log('CONTEXT-OK d='+depth+' src=running-cmd-raw rawC='+rawC.substring(0,80)); _lastContextDebug = _debugTrail.join(' '); - return sibT.substring(0, 300); + return rawC.substring(0, 300); } } }