elky
8edcbdcb29
feat(usage): expose request timing details
2026-06-10 09:16:15 +08:00
elky
08ac9c5c58
Merge remote-tracking branch 'origin/pr/614'
2026-06-02 22:10:41 +08:00
Entropy.Xu
c2bcfab7d4
修复:Kiro 模拟缓存接入共享运行时
2026-05-31 22:13:45 +08:00
stabey
6bfd56b54f
fix(usage): 避免上游流式错误误记为成功
...
当上游流式响应中途失败时,sync error payload 可能同时包含合成错误体和部分上游流 body。
优先使用合成错误体生成 usage 终态,避免只因为上游先返回过 200 和部分 SSE 内容就把失败请求记录为 completed/settled。
2026-05-31 02:54:11 +08:00
fawney19
21e52722e6
Prefer provider request body for usage badges
2026-05-27 15:39:39 +08:00
AAEE86
e27ca671fd
feat(usage): show reasoning and fast badges in usage records
...
- extract provider reasoning effort from request body metadata
- extract priority service tier and expose it as service_tier
- show reasoning level and fast badges after model names
- include badges in active request updates and usage list payloads
- add targeted backend and frontend coverage
2026-05-27 00:36:52 +08:00
zhefox
ec681335e8
fix(usage): treat empty body_state as missing terminal event
2026-05-25 13:38:18 +08:00
fawney19
db32b1d982
fix(usage): ignore truncated stream captures for terminal inference
2026-05-23 22:16:02 +08:00
zhefox
91cb2bbbcc
fix(usage): refine stream terminal capture gating for OpenAI responses
2026-05-23 03:31:15 +08:00
zhefox
e5ce2ac7a4
fix(usage): detect missing terminal events in stream reporting
2026-05-23 00:47:36 +08:00
fawney19
d18b13a91a
fix: harden frontdoor and usage ingestion
2026-05-22 23:57:38 +08:00
zhefox
507f2f8250
fix(usage): treat stream terminal failures as failures on HTTP 200
2026-05-22 09:34:22 +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
fawney19
97997685b5
Merge remote-tracking branch 'origin/pr/498'
2026-05-21 22:56:43 +08:00
fawney19
ab0a90de97
fix(runtime-state): govern redis connections
2026-05-21 22:53:37 +08:00
zhefox
77c2d91eb0
fix(gateway): drain downstream-disconnected streams and stop inferring cancelled usage
2026-05-21 20:30:44 +08:00
zhefox
12abde2aeb
fix(usage): handle terminal stream failures and preserve usage updates
2026-05-21 15:52:51 +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
0226e14251
feat(provider): 原生接入 Windsurf provider
2026-05-21 01:02:02 +08:00
fawney19
052de6b96e
test: stabilize merged PR checks
2026-05-19 10:18:25 +08:00
fawney19
69af74b1e0
Merge PR #488 and #489
2026-05-19 03:16:35 +08:00
ZheFox
c58ce63fc3
Merge branch 'fawney19:main' into main
2026-05-19 00:50:52 +08:00
ZheFox
995ab302be
Merge remote-tracking branch 'upstream/main'
...
# Conflicts:
# apps/aether-gateway/src/handlers/admin/provider/endpoints_admin/payloads.rs
# apps/aether-gateway/src/handlers/admin/provider/endpoints_admin/reads.rs
# apps/aether-gateway/src/handlers/admin/provider/endpoints_admin/update.rs
# apps/aether-gateway/src/tests/control/admin/endpoints/routes.rs
# frontend/src/features/models/components/GlobalModelFormDialog.vue
# frontend/src/features/providers/components/ProviderModelFormDialog.vue
# frontend/src/features/providers/components/provider-tabs/__tests__/model-test-request.spec.ts
# frontend/src/features/providers/components/provider-tabs/model-test-request.ts
2026-05-18 22:02:31 +08:00
RWDai
24129d7f12
Merge upstream/main into feat/356-usage-record-columns
2026-05-18 20:33:05 +08:00
ZheFox
a10c02ef63
feat(billing): add image output range pricing support
2026-05-18 11:52:01 +08:00
ZheFox
0b2a8fafce
feat(billing): add image output pricing and usage tracking
2026-05-18 02:49:56 +08:00
ZheFox
691ccaaa04
fix(usage): track OpenAI image SSE completion and usage estimates
2026-05-18 01:32:45 +08:00
Kayphoon
ae472d6744
fix(data): require provider id for provider usage aggregation
2026-05-18 00:36:29 +08:00
ZheFox
680b617b00
feat(gateway): route OpenAI image streams through chat bridge
2026-05-17 23:09:50 +08:00
MMEXA
81ff375bfd
fix(gateway): route Gemini embedding batches correctly
2026-05-17 14:24:32 +00:00
ZheFox
ab0d766f47
fix(usage): stop inferring cache reads from prompt_cache_key
2026-05-17 03:04:33 +08:00
ZheFox
b903f8ff7d
fix(usage): estimate cache read tokens for cancelled requests
2026-05-17 02:13:13 +08:00
ZheFox
0483d001b4
fix(usage): bill cancelled terminal usage and preserve total token estimates
2026-05-17 01:11:42 +08:00
ZheFox
2803e9317d
fix(usage): bill cancelled terminal usage and preserve terminal telemetry
2026-05-16 23:43:40 +08:00
RWDai
df7b2824a6
Persist client family usage metadata
2026-05-16 15:55:38 +08:00
fawney19
d6c320bf06
Revert "Merge remote-tracking branch 'origin/pr/466'"
...
This reverts commit 0e0a24862f , reversing
changes made to b09fd48eee .
2026-05-16 00:50:00 +08:00
ZheFox
2345df0e38
fix(usage): bill cancelled terminal usage
2026-05-15 22:38:34 +08:00
fawney19
0f42a6ed82
Fix Codex image progress heartbeat merge regressions
2026-05-10 02:10:23 +08:00
fawney19
79d07ac79a
Improve request trace upstream diagnostics
2026-05-09 10:46:04 +08:00
Entropy.Xu
3b4f27f767
Add Codex image progress heartbeat
2026-05-09 01:21:26 +08:00
fawney19
6247ac3edc
refactor: extract runtime state backends
2026-05-08 00:18:12 +08:00
fawney19
fd44906bb7
fix provider pool quota status handling
2026-05-07 11:28:44 +08:00
fawney19
bfda9b3e78
Capture TLS fingerprints in report context
2026-05-06 15:02:44 +08:00
fawney19
6083461822
Add editable response header rules
2026-05-06 01:29:42 +08:00
fawney19
f959f02d40
Implement transport profile routing
2026-05-05 22:21:23 +08:00
fawney19
fce7e959e5
Add multi-database data layer
...
Introduce aether-data-schema and driver-specific schema generation for Postgres, MySQL, and SQLite.
Split data backends, lifecycle, repositories, and gateway runtime integration across database drivers.
Verified with cargo fmt --all --check, cargo clippy --workspace --all-targets -- -D warnings, and cargo test --workspace.
2026-05-05 18:27:36 +08:00
jiuwovo-ai and root
3e2eca4fd0
fix: 修复手动代理节点请求不计数及延迟/心跳不显示的问题 ( #368 )
...
* fix: 修复手动代理节点请求不计数及延迟/心跳不显示的问题
问题描述:
- 手动添加的代理节点请求数始终为0,不会递增
- 手动代理节点的延迟和最后心跳时间不显示
根因:
Rust 重写版中缺失了 Python 版的手动代理节点请求计数逻辑。
隧道节点通过心跳上报计数,但手动节点没有心跳机制,
需要在 usage recording 路径中递增计数并更新延迟信息。
修复方案:
1. 在 ExecutionPlan 中提取 proxy 信息,注入到 request_metadata
2. 在 request_metadata 白名单中添加 proxy 字段
3. 新增 INCREMENT_MANUAL_PROXY_NODE_REQUESTS_SQL,
递增 total_requests/failed_requests,
同时更新 avg_latency_ms 和 last_heartbeat_at
4. 在 ProxyNodeWriteRepository trait 新增 increment_manual_node_requests 方法
5. 在 write_event_record 中解析 request_metadata 中的 proxy 信息,
对非隧道模式的手动节点调用递增方法
6. 为 GatewayDataState 实现 ManualProxyNodeCounter trait
影响范围:
- 仅影响手动代理节点的统计数据
- 隧道节点不受影响(继续通过心跳计数)
- 不影响请求转发逻辑
* style: cargo fmt
---------
Co-authored-by: root <root@ser406777952330.local >
2026-05-03 14:50:36 +08:00