Skip to content

fix(session): retry top-level stream request timeouts - #40268

Closed
fashen97 wants to merge 2 commits into
anomalyco:devfrom
fashen97:stream-timeout-retry
Closed

fix(session): retry top-level stream request timeouts#40268
fashen97 wants to merge 2 commits into
anomalyco:devfrom
fashen97:stream-timeout-retry

Conversation

@fashen97

@fashen97 fashen97 commented Aug 3, 2026

Copy link
Copy Markdown

Issue for this PR

Closes #39221

Type of change

  • Bug fix
  • New feature
  • Refactor / code improvement
  • Documentation

What does this PR do?

Some OpenAI Responses-compatible providers return HTTP 200 and then emit this
SSE error event:

{"type":"error","sequence_number":0,"code":"request_timeout","message":"stream error: stream disconnected before completion"}

parseStreamError() only read body.error.code, so the top-level timeout was
not classified as retryable and the turn stopped. This change recognizes the
top-level request_timeout code and uses the existing retry policy.

This complements #39413, which handles an HTTP 408 response status. This PR
handles the separate HTTP 200 plus SSE error response shape.

How did you verify your code works?

  • bun test test/session/retry.test.ts (34 pass)
  • bun typecheck
  • bunx prettier --check packages/opencode/src/provider/error.ts packages/opencode/test/session/retry.test.ts
  • The regression test exercises MessageV2.fromError() through
    SessionRetry.retryable() and verifies the parsed error is retryable.

Screenshots / recordings

Not a UI change.

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

@github-actions github-actions Bot added needs:compliance This means the issue will auto-close after 2 hours. needs:issue labels Aug 3, 2026
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Thanks for your contribution!

This PR doesn't have a linked issue. All PRs must reference an existing issue.

Please:

  1. Open an issue describing the bug/feature (if one doesn't exist)
  2. Add Fixes #<number> or Closes #<number> to this PR description

See CONTRIBUTING.md for details.

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

The following comment was made by an LLM, it may be inaccurate:

Potential Related PRs:

  1. fix(session): retry HTTP 408 request timeouts #39413: fix(session): retry HTTP 408 request timeouts

  2. fix(provider): recover stalled model streams #40010: fix(provider): recover stalled model streams

  3. fix(opencode): make long-lived provider streams robust to silent SSE terminations #39970: fix(opencode): make long-lived provider streams robust to silent SSE terminations

These are related PRs addressing similar stream reliability concerns, but #39413 is the most directly relevant since your PR explicitly complements it.

@github-actions github-actions Bot removed needs:issue needs:compliance This means the issue will auto-close after 2 hours. labels Aug 3, 2026
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Thanks for updating your PR! It now meets our contributing guidelines. 👍

@github-actions github-actions Bot mentioned this pull request Aug 9, 2026
6 tasks
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Automated PR Cleanup

Thank you for contributing to opencode.

Due to the high volume of PRs from users and AI agents, we periodically close older PRs using automated criteria so maintainers can focus review time on the most active and community-supported contributions.

This PR was closed because it matched the following cleanup criteria:

  • The PR was created more than 1 month ago
  • The PR had fewer than 2 positive reactions
  • Positive reactions are counted as thumbs-up, heart, celebration, or rocket reactions on the PR

PRs created within the last month are not affected by this cleanup.

If you believe this PR was closed incorrectly, or if you are still actively working on it, please leave a comment explaining why it should be reopened. A maintainer can review and reopen it if appropriate.

Thanks again for taking the time to contribute.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Retry pre-output HTTP 408 request_timeout from OpenAI-compatible streams

1 participant