stabey and Claude Opus 5
e83399db2f
feat(providers): add xAI provider with device code OAuth
...
Add a separate `xai` provider type for xAI Grok CLI subscription accounts.
It is independent of the existing `grok` provider, which reverse-proxies
grok.com with browser cookies; behavior of `grok` is unchanged.
Account binding uses the xAI device code flow, so no local callback
listener is needed and headless deployments can bind accounts. Refresh
tokens can also be imported individually or in batches, and are rotated
on refresh.
OAuth requests default to the cli-chat-proxy Responses API; API keys and
compact stay on api.x.ai. Explicit custom gateways are preserved. Only
`openai:responses` and `openai:responses:compact` are exposed; Chat,
Claude and Gemini clients reach the provider through Aether's existing
cross-format conversion rather than new native endpoints.
Upstream Responses payloads are sanitized for what xAI actually rejects:
`previous_response_id` and `metadata.user_id` are dropped, hosted
`tool_choice` is rewritten, `web_search` is restored for converted
clients, `image_generation` is stripped on older Grok conversation
models, unsupported reasoning effort is removed, and requested
`reasoning.encrypted_content` is preserved with a replay policy keyed on
the configured provider type rather than the model name.
Quota refresh reads /user and /billing?format=credits and stores a
structured usage snapshot; a prepaid balance keeps an account selectable
after the weekly allowance is exhausted. API-key accounts skip the
subscription billing surface. The admin UI shows remaining weekly quota
as a labeled bar in the provider drawer and the pool list.
Co-Authored-By: Claude Opus 5 <[email protected] >
2026-09-14 21:09:03 +08:00
elky
579f2c7cc1
feat(security): harden gateway boundaries and usage policies
...
Consolidate subscription usage policy enforcement, privacy-safe persistence, and gateway security hardening into one reviewable change.
Includes bounded HTTP and execution envelopes, header and protocol guards, DNS and relay validation, authentication and secret projection hardening, secure backup/install paths, and regression coverage.
2026-09-04 03:45:52 +08:00
ZheFox
9631b229b3
fix(gateway): add provider key concurrency and cache affinity modes
2026-09-01 08:06:58 +08:00
ZheFox
ec36cfbf75
Merge pull request #690 from zhefox/main
...
fix(provider): classify deleted Codex agent runtime as invalid
2026-07-23 11:22:30 +08:00
ZheFox
7bf228a33c
fix(provider): classify deleted Codex agent runtime as invalid
2026-07-23 11:21:55 +08:00
elky
3606290ac8
fix(provider): harden Agent Identity OAuth lifecycle
2026-07-23 09:33:00 +08:00
elky
fdbc2607ec
feat(provider): add dedicated Codex Agent Identity flow
2026-07-22 20:19:29 +08:00
elky
644ae9c1bf
feat(pool): add table-driven account batch actions
2026-07-19 16:09:20 +08:00
elky
95053f9502
Merge PR #672 : 支持账号批量配置与可用模型管理
2026-07-18 22:06:32 +08:00
elky
f65ed2795c
fix(codex): support dynamic quota windows
2026-07-17 20:18:04 +08:00
MMEXA
ec1783a35c
Merge remote-tracking branch 'origin/main' into codex/pool-key-bulk-management-20260714
...
# Conflicts:
# apps/aether-gateway/src/handlers/admin/request/provider/tasks.rs
# frontend/src/api/endpoints/pool.ts
2026-07-16 23:43:04 +08:00
ZheFox
6664c2dbb8
feat(pool): 支持批量导入 Key 和选择性更新设置
2026-07-16 19:31:07 +08:00
MMEXA
a25fab371a
feat(pool): add bulk key configuration management
2026-07-14 04:57:05 +08:00
elky
f1c30439ff
fix: preserve provider auth metadata
2026-06-20 22:11:42 +08:00
elky
68038c182b
Distinguish expired OAuth token status
2026-06-12 19:43:59 +08:00
elky
a20ac1d31f
fix(pool): align oauth status filter with visible state
2026-05-30 21:37:21 +08:00
cym
ce1d532e3c
fix(pool): align status filters with visible key state
2026-05-30 18:49:26 +08:00
fawney19
1658925f52
Disable key circuit breaker for pool providers
2026-05-29 15:16:06 +08:00
Mas0nShi
9ad9858ac2
Merge origin/main into fix/gemini-cli-v1internal
2026-05-28 11:58:00 +08:00
MMEXA
480579a0d5
fix(gateway): expire provider key circuit cooldowns
2026-05-25 00:40:38 +08:00
Mas0nShi
e53d5f07e8
feat: support Gemini CLI v1internal quota
2026-05-21 15:38:10 +08:00
fawney19
6a1da6a5ff
fix: speed up admin pool loading
2026-05-19 12:05:36 +08:00
mayrain
936e1ae37b
feat(grok): add admin oauth and quota support
2026-05-16 21:15:38 +08:00
fawney19
54a8312e46
feat: add adaptive pool metrics and self-check
2026-05-15 02:21:11 +08:00
fawney19
5d1460e051
refactor: extract provider pool abstractions
2026-05-13 18:19:15 +08:00
fawney19
3c2497f019
Fix admin pool sorting and OAuth refresh
2026-05-13 09:16:52 +08:00
fawney19
9c05b5f4e0
Unify pool score display as account health
2026-05-12 15:27:21 +08:00
fawney19
c578689356
Fix pool score CI regressions
2026-05-12 02:17:19 +08:00
fawney19
b9e62d1667
Implement generic pool member scoring and probing
2026-05-12 01:46:22 +08:00
fawney19
e3574e1918
Track scheduler affinity epochs and key sorting
2026-05-11 01:45:49 +08:00
fawney19
2a603fa1e4
Merge remote-tracking branch 'origin/pr/397' into aether-rust-pioneer
2026-05-08 02:47:13 +08:00
fawney19
6247ac3edc
refactor: extract runtime state backends
2026-05-08 00:18:12 +08:00
RWDai
71742d5ad2
Fix pool cycle usage display
2026-05-07 22:25:52 +08:00
fawney19
fd44906bb7
fix provider pool quota status handling
2026-05-07 11:28:44 +08:00
fawney19
10e679bb2f
Add provider key cycle stats reset handling
2026-05-07 03:23:20 +08:00
fawney19
2a124318b9
Merge branch 'pr-390' into aether-rust-pioneer
2026-05-07 01:34:38 +08:00
Kayphoon
79cb9b502a
feat(pool): add codex cycle stats mode
2026-05-07 00:07:32 +08:00
Codex
41f75a3f19
feat: show chatgpt web image quota
2026-05-06 22:58:47 +08:00
fawney19
e3ea2d1451
feat: configure auth channel mismatch formats
2026-05-03 00:49:22 +08:00
fawney19
4fc7cecf30
Fix OAuth token import and table filters
2026-05-01 02:14:49 +08:00
fawney19
e751289dfb
Support per-format provider key auth
2026-04-29 15:46:50 +08:00
AAEE86
4618184516
fix: 修复账号批量操作快捷多选不生效和今日 Token 不准确 ( #328 )
...
* fix(pool): 修复账号批量操作快捷多选不生效
- 解析号池账号列表接口的 quick_selectors 查询参数
- 列表查询复用现有快捷筛选匹配逻辑
- 支持冷却列表与普通列表的快捷筛选后分页
- 更新架构测试中的 pool admin helper 边界断言
* fix(dashboard): 今日 Token 改为按分项汇总口径展示
- /api/dashboard/stats 的 today.tokens 改为 输入+输出+写缓存+读缓存
- “今日 Token”卡片 value 与 subValue 口径保持一致
- 同步更新 dashboard 相关测试断言
2026-04-24 18:36:38 +08:00
AAEE86
a9d10163af
fix(oauth): 修复 OAuth 刷新后 Token 有效期不更新问题 ( #324 )
...
- 持久化刷新后的 `expires_at` 到 Provider Key SQL 更新链路
- 手动刷新接口优先返回本次刷新得到的过期时间
- 按当前 Key 字段重建 OAuth 状态快照,避免旧快照覆盖
- 前端刷新后防止旧列表数据回退覆盖新有效期
2026-04-24 09:35:25 +08:00
fawney19 and Entropy.Xu
fa328e18a1
feat: provider api_formats 可空继承、OpenAI 图片 edit/variation 与用量配额多项补强
...
- 鉴权: provider_api_keys.api_formats 改为可空,OAuth 托管 key 自动继承 provider endpoints 激活格式,相关 handler/测试同步更新
- 图片 planner: OpenAI 图片路由新增 edit/variation 操作并完善参数校验、响应合并与流式处理
- 用量: user me usage 返回区分 client_requested_stream/upstream_is_stream,前端 usage 列表筛选与展示增强
- 统计: stats_daily_model 新增 cache_creation_ephemeral_5m/1h tokens 字段与回填链路
- 配额/observability: quota repository 新增内存与 SQL 扩展,admin observability usage 字段扩充
- 其它: OAuth 导入/轮询收敛、provider 汇总与 pool admin 读写链路小修、新增 system_config 缓存与 provider template handler
Closes #318
Co-authored-by: Entropy.Xu <[email protected] >
2026-04-23 14:42:51 +08:00
fawney19
c1b9d94c84
feat(adaptive): 完善自适应 RPM 学习并将 Pool 调度状态与健康分解耦
...
- orchestration 新增 AdaptiveSuccess 效果,在成功回报路径上根据利用率窗口扩张 learned_rpm_limit
- 429 路径改用 429_observation/adjustment 记录以及基于历史的置信度评估,新增 last_rpm_peak 边界字段
- Pool 调度状态不再因 health_score 低或熔断而降级/拦截,前端同步移除相关按钮与文案兜底
- 新增前端 poolTrace 工具(附测试)承接原 HorizontalRequestTimeline 内的候选合并逻辑
2026-04-20 00:27:48 +08:00
fawney19
77aac74590
feat(oauth): 完善账号异常识别并在调度/展示层拦截失效 OAuth 密钥
...
- 新增 aether-admin provider status 模块,统一解析账号状态(禁用/工作区停用等)
- 调度器 runtime 增加 oauth_invalid 判定,跳过刷新失败或已撤销的 OAuth 密钥(REQUEST_FAILED 保留可选)
- gateway state 在 local oauth 刷新返回 4xx 时持久化失败原因并同步状态快照
- admin pool 列表/详情回填 account 状态与 scheduling 阻塞原因(account_blocked)
- 共享 catalog 的 status_snapshot payload 附加 account 字段
2026-04-19 20:50:31 +08:00
fawney19
41b51f10a9
perf: 并行化 admin 聚合路由并完善前端缓存预取
...
- gateway: usage detail / provider summary / pool overview / users list 改为 tokio join 并行拉取依赖数据
- usage: interval timeline 支持自动刷新并按查询区间动态展示,取消服务端 120 分钟过滤并在 ScatterChart 统一封顶
- frontend: 新增管理端导航预取工具及 SidebarNav/MainLayout 触发,admin 读接口统一走 cachedRequest 的短期缓存
- dashboard: request detail 支持短 TTL 缓存并在 UsageRecordsTable mousedown 时预取
- data: migrate 测试在 wait_for_postgres 失败时清理子进程,避免遗留
2026-04-19 15:17:25 +08:00
AAEE86 and fawney19
bafb63a665
持久化 provider key 使用统计并移除 usage 汇总覆盖 ( #313 )
...
* 持久化 provider key 使用统计并移除 usage 汇总覆盖
- 在 usage upsert 时按请求前后差值同步 provider_api_keys 统计
- 增加基于保留 usage 记录的 provider key 统计重建能力
- 号池管理列表直接读取 provider_api_keys 统计字段
* fix: harden provider key usage stats sync
---------
Co-authored-by: fawney19 <[email protected] >
2026-04-19 01:02:09 +08:00
fawney19
3321bb3ccc
Implement independent provider pool scheduling runtime
2026-04-17 23:05:49 +08:00
fawney19
7eae1f90f6
Unify quota snapshots and oauth refresh handling
2026-04-17 18:22:41 +08:00