Skip to content

fix: pass through server-v3 operation errors#1937

Merged
monadoid merged 3 commits intomainfrom
act_500_fix
Mar 31, 2026
Merged

fix: pass through server-v3 operation errors#1937
monadoid merged 3 commits intomainfrom
act_500_fix

Conversation

@monadoid
Copy link
Copy Markdown
Contributor

@monadoid monadoid commented Mar 31, 2026

Summary

  • return underlying operation error messages from server-v3 streaming handlers
  • return underlying non-AppError messages from the top-level server-v3 error wrapper
  • preserve existing status code behavior while making local act/extract/observe 500s diagnosable

Testing

  • pnpm --filter @browserbasehq/stagehand-server-v3 typecheck

Summary by cubic

Pass through underlying operation errors in @browserbasehq/stagehand-server-v3 so clients see real failure messages during streaming and top-level responses, and force flow logs on for easier debugging. Status codes stay the same, making local act/extract/observe 500s diagnosable.

  • Bug Fixes
    • Streaming + error wrapper: return the thrown error’s message for non-AppError cases; fall back to a default when not an Error, preserving status codes.
    • Observe route: remove unused Variables import/cast to satisfy lint; no behavior change.

Written for commit ba08fd0. Summary will update on new commits. Review in cubic

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Mar 31, 2026

🦋 Changeset detected

Latest commit: ba08fd0

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@browserbasehq/stagehand-server-v3 Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@monadoid monadoid marked this pull request as ready for review March 31, 2026 20:27
Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 2 files

Confidence score: 5/5

  • Automated review surfaced no issues in the provided summaries.
  • No files require special attention.
Architecture diagram
sequenceDiagram
    participant Client
    participant Wrapper as withErrorHandling
    participant Handler as Operation Handler (act/extract/observe)
    participant Stream as createStreamingResponse

    Note over Client,Handler: Standard Request Flow
    Client->>Wrapper: HTTP Request
    Wrapper->>Handler: Execute operation logic
    
    alt Operation Success
        Handler-->>Wrapper: Result data
        Wrapper-->>Client: 200 OK (Data)
    else Operation Throws Non-AppError
        Handler-->>Wrapper: Throw Error("Specific failure")
        Wrapper->>Wrapper: CHANGED: Extract err.message
        Wrapper-->>Client: 500 Internal Server Error (Message: "Specific failure")
    end

    Note over Client,Stream: Streaming Request Flow
    Client->>Wrapper: HTTP Request (Streaming)
    Wrapper->>Stream: Initialize stream
    Stream->>Handler: Run async operation
    
    alt Operation Fails during Stream
        Handler-->>Stream: Throw Error("Connection timeout")
        Stream->>Stream: CHANGED: Set clientMessage = handlerError.message
        Stream-->>Client: Send event: { "type": "error", "error": "Connection timeout" }
    end
Loading

@monadoid monadoid merged commit 249f5ed into main Mar 31, 2026
7 checks passed
miguelg719 pushed a commit that referenced this pull request Apr 8, 2026
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @browserbasehq/stagehand@3.2.1

### Patch Changes

- [#1843](#1843)
[`144e18e`](144e18e)
Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - apply user
defined toolTimeout to all agent tools (other than wait & think tools)

- [#1872](#1872)
[`d3c3736`](d3c3736)
Thanks [@tkattkat](https://github.com/tkattkat)! - Add support for LLM
provider middleware

- [#1953](#1953)
[`5c889df`](5c889df)
Thanks [@github-actions](https://github.com/apps/github-actions)! -
(NEW) Model Gateway: make model api key optional on API

- [#1924](#1924)
[`a1ab39e`](a1ab39e)
Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - fix issue
where stagehand could not attach to new tabs that were created manually.

- [#1874](#1874)
[`f3fe7ce`](f3fe7ce)
Thanks [@miguelg719](https://github.com/miguelg719)! - Add headers (LLM)
to ModelConfig

- [#1964](#1964)
[`5fb9785`](5fb9785)
Thanks [@github-actions](https://github.com/apps/github-actions)! -
chore: update examples

- [#1901](#1901)
[`f5d1f1f`](f5d1f1f)
Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - pass
timeout as timeoutMs in goto()

- [#1858](#1858)
[`8bf5db8`](8bf5db8)
Thanks [@monadoid](https://github.com/monadoid)! - Add explicit SSE
event names for local v3 streaming and update the generated SDK contract
to match.

- [#1899](#1899)
[`6dc2276`](6dc2276)
Thanks [@tkattkat](https://github.com/tkattkat)! - fix: include
screenshot in openai cua agents first message

## @browserbasehq/stagehand-evals@1.1.10

### Patch Changes

- Updated dependencies
\[[`144e18e`](144e18e),
[`d3c3736`](d3c3736),
[`5c889df`](5c889df),
[`a1ab39e`](a1ab39e),
[`f3fe7ce`](f3fe7ce),
[`5fb9785`](5fb9785),
[`f5d1f1f`](f5d1f1f),
[`8bf5db8`](8bf5db8),
[`6dc2276`](6dc2276)]:
    -   @browserbasehq/stagehand@3.2.1

## @browserbasehq/stagehand-server-v3@3.6.2

### Patch Changes

- [#1901](#1901)
[`f5d1f1f`](f5d1f1f)
Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - pass
timeout as timeoutMs in goto()

- [#1873](#1873)
[`a98801a`](a98801a)
Thanks [@miguelg719](https://github.com/miguelg719)! - Fix schema
parsing bug for Pydantic `.model_json_schema()` on missing nested
references

- [#1858](#1858)
[`8bf5db8`](8bf5db8)
Thanks [@monadoid](https://github.com/monadoid)! - Add explicit SSE
event names for local v3 streaming and update the generated SDK contract
to match.

- [#1937](#1937)
[`249f5ed`](249f5ed)
Thanks [@monadoid](https://github.com/monadoid)! - Improve server-v3
error passthrough for local operation failures

- Updated dependencies
\[[`144e18e`](144e18e),
[`d3c3736`](d3c3736),
[`5c889df`](5c889df),
[`a1ab39e`](a1ab39e),
[`f3fe7ce`](f3fe7ce),
[`5fb9785`](5fb9785),
[`f5d1f1f`](f5d1f1f),
[`8bf5db8`](8bf5db8),
[`6dc2276`](6dc2276)]:
    -   @browserbasehq/stagehand@3.2.1

## @browserbasehq/stagehand-server-v4@3.6.2

### Patch Changes

- Updated dependencies
\[[`144e18e`](144e18e),
[`d3c3736`](d3c3736),
[`5c889df`](5c889df),
[`a1ab39e`](a1ab39e),
[`f3fe7ce`](f3fe7ce),
[`5fb9785`](5fb9785),
[`f5d1f1f`](f5d1f1f),
[`8bf5db8`](8bf5db8),
[`6dc2276`](6dc2276)]:
    -   @browserbasehq/stagehand@3.2.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants