Skip to content

Conversation

@jezekra1
Copy link
Collaborator

@jezekra1 jezekra1 commented Nov 18, 2025

There are still cases when you will get http error code:

  • calling provider that does not exist (http 404)
  • no permissions to call provider (http 403)

Other errors are now correctly propagated through as a2a errors with status code 200 and error payload

The original motivation for this issue was to solve an invalid payload type for the client:
Expected response header Content-Type to contain 'text/event-stream', got 'text/html', however this is a a2a client issue, not possible to solve on the server side. It occurs when the agent card contains invalid transport, which we can do nothing about on the server.

I at least improved the error message, this is what's shown if your card has url "example.com":

❯ agentstack run chat hi
⠇ Extracting knowledge nectar...💥 RuntimeError: The agent is not reachable, please check that the agent card is configured properly.
Agent connection info:
  {
    "additionalInterfaces": null,
    "preferredTransport": "JSONRPC",
    "url": "https://example.com"
  }
Full Error:
  HTTP Error 400: Invalid SSE response or protocol error: Expected response header Content-Type to contain 'text/event-stream', got 'text/html'

💡 HINT: Are you having consistent problems? If so, try these troubleshooting steps: agentstack platform delete to remove the platform, and agentstack
platform start to recreate it.

Ref: #1497

  • no docs needed

@jezekra1 jezekra1 requested a review from pilartomas November 18, 2025 15:02
@dosubot dosubot bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Nov 18, 2025
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @jezekra1, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the server's error handling for proxy requests, particularly those involving agent-to-agent (A2A) communication. The core change shifts the paradigm from returning various HTTP error codes for certain proxy failures to consistently encapsulating these issues within the A2A protocol's error payload, while maintaining a 200 HTTP status. This ensures a more uniform and predictable error reporting mechanism for clients, making it easier to parse and react to application-level errors. It also introduces a specific error type for invalid provider calls and includes a new test to validate this behavior.

Highlights

  • Standardized Error Reporting: Proxy errors are now primarily reported as A2A errors with a 200 HTTP status code and an error payload, improving client-side error handling consistency.
  • New Error Type: Introduced InvalidProviderCallError to specifically categorize issues related to calling providers that are in an invalid state (e.g., offline or error state).
  • Delayed Agent Card Creation: The ProxyRequestHandler now uses an agent_card_factory to defer the creation of the AgentCard, allowing for better error propagation during the agent setup phase.
  • Enhanced Provider State Checks: Added explicit checks in ensure_agent to raise InvalidProviderCallError when attempting to interact with providers that are offline or in an error state.
  • Configuration Key Renaming: The JWT secret key environment variable in template.env has been renamed for clarity and consistency.
  • E2E Test for Error Handling: A new end-to-end test confirms that offline providers correctly return A2A errors with the expected structure and status.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request refactors the error handling for proxy requests to ensure that server-side errors are propagated as A2A errors with an HTTP 200 status, rather than causing HTTP 500 errors. This is a good improvement for API consistency. The changes are well-structured, introducing a specific InvalidProviderCallError and using a factory pattern to delay agent resolution until it's within an exception handling block. A new end-to-end test validates the new behavior. I have a couple of minor suggestions to improve the clarity of error messages and test documentation.

@jezekra1 jezekra1 force-pushed the fix-a2a-error-handling branch 2 times, most recently from ee32329 to a61679c Compare November 18, 2025 15:33
@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:M This PR changes 30-99 lines, ignoring generated files. labels Nov 18, 2025
@jezekra1 jezekra1 force-pushed the fix-a2a-error-handling branch from a61679c to d8617b3 Compare November 19, 2025 12:29
Signed-off-by: Radek Ježek <[email protected]>
@dosubot dosubot bot added the lgtm This PR has been approved by a maintainer label Nov 19, 2025
Signed-off-by: Radek Ježek <[email protected]>
@jezekra1 jezekra1 merged commit 790d061 into main Nov 19, 2025
9 of 10 checks passed
@jezekra1 jezekra1 deleted the fix-a2a-error-handling branch November 19, 2025 14:06
edengilbert pushed a commit to edengilbert/agentstack that referenced this pull request Nov 21, 2025
edengilbert added a commit that referenced this pull request Nov 21, 2025
…1513)

* Add blog post: How to Run a BeeAI Framework Agent as an A2A Server

Signed-off-by: Eden Gilbert <[email protected]>

* Finalize A2A Server blog post after preview edits

Signed-off-by: Eden Gilbert <[email protected]>

* Update a2a-server.mdx

Updated based on gemini feedback

Signed-off-by: Eden Gilbert <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* feat(ui): group trajectories (#1482)

Signed-off-by: Petr Kadlec <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* fix(ui): proactive access_token refresh to avoid refresh race (#1501)

Signed-off-by: Petr Kadlec <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* fix(ui): runtime envs and feature flags cleanup (#1479)

Signed-off-by: Eden Gilbert <[email protected]>

* feat(ui): render mermaid diagrams and latex syntax in markdown (#1488)

Signed-off-by: Eden Gilbert <[email protected]>

* feat(sdk): utilize platform auth in mcp extension (#1508)

Signed-off-by: Tomas Pilar <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* feat(server): add user info endpoint (#1505)

Signed-off-by: Radek Ježek <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* docs: remove redundant ToC from connectors guide (#1519)

Signed-off-by: Jenna Winkler <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* fix(ui): array length checks (#1526)

Signed-off-by: Eden Gilbert <[email protected]>

* feat: initial implementation for connectors management in UI (#1443)

* feat: initial implementation for connectors management in UI

Signed-off-by: Tomas Weiss <[email protected]>

* feat: connectors prep work

Signed-off-by: Tomas Weiss <[email protected]>

* feat: proper error handling

Signed-off-by: Tomas Weiss <[email protected]>

* fix: missing licence headers

Signed-off-by: Tomas Weiss <[email protected]>

* fix: imports

Signed-off-by: Tomas Weiss <[email protected]>

* fix: missing schema

Signed-off-by: Tomas Weiss <[email protected]>

* chore: post rebase adjustments

Signed-off-by: Tomas Weiss <[email protected]>

* fix: proper schema

Signed-off-by: Tomas Weiss <[email protected]>

* fix: code review comments

Signed-off-by: Tomas Weiss <[email protected]>

---------

Signed-off-by: Tomas Weiss <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* docs: update deployment guide (#1525)

Signed-off-by: Eden Gilbert <[email protected]>

* feat(ui): make 'add new agent' button admin only (#1527)

Signed-off-by: Petr Kadlec <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* docs: overhaul (#1540)

Signed-off-by: Tomas Weiss <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* feat(docs): add guide on connecting CLI to remote servers (#1541)

Signed-off-by: Tomas Pilar <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* feat(server): refresh unmanaged agent cards (#1528)

Signed-off-by: Aleš Kalfas <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* docs: minor changes (#1545)

Signed-off-by: Matous Havlena <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* chore: docs workflow (#1502)

* chore: docs workflow

Signed-off-by: Tomas Weiss <[email protected]>

* fix: better quoting

Signed-off-by: Tomas Weiss <[email protected]>

* fix: better git habndling

Signed-off-by: Tomas Weiss <[email protected]>

* chore: improve PR template

Signed-off-by: Tomas Weiss <[email protected]>

* chore: provide docs

Signed-off-by: Tomas Weiss <[email protected]>

---------

Signed-off-by: Tomas Weiss <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* chore: bump up uvicorn timeouts to 5s, make configurable (#1548)

Signed-off-by: Matous Havlena <[email protected]>
Signed-off-by: Jan Pokorný <[email protected]>
Co-authored-by: Jan Pokorný <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* fix(server): connectors header forwading (#1553)

Signed-off-by: Tomas Pilar <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* release: v0.4.2-rc1

Signed-off-by: Eden Gilbert <[email protected]>

* docs: add explicit WSL instructions

Signed-off-by: Jan Pokorný <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* fix: long operations inside transactions cause db connection exhaustion (#1549)

Signed-off-by: Radek Ježek <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* ci: add missing mise.lock checksums

Signed-off-by: Jan Pokorný <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* feat(agentstack-cli): clarify agent statuses (fixes #1535)

Signed-off-by: Jan Pokorný <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* feat(agentstack-cli): redesign agentstack list output
Fixes #1536

Signed-off-by: Jan Pokorný <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* docs(agentstack-cli): add custom help text (#1554)

Signed-off-by: Eden Gilbert <[email protected]>

* docs: improve WSL2 installation instructions

Signed-off-by: Jan Pokorný <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* Update deployment-guide.mdx (#1573)

Signed-off-by: Jenna Winkler <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* chore: fixing dead links in the docs (#1557)

Signed-off-by: Tomas Weiss <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* refactor(web): use single framewok-diagram.svg file themeable with CSS variables (#1539)

Signed-off-by: Eden Gilbert <[email protected]>

* refactor(ui): rework Spinner component with CSS only animation, remove lottie-react (#1538)

Signed-off-by: Eden Gilbert <[email protected]>

* fix(agentstack-cli): properly react to misconfigured WSL2

Signed-off-by: Jan Pokorný <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* docs(agentstack-cli): clarify WSL install steps

Signed-off-by: Jan Pokorný <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* feat(agentstack-cli): add `agentstack server switch` alias

Signed-off-by: Jan Pokorný <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* feat(ui): remove links to docs and support (#1570)

Signed-off-by: Eden Gilbert <[email protected]>

* chore(ui): update "starting the agent" copy (#1571)

Signed-off-by: Eden Gilbert <[email protected]>

* fix(ui): messages being cut off on narrower screens (#1546)

Signed-off-by: Eden Gilbert <[email protected]>

* feat(ui): hide offline agents (#1434)

Signed-off-by: Eden Gilbert <[email protected]>

* feat(ui): render Markdown syntax inside trajectories (#1555)

Signed-off-by: Eden Gilbert <[email protected]>

* chore(server): add resource discovery root fallback to connectors (#1587)

Signed-off-by: Tomas Pilar <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* feat(ui): update homepage and sidebar (#1512)

Signed-off-by: Eden Gilbert <[email protected]>

* chore: remove unnecessary __init__.py (#1494)

Signed-off-by: Eden Gilbert <[email protected]>

* fix(ui): replace trajectory group with latest content, add docs (#1523)

Signed-off-by: Petr Kadlec <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* fix(ui): mute error toasts on session expiration (#1589)

Signed-off-by: Petr Kadlec <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* fix: avoid setting up embeddings on RITS

resolves #1578

Signed-off-by: Jan Pokorný <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* feat: update beeai-framework

Signed-off-by: Tomas Dvorak <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* Update README.md (#1569)

* Update README.md

Add Radek's agent as reference

Signed-off-by: Jenna Winkler <[email protected]>

* Update README.md

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Jenna Winkler <[email protected]>

* Update README.md

* Update README.md

* Update README.md

Signed-off-by: Jenna Winkler <[email protected]>

---------

Signed-off-by: Jenna Winkler <[email protected]>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Eden Gilbert <[email protected]>

* docs: cleanup (#1586)

* docs: updates

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Jenna Winkler <[email protected]>

* Update docs/docs.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Jenna Winkler <[email protected]>

* Update authenticate-cli-to-server.mdx

Signed-off-by: Jenna Winkler <[email protected]>

* Update README.md

Signed-off-by: Jenna Winkler <[email protected]>

* docs: updates

---------

Signed-off-by: Jenna Winkler <[email protected]>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Eden Gilbert <[email protected]>

* fix(helm): peroperly configure agent_registry.sync_period_cron

Fixes #1211

Signed-off-by: Jan Pokorný <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* fix(tests): skip heavy docling e2e test (#1595)

Signed-off-by: Radek Ježek <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* feat: add validation for agent import URL (#1544)

Signed-off-by: Eden Gilbert <[email protected]>

* feat(agentstack-cli): use better heuristics for determining for adding agents (#1603)

Signed-off-by: Eden Gilbert <[email protected]>

* feat(agentstack-cli): add server info and confirmations to CLI commands (#1590)

Signed-off-by: Eden Gilbert <[email protected]>

* feat(cli): add SingleSelect field support to forms (#1596)

Signed-off-by: Petr Kadlec <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* fix(ui): display agent-generated images in response markdown (#1601)

Signed-off-by: Petr Kadlec <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* feat(ui): render markdown in API error messages (#1593)

Signed-off-by: Petr Kadlec <[email protected]>
Signed-off-by: Petr Bulánek <[email protected]>
Co-authored-by: Petr Bulánek <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* docs: add permissions and tokens page (#1576)

Signed-off-by: Radek Ježek <[email protected]>
Signed-off-by: Matous Havlena <[email protected]>
Co-authored-by: Matous Havlena <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* fix(server): send proxy errors as a2a errors (#1594)

Signed-off-by: Radek Ježek <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* fix(tests): use maximize disk space action (#1607)

Signed-off-by: Radek Ježek <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* fix(tests): switch to custom model again (#1608)

Signed-off-by: Radek Ježek <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* chore: form extension rework (#1481)

Signed-off-by: Eden Gilbert <[email protected]>

* fix(server): include redirect_uri into connector's token request (#1616)

Signed-off-by: Tomas Pilar <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* feat: update beeai framework (#1611)

Signed-off-by: Tomas Dvorak <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* fix(cli): agent info command missing auth (#1622)

Signed-off-by: Radek Ježek <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* feat(ui): redo sidebar and homepage (#1610)

Signed-off-by: Eden Gilbert <[email protected]>

* feat: extending TS sdk (#1609)

* feat: extending TS sdk

Signed-off-by: Tomas Weiss <[email protected]>

* fix: code review comments

Signed-off-by: Tomas Weiss <[email protected]>

* fix: remove GET from the callApi function, still keep the method for extensibility in the future

Signed-off-by: Tomas Weiss <[email protected]>

* chore: cleanup package.json

Signed-off-by: Tomas Weiss <[email protected]>

* chore: testing release pipeline

Signed-off-by: Tomas Weiss <[email protected]>

* chore: install mise

Signed-off-by: Tomas Weiss <[email protected]>

* fix: no git checks

Signed-off-by: Tomas Weiss <[email protected]>

* chore: setup release action

Signed-off-by: Tomas Weiss <[email protected]>

* fix: code review commnets

Signed-off-by: Tomas Weiss <[email protected]>

---------

Signed-off-by: Tomas Weiss <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* release: v0.4.2-rc2

Signed-off-by: Eden Gilbert <[email protected]>

* fix(agents): add temporary fallback imports (#1624)

Signed-off-by: Radek Ježek <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* release: v0.4.2-rc3

Signed-off-by: Eden Gilbert <[email protected]>

* chore: update release sdk to npm instead of pnpm

Signed-off-by: Tomas Weiss <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* release: v0.4.2-rc4

Signed-off-by: Eden Gilbert <[email protected]>

* chore: update npm for release

Signed-off-by: Tomas Weiss <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* release: v0.4.2-rc5

Signed-off-by: Eden Gilbert <[email protected]>

* chore: add release tag for npm

Signed-off-by: Tomas Weiss <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* release: v0.4.2-rc6

Signed-off-by: Eden Gilbert <[email protected]>

* chore: missing repository

Signed-off-by: Tomas Weiss <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>

* release: v0.4.2-rc7

Signed-off-by: Eden Gilbert <[email protected]>

* chore: run mise fix

Signed-off-by: Eden Gilbert <[email protected]>

---------

Signed-off-by: Eden Gilbert <[email protected]>
Signed-off-by: Eden Gilbert <[email protected]>
Signed-off-by: Petr Kadlec <[email protected]>
Signed-off-by: Tomas Pilar <[email protected]>
Signed-off-by: Radek Ježek <[email protected]>
Signed-off-by: Jenna Winkler <[email protected]>
Signed-off-by: Tomas Weiss <[email protected]>
Signed-off-by: Aleš Kalfas <[email protected]>
Signed-off-by: Matous Havlena <[email protected]>
Signed-off-by: Jan Pokorný <[email protected]>
Signed-off-by: Tomas Dvorak <[email protected]>
Signed-off-by: Petr Bulánek <[email protected]>
Co-authored-by: Petr Kadlec <[email protected]>
Co-authored-by: Petr Bulánek <[email protected]>
Co-authored-by: Tomas Pilar <[email protected]>
Co-authored-by: Radek Ježek <[email protected]>
Co-authored-by: Jenna Winkler <[email protected]>
Co-authored-by: Tomáš Weiss <[email protected]>
Co-authored-by: Aleš Kalfas <[email protected]>
Co-authored-by: Matous Havlena <[email protected]>
Co-authored-by: Jan Pokorný <[email protected]>
Co-authored-by: Arun Babu Neelicattu <[email protected]>
Co-authored-by: Tomas Dvorak <[email protected]>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lgtm This PR has been approved by a maintainer size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants