Add "Architecture"
93
Architecture.md
Normal file
93
Architecture.md
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
# Architecture
|
||||||
|
|
||||||
|
## 시스템 아키텍처
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────┐ HTTP/WS ┌──────────────────┐ CDP ┌──────────────┐
|
||||||
|
│ 웹 브라우저 │ ◄──────────────► │ Gravity Web │ ◄───────► │ Antigravity │
|
||||||
|
│ (localhost:3300)│ │ Server (Node.js) │ :9000 │ IDE │
|
||||||
|
└─────────────────┘ └──────────────────┘ └──────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
## 서버 구성
|
||||||
|
|
||||||
|
### 파일 구조
|
||||||
|
|
||||||
|
```
|
||||||
|
server/
|
||||||
|
├── index.js # Express + WebSocket 서버 (port 3300)
|
||||||
|
├── cdp-client.js # CDP 연결, DOM 스크래핑, 메시지 전송
|
||||||
|
├── session-manager.js # 다중 세션 CRUD + 연결 관리
|
||||||
|
└── package.json
|
||||||
|
```
|
||||||
|
|
||||||
|
### REST API
|
||||||
|
|
||||||
|
| Method | Endpoint | 설명 |
|
||||||
|
|--------|----------|------|
|
||||||
|
| GET | /api/sessions | 세션 목록 |
|
||||||
|
| POST | /api/sessions | 세션 등록 {name, host, cdpPort} |
|
||||||
|
| DELETE | /api/sessions/:id | 세션 제거 |
|
||||||
|
| POST | /api/sessions/:id/reconnect | 재연결 |
|
||||||
|
| GET | /api/health | 서버 상태 |
|
||||||
|
|
||||||
|
### WebSocket (/ws)
|
||||||
|
|
||||||
|
```json
|
||||||
|
// 서버 → 클라이언트: 채팅 업데이트
|
||||||
|
{"type": "chat_update", "sessionId": "s1", "html": "..."}
|
||||||
|
|
||||||
|
// 클라이언트 → 서버: 메시지 전송
|
||||||
|
{"type": "send_message", "sessionId": "s1", "text": "..."}
|
||||||
|
|
||||||
|
// 클라이언트 → 서버: 세션 전환
|
||||||
|
{"type": "switch_session", "sessionId": "s2"}
|
||||||
|
```
|
||||||
|
|
||||||
|
## CDP 분석 결과
|
||||||
|
|
||||||
|
### Antigravity IDE 구조
|
||||||
|
|
||||||
|
- **플랫폼**: Electron 기반 (Chrome/145.0.7632.160)
|
||||||
|
- **실행 파일**: `C:\Users\Certes\AppData\Local\Programs\Antigravity\Antigravity.exe`
|
||||||
|
- **CLI 래퍼**: `antigravity.cmd` — `ELECTRON_RUN_AS_NODE=1` 설정 후 `cli.js` 실행 (CDP 미동작)
|
||||||
|
|
||||||
|
### CDP 연결 조건 (검증 결과)
|
||||||
|
|
||||||
|
| 실행 방법 | CDP 동작 | 이유 |
|
||||||
|
|-----------|---------|------|
|
||||||
|
| `antigravity .` | ❌ | ELECTRON_RUN_AS_NODE=1 → Node 모드, Electron 렌더러 없음 |
|
||||||
|
| `antigravity . --remote-debugging-port=9000` | ❌ | 위와 동일 |
|
||||||
|
| `Antigravity.exe --remote-debugging-port=9000` (단독) | ⚠️ 미검증 | 기존 인스턴스 없이 실행 필요 |
|
||||||
|
| `Antigravity.exe --remote-debugging-port=9000` (기존 인스턴스 존재) | ❌ | 기존 메인 프로세스에 합류 |
|
||||||
|
|
||||||
|
### 발견된 포트 현황
|
||||||
|
|
||||||
|
- **9222**: Chrome 브라우저의 기본 디버깅 포트 (Antigravity가 아닌 Chrome 자체)
|
||||||
|
- **9000**: Antigravity.exe에 전달했으나 열리지 않음
|
||||||
|
- **8000, 8080**: 기존 서비스용 포트 (CDP 아님)
|
||||||
|
|
||||||
|
### 다음 단계
|
||||||
|
|
||||||
|
1. **모든 Antigravity 종료 후** `Antigravity.exe --remote-debugging-port=9000` 실행하여 CDP 포트 열림 확인
|
||||||
|
2. 열리면 `chrome://inspect`에서 DOM 구조 확인
|
||||||
|
3. 채팅 컨테이너 CSS 셀렉터를 `cdp-client.js`에 반영
|
||||||
|
|
||||||
|
## 프론트엔드 구성
|
||||||
|
|
||||||
|
```
|
||||||
|
public/
|
||||||
|
├── index.html # SPA 메인 페이지
|
||||||
|
├── css/style.css # 다크 스페이스 테마 디자인 시스템
|
||||||
|
└── js/
|
||||||
|
├── app.js # WebSocket + 이벤트 라우팅
|
||||||
|
├── session-panel.js # 세션 목록 UI
|
||||||
|
└── chat-panel.js # 채팅 표시/입력 UI
|
||||||
|
```
|
||||||
|
|
||||||
|
### 디자인 특징
|
||||||
|
- 딥 스페이스 다크 테마 (--bg-primary: #0a0e1a)
|
||||||
|
- Inter + JetBrains Mono 폰트
|
||||||
|
- 세션 카드별 연결 상태 인디케이터 (색상 + 애니메이션)
|
||||||
|
- 글래스모피즘 모달
|
||||||
|
- 자동 스크롤, 자동 높이 조절 입력창
|
||||||
Reference in New Issue
Block a user