Entropy.Xu
bb5a4454a5
feat(gateway): 添加标准文本非流式心跳
2026-05-29 14:35:16 +08:00
fawney19
9fb600df1b
Fix PR 599 check regressions
2026-05-29 12:30:56 +08:00
Mas0nShi
6ebd39ed0b
Stabilize stream first-byte usage test
2026-05-28 15:33:28 +08:00
fawney19
0efb3d340d
Merge commit 'refs/pr/530'
2026-05-28 12:53:45 +08:00
Mas0nShi
9ad9858ac2
Merge origin/main into fix/gemini-cli-v1internal
2026-05-28 11:58:00 +08:00
stabey
739e39e1ca
fix: 修复缓存 token usage 转换语义
...
统一 OpenAI、Gemini、Claude 之间缓存 token 的 usage 语义,避免 Claude 侧重复统计缓存输入 token。
同时补充 stream 合并逻辑、字段注释和覆盖转换链路的测试。
2026-05-27 23:49:07 +08:00
fawney19
674cc85005
Stabilize stream runtime nextest timing
2026-05-27 11:00:04 +08:00
fawney19
0ee6e393ce
Record stream first byte on upstream event
2026-05-27 10:19:49 +08:00
fawney19
cf8372c8cb
fix(usage): record visible stream first byte timing
2026-05-27 02:48:01 +08:00
fawney19
56901f91ce
Merge remote-tracking branch 'origin/pr/576'
2026-05-27 02:06:22 +08:00
yangrs
ba72770cab
fix: wire windsurf oauth runtime scheduling
2026-05-26 22:40:46 +08:00
Kayphoon
9e029462aa
test(gateway): stabilize stream timeout regression
2026-05-26 14:41:56 +08:00
fawney19
50e4f27276
Merge remote-tracking branch 'origin/pr/567'
2026-05-26 01:21:03 +08:00
fawney19
235f32e10e
Merge remote-tracking branch 'origin/pr/566' into review/pr-566-fix
2026-05-26 00:43:45 +08:00
fawney19
c03aebba3f
Merge branch 'pr-562' into review/pr-562
2026-05-25 23:10:29 +08:00
Novick Yuan
5dfccdec3e
Fix stream candidate watchdog timeout semantics
2026-05-25 21:43:13 +08:00
root
686311eabf
test: align OpenAI image stream keepalive expectation
2026-05-25 21:01:10 +08:00
root
b46028cb85
refactor: clarify OpenAI SSE control policy
2026-05-25 21:00:08 +08:00
root
fa172ecb95
fix: avoid synthetic keepalive for OpenAI streams
2026-05-25 21:00:08 +08:00
root
431311979a
fix: handle split streaming terminal events
2026-05-25 20:58:17 +08:00
fawney19
d3249485fa
Fix stream timeout semantics
2026-05-25 20:09:37 +08:00
fawney19
ae138ddb56
feat: update admin config import and runtime handling
2026-05-25 15:23:02 +08:00
MMEXA
28c3a5dbe4
Add Antigravity v1internal gateway adapter
2026-05-25 06:58:15 +08:00
fawney19
932397d1b3
fix(gateway): defer ChatGPT web image quota decrement
2026-05-25 01:56:25 +08:00
Codex
74c8bfc59f
调整 ChatGPT Web 生图 token 估算口径
2026-05-24 18:50:14 +08:00
Codex
3bf7469d30
修复 ChatGPT Web 生图 usage 估算
2026-05-24 18:50:14 +08:00
Codex
66837b7d7f
修复 ChatGPT Web 生图发起即扣额度
2026-05-24 18:50:14 +08:00
Codex
14b182d09b
修复 ChatGPT Web 生图调用起始预扣额度
2026-05-24 18:50:14 +08:00
Codex
9dba6ec1d9
修复 ChatGPT Web 生图预扣与 Free 限额继承
2026-05-24 18:50:14 +08:00
Codex
a52b513533
调整 ChatGPT Web 生图请求预扣额度
2026-05-24 18:50:14 +08:00
Codex
218ca8e6eb
修复 ChatGPT Web 生图额度递减显示
2026-05-24 18:50:14 +08:00
Codex
2b2754b779
修复 ChatGPT Web 生图成功后额度同步
2026-05-24 18:50:13 +08:00
fawney19
6447fda852
fix: harden tunnel security and timeout handling
2026-05-23 14:17:04 +08:00
Mas0nShi
8b7643e150
Merge remote-tracking branch 'origin/main' into fix/gemini-cli-v1internal
...
# Conflicts:
# apps/aether-gateway/src/ai_serving/transport.rs
# apps/aether-gateway/src/handlers/admin/provider/oauth/dispatch/batch/parse.rs
# apps/aether-gateway/src/handlers/shared/catalog.rs
# crates/aether-admin/src/provider/quota.rs
# crates/aether-model-fetch/src/strategy.rs
# crates/aether-provider-pool/src/lib.rs
# crates/aether-provider-pool/src/service.rs
# crates/aether-provider-transport/src/provider_types.rs
# frontend/src/features/providers/components/ProviderDetailDrawer.vue
# frontend/src/utils/__tests__/providerKeyQuota.spec.ts
# frontend/src/utils/providerKeyQuota.ts
# frontend/src/views/admin/PoolManagement.vue
2026-05-22 17:13:57 +08:00
zhefox
9b95fa4d95
fix(gateway): handle responses-shaped OpenAI chat bodies and SSE passthrough
2026-05-22 11:39:38 +08:00
fawney19
0e6d7539ad
Merge remote-tracking branch 'origin/pr/538'
2026-05-21 23:12:42 +08:00
fawney19
d6eb41aa78
Merge remote-tracking branch 'origin/pr/536'
...
# Conflicts:
# apps/aether-gateway/src/execution_runtime/stream/execution.rs
2026-05-21 23:03:14 +08:00
zhefox
68d8f86dc6
fix(gateway): stop stream polling on downstream disconnect and preserve Codex cache keys
2026-05-21 22:26:14 +08:00
zhefox
77c2d91eb0
fix(gateway): drain downstream-disconnected streams and stop inferring cancelled usage
2026-05-21 20:30:44 +08:00
zhefox
71f9afc526
fix(gateway): move openai responses helper import to ai_serving module
2026-05-21 18:09:57 +08:00
zhefox
8ca4a10f24
fix(gateway): require terminal events for OpenAI responses streams
2026-05-21 17:46:21 +08:00
zhefox
b7b7b4f718
fix(gateway): report terminal stream failure errors consistently
2026-05-21 16:15:03 +08:00
zhefox
12abde2aeb
fix(usage): handle terminal stream failures and preserve usage updates
2026-05-21 15:52:51 +08:00
Mas0nShi
e53d5f07e8
feat: support Gemini CLI v1internal quota
2026-05-21 15:38:10 +08:00
stabey and Claude Opus 4.7
3330b2ac4c
refactor(report-context): extract UPSTREAM_IS_STREAM_KEY constant
...
The "upstream_is_stream" JSON key flows from the AI execution report
context producer (aether-ai-serving::report_context) through several
consumers — usage runtime metadata copy/move, gateway watchdog, sync
execution decision, observability handlers, and the per-driver usage
repositories. Each site spelled the key as a bare string literal, so a
producer-side rename would silently degrade every consumer to its
fallback (typically assuming streaming) with no compile-time signal.
Introduce a single pub const UPSTREAM_IS_STREAM_KEY in
aether-ai-formats (the lowest crate every consumer already depends on),
re-export from the crate root, and route producer + all map-style
consumers through it. The change is purely a string-literal → constant
swap; behaviour is identical.
Sites left as literals (intentional):
- `json!({"upstream_is_stream": ...})` macro keys, which must be string
literals at the macro layer; these are also API-response payload
field names (an external contract that should not silently track
internal report-context renames).
- SQL column accessors (`try_get::<...>("upstream_is_stream")`), which
refer to the database schema column, not the JSON key.
- Test fixtures and assertions, which validate the on-the-wire contract
and should keep verifying the actual string.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-21 15:26:42 +08:00
zhefox
e59e6c3797
fix(gateway): sanitize Claude thinking and handle missing stream finish
2026-05-21 12:30:42 +08:00
Entropy.Xu
6b04a0a3a6
fix(windsurf): 修复 native 工具流式回程
2026-05-21 02:55:05 +08:00
Entropy.Xu
4112a8b2ea
fix(provider): 修复 Windsurf PR CI 失败
2026-05-21 02:21:35 +08:00
Entropy.Xu
65c361115a
fix(provider): 修复 Windsurf PR 冲突残留
2026-05-21 01:02:02 +08:00
Entropy.Xu
129c7c90c0
fix(provider): 修复 Windsurf 原生工具桥接
2026-05-21 01:02:02 +08:00