mcp-baepsae 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README-KR.md +191 -0
- package/README.md +228 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +815 -0
- package/dist/index.js.map +1 -0
- package/native/Package.swift +16 -0
- package/native/Sources/main.swift +1829 -0
- package/package.json +64 -0
- package/scripts/build-sample-app.sh +32 -0
- package/scripts/install.sh +823 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Jay Choi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README-KR.md
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# mcp-baepsae
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="assets/baepsae.png" width="300" alt="baepsae">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
> **뱁새** (붉은머리오목눈이) — 한국의 작은 새. 동글동글 통통한 몸에 삐약삐약 부지런히 돌아다니는 모습이 특징입니다. 황새를 따라가다 가랑이가 찢어질 뻔해도 포기하지 않는 근성의 아이콘. 이 프로젝트도 작지만 부지런히 시뮬레이터를 쪼아댑니다.
|
|
8
|
+
|
|
9
|
+
TypeScript MCP 레이어와 Swift 네이티브 브리지를 사용하는 iOS 시뮬레이터 및 macOS 앱 자동화용 로컬 MCP 서버입니다.
|
|
10
|
+
|
|
11
|
+
영문 문서는 `README.md`를 참고하세요.
|
|
12
|
+
|
|
13
|
+
## 목차
|
|
14
|
+
|
|
15
|
+
- [사전 요구 사항](#사전-요구-사항)
|
|
16
|
+
- [설치](#설치)
|
|
17
|
+
- [MCP 설정 (권장)](#mcp-설정-권장)
|
|
18
|
+
- [클라이언트 매트릭스](#클라이언트-매트릭스)
|
|
19
|
+
- [For LLM](#for-llm)
|
|
20
|
+
- [수동 설정 (대안)](#수동-설정-대안)
|
|
21
|
+
- [프로젝트 구조](#프로젝트-구조)
|
|
22
|
+
- [명령어](#명령어)
|
|
23
|
+
- [MCP 도구 구현 상태](#mcp-도구-구현-상태)
|
|
24
|
+
- [트러블슈팅](#트러블슈팅)
|
|
25
|
+
|
|
26
|
+
## 사전 요구 사항
|
|
27
|
+
|
|
28
|
+
- macOS 14+
|
|
29
|
+
- Xcode + iOS Simulator
|
|
30
|
+
- Node.js 18+
|
|
31
|
+
- Swift 6+
|
|
32
|
+
|
|
33
|
+
## 설치
|
|
34
|
+
|
|
35
|
+
### 옵션 A) 로컬 저장소 빌드 사용 (권장)
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
git clone <your-repo-url>
|
|
39
|
+
cd mcp-baepsae
|
|
40
|
+
npm install
|
|
41
|
+
npm run build
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 옵션 B) 전역 CLI 설치
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm install -g .
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## MCP 설정 (권장)
|
|
51
|
+
|
|
52
|
+
`scripts/install.sh`를 사용하면 각 AI 클라이언트의 MCP 설치 절차를 직접 호출합니다.
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
bash scripts/install.sh --tool all
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## 클라이언트 매트릭스
|
|
59
|
+
|
|
60
|
+
| 클라이언트 | 설치 경로 | 스크립트 타깃 | 비고 |
|
|
61
|
+
|---|---|---|---|
|
|
62
|
+
| Claude Code | `claude mcp add` | `--tool claude-code` | `--claude-scope`로 다중 scope 지원 |
|
|
63
|
+
| Claude Desktop | `claude mcp add --scope user` | `--tool claude-desktop` | 사용자 전역 등록 |
|
|
64
|
+
| Codex CLI | `codex mcp add` | `--tool codex-cli` | Codex Desktop도 동일 설정 사용 |
|
|
65
|
+
| Codex Desktop | Codex CLI MCP 설정 공유 | `--tool codex-desktop` | CLI와 동일 레지스트리 |
|
|
66
|
+
| OpenCode | 전역 설정(`~/.config/opencode/opencode.json`) | `--tool opencode` | 설치 스크립트가 자동 갱신 |
|
|
67
|
+
| Gemini | `gemini mcp add` | `--tool gemini` | user scope 설치 |
|
|
68
|
+
| Google Antigravity | Gemini 호환 MCP 흐름 | `--tool antigravity` | Gemini MCP 명령 경로 사용 |
|
|
69
|
+
| GitHub Copilot | `copilot` 또는 `gh copilot` 세션 | `--tool copilot` | interactive/session 기반 |
|
|
70
|
+
|
|
71
|
+
## For LLM
|
|
72
|
+
|
|
73
|
+
LLM 에이전트가 이 저장소를 설치부터 설정까지 자동으로 구성할 때:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
bash scripts/install.sh --tool all
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
자동화에 유용한 옵션:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# 실제 실행 없이 명령만 출력
|
|
83
|
+
bash scripts/install.sh --tool all --dry-run
|
|
84
|
+
|
|
85
|
+
# 환경/의존성 점검만 수행
|
|
86
|
+
bash scripts/install.sh --tool all --doctor
|
|
87
|
+
|
|
88
|
+
# MCP 등록 제거
|
|
89
|
+
bash scripts/install.sh --tool all --uninstall
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## 수동 설정 (대안)
|
|
93
|
+
|
|
94
|
+
`scripts/install.sh`를 사용하지 않을 때:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Claude Code (project)
|
|
98
|
+
claude mcp add --scope project --env="BAEPSAE_NATIVE_PATH=/ABS/PATH/native/.build/release/baepsae-native" baepsae -- node /ABS/PATH/dist/index.js
|
|
99
|
+
|
|
100
|
+
# Codex CLI
|
|
101
|
+
codex mcp add baepsae --env BAEPSAE_NATIVE_PATH=/ABS/PATH/native/.build/release/baepsae-native -- node /ABS/PATH/dist/index.js
|
|
102
|
+
|
|
103
|
+
# Gemini CLI
|
|
104
|
+
gemini mcp add --scope user --transport stdio -e BAEPSAE_NATIVE_PATH=/ABS/PATH/native/.build/release/baepsae-native baepsae node /ABS/PATH/dist/index.js
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## 프로젝트 구조
|
|
108
|
+
|
|
109
|
+
- MCP 서버: `src/index.ts`
|
|
110
|
+
- 네이티브 바이너리 프로젝트: `native/`
|
|
111
|
+
- 네이티브 바이너리 출력: `native/.build/release/baepsae-native`
|
|
112
|
+
- 테스트: `tests/mcp.contract.test.mjs`, `tests/mcp.real.test.mjs`
|
|
113
|
+
|
|
114
|
+
## 명령어
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
npm run build # TypeScript + Swift 네이티브 빌드
|
|
118
|
+
npm test # 계약/통합 테스트
|
|
119
|
+
npm run test:real # 실제 시뮬레이터 스모크 테스트 (부팅된 시뮬레이터 필요)
|
|
120
|
+
npm run verify # test + test:real
|
|
121
|
+
npm run setup:mcp # scripts/install.sh 실행 alias
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## MCP 도구 구현 상태
|
|
125
|
+
|
|
126
|
+
총 32개 도구가 end-to-end 구현 완료되었습니다.
|
|
127
|
+
|
|
128
|
+
### iOS 시뮬레이터 전용 (11개)
|
|
129
|
+
|
|
130
|
+
| 도구 | 설명 |
|
|
131
|
+
|---|---|
|
|
132
|
+
| `list_simulators` | iOS 시뮬레이터 목록 조회 |
|
|
133
|
+
| `screenshot` | 시뮬레이터 스크린샷 캡처 |
|
|
134
|
+
| `record_video` | 시뮬레이터 화면 녹화 |
|
|
135
|
+
| `stream_video` | 비디오 프레임 스트리밍 |
|
|
136
|
+
| `open_url` | 시뮬레이터에서 URL 열기 (Safari/딥링크) |
|
|
137
|
+
| `install_app` | .app/.ipa 설치 |
|
|
138
|
+
| `launch_app` | Bundle ID로 앱 실행 |
|
|
139
|
+
| `terminate_app` | 실행 중인 앱 종료 |
|
|
140
|
+
| `uninstall_app` | 앱 제거 |
|
|
141
|
+
| `button` | 하드웨어 버튼 (home/lock/side/siri/apple-pay) |
|
|
142
|
+
| `gesture` | 프리셋 제스처 (scroll/swipe-edge) |
|
|
143
|
+
|
|
144
|
+
### macOS 전용 (4개)
|
|
145
|
+
|
|
146
|
+
| 도구 | 설명 |
|
|
147
|
+
|---|---|
|
|
148
|
+
| `list_apps` | 실행 중인 macOS 앱 목록 조회 |
|
|
149
|
+
| `scroll` | 스크롤 휠 이벤트 |
|
|
150
|
+
| `menu_action` | 메뉴 바 액션 실행 |
|
|
151
|
+
| `get_focused_app` | 포커스된 앱 정보 조회 |
|
|
152
|
+
|
|
153
|
+
### 공통 — iOS 시뮬레이터 + macOS (15개)
|
|
154
|
+
|
|
155
|
+
| 도구 | 설명 |
|
|
156
|
+
|---|---|
|
|
157
|
+
| `describe_ui` | 접근성 트리 조회 (페이지네이션, 필터, 서브트리, 요약 지원) |
|
|
158
|
+
| `search_ui` | UI 요소 검색 (텍스트/ID/라벨) |
|
|
159
|
+
| `tap` | 좌표 또는 ID/라벨로 탭 (더블클릭 지원) |
|
|
160
|
+
| `type_text` | 텍스트 입력 |
|
|
161
|
+
| `swipe` | 스와이프 제스처 |
|
|
162
|
+
| `key` | HID 키코드 입력 |
|
|
163
|
+
| `key_sequence` | 연속 키코드 입력 |
|
|
164
|
+
| `key_combo` | 수정키 + 키 조합 |
|
|
165
|
+
| `touch` | 터치 다운/업 이벤트 |
|
|
166
|
+
| `right_click` | 우클릭 (ID/라벨 또는 좌표) |
|
|
167
|
+
| `drag_drop` | 드래그 앤 드롭 |
|
|
168
|
+
| `clipboard` | 클립보드 읽기/쓰기 |
|
|
169
|
+
| `list_windows` | 앱 윈도우 목록 |
|
|
170
|
+
| `activate_app` | 앱을 포그라운드로 전환 |
|
|
171
|
+
| `screenshot_app` | 앱 윈도우 스크린샷 |
|
|
172
|
+
|
|
173
|
+
### 유틸리티 (2개)
|
|
174
|
+
|
|
175
|
+
| 도구 | 설명 |
|
|
176
|
+
|---|---|
|
|
177
|
+
| `baepsae_help` | 도움말 표시 |
|
|
178
|
+
| `baepsae_version` | 버전 정보 표시 |
|
|
179
|
+
|
|
180
|
+
## 트러블슈팅
|
|
181
|
+
|
|
182
|
+
- Claude 설정 중 `Invalid environment variable format` 오류:
|
|
183
|
+
- 최신 `scripts/install.sh`를 사용하거나 `--env="KEY=value"` 형식을 사용하세요.
|
|
184
|
+
- `Missing native binary` 오류:
|
|
185
|
+
- `npm run build` 실행 후 `native/.build/release/baepsae-native` 파일 존재 여부를 확인하세요.
|
|
186
|
+
- OpenCode에서 `baepsae`가 보이지 않는 경우:
|
|
187
|
+
- `bash scripts/install.sh --tool opencode --skip-install --skip-build`를 다시 실행하고 `~/.config/opencode/opencode.json`을 확인하세요.
|
|
188
|
+
- Copilot 자동 등록이 안 되는 경우:
|
|
189
|
+
- Copilot MCP 등록은 interactive/session 기반이므로 `--interactive` 옵션으로 다시 실행하세요.
|
|
190
|
+
- 실사용 스모크 테스트가 skip 되는 경우:
|
|
191
|
+
- iOS 시뮬레이터를 먼저 부팅한 뒤 `npm run test:real`을 실행하세요.
|
package/README.md
ADDED
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# mcp-baepsae
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="assets/baepsae.png" width="300" alt="baepsae">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
> **Baepsae** (Vinous-throated Parrotbill) — A tiny Korean bird. Round, chubby, and constantly hopping around chirping. Known for its grit — even when a little bird tries to keep up with a stork, it never gives up. This project is small too, but it pecks away at your simulators tirelessly.
|
|
8
|
+
|
|
9
|
+
Local MCP server for iOS Simulator and macOS app automation with a TypeScript MCP layer and a Swift native bridge.
|
|
10
|
+
|
|
11
|
+
한국어 문서는 `README-KR.md`를 참고하세요.
|
|
12
|
+
|
|
13
|
+
## Table of Contents
|
|
14
|
+
|
|
15
|
+
- [Prerequisites](#prerequisites)
|
|
16
|
+
- [Install](#install)
|
|
17
|
+
- [MCP Setup (Recommended)](#mcp-setup-recommended)
|
|
18
|
+
- [Client Matrix](#client-matrix)
|
|
19
|
+
- [For LLM](#for-llm)
|
|
20
|
+
- [Manual Setup (Fallback)](#manual-setup-fallback)
|
|
21
|
+
- [Project Structure](#project-structure)
|
|
22
|
+
- [Commands](#commands)
|
|
23
|
+
- [MCP Tool Status](#mcp-tool-status)
|
|
24
|
+
- [Troubleshooting](#troubleshooting)
|
|
25
|
+
|
|
26
|
+
## Prerequisites
|
|
27
|
+
|
|
28
|
+
- macOS 14+
|
|
29
|
+
- Xcode + iOS Simulator
|
|
30
|
+
- Node.js 18+
|
|
31
|
+
- Swift 6+
|
|
32
|
+
|
|
33
|
+
## Permissions
|
|
34
|
+
|
|
35
|
+
**Accessibility permission is required** for UI automation features (`describe_ui`, `tap` by ID).
|
|
36
|
+
|
|
37
|
+
1. Open **System Settings** > **Privacy & Security** > **Accessibility**.
|
|
38
|
+
2. Enable your terminal (Terminal, iTerm2, VSCode) or command runner (`node`, `openclaw`).
|
|
39
|
+
3. If the app is missing, click `+` and add it manually.
|
|
40
|
+
|
|
41
|
+
## Install
|
|
42
|
+
|
|
43
|
+
### Option A) Local repository build (recommended)
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
git clone <your-repo-url>
|
|
47
|
+
cd mcp-baepsae
|
|
48
|
+
npm install
|
|
49
|
+
npm run build
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Option B) Global CLI install
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npm install -g .
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## MCP Setup (Recommended)
|
|
59
|
+
|
|
60
|
+
Use the installer script that calls each client's MCP install flow directly.
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
bash scripts/install.sh --tool all
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Client Matrix
|
|
67
|
+
|
|
68
|
+
| Client | Install Path | Script Target | Notes |
|
|
69
|
+
|---|---|---|---|
|
|
70
|
+
| Claude Code | `claude mcp add` | `--tool claude-code` | Supports multi-scope via `--claude-scope` |
|
|
71
|
+
| Claude Desktop | `claude mcp add --scope user` | `--tool claude-desktop` | User-level registration |
|
|
72
|
+
| Codex CLI | `codex mcp add` | `--tool codex-cli` | Also works for Codex Desktop settings |
|
|
73
|
+
| Codex Desktop | Codex CLI MCP config | `--tool codex-desktop` | Uses same MCP registry as CLI |
|
|
74
|
+
| OpenCode | Global config (`~/.config/opencode/opencode.json`) | `--tool opencode` | Auto-updated by installer |
|
|
75
|
+
| Gemini | `gemini mcp add` | `--tool gemini` | User scope setup |
|
|
76
|
+
| Google Antigravity | Gemini-compatible MCP flow | `--tool antigravity` | Uses Gemini MCP command path |
|
|
77
|
+
| GitHub Copilot | `copilot` or `gh copilot` session | `--tool copilot` | Interactive/session-based setup |
|
|
78
|
+
|
|
79
|
+
## For LLM
|
|
80
|
+
|
|
81
|
+
If an LLM agent is provisioning this repository end-to-end:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
bash scripts/install.sh --tool all
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Useful automation flags:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Dry run (print only)
|
|
91
|
+
bash scripts/install.sh --tool all --dry-run
|
|
92
|
+
|
|
93
|
+
# Health check only
|
|
94
|
+
bash scripts/install.sh --tool all --doctor
|
|
95
|
+
|
|
96
|
+
# Remove MCP registrations
|
|
97
|
+
bash scripts/install.sh --tool all --uninstall
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Manual Setup (Fallback)
|
|
101
|
+
|
|
102
|
+
Use this when you do not want to run `scripts/install.sh`.
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Claude Code (project)
|
|
106
|
+
claude mcp add --scope project --env="BAEPSAE_NATIVE_PATH=/ABS/PATH/native/.build/release/baepsae-native" baepsae -- node /ABS/PATH/dist/index.js
|
|
107
|
+
|
|
108
|
+
# Codex CLI
|
|
109
|
+
codex mcp add baepsae --env BAEPSAE_NATIVE_PATH=/ABS/PATH/native/.build/release/baepsae-native -- node /ABS/PATH/dist/index.js
|
|
110
|
+
|
|
111
|
+
# Gemini CLI
|
|
112
|
+
gemini mcp add --scope user --transport stdio -e BAEPSAE_NATIVE_PATH=/ABS/PATH/native/.build/release/baepsae-native baepsae node /ABS/PATH/dist/index.js
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Project Structure
|
|
116
|
+
|
|
117
|
+
- MCP server: `src/index.ts`
|
|
118
|
+
- Native binary project: `native/`
|
|
119
|
+
- Native binary output: `native/.build/release/baepsae-native`
|
|
120
|
+
- Tests: `tests/mcp.contract.test.mjs`, `tests/mcp.real.test.mjs`
|
|
121
|
+
|
|
122
|
+
## Commands
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
npm run build # Build TypeScript + native Swift binary
|
|
126
|
+
npm test # Contract/integration tests
|
|
127
|
+
npm run test:real # Real simulator smoke test (requires booted simulator)
|
|
128
|
+
npm run verify # test + test:real
|
|
129
|
+
npm run setup:mcp # Alias for scripts/install.sh
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## MCP Tool Status
|
|
133
|
+
|
|
134
|
+
32 tools implemented end-to-end, organized by platform:
|
|
135
|
+
|
|
136
|
+
### iOS Simulator Only (11)
|
|
137
|
+
|
|
138
|
+
| Tool | Description |
|
|
139
|
+
|---|---|
|
|
140
|
+
| `list_simulators` | List available iOS simulators |
|
|
141
|
+
| `screenshot` | Capture simulator screen |
|
|
142
|
+
| `record_video` | Record simulator screen |
|
|
143
|
+
| `stream_video` | Stream video frames |
|
|
144
|
+
| `open_url` | Open URL in simulator (Safari/Deep Link) |
|
|
145
|
+
| `install_app` | Install .app or .ipa |
|
|
146
|
+
| `launch_app` | Launch app by Bundle ID |
|
|
147
|
+
| `terminate_app` | Terminate running app |
|
|
148
|
+
| `uninstall_app` | Uninstall app |
|
|
149
|
+
| `button` | Hardware buttons (home, lock, side, siri, apple-pay) |
|
|
150
|
+
| `gesture` | Preset gestures (scroll, swipe-edge) |
|
|
151
|
+
|
|
152
|
+
### macOS Only (4)
|
|
153
|
+
|
|
154
|
+
| Tool | Description |
|
|
155
|
+
|---|---|
|
|
156
|
+
| `list_apps` | List running macOS apps |
|
|
157
|
+
| `scroll` | Scroll wheel events |
|
|
158
|
+
| `menu_action` | Execute menu bar actions |
|
|
159
|
+
| `get_focused_app` | Get focused app info |
|
|
160
|
+
|
|
161
|
+
### Cross-Platform — iOS Simulator + macOS (15)
|
|
162
|
+
|
|
163
|
+
| Tool | Description |
|
|
164
|
+
|---|---|
|
|
165
|
+
| `describe_ui` | Accessibility tree (pagination, filter, subtree, summary) |
|
|
166
|
+
| `search_ui` | Search UI elements by text/ID/label |
|
|
167
|
+
| `tap` | Tap by coordinates or element ID/label (supports double-click) |
|
|
168
|
+
| `type_text` | Type text input |
|
|
169
|
+
| `swipe` | Swipe gesture |
|
|
170
|
+
| `key` | HID keycode input |
|
|
171
|
+
| `key_sequence` | Sequential keycode input |
|
|
172
|
+
| `key_combo` | Modifier + key combination |
|
|
173
|
+
| `touch` | Touch down/up events |
|
|
174
|
+
| `right_click` | Right-click by ID/label or coordinates |
|
|
175
|
+
| `drag_drop` | Drag and drop |
|
|
176
|
+
| `clipboard` | Read/write clipboard |
|
|
177
|
+
| `list_windows` | List app windows |
|
|
178
|
+
| `activate_app` | Bring app to foreground |
|
|
179
|
+
| `screenshot_app` | Capture app window screenshot |
|
|
180
|
+
|
|
181
|
+
### Utility (2)
|
|
182
|
+
|
|
183
|
+
| Tool | Description |
|
|
184
|
+
|---|---|
|
|
185
|
+
| `baepsae_help` | Show help info |
|
|
186
|
+
| `baepsae_version` | Show version info |
|
|
187
|
+
|
|
188
|
+
## Usage Examples
|
|
189
|
+
|
|
190
|
+
**Open a URL (iOS Simulator):**
|
|
191
|
+
```javascript
|
|
192
|
+
// Open Naver Mobile
|
|
193
|
+
open_url({ udid: "...", url: "https://m.naver.com" })
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**Manage Apps (iOS Simulator):**
|
|
197
|
+
```javascript
|
|
198
|
+
// Install an app
|
|
199
|
+
install_app({ udid: "...", path: "/path/to/App.app" })
|
|
200
|
+
|
|
201
|
+
// Launch Safari
|
|
202
|
+
launch_app({ udid: "...", bundleId: "com.apple.mobilesafari" })
|
|
203
|
+
|
|
204
|
+
// Terminate Safari
|
|
205
|
+
terminate_app({ udid: "...", bundleId: "com.apple.mobilesafari" })
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**macOS App Automation:**
|
|
209
|
+
```javascript
|
|
210
|
+
// List running macOS apps
|
|
211
|
+
list_apps({})
|
|
212
|
+
|
|
213
|
+
// Take screenshot of a macOS app
|
|
214
|
+
screenshot_app({ bundleId: "com.apple.Safari" })
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## Troubleshooting
|
|
218
|
+
|
|
219
|
+
- `Invalid environment variable format` on Claude setup:
|
|
220
|
+
- Use current script (`scripts/install.sh`) or `claude mcp add --env="KEY=value" ...` format.
|
|
221
|
+
- `Missing native binary` error:
|
|
222
|
+
- Run `npm run build` and confirm `native/.build/release/baepsae-native` exists.
|
|
223
|
+
- OpenCode does not show `baepsae`:
|
|
224
|
+
- Re-run `bash scripts/install.sh --tool opencode --skip-install --skip-build` and check `~/.config/opencode/opencode.json`.
|
|
225
|
+
- Copilot not auto-registered:
|
|
226
|
+
- Copilot MCP flow is interactive/session-based. Re-run installer with `--interactive`.
|
|
227
|
+
- Real smoke test skipped:
|
|
228
|
+
- Boot an iOS simulator first, then run `npm run test:real`.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|