1401 Commits

Author SHA1 Message Date
MagMueller 743f630923 test: satisfy MCP handler context typing 2026-09-03 20:24:29 -07:00
MagMueller afbc714a60 fix: report unknown MCP tools as errors 2026-09-03 20:23:43 -07:00
MagMueller b1ae95ec81 chore: pin release dependencies for 0.13.10 2026-09-03 20:17:35 -07:00
Magnus Müller 1346f8caf4 Merge branch 'main' into fix/session-handler-registration 2026-09-03 11:06:15 -07:00
Magnus Müller 3042d8c1df Merge branch 'main' into fix/session-handler-registration 2026-09-03 11:03:22 -07:00
Magnus Müller 4e09955e57 Merge branch 'main' into r266/direct-interactive-image-context 2026-09-03 11:03:22 -07:00
Magnus Müller 501e49ccc7 Merge branch 'main' into r266/direct-interactive-image-context 2026-09-03 09:00:45 -07:00
Magnus Müller b78b3fcebd Merge branch 'main' into fix/session-handler-registration 2026-09-03 09:00:42 -07:00
Magnus Müller 8043fec5e6 Merge branch 'main' into fix/5569-send-keys-plus 2026-09-02 22:44:36 -07:00
Magnus Müller f3a6becbf0 Merge branch 'main' into fix/switch-tab-error-reporting 2026-09-02 17:34:56 -07:00
Magnus Müller 3b12a946cc Keep sensitive live values out of the snapshot and surface checked state
Review follow-up: password, file, hidden, payment (cc-*) and one-time-code
fields never get their live value stored on EnhancedSnapshotNode, so it
cannot leak through __json__. Checkbox and radio inputs now show their live
checked state as the checked attribute.
2026-09-01 19:25:39 -07:00
Magnus Müller 5ffd3090ad Show the live value of pre-filled inputs to the agent
DOM attributes only carry the static value=... written in the HTML. When
JavaScript, autofill, or a framework fills a field, the value lives in the
element property, which DOMSnapshot exposes as inputValue/textValue. The
agent saw such fields as empty and retyped or skipped them (#5647).

Read inputValue, textValue, and inputChecked from the snapshot, keep them on
EnhancedSnapshotNode, and surface the live value as the value attribute for
input and textarea nodes. Password, file, and hidden inputs are left alone.

Fixes #5647
2026-09-01 19:25:39 -07:00
MagMueller ca69ebdf89 Merge remote-tracking branch 'origin/main' into agency/fix-openrouter-5598 2026-08-31 17:36:52 -07:00
Saurav Panda be76e6ccee fix(orcarouter): resolve the API key explicitly instead of inheriting OPENAI_API_KEY
AsyncOpenAI falls back to OPENAI_API_KEY when api_key is unset, so
ChatOrcaRouter(model=...) with no key authenticated its requests to
api.orcarouter.ai with the user's OpenAI credentials. The shipped example
hit this path whenever ORCAROUTER_API_KEY was unset, and .env.example
documented a variable that nothing read.

Resolve api_key from the constructor then ORCAROUTER_API_KEY, and raise
ModelProviderError(401) when neither is set, matching ChatMistral.
2026-08-31 16:02:22 -07:00
Saurav Panda cf4aeaae8d Merge branch 'main' into add-orcarouter-provider 2026-08-31 15:54:27 -07:00
Growth Radar QA df2701e524 fix(browser): preserve default Chrome arg order 2026-08-31 13:15:27 -07:00
MagMueller e0737a614f fix(vercel): preserve provider error status 2026-08-30 23:23:18 -07:00
MagMueller fb916aec56 fix(vercel): require gateway credentials 2026-08-30 23:16:08 -07:00
MagMueller 7d123b7628 Merge branch 'main' into agency/fix-openrouter-5598 2026-08-30 23:16:08 -07:00
Magnus Müller fa780c8e50 Merge branch 'main' into r266/storage-state-utf8 2026-08-30 23:04:21 -07:00
Magnus Müller e785b615d2 Merge branch 'main' into codex/fix-agent-download-path-order 2026-08-30 22:47:23 -07:00
Magnus Müller c05a826af8 Merge branch 'main' into codex/fix-url-negation-boundaries 2026-08-30 19:17:36 -07:00
Magnus Müller 90eb2b42de Merge branch 'main' into fix/bedrock-zero-retries 2026-08-30 19:14:28 -07:00
Magnus Müller ad03ce5e32 Merge branch 'main' into codex/fix-url-negation-boundaries 2026-08-30 17:17:30 -07:00
MagMueller b2507091aa test: cover aliased schema keyword fields 2026-08-30 14:56:47 -07:00
MagMueller c48b1c9928 fix(llm): preserve schema-keyword field names 2026-08-30 14:48:44 -07:00
MagMueller 442455465b Merge remote-tracking branch 'origin/main' into agency/cloud-skill-v4
# Conflicts:
#	tests/ci/test_browser_use_skill_install_docs.py
2026-08-30 10:01:11 -07:00
Magnus Müller 6a2b0f4f6c Merge branch 'main' into fix_gemini_system_in_user_drops_parts 2026-08-30 02:51:07 -07:00
Magnus Müller 34d7978da9 Merge branch 'main' into fix/issue-5420-honor-browser-use-headless 2026-08-30 02:26:44 -07:00
Saurav Panda 05ea3bd2c9 Merge branch 'main' into add-orcarouter-provider 2026-08-29 15:37:01 -07:00
MagMueller edfccc4078 test(openrouter): assert request parameters are forwarded 2026-08-29 11:08:31 -07:00
MagMueller f356f2ed3e fix(openrouter): validate client and response inputs 2026-08-29 10:57:03 -07:00
Aniket Wagh a266399645 fix(llm/google): keep the first user message when include_system_in_user is set 2026-08-29 20:27:38 +05:30
MagMueller 7ed622f0de test: cover all retired browser commands 2026-08-28 22:48:56 -07:00
MagMueller 5525c08c54 docs: migrate remote browser skill to CLI 3.0 2026-08-28 22:48:56 -07:00
MagMueller 295a57d957 docs(cloud): add API v4 skill reference
Signed-off-by: MagMueller <mamagnus00@gmail.com>
2026-08-28 19:31:53 -07:00
Saurav Panda 4df55bb2bc Merge branch 'main' into fix_url_trailing_bracket_truncation 2026-08-28 17:16:41 -07:00
Ronit Sawaiyan 230881a49b Merge branch 'main' into fix/5569-send-keys-plus 2026-08-29 02:07:43 +05:30
Magnus Müller 281cbc8c74 Merge branch 'main' into fix/issue-5366 2026-08-28 13:26:58 -07:00
Saurav Panda ab7fd48f63 Merge branch 'main' into fix/5568-tuple-sensitive-data 2026-08-28 12:20:13 -07:00
IENVYshanks 2b56dc8f59 test(browser): validate literal plus CDP key events 2026-08-28 23:08:25 +05:30
Magnus Müller 30b5aca5b0 Merge branch 'main' into fix/issue-5366 2026-08-28 02:25:57 -07:00
r266-tech 81a472a3e2 fix(dom): expose image context for directly clickable images 2026-08-28 09:07:07 +00:00
IENVYshanks 0a6e427c6f fix(browser): support literal plus in send_keys 2026-08-28 11:25:30 +05:30
Aniket Wagh 3c565af3e0 perf: keep bracket trimming linear in sanitize_url_candidate
The trimming loop counted brackets across the whole candidate on every
iteration, so a candidate ending in many unmatched brackets rescanned it
once per bracket. 50,000 trailing ')' took 0.9s, where the regex this
replaced was linear.

Count the four bracket characters once and decrement as characters are
trimmed, tracking the end index instead of reslicing. Same results, and
200,000 trailing ')' now takes 0.011s.
2026-08-28 09:50:05 +05:30
Aniket Wagh d33cc68f06 fix: keep balanced trailing brackets in URLs extracted from task text
sanitize_url_candidate() strips trailing prose punctuation so that
"Go to https://example.com/docs." does not navigate with the sentence's
period attached. It also stripped every trailing ) and ], including the
ones the URL opened itself, so a task like

    Summarize https://en.wikipedia.org/wiki/Python_(programming_language)

auto-navigated to .../Python_(programming_language and landed on the wrong
page. Wikipedia disambiguation links are the common case.

Whether the bracket belongs to the URL is decided by balance: a closing
bracket with a matching opener inside the candidate is part of the path,
while one the prose opened, as in "(see https://example.com/guide)", is not.
Strip trailing punctuation as before, and only drop a closing bracket when
the candidate has more of them than openers.

Fixes #5575
2026-08-28 09:50:05 +05:30
Magnus Müller fa29b0e05d Merge branch 'main' into fix/image-only-clickable-context 2026-08-27 20:37:34 -07:00
郑耀翔 9bfb1d3258 fix(registry): replace sensitive placeholders in tuples 2026-08-28 09:30:24 +08:00
Magnus Müller 56b76ddbad Merge branch 'main' into fix/5543-ignore-empty-reasoning-models 2026-08-27 17:38:05 -07:00
MagMueller f168606cb9 fix(filesystem): make PDF markdown restoration collision-safe 2026-08-27 16:27:35 -07:00