From f5705232b3f9b7bda0d954e56aeb63246f96cb4e Mon Sep 17 00:00:00 2001 From: Variet Main Worker Date: Sat, 7 Mar 2026 09:57:08 +0000 Subject: [PATCH] Add "Architecture" --- Architecture.md | 93 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 Architecture.md diff --git a/Architecture.md b/Architecture.md new file mode 100644 index 0000000..3227388 --- /dev/null +++ b/Architecture.md @@ -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 폰트 +- 세션 카드별 연결 상태 인디케이터 (색상 + 애니메이션) +- 글래스모피즘 모달 +- 자동 스크롤, 자동 높이 조절 입력창