mcp-baepsae 6.1.1 → 6.2.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/README-KR.md CHANGED
@@ -268,8 +268,24 @@ npm run setup:mcp # scripts/install.sh 실행 alias
268
268
 
269
269
  `paste`를 사용하면 시뮬레이터 대상은 host clipboard를 건드리지 않고 simulator pasteboard를 갱신하며, macOS 대상은 host clipboard를 잠시 덮어쓴 뒤 복원합니다. 성공 응답에는 입력 소스, 대상 종류, 요청한 method, 실제 사용한 method, paste transport, auto fallback이 함께 보고됩니다.
270
270
 
271
+ ### `tap_tab` 정책
272
+
273
+ `tap_tab`는 **semantic-first, geometry-last** 전략을 사용합니다.
274
+
275
+ - 먼저 탭 바 아래에 노출된 actionable descendant를 찾습니다.
276
+ - SwiftUI/Simulator 조합에서 실제 탭 버튼 descendant가 드러나지 않으면, 같은 탭 전환 의미를 가진 **semantic proxy row**(예: 상단 탭 전환 버튼)를 사용할 수 있습니다.
277
+ - 그런 semantic 경로가 없을 때만 마지막으로 탭 바 geometry fallback을 사용합니다.
278
+
279
+ 이 정책이 필요한 이유는 SwiftUI `TabView`가 Simulator에서 종종 실제 탭 버튼 없이 `AXGroup text="Tab Bar"`로만 노출되기 때문입니다.
280
+
271
281
  ## 사용 예시
272
282
 
283
+ **인덱스로 탭 전환하기 (`tap_tab` semantic fallback 포함):**
284
+ ```javascript
285
+ // query_ui/tap selector로 개별 탭 버튼을 안정적으로 잡기 어려울 때 사용
286
+ tap_tab({ udid: "...", index: 1, tabCount: 3 })
287
+ ```
288
+
273
289
  **시뮬레이터 내부 앱 접근성 퀵스타트:**
274
290
  ```javascript
275
291
  // 1) 대상 시뮬레이터에서 앱 실행
@@ -309,6 +325,9 @@ tap({ udid: "...", label: "Home", all: true })
309
325
  - 실제 스모크 테스트 진단:
310
326
  - `npm run test:real:preflight`로 전체 스위트를 돌리지 않고 환경/기능(capability) 진단만 출력할 수 있습니다.
311
327
  - `npm run test:real:sim`으로 시뮬레이터 중심 범위만, `npm run test:real:mac`으로 macOS Safari 범위만 실행할 수 있습니다.
328
+ - 여러 Simulator 창이 열려 있어 selector가 다른 기기를 잡는 경우:
329
+ - 현재 버전은 simulator selector를 먼저 대상 `udid` 창에 맞춰 scope 합니다.
330
+ - 의도적으로 Simulator 크롬/시스템 UI를 다뤄야 하면 `all: true`를 사용하세요.
312
331
  - OpenCode에서 `baepsae`가 보이지 않는 경우:
313
332
  - `bash scripts/install.sh --tool opencode --skip-install --skip-build`를 다시 실행하고 `~/.config/opencode/opencode.json`을 확인하세요.
314
333
  - Copilot 자동 등록이 안 되는 경우:
package/README.md CHANGED
@@ -268,8 +268,25 @@ Target routing is explicit in the arguments: `udid` for simulator, `bundleId` /
268
268
 
269
269
  When `paste` is used, simulator targets update the simulator pasteboard without touching the host clipboard, while macOS targets temporarily overwrite the host clipboard and restore it after submission. Successful responses report the input source, target kind, requested method, used method, paste transport, and any auto fallback that was applied.
270
270
 
271
+ ### `tap_tab` policy
272
+
273
+ `tap_tab` is **semantic-first, geometry-last**.
274
+
275
+ - First it tries actionable descendants exposed under the tab bar.
276
+ - If SwiftUI/Simulator does not expose real tab button descendants, it can use a **semantic proxy row** (for example, app-provided top navigation buttons that map cleanly to the same tabs).
277
+ - Only if neither semantic path exists does it fall back to tab-bar geometry.
278
+
279
+ This matters because SwiftUI `TabView` in Simulator may expose the tab bar as a generic `AXGroup text="Tab Bar"` without actionable child buttons.
280
+
271
281
  ## Usage Examples
272
282
 
283
+ **Switch tabs by index with semantic-first fallback:**
284
+ ```javascript
285
+ // Prefer this when your app exposes a real tab bar but individual tab buttons
286
+ // are not consistently addressable via query_ui/tap selectors.
287
+ tap_tab({ udid: "...", index: 1, tabCount: 3 })
288
+ ```
289
+
273
290
  **Unified simulator app accessibility quickstart (inside app UI):**
274
291
  ```javascript
275
292
  // 1) Launch your app in the target simulator
@@ -336,6 +353,9 @@ screenshot_app({ bundleId: "com.apple.Safari" })
336
353
  - Real smoke test diagnostics:
337
354
  - Run `npm run test:real:preflight` to print environment and capability diagnostics without executing the full suite.
338
355
  - Run `npm run test:real:sim` to focus on simulator-capability coverage, or `npm run test:real:mac` for the macOS Safari subset.
356
+ - Multiple Simulator windows are open and selectors hit the wrong device:
357
+ - Current versions scope simulator selectors to the target `udid` window first.
358
+ - If you intentionally need Simulator chrome/system UI, use `all: true`.
339
359
  - OpenCode does not show `baepsae`:
340
360
  - Re-run `bash scripts/install.sh --tool opencode --skip-install --skip-build` and check `~/.config/opencode/opencode.json`.
341
361
  - Copilot not auto-registered:
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/tools/media.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyG1D"}
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/tools/media.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA+GzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+G1D"}
@@ -2,8 +2,101 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerMediaTools = registerMediaTools;
4
4
  const zod_1 = require("zod");
5
+ const promises_1 = require("node:fs/promises");
6
+ const node_os_1 = require("node:os");
7
+ const node_path_1 = require("node:path");
8
+ const node_crypto_1 = require("node:crypto");
5
9
  const utils_js_1 = require("../utils.js");
6
10
  const backend_js_1 = require("../backend.js");
11
+ function extractText(result) {
12
+ return result.content
13
+ .filter((item) => item.type === "text")
14
+ .map((item) => item.text)
15
+ .join("\n");
16
+ }
17
+ function rewriteTextContent(result, search, replace) {
18
+ return {
19
+ ...result,
20
+ content: result.content.map((item) => item.type === "text"
21
+ ? { ...item, text: item.text.split(search).join(replace) }
22
+ : item),
23
+ };
24
+ }
25
+ function createStagingPath(finalPath, extension) {
26
+ const finalBaseName = (0, node_path_1.basename)(finalPath);
27
+ const suffix = `-${(0, node_crypto_1.randomUUID)()}`;
28
+ const preferredBaseName = finalBaseName.endsWith(`.${extension}`)
29
+ ? finalBaseName.replace(new RegExp(`\\.${extension}$`), `${suffix}.${extension}`)
30
+ : `mcp-baepsae-media-${Date.now()}${suffix}.${extension}`;
31
+ return (0, node_path_1.join)((0, node_os_1.tmpdir)(), preferredBaseName);
32
+ }
33
+ async function finalizeStagedCapture(result, stagingPath, finalPath) {
34
+ if (result.isError) {
35
+ await (0, promises_1.rm)(stagingPath, { force: true }).catch(() => { });
36
+ return result;
37
+ }
38
+ try {
39
+ const info = await (0, promises_1.stat)(stagingPath);
40
+ if (!info.isFile() || info.size <= 0) {
41
+ throw new Error("Capture file was not created or is empty.");
42
+ }
43
+ }
44
+ catch (error) {
45
+ await (0, promises_1.rm)(stagingPath, { force: true }).catch(() => { });
46
+ const message = error instanceof Error ? error.message : String(error);
47
+ return {
48
+ content: [{ type: "text", text: `${extractText(result)}\n\nPost-processing failed.\nExpected staging file: ${stagingPath}\nReason: ${message}`.trim() }],
49
+ isError: true,
50
+ error: (0, utils_js_1.makeToolError)({
51
+ code: "execution.capture_output_missing",
52
+ category: "execution",
53
+ message,
54
+ retryable: true,
55
+ source: "runtime",
56
+ }),
57
+ metadata: {
58
+ ...(result.metadata ?? {}),
59
+ stagingOutputPath: stagingPath,
60
+ outputPath: finalPath,
61
+ },
62
+ };
63
+ }
64
+ try {
65
+ await (0, promises_1.copyFile)(stagingPath, finalPath);
66
+ await (0, promises_1.rm)(stagingPath, { force: true }).catch(() => { });
67
+ }
68
+ catch (error) {
69
+ const message = error instanceof Error ? error.message : String(error);
70
+ return {
71
+ content: [{
72
+ type: "text",
73
+ text: `${extractText(result)}\n\nPost-processing failed.\nStaging file: ${stagingPath}\nRequested output: ${finalPath}\nReason: ${message}`.trim(),
74
+ }],
75
+ isError: true,
76
+ error: (0, utils_js_1.makeToolError)({
77
+ code: "execution.capture_output_finalize_failed",
78
+ category: "execution",
79
+ message,
80
+ retryable: true,
81
+ source: "runtime",
82
+ }),
83
+ metadata: {
84
+ ...(result.metadata ?? {}),
85
+ stagingOutputPath: stagingPath,
86
+ outputPath: finalPath,
87
+ },
88
+ };
89
+ }
90
+ const rewritten = rewriteTextContent(result, stagingPath, finalPath);
91
+ return {
92
+ ...rewritten,
93
+ metadata: {
94
+ ...(rewritten.metadata ?? {}),
95
+ stagingOutputPath: stagingPath,
96
+ outputPath: finalPath,
97
+ },
98
+ };
99
+ }
7
100
  function registerMediaTools(server) {
8
101
  server.tool("stream_video", "Capture a time-bounded simulator clip through the native stream-video shim.", {
9
102
  udid: zod_1.z.string().min(1).describe("Simulator UDID"),
@@ -18,9 +111,10 @@ function registerMediaTools(server) {
18
111
  const durationSeconds = params.durationSeconds ?? 10;
19
112
  const outputPath = params.output ?? `simulator-stream-${Date.now()}.mov`;
20
113
  const resolvedOutput = await (0, utils_js_1.ensureOutputPath)(outputPath);
114
+ const stagingOutput = createStagingPath(resolvedOutput, "mov");
21
115
  (0, utils_js_1.pushOption)(args, "--duration", durationSeconds);
22
- args.push("--output", resolvedOutput);
23
- return await (0, backend_js_1.runBackend)("utility", args, {
116
+ args.push("--output", stagingOutput);
117
+ const result = await (0, backend_js_1.runBackend)("utility", args, {
24
118
  timeoutMs: Math.max(15_000, Math.round((durationSeconds + 15) * 1000)),
25
119
  }, {
26
120
  extraLines: [
@@ -36,6 +130,7 @@ function registerMediaTools(server) {
36
130
  outputPath: resolvedOutput,
37
131
  },
38
132
  });
133
+ return await finalizeStagedCapture(result, stagingOutput, resolvedOutput);
39
134
  });
40
135
  server.tool("record_video", "Record simulator display directly with simctl recordVideo.", {
41
136
  udid: zod_1.z.string().min(1).describe("Simulator UDID"),
@@ -49,12 +144,13 @@ function registerMediaTools(server) {
49
144
  const durationSeconds = params.durationSeconds ?? 10;
50
145
  const outputPath = params.output ?? `simulator-recording-${Date.now()}.mov`;
51
146
  const resolvedOutput = await (0, utils_js_1.ensureOutputPath)(outputPath);
147
+ const stagingOutput = createStagingPath(resolvedOutput, "mov");
52
148
  const extraLines = [
53
149
  "Capture mode: direct simctl recordVideo.",
54
150
  `Requested duration: ${durationSeconds}s`,
55
151
  `Output file: ${resolvedOutput}`,
56
152
  ];
57
- return await (0, backend_js_1.runBackend)("simulator", ["io", params.udid, "recordVideo", "--force", resolvedOutput], {
153
+ const result = await (0, backend_js_1.runBackend)("simulator", ["io", params.udid, "recordVideo", "--force", stagingOutput], {
58
154
  timeoutMs: Math.max(15_000, Math.round((durationSeconds + 5) * 1000)),
59
155
  }, {
60
156
  timeoutIsExpected: true,
@@ -66,6 +162,7 @@ function registerMediaTools(server) {
66
162
  outputPath: resolvedOutput,
67
163
  },
68
164
  });
165
+ return await finalizeStagedCapture(result, stagingOutput, resolvedOutput);
69
166
  });
70
167
  server.tool("screenshot", "Capture a screenshot from simulator display using simctl screenshot.", {
71
168
  udid: zod_1.z.string().min(1).describe("Simulator UDID"),
@@ -73,9 +170,11 @@ function registerMediaTools(server) {
73
170
  }, async (params) => {
74
171
  const outputPath = params.output ?? `simulator-screenshot-${Date.now()}.png`;
75
172
  const resolvedOutput = await (0, utils_js_1.ensureOutputPath)(outputPath);
76
- return await (0, backend_js_1.runBackend)("simulator", ["io", params.udid, "screenshot", resolvedOutput], undefined, {
173
+ const stagingOutput = createStagingPath(resolvedOutput, "png");
174
+ const result = await (0, backend_js_1.runBackend)("simulator", ["io", params.udid, "screenshot", stagingOutput], undefined, {
77
175
  extraLines: [`Output file: ${resolvedOutput}`],
78
176
  });
177
+ return await finalizeStagedCapture(result, stagingOutput, resolvedOutput);
79
178
  });
80
179
  }
81
180
  //# sourceMappingURL=media.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/tools/media.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/tools/media.ts"],"names":[],"mappings":"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"}
package/dist/tools/ui.js CHANGED
@@ -344,7 +344,7 @@ function registerUITools(server) {
344
344
  return target;
345
345
  return await (0, backend_js_1.runBackend)("input", buildDragDropArgs(target, params));
346
346
  });
347
- server.tool("tap_tab", "Tap a tab in a tab bar by index. Workaround for SwiftUI TabView where individual tab buttons are not exposed in the accessibility tree. Finds the tab bar element and calculates tap coordinates by dividing it equally.", { ...utils_js_1.unifiedTargetSchema, ...tapTabSchema }, async (params) => {
347
+ server.tool("tap_tab", "Tap a tab in a tab bar by index. Prefers semantic descendants or top-row semantic proxy buttons when available, and falls back to geometry only when needed. Useful for SwiftUI TabView cases where tab buttons are not cleanly exposed.", { ...utils_js_1.unifiedTargetSchema, ...tapTabSchema }, async (params) => {
348
348
  const validationError = validateTapTabParams(params);
349
349
  if (validationError)
350
350
  return validationError;
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/tools/ui.ts"],"names":[],"mappings":";;AA4XA,0CAyIC;AApgBD,6BAAwB;AAIxB,0CAMqB;AACrB,8CAA2C;AAyE3C,MAAM,cAAc,GAAG;IACrB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IACtF,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC5E,GAAG,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAChF,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;IACrG,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACvF,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IAC5F,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IACvF,WAAW,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IAC7E,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACrF,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;CAC7F,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACvD,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IACvF,WAAW,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IAC7E,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;CACtF,CAAC;AAEF,MAAM,SAAS,GAAG;IAChB,CAAC,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IACjD,CAAC,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IACjD,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAC9D,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC5D,GAAG,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;IAClG,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACpF,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACvE,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CACxE,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IACrD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACrE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC3D,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC/D,mRAAmR,CACpR;CACF,CAAC;AAEF,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;IACtC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;IACtC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAClC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAClC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC/D,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACzE,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;CAC1E,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAClE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAChE,CAAC,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACrE,CAAC,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;CACtE,CAAC;AAEF,MAAM,cAAc,GAAG;IACrB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;IACtC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;IACtC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAClC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAClC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC/D,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CACrF,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACnE,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;IAC9H,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACvE,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CACxE,CAAC;AAEF,SAAS,iBAAiB,CAAC,MAAiB;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,KAAK,SAAS,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,KAAK,SAAS,CAAC;IACpC,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC;IAE1E,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yCAAyC,EAAE,CAAC;YAC5E,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAA,wBAAa,EAAC;gBACnB,IAAI,EAAE,gCAAgC;gBACtC,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,yCAAyC;aACnD,CAAC;SACH,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;QACxB,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uDAAuD,EAAE,CAAC;YAC1F,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAA,wBAAa,EAAC;gBACnB,IAAI,EAAE,kCAAkC;gBACxC,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,uDAAuD;aACjE,CAAC;SACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACzC,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+CAA+C,EAAE,CAAC;YAClF,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAA,wBAAa,EAAC;gBACnB,IAAI,EAAE,kCAAkC;gBACxC,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,+CAA+C;aACzD,CAAC;SACH,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAoB;IAChD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,MAAM,CAAC,KAAK,qCAAqC,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,EAAE,CAAC;YACtH,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAA,wBAAa,EAAC;gBACnB,IAAI,EAAE,iCAAiC;gBACvC,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,aAAa,MAAM,CAAC,KAAK,qCAAqC,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE;aAC7F,CAAC;SACH,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAkB;IAC5C,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC5H,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kDAAkD,EAAE,CAAC;YACrF,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAA,wBAAa,EAAC;gBACnB,IAAI,EAAE,iCAAiC;gBACvC,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,kDAAkD;aAC5D,CAAC;SACH,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAgB,EAAE,MAAsB;IACjE,MAAM,IAAI,GAAG,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC,CAAC;IACxC,IAAA,qBAAU,EAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAA,qBAAU,EAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IACD,IAAA,qBAAU,EAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAA,qBAAU,EAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAA,qBAAU,EAAC,IAAI,EAAE,mBAAmB,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IAC5D,IAAA,qBAAU,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9B,CAAC;IACD,IAAA,qBAAU,EAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,MAAgB,EAAE,MAAoB;IAC7D,MAAM,IAAI,GAAG,CAAC,WAAW,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/D,IAAA,qBAAU,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9B,CAAC;IACD,IAAA,qBAAU,EAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,MAAgB,EAAE,MAAiB;IACvD,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,IAAA,qBAAU,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,IAAA,qBAAU,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,IAAA,qBAAU,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,IAAA,qBAAU,EAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IACD,IAAA,qBAAU,EAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAA,qBAAU,EAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,MAAgB,EAAE,MAAkB;IACzD,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IACrB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAkB,EAClB,MAA2B;IAS3B,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;IAChD,MAAM,UAAU,GAA0B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9E,MAAM,UAAU,GACd,eAAe,KAAK,MAAM;QACxB,CAAC,CAAC,UAAU,KAAK,WAAW;YAC1B,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,UAAU;QACd,CAAC,CAAC,eAAe,CAAC;IACtB,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/G,MAAM,cAAc,GAClB,UAAU,KAAK,OAAO;QACpB,CAAC,CAAC,UAAU,KAAK,WAAW;YAC1B,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,gBAAgB;QACpB,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,mBAAmB,GACvB,cAAc,KAAK,gBAAgB,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,MAAM,CAAC;IACjF,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC;AACvG,CAAC;AAED,SAAS,cAAc,CAAC,MAAgB,EAAE,MAAmB;IAC3D,MAAM,IAAI,GAAG;QACX,OAAO;QACP,WAAW;QACX,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QACrB,WAAW;QACX,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QACrB,SAAS;QACT,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QACnB,SAAS;QACT,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;KACpB,CAAC;IACF,IAAA,qBAAU,EAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAA,qBAAU,EAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAA,qBAAU,EAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,MAAgB,EAAE,MAAoB;IAC7D,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,CAAC;IACnC,IAAA,qBAAU,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAA,qBAAU,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAA,qBAAU,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,IAAA,qBAAU,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAgB,EAAE,MAAsB;IACjE,MAAM,IAAI,GAAG,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAClF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,IAAA,qBAAU,EAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAA,qBAAU,EAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,MAAgB,EAAE,MAAoB;IAC7D,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,IAAA,qBAAU,EAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAA,qBAAU,EAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAA,qBAAU,EAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAiB;IAC1C,OAAO,MAAM,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;AACtF,CAAC;AAED,SAAgB,eAAe,CAAC,MAAiB;IAC/C,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,mGAAmG,EACnG,EAAE,GAAG,8BAAmB,EAAE,GAAG,cAAc,EAAE,EAC7C,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,IAAA,mCAAwB,EAAC,MAA6B,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1C,OAAO,MAAM,IAAA,uBAAU,EAAC,eAAe,EAAE,iBAAiB,CAAC,MAAM,EAAE,MAAwB,CAAC,CAAC,CAAC;IAChG,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,UAAU,EACV,oGAAoG,EACpG,EAAE,GAAG,8BAAmB,EAAE,GAAG,YAAY,EAAE,EAC3C,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,IAAA,mCAAwB,EAAC,MAA6B,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1C,OAAO,MAAM,IAAA,uBAAU,EAAC,eAAe,EAAE,eAAe,CAAC,MAAM,EAAE,MAAsB,CAAC,CAAC,CAAC;IAC5F,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,KAAK,EACL,oIAAoI,EACpI,EAAE,GAAG,8BAAmB,EAAE,GAAG,SAAS,EAAE,EACxC,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAmB,CAAC,CAAC;QAC/D,IAAI,eAAe;YAAE,OAAO,eAAe,CAAC;QAE5C,MAAM,MAAM,GAAG,IAAA,mCAAwB,EAAC,MAA6B,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1C,OAAO,MAAM,IAAA,uBAAU,EAAC,iBAAiB,CAAC,MAAmB,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE,MAAmB,CAAC,CAAC,CAAC;IAC7G,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,WAAW,EACX,mOAAmO,EACnO,EAAE,GAAG,8BAAmB,EAAE,GAAG,UAAU,EAAE,EACzC,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAoB,CAAC,CAAC;QACjE,IAAI,eAAe;YAAE,OAAO,eAAe,CAAC;QAE5C,MAAM,MAAM,GAAG,IAAA,mCAAwB,EAAC,MAA6B,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAE1C,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,MAAoB,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAoB,EAAE,MAA6B,CAAC,CAAC;QAC1F,MAAM,UAAU,GAAG;YACjB,iBAAiB,MAAM,CAAC,WAAW,EAAE;YACrC,gBAAgB,MAAM,CAAC,UAAU,EAAE;YACnC,qBAAqB,MAAM,CAAC,eAAe,EAAE;YAC7C,gBAAgB,MAAM,CAAC,UAAU,EAAE;SACpC,CAAC;QACF,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,cAAc,KAAK,sBAAsB,EAAE,CAAC;gBACrD,UAAU,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBAC1D,UAAU,CAAC,IAAI,CAAC,oGAAoG,CAAC,CAAC;YACxH,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;gBACpD,UAAU,CAAC,IAAI,CAAC,6GAA6G,CAAC,CAAC;YACjI,CAAC;QACH,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC1C,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,MAAM,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC;YACtC,UAAU,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,MAAM,IAAA,uBAAU,EACrB,OAAO,EACP,KAAK,CAAC,IAAI,EACV,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAC9B;YACE,UAAU;YACV,QAAQ,EAAE;gBACR,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;gBAC/C,YAAY,EAAE,MAAM,CAAC,eAAe,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;aAC3E;SACF,CACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,OAAO,EACP,0CAA0C,EAC1C,EAAE,GAAG,8BAAmB,EAAE,GAAG,WAAW,EAAE,EAC1C,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,IAAA,mCAAwB,EAAC,MAA6B,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1C,OAAO,MAAM,IAAA,uBAAU,EAAC,OAAO,EAAE,cAAc,CAAC,MAAM,EAAE,MAAqB,CAAC,CAAC,CAAC;IAClF,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,6CAA6C,EAC7C,EAAE,GAAG,8BAAmB,EAAE,GAAG,YAAY,EAAE,EAC3C,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,IAAA,mCAAwB,EAAC,MAA6B,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1C,OAAO,MAAM,IAAA,uBAAU,EAAC,OAAO,EAAE,eAAe,CAAC,MAAM,EAAE,MAAsB,CAAC,CAAC,CAAC;IACpF,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,WAAW,EACX,kCAAkC,EAClC,EAAE,GAAG,8BAAmB,EAAE,GAAG,cAAc,EAAE,EAC7C,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,IAAA,mCAAwB,EAAC,MAA6B,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1C,OAAO,MAAM,IAAA,uBAAU,EAAC,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,MAAwB,CAAC,CAAC,CAAC;IACxF,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,SAAS,EACT,0NAA0N,EAC1N,EAAE,GAAG,8BAAmB,EAAE,GAAG,YAAY,EAAE,EAC3C,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,eAAe,GAAG,oBAAoB,CAAC,MAAsB,CAAC,CAAC;QACrE,IAAI,eAAe;YAAE,OAAO,eAAe,CAAC;QAE5C,MAAM,MAAM,GAAG,IAAA,mCAAwB,EAAC,MAA6B,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1C,OAAO,MAAM,IAAA,oBAAS,EAAC,eAAe,CAAC,MAAM,EAAE,MAAsB,CAAC,CAAC,CAAC;IAC1E,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/tools/ui.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  import type { ToolTextResult, CommandExecutionOptions, CommandExecutionResult, ResponseOptions, ToolError, ToolErrorCategory, ToolErrorSource } from "./types.js";
3
3
  export declare const PACKAGE_ROOT: string;
4
4
  export declare const SERVER_NAME = "mcp-baepsae";
5
- export declare const SERVER_VERSION = "6.1.1";
5
+ export declare const SERVER_VERSION = "6.2.0";
6
6
  export declare const DEFAULT_TIMEOUT_MS = 30000;
7
7
  export declare const NATIVE_BINARY_ENV = "BAEPSAE_NATIVE_PATH";
8
8
  export declare const NATIVE_BINARY_NAME: string;
package/dist/version.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export declare const PACKAGE_NAME = "mcp-baepsae";
2
- export declare const PACKAGE_VERSION = "6.1.1";
2
+ export declare const PACKAGE_VERSION = "6.2.0";
3
3
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PACKAGE_VERSION = exports.PACKAGE_NAME = void 0;
4
4
  exports.PACKAGE_NAME = "mcp-baepsae";
5
- exports.PACKAGE_VERSION = "6.1.1";
5
+ exports.PACKAGE_VERSION = "6.2.0";
6
6
  //# sourceMappingURL=version.js.map
@@ -138,7 +138,8 @@ func handleGesture(_ parsed: ParsedOptions) throws -> Int32 {
138
138
  let screenHeight = try optionalDoubleOption("--screen-height", from: parsed)
139
139
  try ensureAccessibilityTrusted()
140
140
  try activateTarget(target)
141
- let preferredBounds = simulatorContentBounds()
141
+ let targetUdid = simulatorUdid(from: target)
142
+ let preferredBounds = simulatorContentBounds(udid: targetUdid)
142
143
  let width = screenWidth ?? Double(preferredBounds?.width ?? 0)
143
144
  let height = screenHeight ?? Double(preferredBounds?.height ?? 0)
144
145
  if width <= 0 || height <= 0 {
@@ -148,29 +149,29 @@ func handleGesture(_ parsed: ParsedOptions) throws -> Int32 {
148
149
  let end: CGPoint
149
150
  switch preset {
150
151
  case "scroll-up":
151
- start = try pointInSimulatorContent(x: width * 0.5, y: height * 0.7)
152
- end = try pointInSimulatorContent(x: width * 0.5, y: height * 0.3)
152
+ start = try pointInSimulatorContent(x: width * 0.5, y: height * 0.7, udid: targetUdid)
153
+ end = try pointInSimulatorContent(x: width * 0.5, y: height * 0.3, udid: targetUdid)
153
154
  case "scroll-down":
154
- start = try pointInSimulatorContent(x: width * 0.5, y: height * 0.3)
155
- end = try pointInSimulatorContent(x: width * 0.5, y: height * 0.7)
155
+ start = try pointInSimulatorContent(x: width * 0.5, y: height * 0.3, udid: targetUdid)
156
+ end = try pointInSimulatorContent(x: width * 0.5, y: height * 0.7, udid: targetUdid)
156
157
  case "scroll-left":
157
- start = try pointInSimulatorContent(x: width * 0.7, y: height * 0.5)
158
- end = try pointInSimulatorContent(x: width * 0.3, y: height * 0.5)
158
+ start = try pointInSimulatorContent(x: width * 0.7, y: height * 0.5, udid: targetUdid)
159
+ end = try pointInSimulatorContent(x: width * 0.3, y: height * 0.5, udid: targetUdid)
159
160
  case "scroll-right":
160
- start = try pointInSimulatorContent(x: width * 0.3, y: height * 0.5)
161
- end = try pointInSimulatorContent(x: width * 0.7, y: height * 0.5)
161
+ start = try pointInSimulatorContent(x: width * 0.3, y: height * 0.5, udid: targetUdid)
162
+ end = try pointInSimulatorContent(x: width * 0.7, y: height * 0.5, udid: targetUdid)
162
163
  case "swipe-from-left-edge":
163
- start = try pointInSimulatorContent(x: width * 0.05, y: height * 0.5)
164
- end = try pointInSimulatorContent(x: width * 0.6, y: height * 0.5)
164
+ start = try pointInSimulatorContent(x: width * 0.05, y: height * 0.5, udid: targetUdid)
165
+ end = try pointInSimulatorContent(x: width * 0.6, y: height * 0.5, udid: targetUdid)
165
166
  case "swipe-from-right-edge":
166
- start = try pointInSimulatorContent(x: width * 0.95, y: height * 0.5)
167
- end = try pointInSimulatorContent(x: width * 0.4, y: height * 0.5)
167
+ start = try pointInSimulatorContent(x: width * 0.95, y: height * 0.5, udid: targetUdid)
168
+ end = try pointInSimulatorContent(x: width * 0.4, y: height * 0.5, udid: targetUdid)
168
169
  case "swipe-from-top-edge":
169
- start = try pointInSimulatorContent(x: width * 0.5, y: height * 0.05)
170
- end = try pointInSimulatorContent(x: width * 0.5, y: height * 0.6)
170
+ start = try pointInSimulatorContent(x: width * 0.5, y: height * 0.05, udid: targetUdid)
171
+ end = try pointInSimulatorContent(x: width * 0.5, y: height * 0.6, udid: targetUdid)
171
172
  case "swipe-from-bottom-edge":
172
- start = try pointInSimulatorContent(x: width * 0.5, y: height * 0.95)
173
- end = try pointInSimulatorContent(x: width * 0.5, y: height * 0.4)
173
+ start = try pointInSimulatorContent(x: width * 0.5, y: height * 0.95, udid: targetUdid)
174
+ end = try pointInSimulatorContent(x: width * 0.5, y: height * 0.4, udid: targetUdid)
174
175
  default:
175
176
  throw NativeError.invalidArguments("Unsupported gesture preset: \(preset)")
176
177
  }
@@ -12,10 +12,10 @@ func handleDescribeUI(_ parsed: ParsedOptions) throws -> Int32 {
12
12
  var usedSimulatorContentScope = false
13
13
 
14
14
  switch target {
15
- case .simulator:
15
+ case .simulator(let udid):
16
16
  // Default behavior: Focus on in-app content group unless --all is specified
17
17
  if !parsed.flags.contains("--all") {
18
- if let contentGroup = simulatorContentRootElement(from: appRoot) {
18
+ if let contentGroup = simulatorContentRootElement(from: appRoot, udid: udid) {
19
19
  targetRoot = contentGroup
20
20
  usedSimulatorContentScope = true
21
21
  }
@@ -77,7 +77,8 @@ func handleDescribeUI(_ parsed: ParsedOptions) throws -> Int32 {
77
77
  throw NativeError.commandFailed("No accessibility elements found.")
78
78
  }
79
79
  if usedSimulatorContentScope {
80
- let auxiliaryLabels = simulatorAuxiliaryContainerLabels(from: appRoot, excluding: targetRoot)
80
+ let targetUdid = simulatorUdid(from: target)
81
+ let auxiliaryLabels = simulatorAuxiliaryContainerLabels(from: appRoot, excluding: targetRoot, udid: targetUdid)
81
82
  if let hint = formatSimulatorAuxiliaryContainerHint(auxiliaryLabels) {
82
83
  lines.append(hint)
83
84
  }
@@ -106,8 +107,8 @@ func handleSearchUI(_ parsed: ParsedOptions) throws -> Int32 {
106
107
  let appRoot = try accessibilityRootElement(for: target)
107
108
  var searchRoot = appRoot
108
109
  var simulatorContentRoot: UIElement? = nil
109
- if case .simulator = target {
110
- if let contentGroup = simulatorContentRootElement(from: appRoot) {
110
+ if case .simulator(let udid) = target {
111
+ if let contentGroup = simulatorContentRootElement(from: appRoot, udid: udid) {
111
112
  simulatorContentRoot = contentGroup
112
113
  searchRoot = contentGroup
113
114
  }
@@ -130,7 +131,8 @@ func handleSearchUI(_ parsed: ParsedOptions) throws -> Int32 {
130
131
 
131
132
  let results = searchAccessibilityElements(in: searchRoot, query: query, options: searchOpts)
132
133
  if results.isEmpty, case .simulator = target, let simulatorContentRoot {
133
- let auxiliaryCandidates = simulatorAuxiliaryContainerCandidates(from: appRoot, excluding: simulatorContentRoot)
134
+ let targetUdid = simulatorUdid(from: target)
135
+ let auxiliaryCandidates = simulatorAuxiliaryContainerCandidates(from: appRoot, excluding: simulatorContentRoot, udid: targetUdid)
134
136
  let auxiliaryResults = searchAccessibilityElements(
135
137
  in: auxiliaryCandidates.map(\.element),
136
138
  query: query,
@@ -170,11 +172,12 @@ func handleTap(_ parsed: ParsedOptions) throws -> Int32 {
170
172
  }
171
173
 
172
174
  let root = try accessibilityRootElement(for: target)
173
- let simulatorContentRoot = simulatorContentRootElement(from: root)
175
+ let targetUdid = simulatorUdid(from: target)
176
+ let simulatorContentRoot = simulatorContentRootElement(from: root, udid: targetUdid)
174
177
  let searchRoots: [UIElement]
175
178
  if case .simulator = target, !includeAll {
176
179
  if let contentRoot = simulatorContentRoot {
177
- let auxiliaryRoots = simulatorAuxiliaryContainerCandidates(from: root, excluding: contentRoot).map(\.element)
180
+ let auxiliaryRoots = simulatorAuxiliaryContainerCandidates(from: root, excluding: contentRoot, udid: targetUdid).map(\.element)
178
181
  searchRoots = [contentRoot] + auxiliaryRoots
179
182
  } else {
180
183
  searchRoots = [root]
@@ -198,7 +201,7 @@ func handleTap(_ parsed: ParsedOptions) throws -> Int32 {
198
201
  let selectorText = selectors.joined(separator: " and ")
199
202
  if case .simulator = target, !includeAll {
200
203
  let auxiliaryLabels = simulatorContentRoot.map {
201
- simulatorAuxiliaryContainerLabels(from: root, excluding: $0)
204
+ simulatorAuxiliaryContainerLabels(from: root, excluding: $0, udid: targetUdid)
202
205
  } ?? []
203
206
  throw NativeError.commandFailed(simulatorSelectorNotFoundMessage(selectorText: selectorText, auxiliaryLabels: auxiliaryLabels))
204
207
  }
@@ -211,18 +214,7 @@ func handleTap(_ parsed: ParsedOptions) throws -> Int32 {
211
214
  }
212
215
  sendDoubleClick(at: CGPoint(x: frame.midX, y: frame.midY))
213
216
  } else {
214
- let actions = ActionNames(matchedElement)
215
- if actions.contains(kAXPressAction as String) {
216
- let status = AXUIElementPerformAction(matchedElement, kAXPressAction as CFString)
217
- if status != .success {
218
- throw NativeError.commandFailed("Matched accessibility element but AXPress failed with status \(status.rawValue).")
219
- }
220
- } else if let frame = FrameAttribute(matchedElement) {
221
- let point = CGPoint(x: frame.midX, y: frame.midY)
222
- sendClick(at: point)
223
- } else {
224
- throw NativeError.commandFailed("Matched accessibility element has no AXPress action or frame for fallback click.")
225
- }
217
+ try performPrimaryAction(on: matchedElement)
226
218
  }
227
219
 
228
220
  if postDelay > 0 {
@@ -280,9 +272,10 @@ func handleTapTab(_ parsed: ParsedOptions) throws -> Int32 {
280
272
  try activateTarget(target)
281
273
 
282
274
  let appRoot = try accessibilityRootElement(for: target)
275
+ let targetUdid = simulatorUdid(from: target)
283
276
  let searchRoot: UIElement = appRoot
284
277
 
285
- guard let tabBar = findTabBarElement(in: searchRoot) else {
278
+ guard let tabBar = findTabBarElement(in: searchRoot, simulatorUdid: targetUdid) else {
286
279
  throw NativeError.commandFailed("No tab bar found in the application UI. Ensure the app has a visible tab bar.")
287
280
  }
288
281
 
@@ -306,21 +299,39 @@ func handleTapTab(_ parsed: ParsedOptions) throws -> Int32 {
306
299
  throw NativeError.invalidArguments("Tab index \(index) is out of range. Valid range: 0..\(tabCount - 1)")
307
300
  }
308
301
 
309
- let tabWidth = frame.width / CGFloat(tabCount)
310
- let tapX = frame.origin.x + tabWidth * CGFloat(index) + tabWidth / 2.0
311
- let tapY = frame.origin.y + frame.height / 2.0
312
-
313
302
  if preDelay > 0 {
314
303
  Thread.sleep(forTimeInterval: preDelay)
315
304
  }
316
305
 
306
+ let actionableItems = actionableTabBarItems(in: tabBar)
307
+ if actionableItems.count == tabCount {
308
+ try performPrimaryAction(on: actionableItems[index])
309
+ if postDelay > 0 {
310
+ Thread.sleep(forTimeInterval: postDelay)
311
+ }
312
+ return 0
313
+ }
314
+
315
+ if case .simulator = target,
316
+ let contentRoot = simulatorContentRootElement(from: appRoot, udid: targetUdid) {
317
+ let proxyItems = semanticProxyTabButtons(in: contentRoot, excluding: tabBar, expectedCount: tabCount)
318
+ if proxyItems.count == tabCount {
319
+ try performPrimaryAction(on: proxyItems[index])
320
+ if postDelay > 0 {
321
+ Thread.sleep(forTimeInterval: postDelay)
322
+ }
323
+ return 0
324
+ }
325
+ }
326
+
327
+ let tabWidth = frame.width / CGFloat(tabCount)
328
+ let tapX = frame.origin.x + tabWidth * CGFloat(index) + tabWidth / 2.0
329
+ let tapY = frame.origin.y + frame.height / 2.0
330
+
317
331
  let backend = resolveInputBackend(for: target)
318
332
  switch backend {
319
333
  case .indigoHID(let client):
320
- // IndigoHID normalizes coordinates against simulator screen dimensions.
321
- // Since tapX/tapY are screen-absolute (from AXFrame), subtract the content
322
- // area origin to make them content-relative before normalization.
323
- guard let contentBounds = simulatorContentBounds() else {
334
+ guard let contentBounds = simulatorContentBounds(udid: targetUdid) else {
324
335
  throw NativeError.commandFailed("Cannot determine simulator content bounds for IndigoHID coordinate conversion. Ensure Simulator is running.")
325
336
  }
326
337
  let relX = Double(tapX) - Double(contentBounds.origin.x)
@@ -478,8 +489,9 @@ func handleScroll(_ parsed: ParsedOptions) throws -> Int32 {
478
489
  case .indigoHID(let client):
479
490
  _ = client.swipe(fromX: Double(start.x), fromY: Double(start.y), toX: Double(end.x), toY: Double(end.y), duration: 0.45, steps: 18)
480
491
  case .cgevent:
481
- let startPoint = try pointInSimulatorContent(x: Double(start.x), y: Double(start.y))
482
- let endPoint = try pointInSimulatorContent(x: Double(end.x), y: Double(end.y))
492
+ let targetUdid = simulatorUdid(from: target)
493
+ let startPoint = try pointInSimulatorContent(x: Double(start.x), y: Double(start.y), udid: targetUdid)
494
+ let endPoint = try pointInSimulatorContent(x: Double(end.x), y: Double(end.y), udid: targetUdid)
483
495
  sendSwipe(from: startPoint, to: endPoint, duration: 0.45)
484
496
  }
485
497
  case .macApp:
@@ -18,7 +18,7 @@ func handleRightClick(_ parsed: ParsedOptions) throws -> Int32 {
18
18
  let root = try accessibilityRootElement(for: target)
19
19
  let searchRoot: UIElement
20
20
  if case .simulator = target, !includeAll {
21
- searchRoot = simulatorContentRootElement(from: root) ?? root
21
+ searchRoot = simulatorContentRootElement(from: root, udid: simulatorUdid(from: target)) ?? root
22
22
  } else {
23
23
  searchRoot = root
24
24
  }