wucm667
de98bdff1e
fix(images): preserve insufficient balance failures
2026-09-21 10:23:10 +08:00
Wesley Liddick
cdb5cfaf6c
Merge pull request #6747 from DuskLin/feat/opencode-go-platform
...
feat(opencode): 增加 OpenCode 平台支持(Zen / GO)
2026-09-11 16:42:05 +08:00
刘佳林
efcc2252e5
fix(opencode): address review on dispatch, billing, session, and 402
...
Skip OpenAI messages-dispatch gpt-5.x defaults for OpenCode groups and
composite OpenCode targets. Filter unpriced claude-* billing candidates,
estimate count_tokens locally, sanitize body session IDs before setting
X-OpenCode-Session, and treat Zen 402 as recoverable payg cooldown.
Stop rewriting the inbound body before protocol routing so account
model_mapping applies once and usage_logs.model stays the client name.
2026-09-11 15:39:13 +08:00
Wesley Liddick
3fb03cdac1
Merge pull request #6960 from xlplbo/fix/openai-ws-exec-scope-preemption
...
fix(openai-ws): ctx_pool 会话抢占与会话状态按 codex 线程隔离
2026-09-11 13:56:52 +08:00
xlplbo
d0ca057ca4
fix(openai): WS 会话被抢占时先发关闭帧再取消
2026-09-11 10:25:50 +08:00
刘佳林
242907854d
feat(opencode): add OpenCode platform with Zen and GO account types
...
Keep the internal platform ID opencode_go. Product surface is OpenCode
with account_mode zen|go, model-aware routing across Chat Completions,
Responses, and Anthropic Messages, and X-OpenCode-Session derived from
prompt_cache_key / metadata.user_id so prompt cache can hit.
Unmatched models fall back to /v1/chat/completions. Related to #6742 .
2026-09-11 10:05:24 +08:00
刘世俊
a0babc93dd
fix(openai): accept full heartbeat bootstrap envelopes
2026-09-09 12:48:57 +08:00
Wesley Liddick
43569bb44c
Merge pull request #6434 from swjturay/codex/upstream-client-disconnect-drain
...
fix(openai-ws): drain upstream after client disconnect
2026-09-08 20:42:59 +08:00
Wesley Liddick
dbe92a1c24
Merge pull request #6758 from DuskLin/feat/minimax-platform
...
feat(minimax): 增加 MiniMax 平台支持
2026-09-08 18:50:06 +08:00
Zero Clover
81ff9384cb
fix(groups): merge main and resolve model allowlist conflicts
2026-09-07 18:33:39 +08:00
刘佳林
19382f275e
feat(minimax): 增加 MiniMax 平台支持
...
把 MiniMax 做成与 Kimi / 智谱 / DeepSeek 同级的国产供应商平台:账号创建/编辑、分组、Composite 路由、原生 Token Plan / Coding Plan 额度,以及 OpenAI 兼容模型列表。
额度走 GET api.minimaxi.com|io /v1/api/openplatform/coding_plan/remains(Bearer)。只解析 model_name=general 的 remaining percent;周窗口仅在 current_weekly_status=1 时计入。
Related to #6742
2026-09-07 18:22:56 +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
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
wucm667
8363d537e0
fix(gateway): fail over model-not-found responses
2026-09-06 20:38:17 +08:00
Wesley Liddick
2dc287f2e0
Merge pull request #6636 from specialpointcentral/cyber-ws-recording-fix
...
fix(openai): record WS cyber policy failures across paths
2026-09-05 16:17:33 +08:00
Wesley Liddick
83094abf21
Merge pull request #6536 from wucm667/fix/issue-6526-mapped-model-scheduling
...
fix(openai): schedule accounts with mapped model
2026-09-05 16:17:04 +08:00
Wesley Liddick
cc52c93ad7
Merge pull request #6539 from creamtea47/codex/fix-delegation-bootstrap-resume
...
fix(openai): 兼容历史任务委派续聊
2026-09-05 16:16:00 +08:00
Zero Clover
cff3f89850
feat(groups)!: enforce model allowlists across gateway endpoints
2026-09-05 16:05:17 +08:00
Wesley Liddick
c6ff69fd12
Merge pull request #6542 from wucm667/fix/issue-6530-gateway-concurrency-origin
...
fix(handler): distinguish gateway admission rejections
2026-09-05 16:03:17 +08:00
Qi HU
2da31290a1
fix(openai): record WS cyber policy failures across paths
...
Cyber-policy detection only inspected response.failed, and the ingress check ran after error-specific early returns. As a result, error-shaped failures and the connection-pool, HTTP-bridge, and WSv2 paths could miss cyber-policy hits.
Centralize event marking and invoke it before retry and failover returns across the WebSocket implementations. Preserve the recorded guard during account failover and defer connection blocking until the logical failover chain completes, avoiding duplicate records while ensuring subsequent turns are blocked.
2026-09-05 15:32:29 +08:00
wucm667
28dde982cb
fix(openai): normalize automation heartbeat bootstrap
2026-09-03 17:29:04 +08:00
wucm667
62198286e9
[verified] fix(handler): distinguish gateway admission rejections
2026-09-03 12:48:02 +08:00
NellPoi
af90a9bd1f
fix(openai): 兼容历史任务委派续聊
2026-09-03 11:39:23 +08:00
wucm667
5e4958c889
fix(openai): schedule accounts with mapped model
2026-09-03 10:51:12 +08:00
Wesley Liddick
559960865a
Merge pull request #6447 from DuskLin/feat/openai-reasoning-effort-over-limit
...
feat(groups): 推理强度上限增加超限自动降档与拒绝访问
2026-09-02 09:07:53 +08:00
WizardPro
421a83282a
fix(openai): accept scheduled automation bootstrap without call id
2026-09-01 11:36:26 +08:00
刘佳林
aa7a811e66
feat(groups): add deny-or-downgrade control for reasoning effort ceiling
...
OpenAI/Composite groups can now reject requests that exceed the max
reasoning effort instead of always rewriting them down to the ceiling.
Existing groups keep the previous auto-downgrade behavior.
2026-09-01 10:15:45 +08:00
wucm667
5fb5dfb34c
fix(openai): reacquire passthrough turn slots
2026-09-01 08:13:29 +08:00
Ray
a10ff1255c
fix(openai-ws): classify canceled client streams
2026-08-31 21:04:29 +08:00
wucm667
1be69e56aa
fix(openai): accept delegation bootstrap without call id
2026-08-31 12:57:06 +08:00
Wesley Liddick
0678b24d58
Merge pull request #6283 from okbexx/feat/usage-compaction-kind
...
feat(usage): track native compaction requests
2026-08-31 11:19:37 +08:00
RayWangX
5688bcba91
fix(openai): honor Claude Code session for messages sticky routing
2026-08-29 08:31:15 +08:00
Jarl
1cc6999ada
feat(usage): track native compaction requests
2026-08-28 23:32:11 +08:00
Wesley Liddick
7b693ae429
Merge pull request #6188 from JialinLiu-codedance/feat/usage-requested-reasoning-effort
...
feat(usage): 使用记录展示映射前的推理强度
2026-08-28 16:18:50 +08:00
Wesley Liddick
1e6926cb9c
Merge pull request #6312 from fengshao1227/fix/openai-ws-client-close-not-account-failure
...
fix(openai): 入站 WS 的客户端正常关闭与断开不再计为账号故障
2026-08-28 15:56:34 +08:00
li
c83dced4ba
fix(openai): 入站 WS 的客户端正常关闭与断开不再计为账号故障
...
ingress WebSocket 收尾处只把 *service.OpenAIWSClientCloseError 且状态码为 1000
的情况认作正常关闭,其余全部落到 shouldReportOpenAIWSProxyAccountFailure ——
而它只排除 model-switch 与 session-preempted 两种。两种完全正常的结束因此被
误判为上游/账号故障:
- 客户端干净关闭:coder/websocket 直接回裸 coderws.CloseError{Code: 1000},
ReadOpenAIWSClientMessage 把 conn.Read 的错误原样返回,没有任何一层把它包成
*OpenAIWSClientCloseError,所以 errors.As 对该类型必然为假。
- 客户端中途断开:ReadOpenAIWSClientMessage 在 controlCtx.Done() 分支用
StatusGoingAway(1001) 收尾并以 context.Canceled 为 cause,「只认 1000」匹配不到。
两者都会走到 ReportOpenAIAccountScheduleResult(success=false),进而喂给
ObserveOpenAIAPIKeyHealthFailure 与 scheduler.ReportResult,累积到阈值即把上游
账号熔断出调度池——客户端按一次 Ctrl-C 就在扣上游账号的健康分。
同文件的 summarizeWSCloseErrorForLog 一直用 coderws.CloseStatus 读关闭码,就在
该判断之后 12 行被调用,于是同一条 WARN 会打印
close_status=1000(StatusNormalClosure) 的同时把账号记为故障。
失败归因的政策仓库早有明文:同包 failover_loop.go 的 failoverClientGone 写着
「客户端断开后 failover 必须静默终止……并被误报成账号耗尽」。本次把 WS ingress
补齐到同一条规矩。
判定收窄:只豁免 1000 与 context.Canceled。1001 不整类放行——网关也会因自身原因
用 GoingAway 收场,客户端取消那一支已由 context.Canceled 覆盖;
context.DeadlineExceeded 同样不放行,空闲超时那条本就被包成 1000 走前一个判据,
其余 deadline 是真实停滞。
Fixes #6105
2026-08-28 13:17:43 +08:00
Qi HU
f4e3eb1c5a
fix(openai): detect cyber policy in ws v2 passthrough
2026-08-27 21:50:53 +08:00
刘佳林
11ada80d58
feat(usage): 使用记录展示映射前的推理强度
...
用量行新增 requested_reasoning_effort,记录分组策略与模型族改写前的客户端请求值;推理强度列与模型列一致,主行显示请求值,有映射时用 ↳ 展示实际转发值。
2026-08-25 15:10:52 +08:00
alfadb
f06bf181d2
feat(openai): support Fast mode service_tier across responses/chat/WS paths
...
- Accept fast|priority (canonical priority), flex|auto|default|scale on
/v1/responses and /v1/chat/completions; reject unknown/empty/non-string
with HTTP 400; omitted and null stay compatible.
- Propagate service_tier through JSON/SSE, Responses<->Chat conversions,
fallback paths and HTTP->upstream WebSocket bridge.
- Billing prefers the upstream terminal tier; the outbound (policy-
transformed) tier is used only when upstream omits the field.
Explicit upstream default bills Standard even when Fast was requested.
- Pricing: Fast premium 2x Standard for gpt-5.6-sol/terra/luna and
gpt-5.4; 2.5x for gpt-5.5; channel FastMultiplier stays authoritative.
- Live verification (official Codex 0.149.0 + gateway, HTTP & WS):
upstream ChatGPT backend may return terminal default even when the
account catalog advertises priority; billing follows the actual tier.
2026-08-24 11:52:48 +08:00
Jarl
fa4587041c
fix(openai): keep auto-review on parent account
2026-08-22 12:14:19 +08:00
wucm667
68653fb2cc
fix: allow messages dispatch for composite groups
2026-08-21 18:01:16 +08:00
IanShaw
1429e8f714
修复 PR 5888 剩余审计问题
2026-08-20 22:01:20 -07:00
IanShaw
b2b2adcf8d
修复 PR 5888 审查发现的兼容性与竞态问题
2026-08-20 21:06:48 -07:00
IanShaw
16b15e870d
修复 5888 与 5925 的同号重试语义冲突
2026-08-20 18:16:38 -07:00
IanShaw027
7c53a842e4
合并上游 main,保留 5925 的 Grok 重试上限与 5888 的协议兼容修复
...
同账号重试采用次数上限加 deadline;畸形 tools 在出站前删除;compaction 422 与结构化错误扫描一并保留。
2026-08-21 08:49:44 +08:00
IanShaw
c628b3eea7
让 Grok stream idle 重试上限作用于主路径
2026-08-20 07:07:55 -07:00
IanShaw
ad26172b83
完善 Grok 限流冷却与用量兼容
2026-08-20 02:32:43 -07:00
IanShaw
c374ff2951
完善 OpenAI 网关切换与运维错误语义
2026-08-19 23:13:40 -07:00
IanShaw
cf3577a3c5
fix(openai): harden Responses compatibility
2026-08-19 09:03:37 -07:00
Vincent Cui and Kinso
82cbe6aff7
fix(openai): resume later websocket turns after 429
...
Port the safe current-turn replay from #4622 onto current main.
Co-authored-by: Kinso <kinsolee@users.noreply.github.com >
2026-08-19 18:51:21 +08:00