Repository navigation
Conversation
Introduce combo/<id> groups with failover and sticky round-robin, per-target cooldowns, hop-on-retryable failures, catalog exposure, and /api/combos CRUD (issue #133).
Add e2e coverage (403 then 200) and a runtime flowchart for issue #133.
Only inject combo defaultEffort when supportedLadderFor exposes a non-empty ladder; clamp to a supported rung, never force effort onto no-reasoning models.
Update applyComboDefaultEffort call sites to pass the resolved route and assert skip when the model has no effort control.
|
Thanks for building this — combos/load-balancing (#133) is a feature we want, and the review confirmed the direction. The implementation needed deeper changes than a review round-trip could carry, so we're rebuilding it as a small dependency-ordered stack directly on Review findings driving the rebuild (against head a4abda1, re-checked at 6824e7b):
Slice 1 is already on Closing this PR in favor of the dev stack — the |
Rebuild PR #147 on current dev from source head 6824e7b and reviewed head a4abda1. Close Sol P1 fail-closed routing, P2 validation-policy parity, and P3 unknown body.id hardening while preserving the physical combo provider compatibility case. Co-authored-by: Wibias <37517432+Wibias@users.noreply.github.com>
… pipeline Implement the repaired PR #147 failover architecture from source head 6824e7b and reviewed head a4abda1. Each target re-enters the full response pipeline with bounded failure consumption, target-local auth and adapter state, commit-gated callbacks, and abort-first handling. Co-authored-by: Wibias <37517432+Wibias@users.noreply.github.com>
Lock the repaired PR #147 behavior from source head 6824e7b and reviewed head a4abda1. Cover provider re-entry, auth isolation, adapter commit boundaries, bounded bodies, Retry-After, callback publication, and abort-first ordering. Co-authored-by: Wibias <37517432+Wibias@users.noreply.github.com>
Close the PR #147 P2 catalog finding with member capability intersection, config-owned combo identity, and stale namespace retirement. Preserve the post-review defaultReasoningEffort contract instead of fabricating a parallel field. Source head: 6824e7b; reviewed head: a4abda1. Co-authored-by: Wibias <37517432+Wibias@users.noreply.github.com>
Close the PR #147 P2 usage finding with ordered child receipts, bounded failed-body usage snapshots, cancellation retention, fresh retry estimates, and per-parent physical attribution. Source head: 6824e7b; reviewed head: a4abda1. Co-authored-by: Wibias <37517432+Wibias@users.noreply.github.com>
Reconstruct source-faithful namespace, type, parser, formatter, and direct helper primitives from PR lidge-jun#147 at source head 6824e7b (reviewed head a4abda1).
Rebuild PR lidge-jun#147 on current dev from source head 6824e7b and reviewed head a4abda1. Close Sol P1 fail-closed routing, P2 validation-policy parity, and P3 unknown body.id hardening while preserving the physical combo provider compatibility case. Co-authored-by: Wibias <37517432+Wibias@users.noreply.github.com>
…l closed Replace selection for PR lidge-jun#147 with deterministic smooth weighted round-robin, sticky success accounting, and fail-closed provider eligibility from source head 6824e7b (reviewed head a4abda1). Co-authored-by: Wibias <37517432+Wibias@users.noreply.github.com>
Lock the config, API, routing, namespace, reserved-key, malformed-root, verb, provider-PATCH, reload, pinned-selection, and exact combo_unavailable boundaries for PR lidge-jun#147 from source head 6824e7b (reviewed head a4abda1). Co-authored-by: Wibias <37517432+Wibias@users.noreply.github.com>
Reconstruct cooldown storage, Retry-After parsing and clamping, and per-combo management reset plumbing from PR lidge-jun#147 source head 6824e7b. Reviewed behavior: a4abda1.
… pipeline Implement the repaired PR lidge-jun#147 failover architecture from source head 6824e7b and reviewed head a4abda1. Each target re-enters the full response pipeline with bounded failure consumption, target-local auth and adapter state, commit-gated callbacks, and abort-first handling. Co-authored-by: Wibias <37517432+Wibias@users.noreply.github.com>
Lock the repaired PR lidge-jun#147 behavior from source head 6824e7b and reviewed head a4abda1. Cover provider re-entry, auth isolation, adapter commit boundaries, bounded bodies, Retry-After, callback publication, and abort-first ordering. Co-authored-by: Wibias <37517432+Wibias@users.noreply.github.com>
Close the PR lidge-jun#147 P2 catalog finding with member capability intersection, config-owned combo identity, and stale namespace retirement. Preserve the post-review defaultReasoningEffort contract instead of fabricating a parallel field. Source head: 6824e7b; reviewed head: a4abda1. Co-authored-by: Wibias <37517432+Wibias@users.noreply.github.com>
Close the PR lidge-jun#147 P2 usage finding with ordered child receipts, bounded failed-body usage snapshots, cancellation retention, fresh retry estimates, and per-parent physical attribution. Source head: 6824e7b; reviewed head: a4abda1. Co-authored-by: Wibias <37517432+Wibias@users.noreply.github.com>
Exercise the PR lidge-jun#147 catalog, sanitizer, summary, retry, original-body usage, and cancellation receipt contracts through final outputs and persisted log surfaces. Source head: 6824e7b; reviewed head: a4abda1. Co-authored-by: Wibias <37517432+Wibias@users.noreply.github.com>
Summary
combo/<id>virtual models with failover and sticky weighted round-robin, per-target cooldowns, and hop-on-retryable upstream failures (429 / 5xx / permission-subscription 403).GET/PUT/DELETE/api/combos.defaultEffort(defaultmedium): fillsreasoning.effortwhen the client omits it; never overrides client-sent effort; skipped when the resolved target has no reasoning ladder (noReasoningModels/ empty / unknown ladder); clamped to a supported rung when a ladder exists.Runtime
User asks for
combo/<id>→ pick a target → call upstream → on retryable failure cool that target and hop to the next member until success or exhaustion.Test plan
bun test tests/combos.test.tsbun test src/combos/effort.test.tsbun test tests/server-combo-failover-e2e.test.ts(A 403 → B 200 throughhandleResponses)PUT/GETdefaultEffortround-trip after restart/api/providers+combo/<id>→/v1/responses