react-native-ai-debugger 1.0.9 → 1.0.11
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.md +31 -0
- package/build/core/connection.d.ts.map +1 -1
- package/build/core/connection.js +16 -2
- package/build/core/connection.js.map +1 -1
- package/build/core/index.d.ts +3 -2
- package/build/core/index.d.ts.map +1 -1
- package/build/core/index.js +4 -2
- package/build/core/index.js.map +1 -1
- package/build/core/ios.d.ts +10 -0
- package/build/core/ios.d.ts.map +1 -1
- package/build/core/ios.js +99 -65
- package/build/core/ios.js.map +1 -1
- package/build/core/state.d.ts +3 -0
- package/build/core/state.d.ts.map +1 -1
- package/build/core/state.js +17 -0
- package/build/core/state.js.map +1 -1
- package/build/core/telemetry.d.ts.map +1 -1
- package/build/core/telemetry.js +19 -8
- package/build/core/telemetry.js.map +1 -1
- package/build/index.js +76 -40
- package/build/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -587,6 +587,37 @@ The server prioritizes devices in this order:
|
|
|
587
587
|
- Try `clear_logs` then trigger some actions in the app
|
|
588
588
|
- Check `get_apps` to verify connection status
|
|
589
589
|
|
|
590
|
+
## Telemetry
|
|
591
|
+
|
|
592
|
+
This package collects anonymous usage telemetry to help improve the product. No personal information is collected.
|
|
593
|
+
|
|
594
|
+
### What is collected
|
|
595
|
+
|
|
596
|
+
| Data | Purpose |
|
|
597
|
+
|------|---------|
|
|
598
|
+
| Tool names | Which MCP tools are used most |
|
|
599
|
+
| Success/failure | Error rates for reliability improvements |
|
|
600
|
+
| Duration (ms) | Performance monitoring |
|
|
601
|
+
| Session start/end | Retention analysis |
|
|
602
|
+
| Platform | macOS/Linux/Windows distribution |
|
|
603
|
+
| Server version | Adoption of new versions |
|
|
604
|
+
|
|
605
|
+
**Not collected**: No file paths, code content, network data, or personally identifiable information.
|
|
606
|
+
|
|
607
|
+
### Opt-out
|
|
608
|
+
|
|
609
|
+
To disable telemetry, set the environment variable:
|
|
610
|
+
|
|
611
|
+
```bash
|
|
612
|
+
export RN_DEBUGGER_TELEMETRY=false
|
|
613
|
+
```
|
|
614
|
+
|
|
615
|
+
Or inline:
|
|
616
|
+
|
|
617
|
+
```bash
|
|
618
|
+
RN_DEBUGGER_TELEMETRY=false npx react-native-ai-debugger
|
|
619
|
+
```
|
|
620
|
+
|
|
590
621
|
## License
|
|
591
622
|
|
|
592
623
|
MIT
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/core/connection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAoB,YAAY,EAAkB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/core/connection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAoB,YAAY,EAAkB,MAAM,YAAY,CAAC;AAMtG,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA4B/D;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CA4M5F;AAGD,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuFvF;AAGD,wBAAgB,gBAAgB,IAAI,KAAK,CAAC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,YAAY,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;CACxB,CAAC,CAMD;AAGD,wBAAgB,oBAAoB,IAAI,YAAY,GAAG,IAAI,CAM1D;AAGD,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
|
package/build/core/connection.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import WebSocket from "ws";
|
|
2
|
-
import { connectedApps, pendingExecutions, getNextMessageId, logBuffer, networkBuffer } from "./state.js";
|
|
2
|
+
import { connectedApps, pendingExecutions, getNextMessageId, logBuffer, networkBuffer, setActiveSimulatorUdid, clearActiveSimulatorIfSource } from "./state.js";
|
|
3
3
|
import { mapConsoleType } from "./logs.js";
|
|
4
|
+
import { findSimulatorByName } from "./ios.js";
|
|
4
5
|
// Format CDP RemoteObject to readable string
|
|
5
6
|
export function formatRemoteObject(result) {
|
|
6
7
|
if (result.type === "undefined") {
|
|
@@ -169,7 +170,7 @@ export async function connectToDevice(device, port) {
|
|
|
169
170
|
}
|
|
170
171
|
try {
|
|
171
172
|
const ws = new WebSocket(device.webSocketDebuggerUrl);
|
|
172
|
-
ws.on("open", () => {
|
|
173
|
+
ws.on("open", async () => {
|
|
173
174
|
connectedApps.set(appKey, { ws, deviceInfo: device, port });
|
|
174
175
|
console.error(`[rn-ai-debugger] Connected to ${device.title}`);
|
|
175
176
|
// Enable Runtime domain to receive console messages
|
|
@@ -187,6 +188,15 @@ export async function connectToDevice(device, port) {
|
|
|
187
188
|
id: getNextMessageId(),
|
|
188
189
|
method: "Network.enable"
|
|
189
190
|
}));
|
|
191
|
+
// Try to resolve iOS simulator UDID from device name
|
|
192
|
+
// This enables automatic device scoping for iOS tools
|
|
193
|
+
if (device.deviceName) {
|
|
194
|
+
const simulatorUdid = await findSimulatorByName(device.deviceName);
|
|
195
|
+
if (simulatorUdid) {
|
|
196
|
+
setActiveSimulatorUdid(simulatorUdid, appKey);
|
|
197
|
+
console.error(`[rn-ai-debugger] Linked to iOS simulator: ${simulatorUdid}`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
190
200
|
resolve(`Connected to ${device.title} (${device.deviceName})`);
|
|
191
201
|
});
|
|
192
202
|
ws.on("message", (data) => {
|
|
@@ -200,10 +210,14 @@ export async function connectToDevice(device, port) {
|
|
|
200
210
|
});
|
|
201
211
|
ws.on("close", () => {
|
|
202
212
|
connectedApps.delete(appKey);
|
|
213
|
+
// Clear active simulator UDID if this connection set it
|
|
214
|
+
clearActiveSimulatorIfSource(appKey);
|
|
203
215
|
console.error(`[rn-ai-debugger] Disconnected from ${device.title}`);
|
|
204
216
|
});
|
|
205
217
|
ws.on("error", (error) => {
|
|
206
218
|
connectedApps.delete(appKey);
|
|
219
|
+
// Clear active simulator UDID if this connection set it
|
|
220
|
+
clearActiveSimulatorIfSource(appKey);
|
|
207
221
|
reject(`Failed to connect to ${device.title}: ${error.message}`);
|
|
208
222
|
});
|
|
209
223
|
// Timeout after 5 seconds
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/core/connection.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/core/connection.ts"],"names":[],"mappings":"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"}
|
package/build/core/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from "./types.js";
|
|
2
|
-
export { logBuffer, networkBuffer, bundleErrorBuffer, connectedApps, pendingExecutions, getNextMessageId } from "./state.js";
|
|
2
|
+
export { logBuffer, networkBuffer, bundleErrorBuffer, connectedApps, pendingExecutions, getNextMessageId, getActiveSimulatorUdid } from "./state.js";
|
|
3
3
|
export { LogBuffer, mapConsoleType, formatLogs, getLogs, searchLogs } from "./logs.js";
|
|
4
4
|
export { NetworkBuffer, formatRequest, formatRequests, formatRequestDetails, getNetworkRequests, searchNetworkRequests, getNetworkStats } from "./network.js";
|
|
5
5
|
export { COMMON_PORTS, isPortOpen, scanMetroPorts, fetchDevices, selectMainDevice, discoverMetroDevices } from "./metro.js";
|
|
@@ -7,8 +7,9 @@ export { formatRemoteObject, handleCDPMessage, connectToDevice, getConnectedApps
|
|
|
7
7
|
export { executeInApp, listDebugGlobals, inspectGlobal, reloadApp } from "./executor.js";
|
|
8
8
|
export { isAdbAvailable, listAndroidDevices, getDefaultAndroidDevice, androidScreenshot, androidInstallApp, androidLaunchApp, androidListPackages, ANDROID_KEY_EVENTS, androidTap, androidLongPress, androidSwipe, androidInputText, androidKeyEvent, androidGetScreenSize, androidGetDensity, androidGetStatusBarHeight, androidDescribeAll, androidDescribePoint, androidTapElement, androidGetUITree, androidFindElement, androidWaitForElement } from "./android.js";
|
|
9
9
|
export type { AndroidAccessibilityElement, AndroidDescribeResult, AndroidUIElement, FindElementResult, WaitForElementResult, FindElementOptions } from "./android.js";
|
|
10
|
-
export { isSimctlAvailable, listIOSSimulators, getBootedSimulatorUdid, iosScreenshot, iosInstallApp, iosLaunchApp, iosOpenUrl, iosTerminateApp, iosBootSimulator, isIdbAvailable, iosTap, iosTapElement, iosSwipe, iosInputText, iosButton, iosKeyEvent, iosKeySequence, iosDescribeAll, iosDescribePoint, IOS_BUTTON_TYPES, iosGetUITree, iosFindElement, iosWaitForElement } from "./ios.js";
|
|
10
|
+
export { isSimctlAvailable, listIOSSimulators, getBootedSimulatorUdid, findSimulatorByName, getActiveOrBootedSimulatorUdid, iosScreenshot, iosInstallApp, iosLaunchApp, iosOpenUrl, iosTerminateApp, iosBootSimulator, isIdbAvailable, iosTap, iosTapElement, iosSwipe, iosInputText, iosButton, iosKeyEvent, iosKeySequence, iosDescribeAll, iosDescribePoint, IOS_BUTTON_TYPES, iosGetUITree, iosFindElement, iosWaitForElement } from "./ios.js";
|
|
11
11
|
export type { iOSButtonType, iOSAccessibilityElement, iOSDescribeResult, IOSUIElement, IOSFindElementResult, IOSWaitForElementResult, IOSFindElementOptions } from "./ios.js";
|
|
12
12
|
export { BundleErrorBuffer, parseMetroError, formatBundleError, formatBundleErrors, connectMetroBuildEvents, disconnectMetroBuildEvents, isConnectedToMetroBuildEvents, fetchBundleStatus, getBundleErrors, getBundleStatusWithErrors } from "./bundle.js";
|
|
13
13
|
export { startDebugHttpServer, getDebugServerPort } from "./httpServer.js";
|
|
14
|
+
export { initTelemetry, isTelemetryEnabled, trackToolInvocation } from "./telemetry.js";
|
|
14
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGrJ,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvF,OAAO,EACH,aAAa,EACb,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACH,YAAY,EACZ,UAAU,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACvB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACH,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EAClB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAGzF,OAAO,EACH,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EAEnB,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EAEzB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EAEjB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACxB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACR,2BAA2B,EAC3B,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EACrB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAEH,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,8BAA8B,EAC9B,aAAa,EACb,aAAa,EACb,YAAY,EACZ,UAAU,EACV,eAAe,EACf,gBAAgB,EAEhB,cAAc,EACd,MAAM,EACN,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,WAAW,EACX,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAEhB,YAAY,EACZ,cAAc,EACd,iBAAiB,EACpB,MAAM,UAAU,CAAC;AAGlB,YAAY,EACR,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACxB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACH,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,EAC7B,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EAC5B,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/build/core/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Types
|
|
2
2
|
export * from "./types.js";
|
|
3
3
|
// State
|
|
4
|
-
export { logBuffer, networkBuffer, bundleErrorBuffer, connectedApps, pendingExecutions, getNextMessageId } from "./state.js";
|
|
4
|
+
export { logBuffer, networkBuffer, bundleErrorBuffer, connectedApps, pendingExecutions, getNextMessageId, getActiveSimulatorUdid } from "./state.js";
|
|
5
5
|
// Logs
|
|
6
6
|
export { LogBuffer, mapConsoleType, formatLogs, getLogs, searchLogs } from "./logs.js";
|
|
7
7
|
// Network
|
|
@@ -23,7 +23,7 @@ androidGetUITree, androidFindElement, androidWaitForElement } from "./android.js
|
|
|
23
23
|
// iOS (simctl + IDB)
|
|
24
24
|
export {
|
|
25
25
|
// simctl-based tools
|
|
26
|
-
isSimctlAvailable, listIOSSimulators, getBootedSimulatorUdid, iosScreenshot, iosInstallApp, iosLaunchApp, iosOpenUrl, iosTerminateApp, iosBootSimulator,
|
|
26
|
+
isSimctlAvailable, listIOSSimulators, getBootedSimulatorUdid, findSimulatorByName, getActiveOrBootedSimulatorUdid, iosScreenshot, iosInstallApp, iosLaunchApp, iosOpenUrl, iosTerminateApp, iosBootSimulator,
|
|
27
27
|
// IDB-based UI tools
|
|
28
28
|
isIdbAvailable, iosTap, iosTapElement, iosSwipe, iosInputText, iosButton, iosKeyEvent, iosKeySequence, iosDescribeAll, iosDescribePoint, IOS_BUTTON_TYPES,
|
|
29
29
|
// UI Accessibility (Element Finding) - Requires IDB
|
|
@@ -32,4 +32,6 @@ iosGetUITree, iosFindElement, iosWaitForElement } from "./ios.js";
|
|
|
32
32
|
export { BundleErrorBuffer, parseMetroError, formatBundleError, formatBundleErrors, connectMetroBuildEvents, disconnectMetroBuildEvents, isConnectedToMetroBuildEvents, fetchBundleStatus, getBundleErrors, getBundleStatusWithErrors } from "./bundle.js";
|
|
33
33
|
// Debug HTTP Server
|
|
34
34
|
export { startDebugHttpServer, getDebugServerPort } from "./httpServer.js";
|
|
35
|
+
// Telemetry
|
|
36
|
+
export { initTelemetry, isTelemetryEnabled, trackToolInvocation } from "./telemetry.js";
|
|
35
37
|
//# sourceMappingURL=index.js.map
|
package/build/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,QAAQ;AACR,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,QAAQ;AACR,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAErJ,OAAO;AACP,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvF,UAAU;AACV,OAAO,EACH,aAAa,EACb,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EAClB,MAAM,cAAc,CAAC;AAEtB,QAAQ;AACR,OAAO,EACH,YAAY,EACZ,UAAU,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACvB,MAAM,YAAY,CAAC;AAEpB,aAAa;AACb,OAAO,EACH,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EAClB,MAAM,iBAAiB,CAAC;AAEzB,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEzF,gBAAgB;AAChB,OAAO,EACH,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB;AACnB,qBAAqB;AACrB,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB;AACzB,+BAA+B;AAC/B,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB;AACjB,qCAAqC;AACrC,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACxB,MAAM,cAAc,CAAC;AAYtB,qBAAqB;AACrB,OAAO;AACH,qBAAqB;AACrB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,8BAA8B,EAC9B,aAAa,EACb,aAAa,EACb,YAAY,EACZ,UAAU,EACV,eAAe,EACf,gBAAgB;AAChB,qBAAqB;AACrB,cAAc,EACd,MAAM,EACN,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,WAAW,EACX,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB;AAChB,oDAAoD;AACpD,YAAY,EACZ,cAAc,EACd,iBAAiB,EACpB,MAAM,UAAU,CAAC;AAalB,8BAA8B;AAC9B,OAAO,EACH,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,EAC7B,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EAC5B,MAAM,aAAa,CAAC;AAErB,oBAAoB;AACpB,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/build/core/ios.d.ts
CHANGED
|
@@ -52,6 +52,16 @@ export declare function listIOSSimulators(onlyBooted?: boolean): Promise<iOSResu
|
|
|
52
52
|
* Get the booted simulator UDID
|
|
53
53
|
*/
|
|
54
54
|
export declare function getBootedSimulatorUdid(): Promise<string | null>;
|
|
55
|
+
/**
|
|
56
|
+
* Find a booted simulator's UDID by its device name
|
|
57
|
+
* Matches Metro's deviceName against simulator names from simctl
|
|
58
|
+
*/
|
|
59
|
+
export declare function findSimulatorByName(deviceName: string): Promise<string | null>;
|
|
60
|
+
/**
|
|
61
|
+
* Get the active simulator UDID (Metro-connected) or fall back to first booted simulator
|
|
62
|
+
* This enables automatic device scoping based on Metro connection
|
|
63
|
+
*/
|
|
64
|
+
export declare function getActiveOrBootedSimulatorUdid(): Promise<string | null>;
|
|
55
65
|
/**
|
|
56
66
|
* Take a screenshot from an iOS simulator
|
|
57
67
|
*/
|
package/build/core/ios.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ios.d.ts","sourceRoot":"","sources":["../../src/core/ios.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ios.d.ts","sourceRoot":"","sources":["../../src/core/ios.ts"],"names":[],"mappings":"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"}
|
package/build/core/ios.js
CHANGED
|
@@ -4,6 +4,7 @@ import { existsSync } from "fs";
|
|
|
4
4
|
import path from "path";
|
|
5
5
|
import os from "os";
|
|
6
6
|
import sharp from "sharp";
|
|
7
|
+
import { getActiveSimulatorUdid } from "./state.js";
|
|
7
8
|
const execAsync = promisify(exec);
|
|
8
9
|
const execFileAsync = promisify(execFile);
|
|
9
10
|
// simctl command timeout in milliseconds
|
|
@@ -185,6 +186,54 @@ export async function getBootedSimulatorUdid() {
|
|
|
185
186
|
return null;
|
|
186
187
|
}
|
|
187
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* Find a booted simulator's UDID by its device name
|
|
191
|
+
* Matches Metro's deviceName against simulator names from simctl
|
|
192
|
+
*/
|
|
193
|
+
export async function findSimulatorByName(deviceName) {
|
|
194
|
+
try {
|
|
195
|
+
const { stdout } = await execAsync("xcrun simctl list devices booted -j", {
|
|
196
|
+
timeout: SIMCTL_TIMEOUT
|
|
197
|
+
});
|
|
198
|
+
const data = JSON.parse(stdout);
|
|
199
|
+
const normalizedDeviceName = deviceName.toLowerCase().trim();
|
|
200
|
+
for (const devices of Object.values(data.devices)) {
|
|
201
|
+
if (!Array.isArray(devices))
|
|
202
|
+
continue;
|
|
203
|
+
for (const device of devices) {
|
|
204
|
+
if (device.state !== "Booted")
|
|
205
|
+
continue;
|
|
206
|
+
const normalizedSimName = device.name.toLowerCase().trim();
|
|
207
|
+
// Exact match
|
|
208
|
+
if (normalizedSimName === normalizedDeviceName) {
|
|
209
|
+
return device.udid;
|
|
210
|
+
}
|
|
211
|
+
// Partial match (deviceName contains simulator name or vice versa)
|
|
212
|
+
if (normalizedSimName.includes(normalizedDeviceName) ||
|
|
213
|
+
normalizedDeviceName.includes(normalizedSimName)) {
|
|
214
|
+
return device.udid;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get the active simulator UDID (Metro-connected) or fall back to first booted simulator
|
|
226
|
+
* This enables automatic device scoping based on Metro connection
|
|
227
|
+
*/
|
|
228
|
+
export async function getActiveOrBootedSimulatorUdid() {
|
|
229
|
+
// First, check if there's an active Metro-connected simulator
|
|
230
|
+
const activeUdid = getActiveSimulatorUdid();
|
|
231
|
+
if (activeUdid) {
|
|
232
|
+
return activeUdid;
|
|
233
|
+
}
|
|
234
|
+
// Fall back to first booted simulator
|
|
235
|
+
return getBootedSimulatorUdid();
|
|
236
|
+
}
|
|
188
237
|
/**
|
|
189
238
|
* Build device selector for simctl command
|
|
190
239
|
*/
|
|
@@ -203,21 +252,18 @@ export async function iosScreenshot(outputPath, udid) {
|
|
|
203
252
|
error: "Xcode command line tools not available. Install Xcode from the App Store."
|
|
204
253
|
};
|
|
205
254
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
if (!
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
error: "No iOS simulator is currently running. Start a simulator first."
|
|
214
|
-
};
|
|
215
|
-
}
|
|
255
|
+
// Resolve target UDID (prefer Metro-connected simulator)
|
|
256
|
+
const targetUdid = udid || (await getActiveOrBootedSimulatorUdid());
|
|
257
|
+
if (!targetUdid) {
|
|
258
|
+
return {
|
|
259
|
+
success: false,
|
|
260
|
+
error: "No iOS simulator is currently running. Start a simulator first."
|
|
261
|
+
};
|
|
216
262
|
}
|
|
217
263
|
// Generate output path if not provided
|
|
218
264
|
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
219
265
|
const finalOutputPath = outputPath || path.join(os.tmpdir(), `ios-screenshot-${timestamp}.png`);
|
|
220
|
-
await execAsync(`xcrun simctl io ${
|
|
266
|
+
await execAsync(`xcrun simctl io ${targetUdid} screenshot "${finalOutputPath}"`, {
|
|
221
267
|
timeout: SIMCTL_TIMEOUT
|
|
222
268
|
});
|
|
223
269
|
// Resize image if needed (API limit: 2000px max for multi-image requests)
|
|
@@ -280,18 +326,15 @@ export async function iosInstallApp(appPath, udid) {
|
|
|
280
326
|
error: `App bundle not found: ${appPath}`
|
|
281
327
|
};
|
|
282
328
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
if (!
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
error: "No iOS simulator is currently running. Start a simulator first."
|
|
291
|
-
};
|
|
292
|
-
}
|
|
329
|
+
// Resolve target UDID (prefer Metro-connected simulator)
|
|
330
|
+
const targetUdid = udid || (await getActiveOrBootedSimulatorUdid());
|
|
331
|
+
if (!targetUdid) {
|
|
332
|
+
return {
|
|
333
|
+
success: false,
|
|
334
|
+
error: "No iOS simulator is currently running. Start a simulator first."
|
|
335
|
+
};
|
|
293
336
|
}
|
|
294
|
-
await execAsync(`xcrun simctl install ${
|
|
337
|
+
await execAsync(`xcrun simctl install ${targetUdid} "${appPath}"`, {
|
|
295
338
|
timeout: 120000 // 2 minute timeout for install
|
|
296
339
|
});
|
|
297
340
|
return {
|
|
@@ -318,18 +361,15 @@ export async function iosLaunchApp(bundleId, udid) {
|
|
|
318
361
|
error: "Xcode command line tools not available. Install Xcode from the App Store."
|
|
319
362
|
};
|
|
320
363
|
}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
if (!
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
error: "No iOS simulator is currently running. Start a simulator first."
|
|
329
|
-
};
|
|
330
|
-
}
|
|
364
|
+
// Resolve target UDID (prefer Metro-connected simulator)
|
|
365
|
+
const targetUdid = udid || (await getActiveOrBootedSimulatorUdid());
|
|
366
|
+
if (!targetUdid) {
|
|
367
|
+
return {
|
|
368
|
+
success: false,
|
|
369
|
+
error: "No iOS simulator is currently running. Start a simulator first."
|
|
370
|
+
};
|
|
331
371
|
}
|
|
332
|
-
await execAsync(`xcrun simctl launch ${
|
|
372
|
+
await execAsync(`xcrun simctl launch ${targetUdid} ${bundleId}`, {
|
|
333
373
|
timeout: SIMCTL_TIMEOUT
|
|
334
374
|
});
|
|
335
375
|
return {
|
|
@@ -356,18 +396,15 @@ export async function iosOpenUrl(url, udid) {
|
|
|
356
396
|
error: "Xcode command line tools not available. Install Xcode from the App Store."
|
|
357
397
|
};
|
|
358
398
|
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
if (!
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
error: "No iOS simulator is currently running. Start a simulator first."
|
|
367
|
-
};
|
|
368
|
-
}
|
|
399
|
+
// Resolve target UDID (prefer Metro-connected simulator)
|
|
400
|
+
const targetUdid = udid || (await getActiveOrBootedSimulatorUdid());
|
|
401
|
+
if (!targetUdid) {
|
|
402
|
+
return {
|
|
403
|
+
success: false,
|
|
404
|
+
error: "No iOS simulator is currently running. Start a simulator first."
|
|
405
|
+
};
|
|
369
406
|
}
|
|
370
|
-
await execAsync(`xcrun simctl openurl ${
|
|
407
|
+
await execAsync(`xcrun simctl openurl ${targetUdid} "${url}"`, {
|
|
371
408
|
timeout: SIMCTL_TIMEOUT
|
|
372
409
|
});
|
|
373
410
|
return {
|
|
@@ -394,18 +431,15 @@ export async function iosTerminateApp(bundleId, udid) {
|
|
|
394
431
|
error: "Xcode command line tools not available. Install Xcode from the App Store."
|
|
395
432
|
};
|
|
396
433
|
}
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
if (!
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
error: "No iOS simulator is currently running. Start a simulator first."
|
|
405
|
-
};
|
|
406
|
-
}
|
|
434
|
+
// Resolve target UDID (prefer Metro-connected simulator)
|
|
435
|
+
const targetUdid = udid || (await getActiveOrBootedSimulatorUdid());
|
|
436
|
+
if (!targetUdid) {
|
|
437
|
+
return {
|
|
438
|
+
success: false,
|
|
439
|
+
error: "No iOS simulator is currently running. Start a simulator first."
|
|
440
|
+
};
|
|
407
441
|
}
|
|
408
|
-
await execAsync(`xcrun simctl terminate ${
|
|
442
|
+
await execAsync(`xcrun simctl terminate ${targetUdid} ${bundleId}`, {
|
|
409
443
|
timeout: SIMCTL_TIMEOUT
|
|
410
444
|
});
|
|
411
445
|
return {
|
|
@@ -476,8 +510,8 @@ export async function iosTap(x, y, options) {
|
|
|
476
510
|
error: "IDB is not installed. Install with: brew install idb-companion"
|
|
477
511
|
};
|
|
478
512
|
}
|
|
479
|
-
// Get simulator UDID (
|
|
480
|
-
const targetUdid = options?.udid || (await
|
|
513
|
+
// Get simulator UDID (prefer Metro-connected, then fall back to booted)
|
|
514
|
+
const targetUdid = options?.udid || (await getActiveOrBootedSimulatorUdid());
|
|
481
515
|
if (!targetUdid) {
|
|
482
516
|
return {
|
|
483
517
|
success: false,
|
|
@@ -524,7 +558,7 @@ export async function iosSwipe(startX, startY, endX, endY, options) {
|
|
|
524
558
|
error: "IDB is not installed. Install with: brew install idb-companion"
|
|
525
559
|
};
|
|
526
560
|
}
|
|
527
|
-
const targetUdid = options?.udid || (await
|
|
561
|
+
const targetUdid = options?.udid || (await getActiveOrBootedSimulatorUdid());
|
|
528
562
|
if (!targetUdid) {
|
|
529
563
|
return {
|
|
530
564
|
success: false,
|
|
@@ -576,7 +610,7 @@ export async function iosInputText(text, udid) {
|
|
|
576
610
|
error: "IDB is not installed. Install with: brew install idb-companion"
|
|
577
611
|
};
|
|
578
612
|
}
|
|
579
|
-
const targetUdid = udid || (await
|
|
613
|
+
const targetUdid = udid || (await getActiveOrBootedSimulatorUdid());
|
|
580
614
|
if (!targetUdid) {
|
|
581
615
|
return {
|
|
582
616
|
success: false,
|
|
@@ -623,7 +657,7 @@ export async function iosButton(button, options) {
|
|
|
623
657
|
error: `Invalid button type: ${button}. Valid options: ${IOS_BUTTON_TYPES.join(", ")}`
|
|
624
658
|
};
|
|
625
659
|
}
|
|
626
|
-
const targetUdid = options?.udid || (await
|
|
660
|
+
const targetUdid = options?.udid || (await getActiveOrBootedSimulatorUdid());
|
|
627
661
|
if (!targetUdid) {
|
|
628
662
|
return {
|
|
629
663
|
success: false,
|
|
@@ -668,7 +702,7 @@ export async function iosKeyEvent(keycode, options) {
|
|
|
668
702
|
error: "IDB is not installed. Install with: brew install idb-companion"
|
|
669
703
|
};
|
|
670
704
|
}
|
|
671
|
-
const targetUdid = options?.udid || (await
|
|
705
|
+
const targetUdid = options?.udid || (await getActiveOrBootedSimulatorUdid());
|
|
672
706
|
if (!targetUdid) {
|
|
673
707
|
return {
|
|
674
708
|
success: false,
|
|
@@ -719,7 +753,7 @@ export async function iosKeySequence(keycodes, udid) {
|
|
|
719
753
|
error: "At least one keycode is required"
|
|
720
754
|
};
|
|
721
755
|
}
|
|
722
|
-
const targetUdid = udid || (await
|
|
756
|
+
const targetUdid = udid || (await getActiveOrBootedSimulatorUdid());
|
|
723
757
|
if (!targetUdid) {
|
|
724
758
|
return {
|
|
725
759
|
success: false,
|
|
@@ -789,7 +823,7 @@ export async function iosDescribeAll(udid) {
|
|
|
789
823
|
error: "IDB is not installed. Install with: brew install idb-companion"
|
|
790
824
|
};
|
|
791
825
|
}
|
|
792
|
-
const targetUdid = udid || (await
|
|
826
|
+
const targetUdid = udid || (await getActiveOrBootedSimulatorUdid());
|
|
793
827
|
if (!targetUdid) {
|
|
794
828
|
return {
|
|
795
829
|
success: false,
|
|
@@ -834,7 +868,7 @@ export async function iosDescribePoint(x, y, udid) {
|
|
|
834
868
|
error: "IDB is not installed. Install with: brew install idb-companion"
|
|
835
869
|
};
|
|
836
870
|
}
|
|
837
|
-
const targetUdid = udid || (await
|
|
871
|
+
const targetUdid = udid || (await getActiveOrBootedSimulatorUdid());
|
|
838
872
|
if (!targetUdid) {
|
|
839
873
|
return {
|
|
840
874
|
success: false,
|
|
@@ -1072,7 +1106,7 @@ export async function iosGetUITree(udid) {
|
|
|
1072
1106
|
error: "IDB is not installed. Install with: brew install idb-companion"
|
|
1073
1107
|
};
|
|
1074
1108
|
}
|
|
1075
|
-
const targetUdid = udid || (await
|
|
1109
|
+
const targetUdid = udid || (await getActiveOrBootedSimulatorUdid());
|
|
1076
1110
|
if (!targetUdid) {
|
|
1077
1111
|
return {
|
|
1078
1112
|
success: false,
|