Repository navigation
jev-browser-wingman 0.3.3
Hand-back ends fell from 7 in the 0.3.1 benchmark run to 2 in this one. Both were in a single run of the seven-page task, which completed. A hand-back end is a call that returns a step to the agent instead of finishing it.
What changed
- A press after a fill runs without asking the decision service, and the confirm gate still applies. When a fill lands and the next step is a key press (Enter to submit, for example), wingman presses the key itself instead of asking which element to target. With the opt-in confirm gate on, the gate's rules still apply to that press, so an Enter in a form stops for confirmation. The decision service's own irreversibility check does not run on it, because it is not asked.
- Sign-in carry-over. If the agent re-sends only the remaining steps of the same goal, wingman does not end on the sign-in page again for a step it already handed back for sign-in. It does not detect that a sign-in succeeded.
- A wait for text that is already shown completes at once, when the step says the text appears or is visible. A wait for something to disappear or finish always waits, and so does a bare "wait for" step with no such wording.
Fixed since the 0.3.2 tag
0.3.2 was tagged on GitHub but never published to npm. It skipped the confirm gate for the press after a fill, and it could skip a wait for something to disappear. 0.3.3 fixes both.
Benchmark-only change
The benchmark prompt for the wingman setup has three extra sentences about using browse_step. The third, which says to skip a step that opens the page already open, is new since the 0.3.1 run. The shipped tool description has carried a weaker form of that rule since 0.3.1. This is not a package change.
Where the hand-backs went
The 0.3.1 run, with 7 hand-back ends, predates the 0.3.1 todo-app fix. The press change and that fix together removed the todo-app hand-backs. The two 404-task hand-backs did not recur after the benchmark prompt line was added, though that rests on one before-and-after pair of two-run measurements.
Benchmark
These are the same 17 tasks as 0.3.0 and 0.3.1: each ran twice with wingman and twice with Playwright alone, for 68 runs. Completed means the task's check on the final page state passed, not that every intermediate step was checked.
| wingman | Playwright alone | |
|---|---|---|
| Runs completed | 34 of 34 | 32 of 34 |
| Total cost, 34 runs | $3.75 | $5.35 |
| Median time per run | 16.0 s | 15.5 s |
Wingman's total cost was 30% lower. It was cheaper on 16 of 17 tasks and faster on 8. Both Playwright misses were the file-upload task, and I have not diagnosed why.
Per-run costs cluster by whether the prompt cache was warm, and Playwright alone started cold more often (17 of 34 runs against 13). With every cache write priced at the cache-read rate, wingman is still 31% cheaper in total.
Dollars are token costs at list prices, not billing: Claude Sonnet 5.5 list prices for the agent (Claude Sonnet 5.5 in Claude Code) plus Jev's own cost. The ratio between the setups is the result. Median times rose on both setups against the 0.3.1 run (wingman 12.0 s to 16.0 s, Playwright 12.7 s to 15.5 s), and the calling CLI moved from 2.1.292 to 2.1.294. Compare times within one run only.
The benchmark ran on the 0.3.2 code. That code differs from 0.3.3 only in the confirm-gate and disappearance-wait paths, which the benchmark does not exercise: the gate was off and the wait shortcut never fired. With two runs per task, read the differences as indicative, not statistically established.
Upgrade
npm install -g jev-browser-wingman@0.3.3