Commit Graph

7844 Commits

Author SHA1 Message Date
Mert Unsal 4f44eee632 Clean up specific debug logs (#3662)
Remove verbose debug logs to reduce noise and improve clarity.

---
[Slack
Thread](https://browser-use.slack.com/archives/D092QUQDC56/p1764013779707129?thread_ts=1764013779.707129&cid=D092QUQDC56)

<a
href="https://cursor.com/background-agent?bcId=bc-58a5225a-9914-4951-9eef-0db856cb1ae5"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/open-in-cursor-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/open-in-cursor-light.svg"><img alt="Open in
Cursor"
src="https://cursor.com/open-in-cursor.svg"></picture></a>&nbsp;<a
href="https://cursor.com/agents?id=bc-58a5225a-9914-4951-9eef-0db856cb1ae5"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/open-in-web-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/open-in-web-light.svg"><img alt="Open in Web"
src="https://cursor.com/open-in-web.svg"></picture></a>





<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Removed verbose debug logs in the tools registry and tools service to
reduce log noise and make important messages easier to spot. No
functional changes.

- **Refactors**
- Stripped debug statements from browser_use/tools/registry/service.py
and browser_use/tools/service.py, including execute_action, act, and
click-by-coordinate paths.
- Preserved error handling and info logs; inputs, outputs, and control
flow remain the same.

<sup>Written for commit cabd074eb4.
Summary will update automatically on new commits.</sup>

<!-- End of auto-generated description by cubic. -->
2025-11-24 12:11:05 -08:00
Cursor Agent cabd074eb4 Remove unused traceback imports
Co-authored-by: mailmertunsal <mailmertunsal@gmail.com>
2025-11-24 20:05:41 +00:00
Cursor Agent df67b301d6 Refactor: Remove excessive debug logging
Removes verbose debug logs from the registry and tools services to improve clarity and reduce noise in the logs.

Co-authored-by: mailmertunsal <mailmertunsal@gmail.com>
2025-11-24 19:52:28 +00:00
mertunsall 3f4bb4e1ea Try to fix scroll timeouts 2025-11-22 13:27:59 -08:00
mertunsall ac83341b0c Merge branch 'main' into mert/everything_coordinates 2025-11-22 12:53:13 -08:00
mertunsall 573f960d70 fix 2025-11-22 10:58:28 -08:00
Mert Unsal 714ab37d80 fix:#3620/Quote fixer for javascript evaluate action (#3623)
Origin of this issue was from the file location :
browser-use/tools/service.py , specifically from the function:
_validate_and_fix_javascript

- The quote fixer was converting double-quoted selectors to template
literals but creating duplicate closing parentheses
- Example: querySelector("div[role='button']") became
querySelector(\div[role='button']`)) with an extra)`
- Regex patterns only matched selectors with exactly one single quote,
missing complex multi-attribute selectors
- This caused "JavaScript execution error: Uncaught" when the agent
tried to execute the "fixed" code

Here is the screenshot of previous regex patterns:

<img width="574" height="667" alt="Screenshot 2025-11-19 at 12 02 56 PM"
src="https://github.com/user-attachments/assets/01a18f4e-9480-4698-89c0-f639a9b9d9f5"
/>

Two bugs in the regex patterns:
- Missing closing delimiter: Patterns stopped at the closing " without
capturing the ) or ,, leaving it behind to create duplicates
- Single-quote requirement: Pattern [^"]*\'[^"]* required exactly one
single quote, failing on selectors like "div[role='button'][pressed]"
with multiple quotes

Changes Made
- Pattern updates: Changed [^"]*\'[^"]* to [^"]* to match any
double-quoted content
- Delimiter capture: Added \s*\) or \s*, to consume closing delimiters
and prevent duplicates
- Affected patterns:
     - querySelector/querySelectorAll: Added \s*\)
     - document.evaluate: Added \s*,
     - .closest(): Added \s*\)
     - .matches(): Added \s*\)
     
Here is the screenshot of changes i made:

<img width="543" height="659" alt="Screenshot 2025-11-19 at 12 06 53 PM"
src="https://github.com/user-attachments/assets/e80b9792-c168-4e16-be4f-b89970be7a81"
/>








<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Fixes the JavaScript quote fixer to handle double-quoted selectors and
XPath correctly, preventing malformed code and runtime errors. Addresses
#3620 by updating regex to consume closing delimiters and support
complex selectors.

- **Bug Fixes**
- Updated patterns to match any double-quoted content, not just strings
with a single quote.
  - Captured trailing ) or , to prevent duplicate delimiters.
- Applied changes to document.evaluate (captures ,),
querySelector/querySelectorAll, .closest(), and .matches() (capture )).
- Resolves errors like extra ) and "JavaScript execution error:
Uncaught" during evaluation.

<sup>Written for commit 515a42bdac.
Summary will update automatically on new commits.</sup>

<!-- End of auto-generated description by cubic. -->







<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
generating a summary for commit
020af1f5e9. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2025-11-22 00:57:11 -08:00
Mert Unsal 020af1f5e9 Merge branch 'main' into fix/3620-javascript-quote-fixer-regex 2025-11-22 00:55:55 -08:00
Mert Unsal 0bdcd5ad07 Enforce screenshot exclusion for non-auto vision (#3651)
Enforce screenshot exclusion when `use_vision` is not 'auto', even with
custom tools.

Previously, the `screenshot` action was not consistently excluded if a
user provided custom tools, leading to `screenshot` being available when
it should have been disabled based on the `use_vision` setting. This fix
ensures the exclusion is always applied by calling
`self.tools.exclude_action('screenshot')` after tool initialization.
Additionally, a mutable default argument bug in `Tools` and `Registry`'s
`exclude_actions` parameter was resolved.

---
[Slack
Thread](https://browser-use.slack.com/archives/C08SZRT860M/p1763797970748989?thread_ts=1763797970.748989&cid=C08SZRT860M)

<a
href="https://cursor.com/background-agent?bcId=bc-8a53c0fb-52e8-4c81-a767-e3f0cc9418d7"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/open-in-cursor-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/open-in-cursor-light.svg"><img alt="Open in
Cursor"
src="https://cursor.com/open-in-cursor.svg"></picture></a>&nbsp;<a
href="https://cursor.com/agents?id=bc-8a53c0fb-52e8-4c81-a767-e3f0cc9418d7"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/open-in-web-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/open-in-web-light.svg"><img alt="Open in Web"
src="https://cursor.com/open-in-web.svg"></picture></a>







<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Enforce screenshot exclusion when use_vision is not "auto", including
when users pass custom Tools. Fix a mutable default argument bug and add
tests to cover the behavior.

- **Bug Fixes**
- Always remove the screenshot action when use_vision != "auto", even
with custom Tools instances.
- Replace mutable default lists for exclude_actions with None and copy
the provided list.
- Add CI tests for all use_vision modes and custom Tools to prevent
regressions.

- **New Features**
- Introduce Tools.exclude_action() and Registry.exclude_action() to
remove actions after init and block re-registration.

<sup>Written for commit e00ad12c40.
Summary will update automatically on new commits.</sup>

<!-- End of auto-generated description by cubic. -->





<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Always remove `screenshot` when `use_vision` != `"auto"` (even with
custom tools), add `exclude_action()` to Tools/Registry, fix mutable
default args, and add CI tests.
> 
> - **Agent**
> - Enforces `screenshot` exclusion when `use_vision` != `"auto"` by
calling `self.tools.exclude_action('screenshot')`, covering custom
`tools`/`controller`.
> - **Tools/Registry**
> - Add `Tools.exclude_action()` and `Registry.exclude_action()` to
remove actions post-init and prevent re-registration.
> - Fix mutable default list bug: use `exclude_actions: list[str] |
None` and copy inputs; update `Tools` to pass a new list to `Registry`.
> - **Tests**
> - Add CI tests for `use_vision` modes (true/false/auto), with and
without custom `Tools`, direct `exclude_action()` behavior, and
re-registration prevention.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
e00ad12c40. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2025-11-22 00:25:28 -08:00
mertunsall e00ad12c40 lint 2025-11-22 00:16:09 -08:00
Mert Unsal 6d062fa139 Merge branch 'main' into cursor/enforce-screenshot-exclusion-for-non-auto-vision-claude-4.5-sonnet-thinking-bce8 2025-11-22 00:12:29 -08:00
Mert Unsal 6eca95a6ef Optimize javascript result memory handling (#3650)
Implement memory handling for JavaScript execution results to align with
the `extract` function's logic for large content.

---
[Slack
Thread](https://browser-use.slack.com/archives/C08SZRT860M/p1763798103571769?thread_ts=1763798103.571769&cid=C08SZRT860M)

<a
href="https://cursor.com/background-agent?bcId=bc-9ce30962-138e-4447-863e-7e756c88d217"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/open-in-cursor-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/open-in-cursor-light.svg"><img alt="Open in
Cursor"
src="https://cursor.com/open-in-cursor.svg"></picture></a>&nbsp;<a
href="https://cursor.com/agents?id=bc-9ce30962-138e-4447-863e-7e756c88d217"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/open-in-web-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/open-in-web-light.svg"><img alt="Open in Web"
src="https://cursor.com/open-in-web.svg"></picture></a>





<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Optimized JavaScript evaluate memory handling: full results stay in
extracted_content; long_term_memory holds the full text for small
outputs and a summary for large ones.

- **New Features**
- Added long_term_memory and include_extracted_content_only_once to
ActionResult.
- For results >1000 chars, store a summary in long_term_memory and set
include_extracted_content_only_once; for small results, store the full
text.

- **Refactors**
- Removed file_system dependency; evaluate does not require a FileSystem
parameter.

<sup>Written for commit e4fd00ca08.
Summary will update automatically on new commits.</sup>

<!-- End of auto-generated description by cubic. -->
2025-11-22 00:10:55 -08:00
mertunsall 688ff43f26 lint 2025-11-22 00:09:27 -08:00
Cursor Agent 444825f307 Checkpoint before follow-up message
Co-authored-by: mailmertunsal <mailmertunsal@gmail.com>
2025-11-22 08:08:44 +00:00
Mert Unsal 5833f885a7 Update browser_use/tools/service.py 2025-11-22 00:02:30 -08:00
Cursor Agent e4fd00ca08 Refactor: Remove unused file_system from evaluate and simplify memory handling
Co-authored-by: mailmertunsal <mailmertunsal@gmail.com>
2025-11-22 08:01:05 +00:00
Cursor Agent 6f2906762a Add long-term memory to evaluate action
Co-authored-by: mailmertunsal <mailmertunsal@gmail.com>
2025-11-22 07:57:17 +00:00
mertunsall b786c2c574 fuck events 2025-11-21 23:44:34 -08:00
mertunsall 8b446841ab I think the bug is fixed, what an obscure one 2025-11-21 23:38:57 -08:00
mertunsall a12d4329f3 Add a ton of logs (to be reverted) 2025-11-21 23:17:25 -08:00
mertunsall 6ffcd6c842 more logs and potential fix 2025-11-21 20:17:33 -08:00
mertunsall 171eccb8ec add more 2025-11-21 19:33:33 -08:00
mertunsall 7265bd8658 Merge branch 'main' into mert/everything_coordinates 2025-11-21 19:33:02 -08:00
mertunsall 5c9c888ace got rid of actor use 2025-11-21 19:31:55 -08:00
Mert Unsal 2c854d2283 fix: apply cache_control only to last block in Anthropic messages (#3636)
Previously, cache_control was applied to every content block and tool
call in a message, which could exceed Anthropic's limit of [4 cache
breakpoints per
request](https://platform.claude.com/docs/en/build-with-claude/prompt-caching).
This fix ensures cache_control is only applied to the last block in each
message type:
- Last text block in UserMessage/AssistantMessage content
- Last tool_use block when AssistantMessage has tool calls
- Only the last overall block when AssistantMessage has both content and
tools

This prevents exceeding the cache breakpoint limit while maintaining
correct caching behavior.



<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Fixes cache_control placement so it applies only to the last block in
each Anthropic message, keeping requests within the 4-cache-breakpoint
limit. Prevents cache overflow in messages with multiple content parts
and/or tool calls while preserving correct caching.

- **Bug Fixes**
- Apply cache_control only to the last content/tool block to meet
Anthropic’s 4-breakpoint limit.
- Cover all cases: only content, only tool calls, and mixed content +
tools (last overall block wins).
- Added focused tests to verify last-block-only caching for text parts,
tool_use lists, and mixed messages.

<sup>Written for commit 5a3d340ec4.
Summary will update automatically on new commits.</sup>

<!-- End of auto-generated description by cubic. -->



<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
generating a summary for commit
2ba8e0cef6. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2025-11-21 17:58:55 -08:00
Mert Unsal 2ba8e0cef6 Merge branch 'main' into fix/anthropic-cache-breakpoint-limit-clean 2025-11-21 17:57:41 -08:00
Mert Unsal 5236971917 Update agent prompts for action limits and verification (#3645)
Reduce default `max_actions_per_step` to 3 and add explicit action
limits and step verification instructions to flash prompts.

The added verification rules aim to prevent the agent from taking
premature or consequential actions (like submitting forms or navigating)
before confirming the success of the previous step, thereby improving
agent reliability and reducing errors in multi-step tasks.

---
[Slack
Thread](https://browser-use.slack.com/archives/D092QUQDC56/p1763774897814279?thread_ts=1763774897.814279&cid=D092QUQDC56)

<a
href="https://cursor.com/background-agent?bcId=bc-50d25809-8c25-4ded-b50c-9a0a39474eb9"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/open-in-cursor-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/open-in-cursor-light.svg"><img alt="Open in
Cursor"
src="https://cursor.com/open-in-cursor.svg"></picture></a>&nbsp;<a
href="https://cursor.com/agents?id=bc-50d25809-8c25-4ded-b50c-9a0a39474eb9"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/open-in-web-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/open-in-web-light.svg"><img alt="Open in Web"
src="https://cursor.com/open-in-web.svg"></picture></a>











<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Lowered the default max actions per step to 3 and added step
verification rules to flash prompts to prevent premature navigation or
form submissions. This improves reliability in multi-step tasks and
reduces errors.

- **New Features**
- Added an action_rules block to flash prompts (including Anthropic)
with a per-step action limit and instructions to verify the previous
step before taking consequential actions and to check page state after
changes.

- **Refactors**
- Set max_actions_per_step to 3 across prompts.py, service.py, and
views.py.

<sup>Written for commit 2df1faabe8.
Summary will update automatically on new commits.</sup>

<!-- End of auto-generated description by cubic. -->
2025-11-21 17:50:54 -08:00
Mert Unsal 2df1faabe8 Apply suggestions from code review 2025-11-21 17:49:28 -08:00
Cursor Agent 1cb1676779 Refine action rules for sequential browser actions
Co-authored-by: mailmertunsal <mailmertunsal@gmail.com>
2025-11-22 01:43:40 +00:00
Cursor Agent 9388800a9d Refine action rules for better state verification
Co-authored-by: mailmertunsal <mailmertunsal@gmail.com>
2025-11-22 01:35:29 +00:00
Mert Unsal 1a46aee4b8 Merge branch 'main' into cursor/update-agent-prompts-for-action-limits-and-verification-claude-4.5-sonnet-thinking-e3b0 2025-11-21 17:32:53 -08:00
Magnus Müller 24f4434312 Fixing the identified issue (#3644)
Fix hardcoded step timeout to use `self.settings.step_timeout`.

---
[Slack
Thread](https://browser-use.slack.com/archives/C08SZRT860M/p1763774697131229?thread_ts=1763774697.131229&cid=C08SZRT860M)

<a
href="https://cursor.com/background-agent?bcId=bc-8f8b15a8-fc0b-42e7-a719-9c25ca0dc84e"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/open-in-cursor-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/open-in-cursor-light.svg"><img alt="Open in
Cursor"
src="https://cursor.com/open-in-cursor.svg"></picture></a>&nbsp;<a
href="https://cursor.com/agents?id=bc-8f8b15a8-fc0b-42e7-a719-9c25ca0dc84e"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/open-in-web-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/open-in-web-light.svg"><img alt="Open in Web"
src="https://cursor.com/open-in-web.svg"></picture></a>



<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Replace the hardcoded 180s step timeout with self.settings.step_timeout
to make timeouts configurable. Update the timeout error message to show
the configured value.

<sup>Written for commit 15e7fd6eec.
Summary will update automatically on new commits.</sup>

<!-- End of auto-generated description by cubic. -->

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Replaces the hardcoded 180s step timeout with
`self.settings.step_timeout` and updates the timeout error message
accordingly.
> 
> - **Agent step execution (`browser_use/agent/service.py`)**:
> - Replace hardcoded `timeout=180` with `self.settings.step_timeout` in
`asyncio.wait_for(self.step(...))`.
> - Update timeout error message to reflect the configured
`step_timeout` value.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
15e7fd6eec. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2025-11-21 17:30:19 -08:00
Cursor Agent d1b47eba50 Refactor: Reduce max actions per step to 3
Co-authored-by: mailmertunsal <mailmertunsal@gmail.com>
2025-11-22 01:29:59 +00:00
Cursor Agent 15e7fd6eec Refactor: Use configurable step timeout
Co-authored-by: mamagnus00 <mamagnus00@gmail.com>
2025-11-22 01:28:40 +00:00
Gregor Žunič 2dec060965 turned off model selection field 2025-11-21 17:19:53 -08:00
Magnus Müller d5ed1f2022 deepcogito/cogito-v2.1-671b (#3642)
Auto-generated PR for: deepcogito/cogito-v2.1-671b

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
generating a summary for commit
f5f307f5c1. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2025-11-21 13:47:05 -08:00
Magnus Müller f5f307f5c1 deepcogito/cogito-v2.1-671b 2025-11-21 13:46:48 -08:00
Magnus Müller 7d34f9c930 Fix framework events not triggering (#3639)
Can't pass an IIFE to `Runtime.callFunctionOn`; doing so fails with a
syntax error.

This caused some inputs to clear after the agent blurred them due to
framework events never firing.

## Summary
Fixes framework events not triggering by replacing the IIFE with a
regular function for Runtime.callFunctionOn, preventing syntax errors
and ensuring change/blur events fire correctly. Inputs no longer clear
after the agent blurs them.

## Changes
- Replace IIFE with a function executed via objectId to avoid CDP syntax
error
- Add success/failure logs to help diagnose event triggering

## Based on
Original PR: #3367 by @sophiabits
Merged with latest main branch

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Replace IIFE with a regular function in `Runtime.callFunctionOn` to
reliably trigger framework events and add success/failure logging.
> 
> - **Watchdogs
(`browser_use/browser/watchdogs/default_action_watchdog.py`)**:
> - Replace IIFE with a regular `function()` for
`Runtime.callFunctionOn` in `_trigger_framework_events` to avoid syntax
errors and ensure events dispatch.
> - Add debug/warning logs indicating success or failure of framework
event triggering.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
d301f629fd. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Fixes framework events not firing by avoiding a syntax error in CDP
Runtime.callFunctionOn. Change/blur events now trigger, and inputs no
longer clear after blur.

- **Bug Fixes**
- Execute a regular function via objectId instead of an IIFE in
_trigger_framework_events.
  - Add success/failure logs to diagnose event triggering.

<sup>Written for commit d301f629fd.
Summary will update automatically on new commits.</sup>

<!-- End of auto-generated description by cubic. -->
2025-11-20 23:12:08 -08:00
Magnus Müller d301f629fd Merge main into fix-framework-events 2025-11-20 23:09:23 -08:00
mertunsall 25ffd9876d fix 2025-11-20 22:57:47 -08:00
mertunsall 4a60f38293 tried something 2025-11-20 22:54:12 -08:00
Mert Unsal 49b58a3a29 BU model fix (#3637)
<!-- CURSOR_SUMMARY -->
> [!NOTE]
> Restricts auto-configured LLM screenshot size to only `claude-sonnet`
models, removing the `browser-use` model check.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
5d525b7e60. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Restricts auto-configuration of llm_screenshot_size to Claude Sonnet
models only. Prevents incorrect screenshot sizing for other models that
include "browser-use" in their name.

- **Bug Fixes**
- Removed the "browser-use" substring check; auto-config now triggers
only when model_name.startswith('claude-sonnet').

<sup>Written for commit 5d525b7e60.
Summary will update automatically on new commits.</sup>

<!-- End of auto-generated description by cubic. -->
2025-11-20 17:52:56 -08:00
Pyry Takala 5a3d340ec4 fix: add type ignores for pyright in cache tests
Content blocks are dictionaries at runtime despite type annotations
indicating Pydantic models. Added type: ignore comments to allow
dictionary-style .get() access which works correctly at runtime.
2025-11-21 01:12:56 +00:00
Pyry Takala 3787380829 fix: apply cache_control only to last block in Anthropic messages
Previously, cache_control was applied to every content block and tool call
in a message, which could exceed Anthropic's limit of 4 cache breakpoints
per request. This fix ensures cache_control is only applied to the last
block in each message type:
- Last text block in UserMessage/AssistantMessage content
- Last tool_use block when AssistantMessage has tool calls
- Only the last overall block when AssistantMessage has both content and tools

This prevents exceeding the cache breakpoint limit while maintaining
correct caching behavior.
2025-11-21 01:04:12 +00:00
mertunsall 5d525b7e60 BU model fix 2025-11-20 14:07:05 -08:00
Shubham Singh 515a42bdac Merge branch 'main' into fix/3620-javascript-quote-fixer-regex 2025-11-21 01:37:29 +05:30
Saurav Panda 7d5828edad fixed rerun_history (#3635)
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Fixes the rerun_history example by correcting the ChatOpenAI import
path, updating the model to gpt-4.1-mini, and simplifying summary-LLM
usage to avoid errors when rerunning histories.

- **Bug Fixes**
  - Use from browser_use.llm import ChatOpenAI.
- Update example model to gpt-4.1-mini and remove outdated provider
snippets.
  - Clarify that summary_llm=None uses the agent’s LLM by default.

<sup>Written for commit 7811c62377.
Summary will update automatically on new commits.</sup>

<!-- End of auto-generated description by cubic. -->
2025-11-20 09:01:33 -08:00
Saurav Panda 7811c62377 fixed rerun_history 2025-11-20 22:22:31 +05:30
Saurav Panda 8d57da7f58 feat: added AI summary for rerun task (#3634)
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Adds an automated rerun summary that analyzes the final screenshot and
step outcomes, then reports success and completion status. Supports an
optional summary_llm to use a specific model; defaults to the agent’s
model.

- **New Features**
- Generates a summary at the end of rerun_history using screenshot +
execution stats; appended as the last ActionResult.
- Adds RerunSummaryAction with summary, success, and completion_status.
- Introduces get_rerun_summary_prompt/message and
_generate_rerun_summary with structured output and text fallback.
- Updates the rerun example and adds tests covering success, errors,
fallback, and statistics.

- **Migration**
- rerun_history now returns an extra final ActionResult containing the
summary; handle results[-1] accordingly.
- Use summary_llm to override the model used for the summary when
needed.

<sup>Written for commit 5e356108f9.
Summary will update automatically on new commits.</sup>

<!-- End of auto-generated description by cubic. -->
2025-11-20 08:36:17 -08:00
Saurav Panda 5e356108f9 feat: added AI summary for rerun task 2025-11-20 21:40:30 +05:30