mcp-baepsae 5.1.0 → 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.
Files changed (62) hide show
  1. package/README-KR.md +98 -33
  2. package/README.md +101 -35
  3. package/bundled/baepsae-native +0 -0
  4. package/dist/backend.d.ts +26 -0
  5. package/dist/backend.d.ts.map +1 -0
  6. package/dist/backend.js +79 -0
  7. package/dist/backend.js.map +1 -0
  8. package/dist/index.js +3 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/tool-manifest.d.ts +12 -0
  11. package/dist/tool-manifest.d.ts.map +1 -0
  12. package/dist/tool-manifest.js +79 -0
  13. package/dist/tool-manifest.js.map +1 -0
  14. package/dist/tools/info.d.ts.map +1 -1
  15. package/dist/tools/info.js +104 -5
  16. package/dist/tools/info.js.map +1 -1
  17. package/dist/tools/input.js +7 -6
  18. package/dist/tools/input.js.map +1 -1
  19. package/dist/tools/media.d.ts.map +1 -1
  20. package/dist/tools/media.js +137 -11
  21. package/dist/tools/media.js.map +1 -1
  22. package/dist/tools/simulator.js +7 -7
  23. package/dist/tools/simulator.js.map +1 -1
  24. package/dist/tools/system.d.ts.map +1 -1
  25. package/dist/tools/system.js +2 -2
  26. package/dist/tools/system.js.map +1 -1
  27. package/dist/tools/ui.d.ts.map +1 -1
  28. package/dist/tools/ui.js +126 -8
  29. package/dist/tools/ui.js.map +1 -1
  30. package/dist/tools/workflow.d.ts +3 -0
  31. package/dist/tools/workflow.d.ts.map +1 -0
  32. package/dist/tools/workflow.js +434 -0
  33. package/dist/tools/workflow.js.map +1 -0
  34. package/dist/types.d.ts +15 -0
  35. package/dist/types.d.ts.map +1 -1
  36. package/dist/utils.d.ts +19 -3
  37. package/dist/utils.d.ts.map +1 -1
  38. package/dist/utils.js +110 -5
  39. package/dist/utils.js.map +1 -1
  40. package/dist/version.d.ts +1 -1
  41. package/dist/version.js +1 -1
  42. package/native/Sources/Commands/InputCommands.swift +53 -33
  43. package/native/Sources/Commands/SystemCommands.swift +86 -0
  44. package/native/Sources/Commands/UICommands.swift +254 -35
  45. package/native/Sources/Commands/WindowCommands.swift +11 -4
  46. package/native/Sources/IndigoHID/IndigoHIDClient.swift +222 -0
  47. package/native/Sources/IndigoHID/IndigoHIDCoordinates.swift +74 -0
  48. package/native/Sources/IndigoHID/IndigoHIDEvents.swift +63 -0
  49. package/native/Sources/IndigoHID/IndigoHIDLoader.swift +102 -0
  50. package/native/Sources/IndigoHID/IndigoHIDTypes.swift +41 -0
  51. package/native/Sources/Types.swift +26 -0
  52. package/native/Sources/Utils.swift +653 -13
  53. package/native/Sources/Version.swift +1 -1
  54. package/native/Sources/main.swift +55 -8
  55. package/native/Tests/BaepsaeNativeTests/BinaryInvocationTests.swift +54 -6
  56. package/package.json +12 -3
  57. package/scripts/dump-tabbar-actions.mjs +312 -0
  58. package/scripts/generate-tool-manifest.mjs +75 -0
  59. package/scripts/research-coordinate-calibration.mjs +276 -0
  60. package/scripts/research-input-channels.mjs +327 -0
  61. package/scripts/research-tap-tab-grid.mjs +271 -0
  62. package/scripts/verify-media-capture.mjs +99 -0
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TOOL_CATEGORY_LABELS_KR = exports.TOOL_CATEGORY_ORDER = exports.TOOL_MANIFEST = void 0;
4
+ exports.formatToolManifestMarkdown = formatToolManifestMarkdown;
5
+ exports.formatToolManifestMarkdownKr = formatToolManifestMarkdownKr;
6
+ exports.TOOL_MANIFEST = [
7
+ { name: "analyze_ui", category: "UI", summary: "Describe app UI hierarchy." },
8
+ { name: "query_ui", category: "UI", summary: "Search app UI elements by text, identifier, or label." },
9
+ { name: "tap", category: "UI", summary: "Tap coordinates or accessibility element." },
10
+ { name: "tap_tab", category: "UI", summary: "Tap a tab in a tab bar by index." },
11
+ { name: "type_text", category: "UI", summary: "Type text into the target app." },
12
+ { name: "swipe", category: "UI", summary: "Perform swipe gesture in the target app." },
13
+ { name: "scroll", category: "UI", summary: "Send scroll wheel events to the target app." },
14
+ { name: "drag_drop", category: "UI", summary: "Drag and drop in the target app." },
15
+ { name: "key", category: "Input", summary: "Press a single HID keycode in the target app." },
16
+ { name: "key_sequence", category: "Input", summary: "Press multiple HID keycodes in sequence in the target app." },
17
+ { name: "key_combo", category: "Input", summary: "Press key combo in the target app." },
18
+ { name: "touch", category: "Input", summary: "Perform touch events in the target app." },
19
+ { name: "run_steps", category: "Workflow", summary: "Execute ordered workflow steps using existing interaction tools." },
20
+ { name: "list_windows", category: "System", summary: "List windows in the target app." },
21
+ { name: "activate_app", category: "System", summary: "Bring the target app to foreground." },
22
+ { name: "screenshot_app", category: "System", summary: "Take a screenshot of the target app window." },
23
+ { name: "right_click", category: "System", summary: "Right-click in the target app." },
24
+ { name: "list_simulators", category: "Simulator-only", summary: "List available simulators using simctl." },
25
+ { name: "screenshot", category: "Simulator-only", summary: "Capture a screenshot from simulator display using simctl screenshot." },
26
+ { name: "record_video", category: "Simulator-only", summary: "Record simulator display." },
27
+ { name: "stream_video", category: "Simulator-only", summary: "Stream simulator frames." },
28
+ { name: "open_url", category: "Simulator-only", summary: "Open a URL in the simulator." },
29
+ { name: "install_app", category: "Simulator-only", summary: "Install an app on the simulator." },
30
+ { name: "launch_app", category: "Simulator-only", summary: "Launch an installed app on the simulator." },
31
+ { name: "terminate_app", category: "Simulator-only", summary: "Terminate a running app on the simulator." },
32
+ { name: "uninstall_app", category: "Simulator-only", summary: "Uninstall an app from the simulator." },
33
+ { name: "button", category: "Simulator-only", summary: "Press a simulator hardware button." },
34
+ { name: "gesture", category: "Simulator-only", summary: "Execute a preset gesture pattern." },
35
+ { name: "list_apps", category: "macOS/system", summary: "List running macOS applications with their bundle IDs." },
36
+ { name: "menu_action", category: "macOS/system", summary: "Execute a menu bar action in a macOS app." },
37
+ { name: "get_focused_app", category: "macOS/system", summary: "Get information about the currently focused macOS app." },
38
+ { name: "clipboard", category: "macOS/system", summary: "Read or write the system clipboard." },
39
+ { name: "baepsae_help", category: "Utility", summary: "Show help." },
40
+ { name: "baepsae_version", category: "Utility", summary: "Show server and native binary versions." },
41
+ { name: "doctor", category: "Utility", summary: "Run readiness self-checks for host process, native binary, simulator, and accessibility." },
42
+ ];
43
+ exports.TOOL_CATEGORY_ORDER = [
44
+ "UI",
45
+ "Input",
46
+ "Workflow",
47
+ "System",
48
+ "Simulator-only",
49
+ "macOS/system",
50
+ "Utility",
51
+ ];
52
+ exports.TOOL_CATEGORY_LABELS_KR = {
53
+ UI: "UI",
54
+ Input: "Input",
55
+ Workflow: "Workflow",
56
+ System: "System",
57
+ "Simulator-only": "iOS 시뮬레이터 전용",
58
+ "macOS/system": "macOS / 시스템",
59
+ Utility: "유틸리티",
60
+ };
61
+ function formatToolManifestMarkdown() {
62
+ const lines = ["### Official public MCP surface: unified generic tools", "", "The public API surface is intentionally single-scheme: use unified generic tools with a target argument, rather than `sim_*` / `mac_*` names.", "", "| Category | Tools |", "|---|---|"];
63
+ for (const category of exports.TOOL_CATEGORY_ORDER) {
64
+ const tools = exports.TOOL_MANIFEST.filter((entry) => entry.category === category).map((entry) => `\`${entry.name}\``).join(", ");
65
+ lines.push(`| ${category} | ${tools} |`);
66
+ }
67
+ lines.push("", "Target routing is explicit in the arguments: `udid` for simulator, `bundleId` / `appName` for macOS.");
68
+ return lines.join("\n");
69
+ }
70
+ function formatToolManifestMarkdownKr() {
71
+ const lines = ["### 공식 공개 MCP 표면: unified generic tools", "", "공개 API 표면은 단일 스킴으로 정리되어 있으며, `sim_*` / `mac_*` 이름 대신 target 인자를 받는 unified generic tools 를 사용합니다.", "", "| 분류 | 도구 |", "|---|---|"];
72
+ for (const category of exports.TOOL_CATEGORY_ORDER) {
73
+ const tools = exports.TOOL_MANIFEST.filter((entry) => entry.category === category).map((entry) => `\`${entry.name}\``).join(", ");
74
+ lines.push(`| ${exports.TOOL_CATEGORY_LABELS_KR[category]} | ${tools} |`);
75
+ }
76
+ lines.push("", "대상 라우팅은 인자로 명시합니다: simulator 는 `udid`, macOS 는 `bundleId` / `appName`.");
77
+ return lines.join("\n");
78
+ }
79
+ //# sourceMappingURL=tool-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-manifest.js","sourceRoot":"","sources":["../src/tool-manifest.ts"],"names":[],"mappings":";;;AA+EA,gEAQC;AAED,oEAQC;AAlFY,QAAA,aAAa,GAAwB;IAChD,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,4BAA4B,EAAE;IAC7E,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,uDAAuD,EAAE;IACtG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,2CAA2C,EAAE;IACrF,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,kCAAkC,EAAE;IAChF,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,gCAAgC,EAAE;IAChF,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,0CAA0C,EAAE;IACtF,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,6CAA6C,EAAE;IAC1F,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,kCAAkC,EAAE;IAElF,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,+CAA+C,EAAE;IAC5F,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,4DAA4D,EAAE;IAClH,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,oCAAoC,EAAE;IACvF,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,yCAAyC,EAAE;IAExF,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,kEAAkE,EAAE;IAExH,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,iCAAiC,EAAE;IACxF,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,qCAAqC,EAAE;IAC5F,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,6CAA6C,EAAE;IACtG,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,gCAAgC,EAAE;IAEtF,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,yCAAyC,EAAE;IAC3G,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,sEAAsE,EAAE;IACnI,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,2BAA2B,EAAE;IAC1F,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE;IACzF,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,8BAA8B,EAAE;IACzF,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,kCAAkC,EAAE;IAChG,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,2CAA2C,EAAE;IACxG,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,2CAA2C,EAAE;IAC3G,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,sCAAsC,EAAE;IACtG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,oCAAoC,EAAE;IAC7F,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,mCAAmC,EAAE;IAE7F,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,wDAAwD,EAAE;IAClH,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,2CAA2C,EAAE;IACvG,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,wDAAwD,EAAE;IACxH,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,qCAAqC,EAAE;IAE/F,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE;IACpE,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,yCAAyC,EAAE;IACpG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,0FAA0F,EAAE;CAC7I,CAAC;AAEW,QAAA,mBAAmB,GAAmB;IACjD,IAAI;IACJ,OAAO;IACP,UAAU;IACV,QAAQ;IACR,gBAAgB;IAChB,cAAc;IACd,SAAS;CACV,CAAC;AAEW,QAAA,uBAAuB,GAAiC;IACnE,EAAE,EAAE,IAAI;IACR,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,gBAAgB,EAAE,cAAc;IAChC,cAAc,EAAE,aAAa;IAC7B,OAAO,EAAE,MAAM;CAChB,CAAC;AAEF,SAAgB,0BAA0B;IACxC,MAAM,KAAK,GAAG,CAAC,wDAAwD,EAAE,EAAE,EAAE,+IAA+I,EAAE,EAAE,EAAE,sBAAsB,EAAE,WAAW,CAAC,CAAC;IACvQ,KAAK,MAAM,QAAQ,IAAI,2BAAmB,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,qBAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1H,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,MAAM,KAAK,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,sGAAsG,CAAC,CAAC;IACvH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAgB,4BAA4B;IAC1C,MAAM,KAAK,GAAG,CAAC,yCAAyC,EAAE,EAAE,EAAE,mGAAmG,EAAE,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IACnM,KAAK,MAAM,QAAQ,IAAI,2BAAmB,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,qBAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1H,KAAK,CAAC,IAAI,CAAC,KAAK,+BAAuB,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,wEAAwE,CAAC,CAAC;IACzF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/tools/info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwFzD"}
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/tools/info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoCzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6KzD"}
@@ -2,7 +2,30 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerInfoTools = registerInfoTools;
4
4
  const zod_1 = require("zod");
5
+ const node_child_process_1 = require("node:child_process");
5
6
  const utils_js_1 = require("../utils.js");
7
+ function captureParentProcessDetail() {
8
+ try {
9
+ return (0, node_child_process_1.execFileSync)("/bin/ps", ["-p", String(process.ppid), "-o", "pid=,ppid=,comm="], {
10
+ encoding: "utf8",
11
+ stdio: ["ignore", "pipe", "ignore"],
12
+ }).trim();
13
+ }
14
+ catch {
15
+ return "unknown";
16
+ }
17
+ }
18
+ function extractJsonObject(text) {
19
+ const match = text.match(/(\{[\s\S]*\})\s*$/);
20
+ if (!match)
21
+ return null;
22
+ try {
23
+ return JSON.parse(match[1]);
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
6
29
  function registerInfoTools(server) {
7
30
  server.tool("baepsae_help", "Show help. Optionally pass subcommand name for compatibility reference.", {
8
31
  subcommand: zod_1.z
@@ -14,22 +37,32 @@ function registerInfoTools(server) {
14
37
  `Server: ${utils_js_1.SERVER_NAME} v${utils_js_1.SERVER_VERSION}`,
15
38
  "Mode: native-layer + simctl",
16
39
  "",
40
+ "Official public MCP surface: unified generic tools",
41
+ "",
42
+ "The public API surface is intentionally single-scheme: use unified generic tools with a target argument, rather than sim_* / mac_* names.",
43
+ "",
17
44
  "supported tools:",
18
45
  "",
19
- "UI (unified — pass udid for simulator, bundleId/appName for macOS):",
20
- "- analyze_ui, query_ui, tap, type_text, swipe, scroll, drag_drop",
46
+ "UI:",
47
+ "- analyze_ui, query_ui, tap, tap_tab, type_text, swipe, scroll, drag_drop",
21
48
  "",
22
- "Input (unified):",
49
+ "Input:",
23
50
  "- key, key_sequence, key_combo, touch",
24
51
  "",
25
- "System (unified):",
52
+ "Workflow:",
53
+ "- run_steps",
54
+ "",
55
+ "System:",
26
56
  "- list_windows, activate_app, screenshot_app, right_click",
27
57
  "",
28
58
  "Simulator-only:",
29
59
  "- list_simulators, screenshot, record_video, stream_video, open_url, install_app, launch_app, terminate_app, uninstall_app, button, gesture",
30
60
  "",
31
61
  "macOS/system:",
32
- "- list_apps, menu_action, get_focused_app, clipboard, baepsae_help, baepsae_version",
62
+ "- list_apps, menu_action, get_focused_app, clipboard",
63
+ "",
64
+ "Utility:",
65
+ "- baepsae_help, baepsae_version, doctor",
33
66
  "",
34
67
  "Accessibility tip:",
35
68
  "- launch_app -> analyze_ui/query_ui -> tap(id/label)",
@@ -64,6 +97,72 @@ function registerInfoTools(server) {
64
97
  isError: false,
65
98
  };
66
99
  });
100
+ server.tool("doctor", "Run readiness self-checks for host process, parent process, native binary, booted simulator availability, and accessibility permission.", {}, async () => {
101
+ const host = {
102
+ ok: true,
103
+ detail: `${process.platform} ${process.arch}; node=${process.version}; pid=${process.pid}; ppid=${process.ppid}`,
104
+ };
105
+ const parent = {
106
+ ok: true,
107
+ detail: captureParentProcessDetail(),
108
+ };
109
+ const nativeBinary = (0, utils_js_1.tryResolveNativeBinaryPath)();
110
+ let nativeCheck = nativeBinary.ok
111
+ ? { ok: true, detail: nativeBinary.path }
112
+ : { ok: false, detail: nativeBinary.error };
113
+ let simulator = { ok: false, detail: "native doctor not executed" };
114
+ let accessibility = { ok: false, detail: "native doctor not executed" };
115
+ if (nativeBinary.ok) {
116
+ const doctorResult = await (0, utils_js_1.runNative)(["doctor"]);
117
+ const parsed = doctorResult.content
118
+ .filter((item) => item.type === "text")
119
+ .map((item) => item.text)
120
+ .join("\n");
121
+ const json = extractJsonObject(parsed);
122
+ if (json && typeof json === "object") {
123
+ const report = json;
124
+ simulator = {
125
+ ok: Boolean(report.simulator?.ok),
126
+ detail: report.simulator?.detail ?? "unknown",
127
+ };
128
+ accessibility = {
129
+ ok: Boolean(report.accessibility?.ok),
130
+ detail: report.accessibility?.detail ?? "unknown",
131
+ };
132
+ nativeCheck = {
133
+ ok: true,
134
+ detail: `${nativeBinary.path} (doctor ok)`,
135
+ };
136
+ }
137
+ else {
138
+ nativeCheck = {
139
+ ok: false,
140
+ detail: `${nativeBinary.path} (doctor output could not be parsed)`,
141
+ };
142
+ }
143
+ }
144
+ const report = {
145
+ host,
146
+ parent,
147
+ nativeBinary: nativeCheck,
148
+ simulator,
149
+ accessibility,
150
+ };
151
+ const lines = [
152
+ "Doctor check completed.",
153
+ `host: ${host.ok ? "ok" : "warn"} — ${host.detail}`,
154
+ `parent: ${parent.ok ? "ok" : "warn"} — ${parent.detail}`,
155
+ `native binary: ${nativeCheck.ok ? "ok" : "warn"} — ${nativeCheck.detail}`,
156
+ `simulator: ${simulator.ok ? "ok" : "warn"} — ${simulator.detail}`,
157
+ `accessibility: ${accessibility.ok ? "ok" : "warn"} — ${accessibility.detail}`,
158
+ "",
159
+ JSON.stringify(report, null, 2),
160
+ ];
161
+ return {
162
+ content: [{ type: "text", text: lines.join("\n") }],
163
+ isError: !(host.ok && parent.ok && nativeCheck.ok && simulator.ok && accessibility.ok),
164
+ };
165
+ });
67
166
  server.tool("list_apps", "List running macOS applications with their bundle IDs.", {}, async () => {
68
167
  return await (0, utils_js_1.runNative)(["list-apps"]);
69
168
  });
@@ -1 +1 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/tools/info.ts"],"names":[],"mappings":";;AAaA,8CAwFC;AApGD,6BAAwB;AAExB,0CAQqB;AAErB,SAAgB,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,IAAI,CACT,cAAc,EACd,yEAAyE,EACzE;QACE,UAAU,EAAE,OAAC;aACV,IAAI,CAAC,8BAAmB,CAAC;aACzB,QAAQ,EAAE;aACV,QAAQ,CAAC,6DAA6D,CAAC;KAC3E,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,KAAK,GAAG;YACZ,WAAW,sBAAW,KAAK,yBAAc,EAAE;YAC3C,6BAA6B;YAC7B,EAAE;YACF,kBAAkB;YAClB,EAAE;YACF,qEAAqE;YACrE,kEAAkE;YAClE,EAAE;YACF,kBAAkB;YAClB,uCAAuC;YACvC,EAAE;YACF,mBAAmB;YACnB,2DAA2D;YAC3D,EAAE;YACF,iBAAiB;YACjB,6IAA6I;YAC7I,EAAE;YACF,eAAe;YACf,qFAAqF;YACrF,EAAE;YACF,oBAAoB;YACpB,sDAAsD;YACtD,4GAA4G;YAC5G,EAAE;YACF,yDAAyD,4BAAiB,EAAE;SAC7E,CAAC;QAEF,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,gCAAgC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,yCAAyC,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;QACvF,MAAM,KAAK,GAAG;YACZ,GAAG,sBAAW,IAAI,yBAAc,EAAE;YAClC,YAAY,OAAO,CAAC,OAAO,EAAE;YAC7B,aAAa,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;SAChD,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,8BAAmB,GAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,IAAA,yBAAc,EAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACtD,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CACT,WAAW,EACX,wDAAwD,EACxD,EAAE,EACF,KAAK,IAAI,EAAE;QACT,OAAO,MAAM,IAAA,oBAAS,EAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IACxC,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,wDAAwD,EACxD,EAAE,EACF,KAAK,IAAI,EAAE;QACT,OAAO,MAAM,IAAA,oBAAS,EAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC9C,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/tools/info.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerInputTools = registerInputTools;
4
4
  const zod_1 = require("zod");
5
5
  const utils_js_1 = require("../utils.js");
6
+ const backend_js_1 = require("../backend.js");
6
7
  const keySchema = {
7
8
  keycode: utils_js_1.keycodeSchema.describe("HID keycode (0-255)"),
8
9
  duration: zod_1.z.number().optional().describe("Hold duration in seconds"),
@@ -76,31 +77,31 @@ function registerInputTools(server) {
76
77
  const args = ["button", params.buttonType];
77
78
  (0, utils_js_1.pushOption)(args, "--duration", params.duration);
78
79
  args.push("--udid", params.udid);
79
- return await (0, utils_js_1.runNative)(args);
80
+ return await (0, backend_js_1.runBackend)("input", args);
80
81
  });
81
82
  server.tool("key", "Press a single HID keycode in the target app.", { ...utils_js_1.unifiedTargetSchema, ...keySchema }, async (params) => {
82
83
  const target = (0, utils_js_1.resolveUnifiedTargetArgs)(params);
83
84
  if (!Array.isArray(target))
84
85
  return target;
85
- return await (0, utils_js_1.runNative)(buildKeyArgs(target, params));
86
+ return await (0, backend_js_1.runBackend)("input", buildKeyArgs(target, params));
86
87
  });
87
88
  server.tool("key_sequence", "Press multiple HID keycodes in sequence in the target app.", { ...utils_js_1.unifiedTargetSchema, ...keySequenceSchema }, async (params) => {
88
89
  const target = (0, utils_js_1.resolveUnifiedTargetArgs)(params);
89
90
  if (!Array.isArray(target))
90
91
  return target;
91
- return await (0, utils_js_1.runNative)(buildKeySequenceArgs(target, params));
92
+ return await (0, backend_js_1.runBackend)("input", buildKeySequenceArgs(target, params));
92
93
  });
93
94
  server.tool("key_combo", "Press key combo in the target app.", { ...utils_js_1.unifiedTargetSchema, ...keyComboSchema }, async (params) => {
94
95
  const target = (0, utils_js_1.resolveUnifiedTargetArgs)(params);
95
96
  if (!Array.isArray(target))
96
97
  return target;
97
- return await (0, utils_js_1.runNative)(buildKeyComboArgs(target, params));
98
+ return await (0, backend_js_1.runBackend)("input", buildKeyComboArgs(target, params));
98
99
  });
99
100
  server.tool("touch", "Perform touch events in the target app.", { ...utils_js_1.unifiedTargetSchema, ...touchSchema }, async (params) => {
100
101
  const target = (0, utils_js_1.resolveUnifiedTargetArgs)(params);
101
102
  if (!Array.isArray(target))
102
103
  return target;
103
- return await (0, utils_js_1.runNative)(buildTouchArgs(target, params));
104
+ return await (0, backend_js_1.runBackend)("input", buildTouchArgs(target, params));
104
105
  });
105
106
  server.tool("gesture", "Execute a preset gesture pattern.", {
106
107
  udid: zod_1.z.string().min(1).describe("Simulator UDID"),
@@ -118,7 +119,7 @@ function registerInputTools(server) {
118
119
  (0, utils_js_1.pushOption)(args, "--pre-delay", params.preDelay);
119
120
  (0, utils_js_1.pushOption)(args, "--post-delay", params.postDelay);
120
121
  args.push("--udid", params.udid);
121
- return await (0, utils_js_1.runNative)(args);
122
+ return await (0, backend_js_1.runBackend)("input", args);
122
123
  });
123
124
  }
124
125
  //# sourceMappingURL=input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/tools/input.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/tools/input.ts"],"names":[],"mappings":"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"}
@@ -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;AAKzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6E1D"}
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,43 +2,167 @@
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");
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
+ }
6
100
  function registerMediaTools(server) {
7
- server.tool("stream_video", "Stream simulator frames.", {
101
+ server.tool("stream_video", "Capture a time-bounded simulator clip through the native stream-video shim.", {
8
102
  udid: zod_1.z.string().min(1).describe("Simulator UDID"),
9
- output: zod_1.z.string().optional().describe("Destination output path"),
10
- durationSeconds: zod_1.z.number().positive().optional().describe("Capture duration in seconds"),
103
+ output: zod_1.z.string().optional().describe("Destination MOV file path for the captured clip"),
104
+ durationSeconds: zod_1.z
105
+ .number()
106
+ .positive()
107
+ .optional()
108
+ .describe("Requested clip duration in seconds (currently used as a timeout budget)"),
11
109
  }, async (params) => {
12
110
  const args = ["stream-video", "--udid", params.udid];
13
111
  const durationSeconds = params.durationSeconds ?? 10;
14
112
  const outputPath = params.output ?? `simulator-stream-${Date.now()}.mov`;
15
113
  const resolvedOutput = await (0, utils_js_1.ensureOutputPath)(outputPath);
114
+ const stagingOutput = createStagingPath(resolvedOutput, "mov");
16
115
  (0, utils_js_1.pushOption)(args, "--duration", durationSeconds);
17
- args.push("--output", resolvedOutput);
18
- return await (0, utils_js_1.runNative)(args, {
116
+ args.push("--output", stagingOutput);
117
+ const result = await (0, backend_js_1.runBackend)("utility", args, {
19
118
  timeoutMs: Math.max(15_000, Math.round((durationSeconds + 15) * 1000)),
20
119
  }, {
21
- extraLines: [`Capture duration: ${durationSeconds}s`, `Output file: ${resolvedOutput}`],
120
+ extraLines: [
121
+ "Capture mode: stream-video shim.",
122
+ "Backend: simctl recordVideo (current implementation).",
123
+ `Requested duration: ${durationSeconds}s`,
124
+ `Output file: ${resolvedOutput}`,
125
+ ],
126
+ metadata: {
127
+ captureMode: "stream_video_shim",
128
+ backend: "simctl.recordVideo",
129
+ requestedDurationSeconds: durationSeconds,
130
+ outputPath: resolvedOutput,
131
+ },
22
132
  });
133
+ return await finalizeStagedCapture(result, stagingOutput, resolvedOutput);
23
134
  });
24
- server.tool("record_video", "Record simulator display.", {
135
+ server.tool("record_video", "Record simulator display directly with simctl recordVideo.", {
25
136
  udid: zod_1.z.string().min(1).describe("Simulator UDID"),
26
137
  output: zod_1.z.string().optional().describe("Output MOV file path"),
27
- durationSeconds: zod_1.z.number().positive().optional().describe("Recording duration in seconds (default: 10)"),
138
+ durationSeconds: zod_1.z
139
+ .number()
140
+ .positive()
141
+ .optional()
142
+ .describe("Requested recording duration in seconds (default: 10)"),
28
143
  }, async (params) => {
29
144
  const durationSeconds = params.durationSeconds ?? 10;
30
145
  const outputPath = params.output ?? `simulator-recording-${Date.now()}.mov`;
31
146
  const resolvedOutput = await (0, utils_js_1.ensureOutputPath)(outputPath);
147
+ const stagingOutput = createStagingPath(resolvedOutput, "mov");
32
148
  const extraLines = [
33
- `Recording duration: ${durationSeconds}s`,
149
+ "Capture mode: direct simctl recordVideo.",
150
+ `Requested duration: ${durationSeconds}s`,
34
151
  `Output file: ${resolvedOutput}`,
35
152
  ];
36
- return await (0, utils_js_1.runSimctl)(["io", params.udid, "recordVideo", "--force", resolvedOutput], {
153
+ const result = await (0, backend_js_1.runBackend)("simulator", ["io", params.udid, "recordVideo", "--force", stagingOutput], {
37
154
  timeoutMs: Math.max(15_000, Math.round((durationSeconds + 5) * 1000)),
38
155
  }, {
39
156
  timeoutIsExpected: true,
40
157
  extraLines,
158
+ metadata: {
159
+ captureMode: "record_video_direct",
160
+ backend: "simctl.recordVideo",
161
+ requestedDurationSeconds: durationSeconds,
162
+ outputPath: resolvedOutput,
163
+ },
41
164
  });
165
+ return await finalizeStagedCapture(result, stagingOutput, resolvedOutput);
42
166
  });
43
167
  server.tool("screenshot", "Capture a screenshot from simulator display using simctl screenshot.", {
44
168
  udid: zod_1.z.string().min(1).describe("Simulator UDID"),
@@ -46,9 +170,11 @@ function registerMediaTools(server) {
46
170
  }, async (params) => {
47
171
  const outputPath = params.output ?? `simulator-screenshot-${Date.now()}.png`;
48
172
  const resolvedOutput = await (0, utils_js_1.ensureOutputPath)(outputPath);
49
- return await (0, utils_js_1.runSimctl)(["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, {
50
175
  extraLines: [`Output file: ${resolvedOutput}`],
51
176
  });
177
+ return await finalizeStagedCapture(result, stagingOutput, resolvedOutput);
52
178
  });
53
179
  }
54
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":";;AA+GA,gDA+GC;AA7ND,6BAAwB;AACxB,+CAAsD;AACtD,qCAAiC;AACjC,yCAA2C;AAC3C,6CAAyC;AAGzC,0CAA0E;AAC1E,8CAA2C;AAE3C,SAAS,WAAW,CAAC,MAAsB;IACzC,OAAO,MAAM,CAAC,OAAO;SAClB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;SACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;SACxB,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAsB,EAAE,MAAc,EAAE,OAAe;IACjF,OAAO;QACL,GAAG,MAAM;QACT,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACnC,IAAI,CAAC,IAAI,KAAK,MAAM;YAClB,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAC1D,CAAC,CAAC,IAAI,CACT;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB,EAAE,SAAwB;IACpE,MAAM,aAAa,GAAG,IAAA,oBAAQ,EAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,IAAA,wBAAU,GAAE,EAAE,CAAC;IAClC,MAAM,iBAAiB,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC;QAC/D,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC;QACjF,CAAC,CAAC,qBAAqB,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC;IAC5D,OAAO,IAAA,gBAAI,EAAC,IAAA,gBAAM,GAAE,EAAE,iBAAiB,CAAC,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,MAAsB,EACtB,WAAmB,EACnB,SAAiB;IAEjB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAA,aAAE,EAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAA,eAAI,EAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,aAAE,EAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,uDAAuD,WAAW,aAAa,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YACxJ,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAA,wBAAa,EAAC;gBACnB,IAAI,EAAE,kCAAkC;gBACxC,QAAQ,EAAE,WAAW;gBACrB,OAAO;gBACP,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,SAAS;aAClB,CAAC;YACF,QAAQ,EAAE;gBACR,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAC1B,iBAAiB,EAAE,WAAW;gBAC9B,UAAU,EAAE,SAAS;aACtB;SACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAA,mBAAQ,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACvC,MAAM,IAAA,aAAE,EAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,8CAA8C,WAAW,uBAAuB,SAAS,aAAa,OAAO,EAAE,CAAC,IAAI,EAAE;iBACnJ,CAAC;YACF,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAA,wBAAa,EAAC;gBACnB,IAAI,EAAE,0CAA0C;gBAChD,QAAQ,EAAE,WAAW;gBACrB,OAAO;gBACP,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,SAAS;aAClB,CAAC;YACF,QAAQ,EAAE;gBACR,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAC1B,iBAAiB,EAAE,WAAW;gBAC9B,UAAU,EAAE,SAAS;aACtB;SACF,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACrE,OAAO;QACL,GAAG,SAAS;QACZ,QAAQ,EAAE;YACR,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC7B,iBAAiB,EAAE,WAAW;YAC9B,UAAU,EAAE,SAAS;SACtB;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAAC,MAAiB;IAClD,MAAM,CAAC,IAAI,CACT,cAAc,EACd,6EAA6E,EAC7E;QACE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAClD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;QACzF,eAAe,EAAE,OAAC;aACf,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,yEAAyE,CAAC;KACvF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAErD,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,oBAAoB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;QACzE,MAAM,cAAc,GAAG,MAAM,IAAA,2BAAgB,EAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAC/D,IAAA,qBAAU,EAAC,IAAI,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAErC,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAU,EAC7B,SAAS,EACT,IAAI,EACJ;YACE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;SACvE,EACD;YACE,UAAU,EAAE;gBACV,kCAAkC;gBAClC,uDAAuD;gBACvD,uBAAuB,eAAe,GAAG;gBACzC,gBAAgB,cAAc,EAAE;aACjC;YACD,QAAQ,EAAE;gBACR,WAAW,EAAE,mBAAmB;gBAChC,OAAO,EAAE,oBAAoB;gBAC7B,wBAAwB,EAAE,eAAe;gBACzC,UAAU,EAAE,cAAc;aAC3B;SACF,CACF,CAAC;QACF,OAAO,MAAM,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IAC5E,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,4DAA4D,EAC5D;QACE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAClD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QAC9D,eAAe,EAAE,OAAC;aACf,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,uDAAuD,CAAC;KACrE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,uBAAuB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;QAC5E,MAAM,cAAc,GAAG,MAAM,IAAA,2BAAgB,EAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAE/D,MAAM,UAAU,GAAG;YACjB,0CAA0C;YAC1C,uBAAuB,eAAe,GAAG;YACzC,gBAAgB,cAAc,EAAE;SACjC,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAU,EAC7B,WAAW,EACX,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,EAC5D;YACE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;SACtE,EACD;YACE,iBAAiB,EAAE,IAAI;YACvB,UAAU;YACV,QAAQ,EAAE;gBACR,WAAW,EAAE,qBAAqB;gBAClC,OAAO,EAAE,oBAAoB;gBAC7B,wBAAwB,EAAE,eAAe;gBACzC,UAAU,EAAE,cAAc;aAC3B;SACF,CACF,CAAC;QACF,OAAO,MAAM,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IAC5E,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,sEAAsE,EACtE;QACE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAClD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KAC/D,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,wBAAwB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;QAC7E,MAAM,cAAc,GAAG,MAAM,IAAA,2BAAgB,EAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAE/D,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAU,EAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE;YACxG,UAAU,EAAE,CAAC,gBAAgB,cAAc,EAAE,CAAC;SAC/C,CAAC,CAAC;QACH,OAAO,MAAM,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IAC5E,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -3,29 +3,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerSimulatorTools = registerSimulatorTools;
4
4
  const node_path_1 = require("node:path");
5
5
  const zod_1 = require("zod");
6
- const utils_js_1 = require("../utils.js");
6
+ const backend_js_1 = require("../backend.js");
7
7
  function registerSimulatorTools(server) {
8
8
  server.tool("list_simulators", "List available simulators using simctl.", {}, async () => {
9
- return await (0, utils_js_1.runSimctl)(["list", "devices", "available"]);
9
+ return await (0, backend_js_1.runBackend)("simulator", ["list", "devices", "available"]);
10
10
  });
11
11
  server.tool("open_url", "Open a URL in the simulator (e.g. Safari or deep link).", {
12
12
  udid: zod_1.z.string().min(1).describe("Simulator UDID"),
13
13
  url: zod_1.z.string().min(1).describe("URL to open"),
14
14
  }, async (params) => {
15
- return await (0, utils_js_1.runSimctl)(["openurl", params.udid, params.url]);
15
+ return await (0, backend_js_1.runBackend)("simulator", ["openurl", params.udid, params.url]);
16
16
  });
17
17
  server.tool("install_app", "Install an app (.app, .ipa) on the simulator.", {
18
18
  udid: zod_1.z.string().min(1).describe("Simulator UDID"),
19
19
  path: zod_1.z.string().min(1).describe("Path to .app or .ipa file"),
20
20
  }, async (params) => {
21
21
  const resolvedPath = (0, node_path_1.resolve)(params.path);
22
- return await (0, utils_js_1.runSimctl)(["install", params.udid, resolvedPath]);
22
+ return await (0, backend_js_1.runBackend)("simulator", ["install", params.udid, resolvedPath]);
23
23
  });
24
24
  server.tool("uninstall_app", "Uninstall an app from the simulator.", {
25
25
  udid: zod_1.z.string().min(1).describe("Simulator UDID"),
26
26
  bundleId: zod_1.z.string().min(1).describe("App Bundle Identifier (e.g. com.example.app)"),
27
27
  }, async (params) => {
28
- return await (0, utils_js_1.runSimctl)(["uninstall", params.udid, params.bundleId]);
28
+ return await (0, backend_js_1.runBackend)("simulator", ["uninstall", params.udid, params.bundleId]);
29
29
  });
30
30
  server.tool("launch_app", "Launch an installed app on the simulator.", {
31
31
  udid: zod_1.z.string().min(1).describe("Simulator UDID"),
@@ -40,13 +40,13 @@ function registerSimulatorTools(server) {
40
40
  const env = params.env
41
41
  ? Object.fromEntries(Object.entries(params.env).map(([k, v]) => [`SIMCTL_CHILD_${k}`, v]))
42
42
  : undefined;
43
- return await (0, utils_js_1.runSimctl)(args, { env });
43
+ return await (0, backend_js_1.runBackend)("simulator", args, { env });
44
44
  });
45
45
  server.tool("terminate_app", "Terminate a running app on the simulator.", {
46
46
  udid: zod_1.z.string().min(1).describe("Simulator UDID"),
47
47
  bundleId: zod_1.z.string().min(1).describe("App Bundle Identifier"),
48
48
  }, async (params) => {
49
- return await (0, utils_js_1.runSimctl)(["terminate", params.udid, params.bundleId]);
49
+ return await (0, backend_js_1.runBackend)("simulator", ["terminate", params.udid, params.bundleId]);
50
50
  });
51
51
  }
52
52
  //# sourceMappingURL=simulator.js.map