elky
8616fe6ee2
refactor(workspace): enforce layered crate boundaries
2026-07-15 23:47:19 +08:00
elky
e58621a735
Merge PR #669 : align GPT-5.6 and Codex request protocols
2026-07-12 21:50:20 +08:00
elky
7f61bb43c7
feat(security): harden gateway request and runtime controls
2026-07-12 14:10:54 +08:00
MMEXA
2316df5c9a
feat(codex): align Search and execution protocol
2026-07-12 03:04:15 +08:00
elky
bc1da3bf3f
feat(security): harden client IP and admin controls
2026-07-10 15:13:12 +08:00
elky
6f00e9fc67
Improve gateway transport and usage runtime
2026-06-25 22:36:27 +08:00
elky
d336d1a7fa
Improve gateway scheduling and runtime admission
2026-06-24 01:53:45 +08:00
elky
e9b4efc2d4
fix(ai-serving): preserve explicit request encoding
2026-06-10 18:16:55 +08:00
fawney19
42e723ff7c
Clarify API key concurrency skip reasons
2026-05-27 17:00:09 +08:00
fawney19
d18b13a91a
fix: harden frontdoor and usage ingestion
2026-05-22 23:57:38 +08:00
fawney19
f76bbaab52
feat: support api key ip restriction rules
2026-05-20 16:11:49 +08:00
RWDai
bdc848b19e
Merge upstream main into feat/500-api-key-ip-whitelist
2026-05-20 10:26:56 +08:00
mayrain
66a54cc39e
feat(gateway): normalize compressed request bodies
2026-05-19 22:57:45 +08:00
fawney19
63202a63ef
Merge branch 'codex/pool-hot-trace-fix'
...
# Conflicts:
# apps/aether-gateway/src/ai_serving/planner/candidate_materialization.rs
2026-05-19 14:47:37 +08:00
RWDai
fc12cc8a36
Enforce API key IP restrictions in proxy auth
2026-05-18 20:47:28 +08:00
MMEXA
ed570155a1
fix(gateway): redact credential query values in access logs
2026-05-17 15:26:56 +00:00
fawney19
7d569127ae
Fix active probe pool fallback tracing
2026-05-17 20:34:06 +08:00
Entropy.Xu
85f48123b6
feat(auth): 添加 Turnstile 注册防护
2026-05-15 01:54:20 +08:00
RWDai
bc0017a1b4
Use audit admin permissions in proxy auth
2026-05-14 13:39:57 +08:00
RWDai
4d2667764f
Enforce read-only admin route permissions
2026-05-14 13:38:45 +08:00
RWDai
feb676b66f
Allow audit admins through backend admin auth
2026-05-14 13:38:45 +08:00
Kayphoon
2958041dc7
feat(gateway): add reversible chat pii redaction
2026-05-13 18:25:13 +08:00
RWDai
a7bab0ebd2
feat: add admin api key install sessions
2026-05-12 15:33:45 +08:00
fawney19
0fa97595bf
Fix reasoning model directive response identity
2026-05-11 23:03:11 +08:00
fawney19
247ea9d1bd
Restrict scheduler affinity to cache affinity mode
2026-05-11 14:06:49 +08:00
fawney19
fa22384f24
Merge remote-tracking branch 'origin/pr/399' into aether-rust-pioneer
...
# Conflicts:
# crates/aether-data/src/lifecycle/bootstrap/postgres.rs
# crates/aether-data/src/lifecycle/migrate/tests.rs
2026-05-08 02:52:13 +08:00
fawney19
6247ac3edc
refactor: extract runtime state backends
2026-05-08 00:18:12 +08:00
Entropy.Xu
cc5cb3475e
feat: add management token permissions
2026-05-07 23:48:29 +08:00
fawney19
68216bf868
Clean up transport fingerprint configuration
...
Remove legacy tls_profile handling, keep header fingerprint under transport profiles, and drop the duplicate auth_modules migration.
2026-05-06 13:54:33 +08:00
RWDai
37da4e245a
feat: scope tunnel affinity by client session
2026-05-05 11:23:54 +08:00
fawney19
c130d0e2c9
refactor ai serving modules and crates
2026-05-02 13:23:54 +08:00
fawney19 and RWDai
7fcb9e6292
feat(usage): record request origin metadata ( #362 )
...
Record client IP and User-Agent in usage request_metadata for local execution requests without adding schema, API, or table fields.
References #357 and supersedes #358 .
Co-authored-by: RWDai <[email protected] >
2026-04-30 11:26:56 +08:00
fawney19
9e2faa7e5b
Tighten local auth allow-list matching
2026-04-30 00:26:33 +08:00
fawney19
07a319259b
Normalize canonical API formats
2026-04-29 10:20:41 +08:00
fawney19
230e7d6259
Normalize management token prefixes
2026-04-28 19:46:38 +08:00
fawney19
4c16b11cb4
Align runtime miss tests with skipped candidates
2026-04-27 18:09:56 +08:00
fawney19
3991d47166
Fix format checks and local error messages
2026-04-27 00:27:03 +08:00
fawney19
4ec591fbf2
centralize openai responses alias handling
2026-04-26 23:59:53 +08:00
fawney19
5b914aa78c
migrate ai format conversion to responses adapters
2026-04-26 23:59:53 +08:00
fawney19
baa0ddd787
Improve runtime miss usage diagnostics
2026-04-26 01:44:54 +08:00
fawney19
429fdb47e6
fix(usage): 简化本地执行错误提示
2026-04-25 20:46:22 +08:00
fawney19
f3c9835759
feat(pool): 引入 pro_first 调度预设、Pool 候选持久化跳过与诊断信息优化
...
- 新增 pro_first 调度预设(Pro 优先),更新 plus_first 仅针对 Plus 计划,移除 free_team_first
- Pool 内部候选(pool_key_index 不为空)跳过 DB 持久化(available/skipped/unused 均适用)
- LRU 排序新增 catalog_lru_score 回退:runtime 无记录时使用 last_used_at_unix_secs
- 执行路径 miss 诊断消息细化为中文,按 reason 分类输出可读说明
- build_local_request_candidate_status_record 补充 extra_data 和 created_at_unix_ms 字段
- OpenAI CLI 计划构建流程补充候选评估进度跟踪与 terminal reason 设置
- 前端 PoolSchedulingDialog 增加 pro_first 预设展示,修复 LRU 默认预设检测逻辑
2026-04-24 13:29:05 +08:00
fawney19
342d4a268c
feat(stream-bridge): 支持上游 sync 响应转 SSE 流式输出,记录 client/upstream 流模式差异
...
- 新增 sync_to_stream 桥接模块,将非 SSE 上游响应转换为 SSE 格式回传给流式客户端
- stream_pump 检测非 SSE 响应头后缓冲整包并通过桥接逻辑重写为 SSE 帧
- proxy handler 同步支持 sync→stream 聚合与转换(覆盖 openai/claude/gemini 四种格式)
- sync_products 补全 openai:cli 的完整流式事件聚合(text delta、reasoning、tool call 等)
- usage runtime 写入 client_requested_stream / upstream_is_stream 到 request_metadata
- SQL 查询层将两个布尔字段从 request_metadata jsonb 中提取并回传给前端
- 前端 status.ts 新增 resolveUsageStreamLabelSegments,优先读取 client_requested_stream
- RequestDetailDrawer 在流式转换场景下显示"客户端→上游"两段 Badge
2026-04-23 21:53:50 +08:00
RWDai
cf7d129595
fix(proxy-nodes): allow management tokens with json null allowed_ips ( #317 )
...
* fix(proxy-nodes): allow management tokens with json null allowed_ips
* style(proxy-nodes): format regression test
2026-04-20 21:50:48 +08:00
RWDai and fawney19
b8702ae124
Fix/api key concurrency runtime miss ( #309 )
...
* test(cli): 覆盖 API key 并发等待与超时路径
* feat(scheduler): API key 并发饱和时等待可用槽位
* fix(proxy): 区分 API key 并发受限与真正的 runtime miss
* fix(outcome): runtime miss 仅归因真实执行候选
* feat(api-keys): 统一 concurrent_limit 默认值与校验辅助
* feat(admin): 独立 Key 接口支持 concurrent_limit
* feat(admin): 用户 API Key 路由支持 concurrent_limit
* feat(public): 自助 API Key 路由支持 concurrent_limit
* feat(import): 导入与存储层持久化 concurrent_limit
* feat(frontend): 同步 API Key concurrent_limit 类型定义
* feat(frontend): 独立 Key 表单支持 concurrent_limit
* feat(frontend): 管理员用户 API Key 表单支持 concurrent_limit
* feat(frontend): 自助 API Key 页面支持 concurrent_limit
* chore(fmt): 统一 runtime 归因相关 Rust 格式
* chore(fmt): 统一 admin API key 路由 Rust 格式
* chore(fmt): 统一 public 路由与相关测试 Rust 格式
* fix(test): 对齐 no-execution usage 归因断言
* test(middleware): 固定 access log tracing 用例线程模型
* fix(frontend): 提取用户 API Key payload 默认并发辅助
* fix(frontend): 保留用户 Key 的 concurrent_limit 默认值
* fix(api-keys): remove hardcoded concurrent limit default
---------
Co-authored-by: fawney19 <[email protected] >
2026-04-17 14:21:43 +08:00
fawney19
861ae81ff0
feat(admin): 完善代理节点与 OAuth 授权管理
2026-04-14 14:09:24 +08:00
fawney19
62e0a0338d
refactor: 移除 shadow results 相关模块和接口
2026-04-14 09:46:16 +08:00
fawney19
5bb08e6aa4
feat(gateway): 重构 usage 数据层、迁移系统与系统导入
...
数据库迁移:
- 引入 baseline v2 bootstrap,空库首次启动自动初始化
- 服务启动不再自动执行迁移,需显式 `--migrate` 运行
- 新增 pending migration 检测,schema 落后时拒绝启动
Usage 数据层:
- usage body 存储外部化为独立 blob 表
- 新增 HTTP audit 表拆分存储请求/响应头与 body ref
- 后台清理任务支持 legacy body ref 元数据迁移
- usage runtime 写入迁移到专用 tokio runtime(独立线程池, 8MB 栈)
系统导入/导出:
- 支持用户、API Keys、钱包数据的完整导入
- 兼容 legacy 与 v1.3+ 两种导出格式
其他改进:
- executor outcome 增加 runtime miss 诊断上下文
- 主 tokio runtime 栈大小调整为 8MB
- 前端 provider 管理支持 base URL 配置
- dev.sh 支持 --migrate 参数
2026-04-13 14:01:22 +08:00
fawney19
9703840a36
feat(proxy): 实现代理节点批量升级回滚、隧道重定向跟随及远程配置管理
...
核心功能:
- 新增代理节点批量升级回滚工作流,支持分批升级、健康探针、跳过/重试/取消等操作
- proxy 隧道流处理器支持 HTTP 重定向跟随(最多 10 跳),区分 307/308 可重播与不可重播请求体
- proxy 协议新增 follow_redirects / http1_only 字段,网关侧同步支持
- 新增代理节点远端配置变更接口(名称、允许端口、调度状态、升级目标等)
- 新增代理节点注册/反注册/心跳的 Admin API,及节点过期清理维护任务
- gateway 隧道 owner-relay 支持流式代理大请求体,新增 5 MiB 默认限制
- 新增 ProxyNodeRegistrationMutation / ProxyNodeRemoteConfigMutation 数据类型
- proxy 配置新增重定向重播预算、心跳间隔等参数,TUI 安装向导同步更新
- 前端 ProxyNodes 页面新增批量升级操作面板及滚动进度展示
2026-04-12 16:02:38 +08:00
fawney19
6144473ebe
feat: 新增 frontdoor 执行回环守卫与多项可观测性增强
...
- 新增 frontdoor_loop_guard 模块,检测并拒绝 execution runtime 回环到本地网关的请求(HTTP 508)
- candidate loop 引入 span tracking、执行尝试日志与流式看门狗超时
- 本地故障转移策略支持从 report_context 加载,新增 append_local_failover_policy_to_value
- runtime tracing 美化:移除 identity 前缀,按 span 深度树形缩进,target 固定宽度展示
- Codex OpenAI CLI 补齐 chatgpt-account-id/x-client-request-id/session_id/conversation_id 请求头
- OpenAI CLI same/cross-format 聚合规则放宽以支持 openai:compact 客户端格式,并过滤 error-like 响应体
- auth/proxy/finalize 日志补充 user_id/api_key_id/api_key_name/balance_remaining 等字段
- 启动日志拆分为 starting/ready/config 三段,新增 resolve_bind_http_base_url
- access_log middleware 将生成的 trace_id 回注到下游请求头
- Cargo.toml 启用 serde_json preserve_order 特性
2026-04-11 01:50:24 +08:00