fix(ext): browser_subagent Allow 버튼 RPC 매핑 수정 — runExtensionCode payload 적용 (v0.5.1)

This commit is contained in:
Variet Worker
2026-03-20 18:12:07 +09:00
parent e306fae130
commit 277df7f214
6 changed files with 18 additions and 7 deletions

View File

@@ -47,6 +47,12 @@
- **주의**: JS에서 **string/number는 프리미티브라 참조 전달 불가** — 객체 속성을 공유하려면 getter 함수나 객체 래퍼 사용 필수 - **주의**: JS에서 **string/number는 프리미티브라 참조 전달 불가** — 객체 속성을 공유하려면 getter 함수나 객체 래퍼 사용 필수
- **Vikunja**: #411, #410 - **Vikunja**: #411, #410
### [2026-03-19] browser_subagent RPC 매핑 — 잘못된 interactionPayload
- **증상**: 서브 에이전트의 "Allow" (execute JavaScript on localhost) 버튼이 자동 승인되지 않음
- **원인**: `step-probe.ts`에서 `browser_subagent` toolName이 분류 없이 raw toolName으로 전달 → `approval-handler.ts`의 RPC 매핑에서 `runExtensionCode`가 아닌 default `runCommand` payload로 전송됨
- **해결** (v0.5.1): `step-probe.ts``browser_subagent`/`open_browser_url` 분류 추가 + `approval-handler.ts` L384에 `browser_subagent` 조건 추가
- **주의**: 새 tool type 추가 시 반드시 step-probe 분류 + approval-handler RPC 매핑 + observer-script PATS 3곳 모두 확인
--- ---
> [!NOTE] > [!NOTE]

View File

@@ -17,10 +17,8 @@ ACTIVE_TIMEOUT_SECONDS=300
# Watcher Settings # Watcher Settings
DEBOUNCE_SECONDS=2 DEBOUNCE_SECONDS=2
# Bot mode: 'local' (default, file-based) or 'gateway' (서버 Docker) # Bot mode: 'local' (default, file-based) or 'gateway' (서버 Docker + WS Hub)
BOT_MODE=local BOT_MODE=local
# Remote bridge URL (only used when BOT_MODE=remote)
REMOTE_BRIDGE_URL=
# Gateway API Key (보안) # Gateway API Key (보안)
# 서버와 Collector에 동일한 키를 설정하세요 # 서버와 Collector에 동일한 키를 설정하세요

View File

@@ -0,0 +1,5 @@
# 2026-03-19 Devlog
| # | 시간 | 작업 | 커밋 | 상태 |
|---|------|------|------|------|
| 1 | 07:30 | v0.5.0 이후 이슈 조사 — 외부 네트워크(서버 정상 확인) + Allow 버튼 RPC 수정 | `` | ✅ |

View File

@@ -2,7 +2,7 @@
"name": "gravity-bridge", "name": "gravity-bridge",
"displayName": "Gravity Bridge", "displayName": "Gravity Bridge",
"description": "Antigravity ↔ Discord 브리지 연동 확장", "description": "Antigravity ↔ Discord 브리지 연동 확장",
"version": "0.5.0", "version": "0.5.1",
"publisher": "variet", "publisher": "variet",
"engines": { "engines": {
"vscode": "^1.100.0" "vscode": "^1.100.0"

View File

@@ -381,7 +381,7 @@ export async function tryApprovalStrategies(approved: boolean, sessionId: string
interactionPayload = { readUrlContent: { confirm: true } }; interactionPayload = { readUrlContent: { confirm: true } };
} else if (typeLower.includes('mcp')) { } else if (typeLower.includes('mcp')) {
interactionPayload = { mcpTool: { confirm: true } }; interactionPayload = { mcpTool: { confirm: true } };
} else if (typeLower.includes('invoke_subagent') || typeLower.includes('extension_code')) { } else if (typeLower.includes('invoke_subagent') || typeLower.includes('extension_code') || typeLower.includes('browser_subagent')) {
interactionPayload = { runExtensionCode: { confirm: true } }; interactionPayload = { runExtensionCode: { confirm: true } };
} else if (typeLower.includes('file_permission')) { } else if (typeLower.includes('file_permission')) {
const scope = typeLower.includes('conversation') ? 2 : 1; const scope = typeLower.includes('conversation') ? 2 : 1;

View File

@@ -480,7 +480,8 @@ function setupMonitor() {
description: `Step #${actualIndex} (${(oStep.type || '').replace('CORTEX_STEP_TYPE_', '')})`, description: `Step #${actualIndex} (${(oStep.type || '').replace('CORTEX_STEP_TYPE_', '')})`,
step_type: ['view_file', 'list_dir', 'find_by_name', 'read_file', 'grep_search'].includes(toolName) ? 'file_permission' step_type: ['view_file', 'list_dir', 'find_by_name', 'read_file', 'grep_search'].includes(toolName) ? 'file_permission'
: ['write_to_file', 'replace_file_content', 'multi_replace_file_content'].includes(toolName) ? 'code_edit' : ['write_to_file', 'replace_file_content', 'multi_replace_file_content'].includes(toolName) ? 'code_edit'
: toolName, : ['browser_subagent', 'open_browser_url'].includes(toolName) ? 'browser_subagent'
: toolName,
step_index: actualIndex, step_index: actualIndex,
source: 'step_probe_offset', source: 'step_probe_offset',
}); });
@@ -546,7 +547,8 @@ function setupMonitor() {
description, description,
step_type: ['view_file', 'list_dir', 'find_by_name', 'read_file', 'grep_search'].includes(toolName) ? 'file_permission' step_type: ['view_file', 'list_dir', 'find_by_name', 'read_file', 'grep_search'].includes(toolName) ? 'file_permission'
: ['write_to_file', 'replace_file_content', 'multi_replace_file_content'].includes(toolName) ? 'code_edit' : ['write_to_file', 'replace_file_content', 'multi_replace_file_content'].includes(toolName) ? 'code_edit'
: toolName, : ['browser_subagent', 'open_browser_url'].includes(toolName) ? 'browser_subagent'
: toolName,
step_index: si, step_index: si,
source: 'step_probe', source: 'step_probe',
}); });