mcp-baepsae 3.1.9 → 4.0.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.
Files changed (47) hide show
  1. package/README-KR.md +91 -56
  2. package/README.md +84 -59
  3. package/dist/index.js +39 -808
  4. package/dist/index.js.map +1 -1
  5. package/dist/tools/info.d.ts +3 -0
  6. package/dist/tools/info.d.ts.map +1 -0
  7. package/dist/tools/info.js +75 -0
  8. package/dist/tools/info.js.map +1 -0
  9. package/dist/tools/input.d.ts +3 -0
  10. package/dist/tools/input.d.ts.map +1 -0
  11. package/dist/tools/input.js +147 -0
  12. package/dist/tools/input.js.map +1 -0
  13. package/dist/tools/media.d.ts +3 -0
  14. package/dist/tools/media.d.ts.map +1 -0
  15. package/dist/tools/media.js +54 -0
  16. package/dist/tools/media.js.map +1 -0
  17. package/dist/tools/simulator.d.ts +3 -0
  18. package/dist/tools/simulator.d.ts.map +1 -0
  19. package/dist/tools/simulator.js +52 -0
  20. package/dist/tools/simulator.js.map +1 -0
  21. package/dist/tools/system.d.ts +3 -0
  22. package/dist/tools/system.d.ts.map +1 -0
  23. package/dist/tools/system.js +117 -0
  24. package/dist/tools/system.js.map +1 -0
  25. package/dist/tools/ui.d.ts +3 -0
  26. package/dist/tools/ui.d.ts.map +1 -0
  27. package/dist/tools/ui.js +284 -0
  28. package/dist/tools/ui.js.map +1 -0
  29. package/dist/types.d.ts +29 -0
  30. package/dist/types.d.ts.map +1 -0
  31. package/dist/types.js +3 -0
  32. package/dist/types.js.map +1 -0
  33. package/dist/utils.d.ts +29 -0
  34. package/dist/utils.d.ts.map +1 -0
  35. package/dist/utils.js +308 -0
  36. package/dist/utils.js.map +1 -0
  37. package/native/Package.swift +5 -0
  38. package/native/Sources/Commands/InputCommands.swift +166 -0
  39. package/native/Sources/Commands/MediaCommands.swift +59 -0
  40. package/native/Sources/Commands/SystemCommands.swift +160 -0
  41. package/native/Sources/Commands/UICommands.swift +286 -0
  42. package/native/Sources/Commands/WindowCommands.swift +86 -0
  43. package/native/Sources/Types.swift +51 -0
  44. package/native/Sources/Utils.swift +1054 -0
  45. package/native/Sources/main.swift +27 -1699
  46. package/package.json +1 -1
  47. package/scripts/install.sh +2 -2
package/README-KR.md CHANGED
@@ -13,7 +13,9 @@ TypeScript MCP 레이어와 Swift 네이티브 브리지를 사용하는 iOS 시
13
13
  ## 목차
14
14
 
15
15
  - [사전 요구 사항](#사전-요구-사항)
16
+ - [플랫폼 지원](#플랫폼-지원)
16
17
  - [설치](#설치)
18
+ - [권한](#권한)
17
19
  - [MCP 설정 (권장)](#mcp-설정-권장)
18
20
  - [클라이언트 매트릭스](#클라이언트-매트릭스)
19
21
  - [For LLM](#for-llm)
@@ -21,6 +23,7 @@ TypeScript MCP 레이어와 Swift 네이티브 브리지를 사용하는 iOS 시
21
23
  - [프로젝트 구조](#프로젝트-구조)
22
24
  - [명령어](#명령어)
23
25
  - [MCP 도구 구현 상태](#mcp-도구-구현-상태)
26
+ - [사용 예시](#사용-예시)
24
27
  - [트러블슈팅](#트러블슈팅)
25
28
 
26
29
  ## 사전 요구 사항
@@ -30,13 +33,41 @@ TypeScript MCP 레이어와 Swift 네이티브 브리지를 사용하는 iOS 시
30
33
  - Node.js 18+
31
34
  - Swift 6+
32
35
 
36
+ ## 플랫폼 지원
37
+
38
+ | 플랫폼 | 지원 여부 | 비고 |
39
+ |---|---|---|
40
+ | macOS | 지원 | 기본 플랫폼. iOS 시뮬레이터 및 접근성 API에 필수. |
41
+ | Linux | 미지원 | 네이티브 바이너리가 AppKit, CoreGraphics, Accessibility 프레임워크에 의존. |
42
+ | Windows | 미지원 | 네이티브 바이너리가 AppKit, CoreGraphics, Accessibility 프레임워크에 의존. |
43
+
44
+ **macOS 전용인 이유**
45
+
46
+ Swift 네이티브 브리지(`baepsae-native`)는 iOS 시뮬레이터 및 macOS 애플리케이션과 상호작용하기 위해 macOS 전용 프레임워크(AppKit, CoreGraphics, Accessibility)를 사용합니다. 이 프레임워크들은 Linux나 Windows에서 사용할 수 없습니다. TypeScript MCP 레이어 또한 Xcode Command Line Tools에 포함된 `xcrun simctl`에 의존하며, 이는 macOS에서만 사용 가능합니다.
47
+
48
+ **요구 사항 요약:**
49
+
50
+ - **macOS 14 이상** -- iOS 시뮬레이터 자동화 및 접근성 API 접근에 필요합니다.
51
+ - **Xcode 또는 Xcode Command Line Tools** -- 네이티브 바이너리의 Swift 6+ 컴파일 및 `xcrun simctl` 명령어 실행에 필요합니다.
52
+ - **Node.js >= 18.0.0** -- TypeScript MCP 서버 실행에 필요합니다.
53
+
54
+ ## 권한
55
+
56
+ **접근성(Accessibility) 권한이 필요합니다.** UI 조회/입력 자동화 도구(`sim_*` / `mac_*` 스코프 도구, 예: `sim_describe_ui`, `mac_tap`, `sim_right_click`)를 사용할 때 필수입니다.
57
+
58
+ 1. **시스템 설정** > **개인정보 보호 및 보안** > **손쉬운 사용(Accessibility)** 로 이동합니다.
59
+ 2. 사용 중인 터미널/실행기(Terminal, iTerm2, VSCode, `node`, `openclaw`)를 허용합니다.
60
+ 3. 목록에 없으면 `+` 버튼으로 수동 추가합니다.
61
+
62
+ 시뮬레이터 타깃에서 선택자 기반 액션(`sim_tap`/`sim_right_click`의 `id`/`label`)은 기본적으로 **앱 내부 콘텐츠**를 탐색합니다. Simulator 크롬/시스템 UI까지 포함하려면 `all: true`를 사용하세요.
63
+
33
64
  ## 설치
34
65
 
35
66
  ### 옵션 A) npm (가장 간편)
36
67
 
37
68
  ```bash
38
69
  # 설치 없이 바로 실행
39
- npx mcp-baepsae
70
+ npx mcp-baepsae@latest
40
71
 
41
72
  # 또는 전역 설치
42
73
  npm install -g mcp-baepsae
@@ -89,10 +120,10 @@ bash scripts/install.sh --tool all
89
120
 
90
121
  ```bash
91
122
  # Claude Code
92
- claude mcp add baepsae -- npx -y mcp-baepsae
123
+ claude mcp add baepsae -- npx -y mcp-baepsae@latest
93
124
 
94
125
  # Codex CLI
95
- codex mcp add baepsae -- npx -y mcp-baepsae
126
+ codex mcp add baepsae -- npx -y mcp-baepsae@latest
96
127
  ```
97
128
 
98
129
  ### 자동화 옵션
@@ -115,8 +146,8 @@ bash scripts/install.sh --tool all --uninstall
115
146
  | 플래그 | 명령어 | 사용 시점 |
116
147
  |---|---|---|
117
148
  | `--runtime node` (기본값) | `node dist/index.js` | 소스 빌드 |
118
- | `--runtime npx` | `npx -y mcp-baepsae` | npm 레지스트리, 전역 설치 불필요 |
119
- | `--runtime bunx` | `bunx mcp-baepsae` | Bun 사용자 |
149
+ | `--runtime npx` | `npx -y mcp-baepsae@latest` | npm 레지스트리, 전역 설치 불필요 |
150
+ | `--runtime bunx` | `bunx mcp-baepsae@latest` | Bun 사용자 |
120
151
  | `--runtime global` | `mcp-baepsae` | `npm install -g mcp-baepsae` 이후 |
121
152
 
122
153
  ## 수동 설정 (대안)
@@ -127,13 +158,13 @@ bash scripts/install.sh --tool all --uninstall
127
158
 
128
159
  ```bash
129
160
  # Claude Code
130
- claude mcp add baepsae -- npx -y mcp-baepsae
161
+ claude mcp add baepsae -- npx -y mcp-baepsae@latest
131
162
 
132
163
  # Codex CLI
133
- codex mcp add baepsae -- npx -y mcp-baepsae
164
+ codex mcp add baepsae -- npx -y mcp-baepsae@latest
134
165
 
135
166
  # Gemini CLI
136
- gemini mcp add --scope user --transport stdio baepsae npx -y mcp-baepsae
167
+ gemini mcp add --scope user --transport stdio baepsae npx -y mcp-baepsae@latest
137
168
  ```
138
169
 
139
170
  ### 로컬 빌드 사용
@@ -151,10 +182,14 @@ gemini mcp add --scope user --transport stdio -e BAEPSAE_NATIVE_PATH=/ABS/PATH/n
151
182
 
152
183
  ## 프로젝트 구조
153
184
 
154
- - MCP 서버: `src/index.ts`
155
- - 네이티브 바이너리 프로젝트: `native/`
185
+ - MCP 서버 진입점: `src/index.ts`
186
+ - 도구 모듈: `src/tools/` (info, simulator, ui, input, media, system)
187
+ - 공유 유틸리티: `src/utils.ts`, `src/types.ts`
188
+ - 네이티브 바이너리 진입점: `native/Sources/main.swift`
189
+ - 네이티브 커맨드 핸들러: `native/Sources/Commands/`
156
190
  - 네이티브 바이너리 출력: `native/.build/release/baepsae-native`
157
- - 테스트: `tests/mcp.contract.test.mjs`, `tests/mcp.real.test.mjs`
191
+ - TS 테스트: `tests/mcp.contract.test.mjs`, `tests/unit.test.mjs`, `tests/mcp.real.test.mjs`
192
+ - Swift 테스트: `native/Tests/BaepsaeNativeTests/`
158
193
 
159
194
  ## 명령어
160
195
 
@@ -168,59 +203,59 @@ npm run setup:mcp # scripts/install.sh 실행 alias
168
203
 
169
204
  ## MCP 도구 구현 상태
170
205
 
171
- 32개 도구가 end-to-end 구현 완료되었습니다.
206
+ 47개 도구가 end-to-end 구현 완료되었습니다.
172
207
 
173
- ### iOS 시뮬레이터 전용 (11개)
208
+ ### 타깃 분리 스코프 도구 (30개, 권장)
174
209
 
175
- | 도구 | 설명 |
176
- |---|---|
177
- | `list_simulators` | iOS 시뮬레이터 목록 조회 |
178
- | `screenshot` | 시뮬레이터 스크린샷 캡처 |
179
- | `record_video` | 시뮬레이터 화면 녹화 |
180
- | `stream_video` | 비디오 프레임 스트리밍 |
181
- | `open_url` | 시뮬레이터에서 URL 열기 (Safari/딥링크) |
182
- | `install_app` | .app/.ipa 설치 |
183
- | `launch_app` | Bundle ID로 앱 실행 |
184
- | `terminate_app` | 실행 중인 앱 종료 |
185
- | `uninstall_app` | 앱 제거 |
186
- | `button` | 하드웨어 버튼 (home/lock/side/siri/apple-pay) |
187
- | `gesture` | 프리셋 제스처 (scroll/swipe-edge) |
188
-
189
- ### macOS 전용 (4개)
190
-
191
- | 도구 | 설명 |
210
+ 시뮬레이터/맥 타깃 혼동을 줄이려면 아래 `sim_*` / `mac_*` 도구를 우선 사용하세요.
211
+
212
+ | 시뮬레이터 스코프 | macOS 스코프 |
192
213
  |---|---|
193
- | `list_apps` | 실행 중인 macOS 앱 목록 조회 |
194
- | `scroll` | 스크롤 휠 이벤트 |
195
- | `menu_action` | 메뉴 바 액션 실행 |
196
- | `get_focused_app` | 포커스된 앱 정보 조회 |
214
+ | `sim_describe_ui` | `mac_describe_ui` |
215
+ | `sim_search_ui` | `mac_search_ui` |
216
+ | `sim_tap` | `mac_tap` |
217
+ | `sim_type_text` | `mac_type_text` |
218
+ | `sim_swipe` | `mac_swipe` |
219
+ | `sim_key` | `mac_key` |
220
+ | `sim_key_sequence` | `mac_key_sequence` |
221
+ | `sim_key_combo` | `mac_key_combo` |
222
+ | `sim_touch` | `mac_touch` |
223
+ | `sim_right_click` | `mac_right_click` |
224
+ | `sim_scroll` | `mac_scroll` |
225
+ | `sim_drag_drop` | `mac_drag_drop` |
226
+ | `sim_list_windows` | `mac_list_windows` |
227
+ | `sim_activate_app` | `mac_activate_app` |
228
+ | `sim_screenshot_app` | `mac_screenshot_app` |
197
229
 
198
- ### 공통 — iOS 시뮬레이터 + macOS (15개)
230
+ ### iOS 시뮬레이터 전용 (11개)
199
231
 
200
- | 도구 | 설명 |
201
- |---|---|
202
- | `describe_ui` | 접근성 트리 조회 (페이지네이션, 필터, 서브트리, 요약 지원) |
203
- | `search_ui` | UI 요소 검색 (텍스트/ID/라벨) |
204
- | `tap` | 좌표 또는 ID/라벨로 탭 (더블클릭 지원) |
205
- | `type_text` | 텍스트 입력 |
206
- | `swipe` | 스와이프 제스처 |
207
- | `key` | HID 키코드 입력 |
208
- | `key_sequence` | 연속 키코드 입력 |
209
- | `key_combo` | 수정키 + 키 조합 |
210
- | `touch` | 터치 다운/업 이벤트 |
211
- | `right_click` | 우클릭 (ID/라벨 또는 좌표) |
212
- | `drag_drop` | 드래그 앤 드롭 |
213
- | `clipboard` | 클립보드 읽기/쓰기 |
214
- | `list_windows` | 앱 윈도우 목록 |
215
- | `activate_app` | 앱을 포그라운드로 전환 |
216
- | `screenshot_app` | 앱 윈도우 스크린샷 |
232
+ `list_simulators`, `screenshot`, `record_video`, `stream_video`, `open_url`, `install_app`, `launch_app`, `terminate_app`, `uninstall_app`, `button`, `gesture`
233
+
234
+ ### macOS / 시스템 전용 (4개)
235
+
236
+ `list_apps`, `menu_action`, `get_focused_app`, `clipboard`
217
237
 
218
238
  ### 유틸리티 (2개)
219
239
 
220
- | 도구 | 설명 |
221
- |---|---|
222
- | `baepsae_help` | 도움말 표시 |
223
- | `baepsae_version` | 버전 정보 표시 |
240
+ `baepsae_help`, `baepsae_version`
241
+
242
+ ## 사용 예시
243
+
244
+ **시뮬레이터 내부 앱 접근성 퀵스타트:**
245
+ ```javascript
246
+ // 1) 대상 시뮬레이터에서 앱 실행
247
+ launch_app({ udid: "...", bundleId: "com.example.app" })
248
+
249
+ // 2) 접근성 트리 조회/검색 (기본: 앱 내부 콘텐츠 스코프)
250
+ sim_describe_ui({ udid: "..." })
251
+ sim_search_ui({ udid: "...", query: "로그인" })
252
+
253
+ // 3) 접근성 ID/라벨로 상호작용
254
+ sim_tap({ udid: "...", id: "login-button" })
255
+
256
+ // 선택: Simulator 크롬/시스템 UI까지 탐색하려면
257
+ sim_tap({ udid: "...", label: "Home", all: true })
258
+ ```
224
259
 
225
260
  ## 트러블슈팅
226
261
 
package/README.md CHANGED
@@ -13,7 +13,9 @@ Local MCP server for iOS Simulator and macOS app automation with a TypeScript MC
13
13
  ## Table of Contents
14
14
 
15
15
  - [Prerequisites](#prerequisites)
16
+ - [Platform Support](#platform-support)
16
17
  - [Install](#install)
18
+ - [Permissions](#permissions)
17
19
  - [MCP Setup (Recommended)](#mcp-setup-recommended)
18
20
  - [Client Matrix](#client-matrix)
19
21
  - [For LLM](#for-llm)
@@ -21,6 +23,7 @@ Local MCP server for iOS Simulator and macOS app automation with a TypeScript MC
21
23
  - [Project Structure](#project-structure)
22
24
  - [Commands](#commands)
23
25
  - [MCP Tool Status](#mcp-tool-status)
26
+ - [Usage Examples](#usage-examples)
24
27
  - [Troubleshooting](#troubleshooting)
25
28
 
26
29
  ## Prerequisites
@@ -30,21 +33,41 @@ Local MCP server for iOS Simulator and macOS app automation with a TypeScript MC
30
33
  - Node.js 18+
31
34
  - Swift 6+
32
35
 
36
+ ## Platform Support
37
+
38
+ | Platform | Supported | Notes |
39
+ |---|---|---|
40
+ | macOS | Yes | Primary platform. Required for iOS Simulator and Accessibility APIs. |
41
+ | Linux | No | Native binary depends on AppKit, CoreGraphics, and Accessibility frameworks. |
42
+ | Windows | No | Native binary depends on AppKit, CoreGraphics, and Accessibility frameworks. |
43
+
44
+ **Why macOS only?**
45
+
46
+ The Swift native bridge (`baepsae-native`) uses macOS-specific frameworks (AppKit, CoreGraphics, Accessibility) to interact with iOS Simulator and macOS applications. These frameworks are not available on Linux or Windows. The TypeScript MCP layer also relies on `xcrun simctl`, which is part of Xcode Command Line Tools and only available on macOS.
47
+
48
+ **Requirements summary:**
49
+
50
+ - **macOS 14 or later** -- required for iOS Simulator automation and Accessibility API access.
51
+ - **Xcode or Xcode Command Line Tools** -- required for Swift 6+ compilation of the native binary and `xcrun simctl` commands.
52
+ - **Node.js >= 18.0.0** -- required to run the TypeScript MCP server.
53
+
33
54
  ## Permissions
34
55
 
35
- **Accessibility permission is required** for UI automation features (`describe_ui`, `tap` by ID).
56
+ **Accessibility permission is required** for UI inspection and input automation features (use `sim_*` / `mac_*` scoped tools such as `sim_describe_ui`, `mac_tap`, `sim_right_click`).
36
57
 
37
58
  1. Open **System Settings** > **Privacy & Security** > **Accessibility**.
38
- 2. Enable your terminal (Terminal, iTerm2, VSCode) or command runner (`node`, `openclaw`).
59
+ 2. Enable the MCP client app and terminal you actually use, and also the runtime process (`node`) if listed.
39
60
  3. If the app is missing, click `+` and add it manually.
40
61
 
62
+ For simulator targets, selector-based actions (`sim_tap` / `sim_right_click` with `id` or `label`) search **in-app content** by default. Set `all: true` to include Simulator chrome UI.
63
+
41
64
  ## Install
42
65
 
43
66
  ### Option A) npm (easiest)
44
67
 
45
68
  ```bash
46
69
  # Run directly without installing
47
- npx mcp-baepsae
70
+ npx mcp-baepsae@latest
48
71
 
49
72
  # Or install globally
50
73
  npm install -g mcp-baepsae
@@ -97,10 +120,10 @@ If you installed via npm instead of cloning the repo, use npx:
97
120
 
98
121
  ```bash
99
122
  # Claude Code
100
- claude mcp add baepsae -- npx -y mcp-baepsae
123
+ claude mcp add baepsae -- npx -y mcp-baepsae@latest
101
124
 
102
125
  # Codex CLI
103
- codex mcp add baepsae -- npx -y mcp-baepsae
126
+ codex mcp add baepsae -- npx -y mcp-baepsae@latest
104
127
  ```
105
128
 
106
129
  ### Automation flags
@@ -123,8 +146,8 @@ The installer supports multiple runtimes via `--runtime`:
123
146
  | Flag | Command | When to use |
124
147
  |---|---|---|
125
148
  | `--runtime node` (default) | `node dist/index.js` | Local source build |
126
- | `--runtime npx` | `npx -y mcp-baepsae` | npm registry, no global install |
127
- | `--runtime bunx` | `bunx mcp-baepsae` | Bun users |
149
+ | `--runtime npx` | `npx -y mcp-baepsae@latest` | npm registry, no global install |
150
+ | `--runtime bunx` | `bunx mcp-baepsae@latest` | Bun users |
128
151
  | `--runtime global` | `mcp-baepsae` | After `npm install -g mcp-baepsae` |
129
152
 
130
153
  ## Manual Setup (Fallback)
@@ -135,13 +158,13 @@ Use this when you do not want to run `scripts/install.sh`.
135
158
 
136
159
  ```bash
137
160
  # Claude Code
138
- claude mcp add baepsae -- npx -y mcp-baepsae
161
+ claude mcp add baepsae -- npx -y mcp-baepsae@latest
139
162
 
140
163
  # Codex CLI
141
- codex mcp add baepsae -- npx -y mcp-baepsae
164
+ codex mcp add baepsae -- npx -y mcp-baepsae@latest
142
165
 
143
166
  # Gemini CLI
144
- gemini mcp add --scope user --transport stdio baepsae npx -y mcp-baepsae
167
+ gemini mcp add --scope user --transport stdio baepsae npx -y mcp-baepsae@latest
145
168
  ```
146
169
 
147
170
  ### Using local build
@@ -159,10 +182,14 @@ gemini mcp add --scope user --transport stdio -e BAEPSAE_NATIVE_PATH=/ABS/PATH/n
159
182
 
160
183
  ## Project Structure
161
184
 
162
- - MCP server: `src/index.ts`
163
- - Native binary project: `native/`
185
+ - MCP server entry point: `src/index.ts`
186
+ - Tool modules: `src/tools/` (info, simulator, ui, input, media, system)
187
+ - Shared utilities: `src/utils.ts`, `src/types.ts`
188
+ - Native binary entry point: `native/Sources/main.swift`
189
+ - Native command handlers: `native/Sources/Commands/`
164
190
  - Native binary output: `native/.build/release/baepsae-native`
165
- - Tests: `tests/mcp.contract.test.mjs`, `tests/mcp.real.test.mjs`
191
+ - TS tests: `tests/mcp.contract.test.mjs`, `tests/unit.test.mjs`, `tests/mcp.real.test.mjs`
192
+ - Swift tests: `native/Tests/BaepsaeNativeTests/`
166
193
 
167
194
  ## Commands
168
195
 
@@ -176,62 +203,60 @@ npm run setup:mcp # Alias for scripts/install.sh
176
203
 
177
204
  ## MCP Tool Status
178
205
 
179
- 32 tools implemented end-to-end, organized by platform:
206
+ 47 tools implemented end-to-end.
180
207
 
181
- ### iOS Simulator Only (11)
208
+ ### Explicit target-scoped tools (30, recommended)
182
209
 
183
- | Tool | Description |
184
- |---|---|
185
- | `list_simulators` | List available iOS simulators |
186
- | `screenshot` | Capture simulator screen |
187
- | `record_video` | Record simulator screen |
188
- | `stream_video` | Stream video frames |
189
- | `open_url` | Open URL in simulator (Safari/Deep Link) |
190
- | `install_app` | Install .app or .ipa |
191
- | `launch_app` | Launch app by Bundle ID |
192
- | `terminate_app` | Terminate running app |
193
- | `uninstall_app` | Uninstall app |
194
- | `button` | Hardware buttons (home, lock, side, siri, apple-pay) |
195
- | `gesture` | Preset gestures (scroll, swipe-edge) |
196
-
197
- ### macOS Only (4)
198
-
199
- | Tool | Description |
210
+ Use these first to avoid simulator/macOS target ambiguity.
211
+
212
+ | Simulator-scoped | macOS-scoped |
200
213
  |---|---|
201
- | `list_apps` | List running macOS apps |
202
- | `scroll` | Scroll wheel events |
203
- | `menu_action` | Execute menu bar actions |
204
- | `get_focused_app` | Get focused app info |
214
+ | `sim_describe_ui` | `mac_describe_ui` |
215
+ | `sim_search_ui` | `mac_search_ui` |
216
+ | `sim_tap` | `mac_tap` |
217
+ | `sim_type_text` | `mac_type_text` |
218
+ | `sim_swipe` | `mac_swipe` |
219
+ | `sim_key` | `mac_key` |
220
+ | `sim_key_sequence` | `mac_key_sequence` |
221
+ | `sim_key_combo` | `mac_key_combo` |
222
+ | `sim_touch` | `mac_touch` |
223
+ | `sim_right_click` | `mac_right_click` |
224
+ | `sim_scroll` | `mac_scroll` |
225
+ | `sim_drag_drop` | `mac_drag_drop` |
226
+ | `sim_list_windows` | `mac_list_windows` |
227
+ | `sim_activate_app` | `mac_activate_app` |
228
+ | `sim_screenshot_app` | `mac_screenshot_app` |
205
229
 
206
- ### Cross-Platform — iOS Simulator + macOS (15)
230
+ ### iOS Simulator Only (11)
207
231
 
208
- | Tool | Description |
209
- |---|---|
210
- | `describe_ui` | Accessibility tree (pagination, filter, subtree, summary) |
211
- | `search_ui` | Search UI elements by text/ID/label |
212
- | `tap` | Tap by coordinates or element ID/label (supports double-click) |
213
- | `type_text` | Type text input |
214
- | `swipe` | Swipe gesture |
215
- | `key` | HID keycode input |
216
- | `key_sequence` | Sequential keycode input |
217
- | `key_combo` | Modifier + key combination |
218
- | `touch` | Touch down/up events |
219
- | `right_click` | Right-click by ID/label or coordinates |
220
- | `drag_drop` | Drag and drop |
221
- | `clipboard` | Read/write clipboard |
222
- | `list_windows` | List app windows |
223
- | `activate_app` | Bring app to foreground |
224
- | `screenshot_app` | Capture app window screenshot |
232
+ `list_simulators`, `screenshot`, `record_video`, `stream_video`, `open_url`, `install_app`, `launch_app`, `terminate_app`, `uninstall_app`, `button`, `gesture`
233
+
234
+ ### macOS / System Only (4)
235
+
236
+ `list_apps`, `menu_action`, `get_focused_app`, `clipboard`
225
237
 
226
238
  ### Utility (2)
227
239
 
228
- | Tool | Description |
229
- |---|---|
230
- | `baepsae_help` | Show help info |
231
- | `baepsae_version` | Show version info |
240
+ `baepsae_help`, `baepsae_version`
232
241
 
233
242
  ## Usage Examples
234
243
 
244
+ **Simulator app accessibility quickstart (inside app UI):**
245
+ ```javascript
246
+ // 1) Launch your app in the target simulator
247
+ launch_app({ udid: "...", bundleId: "com.example.app" })
248
+
249
+ // 2) Inspect or search accessibility tree (in-app content scope by default)
250
+ sim_describe_ui({ udid: "..." })
251
+ sim_search_ui({ udid: "...", query: "Login" })
252
+
253
+ // 3) Interact by accessibility identifier/label
254
+ sim_tap({ udid: "...", id: "login-button" })
255
+
256
+ // Optional: include Simulator chrome/system UI in selector lookup
257
+ sim_tap({ udid: "...", label: "Home", all: true })
258
+ ```
259
+
235
260
  **Open a URL (iOS Simulator):**
236
261
  ```javascript
237
262
  // Open Naver Mobile
@@ -256,7 +281,7 @@ terminate_app({ udid: "...", bundleId: "com.apple.mobilesafari" })
256
281
  list_apps({})
257
282
 
258
283
  // Take screenshot of a macOS app
259
- screenshot_app({ bundleId: "com.apple.Safari" })
284
+ mac_screenshot_app({ bundleId: "com.apple.Safari" })
260
285
  ```
261
286
 
262
287
  ## Troubleshooting