You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If the resolved bundle ID is missing from the list, **STOP** and instruct the developer to run the matching build script from the table. HybridApp mobile builds **must** be initiated from `Mobile-Expensify/` (per project CLAUDE.md).
42
+
If the resolved bundle ID is missing from the list, **STOP** and instruct the developer to run the matching build command from the App repository root. The build script detects HybridApp mode and builds the native app from `Mobile-Expensify/`.
43
43
44
44
### 4. Metro
45
45
@@ -89,6 +89,32 @@ agent-device snapshot -i
89
89
90
90
Confirm the app rendered. From here, follow the [Agent decision loop](flows/README.md) for repeatable flows or drive interactively.
91
91
92
+
### 9. Interaction safety
93
+
94
+
After opening or relaunching the App, inspect `agent-device snapshot -i` for React Native development overlays before interacting.
95
+
96
+
If the snapshot reports a LogBox warning, run:
97
+
98
+
```bash
99
+
agent-device react-native dismiss-overlay
100
+
agent-device snapshot -i
101
+
```
102
+
103
+
Continue only when the fresh snapshot no longer reports the overlay. Multiple LogBox banners can require repeated `dismiss-overlay` and fresh `snapshot -i` calls. If the snapshot reports a RedBox fatal error, stop and surface the error instead of dismissing it.
104
+
105
+
Before pressing an action that may be covered by an overlay or system UI:
106
+
107
+
```bash
108
+
agent-device snapshot -i
109
+
agent-device screenshot --overlay-refs
110
+
```
111
+
112
+
Use a stable selector or a fresh `@eN` reference. Confirm the target is reported as hittable. Never use coordinates to bypass `interactionBlocked: "covered"`, `reason: "offscreen_ref"`, or `targetHittable: false`.
113
+
114
+
When a target is rejected, capture `agent-device screenshot --overlay-refs`. Dismiss a recoverable LogBox overlay when present, capture a fresh `snapshot -i`, and retry only through a selector or fresh reference. Otherwise stop and report the blocker.
115
+
116
+
After pressing the action, verify the expected destination or control state with `wait`, `is`, `find`, or a fresh snapshot.
117
+
92
118
### Canonical skill references
93
119
94
120
Read these files directly for device automation guidance (bootstrap, exploration, verification, debugging): !`echo "$(npm root -g)/agent-device/skills/agent-device"`
* Attempts to detect the command used to invoke the currently-running script, for display in the usage line of the help message.
2009
+
* Checked in order of most to least reliable signal; falls back to plain `node` if nothing else matches.
2010
+
*/
2011
+
staticdetectRuntimeCommand(){
2012
+
// Bun's own public, documented signal. Cast needed since @types/node's ProcessVersions type has no `bun` key.
2013
+
if(process.versions.bun){
2014
+
return'bun';
2015
+
}
2016
+
// Internal symbol ts-node sets on `process` when its register hook is active (the same mechanism other tools, e.g. fastify-autoload, rely on to detect ts-node).
0 commit comments