<!-- task=typescript_impl plan=2 tag=REVIEW_API -->

# ws 런타임 의존성 위치 수정

## 이 파일을 읽는 구현 에이전트에게

체크리스트를 완료하고 중간 검증 명령을 실행한 후, 출력을 `CODE_REVIEW.md`의 `검증 결과` 섹션에 붙여넣어라. 계획과 다르게 구현한 부분은 `계획 대비 변경 사항`에 이유와 함께 기록하라.

---

## 배경

1차 리뷰(plan=0)에서 `ws` 패키지가 `devDependencies`에 잘못 배치된 것이 확인됐다. `ws_client.ts`와 `ws_server.ts`가 런타임에 `ws`를 import하므로 `dependencies`로 이동해야 한다. 현재 `typescript/package.json:21`에 `ws`가 `devDependencies`에 위치한다.

---

### [REVIEW_API-1] ws를 devDependencies → dependencies로 이동

#### 문제

`typescript/package.json` (line 21):
```json
"devDependencies": {
  ...
  "ws": "^8.18.1"   ← 런타임 import에 쓰이는 패키지가 devDependencies에 있음
}
```

`typescript/src/ws_client.ts:1`:
```typescript
import WebSocket, { type RawData } from "ws";
```

`typescript/src/ws_server.ts:2`:
```typescript
import WebSocket, { WebSocketServer } from "ws";
```

두 파일 모두 런타임에 `ws`를 import한다. `npm install --omit=dev`로 설치하면 `ws`가 설치되지 않아 실행 시 모듈 not found 오류가 발생한다.

#### 해결 방법

`ws`를 `devDependencies`에서 제거하고 `dependencies`에 추가한다.

```json
// 수정 전 (typescript/package.json)
{
  "dependencies": {
    "@bufbuild/protobuf": "^2.2.5"
  },
  "devDependencies": {
    "@bufbuild/protoc-gen-es": "^2.2.5",
    "@types/node": "^22.15.21",
    "@types/ws": "^8.18.1",
    "tsx": "^4.19.3",
    "typescript": "^5.8.3",
    "vitest": "^3.1.3",
    "ws": "^8.18.1"
  }
}

// 수정 후 (typescript/package.json)
{
  "dependencies": {
    "@bufbuild/protobuf": "^2.2.5",
    "ws": "^8.18.1"
  },
  "devDependencies": {
    "@bufbuild/protoc-gen-es": "^2.2.5",
    "@types/node": "^22.15.21",
    "@types/ws": "^8.18.1",
    "tsx": "^4.19.3",
    "typescript": "^5.8.3",
    "vitest": "^3.1.3"
  }
}
```

수정 후 `npm install`로 `package-lock.json`을 갱신한다.

#### 수정 파일 및 체크리스트

- [ ] `typescript/package.json`: `ws`를 `devDependencies`에서 제거, `dependencies`에 추가
- [ ] `npm install` 실행 → `typescript/package-lock.json` 갱신됨

#### 테스트 작성

스킵. `test/ws.test.ts`의 2개 테스트가 `ws` 런타임 동작을 이미 검증하며, 의존성 위치 변경은 동작에 영향을 주지 않는다.

#### 중간 검증

```bash
cd typescript && npm install && npx tsc --noEmit && npx vitest run
```

기대 결과: 타입 오류 없음, 16개 테스트 PASS.

---

## 수정 파일 요약

| 파일 | 항목 |
|------|------|
| `typescript/package.json` | REVIEW_API-1 |
| `typescript/package-lock.json` | REVIEW_API-1 |

---

## 최종 검증

```bash
cd typescript && npm install && npx tsc --noEmit && npx vitest run
```

기대 결과: 타입 오류 없음, 16개 테스트 PASS.
