Wesley Liddick
5c203ce6c6
Merge pull request #1428 from YanzheL/fix/openai-gateway-content-session-hash-fallback
...
fix(gateway): add content-based session hash fallback for non-Codex clients
2026-04-08 14:17:49 +08:00
Wesley Liddick
47cd1c5286
Merge pull request #1467 from touwaeriol/refactor/channel-service-cleanup
...
refactor(channel): split long functions, extract shared validation, move billing validation to service
2026-04-08 14:16:28 +08:00
Wesley Liddick
06e2756ee4
Merge pull request #1501 from StarryKira/fix/1493-non-streaming-empty-output
...
fix: 非流式响应路径扩展SSE检测至所有账号类型
2026-04-08 14:11:47 +08:00
shaw
1c9a2128cf
fix: 修复非CC客户端OAuth伪装被Anthropic检测为第三方应用的问题
...
commit f3aa54b 的 rewriteSystemForNonClaudeCode 未能通过 Anthropic 第三方检测,
根因是两个关键信号与真实 Claude Code 不一致:
1. anthropic-beta 头缺少 claude-code-20250219:伪装路径主动将该 beta
加入 drop set 并移除,但 Anthropic 依赖此 beta 识别 Claude Code 请求。
修复:非 haiku 模型的伪装请求强制包含 claude-code beta。
2. system 字段使用 string 格式而非 array+cache_control:真实 Claude Code
始终以 [{type,text,cache_control:{type:"ephemeral"}}] 发送 system,
string 格式成为第三方检测信号。
修复:rewriteSystemForNonClaudeCode 改为注入 array 格式。
附带调整:stripSystemCacheControl 按 system 是否被重写动态决定,
重写时保留 CC prompt 的 cache_control,未重写时(haiku/已含CC前缀)
保持原有剥离行为。
2026-04-08 14:06:06 +08:00
Elysia
9e515ea7c4
fix: 非流式响应路径扩展SSE检测至所有账号类型 ( #1493 )
...
当上游返回SSE格式响应(如sub2api链路)时,API Key账号的非流式路径
未检测SSE,导致终态事件中空output直接透传给客户端。
- 将Content-Type SSE检测从仅OAuth扩展至所有账号类型
- 重命名handleOAuthSSEToJSON为handleSSEToJSON(无OAuth专属逻辑)
- 为透传路径新增handlePassthroughSSEToJSON,支持SSE转JSON及空output重建
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-07 22:49:14 +08:00
Wesley Liddick
00aaf0f796
Merge pull request #1382 from StarryKira/fix/refresh-token-race-condition
...
fix: resolve refresh token race condition causing false invalid_grant errors fix issue#1381
2026-04-07 20:50:08 +08:00
github-actions[bot]
3694811d06
chore: sync VERSION to 0.1.109 [skip ci]
2026-04-07 12:49:46 +00:00
Wesley Liddick
81b96ae123
Merge pull request #1498 from aiexz/main
...
do not normalize model for openai API token based accounts
2026-04-07 20:37:10 +08:00
shaw
7c60ee3c85
feat: Beta策略支持按模型区分处理(模型白名单)
2026-04-07 20:33:09 +08:00
shaw
b2e379cf7a
fix: 非流式路径在上游终态事件output为空时从delta事件重建响应内容
...
上游API近期更新后,response.completed终态SSE事件的output字段可能为空,
实际内容仅通过response.output_text.delta等增量事件下发。流式路径不受影响,
但chat_completions非流式路径和responses OAuth非流式路径只依赖终态事件的
output,导致返回空响应。
新增BufferedResponseAccumulator累积器,在SSE扫描过程中收集delta事件内容
(文本、function_call、reasoning),当终态output为空时补充重建。
同时修复handleChatBufferedStreamingResponse遗漏response.done事件类型的问题。
2026-04-07 19:35:56 +08:00
shaw
08b454423b
chore: renew expired xlsx audit exceptions to 2026-07-06
2026-04-07 17:22:17 +08:00
shaw
f3aa54b770
fix: 非Claude Code客户端system prompt迁移至messages以绕过第三方应用检测
...
Anthropic近期引入基于system参数内容的第三方应用检测机制,原有的前置追加
Claude Code提示词策略无法通过检测(后续内容仍为非Claude Code格式触发429)。
新策略:对非Claude Code客户端的OAuth/SetupToken账号请求,将system字段
完整替换为Claude Code标识提示词,原始system内容作为user/assistant消息对
注入messages开头,模型仍接收完整指令。
仅影响/v1/messages路径,chat_completions和responses路径保持原有逻辑不变。
真正的Claude Code客户端请求完全不受影响(原样透传)。
2026-04-07 17:06:47 +08:00
Alex
3a07e92b60
fix(openai): do not normalize /completion API token based accounts
2026-04-07 11:40:41 +03:00
Alex
7eecc49c3a
fix(openai): do not normalize API token based accounts
2026-04-07 11:27:57 +03:00
Wesley Liddick
9ab2fd7f9e
Merge pull request #1391 from Zqysl/qingyu/fix-openai-passthrough-failover-429-529
...
fix(openai): fail over passthrough 429 and 529
2026-04-07 15:18:52 +08:00
Wesley Liddick
bf2b590273
Merge pull request #1397 from weak-fox/fix/active-filter-excludes-rate-limited
...
解决账号管理中“正常”筛选包含限流中账号
2026-04-07 08:26:51 +08:00
erio
9151d34d40
refactor(channel): split long functions, extract shared validation, move billing validation to service
...
- Split Update (98→25 lines), buildCache (54→20 lines), Create (51→25 lines)
into focused sub-functions: applyUpdateInput, checkGroupConflicts,
fetchChannelData, populateChannelCache, storeErrorCache, getOldGroupIDs,
invalidateAuthCacheForGroups
- Extract validateChannelConfig to eliminate duplicated validation calls
between Create and Update
- Move validatePricingBillingMode from handler to service layer for
proper separation of concerns
- Add error logging to IsModelRestricted (was silently swallowing errors)
- Add 12 new tests: ToUsageFields, billing mode validation, antigravity
wildcard mapping isolation, Create/Update mapping conflict integration
2026-04-05 22:32:49 +08:00
shaw
339d906e54
chore: update readme
2026-04-05 22:31:01 +08:00
shaw
f47c865555
chore: update readme
2026-04-05 22:27:13 +08:00
github-actions[bot]
58df2f0bdc
chore: sync VERSION to 0.1.108 [skip ci]
2026-04-05 14:12:15 +00:00
Wesley Liddick
c71b1d63e5
Merge pull request #1460 from imfusheng/main
...
解决issue#1453提到的反重力不可用问题
2026-04-05 22:01:08 +08:00
shaw
a07296770c
fix: remove remaining Sora references from frontend
...
The previous Sora removal missed several frontend references, causing
TypeScript build errors for sora_client_enabled and a missing SoraView.vue
import. Clean up all remaining Sora code from types, router, sidebar,
settings, store, and accounts API.
2026-04-05 21:26:47 +08:00
Wesley Liddick
8154575d70
Merge pull request #1464 from touwaeriol/fix/channel-platform-isolation
...
fix(channel): remove cross-platform pricing/mapping leakage for antigravity groups
2026-04-05 21:09:10 +08:00
Wesley Liddick
d757df8a4b
Merge pull request #1463 from touwaeriol/feat/remove-sora
...
revert: completely remove Sora platform
2026-04-05 21:08:48 +08:00
erio
c5688fef9a
fix: remove cross-platform pricing/mapping leakage for antigravity groups
...
Antigravity groups were incorrectly matching pricing and model mapping
entries from anthropic/gemini platform tabs. Each platform should be
strictly isolated — antigravity groups only use antigravity-tagged pricing.
2026-04-05 20:42:24 +08:00
erio
19655a15f1
fix: gofmt formatting
2026-04-05 18:56:40 +08:00
erio
f345b0f595
fix: use upstream versions of shared files and remove only Sora code
...
Restore gateway_service.go, setting_handler.go, routes/admin.go,
dto/settings.go, group_repo.go, api_key_repo.go, wire_gen.go to
upstream/main versions and surgically remove only Sora references.
This preserves upstream-only features (RequireOauthOnly, RequirePrivacySet,
GroupResolution, etc.) that were missing when using release branch versions.
2026-04-05 18:48:41 +08:00
erio
58707f8a2a
fix: restore upstream api_contract_test and remove Sora fields
2026-04-05 18:18:58 +08:00
erio
c6089ccb33
fix: remove Sora DI from wire_gen.go and clean remaining upstream Sora references
2026-04-05 17:50:01 +08:00
shaw
f585a15eff
fix(billing): prevent channel_mapped override from reverting BillingModel when channel did not map
...
When a channel has no model mapping for the requested model, ChannelMappedModel
equals OriginalModel (the user's arbitrary input). Combined with the default
BillingModelSource="channel_mapped", this incorrectly overrides the BillingModel
set by the OpenAI format conversion layer (e.g., gpt-5.4 from DefaultMappedModel)
back to the unmapped original model (e.g., glm) which has no pricing — resulting
in zero-cost billing.
Add guard condition so the channel_mapped override only fires when the channel
actually changed the model (ChannelMappedModel != OriginalModel).
2026-04-05 17:31:18 +08:00
erio
08e69af572
fix: remove empty DataManagement tab from settings (was Sora S3 storage)
2026-04-05 17:22:22 +08:00
erio
294b4bcbac
fix: remove Sora S3 profile code from DataManagementView, keep backup functionality
2026-04-05 17:22:22 +08:00
erio
67008b5d15
fix: restore DataManagementView.vue — incorrectly deleted during Sora removal
...
This component is used by SettingsView.vue for backup/data management.
It was mistakenly deleted as "Sora storage management" but contains
non-Sora backup functionality from upstream.
2026-04-05 17:22:22 +08:00
erio
a29f5a4849
fix: gofmt formatting
2026-04-05 17:22:22 +08:00
erio
1b1c08f7fb
fix: remove media_type from usage_log SQL queries and test stubs
...
- Remove media_type column from all INSERT/SELECT/SCAN in usage_log_repo
- Remove media_type mock arg from request_type and integration tests
- Adjust scan stub value arrays from 47 to 46 elements
2026-04-05 17:22:22 +08:00
erio
0c72be0403
fix: gofmt alignment and remove media_type from usage_log repo queries
2026-04-05 17:22:22 +08:00
erio
b4bd89b96b
fix: remove media_type from usage_log SQL queries + gofmt + inline test helpers
2026-04-05 17:22:22 +08:00
erio
5bb8b2add6
fix: resolve CI failures — gofmt, unused functions, test parameter mismatches
...
- gofmt: user.go, config_test.go, group_handler.go, smart_retry_test.go
- Remove unused: mergeGroupIDs, resolveProxyURL, "time" import
- Fix api_contract_test.go: remove extra Sora args from NewAdminService,
NewSettingHandler, NewAccountHandler; remove Sora field expectations
- Fix account_test_service_openai_test.go: restore test helpers
2026-04-05 17:22:22 +08:00
erio
93b42ccfea
fix: resolve CI failures — gofmt, unused functions, missing test helpers
...
- Run gofmt on user schema, config test, group handler
- Remove unused mergeGroupIDs function
- Restore shared test helpers (newJSONResponse, queuedHTTPUpstream)
that were in deleted Sora test file
2026-04-05 17:21:36 +08:00
erio
ff86154a03
refactor: remove unused OpenAIOAuthOptions after Sora platform removal
...
The options parameter only served to switch between 'openai' and 'sora'
platforms. With Sora removed, the parameter is unnecessary.
2026-04-05 17:19:27 +08:00
erio
fcee67e317
fix: remove remaining unused Sora variables causing TypeScript build failure
...
- Remove unused accessTokenInput ref from OAuthAuthorizationFlow
- Remove unused parsedSessionToken* computed and handleValidateSessionToken
- Prefix unused options parameter in useOpenAIOAuth
2026-04-05 17:19:27 +08:00
erio
155900e62f
fix: remove unused Sora references causing TypeScript build failure
...
- Remove handleImportAccessToken event binding from CreateAccountModal
- Remove unused imports/variables from OAuthAuthorizationFlow (useAppStore,
parsedAccessToken*, handleImportAccessToken)
- Remove unused oauthPlatform variable from useOpenAIOAuth composable
2026-04-05 17:19:27 +08:00
erio
9c514c9808
chore: drop Sora database schema and regenerate ent code
2026-04-05 17:19:07 +08:00
erio
62e80c602d
revert: completely remove all Sora functionality
2026-04-05 17:11:01 +08:00
github-actions[bot]
dbb248df52
chore: sync VERSION to 0.1.107 [skip ci]
2026-04-05 06:02:08 +00:00
偷得浮生
66779f1c5f
同步ag版本号
2026-04-05 13:01:28 +08:00
偷得浮生
2c856b67ca
Update oauth.go
2026-04-05 13:00:23 +08:00
Wesley Liddick
bf45581104
Merge pull request #1455 from touwaeriol/feat/channel-management
...
feat(channel): add channel management with multi-mode pricing and billing integration
2026-04-04 23:42:33 +08:00
erio
e88b2890d1
refactor: unify interval filtering and eliminate redundant Resolve calls
...
- applyRequestTierOverrides now uses filterValidIntervals consistently
with applyTokenOverrides (per_request/image modes were not filtering)
- CostInput accepts optional pre-resolved pricing via Resolved field,
eliminating duplicate Resolver.Resolve() calls in gateway billing paths
2026-04-04 15:15:33 +08:00
erio
1b5ae71d1f
fix: resolve golangci-lint issues — remove unused constants and functions, fix gofmt
...
- Remove unused claudeMax*Tokens constants (Claude Max feature not included)
- Remove unused UsageMapHook type, SetUsageMapHook method, and usageToMap function
- Fix gofmt formatting in channel_service.go, openai_model_mapping_test.go,
chatcompletions_to_responses.go
2026-04-04 14:58:20 +08:00