refactor(extension): 모듈 분리 + Hub 통합 테스트 #task-395

- extension.ts 3,446→1,289줄 (-63%)
- step-probe.ts (1,435줄): setupMonitor, processResponseFile, tryApprovalStrategies
- observer-script.ts (687줄): DOM observer script
- ws-client.ts (390줄): WSBridgeClient
- step-utils.ts (114줄): step 파싱 유틸
- auth.py (115줄): JWT + registration code
- hub.py (581줄): WSHub + per-client queue
- Hub WS 연동 테스트 통과 (auth, chat, register)
- VSIX v0.4.0 빌드
This commit is contained in:
Variet Worker
2026-03-17 06:41:42 +09:00
parent a372bd8b2d
commit 5f795b9a91
19 changed files with 5426 additions and 5538 deletions

View File

@@ -1,35 +1,59 @@
# Architecture
> 이 프로젝트의 아키텍처를 설명하는 문서입니다.
> AI 에이전트는 구현 전 이 문서를 반드시 확인합니다.
## 프로젝트 개요
<!-- 프로젝트의 목적과 핵심 기능을 간략히 서술 -->
(프로젝트 설명을 여기에 작성하세요)
Antigravity AI 코딩 에이전트의 Discord 연동 시스템.
- AG Extension ↔ WebSocket Hub ↔ Discord Bot (실시간)
- AG Extension ↔ 파일 bridge ↔ Collector ↔ Gateway ↔ Discord Bot (레거시)
## 디렉토리 구조
```
project-root/
├── src/ # 소스 코드
├── tests/ # 테스트
├── docs/ # 문서
├── .agents/ # AI 에이전트 설정
── ...
gravity_control/
├── auth.py # JWT 토큰 관리
├── hub.py # WebSocket Hub (메시지 라우팅, 인스턴스 관리)
├── bot.py # Discord 봇 (승인 UI, 채널 관리, Hub 핸들러)
├── gateway.py # HTTP REST + /ws endpoint
── bridge.py # 파일 기반 IPC (레거시)
├── collector.py # 원격 파일→HTTP 릴레이 (Phase 2 삭제 예정)
├── watcher.py # Brain 디렉토리 변경 감시
├── config.py # 환경변수 설정
├── main.py # 진입점 (Bot + Hub + Watcher 시작)
├── parser.py # Markdown→Discord 파서
├── extension/src/
│ ├── extension.ts # 메인 Extension (3,300줄, 점진적 모듈화 진행)
│ ├── ws-client.ts # WSBridgeClient (Hub 연결, 재연결, 메시지 큐)
│ └── sdk/ # Antigravity SDK (로컬 임베드)
└── .agents/references/ # AI 에이전트 레퍼런스 문서
```
## 핵심 모듈
<!-- 각 모듈의 역할과 의존 관계를 설명 -->
| 모듈 | 역할 | 의존성 |
|------|------|--------|
| (모듈명) | (역할 설명) | (의존하는 모듈) |
| hub.py | WS 연결 관리, 메시지 라우팅, 인스턴스 번호 | auth.py |
| auth.py | JWT 토큰 생성/검증, registration code | - |
| bot.py | Discord UI, 승인 처리, 채팅 릴레이 | hub.py, bridge.py, parser.py |
| gateway.py | HTTP REST API + /ws endpoint | hub.py |
| ws-client.ts | Extension→Hub WS 클라이언트 | - |
| extension.ts | AG SDK 연동, step 감시, DOM observer | ws-client.ts, sdk/ |
## 데이터 흐름
<!-- 주요 데이터 흐름을 Mermaid 다이어그램이나 텍스트로 설명 -->
(데이터 흐름을 여기에 작성하세요)
```
[Extension]
┌────┴────┐
│ WS Hub │ ← 실시간 (preferred)
│ (ws-client.ts → hub.py)
└────┬────┘
│ ┌─────────────┐
├───────────────────→│ Discord Bot │→ Discord
│ └─────────────┘
┌────┴────┐
│파일 bridge│ ← 레거시 fallback
│(Collector → Gateway)
└─────────┘
```

View File

@@ -42,5 +42,8 @@
| DISCORD_TOKEN | Discord 봇 토큰 | (필수) |
| DISCORD_GUILD_ID | Discord 서버 ID | (필수) |
| BRAIN_PATH | AG 브레인 경로 | `~/.gemini/antigravity/brain` |
| BOT_MODE | 봇 모드 (local/remote) | `local` |
| BOT_MODE | 봇 모드 (local/remote/gateway) | `local` |
| REMOTE_BRIDGE_URL | 원격 브릿지 URL | (remote 모드 전용) |
| GATEWAY_API_KEY | Gateway REST API 인증 키 | (gateway 모드) |
| GRAVITY_HUB_SECRET | WS Hub JWT 서명 시크릿 | (자동생성 가능) |
| GRAVITY_REGISTRATION_CODE | Extension 등록 코드 | (미설정 시 인증 생략) |