- 03 Feb, 2026 8 commits
-
-
bayma888 authored
This feature allows API Keys to have their own quota limits and expiration times, independent of the user's balance. Backend: - Add quota, quota_used, expires_at fields to api_key schema - Implement IsExpired() and IsQuotaExhausted() checks in middleware - Add ResetQuota and ClearExpiration API endpoints - Integrate quota billing in gateway handlers (OpenAI, Anthropic, Gemini) - Include quota/expiration fields in auth cache for performance - Expiration check returns 403, quota exhausted returns 429 Frontend: - Add quota and expiration inputs to key create/edit dialog - Add quick-select buttons for expiration (+7, +30, +90 days) - Add reset quota confirmation dialog - Add expires_at column to keys list - Add i18n translations for new features (en/zh) Migration: - Add 045_add_api_key_quota.sql for new columns
-
ducky authored
-
liuxiongfeng authored
在运维监控的并发/排队卡片中,为 Antigravity 平台账号显示各 scope (claude/gemini_text/gemini_image) 的限流数量统计,便于管理员了解 哪些 scope 正在被限流。 Cherry-picked from slovx2/sub2api: 08d6dc52
-
liuxiongfeng authored
将 GATEWAY_ANTIGRAVITY_429_SCOPE_LIMIT 的默认值从关闭改为开启。 当 Gemini 模型触发 429 限流时,只会限制对应的配额域(gemini_text), 而 Claude 和 gemini_image 仍可继续使用,提高账号利用率。
-
liuxiongfeng authored
Antigravity 上游不再支持 gemini-2.5 系列,统一映射到 gemini-3: - gemini-2.5-flash → gemini-3-flash - gemini-2.5-flash-lite → gemini-3-flash - gemini-2.5-flash-thinking → gemini-3-flash - gemini-2.5-flash-image → gemini-3-pro-image - gemini-2.5-pro → gemini-3-pro-high - gemini-2.5-pro-preview → gemini-3-pro-high - gemini-2.5-pro-exp → gemini-3-pro-high
-
liuxiongfeng authored
Update test expectation to reflect new mapping: gemini-2.5-pro -> gemini-3-pro-high
-
liuxiongfeng authored
Add prefix mapping rules for gemini-2.5-pro variants: - gemini-2.5-pro -> gemini-3-pro-high - gemini-2.5-pro-preview -> gemini-3-pro-high - gemini-2.5-pro-exp -> gemini-3-pro-high
-
shuike authored
-
- 02 Feb, 2026 9 commits
-
-
ianshaw authored
-
liuxiongfeng authored
新增 BindAccountsToGroup 和 GetAccountIDsByGroupIDs 方法的 stub 实现, 确保测试文件中的 mock 类型满足 GroupRepository 接口要求。
-
liuxiongfeng authored
- 创建分组时可选择从已有分组复制账号 - 编辑分组时支持同步账号(全量替换操作) - 仅允许选择相同平台的源分组 - 添加完整的数据校验:去重、自引用检查、平台一致性检查 - 前端支持多选源分组,带提示说明操作行为
-
liuxiongfeng authored
将 token 直接拆分为范围内和范围外两部分,分别调用 CalculateCost: - 范围内:正常计费 (rateMultiplier) - 范围外:双倍计费 (rateMultiplier × extraMultiplier) 代码更直观,便于理解和维护
-
liuxiongfeng authored
- 新增 CalculateCostWithLongContext 方法支持阈值双倍计费 - 新增 RecordUsageWithLongContext 方法专用于 Gemini 计费 - Gemini 超过 200K token 的部分按 2 倍费率计算 - 其他平台(Claude/OpenAI)完全不受影响
-
Zero Clover authored
新增 IgnoreInvalidApiKeyErrors 开关,启用后 INVALID_API_KEY 和 API_KEY_REQUIRED 错误将被完全跳过,不写入 Ops 错误日志。 这些错误由用户错误配置导致,与服务质量无关。
-
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。
-
liuxiongfeng authored
extractGeminiUsage 函数未提取 cachedContentTokenCount, 导致计费时缓存读取 token 始终为 0。 修复: - 提取 usageMetadata.cachedContentTokenCount - 设置 CacheReadInputTokens 字段 - InputTokens 减去缓存 token(与 response_transformer 逻辑一致)
-
liuxiongfeng authored
Gemini API Key 账户通常代理上游服务,模型支持由上游判断, 本地不需要预先配置模型映射。
-
- 30 Jan, 2026 5 commits
-
-
cyhhao authored
-
cyhhao authored
-
cyhhao authored
-
ducky authored
-
ducky authored
Implements announcements end-to-end (admin CRUD + read status, user list + mark read) with OR-of-AND targeting. Also breaks the ent<->service import cycle by moving schema-facing constants/targeting into a new domain package.
-
- 29 Jan, 2026 3 commits
- 28 Jan, 2026 10 commits
- 27 Jan, 2026 2 commits
-
-
Gemini Wen authored
- 使用 ApplicationError 返回详细错误信息到前端 - 添加 User-Agent: codex-cli/0.91.0 - 移除 ForceHTTP2 以兼容 HTTP 代理 - 修复代理获取失败时静默忽略的问题 - 500 错误时记录完整错误日志 Co-Authored-By:Claude Opus 4.5 <noreply@anthropic.com>
-
shaw authored
message_delta 应完全覆盖 message_start 的 usage 数据, 而非仅在值为 0 时才更新。
-
- 26 Jan, 2026 3 commits
-
-
song authored
对齐 Antigravity 平台的图片计费逻辑: - 添加 extractImageSize() 方法提取图片尺寸 - Forward() 和 ForwardNative() 返回 ImageCount/ImageSize - 支持分组自定义图片价格和倍率
-
ianshaw authored
- 问题:OpenAI 的 usage_limit_reached 错误(需 37 小时重置)被错误地设置为 5 分钟 - 原因:handle429 只检查 Anthropic 响应头,没有解析 OpenAI 响应体中的 resets_in_seconds - 修复:新增 parseOpenAIRateLimitResetTime 函数解析 OpenAI 响应体 - 影响:避免调度器不断尝试已达配额上限的账户
-
shaw authored
新增功能: - 支持 Google Authenticator 等应用进行 TOTP 二次验证 - 用户可在个人设置中启用/禁用 2FA - 登录时支持 TOTP 验证流程 - 管理后台可全局开关 TOTP 功能 安全增强: - TOTP 密钥使用 AES-256-GCM 加密存储 - 添加 TOTP_ENCRYPTION_KEY 配置项,必须手动配置才能启用功能 - 防止服务重启导致加密密钥变更使用户无法登录 - 验证失败次数限制,防止暴力破解 配置说明: - Docker 部署:在 .env 中设置 TOTP_ENCRYPTION_KEY - 非 Docker 部署:在 config.yaml 中设置 totp.encryption_key - 生成密钥命令:openssl rand -hex 32
-