erio
36d2e6999b
feat: add default value for Antigravity OAuth client secret
...
Add a built-in default for ANTIGRAVITY_OAUTH_CLIENT_SECRET so the
service works out of the box without requiring environment variable
configuration. The env var can still override the default.
2026-02-24 20:54:28 +08:00
erio
ca3e9336e1
test: update UserAgent version assertion to match 1.18.4 default
2026-02-24 20:31:02 +08:00
erio
f92ab48166
fix: add gemini-3.1-pro-preview to default Antigravity model mapping
...
Add missing gemini-3.1-pro-preview -> gemini-3.1-pro-high mapping to
DefaultAntigravityModelMapping for consistency with migration 059.
2026-02-24 20:06:19 +08:00
erio
483c8f246d
chore: update default Antigravity UserAgent version to 1.18.4
...
Update the default ANTIGRAVITY_USER_AGENT_VERSION from 1.84.2 to
1.18.4 to match the current Antigravity-Manager desktop client.
2026-02-24 19:39:15 +08:00
erio
645f283108
feat: add claude-sonnet-4-6 and gemini-3.1-pro model support
...
Add claude-sonnet-4-6 to identity injection modelInfoMap and
Antigravity model selector. Add gemini-3.1-pro-high/low to
Antigravity model list and Sonnet 4.6 preset mapping.
2026-02-24 19:30:01 +08:00
erio
da6fd45000
chore: add sonnet-4-6 mapping, config defaults, and CI improvements
...
- Add claude-sonnet-4-6 to default Antigravity model mapping
- Add antigravity_extra_retries default value in config
- Add cache-dependency-path to CI setup-go for faster builds
- Simplify vitest config to avoid vite plugin compatibility issues
2026-02-24 18:55:39 +08:00
erio
86bc76e352
test: add warmup request interception unit tests
...
Add comprehensive tests for warmup request interception behavior
covering Antigravity accounts with various credential configurations.
2026-02-24 18:55:11 +08:00
erio
644058174e
fix(gemini): enable model_mapping filtering for Gemini API Key accounts
...
Remove the special case that bypassed model-supported checks for Gemini
API Key accounts, allowing model_mapping to filter requests properly.
Add tests for multiplatform model filtering behavior.
2026-02-24 18:54:59 +08:00
erio
4573868c08
fix(antigravity): bill with mapped model and use final model key for rate limiting
...
- Use mapped model (billingModel) instead of original request model for billing
- Use resolveFinalAntigravityModelKey for 429 rate limit model key,
ensuring rate limit records match the actual upstream model
- Add regression tests for both fixes
2026-02-24 18:08:19 +08:00
erio
09166a52f8
refactor: extract failover error handling into FailoverState
...
- Extract duplicated failover logic from gateway_handler.go (3 places)
and gemini_v1beta_handler.go into shared failover_loop.go
- Introduce FailoverState with HandleFailoverError and HandleSelectionExhausted
- Move helper functions (needForceCacheBilling, sleepWithContext) into failover_loop.go
- Add comprehensive unit tests (32+ test cases)
- Delete redundant gateway_handler_single_account_retry_test.go
2026-02-24 18:08:04 +08:00
erio
aaac1aaca9
feat: add mixed-channel precheck API for account-group binding
...
Add a dedicated CheckMixedChannel endpoint that allows the frontend
to pre-validate mixed channel risk before submitting create/update
requests. This improves UX by showing warnings earlier in the flow
instead of only after form submission.
Backend changes:
- Add CheckMixedChannelRequest struct and CheckMixedChannel handler
- Register POST /check-mixed-channel route
- Expose CheckMixedChannelRisk as public method on AdminService
- Simplify Create/Update 409 responses (remove details/require_confirmation)
- Add comprehensive handler tests and stub methods
Frontend changes:
- Add checkMixedChannelRisk API function and TypeScript types
- Refactor CreateAccountModal to precheck before step transition and submission
- Refactor EditAccountModal to precheck before update submission
- Replace pendingPayload pattern with action-based dialog flow
2026-02-24 17:16:53 +08:00
erio
59898c16c6
fix: fix intercept_warmup_requests config not being saved
...
Extract applyInterceptWarmup utility to unify all credential building
call sites:
- Fix upstream account creation missing intercept_warmup_requests write
- Fix apikey edit mode missing else-branch to clear the setting
- Add backend unit test for IsInterceptWarmupEnabled
- Add frontend unit test for credentialsBuilder
2026-02-24 16:48:16 +08:00
erio
0dacdf480b
fix: distinguish client disconnection from upstream retry failure
...
Before this change, when a client disconnected mid-request, the error
message was "Upstream request failed after retries", which is misleading
and pollutes error logs. Now we check context.Err() to return a more
accurate "Client disconnected" message for both Claude and Gemini
forward paths.
2026-02-24 16:45:08 +08:00
shaw
7be5e1734c
fix: 修复 CI 集成测试因 context deadline exceeded 未被跳过而失败
...
skipIfExternalServiceUnavailable 检查了 "timeout" 但 Go 的
context.DeadlineExceeded 错误信息是 "context deadline exceeded",
不包含 "timeout" 子串,导致外部服务不可达时测试直接失败而非跳过。
2026-02-24 15:04:04 +08:00
shaw
e435a46db5
fix: 修复 antigravity UserAgent 重构遗留的编译错误和测试不匹配
...
- oauth.go: GetUserAgent() 缺少闭合大括号导致语法错误
- client_test.go/oauth_test.go: UserAgent 变量已重构为 GetUserAgent(),更新测试引用
- model_rate_limit_test.go: gemini-3-pro-preview 映射目标已更新为 gemini-3.1-pro-high,同步测试
2026-02-24 14:44:57 +08:00
Wesley Liddick
84bd881e68
Merge pull request #608 from cagedbird043/feature/gemini-3-to-3.1-mapping
...
feat: Antigravity 将 gemini-3-pro 路由升级到 gemini-3.1-pro
2026-02-24 14:08:42 +08:00
Wesley Liddick
6bccb8a8a6
Merge branch 'main' into feature/antigravity-user-agent-configurable
2026-02-24 14:01:43 +08:00
Wesley Liddick
3de1e0e485
Merge pull request #597 from 0-don/feat/add-gemini-3.1-pro-preview
...
feat: add gemini-3.1-pro-preview to model lists
2026-02-24 12:25:17 +08:00
shaw
492b852a1f
fix: 幂等测试使用哈希值避免超出 VARCHAR(64) 限制
...
idempotency_key_hash 和 request_fingerprint 列为 VARCHAR(64),
而 uniqueTestValue 生成的字符串含完整测试名可能超过 64 字符。
新增 hashedTestValue 辅助函数对测试值做 SHA-256 哈希,
与生产逻辑一致且严格符合列宽限制。
2026-02-24 12:18:07 +08:00
shaw
8a137405d4
fix: 移除重复的 ptrTime 函数声明修复编译错误
...
idempotency_repo_integration_test.go 中的 ptrTime 与
scheduler_cache.go 中的声明冲突,导致 repository 包测试构建失败。
2026-02-24 11:49:01 +08:00
shaw
980fc9608f
fix: 修复日志重复输出及清理冗余迁移逻辑
...
- logger: sinkCore 包装 tee core 时绕过了子 core 的 Check 级别过滤,
导致每条日志同时写入 stdout 和 stderr,表现为启动日志重复显示。
修复为正确委托 Check 给内部 tee core,sinkCore.Write 仅负责 sink 转发。
- migration 054: 移除冗余的遗留列回填逻辑,migration 009 已完成数据迁移,
直接删除遗留列即可。
2026-02-24 11:31:19 +08:00
cagedbird043
3f3efff065
feat: 添加 Gemini 3→3.1 前端快捷按钮及后端映射(包括 3.1 透传)
2026-02-23 23:06:07 +08:00
cagedbird043
1fc6ef3d4f
feat: 让 User-Agent 版本可通过环境变量 ANTIGRAVITY_USER_AGENT_VERSION 配置,默认 1.84.2
2026-02-23 21:17:35 +08:00
yangjianbo
c2567831d9
fix(service): 使用 os.Root 修复 Sora 存储路径告警
...
- 将媒体写入和删除切换为 os.Root 沙箱 API
- 移除旧的路径拼接校验辅助函数并收敛删除逻辑
- 调整并新增相关单元测试覆盖删除行为
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 16:06:04 +08:00
yangjianbo
e8671fd7c2
fix(service): 修复 Sora 媒体落地路径穿越风险
...
- 新增安全路径拼接校验,确保目标文件仍在下载目录内
- 清理失败下载文件时复用安全校验,避免不安全删除路径
- 增加扩展名白名单归一化与相关单元测试
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 14:42:07 +08:00
yangjianbo
5fa45f3b8c
feat(idempotency): 为关键写接口接入幂等并完善并发容错
2026-02-23 12:45:37 +08:00
yangjianbo
7be1195281
feat(api-key): 增加 API Key 上次使用时间并补齐测试
2026-02-22 22:07:17 +08:00
yangjianbo
10636d8a1f
fix(codex): 修复额度窗口过期展示并补齐高覆盖测试
...
- 后端新增绝对重置时间字段计算(codex_5h_reset_at/codex_7d_reset_at)
- 前端统一窗口解析逻辑:绝对时间优先,updated_at+seconds 回退,过期自动归零
- 新增后端与前端单元测试,覆盖关键边界与异常场景
2026-02-22 21:04:52 +08:00
yangjianbo
c67f02eaf0
fix(jwt): 修复仅配置小时时会话提前失效问题
...
- 将 jwt.access_token_expire_minutes 默认值改为 0,未显式配置时回退 expire_hour
- 调整配置校验为允许 0,仅拒绝负数并补充优先级注释
- 新增配置与认证服务单元测试,覆盖分钟优先与小时回退场景
- 更新示例配置文档,明确分钟/小时优先级与默认行为
2026-02-22 17:37:35 +08:00
yangjianbo
0b32f61062
fix(ratelimit): 清除限流时同步清理临时不可调度状态
...
- ClearRateLimit 增加清理 temp_unschedulable 与缓存\n- 新增 ClearRateLimit 相关单元测试覆盖成功与失败分支
2026-02-22 17:00:29 +08:00
yangjianbo
2ee6c26676
fix(gateway): 修复粘性会话预取分组错配并优化并发等待热路径
2026-02-22 16:43:33 +08:00
yangjianbo
a89477ddf5
perf(gateway): 优化热点路径并补齐高覆盖测试
2026-02-22 13:31:30 +08:00
yangjianbo
33db7a0fb6
feat(gateway): 引入使用量记录有界 worker 池与自动扩缩容
...
- 新增 UsageRecordWorkerPool,支持有界队列、溢出降级策略与自动扩缩容
- 将 Gateway/OpenAI/Sora/Gemini 使用量记录改为提交到统一任务池执行
- 增加 usage_record 配置默认值与校验规则,并补充配置与任务提交相关测试
- 注入并托管 worker 池生命周期,服务退出时统一 StopAndWait
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 12:56:57 +08:00
yangjianbo
f8ac5538e2
Merge branch 'test' into release
2026-02-21 22:00:16 +08:00
yangjianbo
1985be26b2
fix(gateway): 恢复 Anthropic 透传流数据间隔超时保护并补充回归测试
2026-02-21 16:54:44 +08:00
yangjianbo
fdfc739b72
fix(anthropic): 补齐创建账号页自动透传开关并验证后端透传参数
...
- 在 CreateAccountModal 为 Anthropic API Key 增加自动透传开关
- 创建请求写入 extra.anthropic_passthrough 并补充状态重置
- 新增 AccountHandler 单测,验证 extra 字段从请求到 CreateAccountInput 的透传
2026-02-21 14:40:31 +08:00
yangjianbo
bde9dbc57a
feat(anthropic): 支持 API Key 自动透传并优化透传链路性能
...
- 新增 Anthropic API Key 自动透传开关与后端透传分支(仅替换认证)
- 账号编辑页新增自动透传开关,默认关闭
- 优化透传性能:SSE usage 解析 gjson 快路径、减少请求体重复拷贝、优化流式写回与非流式 usage 解析
- 补充单元测试与 benchmark,确保 Claude OAuth 路径不受影响
2026-02-21 14:16:18 +08:00
yangjianbo
80510e5f16
fix(gateway): 明确旧协议接口不支持的错误提示
...
将 /v1/chat/completions 的拦截文案改为旧协议不支持,避免误导为会路由到 Sora。
明确要求客户端改用 /v1/responses。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 12:36:43 +08:00
yangjianbo
773f20ed5e
Merge branch 'test' into release
2026-02-21 12:15:30 +08:00
yangjianbo
f323174d07
fix(openai): 修复 codex_cli_only 误拦截并补充 codex 家族识别
...
- 为 codex_cli_only 增加 originator 判定通道,避免仅依赖 User-Agent 误拦截
- 扩展官方客户端家族标识,补充 codex_chatgpt_desktop 等常见前缀
- 新增并更新单元测试与网关透传回归测试,覆盖 UA 与 originator 组合场景
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 12:06:24 +08:00
yangjianbo
987589eabc
Merge branch 'test' into release
2026-02-21 10:07:53 +08:00
0-don
1004bd86ac
feat: add gemini-3.1-pro-preview to model lists
...
Add the newly released Gemini 3.1 Pro model to both the
native API fallback list and the admin UI test model dropdown.
2026-02-20 23:27:30 +01:00
yangjianbo
03f69dd394
fix(proxy): 将401/405质量检测结果调整为告警
2026-02-20 14:42:07 +08:00
yangjianbo
d14c24bbf3
feat(proxy): 持久化质量检测结果并在列表展示
2026-02-20 12:13:04 +08:00
yangjianbo
48dc011b2a
test(admin,service): 修复代理质量与计费单测口径
2026-02-19 21:39:31 +08:00
yangjianbo
b341810e60
fix(sora): 优化 challenge 重试与调试日志
2026-02-19 21:38:04 +08:00
yangjianbo
46d9aee6dd
feat(proxy,sora): 增强代理质量检测与Sora稳定性并修复审查问题
2026-02-19 21:18:35 +08:00
yangjianbo
36a1a7998b
feat(sora): 强制Sora走curl_cffi sidecar并完善校验测试
2026-02-19 20:29:31 +08:00
yangjianbo
40498aac9d
feat(sora): 对齐sora2api分镜角色去水印与挑战错误治理
2026-02-19 20:04:10 +08:00
yangjianbo
440b87094a
fix(sora): 增强 Cloudflare 挑战识别并收敛 Sora 请求链路
...
- 在 failover 场景透传上游响应头并识别 Cloudflare challenge/cf-ray
- 统一 Sora 任务请求的 UA 与代理使用,sentinel 与业务请求保持一致
- 修复流式错误事件 JSON 转义问题并补充相关单元测试
2026-02-19 15:09:58 +08:00