1. 02 Mar, 2026 1 commit
    • zqq61's avatar
      fix: OAuth 401 不再永久锁死账号,改用临时不可调度实现自动恢复 · ec6bcfeb
      zqq61 authored
      OAuth 账号收到 401 时,原逻辑同时设置 expires_at=now() 和 SetError(),
      但刷新服务只查询 status=active 的账号,导致 error 状态的账号永远无法
      被刷新服务拾取,expires_at=now() 实际上是死代码。
      
      修复:
      - OAuth 401 使用 SetTempUnschedulable 替代 SetError,保持 status=active
      - 新增 oauth_401_cooldown_minutes 配置项(默认 10 分钟)
      - 刷新成功后同步清除 DB 和 Redis 中的临时不可调度状态
      - 不可重试错误检查(invalid_grant 等)从 Antigravity 推广到所有平台
      - 可重试错误耗尽后不再标记 error,下个刷新周期继续重试
      
      恢复流程:
      OAuth 401 → temp_unschedulable + expires_at=now → 刷新服务拾取
        → 成功: 清除 temp_unschedulable → 自动恢复
        → invalid_grant: SetError → 永久禁用
        → 网络错误: 仅记日志 → 下周期重试
      ec6bcfeb
  2. 02 Feb, 2026 2 commits
    • song's avatar
      merge upstream main · 0170d19f
      song authored
      0170d19f
    • shaw's avatar
      fix(gateway): 修复 OAuth token 刷新后调度器缓存不一致问题 · 79fa1813
      shaw authored
      Token 刷新成功后,调度器缓存中的 Account 对象仍包含旧的 credentials,
      导致在 Outbox 异步更新之前(最多 1 秒窗口)请求使用过期 token,
      返回 403 错误(OAuth token has been revoked)。
      
      修复方案:在 token 刷新成功后同步更新调度器缓存,确保调度获取的
      Account 对象立即包含最新的 access_token 和 _token_version。
      
      此修复覆盖所有 OAuth 平台:OpenAI、Claude、Gemini、Antigravity。
      79fa1813
  3. 16 Jan, 2026 1 commit
  4. 15 Jan, 2026 1 commit
  5. 14 Jan, 2026 1 commit