* chore: auto-sync from VM - 2026-07-10T16:29:57Z
* fix(combo): retry transient errors in pipeline strategy
Pipeline combo strategy (sequential chain) was hard-failing on ANY
intermediate step error, including transient ones like 429 rate-limit
and 503 service-unavailable. The combo config already exposes
maxRetries and retryDelayMs, but handlePipelineChat() ignored them
entirely — a single 429 from the first provider would kill the whole
pipeline without trying the remaining steps.
Now intermediate steps that fail with a transient HTTP status
(429, 502, 503, 504) are retried up to maxRetries times with
retryDelayMs delay, mirroring the retry behaviour already used by
priority/weighted strategies. Non-transient errors (400, 401, 403,
404) still fail immediately.
Changes:
- open-sse/services/pipeline.ts: add maxRetries/retryDelayMs params,
retry loop for transient statuses
- open-sse/services/combo.ts: wire combo.config.maxRetries and
combo.config.retryDelayMs to handlePipelineChat()
- tests/unit/combo-pipeline.test.ts: 7 tests covering retry success,
retry exhaustion, non-transient skip, final-step passthrough,
backward compat (maxRetries=0)
* chore: revert unrelated package-lock.json scope creep from PR #7794
Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
* docs(changelog): add fragment for #7794 pipeline transient retry
Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
---------
Co-authored-by: Andrian B. <andrewbalanesq@gmail.com>
Co-authored-by: Diego Rodrigues de Sa e Souza <diegosouza.pw@gmail.com>
Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>