diff --git a/docs/devlog/2026-04-19.md b/docs/devlog/2026-04-19.md index 1e70239..d4c5228 100644 --- a/docs/devlog/2026-04-19.md +++ b/docs/devlog/2026-04-19.md @@ -12,4 +12,4 @@ ### 검증 결과 - 14/14 E2E 테스트 통과 - SYNTAX OK -- Accept all (diff review) 정상 동작 확인 +- Accept all (diff review) 자동 승인 테스트 — v0.5.98 21:48 KST diff --git a/extension/package-lock.json b/extension/package-lock.json index 504f99d..03f65ce 100644 --- a/extension/package-lock.json +++ b/extension/package-lock.json @@ -1,12 +1,12 @@ { "name": "gravity-bridge", - "version": "0.5.98", + "version": "0.5.99", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "gravity-bridge", - "version": "0.5.98", + "version": "0.5.99", "dependencies": { "cheerio": "^1.2.0", "ws": "^8.19.0" diff --git a/extension/package.json b/extension/package.json index 45529d1..b12d1ad 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.98", + "version": "0.5.99", "publisher": "variet", "engines": { "vscode": "^1.100.0" diff --git a/extension/src/http-bridge.ts b/extension/src/http-bridge.ts index 52d6731..4d96198 100644 --- a/extension/src/http-bridge.ts +++ b/extension/src/http-bridge.ts @@ -299,6 +299,17 @@ function _handlePending(req: any, res: any, ctx: HttpBridgeContext) { } } if (alwaysRunDetected) { + // v34: If this is "Accept all" / "Accept", also call agentAcceptAllInFile directly + const isAcceptAll = /^Accept/i.test(rawCmd) || (data.step_type === 'diff_review'); + if (isAcceptAll) { + ctx.logToFile(`[HTTP] AUTO-APPROVE Accept all → calling agentAcceptAllInFile directly`); + try { + const vscode = require('vscode'); + vscode.commands.executeCommand('antigravity.prioritized.agentAcceptAllInFile') + .then(() => ctx.logToFile(`[HTTP] ✅ agentAcceptAllInFile SUCCESS`)) + .catch((e: any) => ctx.logToFile(`[HTTP] ❌ agentAcceptAllInFile failed: ${e.message?.substring(0, 100)}`)); + } catch (e: any) { ctx.logToFile(`[HTTP] ❌ vscode require failed: ${e.message}`); } + } // Try enrichment for better Discord display text let displayCmd = rawCmd; ctx.logToFile(`[HTTP] AUTO-APPROVE raw: cmd="${rawCmd}" desc="${rawDesc.substring(0, 120)}" buttons=${JSON.stringify((data.buttons || []).map((b: any) => b.text)).substring(0, 200)}`); diff --git a/extension/src/observer-script.ts b/extension/src/observer-script.ts index 42aee27..8b90a7f 100644 --- a/extension/src/observer-script.ts +++ b/extension/src/observer-script.ts @@ -12,7 +12,7 @@ export function generateApprovalObserverScript(_port: number): string { function log(m){ console.log('[GB Observer] '+m); // v19: Relay important logs to extension via HTTP so they appear in extension.log - if (BASE && (m.indexOf('CV-CLASSES')!==-1 || m.indexOf('CV-CHILDREN')!==-1 || m.indexOf('child[')!==-1 || m.indexOf('CV found')!==-1 || m.indexOf('Conversation view')!==-1 || m.indexOf('BEACON')!==-1 || m.indexOf('ERROR')!==-1 || m.indexOf('chat relay')!==-1 || m.indexOf('user-cls')!==-1 || m.indexOf('CONTEXT')!==-1 || m.indexOf('BTN-DOM')!==-1 || m.indexOf('DEFERRED')!==-1 || m.indexOf('DETECTED')!==-1)) { + if (BASE && (m.indexOf('CV-CLASSES')!==-1 || m.indexOf('CV-CHILDREN')!==-1 || m.indexOf('child[')!==-1 || m.indexOf('CV found')!==-1 || m.indexOf('Conversation view')!==-1 || m.indexOf('BEACON')!==-1 || m.indexOf('ERROR')!==-1 || m.indexOf('chat relay')!==-1 || m.indexOf('user-cls')!==-1 || m.indexOf('CONTEXT')!==-1 || m.indexOf('BTN-DOM')!==-1 || m.indexOf('DEFERRED')!==-1 || m.indexOf('DETECTED')!==-1 || m.indexOf('ACCEPT')!==-1)) { try { fetch(BASE+'/log', {method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({msg:m.substring(0,2000)})}); } catch(e){} } }