Files
browser-use/browser_use
Magnus Müller e1e8003c24 Fix: Ensure direct action calls go through act() for consistent error handling
The action_wrapper now delegates to act() instead of calling registry.execute_action() directly.
This ensures:
- Consistent error handling (returns ActionResult with error, not raw exceptions)
- Consistent result normalization (always returns ActionResult)
- Full observability (Laminar spans, logging)
- Proper handling of BrowserError and TimeoutError

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 19:34:18 -07:00
..
2025-10-21 18:55:54 -07:00
2025-10-24 14:14:22 -07:00
2025-08-26 14:23:40 -07:00
2025-10-24 00:06:41 -07:00
2025-09-19 19:36:53 -07:00
2025-10-21 23:40:51 -07:00
2025-10-21 18:55:54 -07:00
2025-10-21 20:05:42 -07:00
2025-09-16 03:03:24 +05:30
2025-09-16 22:27:45 -07:00
2025-03-28 18:11:36 -07:00
2025-09-23 20:03:26 -07:00
2025-07-21 12:59:11 +02:00
2024-11-06 18:18:00 +01:00

Codebase Structure

The code structure inspired by https://github.com/Netflix/dispatch.

Very good structure on how to make a scalable codebase is also in this repo.

Just a brief document about how we should structure our backend codebase.

Code Structure

src/
/<service name>/
models.py
services.py
prompts.py
views.py
utils.py
routers.py

    	/_<subservice name>/

Service.py

Always a single file, except if it becomes too long - more than ~500 lines, split it into _subservices

Views.py

Always split the views into two parts

# All
...

# Requests
...

# Responses
...

If too long → split into multiple files

Prompts.py

Single file; if too long → split into multiple files (one prompt per file or so)

Routers.py

Never split into more than one file