Wesley Liddick
5485f368b2
Merge pull request #6690 from alfadb/fix/astra-pro-mode
...
fix(openai): 保留 Codex OAuth 请求中的 Astra reasoning.mode
2026-09-07 20:42:37 +08:00
shaw
2031c1d5ad
fix(groups): merge main and resolve model allowlist conflicts
...
Resolve three conflicts from main's #6680 (supplementUnmappedOpenAIModels):
1. gateway_handler.go — keep PR's allowlist refactoring (ModelAllowlistEnabled,
writeAllowlistedModelsList, modelListingSource); main's OpenAI branch in
writeModelsList was auto-merged.
2. group_models_list.go (modify/delete) — delete file per PR intent; relocate
supplementUnmappedOpenAIModels to group_model_allowlist.go where gateway_service
and openai_codex_models_service can still call it.
3. openai_codex_models_service.go — combine main's supplementUnmappedOpenAIModels
wrapping with PR's ModelAllowlistEnabled() guard.
Also fix two auto-merged test files that still referenced the old
GroupModelsListConfig / ModelsListConfig types.
2026-09-07 19:44:03 +08:00
shaw
f6d580200a
fix: update #6688 test assertions for #6678 image modality and #6718 ultra level
...
- TestCodexAliasFailoverMappingHonorsModelRouting/no_routing_rule: expect
["text","image"] instead of ["text"] — image input is resolved per-account
via isOpenAICodexImageInputModel, independent of routing rules
- TestCodexAliasFailoverMappingHonorsModelRouting/routing_rule: expect
effort levels to include "ultra" (added by #6718 )
2026-09-07 19:13:01 +08:00
shaw
b491c3271b
fix: rename redeemMaxErrorsPerHour to redeemMaxFailedAttempts in tests
...
#6669 renamed the constant from redeemMaxErrorsPerHour to
redeemMaxFailedAttempts (fixed 10-minute window), but #6670 's tests
still referenced the old name, breaking compilation on main.
2026-09-07 19:00:04 +08:00
shaw
d106b3b5a0
fix: resolve merge conflict with main and fix #6718 missing group parameter
...
- Resolve conflict in openai_codex_models_service_test.go: keep both
GPT-6 Astra instructions template assertion (from this PR) and ultra
reasoning level + multi_agent fields (from #6718 on main)
- Fix compilation error on main: add missing `group *Group` parameter
to buildCodexModelsManifestForAccounts calls in
openai_codex_model_metadata_test.go (lines 24, 32) — caused by #6688
changing the function signature while #6718 added new callers with
the old signature
2026-09-07 18:58:00 +08:00
Wesley Liddick
66cd8a72bc
Merge pull request #6738 from Milesians/codex/fix-interval-multiplier-display
...
fix: 修正区间倍率展示并补齐模型广场 1h 缓存价格
2026-09-07 18:51:00 +08:00
Wesley Liddick
dc46daa690
Merge pull request #6726 from DuskLin/feat/openai-reasoning-effort-mapping-deny
...
feat(groups): 推理强度映射转发值支持拒绝
2026-09-07 18:50:41 +08:00
Wesley Liddick
eba85dc478
Merge pull request #6680 from cyhhao/fix/openai-mixed-account-model-list
...
fix(openai): retain default models in mixed account catalogs
2026-09-07 18:50:03 +08:00
Wesley Liddick
abf70750fd
Merge pull request #6669 from ssharkkky/fix/redeem-fixed-failure-window
...
fix(redeem): use a fixed 10-minute failure window
2026-09-07 18:49:51 +08:00
Wesley Liddick
88b697d5df
Merge pull request #6673 from ssharkkky/fix/backup-migrations-advisory-lock
...
fix(backup): serialize pg_dump/psql with the migrations advisory lock
2026-09-07 18:49:34 +08:00
Wesley Liddick
3eb5a84ea1
Merge pull request #6700 from qiu121/codex/fix/deepseek-account-cost-peak
...
fix(billing): 修复 DeepSeek 高峰账号成本少计
2026-09-07 18:49:19 +08:00
Wesley Liddick
71e5a4baf7
Merge pull request #6486 from aofee/codex/fix-grok-media-inconclusive-eligibility
...
fix(grok): do not reject media accounts on incomplete billing
2026-09-07 18:48:39 +08:00
Wesley Liddick
4bfcbd0c78
Merge pull request #6498 from aofee/codex/fix-ws-pending-turn-terminal
...
fix(openai-ws): track pending passthrough turns
2026-09-07 18:48:04 +08:00
Wesley Liddick
2b1e5e7f5c
Merge pull request #6429 from spin6lock/fix/billing-glm-5.3-flash-fallback-pricing
...
fix(billing): 补上 glm-5.3 / glm-5.3-flash 兜底价,避免被 glm-5 子串匹配抢走
2026-09-07 18:47:46 +08:00
Wesley Liddick
cbb4b7e53e
Merge pull request #6678 from gebdalaoli-arch/codex/stale-astra-input-modalities-v021
...
[codex] Fix stale official Astra input modalities
2026-09-07 18:47:31 +08:00
Wesley Liddick
81c0f11d7a
Merge pull request #6736 from qiu121/codex/fix/openai-stream-failure-observability
...
fix(openai): 记录流式失败的上游诊断信息
2026-09-07 18:46:58 +08:00
Wesley Liddick
561fc1c3e4
Merge pull request #6718 from lyy0709/codex/astra-ultra-catalog
...
fix(codex): preserve Astra Ultra workflow metadata
2026-09-07 18:46:11 +08:00
Wesley Liddick
43491f67a1
Merge pull request #6733 from AndrewZhuCC/fix/codex-allowed-tools
...
fix(codex): preserve allowed_tools selection constraints
2026-09-07 18:45:48 +08:00
Wesley Liddick
b9ebc8f209
Merge pull request #6637 from varrge/fix/gemini-flash-tier-pricing
...
fix(billing): resolve Gemini 3.7/3.8 Flash thinking-tier prices
2026-09-07 18:44:55 +08:00
Wesley Liddick
f7c48ba59a
Merge pull request #6674 from wuji-labs/fix/antigravity-toolconfig-always-present
...
fix(antigravity): always set toolConfig for reasoning models without tools
2026-09-07 18:44:41 +08:00
Wesley Liddick
22c16d0517
Merge pull request #6708 from r266-tech/r266/fix-ws-turn-rate-limit-6679
...
fix(openai-ws): recover later passthrough turns from account quota exhaustion
2026-09-07 18:44:18 +08:00
Wesley Liddick
2cc1e7ef90
Merge pull request #6677 from Lynricsy/fix/claude-thinking-block-binding
...
fix(claude): support thinking block binding beta
2026-09-07 18:43:52 +08:00
Zero Clover
81ff9384cb
fix(groups): merge main and resolve model allowlist conflicts
2026-09-07 18:33:39 +08:00
alfadb
0aaed397cc
fix: preserve Astra reasoning mode for Codex OAuth
2026-09-07 17:58:20 +08:00
Wesley Liddick
b8ff74ad70
Merge pull request #6668 from ssharkkky/fix/channel-monitor-gemini-role
...
fix(monitors): send explicit user role in Gemini monitor probes
2026-09-07 17:38:00 +08:00
Wesley Liddick
96cf8bd76a
Merge pull request #6665 from ssharkkky/fix/grok-cross-client-map-default-doc
...
fix(settings): describe Grok cross-client mapping default as enabled
2026-09-07 17:37:47 +08:00
Wesley Liddick
1f716aa181
Merge pull request #6667 from ssharkkky/fix/antigravity-user-agent-version
...
fix(antigravity): refresh default user agent version
2026-09-07 17:37:37 +08:00
Wesley Liddick
787a6a33df
Merge pull request #6481 from alfadb/fix/claude-cli-version-floor
...
fix(claude): 让伪装的 Claude Code 版本真正生效,修复 Fable 5.1 仍然 400
2026-09-07 17:37:12 +08:00
Wesley Liddick
f8e1e7fed6
Merge pull request #6711 from wucm667/fix/issue-6701-model-not-found-failover
...
Fix failover for model-not-found responses
2026-09-07 17:36:58 +08:00
Wesley Liddick
f09a5b602e
Merge pull request #6704 from aofee/codex/fix-http-bridge-session-isolation
...
fix(openai-ws): 修复 HTTP bridge 并发连接抢占与状态串用
2026-09-07 17:36:36 +08:00
Wesley Liddick
027e3f2d54
Merge pull request #6688 from suixincrazy/fix/codex-manifest-failover-alias
...
fix(openai): honor model_routing for Codex manifests and scheduling
2026-09-07 17:36:26 +08:00
Wesley Liddick
8116d235ef
Merge pull request #6629 from superdav42/fix/preserve-function-arguments-done
...
fix(apicompat): preserve function arguments from done events
2026-09-07 17:36:10 +08:00
Wesley Liddick
959cbe3d87
Merge pull request #5453 from wucm667/fix/issue-5451-ws-passthrough-before-turn
...
fix(openai): reacquire passthrough turn slots
2026-09-07 17:35:57 +08:00
Wesley Liddick
c0420e2b8a
Merge pull request #6484 from aofee/codex/fix-fable-credits-required-scope
...
fix(anthropic): keep Fable credits_required model-scoped
2026-09-07 17:33:59 +08:00
Wesley Liddick
9578ddbddd
Merge pull request #6687 from Chenning-Tao/codex/fix-native-delegation-ws
...
fix(openai): preserve named standalone Responses inputs
2026-09-07 17:31:17 +08:00
Wesley Liddick
e274de45b7
Merge pull request #6702 from a1gaoshanlaiyige/fix/message-cache-json-escaping
...
fix(gateway): use JSON escaping for message cache promotion
2026-09-07 17:30:54 +08:00
Wesley Liddick
ce328fb37a
Merge pull request #6670 from ssharkkky/fix/payment-fulfillment-isolation
...
fix(payment): isolate fulfillment from redeem limits
2026-09-07 17:30:43 +08:00
alfadb
3efeba33a4
test(claude): 版本覆盖用例字面量随内置基线升至 2.1.259
...
这三个用例的字面量 2.1.251 写于内置基线为 2.1.220 的时期,本意是取一个
高于基线的补丁位验证"覆盖不得低于 pin"规则。基线升至 2.1.258 后,2.1.251
落在 pin 之下:IsSupportedCLIVersion 应判 false、resolveCLIVersion 应回落
基线,与用例原意相悖,CI 随之失败。
改为真正高于当前 pin 的最小补丁位 2.1.259,用例语义不变;实现未放宽,
constants_cli_version_test.go 中独立的 Fable 5.1 闸门下限 2.1.251 保持不变。
2026-09-07 16:34:35 +08:00
alfadb
ce157b32ed
fix(claude): 指纹自愈路径同样执行 claude-cli 版本下限
...
GetOrCreateFingerprint 的 heal 分支(畸形缓存自愈)此前在版本下限逻辑之外:
畸形缓存 + 合法但过旧的客户端 UA 会在首次读取时把过旧 UA 原样落库并返回,
下一次读取才被抬到下限——该窗口内账号仍以过旧版本撞上游客户端版本闸门
(PR #6481 review 指出的边界 case)。
修复:把 floorClaudeCLIUserAgentVersion 后置块从 healthy else 内移到
heal/healthy if-else 之后、TTL 续期检查之前,作为两条缓存命中路径的共同
后置条件;heal 分支 needWrite 本已为 true,单次落库语义不变。
测试:TestGetOrCreateFingerprintHealsPoisonedCacheUsingValidClientUA
期望改为首次返回/落库即 claude-cli/CLICurrentVersion(保留 ClientID 不变、
恰好一次落库断言);floor/UA 全部既有用例保持绿。
2026-09-07 16:34:35 +08:00
alfadb
3cb2381bdc
fix(claude): 让伪装的 Claude Code 版本真正生效,修复 Fable 5.1 仍然 400
...
claude-fable-5-1 已登记进 DefaultModels,但 OAuth 账号实际调用仍然全部失败:
400 claude_code_version_too_old
"Claude Code 2.1.220 does not support this model;
version 2.1.251 or newer is required."
两个独立的原因,缺一不可:
1. CLICurrentVersion 停留在 2.1.220,低于上游对该模型的客户端版本闸门。
升到 2.1.258(当前官方 CLI 最新版,npm @anthropic-ai/claude-code)。
2. 只升常量对所有已有账号无效。上游请求实际发送的 User-Agent 来自账号级
持久指纹(IdentityService,Redis fingerprint:<accountID>),不是
DefaultHeaders;defaultFingerprint 只在首次创建指纹时使用。
GetOrCreateFingerprint 的缓存命中路径只有两条改写分支:UA 畸形时自愈,
或客户端送来更新版本时升级。指纹 7 天 TTL 但活跃账号每 24h 续期,实际
近乎永不过期,系统内也没有重置入口——客户端版本比缓存旧时(例如缓存
2.1.220、客户端 2.1.75),存量账号会永远对上游声称 2.1.220。
生产实测:升级 CLICurrentVersion 并部署后仍报同样的 400,读 Redis 确认
出问题账号的缓存值为 "claude-cli/2.1.220 (external, cli)"。
修复:新增 floorClaudeCLIUserAgentVersion,把 CLICurrentVersion 作为缓存
指纹里 claude-cli 版本的下限,缓存命中与首次创建两条路径共用。
- 只对 claude-cli 产品生效,其它客户端一律不动
- 只升不降:版本等于或高于下限(含客户端上报的更新版本)不做任何改动
- 只替换版本号段,UA 其余部分原样保留,例如
"(external, claude-desktop-3p, agent-sdk/0.3.100)" 不受影响
- 与既有的"客户端更新版本"升级分支相互独立、二者取更新者
- X-Stainless-* 维持既有 merge 语义,不被下限逻辑覆盖
cc_version 无需单独处理:billing attribution block 的版本已由
syncBillingHeaderVersion 跟随实际发送的 User-Agent 同步。
测试:identity_service_version_floor_test.go 覆盖 helper 的 8 种 UA 形态与
5 个 GetOrCreateFingerprint 场景,其中一个直接复现线上故障(缓存 2.1.220 +
客户端 2.1.75 → 写回 2.1.258,Stainless 字段保持不变)。
constants_cli_version_test.go 锁定常量与 DefaultHeaders 的 UA 同源,并断言
不低于 Fable 5.1 的闸门下限。回退实现后对应用例确认转红。
identity_service_user_agent_validation_test.go 中 3 个把版本钉死在旧字面量
的既有用例改为钉 CLICurrentVersion 或更高版本——它们断言的正是本次有意改变
的行为,各自的原始意图(哨兵拒绝、合法升级生效、健康缓存不重写)保持不变。
2026-09-07 16:34:35 +08:00
Wesley Liddick
a7d2c782df
Merge pull request #5717 from wucm667/feat/issue-2629-current-main
...
feat(simple-mode): allow basic account grouping
2026-09-07 15:43:22 +08:00
Robert Guo
b939fa9d4a
fix(openai): select GPT-6 Astra instructions correctly
2026-09-07 14:12:21 +08:00
qiu121
6aabbdf547
fix(openai): 记录流式失败的上游诊断信息
...
- 在 Responses 流已经输出语义内容后记录 response.failed 的上游事件,使运维可以查询原始错误、账号和上游 request ID,定位 OpenAI 临时处理失败而不丢失诊断上下文。
- 保留已提交语义内容后禁止切号重放的安全边界,避免客户端收到重复或混合响应;补充原生与透传路径的回归测试,确保该错误可观测且行为一致。
Refs: #5165 , #6714
2026-09-07 11:27:08 +08:00
lyy0709
ad4b2f30f5
test(codex): assert alias workflow effort before dereferencing
2026-09-07 11:23:11 +08:00
milesians
ff758f37d2
fix: preserve plaza 1h pricing and align interval fallbacks
2026-09-07 11:07:35 +08:00
zhuanzhi
2e31d8b702
fix(codex): preserve allowed_tools selection constraints
...
Keep allowed_tools policies intact for upstream validation and rewrite their
function references alongside reserved tool-name aliases.
2026-09-07 10:47:51 +08:00
刘佳林
f62ec2e4a0
feat(groups): 推理强度映射转发值支持拒绝
...
分组推理强度映射的转发值新增 deny。命中对应请求档位时直接拒绝请求,
返回 403 permission_error,而不是改写后转发。
2026-09-07 10:12:42 +08:00
milesians
415a0dc9d0
fix: display multiplier-only interval prices
2026-09-07 10:11:07 +08:00
wucm667
b59f3bf46c
fix(simple-mode): enforce basic group boundaries
2026-09-07 09:20:48 +08:00
lyy0709
2db78bd3d6
fix(codex): preserve Astra Ultra workflow metadata
2026-09-07 01:12:55 +08:00