feat(models): add auth profile cooldown for api key pools

This commit is contained in:
William Valentin
2026-02-19 11:45:55 -08:00
parent baa53f91d9
commit 6b56d9e223
9 changed files with 175 additions and 22 deletions
@@ -332,6 +332,8 @@ These are substantial UX/ecosystem projects or highly platform-specific; defer u
## Suggested Next Execution Order
1) Auth profile rotation/stickiness before provider fallback
2) Queue/run-control polish (interrupt preemption telemetry + UX)
3) Daily memory continuity tuning (if continuity quality is still lacking)
1) Queue/run-control polish (interrupt preemption telemetry + UX)
2) Daily memory continuity tuning (if continuity quality is still lacking)
3) Auth-profile expansion beyond API-key pools (if needed)
Note: API-key pool auth profile cooldown/backoff (`auth_profile_cooldown_ms`) shipped on 2026-02-19.
+18
View File
@@ -5775,6 +5775,24 @@
"docs/plans/state.json"
],
"test_status": "pnpm test:run src/security/elevation.test.ts src/gateway/handlers/agent.test.ts src/frontends/tui/minimal.test.ts src/backends/native/agent.test.ts src/daemon/routing.test.ts src/commands/builtin/index.test.ts + pnpm typecheck passing"
},
"auth-profile-cooldown-for-key-pools": {
"status": "completed",
"date": "2026-02-19",
"updated": "2026-02-19",
"summary": "Added per-tier/profile cooldown support for rotated API-key auth pools via `auth_profile_cooldown_ms`. `RotatingModelClient` now applies temporary backoff to failing profiles while preserving sticky-success behavior, and model client factory wiring now passes cooldown for providers using `api_keys` pools.",
"files_modified": [
"src/models/rotating.ts",
"src/models/rotating.test.ts",
"src/daemon/models.ts",
"src/daemon/clientFactory.test.ts",
"src/config/schema.ts",
"src/config/schema.test.ts",
"README.md",
"docs/plans/2026-02-15-openclaw-gap-roadmap.md",
"docs/plans/state.json"
],
"test_status": "pnpm test:run src/models/rotating.test.ts src/daemon/clientFactory.test.ts src/config/schema.test.ts + pnpm typecheck passing"
}
},
"overall_progress": {