[codex] Handle streamed chat errors and harden document access
From the PR description
Summary
- carries forward the post-merge hardening work from the prior branch: workflow metadata persistence, document access hardening, expiring download tokens, AI route rate limits, and normalized document load errors
- adds streamed chat error handling so SSE
{ type: "error" }events surface as user-readable failures instead of leaving the chat in a confusing streaming state - keeps shared document load error parsing in one frontend helper
Why
The previous PR was merged before the follow-up hardening commits could receive a fresh bot review. This PR packages those changes plus the local chat-stream error handling into a new reviewable branch.
Validation
npm run build --prefix backend(cd frontend && npx tsc --noEmit)npm run build --prefix frontendgit diff --check
Our analysis
Harden post-merge surface and surface streaming chat errors — read the full analysis →
Think the analysis missed something the PR description covers?
Commits in this PR (6)
| SHA | Subject | Author | Date | |
|---|---|---|---|---|
3011eb79 | Persist workflow metadata for chat messages | kveton | 2026-05-04 | ↗ GitHub |
d5539959 | Harden document access and request limits | kveton | 2026-05-04 | ↗ GitHub |
4e770c9b | Normalize document load errors | kveton | 2026-05-04 | ↗ GitHub |
a2842e05 | Handle streamed chat errors | kveton | 2026-05-04 | ↗ GitHub |
e0f2d13d | Optimize tabular document access checks | kveton | 2026-05-04 | ↗ GitHub |
3aadb6f8 | Serialize jsonb values in Postgres compat writes | kveton | 2026-05-04 | ↗ GitHub |
Capture this PR into my fork
Download a Markdown prompt that tells Claude how to port every
commit in this PR into your working tree. Run it via
claude -p < capture-pull-8.md from
inside the repo you want the changes in.