fix(session-export): propagate download cancellation

Only the root raw-artifact read received the request signal. Lineage discovery and descendant reads could continue after disconnect, response-body cancellation did not stop the producer, and the root error boundary converted an abort rejection into an ordinary HTTP 500.

Combine request and response-consumer cancellation into the ZIP producer signal, forward it through every cancellable read, check it around the attachment seam, and terminate fflate exactly once when production stops. The pre-stream boundary now rethrows the original abort instead of translating it. Regression tests cover signal propagation, exact cancellation identity at the HTTP boundary, and a reader cancellation interrupting an in-flight descendant read; the bilingual host contract records these lifecycle semantics.
This commit is contained in:
Tianyi Cui
2026-08-11 15:14:10 +08:00
parent 52f0b09e76
commit 192840e198
9 changed files with 176 additions and 24 deletions
+2 -2
View File
@@ -2,5 +2,5 @@
# side as of the last confirmed-consistent state. Both languages carry equal authority;
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write packages/host/apiproxy/README.md
README.md: 1d9790beba0b72bec15c3e6f3b35a4d1f0f67d61
README.zh.md: 478088f1167edd4e3c2b55c33e914e85349d2bba
README.md: c7b655816099d786a08ecfae6d794f35f2a9c8e3
README.zh.md: 7577eb025fb84ac40de206e3ed780d92c2ab237a