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
Copy file name to clipboardExpand all lines: .claude-plugin/marketplace.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@
9
9
{
10
10
"name": "rn-dev-agent",
11
11
"description": "AI agent that fully tests React Native features on simulator/emulator — navigates the app, verifies UI, walks user flows, and confirms internal state.",
Copy file name to clipboardExpand all lines: .claude-plugin/plugin.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"name": "rn-dev-agent",
3
-
"version": "0.25.0",
3
+
"version": "0.25.1",
4
4
"description": "AI agent that fully tests React Native features on simulator/emulator — navigates the app, verifies UI, walks user flows, and confirms internal state.",
returnfailResult(`device_find/snapshot returned AgentDeviceRunner's own UI tree instead of the target app${queryHint} (B119 / GH #35 — agent-device daemon dropped appBundleId on dispatch). Auto-recovery did not restore the target.`,{
85
+
code: 'RUNNER_LEAK',
86
+
recoveryReason,
87
+
hint: 'Manually close + reopen the session with device_snapshot action=open appId=<your.bundle.id> platform=ios (full launch, not attachOnly). The recovery may have killed the JS context — re-establish CDP via cdp_connect before reading state. Upstream: Callstack/agent-device, see B119/GH#35.',
// Snapshot failed and caller has strict requirements — do NOT fall through
71
124
// to the fuzzy agent-device path because it cannot honor exact/index. Fail
72
125
// cleanly so the caller knows exact/index semantics aren't reachable.
73
126
returnfailResult(`Snapshot unavailable — cannot resolve ${args.exact ? 'exact' : 'index-based'} match for "${args.text}". Retry after device_snapshot action=open/snapshot.`,{code: 'SNAPSHOT_UNAVAILABLE',query: args.text});
74
127
}
128
+
const{ candidates, recoveredTier }=find;
75
129
if(candidates.length===0){
76
130
returnfailResult(`No element matches "${args.text}" (exact=${args.exact===true})`,{code: 'NOT_FOUND',query: args.text});
77
131
}
78
132
if(args.index!==undefined){
79
133
if(args.index<0||args.index>=candidates.length){
80
134
returnfailResult(`index ${args.index} out of range (got ${candidates.length} candidates)`,{code: 'INDEX_OUT_OF_RANGE',count: candidates.length, candidates });
returnfailResult(`AMBIGUOUS_MATCH: "${args.text}" matched ${candidates.length} elements. Use device_press with one of these refs, or retry with index: N.`,{
101
159
code: 'AMBIGUOUS_MATCH',
102
160
query: args.text,
@@ -455,10 +513,14 @@ export function createDeviceFocusNextHandler() {
455
513
// Benchmark data: 4 serial finds = 10-22s on no-keyboard case; single
456
514
// snapshot = 3-5s on the same case. Also more reliable — one accessibility
457
515
// query races keyboard animations less than four sequential queries.
return'device_snapshot returned AgentDeviceRunner\'s own UI tree, but auto-recovery cannot run because the active session has no stored appId. This usually means the session was opened by a plugin version from before B119 / GH #35 landed.';
164
+
}
165
+
return'device_snapshot returned AgentDeviceRunner\'s own UI tree instead of the target app (B119 / GH #35 — agent-device daemon dropped appBundleId on dispatch). Auto-recovery did not restore the target.';
return'Run device_snapshot action=close, then action=open appId=<your.bundle.id> platform=ios to start a session that supports auto-recovery.';
170
+
}
171
+
return'Manually close + reopen the session with action=open appId=<your.bundle.id> platform=ios (full launch, not attachOnly). Upstream: Callstack/agent-device, see B119/GH#35.';
0 commit comments