7318 Commits
Author SHA1 Message Date
Zhaofeng Li e35123b8ac fix(codex): include OpenCode Go in model capability resolution 2026-09-22 14:50:29 +08:00
Erik 7f1f85cb76 fix(gemini): stop cooling Vertex 429s until PST midnight, honor RetryInfo
Vertex AI reports 429s with a standard google.rpc.RetryInfo detail
(retryDelay like "39s"), but ParseGeminiRateLimitResetTime only knew the
AI Studio quotaResetDelay metadata, so parsing always failed for Vertex
bodies. The fallback then lumped service_account accounts in with
API-key/AI-Studio ones and rate limited them until the next PST
midnight, so a transient per-minute throttle could take a pay-as-you-go
account (and with it the whole group) offline for up to a day.

- Parse google.rpc.RetryInfo retryDelay from 429 bodies, capped at 15
  minutes to guard against absurd upstream values.
- When no reset time can be parsed, cool service_account (Vertex)
  accounts down for 60s instead of until PST midnight: pay-as-you-go
  quotas are short-window RPM/TPM with no daily reset.

Fallback behavior for Code Assist, Google One and API-key accounts is
unchanged, covered by new regression tests.
2026-09-22 11:31:31 +08:00
nagi330 935db68517 feat(grok):add grok 4.7 support 2026-09-22 10:30:01 +08:00
Wesley Liddick 1c0a69c0ce Merge pull request #7412 from StarryKira/codex/custom-reasoning-effort-billing
feat: 支持自定义思考等级倍率计费
2026-09-21 22:55:17 +08:00
lcy 27f4398b50 fix(antigravity): 裸 Gemini 模型名在所有转发入口解析到思考变体
#7258 引入的 resolveGeminiThinkingVariant 只接到了 ForwardGemini,
因此仅覆盖 /v1beta 原生 Gemini 路径。经 /v1/chat/completions 与
/v1/messages 进来的请求直接调用 getMappedModel,裸名被原样透传;
Antigravity 目录只登记 -low/-medium/-high/-tiered 变体,这些请求
仍然以 404 "Requested entity was not found." 失败。

把解析下沉到 getMappedModel(新增 getMappedModelForThinkingLevel),
一次覆盖四个调用点:/v1beta 原生、/v1/chat/completions、/v1/messages
以及后台账号连接测试。各转发入口按自身协议推导档位——原生读
generationConfig.thinkingConfig,Claude 侧读 thinking.budget_tokens,
两者阈值一致;默认入口按 high 兜底。

mapAntigravityModel 保持不变,调度侧的模型支持判定语义不受影响。
2026-09-21 20:13:44 +08:00
haruka e47255715d fix(billing): preserve final reasoning effort across forwarding paths 2026-09-21 19:58:02 +08:00
feeeei d0ed0eacac fix(gemini): 传输层错误转 failover,不再同账号退避重试
上游 Do 返回非 HTTP 错误(代理/DNS/TCP/TLS/响应头超时)时,Gemini 三条转发路径
(ForwardNative / Forward / ForwardAsChatCompletions)原先在同一账号上重试 5 次,
退避 1+2+4+8≈15s(time.Sleep 不感知 ctx),耗尽后直接向客户端写 502 且不换号:
单账号链路故障期间 TTFT 被整段拖高,同组健康账号闲置。

对齐 Anthropic/Bedrock 侧 handleUpstreamTransportError 的既有语义:
- 传输层错误单次尝试后即返回 *UpstreamFailoverError(502),由 handler failover
  循环换号,耗尽后才按端点格式渲染错误;service 不再写响应
- 持久性故障(connection refused/no route/DNS not found/代理认证失败)额外临时
  摘除账号 10 分钟;瞬时故障(EOF/reset/超时)只换号不摘号
- context.Canceled 保持原样返回:不换号也不摘账号
- countTokens 传输失败时立即本地估算兜底,不换号
- 摘号实现抽为 tempUnscheduleAccountForTransportError 供两侧共用,日志事件名不变

HTTP 状态码(429/5xx)的服务内重试环未改动。
2026-09-21 14:13:57 +08:00
wucm667 386f321d3c fix(usage): export missing reasoning effort cleanly 2026-09-21 12:41:01 +08:00
wucm667 60a64568bf ci: run simple mode compose environment test 2026-09-21 11:06:25 +08:00
wucm667 de98bdff1e fix(images): preserve insufficient balance failures 2026-09-21 10:23:10 +08:00
wucm667 992c4f4b89 test(frontend): run platform quota modal spec in CI 2026-09-21 08:16:18 +08:00
shaw 7c700729c2 chore: update gitignore 2026-09-20 20:05:09 +08:00
Wesley Liddick 87957a608b Merge pull request #7413 from ranxi2001/ci/release-build-matrix
ci: parallelize release builds across platform runners
2026-09-20 20:02:48 +08:00
xlplbo 0d02000592 fix(openai): 非高级调度按 previous_response 路由到持有响应的账号 2026-09-20 19:28:13 +08:00
xlplbo 8d88b66668 fix(openai): 补齐非高级调度选号决策标签 2026-09-20 19:27:53 +08:00
xlplbo 763443abf2 fix(openai): 改写 Codex turn metadata 时保留非 ASCII 转义 2026-09-20 19:27:47 +08:00
chihao.ou 7f18f3e9af fix(users): keep API key results scoped to the selected user 2026-09-20 18:09:50 +08:00
chihao.ou b86849e442 fix(usage): ignore superseded error detail requests 2026-09-20 18:07:52 +08:00
chihao.ou 319299519b fix(monitor): preserve the saved auto-refresh preference 2026-09-20 18:07:39 +08:00
chihao.ou 23a1d38187 fix(pricing): parse scientific notation in token bounds 2026-09-20 18:05:23 +08:00
chihao.ou 1582347204 fix(payment): trim callback base URL trailing slashes 2026-09-20 18:05:09 +08:00
ranxi2001 d1556a7a96 ci: point release helper tests at their final directory 2026-09-20 17:01:27 +08:00
ranxi2001 d2416a9b68 ci: keep release tooling and cache keys stable across jobs 2026-09-20 16:54:06 +08:00
HuntercodeT fb58dfbd93 test(antigravity): cover the identity rewrite end-to-end through the transformer
Adds a case with the real block layout (attribution block, identity sentence,
task instructions) and asserts that user content mentioning Claude Code and
claude-sonnet-4-6 is forwarded unchanged.
2026-09-20 16:48:04 +08:00
haruka b8d52fad34 feat(billing): support configurable reasoning effort multipliers 2026-09-20 16:41:49 +08:00
shaw d2e319b2a1 test: 修复 WebSocket 同线程抢占测试的关闭时序竞态 2026-09-20 16:37:07 +08:00
ranxi2001 0892ef3a9a ci: build release targets on independent matrix runners 2026-09-20 16:36:24 +08:00
HuntercodeT dd292e3b00 fix(antigravity): neutralize Claude Agent SDK identity in system prompts
Stripping the x-anthropic-billing-header line is not enough. Claude Code's
Agent SDK prompts (session title generation, and other SDK-driven calls) open
a separate system block with

    You are a Claude agent, built on Anthropic's Claude Agent SDK.

and the Google upstream still rejects those requests with 429 RESOURCE_EXHAUSTED.

Measured on Sub2API 0.2.7, which already contains the attribution fix, using an isolated single-account group, waiting for the per-model cooldown
to expire before every request so that a previous failure could not turn later
results into 503:

  original request replayed                      429 (8/8)
  same request, generic system prompt            200 (8/8)
  attribution also removed client-side           429 (3/3)
  attribution removed + identity neutralized     200 (3/3)
  only 'Claude' replaced in system               200 (2/2)
  only 'Anthropic' removed from system           200 (2/2)
  output_config / max_tokens / non-stream        no effect

The rewrite is anchored at the start of a system block, so user instructions that
merely mention Claude or Anthropic, and model ids such as claude-sonnet-4-6, are
left untouched. Scoped to the Antigravity transformer, as with the existing
attribution handling.
2026-09-20 16:34:26 +08:00
shaw 95134201b2 docs: 删除误合入的 Codex 积分文档和截图 2026-09-20 16:12:11 +08:00
Wesley Liddick acdf3c54da Merge pull request #7401 from StarryKira/codex/codex-credits-referrals-upstream
feat(openai): display Codex credits and support referral invitations
2026-09-20 16:00:28 +08:00
haruka fc96132e72 fix(openai): harden referral outcomes and isolate HTTP transport 2026-09-20 15:47:53 +08:00
haruka 8f6bbb59c7 test: stabilize Gemini keepalive test 2026-09-20 15:04:15 +08:00
Wesley Liddick fbb9006ade Merge pull request #7402 from Wei-Shaw/fix/7268-openai-http2-keepalive
fix(upstream): 恢复 OpenAI HTTP/2 保活容错期限
2026-09-20 14:57:35 +08:00
shaw e009ea3036 fix(upstream): 恢复 OpenAI HTTP/2 保活容错期限 2026-09-20 14:46:25 +08:00
a408665321 63c079d873 fix(account): preserve settings on OAuth reauth 2026-09-20 14:39:36 +08:00
haruka e509937382 docs: add Codex referral UI validation screenshots 2026-09-20 14:38:30 +08:00
haruka 5090ffe05e feat(openai): show Codex credits and manage referral invitations 2026-09-20 14:38:29 +08:00
Wesley Liddick bbdcfbac0a Merge pull request #7304 from wucm667/fix/issue-7298-response-model-alias
fix(gateway): restore public response model aliases
2026-09-20 14:07:16 +08:00
Wesley Liddick 7403a01177 Merge pull request #7314 from wucm667/fix/issue-7306-keyword-reminder-bypass
fix(moderation): prevent reminder tags from bypassing keyword checks
2026-09-20 14:07:04 +08:00
Wesley Liddick 53b4bbe736 Merge pull request #7349 from wucm667/fix/issue-7348-preserve-client-version
fix(settings): preserve client version on invalid user agent
2026-09-20 14:06:48 +08:00
Wesley Liddick 8bb48622a3 Merge pull request #7362 from wucm667/fix/issue-7358-preserve-account-errors
fix(accounts): preserve refresh errors during usage queries
2026-09-20 14:06:36 +08:00
Wesley Liddick f28adb6ddb Merge pull request #7387 from Brisbanehuang/codex/upstream-content-audit-typesafe
feat: 内容审计接入 TypeSafe AI,支持双引擎切换与独立配置
2026-09-20 13:47:14 +08:00
Wesley Liddick 19794bc46a Merge pull request #7397 from Wei-Shaw/feat/hostservice-account-metadata
feat(pluginapi): HostService 账号目录返回结构化只读元数据
2026-09-20 11:39:15 +08:00
shaw 29eead917f feat(pluginapi): HostService 账号目录返回结构化只读元数据
纯宿主侧改动,向后兼容。

- 契约(pkg/pluginapi/v1/plugin.proto,已重新生成):ListAccounts 增补
  repeated AccountInfo accounts(保留 account_ids 向后兼容),新增 metadata_json
  只读快照字段。HostServiceAPIVersion 1→2(InitHostServices 运行时协商,加法式,
  旧调用方忽略新字段即可)。
- 权限边界:可见范围由清单能力经 pluginCapabilityAccountScopeGrants 推导,
  ListAccounts 与 ResolveOutboundIdentity 均以该范围为权威边界。
- metadata_json 采用 denylist:剥离 Credentials 与含反向引用的关联对象
  Groups/AccountGroups(避免 encoding/json 循环引用),其余字段自动透传,
  数据模型新增非机密字段无需改宿主。

测试:范围/元数据/无凭据泄漏用例、denylist 反射护栏 + 循环引用安全断言、纵深过滤用例;
build/vet/gofmt、-tags unit 与 -race 全绿。
2026-09-20 11:26:19 +08:00
zhuzhihaocool-bit fabdfb8a5b fix(frontend): ensure Codex base URLs include /v1 2026-09-20 11:07:29 +08:00
Achord Chan 1411b7eb7e fix(gateway): recognize Baseten reasoning budget errors 2026-09-20 11:02:06 +08:00
Achord Chan ef51690b5a fix(antigravity): preserve string const constraints in tool schemas 2026-09-20 10:46:09 +08:00
Brisbanehuang 1bfe0d3728 fix: sync draft audit key status and threshold defaults 2026-09-19 20:52:31 -04:00
Brisbanehuang 783a0a9830 feat(content-audit): add independent TypeSafe engine profiles 2026-09-19 20:52:31 -04:00
chihao.ou cd2a4357c2 fix(groups): reject negative custom rates before adding 2026-09-19 19:43:39 +08:00