Commit Graph

5115 Commits

Author SHA1 Message Date
Laith Weinberger f197139aec Validate skill install destination first 2026-06-29 10:55:31 +08:00
Laith Weinberger c8e386959d Overwrite browser-use skill installs 2026-06-29 10:52:50 +08:00
Laith Weinberger e4ceae8d8e Wrap browser-harness skill install 2026-06-29 10:18:12 +08:00
laithrw 1e2799288d Merge branch 'main' into browser-use-skill-harness 2026-06-29 09:57:37 +08:00
Laith Weinberger 3e8f620b70 add browser-use skill backed by browser-harness 2026-06-29 09:42:26 +08:00
Saurav Panda 5123e4fc08 style: tighten ResilientEventBus docstring and comments 2026-06-26 15:56:17 +08:00
Saurav Panda 9c1db02dd3 fix(browser): preserve EventBus_ name prefix on ResilientEventBus
bubus derives the default bus name from the class name, so the
ResilientEventBus default factory changed session bus names from
EventBus_* to ResilientEventBus_*, breaking the EventBus_ prefix contract
asserted in tests/ci/browser/test_session_start.py. Default the subclass
name back to EventBus_<id> when none is given (explicit names still honored).
2026-06-26 15:48:59 +08:00
Saurav Panda 16c2745a37 fix(browser): tolerate stepping a torn-down event bus on warm-Lambda resume
The V2 worker reuses a keep_alive BrowserSession across warm Lambda
invocations. At the end of a run Agent.close() stops the session's event
bus and nulls out its async primitives (event_queue / _on_idle) to release
the event loop. On resume the worker can step() the bus before any
dispatch() restarts it, and stock bubus EventBus.step() asserts
"EventBus._start() must be called before step()" in that state — crashing
the run deterministically so the task dead-letters after max receives
(~1,600+ occurrences over 2 days).

Wrap the session's bus in a ResilientEventBus subclass whose step() and
wait_until_idle() are safe no-ops when the bus has not been started,
instead of asserting. The nulling stays (it's what lets the next dispatch()
recreate a fresh queue and _start() the bus), so a later dispatch() still
restarts the bus and processes events normally.

Fixes ENG-5280.
2026-06-26 13:28:53 +08:00
Saurav Panda b88fd70481 fix(tools): truncate long URLs in save_as_pdf footer so page numbers stay visible
A flex item defaults to min-width:auto and won't shrink below its content,
so a long/unbroken URL in the default footer template overflowed and pushed
the page / totalPages span off the printable area. Give the url span
min-width:0 + overflow ellipsis so it truncates, and flex-shrink:0 on the
page-count span so it always renders. Adds a long-URL regression test.
2026-06-15 13:54:38 +05:30
Saurav Panda 5fd4e40efb Merge branch 'main' into saurav/pdf-header-footer-metadata 2026-06-15 11:37:09 +05:30
Saurav Panda 47a52790a6 chore(llm): remove bu-3 / bu-3-max, default beta example to openai/gpt-5.5
Drop the bu-3 and bu-3-max model ids everywhere they were surfaced:
- ChatBrowserUse no longer lists them as valid bu-* aliases (provider-prefixed
  ids like openai/gpt-5.5 are still accepted by the gateway).
- Remove their custom pricing entries and the README pricing blocks.
- Update docstrings, README quickstart, and the beta_agent example to use
  openai/gpt-5.5 as the default, with bu-2-0 shown as a commented alternative.
- Drop the tests that asserted bu-3/bu-3-max acceptance and pricing.
2026-06-11 22:50:30 +05:30
Saurav Panda ad8f3a4dd7 feat(tools): print page metadata in save_as_pdf header/footer
The save_as_pdf action now renders page metadata into the PDF margins by
default, matching Chrome's Print dialog: the date in the header and the page
URL plus page numbers in the footer.

- Add display_header_footer (default True), header_template, and
  footer_template params to SaveAsPdfAction.
- Pass displayHeaderFooter + header/footer templates and explicit margins to
  CDP Page.printToPDF so the metadata has room to render (Chrome clips it
  otherwise, and defaults header/footer font-size to 0px).
- Default templates show the date / URL + page numbers; callers can override
  with custom HTML or disable entirely for a clean PDF.
2026-06-11 08:29:41 +05:30
Saurav Panda 4cbc5dfa4d feat(llm): accept provider-prefixed models in ChatBrowserUse
ChatBrowserUse now accepts provider-prefixed model ids (anthropic/*,
openai/*, google/*) alongside the bu-* aliases and browser-use/* models,
so a single BROWSER_USE_API_KEY can reach them. bu-* aliases and the
bu-latest -> bu-2-0 normalization are unchanged; bare ids are rejected
with guidance toward the provider/model form.

Also matches provider-prefixed Claude Sonnet ids in the Agent
llm_screenshot_size auto-config, so the screenshot optimization isn't
lost when Claude is reached via ChatBrowserUse.

Adds an example, a README FAQ entry, and tests.

ENG-5060
2026-06-10 12:03:51 +05:30
Magnus Müller a4d8418334 Merge branch 'main' into MagMueller/implement-bu3max-model-with-caching-in-cloud-repos 2026-06-09 19:27:07 -07:00
Gregor Žunič 8c9ed8281e Fix packaged agent tools env 2026-06-09 16:45:42 -07:00
Laith Weinberger 295594b084 parse json text fallback for auto tools 2026-06-09 16:32:47 -07:00
Laith Weinberger dfbb5c09ed anthropic: tool choice auto when thinking (cannot force it) 2026-06-09 16:22:08 -07:00
Laith Weinberger 1525c013c0 fix fable fallback and cache pricing edge cases
- enable fallback beta header for empty fallback lists
- preserve Laminar 5m/1h cache creation split for pricing
2026-06-09 14:45:21 -07:00
Laith Weinberger 8bca742aba support claude fable 5
- fable for coord clicks
- explicit support
- model refusal response
- fable pricing with 5m/1h cache writes and inference geo multiplier
- anthropic fallback, thinking, output config, and inference geo request support
2026-06-09 13:22:04 -07:00
MagMueller 6caf43e5a9 Add BU3 pricing rows 2026-06-09 08:04:00 -07:00
Magnus Müller 8a3d202291 Merge branch 'main' into MagMueller/implement-bu3max-model-with-caching-in-cloud-repos 2026-06-08 18:49:50 -07:00
Gregor Žunič 0cfe7bf7c5 Close beta SDK browser resources 2026-06-08 14:21:31 -07:00
MagMueller be81a1bfe5 add bu3 browser use models 2026-06-08 14:13:33 -07:00
Gregor Žunič a75b950dc7 Fix prerelease version upgrade check 2026-06-08 13:35:20 -07:00
Gregor Žunič 9a864e81cf Merge remote-tracking branch 'origin/main' into codex/browser-use-rust-wheel
# Conflicts:
#	browser_use/beta/service.py
2026-06-08 13:03:27 -07:00
Gregor Žunič 7a888eb9a4 Promote beta core package quickstart 2026-06-08 12:59:51 -07:00
Laith Weinberger d7c153f0a0 Validate Rust terminal SDK server binary 2026-06-08 11:39:38 -07:00
Gregor Žunič 66dec5bb3f Clean up failed Rust protocol handshake 2026-06-08 10:26:23 -07:00
Gregor Žunič b056911139 Use browser-use-core Rust package 2026-06-08 08:19:46 -07:00
Gregor Žunič a91fd8702f Add optional Rust runtime package integration 2026-06-08 08:06:27 -07:00
Magnus Müller df54d6a4e1 Add Rust core source marker 2026-06-06 15:42:17 +00:00
Magnus Müller bb7fb2722a Document Rust agent terminal install 2026-06-06 15:02:55 +00:00
Magnus Müller 1cfeab23c0 Remove stale Rust replay helpers 2026-06-06 05:54:19 +00:00
Magnus Müller 9400ba596d Fix Rust PR CI feedback 2026-06-06 05:20:57 +00:00
Magnus Müller c7da2c0e10 Fix Rust PR review feedback 2026-06-06 04:59:30 +00:00
Magnus Müller 65f6b3493f Expose terminal SDK tools by default 2026-06-05 18:33:03 +00:00
Magnus Müller 474a06b0c1 Deduplicate Rust SDK history usage 2026-06-05 18:18:23 +00:00
Magnus Müller 96b6b69613 Forward SDK browser payload settings 2026-06-05 17:34:07 +00:00
Magnus Müller b604386b4f Require Rust SDK server path 2026-06-05 17:24:20 +00:00
Magnus Müller a7c43d3caf Recover projected SDK final events 2026-06-05 17:00:16 +00:00
Magnus Müller 0776c73916 Recover SDK finals from retained events 2026-06-05 16:38:06 +00:00
Magnus Müller a36f7d625e Recover nested Rust SDK final events 2026-06-05 16:20:35 +00:00
Magnus Müller 78df92ccee Include Rust SDK child usage in totals 2026-06-05 16:07:36 +00:00
Magnus Müller 46bc62ac61 Recover Rust SDK history from notifications 2026-06-05 15:36:54 +00:00
Magnus Müller 25dd685179 Preserve Laminar image-only tool outputs 2026-06-05 14:58:11 +00:00
Magnus Müller dcb1969900 Avoid double-counting mixed Rust usage events 2026-06-05 14:17:33 +00:00
Magnus Müller dbf1ff2a8a Align Rust priced usage token totals 2026-06-05 14:15:56 +00:00
Magnus Müller f853ba8557 Aggregate full Rust token usage 2026-06-05 13:57:29 +00:00
Magnus Müller 4c04bdce44 Trust only confirmed Rust pre-navigation 2026-06-05 13:33:47 +00:00
Magnus Müller 5b9c1336d6 Pass Rust pre-navigation page state 2026-06-05 12:31:16 +00:00