From edd4943e2e057f66fe52ea598726bc0651da86b2 Mon Sep 17 00:00:00 2001 From: Variet Worker Date: Tue, 17 Mar 2026 08:21:43 +0900 Subject: [PATCH] =?UTF-8?q?chore(extension):=20ws=20=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=EB=B2=88=EB=93=A4=20+=20E2E=20=EC=82=AC=EC=A0=84=20=EA=B2=80?= =?UTF-8?q?=EC=A6=9D=20#task-396?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - extension/package.json: ws dependency 추가 - extension/.vscodeignore: !node_modules/ws/** 추가 (VSIX 번들) - known-issues: NPM WS 프록시 + ws 모듈 미번들 이슈 추가 - devlog: #010 완료, #011 E2E 사전 검증 (미완료) --- .agents/references/known-issues.md | 12 ++++++++++++ docs/devlog/2026-03-17.md | 10 +++++++++- extension/.vscodeignore | 1 + extension/package-lock.json | 28 ++++++++++++++++++++++++++-- extension/package.json | 5 ++++- 5 files changed, 52 insertions(+), 4 deletions(-) diff --git a/.agents/references/known-issues.md b/.agents/references/known-issues.md index dc627fb..2ef0fc8 100644 --- a/.agents/references/known-issues.md +++ b/.agents/references/known-issues.md @@ -633,3 +633,15 @@ - **원인**: Extension의 diff_review 감지 로직이 write_to_file/replace_file_content로 수정된 **모든** 파일을 추적. brain/ 경로의 task.md, implementation_plan.md 등 AG 내부 artifact도 포함됨 - **해결**: `extension.ts` diff_review 감지 시 `.gemini/antigravity/brain/` 경로 파일을 필터링하여 제외. 코드 파일만 남으면 diff_review 생성, brain artifact만이면 skip - **주의**: 코드 파일 + brain artifact가 혼합된 경우에는 코드 파일에 대해서만 diff_review 생성 + +### [2026-03-17] NPM WebSocket 프록시 — Upgrade 헤더 미전달 +- **증상**: `wss://ag.variet.net/ws` 연결 시 HTTP 400 `No WebSocket UPGRADE hdr: None` +- **원인**: Nginx Proxy Manager(openresty) 프록시 호스트에 WebSocket Support 미활성화 → `Upgrade` 헤더가 백엔드(aiohttp)로 전달되지 않음 +- **해결**: NPM 대시보드 → Proxy Hosts → `ag.variet.net` → Edit → **Websockets Support** 체크 → Save +- **주의**: NPM은 WebSocket 토글을 켜야 `proxy_set_header Upgrade $http_upgrade` + `proxy_set_header Connection $connection_upgrade`가 자동 추가됨. 새 프록시 호스트 생성 시 반드시 확인 + +### [2026-03-17] Extension ws 모듈 미번들 — WS 연결 실패 가능 +- **증상**: Extension WS 연결 시도 시 `[WS] WebSocket module not available` → 파일 fallback만 동작 +- **원인**: `ws` npm 패키지가 `.vscodeignore`의 `node_modules/**`에 의해 VSIX에서 제외됨. AG Electron에 `ws` 미포함. `globalThis.WebSocket`은 Node.js 22+에서만 사용 가능 +- **해결**: (1) `.vscodeignore`에 `!node_modules/ws/**` 추가하여 VSIX에 ws 번들, (2) 설치 후 수동으로 `node_modules/ws/`를 설치 경로에 복사 +- **주의**: `package.json`에 `ws` dependency 추가 후 `npx vsce package` 시에도 `.vscodeignore`의 `!node_modules/ws/**` 없으면 번들 안 됨. `--no-dependencies` 플래그와 무관 diff --git a/docs/devlog/2026-03-17.md b/docs/devlog/2026-03-17.md index cb3d0fb..d74d10c 100644 --- a/docs/devlog/2026-03-17.md +++ b/docs/devlog/2026-03-17.md @@ -3,7 +3,8 @@ | # | 시간 | 작업 | 커밋 | 상태 | |---|------|------|------|------| | 009 | 00:00~06:38 | Extension 모듈 분리 + Hub 통합 테스트 + VSIX v0.4.0 빌드 | `5f795b9` | ✅ | -| 010 | 06:50~07:39 | 문서 전면 재작성 + 서버 배포 + WS 호환 수정 | `b9b240d` | 🔧 | +| 010 | 06:50~07:39 | 문서 전면 재작성 + 서버 배포 + WS 호환 수정 | `6ea3211` | ✅ | +| 011 | 07:44~08:18 | VSIX v0.4.0 E2E 사전 검증 + WS 프록시 수정 | — | 🔧 | ### #010 상세 - **문서**: architecture.md(250줄), tech-stack.md(100줄), conventions.md(100줄) 전면 재작성 + Wiki 동기화 @@ -12,3 +13,10 @@ - **WS 호환**: ws-client.ts 브라우저 WebSocket API 호환 (.onopen/.onmessage) 수정 - **Known issue**: VS Code 캐시로 Extension 코드 반영 지연 — 완전 재시작 필요 +### #011 상세 +- **WS 프록시 수정**: NPM(openresty)에서 WebSocket Support 활성화 → 101 Switching Protocols 확인 +- **WS 인증 검증**: `wss://ag.variet.net/ws` → auth_ok, conn_id 발급, instance=#1 확인 +- **VSIX 설치**: v0.4.0 설치 확인, v0.3.16 제거, ws 모듈 수동 복사 +- **AG 설정**: `settings.json`에 hubUrl + registrationCode 설정 +- **ws 번들**: `.vscodeignore`에 `!node_modules/ws/**` 추가, `package.json`에 ws dependency +- **미완료**: AG 재시작 후 Extension→Hub→Bot→Discord 실제 E2E 검증 필요 diff --git a/extension/.vscodeignore b/extension/.vscodeignore index 759cf76..08a199a 100644 --- a/extension/.vscodeignore +++ b/extension/.vscodeignore @@ -1,5 +1,6 @@ src/** node_modules/** +!node_modules/ws/** *.ts !out/** tsconfig.json diff --git a/extension/package-lock.json b/extension/package-lock.json index dd525fb..4e5ef76 100644 --- a/extension/package-lock.json +++ b/extension/package-lock.json @@ -1,12 +1,15 @@ { "name": "gravity-bridge", - "version": "0.3.8", + "version": "0.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "gravity-bridge", - "version": "0.3.8", + "version": "0.4.0", + "dependencies": { + "ws": "^8.19.0" + }, "devDependencies": { "@types/node": "^20.0.0", "@types/vscode": "^1.100.0", @@ -53,6 +56,27 @@ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" + }, + "node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } } } } diff --git a/extension/package.json b/extension/package.json index acc3f71..9577808 100644 --- a/extension/package.json +++ b/extension/package.json @@ -81,5 +81,8 @@ } } } + }, + "dependencies": { + "ws": "^8.19.0" } -} \ No newline at end of file +}