Skip to content

Releases: coderexpert123/jev-browser-wingman

jev-browser-wingman 0.3.3

Choose a tag to compare

@coderexpert123 coderexpert123 released this 08 Oct 14:28

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

jev-browser-wingman 0.3.2 (superseded by 0.3.3)

Choose a tag to compare

@coderexpert123 coderexpert123 released this 08 Oct 11:59

Superseded by v0.3.3. 0.3.2 was never published to npm, so the install line below does not work. Two statements below are wrong. The "60% lower median cost" is a prompt-cache artifact; the robust figure is 30% lower total cost. And the tool description already carried a weaker form of the skip-open-page rule. 0.3.3 also fixes two defects in this tag: the press after a fill skipped the confirm gate, and a wait for something to disappear could be skipped.


jev-browser-wingman 0.3.2

This release makes wingman finish nearly every step on its own. In the 0.3.1 benchmark run the agent had to take over a step 7 times across the 34 wingman runs; in this run it was twice, both in a single run of the longest task.

What changed

  • A press after a fill no longer asks the decision service. 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. This removed all 5 of the todo-app hand-backs from the previous run.
  • The agent's step guidance covers an "open the page" step that is already done. The tool text now tells the agent to skip a step that opens the page it is already on, instead of re-sending it and bouncing on low confidence.
  • Sign-in state survives a trimmed step list. If the agent signs in during one call and later re-sends only the remaining steps, wingman still treats the sign-in as done instead of asking for it again.
  • A "wait until text appears" step that is already satisfied is skipped. If the page already shows the expected text, the step completes immediately instead of waiting anyway.
  • The calling agent's benchmark prompts carry the same skip-already-open guidance, matching the tool text.

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.

wingman 0.3.2 Playwright alone
Runs completed 34 of 34 32 of 34
Median cost per run $0.075 $0.185
Total cost, 34 runs $3.75 $5.35
Median time per run 16.0 s 15.5 s

Wingman was cheaper on 16 of 17 tasks and faster on 8. Calls that ended by handing a step back fell from 7 in the 0.3.1 run to 2 (both in one run of the seven-page chain, which still completed). Both Playwright misses were the file-upload task, the same task it missed in both earlier runs.

Wall-clock medians rose on both setups against the previous run (wingman 12.0 s to 16.0 s, Playwright 12.7 s to 15.5 s), so part of that shift is the calling model getting slower rather than wingman. The wingman-side decision work per run stayed roughly constant.

With two runs per task, read the differences as indicative, not statistically established. Costs are token use at list prices, not billing.

Upgrade

npm install -g jev-browser-wingman@0.3.2

jev-browser-wingman 0.3.1

Choose a tag to compare

@coderexpert123 coderexpert123 released this 07 Oct 08:37

jev-browser-wingman 0.3.1

This release fixes a privacy gap and makes wingman finish more steps without handing them back to the agent.

Privacy fix

In 0.3.0, a value was redacted only during the call that supplied it. If a later call mentioned that value in its step text, or the page showed it, the value reached the log and the decision service unredacted. The wingman_check tool redacted nothing at all.

Now the server remembers every value it is handed while it runs, except true, false and anything under 4 characters. It redacts all of them on every call, including wingman_check calls and the common percent-encoded spellings of a value. The memory is held only in memory and keeps the 1,024 most recently handed values. It starts empty when the server restarts.

Fewer hand-backs

Wingman now recognises more steps that already succeeded, so it hands fewer of them back to the agent:

  • a click that changed the page without leaving it;
  • a field that was filled again;
  • a wait that ended once the page changed;
  • a hover that visibly changed the page.

When a "back" landed on a page that still lacks the target, wingman now takes a second "back". A new rule also lets a key press go ahead when the decision service is split between "no element" and the focused field. That rule applies only when the step names the key.

One duplicate-entry bug is fixed. It happened when the agent picked a field to press Enter in while wingman was still on the "type" step just before the press. Wingman now runs the pick on the press step once the field holds the text, so the text is no longer entered twice.

The tool description now tells the agent how to write steps: one action on one page per step, controls named as the page labels them, and one route per step. To return to a page, the agent opens it by name.

Benchmark

These are the same 17 tasks as 0.3.0: each ran twice with wingman and twice with Playwright alone, for 68 runs. The table is from the build before the final todo-app fix.

wingman 0.3.1 Playwright alone
Runs completed 33 of 34 32 of 34
Median cost per run $0.124 $0.176
Total cost, 34 runs $4.02 $5.52
Median time per run 12.0 s 12.7 s

Wingman was cheaper on 15 of 17 tasks. Calls that ended by handing a step back fell from 32 in the 0.3.0 run to 7. The tool description also changed between the two runs, so part of that drop may come from the new step-writing guidance.

The one wingman miss was the todo app, which entered an item twice. We then ran the todo task 4 more times on the final build, and all 4 passed. Both Playwright misses were the file-upload task.

With two runs per task, read the differences as indicative, not statistically established. Costs are token use at list prices, not billing.

Upgrade

npm install -g jev-browser-wingman@0.3.1

jev-browser-wingman 0.3.0 — forced handoff

Choose a tag to compare

@coderexpert123 coderexpert123 released this 05 Oct 06:10

jev-browser-wingman 0.3.0

jev-browser-wingman (wingman for short) hands your AI agent's browser clicks and typing to TypeSafe's Jev. Jev chooses which element each step acts on, handing the step back when unsure, and wingman carries out the action in your real, logged-in browser. The agent keeps planning and sends its page work to one tool, browse_step.

Headline numbers

We ran 17 small browser tasks, such as ticking a checkbox or checking out in a demo shop. Each ran twice with wingman and twice with Playwright alone, in alternating order: 68 runs. "Playwright alone" means the same agent using the regular Playwright MCP browser tools (MCP is how agents talk to tool servers). The agent was the same in both setups.

  • Completion: wingman completed all 34 runs. Playwright alone completed 32 of 34. Both misses were the file-upload task.
  • Cost: the median run cost $0.162 against $0.177, about 9% lower. Total spend over all 34 runs was $4.86 against $5.40, 10% lower. Wingman was cheaper on 13 of 17 tasks. Costs are token use at list prices, not billing.
  • Speed: the median run took 13.1 s against 11.7 s, so wingman was 1.4 s slower on the median. It was faster on file upload, infinite scroll, table sort, double-click and checkboxes. It was slower by 4 s or more on the start-loading task (wait for hidden text; 41.9 s against 20.5 s), the seven-page task (50.4 s against 34.0 s), the todo app, the confirm dialog and the demo-shop checkout.

With two runs per task, read the differences as indicative, not statistically established.

How it works

Wingman sits in front of your existing browser tool (an MCP server such as Playwright MCP). It hides that tool's page-action tools and keeps reading, tabs, dialogs and a few others. For each step that needs an element, it asks Jev which one to act on. Then it acts, checks the result and returns. If it is unsure, it hands that step back to the agent.

What is in this release

  • Hand-off mode, where wingman hides the agent's own action tools, is the default: clicks, typing, selecting, key presses, hovering, uploads and navigation go through browse_step.
  • One call runs up to 12 steps and returns progress you can resume.
  • If a step's action already ran but the page then failed to settle, wingman says so. It tells the agent not to repeat the action and to continue with only the later steps.

Install

npm install -g jev-browser-wingman
jev-browser-wingman doctor --plan

The plan lists the exact setup your stack still needs. Needs Node.js 22+ and a TypeSafe API key.

Limits

No iframe or shadow-DOM content. Right-click, modifier-clicks and unusual keys need the agent's own script tool, which you keep with the handoff.retain setting. Browser tools that work only through a browser extension cannot share the browser. The benchmark results file is not in the repo.